aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/go-modules/generic/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/go-modules/generic/default.nix')
-rw-r--r--nixpkgs/pkgs/development/go-modules/generic/default.nix39
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