Files
fruix/tests/build-system/run-freebsd-gnu-package-matrix.sh

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"