mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-24 17:40:37 +00:00
buildGoPackage: keep string context (#63680)
In Nix, each string has a context that it carries of where it
originated. Some functions like filterAttrs modify the context of its
args when doing comparisons. That is important because we use the
string context of “name” to get where a derivation was defined. This
causes some builtins like unsafeGetAttrPos to report incorrectly that
the string was set in lib/attrsets.nix and reporting that as the
source file. Using removeAttrs avoids this problem.
Fixes #63679
(cherry picked from commit 1f46aaab1b)
The web list of packages shows the current stable branch, so we needed
to backport this to fix that effect soonish. The change itself seems
very safe; only one rebuild is detected: `common-updater-scripts`
This commit is contained in:
committed by
Vladimír Čunát
parent
f49d8beff0
commit
d7752fc0eb
@@ -35,14 +35,12 @@
|
||||
# IE: programs coupled with the compiler
|
||||
, allowGoReference ? false
|
||||
|
||||
, meta ? {}, ... } @ args':
|
||||
, meta ? {}, ... } @ args:
|
||||
|
||||
|
||||
with builtins;
|
||||
|
||||
let
|
||||
args = lib.filterAttrs (name: _: name != "extraSrcs") args';
|
||||
|
||||
removeReferences = [ ] ++ lib.optional (!allowGoReference) go;
|
||||
|
||||
removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';
|
||||
@@ -75,7 +73,7 @@ let
|
||||
goPath = if goDeps != null then importGodeps { depsFile = goDeps; } ++ extraSrcs
|
||||
else extraSrcs;
|
||||
package = go.stdenv.mkDerivation (
|
||||
(builtins.removeAttrs args [ "goPackageAliases" "disabled" ]) // {
|
||||
(builtins.removeAttrs args [ "goPackageAliases" "disabled" "extraSrcs"]) // {
|
||||
|
||||
nativeBuildInputs = [ removeReferencesTo go ]
|
||||
++ (lib.optional (!dontRenameImports) govers) ++ nativeBuildInputs;
|
||||
|
||||
Reference in New Issue
Block a user