summaryrefslogtreecommitdiff
path: root/scripts/build-submodules
diff options
context:
space:
mode:
authorRunar Borge <runar@borge.nu>2019-01-06 00:21:18 +0100
committerRunar Borge <runar@borge.nu>2019-01-06 00:21:18 +0100
commit081bf77f86881b9c2438902595193c2a311b02cd (patch)
tree76f80dc3424f1a5b9a9b509a5bc83b7ddac4de45 /scripts/build-submodules
parentc329a9291c58a9cd340035b5508c3b869d094fd8 (diff)
downloadvyos-build-081bf77f86881b9c2438902595193c2a311b02cd.tar.gz
vyos-build-081bf77f86881b9c2438902595193c2a311b02cd.zip
Added build-kernel script and almost total rewrite of build-submodules
The build-kernel script was forgotten to commit, it is needed to build the kernel To make the build-submodules script more readable and extendible i've almost totally rewritten it using functions the build process is also started in its own subshell, so that we dont need to hold track of the current directory and make error handling/status info easier
Diffstat (limited to 'scripts/build-submodules')
-rwxr-xr-xscripts/build-submodules243
1 files changed, 159 insertions, 84 deletions
diff --git a/scripts/build-submodules b/scripts/build-submodules
index 43568cfd..2b29907e 100755
--- a/scripts/build-submodules
+++ b/scripts/build-submodules
@@ -1,11 +1,13 @@
#!/bin/bash
#set -x
+
if [ ! -d "packages" ]; then
echo "This script needs to be executed inside the top root of vyos-build"
exit 1
fi
-if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
+
+print_help() {
echo "Script for building all subpackages to vyos"
echo "Execute this sctipt from the root of the vyos-build directory"
echo ""
@@ -16,7 +18,31 @@ if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo " docker build -t vyos-builder ."
echo "Compile packages:"
echo " docker run --rm -it -v $(pwd):/vyos -w /vyos --sysctl net.ipv6.conf.lo.disable_ipv6=0 vyos-builder scripts/build-docker-subpaclages"
-fi
+ echo "Parameters:"
+ echo " --init-packages - Initiate all subpackages before building"
+}
+
+
+while test $# -gt 0
+do
+ case "$1" in
+ -h|-?|--help)
+ print_help
+ exit 0
+ ;;
+ --init-packages)
+ INIT_PACKAGES=1
+ ;;
+ *)
+ (>&2 echo "Error: Argument $1 is not valid")
+ echo ""
+ print_help
+ exit 1
+ ;;
+ esac
+ shift
+done
+
status_start() {
echo -ne "[ ] $1"
@@ -39,6 +65,43 @@ echo -ne " $1\n"
ROOTDIR="$(pwd)"
PKGDIR="$(pwd)/packages"
+initiate_package() {
+ PKG=$1
+ status_start "Initializing subpackage: $PKG"
+ ( set -e
+ git submodule update --init packages/$PKG >>$PKGDIR/$PKG.buildlog 2>&1
+ cd $PKGDIR/$PKG
+ git checkout current
+ )
+ if [ $? -ne 0 ]; then
+ status_fail "Failed to initiate package $PKG, look in $PKG.buildlog to examine the fault\n"
+ return 1
+ fi
+ status_ok
+ return 0
+}
+
+build_package() {
+ PKG=$1
+ status_start "Building package: $PKG"
+ if [ ! -d "packages/$PKG/debian" ]; then
+ status_skip "No source for: $PKG"
+ return 1
+ fi
+ ( set -e
+ cd $PKGDIR/$PKG > /dev/null
+ dpkg-buildpackage -uc -us -tc -b >>$PKGDIR/$PKG.buildlog 2>&1
+ )
+ if [ $? -ne 0 ]; then
+ status_fail
+ error_msg "Failed to build package $PKG, look in $PKG.buildlog to examine the fault\n"
+ return 2
+ fi
+ status_ok
+}
+
+
+
echo "Cleaning up buildfiles..."
rm -rf $PKGDIR/*.deb
rm -rf $PKGDIR/*.changes
@@ -89,104 +152,116 @@ for PKG in mdns-repeater \
vyos-strongswan \
vyos-world \
; do
- if [ -d "packages/$PKG/debian" ]; then
- status_start "Building package: $PKG"
- pushd $PKGDIR/$PKG > /dev/null
- dpkg-buildpackage -uc -us -tc -b >$PKGDIR/$PKG.buildlog 2>&1
- if [ $? -ne 0 ]; then
- status_fail
- error_msg "Failed to build package $PKG, look in $PKG.buildlog to examine the fault\n"
- else
- status_ok
- fi
- popd > /dev/null
- else
- status_skip "No source for: $PKG"
+ if [ $INIT_PACKAGES ]; then
+ initiate_package "$PKG"
fi
+ build_package "$PKG"
done
# KERNEL
-if [ -f "packages/vyos-kernel/Makefile" ]; then
+build_kernel() {
status_start "Building-package: vyos-kernel"
- pushd packages/vyos-kernel > /dev/null
- bash -c '../../scripts/build-kernel' >$PKGDIR/vyos-kernel.buildlog 2>&1
+ if [ ! -f "packages/vyos-kernel/Makefile" ]; then
+ status_skip "No source for: vyos-kernel"
+ return 0
+ fi
+
+ ( set -e
+ cd packages/vyos-kernel > /dev/null
+ bash -c '../../scripts/build-kernel' >$PKGDIR/vyos-kernel.buildlog 2>&1
+ )
if [ $? -ne 0 ]; then
status_fail
error_msg "Failed to build package vyos-kernel, look in vyos-kernel.buildlog to examine the fault\n"
- else
- VERSION=$(grep "^VERSION" Makefile | grep -Eo '[0-9]{1,4}')
- PATCHLEVEL=$(grep "^PATCHLEVEL" Makefile | grep -Eo '[0-9]{1,4}')
- SUBLEVEL=$(grep "^SUBLEVEL" Makefile | grep -Eo '[0-9]{1,4}')
- ARCH=$(dpkg --print-architecture)
- echo "$VERSION.$PATCHLEVEL.$SUBLEVEL" > $ROOTDIR/data/kernel_version
- status_ok
+ return 1
fi
- popd > /dev/null
-else
- status_skip "No source for: vyos-kernel"
-fi
+ VERSION=$(grep "^VERSION" Makefile | grep -Eo '[0-9]{1,4}')
+ PATCHLEVEL=$(grep "^PATCHLEVEL" Makefile | grep -Eo '[0-9]{1,4}')
+ SUBLEVEL=$(grep "^SUBLEVEL" Makefile | grep -Eo '[0-9]{1,4}')
+ ARCH=$(dpkg --print-architecture)
+ echo "$VERSION.$PATCHLEVEL.$SUBLEVEL" > $ROOTDIR/data/kernel_version
+ status_ok
+}
+build_kernel
# WIREGUARD
-if [ -d "packages/vyos-wireguard/debian" ]; then
- if [ -f "packages/vyos-kernel/Makefile" ]; then
- status_start "Building package: vyos-wireguard"
- if grep -q "KBUILD_OUTPUT" packages/vyos-kernel/Makefile; then
- VERSION=$(grep "^VERSION" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- PATCHLEVEL=$(grep "^PATCHLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- SUBLEVEL=$(grep "^SUBLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- ARCH=$(dpkg --print-architecture)
- pushd packages/vyos-wireguard > /dev/null
- echo "src/wireguard.ko /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra" > debian/wireguard-modules.install
- bash -c 'KERNELDIR=/vyos/packages/vyos-kernel dpkg-buildpackage -uc -us -tc -b' >$PKGDIR/vyos-wireguard.buildlog 2>&1
- if [ $? -ne 0 ]; then
- status_fail
- error_msg "Failed to build package vyos-wireguard, look in vyos-wireguard.buildlog to examine the fault\n"
- else
- status_ok
- fi
- popd > /dev/null
- else
- status_fail
- error_msg "Failed to build package vyos-wireguard, no kernel source found\n"
- fi
- else
- seeor_msg "Something wrong with the kernel module?"
- fi
-else
+build_wireguard() {
+ status_start "Building package: vyos-wireguard"
+
+ if [ ! -d "packages/vyos-wireguard/debian" ]; then
status_skip "No source for: vyos-wireguard"
-fi
+ return 0
+ fi
+
+ if [ ! -f "packages/vyos-kernel/Makefile" ]; then
+ status_fail
+ error_msg "No Makefile found in kernel package"
+ return 1
+ fi
+
+ if ! grep -q "KBUILD_OUTPUT" packages/vyos-kernel/Makefile; then
+ status_fail
+ error_msg "Failed to build package vyos-wireguard, no kernel source found\n"
+ return 1
+ fi
+
+ VERSION=$(grep "^VERSION" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ PATCHLEVEL=$(grep "^PATCHLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ SUBLEVEL=$(grep "^SUBLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ ARCH=$(dpkg --print-architecture)
+ # Collect kernel information
+ ( set -e
+ pushd packages/vyos-wireguard > /dev/null
+ echo "src/wireguard.ko /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra" > debian/wireguard-modules.install
+ bash -c 'KERNELDIR=/vyos/packages/vyos-kernel dpkg-buildpackage -uc -us -tc -b' >$PKGDIR/vyos-wireguard.buildlog 2>&1
+ )
+ if [ $? -ne 0 ]; then
+ status_fail
+ error_msg "Failed to build package vyos-wireguard, look in vyos-wireguard.buildlog to examine the fault\n"
+ return 2
+ fi
+ status_ok
+}
+(build_wireguard)
# ACCEL-PPP
-if [ -d "packages/vyos-accel-ppp/debian" ]; then
+build_accel-ppp() {
+ status_start "Building package: vyos-accel-ppp"
+ if [ ! -d "packages/vyos-accel-ppp/debian" ]; then
+ status_skip "No source for: vyos-accel-ppp"
+ return 0
+ fi
+
if [ -f "packages/vyos-kernel/Makefile" ]; then
- status_start "Building package: vyos-accel-ppp"
- if grep -q "KBUILD_OUTPUT" packages/vyos-kernel/Makefile; then
- VERSION=$(grep "^VERSION" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- PATCHLEVEL=$(grep "^PATCHLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- SUBLEVEL=$(grep "^SUBLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
- ARCH=$(dpkg --print-architecture)
- pushd packages/vyos-accel-ppp > /dev/null
- #echo "src/wireguard.ko /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra" > debian/wireguard-modules.install
- echo "lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra/*.ko" > debian/vyos-accel-ppp-ipoe-kmod.install
- sed -i "s#[0-9].[0-9][0-9].[0-9]-amd64-vyos#$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos#g" debian/rules
- KERNELDIR=$PKGDIR/vyos-kernel dpkg-buildpackage -uc -us -tc -b >$PKGDIR/vyos-accel-ppp.buildlog 2>&1
- if [ $? -ne 0 ]; then
- status_fail
- error_msg "Failed to build package vyos-accel-ppp, look in vyos-accel-ppp.buildlog to examine the fault\n"
- else
- status_ok
- fi
- popd > /dev/null
- else
- status_fail
- error_msg "Failed to build package vyos-accel-ppp, no kernel source found\n"
- fi
- else
- seeor_msg "Something wrong with the kernel module?"
+ error_msg "Something wrong with the kernel module?"
+ return 1
fi
-else
- status_skip "No source for: vyos-accel-ppp"
-fi
+
+ if ! grep -q "KBUILD_OUTPUT" packages/vyos-kernel/Makefile; then
+ status_fail
+ error_msg "Failed to build package vyos-accel-ppp, no kernel source found\n"
+ fi
+ # Collect kernel information
+ VERSION=$(grep "^VERSION" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ PATCHLEVEL=$(grep "^PATCHLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ SUBLEVEL=$(grep "^SUBLEVEL" packages/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}')
+ ARCH=$(dpkg --print-architecture)
+
+ ( set -e
+ pushd packages/vyos-accel-ppp > /dev/null
+ #echo "src/wireguard.ko /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra" > debian/wireguard-modules.install
+ echo "lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra/*.ko" > debian/vyos-accel-ppp-ipoe-kmod.install
+ sed -i "s#[0-9].[0-9][0-9].[0-9]-amd64-vyos#$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos#g" debian/rules
+ KERNELDIR=$PKGDIR/vyos-kernel dpkg-buildpackage -uc -us -tc -b >$PKGDIR/vyos-accel-ppp.buildlog 2>&1
+ )
+ if [ $? -ne 0 ]; then
+ status_fail
+ error_msg "Failed to build package vyos-accel-ppp, look in vyos-accel-ppp.buildlog to examine the fault\n"
+ return 1
+ fi
+ status_ok
+}
+build_accel-ppp