diff options
author | Yueh-Shun Li <shamrocklee@posteo.net> | 2024-03-26 19:22:33 +0800 |
---|---|---|
committer | Yueh-Shun Li <shamrocklee@posteo.net> | 2024-03-27 11:19:40 +0800 |
commit | c9da94beffb66d14a0a9188038dd4d1514e1ec56 (patch) | |
tree | 7273740cf1291d02d7a38607dc670ac556633a68 | |
parent | 296632ca4588308890d6e41318a905a3b2dbccf1 (diff) | |
download | nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar.gz nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar.bz2 nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar.lz nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar.xz nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.tar.zst nixlib-c9da94beffb66d14a0a9188038dd4d1514e1ec56.zip |
buildGoModule: Deprecate vendorSha256 with throw
Ignore vendorSha256 when vendorHash is specified. Throw when vendorHash isn't specified: - "buildGoModule: Expect vendorHash instead of vendorSha256" when vendorSha256 is specified. - "buildGoModule: vendorHash is missing" otherwise. `goModules.outputHashAlgo` is specified as null when vendorHash is not empty, "sha256" otherwise. Co-authored-by: zowoq <59103226+zowoq@users.noreply.github.com>
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2405.section.md | 2 | ||||
-rw-r--r-- | pkgs/build-support/go/module.nix | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 436bd5101233..3a30ab6f92ba 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -179,6 +179,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m "mysecret"` becomes `services.aria2.rpcSecretFile = "/path/to/secret_file"` where the file `secret_file` contains the string `mysecret`. +- `buildGoModule` now throws error when `vendorHash` is not specified. `vendorSha256`, deprecated in Nixpkgs 23.11, is now ignored and is no longer a `vendorHash` alias. + - Invidious has changed its default database username from `kemal` to `invidious`. Setups involving an externally provisioned database (i.e. `services.invidious.database.createLocally == false`) should adjust their configuration accordingly. The old `kemal` user will not be removed automatically even when the database is provisioned automatically.(https://github.com/NixOS/nixpkgs/pull/265857) - `writeReferencesToFile` is deprecated in favour of the new trivial build helper `writeClosure`. The latter accepts a list of paths and has an unambiguous name and cleaner implementation. diff --git a/pkgs/build-support/go/module.nix b/pkgs/build-support/go/module.nix index 153b675d48ae..ce569726297b 100644 --- a/pkgs/build-support/go/module.nix +++ b/pkgs/build-support/go/module.nix @@ -16,7 +16,12 @@ # # if vendorHash is null, then we won't fetch any dependencies and # rely on the vendor folder within the source. -, vendorHash ? args'.vendorSha256 or (throw "buildGoModule: vendorHash is missing") +, vendorHash ? throw ( + if args'?vendorSha256 then + "buildGoModule: Expect vendorHash instead of vendorSha256" + else + "buildGoModule: vendorHash is missing" + ) # Whether to delete the vendor folder supplied with the source. , deleteVendor ? false # Whether to fetch (go mod download) and proxy the vendor directory. @@ -49,7 +54,6 @@ }@args': assert goPackagePath != "" -> throw "`goPackagePath` is not needed with `buildGoModule`"; -assert (args' ? vendorHash && args' ? vendorSha256) -> throw "both `vendorHash` and `vendorSha256` set. only one can be set."; let args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "vendorHash" ]; @@ -145,7 +149,9 @@ let outputHashMode = "recursive"; outputHash = vendorHash; - outputHashAlgo = if args' ? vendorSha256 || vendorHash == "" then "sha256" else null; + # Handle empty vendorHash; avoid + # error: empty hash requires explicit hash algorithm + outputHashAlgo = if vendorHash == "" then "sha256" else null; }).overrideAttrs overrideModAttrs; package = stdenv.mkDerivation (args // { @@ -294,8 +300,7 @@ let disallowedReferences = lib.optional (!allowGoReference) go; - passthru = passthru // { inherit go goModules vendorHash; } - // lib.optionalAttrs (args' ? vendorSha256 ) { inherit (args') vendorSha256; }; + passthru = passthru // { inherit go goModules vendorHash; }; meta = { # Add default meta information @@ -303,7 +308,6 @@ let } // meta; }); in -lib.warnIf (args' ? vendorSha256) "`vendorSha256` is deprecated. Use `vendorHash` instead" lib.warnIf (buildFlags != "" || buildFlagsArray != "") "Use the `ldflags` and/or `tags` attributes instead of `buildFlags`/`buildFlagsArray`" lib.warnIf (builtins.elem "-buildid=" ldflags) "`-buildid=` is set by default as ldflag by buildGoModule" |