nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge master into staging-next

authored by

github-actions[bot] and committed by
GitHub
45ced9b1 14f4a764

+1536 -347
+2
.github/CODEOWNERS
··· 29 29 /lib/debug.nix @edolstra @Profpatsch 30 30 /lib/asserts.nix @edolstra @Profpatsch 31 31 /lib/path.* @infinisil @fricklerhandwerk 32 + /lib/fileset @infinisil 33 + /doc/functions/fileset.section.md @infinisil 32 34 33 35 # Nixpkgs Internals 34 36 /default.nix @Ericson2314
+1
doc/default.nix
··· 19 19 { name = "options"; description = "NixOS / nixpkgs option handling"; } 20 20 { name = "path"; description = "path functions"; } 21 21 { name = "filesystem"; description = "filesystem functions"; } 22 + { name = "fileset"; description = "file set functions"; } 22 23 { name = "sources"; description = "source filtering functions"; } 23 24 { name = "cli"; description = "command-line serialization functions"; } 24 25 { name = "gvariant"; description = "GVariant formatted string serialization functions"; }
+1
doc/functions.md
··· 8 8 functions/debug.section.md 9 9 functions/prefer-remote-fetch.section.md 10 10 functions/nix-gitignore.section.md 11 + functions/fileset.section.md 11 12 ```
+51
doc/functions/fileset.section.md
··· 1 + <!-- TODO: Render this document in front of function documentation in case https://github.com/nix-community/nixdoc/issues/19 is ever supported --> 2 + 3 + # File sets {#sec-fileset} 4 + 5 + The [`lib.fileset`](#sec-functions-library-fileset) library allows you to work with _file sets_. 6 + A file set is a mathematical set of local files that can be added to the Nix store for use in Nix derivations. 7 + File sets are easy and safe to use, providing obvious and composable semantics with good error messages to prevent mistakes. 8 + 9 + These sections apply to the entire library. 10 + See the [function reference](#sec-functions-library-fileset) for function-specific documentation. 11 + 12 + The file set library is currently very limited but is being expanded to include more functions over time. 13 + 14 + ## Implicit coercion from paths to file sets {#sec-fileset-path-coercion} 15 + 16 + All functions accepting file sets as arguments can also accept [paths](https://nixos.org/manual/nix/stable/language/values.html#type-path) as arguments. 17 + Such path arguments are implicitly coerced to file sets containing all files under that path: 18 + - A path to a file turns into a file set containing that single file. 19 + - A path to a directory turns into a file set containing all files _recursively_ in that directory. 20 + 21 + If the path points to a non-existent location, an error is thrown. 22 + 23 + ::: {.note} 24 + Just like in Git, file sets cannot represent empty directories. 25 + Because of this, a path to a directory that contains no files (recursively) will turn into a file set containing no files. 26 + ::: 27 + 28 + :::{.note} 29 + File set coercion does _not_ add any of the files under the coerced paths to the store. 30 + Only the [`toSource`](#function-library-lib.fileset.toSource) function adds files to the Nix store, and only those files contained in the `fileset` argument. 31 + This is in contrast to using [paths in string interpolation](https://nixos.org/manual/nix/stable/language/values.html#type-path), which does add the entire referenced path to the store. 32 + ::: 33 + 34 + ### Example {#sec-fileset-path-coercion-example} 35 + 36 + Assume we are in a local directory with a file hierarchy like this: 37 + ``` 38 + ├─ a/ 39 + │ ├─ x (file) 40 + │ └─ b/ 41 + │   └─ y (file) 42 + └─ c/ 43 +   └─ d/ 44 + ``` 45 + 46 + Here's a listing of which files get included when different path expressions get coerced to file sets: 47 + - `./.` as a file set contains both `a/x` and `a/b/y` (`c/` does not contain any files and is therefore omitted). 48 + - `./a` as a file set contains both `a/x` and `a/b/y`. 49 + - `./a/x` as a file set contains only `a/x`. 50 + - `./a/b` as a file set contains only `a/b/y`. 51 + - `./c` as a file set is empty, since neither `c` nor `c/d` contain any files.
+3
lib/README.md
··· 70 70 71 71 # Run the lib.path property tests 72 72 path/tests/prop.sh 73 + 74 + # Run the lib.fileset tests 75 + fileset/tests.sh 73 76 ```
+1
lib/default.nix
··· 55 55 # Eval-time filesystem handling 56 56 path = callLibs ./path; 57 57 filesystem = callLibs ./filesystem.nix; 58 + fileset = callLibs ./fileset; 58 59 sources = callLibs ./sources.nix; 59 60 60 61 # back-compat aliases
+183
lib/fileset/README.md
··· 1 + # File set library 2 + 3 + The main goal of the file set library is to be able to select local files that should be added to the Nix store. 4 + It should have the following properties: 5 + - Easy: 6 + The functions should have obvious semantics, be low in number and be composable. 7 + - Safe: 8 + Throw early and helpful errors when mistakes are detected. 9 + - Lazy: 10 + Only compute values when necessary. 11 + 12 + Non-goals are: 13 + - Efficient: 14 + If the abstraction proves itself worthwhile but too slow, it can be still be optimized further. 15 + 16 + ## Tests 17 + 18 + Tests are declared in [`tests.sh`](./tests.sh) and can be run using 19 + ``` 20 + ./tests.sh 21 + ``` 22 + 23 + ## Benchmark 24 + 25 + A simple benchmark against the HEAD commit can be run using 26 + ``` 27 + ./benchmark.sh HEAD 28 + ``` 29 + 30 + This is intended to be run manually and is not checked by CI. 31 + 32 + ## Internal representation 33 + 34 + The internal representation is versioned in order to allow file sets from different Nixpkgs versions to be composed with each other, see [`internal.nix`](./internal.nix) for the versions and conversions between them. 35 + This section describes only the current representation, but past versions will have to be supported by the code. 36 + 37 + ### `fileset` 38 + 39 + An attribute set with these values: 40 + 41 + - `_type` (constant string `"fileset"`): 42 + Tag to indicate this value is a file set. 43 + 44 + - `_internalVersion` (constant string equal to the current version): 45 + Version of the representation 46 + 47 + - `_internalBase` (path): 48 + Any files outside of this path cannot influence the set of files. 49 + This is always a directory. 50 + 51 + - `_internalTree` ([filesetTree](#filesettree)): 52 + A tree representation of all included files under `_internalBase`. 53 + 54 + - `__noEval` (error): 55 + An error indicating that directly evaluating file sets is not supported. 56 + 57 + ## `filesetTree` 58 + 59 + One of the following: 60 + 61 + - `{ <name> = filesetTree; }`: 62 + A directory with a nested `filesetTree` value for every directory entry. 63 + Even entries that aren't included are present as `null` because it improves laziness and allows using this as a sort of `builtins.readDir` cache. 64 + 65 + - `"directory"`: 66 + A directory with all its files included recursively, allowing early cutoff for some operations. 67 + This specific string is chosen to be compatible with `builtins.readDir` for a simpler implementation. 68 + 69 + - `"regular"`, `"symlink"`, `"unknown"` or any other non-`"directory"` string: 70 + A nested file with its file type. 71 + These specific strings are chosen to be compatible with `builtins.readDir` for a simpler implementation. 72 + Distinguishing between different file types is not strictly necessary for the functionality this library, 73 + but it does allow nicer printing of file sets. 74 + 75 + - `null`: 76 + A file or directory that is excluded from the tree. 77 + It may still exist on the file system. 78 + 79 + ## API design decisions 80 + 81 + This section justifies API design decisions. 82 + 83 + ### Internal structure 84 + 85 + The representation of the file set data type is internal and can be changed over time. 86 + 87 + Arguments: 88 + - (+) The point of this library is to provide high-level functions, users don't need to be concerned with how it's implemented 89 + - (+) It allows adjustments to the representation, which is especially useful in the early days of the library. 90 + - (+) It still allows the representation to be stabilized later if necessary and if it has proven itself 91 + 92 + ### Influence tracking 93 + 94 + File set operations internally track the top-most directory that could influence the exact contents of a file set. 95 + Specifically, `toSource` requires that the given `fileset` is completely determined by files within the directory specified by the `root` argument. 96 + For example, even with `dir/file.txt` being the only file in `./.`, `toSource { root = ./dir; fileset = ./.; }` gives an error. 97 + This is because `fileset` may as well be the result of filtering `./.` in a way that excludes `dir`. 98 + 99 + Arguments: 100 + - (+) This gives us the guarantee that adding new files to a project never breaks a file set expression. 101 + This is also true in a lesser form for removed files: 102 + only removing files explicitly referenced by paths can break a file set expression. 103 + - (+) This can be removed later, if we discover it's too restrictive 104 + - (-) It leads to errors when a sensible result could sometimes be returned, such as in the above example. 105 + 106 + ### Empty directories 107 + 108 + File sets can only represent a _set_ of local files, directories on their own are not representable. 109 + 110 + Arguments: 111 + - (+) There does not seem to be a sensible set of combinators when directories can be represented on their own. 112 + Here's some possibilities: 113 + - `./.` represents the files in `./.` _and_ the directory itself including its subdirectories, meaning that even if there's no files, the entire structure of `./.` is preserved 114 + 115 + In that case, what should `fileFilter (file: false) ./.` return? 116 + It could return the entire directory structure unchanged, but with all files removed, which would not be what one would expect. 117 + 118 + Trying to have a filter function that also supports directories will lead to the question of: 119 + What should the behavior be if `./foo` itself is excluded but all of its contents are included? 120 + It leads to having to define when directories are recursed into, but then we're effectively back at how the `builtins.path`-based filters work. 121 + 122 + - `./.` represents all files in `./.` _and_ the directory itself, but not its subdirectories, meaning that at least `./.` will be preserved even if it's empty. 123 + 124 + In that case, `intersect ./. ./foo` should only include files and no directories themselves, since `./.` includes only `./.` as a directory, and same for `./foo`, so there's no overlap in directories. 125 + But intuitively this operation should result in the same as `./foo` – everything else is just confusing. 126 + - (+) This matches how Git only supports files, so developers should already be used to it. 127 + - (-) Empty directories (even if they contain nested directories) are neither representable nor preserved when coercing from paths. 128 + - (+) It is very rare that empty directories are necessary. 129 + - (+) We can implement a workaround, allowing `toSource` to take an extra argument for ensuring certain extra directories exist in the result. 130 + - (-) It slows down store imports, since the evaluator needs to traverse the entire tree to remove any empty directories 131 + - (+) This can still be optimized by introducing more Nix builtins if necessary 132 + 133 + ### String paths 134 + 135 + File sets do not support Nix store paths in strings such as `"/nix/store/...-source"`. 136 + 137 + Arguments: 138 + - (+) Such paths are usually produced by derivations, which means `toSource` would either: 139 + - Require IFD if `builtins.path` is used as the underlying primitive 140 + - Require importing the entire `root` into the store such that derivations can be used to do the filtering 141 + - (+) The convenient path coercion like `union ./foo ./bar` wouldn't work for absolute paths, requiring more verbose alternate interfaces: 142 + - `let root = "/nix/store/...-source"; in union "${root}/foo" "${root}/bar"` 143 + 144 + Verbose and dangerous because if `root` was a path, the entire path would get imported into the store. 145 + 146 + - `toSource { root = "/nix/store/...-source"; fileset = union "./foo" "./bar"; }` 147 + 148 + Does not allow debug printing intermediate file set contents, since we don't know the paths contents before having a `root`. 149 + 150 + - `let fs = lib.fileset.withRoot "/nix/store/...-source"; in fs.union "./foo" "./bar"` 151 + 152 + Makes library functions impure since they depend on the contextual root path, questionable composability. 153 + 154 + - (+) The point of the file set abstraction is to specify which files should get imported into the store. 155 + 156 + This use case makes little sense for files that are already in the store. 157 + This should be a separate abstraction as e.g. `pkgs.drvLayout` instead, which could have a similar interface but be specific to derivations. 158 + Additional capabilities could be supported that can't be done at evaluation time, such as renaming files, creating new directories, setting executable bits, etc. 159 + 160 + ### Single files 161 + 162 + File sets cannot add single files to the store, they can only import files under directories. 163 + 164 + Arguments: 165 + - (+) There's no point in using this library for a single file, since you can't do anything other than add it to the store or not. 166 + And it would be unclear how the library should behave if the one file wouldn't be added to the store: 167 + `toSource { root = ./file.nix; fileset = <empty>; }` has no reasonable result because returing an empty store path wouldn't match the file type, and there's no way to have an empty file store path, whatever that would mean. 168 + 169 + ## To update in the future 170 + 171 + Here's a list of places in the library that need to be updated in the future: 172 + - > The file set library is currently very limited but is being expanded to include more functions over time. 173 + 174 + in [the manual](../../doc/functions/fileset.section.md) 175 + - > Currently the only way to construct file sets is using implicit coercion from paths. 176 + 177 + in [the `toSource` reference](./default.nix) 178 + - > For now filesets are always paths 179 + 180 + in [the `toSource` implementation](./default.nix), also update the variable name there 181 + - Once a tracing function exists, `__noEval` in [internal.nix](./internal.nix) should mention it 182 + - If/Once a function to convert `lib.sources` values into file sets exists, the `_coerce` and `toSource` functions should be updated to mention that function in the error when such a value is passed 183 + - If/Once a function exists that can optionally include a path depending on whether it exists, the error message for the path not existing in `_coerce` should mention the new function
+94
lib/fileset/benchmark.sh
··· 1 + #!/usr/bin/env bash 2 + 3 + # Benchmarks lib.fileset 4 + # Run: 5 + # [nixpkgs]$ lib/fileset/benchmark.sh HEAD 6 + 7 + set -euo pipefail 8 + shopt -s inherit_errexit dotglob 9 + 10 + if (( $# == 0 )); then 11 + echo "Usage: $0 HEAD" 12 + echo "Benchmarks the current tree against the HEAD commit. Any git ref will work." 13 + exit 1 14 + fi 15 + compareTo=$1 16 + 17 + SCRIPT_FILE=$(readlink -f "${BASH_SOURCE[0]}") 18 + SCRIPT_DIR=$(dirname "$SCRIPT_FILE") 19 + 20 + nixpkgs=$(cd "$SCRIPT_DIR/../.."; pwd) 21 + 22 + tmp="$(mktemp -d)" 23 + clean_up() { 24 + rm -rf "$tmp" 25 + } 26 + trap clean_up EXIT SIGINT SIGTERM 27 + work="$tmp/work" 28 + mkdir "$work" 29 + cd "$work" 30 + 31 + # Create a fairly populated tree 32 + touch f{0..5} 33 + mkdir d{0..5} 34 + mkdir e{0..5} 35 + touch d{0..5}/f{0..5} 36 + mkdir -p d{0..5}/d{0..5} 37 + mkdir -p e{0..5}/e{0..5} 38 + touch d{0..5}/d{0..5}/f{0..5} 39 + mkdir -p d{0..5}/d{0..5}/d{0..5} 40 + mkdir -p e{0..5}/e{0..5}/e{0..5} 41 + touch d{0..5}/d{0..5}/d{0..5}/f{0..5} 42 + mkdir -p d{0..5}/d{0..5}/d{0..5}/d{0..5} 43 + mkdir -p e{0..5}/e{0..5}/e{0..5}/e{0..5} 44 + touch d{0..5}/d{0..5}/d{0..5}/d{0..5}/f{0..5} 45 + 46 + bench() { 47 + NIX_PATH=nixpkgs=$1 NIX_SHOW_STATS=1 NIX_SHOW_STATS_PATH=$tmp/stats.json \ 48 + nix-instantiate --eval --strict --show-trace >/dev/null \ 49 + --expr '(import <nixpkgs/lib>).fileset.toSource { root = ./.; fileset = ./.; }' 50 + cat "$tmp/stats.json" 51 + } 52 + 53 + echo "Running benchmark on index" >&2 54 + bench "$nixpkgs" > "$tmp/new.json" 55 + ( 56 + echo "Checking out $compareTo" >&2 57 + git -C "$nixpkgs" worktree add --quiet "$tmp/worktree" "$compareTo" 58 + trap 'git -C "$nixpkgs" worktree remove "$tmp/worktree"' EXIT 59 + echo "Running benchmark on $compareTo" >&2 60 + bench "$tmp/worktree" > "$tmp/old.json" 61 + ) 62 + 63 + declare -a stats=( 64 + ".envs.elements" 65 + ".envs.number" 66 + ".gc.totalBytes" 67 + ".list.concats" 68 + ".list.elements" 69 + ".nrFunctionCalls" 70 + ".nrLookups" 71 + ".nrOpUpdates" 72 + ".nrPrimOpCalls" 73 + ".nrThunks" 74 + ".sets.elements" 75 + ".sets.number" 76 + ".symbols.number" 77 + ".values.number" 78 + ) 79 + 80 + different=0 81 + for stat in "${stats[@]}"; do 82 + oldValue=$(jq "$stat" "$tmp/old.json") 83 + newValue=$(jq "$stat" "$tmp/new.json") 84 + if (( oldValue != newValue )); then 85 + percent=$(bc <<< "scale=100; result = 100/$oldValue*$newValue; scale=4; result / 1") 86 + if (( oldValue < newValue )); then 87 + echo -e "Statistic $stat ($newValue) is \e[0;31m$percent% (+$(( newValue - oldValue )))\e[0m of the old value $oldValue" >&2 88 + else 89 + echo -e "Statistic $stat ($newValue) is \e[0;32m$percent% (-$(( oldValue - newValue )))\e[0m of the old value $oldValue" >&2 90 + fi 91 + (( different++ )) || true 92 + fi 93 + done 94 + echo "$different stats differ between the current tree and $compareTo"
+131
lib/fileset/default.nix
··· 1 + { lib }: 2 + let 3 + 4 + inherit (import ./internal.nix { inherit lib; }) 5 + _coerce 6 + _toSourceFilter 7 + ; 8 + 9 + inherit (builtins) 10 + isPath 11 + pathExists 12 + typeOf 13 + ; 14 + 15 + inherit (lib.path) 16 + hasPrefix 17 + splitRoot 18 + ; 19 + 20 + inherit (lib.strings) 21 + isStringLike 22 + ; 23 + 24 + inherit (lib.filesystem) 25 + pathType 26 + ; 27 + 28 + inherit (lib.sources) 29 + cleanSourceWith 30 + ; 31 + 32 + in { 33 + 34 + /* 35 + Add the local files contained in `fileset` to the store as a single [store path](https://nixos.org/manual/nix/stable/glossary#gloss-store-path) rooted at `root`. 36 + 37 + The result is the store path as a string-like value, making it usable e.g. as the `src` of a derivation, or in string interpolation: 38 + ```nix 39 + stdenv.mkDerivation { 40 + src = lib.fileset.toSource { ... }; 41 + # ... 42 + } 43 + ``` 44 + 45 + The name of the store path is always `source`. 46 + 47 + Type: 48 + toSource :: { 49 + root :: Path, 50 + fileset :: FileSet, 51 + } -> SourceLike 52 + 53 + Example: 54 + # Import the current directory into the store but only include files under ./src 55 + toSource { root = ./.; fileset = ./src; } 56 + => "/nix/store/...-source" 57 + 58 + # The file set coerced from path ./bar could contain files outside the root ./foo, which is not allowed 59 + toSource { root = ./foo; fileset = ./bar; } 60 + => <error> 61 + 62 + # The root has to be a local filesystem path 63 + toSource { root = "/nix/store/...-source"; fileset = ./.; } 64 + => <error> 65 + */ 66 + toSource = { 67 + /* 68 + (required) The local directory [path](https://nixos.org/manual/nix/stable/language/values.html#type-path) that will correspond to the root of the resulting store path. 69 + Paths in [strings](https://nixos.org/manual/nix/stable/language/values.html#type-string), including Nix store paths, cannot be passed as `root`. 70 + `root` has to be a directory. 71 + 72 + <!-- Ignore the indentation here, this is a nixdoc rendering bug that needs to be fixed --> 73 + :::{.note} 74 + Changing `root` only affects the directory structure of the resulting store path, it does not change which files are added to the store. 75 + The only way to change which files get added to the store is by changing the `fileset` attribute. 76 + ::: 77 + */ 78 + root, 79 + /* 80 + (required) The file set whose files to import into the store. 81 + Currently the only way to construct file sets is using [implicit coercion from paths](#sec-fileset-path-coercion). 82 + If a directory does not recursively contain any file, it is omitted from the store path contents. 83 + */ 84 + fileset, 85 + }: 86 + let 87 + # We cannot rename matched attribute arguments, so let's work around it with an extra `let in` statement 88 + # For now filesets are always paths 89 + filesetPath = fileset; 90 + in 91 + let 92 + fileset = _coerce "lib.fileset.toSource: `fileset`" filesetPath; 93 + rootFilesystemRoot = (splitRoot root).root; 94 + filesetFilesystemRoot = (splitRoot fileset._internalBase).root; 95 + in 96 + if ! isPath root then 97 + if isStringLike root then 98 + throw '' 99 + lib.fileset.toSource: `root` "${toString root}" is a string-like value, but it should be a path instead. 100 + Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'' 101 + else 102 + throw '' 103 + lib.fileset.toSource: `root` is of type ${typeOf root}, but it should be a path instead.'' 104 + # Currently all Nix paths have the same filesystem root, but this could change in the future. 105 + # See also ../path/README.md 106 + else if rootFilesystemRoot != filesetFilesystemRoot then 107 + throw '' 108 + lib.fileset.toSource: Filesystem roots are not the same for `fileset` and `root` "${toString root}": 109 + `root`: root "${toString rootFilesystemRoot}" 110 + `fileset`: root "${toString filesetFilesystemRoot}" 111 + Different roots are not supported.'' 112 + else if ! pathExists root then 113 + throw '' 114 + lib.fileset.toSource: `root` ${toString root} does not exist.'' 115 + else if pathType root != "directory" then 116 + throw '' 117 + lib.fileset.toSource: `root` ${toString root} is a file, but it should be a directory instead. Potential solutions: 118 + - If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function. 119 + - If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as ${toString (dirOf root)}, and set `fileset` to the file path.'' 120 + else if ! hasPrefix root fileset._internalBase then 121 + throw '' 122 + lib.fileset.toSource: `fileset` could contain files in ${toString fileset._internalBase}, which is not under the `root` ${toString root}. Potential solutions: 123 + - Set `root` to ${toString fileset._internalBase} or any directory higher up. This changes the layout of the resulting store path. 124 + - Set `fileset` to a file set that cannot contain files outside the `root` ${toString root}. This could change the files included in the result.'' 125 + else 126 + cleanSourceWith { 127 + name = "source"; 128 + src = root; 129 + filter = _toSourceFilter fileset; 130 + }; 131 + }
+274
lib/fileset/internal.nix
··· 1 + { lib ? import ../. }: 2 + let 3 + 4 + inherit (builtins) 5 + isAttrs 6 + isPath 7 + isString 8 + pathExists 9 + readDir 10 + typeOf 11 + split 12 + ; 13 + 14 + inherit (lib.attrsets) 15 + attrValues 16 + mapAttrs 17 + ; 18 + 19 + inherit (lib.filesystem) 20 + pathType 21 + ; 22 + 23 + inherit (lib.lists) 24 + all 25 + elemAt 26 + length 27 + ; 28 + 29 + inherit (lib.path) 30 + append 31 + splitRoot 32 + ; 33 + 34 + inherit (lib.path.subpath) 35 + components 36 + ; 37 + 38 + inherit (lib.strings) 39 + isStringLike 40 + concatStringsSep 41 + substring 42 + stringLength 43 + ; 44 + 45 + in 46 + # Rare case of justified usage of rec: 47 + # - This file is internal, so the return value doesn't matter, no need to make things overridable 48 + # - The functions depend on each other 49 + # - We want to expose all of these functions for easy testing 50 + rec { 51 + 52 + # If you change the internal representation, make sure to: 53 + # - Update this version 54 + # - Adjust _coerce to also accept and coerce older versions 55 + # - Update the description of the internal representation in ./README.md 56 + _currentVersion = 0; 57 + 58 + # Create a fileset, see ./README.md#fileset 59 + # Type: path -> filesetTree -> fileset 60 + _create = base: tree: { 61 + _type = "fileset"; 62 + 63 + _internalVersion = _currentVersion; 64 + _internalBase = base; 65 + _internalTree = tree; 66 + 67 + # Double __ to make it be evaluated and ordered first 68 + __noEval = throw '' 69 + lib.fileset: Directly evaluating a file set is not supported. Use `lib.fileset.toSource` to turn it into a usable source instead.''; 70 + }; 71 + 72 + # Coerce a value to a fileset, erroring when the value cannot be coerced. 73 + # The string gives the context for error messages. 74 + # Type: String -> Path -> fileset 75 + _coerce = context: value: 76 + if value._type or "" == "fileset" then 77 + if value._internalVersion > _currentVersion then 78 + throw '' 79 + ${context} is a file set created from a future version of the file set library with a different internal representation: 80 + - Internal version of the file set: ${toString value._internalVersion} 81 + - Internal version of the library: ${toString _currentVersion} 82 + Make sure to update your Nixpkgs to have a newer version of `lib.fileset`.'' 83 + else 84 + value 85 + else if ! isPath value then 86 + if isStringLike value then 87 + throw '' 88 + ${context} "${toString value}" is a string-like value, but it should be a path instead. 89 + Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'' 90 + else 91 + throw '' 92 + ${context} is of type ${typeOf value}, but it should be a path instead.'' 93 + else if ! pathExists value then 94 + throw '' 95 + ${context} ${toString value} does not exist.'' 96 + else 97 + _singleton value; 98 + 99 + # Create a file set from a path. 100 + # Type: Path -> fileset 101 + _singleton = path: 102 + let 103 + type = pathType path; 104 + in 105 + if type == "directory" then 106 + _create path type 107 + else 108 + # This turns a file path ./default.nix into a fileset with 109 + # - _internalBase: ./. 110 + # - _internalTree: { 111 + # "default.nix" = <type>; 112 + # # Other directory entries 113 + # <name> = null; 114 + # } 115 + # See ./README.md#single-files 116 + _create (dirOf path) 117 + (_nestTree 118 + (dirOf path) 119 + [ (baseNameOf path) ] 120 + type 121 + ); 122 + 123 + /* 124 + Nest a filesetTree under some extra components, while filling out all the other directory entries that aren't included with null 125 + 126 + _nestTree ./. [ "foo" "bar" ] tree == { 127 + foo = { 128 + bar = tree; 129 + <other-entries> = null; 130 + } 131 + <other-entries> = null; 132 + } 133 + 134 + Type: Path -> [ String ] -> filesetTree -> filesetTree 135 + */ 136 + _nestTree = targetBase: extraComponents: tree: 137 + let 138 + recurse = index: focusPath: 139 + if index == length extraComponents then 140 + tree 141 + else 142 + mapAttrs (_: _: null) (readDir focusPath) 143 + // { 144 + ${elemAt extraComponents index} = recurse (index + 1) (append focusPath (elemAt extraComponents index)); 145 + }; 146 + in 147 + recurse 0 targetBase; 148 + 149 + # Expand "directory" filesetTree representation to the equivalent { <name> = filesetTree; } 150 + # Type: Path -> filesetTree -> { <name> = filesetTree; } 151 + _directoryEntries = path: value: 152 + if isAttrs value then 153 + value 154 + else 155 + readDir path; 156 + 157 + /* 158 + Simplify a filesetTree recursively: 159 + - Replace all directories that have no files with `null` 160 + This removes directories that would be empty 161 + - Replace all directories with all files with `"directory"` 162 + This speeds up the source filter function 163 + 164 + Note that this function is strict, it evaluates the entire tree 165 + 166 + Type: Path -> filesetTree -> filesetTree 167 + */ 168 + _simplifyTree = path: tree: 169 + if tree == "directory" || isAttrs tree then 170 + let 171 + entries = _directoryEntries path tree; 172 + simpleSubtrees = mapAttrs (name: _simplifyTree (path + "/${name}")) entries; 173 + subtreeValues = attrValues simpleSubtrees; 174 + in 175 + # This triggers either when all files in a directory are filtered out 176 + # Or when the directory doesn't contain any files at all 177 + if all isNull subtreeValues then 178 + null 179 + # Triggers when we have the same as a `readDir path`, so we can turn it back into an equivalent "directory". 180 + else if all isString subtreeValues then 181 + "directory" 182 + else 183 + simpleSubtrees 184 + else 185 + tree; 186 + 187 + # Turn a fileset into a source filter function suitable for `builtins.path` 188 + # Only directories recursively containing at least one files are recursed into 189 + # Type: Path -> fileset -> (String -> String -> Bool) 190 + _toSourceFilter = fileset: 191 + let 192 + # Simplify the tree, necessary to make sure all empty directories are null 193 + # which has the effect that they aren't included in the result 194 + tree = _simplifyTree fileset._internalBase fileset._internalTree; 195 + 196 + # Decompose the base into its components 197 + # See ../path/README.md for why we're not just using `toString` 198 + baseComponents = components (splitRoot fileset._internalBase).subpath; 199 + 200 + # The base path as a string with a single trailing slash 201 + baseString = 202 + if baseComponents == [] then 203 + # Need to handle the filesystem root specially 204 + "/" 205 + else 206 + "/" + concatStringsSep "/" baseComponents + "/"; 207 + 208 + baseLength = stringLength baseString; 209 + 210 + # Check whether a list of path components under the base path exists in the tree. 211 + # This function is called often, so it should be fast. 212 + # Type: [ String ] -> Bool 213 + inTree = components: 214 + let 215 + recurse = index: localTree: 216 + if isAttrs localTree then 217 + # We have an attribute set, meaning this is a directory with at least one file 218 + if index >= length components then 219 + # The path may have no more components though, meaning the filter is running on the directory itself, 220 + # so we always include it, again because there's at least one file in it. 221 + true 222 + else 223 + # If we do have more components, the filter runs on some entry inside this directory, so we need to recurse 224 + # We do +2 because builtins.split is an interleaved list of the inbetweens and the matches 225 + recurse (index + 2) localTree.${elemAt components index} 226 + else 227 + # If it's not an attribute set it can only be either null (in which case it's not included) 228 + # or a string ("directory" or "regular", etc.) in which case it's included 229 + localTree != null; 230 + in recurse 0 tree; 231 + 232 + # Filter suited when there's no files 233 + empty = _: _: false; 234 + 235 + # Filter suited when there's some files 236 + # This can't be used for when there's no files, because the base directory is always included 237 + nonEmpty = 238 + path: _: 239 + let 240 + # Add a slash to the path string, turning "/foo" to "/foo/", 241 + # making sure to not have any false prefix matches below. 242 + # Note that this would produce "//" for "/", 243 + # but builtins.path doesn't call the filter function on the `path` argument itself, 244 + # meaning this function can never receive "/" as an argument 245 + pathSlash = path + "/"; 246 + in 247 + # Same as `hasPrefix pathSlash baseString`, but more efficient. 248 + # With base /foo/bar we need to include /foo: 249 + # hasPrefix "/foo/" "/foo/bar/" 250 + if substring 0 (stringLength pathSlash) baseString == pathSlash then 251 + true 252 + # Same as `! hasPrefix baseString pathSlash`, but more efficient. 253 + # With base /foo/bar we need to exclude /baz 254 + # ! hasPrefix "/baz/" "/foo/bar/" 255 + else if substring 0 baseLength pathSlash != baseString then 256 + false 257 + else 258 + # Same as `removePrefix baseString path`, but more efficient. 259 + # From the above code we know that hasPrefix baseString pathSlash holds, so this is safe. 260 + # We don't use pathSlash here because we only needed the trailing slash for the prefix matching. 261 + # With base /foo and path /foo/bar/baz this gives 262 + # inTree (split "/" (removePrefix "/foo/" "/foo/bar/baz")) 263 + # == inTree (split "/" "bar/baz") 264 + # == inTree [ "bar" "baz" ] 265 + inTree (split "/" (substring baseLength (-1) path)); 266 + in 267 + # Special case because the code below assumes that the _internalBase is always included in the result 268 + # which shouldn't be done when we have no files at all in the base 269 + if tree == null then 270 + empty 271 + else 272 + nonEmpty; 273 + 274 + }
+26
lib/fileset/mock-splitRoot.nix
··· 1 + # This overlay implements mocking of the lib.path.splitRoot function 2 + # It pretends that the last component named "mock-root" is the root: 3 + # 4 + # splitRoot /foo/mock-root/bar/mock-root/baz 5 + # => { 6 + # root = /foo/mock-root/bar/mock-root; 7 + # subpath = "./baz"; 8 + # } 9 + self: super: { 10 + path = super.path // { 11 + splitRoot = path: 12 + let 13 + parts = super.path.splitRoot path; 14 + components = self.path.subpath.components parts.subpath; 15 + count = self.length components; 16 + rootIndex = count - self.lists.findFirstIndex 17 + (component: component == "mock-root") 18 + (self.length components) 19 + (self.reverseList components); 20 + root = self.path.append parts.root (self.path.subpath.join (self.take rootIndex components)); 21 + subpath = self.path.subpath.join (self.drop rootIndex components); 22 + in { 23 + inherit root subpath; 24 + }; 25 + }; 26 + }
+350
lib/fileset/tests.sh
··· 1 + #!/usr/bin/env bash 2 + 3 + # Tests lib.fileset 4 + # Run: 5 + # [nixpkgs]$ lib/fileset/tests.sh 6 + # or: 7 + # [nixpkgs]$ nix-build lib/tests/release.nix 8 + 9 + set -euo pipefail 10 + shopt -s inherit_errexit dotglob 11 + 12 + die() { 13 + # The second to last entry contains the line number of the top-level caller 14 + lineIndex=$(( ${#BASH_LINENO[@]} - 2 )) 15 + echo >&2 -e "test case at ${BASH_SOURCE[0]}:${BASH_LINENO[$lineIndex]} failed:" "$@" 16 + exit 1 17 + } 18 + 19 + if test -n "${TEST_LIB:-}"; then 20 + NIX_PATH=nixpkgs="$(dirname "$TEST_LIB")" 21 + else 22 + NIX_PATH=nixpkgs="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.."; pwd)" 23 + fi 24 + export NIX_PATH 25 + 26 + tmp="$(mktemp -d)" 27 + clean_up() { 28 + rm -rf "$tmp" 29 + } 30 + trap clean_up EXIT SIGINT SIGTERM 31 + work="$tmp/work" 32 + mkdir "$work" 33 + cd "$work" 34 + 35 + # Crudely unquotes a JSON string by just taking everything between the first and the second quote. 36 + # We're only using this for resulting /nix/store paths, which can't contain " anyways, 37 + # nor can they contain any other characters that would need to be escaped specially in JSON 38 + # This way we don't need to add a dependency on e.g. jq 39 + crudeUnquoteJSON() { 40 + cut -d \" -f2 41 + } 42 + 43 + prefixExpression='let 44 + lib = import <nixpkgs/lib>; 45 + internal = import <nixpkgs/lib/fileset/internal.nix> { 46 + inherit lib; 47 + }; 48 + in 49 + with lib; 50 + with internal; 51 + with lib.fileset;' 52 + 53 + # Check that a nix expression evaluates successfully (strictly, coercing to json, read-write-mode). 54 + # The expression has `lib.fileset` in scope. 55 + # If a second argument is provided, the result is checked against it as a regex. 56 + # Otherwise, the result is output. 57 + # Usage: expectSuccess NIX [REGEX] 58 + expectSuccess() { 59 + local expr=$1 60 + if [[ "$#" -gt 1 ]]; then 61 + local expectedResultRegex=$2 62 + fi 63 + if ! result=$(nix-instantiate --eval --strict --json --read-write-mode --show-trace \ 64 + --expr "$prefixExpression $expr"); then 65 + die "$expr failed to evaluate, but it was expected to succeed" 66 + fi 67 + if [[ -v expectedResultRegex ]]; then 68 + if [[ ! "$result" =~ $expectedResultRegex ]]; then 69 + die "$expr should have evaluated to this regex pattern:\n\n$expectedResultRegex\n\nbut this was the actual result:\n\n$result" 70 + fi 71 + else 72 + echo "$result" 73 + fi 74 + } 75 + 76 + # Check that a nix expression fails to evaluate (strictly, coercing to json, read-write-mode). 77 + # And check the received stderr against a regex 78 + # The expression has `lib.fileset` in scope. 79 + # Usage: expectFailure NIX REGEX 80 + expectFailure() { 81 + local expr=$1 82 + local expectedErrorRegex=$2 83 + if result=$(nix-instantiate --eval --strict --json --read-write-mode --show-trace 2>"$tmp/stderr" \ 84 + --expr "$prefixExpression $expr"); then 85 + die "$expr evaluated successfully to $result, but it was expected to fail" 86 + fi 87 + stderr=$(<"$tmp/stderr") 88 + if [[ ! "$stderr" =~ $expectedErrorRegex ]]; then 89 + die "$expr should have errored with this regex pattern:\n\n$expectedErrorRegex\n\nbut this was the actual error:\n\n$stderr" 90 + fi 91 + } 92 + 93 + # We conditionally use inotifywait in checkFileset. 94 + # Check early whether it's available 95 + # TODO: Darwin support, though not crucial since we have Linux CI 96 + if type inotifywait 2>/dev/null >/dev/null; then 97 + canMonitorFiles=1 98 + else 99 + echo "Warning: Not checking that excluded files don't get accessed since inotifywait is not available" >&2 100 + canMonitorFiles= 101 + fi 102 + 103 + # Check whether a file set includes/excludes declared paths as expected, usage: 104 + # 105 + # tree=( 106 + # [a/b] =1 # Declare that file a/b should exist and expect it to be included in the store path 107 + # [c/a] = # Declare that file c/a should exist and expect it to be excluded in the store path 108 + # [c/d/]= # Declare that directory c/d/ should exist and expect it to be excluded in the store path 109 + # ) 110 + # checkFileset './a' # Pass the fileset as the argument 111 + declare -A tree 112 + checkFileset() ( 113 + # New subshell so that we can have a separate trap handler, see `trap` below 114 + local fileset=$1 115 + 116 + # Process the tree into separate arrays for included paths, excluded paths and excluded files. 117 + # Also create all the paths in the local directory 118 + local -a included=() 119 + local -a excluded=() 120 + local -a excludedFiles=() 121 + for p in "${!tree[@]}"; do 122 + # If keys end with a `/` we treat them as directories, otherwise files 123 + if [[ "$p" =~ /$ ]]; then 124 + mkdir -p "$p" 125 + isFile= 126 + else 127 + mkdir -p "$(dirname "$p")" 128 + touch "$p" 129 + isFile=1 130 + fi 131 + case "${tree[$p]}" in 132 + 1) 133 + included+=("$p") 134 + ;; 135 + 0) 136 + excluded+=("$p") 137 + if [[ -n "$isFile" ]]; then 138 + excludedFiles+=("$p") 139 + fi 140 + ;; 141 + *) 142 + die "Unsupported tree value: ${tree[$p]}" 143 + esac 144 + done 145 + 146 + # Start inotifywait in the background to monitor all excluded files (if any) 147 + if [[ -n "$canMonitorFiles" ]] && (( "${#excludedFiles[@]}" != 0 )); then 148 + coproc watcher { 149 + # inotifywait outputs a string on stderr when ready 150 + # Redirect it to stdout so we can access it from the coproc's stdout fd 151 + # exec so that the coprocess is inotify itself, making the kill below work correctly 152 + # See below why we listen to both open and delete_self events 153 + exec inotifywait --format='%e %w' --event open,delete_self --monitor "${excludedFiles[@]}" 2>&1 154 + } 155 + # This will trigger when this subshell exits, no matter if successful or not 156 + # After exiting the subshell, the parent shell will continue executing 157 + trap 'kill "${watcher_PID}"' exit 158 + 159 + # Synchronously wait until inotifywait is ready 160 + while read -r -u "${watcher[0]}" line && [[ "$line" != "Watches established." ]]; do 161 + : 162 + done 163 + fi 164 + 165 + # Call toSource with the fileset, triggering open events for all files that are added to the store 166 + expression="toSource { root = ./.; fileset = $fileset; }" 167 + # crudeUnquoteJSON is safe because we get back a store path in a string 168 + storePath=$(expectSuccess "$expression" | crudeUnquoteJSON) 169 + 170 + # Remove all files immediately after, triggering delete_self events for all of them 171 + rm -rf -- * 172 + 173 + # Only check for the inotify events if we actually started inotify earlier 174 + if [[ -v watcher ]]; then 175 + # Get the first event 176 + read -r -u "${watcher[0]}" event file 177 + 178 + # There's only these two possible event timelines: 179 + # - open, ..., open, delete_self, ..., delete_self: If some excluded files were read 180 + # - delete_self, ..., delete_self: If no excluded files were read 181 + # So by looking at the first event we can figure out which one it is! 182 + case "$event" in 183 + OPEN) 184 + die "$expression opened excluded file $file when it shouldn't have" 185 + ;; 186 + DELETE_SELF) 187 + # Expected events 188 + ;; 189 + *) 190 + die "Unexpected event type '$event' on file $file that should be excluded" 191 + ;; 192 + esac 193 + fi 194 + 195 + # For each path that should be included, make sure it does occur in the resulting store path 196 + for p in "${included[@]}"; do 197 + if [[ ! -e "$storePath/$p" ]]; then 198 + die "$expression doesn't include path $p when it should have" 199 + fi 200 + done 201 + 202 + # For each path that should be excluded, make sure it doesn't occur in the resulting store path 203 + for p in "${excluded[@]}"; do 204 + if [[ -e "$storePath/$p" ]]; then 205 + die "$expression included path $p when it shouldn't have" 206 + fi 207 + done 208 + ) 209 + 210 + 211 + #### Error messages ##### 212 + 213 + # Absolute paths in strings cannot be passed as `root` 214 + expectFailure 'toSource { root = "/nix/store/foobar"; fileset = ./.; }' 'lib.fileset.toSource: `root` "/nix/store/foobar" is a string-like value, but it should be a path instead. 215 + \s*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.' 216 + 217 + # Only paths are accepted as `root` 218 + expectFailure 'toSource { root = 10; fileset = ./.; }' 'lib.fileset.toSource: `root` is of type int, but it should be a path instead.' 219 + 220 + # Different filesystem roots in root and fileset are not supported 221 + mkdir -p {foo,bar}/mock-root 222 + expectFailure 'with ((import <nixpkgs/lib>).extend (import <nixpkgs/lib/fileset/mock-splitRoot.nix>)).fileset; 223 + toSource { root = ./foo/mock-root; fileset = ./bar/mock-root; } 224 + ' 'lib.fileset.toSource: Filesystem roots are not the same for `fileset` and `root` "'"$work"'/foo/mock-root": 225 + \s*`root`: root "'"$work"'/foo/mock-root" 226 + \s*`fileset`: root "'"$work"'/bar/mock-root" 227 + \s*Different roots are not supported.' 228 + rm -rf * 229 + 230 + # `root` needs to exist 231 + expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `root` '"$work"'/a does not exist.' 232 + 233 + # `root` needs to be a file 234 + touch a 235 + expectFailure 'toSource { root = ./a; fileset = ./a; }' 'lib.fileset.toSource: `root` '"$work"'/a is a file, but it should be a directory instead. Potential solutions: 236 + \s*- If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function. 237 + \s*- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as '"$work"', and set `fileset` to the file path.' 238 + rm -rf * 239 + 240 + # Only paths under `root` should be able to influence the result 241 + mkdir a 242 + expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `fileset` could contain files in '"$work"', which is not under the `root` '"$work"'/a. Potential solutions: 243 + \s*- Set `root` to '"$work"' or any directory higher up. This changes the layout of the resulting store path. 244 + \s*- Set `fileset` to a file set that cannot contain files outside the `root` '"$work"'/a. This could change the files included in the result.' 245 + rm -rf * 246 + 247 + # Path coercion only works for paths 248 + expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a path instead.' 249 + expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` "/some/path" is a string-like value, but it should be a path instead. 250 + \s*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.' 251 + 252 + # Path coercion errors for non-existent paths 253 + expectFailure 'toSource { root = ./.; fileset = ./a; }' 'lib.fileset.toSource: `fileset` '"$work"'/a does not exist.' 254 + 255 + # File sets cannot be evaluated directly 256 + expectFailure '_create ./. null' 'lib.fileset: Directly evaluating a file set is not supported. Use `lib.fileset.toSource` to turn it into a usable source instead.' 257 + 258 + # Future versions of the internal representation are unsupported 259 + expectFailure '_coerce "<tests>: value" { _type = "fileset"; _internalVersion = 1; }' '<tests>: value is a file set created from a future version of the file set library with a different internal representation: 260 + \s*- Internal version of the file set: 1 261 + \s*- Internal version of the library: 0 262 + \s*Make sure to update your Nixpkgs to have a newer version of `lib.fileset`.' 263 + 264 + # _create followed by _coerce should give the inputs back without any validation 265 + expectSuccess '{ 266 + inherit (_coerce "<test>" (_create "base" "tree")) 267 + _internalVersion _internalBase _internalTree; 268 + }' '\{"_internalBase":"base","_internalTree":"tree","_internalVersion":0\}' 269 + 270 + #### Resulting store path #### 271 + 272 + # The store path name should be "source" 273 + expectSuccess 'toSource { root = ./.; fileset = ./.; }' '"'"${NIX_STORE_DIR:-/nix/store}"'/.*-source"' 274 + 275 + # We should be able to import an empty directory and end up with an empty result 276 + tree=( 277 + ) 278 + checkFileset './.' 279 + 280 + # Directories recursively containing no files are not included 281 + tree=( 282 + [e/]=0 283 + [d/e/]=0 284 + [d/d/e/]=0 285 + [d/d/f]=1 286 + [d/f]=1 287 + [f]=1 288 + ) 289 + checkFileset './.' 290 + 291 + # Check trees that could cause a naïve string prefix checking implementation to fail 292 + tree=( 293 + [a]=0 294 + [ab/x]=0 295 + [ab/xy]=1 296 + [ab/xyz]=0 297 + [abc]=0 298 + ) 299 + checkFileset './ab/xy' 300 + 301 + # Check path coercion examples in ../../doc/functions/fileset.section.md 302 + tree=( 303 + [a/x]=1 304 + [a/b/y]=1 305 + [c/]=0 306 + [c/d/]=0 307 + ) 308 + checkFileset './.' 309 + 310 + tree=( 311 + [a/x]=1 312 + [a/b/y]=1 313 + [c/]=0 314 + [c/d/]=0 315 + ) 316 + checkFileset './a' 317 + 318 + tree=( 319 + [a/x]=1 320 + [a/b/y]=0 321 + [c/]=0 322 + [c/d/]=0 323 + ) 324 + checkFileset './a/x' 325 + 326 + tree=( 327 + [a/x]=0 328 + [a/b/y]=1 329 + [c/]=0 330 + [c/d/]=0 331 + ) 332 + checkFileset './a/b' 333 + 334 + tree=( 335 + [a/x]=0 336 + [a/b/y]=0 337 + [c/]=0 338 + [c/d/]=0 339 + ) 340 + checkFileset './c' 341 + 342 + # Test the source filter for the somewhat special case of files in the filesystem root 343 + # We can't easily test this with the above functions because we can't write to the filesystem root and we don't want to make any assumptions which files are there in the sandbox 344 + expectSuccess '_toSourceFilter (_create /. null) "/foo" ""' 'false' 345 + expectSuccess '_toSourceFilter (_create /. { foo = "regular"; }) "/foo" ""' 'true' 346 + expectSuccess '_toSourceFilter (_create /. { foo = null; }) "/foo" ""' 'false' 347 + 348 + # TODO: Once we have combinators and a property testing library, derive property tests from https://en.wikipedia.org/wiki/Algebra_of_sets 349 + 350 + echo >&2 tests ok
+5 -1
lib/tests/release.nix
··· 6 6 }: 7 7 8 8 let 9 + lib = import ../.; 9 10 testWithNix = nix: 10 11 pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" { 11 12 buildInputs = [ ··· 25 24 ]; 26 25 nativeBuildInputs = [ 27 26 nix 28 - ]; 27 + ] ++ lib.optional pkgs.stdenv.isLinux pkgs.inotify-tools; 29 28 strictDeps = true; 30 29 } '' 31 30 datadir="${nix}/share" ··· 50 49 51 50 echo "Running lib/tests/sources.sh" 52 51 TEST_LIB=$PWD/lib bash lib/tests/sources.sh 52 + 53 + echo "Running lib/fileset/tests.sh" 54 + TEST_LIB=$PWD/lib bash lib/fileset/tests.sh 53 55 54 56 echo "Running lib/tests/systems.nix" 55 57 [[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]];
+4 -1
nixos/modules/system/boot/stage-2-init.sh
··· 104 104 105 105 106 106 # Required by the activation script 107 - install -m 0755 -d /etc /etc/nixos 107 + install -m 0755 -d /etc 108 + if [ -d "/etc/nixos" ]; then 109 + install -m 0755 -d /etc/nixos 110 + fi 108 111 install -m 01777 -d /tmp 109 112 110 113
+19
pkgs/applications/misc/xlights/default.nix
··· 1 + { lib, appimageTools, fetchurl }: 2 + 3 + appimageTools.wrapType2 rec { 4 + pname = "xlights"; 5 + version = "2023.11"; 6 + 7 + src = fetchurl { 8 + url = "https://github.com/smeighan/xLights/releases/download/${version}/xLights-${version}-x86_64.AppImage"; 9 + hash = "sha256-WUBN/Gjnsj2eUL03sXIYWgzLA7FNN7h+qpWlnXBdnw8="; 10 + }; 11 + 12 + meta = with lib; { 13 + description = "xLights is a sequencer for Lights. xLights has usb and E1.31 drivers. You can create sequences in this object oriented program. You can create playlists, schedule them, test your hardware, convert between different sequencers."; 14 + homepage = "https://xlights.org"; 15 + license = licenses.gpl3; 16 + maintainers = with maintainers; [ kashw2 ]; 17 + platforms = platforms.linux; 18 + }; 19 + }
+3 -3
pkgs/applications/networking/cluster/arkade/default.nix
··· 7 7 8 8 buildGoModule rec { 9 9 pname = "arkade"; 10 - version = "0.9.27"; 10 + version = "0.10.0"; 11 11 12 12 src = fetchFromGitHub { 13 13 owner = "alexellis"; 14 14 repo = "arkade"; 15 15 rev = version; 16 - hash = "sha256-PVnUfDUj2CazmvNZbRuHUIiP6Ta+3x6aeDSowgzAhiU="; 16 + hash = "sha256-XjJt2bLGBl6T3nrTdwr8lNKW0cBZH+gYFAy6lkNtwgw="; 17 17 }; 18 18 19 19 CGO_ENABLED = 0; 20 20 21 21 nativeBuildInputs = [ installShellFiles ]; 22 22 23 - vendorHash = "sha256-uByv18e9fLALWoXc8hD4HGv8DFRJejCyzD8tjU5FQn0="; 23 + vendorHash = null; 24 24 25 25 # Exclude pkg/get: tests downloading of binaries which fail when sandbox=true 26 26 subPackages = [
+2 -2
pkgs/applications/networking/cluster/kubernetes/default.nix
··· 20 20 21 21 buildGoModule rec { 22 22 pname = "kubernetes"; 23 - version = "1.27.4"; 23 + version = "1.28.1"; 24 24 25 25 src = fetchFromGitHub { 26 26 owner = "kubernetes"; 27 27 repo = "kubernetes"; 28 28 rev = "v${version}"; 29 - hash = "sha256-Tb+T7kJHyZPXwUcEATj3jBr9qa7Sk6b+wL8HhqFOhYM="; 29 + hash = "sha256-SsYSjGACGqg+RW7X1OVgPC7MF4KufyskXuES9YKM2mk="; 30 30 }; 31 31 32 32 vendorHash = null;
+2 -2
pkgs/applications/networking/instant-messengers/cordless/default.nix
··· 8 8 owner = "Bios-Marcel"; 9 9 repo = pname; 10 10 rev = version; 11 - sha256 = "0avf09b73fs3wpb4fzmm6ka595aanfvp95m6xj1ccxvq8ciwpqcw"; 11 + hash = "sha256-nOHLI0N4d8aC7KaWdLezSpVU1DS1fkfW5UO7cVYCbis="; 12 12 }; 13 13 14 14 subPackages = [ "." ]; 15 15 16 - vendorSha256 = "01anbhwgwam70dymcmvkia1xpw48658rq7wv4m7fiavxvnli6z2y"; 16 + vendorHash = "sha256-XnwTqd19q+hOJZsfnFExiPDbg4pzV1Z9A6cq/jhcVgU="; 17 17 18 18 meta = with lib; { 19 19 homepage = "https://github.com/Bios-Marcel/cordless";
+6 -6
pkgs/applications/version-management/gitlab/data.json
··· 1 1 { 2 - "version": "16.1.3", 3 - "repo_hash": "sha256-PI0nmwfk8uu74NJkavbbJR9/jDN9SS0Z9Axe4UmT2kk=", 2 + "version": "16.1.4", 3 + "repo_hash": "sha256-GVUQBAuLBajKXpZOxaP+QnAVj32XTYDtTfInNFQRRCY=", 4 4 "yarn_hash": "0wykn0vq16n8mz4jfh7dfyp9javzhqlfwmc5i1zm07gld91nirlm", 5 5 "owner": "gitlab-org", 6 6 "repo": "gitlab", 7 - "rev": "v16.1.3-ee", 7 + "rev": "v16.1.4-ee", 8 8 "passthru": { 9 - "GITALY_SERVER_VERSION": "16.1.3", 10 - "GITLAB_PAGES_VERSION": "16.1.3", 9 + "GITALY_SERVER_VERSION": "16.1.4", 10 + "GITLAB_PAGES_VERSION": "16.1.4", 11 11 "GITLAB_SHELL_VERSION": "14.23.0", 12 12 "GITLAB_ELASTICSEARCH_INDEXER_VERSION": "4.3.5", 13 - "GITLAB_WORKHORSE_VERSION": "16.1.3" 13 + "GITLAB_WORKHORSE_VERSION": "16.1.4" 14 14 } 15 15 }
+2 -2
pkgs/applications/version-management/gitlab/gitaly/default.nix
··· 13 13 }: 14 14 15 15 let 16 - version = "16.1.3"; 16 + version = "16.1.4"; 17 17 package_version = "v${lib.versions.major version}"; 18 18 gitaly_package = "gitlab.com/gitlab-org/gitaly/${package_version}"; 19 19 ··· 24 24 owner = "gitlab-org"; 25 25 repo = "gitaly"; 26 26 rev = "v${version}"; 27 - sha256 = "sha256-g9K1dFcrUkWJInPrwg9fz/TEK35GrjqFpUS2bnemwLQ="; 27 + sha256 = "sha256-BgupN+fhUxhvMvqmrJTpLt1gPTHC3SO3HTb1ezJokYQ="; 28 28 }; 29 29 30 30 vendorSha256 = "sha256-6oOFQGPwiMRQrESXsQsGzvWz9bCb0VTYIyyG/C2b3nA=";
+2 -2
pkgs/applications/version-management/gitlab/gitlab-pages/default.nix
··· 2 2 3 3 buildGoModule rec { 4 4 pname = "gitlab-pages"; 5 - version = "16.1.3"; 5 + version = "16.1.4"; 6 6 7 7 src = fetchFromGitLab { 8 8 owner = "gitlab-org"; 9 9 repo = "gitlab-pages"; 10 10 rev = "v${version}"; 11 - sha256 = "sha256-FSdew0HMbgEAzVoDhINDIQQs8Q63AHu8mu/dKo+wP9k="; 11 + sha256 = "sha256-9hqPeyabnAzmgj8rtmSgPG4QCnnSKc9wpAyFFa3uZpY="; 12 12 }; 13 13 14 14 vendorHash = "sha256-SN4r9hcTTQUr3miv2Cm7iBryyh7yG1xx9lCvq3vQwc0=";
+1 -1
pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix
··· 5 5 buildGoModule rec { 6 6 pname = "gitlab-workhorse"; 7 7 8 - version = "16.1.3"; 8 + version = "16.1.4"; 9 9 10 10 src = fetchFromGitLab { 11 11 owner = data.owner;
+2 -2
pkgs/development/python-modules/botocore-stubs/default.nix
··· 9 9 10 10 buildPythonPackage rec { 11 11 pname = "botocore-stubs"; 12 - version = "1.31.39"; 12 + version = "1.31.40"; 13 13 format = "pyproject"; 14 14 15 15 disabled = pythonOlder "3.7"; ··· 17 17 src = fetchPypi { 18 18 pname = "botocore_stubs"; 19 19 inherit version; 20 - hash = "sha256-pqpGnPXZT5lDnTpXBfsJk0/tBtUovgazAWZf/TZJfNg="; 20 + hash = "sha256-IAGiU9r0ri4XHmE3uZgqAKf7/HpTRJoWhW3ASefNUhQ="; 21 21 }; 22 22 23 23 nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/mercadopago/default.nix
··· 7 7 8 8 buildPythonPackage rec { 9 9 pname = "mercadopago"; 10 - version = "2.2.0"; 10 + version = "2.2.1"; 11 11 format = "setuptools"; 12 12 13 13 disabled = pythonOlder "3.7"; ··· 16 16 owner = "mercadopago"; 17 17 repo = "sdk-python"; 18 18 rev = "refs/tags/${version}"; 19 - hash = "sha256-HtPyIwip/cjvnBDZ0qGpLKJOkwETGSqXvTkH2pcd6cc="; 19 + hash = "sha256-ABxYGYUBOzeOSE0yK8jym+ldinDUCTpqO165OWhszgs="; 20 20 }; 21 21 22 22 propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/oslo-log/default.nix
··· 17 17 18 18 buildPythonPackage rec { 19 19 pname = "oslo-log"; 20 - version = "5.2.0"; 20 + version = "5.3.0"; 21 21 format = "setuptools"; 22 22 23 23 disabled = pythonOlder "3.8"; ··· 25 25 src = fetchPypi { 26 26 pname = "oslo.log"; 27 27 inherit version; 28 - hash = "sha256-YiYzbVtu4YhfBXtl2+3oTEqcXk5K51oOjn84PBY+xIA="; 28 + hash = "sha256-zJSqvbUOHiVxxsvEs5lpSgVBV2c1kIqYSgIjqeH72z4="; 29 29 }; 30 30 31 31 propagatedBuildInputs = [
+3 -3
pkgs/development/python-modules/pytesseract/default.nix
··· 11 11 12 12 buildPythonPackage rec { 13 13 pname = "pytesseract"; 14 - version = "0.3.10"; 14 + version = "0.3.11"; 15 15 format = "pyproject"; 16 16 17 17 src = fetchFromGitHub { 18 18 owner = "madmaze"; 19 19 repo = pname; 20 - rev = "v${version}"; 21 - hash = "sha256-CyKXtaIE/8iPLqi0GHVUgTeJDYZyWBjkRvOKJJKCxZo="; 20 + rev = "refs/tags/v${version}"; 21 + hash = "sha256-8obU1QFlboQnFjb3JUkVG+tt0wDlRffVH/PBmN1r3dk="; 22 22 }; 23 23 24 24 patches = [
+2 -2
pkgs/development/python-modules/zigpy/default.nix
··· 19 19 20 20 buildPythonPackage rec { 21 21 pname = "zigpy"; 22 - version = "0.57.0"; 22 + version = "0.57.1"; 23 23 format = "pyproject"; 24 24 25 25 disabled = pythonOlder "3.8"; ··· 28 28 owner = "zigpy"; 29 29 repo = "zigpy"; 30 30 rev = "refs/tags/${version}"; 31 - hash = "sha256-79TOt3PRvkhuF6wf+acYhhzFFkYX0l3yLpxv8dNRk1U="; 31 + hash = "sha256-aVrLiWPjc4xn2GvKmZCrRJGGbxP545PKqAH9rPq8IPo="; 32 32 }; 33 33 34 34 postPatch = ''
+345 -306
pkgs/development/tools/ruff/Cargo.lock
··· 28 28 29 29 [[package]] 30 30 name = "aho-corasick" 31 - version = "0.7.20" 31 + version = "1.0.5" 32 32 source = "registry+https://github.com/rust-lang/crates.io-index" 33 - checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 34 - dependencies = [ 35 - "memchr", 36 - ] 37 - 38 - [[package]] 39 - name = "aho-corasick" 40 - version = "1.0.2" 41 - source = "registry+https://github.com/rust-lang/crates.io-index" 42 - checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" 33 + checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" 43 34 dependencies = [ 44 35 "memchr", 45 36 ] ··· 74 83 75 84 [[package]] 76 85 name = "anstream" 77 - version = "0.3.2" 86 + version = "0.5.0" 78 87 source = "registry+https://github.com/rust-lang/crates.io-index" 79 - checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" 88 + checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" 80 89 dependencies = [ 81 90 "anstyle", 82 91 "anstyle-parse", 83 92 "anstyle-query", 84 93 "anstyle-wincon", 85 94 "colorchoice", 86 - "is-terminal", 87 95 "utf8parse", 88 96 ] 89 97 90 98 [[package]] 91 99 name = "anstyle" 92 - version = "1.0.1" 100 + version = "1.0.2" 93 101 source = "registry+https://github.com/rust-lang/crates.io-index" 94 - checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" 102 + checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" 95 103 96 104 [[package]] 97 105 name = "anstyle-parse" ··· 112 122 113 123 [[package]] 114 124 name = "anstyle-wincon" 115 - version = "1.0.1" 125 + version = "2.1.0" 116 126 source = "registry+https://github.com/rust-lang/crates.io-index" 117 - checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" 127 + checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" 118 128 dependencies = [ 119 129 "anstyle", 120 130 "windows-sys 0.48.0", ··· 122 132 123 133 [[package]] 124 134 name = "anyhow" 125 - version = "1.0.71" 135 + version = "1.0.75" 126 136 source = "registry+https://github.com/rust-lang/crates.io-index" 127 - checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" 137 + checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 128 138 129 139 [[package]] 130 140 name = "argfile" ··· 152 162 153 163 [[package]] 154 164 name = "assert_cmd" 155 - version = "2.0.11" 165 + version = "2.0.12" 156 166 source = "registry+https://github.com/rust-lang/crates.io-index" 157 - checksum = "86d6b683edf8d1119fe420a94f8a7e389239666aa72e65495d91c00462510151" 167 + checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" 158 168 dependencies = [ 159 169 "anstyle", 160 170 "bstr", ··· 173 183 174 184 [[package]] 175 185 name = "base64" 176 - version = "0.21.2" 186 + version = "0.21.3" 177 187 source = "registry+https://github.com/rust-lang/crates.io-index" 178 - checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" 188 + checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" 179 189 180 190 [[package]] 181 191 name = "bincode" ··· 209 219 210 220 [[package]] 211 221 name = "bitflags" 212 - version = "2.3.3" 222 + version = "2.4.0" 213 223 source = "registry+https://github.com/rust-lang/crates.io-index" 214 - checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" 224 + checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" 215 225 216 226 [[package]] 217 227 name = "bstr" 218 - version = "1.6.0" 228 + version = "1.6.2" 219 229 source = "registry+https://github.com/rust-lang/crates.io-index" 220 - checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" 230 + checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" 221 231 dependencies = [ 222 232 "memchr", 223 - "regex-automata 0.3.0", 233 + "regex-automata 0.3.7", 224 234 "serde", 225 235 ] 226 236 ··· 247 257 248 258 [[package]] 249 259 name = "cc" 250 - version = "1.0.79" 260 + version = "1.0.83" 251 261 source = "registry+https://github.com/rust-lang/crates.io-index" 252 - checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 262 + checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 263 + dependencies = [ 264 + "libc", 265 + ] 253 266 254 267 [[package]] 255 268 name = "cfg-if" ··· 271 278 272 279 [[package]] 273 280 name = "chrono" 274 - version = "0.4.26" 281 + version = "0.4.28" 275 282 source = "registry+https://github.com/rust-lang/crates.io-index" 276 - checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" 283 + checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" 277 284 dependencies = [ 278 285 "android-tzdata", 279 286 "iana-time-zone", ··· 282 289 "serde", 283 290 "time 0.1.45", 284 291 "wasm-bindgen", 285 - "winapi", 292 + "windows-targets 0.48.5", 286 293 ] 287 294 288 295 [[package]] ··· 314 321 315 322 [[package]] 316 323 name = "clap" 317 - version = "4.3.11" 324 + version = "4.4.1" 318 325 source = "registry+https://github.com/rust-lang/crates.io-index" 319 - checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" 326 + checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" 320 327 dependencies = [ 321 328 "clap_builder", 322 329 "clap_derive", ··· 325 332 326 333 [[package]] 327 334 name = "clap_builder" 328 - version = "4.3.11" 335 + version = "4.4.1" 329 336 source = "registry+https://github.com/rust-lang/crates.io-index" 330 - checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" 337 + checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" 331 338 dependencies = [ 332 339 "anstream", 333 340 "anstyle", ··· 337 344 338 345 [[package]] 339 346 name = "clap_complete" 340 - version = "4.3.2" 347 + version = "4.4.0" 341 348 source = "registry+https://github.com/rust-lang/crates.io-index" 342 - checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce" 349 + checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5" 343 350 dependencies = [ 344 351 "clap", 345 352 ] ··· 358 365 359 366 [[package]] 360 367 name = "clap_complete_fig" 361 - version = "4.3.1" 368 + version = "4.4.0" 362 369 source = "registry+https://github.com/rust-lang/crates.io-index" 363 - checksum = "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f" 370 + checksum = "9e9bae21b3f6eb417ad3054c8b1094aa0542116eba4979b1b271baefbfa6b965" 364 371 dependencies = [ 365 372 "clap", 366 373 "clap_complete", ··· 378 385 379 386 [[package]] 380 387 name = "clap_derive" 381 - version = "4.3.2" 388 + version = "4.4.0" 382 389 source = "registry+https://github.com/rust-lang/crates.io-index" 383 - checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" 390 + checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" 384 391 dependencies = [ 385 392 "heck", 386 393 "proc-macro2", 387 394 "quote", 388 - "syn 2.0.23", 395 + "syn 2.0.29", 389 396 ] 390 397 391 398 [[package]] 392 399 name = "clap_lex" 393 - version = "0.5.0" 400 + version = "0.5.1" 394 401 source = "registry+https://github.com/rust-lang/crates.io-index" 395 - checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" 402 + checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" 396 403 397 404 [[package]] 398 405 name = "clearscreen" ··· 405 412 "thiserror", 406 413 "which", 407 414 "winapi", 415 + ] 416 + 417 + [[package]] 418 + name = "codspeed" 419 + version = "2.1.0" 420 + source = "registry+https://github.com/rust-lang/crates.io-index" 421 + checksum = "5aeec2fbed4969dc38b5ca201115dd5c2614b8ef78e0a7221dd5f0977fb1552b" 422 + dependencies = [ 423 + "colored", 424 + "libc", 425 + "serde_json", 426 + ] 427 + 428 + [[package]] 429 + name = "codspeed-criterion-compat" 430 + version = "2.1.0" 431 + source = "registry+https://github.com/rust-lang/crates.io-index" 432 + checksum = "1b13f0a08d40ce7c95bdf288f725b975e62fcadfa8ba152340943bab6de43af7" 433 + dependencies = [ 434 + "codspeed", 435 + "colored", 436 + "criterion", 408 437 ] 409 438 410 439 [[package]] ··· 592 577 checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 593 578 594 579 [[package]] 595 - name = "ctor" 596 - version = "0.1.26" 597 - source = "registry+https://github.com/rust-lang/crates.io-index" 598 - checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 599 - dependencies = [ 600 - "quote", 601 - "syn 1.0.109", 602 - ] 603 - 604 - [[package]] 605 580 name = "darling" 606 - version = "0.20.1" 581 + version = "0.20.3" 607 582 source = "registry+https://github.com/rust-lang/crates.io-index" 608 - checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" 583 + checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" 609 584 dependencies = [ 610 585 "darling_core", 611 586 "darling_macro", ··· 603 598 604 599 [[package]] 605 600 name = "darling_core" 606 - version = "0.20.1" 601 + version = "0.20.3" 607 602 source = "registry+https://github.com/rust-lang/crates.io-index" 608 - checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" 603 + checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" 609 604 dependencies = [ 610 605 "fnv", 611 606 "ident_case", 612 607 "proc-macro2", 613 608 "quote", 614 609 "strsim", 615 - "syn 2.0.23", 610 + "syn 2.0.29", 616 611 ] 617 612 618 613 [[package]] 619 614 name = "darling_macro" 620 - version = "0.20.1" 615 + version = "0.20.3" 621 616 source = "registry+https://github.com/rust-lang/crates.io-index" 622 - checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" 617 + checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" 623 618 dependencies = [ 624 619 "darling_core", 625 620 "quote", 626 - "syn 2.0.23", 621 + "syn 2.0.29", 622 + ] 623 + 624 + [[package]] 625 + name = "deranged" 626 + version = "0.3.8" 627 + source = "registry+https://github.com/rust-lang/crates.io-index" 628 + checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" 629 + dependencies = [ 630 + "serde", 627 631 ] 628 632 629 633 [[package]] ··· 723 709 724 710 [[package]] 725 711 name = "dyn-clone" 726 - version = "1.0.11" 712 + version = "1.0.13" 727 713 source = "registry+https://github.com/rust-lang/crates.io-index" 728 - checksum = "68b0cf012f1230e43cd00ebb729c6bb58707ecfa8ad08b52ef3a4ccd2697fc30" 714 + checksum = "bbfc4744c1b8f2a09adc0e55242f60b1af195d88596bd8700be74418c056c555" 729 715 730 716 [[package]] 731 717 name = "either" 732 - version = "1.8.1" 718 + version = "1.9.0" 733 719 source = "registry+https://github.com/rust-lang/crates.io-index" 734 - checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" 720 + checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 735 721 736 722 [[package]] 737 723 name = "ena" ··· 763 749 764 750 [[package]] 765 751 name = "equivalent" 766 - version = "1.0.0" 752 + version = "1.0.1" 767 753 source = "registry+https://github.com/rust-lang/crates.io-index" 768 - checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" 754 + checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 769 755 770 756 [[package]] 771 757 name = "errno" 772 - version = "0.3.1" 758 + version = "0.3.3" 773 759 source = "registry+https://github.com/rust-lang/crates.io-index" 774 - checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" 760 + checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" 775 761 dependencies = [ 776 762 "errno-dragonfly", 777 763 "libc", ··· 790 776 791 777 [[package]] 792 778 name = "fastrand" 793 - version = "1.9.0" 779 + version = "2.0.0" 794 780 source = "registry+https://github.com/rust-lang/crates.io-index" 795 - checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 796 - dependencies = [ 797 - "instant", 798 - ] 781 + checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" 799 782 800 783 [[package]] 801 784 name = "fern" ··· 805 794 806 795 [[package]] 807 796 name = "filetime" 808 - version = "0.2.21" 797 + version = "0.2.22" 809 798 source = "registry+https://github.com/rust-lang/crates.io-index" 810 - checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" 799 + checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" 811 800 dependencies = [ 812 801 "cfg-if", 813 802 "libc", 814 - "redox_syscall 0.2.16", 803 + "redox_syscall 0.3.5", 815 804 "windows-sys 0.48.0", 816 805 ] 817 806 ··· 823 812 824 813 [[package]] 825 814 name = "flake8-to-ruff" 826 - version = "0.0.286" 815 + version = "0.0.287" 827 816 dependencies = [ 828 817 "anyhow", 829 818 "clap", 830 819 "colored", 831 820 "configparser", 821 + "itertools", 822 + "log", 832 823 "once_cell", 824 + "pep440_rs", 825 + "pretty_assertions", 833 826 "regex", 834 827 "ruff", 828 + "ruff_workspace", 835 829 "rustc-hash", 836 830 "serde", 837 831 "serde_json", ··· 847 831 848 832 [[package]] 849 833 name = "flate2" 850 - version = "1.0.26" 834 + version = "1.0.27" 851 835 source = "registry+https://github.com/rust-lang/crates.io-index" 852 - checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" 836 + checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" 853 837 dependencies = [ 854 838 "crc32fast", 855 839 "miniz_oxide", ··· 906 890 907 891 [[package]] 908 892 name = "globset" 909 - version = "0.4.10" 893 + version = "0.4.13" 910 894 source = "registry+https://github.com/rust-lang/crates.io-index" 911 - checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" 895 + checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" 912 896 dependencies = [ 913 - "aho-corasick 0.7.20", 897 + "aho-corasick", 914 898 "bstr", 915 899 "fnv", 916 900 "log", ··· 1033 1017 1034 1018 [[package]] 1035 1019 name = "imperative" 1036 - version = "1.0.4" 1020 + version = "1.0.5" 1037 1021 source = "registry+https://github.com/rust-lang/crates.io-index" 1038 - checksum = "9f92123bf2fe0d9f1b5df1964727b970ca3b2d0203d47cf97fb1f36d856b6398" 1022 + checksum = "8b70798296d538cdaa6d652941fcc795963f8b9878b9e300c9fab7a522bd2fc0" 1039 1023 dependencies = [ 1040 1024 "phf", 1041 1025 "rust-stemmers", ··· 1060 1044 dependencies = [ 1061 1045 "equivalent", 1062 1046 "hashbrown 0.14.0", 1047 + "serde", 1063 1048 ] 1064 1049 1065 1050 [[package]] 1066 1051 name = "indicatif" 1067 - version = "0.17.5" 1052 + version = "0.17.6" 1068 1053 source = "registry+https://github.com/rust-lang/crates.io-index" 1069 - checksum = "8ff8cc23a7393a397ed1d7f56e6365cba772aba9f9912ab968b03043c395d057" 1054 + checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" 1070 1055 dependencies = [ 1071 1056 "console", 1072 1057 "instant", ··· 1129 1112 ] 1130 1113 1131 1114 [[package]] 1132 - name = "io-lifetimes" 1133 - version = "1.0.11" 1134 - source = "registry+https://github.com/rust-lang/crates.io-index" 1135 - checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" 1136 - dependencies = [ 1137 - "hermit-abi", 1138 - "libc", 1139 - "windows-sys 0.48.0", 1140 - ] 1141 - 1142 - [[package]] 1143 1115 name = "is-macro" 1144 1116 version = "0.2.2" 1145 1117 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1143 1137 1144 1138 [[package]] 1145 1139 name = "is-terminal" 1146 - version = "0.4.8" 1140 + version = "0.4.9" 1147 1141 source = "registry+https://github.com/rust-lang/crates.io-index" 1148 - checksum = "24fddda5af7e54bf7da53067d6e802dbcc381d0a8eef629df528e3ebf68755cb" 1142 + checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" 1149 1143 dependencies = [ 1150 1144 "hermit-abi", 1151 - "rustix 0.38.3", 1145 + "rustix", 1152 1146 "windows-sys 0.48.0", 1153 1147 ] 1154 1148 ··· 1163 1157 1164 1158 [[package]] 1165 1159 name = "itoa" 1166 - version = "1.0.8" 1160 + version = "1.0.9" 1167 1161 source = "registry+https://github.com/rust-lang/crates.io-index" 1168 - checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" 1162 + checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 1169 1163 1170 1164 [[package]] 1171 1165 name = "js-sys" ··· 1178 1172 1179 1173 [[package]] 1180 1174 name = "kqueue" 1181 - version = "1.0.7" 1175 + version = "1.0.8" 1182 1176 source = "registry+https://github.com/rust-lang/crates.io-index" 1183 - checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" 1177 + checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" 1184 1178 dependencies = [ 1185 1179 "kqueue-sys", 1186 1180 "libc", ··· 1188 1182 1189 1183 [[package]] 1190 1184 name = "kqueue-sys" 1191 - version = "1.0.3" 1185 + version = "1.0.4" 1192 1186 source = "registry+https://github.com/rust-lang/crates.io-index" 1193 - checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" 1187 + checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 1194 1188 dependencies = [ 1195 1189 "bitflags 1.3.2", 1196 1190 "libc", ··· 1211 1205 "lalrpop-util", 1212 1206 "petgraph", 1213 1207 "regex", 1214 - "regex-syntax 0.7.3", 1208 + "regex-syntax 0.7.5", 1215 1209 "string_cache", 1216 1210 "term", 1217 1211 "tiny-keccak", ··· 1292 1286 1293 1287 [[package]] 1294 1288 name = "libmimalloc-sys" 1295 - version = "0.1.33" 1289 + version = "0.1.34" 1296 1290 source = "registry+https://github.com/rust-lang/crates.io-index" 1297 - checksum = "f4ac0e912c8ef1b735e92369695618dc5b1819f5a7bf3f167301a3ba1cea515e" 1291 + checksum = "25d058a81af0d1c22d7a1c948576bee6d673f7af3c0f35564abd6c81122f513d" 1298 1292 dependencies = [ 1299 1293 "cc", 1300 1294 "libc", ··· 1308 1302 1309 1303 [[package]] 1310 1304 name = "linux-raw-sys" 1311 - version = "0.3.8" 1305 + version = "0.4.5" 1312 1306 source = "registry+https://github.com/rust-lang/crates.io-index" 1313 - checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" 1314 - 1315 - [[package]] 1316 - name = "linux-raw-sys" 1317 - version = "0.4.3" 1318 - source = "registry+https://github.com/rust-lang/crates.io-index" 1319 - checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" 1307 + checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" 1320 1308 1321 1309 [[package]] 1322 1310 name = "lock_api" ··· 1324 1324 1325 1325 [[package]] 1326 1326 name = "log" 1327 - version = "0.4.19" 1327 + version = "0.4.20" 1328 1328 source = "registry+https://github.com/rust-lang/crates.io-index" 1329 - checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" 1329 + checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1330 1330 1331 1331 [[package]] 1332 1332 name = "matchers" ··· 1345 1345 1346 1346 [[package]] 1347 1347 name = "memchr" 1348 - version = "2.5.0" 1348 + version = "2.6.2" 1349 1349 source = "registry+https://github.com/rust-lang/crates.io-index" 1350 - checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1350 + checksum = "5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e" 1351 1351 1352 1352 [[package]] 1353 1353 name = "memoffset" ··· 1360 1360 1361 1361 [[package]] 1362 1362 name = "mimalloc" 1363 - version = "0.1.37" 1363 + version = "0.1.38" 1364 1364 source = "registry+https://github.com/rust-lang/crates.io-index" 1365 - checksum = "4e2894987a3459f3ffb755608bd82188f8ed00d0ae077f1edea29c068d639d98" 1365 + checksum = "972e5f23f6716f62665760b0f4cbf592576a80c7b879ba9beaafc0e558894127" 1366 1366 dependencies = [ 1367 1367 "libmimalloc-sys", 1368 1368 ] ··· 1414 1414 1415 1415 [[package]] 1416 1416 name = "nix" 1417 - version = "0.26.2" 1417 + version = "0.26.4" 1418 1418 source = "registry+https://github.com/rust-lang/crates.io-index" 1419 - checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" 1419 + checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 1420 1420 dependencies = [ 1421 1421 "bitflags 1.3.2", 1422 1422 "cfg-if", 1423 1423 "libc", 1424 - "static_assertions", 1425 1424 ] 1426 1425 1427 1426 [[package]] ··· 1463 1464 1464 1465 [[package]] 1465 1466 name = "num-bigint" 1466 - version = "0.4.3" 1467 + version = "0.4.4" 1467 1468 source = "registry+https://github.com/rust-lang/crates.io-index" 1468 - checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" 1469 + checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" 1469 1470 dependencies = [ 1470 1471 "autocfg", 1471 1472 "num-integer", ··· 1484 1485 1485 1486 [[package]] 1486 1487 name = "num-traits" 1487 - version = "0.2.15" 1488 + version = "0.2.16" 1488 1489 source = "registry+https://github.com/rust-lang/crates.io-index" 1489 - checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1490 + checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" 1490 1491 dependencies = [ 1491 1492 "autocfg", 1492 1493 ] ··· 1535 1536 ] 1536 1537 1537 1538 [[package]] 1538 - name = "output_vt100" 1539 - version = "0.1.3" 1540 - source = "registry+https://github.com/rust-lang/crates.io-index" 1541 - checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" 1542 - dependencies = [ 1543 - "winapi", 1544 - ] 1545 - 1546 - [[package]] 1547 1539 name = "overload" 1548 1540 version = "0.1.1" 1549 1541 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1560 1570 "libc", 1561 1571 "redox_syscall 0.3.5", 1562 1572 "smallvec", 1563 - "windows-targets 0.48.1", 1573 + "windows-targets 0.48.5", 1564 1574 ] 1565 1575 1566 1576 [[package]] 1567 1577 name = "paste" 1568 - version = "1.0.13" 1578 + version = "1.0.14" 1569 1579 source = "registry+https://github.com/rust-lang/crates.io-index" 1570 - checksum = "b4b27ab7be369122c218afc2079489cdcb4b517c0a3fc386ff11e1fedfcc2b35" 1580 + checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 1571 1581 1572 1582 [[package]] 1573 1583 name = "path-absolutize" ··· 1656 1666 1657 1667 [[package]] 1658 1668 name = "petgraph" 1659 - version = "0.6.3" 1669 + version = "0.6.4" 1660 1670 source = "registry+https://github.com/rust-lang/crates.io-index" 1661 - checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" 1671 + checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" 1662 1672 dependencies = [ 1663 1673 "fixedbitset", 1664 - "indexmap 1.9.3", 1674 + "indexmap 2.0.0", 1665 1675 ] 1666 1676 1667 1677 [[package]] ··· 1713 1723 1714 1724 [[package]] 1715 1725 name = "pin-project-lite" 1716 - version = "0.2.10" 1726 + version = "0.2.13" 1717 1727 source = "registry+https://github.com/rust-lang/crates.io-index" 1718 - checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" 1728 + checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 1719 1729 1720 1730 [[package]] 1721 1731 name = "plotters" ··· 1758 1768 1759 1769 [[package]] 1760 1770 name = "portable-atomic" 1761 - version = "1.3.3" 1771 + version = "1.4.3" 1762 1772 source = "registry+https://github.com/rust-lang/crates.io-index" 1763 - checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" 1773 + checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" 1764 1774 1765 1775 [[package]] 1766 1776 name = "ppv-lite86" ··· 1804 1814 1805 1815 [[package]] 1806 1816 name = "pretty_assertions" 1807 - version = "1.3.0" 1817 + version = "1.4.0" 1808 1818 source = "registry+https://github.com/rust-lang/crates.io-index" 1809 - checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" 1819 + checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" 1810 1820 dependencies = [ 1811 - "ctor", 1812 1821 "diff", 1813 - "output_vt100", 1814 1822 "yansi", 1815 1823 ] 1816 1824 ··· 1838 1850 1839 1851 [[package]] 1840 1852 name = "proc-macro2" 1841 - version = "1.0.63" 1853 + version = "1.0.66" 1842 1854 source = "registry+https://github.com/rust-lang/crates.io-index" 1843 - checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" 1855 + checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" 1844 1856 dependencies = [ 1845 1857 "unicode-ident", 1846 1858 ] ··· 1860 1872 1861 1873 [[package]] 1862 1874 name = "quick-junit" 1863 - version = "0.3.2" 1875 + version = "0.3.3" 1864 1876 source = "registry+https://github.com/rust-lang/crates.io-index" 1865 - checksum = "05b909fe9bf2abb1e3d6a97c9189a37c8105c61d03dca9ce6aace023e7d682bd" 1877 + checksum = "6bf780b59d590c25f8c59b44c124166a2a93587868b619fb8f5b47fb15e9ed6d" 1866 1878 dependencies = [ 1867 1879 "chrono", 1868 - "indexmap 1.9.3", 1880 + "indexmap 2.0.0", 1869 1881 "nextest-workspace-hack", 1870 1882 "quick-xml", 1871 1883 "thiserror", ··· 1874 1886 1875 1887 [[package]] 1876 1888 name = "quick-xml" 1877 - version = "0.26.0" 1889 + version = "0.29.0" 1878 1890 source = "registry+https://github.com/rust-lang/crates.io-index" 1879 - checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" 1891 + checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51" 1880 1892 dependencies = [ 1881 1893 "memchr", 1882 1894 ] 1883 1895 1884 1896 [[package]] 1885 1897 name = "quote" 1886 - version = "1.0.29" 1898 + version = "1.0.33" 1887 1899 source = "registry+https://github.com/rust-lang/crates.io-index" 1888 - checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" 1900 + checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 1889 1901 dependencies = [ 1890 1902 "proc-macro2", 1891 1903 ] ··· 1973 1985 1974 1986 [[package]] 1975 1987 name = "regex" 1976 - version = "1.9.0" 1988 + version = "1.9.4" 1977 1989 source = "registry+https://github.com/rust-lang/crates.io-index" 1978 - checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484" 1990 + checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" 1979 1991 dependencies = [ 1980 - "aho-corasick 1.0.2", 1992 + "aho-corasick", 1981 1993 "memchr", 1982 - "regex-automata 0.3.0", 1983 - "regex-syntax 0.7.3", 1994 + "regex-automata 0.3.7", 1995 + "regex-syntax 0.7.5", 1984 1996 ] 1985 1997 1986 1998 [[package]] ··· 1994 2006 1995 2007 [[package]] 1996 2008 name = "regex-automata" 1997 - version = "0.3.0" 2009 + version = "0.3.7" 1998 2010 source = "registry+https://github.com/rust-lang/crates.io-index" 1999 - checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56" 2011 + checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" 2000 2012 dependencies = [ 2001 - "aho-corasick 1.0.2", 2013 + "aho-corasick", 2002 2014 "memchr", 2003 - "regex-syntax 0.7.3", 2015 + "regex-syntax 0.7.5", 2004 2016 ] 2005 2017 2006 2018 [[package]] ··· 2011 2023 2012 2024 [[package]] 2013 2025 name = "regex-syntax" 2014 - version = "0.7.3" 2026 + version = "0.7.5" 2015 2027 source = "registry+https://github.com/rust-lang/crates.io-index" 2016 - checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" 2028 + checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" 2017 2029 2018 2030 [[package]] 2019 2031 name = "result-like" ··· 2054 2066 2055 2067 [[package]] 2056 2068 name = "ruff" 2057 - version = "0.0.286" 2069 + version = "0.0.287" 2058 2070 dependencies = [ 2059 2071 "annotate-snippets 0.9.1", 2060 2072 "anyhow", 2061 - "bitflags 2.3.3", 2073 + "bitflags 2.4.0", 2062 2074 "chrono", 2063 2075 "clap", 2064 2076 "colored", 2065 - "dirs 5.0.1", 2066 2077 "fern", 2067 2078 "glob", 2068 2079 "globset", 2069 - "ignore", 2070 2080 "imperative", 2071 2081 "insta", 2072 2082 "is-macro", ··· 2088 2102 "ruff_diagnostics", 2089 2103 "ruff_index", 2090 2104 "ruff_macros", 2105 + "ruff_notebook", 2091 2106 "ruff_python_ast", 2092 2107 "ruff_python_codegen", 2093 2108 "ruff_python_index", ··· 2104 2117 "semver", 2105 2118 "serde", 2106 2119 "serde_json", 2107 - "serde_with", 2108 - "shellexpand", 2109 2120 "similar", 2110 2121 "smallvec", 2111 2122 "strum", ··· 2115 2130 "typed-arena", 2116 2131 "unicode-width", 2117 2132 "unicode_names2", 2118 - "uuid", 2119 2133 "wsl", 2120 2134 ] 2121 2135 ··· 2122 2138 name = "ruff_benchmark" 2123 2139 version = "0.0.0" 2124 2140 dependencies = [ 2141 + "codspeed-criterion-compat", 2125 2142 "criterion", 2126 2143 "mimalloc", 2127 2144 "once_cell", ··· 2152 2167 2153 2168 [[package]] 2154 2169 name = "ruff_cli" 2155 - version = "0.0.286" 2170 + version = "0.0.287" 2156 2171 dependencies = [ 2157 2172 "annotate-snippets 0.9.1", 2158 2173 "anyhow", 2159 2174 "argfile", 2160 2175 "assert_cmd", 2161 2176 "bincode", 2162 - "bitflags 2.3.3", 2177 + "bitflags 2.4.0", 2163 2178 "cachedir", 2164 2179 "chrono", 2165 2180 "clap", ··· 2170 2185 "glob", 2171 2186 "ignore", 2172 2187 "insta", 2188 + "is-macro", 2173 2189 "itertools", 2174 2190 "itoa", 2175 2191 "log", ··· 2182 2196 "ruff", 2183 2197 "ruff_cache", 2184 2198 "ruff_diagnostics", 2199 + "ruff_formatter", 2185 2200 "ruff_macros", 2201 + "ruff_notebook", 2186 2202 "ruff_python_ast", 2187 2203 "ruff_python_formatter", 2188 2204 "ruff_python_stdlib", 2189 2205 "ruff_python_trivia", 2190 2206 "ruff_source_file", 2191 2207 "ruff_text_size", 2208 + "ruff_workspace", 2192 2209 "rustc-hash", 2193 2210 "serde", 2194 2211 "serde_json", ··· 2199 2210 "similar", 2200 2211 "strum", 2201 2212 "tempfile", 2213 + "thiserror", 2202 2214 "tikv-jemallocator", 2215 + "tracing", 2203 2216 "ureq", 2204 2217 "walkdir", 2205 2218 "wild", ··· 2227 2236 "ruff_cli", 2228 2237 "ruff_diagnostics", 2229 2238 "ruff_formatter", 2239 + "ruff_notebook", 2230 2240 "ruff_python_ast", 2231 2241 "ruff_python_codegen", 2232 2242 "ruff_python_formatter", ··· 2235 2243 "ruff_python_parser", 2236 2244 "ruff_python_stdlib", 2237 2245 "ruff_python_trivia", 2246 + "ruff_workspace", 2238 2247 "schemars", 2239 2248 "serde", 2240 2249 "serde_json", ··· 2290 2297 "proc-macro2", 2291 2298 "quote", 2292 2299 "ruff_python_trivia", 2293 - "syn 2.0.23", 2300 + "syn 2.0.29", 2301 + ] 2302 + 2303 + [[package]] 2304 + name = "ruff_notebook" 2305 + version = "0.0.0" 2306 + dependencies = [ 2307 + "anyhow", 2308 + "insta", 2309 + "itertools", 2310 + "once_cell", 2311 + "ruff_diagnostics", 2312 + "ruff_source_file", 2313 + "ruff_text_size", 2314 + "serde", 2315 + "serde_json", 2316 + "serde_with", 2317 + "test-case", 2318 + "thiserror", 2319 + "uuid", 2294 2320 ] 2295 2321 2296 2322 [[package]] 2297 2323 name = "ruff_python_ast" 2298 2324 version = "0.0.0" 2299 2325 dependencies = [ 2300 - "bitflags 2.3.3", 2326 + "bitflags 2.4.0", 2301 2327 "insta", 2302 2328 "is-macro", 2303 2329 "memchr", ··· 2349 2337 version = "0.0.0" 2350 2338 dependencies = [ 2351 2339 "anyhow", 2352 - "bitflags 2.3.3", 2340 + "bitflags 2.4.0", 2353 2341 "clap", 2354 2342 "countme", 2355 2343 "insta", ··· 2389 2377 name = "ruff_python_literal" 2390 2378 version = "0.0.0" 2391 2379 dependencies = [ 2392 - "bitflags 2.3.3", 2380 + "bitflags 2.4.0", 2393 2381 "hexf-parse", 2394 2382 "is-macro", 2395 2383 "itertools", ··· 2436 2424 name = "ruff_python_semantic" 2437 2425 version = "0.0.0" 2438 2426 dependencies = [ 2439 - "bitflags 2.3.3", 2427 + "bitflags 2.4.0", 2440 2428 "is-macro", 2441 2429 "num-traits", 2442 2430 "ruff_index", ··· 2514 2502 "log", 2515 2503 "ruff", 2516 2504 "ruff_diagnostics", 2505 + "ruff_formatter", 2517 2506 "ruff_python_ast", 2518 2507 "ruff_python_codegen", 2519 2508 "ruff_python_formatter", 2520 2509 "ruff_python_index", 2521 2510 "ruff_python_parser", 2522 2511 "ruff_source_file", 2512 + "ruff_text_size", 2513 + "ruff_workspace", 2523 2514 "serde", 2524 2515 "serde-wasm-bindgen", 2525 2516 "wasm-bindgen", 2526 2517 "wasm-bindgen-test", 2518 + ] 2519 + 2520 + [[package]] 2521 + name = "ruff_workspace" 2522 + version = "0.0.0" 2523 + dependencies = [ 2524 + "anyhow", 2525 + "colored", 2526 + "dirs 5.0.1", 2527 + "glob", 2528 + "globset", 2529 + "ignore", 2530 + "itertools", 2531 + "log", 2532 + "path-absolutize", 2533 + "pep440_rs", 2534 + "regex", 2535 + "ruff", 2536 + "ruff_cache", 2537 + "ruff_macros", 2538 + "rustc-hash", 2539 + "schemars", 2540 + "serde", 2541 + "shellexpand", 2542 + "strum", 2543 + "tempfile", 2544 + "toml", 2527 2545 ] 2528 2546 2529 2547 [[package]] ··· 2574 2532 2575 2533 [[package]] 2576 2534 name = "rustix" 2577 - version = "0.37.23" 2535 + version = "0.38.10" 2578 2536 source = "registry+https://github.com/rust-lang/crates.io-index" 2579 - checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" 2537 + checksum = "ed6248e1caa625eb708e266e06159f135e8c26f2bb7ceb72dc4b2766d0340964" 2580 2538 dependencies = [ 2581 - "bitflags 1.3.2", 2582 - "errno", 2583 - "io-lifetimes", 2584 - "libc", 2585 - "linux-raw-sys 0.3.8", 2586 - "windows-sys 0.48.0", 2587 - ] 2588 - 2589 - [[package]] 2590 - name = "rustix" 2591 - version = "0.38.3" 2592 - source = "registry+https://github.com/rust-lang/crates.io-index" 2593 - checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4" 2594 - dependencies = [ 2595 - "bitflags 2.3.3", 2539 + "bitflags 2.4.0", 2596 2540 "errno", 2597 2541 "libc", 2598 - "linux-raw-sys 0.4.3", 2542 + "linux-raw-sys", 2599 2543 "windows-sys 0.48.0", 2600 2544 ] 2601 2545 2602 2546 [[package]] 2603 2547 name = "rustls" 2604 - version = "0.21.2" 2548 + version = "0.21.7" 2605 2549 source = "registry+https://github.com/rust-lang/crates.io-index" 2606 - checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" 2550 + checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" 2607 2551 dependencies = [ 2608 2552 "log", 2609 2553 "ring", 2610 - "rustls-webpki", 2554 + "rustls-webpki 0.101.4", 2611 2555 "sct", 2612 2556 ] 2613 2557 2614 2558 [[package]] 2615 2559 name = "rustls-webpki" 2616 - version = "0.100.1" 2560 + version = "0.100.2" 2617 2561 source = "registry+https://github.com/rust-lang/crates.io-index" 2618 - checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" 2562 + checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" 2563 + dependencies = [ 2564 + "ring", 2565 + "untrusted", 2566 + ] 2567 + 2568 + [[package]] 2569 + name = "rustls-webpki" 2570 + version = "0.101.4" 2571 + source = "registry+https://github.com/rust-lang/crates.io-index" 2572 + checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" 2619 2573 dependencies = [ 2620 2574 "ring", 2621 2575 "untrusted", ··· 2619 2581 2620 2582 [[package]] 2621 2583 name = "rustversion" 2622 - version = "1.0.13" 2584 + version = "1.0.14" 2623 2585 source = "registry+https://github.com/rust-lang/crates.io-index" 2624 - checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f" 2586 + checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 2625 2587 2626 2588 [[package]] 2627 2589 name = "ryu" 2628 - version = "1.0.14" 2590 + version = "1.0.15" 2629 2591 source = "registry+https://github.com/rust-lang/crates.io-index" 2630 - checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9" 2592 + checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 2631 2593 2632 2594 [[package]] 2633 2595 name = "same-file" ··· 2640 2602 2641 2603 [[package]] 2642 2604 name = "schemars" 2643 - version = "0.8.12" 2605 + version = "0.8.13" 2644 2606 source = "registry+https://github.com/rust-lang/crates.io-index" 2645 - checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" 2607 + checksum = "763f8cd0d4c71ed8389c90cb8100cba87e763bd01a8e614d4f0af97bcd50a161" 2646 2608 dependencies = [ 2647 2609 "dyn-clone", 2648 2610 "schemars_derive", ··· 2652 2614 2653 2615 [[package]] 2654 2616 name = "schemars_derive" 2655 - version = "0.8.12" 2617 + version = "0.8.13" 2656 2618 source = "registry+https://github.com/rust-lang/crates.io-index" 2657 - checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" 2619 + checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737" 2658 2620 dependencies = [ 2659 2621 "proc-macro2", 2660 2622 "quote", ··· 2670 2632 2671 2633 [[package]] 2672 2634 name = "scopeguard" 2673 - version = "1.1.0" 2635 + version = "1.2.0" 2674 2636 source = "registry+https://github.com/rust-lang/crates.io-index" 2675 - checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2637 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2676 2638 2677 2639 [[package]] 2678 2640 name = "sct" ··· 2686 2648 2687 2649 [[package]] 2688 2650 name = "semver" 2689 - version = "1.0.17" 2651 + version = "1.0.18" 2690 2652 source = "registry+https://github.com/rust-lang/crates.io-index" 2691 - checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" 2653 + checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" 2692 2654 2693 2655 [[package]] 2694 2656 name = "serde" 2695 - version = "1.0.166" 2657 + version = "1.0.188" 2696 2658 source = "registry+https://github.com/rust-lang/crates.io-index" 2697 - checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" 2659 + checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" 2698 2660 dependencies = [ 2699 2661 "serde_derive", 2700 2662 ] ··· 2712 2674 2713 2675 [[package]] 2714 2676 name = "serde_derive" 2715 - version = "1.0.166" 2677 + version = "1.0.188" 2716 2678 source = "registry+https://github.com/rust-lang/crates.io-index" 2717 - checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" 2679 + checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" 2718 2680 dependencies = [ 2719 2681 "proc-macro2", 2720 2682 "quote", 2721 - "syn 2.0.23", 2683 + "syn 2.0.29", 2722 2684 ] 2723 2685 2724 2686 [[package]] ··· 2734 2696 2735 2697 [[package]] 2736 2698 name = "serde_json" 2737 - version = "1.0.100" 2699 + version = "1.0.105" 2738 2700 source = "registry+https://github.com/rust-lang/crates.io-index" 2739 - checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" 2701 + checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" 2740 2702 dependencies = [ 2741 2703 "itoa", 2742 2704 "ryu", ··· 2763 2725 2764 2726 [[package]] 2765 2727 name = "serde_with" 2766 - version = "3.0.0" 2728 + version = "3.3.0" 2767 2729 source = "registry+https://github.com/rust-lang/crates.io-index" 2768 - checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" 2730 + checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" 2769 2731 dependencies = [ 2770 2732 "base64", 2771 2733 "chrono", 2772 2734 "hex", 2773 2735 "indexmap 1.9.3", 2736 + "indexmap 2.0.0", 2774 2737 "serde", 2775 2738 "serde_json", 2776 2739 "serde_with_macros", 2777 - "time 0.3.22", 2740 + "time 0.3.28", 2778 2741 ] 2779 2742 2780 2743 [[package]] 2781 2744 name = "serde_with_macros" 2782 - version = "3.0.0" 2745 + version = "3.3.0" 2783 2746 source = "registry+https://github.com/rust-lang/crates.io-index" 2784 - checksum = "edc7d5d3932fb12ce722ee5e64dd38c504efba37567f0c402f6ca728c3b8b070" 2747 + checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" 2785 2748 dependencies = [ 2786 2749 "darling", 2787 2750 "proc-macro2", 2788 2751 "quote", 2789 - "syn 2.0.23", 2752 + "syn 2.0.29", 2790 2753 ] 2791 2754 2792 2755 [[package]] ··· 2822 2783 2823 2784 [[package]] 2824 2785 name = "siphasher" 2825 - version = "0.3.10" 2786 + version = "0.3.11" 2826 2787 source = "registry+https://github.com/rust-lang/crates.io-index" 2827 - checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" 2788 + checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 2828 2789 2829 2790 [[package]] 2830 2791 name = "smallvec" 2831 - version = "1.10.0" 2792 + version = "1.11.0" 2832 2793 source = "registry+https://github.com/rust-lang/crates.io-index" 2833 - checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 2794 + checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" 2834 2795 2835 2796 [[package]] 2836 2797 name = "spin" ··· 2898 2859 2899 2860 [[package]] 2900 2861 name = "syn" 2901 - version = "2.0.23" 2862 + version = "2.0.29" 2902 2863 source = "registry+https://github.com/rust-lang/crates.io-index" 2903 - checksum = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737" 2864 + checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" 2904 2865 dependencies = [ 2905 2866 "proc-macro2", 2906 2867 "quote", ··· 2918 2879 2919 2880 [[package]] 2920 2881 name = "tempfile" 2921 - version = "3.6.0" 2882 + version = "3.8.0" 2922 2883 source = "registry+https://github.com/rust-lang/crates.io-index" 2923 - checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" 2884 + checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" 2924 2885 dependencies = [ 2925 - "autocfg", 2926 2886 "cfg-if", 2927 2887 "fastrand", 2928 2888 "redox_syscall 0.3.5", 2929 - "rustix 0.37.23", 2889 + "rustix", 2930 2890 "windows-sys 0.48.0", 2931 2891 ] 2932 2892 ··· 3005 2967 3006 2968 [[package]] 3007 2969 name = "thiserror" 3008 - version = "1.0.43" 2970 + version = "1.0.47" 3009 2971 source = "registry+https://github.com/rust-lang/crates.io-index" 3010 - checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" 2972 + checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" 3011 2973 dependencies = [ 3012 2974 "thiserror-impl", 3013 2975 ] 3014 2976 3015 2977 [[package]] 3016 2978 name = "thiserror-impl" 3017 - version = "1.0.43" 2979 + version = "1.0.47" 3018 2980 source = "registry+https://github.com/rust-lang/crates.io-index" 3019 - checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" 2981 + checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" 3020 2982 dependencies = [ 3021 2983 "proc-macro2", 3022 2984 "quote", 3023 - "syn 2.0.23", 2985 + "syn 2.0.29", 3024 2986 ] 3025 2987 3026 2988 [[package]] ··· 3035 2997 3036 2998 [[package]] 3037 2999 name = "tikv-jemalloc-sys" 3038 - version = "0.5.3+5.3.0-patched" 3000 + version = "0.5.4+5.3.0-patched" 3039 3001 source = "registry+https://github.com/rust-lang/crates.io-index" 3040 - checksum = "a678df20055b43e57ef8cddde41cdfda9a3c1a060b67f4c5836dfb1d78543ba8" 3002 + checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1" 3041 3003 dependencies = [ 3042 3004 "cc", 3043 3005 "libc", ··· 3045 3007 3046 3008 [[package]] 3047 3009 name = "tikv-jemallocator" 3048 - version = "0.5.0" 3010 + version = "0.5.4" 3049 3011 source = "registry+https://github.com/rust-lang/crates.io-index" 3050 - checksum = "20612db8a13a6c06d57ec83953694185a367e16945f66565e8028d2c0bd76979" 3012 + checksum = "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca" 3051 3013 dependencies = [ 3052 3014 "libc", 3053 3015 "tikv-jemalloc-sys", ··· 3066 3028 3067 3029 [[package]] 3068 3030 name = "time" 3069 - version = "0.3.22" 3031 + version = "0.3.28" 3070 3032 source = "registry+https://github.com/rust-lang/crates.io-index" 3071 - checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" 3033 + checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" 3072 3034 dependencies = [ 3035 + "deranged", 3073 3036 "itoa", 3074 3037 "serde", 3075 3038 "time-core", ··· 3085 3046 3086 3047 [[package]] 3087 3048 name = "time-macros" 3088 - version = "0.2.9" 3049 + version = "0.2.14" 3089 3050 source = "registry+https://github.com/rust-lang/crates.io-index" 3090 - checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" 3051 + checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" 3091 3052 dependencies = [ 3092 3053 "time-core", 3093 3054 ] ··· 3128 3089 3129 3090 [[package]] 3130 3091 name = "toml" 3131 - version = "0.7.5" 3092 + version = "0.7.6" 3132 3093 source = "registry+https://github.com/rust-lang/crates.io-index" 3133 - checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" 3094 + checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" 3134 3095 dependencies = [ 3135 3096 "serde", 3136 3097 "serde_spanned", ··· 3149 3110 3150 3111 [[package]] 3151 3112 name = "toml_edit" 3152 - version = "0.19.11" 3113 + version = "0.19.14" 3153 3114 source = "registry+https://github.com/rust-lang/crates.io-index" 3154 - checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" 3115 + checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" 3155 3116 dependencies = [ 3156 3117 "indexmap 2.0.0", 3157 3118 "serde", ··· 3181 3142 dependencies = [ 3182 3143 "proc-macro2", 3183 3144 "quote", 3184 - "syn 2.0.23", 3145 + "syn 2.0.29", 3185 3146 ] 3186 3147 3187 3148 [[package]] ··· 3196 3157 3197 3158 [[package]] 3198 3159 name = "tracing-indicatif" 3199 - version = "0.3.4" 3160 + version = "0.3.5" 3200 3161 source = "registry+https://github.com/rust-lang/crates.io-index" 3201 - checksum = "b38ed3722d27705c3bd7ca0ccf29acc3d8e1c717b4cd87f97891a2c1834ea1af" 3162 + checksum = "57e05fe4a1c906d94b275d8aeb8ff8b9deaca502aeb59ae8ab500a92b8032ac8" 3202 3163 dependencies = [ 3203 3164 "indicatif", 3204 3165 "tracing", ··· 3313 3274 3314 3275 [[package]] 3315 3276 name = "unicode-ident" 3316 - version = "1.0.10" 3277 + version = "1.0.11" 3317 3278 source = "registry+https://github.com/rust-lang/crates.io-index" 3318 - checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" 3279 + checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" 3319 3280 3320 3281 [[package]] 3321 3282 name = "unicode-normalization" ··· 3363 3324 "log", 3364 3325 "once_cell", 3365 3326 "rustls", 3366 - "rustls-webpki", 3327 + "rustls-webpki 0.100.2", 3367 3328 "url", 3368 3329 "webpki-roots", 3369 3330 ] 3370 3331 3371 3332 [[package]] 3372 3333 name = "url" 3373 - version = "2.4.0" 3334 + version = "2.4.1" 3374 3335 source = "registry+https://github.com/rust-lang/crates.io-index" 3375 - checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" 3336 + checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" 3376 3337 dependencies = [ 3377 3338 "form_urlencoded", 3378 3339 "idna", ··· 3406 3367 dependencies = [ 3407 3368 "proc-macro2", 3408 3369 "quote", 3409 - "syn 2.0.23", 3370 + "syn 2.0.29", 3410 3371 ] 3411 3372 3412 3373 [[package]] ··· 3506 3467 "once_cell", 3507 3468 "proc-macro2", 3508 3469 "quote", 3509 - "syn 2.0.23", 3470 + "syn 2.0.29", 3510 3471 "wasm-bindgen-shared", 3511 3472 ] 3512 3473 ··· 3540 3501 dependencies = [ 3541 3502 "proc-macro2", 3542 3503 "quote", 3543 - "syn 2.0.23", 3504 + "syn 2.0.29", 3544 3505 "wasm-bindgen-backend", 3545 3506 "wasm-bindgen-shared", 3546 3507 ] ··· 3591 3552 source = "registry+https://github.com/rust-lang/crates.io-index" 3592 3553 checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" 3593 3554 dependencies = [ 3594 - "rustls-webpki", 3555 + "rustls-webpki 0.100.2", 3595 3556 ] 3596 3557 3597 3558 [[package]] ··· 3651 3612 source = "registry+https://github.com/rust-lang/crates.io-index" 3652 3613 checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 3653 3614 dependencies = [ 3654 - "windows-targets 0.48.1", 3615 + "windows-targets 0.48.5", 3655 3616 ] 3656 3617 3657 3618 [[package]] ··· 3669 3630 source = "registry+https://github.com/rust-lang/crates.io-index" 3670 3631 checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3671 3632 dependencies = [ 3672 - "windows-targets 0.48.1", 3633 + "windows-targets 0.48.5", 3673 3634 ] 3674 3635 3675 3636 [[package]] ··· 3689 3650 3690 3651 [[package]] 3691 3652 name = "windows-targets" 3692 - version = "0.48.1" 3653 + version = "0.48.5" 3693 3654 source = "registry+https://github.com/rust-lang/crates.io-index" 3694 - checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" 3655 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3695 3656 dependencies = [ 3696 - "windows_aarch64_gnullvm 0.48.0", 3697 - "windows_aarch64_msvc 0.48.0", 3698 - "windows_i686_gnu 0.48.0", 3699 - "windows_i686_msvc 0.48.0", 3700 - "windows_x86_64_gnu 0.48.0", 3701 - "windows_x86_64_gnullvm 0.48.0", 3702 - "windows_x86_64_msvc 0.48.0", 3657 + "windows_aarch64_gnullvm 0.48.5", 3658 + "windows_aarch64_msvc 0.48.5", 3659 + "windows_i686_gnu 0.48.5", 3660 + "windows_i686_msvc 0.48.5", 3661 + "windows_x86_64_gnu 0.48.5", 3662 + "windows_x86_64_gnullvm 0.48.5", 3663 + "windows_x86_64_msvc 0.48.5", 3703 3664 ] 3704 3665 3705 3666 [[package]] ··· 3710 3671 3711 3672 [[package]] 3712 3673 name = "windows_aarch64_gnullvm" 3713 - version = "0.48.0" 3674 + version = "0.48.5" 3714 3675 source = "registry+https://github.com/rust-lang/crates.io-index" 3715 - checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 3676 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3716 3677 3717 3678 [[package]] 3718 3679 name = "windows_aarch64_msvc" ··· 3722 3683 3723 3684 [[package]] 3724 3685 name = "windows_aarch64_msvc" 3725 - version = "0.48.0" 3686 + version = "0.48.5" 3726 3687 source = "registry+https://github.com/rust-lang/crates.io-index" 3727 - checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 3688 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3728 3689 3729 3690 [[package]] 3730 3691 name = "windows_i686_gnu" ··· 3734 3695 3735 3696 [[package]] 3736 3697 name = "windows_i686_gnu" 3737 - version = "0.48.0" 3698 + version = "0.48.5" 3738 3699 source = "registry+https://github.com/rust-lang/crates.io-index" 3739 - checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 3700 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3740 3701 3741 3702 [[package]] 3742 3703 name = "windows_i686_msvc" ··· 3746 3707 3747 3708 [[package]] 3748 3709 name = "windows_i686_msvc" 3749 - version = "0.48.0" 3710 + version = "0.48.5" 3750 3711 source = "registry+https://github.com/rust-lang/crates.io-index" 3751 - checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 3712 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3752 3713 3753 3714 [[package]] 3754 3715 name = "windows_x86_64_gnu" ··· 3758 3719 3759 3720 [[package]] 3760 3721 name = "windows_x86_64_gnu" 3761 - version = "0.48.0" 3722 + version = "0.48.5" 3762 3723 source = "registry+https://github.com/rust-lang/crates.io-index" 3763 - checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 3724 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3764 3725 3765 3726 [[package]] 3766 3727 name = "windows_x86_64_gnullvm" ··· 3770 3731 3771 3732 [[package]] 3772 3733 name = "windows_x86_64_gnullvm" 3773 - version = "0.48.0" 3734 + version = "0.48.5" 3774 3735 source = "registry+https://github.com/rust-lang/crates.io-index" 3775 - checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 3736 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3776 3737 3777 3738 [[package]] 3778 3739 name = "windows_x86_64_msvc" ··· 3782 3743 3783 3744 [[package]] 3784 3745 name = "windows_x86_64_msvc" 3785 - version = "0.48.0" 3746 + version = "0.48.5" 3786 3747 source = "registry+https://github.com/rust-lang/crates.io-index" 3787 - checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 3748 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3788 3749 3789 3750 [[package]] 3790 3751 name = "winnow" 3791 - version = "0.4.7" 3752 + version = "0.5.15" 3792 3753 source = "registry+https://github.com/rust-lang/crates.io-index" 3793 - checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" 3754 + checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" 3794 3755 dependencies = [ 3795 3756 "memchr", 3796 3757 ]
+2 -2
pkgs/development/tools/ruff/default.nix
··· 10 10 11 11 rustPlatform.buildRustPackage rec { 12 12 pname = "ruff"; 13 - version = "0.0.286"; 13 + version = "0.0.287"; 14 14 15 15 src = fetchFromGitHub { 16 16 owner = "astral-sh"; 17 17 repo = pname; 18 18 rev = "v${version}"; 19 - hash = "sha256-5bMfOju1uJV4+a4UTzaanpzU6PjCSK9HHMdhvKVaNcg="; 19 + hash = "sha256-T7PuhQnb7Ae9mYdaxDBltJWx5ODTscvEP3LcSEcSuLo="; 20 20 }; 21 21 22 22 cargoLock = {
+8 -3
pkgs/development/tools/swc/default.nix
··· 5 5 6 6 rustPlatform.buildRustPackage rec { 7 7 pname = "swc"; 8 - version = "0.91.19"; 8 + version = "0.91.67"; 9 + 10 + env = { 11 + # swc depends on nightly features 12 + RUSTC_BOOTSTRAP = 1; 13 + }; 9 14 10 15 src = fetchCrate { 11 16 pname = "swc_cli"; 12 17 inherit version; 13 - sha256 = "sha256-BzReetAOKSGzHhITXpm+J2Rz8d9Hq2HUagQmfst74Ag="; 18 + sha256 = "sha256-ibNrdMxb1A/QwtK/J/2tbqCxpWssTeFSXrO8oEeEoDA="; 14 19 }; 15 20 16 - cargoSha256 = "sha256-1U9YLrPYENv9iJobCxtgnQakJLDctWQwnDUtpLG3PGc="; 21 + cargoSha256 = "sha256-puECB7/b2lKTquaDvzd19pYbmY8OeRfbA9u1xMjzl/k="; 17 22 18 23 buildFeatures = [ "swc_core/plugin_transform_host_native" ]; 19 24
+3 -3
pkgs/tools/admin/aws-sso-cli/default.nix
··· 6 6 }: 7 7 buildGoModule rec { 8 8 pname = "aws-sso-cli"; 9 - version = "1.13.0"; 9 + version = "1.13.1"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "synfinatic"; 13 13 repo = pname; 14 14 rev = "v${version}"; 15 - hash = "sha256-mINJtjSOmU6oUNIPa5Hl5fG5FqTFM8AJg9jH8WmIAHE="; 15 + hash = "sha256-QwixApaGUzTmvc9TfFk8bdMU7dxyaeUo5aWucV4tH1c="; 16 16 }; 17 - vendorHash = "sha256-skFENAr5XjdKoAyVwXYJVZH+IviqfyZmMIdgHq+7IPs="; 17 + vendorHash = "sha256-/6DCrjOqjbz+olRp7rs8ui4uUrcor0zAc0yOIz+ZcEo="; 18 18 19 19 nativeBuildInputs = [ makeWrapper ]; 20 20
+2 -2
pkgs/tools/text/base16384/default.nix
··· 6 6 7 7 stdenv.mkDerivation rec { 8 8 pname = "base16384"; 9 - version = "2.2.4"; 9 + version = "2.2.5"; 10 10 11 11 src = fetchFromGitHub { 12 12 owner = "fumiama"; 13 13 repo = pname; 14 14 rev = "v${version}"; 15 - hash = "sha256-nHr7S3UrNaR/5YGwfDUxVXqTkaT3EYzA8CaS0lWZxN0="; 15 + hash = "sha256-S9DA9C+6OJcSLJTSLRo9rolJO9yVQ0FOE7uwbvmJiGk="; 16 16 }; 17 17 18 18 nativeBuildInputs = [ cmake ];
+2
pkgs/top-level/all-packages.nix
··· 14571 14571 14572 14572 xl2tpd = callPackage ../tools/networking/xl2tpd { }; 14573 14573 14574 + xlights = callPackage ../applications/misc/xlights/default.nix { }; 14575 + 14574 14576 xe = callPackage ../tools/system/xe { }; 14575 14577 14576 14578