From 8b6b08b814af72e8b2f6281037f089e099a41e25 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 26 Nov 2019 12:11:43 +0000 Subject: 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. --- buildGo.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'buildGo.nix') 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 { -- cgit 1.4.1