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
This commit is contained in:
parent
2b5ba7f723
commit
1f46aaab1b
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user