Merge master into staging-next

authored by github-actions[bot] and committed by GitHub b289464f 607cdcc4

+6277 -5076
+10 -10
.github/workflows/check-by-name.yml
··· 1 1 # Checks pkgs/by-name (see pkgs/by-name/README.md) 2 - # using the nixpkgs-check-by-name tool (see pkgs/test/nixpkgs-check-by-name) 2 + # using the nixpkgs-check-by-name tool (see https://github.com/NixOS/nixpkgs-check-by-name) 3 3 # 4 - # When you make changes to this workflow, also update pkgs/test/nixpkgs-check-by-name/scripts/run-local.sh adequately 4 + # When you make changes to this workflow, also update pkgs/test/check-by-name/run-local.sh adequately 5 5 name: Check pkgs/by-name 6 6 7 - # The tool is pinned to a pre-built version on Hydra, 8 - # see pkgs/test/nixpkgs-check-by-name/scripts/README.md 9 7 on: 10 8 # Using pull_request_target instead of pull_request avoids having to approve first time contributors 11 9 pull_request_target: ··· 24 22 25 23 jobs: 26 24 check: 27 - # This is x86_64-linux, for which the tool is always prebuilt on the nixos-* channels, 28 - # as specified in nixos/release-combined.nix 25 + # This needs to be x86_64-linux, because we depend on the tooling being pre-built in the GitHub releases 29 26 runs-on: ubuntu-latest 30 27 # This should take 1 minute at most, but let's be generous. 31 28 # The default of 6 hours is definitely too long ··· 100 97 echo "base=$base" >> "$GITHUB_ENV" 101 98 - uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26 102 99 - name: Fetching the pinned tool 103 - # Update the pinned version using pkgs/test/nixpkgs-check-by-name/scripts/update-pinned-tool.sh 100 + # Update the pinned version using pkgs/test/check-by-name/update-pinned-tool.sh 104 101 run: | 105 - # Get the direct /nix/store path from the pin to avoid having to evaluate Nixpkgs 106 - toolPath=$(jq -r '."ci-path"' pkgs/test/nixpkgs-check-by-name/scripts/pinned-tool.json) 107 - # This asks the substituter for the path, which should be there because Hydra will have pre-built and pushed it 102 + # The pinned version of the tooling to use 103 + toolVersion=$(<pkgs/test/check-by-name/pinned-version.txt) 104 + # Fetch the x86_64-linux-specific release artifact containing the Gzipped NAR of the pre-built tool 105 + toolPath=$(curl -sSfL https://github.com/NixOS/nixpkgs-check-by-name/releases/download/"$toolVersion"/x86_64-linux.nar.gz \ 106 + | gzip -cd | nix-store --import | tail -1) 107 + # Adds a result symlink as a GC root 108 108 nix-store --realise "$toolPath" --add-root result 109 109 - name: Running nixpkgs-check-by-name 110 110 run: |
+1 -1
maintainers/scripts/README.md
··· 11 11 12 12 ### `check-by-name.sh` 13 13 14 - An alias for `pkgs/test/nixpkgs-check-by-name/scripts/run-local.sh`, see [documentation](../../pkgs/test/nixpkgs-check-by-name/scripts/README.md). 14 + An alias for `pkgs/test/check-by-name/run-local.sh`, see [documentation](../../pkgs/test/check-by-name/README.md). 15 15 16 16 ### `get-maintainer.sh` 17 17
+1 -1
maintainers/scripts/check-by-name.sh
··· 1 - ../../pkgs/test/nixpkgs-check-by-name/scripts/run-local.sh 1 + ../../pkgs/test/check-by-name/run-local.sh
+1 -1
maintainers/scripts/kde/generate-sources.py
··· 1 1 #!/usr/bin/env nix-shell 2 - #!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.beautifulsoup4 ps.click ps.httpx ps.jinja2 ps.pyyaml ]) 2 + #!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.beautifulsoup4 ps.click ps.httpx ps.jinja2 ps.pyyaml ])" 3 3 import base64 4 4 import binascii 5 5 import json
+1 -1
nixos/modules/installer/tools/nixos-generate-config.pl
··· 257 257 258 258 # Add bcache module, if needed. 259 259 my @bcacheDevices = glob("/dev/bcache*"); 260 - @bcacheDevices = grep(!qr#dev/bcachefs.*#, @bcacheDevices); 260 + @bcacheDevices = grep(!m#dev/bcachefs.*#, @bcacheDevices); 261 261 if (scalar @bcacheDevices > 0) { 262 262 push @initrdAvailableKernelModules, "bcache"; 263 263 }
+16
nixos/modules/services/misc/paperless.nix
··· 27 27 name = "paperless_ngx_nltk_data"; 28 28 paths = pkg.nltkData; 29 29 }; 30 + } // optionalAttrs (cfg.openMPThreadingWorkaround) { 31 + OMP_NUM_THREADS = "1"; 30 32 } // (lib.mapAttrs (_: s: 31 33 if (lib.isAttrs s || lib.isList s) then builtins.toJSON s 32 34 else if lib.isBool s then lib.boolToString s ··· 199 201 }; 200 202 201 203 package = mkPackageOption pkgs "paperless-ngx" { }; 204 + 205 + openMPThreadingWorkaround = mkEnableOption '' 206 + a workaround for document classifier timeouts. 207 + 208 + Paperless uses OpenBLAS via scikit-learn for document classification. 209 + 210 + The default is to use threading for OpenMP but this would cause the 211 + document classifier to spin on one core seemingly indefinitely if there 212 + are large amounts of classes per classification; causing it to 213 + effectively never complete due to running into timeouts. 214 + 215 + This sets `OMP_NUM_THREADS` to `1` in order to mitigate the issue. See 216 + https://github.com/NixOS/nixpkgs/issues/240591 for more information. 217 + '' // mkOption { default = true; }; 202 218 }; 203 219 204 220 config = mkIf cfg.enable {
+4 -1
nixos/modules/system/boot/systemd/initrd.nix
··· 392 392 393 393 boot.kernelParams = [ 394 394 "root=${config.boot.initrd.systemd.root}" 395 - ] ++ lib.optional (config.boot.resumeDevice != "") "resume=${config.boot.resumeDevice}"; 395 + ] ++ lib.optional (config.boot.resumeDevice != "") "resume=${config.boot.resumeDevice}" 396 + # `systemd` mounts root in initrd as read-only unless "rw" is on the kernel command line. 397 + # For NixOS activation to succeed, we need to have root writable in initrd. 398 + ++ lib.optional (config.boot.initrd.systemd.root == "gpt-auto") "rw"; 396 399 397 400 boot.initrd.systemd = { 398 401 initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package];
-5
nixos/release-combined.nix
··· 169 169 (onFullSupported "nixpkgs.jdk") 170 170 (onSystems ["x86_64-linux"] "nixpkgs.mesa_i686") # i686 sanity check + useful 171 171 ["nixpkgs.tarball"] 172 - 173 - # Ensure that nixpkgs-check-by-name is available in nixos-unstable, 174 - # so that a pre-built version can be used in CI for PR's 175 - # See ../pkgs/test/nixpkgs-check-by-name/README.md 176 - (onSystems ["x86_64-linux"] "nixpkgs.tests.nixpkgs-check-by-name") 177 172 ]; 178 173 }; 179 174 }
+14 -3
pkgs/applications/audio/termusic/default.nix
··· 22 22 23 23 rustPlatform.buildRustPackage rec { 24 24 pname = "termusic"; 25 - version = "0.7.11"; 25 + version = "0.9.0"; 26 26 27 27 src = fetchFromGitHub { 28 28 owner = "tramhao"; 29 29 repo = "termusic"; 30 30 rev = "v${version}"; 31 - hash = "sha256-ykOBXM/WF+zasAt+6mgY2aSFCpGaYcqk+YI7YLM3MWs="; 31 + hash = "sha256-FOFZg32hrWpKVsjkMDkiqah7jmUZw0HRWGqOvsN0t8Q="; 32 32 }; 33 33 34 - cargoHash = "sha256-BrOpU0RFdlRXQIMjfHfs/XYIdBCYKFSA+5by/rGzC8Y="; 34 + postPatch = '' 35 + pushd $cargoDepsCopy/stream-download 36 + oldHash=$(sha256sum src/lib.rs | cut -d " " -f 1) 37 + substituteInPlace $cargoDepsCopy/stream-download/src/lib.rs \ 38 + --replace-warn '#![doc = include_str!("../README.md")]' "" 39 + substituteInPlace .cargo-checksum.json \ 40 + --replace $oldHash $(sha256sum src/lib.rs | cut -d " " -f 1) 41 + popd 42 + ''; 43 + 44 + cargoHash = "sha256-r5FOl3Bp3GYhOhvWj/y6FXsuG2wvuFcMcYKBzVBVqiM="; 35 45 36 46 nativeBuildInputs = [ 37 47 pkg-config ··· 62 72 homepage = "https://github.com/tramhao/termusic"; 63 73 license = with lib.licenses; [ gpl3Only ]; 64 74 maintainers = with lib.maintainers; [ devhell ]; 75 + mainProgram = "termusic"; 65 76 }; 66 77 }
+12
pkgs/applications/editors/vim/plugins/generated.nix
··· 17033 17033 meta.homepage = "https://github.com/lukas-reineke/virt-column.nvim/"; 17034 17034 }; 17035 17035 17036 + jupytext-nvim = buildVimPlugin { 17037 + pname = "jupytest-nvim"; 17038 + version = "2024-01-24"; 17039 + src = fetchFromGitHub { 17040 + owner = "GCBallesteros"; 17041 + repo = "jupytext.nvim"; 17042 + rev = "68fddf28119dbaddfaea6b71f3d6aa1e081afb93"; 17043 + sha256 = "sha256-x5emW+qfUTUDR72B9QdDgVdrb8wGH9D7AdtRrQm80sI="; 17044 + }; 17045 + meta.homepage = "https://github.com/GCBallesteros/jupytext.nvim/"; 17046 + }; 17047 + 17036 17048 17037 17049 }
+4
pkgs/applications/editors/vim/plugins/overrides.nix
··· 747 747 dependencies = with self; [ lush-nvim ]; 748 748 }; 749 749 750 + jupytext-nvim = super.jupytext-nvim.overrideAttrs { 751 + passthru.python3Dependencies = ps: [ ps.jupytext ]; 752 + }; 753 + 750 754 LanguageClient-neovim = 751 755 let 752 756 version = "0.1.161";
+1
pkgs/applications/editors/vim/plugins/vim-plugin-names
··· 419 419 https://github.com/vito-c/jq.vim/,, 420 420 https://github.com/neoclide/jsonc.vim/,, 421 421 https://github.com/JuliaEditorSupport/julia-vim/,, 422 + https://github.com/GCBallesteros/jupytext.nvim/,HEAD, 422 423 https://github.com/rebelot/kanagawa.nvim/,, 423 424 https://github.com/anuvyklack/keymap-layer.nvim/,HEAD, 424 425 https://github.com/kmonad/kmonad-vim/,,
+22 -21
pkgs/applications/graphics/monado/default.nix
··· 2 2 , stdenv 3 3 , fetchFromGitLab 4 4 , writeText 5 + , bluez 6 + , cjson 5 7 , cmake 6 - , cjson 8 + , dbus 7 9 , doxygen 8 - , glslang 9 - , pkg-config 10 - , python3 11 - , SDL2 12 - , bluez 13 - , dbus 14 10 , eigen 15 11 , elfutils 16 12 , ffmpeg 13 + , glslang 17 14 , gst-plugins-base 18 15 , gstreamer 19 16 , hidapi 20 - , libGL 21 - , libXau 22 - , libXdmcp 23 - , libXrandr 24 - , libXext 25 17 , libbsd 18 + , libdrm 26 19 , libffi 20 + , libGL 27 21 , libjpeg 28 22 , librealsense 29 23 , libsurvive ··· 32 26 , libuv 33 27 , libuvc 34 28 , libv4l 29 + , libXau 35 30 , libxcb 31 + , libXdmcp 32 + , libXext 33 + , libXrandr 36 34 , onnxruntime 37 35 , opencv4 38 36 , openhmd 39 37 , openvr 40 38 , orc 41 39 , pcre2 40 + , pkg-config 41 + , python3 42 + , SDL2 42 43 , shaderc 43 44 , udev 44 45 , vulkan-headers ··· 46 47 , wayland 47 48 , wayland-protocols 48 49 , wayland-scanner 49 - , libdrm 50 50 , zlib 51 51 , zstd 52 52 , nixosTests ··· 83 83 ]; 84 84 85 85 buildInputs = [ 86 - SDL2 87 86 bluez 88 87 cjson 89 88 dbus ··· 93 92 gst-plugins-base 94 93 gstreamer 95 94 hidapi 95 + libbsd 96 + libdrm 97 + libffi 96 98 libGL 97 - libXau 98 - libXdmcp 99 - libXrandr 100 - libbsd 101 99 libjpeg 102 - libffi 103 100 librealsense 104 101 libsurvive 105 102 libunwind ··· 107 104 libuv 108 105 libuvc 109 106 libv4l 107 + libXau 110 108 libxcb 109 + libXdmcp 110 + libXext 111 + libXrandr 111 112 onnxruntime 112 113 opencv4 113 114 openhmd 114 115 openvr 115 116 orc 116 117 pcre2 118 + SDL2 117 119 shaderc 118 120 udev 119 121 vulkan-headers 120 122 vulkan-loader 121 123 wayland 124 + wayland-protocols 122 125 wayland-scanner 123 - wayland-protocols 124 - libdrm 125 126 zlib 126 127 zstd 127 128 ];
+4
pkgs/applications/science/math/gfan/default.nix
··· 14 14 15 15 postPatch = lib.optionalString stdenv.cc.isClang '' 16 16 substituteInPlace Makefile --replace "-fno-guess-branch-probability" "" 17 + 18 + for f in $(find -name "*.h" -or -name "*.cpp"); do 19 + substituteInPlace "$f" --replace-quiet "log2" "_log2" 20 + done 17 21 ''; 18 22 19 23 buildFlags = [ "CC=${stdenv.cc.targetPrefix}cc" "CXX=${stdenv.cc.targetPrefix}c++" ];
-2
pkgs/applications/science/math/sage/sage-env.nix
··· 39 39 , ecm 40 40 , lcalc 41 41 , rubiks 42 - , flintqs 43 42 , blas 44 43 , lapack 45 44 , flint3 ··· 93 92 ecm 94 93 lcalc 95 94 rubiks 96 - flintqs 97 95 jdk # only needed for `jmol` which may be replaced in the future 98 96 less # needed to prevent transient test errors until https://github.com/ipython/ipython/pull/11864 is resolved 99 97 ]
-2
pkgs/applications/science/math/sage/sage-with-env.nix
··· 13 13 , gmp 14 14 , gfan 15 15 , python3 16 - , flintqs 17 16 , eclib 18 17 , ntl 19 18 , ecm ··· 40 39 gfan 41 40 maxima 42 41 eclib 43 - flintqs 44 42 ntl 45 43 ecm 46 44 ];
+3 -6
pkgs/applications/science/math/singular/default.nix
··· 13 13 , doxygen 14 14 , graphviz 15 15 , latex2html 16 - # upstream generates docs with texinfo 4. later versions of texinfo 17 - # use letters instead of numbers for post-appendix chapters, and we 18 - # want it to match the upstream format because sage depends on it. 19 - , texinfo4 16 + , texinfo 20 17 , texliveSmall 21 - , enableDocs ? true 18 + , enableDocs ? !stdenv.isDarwin 22 19 , enableGfanlib ? true 23 20 }: 24 21 ··· 85 82 doxygen 86 83 graphviz 87 84 latex2html 88 - texinfo4 85 + texinfo 89 86 texliveSmall 90 87 ] ++ lib.optionals stdenv.isDarwin [ getconf ]; 91 88 depsBuildBuild = [ buildPackages.stdenv.cc ];
+3 -3
pkgs/by-name/README.md
··· 108 108 109 109 ## Validation 110 110 111 - CI performs [certain checks](../test/nixpkgs-check-by-name/README.md#validity-checks) on the `pkgs/by-name` structure. 112 - This is done using the [`nixpkgs-check-by-name` tool](../test/nixpkgs-check-by-name). 111 + CI performs [certain checks](https://github.com/NixOS/nixpkgs-check-by-name?tab=readme-ov-file#validity-checks) on the `pkgs/by-name` structure. 112 + This is done using the [`nixpkgs-check-by-name` tool](https://github.com/NixOS/nixpkgs-check-by-name). 113 113 114 114 You can locally emulate the CI check using 115 115 116 116 ``` 117 - $ ./pkgs/test/nixpkgs-check-by-name/scripts/run-local.sh master 117 + $ ./maintainers/scripts/check-by-name.sh master 118 118 ``` 119 119 120 120 See [here](../../.github/workflows/check-by-name.yml) for more info.
+5174
pkgs/by-name/at/attic-client/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 3 4 + 5 + [[package]] 6 + name = "addr2line" 7 + version = "0.21.0" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 + dependencies = [ 11 + "gimli", 12 + ] 13 + 14 + [[package]] 15 + name = "adler" 16 + version = "1.0.2" 17 + source = "registry+https://github.com/rust-lang/crates.io-index" 18 + checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 + 20 + [[package]] 21 + name = "ahash" 22 + version = "0.7.7" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" 25 + dependencies = [ 26 + "getrandom", 27 + "once_cell", 28 + "version_check", 29 + ] 30 + 31 + [[package]] 32 + name = "ahash" 33 + version = "0.8.6" 34 + source = "registry+https://github.com/rust-lang/crates.io-index" 35 + checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" 36 + dependencies = [ 37 + "cfg-if", 38 + "getrandom", 39 + "once_cell", 40 + "version_check", 41 + "zerocopy", 42 + ] 43 + 44 + [[package]] 45 + name = "aho-corasick" 46 + version = "1.1.2" 47 + source = "registry+https://github.com/rust-lang/crates.io-index" 48 + checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 49 + dependencies = [ 50 + "memchr", 51 + ] 52 + 53 + [[package]] 54 + name = "aliasable" 55 + version = "0.1.3" 56 + source = "registry+https://github.com/rust-lang/crates.io-index" 57 + checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" 58 + 59 + [[package]] 60 + name = "alloc-no-stdlib" 61 + version = "2.0.4" 62 + source = "registry+https://github.com/rust-lang/crates.io-index" 63 + checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 64 + 65 + [[package]] 66 + name = "alloc-stdlib" 67 + version = "0.2.2" 68 + source = "registry+https://github.com/rust-lang/crates.io-index" 69 + checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 70 + dependencies = [ 71 + "alloc-no-stdlib", 72 + ] 73 + 74 + [[package]] 75 + name = "allocator-api2" 76 + version = "0.2.16" 77 + source = "registry+https://github.com/rust-lang/crates.io-index" 78 + checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" 79 + 80 + [[package]] 81 + name = "android-tzdata" 82 + version = "0.1.1" 83 + source = "registry+https://github.com/rust-lang/crates.io-index" 84 + checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 85 + 86 + [[package]] 87 + name = "android_system_properties" 88 + version = "0.1.5" 89 + source = "registry+https://github.com/rust-lang/crates.io-index" 90 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 91 + dependencies = [ 92 + "libc", 93 + ] 94 + 95 + [[package]] 96 + name = "anstream" 97 + version = "0.6.4" 98 + source = "registry+https://github.com/rust-lang/crates.io-index" 99 + checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" 100 + dependencies = [ 101 + "anstyle", 102 + "anstyle-parse", 103 + "anstyle-query", 104 + "anstyle-wincon", 105 + "colorchoice", 106 + "utf8parse", 107 + ] 108 + 109 + [[package]] 110 + name = "anstyle" 111 + version = "1.0.4" 112 + source = "registry+https://github.com/rust-lang/crates.io-index" 113 + checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" 114 + 115 + [[package]] 116 + name = "anstyle-parse" 117 + version = "0.2.2" 118 + source = "registry+https://github.com/rust-lang/crates.io-index" 119 + checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" 120 + dependencies = [ 121 + "utf8parse", 122 + ] 123 + 124 + [[package]] 125 + name = "anstyle-query" 126 + version = "1.0.0" 127 + source = "registry+https://github.com/rust-lang/crates.io-index" 128 + checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" 129 + dependencies = [ 130 + "windows-sys 0.48.0", 131 + ] 132 + 133 + [[package]] 134 + name = "anstyle-wincon" 135 + version = "3.0.1" 136 + source = "registry+https://github.com/rust-lang/crates.io-index" 137 + checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" 138 + dependencies = [ 139 + "anstyle", 140 + "windows-sys 0.48.0", 141 + ] 142 + 143 + [[package]] 144 + name = "anyhow" 145 + version = "1.0.75" 146 + source = "registry+https://github.com/rust-lang/crates.io-index" 147 + checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 148 + 149 + [[package]] 150 + name = "arrayvec" 151 + version = "0.7.4" 152 + source = "registry+https://github.com/rust-lang/crates.io-index" 153 + checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 154 + 155 + [[package]] 156 + name = "async-channel" 157 + version = "1.9.0" 158 + source = "registry+https://github.com/rust-lang/crates.io-index" 159 + checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 160 + dependencies = [ 161 + "concurrent-queue", 162 + "event-listener", 163 + "futures-core", 164 + ] 165 + 166 + [[package]] 167 + name = "async-compression" 168 + version = "0.4.4" 169 + source = "registry+https://github.com/rust-lang/crates.io-index" 170 + checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2" 171 + dependencies = [ 172 + "brotli", 173 + "futures-core", 174 + "memchr", 175 + "pin-project-lite", 176 + "tokio", 177 + "xz2", 178 + "zstd", 179 + "zstd-safe", 180 + ] 181 + 182 + [[package]] 183 + name = "async-stream" 184 + version = "0.3.5" 185 + source = "registry+https://github.com/rust-lang/crates.io-index" 186 + checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" 187 + dependencies = [ 188 + "async-stream-impl", 189 + "futures-core", 190 + "pin-project-lite", 191 + ] 192 + 193 + [[package]] 194 + name = "async-stream-impl" 195 + version = "0.3.5" 196 + source = "registry+https://github.com/rust-lang/crates.io-index" 197 + checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" 198 + dependencies = [ 199 + "proc-macro2", 200 + "quote", 201 + "syn 2.0.39", 202 + ] 203 + 204 + [[package]] 205 + name = "async-trait" 206 + version = "0.1.74" 207 + source = "registry+https://github.com/rust-lang/crates.io-index" 208 + checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" 209 + dependencies = [ 210 + "proc-macro2", 211 + "quote", 212 + "syn 2.0.39", 213 + ] 214 + 215 + [[package]] 216 + name = "atoi" 217 + version = "2.0.0" 218 + source = "registry+https://github.com/rust-lang/crates.io-index" 219 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 220 + dependencies = [ 221 + "num-traits", 222 + ] 223 + 224 + [[package]] 225 + name = "atomic-write-file" 226 + version = "0.1.2" 227 + source = "registry+https://github.com/rust-lang/crates.io-index" 228 + checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436" 229 + dependencies = [ 230 + "nix", 231 + "rand", 232 + ] 233 + 234 + [[package]] 235 + name = "attic" 236 + version = "0.1.0" 237 + dependencies = [ 238 + "async-stream", 239 + "base64 0.21.5", 240 + "bytes", 241 + "cxx", 242 + "cxx-build", 243 + "digest", 244 + "displaydoc", 245 + "ed25519-compact", 246 + "futures", 247 + "hex", 248 + "lazy_static", 249 + "log", 250 + "nix-base32", 251 + "pkg-config", 252 + "regex", 253 + "serde", 254 + "serde_json", 255 + "serde_with", 256 + "serde_yaml", 257 + "sha2", 258 + "tempfile", 259 + "tokio", 260 + "tokio-test", 261 + "wildmatch", 262 + "xdg", 263 + ] 264 + 265 + [[package]] 266 + name = "attic-client" 267 + version = "0.1.0" 268 + dependencies = [ 269 + "anyhow", 270 + "async-channel", 271 + "attic", 272 + "bytes", 273 + "clap", 274 + "clap_complete", 275 + "const_format", 276 + "dialoguer", 277 + "displaydoc", 278 + "enum-as-inner", 279 + "futures", 280 + "humantime", 281 + "indicatif", 282 + "lazy_static", 283 + "notify", 284 + "regex", 285 + "reqwest", 286 + "serde", 287 + "serde_json", 288 + "tokio", 289 + "toml 0.8.8", 290 + "tracing", 291 + "tracing-subscriber", 292 + "xdg", 293 + ] 294 + 295 + [[package]] 296 + name = "attic-server" 297 + version = "0.1.0" 298 + dependencies = [ 299 + "anyhow", 300 + "async-compression", 301 + "async-stream", 302 + "async-trait", 303 + "attic", 304 + "attic-token", 305 + "aws-config", 306 + "aws-sdk-s3", 307 + "axum", 308 + "axum-macros", 309 + "base64 0.21.5", 310 + "bytes", 311 + "chrono", 312 + "clap", 313 + "console-subscriber", 314 + "derivative", 315 + "digest", 316 + "displaydoc", 317 + "enum-as-inner", 318 + "fastcdc", 319 + "futures", 320 + "hex", 321 + "humantime", 322 + "humantime-serde", 323 + "itoa", 324 + "maybe-owned", 325 + "rand", 326 + "regex", 327 + "ryu", 328 + "sea-orm", 329 + "sea-orm-migration", 330 + "serde", 331 + "serde_json", 332 + "serde_with", 333 + "sha2", 334 + "tokio", 335 + "tokio-test", 336 + "tokio-util", 337 + "toml 0.8.8", 338 + "tower-http", 339 + "tracing", 340 + "tracing-error", 341 + "tracing-subscriber", 342 + "uuid", 343 + "xdg", 344 + ] 345 + 346 + [[package]] 347 + name = "attic-token" 348 + version = "0.1.0" 349 + dependencies = [ 350 + "attic", 351 + "base64 0.21.5", 352 + "chrono", 353 + "displaydoc", 354 + "jwt-simple", 355 + "lazy_static", 356 + "regex", 357 + "serde", 358 + "serde_with", 359 + "tracing", 360 + ] 361 + 362 + [[package]] 363 + name = "autocfg" 364 + version = "1.1.0" 365 + source = "registry+https://github.com/rust-lang/crates.io-index" 366 + checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 367 + 368 + [[package]] 369 + name = "aws-config" 370 + version = "0.57.1" 371 + source = "registry+https://github.com/rust-lang/crates.io-index" 372 + checksum = "7489a72550db3712fe3a0a92068f832d6270ff82f518b84a800af131f99570d7" 373 + dependencies = [ 374 + "aws-credential-types", 375 + "aws-http", 376 + "aws-runtime", 377 + "aws-sdk-sso", 378 + "aws-sdk-ssooidc", 379 + "aws-sdk-sts", 380 + "aws-smithy-async", 381 + "aws-smithy-http", 382 + "aws-smithy-json", 383 + "aws-smithy-runtime", 384 + "aws-smithy-runtime-api", 385 + "aws-smithy-types", 386 + "aws-types", 387 + "bytes", 388 + "fastrand", 389 + "hex", 390 + "http", 391 + "hyper", 392 + "ring", 393 + "time", 394 + "tokio", 395 + "tracing", 396 + "zeroize", 397 + ] 398 + 399 + [[package]] 400 + name = "aws-credential-types" 401 + version = "0.57.1" 402 + source = "registry+https://github.com/rust-lang/crates.io-index" 403 + checksum = "80009846d61a0a4f9070d789cf0e64db284cba6984fae3871050d044e6569cd2" 404 + dependencies = [ 405 + "aws-smithy-async", 406 + "aws-smithy-runtime-api", 407 + "aws-smithy-types", 408 + "zeroize", 409 + ] 410 + 411 + [[package]] 412 + name = "aws-http" 413 + version = "0.57.1" 414 + source = "registry+https://github.com/rust-lang/crates.io-index" 415 + checksum = "1e65730b741a5f6422fd338bf6f76b7956b090affeaa045e78fca8c4186e0fd5" 416 + dependencies = [ 417 + "aws-smithy-http", 418 + "aws-smithy-runtime-api", 419 + "aws-smithy-types", 420 + "aws-types", 421 + "bytes", 422 + "http", 423 + "http-body", 424 + "pin-project-lite", 425 + "tracing", 426 + ] 427 + 428 + [[package]] 429 + name = "aws-runtime" 430 + version = "0.57.1" 431 + source = "registry+https://github.com/rust-lang/crates.io-index" 432 + checksum = "1d2414b96071ae840b97c0cc1d44b248d5607d648593cdf474f3fb5465572898" 433 + dependencies = [ 434 + "aws-credential-types", 435 + "aws-http", 436 + "aws-sigv4", 437 + "aws-smithy-async", 438 + "aws-smithy-eventstream", 439 + "aws-smithy-http", 440 + "aws-smithy-runtime-api", 441 + "aws-smithy-types", 442 + "aws-types", 443 + "fastrand", 444 + "http", 445 + "percent-encoding", 446 + "tracing", 447 + "uuid", 448 + ] 449 + 450 + [[package]] 451 + name = "aws-sdk-s3" 452 + version = "0.35.0" 453 + source = "registry+https://github.com/rust-lang/crates.io-index" 454 + checksum = "84022763485483ea17d417f9832d5da198bc36829b59f086c0d35ecd2ce59991" 455 + dependencies = [ 456 + "aws-credential-types", 457 + "aws-http", 458 + "aws-runtime", 459 + "aws-sigv4", 460 + "aws-smithy-async", 461 + "aws-smithy-checksums", 462 + "aws-smithy-eventstream", 463 + "aws-smithy-http", 464 + "aws-smithy-json", 465 + "aws-smithy-runtime", 466 + "aws-smithy-runtime-api", 467 + "aws-smithy-types", 468 + "aws-smithy-xml", 469 + "aws-types", 470 + "bytes", 471 + "http", 472 + "http-body", 473 + "once_cell", 474 + "percent-encoding", 475 + "regex", 476 + "tracing", 477 + "url", 478 + ] 479 + 480 + [[package]] 481 + name = "aws-sdk-sso" 482 + version = "0.35.0" 483 + source = "registry+https://github.com/rust-lang/crates.io-index" 484 + checksum = "341a5b00567d0f350025501c8fd36e1ca8055744a2d17e351f0b254f84eba48a" 485 + dependencies = [ 486 + "aws-credential-types", 487 + "aws-http", 488 + "aws-runtime", 489 + "aws-smithy-async", 490 + "aws-smithy-http", 491 + "aws-smithy-json", 492 + "aws-smithy-runtime", 493 + "aws-smithy-runtime-api", 494 + "aws-smithy-types", 495 + "aws-types", 496 + "bytes", 497 + "http", 498 + "regex", 499 + "tracing", 500 + ] 501 + 502 + [[package]] 503 + name = "aws-sdk-ssooidc" 504 + version = "0.35.0" 505 + source = "registry+https://github.com/rust-lang/crates.io-index" 506 + checksum = "dbd4bffbd26f66269933bcd26123f2d6860769c0f769b6d3fc10eda025d287d8" 507 + dependencies = [ 508 + "aws-credential-types", 509 + "aws-http", 510 + "aws-runtime", 511 + "aws-smithy-async", 512 + "aws-smithy-http", 513 + "aws-smithy-json", 514 + "aws-smithy-runtime", 515 + "aws-smithy-runtime-api", 516 + "aws-smithy-types", 517 + "aws-types", 518 + "bytes", 519 + "http", 520 + "regex", 521 + "tracing", 522 + ] 523 + 524 + [[package]] 525 + name = "aws-sdk-sts" 526 + version = "0.35.0" 527 + source = "registry+https://github.com/rust-lang/crates.io-index" 528 + checksum = "51b1a8ae5c7098502a3e6d4130dbee1e1d3fcb8dc5d65cecab39e01d595f90f6" 529 + dependencies = [ 530 + "aws-credential-types", 531 + "aws-http", 532 + "aws-runtime", 533 + "aws-smithy-async", 534 + "aws-smithy-http", 535 + "aws-smithy-json", 536 + "aws-smithy-query", 537 + "aws-smithy-runtime", 538 + "aws-smithy-runtime-api", 539 + "aws-smithy-types", 540 + "aws-smithy-xml", 541 + "aws-types", 542 + "http", 543 + "regex", 544 + "tracing", 545 + ] 546 + 547 + [[package]] 548 + name = "aws-sigv4" 549 + version = "0.57.1" 550 + source = "registry+https://github.com/rust-lang/crates.io-index" 551 + checksum = "3347c738e0a8449020877d319cda56da74d6e8aba9fff210720fac66cae3c7f4" 552 + dependencies = [ 553 + "aws-credential-types", 554 + "aws-smithy-eventstream", 555 + "aws-smithy-http", 556 + "aws-smithy-runtime-api", 557 + "bytes", 558 + "form_urlencoded", 559 + "hex", 560 + "hmac", 561 + "http", 562 + "num-bigint", 563 + "once_cell", 564 + "p256 0.11.1", 565 + "percent-encoding", 566 + "regex", 567 + "ring", 568 + "sha2", 569 + "time", 570 + "tracing", 571 + "zeroize", 572 + ] 573 + 574 + [[package]] 575 + name = "aws-smithy-async" 576 + version = "0.57.1" 577 + source = "registry+https://github.com/rust-lang/crates.io-index" 578 + checksum = "b4b65a284265d3eec6cc9f1daef2d0cc3b78684b712cb6c7f1d0f665456b7604" 579 + dependencies = [ 580 + "futures-util", 581 + "pin-project-lite", 582 + "tokio", 583 + ] 584 + 585 + [[package]] 586 + name = "aws-smithy-checksums" 587 + version = "0.57.1" 588 + source = "registry+https://github.com/rust-lang/crates.io-index" 589 + checksum = "d40f1d5a222ba11ac7d6b20f3668ae282970e50615fa5ee1dd8ac8180c0c1803" 590 + dependencies = [ 591 + "aws-smithy-http", 592 + "aws-smithy-types", 593 + "bytes", 594 + "crc32c", 595 + "crc32fast", 596 + "hex", 597 + "http", 598 + "http-body", 599 + "md-5", 600 + "pin-project-lite", 601 + "sha1", 602 + "sha2", 603 + "tracing", 604 + ] 605 + 606 + [[package]] 607 + name = "aws-smithy-eventstream" 608 + version = "0.57.1" 609 + source = "registry+https://github.com/rust-lang/crates.io-index" 610 + checksum = "b16e7ecebc2b083a1b138868a46a343204a6097f343c4830a8b22b3a0d30013e" 611 + dependencies = [ 612 + "aws-smithy-types", 613 + "bytes", 614 + "crc32fast", 615 + ] 616 + 617 + [[package]] 618 + name = "aws-smithy-http" 619 + version = "0.57.1" 620 + source = "registry+https://github.com/rust-lang/crates.io-index" 621 + checksum = "715aeb61fb743848d5d398ce6fb1259f5eba5e13dceec5d5064cada1a181d38d" 622 + dependencies = [ 623 + "aws-smithy-eventstream", 624 + "aws-smithy-runtime-api", 625 + "aws-smithy-types", 626 + "bytes", 627 + "bytes-utils", 628 + "futures-core", 629 + "http", 630 + "http-body", 631 + "once_cell", 632 + "percent-encoding", 633 + "pin-project-lite", 634 + "pin-utils", 635 + "tracing", 636 + ] 637 + 638 + [[package]] 639 + name = "aws-smithy-json" 640 + version = "0.57.1" 641 + source = "registry+https://github.com/rust-lang/crates.io-index" 642 + checksum = "de21d368dcd5cab17033406ea6e7351b091164b208381de837510bd7558c0f30" 643 + dependencies = [ 644 + "aws-smithy-types", 645 + ] 646 + 647 + [[package]] 648 + name = "aws-smithy-query" 649 + version = "0.57.1" 650 + source = "registry+https://github.com/rust-lang/crates.io-index" 651 + checksum = "9e5ace389c7e4def130bff7275647481c8d49b867909ca61d5dc9a809b3632f3" 652 + dependencies = [ 653 + "aws-smithy-types", 654 + "urlencoding", 655 + ] 656 + 657 + [[package]] 658 + name = "aws-smithy-runtime" 659 + version = "0.57.1" 660 + source = "registry+https://github.com/rust-lang/crates.io-index" 661 + checksum = "fb4395310662d10f1847324af5fe43e621922cba03b1aa6d26c21096e18a4e79" 662 + dependencies = [ 663 + "aws-smithy-async", 664 + "aws-smithy-http", 665 + "aws-smithy-runtime-api", 666 + "aws-smithy-types", 667 + "bytes", 668 + "fastrand", 669 + "http", 670 + "http-body", 671 + "hyper", 672 + "hyper-rustls", 673 + "once_cell", 674 + "pin-project-lite", 675 + "pin-utils", 676 + "rustls", 677 + "tokio", 678 + "tracing", 679 + ] 680 + 681 + [[package]] 682 + name = "aws-smithy-runtime-api" 683 + version = "0.57.1" 684 + source = "registry+https://github.com/rust-lang/crates.io-index" 685 + checksum = "30e27594c06f5b36e97d18ef26ed693f1d4c7167b9bbb544b3a9bb653f9f7035" 686 + dependencies = [ 687 + "aws-smithy-async", 688 + "aws-smithy-types", 689 + "bytes", 690 + "http", 691 + "pin-project-lite", 692 + "tokio", 693 + "tracing", 694 + "zeroize", 695 + ] 696 + 697 + [[package]] 698 + name = "aws-smithy-types" 699 + version = "0.57.1" 700 + source = "registry+https://github.com/rust-lang/crates.io-index" 701 + checksum = "5d36f1723ed61e82094498e7283510fe21484b73c215c33874c81a84411b5bdc" 702 + dependencies = [ 703 + "base64-simd", 704 + "bytes", 705 + "bytes-utils", 706 + "futures-core", 707 + "http", 708 + "http-body", 709 + "itoa", 710 + "num-integer", 711 + "pin-project-lite", 712 + "pin-utils", 713 + "ryu", 714 + "serde", 715 + "time", 716 + "tokio", 717 + "tokio-util", 718 + ] 719 + 720 + [[package]] 721 + name = "aws-smithy-xml" 722 + version = "0.57.1" 723 + source = "registry+https://github.com/rust-lang/crates.io-index" 724 + checksum = "68225c8d3e3e6c565a3cf764aa82440837ef15c33d1dd7205e15715444e4b4ad" 725 + dependencies = [ 726 + "xmlparser", 727 + ] 728 + 729 + [[package]] 730 + name = "aws-types" 731 + version = "0.57.1" 732 + source = "registry+https://github.com/rust-lang/crates.io-index" 733 + checksum = "acdc27aac60f715bab25f5d758ba5651b80aae791c48e9871ffe298683f00a2b" 734 + dependencies = [ 735 + "aws-credential-types", 736 + "aws-smithy-async", 737 + "aws-smithy-runtime-api", 738 + "aws-smithy-types", 739 + "http", 740 + "rustc_version", 741 + "tracing", 742 + ] 743 + 744 + [[package]] 745 + name = "axum" 746 + version = "0.6.20" 747 + source = "registry+https://github.com/rust-lang/crates.io-index" 748 + checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" 749 + dependencies = [ 750 + "async-trait", 751 + "axum-core", 752 + "bitflags 1.3.2", 753 + "bytes", 754 + "futures-util", 755 + "http", 756 + "http-body", 757 + "hyper", 758 + "itoa", 759 + "matchit", 760 + "memchr", 761 + "mime", 762 + "percent-encoding", 763 + "pin-project-lite", 764 + "rustversion", 765 + "serde", 766 + "serde_json", 767 + "serde_path_to_error", 768 + "serde_urlencoded", 769 + "sync_wrapper", 770 + "tokio", 771 + "tower", 772 + "tower-layer", 773 + "tower-service", 774 + ] 775 + 776 + [[package]] 777 + name = "axum-core" 778 + version = "0.3.4" 779 + source = "registry+https://github.com/rust-lang/crates.io-index" 780 + checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" 781 + dependencies = [ 782 + "async-trait", 783 + "bytes", 784 + "futures-util", 785 + "http", 786 + "http-body", 787 + "mime", 788 + "rustversion", 789 + "tower-layer", 790 + "tower-service", 791 + ] 792 + 793 + [[package]] 794 + name = "axum-macros" 795 + version = "0.3.8" 796 + source = "registry+https://github.com/rust-lang/crates.io-index" 797 + checksum = "cdca6a10ecad987bda04e95606ef85a5417dcaac1a78455242d72e031e2b6b62" 798 + dependencies = [ 799 + "heck", 800 + "proc-macro2", 801 + "quote", 802 + "syn 2.0.39", 803 + ] 804 + 805 + [[package]] 806 + name = "backtrace" 807 + version = "0.3.69" 808 + source = "registry+https://github.com/rust-lang/crates.io-index" 809 + checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 810 + dependencies = [ 811 + "addr2line", 812 + "cc", 813 + "cfg-if", 814 + "libc", 815 + "miniz_oxide", 816 + "object", 817 + "rustc-demangle", 818 + ] 819 + 820 + [[package]] 821 + name = "base16ct" 822 + version = "0.1.1" 823 + source = "registry+https://github.com/rust-lang/crates.io-index" 824 + checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" 825 + 826 + [[package]] 827 + name = "base16ct" 828 + version = "0.2.0" 829 + source = "registry+https://github.com/rust-lang/crates.io-index" 830 + checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 831 + 832 + [[package]] 833 + name = "base64" 834 + version = "0.13.1" 835 + source = "registry+https://github.com/rust-lang/crates.io-index" 836 + checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 837 + 838 + [[package]] 839 + name = "base64" 840 + version = "0.21.5" 841 + source = "registry+https://github.com/rust-lang/crates.io-index" 842 + checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 843 + 844 + [[package]] 845 + name = "base64-simd" 846 + version = "0.8.0" 847 + source = "registry+https://github.com/rust-lang/crates.io-index" 848 + checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" 849 + dependencies = [ 850 + "outref", 851 + "vsimd", 852 + ] 853 + 854 + [[package]] 855 + name = "base64ct" 856 + version = "1.6.0" 857 + source = "registry+https://github.com/rust-lang/crates.io-index" 858 + checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 859 + 860 + [[package]] 861 + name = "bigdecimal" 862 + version = "0.3.1" 863 + source = "registry+https://github.com/rust-lang/crates.io-index" 864 + checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" 865 + dependencies = [ 866 + "num-bigint", 867 + "num-integer", 868 + "num-traits", 869 + ] 870 + 871 + [[package]] 872 + name = "binstring" 873 + version = "0.1.1" 874 + source = "registry+https://github.com/rust-lang/crates.io-index" 875 + checksum = "7e0d60973d9320722cb1206f412740e162a33b8547ea8d6be75d7cff237c7a85" 876 + 877 + [[package]] 878 + name = "bitflags" 879 + version = "1.3.2" 880 + source = "registry+https://github.com/rust-lang/crates.io-index" 881 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 882 + 883 + [[package]] 884 + name = "bitflags" 885 + version = "2.4.1" 886 + source = "registry+https://github.com/rust-lang/crates.io-index" 887 + checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 888 + dependencies = [ 889 + "serde", 890 + ] 891 + 892 + [[package]] 893 + name = "bitvec" 894 + version = "1.0.1" 895 + source = "registry+https://github.com/rust-lang/crates.io-index" 896 + checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" 897 + dependencies = [ 898 + "funty", 899 + "radium", 900 + "tap", 901 + "wyz", 902 + ] 903 + 904 + [[package]] 905 + name = "block-buffer" 906 + version = "0.10.4" 907 + source = "registry+https://github.com/rust-lang/crates.io-index" 908 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 909 + dependencies = [ 910 + "generic-array", 911 + ] 912 + 913 + [[package]] 914 + name = "borsh" 915 + version = "0.10.3" 916 + source = "registry+https://github.com/rust-lang/crates.io-index" 917 + checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" 918 + dependencies = [ 919 + "borsh-derive", 920 + "hashbrown 0.13.2", 921 + ] 922 + 923 + [[package]] 924 + name = "borsh-derive" 925 + version = "0.10.3" 926 + source = "registry+https://github.com/rust-lang/crates.io-index" 927 + checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" 928 + dependencies = [ 929 + "borsh-derive-internal", 930 + "borsh-schema-derive-internal", 931 + "proc-macro-crate", 932 + "proc-macro2", 933 + "syn 1.0.109", 934 + ] 935 + 936 + [[package]] 937 + name = "borsh-derive-internal" 938 + version = "0.10.3" 939 + source = "registry+https://github.com/rust-lang/crates.io-index" 940 + checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" 941 + dependencies = [ 942 + "proc-macro2", 943 + "quote", 944 + "syn 1.0.109", 945 + ] 946 + 947 + [[package]] 948 + name = "borsh-schema-derive-internal" 949 + version = "0.10.3" 950 + source = "registry+https://github.com/rust-lang/crates.io-index" 951 + checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" 952 + dependencies = [ 953 + "proc-macro2", 954 + "quote", 955 + "syn 1.0.109", 956 + ] 957 + 958 + [[package]] 959 + name = "brotli" 960 + version = "3.4.0" 961 + source = "registry+https://github.com/rust-lang/crates.io-index" 962 + checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" 963 + dependencies = [ 964 + "alloc-no-stdlib", 965 + "alloc-stdlib", 966 + "brotli-decompressor", 967 + ] 968 + 969 + [[package]] 970 + name = "brotli-decompressor" 971 + version = "2.5.1" 972 + source = "registry+https://github.com/rust-lang/crates.io-index" 973 + checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" 974 + dependencies = [ 975 + "alloc-no-stdlib", 976 + "alloc-stdlib", 977 + ] 978 + 979 + [[package]] 980 + name = "bumpalo" 981 + version = "3.14.0" 982 + source = "registry+https://github.com/rust-lang/crates.io-index" 983 + checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 984 + 985 + [[package]] 986 + name = "bytecheck" 987 + version = "0.6.11" 988 + source = "registry+https://github.com/rust-lang/crates.io-index" 989 + checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" 990 + dependencies = [ 991 + "bytecheck_derive", 992 + "ptr_meta", 993 + "simdutf8", 994 + ] 995 + 996 + [[package]] 997 + name = "bytecheck_derive" 998 + version = "0.6.11" 999 + source = "registry+https://github.com/rust-lang/crates.io-index" 1000 + checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" 1001 + dependencies = [ 1002 + "proc-macro2", 1003 + "quote", 1004 + "syn 1.0.109", 1005 + ] 1006 + 1007 + [[package]] 1008 + name = "byteorder" 1009 + version = "1.5.0" 1010 + source = "registry+https://github.com/rust-lang/crates.io-index" 1011 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 1012 + 1013 + [[package]] 1014 + name = "bytes" 1015 + version = "1.5.0" 1016 + source = "registry+https://github.com/rust-lang/crates.io-index" 1017 + checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 1018 + 1019 + [[package]] 1020 + name = "bytes-utils" 1021 + version = "0.1.3" 1022 + source = "registry+https://github.com/rust-lang/crates.io-index" 1023 + checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" 1024 + dependencies = [ 1025 + "bytes", 1026 + "either", 1027 + ] 1028 + 1029 + [[package]] 1030 + name = "cc" 1031 + version = "1.0.84" 1032 + source = "registry+https://github.com/rust-lang/crates.io-index" 1033 + checksum = "0f8e7c90afad890484a21653d08b6e209ae34770fb5ee298f9c699fcc1e5c856" 1034 + dependencies = [ 1035 + "libc", 1036 + ] 1037 + 1038 + [[package]] 1039 + name = "cfg-if" 1040 + version = "1.0.0" 1041 + source = "registry+https://github.com/rust-lang/crates.io-index" 1042 + checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 1043 + 1044 + [[package]] 1045 + name = "chrono" 1046 + version = "0.4.31" 1047 + source = "registry+https://github.com/rust-lang/crates.io-index" 1048 + checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" 1049 + dependencies = [ 1050 + "android-tzdata", 1051 + "iana-time-zone", 1052 + "js-sys", 1053 + "num-traits", 1054 + "serde", 1055 + "wasm-bindgen", 1056 + "windows-targets 0.48.5", 1057 + ] 1058 + 1059 + [[package]] 1060 + name = "clap" 1061 + version = "4.4.8" 1062 + source = "registry+https://github.com/rust-lang/crates.io-index" 1063 + checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" 1064 + dependencies = [ 1065 + "clap_builder", 1066 + "clap_derive", 1067 + ] 1068 + 1069 + [[package]] 1070 + name = "clap_builder" 1071 + version = "4.4.8" 1072 + source = "registry+https://github.com/rust-lang/crates.io-index" 1073 + checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" 1074 + dependencies = [ 1075 + "anstream", 1076 + "anstyle", 1077 + "clap_lex", 1078 + "strsim", 1079 + ] 1080 + 1081 + [[package]] 1082 + name = "clap_complete" 1083 + version = "4.4.4" 1084 + source = "registry+https://github.com/rust-lang/crates.io-index" 1085 + checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae" 1086 + dependencies = [ 1087 + "clap", 1088 + ] 1089 + 1090 + [[package]] 1091 + name = "clap_derive" 1092 + version = "4.4.7" 1093 + source = "registry+https://github.com/rust-lang/crates.io-index" 1094 + checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" 1095 + dependencies = [ 1096 + "heck", 1097 + "proc-macro2", 1098 + "quote", 1099 + "syn 2.0.39", 1100 + ] 1101 + 1102 + [[package]] 1103 + name = "clap_lex" 1104 + version = "0.6.0" 1105 + source = "registry+https://github.com/rust-lang/crates.io-index" 1106 + checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" 1107 + 1108 + [[package]] 1109 + name = "coarsetime" 1110 + version = "0.1.33" 1111 + source = "registry+https://github.com/rust-lang/crates.io-index" 1112 + checksum = "71367d3385c716342014ad17e3d19f7788ae514885a1f4c24f500260fb365e1a" 1113 + dependencies = [ 1114 + "libc", 1115 + "once_cell", 1116 + "wasi", 1117 + "wasm-bindgen", 1118 + ] 1119 + 1120 + [[package]] 1121 + name = "codespan-reporting" 1122 + version = "0.11.1" 1123 + source = "registry+https://github.com/rust-lang/crates.io-index" 1124 + checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 1125 + dependencies = [ 1126 + "termcolor", 1127 + "unicode-width", 1128 + ] 1129 + 1130 + [[package]] 1131 + name = "colorchoice" 1132 + version = "1.0.0" 1133 + source = "registry+https://github.com/rust-lang/crates.io-index" 1134 + checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 1135 + 1136 + [[package]] 1137 + name = "concurrent-queue" 1138 + version = "2.3.0" 1139 + source = "registry+https://github.com/rust-lang/crates.io-index" 1140 + checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" 1141 + dependencies = [ 1142 + "crossbeam-utils", 1143 + ] 1144 + 1145 + [[package]] 1146 + name = "console" 1147 + version = "0.15.7" 1148 + source = "registry+https://github.com/rust-lang/crates.io-index" 1149 + checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" 1150 + dependencies = [ 1151 + "encode_unicode", 1152 + "lazy_static", 1153 + "libc", 1154 + "unicode-width", 1155 + "windows-sys 0.45.0", 1156 + ] 1157 + 1158 + [[package]] 1159 + name = "console-api" 1160 + version = "0.6.0" 1161 + source = "registry+https://github.com/rust-lang/crates.io-index" 1162 + checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787" 1163 + dependencies = [ 1164 + "futures-core", 1165 + "prost", 1166 + "prost-types", 1167 + "tonic", 1168 + "tracing-core", 1169 + ] 1170 + 1171 + [[package]] 1172 + name = "console-subscriber" 1173 + version = "0.2.0" 1174 + source = "registry+https://github.com/rust-lang/crates.io-index" 1175 + checksum = "7481d4c57092cd1c19dd541b92bdce883de840df30aa5d03fd48a3935c01842e" 1176 + dependencies = [ 1177 + "console-api", 1178 + "crossbeam-channel", 1179 + "crossbeam-utils", 1180 + "futures-task", 1181 + "hdrhistogram", 1182 + "humantime", 1183 + "prost-types", 1184 + "serde", 1185 + "serde_json", 1186 + "thread_local", 1187 + "tokio", 1188 + "tokio-stream", 1189 + "tonic", 1190 + "tracing", 1191 + "tracing-core", 1192 + "tracing-subscriber", 1193 + ] 1194 + 1195 + [[package]] 1196 + name = "const-oid" 1197 + version = "0.9.5" 1198 + source = "registry+https://github.com/rust-lang/crates.io-index" 1199 + checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" 1200 + 1201 + [[package]] 1202 + name = "const_format" 1203 + version = "0.2.32" 1204 + source = "registry+https://github.com/rust-lang/crates.io-index" 1205 + checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" 1206 + dependencies = [ 1207 + "const_format_proc_macros", 1208 + ] 1209 + 1210 + [[package]] 1211 + name = "const_format_proc_macros" 1212 + version = "0.2.32" 1213 + source = "registry+https://github.com/rust-lang/crates.io-index" 1214 + checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" 1215 + dependencies = [ 1216 + "proc-macro2", 1217 + "quote", 1218 + "unicode-xid", 1219 + ] 1220 + 1221 + [[package]] 1222 + name = "core-foundation" 1223 + version = "0.9.3" 1224 + source = "registry+https://github.com/rust-lang/crates.io-index" 1225 + checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 1226 + dependencies = [ 1227 + "core-foundation-sys", 1228 + "libc", 1229 + ] 1230 + 1231 + [[package]] 1232 + name = "core-foundation-sys" 1233 + version = "0.8.4" 1234 + source = "registry+https://github.com/rust-lang/crates.io-index" 1235 + checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 1236 + 1237 + [[package]] 1238 + name = "cpufeatures" 1239 + version = "0.2.11" 1240 + source = "registry+https://github.com/rust-lang/crates.io-index" 1241 + checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 1242 + dependencies = [ 1243 + "libc", 1244 + ] 1245 + 1246 + [[package]] 1247 + name = "crc" 1248 + version = "3.0.1" 1249 + source = "registry+https://github.com/rust-lang/crates.io-index" 1250 + checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" 1251 + dependencies = [ 1252 + "crc-catalog", 1253 + ] 1254 + 1255 + [[package]] 1256 + name = "crc-catalog" 1257 + version = "2.4.0" 1258 + source = "registry+https://github.com/rust-lang/crates.io-index" 1259 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 1260 + 1261 + [[package]] 1262 + name = "crc32c" 1263 + version = "0.6.4" 1264 + source = "registry+https://github.com/rust-lang/crates.io-index" 1265 + checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" 1266 + dependencies = [ 1267 + "rustc_version", 1268 + ] 1269 + 1270 + [[package]] 1271 + name = "crc32fast" 1272 + version = "1.3.2" 1273 + source = "registry+https://github.com/rust-lang/crates.io-index" 1274 + checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 1275 + dependencies = [ 1276 + "cfg-if", 1277 + ] 1278 + 1279 + [[package]] 1280 + name = "crossbeam-channel" 1281 + version = "0.5.8" 1282 + source = "registry+https://github.com/rust-lang/crates.io-index" 1283 + checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" 1284 + dependencies = [ 1285 + "cfg-if", 1286 + "crossbeam-utils", 1287 + ] 1288 + 1289 + [[package]] 1290 + name = "crossbeam-queue" 1291 + version = "0.3.8" 1292 + source = "registry+https://github.com/rust-lang/crates.io-index" 1293 + checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" 1294 + dependencies = [ 1295 + "cfg-if", 1296 + "crossbeam-utils", 1297 + ] 1298 + 1299 + [[package]] 1300 + name = "crossbeam-utils" 1301 + version = "0.8.16" 1302 + source = "registry+https://github.com/rust-lang/crates.io-index" 1303 + checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" 1304 + dependencies = [ 1305 + "cfg-if", 1306 + ] 1307 + 1308 + [[package]] 1309 + name = "crypto-bigint" 1310 + version = "0.4.9" 1311 + source = "registry+https://github.com/rust-lang/crates.io-index" 1312 + checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" 1313 + dependencies = [ 1314 + "generic-array", 1315 + "rand_core", 1316 + "subtle", 1317 + "zeroize", 1318 + ] 1319 + 1320 + [[package]] 1321 + name = "crypto-bigint" 1322 + version = "0.5.4" 1323 + source = "registry+https://github.com/rust-lang/crates.io-index" 1324 + checksum = "28f85c3514d2a6e64160359b45a3918c3b4178bcbf4ae5d03ab2d02e521c479a" 1325 + dependencies = [ 1326 + "generic-array", 1327 + "rand_core", 1328 + "subtle", 1329 + "zeroize", 1330 + ] 1331 + 1332 + [[package]] 1333 + name = "crypto-common" 1334 + version = "0.1.6" 1335 + source = "registry+https://github.com/rust-lang/crates.io-index" 1336 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 1337 + dependencies = [ 1338 + "generic-array", 1339 + "typenum", 1340 + ] 1341 + 1342 + [[package]] 1343 + name = "ct-codecs" 1344 + version = "1.1.1" 1345 + source = "registry+https://github.com/rust-lang/crates.io-index" 1346 + checksum = "f3b7eb4404b8195a9abb6356f4ac07d8ba267045c8d6d220ac4dc992e6cc75df" 1347 + 1348 + [[package]] 1349 + name = "cxx" 1350 + version = "1.0.110" 1351 + source = "registry+https://github.com/rust-lang/crates.io-index" 1352 + checksum = "7129e341034ecb940c9072817cd9007974ea696844fc4dd582dc1653a7fbe2e8" 1353 + dependencies = [ 1354 + "cc", 1355 + "cxxbridge-flags", 1356 + "cxxbridge-macro", 1357 + "link-cplusplus", 1358 + ] 1359 + 1360 + [[package]] 1361 + name = "cxx-build" 1362 + version = "1.0.110" 1363 + source = "registry+https://github.com/rust-lang/crates.io-index" 1364 + checksum = "a2a24f3f5f8eed71936f21e570436f024f5c2e25628f7496aa7ccd03b90109d5" 1365 + dependencies = [ 1366 + "cc", 1367 + "codespan-reporting", 1368 + "once_cell", 1369 + "proc-macro2", 1370 + "quote", 1371 + "scratch", 1372 + "syn 2.0.39", 1373 + ] 1374 + 1375 + [[package]] 1376 + name = "cxxbridge-flags" 1377 + version = "1.0.110" 1378 + source = "registry+https://github.com/rust-lang/crates.io-index" 1379 + checksum = "06fdd177fc61050d63f67f5bd6351fac6ab5526694ea8e359cd9cd3b75857f44" 1380 + 1381 + [[package]] 1382 + name = "cxxbridge-macro" 1383 + version = "1.0.110" 1384 + source = "registry+https://github.com/rust-lang/crates.io-index" 1385 + checksum = "587663dd5fb3d10932c8aecfe7c844db1bcf0aee93eeab08fac13dc1212c2e7f" 1386 + dependencies = [ 1387 + "proc-macro2", 1388 + "quote", 1389 + "syn 2.0.39", 1390 + ] 1391 + 1392 + [[package]] 1393 + name = "darling" 1394 + version = "0.20.3" 1395 + source = "registry+https://github.com/rust-lang/crates.io-index" 1396 + checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" 1397 + dependencies = [ 1398 + "darling_core", 1399 + "darling_macro", 1400 + ] 1401 + 1402 + [[package]] 1403 + name = "darling_core" 1404 + version = "0.20.3" 1405 + source = "registry+https://github.com/rust-lang/crates.io-index" 1406 + checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" 1407 + dependencies = [ 1408 + "fnv", 1409 + "ident_case", 1410 + "proc-macro2", 1411 + "quote", 1412 + "strsim", 1413 + "syn 2.0.39", 1414 + ] 1415 + 1416 + [[package]] 1417 + name = "darling_macro" 1418 + version = "0.20.3" 1419 + source = "registry+https://github.com/rust-lang/crates.io-index" 1420 + checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" 1421 + dependencies = [ 1422 + "darling_core", 1423 + "quote", 1424 + "syn 2.0.39", 1425 + ] 1426 + 1427 + [[package]] 1428 + name = "der" 1429 + version = "0.6.1" 1430 + source = "registry+https://github.com/rust-lang/crates.io-index" 1431 + checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" 1432 + dependencies = [ 1433 + "const-oid", 1434 + "pem-rfc7468 0.6.0", 1435 + "zeroize", 1436 + ] 1437 + 1438 + [[package]] 1439 + name = "der" 1440 + version = "0.7.8" 1441 + source = "registry+https://github.com/rust-lang/crates.io-index" 1442 + checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" 1443 + dependencies = [ 1444 + "const-oid", 1445 + "pem-rfc7468 0.7.0", 1446 + "zeroize", 1447 + ] 1448 + 1449 + [[package]] 1450 + name = "deranged" 1451 + version = "0.3.9" 1452 + source = "registry+https://github.com/rust-lang/crates.io-index" 1453 + checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" 1454 + dependencies = [ 1455 + "powerfmt", 1456 + "serde", 1457 + ] 1458 + 1459 + [[package]] 1460 + name = "derivative" 1461 + version = "2.2.0" 1462 + source = "registry+https://github.com/rust-lang/crates.io-index" 1463 + checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 1464 + dependencies = [ 1465 + "proc-macro2", 1466 + "quote", 1467 + "syn 1.0.109", 1468 + ] 1469 + 1470 + [[package]] 1471 + name = "dialoguer" 1472 + version = "0.11.0" 1473 + source = "registry+https://github.com/rust-lang/crates.io-index" 1474 + checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" 1475 + dependencies = [ 1476 + "console", 1477 + "shell-words", 1478 + "tempfile", 1479 + "thiserror", 1480 + "zeroize", 1481 + ] 1482 + 1483 + [[package]] 1484 + name = "digest" 1485 + version = "0.10.7" 1486 + source = "registry+https://github.com/rust-lang/crates.io-index" 1487 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1488 + dependencies = [ 1489 + "block-buffer", 1490 + "const-oid", 1491 + "crypto-common", 1492 + "subtle", 1493 + ] 1494 + 1495 + [[package]] 1496 + name = "displaydoc" 1497 + version = "0.2.4" 1498 + source = "registry+https://github.com/rust-lang/crates.io-index" 1499 + checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" 1500 + dependencies = [ 1501 + "proc-macro2", 1502 + "quote", 1503 + "syn 2.0.39", 1504 + ] 1505 + 1506 + [[package]] 1507 + name = "dotenvy" 1508 + version = "0.15.7" 1509 + source = "registry+https://github.com/rust-lang/crates.io-index" 1510 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 1511 + 1512 + [[package]] 1513 + name = "ecdsa" 1514 + version = "0.14.8" 1515 + source = "registry+https://github.com/rust-lang/crates.io-index" 1516 + checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" 1517 + dependencies = [ 1518 + "der 0.6.1", 1519 + "elliptic-curve 0.12.3", 1520 + "rfc6979 0.3.1", 1521 + "signature 1.6.4", 1522 + ] 1523 + 1524 + [[package]] 1525 + name = "ecdsa" 1526 + version = "0.16.8" 1527 + source = "registry+https://github.com/rust-lang/crates.io-index" 1528 + checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" 1529 + dependencies = [ 1530 + "der 0.7.8", 1531 + "digest", 1532 + "elliptic-curve 0.13.6", 1533 + "rfc6979 0.4.0", 1534 + "signature 2.1.0", 1535 + "spki 0.7.3", 1536 + ] 1537 + 1538 + [[package]] 1539 + name = "ed25519-compact" 1540 + version = "2.0.4" 1541 + source = "registry+https://github.com/rust-lang/crates.io-index" 1542 + checksum = "6a3d382e8464107391c8706b4c14b087808ecb909f6c15c34114bc42e53a9e4c" 1543 + dependencies = [ 1544 + "ct-codecs", 1545 + "getrandom", 1546 + ] 1547 + 1548 + [[package]] 1549 + name = "either" 1550 + version = "1.9.0" 1551 + source = "registry+https://github.com/rust-lang/crates.io-index" 1552 + checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 1553 + dependencies = [ 1554 + "serde", 1555 + ] 1556 + 1557 + [[package]] 1558 + name = "elliptic-curve" 1559 + version = "0.12.3" 1560 + source = "registry+https://github.com/rust-lang/crates.io-index" 1561 + checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" 1562 + dependencies = [ 1563 + "base16ct 0.1.1", 1564 + "crypto-bigint 0.4.9", 1565 + "der 0.6.1", 1566 + "digest", 1567 + "ff 0.12.1", 1568 + "generic-array", 1569 + "group 0.12.1", 1570 + "pkcs8 0.9.0", 1571 + "rand_core", 1572 + "sec1 0.3.0", 1573 + "subtle", 1574 + "zeroize", 1575 + ] 1576 + 1577 + [[package]] 1578 + name = "elliptic-curve" 1579 + version = "0.13.6" 1580 + source = "registry+https://github.com/rust-lang/crates.io-index" 1581 + checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" 1582 + dependencies = [ 1583 + "base16ct 0.2.0", 1584 + "crypto-bigint 0.5.4", 1585 + "digest", 1586 + "ff 0.13.0", 1587 + "generic-array", 1588 + "group 0.13.0", 1589 + "hkdf", 1590 + "pem-rfc7468 0.7.0", 1591 + "pkcs8 0.10.2", 1592 + "rand_core", 1593 + "sec1 0.7.3", 1594 + "subtle", 1595 + "zeroize", 1596 + ] 1597 + 1598 + [[package]] 1599 + name = "encode_unicode" 1600 + version = "0.3.6" 1601 + source = "registry+https://github.com/rust-lang/crates.io-index" 1602 + checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 1603 + 1604 + [[package]] 1605 + name = "encoding_rs" 1606 + version = "0.8.33" 1607 + source = "registry+https://github.com/rust-lang/crates.io-index" 1608 + checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 1609 + dependencies = [ 1610 + "cfg-if", 1611 + ] 1612 + 1613 + [[package]] 1614 + name = "enum-as-inner" 1615 + version = "0.6.0" 1616 + source = "registry+https://github.com/rust-lang/crates.io-index" 1617 + checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" 1618 + dependencies = [ 1619 + "heck", 1620 + "proc-macro2", 1621 + "quote", 1622 + "syn 2.0.39", 1623 + ] 1624 + 1625 + [[package]] 1626 + name = "equivalent" 1627 + version = "1.0.1" 1628 + source = "registry+https://github.com/rust-lang/crates.io-index" 1629 + checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1630 + 1631 + [[package]] 1632 + name = "errno" 1633 + version = "0.3.6" 1634 + source = "registry+https://github.com/rust-lang/crates.io-index" 1635 + checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" 1636 + dependencies = [ 1637 + "libc", 1638 + "windows-sys 0.48.0", 1639 + ] 1640 + 1641 + [[package]] 1642 + name = "etcetera" 1643 + version = "0.8.0" 1644 + source = "registry+https://github.com/rust-lang/crates.io-index" 1645 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 1646 + dependencies = [ 1647 + "cfg-if", 1648 + "home", 1649 + "windows-sys 0.48.0", 1650 + ] 1651 + 1652 + [[package]] 1653 + name = "event-listener" 1654 + version = "2.5.3" 1655 + source = "registry+https://github.com/rust-lang/crates.io-index" 1656 + checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1657 + 1658 + [[package]] 1659 + name = "fastcdc" 1660 + version = "3.1.0" 1661 + source = "registry+https://github.com/rust-lang/crates.io-index" 1662 + checksum = "a71061d097bfa9a5a4d2efdec57990d9a88745020b365191d37e48541a1628f2" 1663 + 1664 + [[package]] 1665 + name = "fastrand" 1666 + version = "2.0.1" 1667 + source = "registry+https://github.com/rust-lang/crates.io-index" 1668 + checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 1669 + 1670 + [[package]] 1671 + name = "ff" 1672 + version = "0.12.1" 1673 + source = "registry+https://github.com/rust-lang/crates.io-index" 1674 + checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" 1675 + dependencies = [ 1676 + "rand_core", 1677 + "subtle", 1678 + ] 1679 + 1680 + [[package]] 1681 + name = "ff" 1682 + version = "0.13.0" 1683 + source = "registry+https://github.com/rust-lang/crates.io-index" 1684 + checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" 1685 + dependencies = [ 1686 + "rand_core", 1687 + "subtle", 1688 + ] 1689 + 1690 + [[package]] 1691 + name = "filetime" 1692 + version = "0.2.22" 1693 + source = "registry+https://github.com/rust-lang/crates.io-index" 1694 + checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" 1695 + dependencies = [ 1696 + "cfg-if", 1697 + "libc", 1698 + "redox_syscall 0.3.5", 1699 + "windows-sys 0.48.0", 1700 + ] 1701 + 1702 + [[package]] 1703 + name = "finl_unicode" 1704 + version = "1.2.0" 1705 + source = "registry+https://github.com/rust-lang/crates.io-index" 1706 + checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" 1707 + 1708 + [[package]] 1709 + name = "flate2" 1710 + version = "1.0.28" 1711 + source = "registry+https://github.com/rust-lang/crates.io-index" 1712 + checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 1713 + dependencies = [ 1714 + "crc32fast", 1715 + "miniz_oxide", 1716 + ] 1717 + 1718 + [[package]] 1719 + name = "flume" 1720 + version = "0.11.0" 1721 + source = "registry+https://github.com/rust-lang/crates.io-index" 1722 + checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" 1723 + dependencies = [ 1724 + "futures-core", 1725 + "futures-sink", 1726 + "spin 0.9.8", 1727 + ] 1728 + 1729 + [[package]] 1730 + name = "fnv" 1731 + version = "1.0.7" 1732 + source = "registry+https://github.com/rust-lang/crates.io-index" 1733 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1734 + 1735 + [[package]] 1736 + name = "form_urlencoded" 1737 + version = "1.2.0" 1738 + source = "registry+https://github.com/rust-lang/crates.io-index" 1739 + checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 1740 + dependencies = [ 1741 + "percent-encoding", 1742 + ] 1743 + 1744 + [[package]] 1745 + name = "funty" 1746 + version = "2.0.0" 1747 + source = "registry+https://github.com/rust-lang/crates.io-index" 1748 + checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" 1749 + 1750 + [[package]] 1751 + name = "futures" 1752 + version = "0.3.29" 1753 + source = "registry+https://github.com/rust-lang/crates.io-index" 1754 + checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" 1755 + dependencies = [ 1756 + "futures-channel", 1757 + "futures-core", 1758 + "futures-executor", 1759 + "futures-io", 1760 + "futures-sink", 1761 + "futures-task", 1762 + "futures-util", 1763 + ] 1764 + 1765 + [[package]] 1766 + name = "futures-channel" 1767 + version = "0.3.29" 1768 + source = "registry+https://github.com/rust-lang/crates.io-index" 1769 + checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 1770 + dependencies = [ 1771 + "futures-core", 1772 + "futures-sink", 1773 + ] 1774 + 1775 + [[package]] 1776 + name = "futures-core" 1777 + version = "0.3.29" 1778 + source = "registry+https://github.com/rust-lang/crates.io-index" 1779 + checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 1780 + 1781 + [[package]] 1782 + name = "futures-executor" 1783 + version = "0.3.29" 1784 + source = "registry+https://github.com/rust-lang/crates.io-index" 1785 + checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" 1786 + dependencies = [ 1787 + "futures-core", 1788 + "futures-task", 1789 + "futures-util", 1790 + ] 1791 + 1792 + [[package]] 1793 + name = "futures-intrusive" 1794 + version = "0.5.0" 1795 + source = "registry+https://github.com/rust-lang/crates.io-index" 1796 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 1797 + dependencies = [ 1798 + "futures-core", 1799 + "lock_api", 1800 + "parking_lot", 1801 + ] 1802 + 1803 + [[package]] 1804 + name = "futures-io" 1805 + version = "0.3.29" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 1808 + 1809 + [[package]] 1810 + name = "futures-macro" 1811 + version = "0.3.29" 1812 + source = "registry+https://github.com/rust-lang/crates.io-index" 1813 + checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" 1814 + dependencies = [ 1815 + "proc-macro2", 1816 + "quote", 1817 + "syn 2.0.39", 1818 + ] 1819 + 1820 + [[package]] 1821 + name = "futures-sink" 1822 + version = "0.3.29" 1823 + source = "registry+https://github.com/rust-lang/crates.io-index" 1824 + checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" 1825 + 1826 + [[package]] 1827 + name = "futures-task" 1828 + version = "0.3.29" 1829 + source = "registry+https://github.com/rust-lang/crates.io-index" 1830 + checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 1831 + 1832 + [[package]] 1833 + name = "futures-util" 1834 + version = "0.3.29" 1835 + source = "registry+https://github.com/rust-lang/crates.io-index" 1836 + checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 1837 + dependencies = [ 1838 + "futures-channel", 1839 + "futures-core", 1840 + "futures-io", 1841 + "futures-macro", 1842 + "futures-sink", 1843 + "futures-task", 1844 + "memchr", 1845 + "pin-project-lite", 1846 + "pin-utils", 1847 + "slab", 1848 + ] 1849 + 1850 + [[package]] 1851 + name = "generic-array" 1852 + version = "0.14.7" 1853 + source = "registry+https://github.com/rust-lang/crates.io-index" 1854 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1855 + dependencies = [ 1856 + "typenum", 1857 + "version_check", 1858 + "zeroize", 1859 + ] 1860 + 1861 + [[package]] 1862 + name = "getrandom" 1863 + version = "0.2.11" 1864 + source = "registry+https://github.com/rust-lang/crates.io-index" 1865 + checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" 1866 + dependencies = [ 1867 + "cfg-if", 1868 + "libc", 1869 + "wasi", 1870 + ] 1871 + 1872 + [[package]] 1873 + name = "gimli" 1874 + version = "0.28.0" 1875 + source = "registry+https://github.com/rust-lang/crates.io-index" 1876 + checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" 1877 + 1878 + [[package]] 1879 + name = "glob" 1880 + version = "0.3.1" 1881 + source = "registry+https://github.com/rust-lang/crates.io-index" 1882 + checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1883 + 1884 + [[package]] 1885 + name = "group" 1886 + version = "0.12.1" 1887 + source = "registry+https://github.com/rust-lang/crates.io-index" 1888 + checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" 1889 + dependencies = [ 1890 + "ff 0.12.1", 1891 + "rand_core", 1892 + "subtle", 1893 + ] 1894 + 1895 + [[package]] 1896 + name = "group" 1897 + version = "0.13.0" 1898 + source = "registry+https://github.com/rust-lang/crates.io-index" 1899 + checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1900 + dependencies = [ 1901 + "ff 0.13.0", 1902 + "rand_core", 1903 + "subtle", 1904 + ] 1905 + 1906 + [[package]] 1907 + name = "h2" 1908 + version = "0.3.21" 1909 + source = "registry+https://github.com/rust-lang/crates.io-index" 1910 + checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" 1911 + dependencies = [ 1912 + "bytes", 1913 + "fnv", 1914 + "futures-core", 1915 + "futures-sink", 1916 + "futures-util", 1917 + "http", 1918 + "indexmap 1.9.3", 1919 + "slab", 1920 + "tokio", 1921 + "tokio-util", 1922 + "tracing", 1923 + ] 1924 + 1925 + [[package]] 1926 + name = "hashbrown" 1927 + version = "0.12.3" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1930 + dependencies = [ 1931 + "ahash 0.7.7", 1932 + ] 1933 + 1934 + [[package]] 1935 + name = "hashbrown" 1936 + version = "0.13.2" 1937 + source = "registry+https://github.com/rust-lang/crates.io-index" 1938 + checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 1939 + dependencies = [ 1940 + "ahash 0.8.6", 1941 + ] 1942 + 1943 + [[package]] 1944 + name = "hashbrown" 1945 + version = "0.14.2" 1946 + source = "registry+https://github.com/rust-lang/crates.io-index" 1947 + checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" 1948 + dependencies = [ 1949 + "ahash 0.8.6", 1950 + "allocator-api2", 1951 + ] 1952 + 1953 + [[package]] 1954 + name = "hashlink" 1955 + version = "0.8.4" 1956 + source = "registry+https://github.com/rust-lang/crates.io-index" 1957 + checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" 1958 + dependencies = [ 1959 + "hashbrown 0.14.2", 1960 + ] 1961 + 1962 + [[package]] 1963 + name = "hdrhistogram" 1964 + version = "7.5.3" 1965 + source = "registry+https://github.com/rust-lang/crates.io-index" 1966 + checksum = "a5b38e5c02b7c7be48c8dc5217c4f1634af2ea221caae2e024bffc7a7651c691" 1967 + dependencies = [ 1968 + "base64 0.13.1", 1969 + "byteorder", 1970 + "flate2", 1971 + "nom", 1972 + "num-traits", 1973 + ] 1974 + 1975 + [[package]] 1976 + name = "heck" 1977 + version = "0.4.1" 1978 + source = "registry+https://github.com/rust-lang/crates.io-index" 1979 + checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1980 + dependencies = [ 1981 + "unicode-segmentation", 1982 + ] 1983 + 1984 + [[package]] 1985 + name = "hermit-abi" 1986 + version = "0.3.3" 1987 + source = "registry+https://github.com/rust-lang/crates.io-index" 1988 + checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 1989 + 1990 + [[package]] 1991 + name = "hex" 1992 + version = "0.4.3" 1993 + source = "registry+https://github.com/rust-lang/crates.io-index" 1994 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1995 + 1996 + [[package]] 1997 + name = "hkdf" 1998 + version = "0.12.3" 1999 + source = "registry+https://github.com/rust-lang/crates.io-index" 2000 + checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" 2001 + dependencies = [ 2002 + "hmac", 2003 + ] 2004 + 2005 + [[package]] 2006 + name = "hmac" 2007 + version = "0.12.1" 2008 + source = "registry+https://github.com/rust-lang/crates.io-index" 2009 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 2010 + dependencies = [ 2011 + "digest", 2012 + ] 2013 + 2014 + [[package]] 2015 + name = "hmac-sha1-compact" 2016 + version = "1.1.4" 2017 + source = "registry+https://github.com/rust-lang/crates.io-index" 2018 + checksum = "dff9d405ec732fa3fcde87264e54a32a84956a377b3e3107de96e59b798c84a7" 2019 + 2020 + [[package]] 2021 + name = "hmac-sha256" 2022 + version = "1.1.7" 2023 + source = "registry+https://github.com/rust-lang/crates.io-index" 2024 + checksum = "3688e69b38018fec1557254f64c8dc2cc8ec502890182f395dbb0aa997aa5735" 2025 + dependencies = [ 2026 + "digest", 2027 + ] 2028 + 2029 + [[package]] 2030 + name = "hmac-sha512" 2031 + version = "1.1.5" 2032 + source = "registry+https://github.com/rust-lang/crates.io-index" 2033 + checksum = "e4ce1f4656bae589a3fab938f9f09bf58645b7ed01a2c5f8a3c238e01a4ef78a" 2034 + dependencies = [ 2035 + "digest", 2036 + ] 2037 + 2038 + [[package]] 2039 + name = "home" 2040 + version = "0.5.9" 2041 + source = "registry+https://github.com/rust-lang/crates.io-index" 2042 + checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" 2043 + dependencies = [ 2044 + "windows-sys 0.52.0", 2045 + ] 2046 + 2047 + [[package]] 2048 + name = "http" 2049 + version = "0.2.10" 2050 + source = "registry+https://github.com/rust-lang/crates.io-index" 2051 + checksum = "f95b9abcae896730d42b78e09c155ed4ddf82c07b4de772c64aee5b2d8b7c150" 2052 + dependencies = [ 2053 + "bytes", 2054 + "fnv", 2055 + "itoa", 2056 + ] 2057 + 2058 + [[package]] 2059 + name = "http-body" 2060 + version = "0.4.5" 2061 + source = "registry+https://github.com/rust-lang/crates.io-index" 2062 + checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 2063 + dependencies = [ 2064 + "bytes", 2065 + "http", 2066 + "pin-project-lite", 2067 + ] 2068 + 2069 + [[package]] 2070 + name = "http-range-header" 2071 + version = "0.3.1" 2072 + source = "registry+https://github.com/rust-lang/crates.io-index" 2073 + checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" 2074 + 2075 + [[package]] 2076 + name = "httparse" 2077 + version = "1.8.0" 2078 + source = "registry+https://github.com/rust-lang/crates.io-index" 2079 + checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 2080 + 2081 + [[package]] 2082 + name = "httpdate" 2083 + version = "1.0.3" 2084 + source = "registry+https://github.com/rust-lang/crates.io-index" 2085 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 2086 + 2087 + [[package]] 2088 + name = "humantime" 2089 + version = "2.1.0" 2090 + source = "registry+https://github.com/rust-lang/crates.io-index" 2091 + checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 2092 + 2093 + [[package]] 2094 + name = "humantime-serde" 2095 + version = "1.1.1" 2096 + source = "registry+https://github.com/rust-lang/crates.io-index" 2097 + checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" 2098 + dependencies = [ 2099 + "humantime", 2100 + "serde", 2101 + ] 2102 + 2103 + [[package]] 2104 + name = "hyper" 2105 + version = "0.14.27" 2106 + source = "registry+https://github.com/rust-lang/crates.io-index" 2107 + checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" 2108 + dependencies = [ 2109 + "bytes", 2110 + "futures-channel", 2111 + "futures-core", 2112 + "futures-util", 2113 + "h2", 2114 + "http", 2115 + "http-body", 2116 + "httparse", 2117 + "httpdate", 2118 + "itoa", 2119 + "pin-project-lite", 2120 + "socket2 0.4.10", 2121 + "tokio", 2122 + "tower-service", 2123 + "tracing", 2124 + "want", 2125 + ] 2126 + 2127 + [[package]] 2128 + name = "hyper-rustls" 2129 + version = "0.24.2" 2130 + source = "registry+https://github.com/rust-lang/crates.io-index" 2131 + checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 2132 + dependencies = [ 2133 + "futures-util", 2134 + "http", 2135 + "hyper", 2136 + "log", 2137 + "rustls", 2138 + "rustls-native-certs", 2139 + "tokio", 2140 + "tokio-rustls", 2141 + ] 2142 + 2143 + [[package]] 2144 + name = "hyper-timeout" 2145 + version = "0.4.1" 2146 + source = "registry+https://github.com/rust-lang/crates.io-index" 2147 + checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" 2148 + dependencies = [ 2149 + "hyper", 2150 + "pin-project-lite", 2151 + "tokio", 2152 + "tokio-io-timeout", 2153 + ] 2154 + 2155 + [[package]] 2156 + name = "iana-time-zone" 2157 + version = "0.1.58" 2158 + source = "registry+https://github.com/rust-lang/crates.io-index" 2159 + checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" 2160 + dependencies = [ 2161 + "android_system_properties", 2162 + "core-foundation-sys", 2163 + "iana-time-zone-haiku", 2164 + "js-sys", 2165 + "wasm-bindgen", 2166 + "windows-core", 2167 + ] 2168 + 2169 + [[package]] 2170 + name = "iana-time-zone-haiku" 2171 + version = "0.1.2" 2172 + source = "registry+https://github.com/rust-lang/crates.io-index" 2173 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 2174 + dependencies = [ 2175 + "cc", 2176 + ] 2177 + 2178 + [[package]] 2179 + name = "ident_case" 2180 + version = "1.0.1" 2181 + source = "registry+https://github.com/rust-lang/crates.io-index" 2182 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2183 + 2184 + [[package]] 2185 + name = "idna" 2186 + version = "0.4.0" 2187 + source = "registry+https://github.com/rust-lang/crates.io-index" 2188 + checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 2189 + dependencies = [ 2190 + "unicode-bidi", 2191 + "unicode-normalization", 2192 + ] 2193 + 2194 + [[package]] 2195 + name = "indexmap" 2196 + version = "1.9.3" 2197 + source = "registry+https://github.com/rust-lang/crates.io-index" 2198 + checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 2199 + dependencies = [ 2200 + "autocfg", 2201 + "hashbrown 0.12.3", 2202 + "serde", 2203 + ] 2204 + 2205 + [[package]] 2206 + name = "indexmap" 2207 + version = "2.1.0" 2208 + source = "registry+https://github.com/rust-lang/crates.io-index" 2209 + checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 2210 + dependencies = [ 2211 + "equivalent", 2212 + "hashbrown 0.14.2", 2213 + "serde", 2214 + ] 2215 + 2216 + [[package]] 2217 + name = "indicatif" 2218 + version = "0.17.7" 2219 + source = "registry+https://github.com/rust-lang/crates.io-index" 2220 + checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" 2221 + dependencies = [ 2222 + "console", 2223 + "instant", 2224 + "number_prefix", 2225 + "portable-atomic", 2226 + "unicode-width", 2227 + ] 2228 + 2229 + [[package]] 2230 + name = "inherent" 2231 + version = "1.0.10" 2232 + source = "registry+https://github.com/rust-lang/crates.io-index" 2233 + checksum = "ce243b1bfa62ffc028f1cc3b6034ec63d649f3031bc8a4fbbb004e1ac17d1f68" 2234 + dependencies = [ 2235 + "proc-macro2", 2236 + "quote", 2237 + "syn 2.0.39", 2238 + ] 2239 + 2240 + [[package]] 2241 + name = "inotify" 2242 + version = "0.9.6" 2243 + source = "registry+https://github.com/rust-lang/crates.io-index" 2244 + checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" 2245 + dependencies = [ 2246 + "bitflags 1.3.2", 2247 + "inotify-sys", 2248 + "libc", 2249 + ] 2250 + 2251 + [[package]] 2252 + name = "inotify-sys" 2253 + version = "0.1.5" 2254 + source = "registry+https://github.com/rust-lang/crates.io-index" 2255 + checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 2256 + dependencies = [ 2257 + "libc", 2258 + ] 2259 + 2260 + [[package]] 2261 + name = "instant" 2262 + version = "0.1.12" 2263 + source = "registry+https://github.com/rust-lang/crates.io-index" 2264 + checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 2265 + dependencies = [ 2266 + "cfg-if", 2267 + ] 2268 + 2269 + [[package]] 2270 + name = "ipnet" 2271 + version = "2.9.0" 2272 + source = "registry+https://github.com/rust-lang/crates.io-index" 2273 + checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 2274 + 2275 + [[package]] 2276 + name = "itertools" 2277 + version = "0.11.0" 2278 + source = "registry+https://github.com/rust-lang/crates.io-index" 2279 + checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 2280 + dependencies = [ 2281 + "either", 2282 + ] 2283 + 2284 + [[package]] 2285 + name = "itoa" 2286 + version = "1.0.5" 2287 + source = "registry+https://github.com/rust-lang/crates.io-index" 2288 + checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" 2289 + 2290 + [[package]] 2291 + name = "js-sys" 2292 + version = "0.3.65" 2293 + source = "registry+https://github.com/rust-lang/crates.io-index" 2294 + checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" 2295 + dependencies = [ 2296 + "wasm-bindgen", 2297 + ] 2298 + 2299 + [[package]] 2300 + name = "jwt-simple" 2301 + version = "0.11.9" 2302 + source = "registry+https://github.com/rust-lang/crates.io-index" 2303 + checksum = "357892bb32159d763abdea50733fadcb9a8e1c319a9aa77592db8555d05af83e" 2304 + dependencies = [ 2305 + "anyhow", 2306 + "binstring", 2307 + "coarsetime", 2308 + "ct-codecs", 2309 + "ed25519-compact", 2310 + "hmac-sha1-compact", 2311 + "hmac-sha256", 2312 + "hmac-sha512", 2313 + "k256", 2314 + "p256 0.13.2", 2315 + "p384", 2316 + "rand", 2317 + "rsa 0.7.2", 2318 + "serde", 2319 + "serde_json", 2320 + "spki 0.6.0", 2321 + "thiserror", 2322 + "zeroize", 2323 + ] 2324 + 2325 + [[package]] 2326 + name = "k256" 2327 + version = "0.13.1" 2328 + source = "registry+https://github.com/rust-lang/crates.io-index" 2329 + checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" 2330 + dependencies = [ 2331 + "cfg-if", 2332 + "ecdsa 0.16.8", 2333 + "elliptic-curve 0.13.6", 2334 + "once_cell", 2335 + "sha2", 2336 + "signature 2.1.0", 2337 + ] 2338 + 2339 + [[package]] 2340 + name = "kqueue" 2341 + version = "1.0.8" 2342 + source = "registry+https://github.com/rust-lang/crates.io-index" 2343 + checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" 2344 + dependencies = [ 2345 + "kqueue-sys", 2346 + "libc", 2347 + ] 2348 + 2349 + [[package]] 2350 + name = "kqueue-sys" 2351 + version = "1.0.4" 2352 + source = "registry+https://github.com/rust-lang/crates.io-index" 2353 + checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 2354 + dependencies = [ 2355 + "bitflags 1.3.2", 2356 + "libc", 2357 + ] 2358 + 2359 + [[package]] 2360 + name = "lazy_static" 2361 + version = "1.4.0" 2362 + source = "registry+https://github.com/rust-lang/crates.io-index" 2363 + checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2364 + dependencies = [ 2365 + "spin 0.5.2", 2366 + ] 2367 + 2368 + [[package]] 2369 + name = "libc" 2370 + version = "0.2.150" 2371 + source = "registry+https://github.com/rust-lang/crates.io-index" 2372 + checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" 2373 + 2374 + [[package]] 2375 + name = "libm" 2376 + version = "0.2.8" 2377 + source = "registry+https://github.com/rust-lang/crates.io-index" 2378 + checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 2379 + 2380 + [[package]] 2381 + name = "libsqlite3-sys" 2382 + version = "0.27.0" 2383 + source = "registry+https://github.com/rust-lang/crates.io-index" 2384 + checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" 2385 + dependencies = [ 2386 + "cc", 2387 + "pkg-config", 2388 + "vcpkg", 2389 + ] 2390 + 2391 + [[package]] 2392 + name = "link-cplusplus" 2393 + version = "1.0.9" 2394 + source = "registry+https://github.com/rust-lang/crates.io-index" 2395 + checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" 2396 + dependencies = [ 2397 + "cc", 2398 + ] 2399 + 2400 + [[package]] 2401 + name = "linux-raw-sys" 2402 + version = "0.4.11" 2403 + source = "registry+https://github.com/rust-lang/crates.io-index" 2404 + checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" 2405 + 2406 + [[package]] 2407 + name = "lock_api" 2408 + version = "0.4.11" 2409 + source = "registry+https://github.com/rust-lang/crates.io-index" 2410 + checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 2411 + dependencies = [ 2412 + "autocfg", 2413 + "scopeguard", 2414 + ] 2415 + 2416 + [[package]] 2417 + name = "log" 2418 + version = "0.4.20" 2419 + source = "registry+https://github.com/rust-lang/crates.io-index" 2420 + checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 2421 + 2422 + [[package]] 2423 + name = "lzma-sys" 2424 + version = "0.1.20" 2425 + source = "registry+https://github.com/rust-lang/crates.io-index" 2426 + checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" 2427 + dependencies = [ 2428 + "cc", 2429 + "libc", 2430 + "pkg-config", 2431 + ] 2432 + 2433 + [[package]] 2434 + name = "matchers" 2435 + version = "0.1.0" 2436 + source = "registry+https://github.com/rust-lang/crates.io-index" 2437 + checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 2438 + dependencies = [ 2439 + "regex-automata 0.1.10", 2440 + ] 2441 + 2442 + [[package]] 2443 + name = "matchit" 2444 + version = "0.7.3" 2445 + source = "registry+https://github.com/rust-lang/crates.io-index" 2446 + checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" 2447 + 2448 + [[package]] 2449 + name = "maybe-owned" 2450 + version = "0.3.4" 2451 + source = "registry+https://github.com/rust-lang/crates.io-index" 2452 + checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" 2453 + 2454 + [[package]] 2455 + name = "md-5" 2456 + version = "0.10.6" 2457 + source = "registry+https://github.com/rust-lang/crates.io-index" 2458 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2459 + dependencies = [ 2460 + "cfg-if", 2461 + "digest", 2462 + ] 2463 + 2464 + [[package]] 2465 + name = "memchr" 2466 + version = "2.6.4" 2467 + source = "registry+https://github.com/rust-lang/crates.io-index" 2468 + checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 2469 + 2470 + [[package]] 2471 + name = "mime" 2472 + version = "0.3.17" 2473 + source = "registry+https://github.com/rust-lang/crates.io-index" 2474 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2475 + 2476 + [[package]] 2477 + name = "minimal-lexical" 2478 + version = "0.2.1" 2479 + source = "registry+https://github.com/rust-lang/crates.io-index" 2480 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2481 + 2482 + [[package]] 2483 + name = "miniz_oxide" 2484 + version = "0.7.1" 2485 + source = "registry+https://github.com/rust-lang/crates.io-index" 2486 + checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 2487 + dependencies = [ 2488 + "adler", 2489 + ] 2490 + 2491 + [[package]] 2492 + name = "mio" 2493 + version = "0.8.9" 2494 + source = "registry+https://github.com/rust-lang/crates.io-index" 2495 + checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" 2496 + dependencies = [ 2497 + "libc", 2498 + "log", 2499 + "wasi", 2500 + "windows-sys 0.48.0", 2501 + ] 2502 + 2503 + [[package]] 2504 + name = "nix" 2505 + version = "0.27.1" 2506 + source = "registry+https://github.com/rust-lang/crates.io-index" 2507 + checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" 2508 + dependencies = [ 2509 + "bitflags 2.4.1", 2510 + "cfg-if", 2511 + "libc", 2512 + ] 2513 + 2514 + [[package]] 2515 + name = "nix-base32" 2516 + version = "0.1.2-alpha.0" 2517 + source = "git+https://github.com/zhaofengli/nix-base32.git?rev=b850c6e9273d1c39bd93abb704a53345f5be92eb#b850c6e9273d1c39bd93abb704a53345f5be92eb" 2518 + 2519 + [[package]] 2520 + name = "nom" 2521 + version = "7.1.3" 2522 + source = "registry+https://github.com/rust-lang/crates.io-index" 2523 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2524 + dependencies = [ 2525 + "memchr", 2526 + "minimal-lexical", 2527 + ] 2528 + 2529 + [[package]] 2530 + name = "notify" 2531 + version = "6.1.1" 2532 + source = "registry+https://github.com/rust-lang/crates.io-index" 2533 + checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" 2534 + dependencies = [ 2535 + "bitflags 2.4.1", 2536 + "filetime", 2537 + "inotify", 2538 + "kqueue", 2539 + "libc", 2540 + "log", 2541 + "mio", 2542 + "walkdir", 2543 + "windows-sys 0.48.0", 2544 + ] 2545 + 2546 + [[package]] 2547 + name = "nu-ansi-term" 2548 + version = "0.46.0" 2549 + source = "registry+https://github.com/rust-lang/crates.io-index" 2550 + checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 2551 + dependencies = [ 2552 + "overload", 2553 + "winapi", 2554 + ] 2555 + 2556 + [[package]] 2557 + name = "num-bigint" 2558 + version = "0.4.4" 2559 + source = "registry+https://github.com/rust-lang/crates.io-index" 2560 + checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" 2561 + dependencies = [ 2562 + "autocfg", 2563 + "num-integer", 2564 + "num-traits", 2565 + ] 2566 + 2567 + [[package]] 2568 + name = "num-bigint-dig" 2569 + version = "0.8.4" 2570 + source = "registry+https://github.com/rust-lang/crates.io-index" 2571 + checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" 2572 + dependencies = [ 2573 + "byteorder", 2574 + "lazy_static", 2575 + "libm", 2576 + "num-integer", 2577 + "num-iter", 2578 + "num-traits", 2579 + "rand", 2580 + "smallvec", 2581 + "zeroize", 2582 + ] 2583 + 2584 + [[package]] 2585 + name = "num-integer" 2586 + version = "0.1.45" 2587 + source = "registry+https://github.com/rust-lang/crates.io-index" 2588 + checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 2589 + dependencies = [ 2590 + "autocfg", 2591 + "num-traits", 2592 + ] 2593 + 2594 + [[package]] 2595 + name = "num-iter" 2596 + version = "0.1.43" 2597 + source = "registry+https://github.com/rust-lang/crates.io-index" 2598 + checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" 2599 + dependencies = [ 2600 + "autocfg", 2601 + "num-integer", 2602 + "num-traits", 2603 + ] 2604 + 2605 + [[package]] 2606 + name = "num-traits" 2607 + version = "0.2.17" 2608 + source = "registry+https://github.com/rust-lang/crates.io-index" 2609 + checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 2610 + dependencies = [ 2611 + "autocfg", 2612 + "libm", 2613 + ] 2614 + 2615 + [[package]] 2616 + name = "num_cpus" 2617 + version = "1.16.0" 2618 + source = "registry+https://github.com/rust-lang/crates.io-index" 2619 + checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2620 + dependencies = [ 2621 + "hermit-abi", 2622 + "libc", 2623 + ] 2624 + 2625 + [[package]] 2626 + name = "number_prefix" 2627 + version = "0.4.0" 2628 + source = "registry+https://github.com/rust-lang/crates.io-index" 2629 + checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 2630 + 2631 + [[package]] 2632 + name = "object" 2633 + version = "0.32.1" 2634 + source = "registry+https://github.com/rust-lang/crates.io-index" 2635 + checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 2636 + dependencies = [ 2637 + "memchr", 2638 + ] 2639 + 2640 + [[package]] 2641 + name = "once_cell" 2642 + version = "1.18.0" 2643 + source = "registry+https://github.com/rust-lang/crates.io-index" 2644 + checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 2645 + 2646 + [[package]] 2647 + name = "openssl-probe" 2648 + version = "0.1.5" 2649 + source = "registry+https://github.com/rust-lang/crates.io-index" 2650 + checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 2651 + 2652 + [[package]] 2653 + name = "ordered-float" 2654 + version = "3.9.2" 2655 + source = "registry+https://github.com/rust-lang/crates.io-index" 2656 + checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" 2657 + dependencies = [ 2658 + "num-traits", 2659 + ] 2660 + 2661 + [[package]] 2662 + name = "ouroboros" 2663 + version = "0.17.2" 2664 + source = "registry+https://github.com/rust-lang/crates.io-index" 2665 + checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954" 2666 + dependencies = [ 2667 + "aliasable", 2668 + "ouroboros_macro", 2669 + "static_assertions", 2670 + ] 2671 + 2672 + [[package]] 2673 + name = "ouroboros_macro" 2674 + version = "0.17.2" 2675 + source = "registry+https://github.com/rust-lang/crates.io-index" 2676 + checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" 2677 + dependencies = [ 2678 + "heck", 2679 + "proc-macro-error", 2680 + "proc-macro2", 2681 + "quote", 2682 + "syn 2.0.39", 2683 + ] 2684 + 2685 + [[package]] 2686 + name = "outref" 2687 + version = "0.5.1" 2688 + source = "registry+https://github.com/rust-lang/crates.io-index" 2689 + checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" 2690 + 2691 + [[package]] 2692 + name = "overload" 2693 + version = "0.1.1" 2694 + source = "registry+https://github.com/rust-lang/crates.io-index" 2695 + checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2696 + 2697 + [[package]] 2698 + name = "p256" 2699 + version = "0.11.1" 2700 + source = "registry+https://github.com/rust-lang/crates.io-index" 2701 + checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" 2702 + dependencies = [ 2703 + "ecdsa 0.14.8", 2704 + "elliptic-curve 0.12.3", 2705 + "sha2", 2706 + ] 2707 + 2708 + [[package]] 2709 + name = "p256" 2710 + version = "0.13.2" 2711 + source = "registry+https://github.com/rust-lang/crates.io-index" 2712 + checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 2713 + dependencies = [ 2714 + "ecdsa 0.16.8", 2715 + "elliptic-curve 0.13.6", 2716 + "primeorder", 2717 + "sha2", 2718 + ] 2719 + 2720 + [[package]] 2721 + name = "p384" 2722 + version = "0.13.0" 2723 + source = "registry+https://github.com/rust-lang/crates.io-index" 2724 + checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" 2725 + dependencies = [ 2726 + "ecdsa 0.16.8", 2727 + "elliptic-curve 0.13.6", 2728 + "primeorder", 2729 + "sha2", 2730 + ] 2731 + 2732 + [[package]] 2733 + name = "parking_lot" 2734 + version = "0.12.1" 2735 + source = "registry+https://github.com/rust-lang/crates.io-index" 2736 + checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 2737 + dependencies = [ 2738 + "lock_api", 2739 + "parking_lot_core", 2740 + ] 2741 + 2742 + [[package]] 2743 + name = "parking_lot_core" 2744 + version = "0.9.9" 2745 + source = "registry+https://github.com/rust-lang/crates.io-index" 2746 + checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 2747 + dependencies = [ 2748 + "cfg-if", 2749 + "libc", 2750 + "redox_syscall 0.4.1", 2751 + "smallvec", 2752 + "windows-targets 0.48.5", 2753 + ] 2754 + 2755 + [[package]] 2756 + name = "paste" 2757 + version = "1.0.14" 2758 + source = "registry+https://github.com/rust-lang/crates.io-index" 2759 + checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 2760 + 2761 + [[package]] 2762 + name = "pem-rfc7468" 2763 + version = "0.6.0" 2764 + source = "registry+https://github.com/rust-lang/crates.io-index" 2765 + checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" 2766 + dependencies = [ 2767 + "base64ct", 2768 + ] 2769 + 2770 + [[package]] 2771 + name = "pem-rfc7468" 2772 + version = "0.7.0" 2773 + source = "registry+https://github.com/rust-lang/crates.io-index" 2774 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2775 + dependencies = [ 2776 + "base64ct", 2777 + ] 2778 + 2779 + [[package]] 2780 + name = "percent-encoding" 2781 + version = "2.3.0" 2782 + source = "registry+https://github.com/rust-lang/crates.io-index" 2783 + checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 2784 + 2785 + [[package]] 2786 + name = "pin-project" 2787 + version = "1.1.3" 2788 + source = "registry+https://github.com/rust-lang/crates.io-index" 2789 + checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" 2790 + dependencies = [ 2791 + "pin-project-internal", 2792 + ] 2793 + 2794 + [[package]] 2795 + name = "pin-project-internal" 2796 + version = "1.1.3" 2797 + source = "registry+https://github.com/rust-lang/crates.io-index" 2798 + checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" 2799 + dependencies = [ 2800 + "proc-macro2", 2801 + "quote", 2802 + "syn 2.0.39", 2803 + ] 2804 + 2805 + [[package]] 2806 + name = "pin-project-lite" 2807 + version = "0.2.13" 2808 + source = "registry+https://github.com/rust-lang/crates.io-index" 2809 + checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 2810 + 2811 + [[package]] 2812 + name = "pin-utils" 2813 + version = "0.1.0" 2814 + source = "registry+https://github.com/rust-lang/crates.io-index" 2815 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2816 + 2817 + [[package]] 2818 + name = "pkcs1" 2819 + version = "0.4.1" 2820 + source = "registry+https://github.com/rust-lang/crates.io-index" 2821 + checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" 2822 + dependencies = [ 2823 + "der 0.6.1", 2824 + "pkcs8 0.9.0", 2825 + "spki 0.6.0", 2826 + "zeroize", 2827 + ] 2828 + 2829 + [[package]] 2830 + name = "pkcs1" 2831 + version = "0.7.5" 2832 + source = "registry+https://github.com/rust-lang/crates.io-index" 2833 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2834 + dependencies = [ 2835 + "der 0.7.8", 2836 + "pkcs8 0.10.2", 2837 + "spki 0.7.3", 2838 + ] 2839 + 2840 + [[package]] 2841 + name = "pkcs8" 2842 + version = "0.9.0" 2843 + source = "registry+https://github.com/rust-lang/crates.io-index" 2844 + checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" 2845 + dependencies = [ 2846 + "der 0.6.1", 2847 + "spki 0.6.0", 2848 + ] 2849 + 2850 + [[package]] 2851 + name = "pkcs8" 2852 + version = "0.10.2" 2853 + source = "registry+https://github.com/rust-lang/crates.io-index" 2854 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2855 + dependencies = [ 2856 + "der 0.7.8", 2857 + "spki 0.7.3", 2858 + ] 2859 + 2860 + [[package]] 2861 + name = "pkg-config" 2862 + version = "0.3.27" 2863 + source = "registry+https://github.com/rust-lang/crates.io-index" 2864 + checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 2865 + 2866 + [[package]] 2867 + name = "portable-atomic" 2868 + version = "1.5.1" 2869 + source = "registry+https://github.com/rust-lang/crates.io-index" 2870 + checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" 2871 + 2872 + [[package]] 2873 + name = "powerfmt" 2874 + version = "0.2.0" 2875 + source = "registry+https://github.com/rust-lang/crates.io-index" 2876 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2877 + 2878 + [[package]] 2879 + name = "ppv-lite86" 2880 + version = "0.2.17" 2881 + source = "registry+https://github.com/rust-lang/crates.io-index" 2882 + checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2883 + 2884 + [[package]] 2885 + name = "primeorder" 2886 + version = "0.13.3" 2887 + source = "registry+https://github.com/rust-lang/crates.io-index" 2888 + checksum = "c7dbe9ed3b56368bd99483eb32fe9c17fdd3730aebadc906918ce78d54c7eeb4" 2889 + dependencies = [ 2890 + "elliptic-curve 0.13.6", 2891 + ] 2892 + 2893 + [[package]] 2894 + name = "proc-macro-crate" 2895 + version = "0.1.5" 2896 + source = "registry+https://github.com/rust-lang/crates.io-index" 2897 + checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 2898 + dependencies = [ 2899 + "toml 0.5.11", 2900 + ] 2901 + 2902 + [[package]] 2903 + name = "proc-macro-error" 2904 + version = "1.0.4" 2905 + source = "registry+https://github.com/rust-lang/crates.io-index" 2906 + checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2907 + dependencies = [ 2908 + "proc-macro-error-attr", 2909 + "proc-macro2", 2910 + "quote", 2911 + "syn 1.0.109", 2912 + "version_check", 2913 + ] 2914 + 2915 + [[package]] 2916 + name = "proc-macro-error-attr" 2917 + version = "1.0.4" 2918 + source = "registry+https://github.com/rust-lang/crates.io-index" 2919 + checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2920 + dependencies = [ 2921 + "proc-macro2", 2922 + "quote", 2923 + "version_check", 2924 + ] 2925 + 2926 + [[package]] 2927 + name = "proc-macro2" 2928 + version = "1.0.69" 2929 + source = "registry+https://github.com/rust-lang/crates.io-index" 2930 + checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" 2931 + dependencies = [ 2932 + "unicode-ident", 2933 + ] 2934 + 2935 + [[package]] 2936 + name = "prost" 2937 + version = "0.12.1" 2938 + source = "registry+https://github.com/rust-lang/crates.io-index" 2939 + checksum = "f4fdd22f3b9c31b53c060df4a0613a1c7f062d4115a2b984dd15b1858f7e340d" 2940 + dependencies = [ 2941 + "bytes", 2942 + "prost-derive", 2943 + ] 2944 + 2945 + [[package]] 2946 + name = "prost-derive" 2947 + version = "0.12.1" 2948 + source = "registry+https://github.com/rust-lang/crates.io-index" 2949 + checksum = "265baba7fabd416cf5078179f7d2cbeca4ce7a9041111900675ea7c4cb8a4c32" 2950 + dependencies = [ 2951 + "anyhow", 2952 + "itertools", 2953 + "proc-macro2", 2954 + "quote", 2955 + "syn 2.0.39", 2956 + ] 2957 + 2958 + [[package]] 2959 + name = "prost-types" 2960 + version = "0.12.1" 2961 + source = "registry+https://github.com/rust-lang/crates.io-index" 2962 + checksum = "e081b29f63d83a4bc75cfc9f3fe424f9156cf92d8a4f0c9407cce9a1b67327cf" 2963 + dependencies = [ 2964 + "prost", 2965 + ] 2966 + 2967 + [[package]] 2968 + name = "ptr_meta" 2969 + version = "0.1.4" 2970 + source = "registry+https://github.com/rust-lang/crates.io-index" 2971 + checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" 2972 + dependencies = [ 2973 + "ptr_meta_derive", 2974 + ] 2975 + 2976 + [[package]] 2977 + name = "ptr_meta_derive" 2978 + version = "0.1.4" 2979 + source = "registry+https://github.com/rust-lang/crates.io-index" 2980 + checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" 2981 + dependencies = [ 2982 + "proc-macro2", 2983 + "quote", 2984 + "syn 1.0.109", 2985 + ] 2986 + 2987 + [[package]] 2988 + name = "quote" 2989 + version = "1.0.33" 2990 + source = "registry+https://github.com/rust-lang/crates.io-index" 2991 + checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 2992 + dependencies = [ 2993 + "proc-macro2", 2994 + ] 2995 + 2996 + [[package]] 2997 + name = "radium" 2998 + version = "0.7.0" 2999 + source = "registry+https://github.com/rust-lang/crates.io-index" 3000 + checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" 3001 + 3002 + [[package]] 3003 + name = "rand" 3004 + version = "0.8.5" 3005 + source = "registry+https://github.com/rust-lang/crates.io-index" 3006 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 3007 + dependencies = [ 3008 + "libc", 3009 + "rand_chacha", 3010 + "rand_core", 3011 + ] 3012 + 3013 + [[package]] 3014 + name = "rand_chacha" 3015 + version = "0.3.1" 3016 + source = "registry+https://github.com/rust-lang/crates.io-index" 3017 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 3018 + dependencies = [ 3019 + "ppv-lite86", 3020 + "rand_core", 3021 + ] 3022 + 3023 + [[package]] 3024 + name = "rand_core" 3025 + version = "0.6.4" 3026 + source = "registry+https://github.com/rust-lang/crates.io-index" 3027 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 3028 + dependencies = [ 3029 + "getrandom", 3030 + ] 3031 + 3032 + [[package]] 3033 + name = "redox_syscall" 3034 + version = "0.3.5" 3035 + source = "registry+https://github.com/rust-lang/crates.io-index" 3036 + checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 3037 + dependencies = [ 3038 + "bitflags 1.3.2", 3039 + ] 3040 + 3041 + [[package]] 3042 + name = "redox_syscall" 3043 + version = "0.4.1" 3044 + source = "registry+https://github.com/rust-lang/crates.io-index" 3045 + checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 3046 + dependencies = [ 3047 + "bitflags 1.3.2", 3048 + ] 3049 + 3050 + [[package]] 3051 + name = "regex" 3052 + version = "1.10.2" 3053 + source = "registry+https://github.com/rust-lang/crates.io-index" 3054 + checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 3055 + dependencies = [ 3056 + "aho-corasick", 3057 + "memchr", 3058 + "regex-automata 0.4.3", 3059 + "regex-syntax 0.8.2", 3060 + ] 3061 + 3062 + [[package]] 3063 + name = "regex-automata" 3064 + version = "0.1.10" 3065 + source = "registry+https://github.com/rust-lang/crates.io-index" 3066 + checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 3067 + dependencies = [ 3068 + "regex-syntax 0.6.29", 3069 + ] 3070 + 3071 + [[package]] 3072 + name = "regex-automata" 3073 + version = "0.4.3" 3074 + source = "registry+https://github.com/rust-lang/crates.io-index" 3075 + checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 3076 + dependencies = [ 3077 + "aho-corasick", 3078 + "memchr", 3079 + "regex-syntax 0.8.2", 3080 + ] 3081 + 3082 + [[package]] 3083 + name = "regex-syntax" 3084 + version = "0.6.29" 3085 + source = "registry+https://github.com/rust-lang/crates.io-index" 3086 + checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 3087 + 3088 + [[package]] 3089 + name = "regex-syntax" 3090 + version = "0.8.2" 3091 + source = "registry+https://github.com/rust-lang/crates.io-index" 3092 + checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 3093 + 3094 + [[package]] 3095 + name = "rend" 3096 + version = "0.4.1" 3097 + source = "registry+https://github.com/rust-lang/crates.io-index" 3098 + checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" 3099 + dependencies = [ 3100 + "bytecheck", 3101 + ] 3102 + 3103 + [[package]] 3104 + name = "reqwest" 3105 + version = "0.11.22" 3106 + source = "registry+https://github.com/rust-lang/crates.io-index" 3107 + checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" 3108 + dependencies = [ 3109 + "base64 0.21.5", 3110 + "bytes", 3111 + "encoding_rs", 3112 + "futures-core", 3113 + "futures-util", 3114 + "h2", 3115 + "http", 3116 + "http-body", 3117 + "hyper", 3118 + "hyper-rustls", 3119 + "ipnet", 3120 + "js-sys", 3121 + "log", 3122 + "mime", 3123 + "once_cell", 3124 + "percent-encoding", 3125 + "pin-project-lite", 3126 + "rustls", 3127 + "rustls-native-certs", 3128 + "rustls-pemfile", 3129 + "serde", 3130 + "serde_json", 3131 + "serde_urlencoded", 3132 + "system-configuration", 3133 + "tokio", 3134 + "tokio-rustls", 3135 + "tokio-util", 3136 + "tower-service", 3137 + "url", 3138 + "wasm-bindgen", 3139 + "wasm-bindgen-futures", 3140 + "wasm-streams", 3141 + "web-sys", 3142 + "webpki-roots", 3143 + "winreg", 3144 + ] 3145 + 3146 + [[package]] 3147 + name = "rfc6979" 3148 + version = "0.3.1" 3149 + source = "registry+https://github.com/rust-lang/crates.io-index" 3150 + checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" 3151 + dependencies = [ 3152 + "crypto-bigint 0.4.9", 3153 + "hmac", 3154 + "zeroize", 3155 + ] 3156 + 3157 + [[package]] 3158 + name = "rfc6979" 3159 + version = "0.4.0" 3160 + source = "registry+https://github.com/rust-lang/crates.io-index" 3161 + checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 3162 + dependencies = [ 3163 + "hmac", 3164 + "subtle", 3165 + ] 3166 + 3167 + [[package]] 3168 + name = "ring" 3169 + version = "0.17.5" 3170 + source = "registry+https://github.com/rust-lang/crates.io-index" 3171 + checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" 3172 + dependencies = [ 3173 + "cc", 3174 + "getrandom", 3175 + "libc", 3176 + "spin 0.9.8", 3177 + "untrusted", 3178 + "windows-sys 0.48.0", 3179 + ] 3180 + 3181 + [[package]] 3182 + name = "rkyv" 3183 + version = "0.7.42" 3184 + source = "registry+https://github.com/rust-lang/crates.io-index" 3185 + checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" 3186 + dependencies = [ 3187 + "bitvec", 3188 + "bytecheck", 3189 + "hashbrown 0.12.3", 3190 + "ptr_meta", 3191 + "rend", 3192 + "rkyv_derive", 3193 + "seahash", 3194 + "tinyvec", 3195 + "uuid", 3196 + ] 3197 + 3198 + [[package]] 3199 + name = "rkyv_derive" 3200 + version = "0.7.42" 3201 + source = "registry+https://github.com/rust-lang/crates.io-index" 3202 + checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" 3203 + dependencies = [ 3204 + "proc-macro2", 3205 + "quote", 3206 + "syn 1.0.109", 3207 + ] 3208 + 3209 + [[package]] 3210 + name = "rsa" 3211 + version = "0.7.2" 3212 + source = "registry+https://github.com/rust-lang/crates.io-index" 3213 + checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" 3214 + dependencies = [ 3215 + "byteorder", 3216 + "digest", 3217 + "num-bigint-dig", 3218 + "num-integer", 3219 + "num-iter", 3220 + "num-traits", 3221 + "pkcs1 0.4.1", 3222 + "pkcs8 0.9.0", 3223 + "rand_core", 3224 + "signature 1.6.4", 3225 + "smallvec", 3226 + "subtle", 3227 + "zeroize", 3228 + ] 3229 + 3230 + [[package]] 3231 + name = "rsa" 3232 + version = "0.9.6" 3233 + source = "registry+https://github.com/rust-lang/crates.io-index" 3234 + checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" 3235 + dependencies = [ 3236 + "const-oid", 3237 + "digest", 3238 + "num-bigint-dig", 3239 + "num-integer", 3240 + "num-traits", 3241 + "pkcs1 0.7.5", 3242 + "pkcs8 0.10.2", 3243 + "rand_core", 3244 + "signature 2.1.0", 3245 + "spki 0.7.3", 3246 + "subtle", 3247 + "zeroize", 3248 + ] 3249 + 3250 + [[package]] 3251 + name = "rust_decimal" 3252 + version = "1.32.0" 3253 + source = "registry+https://github.com/rust-lang/crates.io-index" 3254 + checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" 3255 + dependencies = [ 3256 + "arrayvec", 3257 + "borsh", 3258 + "bytes", 3259 + "num-traits", 3260 + "rand", 3261 + "rkyv", 3262 + "serde", 3263 + "serde_json", 3264 + ] 3265 + 3266 + [[package]] 3267 + name = "rustc-demangle" 3268 + version = "0.1.23" 3269 + source = "registry+https://github.com/rust-lang/crates.io-index" 3270 + checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 3271 + 3272 + [[package]] 3273 + name = "rustc_version" 3274 + version = "0.4.0" 3275 + source = "registry+https://github.com/rust-lang/crates.io-index" 3276 + checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 3277 + dependencies = [ 3278 + "semver", 3279 + ] 3280 + 3281 + [[package]] 3282 + name = "rustix" 3283 + version = "0.38.21" 3284 + source = "registry+https://github.com/rust-lang/crates.io-index" 3285 + checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" 3286 + dependencies = [ 3287 + "bitflags 2.4.1", 3288 + "errno", 3289 + "libc", 3290 + "linux-raw-sys", 3291 + "windows-sys 0.48.0", 3292 + ] 3293 + 3294 + [[package]] 3295 + name = "rustls" 3296 + version = "0.21.8" 3297 + source = "registry+https://github.com/rust-lang/crates.io-index" 3298 + checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" 3299 + dependencies = [ 3300 + "log", 3301 + "ring", 3302 + "rustls-webpki", 3303 + "sct", 3304 + ] 3305 + 3306 + [[package]] 3307 + name = "rustls-native-certs" 3308 + version = "0.6.3" 3309 + source = "registry+https://github.com/rust-lang/crates.io-index" 3310 + checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 3311 + dependencies = [ 3312 + "openssl-probe", 3313 + "rustls-pemfile", 3314 + "schannel", 3315 + "security-framework", 3316 + ] 3317 + 3318 + [[package]] 3319 + name = "rustls-pemfile" 3320 + version = "1.0.4" 3321 + source = "registry+https://github.com/rust-lang/crates.io-index" 3322 + checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 3323 + dependencies = [ 3324 + "base64 0.21.5", 3325 + ] 3326 + 3327 + [[package]] 3328 + name = "rustls-webpki" 3329 + version = "0.101.7" 3330 + source = "registry+https://github.com/rust-lang/crates.io-index" 3331 + checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 3332 + dependencies = [ 3333 + "ring", 3334 + "untrusted", 3335 + ] 3336 + 3337 + [[package]] 3338 + name = "rustversion" 3339 + version = "1.0.14" 3340 + source = "registry+https://github.com/rust-lang/crates.io-index" 3341 + checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 3342 + 3343 + [[package]] 3344 + name = "ryu" 3345 + version = "1.0.15" 3346 + source = "registry+https://github.com/rust-lang/crates.io-index" 3347 + checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 3348 + 3349 + [[package]] 3350 + name = "same-file" 3351 + version = "1.0.6" 3352 + source = "registry+https://github.com/rust-lang/crates.io-index" 3353 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3354 + dependencies = [ 3355 + "winapi-util", 3356 + ] 3357 + 3358 + [[package]] 3359 + name = "schannel" 3360 + version = "0.1.22" 3361 + source = "registry+https://github.com/rust-lang/crates.io-index" 3362 + checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" 3363 + dependencies = [ 3364 + "windows-sys 0.48.0", 3365 + ] 3366 + 3367 + [[package]] 3368 + name = "scopeguard" 3369 + version = "1.2.0" 3370 + source = "registry+https://github.com/rust-lang/crates.io-index" 3371 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3372 + 3373 + [[package]] 3374 + name = "scratch" 3375 + version = "1.0.7" 3376 + source = "registry+https://github.com/rust-lang/crates.io-index" 3377 + checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" 3378 + 3379 + [[package]] 3380 + name = "sct" 3381 + version = "0.7.1" 3382 + source = "registry+https://github.com/rust-lang/crates.io-index" 3383 + checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 3384 + dependencies = [ 3385 + "ring", 3386 + "untrusted", 3387 + ] 3388 + 3389 + [[package]] 3390 + name = "sea-bae" 3391 + version = "0.2.0" 3392 + source = "registry+https://github.com/rust-lang/crates.io-index" 3393 + checksum = "3bd3534a9978d0aa7edd2808dc1f8f31c4d0ecd31ddf71d997b3c98e9f3c9114" 3394 + dependencies = [ 3395 + "heck", 3396 + "proc-macro-error", 3397 + "proc-macro2", 3398 + "quote", 3399 + "syn 2.0.39", 3400 + ] 3401 + 3402 + [[package]] 3403 + name = "sea-orm" 3404 + version = "0.12.10" 3405 + source = "registry+https://github.com/rust-lang/crates.io-index" 3406 + checksum = "cf9195a2b2a182cbee3f76cf2a97c20204022f91259bdf8a48b537788202775b" 3407 + dependencies = [ 3408 + "async-stream", 3409 + "async-trait", 3410 + "bigdecimal", 3411 + "chrono", 3412 + "futures", 3413 + "log", 3414 + "ouroboros", 3415 + "rust_decimal", 3416 + "sea-orm-macros", 3417 + "sea-query", 3418 + "sea-query-binder", 3419 + "serde", 3420 + "serde_json", 3421 + "sqlx", 3422 + "strum", 3423 + "thiserror", 3424 + "time", 3425 + "tracing", 3426 + "url", 3427 + "uuid", 3428 + ] 3429 + 3430 + [[package]] 3431 + name = "sea-orm-cli" 3432 + version = "0.12.10" 3433 + source = "registry+https://github.com/rust-lang/crates.io-index" 3434 + checksum = "acc21813f3a91462280bee40632298a555eafe9dd8feb74917f9c24514214c2e" 3435 + dependencies = [ 3436 + "chrono", 3437 + "clap", 3438 + "dotenvy", 3439 + "glob", 3440 + "regex", 3441 + "sea-schema", 3442 + "tracing", 3443 + "tracing-subscriber", 3444 + "url", 3445 + ] 3446 + 3447 + [[package]] 3448 + name = "sea-orm-macros" 3449 + version = "0.12.10" 3450 + source = "registry+https://github.com/rust-lang/crates.io-index" 3451 + checksum = "66c6acfe3d49625c679955c7e7e7cd2d72b512a5c77bcd535a74aa41590b9f28" 3452 + dependencies = [ 3453 + "heck", 3454 + "proc-macro2", 3455 + "quote", 3456 + "sea-bae", 3457 + "syn 2.0.39", 3458 + "unicode-ident", 3459 + ] 3460 + 3461 + [[package]] 3462 + name = "sea-orm-migration" 3463 + version = "0.12.10" 3464 + source = "registry+https://github.com/rust-lang/crates.io-index" 3465 + checksum = "b3d06dac448288ceb630994b420cd8d5410543c0b09367f40ed505c2f03b266a" 3466 + dependencies = [ 3467 + "async-trait", 3468 + "clap", 3469 + "dotenvy", 3470 + "futures", 3471 + "sea-orm", 3472 + "sea-orm-cli", 3473 + "sea-schema", 3474 + "tracing", 3475 + "tracing-subscriber", 3476 + ] 3477 + 3478 + [[package]] 3479 + name = "sea-query" 3480 + version = "0.30.5" 3481 + source = "registry+https://github.com/rust-lang/crates.io-index" 3482 + checksum = "e40446e3c048cec0802375f52462a05cc774b9ea6af1dffba6c646b7825e4cf9" 3483 + dependencies = [ 3484 + "bigdecimal", 3485 + "chrono", 3486 + "derivative", 3487 + "inherent", 3488 + "ordered-float", 3489 + "rust_decimal", 3490 + "sea-query-derive", 3491 + "serde_json", 3492 + "time", 3493 + "uuid", 3494 + ] 3495 + 3496 + [[package]] 3497 + name = "sea-query-binder" 3498 + version = "0.5.0" 3499 + source = "registry+https://github.com/rust-lang/crates.io-index" 3500 + checksum = "36bbb68df92e820e4d5aeb17b4acd5cc8b5d18b2c36a4dd6f4626aabfa7ab1b9" 3501 + dependencies = [ 3502 + "bigdecimal", 3503 + "chrono", 3504 + "rust_decimal", 3505 + "sea-query", 3506 + "serde_json", 3507 + "sqlx", 3508 + "time", 3509 + "uuid", 3510 + ] 3511 + 3512 + [[package]] 3513 + name = "sea-query-derive" 3514 + version = "0.4.1" 3515 + source = "registry+https://github.com/rust-lang/crates.io-index" 3516 + checksum = "25a82fcb49253abcb45cdcb2adf92956060ec0928635eb21b4f7a6d8f25ab0bc" 3517 + dependencies = [ 3518 + "heck", 3519 + "proc-macro2", 3520 + "quote", 3521 + "syn 2.0.39", 3522 + "thiserror", 3523 + ] 3524 + 3525 + [[package]] 3526 + name = "sea-schema" 3527 + version = "0.14.1" 3528 + source = "registry+https://github.com/rust-lang/crates.io-index" 3529 + checksum = "0cd9561232bd1b82ea748b581f15909d11de0db6563ddcf28c5d908aee8282f1" 3530 + dependencies = [ 3531 + "futures", 3532 + "sea-query", 3533 + "sea-schema-derive", 3534 + ] 3535 + 3536 + [[package]] 3537 + name = "sea-schema-derive" 3538 + version = "0.2.0" 3539 + source = "registry+https://github.com/rust-lang/crates.io-index" 3540 + checksum = "c6f686050f76bffc4f635cda8aea6df5548666b830b52387e8bc7de11056d11e" 3541 + dependencies = [ 3542 + "heck", 3543 + "proc-macro2", 3544 + "quote", 3545 + "syn 1.0.109", 3546 + ] 3547 + 3548 + [[package]] 3549 + name = "seahash" 3550 + version = "4.1.0" 3551 + source = "registry+https://github.com/rust-lang/crates.io-index" 3552 + checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" 3553 + 3554 + [[package]] 3555 + name = "sec1" 3556 + version = "0.3.0" 3557 + source = "registry+https://github.com/rust-lang/crates.io-index" 3558 + checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" 3559 + dependencies = [ 3560 + "base16ct 0.1.1", 3561 + "der 0.6.1", 3562 + "generic-array", 3563 + "pkcs8 0.9.0", 3564 + "subtle", 3565 + "zeroize", 3566 + ] 3567 + 3568 + [[package]] 3569 + name = "sec1" 3570 + version = "0.7.3" 3571 + source = "registry+https://github.com/rust-lang/crates.io-index" 3572 + checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 3573 + dependencies = [ 3574 + "base16ct 0.2.0", 3575 + "der 0.7.8", 3576 + "generic-array", 3577 + "pkcs8 0.10.2", 3578 + "subtle", 3579 + "zeroize", 3580 + ] 3581 + 3582 + [[package]] 3583 + name = "security-framework" 3584 + version = "2.9.2" 3585 + source = "registry+https://github.com/rust-lang/crates.io-index" 3586 + checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" 3587 + dependencies = [ 3588 + "bitflags 1.3.2", 3589 + "core-foundation", 3590 + "core-foundation-sys", 3591 + "libc", 3592 + "security-framework-sys", 3593 + ] 3594 + 3595 + [[package]] 3596 + name = "security-framework-sys" 3597 + version = "2.9.1" 3598 + source = "registry+https://github.com/rust-lang/crates.io-index" 3599 + checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" 3600 + dependencies = [ 3601 + "core-foundation-sys", 3602 + "libc", 3603 + ] 3604 + 3605 + [[package]] 3606 + name = "semver" 3607 + version = "1.0.20" 3608 + source = "registry+https://github.com/rust-lang/crates.io-index" 3609 + checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" 3610 + 3611 + [[package]] 3612 + name = "serde" 3613 + version = "1.0.192" 3614 + source = "registry+https://github.com/rust-lang/crates.io-index" 3615 + checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" 3616 + dependencies = [ 3617 + "serde_derive", 3618 + ] 3619 + 3620 + [[package]] 3621 + name = "serde_derive" 3622 + version = "1.0.192" 3623 + source = "registry+https://github.com/rust-lang/crates.io-index" 3624 + checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" 3625 + dependencies = [ 3626 + "proc-macro2", 3627 + "quote", 3628 + "syn 2.0.39", 3629 + ] 3630 + 3631 + [[package]] 3632 + name = "serde_json" 3633 + version = "1.0.108" 3634 + source = "registry+https://github.com/rust-lang/crates.io-index" 3635 + checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" 3636 + dependencies = [ 3637 + "itoa", 3638 + "ryu", 3639 + "serde", 3640 + ] 3641 + 3642 + [[package]] 3643 + name = "serde_path_to_error" 3644 + version = "0.1.14" 3645 + source = "registry+https://github.com/rust-lang/crates.io-index" 3646 + checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" 3647 + dependencies = [ 3648 + "itoa", 3649 + "serde", 3650 + ] 3651 + 3652 + [[package]] 3653 + name = "serde_spanned" 3654 + version = "0.6.4" 3655 + source = "registry+https://github.com/rust-lang/crates.io-index" 3656 + checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" 3657 + dependencies = [ 3658 + "serde", 3659 + ] 3660 + 3661 + [[package]] 3662 + name = "serde_urlencoded" 3663 + version = "0.7.1" 3664 + source = "registry+https://github.com/rust-lang/crates.io-index" 3665 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3666 + dependencies = [ 3667 + "form_urlencoded", 3668 + "itoa", 3669 + "ryu", 3670 + "serde", 3671 + ] 3672 + 3673 + [[package]] 3674 + name = "serde_with" 3675 + version = "3.4.0" 3676 + source = "registry+https://github.com/rust-lang/crates.io-index" 3677 + checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" 3678 + dependencies = [ 3679 + "base64 0.21.5", 3680 + "chrono", 3681 + "hex", 3682 + "indexmap 1.9.3", 3683 + "indexmap 2.1.0", 3684 + "serde", 3685 + "serde_json", 3686 + "serde_with_macros", 3687 + "time", 3688 + ] 3689 + 3690 + [[package]] 3691 + name = "serde_with_macros" 3692 + version = "3.4.0" 3693 + source = "registry+https://github.com/rust-lang/crates.io-index" 3694 + checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" 3695 + dependencies = [ 3696 + "darling", 3697 + "proc-macro2", 3698 + "quote", 3699 + "syn 2.0.39", 3700 + ] 3701 + 3702 + [[package]] 3703 + name = "serde_yaml" 3704 + version = "0.9.27" 3705 + source = "registry+https://github.com/rust-lang/crates.io-index" 3706 + checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" 3707 + dependencies = [ 3708 + "indexmap 2.1.0", 3709 + "itoa", 3710 + "ryu", 3711 + "serde", 3712 + "unsafe-libyaml", 3713 + ] 3714 + 3715 + [[package]] 3716 + name = "sha1" 3717 + version = "0.10.6" 3718 + source = "registry+https://github.com/rust-lang/crates.io-index" 3719 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3720 + dependencies = [ 3721 + "cfg-if", 3722 + "cpufeatures", 3723 + "digest", 3724 + ] 3725 + 3726 + [[package]] 3727 + name = "sha2" 3728 + version = "0.10.8" 3729 + source = "registry+https://github.com/rust-lang/crates.io-index" 3730 + checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 3731 + dependencies = [ 3732 + "cfg-if", 3733 + "cpufeatures", 3734 + "digest", 3735 + "sha2-asm", 3736 + ] 3737 + 3738 + [[package]] 3739 + name = "sha2-asm" 3740 + version = "0.6.3" 3741 + source = "registry+https://github.com/rust-lang/crates.io-index" 3742 + checksum = "f27ba7066011e3fb30d808b51affff34f0a66d3a03a58edd787c6e420e40e44e" 3743 + dependencies = [ 3744 + "cc", 3745 + ] 3746 + 3747 + [[package]] 3748 + name = "sharded-slab" 3749 + version = "0.1.7" 3750 + source = "registry+https://github.com/rust-lang/crates.io-index" 3751 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 3752 + dependencies = [ 3753 + "lazy_static", 3754 + ] 3755 + 3756 + [[package]] 3757 + name = "shell-words" 3758 + version = "1.1.0" 3759 + source = "registry+https://github.com/rust-lang/crates.io-index" 3760 + checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" 3761 + 3762 + [[package]] 3763 + name = "signal-hook-registry" 3764 + version = "1.4.1" 3765 + source = "registry+https://github.com/rust-lang/crates.io-index" 3766 + checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 3767 + dependencies = [ 3768 + "libc", 3769 + ] 3770 + 3771 + [[package]] 3772 + name = "signature" 3773 + version = "1.6.4" 3774 + source = "registry+https://github.com/rust-lang/crates.io-index" 3775 + checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 3776 + dependencies = [ 3777 + "digest", 3778 + "rand_core", 3779 + ] 3780 + 3781 + [[package]] 3782 + name = "signature" 3783 + version = "2.1.0" 3784 + source = "registry+https://github.com/rust-lang/crates.io-index" 3785 + checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" 3786 + dependencies = [ 3787 + "digest", 3788 + "rand_core", 3789 + ] 3790 + 3791 + [[package]] 3792 + name = "simdutf8" 3793 + version = "0.1.4" 3794 + source = "registry+https://github.com/rust-lang/crates.io-index" 3795 + checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" 3796 + 3797 + [[package]] 3798 + name = "slab" 3799 + version = "0.4.9" 3800 + source = "registry+https://github.com/rust-lang/crates.io-index" 3801 + checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 3802 + dependencies = [ 3803 + "autocfg", 3804 + ] 3805 + 3806 + [[package]] 3807 + name = "smallvec" 3808 + version = "1.11.2" 3809 + source = "registry+https://github.com/rust-lang/crates.io-index" 3810 + checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" 3811 + 3812 + [[package]] 3813 + name = "socket2" 3814 + version = "0.4.10" 3815 + source = "registry+https://github.com/rust-lang/crates.io-index" 3816 + checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 3817 + dependencies = [ 3818 + "libc", 3819 + "winapi", 3820 + ] 3821 + 3822 + [[package]] 3823 + name = "socket2" 3824 + version = "0.5.5" 3825 + source = "registry+https://github.com/rust-lang/crates.io-index" 3826 + checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 3827 + dependencies = [ 3828 + "libc", 3829 + "windows-sys 0.48.0", 3830 + ] 3831 + 3832 + [[package]] 3833 + name = "spin" 3834 + version = "0.5.2" 3835 + source = "registry+https://github.com/rust-lang/crates.io-index" 3836 + checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 3837 + 3838 + [[package]] 3839 + name = "spin" 3840 + version = "0.9.8" 3841 + source = "registry+https://github.com/rust-lang/crates.io-index" 3842 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3843 + dependencies = [ 3844 + "lock_api", 3845 + ] 3846 + 3847 + [[package]] 3848 + name = "spki" 3849 + version = "0.6.0" 3850 + source = "registry+https://github.com/rust-lang/crates.io-index" 3851 + checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" 3852 + dependencies = [ 3853 + "base64ct", 3854 + "der 0.6.1", 3855 + ] 3856 + 3857 + [[package]] 3858 + name = "spki" 3859 + version = "0.7.3" 3860 + source = "registry+https://github.com/rust-lang/crates.io-index" 3861 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 3862 + dependencies = [ 3863 + "base64ct", 3864 + "der 0.7.8", 3865 + ] 3866 + 3867 + [[package]] 3868 + name = "sqlformat" 3869 + version = "0.2.2" 3870 + source = "registry+https://github.com/rust-lang/crates.io-index" 3871 + checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" 3872 + dependencies = [ 3873 + "itertools", 3874 + "nom", 3875 + "unicode_categories", 3876 + ] 3877 + 3878 + [[package]] 3879 + name = "sqlx" 3880 + version = "0.7.3" 3881 + source = "registry+https://github.com/rust-lang/crates.io-index" 3882 + checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf" 3883 + dependencies = [ 3884 + "sqlx-core", 3885 + "sqlx-macros", 3886 + "sqlx-mysql", 3887 + "sqlx-postgres", 3888 + "sqlx-sqlite", 3889 + ] 3890 + 3891 + [[package]] 3892 + name = "sqlx-core" 3893 + version = "0.7.3" 3894 + source = "registry+https://github.com/rust-lang/crates.io-index" 3895 + checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd" 3896 + dependencies = [ 3897 + "ahash 0.8.6", 3898 + "atoi", 3899 + "bigdecimal", 3900 + "byteorder", 3901 + "bytes", 3902 + "chrono", 3903 + "crc", 3904 + "crossbeam-queue", 3905 + "dotenvy", 3906 + "either", 3907 + "event-listener", 3908 + "futures-channel", 3909 + "futures-core", 3910 + "futures-intrusive", 3911 + "futures-io", 3912 + "futures-util", 3913 + "hashlink", 3914 + "hex", 3915 + "indexmap 2.1.0", 3916 + "log", 3917 + "memchr", 3918 + "once_cell", 3919 + "paste", 3920 + "percent-encoding", 3921 + "rust_decimal", 3922 + "rustls", 3923 + "rustls-pemfile", 3924 + "serde", 3925 + "serde_json", 3926 + "sha2", 3927 + "smallvec", 3928 + "sqlformat", 3929 + "thiserror", 3930 + "time", 3931 + "tokio", 3932 + "tokio-stream", 3933 + "tracing", 3934 + "url", 3935 + "uuid", 3936 + "webpki-roots", 3937 + ] 3938 + 3939 + [[package]] 3940 + name = "sqlx-macros" 3941 + version = "0.7.3" 3942 + source = "registry+https://github.com/rust-lang/crates.io-index" 3943 + checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5" 3944 + dependencies = [ 3945 + "proc-macro2", 3946 + "quote", 3947 + "sqlx-core", 3948 + "sqlx-macros-core", 3949 + "syn 1.0.109", 3950 + ] 3951 + 3952 + [[package]] 3953 + name = "sqlx-macros-core" 3954 + version = "0.7.3" 3955 + source = "registry+https://github.com/rust-lang/crates.io-index" 3956 + checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841" 3957 + dependencies = [ 3958 + "atomic-write-file", 3959 + "dotenvy", 3960 + "either", 3961 + "heck", 3962 + "hex", 3963 + "once_cell", 3964 + "proc-macro2", 3965 + "quote", 3966 + "serde", 3967 + "serde_json", 3968 + "sha2", 3969 + "sqlx-core", 3970 + "sqlx-mysql", 3971 + "sqlx-postgres", 3972 + "sqlx-sqlite", 3973 + "syn 1.0.109", 3974 + "tempfile", 3975 + "tokio", 3976 + "url", 3977 + ] 3978 + 3979 + [[package]] 3980 + name = "sqlx-mysql" 3981 + version = "0.7.3" 3982 + source = "registry+https://github.com/rust-lang/crates.io-index" 3983 + checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" 3984 + dependencies = [ 3985 + "atoi", 3986 + "base64 0.21.5", 3987 + "bigdecimal", 3988 + "bitflags 2.4.1", 3989 + "byteorder", 3990 + "bytes", 3991 + "chrono", 3992 + "crc", 3993 + "digest", 3994 + "dotenvy", 3995 + "either", 3996 + "futures-channel", 3997 + "futures-core", 3998 + "futures-io", 3999 + "futures-util", 4000 + "generic-array", 4001 + "hex", 4002 + "hkdf", 4003 + "hmac", 4004 + "itoa", 4005 + "log", 4006 + "md-5", 4007 + "memchr", 4008 + "once_cell", 4009 + "percent-encoding", 4010 + "rand", 4011 + "rsa 0.9.6", 4012 + "rust_decimal", 4013 + "serde", 4014 + "sha1", 4015 + "sha2", 4016 + "smallvec", 4017 + "sqlx-core", 4018 + "stringprep", 4019 + "thiserror", 4020 + "time", 4021 + "tracing", 4022 + "uuid", 4023 + "whoami", 4024 + ] 4025 + 4026 + [[package]] 4027 + name = "sqlx-postgres" 4028 + version = "0.7.3" 4029 + source = "registry+https://github.com/rust-lang/crates.io-index" 4030 + checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" 4031 + dependencies = [ 4032 + "atoi", 4033 + "base64 0.21.5", 4034 + "bigdecimal", 4035 + "bitflags 2.4.1", 4036 + "byteorder", 4037 + "chrono", 4038 + "crc", 4039 + "dotenvy", 4040 + "etcetera", 4041 + "futures-channel", 4042 + "futures-core", 4043 + "futures-io", 4044 + "futures-util", 4045 + "hex", 4046 + "hkdf", 4047 + "hmac", 4048 + "home", 4049 + "itoa", 4050 + "log", 4051 + "md-5", 4052 + "memchr", 4053 + "num-bigint", 4054 + "once_cell", 4055 + "rand", 4056 + "rust_decimal", 4057 + "serde", 4058 + "serde_json", 4059 + "sha1", 4060 + "sha2", 4061 + "smallvec", 4062 + "sqlx-core", 4063 + "stringprep", 4064 + "thiserror", 4065 + "time", 4066 + "tracing", 4067 + "uuid", 4068 + "whoami", 4069 + ] 4070 + 4071 + [[package]] 4072 + name = "sqlx-sqlite" 4073 + version = "0.7.3" 4074 + source = "registry+https://github.com/rust-lang/crates.io-index" 4075 + checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490" 4076 + dependencies = [ 4077 + "atoi", 4078 + "chrono", 4079 + "flume", 4080 + "futures-channel", 4081 + "futures-core", 4082 + "futures-executor", 4083 + "futures-intrusive", 4084 + "futures-util", 4085 + "libsqlite3-sys", 4086 + "log", 4087 + "percent-encoding", 4088 + "serde", 4089 + "sqlx-core", 4090 + "time", 4091 + "tracing", 4092 + "url", 4093 + "urlencoding", 4094 + "uuid", 4095 + ] 4096 + 4097 + [[package]] 4098 + name = "static_assertions" 4099 + version = "1.1.0" 4100 + source = "registry+https://github.com/rust-lang/crates.io-index" 4101 + checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4102 + 4103 + [[package]] 4104 + name = "stringprep" 4105 + version = "0.1.4" 4106 + source = "registry+https://github.com/rust-lang/crates.io-index" 4107 + checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" 4108 + dependencies = [ 4109 + "finl_unicode", 4110 + "unicode-bidi", 4111 + "unicode-normalization", 4112 + ] 4113 + 4114 + [[package]] 4115 + name = "strsim" 4116 + version = "0.10.0" 4117 + source = "registry+https://github.com/rust-lang/crates.io-index" 4118 + checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 4119 + 4120 + [[package]] 4121 + name = "strum" 4122 + version = "0.25.0" 4123 + source = "registry+https://github.com/rust-lang/crates.io-index" 4124 + checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" 4125 + 4126 + [[package]] 4127 + name = "subtle" 4128 + version = "2.5.0" 4129 + source = "registry+https://github.com/rust-lang/crates.io-index" 4130 + checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 4131 + 4132 + [[package]] 4133 + name = "syn" 4134 + version = "1.0.109" 4135 + source = "registry+https://github.com/rust-lang/crates.io-index" 4136 + checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4137 + dependencies = [ 4138 + "proc-macro2", 4139 + "quote", 4140 + "unicode-ident", 4141 + ] 4142 + 4143 + [[package]] 4144 + name = "syn" 4145 + version = "2.0.39" 4146 + source = "registry+https://github.com/rust-lang/crates.io-index" 4147 + checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" 4148 + dependencies = [ 4149 + "proc-macro2", 4150 + "quote", 4151 + "unicode-ident", 4152 + ] 4153 + 4154 + [[package]] 4155 + name = "sync_wrapper" 4156 + version = "0.1.2" 4157 + source = "registry+https://github.com/rust-lang/crates.io-index" 4158 + checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 4159 + 4160 + [[package]] 4161 + name = "system-configuration" 4162 + version = "0.5.1" 4163 + source = "registry+https://github.com/rust-lang/crates.io-index" 4164 + checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 4165 + dependencies = [ 4166 + "bitflags 1.3.2", 4167 + "core-foundation", 4168 + "system-configuration-sys", 4169 + ] 4170 + 4171 + [[package]] 4172 + name = "system-configuration-sys" 4173 + version = "0.5.0" 4174 + source = "registry+https://github.com/rust-lang/crates.io-index" 4175 + checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 4176 + dependencies = [ 4177 + "core-foundation-sys", 4178 + "libc", 4179 + ] 4180 + 4181 + [[package]] 4182 + name = "tap" 4183 + version = "1.0.1" 4184 + source = "registry+https://github.com/rust-lang/crates.io-index" 4185 + checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 4186 + 4187 + [[package]] 4188 + name = "tempfile" 4189 + version = "3.8.1" 4190 + source = "registry+https://github.com/rust-lang/crates.io-index" 4191 + checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" 4192 + dependencies = [ 4193 + "cfg-if", 4194 + "fastrand", 4195 + "redox_syscall 0.4.1", 4196 + "rustix", 4197 + "windows-sys 0.48.0", 4198 + ] 4199 + 4200 + [[package]] 4201 + name = "termcolor" 4202 + version = "1.3.0" 4203 + source = "registry+https://github.com/rust-lang/crates.io-index" 4204 + checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" 4205 + dependencies = [ 4206 + "winapi-util", 4207 + ] 4208 + 4209 + [[package]] 4210 + name = "thiserror" 4211 + version = "1.0.50" 4212 + source = "registry+https://github.com/rust-lang/crates.io-index" 4213 + checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" 4214 + dependencies = [ 4215 + "thiserror-impl", 4216 + ] 4217 + 4218 + [[package]] 4219 + name = "thiserror-impl" 4220 + version = "1.0.50" 4221 + source = "registry+https://github.com/rust-lang/crates.io-index" 4222 + checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" 4223 + dependencies = [ 4224 + "proc-macro2", 4225 + "quote", 4226 + "syn 2.0.39", 4227 + ] 4228 + 4229 + [[package]] 4230 + name = "thread_local" 4231 + version = "1.1.7" 4232 + source = "registry+https://github.com/rust-lang/crates.io-index" 4233 + checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 4234 + dependencies = [ 4235 + "cfg-if", 4236 + "once_cell", 4237 + ] 4238 + 4239 + [[package]] 4240 + name = "time" 4241 + version = "0.3.30" 4242 + source = "registry+https://github.com/rust-lang/crates.io-index" 4243 + checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" 4244 + dependencies = [ 4245 + "deranged", 4246 + "itoa", 4247 + "powerfmt", 4248 + "serde", 4249 + "time-core", 4250 + "time-macros", 4251 + ] 4252 + 4253 + [[package]] 4254 + name = "time-core" 4255 + version = "0.1.2" 4256 + source = "registry+https://github.com/rust-lang/crates.io-index" 4257 + checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 4258 + 4259 + [[package]] 4260 + name = "time-macros" 4261 + version = "0.2.15" 4262 + source = "registry+https://github.com/rust-lang/crates.io-index" 4263 + checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" 4264 + dependencies = [ 4265 + "time-core", 4266 + ] 4267 + 4268 + [[package]] 4269 + name = "tinyvec" 4270 + version = "1.6.0" 4271 + source = "registry+https://github.com/rust-lang/crates.io-index" 4272 + checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 4273 + dependencies = [ 4274 + "tinyvec_macros", 4275 + ] 4276 + 4277 + [[package]] 4278 + name = "tinyvec_macros" 4279 + version = "0.1.1" 4280 + source = "registry+https://github.com/rust-lang/crates.io-index" 4281 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4282 + 4283 + [[package]] 4284 + name = "tokio" 4285 + version = "1.34.0" 4286 + source = "registry+https://github.com/rust-lang/crates.io-index" 4287 + checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" 4288 + dependencies = [ 4289 + "backtrace", 4290 + "bytes", 4291 + "libc", 4292 + "mio", 4293 + "num_cpus", 4294 + "pin-project-lite", 4295 + "signal-hook-registry", 4296 + "socket2 0.5.5", 4297 + "tokio-macros", 4298 + "tracing", 4299 + "windows-sys 0.48.0", 4300 + ] 4301 + 4302 + [[package]] 4303 + name = "tokio-io-timeout" 4304 + version = "1.2.0" 4305 + source = "registry+https://github.com/rust-lang/crates.io-index" 4306 + checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" 4307 + dependencies = [ 4308 + "pin-project-lite", 4309 + "tokio", 4310 + ] 4311 + 4312 + [[package]] 4313 + name = "tokio-macros" 4314 + version = "2.2.0" 4315 + source = "registry+https://github.com/rust-lang/crates.io-index" 4316 + checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" 4317 + dependencies = [ 4318 + "proc-macro2", 4319 + "quote", 4320 + "syn 2.0.39", 4321 + ] 4322 + 4323 + [[package]] 4324 + name = "tokio-rustls" 4325 + version = "0.24.1" 4326 + source = "registry+https://github.com/rust-lang/crates.io-index" 4327 + checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4328 + dependencies = [ 4329 + "rustls", 4330 + "tokio", 4331 + ] 4332 + 4333 + [[package]] 4334 + name = "tokio-stream" 4335 + version = "0.1.14" 4336 + source = "registry+https://github.com/rust-lang/crates.io-index" 4337 + checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" 4338 + dependencies = [ 4339 + "futures-core", 4340 + "pin-project-lite", 4341 + "tokio", 4342 + ] 4343 + 4344 + [[package]] 4345 + name = "tokio-test" 4346 + version = "0.4.3" 4347 + source = "registry+https://github.com/rust-lang/crates.io-index" 4348 + checksum = "e89b3cbabd3ae862100094ae433e1def582cf86451b4e9bf83aa7ac1d8a7d719" 4349 + dependencies = [ 4350 + "async-stream", 4351 + "bytes", 4352 + "futures-core", 4353 + "tokio", 4354 + "tokio-stream", 4355 + ] 4356 + 4357 + [[package]] 4358 + name = "tokio-util" 4359 + version = "0.7.10" 4360 + source = "registry+https://github.com/rust-lang/crates.io-index" 4361 + checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 4362 + dependencies = [ 4363 + "bytes", 4364 + "futures-core", 4365 + "futures-sink", 4366 + "pin-project-lite", 4367 + "tokio", 4368 + "tracing", 4369 + ] 4370 + 4371 + [[package]] 4372 + name = "toml" 4373 + version = "0.5.11" 4374 + source = "registry+https://github.com/rust-lang/crates.io-index" 4375 + checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 4376 + dependencies = [ 4377 + "serde", 4378 + ] 4379 + 4380 + [[package]] 4381 + name = "toml" 4382 + version = "0.8.8" 4383 + source = "registry+https://github.com/rust-lang/crates.io-index" 4384 + checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" 4385 + dependencies = [ 4386 + "serde", 4387 + "serde_spanned", 4388 + "toml_datetime", 4389 + "toml_edit", 4390 + ] 4391 + 4392 + [[package]] 4393 + name = "toml_datetime" 4394 + version = "0.6.5" 4395 + source = "registry+https://github.com/rust-lang/crates.io-index" 4396 + checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 4397 + dependencies = [ 4398 + "serde", 4399 + ] 4400 + 4401 + [[package]] 4402 + name = "toml_edit" 4403 + version = "0.21.0" 4404 + source = "registry+https://github.com/rust-lang/crates.io-index" 4405 + checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" 4406 + dependencies = [ 4407 + "indexmap 2.1.0", 4408 + "serde", 4409 + "serde_spanned", 4410 + "toml_datetime", 4411 + "winnow", 4412 + ] 4413 + 4414 + [[package]] 4415 + name = "tonic" 4416 + version = "0.10.2" 4417 + source = "registry+https://github.com/rust-lang/crates.io-index" 4418 + checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" 4419 + dependencies = [ 4420 + "async-stream", 4421 + "async-trait", 4422 + "axum", 4423 + "base64 0.21.5", 4424 + "bytes", 4425 + "h2", 4426 + "http", 4427 + "http-body", 4428 + "hyper", 4429 + "hyper-timeout", 4430 + "percent-encoding", 4431 + "pin-project", 4432 + "prost", 4433 + "tokio", 4434 + "tokio-stream", 4435 + "tower", 4436 + "tower-layer", 4437 + "tower-service", 4438 + "tracing", 4439 + ] 4440 + 4441 + [[package]] 4442 + name = "tower" 4443 + version = "0.4.13" 4444 + source = "registry+https://github.com/rust-lang/crates.io-index" 4445 + checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 4446 + dependencies = [ 4447 + "futures-core", 4448 + "futures-util", 4449 + "indexmap 1.9.3", 4450 + "pin-project", 4451 + "pin-project-lite", 4452 + "rand", 4453 + "slab", 4454 + "tokio", 4455 + "tokio-util", 4456 + "tower-layer", 4457 + "tower-service", 4458 + "tracing", 4459 + ] 4460 + 4461 + [[package]] 4462 + name = "tower-http" 4463 + version = "0.4.4" 4464 + source = "registry+https://github.com/rust-lang/crates.io-index" 4465 + checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" 4466 + dependencies = [ 4467 + "bitflags 2.4.1", 4468 + "bytes", 4469 + "futures-core", 4470 + "futures-util", 4471 + "http", 4472 + "http-body", 4473 + "http-range-header", 4474 + "pin-project-lite", 4475 + "tower-layer", 4476 + "tower-service", 4477 + "tracing", 4478 + ] 4479 + 4480 + [[package]] 4481 + name = "tower-layer" 4482 + version = "0.3.2" 4483 + source = "registry+https://github.com/rust-lang/crates.io-index" 4484 + checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 4485 + 4486 + [[package]] 4487 + name = "tower-service" 4488 + version = "0.3.2" 4489 + source = "registry+https://github.com/rust-lang/crates.io-index" 4490 + checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 4491 + 4492 + [[package]] 4493 + name = "tracing" 4494 + version = "0.1.40" 4495 + source = "registry+https://github.com/rust-lang/crates.io-index" 4496 + checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 4497 + dependencies = [ 4498 + "log", 4499 + "pin-project-lite", 4500 + "tracing-attributes", 4501 + "tracing-core", 4502 + ] 4503 + 4504 + [[package]] 4505 + name = "tracing-attributes" 4506 + version = "0.1.27" 4507 + source = "registry+https://github.com/rust-lang/crates.io-index" 4508 + checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 4509 + dependencies = [ 4510 + "proc-macro2", 4511 + "quote", 4512 + "syn 2.0.39", 4513 + ] 4514 + 4515 + [[package]] 4516 + name = "tracing-core" 4517 + version = "0.1.32" 4518 + source = "registry+https://github.com/rust-lang/crates.io-index" 4519 + checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 4520 + dependencies = [ 4521 + "once_cell", 4522 + "valuable", 4523 + ] 4524 + 4525 + [[package]] 4526 + name = "tracing-error" 4527 + version = "0.2.0" 4528 + source = "registry+https://github.com/rust-lang/crates.io-index" 4529 + checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" 4530 + dependencies = [ 4531 + "tracing", 4532 + "tracing-subscriber", 4533 + ] 4534 + 4535 + [[package]] 4536 + name = "tracing-log" 4537 + version = "0.1.4" 4538 + source = "registry+https://github.com/rust-lang/crates.io-index" 4539 + checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" 4540 + dependencies = [ 4541 + "log", 4542 + "once_cell", 4543 + "tracing-core", 4544 + ] 4545 + 4546 + [[package]] 4547 + name = "tracing-serde" 4548 + version = "0.1.3" 4549 + source = "registry+https://github.com/rust-lang/crates.io-index" 4550 + checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" 4551 + dependencies = [ 4552 + "serde", 4553 + "tracing-core", 4554 + ] 4555 + 4556 + [[package]] 4557 + name = "tracing-subscriber" 4558 + version = "0.3.17" 4559 + source = "registry+https://github.com/rust-lang/crates.io-index" 4560 + checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" 4561 + dependencies = [ 4562 + "matchers", 4563 + "nu-ansi-term", 4564 + "once_cell", 4565 + "regex", 4566 + "serde", 4567 + "serde_json", 4568 + "sharded-slab", 4569 + "smallvec", 4570 + "thread_local", 4571 + "tracing", 4572 + "tracing-core", 4573 + "tracing-log", 4574 + "tracing-serde", 4575 + ] 4576 + 4577 + [[package]] 4578 + name = "try-lock" 4579 + version = "0.2.4" 4580 + source = "registry+https://github.com/rust-lang/crates.io-index" 4581 + checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" 4582 + 4583 + [[package]] 4584 + name = "typenum" 4585 + version = "1.17.0" 4586 + source = "registry+https://github.com/rust-lang/crates.io-index" 4587 + checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 4588 + 4589 + [[package]] 4590 + name = "unicode-bidi" 4591 + version = "0.3.13" 4592 + source = "registry+https://github.com/rust-lang/crates.io-index" 4593 + checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 4594 + 4595 + [[package]] 4596 + name = "unicode-ident" 4597 + version = "1.0.12" 4598 + source = "registry+https://github.com/rust-lang/crates.io-index" 4599 + checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 4600 + 4601 + [[package]] 4602 + name = "unicode-normalization" 4603 + version = "0.1.22" 4604 + source = "registry+https://github.com/rust-lang/crates.io-index" 4605 + checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 4606 + dependencies = [ 4607 + "tinyvec", 4608 + ] 4609 + 4610 + [[package]] 4611 + name = "unicode-segmentation" 4612 + version = "1.10.1" 4613 + source = "registry+https://github.com/rust-lang/crates.io-index" 4614 + checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 4615 + 4616 + [[package]] 4617 + name = "unicode-width" 4618 + version = "0.1.11" 4619 + source = "registry+https://github.com/rust-lang/crates.io-index" 4620 + checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 4621 + 4622 + [[package]] 4623 + name = "unicode-xid" 4624 + version = "0.2.4" 4625 + source = "registry+https://github.com/rust-lang/crates.io-index" 4626 + checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 4627 + 4628 + [[package]] 4629 + name = "unicode_categories" 4630 + version = "0.1.1" 4631 + source = "registry+https://github.com/rust-lang/crates.io-index" 4632 + checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 4633 + 4634 + [[package]] 4635 + name = "unsafe-libyaml" 4636 + version = "0.2.9" 4637 + source = "registry+https://github.com/rust-lang/crates.io-index" 4638 + checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" 4639 + 4640 + [[package]] 4641 + name = "untrusted" 4642 + version = "0.9.0" 4643 + source = "registry+https://github.com/rust-lang/crates.io-index" 4644 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 4645 + 4646 + [[package]] 4647 + name = "url" 4648 + version = "2.4.1" 4649 + source = "registry+https://github.com/rust-lang/crates.io-index" 4650 + checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" 4651 + dependencies = [ 4652 + "form_urlencoded", 4653 + "idna", 4654 + "percent-encoding", 4655 + ] 4656 + 4657 + [[package]] 4658 + name = "urlencoding" 4659 + version = "2.1.3" 4660 + source = "registry+https://github.com/rust-lang/crates.io-index" 4661 + checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 4662 + 4663 + [[package]] 4664 + name = "utf8parse" 4665 + version = "0.2.1" 4666 + source = "registry+https://github.com/rust-lang/crates.io-index" 4667 + checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 4668 + 4669 + [[package]] 4670 + name = "uuid" 4671 + version = "1.5.0" 4672 + source = "registry+https://github.com/rust-lang/crates.io-index" 4673 + checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" 4674 + dependencies = [ 4675 + "getrandom", 4676 + "serde", 4677 + ] 4678 + 4679 + [[package]] 4680 + name = "valuable" 4681 + version = "0.1.0" 4682 + source = "registry+https://github.com/rust-lang/crates.io-index" 4683 + checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 4684 + 4685 + [[package]] 4686 + name = "vcpkg" 4687 + version = "0.2.15" 4688 + source = "registry+https://github.com/rust-lang/crates.io-index" 4689 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 4690 + 4691 + [[package]] 4692 + name = "version_check" 4693 + version = "0.9.4" 4694 + source = "registry+https://github.com/rust-lang/crates.io-index" 4695 + checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 4696 + 4697 + [[package]] 4698 + name = "vsimd" 4699 + version = "0.8.0" 4700 + source = "registry+https://github.com/rust-lang/crates.io-index" 4701 + checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" 4702 + 4703 + [[package]] 4704 + name = "walkdir" 4705 + version = "2.4.0" 4706 + source = "registry+https://github.com/rust-lang/crates.io-index" 4707 + checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 4708 + dependencies = [ 4709 + "same-file", 4710 + "winapi-util", 4711 + ] 4712 + 4713 + [[package]] 4714 + name = "want" 4715 + version = "0.3.1" 4716 + source = "registry+https://github.com/rust-lang/crates.io-index" 4717 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 4718 + dependencies = [ 4719 + "try-lock", 4720 + ] 4721 + 4722 + [[package]] 4723 + name = "wasi" 4724 + version = "0.11.0+wasi-snapshot-preview1" 4725 + source = "registry+https://github.com/rust-lang/crates.io-index" 4726 + checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 4727 + 4728 + [[package]] 4729 + name = "wasm-bindgen" 4730 + version = "0.2.88" 4731 + source = "registry+https://github.com/rust-lang/crates.io-index" 4732 + checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" 4733 + dependencies = [ 4734 + "cfg-if", 4735 + "wasm-bindgen-macro", 4736 + ] 4737 + 4738 + [[package]] 4739 + name = "wasm-bindgen-backend" 4740 + version = "0.2.88" 4741 + source = "registry+https://github.com/rust-lang/crates.io-index" 4742 + checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" 4743 + dependencies = [ 4744 + "bumpalo", 4745 + "log", 4746 + "once_cell", 4747 + "proc-macro2", 4748 + "quote", 4749 + "syn 2.0.39", 4750 + "wasm-bindgen-shared", 4751 + ] 4752 + 4753 + [[package]] 4754 + name = "wasm-bindgen-futures" 4755 + version = "0.4.38" 4756 + source = "registry+https://github.com/rust-lang/crates.io-index" 4757 + checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" 4758 + dependencies = [ 4759 + "cfg-if", 4760 + "js-sys", 4761 + "wasm-bindgen", 4762 + "web-sys", 4763 + ] 4764 + 4765 + [[package]] 4766 + name = "wasm-bindgen-macro" 4767 + version = "0.2.88" 4768 + source = "registry+https://github.com/rust-lang/crates.io-index" 4769 + checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" 4770 + dependencies = [ 4771 + "quote", 4772 + "wasm-bindgen-macro-support", 4773 + ] 4774 + 4775 + [[package]] 4776 + name = "wasm-bindgen-macro-support" 4777 + version = "0.2.88" 4778 + source = "registry+https://github.com/rust-lang/crates.io-index" 4779 + checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" 4780 + dependencies = [ 4781 + "proc-macro2", 4782 + "quote", 4783 + "syn 2.0.39", 4784 + "wasm-bindgen-backend", 4785 + "wasm-bindgen-shared", 4786 + ] 4787 + 4788 + [[package]] 4789 + name = "wasm-bindgen-shared" 4790 + version = "0.2.88" 4791 + source = "registry+https://github.com/rust-lang/crates.io-index" 4792 + checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" 4793 + 4794 + [[package]] 4795 + name = "wasm-streams" 4796 + version = "0.3.0" 4797 + source = "registry+https://github.com/rust-lang/crates.io-index" 4798 + checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" 4799 + dependencies = [ 4800 + "futures-util", 4801 + "js-sys", 4802 + "wasm-bindgen", 4803 + "wasm-bindgen-futures", 4804 + "web-sys", 4805 + ] 4806 + 4807 + [[package]] 4808 + name = "web-sys" 4809 + version = "0.3.65" 4810 + source = "registry+https://github.com/rust-lang/crates.io-index" 4811 + checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" 4812 + dependencies = [ 4813 + "js-sys", 4814 + "wasm-bindgen", 4815 + ] 4816 + 4817 + [[package]] 4818 + name = "webpki-roots" 4819 + version = "0.25.2" 4820 + source = "registry+https://github.com/rust-lang/crates.io-index" 4821 + checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" 4822 + 4823 + [[package]] 4824 + name = "whoami" 4825 + version = "1.4.1" 4826 + source = "registry+https://github.com/rust-lang/crates.io-index" 4827 + checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" 4828 + 4829 + [[package]] 4830 + name = "wildmatch" 4831 + version = "2.1.1" 4832 + source = "registry+https://github.com/rust-lang/crates.io-index" 4833 + checksum = "ee583bdc5ff1cf9db20e9db5bb3ff4c3089a8f6b8b31aff265c9aba85812db86" 4834 + 4835 + [[package]] 4836 + name = "winapi" 4837 + version = "0.3.9" 4838 + source = "registry+https://github.com/rust-lang/crates.io-index" 4839 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4840 + dependencies = [ 4841 + "winapi-i686-pc-windows-gnu", 4842 + "winapi-x86_64-pc-windows-gnu", 4843 + ] 4844 + 4845 + [[package]] 4846 + name = "winapi-i686-pc-windows-gnu" 4847 + version = "0.4.0" 4848 + source = "registry+https://github.com/rust-lang/crates.io-index" 4849 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4850 + 4851 + [[package]] 4852 + name = "winapi-util" 4853 + version = "0.1.6" 4854 + source = "registry+https://github.com/rust-lang/crates.io-index" 4855 + checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 4856 + dependencies = [ 4857 + "winapi", 4858 + ] 4859 + 4860 + [[package]] 4861 + name = "winapi-x86_64-pc-windows-gnu" 4862 + version = "0.4.0" 4863 + source = "registry+https://github.com/rust-lang/crates.io-index" 4864 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4865 + 4866 + [[package]] 4867 + name = "windows-core" 4868 + version = "0.51.1" 4869 + source = "registry+https://github.com/rust-lang/crates.io-index" 4870 + checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" 4871 + dependencies = [ 4872 + "windows-targets 0.48.5", 4873 + ] 4874 + 4875 + [[package]] 4876 + name = "windows-sys" 4877 + version = "0.45.0" 4878 + source = "registry+https://github.com/rust-lang/crates.io-index" 4879 + checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 4880 + dependencies = [ 4881 + "windows-targets 0.42.2", 4882 + ] 4883 + 4884 + [[package]] 4885 + name = "windows-sys" 4886 + version = "0.48.0" 4887 + source = "registry+https://github.com/rust-lang/crates.io-index" 4888 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4889 + dependencies = [ 4890 + "windows-targets 0.48.5", 4891 + ] 4892 + 4893 + [[package]] 4894 + name = "windows-sys" 4895 + version = "0.52.0" 4896 + source = "registry+https://github.com/rust-lang/crates.io-index" 4897 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4898 + dependencies = [ 4899 + "windows-targets 0.52.0", 4900 + ] 4901 + 4902 + [[package]] 4903 + name = "windows-targets" 4904 + version = "0.42.2" 4905 + source = "registry+https://github.com/rust-lang/crates.io-index" 4906 + checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 4907 + dependencies = [ 4908 + "windows_aarch64_gnullvm 0.42.2", 4909 + "windows_aarch64_msvc 0.42.2", 4910 + "windows_i686_gnu 0.42.2", 4911 + "windows_i686_msvc 0.42.2", 4912 + "windows_x86_64_gnu 0.42.2", 4913 + "windows_x86_64_gnullvm 0.42.2", 4914 + "windows_x86_64_msvc 0.42.2", 4915 + ] 4916 + 4917 + [[package]] 4918 + name = "windows-targets" 4919 + version = "0.48.5" 4920 + source = "registry+https://github.com/rust-lang/crates.io-index" 4921 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4922 + dependencies = [ 4923 + "windows_aarch64_gnullvm 0.48.5", 4924 + "windows_aarch64_msvc 0.48.5", 4925 + "windows_i686_gnu 0.48.5", 4926 + "windows_i686_msvc 0.48.5", 4927 + "windows_x86_64_gnu 0.48.5", 4928 + "windows_x86_64_gnullvm 0.48.5", 4929 + "windows_x86_64_msvc 0.48.5", 4930 + ] 4931 + 4932 + [[package]] 4933 + name = "windows-targets" 4934 + version = "0.52.0" 4935 + source = "registry+https://github.com/rust-lang/crates.io-index" 4936 + checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 4937 + dependencies = [ 4938 + "windows_aarch64_gnullvm 0.52.0", 4939 + "windows_aarch64_msvc 0.52.0", 4940 + "windows_i686_gnu 0.52.0", 4941 + "windows_i686_msvc 0.52.0", 4942 + "windows_x86_64_gnu 0.52.0", 4943 + "windows_x86_64_gnullvm 0.52.0", 4944 + "windows_x86_64_msvc 0.52.0", 4945 + ] 4946 + 4947 + [[package]] 4948 + name = "windows_aarch64_gnullvm" 4949 + version = "0.42.2" 4950 + source = "registry+https://github.com/rust-lang/crates.io-index" 4951 + checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 4952 + 4953 + [[package]] 4954 + name = "windows_aarch64_gnullvm" 4955 + version = "0.48.5" 4956 + source = "registry+https://github.com/rust-lang/crates.io-index" 4957 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4958 + 4959 + [[package]] 4960 + name = "windows_aarch64_gnullvm" 4961 + version = "0.52.0" 4962 + source = "registry+https://github.com/rust-lang/crates.io-index" 4963 + checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 4964 + 4965 + [[package]] 4966 + name = "windows_aarch64_msvc" 4967 + version = "0.42.2" 4968 + source = "registry+https://github.com/rust-lang/crates.io-index" 4969 + checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 4970 + 4971 + [[package]] 4972 + name = "windows_aarch64_msvc" 4973 + version = "0.48.5" 4974 + source = "registry+https://github.com/rust-lang/crates.io-index" 4975 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4976 + 4977 + [[package]] 4978 + name = "windows_aarch64_msvc" 4979 + version = "0.52.0" 4980 + source = "registry+https://github.com/rust-lang/crates.io-index" 4981 + checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 4982 + 4983 + [[package]] 4984 + name = "windows_i686_gnu" 4985 + version = "0.42.2" 4986 + source = "registry+https://github.com/rust-lang/crates.io-index" 4987 + checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 4988 + 4989 + [[package]] 4990 + name = "windows_i686_gnu" 4991 + version = "0.48.5" 4992 + source = "registry+https://github.com/rust-lang/crates.io-index" 4993 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4994 + 4995 + [[package]] 4996 + name = "windows_i686_gnu" 4997 + version = "0.52.0" 4998 + source = "registry+https://github.com/rust-lang/crates.io-index" 4999 + checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 5000 + 5001 + [[package]] 5002 + name = "windows_i686_msvc" 5003 + version = "0.42.2" 5004 + source = "registry+https://github.com/rust-lang/crates.io-index" 5005 + checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 5006 + 5007 + [[package]] 5008 + name = "windows_i686_msvc" 5009 + version = "0.48.5" 5010 + source = "registry+https://github.com/rust-lang/crates.io-index" 5011 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 5012 + 5013 + [[package]] 5014 + name = "windows_i686_msvc" 5015 + version = "0.52.0" 5016 + source = "registry+https://github.com/rust-lang/crates.io-index" 5017 + checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 5018 + 5019 + [[package]] 5020 + name = "windows_x86_64_gnu" 5021 + version = "0.42.2" 5022 + source = "registry+https://github.com/rust-lang/crates.io-index" 5023 + checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 5024 + 5025 + [[package]] 5026 + name = "windows_x86_64_gnu" 5027 + version = "0.48.5" 5028 + source = "registry+https://github.com/rust-lang/crates.io-index" 5029 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 5030 + 5031 + [[package]] 5032 + name = "windows_x86_64_gnu" 5033 + version = "0.52.0" 5034 + source = "registry+https://github.com/rust-lang/crates.io-index" 5035 + checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 5036 + 5037 + [[package]] 5038 + name = "windows_x86_64_gnullvm" 5039 + version = "0.42.2" 5040 + source = "registry+https://github.com/rust-lang/crates.io-index" 5041 + checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 5042 + 5043 + [[package]] 5044 + name = "windows_x86_64_gnullvm" 5045 + version = "0.48.5" 5046 + source = "registry+https://github.com/rust-lang/crates.io-index" 5047 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 5048 + 5049 + [[package]] 5050 + name = "windows_x86_64_gnullvm" 5051 + version = "0.52.0" 5052 + source = "registry+https://github.com/rust-lang/crates.io-index" 5053 + checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 5054 + 5055 + [[package]] 5056 + name = "windows_x86_64_msvc" 5057 + version = "0.42.2" 5058 + source = "registry+https://github.com/rust-lang/crates.io-index" 5059 + checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 5060 + 5061 + [[package]] 5062 + name = "windows_x86_64_msvc" 5063 + version = "0.48.5" 5064 + source = "registry+https://github.com/rust-lang/crates.io-index" 5065 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5066 + 5067 + [[package]] 5068 + name = "windows_x86_64_msvc" 5069 + version = "0.52.0" 5070 + source = "registry+https://github.com/rust-lang/crates.io-index" 5071 + checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 5072 + 5073 + [[package]] 5074 + name = "winnow" 5075 + version = "0.5.19" 5076 + source = "registry+https://github.com/rust-lang/crates.io-index" 5077 + checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" 5078 + dependencies = [ 5079 + "memchr", 5080 + ] 5081 + 5082 + [[package]] 5083 + name = "winreg" 5084 + version = "0.50.0" 5085 + source = "registry+https://github.com/rust-lang/crates.io-index" 5086 + checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 5087 + dependencies = [ 5088 + "cfg-if", 5089 + "windows-sys 0.48.0", 5090 + ] 5091 + 5092 + [[package]] 5093 + name = "wyz" 5094 + version = "0.5.1" 5095 + source = "registry+https://github.com/rust-lang/crates.io-index" 5096 + checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" 5097 + dependencies = [ 5098 + "tap", 5099 + ] 5100 + 5101 + [[package]] 5102 + name = "xdg" 5103 + version = "2.5.2" 5104 + source = "registry+https://github.com/rust-lang/crates.io-index" 5105 + checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" 5106 + 5107 + [[package]] 5108 + name = "xmlparser" 5109 + version = "0.13.6" 5110 + source = "registry+https://github.com/rust-lang/crates.io-index" 5111 + checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" 5112 + 5113 + [[package]] 5114 + name = "xz2" 5115 + version = "0.1.7" 5116 + source = "registry+https://github.com/rust-lang/crates.io-index" 5117 + checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" 5118 + dependencies = [ 5119 + "lzma-sys", 5120 + ] 5121 + 5122 + [[package]] 5123 + name = "zerocopy" 5124 + version = "0.7.25" 5125 + source = "registry+https://github.com/rust-lang/crates.io-index" 5126 + checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" 5127 + dependencies = [ 5128 + "zerocopy-derive", 5129 + ] 5130 + 5131 + [[package]] 5132 + name = "zerocopy-derive" 5133 + version = "0.7.25" 5134 + source = "registry+https://github.com/rust-lang/crates.io-index" 5135 + checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" 5136 + dependencies = [ 5137 + "proc-macro2", 5138 + "quote", 5139 + "syn 2.0.39", 5140 + ] 5141 + 5142 + [[package]] 5143 + name = "zeroize" 5144 + version = "1.6.0" 5145 + source = "registry+https://github.com/rust-lang/crates.io-index" 5146 + checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" 5147 + 5148 + [[package]] 5149 + name = "zstd" 5150 + version = "0.13.0" 5151 + source = "registry+https://github.com/rust-lang/crates.io-index" 5152 + checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" 5153 + dependencies = [ 5154 + "zstd-safe", 5155 + ] 5156 + 5157 + [[package]] 5158 + name = "zstd-safe" 5159 + version = "7.0.0" 5160 + source = "registry+https://github.com/rust-lang/crates.io-index" 5161 + checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" 5162 + dependencies = [ 5163 + "zstd-sys", 5164 + ] 5165 + 5166 + [[package]] 5167 + name = "zstd-sys" 5168 + version = "2.0.9+zstd.1.5.5" 5169 + source = "registry+https://github.com/rust-lang/crates.io-index" 5170 + checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" 5171 + dependencies = [ 5172 + "cc", 5173 + "pkg-config", 5174 + ]
+66
pkgs/by-name/at/attic-client/package.nix
··· 1 + { lib 2 + , rustPlatform 3 + , fetchFromGitHub 4 + , nix 5 + , boost 6 + , pkg-config 7 + , stdenv 8 + , installShellFiles 9 + , darwin 10 + , crates ? [ "attic-client" ] 11 + }: 12 + rustPlatform.buildRustPackage { 13 + pname = "attic"; 14 + version = "0.1.0"; 15 + 16 + src = fetchFromGitHub { 17 + owner = "zhaofengli"; 18 + repo = "attic"; 19 + rev = "6eabc3f02fae3683bffab483e614bebfcd476b21"; 20 + hash = "sha256-wSZjK+rOXn+UQiP1NbdNn5/UW6UcBxjvlqr2wh++MbM="; 21 + }; 22 + 23 + nativeBuildInputs = [ 24 + pkg-config 25 + installShellFiles 26 + ]; 27 + 28 + buildInputs = [ 29 + nix 30 + boost 31 + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ 32 + SystemConfiguration 33 + ]); 34 + 35 + cargoLock = { 36 + lockFile = ./Cargo.lock; 37 + outputHashes = { 38 + "nix-base32-0.1.2-alpha.0" = "sha256-wtPWGOamy3+ViEzCxMSwBcoR4HMMD0t8eyLwXfCDFdo="; 39 + }; 40 + }; 41 + cargoBuildFlags = lib.concatMapStrings (c: "-p ${c} ") crates; 42 + 43 + ATTIC_DISTRIBUTOR = "attic"; 44 + 45 + # Attic interacts with Nix directly and its tests require trusted-user access 46 + # to nix-daemon to import NARs, which is not possible in the build sandbox. 47 + doCheck = false; 48 + 49 + postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' 50 + if [[ -f $out/bin/attic ]]; then 51 + installShellCompletion --cmd attic \ 52 + --bash <($out/bin/attic gen-completions bash) \ 53 + --zsh <($out/bin/attic gen-completions zsh) \ 54 + --fish <($out/bin/attic gen-completions fish) 55 + fi 56 + ''; 57 + 58 + meta = with lib; { 59 + description = "Multi-tenant Nix Binary Cache"; 60 + homepage = "https://github.com/zhaofengli/attic"; 61 + license = licenses.asl20; 62 + maintainers = with maintainers; [ zhaofengli aciceri ]; 63 + platforms = platforms.linux ++ platforms.darwin; 64 + mainProgram = "attic"; 65 + }; 66 + }
+7
pkgs/by-name/at/attic-server/package.nix
··· 1 + { attic-client 2 + }: 3 + (attic-client.override { 4 + crates = [ "attic-server" ]; 5 + }).overrideAttrs { 6 + meta.mainProgram = "atticd"; 7 + }
+58
pkgs/by-name/do/docker-credential-gcr/package.nix
··· 1 + { 2 + buildGoModule, 3 + docker-credential-gcr, 4 + fetchFromGitHub, 5 + lib, 6 + nix-update-script, 7 + testers, 8 + }: 9 + 10 + buildGoModule rec { 11 + pname = "docker-credential-gcr"; 12 + version = "2.1.22"; 13 + 14 + src = fetchFromGitHub { 15 + owner = "GoogleCloudPlatform"; 16 + repo = "docker-credential-gcr"; 17 + rev = "refs/tags/v${version}"; 18 + sha256 = "sha256-vGX6Jhh91dUqZ+y+h1SlPiFE3dL0UO3iJyyzvQVoUsQ="; 19 + }; 20 + 21 + postPatch = '' 22 + rm -rf ./test 23 + ''; 24 + 25 + vendorHash = "sha256-VsJ5OI8D1u9qZqtirYf682+z0wLJr/vAxRLHAEGwKSY="; 26 + 27 + CGO_ENABLED = 0; 28 + 29 + ldflags = [ 30 + "-s" 31 + "-w" 32 + "-X github.com/GoogleCloudPlatform/docker-credential-gcr/v2/config.Version=${version}" 33 + ]; 34 + 35 + passthru = { 36 + tests.version = testers.testVersion { 37 + package = docker-credential-gcr; 38 + command = "docker-credential-gcr version"; 39 + }; 40 + updateScript = nix-update-script { }; 41 + }; 42 + 43 + __darwinAllowLocalNetworking = true; 44 + 45 + meta = with lib; { 46 + description = "A Docker credential helper for GCR (https://gcr.io) users"; 47 + longDescription = '' 48 + docker-credential-gcr is Google Container Registry's Docker credential 49 + helper. It allows for Docker clients v1.11+ to easily make 50 + authenticated requests to GCR's repositories (gcr.io, eu.gcr.io, etc.). 51 + ''; 52 + homepage = "https://github.com/GoogleCloudPlatform/docker-credential-gcr"; 53 + changelog = "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/tag/v${version}"; 54 + license = licenses.asl20; 55 + maintainers = with maintainers; [ suvash anthonyroussel ]; 56 + mainProgram = "docker-credential-gcr"; 57 + }; 58 + }
+27
pkgs/by-name/ha/hacompanion/package.nix
··· 1 + { lib, 2 + fetchFromGitHub, 3 + buildGoModule 4 + }: 5 + 6 + buildGoModule rec { 7 + pname = "hacompanion"; 8 + version = "1.0.11"; 9 + 10 + src = fetchFromGitHub { 11 + owner = "tobias-kuendig"; 12 + repo = "hacompanion"; 13 + rev = "v${version}"; 14 + hash = "sha256-gTsA5XBjLlm/cITwQwYNudPK9SbSEaiAIjjdvRS3+8Q="; 15 + }; 16 + 17 + vendorHash = "sha256-ZZ8nxN+zUeFhSXyoHLMgzeFllnIkKdoVnbVK5KjrLEQ="; 18 + 19 + meta = { 20 + changelog = "https://github.com/tobias-kuendig/hacompanion/releases/tag/v${version}"; 21 + description = "Daemon that sends local hardware information to Home Assistant"; 22 + homepage = "https://github.com/tobias-kuendig/hacompanion"; 23 + license = lib.licenses.mit; 24 + platforms = lib.platforms.linux; 25 + maintainers = with lib.maintainers; [ ramblurr ]; 26 + }; 27 + }
+95
pkgs/by-name/je/jextract/package.nix
··· 1 + { lib 2 + , stdenv 3 + , fetchFromGitHub 4 + , emptyDirectory 5 + , writeText 6 + , makeBinaryWrapper 7 + , gradle 8 + , jdk22 9 + , llvmPackages 10 + }: 11 + 12 + let 13 + gradleInit = writeText "init.gradle" '' 14 + logger.lifecycle 'Replacing Maven repositories with empty directory...' 15 + gradle.projectsLoaded { 16 + rootProject.allprojects { 17 + buildscript { 18 + repositories { 19 + clear() 20 + maven { url '${emptyDirectory}' } 21 + } 22 + } 23 + repositories { 24 + clear() 25 + maven { url '${emptyDirectory}' } 26 + } 27 + } 28 + } 29 + settingsEvaluated { settings -> 30 + settings.pluginManagement { 31 + repositories { 32 + maven { url '${emptyDirectory}' } 33 + } 34 + } 35 + } 36 + ''; 37 + in 38 + 39 + stdenv.mkDerivation { 40 + pname = "jextract"; 41 + version = "unstable-2024-03-13"; 42 + 43 + src = fetchFromGitHub { 44 + owner = "openjdk"; 45 + repo = "jextract"; 46 + rev = "b9ec8879cff052b463237fdd76382b3a5cd8ff2b"; 47 + hash = "sha256-+4AM8pzXPIO/CS3+Rd/jJf2xDvAo7K7FRyNE8rXvk5U="; 48 + }; 49 + 50 + nativeBuildInputs = [ 51 + gradle 52 + makeBinaryWrapper 53 + ]; 54 + 55 + env = { 56 + ORG_GRADLE_PROJECT_llvm_home = llvmPackages.libclang.lib; 57 + ORG_GRADLE_PROJECT_jdk22_home = jdk22; 58 + }; 59 + 60 + buildPhase = '' 61 + runHook preBuild 62 + 63 + export GRADLE_USER_HOME=$(mktemp -d) 64 + gradle --console plain --init-script "${gradleInit}" assemble 65 + 66 + runHook postBuild 67 + ''; 68 + 69 + doCheck = true; 70 + 71 + checkPhase = '' 72 + runHook preCheck 73 + gradle --console plain --init-script "${gradleInit}" verify 74 + runHook postCheck 75 + ''; 76 + 77 + installPhase = '' 78 + runHook preInstall 79 + 80 + mkdir -p $out/opt/ 81 + cp -r ./build/jextract $out/opt/jextract 82 + makeBinaryWrapper "$out/opt/jextract/bin/jextract" "$out/bin/jextract" 83 + 84 + runHook postInstall 85 + ''; 86 + 87 + meta = with lib; { 88 + description = "A tool which mechanically generates Java bindings from a native library headers"; 89 + mainProgram = "jextract"; 90 + homepage = "https://github.com/openjdk/jextract"; 91 + platforms = jdk22.meta.platforms; 92 + license = licenses.gpl2Only; 93 + maintainers = with maintainers; [ jlesquembre sharzy ]; 94 + }; 95 + }
+3 -3
pkgs/by-name/ob/obs-cmd/package.nix
··· 5 5 6 6 rustPlatform.buildRustPackage rec { 7 7 pname = "obs-cmd"; 8 - version = "0.17.4"; 8 + version = "0.17.5"; 9 9 10 10 src = fetchFromGitHub { 11 11 owner = "grigio"; 12 12 repo = "obs-cmd"; 13 13 rev = "v${version}"; 14 - hash = "sha256-HCvIMIQZKzIkpYL9F9oM4xiE/gOeI+7dMj9QmhetHm4="; 14 + hash = "sha256-AphpIehFHZwcZ7vO5FV6PBZSO3y6oLhH/kQhJjr34VY="; 15 15 }; 16 16 17 - cargoHash = "sha256-AQRjZH3WhZXU6NhDSCv4/HWz5un1nFtuzWPYSJA9XaE="; 17 + cargoHash = "sha256-s/nWJ/8JnZwmROFSd2y6btopk2Cxp0zkMdy7mxVxr6k="; 18 18 19 19 meta = with lib; { 20 20 description = "Minimal CLI to control OBS Studio via obs-websocket";
+94
pkgs/by-name/te/tetrio-desktop/package.nix
··· 1 + { stdenv 2 + , lib 3 + , fetchurl 4 + , dpkg 5 + , autoPatchelfHook 6 + , wrapGAppsHook 7 + , alsa-lib 8 + , cups 9 + , libGL 10 + , libX11 11 + , libXScrnSaver 12 + , libXtst 13 + , mesa 14 + , nss 15 + , gtk3 16 + , libpulseaudio 17 + , systemd 18 + , withTetrioPlus ? false # For backwards compatibility. At the time of writing, the latest released tetrio plus version is not compatible with tetrio desktop. 19 + , tetrio-plus ? false # For backwards compatibility. At the time of writing, the latest released tetrio plus version is not compatible with tetrio desktop. 20 + }: 21 + 22 + lib.warnIf (withTetrioPlus != false) "withTetrioPlus: Currently unsupported with tetrio-desktop 9.0.0. Please remove this attribute." 23 + lib.warnIf (tetrio-plus != false) "tetrio-plus: Currently unsupported with tetrio-desktop 9.0.0. Please remove this attribute." 24 + 25 + (let 26 + libPath = lib.makeLibraryPath [ 27 + libGL 28 + libpulseaudio 29 + systemd 30 + ]; 31 + in 32 + stdenv.mkDerivation (finalAttrs: { 33 + pname = "tetrio-desktop"; 34 + version = "9.0.0"; 35 + 36 + src = fetchurl { 37 + url = "https://tetr.io/about/desktop/builds/${lib.versions.major finalAttrs.version}/TETR.IO%20Setup.deb"; 38 + hash = "sha256-UriLwMB8D+/T32H4rPbkJAy/F/FFhNpd++0AR1lwEfs="; 39 + }; 40 + 41 + nativeBuildInputs = [ 42 + dpkg 43 + autoPatchelfHook 44 + wrapGAppsHook 45 + ]; 46 + 47 + dontWrapGApps = true; 48 + 49 + buildInputs = [ 50 + alsa-lib 51 + cups 52 + libX11 53 + libXScrnSaver 54 + libXtst 55 + mesa 56 + nss 57 + gtk3 58 + ]; 59 + 60 + unpackCmd = "dpkg -x $curSrc src"; 61 + 62 + installPhase = '' 63 + runHook preInstall 64 + 65 + mkdir -p $out/bin 66 + cp -r opt/ usr/share/ $out 67 + ln -s $out/opt/TETR.IO/TETR.IO $out/bin/tetrio 68 + 69 + substituteInPlace $out/share/applications/TETR.IO.desktop \ 70 + --replace-fail "Exec=/opt/TETR.IO/TETR.IO" "Exec=$out/bin/tetrio" 71 + 72 + runHook postInstall 73 + ''; 74 + 75 + postFixup = '' 76 + wrapProgram $out/opt/TETR.IO/TETR.IO \ 77 + --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/TETR.IO \ 78 + ''${gappsWrapperArgs[@]} 79 + ''; 80 + 81 + meta = { 82 + description = "TETR.IO desktop client"; 83 + downloadPage = "https://tetr.io/about/desktop/"; 84 + homepage = "https://tetr.io"; 85 + license = lib.licenses.unfree; 86 + longDescription = '' 87 + TETR.IO is a modern yet familiar online stacker. 88 + Play against friends and foes all over the world, or claim a spot on the leaderboards - the stacker future is yours! 89 + ''; 90 + mainProgram = "tetrio"; 91 + maintainers = with lib.maintainers; [ wackbyte ]; 92 + platforms = [ "x86_64-linux" ]; 93 + }; 94 + }))
+3 -3
pkgs/by-name/ty/typos-lsp/package.nix
··· 4 4 }: 5 5 rustPlatform.buildRustPackage rec { 6 6 pname = "typos-lsp"; 7 - version = "0.1.15"; 7 + version = "0.1.16"; 8 8 9 9 src = fetchFromGitHub { 10 10 owner = "tekumara"; 11 11 repo = "typos-lsp"; 12 12 rev = "refs/tags/v${version}"; 13 - hash = "sha256-8mCK/NKik1zf6hqJN4pflDbtFALckHR/8AQborbOoHs="; 13 + hash = "sha256-wXwdAPaj2dY6R6rUl/3WGeUwV+/waQdHv1dmzTqFNow="; 14 14 }; 15 15 16 - cargoHash = "sha256-aL7arYAiTpz9jy7Kh8u7OJmPMjayX4JiKoa7u8K0UiE="; 16 + cargoHash = "sha256-qXQPxMlBwLb2NVae+vKZPzufNrQeuz0cAdMflpsjDf4="; 17 17 18 18 # fix for compilation on aarch64 19 19 # see https://github.com/NixOS/nixpkgs/issues/145726
+6 -12
pkgs/development/compilers/graalvm/community-edition/buildGraalvm.nix
··· 107 107 ++ lib.optional stdenv.isLinux autoPatchelfHook; 108 108 109 109 propagatedBuildInputs = [ setJavaClassPath zlib ] 110 - ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Foundation; 110 + ++ lib.optional stdenv.isDarwin darwin.apple_sdk_11_0.frameworks.Foundation; 111 111 112 112 buildInputs = lib.optionals stdenv.isLinux [ 113 113 alsa-lib # libasound.so wanted by lib/libjsound.so ··· 165 165 echo "Testing GraalVM" 166 166 $out/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler HelloWorld | fgrep 'Hello World' 167 167 168 - # Workaround GraalVM issue where the builder does not have access to the 169 - # environment variables since 21.0.0 170 - # Only needed for native-image tests 171 - # https://github.com/oracle/graal/pull/6095 172 - # https://github.com/oracle/graal/pull/6095 173 - # https://github.com/oracle/graal/issues/7502 174 - export NATIVE_IMAGE_DEPRECATED_BUILDER_SANITATION="true"; 168 + extraNativeImageArgs="$(export -p | sed -n 's/^declare -x \([^=]\+\)=.*$/ -E\1/p' | tr -d \\n)" 175 169 176 170 echo "Ahead-Of-Time compilation" 177 - $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces HelloWorld 171 + $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:-CheckToolchain -H:+ReportExceptionStackTraces -march=compatibility $extraNativeImageArgs HelloWorld 178 172 ./helloworld | fgrep 'Hello World' 179 173 180 174 ${# --static is only available in Linux 181 175 lib.optionalString (stdenv.isLinux && !useMusl) '' 182 176 echo "Ahead-Of-Time compilation with -H:+StaticExecutableWithDynamicLibC" 183 - $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:+StaticExecutableWithDynamicLibC HelloWorld 177 + $out/bin/native-image -H:+UnlockExperimentalVMOptions -H:+StaticExecutableWithDynamicLibC -march=compatibility $extraNativeImageArgs HelloWorld 184 178 ./helloworld | fgrep 'Hello World' 185 179 186 180 echo "Ahead-Of-Time compilation with --static" 187 - $out/bin/native-image --static HelloWorld 181 + $out/bin/native-image $extraNativeImageArgs -march=compatibility --static HelloWorld 188 182 ./helloworld | fgrep 'Hello World' 189 183 ''} 190 184 191 185 ${# --static is only available in Linux 192 186 lib.optionalString (stdenv.isLinux && useMusl) '' 193 187 echo "Ahead-Of-Time compilation with --static and --libc=musl" 194 - $out/bin/native-image --static HelloWorld --libc=musl 188 + $out/bin/native-image $extraNativeImageArgs -march=compatibility --libc=musl --static HelloWorld 195 189 ./helloworld | fgrep 'Hello World' 196 190 ''} 197 191
+17 -12
pkgs/development/compilers/graalvm/community-edition/default.nix
··· 1 1 { lib 2 - , stdenv 3 - , callPackage 4 - , fetchurl 2 + , pkgs 5 3 }: 6 4 5 + lib.makeScope pkgs.newScope (self: 7 6 { 8 - buildGraalvm = callPackage ./buildGraalvm.nix; 7 + stdenv = 8 + if pkgs.stdenv.isDarwin then 9 + pkgs.darwin.apple_sdk_11_0.stdenv 10 + else 11 + pkgs.stdenv; 12 + 13 + buildGraalvm = self.callPackage ./buildGraalvm.nix; 9 14 10 - buildGraalvmProduct = callPackage ./buildGraalvmProduct.nix; 15 + buildGraalvmProduct = self.callPackage ./buildGraalvmProduct.nix; 11 16 12 - graalvm-ce = callPackage ./graalvm-ce { }; 17 + graalvm-ce = self.callPackage ./graalvm-ce { }; 13 18 14 - graalvm-ce-musl = callPackage ./graalvm-ce { useMusl = true; }; 19 + graalvm-ce-musl = self.callPackage ./graalvm-ce { useMusl = true; }; 15 20 16 - graaljs = callPackage ./graaljs { }; 21 + graaljs = self.callPackage ./graaljs { }; 17 22 18 - graalnodejs = callPackage ./graalnodejs { }; 23 + graalnodejs = self.callPackage ./graalnodejs { }; 19 24 20 - graalpy = callPackage ./graalpy { }; 25 + graalpy = self.callPackage ./graalpy { }; 21 26 22 - truffleruby = callPackage ./truffleruby { }; 23 - } 27 + truffleruby = self.callPackage ./truffleruby { }; 28 + })
+1 -1
pkgs/development/gnuradio-modules/osmosdr/default.nix
··· 33 33 "3.10" = "0.2.4"; 34 34 }.${gnuradio.versionAttr.major}; 35 35 src = fetchgit { 36 - url = "git://git.osmocom.org/gr-osmosdr"; 36 + url = "https://gitea.osmocom.org/sdr/gr-osmosdr"; 37 37 rev = "v${version}"; 38 38 sha256 = { 39 39 "3.7" = "0bf9bnc1c3c4yqqqgmg3nhygj6rcfmyk6pybi27f7461d2cw1drv";
-1
pkgs/development/libraries/fflas-ffpack/default.nix
··· 50 50 doCheck = true; 51 51 52 52 meta = with lib; { 53 - broken = stdenv.isDarwin; 54 53 description = "Finite Field Linear Algebra Subroutines"; 55 54 mainProgram = "fflas-ffpack-config"; 56 55 license = licenses.lgpl21Plus;
+8
pkgs/development/libraries/flint/3.nix
··· 1 1 { lib 2 2 , stdenv 3 + , fetchpatch 3 4 , fetchurl 4 5 , gmp 5 6 , mpfr ··· 23 24 url = "https://www.flintlib.org/flint-${version}.tar.gz"; 24 25 sha256 = "sha256-ezEaAFA6hjiB64F32+uEMi8pOZ89fXLzsaTJuh1XlLQ="; 25 26 }; 27 + 28 + patches = [ 29 + (fetchpatch { 30 + url = "https://github.com/flintlib/flint/commit/e7d005c369754243cba32bd782ea2a5fc874fde5.diff"; 31 + hash = "sha256-IqEtYEpNVXfoTeerh/0ig+eDqUpAlGdBB3uO8ShYh3o="; 32 + }) 33 + ]; 26 34 27 35 nativeBuildInputs = [ 28 36 autoconf
+8
pkgs/development/libraries/fplll/default.nix
··· 1 1 { lib, stdenv 2 2 , fetchFromGitHub 3 + , fetchpatch 3 4 , pkg-config 4 5 , gettext 5 6 , autoreconfHook ··· 17 18 rev = version; 18 19 sha256 = "sha256-taSS7jpVyjVfNe6kSuUDXMD2PgKmtG64V5MjZyQzorI="; 19 20 }; 21 + 22 + patches = [ 23 + (fetchpatch { 24 + url = "https://github.com/fplll/fplll/commit/317cf70893eebfb2625da12e5377189908c36240.diff"; 25 + sha256 = "sha256-GbYSolBgv/he4QzjuRFdg93wHJABVHvA9x3PjpJTSRE="; 26 + }) 27 + ]; 20 28 21 29 nativeBuildInputs = [ 22 30 pkg-config
+5
pkgs/development/libraries/givaro/default.nix
··· 25 25 url = "https://github.com/linbox-team/givaro/commit/c7744bb133496cd7ac04688f345646d505e1bf52.patch"; 26 26 hash = "sha256-aAA5o8Va10v0Pqgcpx7qM0TAZiNQgXoR6N9xecj7tDA="; 27 27 }) 28 + (fetchpatch { 29 + name = "clang-16.patch"; 30 + url = "https://github.com/linbox-team/givaro/commit/a81d44b3b57c275bcb04ab00db79be02561deaa2.patch"; 31 + hash = "sha256-sSk+VWffoEjZRTJcHRISLHPyW6yuvI1u8knBOfxNUIE="; 32 + }) 28 33 ]; 29 34 30 35 enableParallelBuilding = true;
+8
pkgs/development/libraries/linbox/default.nix
··· 1 1 { lib, stdenv 2 2 , fetchFromGitHub 3 + , fetchpatch 3 4 , autoreconfHook 4 5 , givaro 5 6 , pkg-config ··· 22 23 rev = "v${version}"; 23 24 sha256 = "sha256-mW84a98KPLqcHMjX3LIYTmVe0ngUdz6RJLpoDaAqKU8="; 24 25 }; 26 + 27 + patches = [ 28 + (fetchpatch { 29 + url = "https://github.com/linbox-team/linbox/commit/4be26e9ef0eaf36a9909e5008940e8bf7dc625b6.patch"; 30 + sha256 = "PX0Tik7blXOV2vHUq92xMxaADkNoNGiax4qrjQyGK6U="; 31 + }) 32 + ]; 25 33 26 34 nativeBuildInputs = [ 27 35 autoreconfHook
+16 -34
pkgs/development/libraries/openvino/default.nix
··· 1 1 { lib 2 2 , gcc12Stdenv 3 3 , fetchFromGitHub 4 - , fetchpatch2 5 4 , fetchurl 6 5 , cudaSupport ? opencv.cudaSupport or false 7 6 ··· 11 10 , cmake 12 11 , git 13 12 , libarchive 13 + , patchelf 14 14 , pkg-config 15 - , python 15 + , python3Packages 16 16 , shellcheck 17 - , sphinx 18 17 19 18 # runtime 20 19 , flatbuffers ··· 36 35 37 36 stdenv = gcc12Stdenv; 38 37 39 - # See GNA_VERSION in cmake/dependencies.cmake 40 - gna_version = "03.05.00.2116"; 41 - gna = fetchurl { 42 - url = "https://storage.openvinotoolkit.org/dependencies/gna/gna_${gna_version}.zip"; 43 - hash = "sha256-lgNQVncCvaFydqxMBg11JPt8587XhQBL2GHIH/K/4sU="; 44 - }; 45 - 46 38 tbbbind_version = "2_5"; 47 39 tbbbind = fetchurl { 48 40 url = "https://storage.openvinotoolkit.org/dependencies/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v4.tgz"; 49 41 hash = "sha256-Tr8wJGUweV8Gb7lhbmcHxrF756ZdKdNRi1eKdp3VTuo="; 50 42 }; 43 + 44 + python = python3Packages.python.withPackages (ps: with ps; [ 45 + cython 46 + pybind11 47 + setuptools 48 + sphinx 49 + wheel 50 + ]); 51 + 51 52 in 52 53 53 54 stdenv.mkDerivation rec { 54 55 pname = "openvino"; 55 - version = "2023.3.0"; 56 + version = "2024.0.0"; 56 57 57 58 src = fetchFromGitHub { 58 59 owner = "openvinotoolkit"; 59 60 repo = "openvino"; 60 61 rev = "refs/tags/${version}"; 61 62 fetchSubmodules = true; 62 - hash = "sha256-dXlQhar5gz+1iLmDYXUY0jZKh4rJ+khRpoZQphJXfcU="; 63 + hash = "sha256-Xsrmc1EynkjgPgiQ+ESyVJRJT9Afqyob0/uH+Is4TYA="; 63 64 }; 64 65 65 - patches = [ 66 - (fetchpatch2 { 67 - name = "enable-js-toggle.patch"; 68 - url = "https://github.com/openvinotoolkit/openvino/commit/0a8f1383826d949c497fe3d05fef9ad2b662fa7e.patch"; 69 - hash = "sha256-mQYunouPo3tRlD5Yp4EUth324ccNnVX8zmjPHvJBYKw="; 70 - }) 71 - ]; 72 - 73 66 outputs = [ 74 67 "out" 75 68 "python" ··· 81 74 cmake 82 75 git 83 76 libarchive 77 + patchelf 84 78 pkg-config 85 - (python.withPackages (ps: with ps; [ 86 - cython 87 - pybind11 88 - setuptools 89 - ])) 79 + python 90 80 shellcheck 91 - sphinx 92 81 ] ++ lib.optionals cudaSupport [ 93 82 cudaPackages.cuda_nvcc 94 83 ]; 95 84 96 85 postPatch = '' 97 - mkdir -p temp/gna_${gna_version} 98 - pushd temp/ 99 - bsdtar -xf ${gna} 100 - autoPatchelf gna_${gna_version} 101 - echo "${gna.url}" > gna_${gna_version}/ie_dependency.info 102 - popd 103 - 104 86 mkdir -p temp/tbbbind_${tbbbind_version} 105 87 pushd temp/tbbbind_${tbbbind_version} 106 88 bsdtar -xf ${tbbbind} ··· 116 98 "-DCMAKE_PREFIX_PATH:PATH=${placeholder "out"}" 117 99 "-DOpenCV_DIR=${opencv}/lib/cmake/opencv4/" 118 100 "-DProtobuf_LIBRARIES=${protobuf}/lib/libprotobuf${stdenv.hostPlatform.extensions.sharedLibrary}" 101 + "-DPython_EXECUTABLE=${python.interpreter}" 119 102 120 103 (cmakeBool "CMAKE_VERBOSE_MAKEFILE" true) 121 104 (cmakeBool "NCC_SYLE" false) ··· 126 109 127 110 # features 128 111 (cmakeBool "ENABLE_INTEL_CPU" true) 129 - (cmakeBool "ENABLE_INTEL_GNA" true) 130 112 (cmakeBool "ENABLE_JS" false) 131 113 (cmakeBool "ENABLE_LTO" true) 132 114 (cmakeBool "ENABLE_ONEDNN_FOR_GPU" false)
+1 -1
pkgs/development/libraries/qt-6/fetch.sh
··· 1 - WGET_ARGS=( https://download.qt.io/official_releases/qt/6.6/6.6.2/submodules/ -A '*.tar.xz' ) 1 + WGET_ARGS=( https://download.qt.io/official_releases/qt/6.6/6.6.3/submodules/ -A '*.tar.xz' )
+1 -4
pkgs/development/libraries/qt-6/modules/qtbase.nix
··· 211 211 212 212 inherit patches; 213 213 214 - # https://bugreports.qt.io/browse/QTBUG-97568 215 - postPatch = '' 216 - substituteInPlace src/corelib/CMakeLists.txt --replace-fail "/bin/ls" "${buildPackages.coreutils}/bin/ls" 217 - '' + lib.optionalString stdenv.hostPlatform.isDarwin '' 214 + postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' 218 215 substituteInPlace cmake/QtPublicAppleHelpers.cmake --replace-fail "/usr/bin/xcrun" "${xcbuild}/bin/xcrun" 219 216 ''; 220 217
+157 -157
pkgs/development/libraries/qt-6/srcs.nix
··· 1 1 # DO NOT EDIT! This file is generated automatically. 2 - # Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/qt-6/fetch.sh 2 + # Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/qt-6/ 3 3 { fetchurl, mirror }: 4 4 5 5 { 6 6 qt3d = { 7 - version = "6.6.2"; 7 + version = "6.6.3"; 8 8 src = fetchurl { 9 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qt3d-everywhere-src-6.6.2.tar.xz"; 10 - sha256 = "10l5ldw8g8m1ig3hh78pwg749xqf2gw9vsi8p67gbkanmipfqx4i"; 11 - name = "qt3d-everywhere-src-6.6.2.tar.xz"; 9 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qt3d-everywhere-src-6.6.3.tar.xz"; 10 + sha256 = "0v6zprw9r4z4inj7mg364n959c6japklm7ji2952nm3i01zp8jd5"; 11 + name = "qt3d-everywhere-src-6.6.3.tar.xz"; 12 12 }; 13 13 }; 14 14 qt5compat = { 15 - version = "6.6.2"; 15 + version = "6.6.3"; 16 16 src = fetchurl { 17 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qt5compat-everywhere-src-6.6.2.tar.xz"; 18 - sha256 = "0rqr34lqf4mjdgjj09wzlvkxfknz8arjl9p30xpqbr2qfsmhhyz0"; 19 - name = "qt5compat-everywhere-src-6.6.2.tar.xz"; 17 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qt5compat-everywhere-src-6.6.3.tar.xz"; 18 + sha256 = "02zcrrh6rq5p6bqix5nk2h22rfqdrf4d0h7y4rva5zmbbr7czhk8"; 19 + name = "qt5compat-everywhere-src-6.6.3.tar.xz"; 20 20 }; 21 21 }; 22 22 qtactiveqt = { 23 - version = "6.6.2"; 23 + version = "6.6.3"; 24 24 src = fetchurl { 25 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtactiveqt-everywhere-src-6.6.2.tar.xz"; 26 - sha256 = "16vqb33s0dwxq1rrha81606fdwq1dz7az6mybgx18n7f081h3yl7"; 27 - name = "qtactiveqt-everywhere-src-6.6.2.tar.xz"; 25 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtactiveqt-everywhere-src-6.6.3.tar.xz"; 26 + sha256 = "0balhrmzmjrqn6h2r3rr00776vxhdpqzwhk9knrlvix8i1kr86x1"; 27 + name = "qtactiveqt-everywhere-src-6.6.3.tar.xz"; 28 28 }; 29 29 }; 30 30 qtbase = { 31 - version = "6.6.2"; 31 + version = "6.6.3"; 32 32 src = fetchurl { 33 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtbase-everywhere-src-6.6.2.tar.xz"; 34 - sha256 = "0yv78bwqzy975854h53rbiilsms62f3v02i3jqz7v8ajk1ml56xq"; 35 - name = "qtbase-everywhere-src-6.6.2.tar.xz"; 33 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtbase-everywhere-src-6.6.3.tar.xz"; 34 + sha256 = "0qklvzg242ilxw29jd2vsz6s8ni4dpraf4ghfa4dykhc705zv4q4"; 35 + name = "qtbase-everywhere-src-6.6.3.tar.xz"; 36 36 }; 37 37 }; 38 38 qtcharts = { 39 - version = "6.6.2"; 39 + version = "6.6.3"; 40 40 src = fetchurl { 41 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtcharts-everywhere-src-6.6.2.tar.xz"; 42 - sha256 = "1x7m87lxbza4ynf6dq7yshann6003302a5fxih5l5d07xri64j5i"; 43 - name = "qtcharts-everywhere-src-6.6.2.tar.xz"; 41 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtcharts-everywhere-src-6.6.3.tar.xz"; 42 + sha256 = "1rbz2nm8wrdf060cssvs69b5kqv0ybxjqw1clm5mdllg2j38i5jh"; 43 + name = "qtcharts-everywhere-src-6.6.3.tar.xz"; 44 44 }; 45 45 }; 46 46 qtconnectivity = { 47 - version = "6.6.2"; 47 + version = "6.6.3"; 48 48 src = fetchurl { 49 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtconnectivity-everywhere-src-6.6.2.tar.xz"; 50 - sha256 = "1dzsvs0hngrz6b66r9zb4al5a4r6xxfd29i8g3jqmvw3b0452vx3"; 51 - name = "qtconnectivity-everywhere-src-6.6.2.tar.xz"; 49 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtconnectivity-everywhere-src-6.6.3.tar.xz"; 50 + sha256 = "066mf4d6a81ywviwr8bvm1mpm2ykjzysvcc0v2x82h5bl28vl6h9"; 51 + name = "qtconnectivity-everywhere-src-6.6.3.tar.xz"; 52 52 }; 53 53 }; 54 54 qtdatavis3d = { 55 - version = "6.6.2"; 55 + version = "6.6.3"; 56 56 src = fetchurl { 57 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtdatavis3d-everywhere-src-6.6.2.tar.xz"; 58 - sha256 = "0iqw5afx8y29kjprn1hlz0zr0qwc9j0m7my75qf1av800hlnnjii"; 59 - name = "qtdatavis3d-everywhere-src-6.6.2.tar.xz"; 57 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdatavis3d-everywhere-src-6.6.3.tar.xz"; 58 + sha256 = "1gyz83hkmjin3fr3brg00qchbb0awprwx99idysrc6chckj825wv"; 59 + name = "qtdatavis3d-everywhere-src-6.6.3.tar.xz"; 60 60 }; 61 61 }; 62 62 qtdeclarative = { 63 - version = "6.6.2"; 63 + version = "6.6.3"; 64 64 src = fetchurl { 65 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtdeclarative-everywhere-src-6.6.2.tar.xz"; 66 - sha256 = "0k6qndjvkkx3g8lr7f64xx86b3cwxzkgpl6fr6cp73s6qjkyk763"; 67 - name = "qtdeclarative-everywhere-src-6.6.2.tar.xz"; 65 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdeclarative-everywhere-src-6.6.3.tar.xz"; 66 + sha256 = "1wwjlwjb3hnlpai4rrrdsm096a6ahb1izs3524r79jpjzhn7n805"; 67 + name = "qtdeclarative-everywhere-src-6.6.3.tar.xz"; 68 68 }; 69 69 }; 70 70 qtdoc = { 71 - version = "6.6.2"; 71 + version = "6.6.3"; 72 72 src = fetchurl { 73 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtdoc-everywhere-src-6.6.2.tar.xz"; 74 - sha256 = "0hvv40y2h7xa7wj2cqz2rrsvy1xf2l95199vmgx4q27wgmn1xixg"; 75 - name = "qtdoc-everywhere-src-6.6.2.tar.xz"; 73 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdoc-everywhere-src-6.6.3.tar.xz"; 74 + sha256 = "1j7awdbg7c0slbyhld8cdbx4dic7hhqv3g1qka809bjcxa2hb188"; 75 + name = "qtdoc-everywhere-src-6.6.3.tar.xz"; 76 76 }; 77 77 }; 78 78 qtgraphs = { 79 - version = "6.6.2"; 79 + version = "6.6.3"; 80 80 src = fetchurl { 81 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtgraphs-everywhere-src-6.6.2.tar.xz"; 82 - sha256 = "19j9hdpxrclsdwqqblp4bk94zd2a5rvxnf548hm7r03npznjvb26"; 83 - name = "qtgraphs-everywhere-src-6.6.2.tar.xz"; 81 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtgraphs-everywhere-src-6.6.3.tar.xz"; 82 + sha256 = "1ppdas6bl22z69w8wdy7xl0f1kyqja2gwjd4cn6kjmsslws5rhi2"; 83 + name = "qtgraphs-everywhere-src-6.6.3.tar.xz"; 84 84 }; 85 85 }; 86 86 qtgrpc = { 87 - version = "6.6.2"; 87 + version = "6.6.3"; 88 88 src = fetchurl { 89 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtgrpc-everywhere-src-6.6.2.tar.xz"; 90 - sha256 = "1flfm8j5vw2j6xzms1b470mbqyab1nrnj4z9s4mgwnbsp4m5p85w"; 91 - name = "qtgrpc-everywhere-src-6.6.2.tar.xz"; 89 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtgrpc-everywhere-src-6.6.3.tar.xz"; 90 + sha256 = "11q9cqqk8bs3k6n5pxys2r4fisbs3xvv8d8lsi7wm25rqh5qv1kj"; 91 + name = "qtgrpc-everywhere-src-6.6.3.tar.xz"; 92 92 }; 93 93 }; 94 94 qthttpserver = { 95 - version = "6.6.2"; 95 + version = "6.6.3"; 96 96 src = fetchurl { 97 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qthttpserver-everywhere-src-6.6.2.tar.xz"; 98 - sha256 = "1qzw96y20qr1kc9wmys61wm568jsknvlgvh09bbqjcmm6dm3lhd2"; 99 - name = "qthttpserver-everywhere-src-6.6.2.tar.xz"; 97 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qthttpserver-everywhere-src-6.6.3.tar.xz"; 98 + sha256 = "0dbqx36ywfmqi4nxfi4dl17scj9nkl8sbpb670ffy3nh8pbpib21"; 99 + name = "qthttpserver-everywhere-src-6.6.3.tar.xz"; 100 100 }; 101 101 }; 102 102 qtimageformats = { 103 - version = "6.6.2"; 103 + version = "6.6.3"; 104 104 src = fetchurl { 105 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtimageformats-everywhere-src-6.6.2.tar.xz"; 106 - sha256 = "1cvwm0hnspglydms6qhcp5g0ayz5pamigl52kz8km66l6s8lqn3i"; 107 - name = "qtimageformats-everywhere-src-6.6.2.tar.xz"; 105 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtimageformats-everywhere-src-6.6.3.tar.xz"; 106 + sha256 = "0z328i6fix1qdklfbs1w4dsr64zavjj5kzqvzipww0v62xhfm99w"; 107 + name = "qtimageformats-everywhere-src-6.6.3.tar.xz"; 108 108 }; 109 109 }; 110 110 qtlanguageserver = { 111 - version = "6.6.2"; 111 + version = "6.6.3"; 112 112 src = fetchurl { 113 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtlanguageserver-everywhere-src-6.6.2.tar.xz"; 114 - sha256 = "1bgazi44mwac20biybhp21icgwa8k7jd295j8jsfgzxbw12lq7y3"; 115 - name = "qtlanguageserver-everywhere-src-6.6.2.tar.xz"; 113 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlanguageserver-everywhere-src-6.6.3.tar.xz"; 114 + sha256 = "136gyvkzm6skdv5yhyy4nqhbczfc2mn4nbr9hvpkpljb0awv888h"; 115 + name = "qtlanguageserver-everywhere-src-6.6.3.tar.xz"; 116 116 }; 117 117 }; 118 118 qtlocation = { 119 - version = "6.6.2"; 119 + version = "6.6.3"; 120 120 src = fetchurl { 121 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtlocation-everywhere-src-6.6.2.tar.xz"; 122 - sha256 = "05glwmasg0rlhybzpb640iibcs6gyrqbs7h1ws4b5vgcmzzdq9cy"; 123 - name = "qtlocation-everywhere-src-6.6.2.tar.xz"; 121 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlocation-everywhere-src-6.6.3.tar.xz"; 122 + sha256 = "1l81z3zq1zg015l6qxx4yzssdspw689m9bpzxp23yshaych2kd6p"; 123 + name = "qtlocation-everywhere-src-6.6.3.tar.xz"; 124 124 }; 125 125 }; 126 126 qtlottie = { 127 - version = "6.6.2"; 127 + version = "6.6.3"; 128 128 src = fetchurl { 129 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtlottie-everywhere-src-6.6.2.tar.xz"; 130 - sha256 = "1hqhp55jfasavk7p8xb0srbc6lnk70w2q0x4iwn28z5s5kd1cvi7"; 131 - name = "qtlottie-everywhere-src-6.6.2.tar.xz"; 129 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlottie-everywhere-src-6.6.3.tar.xz"; 130 + sha256 = "1d0fjb0080wnd71f50zwal1b504iimln9mpnb3sc5yznmv8gm4cq"; 131 + name = "qtlottie-everywhere-src-6.6.3.tar.xz"; 132 132 }; 133 133 }; 134 134 qtmultimedia = { 135 - version = "6.6.2"; 135 + version = "6.6.3"; 136 136 src = fetchurl { 137 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtmultimedia-everywhere-src-6.6.2.tar.xz"; 138 - sha256 = "1v0430jnv97ws6cizn9mi8zr9hcg7rixd0jg7smhdq8apacjb572"; 139 - name = "qtmultimedia-everywhere-src-6.6.2.tar.xz"; 137 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtmultimedia-everywhere-src-6.6.3.tar.xz"; 138 + sha256 = "1ciswpv8p71j9hwwdhfr5pmsrnizlaijp0dnyc99lk5is8qgh05y"; 139 + name = "qtmultimedia-everywhere-src-6.6.3.tar.xz"; 140 140 }; 141 141 }; 142 142 qtnetworkauth = { 143 - version = "6.6.2"; 143 + version = "6.6.3"; 144 144 src = fetchurl { 145 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtnetworkauth-everywhere-src-6.6.2.tar.xz"; 146 - sha256 = "1lijsdwbj8gscfllmp358n5ysa8pvhx2msh7gpxvb4x81daxbg9j"; 147 - name = "qtnetworkauth-everywhere-src-6.6.2.tar.xz"; 145 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtnetworkauth-everywhere-src-6.6.3.tar.xz"; 146 + sha256 = "153mpg4hv3nclcdrkbzkalg4xf5k6r64fj003b725zyp885s7fax"; 147 + name = "qtnetworkauth-everywhere-src-6.6.3.tar.xz"; 148 148 }; 149 149 }; 150 150 qtpositioning = { 151 - version = "6.6.2"; 151 + version = "6.6.3"; 152 152 src = fetchurl { 153 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtpositioning-everywhere-src-6.6.2.tar.xz"; 154 - sha256 = "1qn31vps9dj4g8m7d195qlsyj3p4dfqqszdc6yqq097dq5y5d9sd"; 155 - name = "qtpositioning-everywhere-src-6.6.2.tar.xz"; 153 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtpositioning-everywhere-src-6.6.3.tar.xz"; 154 + sha256 = "1frzzndsscb6iqschklks2l17ppnjpnx1lq1cypnq3x0598bcdws"; 155 + name = "qtpositioning-everywhere-src-6.6.3.tar.xz"; 156 156 }; 157 157 }; 158 158 qtquick3d = { 159 - version = "6.6.2"; 159 + version = "6.6.3"; 160 160 src = fetchurl { 161 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtquick3d-everywhere-src-6.6.2.tar.xz"; 162 - sha256 = "0f1sp7d1jzdzaxqs2l2yjprp0axcqbg2w82dza7wl4paan4rzp7w"; 163 - name = "qtquick3d-everywhere-src-6.6.2.tar.xz"; 161 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquick3d-everywhere-src-6.6.3.tar.xz"; 162 + sha256 = "1qls5cydhm7p1g3gqzvnism8k0h6wjzi8x12gn51dapvnzq2cxlr"; 163 + name = "qtquick3d-everywhere-src-6.6.3.tar.xz"; 164 164 }; 165 165 }; 166 166 qtquick3dphysics = { 167 - version = "6.6.2"; 167 + version = "6.6.3"; 168 168 src = fetchurl { 169 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtquick3dphysics-everywhere-src-6.6.2.tar.xz"; 170 - sha256 = "10209x9hbr5bc4vlhhcvvfsmsn2h3dyb4rlg0f0gpllx68mr58ac"; 171 - name = "qtquick3dphysics-everywhere-src-6.6.2.tar.xz"; 169 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquick3dphysics-everywhere-src-6.6.3.tar.xz"; 170 + sha256 = "0ipma4qdmzyyajs5inp7d3znh2hfx42gia7x9ahqpb515r49pqb7"; 171 + name = "qtquick3dphysics-everywhere-src-6.6.3.tar.xz"; 172 172 }; 173 173 }; 174 174 qtquickeffectmaker = { 175 - version = "6.6.2"; 175 + version = "6.6.3"; 176 176 src = fetchurl { 177 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtquickeffectmaker-everywhere-src-6.6.2.tar.xz"; 178 - sha256 = "0lywm71wp943dk3w8zkklyxfk97w48v670zs6pc4pj4ja0ns37q7"; 179 - name = "qtquickeffectmaker-everywhere-src-6.6.2.tar.xz"; 177 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquickeffectmaker-everywhere-src-6.6.3.tar.xz"; 178 + sha256 = "0mr350c9kj74g48lavq5z5c604cdgcyycfdpwv5z8bmbr49jl95w"; 179 + name = "qtquickeffectmaker-everywhere-src-6.6.3.tar.xz"; 180 180 }; 181 181 }; 182 182 qtquicktimeline = { 183 - version = "6.6.2"; 183 + version = "6.6.3"; 184 184 src = fetchurl { 185 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtquicktimeline-everywhere-src-6.6.2.tar.xz"; 186 - sha256 = "06cr9p0hrq77ckqslxh0h3lpyw31fblyap1plcyyj8ssr1rm4klc"; 187 - name = "qtquicktimeline-everywhere-src-6.6.2.tar.xz"; 185 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquicktimeline-everywhere-src-6.6.3.tar.xz"; 186 + sha256 = "0b266w7al90fbbp16w506klba50d4izf6nfcmmp5fpr6h5pxvcyk"; 187 + name = "qtquicktimeline-everywhere-src-6.6.3.tar.xz"; 188 188 }; 189 189 }; 190 190 qtremoteobjects = { 191 - version = "6.6.2"; 191 + version = "6.6.3"; 192 192 src = fetchurl { 193 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtremoteobjects-everywhere-src-6.6.2.tar.xz"; 194 - sha256 = "0fbkjzykxpkz8myr6dy588gcmhyy3lar17v78zfam8kyxq7s5qxa"; 195 - name = "qtremoteobjects-everywhere-src-6.6.2.tar.xz"; 193 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtremoteobjects-everywhere-src-6.6.3.tar.xz"; 194 + sha256 = "16bd4zd3yfzlzk087qphphsh8hv38q3a57n1yknvkc5fchzmfzjz"; 195 + name = "qtremoteobjects-everywhere-src-6.6.3.tar.xz"; 196 196 }; 197 197 }; 198 198 qtscxml = { 199 - version = "6.6.2"; 199 + version = "6.6.3"; 200 200 src = fetchurl { 201 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtscxml-everywhere-src-6.6.2.tar.xz"; 202 - sha256 = "0gm4805570ds3jmkbwrjigbg93zc561bd5rc52r71042zzq84j89"; 203 - name = "qtscxml-everywhere-src-6.6.2.tar.xz"; 201 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtscxml-everywhere-src-6.6.3.tar.xz"; 202 + sha256 = "1dbcw4qnss5rif97gdcimyzl3jqa508yph611dvvhc1xn16nl6qg"; 203 + name = "qtscxml-everywhere-src-6.6.3.tar.xz"; 204 204 }; 205 205 }; 206 206 qtsensors = { 207 - version = "6.6.2"; 207 + version = "6.6.3"; 208 208 src = fetchurl { 209 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtsensors-everywhere-src-6.6.2.tar.xz"; 210 - sha256 = "0a3w50bfnmxndyxnn9lsy1wxffhm2am0yjxqx3vx0gfjwv79yvsa"; 211 - name = "qtsensors-everywhere-src-6.6.2.tar.xz"; 209 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtsensors-everywhere-src-6.6.3.tar.xz"; 210 + sha256 = "0r9p3lm159pji29vq9kii42jkz4rg15hqh6zlq9442i58a0ayddj"; 211 + name = "qtsensors-everywhere-src-6.6.3.tar.xz"; 212 212 }; 213 213 }; 214 214 qtserialbus = { 215 - version = "6.6.2"; 215 + version = "6.6.3"; 216 216 src = fetchurl { 217 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtserialbus-everywhere-src-6.6.2.tar.xz"; 218 - sha256 = "0g7sx81lrb5r2ipinnghq4iss6clkwbzjb0ck4ay6hmpw54smzww"; 219 - name = "qtserialbus-everywhere-src-6.6.2.tar.xz"; 217 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtserialbus-everywhere-src-6.6.3.tar.xz"; 218 + sha256 = "1yyh1bh5pjlilcq84fgfw6wd0jak55wndwf0sn92lbhsp3y5lghl"; 219 + name = "qtserialbus-everywhere-src-6.6.3.tar.xz"; 220 220 }; 221 221 }; 222 222 qtserialport = { 223 - version = "6.6.2"; 223 + version = "6.6.3"; 224 224 src = fetchurl { 225 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtserialport-everywhere-src-6.6.2.tar.xz"; 226 - sha256 = "16j5fprmdzzc1snnj5184ihq5avg1s0jrqqcjk70dvmimsf0q7ms"; 227 - name = "qtserialport-everywhere-src-6.6.2.tar.xz"; 225 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtserialport-everywhere-src-6.6.3.tar.xz"; 226 + sha256 = "0dywalgafvxi2jgdv9dk22hwwd8qsgk5xfybh75n3njmwmwnarg1"; 227 + name = "qtserialport-everywhere-src-6.6.3.tar.xz"; 228 228 }; 229 229 }; 230 230 qtshadertools = { 231 - version = "6.6.2"; 231 + version = "6.6.3"; 232 232 src = fetchurl { 233 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtshadertools-everywhere-src-6.6.2.tar.xz"; 234 - sha256 = "0bxrczs9nw6az2p4n8x0f660vsmxxynx4iqgj75l4zsfzzbym2v2"; 235 - name = "qtshadertools-everywhere-src-6.6.2.tar.xz"; 233 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtshadertools-everywhere-src-6.6.3.tar.xz"; 234 + sha256 = "1rm17hyhq244zskq3ar3h22qjd5dshy84nnyq1ivhg5k7gb0j2cc"; 235 + name = "qtshadertools-everywhere-src-6.6.3.tar.xz"; 236 236 }; 237 237 }; 238 238 qtspeech = { 239 - version = "6.6.2"; 239 + version = "6.6.3"; 240 240 src = fetchurl { 241 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtspeech-everywhere-src-6.6.2.tar.xz"; 242 - sha256 = "1qvf3p2p1pc5fw40d8zq0iawaaqkc0dp5yx85b1dnw1j809bn8y0"; 243 - name = "qtspeech-everywhere-src-6.6.2.tar.xz"; 241 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtspeech-everywhere-src-6.6.3.tar.xz"; 242 + sha256 = "1yh3r5zbhgwkjgs7yk6iv2w23766n1i4z8vjkkw5awdixx3gfa76"; 243 + name = "qtspeech-everywhere-src-6.6.3.tar.xz"; 244 244 }; 245 245 }; 246 246 qtsvg = { 247 - version = "6.6.2"; 247 + version = "6.6.3"; 248 248 src = fetchurl { 249 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtsvg-everywhere-src-6.6.2.tar.xz"; 250 - sha256 = "10c1dmbv5d39n1q4m67gf2h4n6wfkzrlyk8plnxbyhhvxxcis8ss"; 251 - name = "qtsvg-everywhere-src-6.6.2.tar.xz"; 249 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtsvg-everywhere-src-6.6.3.tar.xz"; 250 + sha256 = "1ir57bis27whq7bwqykk1qlxy0522k4ia39brxayjmfadrbixjsa"; 251 + name = "qtsvg-everywhere-src-6.6.3.tar.xz"; 252 252 }; 253 253 }; 254 254 qttools = { 255 - version = "6.6.2"; 255 + version = "6.6.3"; 256 256 src = fetchurl { 257 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qttools-everywhere-src-6.6.2.tar.xz"; 258 - sha256 = "0ij7djy06xi4v5v29fh31gqq5rnc12vviv3qg3vqf4hiaagrxm76"; 259 - name = "qttools-everywhere-src-6.6.2.tar.xz"; 257 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qttools-everywhere-src-6.6.3.tar.xz"; 258 + sha256 = "1h0vz46mpvzbm5w6sgpk0b3mqkn278l45arhxxk41dwc5n14qvda"; 259 + name = "qttools-everywhere-src-6.6.3.tar.xz"; 260 260 }; 261 261 }; 262 262 qttranslations = { 263 - version = "6.6.2"; 263 + version = "6.6.3"; 264 264 src = fetchurl { 265 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qttranslations-everywhere-src-6.6.2.tar.xz"; 266 - sha256 = "0xqcad8aa9lp6wzh1rs46id6r60zdw82qj3bq9k2b89sxy8c0fna"; 267 - name = "qttranslations-everywhere-src-6.6.2.tar.xz"; 265 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qttranslations-everywhere-src-6.6.3.tar.xz"; 266 + sha256 = "1kvkrwbgby4i69dpxbxxcv0qbsz69n6icpyr4wcf8qm2r4m5zqqj"; 267 + name = "qttranslations-everywhere-src-6.6.3.tar.xz"; 268 268 }; 269 269 }; 270 270 qtvirtualkeyboard = { 271 - version = "6.6.2"; 271 + version = "6.6.3"; 272 272 src = fetchurl { 273 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtvirtualkeyboard-everywhere-src-6.6.2.tar.xz"; 274 - sha256 = "07nqds49g2x748jsk17cnd2ph81165xnzn70jwxd0gpbi3dzshk1"; 275 - name = "qtvirtualkeyboard-everywhere-src-6.6.2.tar.xz"; 273 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtvirtualkeyboard-everywhere-src-6.6.3.tar.xz"; 274 + sha256 = "0d517x60birlf8xb3sphchvgm235f8q1868q98kg76plzfhq57wq"; 275 + name = "qtvirtualkeyboard-everywhere-src-6.6.3.tar.xz"; 276 276 }; 277 277 }; 278 278 qtwayland = { 279 - version = "6.6.2"; 279 + version = "6.6.3"; 280 280 src = fetchurl { 281 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtwayland-everywhere-src-6.6.2.tar.xz"; 282 - sha256 = "0y6x84ckcc53ddclnrlzs08b1kvw6saw9nim0hz4wc5fyz7dbkcv"; 283 - name = "qtwayland-everywhere-src-6.6.2.tar.xz"; 281 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwayland-everywhere-src-6.6.3.tar.xz"; 282 + sha256 = "0gamcqpl302wlznfnlcg9vlnnhfpxgjnz05prwc9wpy0xh7wqvm9"; 283 + name = "qtwayland-everywhere-src-6.6.3.tar.xz"; 284 284 }; 285 285 }; 286 286 qtwebchannel = { 287 - version = "6.6.2"; 287 + version = "6.6.3"; 288 288 src = fetchurl { 289 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtwebchannel-everywhere-src-6.6.2.tar.xz"; 290 - sha256 = "1incvisc3j758b4k82vnwci8j1bba8zf6xgmgcrsm553k4wpsz1x"; 291 - name = "qtwebchannel-everywhere-src-6.6.2.tar.xz"; 289 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebchannel-everywhere-src-6.6.3.tar.xz"; 290 + sha256 = "0cwcf4pri901piyj0lvqmks9l84di9rcafnfgrmgg5mls7jjlyvw"; 291 + name = "qtwebchannel-everywhere-src-6.6.3.tar.xz"; 292 292 }; 293 293 }; 294 294 qtwebengine = { 295 - version = "6.6.2"; 295 + version = "6.6.3"; 296 296 src = fetchurl { 297 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtwebengine-everywhere-src-6.6.2.tar.xz"; 298 - sha256 = "15h3hniszfkxv2vnn3fnbgbar8wb41ypgn4b4iz4iy6csar8f7fn"; 299 - name = "qtwebengine-everywhere-src-6.6.2.tar.xz"; 297 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebengine-everywhere-src-6.6.3.tar.xz"; 298 + sha256 = "016qvbmdja2abajvsznnjdvblrmzgvs8s2dzlxws30hvna1xqavw"; 299 + name = "qtwebengine-everywhere-src-6.6.3.tar.xz"; 300 300 }; 301 301 }; 302 302 qtwebsockets = { 303 - version = "6.6.2"; 303 + version = "6.6.3"; 304 304 src = fetchurl { 305 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtwebsockets-everywhere-src-6.6.2.tar.xz"; 306 - sha256 = "1y9q8jmspxbfxf07jdcg4n8zwmchccyzp0z68fxr0hnvr2dymrn0"; 307 - name = "qtwebsockets-everywhere-src-6.6.2.tar.xz"; 305 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebsockets-everywhere-src-6.6.3.tar.xz"; 306 + sha256 = "0dm066lv3n97ril9iyd5xn8j13m6r7xp844aagj6dpclaxv83x0n"; 307 + name = "qtwebsockets-everywhere-src-6.6.3.tar.xz"; 308 308 }; 309 309 }; 310 310 qtwebview = { 311 - version = "6.6.2"; 311 + version = "6.6.3"; 312 312 src = fetchurl { 313 - url = "${mirror}/official_releases/qt/6.6/6.6.2/submodules/qtwebview-everywhere-src-6.6.2.tar.xz"; 314 - sha256 = "0z3p1g26yg3dr3hhavwd5wz9b8yi838xj4s57068wykd80v145wb"; 315 - name = "qtwebview-everywhere-src-6.6.2.tar.xz"; 313 + url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebview-everywhere-src-6.6.3.tar.xz"; 314 + sha256 = "00jcxzi9wcbviscn5y0h0mkbac88lpjammg3zvfvjih7avgn6r10"; 315 + name = "qtwebview-everywhere-src-6.6.3.tar.xz"; 316 316 }; 317 317 }; 318 318 }
-40
pkgs/development/libraries/science/math/flintqs/default.nix
··· 1 - { lib, stdenv 2 - , fetchFromGitHub 3 - , autoreconfHook 4 - , gmp 5 - }: 6 - 7 - stdenv.mkDerivation rec { 8 - version = "1.0"; 9 - pname = "flintqs"; 10 - 11 - src = fetchFromGitHub { 12 - owner = "sagemath"; 13 - repo = "FlintQS"; 14 - rev = "v${version}"; 15 - sha256 = "1f0lnayz6j6qgasx8pbq61d2fqam0wwhsmh6h15l4vq58l1vvbwj"; 16 - }; 17 - 18 - preAutoreconf = '' 19 - touch ChangeLog 20 - ''; 21 - 22 - buildInputs = [ 23 - gmp 24 - ]; 25 - 26 - nativeBuildInputs = [ 27 - autoreconfHook 28 - ]; 29 - 30 - doCheck = true; 31 - 32 - meta = with lib; { 33 - description = "Highly optimized multi-polynomial quadratic sieve for integer factorization"; 34 - homepage = "https://github.com/sagemath/FlintQS"; 35 - license = with licenses; [ gpl2 ]; 36 - maintainers = teams.sage.members; 37 - mainProgram = "QuadraticSieve"; 38 - platforms = platforms.all; 39 - }; 40 - }
+3 -2
pkgs/development/libraries/science/math/m4rie/default.nix
··· 21 21 m4ri 22 22 ]; 23 23 24 + # does not compile correctly with -O2 on LLVM clang; see 25 + # https://bitbucket.org/malb/m4rie/issues/23/trying-to-compile-on-apple-m1 26 + makeFlags = [] ++ lib.optionals stdenv.isDarwin [ "CFLAGS=-O0" ]; 24 27 nativeBuildInputs = [ 25 28 autoreconfHook 26 29 ]; ··· 35 38 license = licenses.gpl2Plus; 36 39 maintainers = teams.sage.members; 37 40 platforms = platforms.unix; 38 - # never built on aarch64-darwin since first introduction in nixpkgs 39 - broken = stdenv.isDarwin && stdenv.isAarch64; 40 41 }; 41 42 }
+39 -8
pkgs/development/libraries/science/math/rubiks/default.nix
··· 2 2 , fetchurl 3 3 , fetchpatch 4 4 , coreutils 5 + , dos2unix 5 6 }: 6 7 7 8 stdenv.mkDerivation rec { ··· 24 25 "PREFIX=$(out)" 25 26 ]; 26 27 28 + nativeBuildInputs = [ dos2unix ]; 29 + 30 + prePatch = '' 31 + find ./dietz/ -type f -exec dos2unix {} \; 32 + ''; 33 + 27 34 patches = [ 28 35 # Fix makefiles which use all the variables in all the wrong ways and 29 36 # hardcode values for some variables. 30 37 (fetchpatch { 31 - url = "https://raw.githubusercontent.com/sagemath/sage/07d6c37d18811e2b377a9689790a7c5e24da16ba/build/pkgs/rubiks/patches/dietz-cu2-Makefile.patch"; 32 - sha256 = "1ry3w1mk9q4jqd91zlaa1bdiiplld4hpfjaldbhlmzlgrrc99qmq"; 38 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-cu2-Makefile.patch"; 39 + sha256 = "bRU7MJ/6BgCp2PUqZOragJhm38Q3E8ShStXQIYwIjvw="; 40 + }) 41 + (fetchpatch { 42 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-mcube-Makefile.patch"; 43 + sha256 = "f53z4DogXKax1vUNkraOTt3TQ4bvT7CdQK/hOaaBS38="; 44 + }) 45 + (fetchpatch { 46 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/dietz-solver-Makefile.patch"; 47 + sha256 = "7gMC8y9elyIy2KvXYcp7YjPBNqn9PVhUle+/GrYAAdE="; 48 + }) 49 + (fetchpatch { 50 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/reid-Makefile.patch"; 51 + sha256 = "rp3SYtx02vVBtSlg1vJpdIoXNcdBNKDLCLqLAKwOYeQ="; 52 + }) 53 + (fetchpatch { 54 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-1-rubiks-includes.patch"; 55 + sha256 = "QYJ1KQ73HTEGY/beMVbcU215g/B8rHDjYD1YM2WZ7sk="; 33 56 }) 34 57 (fetchpatch { 35 - url = "https://raw.githubusercontent.com/sagemath/sage/07d6c37d18811e2b377a9689790a7c5e24da16ba/build/pkgs/rubiks/patches/dietz-mcube-Makefile.patch"; 36 - sha256 = "0zsbh6k3kqdg82fv0kzghr1x7pafisv943gmssqscp107bhg77bz"; 58 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-2-rubiks-ansi-c.patch"; 59 + sha256 = "Rnu7uphE9URxnbg2K8mkymnB61magweH+WxVWR9JC4s="; 60 + }) 61 + (fetchpatch { 62 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-3-rubiks-prototypes.patch"; 63 + sha256 = "Wi038g+y7No1TNMiITtAdipjRi0+g6h0Sspslm5rZGU="; 64 + }) 65 + (fetchpatch { 66 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-4-rubiks-longtype.patch"; 67 + sha256 = "6pNuxFM69CZ/TQGZfHXLlCN5g5lf3RiYYZKzMvLJwkw="; 37 68 }) 38 69 (fetchpatch { 39 - url = "https://raw.githubusercontent.com/sagemath/sage/07d6c37d18811e2b377a9689790a7c5e24da16ba/build/pkgs/rubiks/patches/dietz-solver-Makefile.patch"; 40 - sha256 = "0vhw70ylnmydgjhwx8jjlb2slccj4pfqn6vzirkyz1wp8apsmfhp"; 70 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-5-rubiks-signed.patch"; 71 + sha256 = "CCGXBMYvSjTm4YKQZAQMi6pWGjyHDYYQzdMZDSW2vFE="; 41 72 }) 42 73 (fetchpatch { 43 - url = "https://raw.githubusercontent.com/sagemath/sage/07d6c37d18811e2b377a9689790a7c5e24da16ba/build/pkgs/rubiks/patches/reid-Makefile.patch"; 44 - sha256 = "1r311sn012xs135s0d21qwsig2kld7rdcq19nm0zbnklviid57df"; 74 + url = "https://raw.githubusercontent.com/sagemath/sage/2a9a4267f93588cf33119cbacc032ed9acc433e5/build/pkgs/rubiks/patches/fedora-6-rubiks-attributes.patch"; 75 + sha256 = "RhlzMb33iaLfeBoF7Y0LIgEzOB/EC+AoWMSkRPCICaU="; 45 76 }) 46 77 ]; 47 78
+1
pkgs/development/libraries/tachyon/default.nix
··· 37 37 # see https://github.com/NixOS/nixpkgs/pull/117465 38 38 if stdenv.hostPlatform.system == "aarch64-linux" then "linux-arm" else 39 39 if stdenv.hostPlatform.system == "armv7l-linux" then "linux-arm" else 40 + if stdenv.hostPlatform.system == "aarch64-darwin" then "macosx" else 40 41 if stdenv.hostPlatform.system == "x86_64-darwin" then "macosx-thr" else 41 42 if stdenv.hostPlatform.system == "i686-darwin" then "macosx-64-thr" else 42 43 if stdenv.hostPlatform.system == "i686-cygwin" then "win32" else
+3 -3
pkgs/development/python-modules/es-client/default.nix
··· 20 20 21 21 buildPythonPackage rec { 22 22 pname = "es-client"; 23 - version = "8.12.5"; 23 + version = "8.12.8"; 24 24 pyproject = true; 25 25 26 - disabled = pythonOlder "3.7"; 26 + disabled = pythonOlder "3.8"; 27 27 28 28 src = fetchFromGitHub { 29 29 owner = "untergeek"; 30 30 repo = "es_client"; 31 31 rev = "refs/tags/v${version}"; 32 - hash = "sha256-gaeNIxHnNulUOGhYHf9dIgBSh2rJIdsYdpPT8OTyEdg="; 32 + hash = "sha256-qv06zb3hIK/TeOZwtMXrV+n8mYSA/UKiyHvRyKEvZkQ="; 33 33 }; 34 34 35 35 pythonRelaxDeps = true;
+4
pkgs/development/python-modules/fpylll/default.nix
··· 36 36 url = "https://github.com/fplll/fpylll/commit/fc432b21fa7e4b9891f5b761b3539989eb958f2b.diff"; 37 37 hash = "sha256-+UidQ5xnlmjeVeVvR4J2zDzAuXP5LUPXCh4RP4o9oGA="; 38 38 }) 39 + (fetchpatch { 40 + url = "https://github.com/fplll/fpylll/commit/cece9c9b182dc3ac2c9121549cb427ccf4c4a9fe.diff"; 41 + hash = "sha256-epJb8gorQ7gEEylZ2yZFdM9+EZ4ys9mUUUPiJ2D0VOM="; 42 + }) 39 43 ]; 40 44 41 45 nativeBuildInputs = [
-1
pkgs/development/python-modules/openvino/default.nix
··· 26 26 ''; 27 27 28 28 pythonImportsCheck = [ 29 - "ngraph" 30 29 "openvino" 31 30 "openvino.runtime" 32 31 ];
+4 -4
pkgs/development/python-modules/reptor/default.nix
··· 32 32 33 33 buildPythonPackage rec { 34 34 pname = "reptor"; 35 - version = "0.13"; 35 + version = "0.14"; 36 36 pyproject = true; 37 37 38 38 disabled = pythonOlder "3.8"; ··· 41 41 owner = "Syslifters"; 42 42 repo = "reptor"; 43 43 rev = "refs/tags/${version}"; 44 - hash = "sha256-7jFS3GCaPeGBBxB++XTtIYh+m0uXTm5NHuLeIen0KYc="; 44 + hash = "sha256-XZiFVIUyLVVr3ZraOAuXs+shl4vk3S8OJHNHV4p10YY="; 45 45 }; 46 46 47 47 pythonRelaxDeps = true; 48 48 49 - nativeBuildInputs = [ 49 + build-system = [ 50 50 pythonRelaxDepsHook 51 51 setuptools 52 52 ]; 53 53 54 - propagatedBuildInputs = [ 54 + dependencies = [ 55 55 asgiref 56 56 certifi 57 57 charset-normalizer
+3 -3
pkgs/development/python-modules/rpyc4/default.nix
··· 14 14 pname = "rpyc4"; 15 15 # Pinned version for linien, see also: 16 16 # https://github.com/linien-org/pyrp3/pull/10#discussion_r1302816237 17 - version = "6.0.0"; 17 + version = "4.1.5"; 18 18 format = "pyproject"; 19 19 20 20 # Since this is an outdated version, upstream might have fixed the ··· 24 24 src = fetchFromGitHub { 25 25 owner = "tomerfiliba"; 26 26 repo = "rpyc"; 27 - rev = "refs/tags/${version}"; 28 - hash = "sha256-BvXEXZlVbOmKBwnSBCDksUkbT7JPcMX48KZe/Gd5Y8Q="; 27 + rev = version; 28 + hash = "sha256-8NOcXZDR3w0TNj1+LZ7lzQAt7yDgspjOp2zk1bsbVls="; 29 29 }; 30 30 31 31 nativeBuildInputs = [
+4 -6
pkgs/development/tools/java/jextract/default.nix pkgs/by-name/je/jextract-21/package.nix
··· 3 3 , fetchFromGitHub 4 4 , emptyDirectory 5 5 , writeText 6 - , makeWrapper 6 + , makeBinaryWrapper 7 7 , gradle 8 8 , jdk21 9 9 , llvmPackages ··· 49 49 50 50 nativeBuildInputs = [ 51 51 gradle 52 - makeWrapper 52 + makeBinaryWrapper 53 53 ]; 54 54 55 55 env = { ··· 79 79 80 80 mkdir -p $out/opt/ 81 81 cp -r ./build/jextract $out/opt/jextract 82 + makeBinaryWrapper "$out/opt/jextract/bin/jextract" "$out/bin/jextract" 82 83 83 84 runHook postInstall 84 - ''; 85 - 86 - postFixup = '' 87 - makeWrapper "$out/opt/jextract/bin/jextract" "$out/bin/jextract" 88 85 ''; 89 86 90 87 meta = with lib; { 91 88 description = "A tool which mechanically generates Java bindings from a native library headers"; 92 89 mainProgram = "jextract"; 93 90 homepage = "https://github.com/openjdk/jextract"; 91 + platforms = jdk21.meta.platforms; 94 92 license = licenses.gpl2Only; 95 93 maintainers = with maintainers; [ sharzy ]; 96 94 };
+3 -3
pkgs/development/tools/ruff/default.nix
··· 10 10 11 11 rustPlatform.buildRustPackage rec { 12 12 pname = "ruff"; 13 - version = "0.3.2"; 13 + version = "0.3.4"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "astral-sh"; 17 17 repo = "ruff"; 18 18 rev = "refs/tags/v${version}"; 19 - hash = "sha256-2Pt2HuDB9JLD9E1q0JH7jyVoc0II5uVL1l8pAod+9V4="; 19 + hash = "sha256-P0k/0tWbhY2HaxI4QThxpHD48JUjtF/d3iU4MIFhdHI="; 20 20 }; 21 21 22 - cargoHash = "sha256-njHpqWXFNdwenV58+VGznnqbaNK1GoGtHSTfKU2MRbs="; 22 + cargoHash = "sha256-LckX8/c3Yg9i/0C2d0XSxxNJSpaVxmj2s8tkEUDhbmA="; 23 23 24 24 nativeBuildInputs = [ 25 25 installShellFiles
-97
pkgs/games/tetrio-desktop/default.nix
··· 1 - { stdenv 2 - , lib 3 - , fetchurl 4 - , dpkg 5 - , autoPatchelfHook 6 - , wrapGAppsHook 7 - , alsa-lib 8 - , cups 9 - , libGL 10 - , libX11 11 - , libXScrnSaver 12 - , libXtst 13 - , mesa 14 - , nss 15 - , gtk3 16 - , libpulseaudio 17 - , systemd 18 - , callPackage 19 - , withTetrioPlus ? false 20 - , tetrio-plus ? callPackage ./tetrio-plus.nix { } 21 - }: 22 - 23 - stdenv.mkDerivation rec { 24 - pname = "tetrio-desktop"; 25 - version = "8.0.0"; 26 - 27 - src = fetchurl { 28 - url = "https://web.archive.org/web/20211228025517if_/https://tetr.io/about/desktop/builds/TETR.IO%20Setup.deb"; 29 - name = "tetrio-desktop.deb"; 30 - sha256 = "1nlblfhrph4cw8rpic9icrs78mzrxyskl7ggyy2i8bk9i07i21xf"; 31 - }; 32 - 33 - nativeBuildInputs = [ 34 - dpkg 35 - autoPatchelfHook 36 - wrapGAppsHook 37 - ]; 38 - 39 - dontWrapGApps = true; 40 - 41 - buildInputs = [ 42 - alsa-lib 43 - cups 44 - libX11 45 - libXScrnSaver 46 - libXtst 47 - mesa 48 - nss 49 - gtk3 50 - ]; 51 - 52 - libPath = lib.makeLibraryPath [ 53 - libGL 54 - libpulseaudio 55 - systemd 56 - ]; 57 - 58 - unpackCmd = "dpkg -x $curSrc src"; 59 - 60 - installPhase = '' 61 - runHook preInstall 62 - 63 - mkdir $out 64 - cp -r opt/ usr/share/ $out 65 - 66 - mkdir $out/bin 67 - ln -s $out/opt/TETR.IO/tetrio-desktop $out/bin/ 68 - 69 - substituteInPlace $out/share/applications/tetrio-desktop.desktop \ 70 - --replace "Exec=\"/opt/TETR.IO/tetrio-desktop\"" "Exec=\"$out/opt/TETR.IO/tetrio-desktop\"" 71 - 72 - runHook postInstall 73 - ''; 74 - 75 - postInstall = lib.strings.optionalString withTetrioPlus '' 76 - cp ${tetrio-plus} $out/opt/TETR.IO/resources/app.asar 77 - ''; 78 - 79 - postFixup = '' 80 - wrapProgram $out/opt/TETR.IO/tetrio-desktop \ 81 - --prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/TETR.IO \ 82 - ''${gappsWrapperArgs[@]} 83 - ''; 84 - 85 - meta = with lib; { 86 - homepage = "https://tetr.io"; 87 - downloadPage = "https://tetr.io/about/desktop/"; 88 - description = "TETR.IO desktop client"; 89 - longDescription = '' 90 - TETR.IO is a modern yet familiar online stacker. 91 - Play against friends and foes all over the world, or claim a spot on the leaderboards - the stacker future is yours! 92 - ''; 93 - platforms = [ "x86_64-linux" ]; 94 - license = licenses.unfree; 95 - maintainers = with maintainers; [ wackbyte ]; 96 - }; 97 - }
-27
pkgs/games/tetrio-desktop/tetrio-plus.nix
··· 1 - { lib, stdenv, fetchzip }: 2 - 3 - stdenv.mkDerivation rec { 4 - pname = "tetrio-plus"; 5 - version = "0.25.3"; 6 - 7 - src = fetchzip { 8 - url = "https://gitlab.com/UniQMG/tetrio-plus/uploads/684477053451cd0819e2c84e145966eb/tetrio-plus_0.25.3_app.asar.zip"; 9 - sha256 = "sha256-GQgt4GZNeKx/uzmVsuKppW2zg8AAiGqsk2JYJIkqfVE="; 10 - }; 11 - 12 - installPhase = '' 13 - runHook preInstall 14 - 15 - install app.asar $out 16 - 17 - runHook postInstall 18 - ''; 19 - 20 - meta = with lib; { 21 - description = "TETR.IO customization toolkit"; 22 - homepage = "https://gitlab.com/UniQMG/tetrio-plus"; 23 - license = licenses.mit; 24 - maintainers = with maintainers; [ huantian ]; 25 - platforms = [ "x86_64-linux" ]; 26 - }; 27 - }
+2 -2
pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh
··· 6 6 addToSearchPath XDG_DATA_DIRS "$1/share" 7 7 addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg" 8 8 } 9 - addEnvHooks "$targetOffset" ecmEnvHook 9 + addEnvHooks "$hostOffset" ecmEnvHook 10 10 11 11 ecmPostHook() { 12 12 # Because we need to use absolute paths here, we must set *all* the paths. ··· 125 125 propagatedUserEnvPkgs+=" $1" 126 126 fi 127 127 } 128 - addEnvHooks "$targetOffset" ecmHostPathHook 128 + addEnvHooks "$hostOffset" ecmHostPathHook
+193 -193
pkgs/kde/generated/sources/plasma.json
··· 1 1 { 2 2 "bluedevil": { 3 - "version": "6.0.2", 4 - "url": "mirror://kde/stable/plasma/6.0.2/bluedevil-6.0.2.tar.xz", 5 - "hash": "sha256-gV4OEQ7zlQPsBaRr11+9IlVSuehQUKm0Py2KeAPh22A=" 3 + "version": "6.0.3", 4 + "url": "mirror://kde/stable/plasma/6.0.3/bluedevil-6.0.3.tar.xz", 5 + "hash": "sha256-0mO+VIJaQYnUVrAafOC9tCdaG1VeN4KxCop30r6TyyQ=" 6 6 }, 7 7 "breeze": { 8 - "version": "6.0.2", 9 - "url": "mirror://kde/stable/plasma/6.0.2/breeze-6.0.2.tar.xz", 10 - "hash": "sha256-TGf1pZqaN8lnVFUselB20p6nhkrFD6l2Zxl2TtlPtMw=" 8 + "version": "6.0.3", 9 + "url": "mirror://kde/stable/plasma/6.0.3/breeze-6.0.3.tar.xz", 10 + "hash": "sha256-WXxGCXBArnmktHCGxcyhIb8rRHm80JkwJunM0mC0sfk=" 11 11 }, 12 12 "breeze-grub": { 13 - "version": "6.0.2", 14 - "url": "mirror://kde/stable/plasma/6.0.2/breeze-grub-6.0.2.tar.xz", 15 - "hash": "sha256-XBZ8FyaLvD42Ua8SpV+bs4UIphig+IHmMpzRcOCNlEY=" 13 + "version": "6.0.3", 14 + "url": "mirror://kde/stable/plasma/6.0.3/breeze-grub-6.0.3.tar.xz", 15 + "hash": "sha256-e7i9FT8J0Cj1kHWU/A6AhSlLS1GHAKxCUlQrrKCasRU=" 16 16 }, 17 17 "breeze-gtk": { 18 - "version": "6.0.2", 19 - "url": "mirror://kde/stable/plasma/6.0.2/breeze-gtk-6.0.2.tar.xz", 20 - "hash": "sha256-phKZCTfgwMbOOGwg8zv3tqWcMhtrb50qcFFj/96ufdo=" 18 + "version": "6.0.3", 19 + "url": "mirror://kde/stable/plasma/6.0.3/breeze-gtk-6.0.3.tar.xz", 20 + "hash": "sha256-t8Ew3GsnQ6rTkI1UsLryp7f+cX1SZfdgUEHrN9QQ6jY=" 21 21 }, 22 22 "breeze-plymouth": { 23 - "version": "6.0.2", 24 - "url": "mirror://kde/stable/plasma/6.0.2/breeze-plymouth-6.0.2.tar.xz", 25 - "hash": "sha256-SEVtmnGdxrM6tidOxMVveOQvEnLCWeAGTmpc5qLodOk=" 23 + "version": "6.0.3", 24 + "url": "mirror://kde/stable/plasma/6.0.3/breeze-plymouth-6.0.3.tar.xz", 25 + "hash": "sha256-AffQVamnYbDKl9fUTbzXMokQPB0K/XUuI330BYBzz0A=" 26 26 }, 27 27 "discover": { 28 - "version": "6.0.2", 29 - "url": "mirror://kde/stable/plasma/6.0.2/discover-6.0.2.tar.xz", 30 - "hash": "sha256-jDuWQYjuNySaob1KzVKWfYgDvEC3Xzt3GFk8HNbM9PA=" 28 + "version": "6.0.3", 29 + "url": "mirror://kde/stable/plasma/6.0.3/discover-6.0.3.tar.xz", 30 + "hash": "sha256-spGWIR+PhL/eku1ZNmyzu8f9bONAsCJmrQusJsHcd54=" 31 31 }, 32 32 "drkonqi": { 33 - "version": "6.0.2", 34 - "url": "mirror://kde/stable/plasma/6.0.2/drkonqi-6.0.2.tar.xz", 35 - "hash": "sha256-S4HHlDGeBMVwqUh/Cd2gLxiIHiSFR7qFaqhKbt5wwxQ=" 33 + "version": "6.0.3", 34 + "url": "mirror://kde/stable/plasma/6.0.3/drkonqi-6.0.3.tar.xz", 35 + "hash": "sha256-H6nnUiVRqaq5LYreP2u7f8+4Mpc6AREapESxiOQ04s4=" 36 36 }, 37 37 "flatpak-kcm": { 38 - "version": "6.0.2", 39 - "url": "mirror://kde/stable/plasma/6.0.2/flatpak-kcm-6.0.2.tar.xz", 40 - "hash": "sha256-cxEOEmCqq9Alj632/WPg1mnG1lzBY3TyjNiMZkusJY0=" 38 + "version": "6.0.3", 39 + "url": "mirror://kde/stable/plasma/6.0.3/flatpak-kcm-6.0.3.tar.xz", 40 + "hash": "sha256-k+tUaLHfzxqFNVm2biXWrkkNZbo5dSY/HlwHGLSuOmU=" 41 41 }, 42 42 "kactivitymanagerd": { 43 - "version": "6.0.2", 44 - "url": "mirror://kde/stable/plasma/6.0.2/kactivitymanagerd-6.0.2.tar.xz", 45 - "hash": "sha256-6V6in4tvuIK+xR2UZJEqdDVO9Tlrs+q3iDDa40qk37A=" 43 + "version": "6.0.3", 44 + "url": "mirror://kde/stable/plasma/6.0.3/kactivitymanagerd-6.0.3.tar.xz", 45 + "hash": "sha256-T5IxT8IRfcJv9nHDM04AdtXyt/7KQ09OE4v99XS2fOU=" 46 46 }, 47 47 "kde-cli-tools": { 48 - "version": "6.0.2", 49 - "url": "mirror://kde/stable/plasma/6.0.2/kde-cli-tools-6.0.2.tar.xz", 50 - "hash": "sha256-Sr7JMrS0eaQiTg7yVjBVmGVdM4mzaaYf5IY34rXOjlU=" 51 - }, 52 - "kde-gtk-config": { 53 - "version": "6.0.2", 54 - "url": "mirror://kde/stable/plasma/6.0.2/kde-gtk-config-6.0.2.tar.xz", 55 - "hash": "sha256-iEVwUAzthC8eHFRe32/dUDZnP4OnGIZE+Ln3YeJoL34=" 48 + "version": "6.0.3", 49 + "url": "mirror://kde/stable/plasma/6.0.3/kde-cli-tools-6.0.3.tar.xz", 50 + "hash": "sha256-UN5KvK8mWbqMG+hXvLfxoJVQ0nzEfyWg3uWSEQpVnEI=" 56 51 }, 57 52 "kdecoration": { 58 - "version": "6.0.2", 59 - "url": "mirror://kde/stable/plasma/6.0.2/kdecoration-6.0.2.tar.xz", 60 - "hash": "sha256-uZNhbMXXj854ey29BKr+VA6SnC7MzeFLzgxhkDUUvsI=" 53 + "version": "6.0.3", 54 + "url": "mirror://kde/stable/plasma/6.0.3/kdecoration-6.0.3.tar.xz", 55 + "hash": "sha256-PJH2WpseoIzyA+eexO3+pojEY9fSGMlSlsA3a99ZVvk=" 56 + }, 57 + "kde-gtk-config": { 58 + "version": "6.0.3", 59 + "url": "mirror://kde/stable/plasma/6.0.3/kde-gtk-config-6.0.3.tar.xz", 60 + "hash": "sha256-NtTPT+Ss3sXZF8j/P/FXSOb8s1bc06RIjJ4Ifnm1ZMI=" 61 61 }, 62 62 "kdeplasma-addons": { 63 - "version": "6.0.2", 64 - "url": "mirror://kde/stable/plasma/6.0.2/kdeplasma-addons-6.0.2.tar.xz", 65 - "hash": "sha256-Wl4L/PtA1Xpeu5/tXSOMZC0Y5+0tbduxJAthxZi7AgA=" 63 + "version": "6.0.3", 64 + "url": "mirror://kde/stable/plasma/6.0.3/kdeplasma-addons-6.0.3.tar.xz", 65 + "hash": "sha256-LeweAF4uh/PI04OgZ4sb+Y1IhQfT3pSn34zZPju5Z8E=" 66 66 }, 67 67 "kgamma": { 68 - "version": "6.0.2", 69 - "url": "mirror://kde/stable/plasma/6.0.2/kgamma-6.0.2.tar.xz", 70 - "hash": "sha256-+A2xpuiVBAQNUcaxT6i6Bqxnh9w3wFvEHsbLzbRjmZA=" 68 + "version": "6.0.3", 69 + "url": "mirror://kde/stable/plasma/6.0.3/kgamma-6.0.3.tar.xz", 70 + "hash": "sha256-gW55sJkvoq5tT23Wsnf1CFYt+E4AYdnAYJVXU7hCJNM=" 71 71 }, 72 72 "kglobalacceld": { 73 - "version": "6.0.2", 74 - "url": "mirror://kde/stable/plasma/6.0.2/kglobalacceld-6.0.2.tar.xz", 75 - "hash": "sha256-pPPG2MCGNujAI4xblFWgyXXVciXGYScybR3U3aGjJos=" 73 + "version": "6.0.3", 74 + "url": "mirror://kde/stable/plasma/6.0.3/kglobalacceld-6.0.3.tar.xz", 75 + "hash": "sha256-EqE37lBS/b92xUxO/AfVUO3KWiWntDTVIsFBjj41ssw=" 76 76 }, 77 77 "kinfocenter": { 78 - "version": "6.0.2", 79 - "url": "mirror://kde/stable/plasma/6.0.2/kinfocenter-6.0.2.tar.xz", 80 - "hash": "sha256-XX1CmQt73K7ndlEP298n5EtbvhaMTk5NVJ9WHo/iyyA=" 78 + "version": "6.0.3", 79 + "url": "mirror://kde/stable/plasma/6.0.3/kinfocenter-6.0.3.tar.xz", 80 + "hash": "sha256-7pwt2u4si/RTw46CwzJ9yDrTkAQt0QbBnd9LYlGorfs=" 81 81 }, 82 82 "kmenuedit": { 83 - "version": "6.0.2", 84 - "url": "mirror://kde/stable/plasma/6.0.2/kmenuedit-6.0.2.tar.xz", 85 - "hash": "sha256-0K7EynTFpVeMp7k0F1qex+ITJLvaVczpb0oN1TJtwZc=" 83 + "version": "6.0.3", 84 + "url": "mirror://kde/stable/plasma/6.0.3/kmenuedit-6.0.3.tar.xz", 85 + "hash": "sha256-fPjU4qqeJjOp0PCSAlxIwKcxoUz5IKa1KNj/57TWxyw=" 86 86 }, 87 87 "kpipewire": { 88 - "version": "6.0.2", 89 - "url": "mirror://kde/stable/plasma/6.0.2/kpipewire-6.0.2.tar.xz", 90 - "hash": "sha256-APmGtilgMkYaNYcdvooS/CTC+TtiOdMJjJe3bcvUbMk=" 88 + "version": "6.0.3", 89 + "url": "mirror://kde/stable/plasma/6.0.3/kpipewire-6.0.3.tar.xz", 90 + "hash": "sha256-Grp6BL81yIaQaK84eEUSG1205+YfGZDk3rhstoOgUn4=" 91 91 }, 92 92 "kscreen": { 93 - "version": "6.0.2", 94 - "url": "mirror://kde/stable/plasma/6.0.2/kscreen-6.0.2.tar.xz", 95 - "hash": "sha256-8fVuPlxw5dt1pfwBtPCB7cgRy7NoAiu3DEr6viVaAoU=" 93 + "version": "6.0.3", 94 + "url": "mirror://kde/stable/plasma/6.0.3/kscreen-6.0.3.tar.xz", 95 + "hash": "sha256-WRbghsImAEClTdoA/jL6doVA2rp4kV8tdrpd9515mp4=" 96 96 }, 97 97 "kscreenlocker": { 98 - "version": "6.0.2", 99 - "url": "mirror://kde/stable/plasma/6.0.2/kscreenlocker-6.0.2.tar.xz", 100 - "hash": "sha256-RRxpojVsVFwRjjLJ+LRYYnKymfjZ3cTJyISxnbQntT8=" 98 + "version": "6.0.3", 99 + "url": "mirror://kde/stable/plasma/6.0.3/kscreenlocker-6.0.3.tar.xz", 100 + "hash": "sha256-Sv7bQ6k1JB/2mORJBbSvbhkBRAMmhoCTFjyjb4OY1mk=" 101 101 }, 102 102 "ksshaskpass": { 103 - "version": "6.0.2", 104 - "url": "mirror://kde/stable/plasma/6.0.2/ksshaskpass-6.0.2.tar.xz", 105 - "hash": "sha256-C+p20xygb3QkQqzmk+LcSJYSMJtapWfRaXisJu4g+sk=" 103 + "version": "6.0.3", 104 + "url": "mirror://kde/stable/plasma/6.0.3/ksshaskpass-6.0.3.tar.xz", 105 + "hash": "sha256-t+pKW7tQqwyY8ELQAag18P6E8suR5Pb5DxvgxmoYMgk=" 106 106 }, 107 107 "ksystemstats": { 108 - "version": "6.0.2", 109 - "url": "mirror://kde/stable/plasma/6.0.2/ksystemstats-6.0.2.tar.xz", 110 - "hash": "sha256-l1/8/okQHOVc8cDFbGZuAuXcPR+pJF4xWw0jAwNMqEA=" 108 + "version": "6.0.3", 109 + "url": "mirror://kde/stable/plasma/6.0.3/ksystemstats-6.0.3.tar.xz", 110 + "hash": "sha256-f+w6cF3Qb6/0+YzpS1BfypV+CdgmGSQC+WQ/gY3PREU=" 111 111 }, 112 112 "kwallet-pam": { 113 - "version": "6.0.2", 114 - "url": "mirror://kde/stable/plasma/6.0.2/kwallet-pam-6.0.2.tar.xz", 115 - "hash": "sha256-QTIb6oKt0j+Gtry+bTiLyMNZI70df4pm0Iw/KrGrAnM=" 113 + "version": "6.0.3", 114 + "url": "mirror://kde/stable/plasma/6.0.3/kwallet-pam-6.0.3.tar.xz", 115 + "hash": "sha256-Is2LAK4XqSxHOvYZajaFX8PqzpIEtz87ziSJ2A806H8=" 116 116 }, 117 117 "kwayland": { 118 - "version": "6.0.2", 119 - "url": "mirror://kde/stable/plasma/6.0.2/kwayland-6.0.2.tar.xz", 120 - "hash": "sha256-vcLnj1datajVor0xCKPMMEZ6M0lYs8/9rASDnbg12DM=" 118 + "version": "6.0.3", 119 + "url": "mirror://kde/stable/plasma/6.0.3/kwayland-6.0.3.tar.xz", 120 + "hash": "sha256-+7EprPuoK7CqOph5C1Vivz/Khn70H0gjxvE8ZgUDZpg=" 121 121 }, 122 122 "kwayland-integration": { 123 - "version": "6.0.2", 124 - "url": "mirror://kde/stable/plasma/6.0.2/kwayland-integration-6.0.2.tar.xz", 125 - "hash": "sha256-JcURgey49PxoX332lmXwBWNGp6ljESh8frD9z8NjFPo=" 123 + "version": "6.0.3", 124 + "url": "mirror://kde/stable/plasma/6.0.3/kwayland-integration-6.0.3.tar.xz", 125 + "hash": "sha256-2dz0Ncoy1J8kG5EWyzWa2TrQ8KsgZ/bkG5VaeDTY4bo=" 126 126 }, 127 127 "kwin": { 128 - "version": "6.0.2", 129 - "url": "mirror://kde/stable/plasma/6.0.2/kwin-6.0.2.tar.xz", 130 - "hash": "sha256-ZTQGIBVP7eWY2qdsxiRzmpgkaFqhqpQiTv3V8bmwdrs=" 128 + "version": "6.0.3", 129 + "url": "mirror://kde/stable/plasma/6.0.3/kwin-6.0.3.tar.xz", 130 + "hash": "sha256-D0bnds1Qg3TFUsClpVpFvyj5zMyIcAiQCYVKETTXKnk=" 131 131 }, 132 132 "kwrited": { 133 - "version": "6.0.2", 134 - "url": "mirror://kde/stable/plasma/6.0.2/kwrited-6.0.2.tar.xz", 135 - "hash": "sha256-+1IZTV5VmlaWevHIoaCAhex3t9ZRCrSGoPEMk/ro2Sg=" 133 + "version": "6.0.3", 134 + "url": "mirror://kde/stable/plasma/6.0.3/kwrited-6.0.3.tar.xz", 135 + "hash": "sha256-Od+o/t6t8TmrxhCojFF8q2WNUsulAiOmi3B2C+Ene6s=" 136 136 }, 137 137 "layer-shell-qt": { 138 - "version": "6.0.2", 139 - "url": "mirror://kde/stable/plasma/6.0.2/layer-shell-qt-6.0.2.tar.xz", 140 - "hash": "sha256-qtaCwTBihouUlwy2DeQAH6jRpL3YJ8Y3VuIV0EU95VA=" 138 + "version": "6.0.3", 139 + "url": "mirror://kde/stable/plasma/6.0.3/layer-shell-qt-6.0.3.tar.xz", 140 + "hash": "sha256-NEPFeo+L4m76QLPy90jRMKxk1hP4lOeY1vpS4ptZtRc=" 141 141 }, 142 142 "libkscreen": { 143 - "version": "6.0.2", 144 - "url": "mirror://kde/stable/plasma/6.0.2/libkscreen-6.0.2.tar.xz", 145 - "hash": "sha256-L4ZclYm2Cuc5WxilMbHm+/6o4s5cFHgRsO8fjAXjBTc=" 143 + "version": "6.0.3", 144 + "url": "mirror://kde/stable/plasma/6.0.3/libkscreen-6.0.3.tar.xz", 145 + "hash": "sha256-R4X8PipebbOmLMWPFoLddRNOyIydlmudj7IuhwqjNIM=" 146 146 }, 147 147 "libksysguard": { 148 - "version": "6.0.2", 149 - "url": "mirror://kde/stable/plasma/6.0.2/libksysguard-6.0.2.tar.xz", 150 - "hash": "sha256-lp+uvfmXygl+lN2HffJ+xb/0lnFPZnif5izUVXvsbdM=" 148 + "version": "6.0.3", 149 + "url": "mirror://kde/stable/plasma/6.0.3/libksysguard-6.0.3.tar.xz", 150 + "hash": "sha256-UzYTh/OSk8chrw1LrEi7AIdX5kL9qbmvgZChyp2cK5I=" 151 151 }, 152 152 "libplasma": { 153 - "version": "6.0.2", 154 - "url": "mirror://kde/stable/plasma/6.0.2/libplasma-6.0.2.tar.xz", 155 - "hash": "sha256-NaAhBL3H3BNHETIZdoplNmUDp99fr5i/ANAatgNNEb0=" 153 + "version": "6.0.3", 154 + "url": "mirror://kde/stable/plasma/6.0.3/libplasma-6.0.3.tar.xz", 155 + "hash": "sha256-HKAgAm3to4pGyzTNcdfEnDsYub7ybK8c73Zav0n99x0=" 156 156 }, 157 157 "milou": { 158 - "version": "6.0.2", 159 - "url": "mirror://kde/stable/plasma/6.0.2/milou-6.0.2.tar.xz", 160 - "hash": "sha256-WKPbHv9ZfLIDlZ6jCqSWiOL0KK2tOIxU4suugQr0GhQ=" 158 + "version": "6.0.3", 159 + "url": "mirror://kde/stable/plasma/6.0.3/milou-6.0.3.tar.xz", 160 + "hash": "sha256-Lvv54qZEFF0tpKEEDmovTlRwMur8YRkGWbtXH45806I=" 161 161 }, 162 162 "ocean-sound-theme": { 163 - "version": "6.0.2", 164 - "url": "mirror://kde/stable/plasma/6.0.2/ocean-sound-theme-6.0.2.tar.xz", 165 - "hash": "sha256-+gHhW4qZfl3TTn3qZ6gnEph2WC5rD91EMjUvFrZ0VXc=" 163 + "version": "6.0.3", 164 + "url": "mirror://kde/stable/plasma/6.0.3/ocean-sound-theme-6.0.3.tar.xz", 165 + "hash": "sha256-Y7vfbsFcFOyAgHy8QoZQ5eLeHpxjm33erlx4mcIzxTY=" 166 166 }, 167 167 "oxygen": { 168 - "version": "6.0.2", 169 - "url": "mirror://kde/stable/plasma/6.0.2/oxygen-6.0.2.tar.xz", 170 - "hash": "sha256-Zhqp3BDNGzPOj1agJFD0YUhThKyex9vax8fGhPkiIOM=" 168 + "version": "6.0.3", 169 + "url": "mirror://kde/stable/plasma/6.0.3/oxygen-6.0.3.tar.xz", 170 + "hash": "sha256-c31dui2KYinXw9ZUtZAKo8Cio6jjbLXIfY7XpzgjPIQ=" 171 171 }, 172 172 "oxygen-sounds": { 173 - "version": "6.0.2", 174 - "url": "mirror://kde/stable/plasma/6.0.2/oxygen-sounds-6.0.2.tar.xz", 175 - "hash": "sha256-Ndoo5SZSvpsabDsmkZ1SR9QapotXL7EMRYOg9cy3C2E=" 173 + "version": "6.0.3", 174 + "url": "mirror://kde/stable/plasma/6.0.3/oxygen-sounds-6.0.3.tar.xz", 175 + "hash": "sha256-MOoAoJx1lfboRxqgKLRdP1GPWOOxmsFMiBexYkUoT6Y=" 176 + }, 177 + "plasma5support": { 178 + "version": "6.0.3", 179 + "url": "mirror://kde/stable/plasma/6.0.3/plasma5support-6.0.3.tar.xz", 180 + "hash": "sha256-yIO7B+UT7cZv05OaVC88TgF8iCwYUShuVbt63ctcNJU=" 176 181 }, 177 182 "plasma-activities": { 178 - "version": "6.0.2", 179 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-activities-6.0.2.tar.xz", 180 - "hash": "sha256-Cod9C2cV+x5YSOQC4QK9Buu4ke2FHLrX7/j68WTvMak=" 183 + "version": "6.0.3", 184 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-activities-6.0.3.tar.xz", 185 + "hash": "sha256-xhWV6fR+769H47r0ANz9C6ASquSMaTQtj6DjoeElcP8=" 181 186 }, 182 187 "plasma-activities-stats": { 183 - "version": "6.0.2", 184 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-activities-stats-6.0.2.tar.xz", 185 - "hash": "sha256-1+SS0HyVe16mxFMLHxnTiiq97Ga8pTRuCOfvya4VkGw=" 188 + "version": "6.0.3", 189 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-activities-stats-6.0.3.tar.xz", 190 + "hash": "sha256-XdmMwCemN/2279LeDdXmftu0+wRhGNH+ScPpX21EGj0=" 186 191 }, 187 192 "plasma-browser-integration": { 188 - "version": "6.0.2", 189 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-browser-integration-6.0.2.tar.xz", 190 - "hash": "sha256-bA76Wl1cT6742zEp00V1Kmr/5bShwRCec/mAKlTfvzI=" 193 + "version": "6.0.3", 194 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-browser-integration-6.0.3.tar.xz", 195 + "hash": "sha256-hqcuOkgQf6oIKWdR9W1SBWRSXEA1bPSlrxJqJUjdxfE=" 191 196 }, 192 197 "plasma-desktop": { 193 - "version": "6.0.2", 194 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-desktop-6.0.2.tar.xz", 195 - "hash": "sha256-BBDldeDxfKqvFhMqo/zLumQx3WG6dG8+LiAtKU9UNgo=" 198 + "version": "6.0.3", 199 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-desktop-6.0.3.tar.xz", 200 + "hash": "sha256-AZsQu40EqAadgqWRE8AhoeWiTTed6lvjCXAXquEb2dA=" 196 201 }, 197 202 "plasma-disks": { 198 - "version": "6.0.2", 199 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-disks-6.0.2.tar.xz", 200 - "hash": "sha256-PWeGm75GqCuYOx9twIYm0NNhdARGxwAFddc1RWUi8LY=" 203 + "version": "6.0.3", 204 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-disks-6.0.3.tar.xz", 205 + "hash": "sha256-+m8c+QhNf+/a2+DJWFd6ynRHsTl+xNQUYa6uRK9qwyg=" 201 206 }, 202 207 "plasma-firewall": { 203 - "version": "6.0.2", 204 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-firewall-6.0.2.tar.xz", 205 - "hash": "sha256-IO4z6ATsdd9xN9a0c89dRqd5q2ZF3QlJT2f30Q7UqSg=" 208 + "version": "6.0.3", 209 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-firewall-6.0.3.tar.xz", 210 + "hash": "sha256-GKV9L6UF2CrM/zUWxOGiA7CTikgU8ERShoFcGe4rdZo=" 206 211 }, 207 212 "plasma-integration": { 208 - "version": "6.0.2", 209 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-integration-6.0.2.tar.xz", 210 - "hash": "sha256-Jqfbaw63VItADr+stNU/4bu8PAx7Pg6/duVVK8wCoPw=" 213 + "version": "6.0.3", 214 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-integration-6.0.3.tar.xz", 215 + "hash": "sha256-W+t3hNEk2eoQjwCAQ6k8g3wHVz9byK/PkhbutGRK/Yo=" 211 216 }, 212 217 "plasma-mobile": { 213 - "version": "6.0.2", 214 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-mobile-6.0.2.tar.xz", 215 - "hash": "sha256-LQgMq0CvYObKPrA8E6XwttrRECxsCUEZOmTyTDeVf3I=" 218 + "version": "6.0.3", 219 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-mobile-6.0.3.tar.xz", 220 + "hash": "sha256-oHgh272xMZYdoTidGyR2xsdASVTU50mAw9+nUyF5+Xo=" 216 221 }, 217 222 "plasma-nano": { 218 - "version": "6.0.2", 219 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-nano-6.0.2.tar.xz", 220 - "hash": "sha256-xDxCj5OjxwOkfeODSur6ftjHEamwEyws17Zp/t/tcpw=" 223 + "version": "6.0.3", 224 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-nano-6.0.3.tar.xz", 225 + "hash": "sha256-mBjOkE8YME0wsirNcTmAV33mzAvXXqDPtkvtJQ0ASyo=" 221 226 }, 222 227 "plasma-nm": { 223 - "version": "6.0.2", 224 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-nm-6.0.2.tar.xz", 225 - "hash": "sha256-QubzGz7G3lHuPO/bUimeZVzdIKXItNeIBCkYTi+S0MY=" 228 + "version": "6.0.3", 229 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-nm-6.0.3.tar.xz", 230 + "hash": "sha256-EFi4WULetceWMvXDLwn3gbcDgd4SOeHOh9/plyhW7T0=" 226 231 }, 227 232 "plasma-pa": { 228 - "version": "6.0.2", 229 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-pa-6.0.2.tar.xz", 230 - "hash": "sha256-mY2o94MeFgBDFby0iNBdHVOXE0BuI1FVvb+7gNMB5a0=" 233 + "version": "6.0.3", 234 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-pa-6.0.3.tar.xz", 235 + "hash": "sha256-seGYoBVR6HJ1s/m3GLlN8+3zkdzPK6ceqa8HvFLd7ls=" 231 236 }, 232 237 "plasma-sdk": { 233 - "version": "6.0.2", 234 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-sdk-6.0.2.tar.xz", 235 - "hash": "sha256-twvRfWNrJvg3RZsfcusp/QuiJXEcjK73p2LdYL/0ZAU=" 238 + "version": "6.0.3", 239 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-sdk-6.0.3.tar.xz", 240 + "hash": "sha256-SuTUlcd7ZQjvhTXTm3OosUwe4Sl8fbp0DpKLJg/b/Xk=" 236 241 }, 237 242 "plasma-systemmonitor": { 238 - "version": "6.0.2", 239 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-systemmonitor-6.0.2.tar.xz", 240 - "hash": "sha256-vDVzeXuZ3pbjmaKTYuvPbhu5ic7UocQZ8jIgSEJsk4s=" 243 + "version": "6.0.3", 244 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-systemmonitor-6.0.3.tar.xz", 245 + "hash": "sha256-JcMI6Yx4ByoERWIVkythPo+56nHsUgwFANcearC8WEc=" 241 246 }, 242 247 "plasma-thunderbolt": { 243 - "version": "6.0.2", 244 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-thunderbolt-6.0.2.tar.xz", 245 - "hash": "sha256-CkWNmJNRiBP/dJeZ0cr068oFAbF5akLU496+F3StG2A=" 248 + "version": "6.0.3", 249 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-thunderbolt-6.0.3.tar.xz", 250 + "hash": "sha256-xQ/yiDnu6HYm638ZH/VsDJZhdt0Q0/Qqm84oDjMTTWI=" 246 251 }, 247 252 "plasma-vault": { 248 - "version": "6.0.2", 249 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-vault-6.0.2.tar.xz", 250 - "hash": "sha256-X4BqRrZAt+qK2fGNk5yhNDTOy+Ker0Y0k+5vnBl8HJA=" 253 + "version": "6.0.3", 254 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-vault-6.0.3.tar.xz", 255 + "hash": "sha256-UYQtcK+1ecGvixcb2975hpqY2obi4V3kfw0pTuGqifc=" 251 256 }, 252 257 "plasma-welcome": { 253 - "version": "6.0.2", 254 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-welcome-6.0.2.tar.xz", 255 - "hash": "sha256-PZiuRZBchM6kWNYmgKHCRx1E0Zu2HOkx47INBfDw908=" 258 + "version": "6.0.3", 259 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-welcome-6.0.3.tar.xz", 260 + "hash": "sha256-22EjXA90eHBwlbHsmc4TwnD+uBoYHUTrjUMJJRtj1Bw=" 256 261 }, 257 262 "plasma-workspace": { 258 - "version": "6.0.2", 259 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-workspace-6.0.2.tar.xz", 260 - "hash": "sha256-nM604rzgRZcPwXe/KEf/rli9OXgGuMz0TaWCCjvWAM4=" 263 + "version": "6.0.3", 264 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-workspace-6.0.3.tar.xz", 265 + "hash": "sha256-5D6oADqHUyed9FgOvtF+6jUulpS1TbpFB0BgJaQfacM=" 261 266 }, 262 267 "plasma-workspace-wallpapers": { 263 - "version": "6.0.2", 264 - "url": "mirror://kde/stable/plasma/6.0.2/plasma-workspace-wallpapers-6.0.2.tar.xz", 265 - "hash": "sha256-0zDvbxeoltvd/jh7QSGuwFc3LAKcPMHS0iSIQru0vwA=" 266 - }, 267 - "plasma5support": { 268 - "version": "6.0.2", 269 - "url": "mirror://kde/stable/plasma/6.0.2/plasma5support-6.0.2.tar.xz", 270 - "hash": "sha256-GLHeNGH183IcXTy7CEEToM7qW/PjdvIbJP6YylbVSm8=" 268 + "version": "6.0.3", 269 + "url": "mirror://kde/stable/plasma/6.0.3/plasma-workspace-wallpapers-6.0.3.tar.xz", 270 + "hash": "sha256-Zuy9JdtjSutSvgX8PcxKcbHP/e4Sq2RRR65fLsQje9s=" 271 271 }, 272 272 "plymouth-kcm": { 273 - "version": "6.0.2", 274 - "url": "mirror://kde/stable/plasma/6.0.2/plymouth-kcm-6.0.2.tar.xz", 275 - "hash": "sha256-lZUuLTwQoXUyUy9yTnWoU0ZO7BLlThw8TyEoEAtXoTA=" 273 + "version": "6.0.3", 274 + "url": "mirror://kde/stable/plasma/6.0.3/plymouth-kcm-6.0.3.tar.xz", 275 + "hash": "sha256-IGN0fREb2G15T4PkY1glJCCy0TyDVpElZOqMf6GLRu4=" 276 276 }, 277 277 "polkit-kde-agent-1": { 278 - "version": "6.0.2", 279 - "url": "mirror://kde/stable/plasma/6.0.2/polkit-kde-agent-1-6.0.2.tar.xz", 280 - "hash": "sha256-Pi3sf38vQ0LHz4zcZJcr5XNQmoNWT/wa9+DZG/V0Yr0=" 278 + "version": "6.0.3", 279 + "url": "mirror://kde/stable/plasma/6.0.3/polkit-kde-agent-1-6.0.3.tar.xz", 280 + "hash": "sha256-PbxfR+7HCSzPH0KVo0n+aa6EzoAL6pCSWglrY43Qy/0=" 281 281 }, 282 282 "powerdevil": { 283 - "version": "6.0.2", 284 - "url": "mirror://kde/stable/plasma/6.0.2/powerdevil-6.0.2.tar.xz", 285 - "hash": "sha256-MYjTyMrd32iVXvyW6eThKS6z0Wfk2lkCmtyZPiFR9Ug=" 283 + "version": "6.0.3", 284 + "url": "mirror://kde/stable/plasma/6.0.3/powerdevil-6.0.3.tar.xz", 285 + "hash": "sha256-HJuQ4wyyIi4PXNKq8Kj4kIyefsEVGtQNzXz3VA6h7ZI=" 286 286 }, 287 287 "print-manager": { 288 - "version": "6.0.2", 289 - "url": "mirror://kde/stable/plasma/6.0.2/print-manager-6.0.2.tar.xz", 290 - "hash": "sha256-Zs4HOBWDgO7sLCWcwtPyWdU+Kdv/Lf2FPlWgnTrKRv8=" 288 + "version": "6.0.3", 289 + "url": "mirror://kde/stable/plasma/6.0.3/print-manager-6.0.3.tar.xz", 290 + "hash": "sha256-8qLpHnxDtqsdsLmal8QqSEUjDH9stznLMKSMKCRX5Iw=" 291 291 }, 292 292 "qqc2-breeze-style": { 293 - "version": "6.0.2", 294 - "url": "mirror://kde/stable/plasma/6.0.2/qqc2-breeze-style-6.0.2.tar.xz", 295 - "hash": "sha256-kE5jmK7irTEpHAJ6sJahl8lC60pz7vf03kKCy8prMl0=" 293 + "version": "6.0.3", 294 + "url": "mirror://kde/stable/plasma/6.0.3/qqc2-breeze-style-6.0.3.tar.xz", 295 + "hash": "sha256-QBhE+H4b5I4V8WevZBqzEaIDdsSKmz7iHHbuJeij29k=" 296 296 }, 297 297 "sddm-kcm": { 298 - "version": "6.0.2", 299 - "url": "mirror://kde/stable/plasma/6.0.2/sddm-kcm-6.0.2.tar.xz", 300 - "hash": "sha256-GjF2qqTtS2uCFON0RuvVtK4LnigjuWQfHvfotnI7JMs=" 298 + "version": "6.0.3", 299 + "url": "mirror://kde/stable/plasma/6.0.3/sddm-kcm-6.0.3.tar.xz", 300 + "hash": "sha256-+qdeD1r+HikPAMaW+/duSqcRiONRv4RFRwQ+BiYAmG4=" 301 301 }, 302 302 "systemsettings": { 303 - "version": "6.0.2", 304 - "url": "mirror://kde/stable/plasma/6.0.2/systemsettings-6.0.2.tar.xz", 305 - "hash": "sha256-3llQvu9jREmE+mHjh0xgE6T/7r/ObYGc97q3yCQCtgY=" 303 + "version": "6.0.3", 304 + "url": "mirror://kde/stable/plasma/6.0.3/systemsettings-6.0.3.tar.xz", 305 + "hash": "sha256-HHTYkou9DL1Y8B/V7anbjNMl4X5jt0NsDxnTII9Rxaw=" 306 306 }, 307 307 "wacomtablet": { 308 - "version": "6.0.2", 309 - "url": "mirror://kde/stable/plasma/6.0.2/wacomtablet-6.0.2.tar.xz", 310 - "hash": "sha256-s1Vn6OKtKB1csiJRdBPasKRK/iVbWSZPMHe+e9cUB5k=" 308 + "version": "6.0.3", 309 + "url": "mirror://kde/stable/plasma/6.0.3/wacomtablet-6.0.3.tar.xz", 310 + "hash": "sha256-wMD7IxTGSq3rE/QUEhrnbMGNJ5YD1S/G2xJZ+7/DOwE=" 311 311 }, 312 312 "xdg-desktop-portal-kde": { 313 - "version": "6.0.2", 314 - "url": "mirror://kde/stable/plasma/6.0.2/xdg-desktop-portal-kde-6.0.2.tar.xz", 315 - "hash": "sha256-LX5j/LAr+jV/Ml2QA4dFau4Bk+pBSy7emLGhWbUg52U=" 313 + "version": "6.0.3", 314 + "url": "mirror://kde/stable/plasma/6.0.3/xdg-desktop-portal-kde-6.0.3.tar.xz", 315 + "hash": "sha256-vWWbfhto3tKNgZmr+MX0n8butDLJtqiEPr9MBMwDWqk=" 316 316 } 317 317 }
+4 -4
pkgs/kde/plasma/drkonqi/gdb-path.patch
··· 1 1 diff --git a/src/data/debuggers/internal/gdbrc b/src/data/debuggers/internal/gdbrc 2 - index 9a5c8fee..c32b1510 100644 2 + index 0d163d43..8e2f85f1 100644 3 3 --- a/src/data/debuggers/internal/gdbrc 4 4 +++ b/src/data/debuggers/internal/gdbrc 5 - @@ -72,17 +72,18 @@ Name[wa]=gdb 5 + @@ -73,17 +73,18 @@ Name[wa]=gdb 6 6 Name[x-test]=xxgdbxx 7 7 Name[zh_CN]=gdb 8 8 Name[zh_TW]=gdb ··· 16 16 -ExecWithSymbolResolution=gdb -nw -n -batch --init-eval-command='set debuginfod enabled on' -x %preamblefile -x %tempfile -p %pid %execpath 17 17 +Exec=@gdb@ -nw -n -batch -x %preamblefile -x %tempfile -p %pid %execpath 18 18 +ExecWithSymbolResolution=@gdb@ -nw -n -batch --init-eval-command='set debuginfod enabled on' -x %preamblefile -x %tempfile -p %pid %execpath 19 - PreambleCommands=set width 200\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble() 19 + PreambleCommands=set width 200\nset backtrace limit 128\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble() 20 20 BatchCommands=thread\nthread apply all bt 21 21 22 22 [coredump-core] ··· 24 24 -ExecWithSymbolResolution=gdb --nw --nx --batch --init-eval-command='set debuginfod enabled on' --command=%preamblefile --command=%tempfile --core=%corefile %execpath 25 25 +Exec=@gdb@ --nw --nx --batch --command=%preamblefile --command=%tempfile --core=%corefile %execpath 26 26 +ExecWithSymbolResolution=@gdb@ --nw --nx --batch --init-eval-command='set debuginfod enabled on' --command=%preamblefile --command=%tempfile --core=%corefile %execpath 27 - PreambleCommands=set width 200\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble() 27 + PreambleCommands=set width 200\nset backtrace limit 128\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble() 28 28 BatchCommands=thread\nthread apply all bt
+1
pkgs/servers/kanidm/Cargo.lock
··· 3192 3192 "hex", 3193 3193 "idlset", 3194 3194 "image 0.24.8", 3195 + "itertools 0.12.1", 3195 3196 "kanidm_build_profiles", 3196 3197 "kanidm_lib_crypto", 3197 3198 "kanidm_proto",
+2 -2
pkgs/servers/kanidm/default.nix
··· 25 25 owner = pname; 26 26 repo = pname; 27 27 # Latest revision of 1.1.0-rc.16 stable branch 28 - rev = "4c88d6b27c9b82ad5b2482bda140025d7068293f"; 29 - hash = "sha256-tatZ56uIusNvAAGwJ731rfmHvheOtPXjPUxLuAPFxXs="; 28 + rev = "e51d0dee44ecabbf7be9e855753453bb2f61cced"; 29 + hash = "sha256-YgrlmSrjOzn/oFWmYy/71xwcq53lJbmiLIFzn2sIFAk="; 30 30 }; 31 31 32 32 cargoLock = {
+2
pkgs/servers/sql/postgresql/ext/default.nix
··· 91 91 92 92 pg_relusage = super.callPackage ./pg_relusage.nix { }; 93 93 94 + pg_roaringbitmap = super.callPackage ./pg_roaringbitmap.nix { }; 95 + 94 96 pg_safeupdate = super.callPackage ./pg_safeupdate.nix { }; 95 97 96 98 pg_squeeze = super.callPackage ./pg_squeeze.nix { };
+32
pkgs/servers/sql/postgresql/ext/pg_roaringbitmap.nix
··· 1 + { lib, stdenv, fetchFromGitHub, postgresql, postgresqlTestHook }: 2 + 3 + stdenv.mkDerivation (finalAttrs: { 4 + pname = "pg_roaringbitmap"; 5 + version = "0.5.4"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "ChenHuajun"; 9 + repo = "pg_roaringbitmap"; 10 + rev = "v${finalAttrs.version}"; 11 + hash = "sha256-E6vqawnsRsAIajGDgJcTUWV1H8GFFboTjhmVfemUGbs="; 12 + }; 13 + 14 + buildInputs = [ 15 + postgresql 16 + ]; 17 + 18 + installPhase = '' 19 + install -D -t $out/lib roaringbitmap${postgresql.dlSuffix} 20 + install -D -t $out/share/postgresql/extension roaringbitmap-*.sql 21 + install -D -t $out/share/postgresql/extension roaringbitmap.control 22 + ''; 23 + 24 + meta = with lib; { 25 + description = "RoaringBitmap extension for PostgreSQL"; 26 + homepage = "https://github.com/ChenHuajun/pg_roaringbitmap"; 27 + changelog = "https://github.com/ChenHuajun/pg_roaringbitmap/blob/${finalAttrs.src.rev}/CHANGELOG.md"; 28 + license = licenses.asl20; 29 + maintainers = [ maintainers.marsam ]; 30 + inherit (postgresql.meta) platforms; 31 + }; 32 + })
+1
pkgs/test/check-by-name/pinned-version.txt
··· 1 + 0.1.0
+73
pkgs/test/check-by-name/run-local.sh
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p jq 3 + 4 + set -o pipefail -o errexit -o nounset 5 + 6 + trace() { echo >&2 "$@"; } 7 + 8 + tmp=$(mktemp -d) 9 + cleanup() { 10 + # Don't exit early if anything fails to cleanup 11 + set +o errexit 12 + 13 + trace -n "Cleaning up.. " 14 + 15 + [[ -e "$tmp/base" ]] && git worktree remove --force "$tmp/base" 16 + [[ -e "$tmp/merged" ]] && git worktree remove --force "$tmp/merged" 17 + 18 + rm -rf "$tmp" 19 + 20 + trace "Done" 21 + } 22 + trap cleanup exit 23 + 24 + 25 + repo=https://github.com/NixOS/nixpkgs.git 26 + 27 + if (( $# != 0 )); then 28 + baseBranch=$1 29 + shift 30 + else 31 + trace "Usage: $0 BASE_BRANCH [REPOSITORY]" 32 + trace "BASE_BRANCH: The base branch to use, e.g. master or release-23.11" 33 + trace "REPOSITORY: The repository to fetch the base branch from, defaults to $repo" 34 + exit 1 35 + fi 36 + 37 + if (( $# != 0 )); then 38 + repo=$1 39 + shift 40 + fi 41 + 42 + if [[ -n "$(git status --porcelain)" ]]; then 43 + trace -e "\e[33mWarning: Dirty tree, uncommitted changes won't be taken into account\e[0m" 44 + fi 45 + headSha=$(git rev-parse HEAD) 46 + trace -e "Using HEAD commit \e[34m$headSha\e[0m" 47 + 48 + trace -n "Creating Git worktree for the HEAD commit in $tmp/merged.. " 49 + git worktree add --detach -q "$tmp/merged" HEAD 50 + trace "Done" 51 + 52 + trace -n "Fetching base branch $baseBranch to compare against.. " 53 + git fetch -q "$repo" refs/heads/"$baseBranch" 54 + baseSha=$(git rev-parse FETCH_HEAD) 55 + trace -e "\e[34m$baseSha\e[0m" 56 + 57 + trace -n "Creating Git worktree for the base branch in $tmp/base.. " 58 + git worktree add -q "$tmp/base" "$baseSha" 59 + trace "Done" 60 + 61 + trace -n "Merging base branch into the HEAD commit in $tmp/merged.. " 62 + git -C "$tmp/merged" merge -q --no-edit "$baseSha" 63 + trace -e "\e[34m$(git -C "$tmp/merged" rev-parse HEAD)\e[0m" 64 + 65 + trace -n "Reading pinned nixpkgs-check-by-name version from pinned-version.txt.. " 66 + toolVersion=$(<"$tmp/merged/pkgs/test/check-by-name/pinned-version.txt") 67 + trace -e "\e[34m$toolVersion\e[0m" 68 + 69 + trace -n "Building tool.. " 70 + nix-build https://github.com/NixOS/nixpkgs-check-by-name/tarball/"$toolVersion" -o "$tmp/tool" -A build 71 + 72 + trace "Running nixpkgs-check-by-name.." 73 + "$tmp/tool/bin/nixpkgs-check-by-name" --base "$tmp/base" "$tmp/merged"
+22
pkgs/test/check-by-name/update-pinned-tool.sh
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p jq curl 3 + 4 + set -o pipefail -o errexit -o nounset 5 + 6 + trace() { echo >&2 "$@"; } 7 + 8 + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 9 + 10 + repository=NixOS/nixpkgs-check-by-name 11 + pin_file=$SCRIPT_DIR/pinned-version.txt 12 + 13 + trace -n "Fetching latest release of $repository.. " 14 + latestRelease=$(curl -sSfL \ 15 + -H "Accept: application/vnd.github+json" \ 16 + -H "X-GitHub-Api-Version: 2022-11-28" \ 17 + https://api.github.com/repos/"$repository"/releases/latest) 18 + latestVersion=$(jq .tag_name -r <<< "$latestRelease") 19 + trace "$latestVersion" 20 + 21 + trace "Updating $pin_file" 22 + echo "$latestVersion" > "$pin_file"
+1 -1
pkgs/test/default.nix
··· 173 173 174 174 buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { }); 175 175 176 - nixpkgs-check-by-name = callPackage ./nixpkgs-check-by-name { }; 176 + nixpkgs-check-by-name = throw "tests.nixpkgs-check-by-name is now specified in a separate repository: https://github.com/NixOS/nixpkgs-check-by-name"; 177 177 178 178 auto-patchelf-hook = callPackage ./auto-patchelf-hook { }; 179 179
-1
pkgs/test/nixpkgs-check-by-name/.envrc
··· 1 - use nix
-2
pkgs/test/nixpkgs-check-by-name/.gitignore
··· 1 - target 2 - .direnv
-643
pkgs/test/nixpkgs-check-by-name/Cargo.lock
··· 1 - # This file is automatically @generated by Cargo. 2 - # It is not intended for manual editing. 3 - version = 3 4 - 5 - [[package]] 6 - name = "aho-corasick" 7 - version = "1.0.4" 8 - source = "registry+https://github.com/rust-lang/crates.io-index" 9 - checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" 10 - dependencies = [ 11 - "memchr", 12 - ] 13 - 14 - [[package]] 15 - name = "anstream" 16 - version = "0.5.0" 17 - source = "registry+https://github.com/rust-lang/crates.io-index" 18 - checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" 19 - dependencies = [ 20 - "anstyle", 21 - "anstyle-parse", 22 - "anstyle-query", 23 - "anstyle-wincon", 24 - "colorchoice", 25 - "utf8parse", 26 - ] 27 - 28 - [[package]] 29 - name = "anstyle" 30 - version = "1.0.2" 31 - source = "registry+https://github.com/rust-lang/crates.io-index" 32 - checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" 33 - 34 - [[package]] 35 - name = "anstyle-parse" 36 - version = "0.2.1" 37 - source = "registry+https://github.com/rust-lang/crates.io-index" 38 - checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" 39 - dependencies = [ 40 - "utf8parse", 41 - ] 42 - 43 - [[package]] 44 - name = "anstyle-query" 45 - version = "1.0.0" 46 - source = "registry+https://github.com/rust-lang/crates.io-index" 47 - checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" 48 - dependencies = [ 49 - "windows-sys", 50 - ] 51 - 52 - [[package]] 53 - name = "anstyle-wincon" 54 - version = "2.1.0" 55 - source = "registry+https://github.com/rust-lang/crates.io-index" 56 - checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" 57 - dependencies = [ 58 - "anstyle", 59 - "windows-sys", 60 - ] 61 - 62 - [[package]] 63 - name = "anyhow" 64 - version = "1.0.75" 65 - source = "registry+https://github.com/rust-lang/crates.io-index" 66 - checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 67 - 68 - [[package]] 69 - name = "autocfg" 70 - version = "1.1.0" 71 - source = "registry+https://github.com/rust-lang/crates.io-index" 72 - checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 73 - 74 - [[package]] 75 - name = "bitflags" 76 - version = "1.3.2" 77 - source = "registry+https://github.com/rust-lang/crates.io-index" 78 - checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 79 - 80 - [[package]] 81 - name = "bitflags" 82 - version = "2.4.0" 83 - source = "registry+https://github.com/rust-lang/crates.io-index" 84 - checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" 85 - 86 - [[package]] 87 - name = "cc" 88 - version = "1.0.83" 89 - source = "registry+https://github.com/rust-lang/crates.io-index" 90 - checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 91 - dependencies = [ 92 - "libc", 93 - ] 94 - 95 - [[package]] 96 - name = "cfg-if" 97 - version = "1.0.0" 98 - source = "registry+https://github.com/rust-lang/crates.io-index" 99 - checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 100 - 101 - [[package]] 102 - name = "clap" 103 - version = "4.4.0" 104 - source = "registry+https://github.com/rust-lang/crates.io-index" 105 - checksum = "1d5f1946157a96594eb2d2c10eb7ad9a2b27518cb3000209dec700c35df9197d" 106 - dependencies = [ 107 - "clap_builder", 108 - "clap_derive", 109 - "once_cell", 110 - ] 111 - 112 - [[package]] 113 - name = "clap_builder" 114 - version = "4.4.0" 115 - source = "registry+https://github.com/rust-lang/crates.io-index" 116 - checksum = "78116e32a042dd73c2901f0dc30790d20ff3447f3e3472fad359e8c3d282bcd6" 117 - dependencies = [ 118 - "anstream", 119 - "anstyle", 120 - "clap_lex", 121 - "strsim", 122 - ] 123 - 124 - [[package]] 125 - name = "clap_derive" 126 - version = "4.4.0" 127 - source = "registry+https://github.com/rust-lang/crates.io-index" 128 - checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" 129 - dependencies = [ 130 - "heck", 131 - "proc-macro2", 132 - "quote", 133 - "syn", 134 - ] 135 - 136 - [[package]] 137 - name = "clap_lex" 138 - version = "0.5.1" 139 - source = "registry+https://github.com/rust-lang/crates.io-index" 140 - checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" 141 - 142 - [[package]] 143 - name = "colorchoice" 144 - version = "1.0.0" 145 - source = "registry+https://github.com/rust-lang/crates.io-index" 146 - checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 147 - 148 - [[package]] 149 - name = "colored" 150 - version = "2.0.4" 151 - source = "registry+https://github.com/rust-lang/crates.io-index" 152 - checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" 153 - dependencies = [ 154 - "is-terminal", 155 - "lazy_static", 156 - "windows-sys", 157 - ] 158 - 159 - [[package]] 160 - name = "countme" 161 - version = "3.0.1" 162 - source = "registry+https://github.com/rust-lang/crates.io-index" 163 - checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" 164 - 165 - [[package]] 166 - name = "either" 167 - version = "1.9.0" 168 - source = "registry+https://github.com/rust-lang/crates.io-index" 169 - checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 170 - 171 - [[package]] 172 - name = "errno" 173 - version = "0.3.2" 174 - source = "registry+https://github.com/rust-lang/crates.io-index" 175 - checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" 176 - dependencies = [ 177 - "errno-dragonfly", 178 - "libc", 179 - "windows-sys", 180 - ] 181 - 182 - [[package]] 183 - name = "errno-dragonfly" 184 - version = "0.1.2" 185 - source = "registry+https://github.com/rust-lang/crates.io-index" 186 - checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 187 - dependencies = [ 188 - "cc", 189 - "libc", 190 - ] 191 - 192 - [[package]] 193 - name = "fastrand" 194 - version = "2.0.0" 195 - source = "registry+https://github.com/rust-lang/crates.io-index" 196 - checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" 197 - 198 - [[package]] 199 - name = "hashbrown" 200 - version = "0.12.3" 201 - source = "registry+https://github.com/rust-lang/crates.io-index" 202 - checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 203 - 204 - [[package]] 205 - name = "heck" 206 - version = "0.4.1" 207 - source = "registry+https://github.com/rust-lang/crates.io-index" 208 - checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 209 - 210 - [[package]] 211 - name = "hermit-abi" 212 - version = "0.3.2" 213 - source = "registry+https://github.com/rust-lang/crates.io-index" 214 - checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" 215 - 216 - [[package]] 217 - name = "indoc" 218 - version = "2.0.4" 219 - source = "registry+https://github.com/rust-lang/crates.io-index" 220 - checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" 221 - 222 - [[package]] 223 - name = "is-terminal" 224 - version = "0.4.9" 225 - source = "registry+https://github.com/rust-lang/crates.io-index" 226 - checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" 227 - dependencies = [ 228 - "hermit-abi", 229 - "rustix", 230 - "windows-sys", 231 - ] 232 - 233 - [[package]] 234 - name = "itertools" 235 - version = "0.11.0" 236 - source = "registry+https://github.com/rust-lang/crates.io-index" 237 - checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 238 - dependencies = [ 239 - "either", 240 - ] 241 - 242 - [[package]] 243 - name = "itoa" 244 - version = "1.0.9" 245 - source = "registry+https://github.com/rust-lang/crates.io-index" 246 - checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 247 - 248 - [[package]] 249 - name = "lazy_static" 250 - version = "1.4.0" 251 - source = "registry+https://github.com/rust-lang/crates.io-index" 252 - checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 253 - 254 - [[package]] 255 - name = "libc" 256 - version = "0.2.147" 257 - source = "registry+https://github.com/rust-lang/crates.io-index" 258 - checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" 259 - 260 - [[package]] 261 - name = "linux-raw-sys" 262 - version = "0.4.5" 263 - source = "registry+https://github.com/rust-lang/crates.io-index" 264 - checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" 265 - 266 - [[package]] 267 - name = "lock_api" 268 - version = "0.4.10" 269 - source = "registry+https://github.com/rust-lang/crates.io-index" 270 - checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" 271 - dependencies = [ 272 - "autocfg", 273 - "scopeguard", 274 - ] 275 - 276 - [[package]] 277 - name = "memchr" 278 - version = "2.5.0" 279 - source = "registry+https://github.com/rust-lang/crates.io-index" 280 - checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 281 - 282 - [[package]] 283 - name = "memoffset" 284 - version = "0.8.0" 285 - source = "registry+https://github.com/rust-lang/crates.io-index" 286 - checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" 287 - dependencies = [ 288 - "autocfg", 289 - ] 290 - 291 - [[package]] 292 - name = "nixpkgs-check-by-name" 293 - version = "0.1.0" 294 - dependencies = [ 295 - "anyhow", 296 - "clap", 297 - "colored", 298 - "indoc", 299 - "itertools", 300 - "lazy_static", 301 - "regex", 302 - "relative-path", 303 - "rnix", 304 - "rowan", 305 - "serde", 306 - "serde_json", 307 - "temp-env", 308 - "tempfile", 309 - "textwrap", 310 - ] 311 - 312 - [[package]] 313 - name = "once_cell" 314 - version = "1.18.0" 315 - source = "registry+https://github.com/rust-lang/crates.io-index" 316 - checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 317 - 318 - [[package]] 319 - name = "parking_lot" 320 - version = "0.12.1" 321 - source = "registry+https://github.com/rust-lang/crates.io-index" 322 - checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 323 - dependencies = [ 324 - "lock_api", 325 - "parking_lot_core", 326 - ] 327 - 328 - [[package]] 329 - name = "parking_lot_core" 330 - version = "0.9.8" 331 - source = "registry+https://github.com/rust-lang/crates.io-index" 332 - checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" 333 - dependencies = [ 334 - "cfg-if", 335 - "libc", 336 - "redox_syscall", 337 - "smallvec", 338 - "windows-targets", 339 - ] 340 - 341 - [[package]] 342 - name = "proc-macro2" 343 - version = "1.0.66" 344 - source = "registry+https://github.com/rust-lang/crates.io-index" 345 - checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" 346 - dependencies = [ 347 - "unicode-ident", 348 - ] 349 - 350 - [[package]] 351 - name = "quote" 352 - version = "1.0.33" 353 - source = "registry+https://github.com/rust-lang/crates.io-index" 354 - checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 355 - dependencies = [ 356 - "proc-macro2", 357 - ] 358 - 359 - [[package]] 360 - name = "redox_syscall" 361 - version = "0.3.5" 362 - source = "registry+https://github.com/rust-lang/crates.io-index" 363 - checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 364 - dependencies = [ 365 - "bitflags 1.3.2", 366 - ] 367 - 368 - [[package]] 369 - name = "regex" 370 - version = "1.9.3" 371 - source = "registry+https://github.com/rust-lang/crates.io-index" 372 - checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" 373 - dependencies = [ 374 - "aho-corasick", 375 - "memchr", 376 - "regex-automata", 377 - "regex-syntax", 378 - ] 379 - 380 - [[package]] 381 - name = "regex-automata" 382 - version = "0.3.6" 383 - source = "registry+https://github.com/rust-lang/crates.io-index" 384 - checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" 385 - dependencies = [ 386 - "aho-corasick", 387 - "memchr", 388 - "regex-syntax", 389 - ] 390 - 391 - [[package]] 392 - name = "regex-syntax" 393 - version = "0.7.4" 394 - source = "registry+https://github.com/rust-lang/crates.io-index" 395 - checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" 396 - 397 - [[package]] 398 - name = "relative-path" 399 - version = "1.9.2" 400 - source = "registry+https://github.com/rust-lang/crates.io-index" 401 - checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" 402 - 403 - [[package]] 404 - name = "rnix" 405 - version = "0.11.0" 406 - source = "registry+https://github.com/rust-lang/crates.io-index" 407 - checksum = "bb35cedbeb70e0ccabef2a31bcff0aebd114f19566086300b8f42c725fc2cb5f" 408 - dependencies = [ 409 - "rowan", 410 - ] 411 - 412 - [[package]] 413 - name = "rowan" 414 - version = "0.15.11" 415 - source = "registry+https://github.com/rust-lang/crates.io-index" 416 - checksum = "64449cfef9483a475ed56ae30e2da5ee96448789fb2aa240a04beb6a055078bf" 417 - dependencies = [ 418 - "countme", 419 - "hashbrown", 420 - "memoffset", 421 - "rustc-hash", 422 - "text-size", 423 - ] 424 - 425 - [[package]] 426 - name = "rustc-hash" 427 - version = "1.1.0" 428 - source = "registry+https://github.com/rust-lang/crates.io-index" 429 - checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 430 - 431 - [[package]] 432 - name = "rustix" 433 - version = "0.38.8" 434 - source = "registry+https://github.com/rust-lang/crates.io-index" 435 - checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" 436 - dependencies = [ 437 - "bitflags 2.4.0", 438 - "errno", 439 - "libc", 440 - "linux-raw-sys", 441 - "windows-sys", 442 - ] 443 - 444 - [[package]] 445 - name = "ryu" 446 - version = "1.0.15" 447 - source = "registry+https://github.com/rust-lang/crates.io-index" 448 - checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 449 - 450 - [[package]] 451 - name = "scopeguard" 452 - version = "1.2.0" 453 - source = "registry+https://github.com/rust-lang/crates.io-index" 454 - checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 455 - 456 - [[package]] 457 - name = "serde" 458 - version = "1.0.186" 459 - source = "registry+https://github.com/rust-lang/crates.io-index" 460 - checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" 461 - dependencies = [ 462 - "serde_derive", 463 - ] 464 - 465 - [[package]] 466 - name = "serde_derive" 467 - version = "1.0.186" 468 - source = "registry+https://github.com/rust-lang/crates.io-index" 469 - checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" 470 - dependencies = [ 471 - "proc-macro2", 472 - "quote", 473 - "syn", 474 - ] 475 - 476 - [[package]] 477 - name = "serde_json" 478 - version = "1.0.105" 479 - source = "registry+https://github.com/rust-lang/crates.io-index" 480 - checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" 481 - dependencies = [ 482 - "itoa", 483 - "ryu", 484 - "serde", 485 - ] 486 - 487 - [[package]] 488 - name = "smallvec" 489 - version = "1.11.1" 490 - source = "registry+https://github.com/rust-lang/crates.io-index" 491 - checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 492 - 493 - [[package]] 494 - name = "smawk" 495 - version = "0.3.2" 496 - source = "registry+https://github.com/rust-lang/crates.io-index" 497 - checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" 498 - 499 - [[package]] 500 - name = "strsim" 501 - version = "0.10.0" 502 - source = "registry+https://github.com/rust-lang/crates.io-index" 503 - checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 504 - 505 - [[package]] 506 - name = "syn" 507 - version = "2.0.29" 508 - source = "registry+https://github.com/rust-lang/crates.io-index" 509 - checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" 510 - dependencies = [ 511 - "proc-macro2", 512 - "quote", 513 - "unicode-ident", 514 - ] 515 - 516 - [[package]] 517 - name = "temp-env" 518 - version = "0.3.5" 519 - source = "registry+https://github.com/rust-lang/crates.io-index" 520 - checksum = "e010429b1f3ea1311190c658c7570100f03c1dab05c16cfab774181c648d656a" 521 - dependencies = [ 522 - "parking_lot", 523 - ] 524 - 525 - [[package]] 526 - name = "tempfile" 527 - version = "3.8.0" 528 - source = "registry+https://github.com/rust-lang/crates.io-index" 529 - checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" 530 - dependencies = [ 531 - "cfg-if", 532 - "fastrand", 533 - "redox_syscall", 534 - "rustix", 535 - "windows-sys", 536 - ] 537 - 538 - [[package]] 539 - name = "text-size" 540 - version = "1.1.1" 541 - source = "registry+https://github.com/rust-lang/crates.io-index" 542 - checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" 543 - 544 - [[package]] 545 - name = "textwrap" 546 - version = "0.16.1" 547 - source = "registry+https://github.com/rust-lang/crates.io-index" 548 - checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" 549 - dependencies = [ 550 - "smawk", 551 - "unicode-linebreak", 552 - "unicode-width", 553 - ] 554 - 555 - [[package]] 556 - name = "unicode-ident" 557 - version = "1.0.11" 558 - source = "registry+https://github.com/rust-lang/crates.io-index" 559 - checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 560 - 561 - [[package]] 562 - name = "unicode-linebreak" 563 - version = "0.1.5" 564 - source = "registry+https://github.com/rust-lang/crates.io-index" 565 - checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 566 - 567 - [[package]] 568 - name = "unicode-width" 569 - version = "0.1.11" 570 - source = "registry+https://github.com/rust-lang/crates.io-index" 571 - checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 572 - 573 - [[package]] 574 - name = "utf8parse" 575 - version = "0.2.1" 576 - source = "registry+https://github.com/rust-lang/crates.io-index" 577 - checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 578 - 579 - [[package]] 580 - name = "windows-sys" 581 - version = "0.48.0" 582 - source = "registry+https://github.com/rust-lang/crates.io-index" 583 - checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 584 - dependencies = [ 585 - "windows-targets", 586 - ] 587 - 588 - [[package]] 589 - name = "windows-targets" 590 - version = "0.48.5" 591 - source = "registry+https://github.com/rust-lang/crates.io-index" 592 - checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 593 - dependencies = [ 594 - "windows_aarch64_gnullvm", 595 - "windows_aarch64_msvc", 596 - "windows_i686_gnu", 597 - "windows_i686_msvc", 598 - "windows_x86_64_gnu", 599 - "windows_x86_64_gnullvm", 600 - "windows_x86_64_msvc", 601 - ] 602 - 603 - [[package]] 604 - name = "windows_aarch64_gnullvm" 605 - version = "0.48.5" 606 - source = "registry+https://github.com/rust-lang/crates.io-index" 607 - checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 608 - 609 - [[package]] 610 - name = "windows_aarch64_msvc" 611 - version = "0.48.5" 612 - source = "registry+https://github.com/rust-lang/crates.io-index" 613 - checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 614 - 615 - [[package]] 616 - name = "windows_i686_gnu" 617 - version = "0.48.5" 618 - source = "registry+https://github.com/rust-lang/crates.io-index" 619 - checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 620 - 621 - [[package]] 622 - name = "windows_i686_msvc" 623 - version = "0.48.5" 624 - source = "registry+https://github.com/rust-lang/crates.io-index" 625 - checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 626 - 627 - [[package]] 628 - name = "windows_x86_64_gnu" 629 - version = "0.48.5" 630 - source = "registry+https://github.com/rust-lang/crates.io-index" 631 - checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 632 - 633 - [[package]] 634 - name = "windows_x86_64_gnullvm" 635 - version = "0.48.5" 636 - source = "registry+https://github.com/rust-lang/crates.io-index" 637 - checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 638 - 639 - [[package]] 640 - name = "windows_x86_64_msvc" 641 - version = "0.48.5" 642 - source = "registry+https://github.com/rust-lang/crates.io-index" 643 - checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-23
pkgs/test/nixpkgs-check-by-name/Cargo.toml
··· 1 - [package] 2 - name = "nixpkgs-check-by-name" 3 - version = "0.1.0" 4 - edition = "2021" 5 - 6 - [dependencies] 7 - rnix = "0.11.0" 8 - regex = "1.9.3" 9 - clap = { version = "4.3.23", features = ["derive"] } 10 - serde_json = "1.0.105" 11 - tempfile = "3.8.0" 12 - serde = { version = "1.0.185", features = ["derive"] } 13 - anyhow = "1.0" 14 - lazy_static = "1.4.0" 15 - colored = "2.0.4" 16 - itertools = "0.11.0" 17 - rowan = "0.15.11" 18 - indoc = "2.0.4" 19 - relative-path = "1.9.2" 20 - textwrap = "0.16.1" 21 - 22 - [dev-dependencies] 23 - temp-env = "0.3.5"
-102
pkgs/test/nixpkgs-check-by-name/README.md
··· 1 - # Nixpkgs pkgs/by-name checker 2 - 3 - This directory implements a program to check the [validity](#validity-checks) of the `pkgs/by-name` Nixpkgs directory. 4 - This is part of the implementation of [RFC 140](https://github.com/NixOS/rfcs/pull/140). 5 - 6 - A [pinned version](./scripts/pinned-tool.json) of this tool is used by [this GitHub Actions workflow](../../../.github/workflows/check-by-name.yml). 7 - See [./scripts](./scripts/README.md#update-pinned-toolsh) for how to update the pinned version. 8 - 9 - The source of the tool being right inside Nixpkgs allows any Nixpkgs committer to make updates to it. 10 - 11 - ## Interface 12 - 13 - The interface of the tool is shown with `--help`: 14 - ``` 15 - cargo run -- --help 16 - ``` 17 - 18 - The interface may be changed over time only if the CI workflow making use of it is adjusted to deal with the change appropriately. 19 - 20 - ## Validity checks 21 - 22 - These checks are performed by this tool: 23 - 24 - ### File structure checks 25 - - `pkgs/by-name` must only contain subdirectories of the form `${shard}/${name}`, called _package directories_. 26 - - The `name`'s of package directories must be unique when lowercased. 27 - - `name` is a string only consisting of the ASCII characters `a-z`, `A-Z`, `0-9`, `-` or `_`. 28 - - `shard` is the lowercased first two letters of `name`, expressed in Nix: `shard = toLower (substring 0 2 name)`. 29 - - Each package directory must contain a `package.nix` file and may contain arbitrary other files. 30 - 31 - ### Nix parser checks 32 - - Each package directory must not refer to files outside itself using symlinks or Nix path expressions. 33 - 34 - ### Nix evaluation checks 35 - 36 - Evaluate Nixpkgs with `system` set to `x86_64-linux` and check that: 37 - - For each package directory, the `pkgs.${name}` attribute must be defined as `callPackage pkgs/by-name/${shard}/${name}/package.nix args` for some `args`. 38 - - For each package directory, `pkgs.lib.isDerivation pkgs.${name}` must be `true`. 39 - 40 - ### Ratchet checks 41 - 42 - Furthermore, this tool implements certain [ratchet](https://qntm.org/ratchet) checks. 43 - This allows gradually phasing out deprecated patterns without breaking the base branch or having to migrate it all at once. 44 - It works by not allowing new instances of the pattern to be introduced, but allowing already existing instances. 45 - The existing instances are coming from `<BASE_NIXPKGS>`, which is then checked against `<NIXPKGS>` for new instances. 46 - Ratchets should be removed eventually once the pattern is not used anymore. 47 - 48 - The current ratchets are: 49 - 50 - - New manual definitions of `pkgs.${name}` (e.g. in `pkgs/top-level/all-packages.nix`) with `args = { }` 51 - (see [nix evaluation checks](#nix-evaluation-checks)) must not be introduced. 52 - - New top-level packages defined using `pkgs.callPackage` must be defined with a package directory. 53 - - Once a top-level package uses `pkgs/by-name`, it also can't be moved back out of it. 54 - 55 - ## Development 56 - 57 - Enter the development environment in this directory either automatically with `direnv` or with 58 - ``` 59 - nix-shell 60 - ``` 61 - 62 - Then use `cargo`: 63 - ``` 64 - cargo build 65 - cargo test 66 - cargo fmt 67 - cargo clippy 68 - ``` 69 - 70 - ## Tests 71 - 72 - Tests are declared in [`./tests`](./tests) as subdirectories imitating Nixpkgs with these files: 73 - - `default.nix`: 74 - Always contains 75 - ```nix 76 - import <test-nixpkgs> { root = ./.; } 77 - ``` 78 - which makes 79 - ``` 80 - nix-instantiate <subdir> --eval -A <attr> --arg overlays <overlays> 81 - ``` 82 - work very similarly to the real Nixpkgs, just enough for the program to be able to test it. 83 - - `pkgs/by-name`: 84 - The `pkgs/by-name` directory to check. 85 - 86 - - `all-packages.nix` (optional): 87 - Contains an overlay of the form 88 - ```nix 89 - self: super: { 90 - # ... 91 - } 92 - ``` 93 - allowing the simulation of package overrides to the real [`pkgs/top-level/all-packages.nix`](../../top-level/all-packages.nix`). 94 - The default is an empty overlay. 95 - 96 - - `base` (optional): 97 - Contains another subdirectory imitating Nixpkgs with potentially any of the above structures. 98 - This is used for [ratchet checks](#ratchet-checks). 99 - 100 - - `expected` (optional): 101 - A file containing the expected standard output. 102 - The default is expecting an empty standard output.
-82
pkgs/test/nixpkgs-check-by-name/default.nix
··· 1 - { 2 - lib, 3 - rustPlatform, 4 - nix, 5 - rustfmt, 6 - clippy, 7 - mkShell, 8 - makeWrapper, 9 - runCommand, 10 - }: 11 - let 12 - runtimeExprPath = ./src/eval.nix; 13 - nixpkgsLibPath = ../../../lib; 14 - testNixpkgsPath = ./tests/mock-nixpkgs.nix; 15 - 16 - # Needed to make Nix evaluation work inside nix builds 17 - initNix = '' 18 - export TEST_ROOT=$(pwd)/test-tmp 19 - export NIX_CONF_DIR=$TEST_ROOT/etc 20 - export NIX_LOCALSTATE_DIR=$TEST_ROOT/var 21 - export NIX_LOG_DIR=$TEST_ROOT/var/log/nix 22 - export NIX_STATE_DIR=$TEST_ROOT/var/nix 23 - export NIX_STORE_DIR=$TEST_ROOT/store 24 - 25 - # Ensure that even if tests run in parallel, we don't get an error 26 - # We'd run into https://github.com/NixOS/nix/issues/2706 unless the store is initialised first 27 - nix-store --init 28 - ''; 29 - 30 - fs = lib.fileset; 31 - 32 - package = 33 - rustPlatform.buildRustPackage { 34 - name = "nixpkgs-check-by-name"; 35 - src = fs.toSource { 36 - root = ./.; 37 - fileset = fs.unions [ 38 - ./Cargo.lock 39 - ./Cargo.toml 40 - ./src 41 - ./tests 42 - ]; 43 - }; 44 - cargoLock.lockFile = ./Cargo.lock; 45 - nativeBuildInputs = [ 46 - nix 47 - rustfmt 48 - clippy 49 - makeWrapper 50 - ]; 51 - env.NIX_CHECK_BY_NAME_EXPR_PATH = "${runtimeExprPath}"; 52 - env.NIX_PATH = "test-nixpkgs=${testNixpkgsPath}:test-nixpkgs/lib=${nixpkgsLibPath}"; 53 - preCheck = initNix; 54 - postCheck = '' 55 - cargo fmt --check 56 - cargo clippy -- -D warnings 57 - ''; 58 - postInstall = '' 59 - wrapProgram $out/bin/nixpkgs-check-by-name \ 60 - --set NIX_CHECK_BY_NAME_EXPR_PATH "$NIX_CHECK_BY_NAME_EXPR_PATH" 61 - ''; 62 - passthru.shell = mkShell { 63 - env.NIX_CHECK_BY_NAME_EXPR_PATH = toString runtimeExprPath; 64 - env.NIX_PATH = "test-nixpkgs=${toString testNixpkgsPath}:test-nixpkgs/lib=${toString nixpkgsLibPath}"; 65 - inputsFrom = [ package ]; 66 - }; 67 - 68 - # Tests the tool on the current Nixpkgs tree, this is a good sanity check 69 - passthru.tests.nixpkgs = runCommand "test-nixpkgs-check-by-name" { 70 - nativeBuildInputs = [ 71 - package 72 - nix 73 - ]; 74 - nixpkgsPath = lib.cleanSource ../../..; 75 - } '' 76 - ${initNix} 77 - nixpkgs-check-by-name --base "$nixpkgsPath" "$nixpkgsPath" 78 - touch $out 79 - ''; 80 - }; 81 - in 82 - package
+5 -12
pkgs/test/nixpkgs-check-by-name/scripts/README.md pkgs/test/check-by-name/README.md
··· 1 - # CI-related Scripts 1 + # `pkgs/by-name` check CI scripts 2 2 3 3 This directory contains scripts and files used and related to the CI running the `pkgs/by-name` checks in Nixpkgs. 4 - See also the [CI GitHub Action](../../../../.github/workflows/check-by-name.yml). 4 + See also the [CI GitHub Action](../../../.github/workflows/check-by-name.yml). 5 5 6 6 ## `./run-local.sh BASE_BRANCH [REPOSITORY]` 7 7 ··· 18 18 19 19 ## `./update-pinned-tool.sh` 20 20 21 - Updates the pinned CI tool in [`./pinned-tool.json`](./pinned-tool.json) to the 22 - [latest version from the `nixos-unstable` channel](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.tests.nixpkgs-check-by-name.x86_64-linux). 21 + Updates the pinned [nixpkgs-check-by-name tool](https://github.com/NixOS/nixpkgs-check-by-name) in [`./pinned-version.txt`](./pinned-version.txt) to the latest [release](https://github.com/NixOS/nixpkgs-check-by-name/releases). 22 + Each release contains a pre-built x86_64-linux version of the tool which is used by CI. 23 23 24 - This script needs to be called manually when the CI tooling needs to be updated. 25 - 26 - The `pinned-tool.json` file gets populated with both: 27 - - The `/nix/store` path for `x86_64-linux`, such that CI doesn't have to evaluate Nixpkgs and can directly fetch it from the cache instead. 28 - - The Nixpkgs revision, such that the `./run-local.sh` script can be used to run the checks locally on any system. 29 - 30 - To ensure that the tool is always pre-built for `x86_64-linux` in the `nixos-unstable` channel, 31 - it's included in the `tested` jobset description in [`nixos/release-combined.nix`](../../../nixos/release-combined.nix). 24 + This script currently needs to be called manually when the CI tooling needs to be updated. 32 25 33 26 Why not just build the tooling right from the PRs Nixpkgs version? 34 27 - Because it allows CI to check all PRs, even if they would break the CI tooling.
-4
pkgs/test/nixpkgs-check-by-name/scripts/pinned-tool.json
··· 1 - { 2 - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", 3 - "ci-path": "/nix/store/w6w7khwfq6qzm4bsyijhg7m2kqv9f9jl-nixpkgs-check-by-name" 4 - }
-82
pkgs/test/nixpkgs-check-by-name/scripts/run-local.sh
··· 1 - #!/usr/bin/env nix-shell 2 - #!nix-shell -i bash -p jq 3 - 4 - set -o pipefail -o errexit -o nounset 5 - 6 - trace() { echo >&2 "$@"; } 7 - 8 - tmp=$(mktemp -d) 9 - cleanup() { 10 - # Don't exit early if anything fails to cleanup 11 - set +o errexit 12 - 13 - trace -n "Cleaning up.. " 14 - 15 - [[ -e "$tmp/base" ]] && git worktree remove --force "$tmp/base" 16 - [[ -e "$tmp/merged" ]] && git worktree remove --force "$tmp/merged" 17 - [[ -e "$tmp/tool-nixpkgs" ]] && git worktree remove --force "$tmp/tool-nixpkgs" 18 - 19 - rm -rf "$tmp" 20 - 21 - trace "Done" 22 - } 23 - trap cleanup exit 24 - 25 - 26 - repo=https://github.com/NixOS/nixpkgs.git 27 - 28 - if (( $# != 0 )); then 29 - baseBranch=$1 30 - shift 31 - else 32 - trace "Usage: $0 BASE_BRANCH [REPOSITORY]" 33 - trace "BASE_BRANCH: The base branch to use, e.g. master or release-23.11" 34 - trace "REPOSITORY: The repository to fetch the base branch from, defaults to $repo" 35 - exit 1 36 - fi 37 - 38 - if (( $# != 0 )); then 39 - repo=$1 40 - shift 41 - fi 42 - 43 - if [[ -n "$(git status --porcelain)" ]]; then 44 - trace -e "\e[33mWarning: Dirty tree, uncommitted changes won't be taken into account\e[0m" 45 - fi 46 - headSha=$(git rev-parse HEAD) 47 - trace -e "Using HEAD commit \e[34m$headSha\e[0m" 48 - 49 - trace -n "Creating Git worktree for the HEAD commit in $tmp/merged.. " 50 - git worktree add --detach -q "$tmp/merged" HEAD 51 - trace "Done" 52 - 53 - trace -n "Fetching base branch $baseBranch to compare against.. " 54 - git fetch -q "$repo" refs/heads/"$baseBranch" 55 - baseSha=$(git rev-parse FETCH_HEAD) 56 - trace -e "\e[34m$baseSha\e[0m" 57 - 58 - trace -n "Creating Git worktree for the base branch in $tmp/base.. " 59 - git worktree add -q "$tmp/base" "$baseSha" 60 - trace "Done" 61 - 62 - trace -n "Merging base branch into the HEAD commit in $tmp/merged.. " 63 - git -C "$tmp/merged" merge -q --no-edit "$baseSha" 64 - trace -e "\e[34m$(git -C "$tmp/merged" rev-parse HEAD)\e[0m" 65 - 66 - trace -n "Reading pinned nixpkgs-check-by-name revision from pinned-tool.json.. " 67 - toolSha=$(jq -r .rev "$tmp/merged/pkgs/test/nixpkgs-check-by-name/scripts/pinned-tool.json") 68 - trace -e "\e[34m$toolSha\e[0m" 69 - 70 - trace -n "Creating Git worktree for the nixpkgs-check-by-name revision in $tmp/tool-nixpkgs.. " 71 - git worktree add -q "$tmp/tool-nixpkgs" "$toolSha" 72 - trace "Done" 73 - 74 - trace "Building/fetching nixpkgs-check-by-name.." 75 - nix-build -o "$tmp/tool" "$tmp/tool-nixpkgs" \ 76 - -A tests.nixpkgs-check-by-name \ 77 - --arg config '{}' \ 78 - --arg overlays '[]' \ 79 - -j 0 80 - 81 - trace "Running nixpkgs-check-by-name.." 82 - "$tmp/tool/bin/nixpkgs-check-by-name" --base "$tmp/base" "$tmp/merged"
-40
pkgs/test/nixpkgs-check-by-name/scripts/update-pinned-tool.sh
··· 1 - #!/usr/bin/env nix-shell 2 - #!nix-shell -i bash -p jq 3 - 4 - set -o pipefail -o errexit -o nounset 5 - 6 - trace() { echo >&2 "$@"; } 7 - 8 - SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 9 - 10 - # Determined by `runs-on: ubuntu-latest` in .github/workflows/check-by-name.yml 11 - CI_SYSTEM=x86_64-linux 12 - 13 - channel=nixos-unstable 14 - pin_file=$SCRIPT_DIR/pinned-tool.json 15 - 16 - trace -n "Fetching latest version of channel $channel.. " 17 - # This is probably the easiest way to get Nix to output the path to a downloaded channel! 18 - nixpkgs=$(nix-instantiate --find-file nixpkgs -I nixpkgs=channel:"$channel") 19 - trace "$nixpkgs" 20 - 21 - # This file only exists in channels 22 - rev=$(<"$nixpkgs/.git-revision") 23 - trace -e "Git revision of channel $channel is \e[34m$rev\e[0m" 24 - 25 - trace -n "Fetching the prebuilt version of nixpkgs-check-by-name for $CI_SYSTEM.. " 26 - # This is the architecture used by CI, we want to prefetch the exact path to avoid having to evaluate Nixpkgs 27 - ci_path=$(nix-build --no-out-link "$nixpkgs" \ 28 - -A tests.nixpkgs-check-by-name \ 29 - --arg config '{}' \ 30 - --argstr system "$CI_SYSTEM" \ 31 - --arg overlays '[]' \ 32 - -j 0 \ 33 - | tee /dev/stderr) 34 - 35 - trace "Updating $pin_file" 36 - jq -n \ 37 - --arg rev "$rev" \ 38 - --arg ci-path "$ci_path" \ 39 - '$ARGS.named' \ 40 - > "$pin_file"
-6
pkgs/test/nixpkgs-check-by-name/shell.nix
··· 1 - let 2 - pkgs = import ../../.. { 3 - config = {}; 4 - overlays = []; 5 - }; 6 - in pkgs.tests.nixpkgs-check-by-name.shell
-116
pkgs/test/nixpkgs-check-by-name/src/eval.nix
··· 1 - # Takes a path to nixpkgs and a path to the json-encoded list of `pkgs/by-name` attributes. 2 - # Returns a value containing information on all Nixpkgs attributes 3 - # which is decoded on the Rust side. 4 - # See ./eval.rs for the meaning of the returned values 5 - { 6 - attrsPath, 7 - nixpkgsPath, 8 - }: 9 - let 10 - attrs = builtins.fromJSON (builtins.readFile attrsPath); 11 - 12 - # We need to check whether attributes are defined manually e.g. in 13 - # `all-packages.nix`, automatically by the `pkgs/by-name` overlay, or 14 - # neither. The only way to do so is to override `callPackage` and 15 - # `_internalCallByNamePackageFile` with our own version that adds this 16 - # information to the result, and then try to access it. 17 - overlay = final: prev: { 18 - 19 - # Adds information to each attribute about whether it's manually defined using `callPackage` 20 - callPackage = fn: args: 21 - addVariantInfo (prev.callPackage fn args) { 22 - # This is a manual definition of the attribute, and it's a callPackage, specifically a semantic callPackage 23 - ManualDefinition.is_semantic_call_package = true; 24 - }; 25 - 26 - # Adds information to each attribute about whether it's automatically 27 - # defined by the `pkgs/by-name` overlay. This internal attribute is only 28 - # used by that overlay. 29 - # This overrides the above `callPackage` information (we don't need that 30 - # one, since `pkgs/by-name` always uses `callPackage` underneath. 31 - _internalCallByNamePackageFile = file: 32 - addVariantInfo (prev._internalCallByNamePackageFile file) { 33 - AutoDefinition = null; 34 - }; 35 - 36 - }; 37 - 38 - # We can't just replace attribute values with their info in the overlay, 39 - # because attributes can depend on other attributes, so this would break evaluation. 40 - addVariantInfo = value: variant: 41 - if builtins.isAttrs value then 42 - value // { 43 - _callPackageVariant = variant; 44 - } 45 - else 46 - # It's very rare that callPackage doesn't return an attribute set, but it can occur. 47 - # In such a case we can't really return anything sensible that would include the info, 48 - # so just don't return the value directly and treat it as if it wasn't a callPackage. 49 - value; 50 - 51 - pkgs = import nixpkgsPath { 52 - # Don't let the users home directory influence this result 53 - config = { }; 54 - overlays = [ overlay ]; 55 - # We check evaluation and callPackage only for x86_64-linux. 56 - # Not ideal, but hard to fix 57 - system = "x86_64-linux"; 58 - }; 59 - 60 - # See AttributeInfo in ./eval.rs for the meaning of this 61 - attrInfo = name: value: { 62 - location = builtins.unsafeGetAttrPos name pkgs; 63 - attribute_variant = 64 - if ! builtins.isAttrs value then 65 - { NonAttributeSet = null; } 66 - else 67 - { 68 - AttributeSet = { 69 - is_derivation = pkgs.lib.isDerivation value; 70 - definition_variant = 71 - if ! value ? _callPackageVariant then 72 - { ManualDefinition.is_semantic_call_package = false; } 73 - else 74 - value._callPackageVariant; 75 - }; 76 - }; 77 - }; 78 - 79 - # Information on all attributes that are in pkgs/by-name. 80 - byNameAttrs = builtins.listToAttrs (map (name: { 81 - inherit name; 82 - value.ByName = 83 - if ! pkgs ? ${name} then 84 - { Missing = null; } 85 - else 86 - # Evaluation failures are not allowed, so don't try to catch them 87 - { Existing = attrInfo name pkgs.${name}; }; 88 - }) attrs); 89 - 90 - # Information on all attributes that exist but are not in pkgs/by-name. 91 - # We need this to enforce pkgs/by-name for new packages 92 - nonByNameAttrs = builtins.mapAttrs (name: value: 93 - let 94 - # Packages outside `pkgs/by-name` often fail evaluation, 95 - # so we need to handle that 96 - output = attrInfo name value; 97 - result = builtins.tryEval (builtins.deepSeq output null); 98 - in 99 - { 100 - NonByName = 101 - if result.success then 102 - { EvalSuccess = output; } 103 - else 104 - { EvalFailure = null; }; 105 - } 106 - ) (builtins.removeAttrs pkgs attrs); 107 - 108 - # All attributes 109 - attributes = byNameAttrs // nonByNameAttrs; 110 - in 111 - # We output them in the form [ [ <name> <value> ] ]` such that the Rust side 112 - # doesn't need to sort them again to get deterministic behavior (good for testing) 113 - map (name: [ 114 - name 115 - attributes.${name} 116 - ]) (builtins.attrNames attributes)
-559
pkgs/test/nixpkgs-check-by-name/src/eval.rs
··· 1 - use crate::nix_file::CallPackageArgumentInfo; 2 - use crate::nixpkgs_problem::NixpkgsProblem; 3 - use crate::ratchet; 4 - use crate::ratchet::RatchetState::Loose; 5 - use crate::ratchet::RatchetState::Tight; 6 - use crate::structure; 7 - use crate::utils; 8 - use crate::validation::ResultIteratorExt as _; 9 - use crate::validation::{self, Validation::Success}; 10 - use crate::NixFileStore; 11 - use relative_path::RelativePathBuf; 12 - use std::path::Path; 13 - 14 - use anyhow::Context; 15 - use serde::Deserialize; 16 - use std::path::PathBuf; 17 - use std::process; 18 - use tempfile::NamedTempFile; 19 - 20 - /// Attribute set of this structure is returned by eval.nix 21 - #[derive(Deserialize)] 22 - enum Attribute { 23 - /// An attribute that should be defined via pkgs/by-name 24 - ByName(ByNameAttribute), 25 - /// An attribute not defined via pkgs/by-name 26 - NonByName(NonByNameAttribute), 27 - } 28 - 29 - #[derive(Deserialize)] 30 - enum NonByNameAttribute { 31 - /// The attribute doesn't evaluate 32 - EvalFailure, 33 - EvalSuccess(AttributeInfo), 34 - } 35 - 36 - #[derive(Deserialize)] 37 - enum ByNameAttribute { 38 - /// The attribute doesn't exist at all 39 - Missing, 40 - Existing(AttributeInfo), 41 - } 42 - 43 - #[derive(Deserialize)] 44 - struct AttributeInfo { 45 - /// The location of the attribute as returned by `builtins.unsafeGetAttrPos` 46 - location: Option<Location>, 47 - attribute_variant: AttributeVariant, 48 - } 49 - 50 - /// The structure returned by a successful `builtins.unsafeGetAttrPos` 51 - #[derive(Deserialize, Clone, Debug)] 52 - struct Location { 53 - pub file: PathBuf, 54 - pub line: usize, 55 - pub column: usize, 56 - } 57 - 58 - impl Location { 59 - // Returns the [file] field, but relative to Nixpkgs 60 - fn relative_file(&self, nixpkgs_path: &Path) -> anyhow::Result<RelativePathBuf> { 61 - let path = self.file.strip_prefix(nixpkgs_path).with_context(|| { 62 - format!( 63 - "The file ({}) is outside Nixpkgs ({})", 64 - self.file.display(), 65 - nixpkgs_path.display() 66 - ) 67 - })?; 68 - Ok(RelativePathBuf::from_path(path).expect("relative path")) 69 - } 70 - } 71 - 72 - #[derive(Deserialize)] 73 - pub enum AttributeVariant { 74 - /// The attribute is not an attribute set, we're limited in the amount of information we can get 75 - /// from it (though it's obviously not a derivation) 76 - NonAttributeSet, 77 - AttributeSet { 78 - /// Whether the attribute is a derivation (`lib.isDerivation`) 79 - is_derivation: bool, 80 - /// The type of callPackage 81 - definition_variant: DefinitionVariant, 82 - }, 83 - } 84 - 85 - #[derive(Deserialize)] 86 - pub enum DefinitionVariant { 87 - /// An automatic definition by the `pkgs/by-name` overlay 88 - /// Though it's detected using the internal _internalCallByNamePackageFile attribute, 89 - /// which can in theory also be used by other code 90 - AutoDefinition, 91 - /// A manual definition of the attribute, typically in `all-packages.nix` 92 - ManualDefinition { 93 - /// Whether the attribute is defined as `pkgs.callPackage ...` or something else. 94 - is_semantic_call_package: bool, 95 - }, 96 - } 97 - 98 - /// Check that the Nixpkgs attribute values corresponding to the packages in pkgs/by-name are 99 - /// of the form `callPackage <package_file> { ... }`. 100 - /// See the `eval.nix` file for how this is achieved on the Nix side 101 - pub fn check_values( 102 - nixpkgs_path: &Path, 103 - nix_file_store: &mut NixFileStore, 104 - package_names: Vec<String>, 105 - keep_nix_path: bool, 106 - ) -> validation::Result<ratchet::Nixpkgs> { 107 - // Write the list of packages we need to check into a temporary JSON file. 108 - // This can then get read by the Nix evaluation. 109 - let attrs_file = NamedTempFile::new().with_context(|| "Failed to create a temporary file")?; 110 - // We need to canonicalise this path because if it's a symlink (which can be the case on 111 - // Darwin), Nix would need to read both the symlink and the target path, therefore need 2 112 - // NIX_PATH entries for restrict-eval. But if we resolve the symlinks then only one predictable 113 - // entry is needed. 114 - let attrs_file_path = attrs_file.path().canonicalize()?; 115 - 116 - serde_json::to_writer(&attrs_file, &package_names).with_context(|| { 117 - format!( 118 - "Failed to serialise the package names to the temporary path {}", 119 - attrs_file_path.display() 120 - ) 121 - })?; 122 - 123 - let expr_path = std::env::var("NIX_CHECK_BY_NAME_EXPR_PATH") 124 - .with_context(|| "Could not get environment variable NIX_CHECK_BY_NAME_EXPR_PATH")?; 125 - // With restrict-eval, only paths in NIX_PATH can be accessed, so we explicitly specify the 126 - // ones needed needed 127 - let mut command = process::Command::new("nix-instantiate"); 128 - command 129 - // Inherit stderr so that error messages always get shown 130 - .stderr(process::Stdio::inherit()) 131 - .args([ 132 - "--eval", 133 - "--json", 134 - "--strict", 135 - "--readonly-mode", 136 - "--restrict-eval", 137 - "--show-trace", 138 - ]) 139 - // Pass the path to the attrs_file as an argument and add it to the NIX_PATH so it can be 140 - // accessed in restrict-eval mode 141 - .args(["--arg", "attrsPath"]) 142 - .arg(&attrs_file_path) 143 - .arg("-I") 144 - .arg(&attrs_file_path) 145 - // Same for the nixpkgs to test 146 - .args(["--arg", "nixpkgsPath"]) 147 - .arg(nixpkgs_path) 148 - .arg("-I") 149 - .arg(nixpkgs_path); 150 - 151 - // Clear NIX_PATH to be sure it doesn't influence the result 152 - // But not when requested to keep it, used so that the tests can pass extra Nix files 153 - if !keep_nix_path { 154 - command.env_remove("NIX_PATH"); 155 - } 156 - 157 - command.args(["-I", &expr_path]); 158 - command.arg(expr_path); 159 - 160 - let result = command 161 - .output() 162 - .with_context(|| format!("Failed to run command {command:?}"))?; 163 - 164 - if !result.status.success() { 165 - anyhow::bail!("Failed to run command {command:?}"); 166 - } 167 - // Parse the resulting JSON value 168 - let attributes: Vec<(String, Attribute)> = serde_json::from_slice(&result.stdout) 169 - .with_context(|| { 170 - format!( 171 - "Failed to deserialise {}", 172 - String::from_utf8_lossy(&result.stdout) 173 - ) 174 - })?; 175 - 176 - let check_result = validation::sequence( 177 - attributes 178 - .into_iter() 179 - .map(|(attribute_name, attribute_value)| { 180 - let check_result = match attribute_value { 181 - Attribute::NonByName(non_by_name_attribute) => handle_non_by_name_attribute( 182 - nixpkgs_path, 183 - nix_file_store, 184 - &attribute_name, 185 - non_by_name_attribute, 186 - )?, 187 - Attribute::ByName(by_name_attribute) => by_name( 188 - nix_file_store, 189 - nixpkgs_path, 190 - &attribute_name, 191 - by_name_attribute, 192 - )?, 193 - }; 194 - Ok::<_, anyhow::Error>(check_result.map(|value| (attribute_name.clone(), value))) 195 - }) 196 - .collect_vec()?, 197 - ); 198 - 199 - Ok(check_result.map(|elems| ratchet::Nixpkgs { 200 - package_names: elems.iter().map(|(name, _)| name.to_owned()).collect(), 201 - package_map: elems.into_iter().collect(), 202 - })) 203 - } 204 - 205 - /// Handles the evaluation result for an attribute in `pkgs/by-name`, 206 - /// turning it into a validation result. 207 - fn by_name( 208 - nix_file_store: &mut NixFileStore, 209 - nixpkgs_path: &Path, 210 - attribute_name: &str, 211 - by_name_attribute: ByNameAttribute, 212 - ) -> validation::Result<ratchet::Package> { 213 - use ratchet::RatchetState::*; 214 - use ByNameAttribute::*; 215 - 216 - let relative_package_file = structure::relative_file_for_package(attribute_name); 217 - 218 - // At this point we know that `pkgs/by-name/fo/foo/package.nix` has to exists. 219 - // This match decides whether the attribute `foo` is defined accordingly 220 - // and whether a legacy manual definition could be removed 221 - let manual_definition_result = match by_name_attribute { 222 - // The attribute is missing 223 - Missing => { 224 - // This indicates a bug in the `pkgs/by-name` overlay, because it's supposed to 225 - // automatically defined attributes in `pkgs/by-name` 226 - NixpkgsProblem::UndefinedAttr { 227 - relative_package_file: relative_package_file.to_owned(), 228 - package_name: attribute_name.to_owned(), 229 - } 230 - .into() 231 - } 232 - // The attribute exists 233 - Existing(AttributeInfo { 234 - // But it's not an attribute set, which limits the amount of information we can get 235 - // about this attribute (see ./eval.nix) 236 - attribute_variant: AttributeVariant::NonAttributeSet, 237 - location: _location, 238 - }) => { 239 - // The only thing we know is that it's definitely not a derivation, since those are 240 - // always attribute sets. 241 - // 242 - // We can't know whether the attribute is automatically or manually defined for sure, 243 - // and while we could check the location, the error seems clear enough as is. 244 - NixpkgsProblem::NonDerivation { 245 - relative_package_file: relative_package_file.to_owned(), 246 - package_name: attribute_name.to_owned(), 247 - } 248 - .into() 249 - } 250 - // The attribute exists 251 - Existing(AttributeInfo { 252 - // And it's an attribute set, which allows us to get more information about it 253 - attribute_variant: 254 - AttributeVariant::AttributeSet { 255 - is_derivation, 256 - definition_variant, 257 - }, 258 - location, 259 - }) => { 260 - // Only derivations are allowed in `pkgs/by-name` 261 - let is_derivation_result = if is_derivation { 262 - Success(()) 263 - } else { 264 - NixpkgsProblem::NonDerivation { 265 - relative_package_file: relative_package_file.to_owned(), 266 - package_name: attribute_name.to_owned(), 267 - } 268 - .into() 269 - }; 270 - 271 - // If the definition looks correct 272 - let variant_result = match definition_variant { 273 - // An automatic `callPackage` by the `pkgs/by-name` overlay. 274 - // Though this gets detected by checking whether the internal 275 - // `_internalCallByNamePackageFile` was used 276 - DefinitionVariant::AutoDefinition => { 277 - if let Some(_location) = location { 278 - // Such an automatic definition should definitely not have a location 279 - // Having one indicates that somebody is using `_internalCallByNamePackageFile`, 280 - NixpkgsProblem::InternalCallPackageUsed { 281 - attr_name: attribute_name.to_owned(), 282 - } 283 - .into() 284 - } else { 285 - Success(Tight) 286 - } 287 - } 288 - // The attribute is manually defined, e.g. in `all-packages.nix`. 289 - // This means we need to enforce it to look like this: 290 - // callPackage ../pkgs/by-name/fo/foo/package.nix { ... } 291 - DefinitionVariant::ManualDefinition { 292 - is_semantic_call_package, 293 - } => { 294 - // We should expect manual definitions to have a location, otherwise we can't 295 - // enforce the expected format 296 - if let Some(location) = location { 297 - // Parse the Nix file in the location 298 - let nix_file = nix_file_store.get(&location.file)?; 299 - 300 - // The relative path of the Nix file, for error messages 301 - let relative_location_file = location.relative_file(nixpkgs_path).with_context(|| { 302 - format!("Failed to resolve the file where attribute {attribute_name} is defined") 303 - })?; 304 - 305 - // Figure out whether it's an attribute definition of the form `= callPackage <arg1> <arg2>`, 306 - // returning the arguments if so. 307 - let (optional_syntactic_call_package, definition) = nix_file 308 - .call_package_argument_info_at(location.line, location.column, nixpkgs_path) 309 - .with_context(|| { 310 - format!("Failed to get the definition info for attribute {attribute_name}") 311 - })?; 312 - 313 - by_name_override( 314 - attribute_name, 315 - relative_package_file, 316 - is_semantic_call_package, 317 - optional_syntactic_call_package, 318 - definition, 319 - location, 320 - relative_location_file, 321 - ) 322 - } else { 323 - // If manual definitions don't have a location, it's likely `mapAttrs`'d 324 - // over, e.g. if it's defined in aliases.nix. 325 - // We can't verify whether its of the expected `callPackage`, so error out 326 - NixpkgsProblem::CannotDetermineAttributeLocation { 327 - attr_name: attribute_name.to_owned(), 328 - } 329 - .into() 330 - } 331 - } 332 - }; 333 - 334 - // Independently report problems about whether it's a derivation and the callPackage variant 335 - is_derivation_result.and(variant_result) 336 - } 337 - }; 338 - Ok( 339 - // Packages being checked in this function are _always_ already defined in `pkgs/by-name`, 340 - // so instead of repeating ourselves all the time to define `uses_by_name`, just set it 341 - // once at the end with a map 342 - manual_definition_result.map(|manual_definition| ratchet::Package { 343 - manual_definition, 344 - uses_by_name: Tight, 345 - }), 346 - ) 347 - } 348 - 349 - /// Handles the case for packages in `pkgs/by-name` that are manually overridden, e.g. in 350 - /// all-packages.nix 351 - fn by_name_override( 352 - attribute_name: &str, 353 - expected_package_file: RelativePathBuf, 354 - is_semantic_call_package: bool, 355 - optional_syntactic_call_package: Option<CallPackageArgumentInfo>, 356 - definition: String, 357 - location: Location, 358 - relative_location_file: RelativePathBuf, 359 - ) -> validation::Validation<ratchet::RatchetState<ratchet::ManualDefinition>> { 360 - // At this point, we completed two different checks for whether it's a 361 - // `callPackage` 362 - match (is_semantic_call_package, optional_syntactic_call_package) { 363 - // Something like `<attr> = foo` 364 - (_, None) => NixpkgsProblem::NonSyntacticCallPackage { 365 - package_name: attribute_name.to_owned(), 366 - file: relative_location_file, 367 - line: location.line, 368 - column: location.column, 369 - definition, 370 - } 371 - .into(), 372 - // Something like `<attr> = pythonPackages.callPackage ...` 373 - (false, Some(_)) => NixpkgsProblem::NonToplevelCallPackage { 374 - package_name: attribute_name.to_owned(), 375 - file: relative_location_file, 376 - line: location.line, 377 - column: location.column, 378 - definition, 379 - } 380 - .into(), 381 - // Something like `<attr> = pkgs.callPackage ...` 382 - (true, Some(syntactic_call_package)) => { 383 - if let Some(actual_package_file) = syntactic_call_package.relative_path { 384 - if actual_package_file != expected_package_file { 385 - // Wrong path 386 - NixpkgsProblem::WrongCallPackagePath { 387 - package_name: attribute_name.to_owned(), 388 - file: relative_location_file, 389 - line: location.line, 390 - actual_path: actual_package_file, 391 - expected_path: expected_package_file, 392 - } 393 - .into() 394 - } else { 395 - // Manual definitions with empty arguments are not allowed 396 - // anymore, but existing ones should continue to be allowed 397 - let manual_definition_ratchet = if syntactic_call_package.empty_arg { 398 - // This is the state to migrate away from 399 - Loose(NixpkgsProblem::EmptyArgument { 400 - package_name: attribute_name.to_owned(), 401 - file: relative_location_file, 402 - line: location.line, 403 - column: location.column, 404 - definition, 405 - }) 406 - } else { 407 - // This is the state to migrate to 408 - Tight 409 - }; 410 - 411 - Success(manual_definition_ratchet) 412 - } 413 - } else { 414 - // No path 415 - NixpkgsProblem::NonPath { 416 - package_name: attribute_name.to_owned(), 417 - file: relative_location_file, 418 - line: location.line, 419 - column: location.column, 420 - definition, 421 - } 422 - .into() 423 - } 424 - } 425 - } 426 - } 427 - 428 - /// Handles the evaluation result for an attribute _not_ in `pkgs/by-name`, 429 - /// turning it into a validation result. 430 - fn handle_non_by_name_attribute( 431 - nixpkgs_path: &Path, 432 - nix_file_store: &mut NixFileStore, 433 - attribute_name: &str, 434 - non_by_name_attribute: NonByNameAttribute, 435 - ) -> validation::Result<ratchet::Package> { 436 - use ratchet::RatchetState::*; 437 - use NonByNameAttribute::*; 438 - 439 - // The ratchet state whether this attribute uses `pkgs/by-name`. 440 - // This is never `Tight`, because we only either: 441 - // - Know that the attribute _could_ be migrated to `pkgs/by-name`, which is `Loose` 442 - // - Or we're unsure, in which case we use NonApplicable 443 - let uses_by_name = 444 - // This is a big ol' match on various properties of the attribute 445 - 446 - // First, it needs to succeed evaluation. We can't know whether an attribute could be 447 - // migrated to `pkgs/by-name` if it doesn't evaluate, since we need to check that it's a 448 - // derivation. 449 - // 450 - // This only has the minor negative effect that if a PR that breaks evaluation 451 - // gets merged, fixing those failures won't force anything into `pkgs/by-name`. 452 - // 453 - // For now this isn't our problem, but in the future we 454 - // might have another check to enforce that evaluation must not be broken. 455 - // 456 - // The alternative of assuming that failing attributes would have been fit for `pkgs/by-name` 457 - // has the problem that if a package evaluation gets broken temporarily, 458 - // fixing it requires a move to pkgs/by-name, which could happen more 459 - // often and isn't really justified. 460 - if let EvalSuccess(AttributeInfo { 461 - // We're only interested in attributes that are attribute sets (which includes 462 - // derivations). Anything else can't be in `pkgs/by-name`. 463 - attribute_variant: AttributeVariant::AttributeSet { 464 - // Indeed, we only care about derivations, non-derivation attribute sets can't be 465 - // in `pkgs/by-name` 466 - is_derivation: true, 467 - // Of the two definition variants, really only the manual one makes sense here. 468 - // Special cases are: 469 - // - Manual aliases to auto-called packages are not treated as manual definitions, 470 - // due to limitations in the semantic callPackage detection. So those should be 471 - // ignored. 472 - // - Manual definitions using the internal _internalCallByNamePackageFile are 473 - // not treated as manual definitions, since _internalCallByNamePackageFile is 474 - // used to detect automatic ones. We can't distinguish from the above case, so we 475 - // just need to ignore this one too, even if that internal attribute should never 476 - // be called manually. 477 - definition_variant: DefinitionVariant::ManualDefinition { is_semantic_call_package } 478 - }, 479 - // We need the location of the manual definition, because otherwise 480 - // we can't figure out whether it's a syntactic callPackage 481 - location: Some(location), 482 - }) = non_by_name_attribute { 483 - 484 - // Parse the Nix file in the location 485 - let nix_file = nix_file_store.get(&location.file)?; 486 - 487 - // The relative path of the Nix file, for error messages 488 - let relative_location_file = location.relative_file(nixpkgs_path).with_context(|| { 489 - format!("Failed to resolve the file where attribute {attribute_name} is defined") 490 - })?; 491 - 492 - // Figure out whether it's an attribute definition of the form `= callPackage <arg1> <arg2>`, 493 - // returning the arguments if so. 494 - let (optional_syntactic_call_package, _definition) = nix_file 495 - .call_package_argument_info_at( 496 - location.line, 497 - location.column, 498 - // Passing the Nixpkgs path here both checks that the <arg1> is within Nixpkgs, and 499 - // strips the absolute Nixpkgs path from it, such that 500 - // syntactic_call_package.relative_path is relative to Nixpkgs 501 - nixpkgs_path 502 - ) 503 - .with_context(|| { 504 - format!("Failed to get the definition info for attribute {attribute_name}") 505 - })?; 506 - 507 - // At this point, we completed two different checks for whether it's a 508 - // `callPackage` 509 - match (is_semantic_call_package, optional_syntactic_call_package) { 510 - // Something like `<attr> = { }` 511 - (false, None) 512 - // Something like `<attr> = pythonPackages.callPackage ...` 513 - | (false, Some(_)) 514 - // Something like `<attr> = bar` where `bar = pkgs.callPackage ...` 515 - | (true, None) => { 516 - // In all of these cases, it's not possible to migrate the package to `pkgs/by-name` 517 - NonApplicable 518 - } 519 - // Something like `<attr> = pkgs.callPackage ...` 520 - (true, Some(syntactic_call_package)) => { 521 - // It's only possible to migrate such a definitions if.. 522 - match syntactic_call_package.relative_path { 523 - Some(ref rel_path) if rel_path.starts_with(utils::BASE_SUBPATH) => { 524 - // ..the path is not already within `pkgs/by-name` like 525 - // 526 - // foo-variant = callPackage ../by-name/fo/foo/package.nix { 527 - // someFlag = true; 528 - // } 529 - // 530 - // While such definitions could be moved to `pkgs/by-name` by using 531 - // `.override { someFlag = true; }` instead, this changes the semantics in 532 - // relation with overlays, so migration is generally not possible. 533 - // 534 - // See also "package variants" in RFC 140: 535 - // https://github.com/NixOS/rfcs/blob/master/rfcs/0140-simple-package-paths.md#package-variants 536 - NonApplicable 537 - } 538 - _ => { 539 - // Otherwise, the path is outside `pkgs/by-name`, which means it can be 540 - // migrated 541 - Loose((syntactic_call_package, relative_location_file)) 542 - } 543 - } 544 - } 545 - } 546 - } else { 547 - // This catches all the cases not matched by the above `if let`, falling back to not being 548 - // able to migrate such attributes 549 - NonApplicable 550 - }; 551 - Ok(Success(ratchet::Package { 552 - // Packages being checked in this function _always_ need a manual definition, because 553 - // they're not using `pkgs/by-name` which would allow avoiding it. 554 - // so instead of repeating ourselves all the time to define `manual_definition`, 555 - // just set it once at the end here 556 - manual_definition: Tight, 557 - uses_by_name, 558 - })) 559 - }
-293
pkgs/test/nixpkgs-check-by-name/src/main.rs
··· 1 - use crate::nix_file::NixFileStore; 2 - use std::panic; 3 - mod eval; 4 - mod nix_file; 5 - mod nixpkgs_problem; 6 - mod ratchet; 7 - mod references; 8 - mod structure; 9 - mod utils; 10 - mod validation; 11 - 12 - use crate::structure::check_structure; 13 - use crate::validation::Validation::Failure; 14 - use crate::validation::Validation::Success; 15 - use anyhow::Context; 16 - use clap::Parser; 17 - use colored::Colorize; 18 - use std::io; 19 - use std::path::{Path, PathBuf}; 20 - use std::process::ExitCode; 21 - use std::thread; 22 - 23 - /// Program to check the validity of pkgs/by-name 24 - /// 25 - /// This CLI interface may be changed over time if the CI workflow making use of 26 - /// it is adjusted to deal with the change appropriately. 27 - /// 28 - /// Exit code: 29 - /// - `0`: If the validation is successful 30 - /// - `1`: If the validation is not successful 31 - /// - `2`: If an unexpected I/O error occurs 32 - /// 33 - /// Standard error: 34 - /// - Informative messages 35 - /// - Detected problems if validation is not successful 36 - #[derive(Parser, Debug)] 37 - #[command(about, verbatim_doc_comment)] 38 - pub struct Args { 39 - /// Path to the main Nixpkgs to check. 40 - /// For PRs, this should be set to a checkout of the PR branch. 41 - nixpkgs: PathBuf, 42 - 43 - /// Path to the base Nixpkgs to run ratchet checks against. 44 - /// For PRs, this should be set to a checkout of the PRs base branch. 45 - #[arg(long)] 46 - base: PathBuf, 47 - } 48 - 49 - fn main() -> ExitCode { 50 - let args = Args::parse(); 51 - match process(args.base, args.nixpkgs, false, &mut io::stderr()) { 52 - Ok(true) => ExitCode::SUCCESS, 53 - Ok(false) => ExitCode::from(1), 54 - Err(e) => { 55 - eprintln!("{} {:#}", "I/O error: ".yellow(), e); 56 - ExitCode::from(2) 57 - } 58 - } 59 - } 60 - 61 - /// Does the actual work. This is the abstraction used both by `main` and the tests. 62 - /// 63 - /// # Arguments 64 - /// - `base_nixpkgs`: Path to the base Nixpkgs to run ratchet checks against. 65 - /// - `main_nixpkgs`: Path to the main Nixpkgs to check. 66 - /// - `keep_nix_path`: Whether the value of the NIX_PATH environment variable should be kept for 67 - /// the evaluation stage, allowing its contents to be accessed. 68 - /// This is used to allow the tests to access e.g. the mock-nixpkgs.nix file 69 - /// - `error_writer`: An `io::Write` value to write validation errors to, if any. 70 - /// 71 - /// # Return value 72 - /// - `Err(e)` if an I/O-related error `e` occurred. 73 - /// - `Ok(false)` if there are problems, all of which will be written to `error_writer`. 74 - /// - `Ok(true)` if there are no problems 75 - pub fn process<W: io::Write>( 76 - base_nixpkgs: PathBuf, 77 - main_nixpkgs: PathBuf, 78 - keep_nix_path: bool, 79 - error_writer: &mut W, 80 - ) -> anyhow::Result<bool> { 81 - // Very easy to parallelise this, since it's totally independent 82 - let base_thread = thread::spawn(move || check_nixpkgs(&base_nixpkgs, keep_nix_path)); 83 - let main_result = check_nixpkgs(&main_nixpkgs, keep_nix_path)?; 84 - 85 - let base_result = match base_thread.join() { 86 - Ok(res) => res?, 87 - Err(e) => panic::resume_unwind(e), 88 - }; 89 - 90 - match (base_result, main_result) { 91 - (Failure(_), Failure(errors)) => { 92 - // Base branch fails and the PR doesn't fix it and may also introduce additional problems 93 - for error in errors { 94 - writeln!(error_writer, "{}", error.to_string().red())? 95 - } 96 - writeln!(error_writer, "{}", "The base branch is broken and still has above problems with this PR, which need to be fixed first.\nConsider reverting the PR that introduced these problems in order to prevent more failures of unrelated PRs.".yellow())?; 97 - Ok(false) 98 - } 99 - (Failure(_), Success(_)) => { 100 - writeln!( 101 - error_writer, 102 - "{}", 103 - "The base branch is broken, but this PR fixes it. Nice job!".green() 104 - )?; 105 - Ok(true) 106 - } 107 - (Success(_), Failure(errors)) => { 108 - for error in errors { 109 - writeln!(error_writer, "{}", error.to_string().red())? 110 - } 111 - writeln!( 112 - error_writer, 113 - "{}", 114 - "This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break." 115 - .yellow() 116 - )?; 117 - Ok(false) 118 - } 119 - (Success(base), Success(main)) => { 120 - // Both base and main branch succeed, check ratchet state 121 - match ratchet::Nixpkgs::compare(base, main) { 122 - Failure(errors) => { 123 - for error in errors { 124 - writeln!(error_writer, "{}", error.to_string().red())? 125 - } 126 - writeln!(error_writer, "{}", "This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.".yellow())?; 127 - 128 - Ok(false) 129 - } 130 - Success(()) => { 131 - writeln!(error_writer, "{}", "Validated successfully".green())?; 132 - Ok(true) 133 - } 134 - } 135 - } 136 - } 137 - } 138 - 139 - /// Checks whether the pkgs/by-name structure in Nixpkgs is valid. 140 - /// 141 - /// This does not include ratchet checks, see ../README.md#ratchet-checks 142 - /// Instead a `ratchet::Nixpkgs` value is returned, whose `compare` method allows performing the 143 - /// ratchet check against another result. 144 - pub fn check_nixpkgs( 145 - nixpkgs_path: &Path, 146 - keep_nix_path: bool, 147 - ) -> validation::Result<ratchet::Nixpkgs> { 148 - let mut nix_file_store = NixFileStore::default(); 149 - 150 - Ok({ 151 - let nixpkgs_path = nixpkgs_path.canonicalize().with_context(|| { 152 - format!( 153 - "Nixpkgs path {} could not be resolved", 154 - nixpkgs_path.display() 155 - ) 156 - })?; 157 - 158 - if !nixpkgs_path.join(utils::BASE_SUBPATH).exists() { 159 - // No pkgs/by-name directory, always valid 160 - Success(ratchet::Nixpkgs::default()) 161 - } else { 162 - check_structure(&nixpkgs_path, &mut nix_file_store)?.result_map(|package_names| 163 - // Only if we could successfully parse the structure, we do the evaluation checks 164 - eval::check_values(&nixpkgs_path, &mut nix_file_store, package_names, keep_nix_path))? 165 - } 166 - }) 167 - } 168 - 169 - #[cfg(test)] 170 - mod tests { 171 - use crate::process; 172 - use crate::utils; 173 - use anyhow::Context; 174 - use std::fs; 175 - use std::path::Path; 176 - use tempfile::{tempdir_in, TempDir}; 177 - 178 - #[test] 179 - fn tests_dir() -> anyhow::Result<()> { 180 - for entry in Path::new("tests").read_dir()? { 181 - let entry = entry?; 182 - let path = entry.path(); 183 - let name = entry.file_name().to_string_lossy().into_owned(); 184 - 185 - if !path.is_dir() { 186 - continue; 187 - } 188 - 189 - let expected_errors = fs::read_to_string(path.join("expected")) 190 - .expect("No expected file for test {name}"); 191 - 192 - test_nixpkgs(&name, &path, &expected_errors)?; 193 - } 194 - Ok(()) 195 - } 196 - 197 - // tempfile::tempdir needs to be wrapped in temp_env lock 198 - // because it accesses TMPDIR environment variable. 199 - pub fn tempdir() -> anyhow::Result<TempDir> { 200 - let empty_list: [(&str, Option<&str>); 0] = []; 201 - Ok(temp_env::with_vars(empty_list, tempfile::tempdir)?) 202 - } 203 - 204 - // We cannot check case-conflicting files into Nixpkgs (the channel would fail to 205 - // build), so we generate the case-conflicting file instead. 206 - #[test] 207 - fn test_case_sensitive() -> anyhow::Result<()> { 208 - let temp_nixpkgs = tempdir()?; 209 - let path = temp_nixpkgs.path(); 210 - 211 - if is_case_insensitive_fs(&path)? { 212 - eprintln!("We're on a case-insensitive filesystem, skipping case-sensitivity test"); 213 - return Ok(()); 214 - } 215 - 216 - let base = path.join(utils::BASE_SUBPATH); 217 - 218 - fs::create_dir_all(base.join("fo/foo"))?; 219 - fs::write(base.join("fo/foo/package.nix"), "{ someDrv }: someDrv")?; 220 - 221 - fs::create_dir_all(base.join("fo/foO"))?; 222 - fs::write(base.join("fo/foO/package.nix"), "{ someDrv }: someDrv")?; 223 - 224 - test_nixpkgs( 225 - "case_sensitive", 226 - &path, 227 - "pkgs/by-name/fo: Duplicate case-sensitive package directories \"foO\" and \"foo\".\nThis PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.\n", 228 - )?; 229 - 230 - Ok(()) 231 - } 232 - 233 - /// Tests symlinked temporary directories. 234 - /// This is needed because on darwin, `/tmp` is a symlink to `/private/tmp`, and Nix's 235 - /// restrict-eval doesn't also allow access to the canonical path when you allow the 236 - /// non-canonical one. 237 - /// 238 - /// The error if we didn't do this would look like this: 239 - /// error: access to canonical path '/private/var/folders/[...]/.tmpFbcNO0' is forbidden in restricted mode 240 - #[test] 241 - fn test_symlinked_tmpdir() -> anyhow::Result<()> { 242 - // Create a directory with two entries: 243 - // - actual (dir) 244 - // - symlinked -> actual (symlink) 245 - let temp_root = tempdir()?; 246 - fs::create_dir(temp_root.path().join("actual"))?; 247 - std::os::unix::fs::symlink("actual", temp_root.path().join("symlinked"))?; 248 - let tmpdir = temp_root.path().join("symlinked"); 249 - 250 - temp_env::with_var("TMPDIR", Some(&tmpdir), || { 251 - test_nixpkgs( 252 - "symlinked_tmpdir", 253 - Path::new("tests/success"), 254 - "Validated successfully\n", 255 - ) 256 - }) 257 - } 258 - 259 - fn test_nixpkgs(name: &str, path: &Path, expected_errors: &str) -> anyhow::Result<()> { 260 - let base_path = path.join("base"); 261 - let base_nixpkgs = if base_path.exists() { 262 - base_path.as_path() 263 - } else { 264 - Path::new("tests/empty-base") 265 - }; 266 - 267 - // We don't want coloring to mess up the tests 268 - let writer = temp_env::with_var("NO_COLOR", Some("1"), || -> anyhow::Result<_> { 269 - let mut writer = vec![]; 270 - process(base_nixpkgs.to_owned(), path.to_owned(), true, &mut writer) 271 - .with_context(|| format!("Failed test case {name}"))?; 272 - Ok(writer) 273 - })?; 274 - 275 - let actual_errors = String::from_utf8_lossy(&writer); 276 - 277 - if actual_errors != expected_errors { 278 - panic!( 279 - "Failed test case {name}, expected these errors:\n=======\n{}\n=======\nbut got these:\n=======\n{}\n=======", 280 - expected_errors, actual_errors 281 - ); 282 - } 283 - Ok(()) 284 - } 285 - 286 - /// Check whether a path is in a case-insensitive filesystem 287 - fn is_case_insensitive_fs(path: &Path) -> anyhow::Result<bool> { 288 - let dir = tempdir_in(path)?; 289 - let base = dir.path(); 290 - fs::write(base.join("aaa"), "")?; 291 - Ok(base.join("AAA").exists()) 292 - } 293 - }
-555
pkgs/test/nixpkgs-check-by-name/src/nix_file.rs
··· 1 - //! This is a utility module for interacting with the syntax of Nix files 2 - 3 - use crate::utils::LineIndex; 4 - use anyhow::Context; 5 - use itertools::Either::{self, Left, Right}; 6 - use relative_path::RelativePathBuf; 7 - use rnix::ast; 8 - use rnix::ast::Expr; 9 - use rnix::ast::HasEntry; 10 - use rowan::ast::AstNode; 11 - use rowan::TextSize; 12 - use rowan::TokenAtOffset; 13 - use std::collections::hash_map::Entry; 14 - use std::collections::HashMap; 15 - use std::fs::read_to_string; 16 - use std::path::Path; 17 - use std::path::PathBuf; 18 - 19 - /// A structure to store parse results of Nix files in memory, 20 - /// making sure that the same file never has to be parsed twice 21 - #[derive(Default)] 22 - pub struct NixFileStore { 23 - entries: HashMap<PathBuf, NixFile>, 24 - } 25 - 26 - impl NixFileStore { 27 - /// Get the store entry for a Nix file if it exists, otherwise parse the file, insert it into 28 - /// the store, and return the value 29 - /// 30 - /// Note that this function only gives an anyhow::Result::Err for I/O errors. 31 - /// A parse error is anyhow::Result::Ok(Result::Err(error)) 32 - pub fn get(&mut self, path: &Path) -> anyhow::Result<&NixFile> { 33 - match self.entries.entry(path.to_owned()) { 34 - Entry::Occupied(entry) => Ok(entry.into_mut()), 35 - Entry::Vacant(entry) => Ok(entry.insert(NixFile::new(path)?)), 36 - } 37 - } 38 - } 39 - 40 - /// A structure for storing a successfully parsed Nix file 41 - pub struct NixFile { 42 - /// The parent directory of the Nix file, for more convenient error handling 43 - pub parent_dir: PathBuf, 44 - /// The path to the file itself, for errors 45 - pub path: PathBuf, 46 - pub syntax_root: rnix::Root, 47 - pub line_index: LineIndex, 48 - } 49 - 50 - impl NixFile { 51 - /// Creates a new NixFile, failing for I/O or parse errors 52 - fn new(path: impl AsRef<Path>) -> anyhow::Result<NixFile> { 53 - let Some(parent_dir) = path.as_ref().parent() else { 54 - anyhow::bail!("Could not get parent of path {}", path.as_ref().display()) 55 - }; 56 - 57 - let contents = read_to_string(&path) 58 - .with_context(|| format!("Could not read file {}", path.as_ref().display()))?; 59 - let line_index = LineIndex::new(&contents); 60 - 61 - // NOTE: There's now another Nixpkgs CI check to make sure all changed Nix files parse 62 - // correctly, though that uses mainline Nix instead of rnix, so it doesn't give the same 63 - // errors. In the future we should unify these two checks, ideally moving the other CI 64 - // check into this tool as well and checking for both mainline Nix and rnix. 65 - rnix::Root::parse(&contents) 66 - // rnix's ::ok returns Result<_, _> , so no error is thrown away like it would be with 67 - // std::result's ::ok 68 - .ok() 69 - .map(|syntax_root| NixFile { 70 - parent_dir: parent_dir.to_path_buf(), 71 - path: path.as_ref().to_owned(), 72 - syntax_root, 73 - line_index, 74 - }) 75 - .with_context(|| format!("Could not parse file {} with rnix", path.as_ref().display())) 76 - } 77 - } 78 - 79 - /// Information about callPackage arguments 80 - #[derive(Debug, PartialEq)] 81 - pub struct CallPackageArgumentInfo { 82 - /// The relative path of the first argument, or `None` if it's not a path. 83 - pub relative_path: Option<RelativePathBuf>, 84 - /// Whether the second argument is an empty attribute set 85 - pub empty_arg: bool, 86 - } 87 - 88 - impl NixFile { 89 - /// Returns information about callPackage arguments for an attribute at a specific line/column 90 - /// index. 91 - /// If the definition at the given location is not of the form `<attr> = callPackage <arg1> <arg2>;`, 92 - /// `Ok((None, String))` is returned, with `String` being the definition itself. 93 - /// 94 - /// This function only returns `Err` for problems that can't be caused by the Nix contents, 95 - /// but rather problems in this programs code itself. 96 - /// 97 - /// This is meant to be used with the location returned from `builtins.unsafeGetAttrPos`, e.g.: 98 - /// - Create file `default.nix` with contents 99 - /// ```nix 100 - /// self: { 101 - /// foo = self.callPackage ./default.nix { }; 102 - /// } 103 - /// ``` 104 - /// - Evaluate 105 - /// ```nix 106 - /// builtins.unsafeGetAttrPos "foo" (import ./default.nix { }) 107 - /// ``` 108 - /// results in `{ file = ./default.nix; line = 2; column = 3; }` 109 - /// - Get the NixFile for `.file` from a `NixFileStore` 110 - /// - Call this function with `.line`, `.column` and `relative_to` as the (absolute) current directory 111 - /// 112 - /// You'll get back 113 - /// ```rust 114 - /// Ok(( 115 - /// Some(CallPackageArgumentInfo { path = Some("default.nix"), empty_arg: true }), 116 - /// "foo = self.callPackage ./default.nix { };", 117 - /// )) 118 - /// ``` 119 - /// 120 - /// Note that this also returns the same for `pythonPackages.callPackage`. It doesn't make an 121 - /// attempt at distinguishing this. 122 - pub fn call_package_argument_info_at( 123 - &self, 124 - line: usize, 125 - column: usize, 126 - relative_to: &Path, 127 - ) -> anyhow::Result<(Option<CallPackageArgumentInfo>, String)> { 128 - Ok(match self.attrpath_value_at(line, column)? { 129 - Left(definition) => (None, definition), 130 - Right(attrpath_value) => { 131 - let definition = attrpath_value.to_string(); 132 - let attrpath_value = 133 - self.attrpath_value_call_package_argument_info(attrpath_value, relative_to)?; 134 - (attrpath_value, definition) 135 - } 136 - }) 137 - } 138 - 139 - // Internal function mainly to make it independently testable 140 - fn attrpath_value_at( 141 - &self, 142 - line: usize, 143 - column: usize, 144 - ) -> anyhow::Result<Either<String, ast::AttrpathValue>> { 145 - let index = self.line_index.fromlinecolumn(line, column); 146 - 147 - let token_at_offset = self 148 - .syntax_root 149 - .syntax() 150 - .token_at_offset(TextSize::from(index as u32)); 151 - 152 - // The token_at_offset function takes indices to mean a location _between_ characters, 153 - // which in this case is some spacing followed by the attribute name: 154 - // 155 - // foo = 10; 156 - // /\ 157 - // This is the token offset, we get both the (newline + indentation) on the left side, 158 - // and the attribute name on the right side. 159 - let TokenAtOffset::Between(_space, token) = token_at_offset else { 160 - anyhow::bail!("Line {line} column {column} in {} is not the start of a token, but rather {token_at_offset:?}", self.path.display()) 161 - }; 162 - 163 - // token looks like "foo" 164 - let Some(node) = token.parent() else { 165 - anyhow::bail!( 166 - "Token on line {line} column {column} in {} does not have a parent node: {token:?}", 167 - self.path.display() 168 - ) 169 - }; 170 - 171 - if ast::Attr::can_cast(node.kind()) { 172 - // Something like `foo`, `"foo"` or `${"foo"}` 173 - } else if ast::Inherit::can_cast(node.kind()) { 174 - // Something like `inherit <attr>` or `inherit (<source>) <attr>` 175 - // This is the only other way how `builtins.unsafeGetAttrPos` can return 176 - // attribute positions, but we only look for ones like `<attr-path> = <value>`, so 177 - // ignore this 178 - return Ok(Left(node.to_string())); 179 - } else { 180 - // However, anything else is not expected and smells like a bug 181 - anyhow::bail!( 182 - "Node in {} is neither an attribute node nor an inherit node: {node:?}", 183 - self.path.display() 184 - ) 185 - } 186 - 187 - // node looks like "foo" 188 - let Some(attrpath_node) = node.parent() else { 189 - anyhow::bail!( 190 - "Node in {} does not have a parent node: {node:?}", 191 - self.path.display() 192 - ) 193 - }; 194 - 195 - if !ast::Attrpath::can_cast(attrpath_node.kind()) { 196 - // We know that `node` is an attribute, its parent should be an attribute path 197 - anyhow::bail!( 198 - "In {}, attribute parent node is not an attribute path node: {attrpath_node:?}", 199 - self.path.display() 200 - ) 201 - } 202 - 203 - // attrpath_node looks like "foo.bar" 204 - let Some(attrpath_value_node) = attrpath_node.parent() else { 205 - anyhow::bail!( 206 - "Attribute path node in {} does not have a parent node: {attrpath_node:?}", 207 - self.path.display() 208 - ) 209 - }; 210 - 211 - if !ast::AttrpathValue::can_cast(attrpath_value_node.kind()) { 212 - anyhow::bail!( 213 - "Node in {} is not an attribute path value node: {attrpath_value_node:?}", 214 - self.path.display() 215 - ) 216 - } 217 - // attrpath_value_node looks like "foo.bar = 10;" 218 - 219 - // unwrap is fine because we confirmed that we can cast with the above check. 220 - // We could avoid this `unwrap` for a `clone`, since `cast` consumes the argument, 221 - // but we still need it for the error message when the cast fails. 222 - Ok(Right( 223 - ast::AttrpathValue::cast(attrpath_value_node).unwrap(), 224 - )) 225 - } 226 - 227 - // Internal function mainly to make attrpath_value_at independently testable 228 - fn attrpath_value_call_package_argument_info( 229 - &self, 230 - attrpath_value: ast::AttrpathValue, 231 - relative_to: &Path, 232 - ) -> anyhow::Result<Option<CallPackageArgumentInfo>> { 233 - let Some(attrpath) = attrpath_value.attrpath() else { 234 - anyhow::bail!("attrpath value node doesn't have an attrpath: {attrpath_value:?}") 235 - }; 236 - 237 - // At this point we know it's something like `foo...bar = ...` 238 - 239 - if attrpath.attrs().count() > 1 { 240 - // If the attribute path has multiple entries, the left-most entry is an attribute and 241 - // can't be a `callPackage`. 242 - // 243 - // FIXME: `builtins.unsafeGetAttrPos` will return the same position for all attribute 244 - // paths and we can't really know which one it is. We could have a case like 245 - // `foo.bar = callPackage ... { }` and trying to determine if `bar` is a `callPackage`, 246 - // where this is not correct. 247 - // However, this case typically doesn't occur anyways, 248 - // because top-level packages wouldn't be nested under an attribute set. 249 - return Ok(None); 250 - } 251 - let Some(value) = attrpath_value.value() else { 252 - anyhow::bail!("attrpath value node doesn't have a value: {attrpath_value:?}") 253 - }; 254 - 255 - // At this point we know it's something like `foo = ...` 256 - 257 - let Expr::Apply(apply1) = value else { 258 - // Not even a function call, instead something like `foo = null` 259 - return Ok(None); 260 - }; 261 - let Some(function1) = apply1.lambda() else { 262 - anyhow::bail!("apply node doesn't have a lambda: {apply1:?}") 263 - }; 264 - let Some(arg1) = apply1.argument() else { 265 - anyhow::bail!("apply node doesn't have an argument: {apply1:?}") 266 - }; 267 - 268 - // At this point we know it's something like `foo = <fun> <arg>`. 269 - // For a callPackage, `<fun>` would be `callPackage ./file` and `<arg>` would be `{ }` 270 - 271 - let empty_arg = if let Expr::AttrSet(attrset) = arg1 { 272 - // We can only statically determine whether the argument is empty if it's an attribute 273 - // set _expression_, even though other kind of expressions could evaluate to an attribute 274 - // set _value_. But this is what we want anyways 275 - attrset.entries().next().is_none() 276 - } else { 277 - false 278 - }; 279 - 280 - // Because callPackage takes two curried arguments, the first function needs to be a 281 - // function call itself 282 - let Expr::Apply(apply2) = function1 else { 283 - // Not a callPackage, instead something like `foo = import ./foo` 284 - return Ok(None); 285 - }; 286 - let Some(function2) = apply2.lambda() else { 287 - anyhow::bail!("apply node doesn't have a lambda: {apply2:?}") 288 - }; 289 - let Some(arg2) = apply2.argument() else { 290 - anyhow::bail!("apply node doesn't have an argument: {apply2:?}") 291 - }; 292 - 293 - // At this point we know it's something like `foo = <fun2> <arg2> <arg1>`. 294 - // For a callPackage, `<fun2>` would be `callPackage`, `<arg2>` would be `./file` 295 - 296 - // Check that <arg2> is a path expression 297 - let path = if let Expr::Path(actual_path) = arg2 { 298 - // Try to statically resolve the path and turn it into a nixpkgs-relative path 299 - if let ResolvedPath::Within(p) = self.static_resolve_path(actual_path, relative_to) { 300 - Some(p) 301 - } else { 302 - // We can't statically know an existing path inside Nixpkgs used as <arg2> 303 - None 304 - } 305 - } else { 306 - // <arg2> is not a path, but rather e.g. an inline expression 307 - None 308 - }; 309 - 310 - // Check that <fun2> is an identifier, or an attribute path with an identifier at the end 311 - let ident = match function2 { 312 - Expr::Ident(ident) => { 313 - // This means it's something like `foo = callPackage <arg2> <arg1>` 314 - ident 315 - } 316 - Expr::Select(select) => { 317 - // This means it's something like `foo = self.callPackage <arg2> <arg1>`. 318 - // We also end up here for e.g. `pythonPackages.callPackage`, but the 319 - // callPackage-mocking method will take care of not triggering for this case. 320 - 321 - if select.default_expr().is_some() { 322 - // Very odd case, but this would be `foo = self.callPackage or true ./test.nix {} 323 - // (yes this is valid Nix code) 324 - return Ok(None); 325 - } 326 - let Some(attrpath) = select.attrpath() else { 327 - anyhow::bail!("select node doesn't have an attrpath: {select:?}") 328 - }; 329 - let Some(last) = attrpath.attrs().last() else { 330 - // This case shouldn't be possible, it would be `foo = self. ./test.nix {}`, 331 - // which shouldn't parse 332 - anyhow::bail!("select node has an empty attrpath: {select:?}") 333 - }; 334 - if let ast::Attr::Ident(ident) = last { 335 - ident 336 - } else { 337 - // Here it's something like `foo = self."callPackage" /test.nix {}` 338 - // which we're not gonna bother with 339 - return Ok(None); 340 - } 341 - } 342 - // Any other expression we're not gonna treat as callPackage 343 - _ => return Ok(None), 344 - }; 345 - 346 - let Some(token) = ident.ident_token() else { 347 - anyhow::bail!("ident node doesn't have a token: {ident:?}") 348 - }; 349 - 350 - if token.text() == "callPackage" { 351 - Ok(Some(CallPackageArgumentInfo { 352 - relative_path: path, 353 - empty_arg, 354 - })) 355 - } else { 356 - Ok(None) 357 - } 358 - } 359 - } 360 - 361 - /// The result of trying to statically resolve a Nix path expression 362 - pub enum ResolvedPath { 363 - /// Something like `./foo/${bar}/baz`, can't be known statically 364 - Interpolated, 365 - /// Something like `<nixpkgs>`, can't be known statically 366 - SearchPath, 367 - /// Path couldn't be resolved due to an IO error, 368 - /// e.g. if the path doesn't exist or you don't have the right permissions 369 - Unresolvable(std::io::Error), 370 - /// The path is outside the given absolute path 371 - Outside, 372 - /// The path is within the given absolute path. 373 - /// The `RelativePathBuf` is the relative path under the given absolute path. 374 - Within(RelativePathBuf), 375 - } 376 - 377 - impl NixFile { 378 - /// Statically resolves a Nix path expression and checks that it's within an absolute path 379 - /// 380 - /// E.g. for the path expression `./bar.nix` in `./foo.nix` and an absolute path of the 381 - /// current directory, the function returns `ResolvedPath::Within(./bar.nix)` 382 - pub fn static_resolve_path(&self, node: ast::Path, relative_to: &Path) -> ResolvedPath { 383 - if node.parts().count() != 1 { 384 - // If there's more than 1 interpolated part, it's of the form `./foo/${bar}/baz`. 385 - return ResolvedPath::Interpolated; 386 - } 387 - 388 - let text = node.to_string(); 389 - 390 - if text.starts_with('<') { 391 - // A search path like `<nixpkgs>`. There doesn't appear to be better way to detect 392 - // these in rnix 393 - return ResolvedPath::SearchPath; 394 - } 395 - 396 - // Join the file's parent directory and the path expression, then resolve it 397 - // FIXME: Expressions like `../../../../foo/bar/baz/qux` or absolute paths 398 - // may resolve close to the original file, but may have left the relative_to. 399 - // That should be checked more strictly 400 - match self.parent_dir.join(Path::new(&text)).canonicalize() { 401 - Err(resolution_error) => ResolvedPath::Unresolvable(resolution_error), 402 - Ok(resolved) => { 403 - // Check if it's within relative_to 404 - match resolved.strip_prefix(relative_to) { 405 - Err(_prefix_error) => ResolvedPath::Outside, 406 - Ok(suffix) => ResolvedPath::Within( 407 - RelativePathBuf::from_path(suffix).expect("a relative path"), 408 - ), 409 - } 410 - } 411 - } 412 - } 413 - } 414 - 415 - #[cfg(test)] 416 - mod tests { 417 - use super::*; 418 - use crate::tests; 419 - use indoc::indoc; 420 - 421 - #[test] 422 - fn detects_attributes() -> anyhow::Result<()> { 423 - let temp_dir = tests::tempdir()?; 424 - let file = temp_dir.path().join("file.nix"); 425 - let contents = indoc! {r#" 426 - toInherit: { 427 - foo = 1; 428 - "bar" = 2; 429 - ${"baz"} = 3; 430 - "${"qux"}" = 4; 431 - 432 - # A 433 - quux 434 - # B 435 - = 436 - # C 437 - 5 438 - # D 439 - ; 440 - # E 441 - 442 - /**/quuux/**/=/**/5/**/;/*E*/ 443 - 444 - inherit toInherit; 445 - inherit (toInherit) toInherit; 446 - } 447 - "#}; 448 - 449 - std::fs::write(&file, contents)?; 450 - 451 - let nix_file = NixFile::new(&file)?; 452 - 453 - // These are builtins.unsafeGetAttrPos locations for the attributes 454 - let cases = [ 455 - (2, 3, Right("foo = 1;")), 456 - (3, 3, Right(r#""bar" = 2;"#)), 457 - (4, 3, Right(r#"${"baz"} = 3;"#)), 458 - (5, 3, Right(r#""${"qux"}" = 4;"#)), 459 - (8, 3, Right("quux\n # B\n =\n # C\n 5\n # D\n ;")), 460 - (17, 7, Right("quuux/**/=/**/5/**/;")), 461 - (19, 10, Left("inherit toInherit;")), 462 - (20, 22, Left("inherit (toInherit) toInherit;")), 463 - ]; 464 - 465 - for (line, column, expected_result) in cases { 466 - let actual_result = nix_file 467 - .attrpath_value_at(line, column) 468 - .context(format!("line {line}, column {column}"))? 469 - .map_right(|node| node.to_string()); 470 - let owned_expected_result = expected_result 471 - .map(|x| x.to_string()) 472 - .map_left(|x| x.to_string()); 473 - assert_eq!( 474 - actual_result, owned_expected_result, 475 - "line {line}, column {column}" 476 - ); 477 - } 478 - 479 - Ok(()) 480 - } 481 - 482 - #[test] 483 - fn detects_call_package() -> anyhow::Result<()> { 484 - let temp_dir = tests::tempdir()?; 485 - let file = temp_dir.path().join("file.nix"); 486 - let contents = indoc! {r#" 487 - self: with self; { 488 - a.sub = null; 489 - b = null; 490 - c = import ./file.nix; 491 - d = import ./file.nix { }; 492 - e = pythonPackages.callPackage ./file.nix { }; 493 - f = callPackage ./file.nix { }; 494 - g = callPackage ({ }: { }) { }; 495 - h = callPackage ./file.nix { x = 0; }; 496 - i = callPackage ({ }: { }) (let in { }); 497 - } 498 - "#}; 499 - 500 - std::fs::write(&file, contents)?; 501 - 502 - let nix_file = NixFile::new(&file)?; 503 - 504 - let cases = [ 505 - (2, None), 506 - (3, None), 507 - (4, None), 508 - (5, None), 509 - ( 510 - 6, 511 - Some(CallPackageArgumentInfo { 512 - relative_path: Some(RelativePathBuf::from("file.nix")), 513 - empty_arg: true, 514 - }), 515 - ), 516 - ( 517 - 7, 518 - Some(CallPackageArgumentInfo { 519 - relative_path: Some(RelativePathBuf::from("file.nix")), 520 - empty_arg: true, 521 - }), 522 - ), 523 - ( 524 - 8, 525 - Some(CallPackageArgumentInfo { 526 - relative_path: None, 527 - empty_arg: true, 528 - }), 529 - ), 530 - ( 531 - 9, 532 - Some(CallPackageArgumentInfo { 533 - relative_path: Some(RelativePathBuf::from("file.nix")), 534 - empty_arg: false, 535 - }), 536 - ), 537 - ( 538 - 10, 539 - Some(CallPackageArgumentInfo { 540 - relative_path: None, 541 - empty_arg: false, 542 - }), 543 - ), 544 - ]; 545 - 546 - for (line, expected_result) in cases { 547 - let (actual_result, _definition) = nix_file 548 - .call_package_argument_info_at(line, 3, temp_dir.path()) 549 - .context(format!("line {line}"))?; 550 - assert_eq!(actual_result, expected_result, "line {line}"); 551 - } 552 - 553 - Ok(()) 554 - } 555 - }
-425
pkgs/test/nixpkgs-check-by-name/src/nixpkgs_problem.rs
··· 1 - use crate::structure; 2 - use crate::utils::PACKAGE_NIX_FILENAME; 3 - use indoc::writedoc; 4 - use relative_path::RelativePath; 5 - use relative_path::RelativePathBuf; 6 - use std::ffi::OsString; 7 - use std::fmt; 8 - 9 - /// Any problem that can occur when checking Nixpkgs 10 - /// All paths are relative to Nixpkgs such that the error messages can't be influenced by Nixpkgs absolute 11 - /// location 12 - #[derive(Clone)] 13 - pub enum NixpkgsProblem { 14 - ShardNonDir { 15 - relative_shard_path: RelativePathBuf, 16 - }, 17 - InvalidShardName { 18 - relative_shard_path: RelativePathBuf, 19 - shard_name: String, 20 - }, 21 - PackageNonDir { 22 - relative_package_dir: RelativePathBuf, 23 - }, 24 - CaseSensitiveDuplicate { 25 - relative_shard_path: RelativePathBuf, 26 - first: OsString, 27 - second: OsString, 28 - }, 29 - InvalidPackageName { 30 - relative_package_dir: RelativePathBuf, 31 - package_name: String, 32 - }, 33 - IncorrectShard { 34 - relative_package_dir: RelativePathBuf, 35 - correct_relative_package_dir: RelativePathBuf, 36 - }, 37 - PackageNixNonExistent { 38 - relative_package_dir: RelativePathBuf, 39 - }, 40 - PackageNixDir { 41 - relative_package_dir: RelativePathBuf, 42 - }, 43 - UndefinedAttr { 44 - relative_package_file: RelativePathBuf, 45 - package_name: String, 46 - }, 47 - EmptyArgument { 48 - package_name: String, 49 - file: RelativePathBuf, 50 - line: usize, 51 - column: usize, 52 - definition: String, 53 - }, 54 - NonToplevelCallPackage { 55 - package_name: String, 56 - file: RelativePathBuf, 57 - line: usize, 58 - column: usize, 59 - definition: String, 60 - }, 61 - NonPath { 62 - package_name: String, 63 - file: RelativePathBuf, 64 - line: usize, 65 - column: usize, 66 - definition: String, 67 - }, 68 - WrongCallPackagePath { 69 - package_name: String, 70 - file: RelativePathBuf, 71 - line: usize, 72 - actual_path: RelativePathBuf, 73 - expected_path: RelativePathBuf, 74 - }, 75 - NonSyntacticCallPackage { 76 - package_name: String, 77 - file: RelativePathBuf, 78 - line: usize, 79 - column: usize, 80 - definition: String, 81 - }, 82 - NonDerivation { 83 - relative_package_file: RelativePathBuf, 84 - package_name: String, 85 - }, 86 - OutsideSymlink { 87 - relative_package_dir: RelativePathBuf, 88 - subpath: RelativePathBuf, 89 - }, 90 - UnresolvableSymlink { 91 - relative_package_dir: RelativePathBuf, 92 - subpath: RelativePathBuf, 93 - io_error: String, 94 - }, 95 - PathInterpolation { 96 - relative_package_dir: RelativePathBuf, 97 - subpath: RelativePathBuf, 98 - line: usize, 99 - text: String, 100 - }, 101 - SearchPath { 102 - relative_package_dir: RelativePathBuf, 103 - subpath: RelativePathBuf, 104 - line: usize, 105 - text: String, 106 - }, 107 - OutsidePathReference { 108 - relative_package_dir: RelativePathBuf, 109 - subpath: RelativePathBuf, 110 - line: usize, 111 - text: String, 112 - }, 113 - UnresolvablePathReference { 114 - relative_package_dir: RelativePathBuf, 115 - subpath: RelativePathBuf, 116 - line: usize, 117 - text: String, 118 - io_error: String, 119 - }, 120 - MovedOutOfByNameEmptyArg { 121 - package_name: String, 122 - call_package_path: Option<RelativePathBuf>, 123 - file: RelativePathBuf, 124 - }, 125 - MovedOutOfByNameNonEmptyArg { 126 - package_name: String, 127 - call_package_path: Option<RelativePathBuf>, 128 - file: RelativePathBuf, 129 - }, 130 - NewPackageNotUsingByNameEmptyArg { 131 - package_name: String, 132 - call_package_path: Option<RelativePathBuf>, 133 - file: RelativePathBuf, 134 - }, 135 - NewPackageNotUsingByNameNonEmptyArg { 136 - package_name: String, 137 - call_package_path: Option<RelativePathBuf>, 138 - file: RelativePathBuf, 139 - }, 140 - InternalCallPackageUsed { 141 - attr_name: String, 142 - }, 143 - CannotDetermineAttributeLocation { 144 - attr_name: String, 145 - }, 146 - } 147 - 148 - impl fmt::Display for NixpkgsProblem { 149 - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 150 - match self { 151 - NixpkgsProblem::ShardNonDir { relative_shard_path } => 152 - write!( 153 - f, 154 - "{relative_shard_path}: This is a file, but it should be a directory.", 155 - ), 156 - NixpkgsProblem::InvalidShardName { relative_shard_path, shard_name } => 157 - write!( 158 - f, 159 - "{relative_shard_path}: Invalid directory name \"{shard_name}\", must be at most 2 ASCII characters consisting of a-z, 0-9, \"-\" or \"_\".", 160 - ), 161 - NixpkgsProblem::PackageNonDir { relative_package_dir } => 162 - write!( 163 - f, 164 - "{relative_package_dir}: This path is a file, but it should be a directory.", 165 - ), 166 - NixpkgsProblem::CaseSensitiveDuplicate { relative_shard_path, first, second } => 167 - write!( 168 - f, 169 - "{relative_shard_path}: Duplicate case-sensitive package directories {first:?} and {second:?}.", 170 - ), 171 - NixpkgsProblem::InvalidPackageName { relative_package_dir, package_name } => 172 - write!( 173 - f, 174 - "{relative_package_dir}: Invalid package directory name \"{package_name}\", must be ASCII characters consisting of a-z, A-Z, 0-9, \"-\" or \"_\".", 175 - ), 176 - NixpkgsProblem::IncorrectShard { relative_package_dir, correct_relative_package_dir } => 177 - write!( 178 - f, 179 - "{relative_package_dir}: Incorrect directory location, should be {correct_relative_package_dir} instead.", 180 - ), 181 - NixpkgsProblem::PackageNixNonExistent { relative_package_dir } => 182 - write!( 183 - f, 184 - "{relative_package_dir}: Missing required \"{PACKAGE_NIX_FILENAME}\" file.", 185 - ), 186 - NixpkgsProblem::PackageNixDir { relative_package_dir } => 187 - write!( 188 - f, 189 - "{relative_package_dir}: \"{PACKAGE_NIX_FILENAME}\" must be a file.", 190 - ), 191 - NixpkgsProblem::UndefinedAttr { relative_package_file, package_name } => 192 - write!( 193 - f, 194 - "pkgs.{package_name}: This attribute is not defined but it should be defined automatically as {relative_package_file}", 195 - ), 196 - NixpkgsProblem::EmptyArgument { package_name, file, line, column, definition } => { 197 - let relative_package_dir = structure::relative_dir_for_package(package_name); 198 - let relative_package_file = structure::relative_file_for_package(package_name); 199 - let indented_definition = indent_definition(*column, definition.clone()); 200 - writedoc!( 201 - f, 202 - " 203 - - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 204 - 205 - {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 206 - 207 - However, in this PR, the second argument is empty. See the definition in {file}:{line}: 208 - 209 - {indented_definition} 210 - 211 - Such a definition is provided automatically and therefore not necessary. Please remove it. 212 - ", 213 - ) 214 - } 215 - NixpkgsProblem::NonToplevelCallPackage { package_name, file, line, column, definition } => { 216 - let relative_package_dir = structure::relative_dir_for_package(package_name); 217 - let relative_package_file = structure::relative_file_for_package(package_name); 218 - let indented_definition = indent_definition(*column, definition.clone()); 219 - writedoc!( 220 - f, 221 - " 222 - - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 223 - 224 - {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 225 - 226 - However, in this PR, a different `callPackage` is used. See the definition in {file}:{line}: 227 - 228 - {indented_definition} 229 - ", 230 - ) 231 - } 232 - NixpkgsProblem::NonPath { package_name, file, line, column, definition } => { 233 - let relative_package_dir = structure::relative_dir_for_package(package_name); 234 - let relative_package_file = structure::relative_file_for_package(package_name); 235 - let indented_definition = indent_definition(*column, definition.clone()); 236 - writedoc!( 237 - f, 238 - " 239 - - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 240 - 241 - {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 242 - 243 - However, in this PR, the first `callPackage` argument is not a path. See the definition in {file}:{line}: 244 - 245 - {indented_definition} 246 - ", 247 - ) 248 - } 249 - NixpkgsProblem::WrongCallPackagePath { package_name, file, line, actual_path, expected_path } => { 250 - let relative_package_dir = structure::relative_dir_for_package(package_name); 251 - let expected_path_expr = create_path_expr(file, expected_path); 252 - let actual_path_expr = create_path_expr(file, actual_path); 253 - writedoc! { 254 - f, 255 - " 256 - - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 257 - 258 - {package_name} = callPackage {expected_path_expr} {{ /* ... */ }}; 259 - 260 - However, in this PR, the first `callPackage` argument is the wrong path. See the definition in {file}:{line}: 261 - 262 - {package_name} = callPackage {actual_path_expr} {{ /* ... */ }}; 263 - ", 264 - } 265 - } 266 - NixpkgsProblem::NonSyntacticCallPackage { package_name, file, line, column, definition } => { 267 - let relative_package_dir = structure::relative_dir_for_package(package_name); 268 - let relative_package_file = structure::relative_file_for_package(package_name); 269 - let indented_definition = indent_definition(*column, definition.clone()); 270 - writedoc!( 271 - f, 272 - " 273 - - Because {relative_package_dir} exists, the attribute `pkgs.{package_name}` must be defined like 274 - 275 - {package_name} = callPackage ./{relative_package_file} {{ /* ... */ }}; 276 - 277 - However, in this PR, it isn't defined that way. See the definition in {file}:{line} 278 - 279 - {indented_definition} 280 - ", 281 - ) 282 - } 283 - NixpkgsProblem::NonDerivation { relative_package_file, package_name } => 284 - write!( 285 - f, 286 - "pkgs.{package_name}: This attribute defined by {relative_package_file} is not a derivation", 287 - ), 288 - NixpkgsProblem::OutsideSymlink { relative_package_dir, subpath } => 289 - write!( 290 - f, 291 - "{relative_package_dir}: Path {subpath} is a symlink pointing to a path outside the directory of that package.", 292 - ), 293 - NixpkgsProblem::UnresolvableSymlink { relative_package_dir, subpath, io_error } => 294 - write!( 295 - f, 296 - "{relative_package_dir}: Path {subpath} is a symlink which cannot be resolved: {io_error}.", 297 - ), 298 - NixpkgsProblem::PathInterpolation { relative_package_dir, subpath, line, text } => 299 - write!( 300 - f, 301 - "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\", which is not yet supported and may point outside the directory of that package.", 302 - ), 303 - NixpkgsProblem::SearchPath { relative_package_dir, subpath, line, text } => 304 - write!( 305 - f, 306 - "{relative_package_dir}: File {subpath} at line {line} contains the nix search path expression \"{text}\" which may point outside the directory of that package.", 307 - ), 308 - NixpkgsProblem::OutsidePathReference { relative_package_dir, subpath, line, text } => 309 - write!( 310 - f, 311 - "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which may point outside the directory of that package.", 312 - ), 313 - NixpkgsProblem::UnresolvablePathReference { relative_package_dir, subpath, line, text, io_error } => 314 - write!( 315 - f, 316 - "{relative_package_dir}: File {subpath} at line {line} contains the path expression \"{text}\" which cannot be resolved: {io_error}.", 317 - ), 318 - NixpkgsProblem::MovedOutOfByNameEmptyArg { package_name, call_package_path, file } => { 319 - let call_package_arg = 320 - if let Some(path) = &call_package_path { 321 - format!("./{path}") 322 - } else { 323 - "...".into() 324 - }; 325 - let relative_package_file = structure::relative_file_for_package(package_name); 326 - writedoc!( 327 - f, 328 - " 329 - - Attribute `pkgs.{package_name}` was previously defined in {relative_package_file}, but is now manually defined as `callPackage {call_package_arg} {{ /* ... */ }}` in {file}. 330 - Please move the package back and remove the manual `callPackage`. 331 - ", 332 - ) 333 - }, 334 - NixpkgsProblem::MovedOutOfByNameNonEmptyArg { package_name, call_package_path, file } => { 335 - let call_package_arg = 336 - if let Some(path) = &call_package_path { 337 - format!("./{}", path) 338 - } else { 339 - "...".into() 340 - }; 341 - let relative_package_file = structure::relative_file_for_package(package_name); 342 - // This can happen if users mistakenly assume that for custom arguments, 343 - // pkgs/by-name can't be used. 344 - writedoc!( 345 - f, 346 - " 347 - - Attribute `pkgs.{package_name}` was previously defined in {relative_package_file}, but is now manually defined as `callPackage {call_package_arg} {{ ... }}` in {file}. 348 - While the manual `callPackage` is still needed, it's not necessary to move the package files. 349 - ", 350 - ) 351 - }, 352 - NixpkgsProblem::NewPackageNotUsingByNameEmptyArg { package_name, call_package_path, file } => { 353 - let call_package_arg = 354 - if let Some(path) = &call_package_path { 355 - format!("./{}", path) 356 - } else { 357 - "...".into() 358 - }; 359 - let relative_package_file = structure::relative_file_for_package(package_name); 360 - writedoc!( 361 - f, 362 - " 363 - - Attribute `pkgs.{package_name}` is a new top-level package using `pkgs.callPackage {call_package_arg} {{ /* ... */ }}`. 364 - Please define it in {relative_package_file} instead. 365 - See `pkgs/by-name/README.md` for more details. 366 - Since the second `callPackage` argument is `{{ }}`, no manual `callPackage` in {file} is needed anymore. 367 - ", 368 - ) 369 - }, 370 - NixpkgsProblem::NewPackageNotUsingByNameNonEmptyArg { package_name, call_package_path, file } => { 371 - let call_package_arg = 372 - if let Some(path) = &call_package_path { 373 - format!("./{}", path) 374 - } else { 375 - "...".into() 376 - }; 377 - let relative_package_file = structure::relative_file_for_package(package_name); 378 - writedoc!( 379 - f, 380 - " 381 - - Attribute `pkgs.{package_name}` is a new top-level package using `pkgs.callPackage {call_package_arg} {{ /* ... */ }}`. 382 - Please define it in {relative_package_file} instead. 383 - See `pkgs/by-name/README.md` for more details. 384 - Since the second `callPackage` argument is not `{{ }}`, the manual `callPackage` in {file} is still needed. 385 - ", 386 - ) 387 - }, 388 - NixpkgsProblem::InternalCallPackageUsed { attr_name } => 389 - write!( 390 - f, 391 - "pkgs.{attr_name}: This attribute is defined using `_internalCallByNamePackageFile`, which is an internal function not intended for manual use.", 392 - ), 393 - NixpkgsProblem::CannotDetermineAttributeLocation { attr_name } => 394 - write!( 395 - f, 396 - "pkgs.{attr_name}: Cannot determine the location of this attribute using `builtins.unsafeGetAttrPos`.", 397 - ), 398 - } 399 - } 400 - } 401 - 402 - fn indent_definition(column: usize, definition: String) -> String { 403 - // The entire code should be indented 4 spaces 404 - textwrap::indent( 405 - // But first we want to strip the code's natural indentation 406 - &textwrap::dedent( 407 - // The definition _doesn't_ include the leading spaces, but we can 408 - // recover those from the column 409 - &format!("{}{definition}", " ".repeat(column - 1)), 410 - ), 411 - " ", 412 - ) 413 - } 414 - 415 - /// Creates a Nix path expression that when put into Nix file `from_file`, would point to the `to_file`. 416 - fn create_path_expr( 417 - from_file: impl AsRef<RelativePath>, 418 - to_file: impl AsRef<RelativePath>, 419 - ) -> String { 420 - // This `expect` calls should never trigger because we only call this function with files. 421 - // That's why we `expect` them! 422 - let from = from_file.as_ref().parent().expect("a parent for this path"); 423 - let rel = from.relative(to_file); 424 - format!("./{rel}") 425 - }
-184
pkgs/test/nixpkgs-check-by-name/src/ratchet.rs
··· 1 - //! This module implements the ratchet checks, see ../README.md#ratchet-checks 2 - //! 3 - //! Each type has a `compare` method that validates the ratchet checks for that item. 4 - 5 - use crate::nix_file::CallPackageArgumentInfo; 6 - use crate::nixpkgs_problem::NixpkgsProblem; 7 - use crate::validation::{self, Validation, Validation::Success}; 8 - use relative_path::RelativePathBuf; 9 - use std::collections::HashMap; 10 - 11 - /// The ratchet value for the entirety of Nixpkgs. 12 - #[derive(Default)] 13 - pub struct Nixpkgs { 14 - /// Sorted list of packages in package_map 15 - pub package_names: Vec<String>, 16 - /// The ratchet values for all packages 17 - pub package_map: HashMap<String, Package>, 18 - } 19 - 20 - impl Nixpkgs { 21 - /// Validates the ratchet checks for Nixpkgs 22 - pub fn compare(from: Self, to: Self) -> Validation<()> { 23 - validation::sequence_( 24 - // We only loop over the current attributes, 25 - // we don't need to check ones that were removed 26 - to.package_names.into_iter().map(|name| { 27 - Package::compare(&name, from.package_map.get(&name), &to.package_map[&name]) 28 - }), 29 - ) 30 - } 31 - } 32 - 33 - /// The ratchet value for a top-level package 34 - pub struct Package { 35 - /// The ratchet value for the check for non-auto-called empty arguments 36 - pub manual_definition: RatchetState<ManualDefinition>, 37 - 38 - /// The ratchet value for the check for new packages using pkgs/by-name 39 - pub uses_by_name: RatchetState<UsesByName>, 40 - } 41 - 42 - impl Package { 43 - /// Validates the ratchet checks for a top-level package 44 - pub fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> { 45 - validation::sequence_([ 46 - RatchetState::<ManualDefinition>::compare( 47 - name, 48 - optional_from.map(|x| &x.manual_definition), 49 - &to.manual_definition, 50 - ), 51 - RatchetState::<UsesByName>::compare( 52 - name, 53 - optional_from.map(|x| &x.uses_by_name), 54 - &to.uses_by_name, 55 - ), 56 - ]) 57 - } 58 - } 59 - 60 - /// The ratchet state of a generic ratchet check. 61 - pub enum RatchetState<Ratchet: ToNixpkgsProblem> { 62 - /// The ratchet is loose, it can be tightened more. 63 - /// In other words, this is the legacy state we're trying to move away from. 64 - /// Introducing new instances is not allowed but previous instances will continue to be allowed. 65 - /// The `Context` is context for error messages in case a new instance of this state is 66 - /// introduced 67 - Loose(Ratchet::ToContext), 68 - /// The ratchet is tight, it can't be tightened any further. 69 - /// This is either because we already use the latest state, or because the ratchet isn't 70 - /// relevant. 71 - Tight, 72 - /// This ratchet can't be applied. 73 - /// State transitions from/to NonApplicable are always allowed 74 - NonApplicable, 75 - } 76 - 77 - /// A trait that can convert an attribute-specific error context into a NixpkgsProblem 78 - pub trait ToNixpkgsProblem { 79 - /// Context relating to the Nixpkgs that is being transitioned _to_ 80 - type ToContext; 81 - 82 - /// How to convert an attribute-specific error context into a NixpkgsProblem 83 - fn to_nixpkgs_problem( 84 - name: &str, 85 - optional_from: Option<()>, 86 - to: &Self::ToContext, 87 - ) -> NixpkgsProblem; 88 - } 89 - 90 - impl<Context: ToNixpkgsProblem> RatchetState<Context> { 91 - /// Compare the previous ratchet state of an attribute to the new state. 92 - /// The previous state may be `None` in case the attribute is new. 93 - fn compare(name: &str, optional_from: Option<&Self>, to: &Self) -> Validation<()> { 94 - match (optional_from, to) { 95 - // Loosening a ratchet is now allowed 96 - (Some(RatchetState::Tight), RatchetState::Loose(loose_context)) => { 97 - Context::to_nixpkgs_problem(name, Some(()), loose_context).into() 98 - } 99 - 100 - // Introducing a loose ratchet is also not allowed 101 - (None, RatchetState::Loose(loose_context)) => { 102 - Context::to_nixpkgs_problem(name, None, loose_context).into() 103 - } 104 - 105 - // Everything else is allowed, including: 106 - // - Loose -> Loose (grandfathering policy for a loose ratchet) 107 - // - -> Tight (always okay to keep or make the ratchet tight) 108 - // - Anything involving NotApplicable, where we can't really make any good calls 109 - _ => Success(()), 110 - } 111 - } 112 - } 113 - 114 - /// The ratchet to check whether a top-level attribute has/needs 115 - /// a manual definition, e.g. in all-packages.nix. 116 - /// 117 - /// This ratchet is only tight for attributes that: 118 - /// - Are not defined in `pkgs/by-name`, and rely on a manual definition 119 - /// - Are defined in `pkgs/by-name` without any manual definition, 120 - /// (no custom argument overrides) 121 - /// - Are defined with `pkgs/by-name` with a manual definition that can't be removed 122 - /// because it provides custom argument overrides 123 - /// 124 - /// In comparison, this ratchet is loose for attributes that: 125 - /// - Are defined in `pkgs/by-name` with a manual definition 126 - /// that doesn't have any custom argument overrides 127 - pub enum ManualDefinition {} 128 - 129 - impl ToNixpkgsProblem for ManualDefinition { 130 - type ToContext = NixpkgsProblem; 131 - 132 - fn to_nixpkgs_problem( 133 - _name: &str, 134 - _optional_from: Option<()>, 135 - to: &Self::ToContext, 136 - ) -> NixpkgsProblem { 137 - (*to).clone() 138 - } 139 - } 140 - 141 - /// The ratchet value of an attribute 142 - /// for the check that new packages use pkgs/by-name 143 - /// 144 - /// This checks that all new package defined using callPackage must be defined via pkgs/by-name 145 - /// It also checks that once a package uses pkgs/by-name, it can't switch back to all-packages.nix 146 - pub enum UsesByName {} 147 - 148 - impl ToNixpkgsProblem for UsesByName { 149 - type ToContext = (CallPackageArgumentInfo, RelativePathBuf); 150 - 151 - fn to_nixpkgs_problem( 152 - name: &str, 153 - optional_from: Option<()>, 154 - (to, file): &Self::ToContext, 155 - ) -> NixpkgsProblem { 156 - if let Some(()) = optional_from { 157 - if to.empty_arg { 158 - NixpkgsProblem::MovedOutOfByNameEmptyArg { 159 - package_name: name.to_owned(), 160 - call_package_path: to.relative_path.clone(), 161 - file: file.to_owned(), 162 - } 163 - } else { 164 - NixpkgsProblem::MovedOutOfByNameNonEmptyArg { 165 - package_name: name.to_owned(), 166 - call_package_path: to.relative_path.clone(), 167 - file: file.to_owned(), 168 - } 169 - } 170 - } else if to.empty_arg { 171 - NixpkgsProblem::NewPackageNotUsingByNameEmptyArg { 172 - package_name: name.to_owned(), 173 - call_package_path: to.relative_path.clone(), 174 - file: file.to_owned(), 175 - } 176 - } else { 177 - NixpkgsProblem::NewPackageNotUsingByNameNonEmptyArg { 178 - package_name: name.to_owned(), 179 - call_package_path: to.relative_path.clone(), 180 - file: file.to_owned(), 181 - } 182 - } 183 - } 184 - }
-176
pkgs/test/nixpkgs-check-by-name/src/references.rs
··· 1 - use crate::nixpkgs_problem::NixpkgsProblem; 2 - use crate::utils; 3 - use crate::validation::{self, ResultIteratorExt, Validation::Success}; 4 - use crate::NixFileStore; 5 - use relative_path::RelativePath; 6 - 7 - use anyhow::Context; 8 - use rowan::ast::AstNode; 9 - use std::ffi::OsStr; 10 - use std::path::Path; 11 - 12 - /// Check that every package directory in pkgs/by-name doesn't link to outside that directory. 13 - /// Both symlinks and Nix path expressions are checked. 14 - pub fn check_references( 15 - nix_file_store: &mut NixFileStore, 16 - relative_package_dir: &RelativePath, 17 - absolute_package_dir: &Path, 18 - ) -> validation::Result<()> { 19 - // The first subpath to check is the package directory itself, which we can represent as an 20 - // empty path, since the absolute package directory gets prepended to this. 21 - // We don't use `./.` to keep the error messages cleaner 22 - // (there's no canonicalisation going on underneath) 23 - let subpath = RelativePath::new(""); 24 - check_path( 25 - nix_file_store, 26 - relative_package_dir, 27 - absolute_package_dir, 28 - subpath, 29 - ) 30 - .with_context(|| { 31 - format!( 32 - "While checking the references in package directory {}", 33 - relative_package_dir 34 - ) 35 - }) 36 - } 37 - 38 - /// Checks for a specific path to not have references outside 39 - /// 40 - /// The subpath is the relative path within the package directory we're currently checking. 41 - /// A relative path so that the error messages don't get absolute paths (which are messy in CI). 42 - /// The absolute package directory gets prepended before doing anything with it though. 43 - fn check_path( 44 - nix_file_store: &mut NixFileStore, 45 - relative_package_dir: &RelativePath, 46 - absolute_package_dir: &Path, 47 - subpath: &RelativePath, 48 - ) -> validation::Result<()> { 49 - let path = subpath.to_path(absolute_package_dir); 50 - 51 - Ok(if path.is_symlink() { 52 - // Check whether the symlink resolves to outside the package directory 53 - match path.canonicalize() { 54 - Ok(target) => { 55 - // No need to handle the case of it being inside the directory, since we scan through the 56 - // entire directory recursively anyways 57 - if let Err(_prefix_error) = target.strip_prefix(absolute_package_dir) { 58 - NixpkgsProblem::OutsideSymlink { 59 - relative_package_dir: relative_package_dir.to_owned(), 60 - subpath: subpath.to_owned(), 61 - } 62 - .into() 63 - } else { 64 - Success(()) 65 - } 66 - } 67 - Err(io_error) => NixpkgsProblem::UnresolvableSymlink { 68 - relative_package_dir: relative_package_dir.to_owned(), 69 - subpath: subpath.to_owned(), 70 - io_error: io_error.to_string(), 71 - } 72 - .into(), 73 - } 74 - } else if path.is_dir() { 75 - // Recursively check each entry 76 - validation::sequence_( 77 - utils::read_dir_sorted(&path)? 78 - .into_iter() 79 - .map(|entry| { 80 - check_path( 81 - nix_file_store, 82 - relative_package_dir, 83 - absolute_package_dir, 84 - // TODO: The relative_path crate doesn't seem to support OsStr 85 - &subpath.join(entry.file_name().to_string_lossy().to_string()), 86 - ) 87 - }) 88 - .collect_vec() 89 - .with_context(|| format!("Error while recursing into {}", subpath))?, 90 - ) 91 - } else if path.is_file() { 92 - // Only check Nix files 93 - if let Some(ext) = path.extension() { 94 - if ext == OsStr::new("nix") { 95 - check_nix_file( 96 - nix_file_store, 97 - relative_package_dir, 98 - absolute_package_dir, 99 - subpath, 100 - ) 101 - .with_context(|| format!("Error while checking Nix file {}", subpath))? 102 - } else { 103 - Success(()) 104 - } 105 - } else { 106 - Success(()) 107 - } 108 - } else { 109 - // This should never happen, git doesn't support other file types 110 - anyhow::bail!("Unsupported file type for path {}", subpath); 111 - }) 112 - } 113 - 114 - /// Check whether a nix file contains path expression references pointing outside the package 115 - /// directory 116 - fn check_nix_file( 117 - nix_file_store: &mut NixFileStore, 118 - relative_package_dir: &RelativePath, 119 - absolute_package_dir: &Path, 120 - subpath: &RelativePath, 121 - ) -> validation::Result<()> { 122 - let path = subpath.to_path(absolute_package_dir); 123 - 124 - let nix_file = nix_file_store.get(&path)?; 125 - 126 - Ok(validation::sequence_( 127 - nix_file.syntax_root.syntax().descendants().map(|node| { 128 - let text = node.text().to_string(); 129 - let line = nix_file.line_index.line(node.text_range().start().into()); 130 - 131 - // We're only interested in Path expressions 132 - let Some(path) = rnix::ast::Path::cast(node) else { 133 - return Success(()); 134 - }; 135 - 136 - use crate::nix_file::ResolvedPath; 137 - 138 - match nix_file.static_resolve_path(path, absolute_package_dir) { 139 - ResolvedPath::Interpolated => NixpkgsProblem::PathInterpolation { 140 - relative_package_dir: relative_package_dir.to_owned(), 141 - subpath: subpath.to_owned(), 142 - line, 143 - text, 144 - } 145 - .into(), 146 - ResolvedPath::SearchPath => NixpkgsProblem::SearchPath { 147 - relative_package_dir: relative_package_dir.to_owned(), 148 - subpath: subpath.to_owned(), 149 - line, 150 - text, 151 - } 152 - .into(), 153 - ResolvedPath::Outside => NixpkgsProblem::OutsidePathReference { 154 - relative_package_dir: relative_package_dir.to_owned(), 155 - subpath: subpath.to_owned(), 156 - line, 157 - text, 158 - } 159 - .into(), 160 - ResolvedPath::Unresolvable(e) => NixpkgsProblem::UnresolvablePathReference { 161 - relative_package_dir: relative_package_dir.to_owned(), 162 - subpath: subpath.to_owned(), 163 - line, 164 - text, 165 - io_error: e.to_string(), 166 - } 167 - .into(), 168 - ResolvedPath::Within(..) => { 169 - // No need to handle the case of it being inside the directory, since we scan through the 170 - // entire directory recursively anyways 171 - Success(()) 172 - } 173 - } 174 - }), 175 - )) 176 - }
-184
pkgs/test/nixpkgs-check-by-name/src/structure.rs
··· 1 - use crate::nixpkgs_problem::NixpkgsProblem; 2 - use crate::references; 3 - use crate::utils; 4 - use crate::utils::{BASE_SUBPATH, PACKAGE_NIX_FILENAME}; 5 - use crate::validation::{self, ResultIteratorExt, Validation::Success}; 6 - use crate::NixFileStore; 7 - use itertools::concat; 8 - use lazy_static::lazy_static; 9 - use regex::Regex; 10 - use relative_path::RelativePathBuf; 11 - use std::fs::DirEntry; 12 - use std::path::Path; 13 - 14 - lazy_static! { 15 - static ref SHARD_NAME_REGEX: Regex = Regex::new(r"^[a-z0-9_-]{1,2}$").unwrap(); 16 - static ref PACKAGE_NAME_REGEX: Regex = Regex::new(r"^[a-zA-Z0-9_-]+$").unwrap(); 17 - } 18 - 19 - // Some utility functions for the basic structure 20 - 21 - pub fn shard_for_package(package_name: &str) -> String { 22 - package_name.to_lowercase().chars().take(2).collect() 23 - } 24 - 25 - pub fn relative_dir_for_shard(shard_name: &str) -> RelativePathBuf { 26 - RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}")) 27 - } 28 - 29 - pub fn relative_dir_for_package(package_name: &str) -> RelativePathBuf { 30 - relative_dir_for_shard(&shard_for_package(package_name)).join(package_name) 31 - } 32 - 33 - pub fn relative_file_for_package(package_name: &str) -> RelativePathBuf { 34 - relative_dir_for_package(package_name).join(PACKAGE_NIX_FILENAME) 35 - } 36 - 37 - /// Check the structure of Nixpkgs, returning the attribute names that are defined in 38 - /// `pkgs/by-name` 39 - pub fn check_structure( 40 - path: &Path, 41 - nix_file_store: &mut NixFileStore, 42 - ) -> validation::Result<Vec<String>> { 43 - let base_dir = path.join(BASE_SUBPATH); 44 - 45 - let shard_results = utils::read_dir_sorted(&base_dir)? 46 - .into_iter() 47 - .map(|shard_entry| -> validation::Result<_> { 48 - let shard_path = shard_entry.path(); 49 - let shard_name = shard_entry.file_name().to_string_lossy().into_owned(); 50 - let relative_shard_path = relative_dir_for_shard(&shard_name); 51 - 52 - Ok(if shard_name == "README.md" { 53 - // README.md is allowed to be a file and not checked 54 - 55 - Success(vec![]) 56 - } else if !shard_path.is_dir() { 57 - NixpkgsProblem::ShardNonDir { 58 - relative_shard_path: relative_shard_path.clone(), 59 - } 60 - .into() 61 - // we can't check for any other errors if it's a file, since there's no subdirectories to check 62 - } else { 63 - let shard_name_valid = SHARD_NAME_REGEX.is_match(&shard_name); 64 - let result = if !shard_name_valid { 65 - NixpkgsProblem::InvalidShardName { 66 - relative_shard_path: relative_shard_path.clone(), 67 - shard_name: shard_name.clone(), 68 - } 69 - .into() 70 - } else { 71 - Success(()) 72 - }; 73 - 74 - let entries = utils::read_dir_sorted(&shard_path)?; 75 - 76 - let duplicate_results = entries 77 - .iter() 78 - .zip(entries.iter().skip(1)) 79 - .filter(|(l, r)| { 80 - l.file_name().to_ascii_lowercase() == r.file_name().to_ascii_lowercase() 81 - }) 82 - .map(|(l, r)| { 83 - NixpkgsProblem::CaseSensitiveDuplicate { 84 - relative_shard_path: relative_shard_path.clone(), 85 - first: l.file_name(), 86 - second: r.file_name(), 87 - } 88 - .into() 89 - }); 90 - 91 - let result = result.and(validation::sequence_(duplicate_results)); 92 - 93 - let package_results = entries 94 - .into_iter() 95 - .map(|package_entry| { 96 - check_package( 97 - nix_file_store, 98 - path, 99 - &shard_name, 100 - shard_name_valid, 101 - package_entry, 102 - ) 103 - }) 104 - .collect_vec()?; 105 - 106 - result.and(validation::sequence(package_results)) 107 - }) 108 - }) 109 - .collect_vec()?; 110 - 111 - // Combine the package names conatained within each shard into a longer list 112 - Ok(validation::sequence(shard_results).map(concat)) 113 - } 114 - 115 - fn check_package( 116 - nix_file_store: &mut NixFileStore, 117 - path: &Path, 118 - shard_name: &str, 119 - shard_name_valid: bool, 120 - package_entry: DirEntry, 121 - ) -> validation::Result<String> { 122 - let package_path = package_entry.path(); 123 - let package_name = package_entry.file_name().to_string_lossy().into_owned(); 124 - let relative_package_dir = 125 - RelativePathBuf::from(format!("{BASE_SUBPATH}/{shard_name}/{package_name}")); 126 - 127 - Ok(if !package_path.is_dir() { 128 - NixpkgsProblem::PackageNonDir { 129 - relative_package_dir: relative_package_dir.clone(), 130 - } 131 - .into() 132 - } else { 133 - let package_name_valid = PACKAGE_NAME_REGEX.is_match(&package_name); 134 - let result = if !package_name_valid { 135 - NixpkgsProblem::InvalidPackageName { 136 - relative_package_dir: relative_package_dir.clone(), 137 - package_name: package_name.clone(), 138 - } 139 - .into() 140 - } else { 141 - Success(()) 142 - }; 143 - 144 - let correct_relative_package_dir = relative_dir_for_package(&package_name); 145 - let result = result.and(if relative_package_dir != correct_relative_package_dir { 146 - // Only show this error if we have a valid shard and package name 147 - // Because if one of those is wrong, you should fix that first 148 - if shard_name_valid && package_name_valid { 149 - NixpkgsProblem::IncorrectShard { 150 - relative_package_dir: relative_package_dir.clone(), 151 - correct_relative_package_dir: correct_relative_package_dir.clone(), 152 - } 153 - .into() 154 - } else { 155 - Success(()) 156 - } 157 - } else { 158 - Success(()) 159 - }); 160 - 161 - let package_nix_path = package_path.join(PACKAGE_NIX_FILENAME); 162 - let result = result.and(if !package_nix_path.exists() { 163 - NixpkgsProblem::PackageNixNonExistent { 164 - relative_package_dir: relative_package_dir.clone(), 165 - } 166 - .into() 167 - } else if package_nix_path.is_dir() { 168 - NixpkgsProblem::PackageNixDir { 169 - relative_package_dir: relative_package_dir.clone(), 170 - } 171 - .into() 172 - } else { 173 - Success(()) 174 - }); 175 - 176 - let result = result.and(references::check_references( 177 - nix_file_store, 178 - &relative_package_dir, 179 - &relative_package_dir.to_path(path), 180 - )?); 181 - 182 - result.map(|_| package_name.clone()) 183 - }) 184 - }
-95
pkgs/test/nixpkgs-check-by-name/src/utils.rs
··· 1 - use anyhow::Context; 2 - use std::fs; 3 - use std::io; 4 - use std::path::Path; 5 - 6 - pub const BASE_SUBPATH: &str = "pkgs/by-name"; 7 - pub const PACKAGE_NIX_FILENAME: &str = "package.nix"; 8 - 9 - /// Deterministic file listing so that tests are reproducible 10 - pub fn read_dir_sorted(base_dir: &Path) -> anyhow::Result<Vec<fs::DirEntry>> { 11 - let listing = base_dir 12 - .read_dir() 13 - .with_context(|| format!("Could not list directory {}", base_dir.display()))?; 14 - let mut shard_entries = listing 15 - .collect::<io::Result<Vec<_>>>() 16 - .with_context(|| format!("Could not list directory {}", base_dir.display()))?; 17 - shard_entries.sort_by_key(|entry| entry.file_name()); 18 - Ok(shard_entries) 19 - } 20 - 21 - /// A simple utility for calculating the line for a string offset. 22 - /// This doesn't do any Unicode handling, though that probably doesn't matter 23 - /// because newlines can't split up Unicode characters. Also this is only used 24 - /// for error reporting 25 - pub struct LineIndex { 26 - /// Stores the indices of newlines 27 - newlines: Vec<usize>, 28 - } 29 - 30 - impl LineIndex { 31 - pub fn new(s: &str) -> LineIndex { 32 - let mut newlines = vec![]; 33 - let mut index = 0; 34 - // Iterates over all newline-split parts of the string, adding the index of the newline to 35 - // the vec 36 - for split in s.split_inclusive('\n') { 37 - index += split.len(); 38 - newlines.push(index - 1); 39 - } 40 - LineIndex { newlines } 41 - } 42 - 43 - /// Returns the line number for a string index. 44 - /// If the index points to a newline, returns the line number before the newline 45 - pub fn line(&self, index: usize) -> usize { 46 - match self.newlines.binary_search(&index) { 47 - // +1 because lines are 1-indexed 48 - Ok(x) => x + 1, 49 - Err(x) => x + 1, 50 - } 51 - } 52 - 53 - /// Returns the string index for a line and column. 54 - pub fn fromlinecolumn(&self, line: usize, column: usize) -> usize { 55 - // If it's the 1th line, the column is the index 56 - if line == 1 { 57 - // But columns are 1-indexed 58 - column - 1 59 - } else { 60 - // For the nth line, we add the index of the (n-1)st newline to the column, 61 - // and remove one more from the index since arrays are 0-indexed. 62 - // Then add the 1-indexed column to get not the newline index itself, 63 - // but rather the index of the position on the next line 64 - self.newlines[line - 2] + column 65 - } 66 - } 67 - } 68 - 69 - #[cfg(test)] 70 - mod tests { 71 - use super::*; 72 - 73 - #[test] 74 - fn line_index() { 75 - let line_index = LineIndex::new("a\nbc\n\ndef\n"); 76 - 77 - let pairs = [ 78 - (0, 1, 1), 79 - (1, 1, 2), 80 - (2, 2, 1), 81 - (3, 2, 2), 82 - (4, 2, 3), 83 - (5, 3, 1), 84 - (6, 4, 1), 85 - (7, 4, 2), 86 - (8, 4, 3), 87 - (9, 4, 4), 88 - ]; 89 - 90 - for (index, line, column) in pairs { 91 - assert_eq!(line_index.line(index), line); 92 - assert_eq!(line_index.fromlinecolumn(line, column), index); 93 - } 94 - } 95 - }
-111
pkgs/test/nixpkgs-check-by-name/src/validation.rs
··· 1 - use crate::nixpkgs_problem::NixpkgsProblem; 2 - use itertools::concat; 3 - use itertools::{ 4 - Either::{Left, Right}, 5 - Itertools, 6 - }; 7 - use Validation::*; 8 - 9 - /// The validation result of a check. 10 - /// Instead of exiting at the first failure, 11 - /// this type can accumulate multiple failures. 12 - /// This can be achieved using the functions `and`, `sequence` and `sequence_` 13 - /// 14 - /// This leans on https://hackage.haskell.org/package/validation 15 - pub enum Validation<A> { 16 - Failure(Vec<NixpkgsProblem>), 17 - Success(A), 18 - } 19 - 20 - impl<A> From<NixpkgsProblem> for Validation<A> { 21 - /// Create a `Validation<A>` from a single check problem 22 - fn from(value: NixpkgsProblem) -> Self { 23 - Failure(vec![value]) 24 - } 25 - } 26 - 27 - /// A type alias representing the result of a check, either: 28 - /// - Err(anyhow::Error): A fatal failure, typically I/O errors. 29 - /// Such failures are not caused by the files in Nixpkgs. 30 - /// This hints at a bug in the code or a problem with the deployment. 31 - /// - Ok(Failure(Vec<NixpkgsProblem>)): A non-fatal validation problem with the Nixpkgs files. 32 - /// Further checks can be run even with this result type. 33 - /// Such problems can be fixed by changing the Nixpkgs files. 34 - /// - Ok(Success(A)): A successful (potentially intermediate) result with an arbitrary value. 35 - /// No fatal errors have occurred and no validation problems have been found with Nixpkgs. 36 - pub type Result<A> = anyhow::Result<Validation<A>>; 37 - 38 - pub trait ResultIteratorExt<A, E>: Sized + Iterator<Item = std::result::Result<A, E>> { 39 - fn collect_vec(self) -> std::result::Result<Vec<A>, E>; 40 - } 41 - 42 - impl<I, A, E> ResultIteratorExt<A, E> for I 43 - where 44 - I: Sized + Iterator<Item = std::result::Result<A, E>>, 45 - { 46 - /// A convenience version of `collect` specialised to a vector 47 - fn collect_vec(self) -> std::result::Result<Vec<A>, E> { 48 - self.collect() 49 - } 50 - } 51 - 52 - impl<A> Validation<A> { 53 - /// Map a `Validation<A>` to a `Validation<B>` by applying a function to the 54 - /// potentially contained value in case of success. 55 - pub fn map<B>(self, f: impl FnOnce(A) -> B) -> Validation<B> { 56 - match self { 57 - Failure(err) => Failure(err), 58 - Success(value) => Success(f(value)), 59 - } 60 - } 61 - 62 - /// Map a `Validation<A>` to a `Result<B>` by applying a function `A -> Result<B>` 63 - /// only if there is a `Success` value 64 - pub fn result_map<B>(self, f: impl FnOnce(A) -> Result<B>) -> Result<B> { 65 - match self { 66 - Failure(err) => Ok(Failure(err)), 67 - Success(value) => f(value), 68 - } 69 - } 70 - } 71 - 72 - impl Validation<()> { 73 - /// Combine two validations, both of which need to be successful for the return value to be successful. 74 - /// The `NixpkgsProblem`s of both sides are returned concatenated. 75 - pub fn and<A>(self, other: Validation<A>) -> Validation<A> { 76 - match (self, other) { 77 - (Success(_), Success(right_value)) => Success(right_value), 78 - (Failure(errors), Success(_)) => Failure(errors), 79 - (Success(_), Failure(errors)) => Failure(errors), 80 - (Failure(errors_l), Failure(errors_r)) => Failure(concat([errors_l, errors_r])), 81 - } 82 - } 83 - } 84 - 85 - /// Combine many validations into a single one. 86 - /// All given validations need to be successful in order for the returned validation to be successful, 87 - /// in which case the returned validation value contains a `Vec` of each individual value. 88 - /// Otherwise the `NixpkgsProblem`s of all validations are returned concatenated. 89 - pub fn sequence<A>(check_results: impl IntoIterator<Item = Validation<A>>) -> Validation<Vec<A>> { 90 - let (errors, values): (Vec<Vec<NixpkgsProblem>>, Vec<A>) = check_results 91 - .into_iter() 92 - .partition_map(|validation| match validation { 93 - Failure(err) => Left(err), 94 - Success(value) => Right(value), 95 - }); 96 - 97 - // To combine the errors from the results we flatten all the error Vec's into a new Vec 98 - // This is not very efficient, but doesn't matter because generally we should have no errors 99 - let flattened_errors = errors.into_iter().concat(); 100 - 101 - if flattened_errors.is_empty() { 102 - Success(values) 103 - } else { 104 - Failure(flattened_errors) 105 - } 106 - } 107 - 108 - /// Like `sequence`, but without any containing value, for convenience 109 - pub fn sequence_(validations: impl IntoIterator<Item = Validation<()>>) -> Validation<()> { 110 - sequence(validations).map(|_| ()) 111 - }
-3
pkgs/test/nixpkgs-check-by-name/tests/aliases/aliases.nix
··· 1 - self: super: { 2 - baz = self.foo; 3 - }
-3
pkgs/test/nixpkgs-check-by-name/tests/aliases/all-packages.nix
··· 1 - self: super: { 2 - bar = self.foo; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/aliases/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/aliases/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/aliases/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-7
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/all-packages.nix
··· 1 - self: super: { 2 - 3 - alt.callPackage = self.lib.callPackageWith {}; 4 - 5 - foo = self.alt.callPackage ({ }: self.someDrv) { }; 6 - 7 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/expected
··· 1 - - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 - 3 - foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 - 5 - However, in this PR, a different `callPackage` is used. See the definition in all-packages.nix:5: 6 - 7 - foo = self.alt.callPackage ({ }: self.someDrv) { }; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/alt-callPackage/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/base/pkgs/by-name/foo

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/expected
··· 1 - The base branch is broken, but this PR fixes it. Nice job!
pkgs/test/nixpkgs-check-by-name/tests/base-fixed/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/base/pkgs/by-name/foo

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-3
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/expected
··· 1 - pkgs/by-name/bar: This is a file, but it should be a directory. 2 - The base branch is broken and still has above problems with this PR, which need to be fixed first. 3 - Consider reverting the PR that introduced these problems in order to prevent more failures of unrelated PRs.
pkgs/test/nixpkgs-check-by-name/tests/base-still-broken/pkgs/by-name/bar

This is a binary file and will not be displayed.

-4
pkgs/test/nixpkgs-check-by-name/tests/broken-autocall/default.nix
··· 1 - args: 2 - builtins.removeAttrs 3 - (import <test-nixpkgs> { root = ./.; } args) 4 - [ "foo" ]
-2
pkgs/test/nixpkgs-check-by-name/tests/broken-autocall/expected
··· 1 - pkgs.foo: This attribute is not defined but it should be defined automatically as pkgs/by-name/fo/foo/package.nix 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/broken-autocall/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-7
pkgs/test/nixpkgs-check-by-name/tests/callPackage-syntax/all-packages.nix
··· 1 - self: super: { 2 - set = self.callPackages ({ callPackage }: { 3 - foo = callPackage ({ someDrv }: someDrv) { }; 4 - }) { }; 5 - 6 - inherit (self.set) foo; 7 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/callPackage-syntax/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/callPackage-syntax/expected
··· 1 - Validated successfully
pkgs/test/nixpkgs-check-by-name/tests/callPackage-syntax/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/empty-base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/empty-base/expected
··· 1 - Validated successfully
pkgs/test/nixpkgs-check-by-name/tests/empty-base/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/incorrect-shard/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/incorrect-shard/expected
··· 1 - pkgs/by-name/aa/FOO: Incorrect directory location, should be pkgs/by-name/fo/FOO instead. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/incorrect-shard/pkgs/by-name/aa/FOO/package.nix
··· 1 - { someDrv }: someDrv
-4
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/all-packages.nix
··· 1 - self: super: { 2 - foo = self._internalCallByNamePackageFile ./foo.nix; 3 - bar = self._internalCallByNamePackageFile ./foo.nix; 4 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/expected
··· 1 - pkgs.foo: This attribute is defined using `_internalCallByNamePackageFile`, which is an internal function not intended for manual use. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/foo.nix
··· 1 - { someDrv }: someDrv
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/internalCallPackage/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/invalid-package-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/invalid-package-name/expected
··· 1 - pkgs/by-name/fo/fo@: Invalid package directory name "fo@", must be ASCII characters consisting of a-z, A-Z, 0-9, "-" or "_". 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/invalid-package-name/pkgs/by-name/fo/fo@/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/invalid-shard-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/invalid-shard-name/expected
··· 1 - pkgs/by-name/A: Invalid directory name "A", must be at most 2 ASCII characters consisting of a-z, 0-9, "-" or "_". 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
pkgs/test/nixpkgs-check-by-name/tests/invalid-shard-name/pkgs/by-name/A/A/.git-keep

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/invalid-shard-name/pkgs/by-name/A/A/package.nix
··· 1 - { someDrv }: someDrv
-10
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/all-packages.nix
··· 1 - self: super: { 2 - nonAttributeSet = self.callPackage ({ someDrv }: someDrv) { }; 3 - nonCallPackage = self.callPackage ({ someDrv }: someDrv) { }; 4 - internalCallByName = self.callPackage ({ someDrv }: someDrv) { }; 5 - nonDerivation = self.callPackage ({ someDrv }: someDrv) { }; 6 - 7 - onlyMove = self.callPackage ./pkgs/by-name/on/onlyMove/package.nix { }; 8 - 9 - noEval = self.callPackage ./pkgs/by-name/no/noEval/package.nix { }; 10 - }
-9
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/base/all-packages.nix
··· 1 - self: super: { 2 - nonAttributeSet = null; 3 - nonCallPackage = self.someDrv; 4 - internalCallByName = self._internalCallByNamePackageFile ./some-pkg.nix; 5 - nonDerivation = self.callPackage ({ }: { }) { }; 6 - 7 - onlyMove = self.callPackage ({ someDrv }: someDrv) { }; 8 - noEval = throw "foo"; 9 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/base/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/base/some-pkg.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-21
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/expected
··· 1 - - Because pkgs/by-name/no/noEval exists, the attribute `pkgs.noEval` must be defined like 2 - 3 - noEval = callPackage ./pkgs/by-name/no/noEval/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the second argument is empty. See the definition in all-packages.nix:9: 6 - 7 - noEval = self.callPackage ./pkgs/by-name/no/noEval/package.nix { }; 8 - 9 - Such a definition is provided automatically and therefore not necessary. Please remove it. 10 - 11 - - Because pkgs/by-name/on/onlyMove exists, the attribute `pkgs.onlyMove` must be defined like 12 - 13 - onlyMove = callPackage ./pkgs/by-name/on/onlyMove/package.nix { /* ... */ }; 14 - 15 - However, in this PR, the second argument is empty. See the definition in all-packages.nix:7: 16 - 17 - onlyMove = self.callPackage ./pkgs/by-name/on/onlyMove/package.nix { }; 18 - 19 - Such a definition is provided automatically and therefore not necessary. Please remove it. 20 - 21 - This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
-1
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/pkgs/by-name/no/noEval/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/manual-definition/pkgs/by-name/on/onlyMove/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/missing-package-nix/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/missing-package-nix/expected
··· 1 - pkgs/by-name/fo/foo: Missing required "package.nix" file. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
pkgs/test/nixpkgs-check-by-name/tests/missing-package-nix/pkgs/by-name/fo/foo/.git-keep

This is a binary file and will not be displayed.

-110
pkgs/test/nixpkgs-check-by-name/tests/mock-nixpkgs.nix
··· 1 - /* 2 - This file returns a mocked version of Nixpkgs' default.nix for testing purposes. 3 - It does not depend on Nixpkgs itself for the sake of simplicity. 4 - 5 - It takes one attribute as an argument: 6 - - `root`: The root of Nixpkgs to read other files from, including: 7 - - `./pkgs/by-name`: The `pkgs/by-name` directory to test 8 - - `./all-packages.nix`: A file containing an overlay to mirror the real `pkgs/top-level/all-packages.nix`. 9 - This allows adding overrides on top of the auto-called packages in `pkgs/by-name`. 10 - 11 - It returns a Nixpkgs-like function that can be auto-called and evaluates to an attribute set. 12 - */ 13 - { 14 - root, 15 - }: 16 - # The arguments for the Nixpkgs function 17 - { 18 - # Passed by the checker to modify `callPackage` 19 - overlays ? [], 20 - # Passed by the checker to make sure a real Nixpkgs isn't influenced by impurities 21 - config ? {}, 22 - # Passed by the checker to make sure a real Nixpkgs isn't influenced by impurities 23 - system ? null, 24 - }: 25 - let 26 - 27 - # Simplified versions of lib functions 28 - lib = import <test-nixpkgs/lib>; 29 - 30 - # The base fixed-point function to populate the resulting attribute set 31 - pkgsFun = 32 - self: { 33 - inherit lib; 34 - newScope = extra: lib.callPackageWith (self // extra); 35 - callPackage = self.newScope { }; 36 - callPackages = lib.callPackagesWith self; 37 - } 38 - # This mapAttrs is a very hacky workaround necessary because for all attributes defined in Nixpkgs, 39 - # the files that define them are verified to be within Nixpkgs. 40 - # This is usually a very safe assumption, but it fails in these tests for someDrv, 41 - # because it's technically defined outside the Nixpkgs directories of each test case. 42 - # By using `mapAttrs`, `builtins.unsafeGetAttrPos` just returns `null`, 43 - # which then doesn't trigger this check 44 - // lib.mapAttrs (name: value: value) { 45 - someDrv = { type = "derivation"; }; 46 - }; 47 - 48 - baseDirectory = root + "/pkgs/by-name"; 49 - 50 - # Generates { <name> = <file>; } entries mapping package names to their `package.nix` files in `pkgs/by-name`. 51 - # Could be more efficient, but this is only for testing. 52 - autoCalledPackageFiles = 53 - let 54 - entries = builtins.readDir baseDirectory; 55 - 56 - namesForShard = shard: 57 - if entries.${shard} != "directory" then 58 - # Only README.md is allowed to be a file, but it's not this code's job to check for that 59 - { } 60 - else 61 - builtins.mapAttrs 62 - (name: _: baseDirectory + "/${shard}/${name}/package.nix") 63 - (builtins.readDir (baseDirectory + "/${shard}")); 64 - 65 - in 66 - builtins.foldl' 67 - (acc: el: acc // el) 68 - { } 69 - (map namesForShard (builtins.attrNames entries)); 70 - 71 - # Turns autoCalledPackageFiles into an overlay that `callPackage`'s all of them 72 - autoCalledPackages = self: super: 73 - { 74 - # Needed to be able to detect empty arguments in all-packages.nix 75 - # See a more detailed description in pkgs/top-level/by-name-overlay.nix 76 - _internalCallByNamePackageFile = file: self.callPackage file { }; 77 - } 78 - // builtins.mapAttrs 79 - (name: self._internalCallByNamePackageFile) 80 - autoCalledPackageFiles; 81 - 82 - # A list optionally containing the `all-packages.nix` file from the test case as an overlay 83 - optionalAllPackagesOverlay = 84 - if builtins.pathExists (root + "/all-packages.nix") then 85 - [ (import (root + "/all-packages.nix")) ] 86 - else 87 - [ ]; 88 - 89 - # A list optionally containing the `aliases.nix` file from the test case as an overlay 90 - # But only if config.allowAliases is not false 91 - optionalAliasesOverlay = 92 - if (config.allowAliases or true) && builtins.pathExists (root + "/aliases.nix") then 93 - [ (import (root + "/aliases.nix")) ] 94 - else 95 - [ ]; 96 - 97 - # All the overlays in the right order, including the user-supplied ones 98 - allOverlays = 99 - [ 100 - autoCalledPackages 101 - ] 102 - ++ optionalAllPackagesOverlay 103 - ++ optionalAliasesOverlay 104 - ++ overlays; 105 - 106 - # Apply all the overlays in order to the base fixed-point function pkgsFun 107 - f = builtins.foldl' (f: overlay: lib.extends overlay f) pkgsFun allOverlays; 108 - in 109 - # Evaluate the fixed-point 110 - lib.fix f
-10
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/all-packages.nix
··· 1 - self: super: { 2 - foo1 = self.callPackage ({ someDrv }: someDrv) { }; 3 - foo2 = self.callPackage ./without-config.nix { }; 4 - foo3 = self.callPackage ({ someDrv, enableFoo }: someDrv) { 5 - enableFoo = null; 6 - }; 7 - foo4 = self.callPackage ./with-config.nix { 8 - enableFoo = null; 9 - }; 10 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/base/pkgs/by-name/fo/foo1/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/base/pkgs/by-name/fo/foo2/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/base/pkgs/by-name/fo/foo3/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/base/pkgs/by-name/fo/foo4/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-13
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/expected
··· 1 - - Attribute `pkgs.foo1` was previously defined in pkgs/by-name/fo/foo1/package.nix, but is now manually defined as `callPackage ... { /* ... */ }` in all-packages.nix. 2 - Please move the package back and remove the manual `callPackage`. 3 - 4 - - Attribute `pkgs.foo2` was previously defined in pkgs/by-name/fo/foo2/package.nix, but is now manually defined as `callPackage ./without-config.nix { /* ... */ }` in all-packages.nix. 5 - Please move the package back and remove the manual `callPackage`. 6 - 7 - - Attribute `pkgs.foo3` was previously defined in pkgs/by-name/fo/foo3/package.nix, but is now manually defined as `callPackage ... { ... }` in all-packages.nix. 8 - While the manual `callPackage` is still needed, it's not necessary to move the package files. 9 - 10 - - Attribute `pkgs.foo4` was previously defined in pkgs/by-name/fo/foo4/package.nix, but is now manually defined as `callPackage ./with-config.nix { ... }` in all-packages.nix. 11 - While the manual `callPackage` is still needed, it's not necessary to move the package files. 12 - 13 - This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/with-config.nix
··· 1 - { someDrv, enableFoo }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/move-to-non-by-name/without-config.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-14
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/expected
··· 1 - pkgs/by-name/A: Invalid directory name "A", must be at most 2 ASCII characters consisting of a-z, 0-9, "-" or "_". 2 - pkgs/by-name/A/fo@: Invalid package directory name "fo@", must be ASCII characters consisting of a-z, A-Z, 0-9, "-" or "_". 3 - pkgs/by-name/A/fo@: Path foo is a symlink which cannot be resolved: No such file or directory (os error 2). 4 - pkgs/by-name/A/fo@: Path package.nix is a symlink pointing to a path outside the directory of that package. 5 - pkgs/by-name/aa: This is a file, but it should be a directory. 6 - pkgs/by-name/ba/bar: This path is a file, but it should be a directory. 7 - pkgs/by-name/ba/baz: "package.nix" must be a file. 8 - pkgs/by-name/ba/foo: Incorrect directory location, should be pkgs/by-name/fo/foo instead. 9 - pkgs/by-name/ba/foo: File package.nix at line 2 contains the path expression "/bar" which cannot be resolved: No such file or directory (os error 2). 10 - pkgs/by-name/ba/foo: File package.nix at line 3 contains the path expression "../." which may point outside the directory of that package. 11 - pkgs/by-name/ba/foo: File package.nix at line 4 contains the nix search path expression "<nixpkgs>" which may point outside the directory of that package. 12 - pkgs/by-name/ba/foo: File package.nix at line 5 contains the path expression "./${"test"}", which is not yet supported and may point outside the directory of that package. 13 - pkgs/by-name/fo/foo: Missing required "package.nix" file. 14 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/A/fo@/foo
··· 1 - none
-1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/A/fo@/package.nix
··· 1 - ../../../../someDrv.nix
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/aa

This is a binary file and will not be displayed.

pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/ba/bar

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/ba/baz/package.nix/default.nix
··· 1 - { someDrv }: someDrv
-6
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/ba/foo/package.nix
··· 1 - { someDrv }: someDrv // { 2 - escapeAbsolute = /bar; 3 - escapeRelative = ../.; 4 - nixPath = <nixpkgs>; 5 - pathWithSubexpr = ./${"test"}; 6 - }
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/pkgs/by-name/fo/foo/.git-keep

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/multiple-failures/someDrv.nix
··· 1 - { someDrv }: someDrv
-11
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/all-packages.nix
··· 1 - self: super: { 2 - before = self.callPackage ({ someDrv }: someDrv) { }; 3 - new1 = self.callPackage ({ someDrv }: someDrv) { }; 4 - new2 = self.callPackage ./without-config.nix { }; 5 - new3 = self.callPackage ({ someDrv, enableNew }: someDrv) { 6 - enableNew = null; 7 - }; 8 - new4 = self.callPackage ./with-config.nix { 9 - enableNew = null; 10 - }; 11 - }
-5
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/base/all-packages.nix
··· 1 - self: super: { 2 - 3 - before = self.callPackage ({ someDrv }: someDrv) { }; 4 - 5 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/base/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-21
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/expected
··· 1 - - Attribute `pkgs.new1` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 2 - Please define it in pkgs/by-name/ne/new1/package.nix instead. 3 - See `pkgs/by-name/README.md` for more details. 4 - Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 5 - 6 - - Attribute `pkgs.new2` is a new top-level package using `pkgs.callPackage ./without-config.nix { /* ... */ }`. 7 - Please define it in pkgs/by-name/ne/new2/package.nix instead. 8 - See `pkgs/by-name/README.md` for more details. 9 - Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 10 - 11 - - Attribute `pkgs.new3` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 12 - Please define it in pkgs/by-name/ne/new3/package.nix instead. 13 - See `pkgs/by-name/README.md` for more details. 14 - Since the second `callPackage` argument is not `{ }`, the manual `callPackage` in all-packages.nix is still needed. 15 - 16 - - Attribute `pkgs.new4` is a new top-level package using `pkgs.callPackage ./with-config.nix { /* ... */ }`. 17 - Please define it in pkgs/by-name/ne/new4/package.nix instead. 18 - See `pkgs/by-name/README.md` for more details. 19 - Since the second `callPackage` argument is not `{ }`, the manual `callPackage` in all-packages.nix is still needed. 20 - 21 - This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/with-config.nix
··· 1 - { someDrv, enableNew }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/new-package-non-by-name/without-config.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/no-by-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/no-by-name/expected
··· 1 - Validated successfully
-5
pkgs/test/nixpkgs-check-by-name/tests/no-eval/all-packages.nix
··· 1 - self: super: { 2 - iDontEval = throw "I don't eval"; 3 - 4 - futureEval = self.callPackage ({ someDrv }: someDrv) { }; 5 - }
-3
pkgs/test/nixpkgs-check-by-name/tests/no-eval/base/all-packages.nix
··· 1 - self: super: { 2 - futureEval = throw "foo"; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/no-eval/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/no-eval/base/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/no-eval/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/no-eval/expected
··· 1 - Validated successfully
pkgs/test/nixpkgs-check-by-name/tests/no-eval/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/non-attrs/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/non-attrs/expected
··· 1 - pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/non-attrs/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { }: null
-1
pkgs/test/nixpkgs-check-by-name/tests/non-derivation/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/non-derivation/expected
··· 1 - pkgs.nonDerivation: This attribute defined by pkgs/by-name/no/nonDerivation/package.nix is not a derivation 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/non-derivation/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { }: { }
-6
pkgs/test/nixpkgs-check-by-name/tests/non-syntactical-callPackage-by-name/all-packages.nix
··· 1 - self: super: { 2 - 3 - bar = (x: x) self.callPackage ./pkgs/by-name/fo/foo/package.nix { someFlag = true; }; 4 - foo = self.bar; 5 - 6 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/non-syntactical-callPackage-by-name/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/non-syntactical-callPackage-by-name/expected
··· 1 - - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 - 3 - foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 - 5 - However, in this PR, it isn't defined that way. See the definition in all-packages.nix:4 6 - 7 - foo = self.bar; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/non-syntactical-callPackage-by-name/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv, someFlag }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/one-letter/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/one-letter/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/one-letter/pkgs/by-name/a/a/package.nix
··· 1 - { someDrv }: someDrv
-16
pkgs/test/nixpkgs-check-by-name/tests/only-callPackage-derivations/all-packages.nix
··· 1 - self: super: { 2 - alternateCallPackage = self.myScope.callPackage ({ myScopeValue, someDrv }: 3 - assert myScopeValue; 4 - someDrv 5 - ) { }; 6 - 7 - myScope = self.lib.makeScope self.newScope (self: { 8 - myScopeValue = true; 9 - }); 10 - 11 - myPackages = self.callPackages ({ someDrv }: { 12 - a = someDrv; 13 - b = someDrv; 14 - }) { }; 15 - inherit (self.myPackages) a b; 16 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/only-callPackage-derivations/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/only-callPackage-derivations/expected
··· 1 - Validated successfully
pkgs/test/nixpkgs-check-by-name/tests/only-callPackage-derivations/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-3
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.callPackage ./someDrv.nix { }; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/expected
··· 1 - - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 - 3 - nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the first `callPackage` argument is the wrong path. See the definition in all-packages.nix:2: 6 - 7 - nonDerivation = callPackage ./someDrv.nix { /* ... */ }; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { }: null
-1
pkgs/test/nixpkgs-check-by-name/tests/override-different-file/someDrv.nix
··· 1 - { someDrv }: someDrv
-3
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.callPackage ./pkgs/by-name/no/nonDerivation/package.nix { }; 3 - }
-3
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/base/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.callPackage ./pkgs/by-name/no/nonDerivation/package.nix { }; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/base/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg-gradual/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { someDrv }: someDrv
-3
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.callPackage ./pkgs/by-name/no/nonDerivation/package.nix { }; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/base/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-11
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/expected
··· 1 - - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 - 3 - nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the second argument is empty. See the definition in all-packages.nix:2: 6 - 7 - nonDerivation = self.callPackage ./pkgs/by-name/no/nonDerivation/package.nix { }; 8 - 9 - Such a definition is provided automatically and therefore not necessary. Please remove it. 10 - 11 - This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
-1
pkgs/test/nixpkgs-check-by-name/tests/override-empty-arg/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { someDrv }: someDrv
-3
pkgs/test/nixpkgs-check-by-name/tests/override-no-call-package/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.someDrv; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-no-call-package/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/override-no-call-package/expected
··· 1 - - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 - 3 - nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 - 5 - However, in this PR, it isn't defined that way. See the definition in all-packages.nix:2 6 - 7 - nonDerivation = self.someDrv; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/override-no-call-package/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { }: null
-3
pkgs/test/nixpkgs-check-by-name/tests/override-no-file/all-packages.nix
··· 1 - self: super: { 2 - nonDerivation = self.callPackage ({ someDrv }: someDrv) { }; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-no-file/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/override-no-file/expected
··· 1 - - Because pkgs/by-name/no/nonDerivation exists, the attribute `pkgs.nonDerivation` must be defined like 2 - 3 - nonDerivation = callPackage ./pkgs/by-name/no/nonDerivation/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the first `callPackage` argument is not a path. See the definition in all-packages.nix:2: 6 - 7 - nonDerivation = self.callPackage ({ someDrv }: someDrv) { }; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/override-no-file/pkgs/by-name/no/nonDerivation/package.nix
··· 1 - { }: null
-5
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/all-packages.nix
··· 1 - self: super: { 2 - 3 - foo = self.callPackage ({ someDrv, someFlag }: someDrv) { someFlag = true; }; 4 - 5 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-9
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/expected
··· 1 - - Because pkgs/by-name/fo/foo exists, the attribute `pkgs.foo` must be defined like 2 - 3 - foo = callPackage ./pkgs/by-name/fo/foo/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the first `callPackage` argument is not a path. See the definition in all-packages.nix:3: 6 - 7 - foo = self.callPackage ({ someDrv, someFlag }: someDrv) { someFlag = true; }; 8 - 9 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/override-non-path/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-5
pkgs/test/nixpkgs-check-by-name/tests/override-success/all-packages.nix
··· 1 - self: super: { 2 - foo = self.callPackage ./pkgs/by-name/fo/foo/package.nix { 3 - enableBar = true; 4 - }; 5 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-success/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/override-success/expected
··· 1 - Validated successfully
-8
pkgs/test/nixpkgs-check-by-name/tests/override-success/pkgs/by-name/fo/foo/package.nix
··· 1 - { 2 - someDrv, 3 - enableBar ? false, 4 - }: 5 - if enableBar then 6 - someDrv 7 - else 8 - {}
-1
pkgs/test/nixpkgs-check-by-name/tests/package-dir-is-file/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/package-dir-is-file/expected
··· 1 - pkgs/by-name/fo/foo: This path is a file, but it should be a directory. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
pkgs/test/nixpkgs-check-by-name/tests/package-dir-is-file/pkgs/by-name/fo/foo

This is a binary file and will not be displayed.

-1
pkgs/test/nixpkgs-check-by-name/tests/package-nix-dir/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/package-nix-dir/expected
··· 1 - pkgs/by-name/fo/foo: "package.nix" must be a file. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/package-nix-dir/pkgs/by-name/fo/foo/package.nix/default.nix
··· 1 - { someDrv }: someDrv
-5
pkgs/test/nixpkgs-check-by-name/tests/package-variants/all-packages.nix
··· 1 - self: super: { 2 - foo-variant-unvarianted = self.callPackage ./package.nix { }; 3 - 4 - foo-variant-new = self.callPackage ./pkgs/by-name/fo/foo/package.nix { }; 5 - }
-3
pkgs/test/nixpkgs-check-by-name/tests/package-variants/base/all-packages.nix
··· 1 - self: super: { 2 - foo-variant-unvarianted = self.callPackage ./pkgs/by-name/fo/foo/package.nix { }; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/base/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/base/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/package-variants/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-absolute/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/ref-absolute/expected
··· 1 - pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "/foo" which cannot be resolved: No such file or directory (os error 2). 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-3
pkgs/test/nixpkgs-check-by-name/tests/ref-absolute/pkgs/by-name/aa/aa/package.nix
··· 1 - { someDrv }: someDrv // { 2 - escape = /foo; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-escape/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/ref-escape/expected
··· 1 - pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "../." which may point outside the directory of that package. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-3
pkgs/test/nixpkgs-check-by-name/tests/ref-escape/pkgs/by-name/aa/aa/package.nix
··· 1 - { someDrv }: someDrv // { 2 - escape = ../.; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-nix-path/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/ref-nix-path/expected
··· 1 - pkgs/by-name/aa/aa: File package.nix at line 2 contains the nix search path expression "<nixpkgs>" which may point outside the directory of that package. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-3
pkgs/test/nixpkgs-check-by-name/tests/ref-nix-path/pkgs/by-name/aa/aa/package.nix
··· 1 - { someDrv }: someDrv // { 2 - nixPath = <nixpkgs>; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-path-subexpr/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/ref-path-subexpr/expected
··· 1 - pkgs/by-name/aa/aa: File package.nix at line 2 contains the path expression "./${"test"}", which is not yet supported and may point outside the directory of that package. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-3
pkgs/test/nixpkgs-check-by-name/tests/ref-path-subexpr/pkgs/by-name/aa/aa/package.nix
··· 1 - { someDrv }: someDrv // { 2 - pathWithSubexpr = ./${"test"}; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-success/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/ref-success/expected
··· 1 - Validated successfully
-2
pkgs/test/nixpkgs-check-by-name/tests/ref-success/pkgs/by-name/aa/aa/dir/default.nix
··· 1 - # Recursive 2 - ../package.nix
pkgs/test/nixpkgs-check-by-name/tests/ref-success/pkgs/by-name/aa/aa/file

This is a binary file and will not be displayed.

-2
pkgs/test/nixpkgs-check-by-name/tests/ref-success/pkgs/by-name/aa/aa/file.nix
··· 1 - # Recursive test 2 - import ./file.nix
-5
pkgs/test/nixpkgs-check-by-name/tests/ref-success/pkgs/by-name/aa/aa/package.nix
··· 1 - { someDrv }: someDrv // { 2 - nixFile = ./file.nix; 3 - nonNixFile = ./file; 4 - directory = ./dir; 5 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/shard-file/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/shard-file/expected
··· 1 - pkgs/by-name/fo: This is a file, but it should be a directory. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
pkgs/test/nixpkgs-check-by-name/tests/shard-file/pkgs/by-name/fo

This is a binary file and will not be displayed.

-6
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/all-packages.nix
··· 1 - self: super: { 2 - a = self.callPackage ./pkgs/by-name/a/a/package.nix { }; 3 - b = self.callPackage ({ someDrv }: someDrv) { }; 4 - c = self.callPackage ./pkgs/by-name/c/c/package.nix { }; 5 - d = self.callPackage ({ someDrv }: someDrv) { }; 6 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-31
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/expected
··· 1 - - Because pkgs/by-name/a/a exists, the attribute `pkgs.a` must be defined like 2 - 3 - a = callPackage ./pkgs/by-name/a/a/package.nix { /* ... */ }; 4 - 5 - However, in this PR, the second argument is empty. See the definition in all-packages.nix:2: 6 - 7 - a = self.callPackage ./pkgs/by-name/a/a/package.nix { }; 8 - 9 - Such a definition is provided automatically and therefore not necessary. Please remove it. 10 - 11 - - Attribute `pkgs.b` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 12 - Please define it in pkgs/by-name/b/b/package.nix instead. 13 - See `pkgs/by-name/README.md` for more details. 14 - Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 15 - 16 - - Because pkgs/by-name/c/c exists, the attribute `pkgs.c` must be defined like 17 - 18 - c = callPackage ./pkgs/by-name/c/c/package.nix { /* ... */ }; 19 - 20 - However, in this PR, the second argument is empty. See the definition in all-packages.nix:4: 21 - 22 - c = self.callPackage ./pkgs/by-name/c/c/package.nix { }; 23 - 24 - Such a definition is provided automatically and therefore not necessary. Please remove it. 25 - 26 - - Attribute `pkgs.d` is a new top-level package using `pkgs.callPackage ... { /* ... */ }`. 27 - Please define it in pkgs/by-name/d/d/package.nix instead. 28 - See `pkgs/by-name/README.md` for more details. 29 - Since the second `callPackage` argument is `{ }`, no manual `callPackage` in all-packages.nix is needed anymore. 30 - 31 - This PR introduces additional instances of discouraged patterns as listed above. Merging is discouraged but would not break the base branch.
-1
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/pkgs/by-name/a/a/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/sorted-order/pkgs/by-name/c/c/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/success/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/success/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/success/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-3
pkgs/test/nixpkgs-check-by-name/tests/unknown-location/all-packages.nix
··· 1 - self: super: builtins.mapAttrs (name: value: value) { 2 - foo = self.someDrv; 3 - }
-1
pkgs/test/nixpkgs-check-by-name/tests/unknown-location/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-2
pkgs/test/nixpkgs-check-by-name/tests/unknown-location/expected
··· 1 - pkgs.foo: Cannot determine the location of this attribute using `builtins.unsafeGetAttrPos`. 2 - This PR introduces the problems listed above. Please fix them before merging, otherwise the base branch would break.
-1
pkgs/test/nixpkgs-check-by-name/tests/unknown-location/pkgs/by-name/fo/foo/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/uppercase/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/uppercase/expected
··· 1 - Validated successfully
-1
pkgs/test/nixpkgs-check-by-name/tests/uppercase/pkgs/by-name/fo/FOO/package.nix
··· 1 - { someDrv }: someDrv
-1
pkgs/test/nixpkgs-check-by-name/tests/with-readme/default.nix
··· 1 - import <test-nixpkgs> { root = ./.; }
-1
pkgs/test/nixpkgs-check-by-name/tests/with-readme/expected
··· 1 - Validated successfully
pkgs/test/nixpkgs-check-by-name/tests/with-readme/pkgs/by-name/README.md

This is a binary file and will not be displayed.

-53
pkgs/tools/admin/docker-credential-gcr/default.nix
··· 1 - { lib, buildGoModule, fetchFromGitHub, fetchpatch, testers, docker-credential-gcr }: 2 - 3 - buildGoModule rec { 4 - pname = "docker-credential-gcr"; 5 - version = "2.1.8"; 6 - 7 - src = fetchFromGitHub { 8 - owner = "GoogleCloudPlatform"; 9 - repo = "docker-credential-gcr"; 10 - rev = "v${version}"; 11 - sha256 = "sha256-6f84NRqMx0NX+3g+pCYgRYkGK4DaQmUEau3oMswUmSE="; 12 - }; 13 - 14 - patches = [ 15 - (fetchpatch { 16 - name = "fix-TestGet_GCRCredentials.patch"; 17 - url = "https://github.com/GoogleCloudPlatform/docker-credential-gcr/commit/a0c080e58bbfdeb0aa24e66551c4e8b0359bf178.patch"; 18 - sha256 = "sha256-aXp/1kNaxqQDPszC7pO+qP7ZBWHjpVljUHiKFnnDWuM="; 19 - }) 20 - ]; 21 - 22 - postPatch = '' 23 - rm -rf ./test 24 - ''; 25 - 26 - vendorHash = "sha256-e7XNTizZYp/tS7KRvB9KxY3Yurphnm6Ehz4dHZNReK8="; 27 - 28 - CGO_ENABLED = 0; 29 - 30 - ldflags = [ 31 - "-s" 32 - "-w" 33 - "-X github.com/GoogleCloudPlatform/docker-credential-gcr/config.Version=${version}" 34 - ]; 35 - 36 - passthru.tests.version = testers.testVersion { 37 - package = docker-credential-gcr; 38 - command = "docker-credential-gcr version"; 39 - }; 40 - 41 - meta = with lib; { 42 - description = "A Docker credential helper for GCR (https://gcr.io) users"; 43 - longDescription = '' 44 - docker-credential-gcr is Google Container Registry's Docker credential 45 - helper. It allows for Docker clients v1.11+ to easily make 46 - authenticated requests to GCR's repositories (gcr.io, eu.gcr.io, etc.). 47 - ''; 48 - homepage = "https://github.com/GoogleCloudPlatform/docker-credential-gcr"; 49 - license = licenses.asl20; 50 - maintainers = with maintainers; [ suvash ]; 51 - mainProgram = "docker-credential-gcr"; 52 - }; 53 - }
+16 -14
pkgs/tools/admin/elasticsearch-curator/default.nix pkgs/by-name/el/elasticsearch-curator/package.nix
··· 1 1 { lib 2 + , elasticsearch-curator 2 3 , fetchFromGitHub 4 + , nix-update-script 3 5 , python3 6 + , testers 4 7 }: 5 8 6 9 python3.pkgs.buildPythonApplication rec { 7 10 pname = "elasticsearch-curator"; 8 - version = "8.0.10"; 11 + version = "8.0.12"; 9 12 format = "pyproject"; 10 13 11 14 src = fetchFromGitHub { 12 15 owner = "elastic"; 13 16 repo = "curator"; 14 17 rev = "refs/tags/v${version}"; 15 - hash = "sha256-hGG7lyrVviZSKTUo+AOPIutn/mxtDo+ewFxCRdj/jts="; 18 + hash = "sha256-CU/8l5607eKodcdpMKu0Wdlg+K6YnFX6uoDju12NDR0="; 16 19 }; 17 20 18 - postPatch = '' 19 - substituteInPlace pyproject.toml \ 20 - --replace "elasticsearch8==" "elasticsearch8>=" \ 21 - --replace "es_client==" "es_client>=" \ 22 - --replace "ecs-logging==" "ecs-logging>=" \ 23 - --replace "click==" "click>="\ 24 - --replace "pyyaml==" "pyyaml>=" 25 - ''; 26 - 27 - nativeBuildInputs = with python3.pkgs; [ 21 + build-system = with python3.pkgs; [ 28 22 hatchling 29 23 ]; 30 24 31 - propagatedBuildInputs = with python3.pkgs; [ 25 + dependencies = with python3.pkgs; [ 32 26 certifi 33 27 click 34 28 ecs-logging ··· 40 34 ]; 41 35 42 36 nativeCheckInputs = with python3.pkgs; [ 43 - mock 44 37 requests 45 38 pytestCheckHook 46 39 ]; ··· 76 69 "test_api_key_set" 77 70 ]; 78 71 72 + passthru = { 73 + tests.version = testers.testVersion { 74 + package = elasticsearch-curator; 75 + command = "${lib.getExe elasticsearch-curator} --version"; 76 + }; 77 + updateScript = nix-update-script { }; 78 + }; 79 + 79 80 meta = with lib; { 80 81 description = "Curate, or manage, your Elasticsearch indices and snapshots"; 81 82 homepage = "https://github.com/elastic/curator"; ··· 93 94 94 95 * Perform various actions on the items which remain in the actionable list. 95 96 ''; 97 + mainProgram = "curator"; 96 98 maintainers = with maintainers; [ basvandijk ]; 97 99 }; 98 100 }
+4 -4
pkgs/tools/typesetting/pdfgrep/default.nix
··· 1 - { lib, stdenv, fetchurl, pkg-config, poppler, libgcrypt, pcre, asciidoc }: 1 + { lib, stdenv, fetchurl, pkg-config, poppler, libgcrypt, pcre2, asciidoc }: 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "pdfgrep"; 5 - version = "2.1.2"; 5 + version = "2.2.0"; 6 6 7 7 src = fetchurl { 8 8 url = "https://pdfgrep.org/download/${pname}-${version}.tar.gz"; 9 - sha256 = "1fia10djcxxl7n9jw2prargw4yzbykk6izig2443ycj9syhxrwqf"; 9 + hash = "sha256-BmHlMeTA7wl5Waocl3N5ZYXbOccshKAv+H0sNjfGIMs="; 10 10 }; 11 11 12 12 postPatch = '' ··· 20 20 ]; 21 21 22 22 nativeBuildInputs = [ pkg-config asciidoc ]; 23 - buildInputs = [ poppler libgcrypt pcre ]; 23 + buildInputs = [ poppler libgcrypt pcre2 ]; 24 24 25 25 meta = { 26 26 description = "Commandline utility to search text in PDF files";
+1
pkgs/top-level/aliases.nix
··· 347 347 fitnesstrax = throw "fitnesstrax was removed from nixpkgs because it disappeared upstream and no longer compiles"; # added 2023-07-04 348 348 flashrom-stable = flashprog; # Added 2024-03-01 349 349 flatbuffers_2_0 = flatbuffers; # Added 2022-05-12 350 + flintqs = throw "FlintQS has been removed due to lack of maintenance and security issues; use SageMath or FLINT instead"; # Added 2024-03-21 350 351 flutter2 = throw "flutter2 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2023-07-03 351 352 flutter37 = throw "flutter37 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2023-07-03 352 353 foldingathome = fahclient; # Added 2020-09-03
+1 -13
pkgs/top-level/all-packages.nix
··· 7866 7866 callPackage ../servers/search/elasticsearch/plugins.nix {} 7867 7867 ); 7868 7868 7869 - elasticsearch-curator = callPackage ../tools/admin/elasticsearch-curator { }; 7870 - 7871 7869 embree = callPackage ../development/libraries/embree { }; 7872 7870 embree2 = callPackage ../development/libraries/embree/2.x.nix { }; 7873 7871 ··· 25376 25374 25377 25375 fastjar = callPackage ../development/tools/java/fastjar { }; 25378 25376 25379 - jextract = callPackage ../development/tools/java/jextract { }; 25380 - 25381 25377 httpunit = callPackage ../development/libraries/java/httpunit { }; 25382 25378 25383 25379 javaCup = callPackage ../development/libraries/java/cup { ··· 30628 30624 amazon-ecr-credential-helper = callPackage ../tools/admin/amazon-ecr-credential-helper { }; 30629 30625 30630 30626 dk = callPackage ../applications/window-managers/dk { }; 30631 - 30632 - docker-credential-gcr = callPackage ../tools/admin/docker-credential-gcr { }; 30633 30627 30634 30628 docker-credential-helpers = callPackage ../tools/admin/docker-credential-helpers { }; 30635 30629 ··· 37401 37395 opensoldat = callPackage ../games/opensoldat { }; 37402 37396 37403 37397 portmod = callPackage ../games/portmod { }; 37404 - 37405 - tetrio-desktop = callPackage ../games/tetrio-desktop { }; 37406 37398 37407 37399 tr-patcher = callPackage ../games/tr-patcher { }; 37408 37400 ··· 38485 38477 38486 38478 ecos = callPackage ../development/libraries/science/math/ecos { }; 38487 38479 38488 - flintqs = callPackage ../development/libraries/science/math/flintqs { }; 38489 - 38490 38480 getdp = callPackage ../applications/science/math/getdp { }; 38491 38481 38492 38482 gurobi = callPackage ../applications/science/math/gurobi { ··· 41047 41037 41048 41038 openrisk = callPackage ../tools/security/openrisk { }; 41049 41039 41050 - openvino = callPackage ../development/libraries/openvino { 41051 - python = python3; 41052 - }; 41040 + openvino = callPackage ../development/libraries/openvino { }; 41053 41041 41054 41042 phonetisaurus = callPackage ../development/libraries/phonetisaurus { 41055 41043 # https://github.com/AdolfVonKleist/Phonetisaurus/issues/70
+1 -1
pkgs/top-level/python-packages.nix
··· 9076 9076 9077 9077 openvino = callPackage ../development/python-modules/openvino { 9078 9078 openvino-native = pkgs.openvino.override { 9079 - inherit python; 9079 + python3Packages = self; 9080 9080 }; 9081 9081 }; 9082 9082