diff options
| author | Baptiste Daroussin <bapt@FreeBSD.org> | 2025-03-18 10:27:54 +0100 |
|---|---|---|
| committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2025-03-18 10:34:47 +0100 |
| commit | 528376ec4687e4221fd13b16dd98cf6daeffebee (patch) | |
| tree | f13e34cc0abd13bcca3a0b96a8229002c467dca4 /Tools | |
| parent | efb71de9b3e24e0c439464fc9f9600e9bc15aaca (diff) | |
Tools/scripts: add script to generate the compat*x distfiles
Diffstat (limited to 'Tools')
| -rw-r--r-- | Tools/scripts/gen-compat.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Tools/scripts/gen-compat.sh b/Tools/scripts/gen-compat.sh new file mode 100644 index 000000000000..55f93173ef8d --- /dev/null +++ b/Tools/scripts/gen-compat.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +set -eu +set -o pipefail + +prog=${0##*/} + +usage() +{ + echo "Usage $prog <version> <arch> <filelist>" >&2 + exit 1 +} + +if [ $# -ne 3 ]; then + usage +fi + +version=${1} +arch=${2} +filelist=${3} + +if [ ! -f ${filelist} ]; then + echo "filelist if not a file" >&2 + usage +fi + +case $arch in +amd64) + sets="base lib32" ;; +*) + sets="base" ;; +esac + +flist="" +while read l ; do + flist="$flist */$l" +done <$filelist + +tmpdir=$(mktemp -d) +trap "rm -rf $tmpdir" 0 1 2 3 15 +mkdir -p ${tmpdir}/base +set -o noglob +for s in $sets; do + echo "Fetching $s for ${version}" + extract_list="$flist" + if [ $s = "base" ]; then + extract_list="${extract_list} */sys/param.h" + fi + fetch -o - https://download.freebsd.org/releases/${arch}/${version}-RELEASE/${s}.txz | tar -C ${tmpdir}/base -x -f - $extract_list +done +set +o noglob +fbsd_version=$(awk '/#define __FreeBSD_version/ { print $3 }' ${tmpdir}/base/usr/include/sys/param.h) +maj_version=${version%%.*} +date=$(date "+%Y%m%d") +compatdir="compat${maj_version}x-${arch}-${version}.${fbsd_version}.${date}" +mkdir -p ${tmpdir}/${compatdir}/lib/compat +case $sets in +*lib32*) + mkdir -p ${tmpdir}/${compatdir}/lib32/compat + find ${tmpdir}/base/usr/lib32/ -name "*.so.*" -exec mv -v {} ${tmpdir}/${compatdir}/lib32/compat/ \; + ;; +esac +find ${tmpdir}/base -name "*.so.*" -exec mv -v {} ${tmpdir}/${compatdir}/lib/compat/ \; +tar -cvJf ${compatdir}.tar.xz ${tmpdir}/${compatdir} |
