]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
testing: Optionally build strongSwan from a release tarball
authorTobias Brunner <tobias@strongswan.org>
Mon, 9 Nov 2020 14:18:50 +0000 (15:18 +0100)
committerTobias Brunner <tobias@strongswan.org>
Fri, 27 Nov 2020 11:05:22 +0000 (12:05 +0100)
This will allow us to replace the build-rootimage script.

testing/scripts/build-strongswan

index 2efd4329b89e45619d68d093c67a112cb938dea7..77363436e3464c07c78e7d816774f56ca5b6a52d 100755 (executable)
@@ -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