diff options
Diffstat (limited to 'nixpkgs/pkgs/development/go-modules/generic/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/go-modules/generic/default.nix | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/nixpkgs/pkgs/development/go-modules/generic/default.nix b/nixpkgs/pkgs/development/go-modules/generic/default.nix index de7bd429dab8..26d9e1e830a8 100644 --- a/nixpkgs/pkgs/development/go-modules/generic/default.nix +++ b/nixpkgs/pkgs/development/go-modules/generic/default.nix @@ -1,4 +1,4 @@ -{ go, cacert, git, lib, removeReferencesTo, stdenv, vend }: +{ go, cacert, git, lib, stdenv, vend }: let buildGoPackage = @@ -38,6 +38,9 @@ let , meta ? {} + # Not needed with buildGoModule + , goPackagePath ? null + , ... }@args': with builtins; @@ -45,15 +48,7 @@ let let args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "disabled" ]; - removeReferences = [ ] ++ lib.optional (!allowGoReference) go; - - removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; - - deleteFlag = if deleteVendor then "true" else "false"; - - vendCommand = if runVend then "${vend}/bin/vend" else "false"; - - go-modules = if vendorSha256 != null then go.stdenv.mkDerivation (let modArgs = { + go-modules = if vendorSha256 != null then stdenv.mkDerivation (let modArgs = { name = "${name}-go-modules"; @@ -83,27 +78,26 @@ let buildPhase = args.modBuildPhase or '' runHook preBuild - - if [ ${deleteFlag} == "true" ]; then - if [ ! -d vendor ]; then - echo "vendor folder does not exist, 'deleteVendor' is not needed" - exit 10 - else - rm -rf vendor - fi + '' + lib.optionalString (deleteVendor == true) '' + if [ ! -d vendor ]; then + echo "vendor folder does not exist, 'deleteVendor' is not needed" + exit 10 + else + rm -rf vendor fi - + '' + '' if [ -d vendor ]; then echo "vendor folder exists, please set 'vendorSha256 = null;' in your expression" exit 10 fi - if [ ${vendCommand} != "false" ]; then - echo running vend to rewrite vendor folder - ${vendCommand} - else - go mod vendor - fi + ${if runVend then '' + echo "running 'vend' to rewrite vendor folder" + ${vend}/bin/vend + '' else '' + go mod vendor + ''} + mkdir -p vendor runHook postBuild @@ -127,13 +121,13 @@ let } ) // overrideModAttrs modArgs) else ""; - package = go.stdenv.mkDerivation (args // { - nativeBuildInputs = [ removeReferencesTo go ] ++ nativeBuildInputs; + package = stdenv.mkDerivation (args // { + nativeBuildInputs = [ go ] ++ nativeBuildInputs; inherit (go) GOOS GOARCH; GO111MODULE = "on"; - GOFLAGS = "-mod=vendor"; + GOFLAGS = [ "-mod=vendor" ] ++ lib.optionals (!allowGoReference) [ "-trimpath" ]; configurePhase = args.configurePhase or '' runHook preConfigure @@ -143,10 +137,10 @@ let export GOSUMDB=off export GOPROXY=off cd "$modRoot" - if [ -n "${go-modules}" ]; then - rm -rf vendor - ln -s ${go-modules} vendor - fi + '' + lib.optionalString (go-modules != "") '' + rm -rf vendor + cp -r --reflink=auto ${go-modules} vendor + '' + '' runHook postConfigure ''; @@ -236,10 +230,6 @@ let runHook postInstall ''; - preFixup = (args.preFixup or "") + '' - find $out/{bin,libexec,lib} -type f 2>/dev/null | xargs -r ${removeExpr removeReferences} || true - ''; - strictDeps = true; disallowedReferences = lib.optional (!allowGoReference) go; @@ -259,6 +249,8 @@ let }; in if disabled then throw "${package.name} not supported for go ${go.meta.branch}" + else if (goPackagePath != null) then + throw "`goPackagePath` not needed with `buildGoModule`" else package; in |