diff options
author | Vincent Ambo <tazjin@google.com> | 2019-11-26T12·11+0000 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-11-26T12·21+0000 |
commit | 8b6b08b814af72e8b2f6281037f089e099a41e25 (patch) | |
tree | 36878cfabf9d331e59f0241eefe762d27668a27f | |
parent | 7d26550c11e6fdde5b3a0a052b917aef16dc9816 (diff) |
feat(buildGo): Add 'srcOnly' and 'targets' parameters for external
Adds two new parameters to buildGo.external: * `srcOnly` toggles whether the created derivation should contain only the source code, or the built package. This is useful in situations where some sub-packages of a larger package are needed and the build should be deferred to the package depending on them. It defaults to false, meaning that external packages are built by default. * `targets` controls which "sub-packages" of the target package are built. It defaults to building all sub-packages.
-rw-r--r-- | buildGo.nix | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/buildGo.nix b/buildGo.nix index 1a7ed66c7ecc..12504ce57103 100644 --- a/buildGo.nix +++ b/buildGo.nix @@ -90,7 +90,7 @@ let # # Contrary to other functions, `src` is expected to point at a # single directory containing the root of the external library. - external = { path, src, deps ? [] }: + external = { path, src, deps ? [], srcOnly ? false, targets ? [ "..." ] }: let name = pathToName path; uniqueDeps = allDeps deps; @@ -106,7 +106,7 @@ let mkdir -p gopath $out export GOPATH=$PWD/gopath ln -s ${gopathSrc} gopath/src - ${go}/bin/go install ${path}/... + ${go}/bin/go install ${spaceOut (map (t: path + "/" + t) targets)} if [[ -d gopath/pkg/linux_amd64 ]]; then echo "Installing Go packages for ${path}" @@ -118,10 +118,10 @@ let mv gopath/bin $out/bin fi ''; - in symlinkJoin { + in (if srcOnly then gopathSrc else symlinkJoin { name = "goext-${name}"; paths = [ gopathSrc gopathPkg ]; - } // { goDeps = uniqueDeps; }; + }) // { goDeps = uniqueDeps; }; # Protobuf & gRPC integration requires these dependencies: proto-go-src = fetchFromGitHub { |