|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
{ go, govers, lib }: |
|
|
|
|
{ go, govers, parallel, lib }: |
|
|
|
|
|
|
|
|
|
{ name, buildInputs ? [], nativeBuildInputs ? [], passthru ? {}, preFixup ? "" |
|
|
|
|
|
|
|
|
@ -41,7 +41,7 @@ go.stdenv.mkDerivation ( |
|
|
|
|
(builtins.removeAttrs args [ "goPackageAliases" "disabled" ]) // { |
|
|
|
|
|
|
|
|
|
name = "go${go.meta.branch}-${name}"; |
|
|
|
|
nativeBuildInputs = [ go ] |
|
|
|
|
nativeBuildInputs = [ go parallel ] |
|
|
|
|
++ (lib.optional (!dontRenameImports) govers) ++ nativeBuildInputs; |
|
|
|
|
buildInputs = [ go ] ++ buildInputs; |
|
|
|
|
|
|
|
|
@ -62,7 +62,7 @@ go.stdenv.mkDerivation ( |
|
|
|
|
rmdir extraSrc |
|
|
|
|
|
|
|
|
|
'') + '' |
|
|
|
|
GOPATH=$NIX_BUILD_TOP/go:$GOPATH |
|
|
|
|
export GOPATH=$NIX_BUILD_TOP/go:$GOPATH |
|
|
|
|
|
|
|
|
|
runHook postConfigure |
|
|
|
|
''; |
|
|
|
@ -80,38 +80,39 @@ go.stdenv.mkDerivation ( |
|
|
|
|
|
|
|
|
|
runHook renameImports |
|
|
|
|
|
|
|
|
|
PIDS=() |
|
|
|
|
if [ -n "$subPackages" ] ; then |
|
|
|
|
for p in $subPackages ; do |
|
|
|
|
go install $buildFlags "''${buildFlagsArray[@]}" -p $NIX_BUILD_CORES -v $goPackagePath/$p & |
|
|
|
|
PIDS+=("$!") |
|
|
|
|
done |
|
|
|
|
else |
|
|
|
|
pushd go/src |
|
|
|
|
while read d; do |
|
|
|
|
{ |
|
|
|
|
echo "$d" | grep -q "/_" && continue |
|
|
|
|
[ -n "$excludedPackages" ] && echo "$d" | grep -q "$excludedPackages" && continue |
|
|
|
|
local OUT |
|
|
|
|
if ! OUT="$(go install $buildFlags "''${buildFlagsArray[@]}" -p $NIX_BUILD_CORES -v $d 2>&1)"; then |
|
|
|
|
if ! echo "$OUT" | grep -q 'no buildable Go source files'; then |
|
|
|
|
echo "$OUT" >&2 |
|
|
|
|
exit 1 |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
if [ -n "$OUT" ]; then |
|
|
|
|
echo "$OUT" >&2 |
|
|
|
|
fi |
|
|
|
|
} & |
|
|
|
|
PIDS+=("$!") |
|
|
|
|
done < <(find $goPackagePath -type f -name \*.go -exec dirname {} \; | sort | uniq) |
|
|
|
|
popd |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Exit on error from the parallel process |
|
|
|
|
for PID in "''${PIDS[@]}"; do |
|
|
|
|
wait $PID || exit 1 |
|
|
|
|
done |
|
|
|
|
buildGoDir() { |
|
|
|
|
local d; local cmd; |
|
|
|
|
cmd="$1" |
|
|
|
|
d="$2" |
|
|
|
|
echo "$d" | grep -q "/_" && return 0 |
|
|
|
|
[ -n "$excludedPackages" ] && echo "$d" | grep -q "$excludedPackages" && return 0 |
|
|
|
|
local OUT |
|
|
|
|
if ! OUT="$(go $cmd $buildFlags "''${buildFlagsArray[@]}" -v $d 2>&1)"; then |
|
|
|
|
if ! echo "$OUT" | grep -q 'no buildable Go source files'; then |
|
|
|
|
echo "$OUT" >&2 |
|
|
|
|
return 1 |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
if [ -n "$OUT" ]; then |
|
|
|
|
echo "$OUT" >&2 |
|
|
|
|
fi |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getGoDirs() { |
|
|
|
|
local type; |
|
|
|
|
type="$1" |
|
|
|
|
if [ -n "$subPackages" ]; then |
|
|
|
|
echo "$subPackages" | sed "s,\(^\| \),\1$goPackagePath/,g" |
|
|
|
|
else |
|
|
|
|
pushd go/src >/dev/null |
|
|
|
|
find "$goPackagePath" -type f -name \*$type.go -exec dirname {} \; | sort | uniq |
|
|
|
|
popd >/dev/null |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export -f buildGoDir # parallel needs to see the function |
|
|
|
|
getGoDirs "" | parallel -j $NIX_BUILD_CORES buildGoDir install |
|
|
|
|
|
|
|
|
|
runHook postBuild |
|
|
|
|
''; |
|
|
|
@ -119,25 +120,7 @@ go.stdenv.mkDerivation ( |
|
|
|
|
checkPhase = args.checkPhase or '' |
|
|
|
|
runHook preCheck |
|
|
|
|
|
|
|
|
|
PIDS=() |
|
|
|
|
if [ -n "$subPackages" ] ; then |
|
|
|
|
for p in $subPackages ; do |
|
|
|
|
go test -p $NIX_BUILD_CORES -v $goPackagePath/$p & |
|
|
|
|
PIDS+=("$!") |
|
|
|
|
done |
|
|
|
|
else |
|
|
|
|
pushd go/src |
|
|
|
|
while read d; do |
|
|
|
|
go test -p $NIX_BUILD_CORES -v $d & |
|
|
|
|
PIDS+=("$!") |
|
|
|
|
done < <(find $goPackagePath -type f -name \*_test.go -exec dirname {} \; | sort | uniq) |
|
|
|
|
popd |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Exit on error from the parallel process |
|
|
|
|
for PID in "''${PIDS[@]}"; do |
|
|
|
|
wait $PID || exit 1 |
|
|
|
|
done |
|
|
|
|
getGoDirs test | parallel -j $NIX_BUILD_CORES buildGoDir test |
|
|
|
|
|
|
|
|
|
runHook postCheck |
|
|
|
|
''; |
|
|
|
|