summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin L Rice <colin@daedrum.net>2020-06-03 22:54:39 -0400
committerColin L Rice <colin@daedrum.net>2020-07-28 21:11:28 -0400
commit95be7b25be151b6186eb1f8641458f175cc45e84 (patch)
treef74b7fcf337c7050b271ac879c40714ece7e24dc
parent148138e9de76eccbc7fb30c61914574e8188267b (diff)
go-modules: Add useVend flag to go-modules
-rw-r--r--doc/languages-frameworks/go.xml5
-rw-r--r--pkgs/development/go-modules/generic/default.nix15
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 20 insertions, 2 deletions
diff --git a/doc/languages-frameworks/go.xml b/doc/languages-frameworks/go.xml
index ff39276f640e..28fe9d0b5a54 100644
--- a/doc/languages-frameworks/go.xml
+++ b/doc/languages-frameworks/go.xml
@@ -64,6 +64,11 @@ pet = buildGoModule rec {
<varname>subPackages</varname> limits the builder from building child packages that have not been listed. If <varname>subPackages</varname> is not specified, all child packages will be built.
</para>
</callout>
+ <callout arearefs='ex-buildGoModule-3'>
+ <para>
+ <varname>runVend</varname> runs the vend command to generate the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build.
+ </para>
+ </callout>
</calloutlist>
</para>
diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix
index a478871bd9ad..68a4fe8dd6ad 100644
--- a/pkgs/development/go-modules/generic/default.nix
+++ b/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
@@ -20,6 +20,9 @@
, vendorSha256
# Whether to delete the vendor folder supplied with the source.
, deleteVendor ? false
+# Whether to run the vend tool to regenerate the vendor directory.
+# This is useful if any dependency contain C files.
+, runVend ? false
, modSha256 ? null
@@ -48,6 +51,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";
@@ -87,7 +92,13 @@ let
echo "vendor folder exists, please set 'vendorSha256=null;' or 'deleteVendor=true;' 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
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f4871dc63da0..bfca83c59de9 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7419,6 +7419,8 @@ in
vcstool = callPackage ../development/tools/vcstool { };
+ vend = callPackage ../development/tools/vend { };
+
verilator = callPackage ../applications/science/electronics/verilator {};
verilog = callPackage ../applications/science/electronics/verilog {};