new Go support function 'buildGoPackage'
add a setupHook to the Go compiler that builds a GOPATH new buildGoPackage function that overides the phases of stdenv
This commit is contained in:
committed by
Luca Bruno
parent
2d19af84de
commit
faa5dccab8
84
pkgs/development/go-modules/generic/default.nix
Normal file
84
pkgs/development/go-modules/generic/default.nix
Normal file
@@ -0,0 +1,84 @@
|
||||
{ go }:
|
||||
|
||||
{ name, buildInputs ? []
|
||||
|
||||
# Go import path of the package
|
||||
, goPackagePath
|
||||
|
||||
, meta ? {}, ... } @ args:
|
||||
|
||||
go.stdenv.mkDerivation ( args // {
|
||||
name = "${go.name}-${name}";
|
||||
buildInputs = [ go ] ++ buildInputs;
|
||||
|
||||
configurePhase = args.configurePhase or ''
|
||||
runHook preConfigure
|
||||
|
||||
cd "$NIX_BUILD_TOP"
|
||||
mkdir -p "go/src/$(dirname "$goPackagePath")"
|
||||
mv "$sourceRoot" "go/src/$goPackagePath"
|
||||
|
||||
GOPATH=$NIX_BUILD_TOP/go:$GOPATH
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = args.buildPhase or ''
|
||||
runHook preBuild
|
||||
|
||||
if [ -n "$subPackages" ] ; then
|
||||
for p in $subPackages ; do
|
||||
go install -p $NIX_BUILD_CORES -v $goPackagePath/$p
|
||||
done
|
||||
else
|
||||
find . -type d | while read d; do
|
||||
for i in $d/*.go; do
|
||||
go install -p $NIX_BUILD_CORES -v $d
|
||||
break
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
checkPhase = args.checkPhase or ''
|
||||
runHook preCheck
|
||||
|
||||
if [ -n "$subPackages" ] ; then
|
||||
for p in $subPackages ; do
|
||||
go test -p $NIX_BUILD_CORES -v $goPackagePath/$p
|
||||
done
|
||||
else
|
||||
find . -type d | while read d; do
|
||||
for i in $d/*_test.go; do
|
||||
go test -p $NIX_BUILD_CORES -v $d
|
||||
break
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
installPhase = args.installPhase or ''
|
||||
runHook preInstall
|
||||
|
||||
local dir
|
||||
for d in pkg src; do
|
||||
mkdir -p $out/share/go
|
||||
dir="$NIX_BUILD_TOP/go/$d"
|
||||
[ -e "$dir" ] && cp -r $dir $out/share/go
|
||||
done
|
||||
|
||||
dir="$NIX_BUILD_TOP/go/bin"
|
||||
[ -e "$dir" ] && cp -r $dir $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = meta // {
|
||||
# add an extra maintainer to every package
|
||||
maintainers = (meta.maintainers or []) ++ [ go.stdenv.lib.maintainers.emery ];
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user