From: Tobias Brunner Date: Mon, 9 Nov 2020 14:18:50 +0000 (+0100) Subject: testing: Optionally build strongSwan from a release tarball X-Git-Tag: 5.9.2dr1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=386e9a96a1a102d22f72ac99c19bca2ce0989f44;p=thirdparty%2Fstrongswan.git testing: Optionally build strongSwan from a release tarball This will allow us to replace the build-rootimage script. --- diff --git a/testing/scripts/build-strongswan b/testing/scripts/build-strongswan index 2efd4329b8..77363436e3 100755 --- a/testing/scripts/build-strongswan +++ b/testing/scripts/build-strongswan @@ -11,7 +11,7 @@ running_any $STRONGSWANHOSTS && die "Please stop test environment before running SRCUID=${SUDO_UID:-$(id -u)} SRCGID=${SUDO_GID:-$(id -g)} -check_commands partprobe qemu-img qemu-nbd bindfs +check_commands partprobe qemu-img qemu-nbd load_qemu_nbd @@ -20,12 +20,15 @@ mkdir -p $IMGDIR usage() { cat << EOF -Usage: ${0##*/} [--all] [--clean] [--guest NAME] [--replace] [SRCDIR] +Usage: + ${0##*/} [--all] [--guest NAME] [--replace] [--clean] [SRCDIR] + ${0##*/} [--all] [--guest NAME] [--replace] [--tarball VERSION] --help (-h) show usage information --all (-a) build/install all software, not only strongSwan --clean (-c) use a new strongSwan build directory --guest NAME (-g) only install in a specific guest image --replace (-r) replace the root image (implies --all) + --tarball (-t) build strongSwan from a release tarball EOF } @@ -33,6 +36,7 @@ ALL_RECIPES= CLEAN= GUEST= REPLACE= +TARBALL= while :; do case $1 in @@ -57,6 +61,14 @@ while :; do -r|--replace) REPLACE=1 ;; + -t|--tarball) + if [ "$2" ]; then + TARBALL=$2 + shift + else + die "Release version missing" + fi + ;; *) break esac @@ -64,10 +76,16 @@ while :; do shift done -SWANDIR=${1:+$(readlink -f $1)} -: ${SWANDIR:=$(readlink -f $DIR/../..)} +SWANDIR= + +if [ -z "$TARBALL" ]; then + check_commands bindfs -[ -f $SWANDIR/src/libstrongswan/asn1/oid.txt ] || die "strongSwan not found in $SWANDIR" + SWANDIR=${1:+$(readlink -f $1)} + : ${SWANDIR:=$(readlink -f $DIR/../..)} + + [ -f $SWANDIR/src/libstrongswan/asn1/oid.txt ] || die "strongSwan not found in $SWANDIR" +fi case "$GUEST" in "") @@ -105,30 +123,32 @@ log_action "Mounting $SHAREDDIR as /root/shared" execute "mount -o bind $SHAREDDIR $LOOPDIR/root/shared" do_on_exit umount $LOOPDIR/root/shared -mkdir -p $LOOPDIR/root/strongswan -log_action "Mounting $SWANDIR as /root/strongswan" -execute "bindfs -u $SRCUID -g $SRCGID --create-for-user=$SRCUID --create-for-group=$SRCGID $SWANDIR $LOOPDIR/root/strongswan" -do_on_exit umount $LOOPDIR/root/strongswan - log_action "Copy /etc/resolv.conf" execute "cp /etc/resolv.conf $LOOPDIR/etc/resolv.conf" do_on_exit rm $LOOPDIR/etc/resolv.conf -log_action "Remove SWID tags of previous versions" +log_action "Remove SWID tags of previous strongSwan versions" execute_chroot "find /usr/local/share -path '*strongswan*' -name *.swidtag -delete" -log_action "Determine strongSwan version" -desc=`git -C $SWANDIR describe --dirty` -if [ $? -eq 0 ]; then - SWANVERSION="$desc (`git -C $SWANDIR rev-parse --abbrev-ref HEAD`)" -else - SWANVERSION="`cat $SWANDIR/configure.ac | sed -n '/^AC_INIT/{ s/.*,\[\(.*\)\])$/\1/p }'`" -fi -echo "$SWANVERSION" > $SHAREDDIR/.strongswan-version -log_status 0 +if [ -z "$TARBALL" ]; then + mkdir -p $LOOPDIR/root/strongswan + log_action "Mounting $SWANDIR as /root/strongswan" + execute "bindfs -u $SRCUID -g $SRCGID --create-for-user=$SRCUID --create-for-group=$SRCGID $SWANDIR $LOOPDIR/root/strongswan" + do_on_exit umount $LOOPDIR/root/strongswan -log_action "Preparing source tree" -execute_chroot 'autoreconf -i /root/strongswan' + log_action "Determine strongSwan version" + desc=`git -C $SWANDIR describe --dirty` + if [ $? -eq 0 ]; then + version="$desc (`git -C $SWANDIR rev-parse --abbrev-ref HEAD`)" + else + version="`cat $SWANDIR/configure.ac | sed -n '/^AC_INIT/{ s/.*,\[\(.*\)\])$/\1/p }'`" + fi + echo "$version" > $SHAREDDIR/.strongswan-version + log_status 0 + + log_action "Preparing source tree" + execute_chroot 'autoreconf -i /root/strongswan' +fi RECPDIR=$DIR/recipes if [ "$ALL_RECIPES" ]; then @@ -152,12 +172,12 @@ mkdir -p $SHAREDDIR/compile for r in $RECIPES do log_action "Installing from recipe $r" - if [[ $r == *strongswan.mk ]]; then + if [[ $r == *strongswan.mk && -z "$TARBALL" ]]; then cp $RECPDIR/$r $SHAREDDIR/build-strongswan execute_chroot "make SRCDIR=/root/strongswan BUILDDIR=/root/shared/build-strongswan -f /root/shared/build-strongswan/$r" else cp $RECPDIR/$r ${LOOPDIR}/root/shared/compile - execute_chroot "make -C /root/shared/compile -f $r" + execute_chroot "make SWANVERSION=$TARBALL -C /root/shared/compile -f $r" fi done