diff options
Diffstat (limited to 'nixpkgs/pkgs/development/go-modules/generic/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/go-modules/generic/default.nix | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/nixpkgs/pkgs/development/go-modules/generic/default.nix b/nixpkgs/pkgs/development/go-modules/generic/default.nix index 9baeefe1b2c..7db4992d1d6 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 }: +{ go, cacert, git, lib, removeReferencesTo, stdenv, vend }: { name ? "${args'.pname}-${args'.version}" , src @@ -17,11 +17,12 @@ # # if vendorSha256 is null, then we won't fetch any dependencies and # rely on the vendor folder within the source. -, vendorSha256 ? null +, vendorSha256 # Whether to delete the vendor folder supplied with the source. , deleteVendor ? false - -, modSha256 ? null +# Whether to run the vend tool to regenerate the vendor directory. +# This is useful if any dependency contain C files. +, runVend ? false # We want parallel builds by default , enableParallelBuilding ? true @@ -48,6 +49,8 @@ let 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 = { name = "${name}-go-modules"; @@ -80,14 +83,25 @@ let runHook preBuild if [ ${deleteFlag} == "true" ]; then - rm -rf vendor + if [ ! -d vendor ]; then + echo "vendor folder does not exist, 'deleteVendor' is not needed" + exit 10 + else + rm -rf vendor + fi fi - if [ -e vendor ]; then - echo "vendor folder exists, please set 'vendorSha256=null;' or 'deleteVendor=true;' in your expression" + if [ -d vendor ]; then + echo "vendor folder exists, please set 'vendorSha256 = null;' in your expression" exit 10 fi - go mod vendor + + if [ ${vendCommand} != "false" ]; then + echo running vend to rewrite vendor folder + ${vendCommand} + else + go mod vendor + fi mkdir -p vendor runHook postBuild @@ -127,7 +141,7 @@ let export GOSUMDB=off export GOPROXY=off cd "$modRoot" - if [ -n "${go-modules}" ]; then + if [ -n "${go-modules}" ]; then rm -rf vendor ln -s ${go-modules} vendor fi @@ -199,7 +213,7 @@ let runHook postBuild ''; - doCheck = args.doCheck or false; + doCheck = args.doCheck or true; checkPhase = args.checkPhase or '' runHook preCheck @@ -221,7 +235,7 @@ let ''; preFixup = (args.preFixup or "") + '' - find $out/bin -type f -exec ${removeExpr removeReferences} '{}' + || true + find $out/{bin,libexec,lib} -type f 2>/dev/null | xargs -r ${removeExpr removeReferences} || true ''; strictDeps = true; @@ -241,8 +255,5 @@ let }); in if disabled then throw "${package.name} not supported for go ${go.meta.branch}" -else if modSha256 != null then - lib.warn "modSha256 is deprecated and will be removed in the next release (20.09), use vendorSha256 instead" ( - import ./old.nix { inherit go cacert git lib removeReferencesTo stdenv; } args') else package |