reproduce.tt: Add --help flag
And a --dir flag to override the directory where inputs etc. are stored.
This commit is contained in:
parent
adb9ad83dd
commit
659898bd67
|
@ -1,18 +1,65 @@
|
||||||
#! /bin/sh
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
# This script has been generated automatically by Hydra from the build
|
# This script has been generated automatically by Hydra from the build
|
||||||
# at [% c.uri_for('/build' build.id) %].
|
# at [% c.uri_for('/build' build.id) %].
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
tmpDir=${TMPDIR:-/tmp}/build-[% build.id +%]
|
||||||
|
declare -a args extraArgs
|
||||||
|
|
||||||
|
|
||||||
|
# Process the command line.
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
arg="$1"
|
||||||
|
shift
|
||||||
|
if [ "$arg" = --help ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $0 [--dir PATH] [--run-env]
|
||||||
|
|
||||||
|
This script will reproduce Hydra build [% build.id %] of job [%
|
||||||
|
build.project.name %]:[% build.jobset.name %]:[% build.job.name +%]
|
||||||
|
(available at [%+ c.uri_for('/build' build.id) +%]). It will fetch
|
||||||
|
all inputs of the Hydra build, then invoke Nix to build the job and
|
||||||
|
all its dependencies.
|
||||||
|
|
||||||
|
The inputs will be stored in $tmpDir. This can be overriden using the
|
||||||
|
--dir flag. After the build, the result of the build is available via
|
||||||
|
the symlink $tmpDir/result.
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
|
||||||
|
--dir PATH
|
||||||
|
Override the location where the inputs and result symlink are stored.
|
||||||
|
|
||||||
|
--run-env
|
||||||
|
Fetch the inputs and build the dependencies, then start an
|
||||||
|
interactive shell in which the environment is equal to that used
|
||||||
|
to perform the build. See the description of the --run-env flag
|
||||||
|
in the nix-build(1) manpage for more details.
|
||||||
|
|
||||||
|
Any additional flags are passed to nix-build. See the nix-build(1)
|
||||||
|
manpage for details.
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
elif [ "$arg" = --dir ]; then
|
||||||
|
tmpDir="$1"
|
||||||
|
if [ -z "$tmpDir" ]; then
|
||||||
|
echo "$0: --dir requires an argument" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
extraArgs+=("$arg")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
export NIX_PATH=
|
export NIX_PATH=
|
||||||
|
|
||||||
srcDir=${TMPDIR:-/tmp}/build-[% build.id +%]
|
mkdir -p "$tmpDir"
|
||||||
mkdir -p "$srcDir"/build
|
cd "$tmpDir"
|
||||||
cd "$srcDir"/build
|
echo "storing sources in $tmpDir" >&2
|
||||||
echo "storing sources in $srcDir" >&2
|
|
||||||
|
|
||||||
declare -a args
|
|
||||||
|
|
||||||
|
|
||||||
# Fetch the inputs.
|
# Fetch the inputs.
|
||||||
|
@ -22,7 +69,7 @@ inputDir=
|
||||||
|
|
||||||
[%+ IF input.type == "git" %]
|
[%+ IF input.type == "git" %]
|
||||||
|
|
||||||
inputDir="$srcDir/[% input.name %]/git-export"
|
inputDir="$tmpDir/[% input.name %]/git-export"
|
||||||
|
|
||||||
if ! [ -d "$inputDir" ]; then
|
if ! [ -d "$inputDir" ]; then
|
||||||
echo "fetching Git input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
echo "fetching Git input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
||||||
|
@ -40,7 +87,7 @@ args+=(--arg '[% input.name %]' "{ outPath = $inputDir; rev = \"[% input.revisio
|
||||||
|
|
||||||
[%+ ELSIF input.type == "hg" %]
|
[%+ ELSIF input.type == "hg" %]
|
||||||
|
|
||||||
inputDir="$srcDir/[% input.name %]/hg-archive"
|
inputDir="$tmpDir/[% input.name %]/hg-archive"
|
||||||
|
|
||||||
if ! [ -d "$inputDir" ]; then
|
if ! [ -d "$inputDir" ]; then
|
||||||
echo "fetching Mercurial input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
echo "fetching Mercurial input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
||||||
|
@ -55,7 +102,7 @@ args+=(--arg '[% input.name %]' "{ outPath = $inputDir; rev = \"[% input.revisio
|
||||||
|
|
||||||
[%+ ELSIF input.type == "svn" %]
|
[%+ ELSIF input.type == "svn" %]
|
||||||
|
|
||||||
inputDir="$srcDir/[% input.name %]/svn-export"
|
inputDir="$tmpDir/[% input.name %]/svn-export"
|
||||||
|
|
||||||
if ! [ -d "$inputDir" ]; then
|
if ! [ -d "$inputDir" ]; then
|
||||||
echo "fetching Subversion input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
echo "fetching Subversion input ‘[% input.name %]’ from ‘[% input.uri %]’ (commit [% input.revision %])..." >&2
|
||||||
|
@ -104,4 +151,4 @@ args+=(--option system x86_64-linux)
|
||||||
echo "Nix path is $NIX_PATH" >&2
|
echo "Nix path is $NIX_PATH" >&2
|
||||||
echo "Nix args are ${args[@]}" >&2
|
echo "Nix args are ${args[@]}" >&2
|
||||||
|
|
||||||
nix-build "$nixExprInputDir/[% build.nixexprpath %]" -A '[% build.job.name %]' "${args[@]}" "$@"
|
nix-build "$nixExprInputDir/[% build.nixexprpath %]" -A '[% build.job.name %]' "${args[@]}" "${extraArgs[@]}"
|
||||||
|
|
Loading…
Reference in a new issue