124 lines
3.5 KiB
Bash
Executable File
124 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
script_dir=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
|
runner_sh=$script_dir/run-gnu-package-freebsd-phase-runner.sh
|
|
|
|
cleanup=0
|
|
if [ -n "${WORKDIR:-}" ]; then
|
|
workdir=$WORKDIR
|
|
mkdir -p "$workdir"
|
|
else
|
|
workdir=$(mktemp -d /tmp/fruix-gnu-package-matrix.XXXXXX)
|
|
cleanup=1
|
|
fi
|
|
|
|
if [ "${KEEP_WORKDIR:-0}" -eq 1 ]; then
|
|
cleanup=0
|
|
fi
|
|
|
|
cleanup_workdir() {
|
|
if [ "$cleanup" -eq 1 ]; then
|
|
rm -rf "$workdir"
|
|
fi
|
|
}
|
|
trap cleanup_workdir EXIT INT TERM
|
|
|
|
metadata_dir=$workdir/metadata
|
|
summary_file=$workdir/freebsd-gnu-package-matrix-summary.txt
|
|
mkdir -p "$metadata_dir"
|
|
|
|
run_package() {
|
|
name=$1
|
|
version=$2
|
|
url=$3
|
|
hash=$4
|
|
verify_kind=$5
|
|
binary=$6
|
|
version_prefix=${7:-}
|
|
run_tests=${8:-1}
|
|
package_workdir=$workdir/$name
|
|
metadata_out=$metadata_dir/$name.txt
|
|
printf '=== building %s %s ===\n' "$name" "$version"
|
|
PACKAGE_NAME=$name \
|
|
PACKAGE_VERSION=$version \
|
|
PACKAGE_SOURCE_URL=$url \
|
|
PACKAGE_NIX_BASE32=$hash \
|
|
VERIFY_KIND=$verify_kind \
|
|
BINARY_RELATIVE_PATH=$binary \
|
|
VERSION_PREFIX=$version_prefix \
|
|
RUN_TESTS=$run_tests \
|
|
WORKDIR=$package_workdir \
|
|
METADATA_OUT=$metadata_out \
|
|
KEEP_WORKDIR=1 \
|
|
"$runner_sh"
|
|
}
|
|
|
|
run_package hello 2.12.3 \
|
|
https://ftp.gnu.org/gnu/hello/hello-2.12.3.tar.gz \
|
|
183a6rxnhixiyykd7qis0y9g9cfqhpkk872a245y3zl28can0pqd \
|
|
hello \
|
|
bin/hello
|
|
|
|
run_package which 2.21 \
|
|
https://ftp.gnu.org/gnu/which/which-2.21.tar.gz \
|
|
1bgafvy3ypbhhfznwjv1lxmd6mci3x1byilnnkc7gcr486wlb8pl \
|
|
which \
|
|
bin/which
|
|
|
|
run_package time 1.9 \
|
|
https://ftp.gnu.org/gnu/time/time-1.9.tar.gz \
|
|
07jj7cz6lc13iqrpgn81ivqh8rkm73p4rnivwgrrshk23v4g1b7v \
|
|
version-prefix \
|
|
bin/time \
|
|
"time (GNU Time) 1.9" \
|
|
0
|
|
|
|
run_package patch 2.8 \
|
|
https://ftp.gnu.org/gnu/patch/patch-2.8.tar.xz \
|
|
1qssgwgy3mfahkpgg99a35gl38vamlqb15m3c2zzrd62xrlywz7q \
|
|
version-prefix \
|
|
bin/patch \
|
|
"GNU patch 2.8"
|
|
|
|
run_package nano 8.7.1 \
|
|
https://ftp.gnu.org/gnu/nano/nano-8.7.1.tar.xz \
|
|
1pyy3hnjr9g0831wcdrs18v0lh7v63yj1kaf3ljz3qpj92rdrw3n \
|
|
version-prefix \
|
|
bin/nano \
|
|
"GNU nano, version 8.7.1"
|
|
|
|
cat > "$summary_file" <<EOF
|
|
workdir=$workdir
|
|
metadata_dir=$metadata_dir
|
|
packages=hello which time patch nano
|
|
hello_metadata=$metadata_dir/hello.txt
|
|
which_metadata=$metadata_dir/which.txt
|
|
time_metadata=$metadata_dir/time.txt
|
|
patch_metadata=$metadata_dir/patch.txt
|
|
nano_metadata=$metadata_dir/nano.txt
|
|
EOF
|
|
|
|
for package in hello which time patch nano; do
|
|
printf '%s_verification=%s\n' "$package" "$(awk -F= '/^verification_output=/{print substr($0, index($0, "=") + 1)}' "$metadata_dir/$package.txt")" >> "$summary_file"
|
|
printf '%s_runtime_deps_begin\n' "$package" >> "$summary_file"
|
|
awk '/^runtime_deps_begin$/{flag=1;next}/^runtime_deps_end$/{flag=0}flag' "$metadata_dir/$package.txt" >> "$summary_file"
|
|
printf '%s_runtime_deps_end\n' "$package" >> "$summary_file"
|
|
printf '%s_make_path=%s\n' "$package" "$(awk -F= '/^make_path=/{print substr($0, index($0, "=") + 1)}' "$metadata_dir/$package.txt")" >> "$summary_file"
|
|
printf '%s_run_tests=%s\n' "$package" "$(awk -F= '/^run_tests=/{print substr($0, index($0, "=") + 1)}' "$metadata_dir/$package.txt")" >> "$summary_file"
|
|
done
|
|
|
|
if [ -n "${METADATA_OUT:-}" ]; then
|
|
mkdir -p "$(dirname "$METADATA_OUT")"
|
|
cp "$summary_file" "$METADATA_OUT"
|
|
fi
|
|
|
|
printf 'PASS freebsd-gnu-package-matrix\n'
|
|
printf 'Working directory: %s\n' "$workdir"
|
|
printf 'Summary file: %s\n' "$summary_file"
|
|
if [ -n "${METADATA_OUT:-}" ]; then
|
|
printf 'Copied summary to: %s\n' "$METADATA_OUT"
|
|
fi
|
|
printf '%s\n' '--- summary ---'
|
|
cat "$summary_file"
|