diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-04-09 20:15:57 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-04-23 08:43:23 +0200 |
commit | 63493afa4c9cb05cdf7318b841edf52ad0779014 (patch) | |
tree | 380d4e5ce9d77a37dc3e6ed4a94a2ea79a5f8a36 /scripts/build-submodules | |
parent | a0b3251dba33a9a2e59aecd742746fc22f96fd8d (diff) | |
download | vyos-build-63493afa4c9cb05cdf7318b841edf52ad0779014.tar.gz vyos-build-63493afa4c9cb05cdf7318b841edf52ad0779014.zip |
Replace build-submodules with Python based package builder
Support building individual VyOS packages by this modules. Call
scripts/build-packages -l to list all available packages which will be
build when invoking scripts/build-packages.
Diffstat (limited to 'scripts/build-submodules')
-rwxr-xr-x | scripts/build-submodules | 452 |
1 files changed, 0 insertions, 452 deletions
diff --git a/scripts/build-submodules b/scripts/build-submodules deleted file mode 100755 index fc8fdf83..00000000 --- a/scripts/build-submodules +++ /dev/null @@ -1,452 +0,0 @@ -#!/bin/bash - -if [ ! -d "packages" ]; then - echo "This script needs to be executed inside the top root of vyos-build" - exit 1 -fi - -print_help() { - echo "Script for building all subpackages to vyos" - echo "Execute this sctipt from the root of the vyos-build directory" - echo "" - echo "This script could be executed from a Debian Jessie installation with all dependencies" - echo "or from the vyos-builder docker container." - echo "" - echo "Build the container:" - 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-submodules" - echo "" - echo "Parameters:" - echo " --init-packages - Initiate all subpackages before building" - echo " --verbose - Enable verbose output" - echo " --build-[packagename] - build only selected packages" -} - -BUILDLIST="" -VERBOSE=0 - -while test $# -gt 0 -do - case "$1" in - -h|-?|--help) - print_help - exit 0 - ;; - --init-packages) - INIT_PACKAGES=1 - ;; - --verbose) - VERBOSE=1 - ;; - --build-*) - VAL=$(sed s/^--build-//g <<< $1) - BUILDLIST="$BUILDLIST $VAL" - ;; - *) - (>&2 echo "Error: Argument $1 is not valid") - echo "" - print_help - exit 1 - ;; - esac - shift -done - -status_start() { - echo -ne "[ ] $1" -} -status_ok() { - echo -ne "\r[\e[32m OK \e[39m]\n" -} - -status_fail() { - echo -ne "\r[\e[31mFAIL\e[39m]\n" -} - -status_skip() { - echo -ne "\r[SKIP] $1\033[K\n" -} - -error_msg() { - echo -ne " $1\n" -} - -verbose_msg() { - if [ $VERBOSE -ne 0 ]; then - echo "Current Environment:" - env - - if [ ! -z "$1" ]; then - echo "Logfile:" - cat $1 - fi - fi -} - -ROOTDIR="$(pwd)" -PKGDIR="$ROOTDIR/packages" -SCRIPTDIR="$ROOTDIR/scripts" - -# Source OPAM environment if not already set -if [ -z "$OPAMROOT" ]; then - if [ -x "$(command -v opam)" ]; then - eval $(opam env --root=/opt/opam --set-root) - else - echo "WARNING: 'opam' not installed, can't build VyConf and libvyosconfig" - fi -fi - -package_in_buildlist() { - # Return true if buildlist is not set - if [ -z "$BUILDLIST" ]; then - return 0 - fi - - if [[ $BUILDLIST =~ (^|[[:space:]])$1($|[[:space:]]) ]]; then - return 0 - fi - - return 1 -} - -build_package() { - PKG=$1 - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - if ! package_in_buildlist $1; then - return 0 - fi - status_start "Building package: $PKG Commit id: $COMMITID" - if [ ! -d "$PKGDIR/$PKG/debian" ]; then - status_skip "No source for: $PKG" - return 1 - fi - ( set -e; set -x - cd $PKGDIR/$PKG - dpkg-buildpackage -uc -us -tc -b -j$(cat /proc/cpuinfo | grep processor | wc -l) - ) >>$PKGDIR/$PKG.buildlog 2>&1 - if [ $? -ne 0 ]; then - status_fail - verbose_msg "$PKGDIR/$PKG.buildlog" - 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 -rm -rf $PKGDIR/*.buildlog -COMMITID=$(cd $PKGDIR; git rev-parse --short=10 HEAD) -echo "-----------------------------------------------------" -echo "Starting build process for all packages" -echo "vyos-build Commit ID: $COMMITID" - -initialize_packages() { - status_start "Initializing packages" - ( - set -x - git submodule update --init --recursive - git submodule update --remote - ) >>$PKGDIR/init-packages.buildlog 2>&1 - if [ $? -ne 0 ]; then - status_fail - verbose_msg "$PKGDIR/init-packages.buildlog" - error_msg "Failed to update all package, look in init-packages.buildlog to examine the fault\n" - return 1 - fi - status_ok -} -if [ $INIT_PACKAGES ]; then - initialize_packages -fi - -build_libyang() { - PKG=libyang - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - if ! package_in_buildlist $1; then - return 0 - fi - status_start "Building package: $PKG Commit id: $COMMITID" - if [ ! -f "$PKGDIR/$PKG/README.md" ]; then - status_skip "No source for: $PKG" - return 1 - fi - - ( set -e; set -x - cd $PKGDIR/$PKG - git checkout 179da47f2e8de - - git clean -dxf - git reset --hard - - mkdir build - cd build - - cmake .. - make build-deb - - cp debs/* $PKGDIR - - ) >>$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 -} -build_libyang - -build_frr() { - PKG=frr - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - if ! package_in_buildlist $1; then - return 0 - fi - status_start "Building package: $PKG Commit id: $COMMITID" - if [ ! -f "$PKGDIR/$PKG/README.md" ]; then - status_skip "No source for: $PKG" - return 1 - fi - - ( set -e; set -x - cd $PKGDIR/$PKG - git clean -dxf - git reset --hard - - # Run bootstrap.sh and make a dist tarball - # http://docs.frrouting.org/projects/dev-guide/en/latest/packaging-debian.html - ./bootstrap.sh - ./configure --with-pkg-extra-version=-vyos - make dist - - # Create backports debian sources - mv debianpkg debian - make -f debian/rules backports - - # Create a new directory to build the package and populate with package source. - mkdir frrpkg - cd frrpkg - tar xf ../frr_*.orig.tar.gz - cd frr* - source /etc/os-release - tar xf ../../frr_*${ID}${VERSION_ID}*.debian.tar.xz - - # Build Debian Package - debuild --no-lintian --set-envvar=WANT_SNMP=1 --set-envvar=WANT_RPKI=1 \ - --set-envvar=WANT_CUMULUS_MODE=0 -b -uc -us \ - -j$(cat /proc/cpuinfo | grep processor | wc -l) - - mv ../frr_*.deb $PKGDIR - ) >>$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 -} -build_frr - -for PKG in mdns-repeater \ - pmacct \ - udp-broadcast-relay \ - conntrack-tools \ - eventwatchd \ - ddclient \ - rtrlib \ - hvinfo \ - igmpproxy \ - ipaddrcheck \ - lldpd \ - libvyosconfig \ - vyatta-bash \ - vyatta-biosdevname \ - vyatta-cfg \ - vyatta-cfg-firewall \ - vyatta-cfg-op-pppoe \ - vyatta-cfg-qos \ - vyatta-cfg-quagga \ - vyatta-cfg-system \ - vyatta-cfg-vpn \ - vyatta-cluster \ - vyatta-config-mgmt \ - vyatta-config-migrate \ - vyatta-conntrack \ - vyatta-conntrack-sync \ - vyatta-eventwatch \ - vyatta-iproute \ - vyatta-ipv6-rtradv \ - vyatta-lldp \ - vyatta-nat \ - vyatta-netflow \ - vyatta-op \ - vyatta-op-dhcp-server \ - vyatta-op-firewall \ - vyatta-op-qos \ - vyatta-op-quagga \ - vyatta-op-vpn \ - vyatta-openvpn \ - vyatta-ravpn \ - vyatta-wanloadbalance \ - vyatta-webgui \ - vyatta-webproxy \ - vyatta-wireless \ - vyatta-wirelessmodem \ - vyatta-zone \ - vyos-xe-guest-utilities \ - vyos-keepalived \ - vyos-netplug \ - vyos-nhrp \ - vyos-opennhrp \ - vyos-salt-minion \ - vyos-strongswan \ - vyos-vmwaretools-scripts \ - vyos-world \ - vyos-1x \ - ; do - build_package "$PKG" - ERRCODE=$? - if [ "$ERRCODE" -ne "0" ]; then - exit $ERRCODE - fi -done - -# KERNEL -build_kernel() { - PKG="vyos-kernel" - if ! package_in_buildlist "vyos-kernel"; then - return 0 - fi - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - status_start "Building-package: vyos-kernel Commit ID:$COMMITID" - if [ ! -f "$PKGDIR/vyos-kernel/Makefile" ]; then - status_skip "No source for: vyos-kernel" - return 0 - fi - - ( set -e; set -x - cd $PKGDIR/vyos-kernel > /dev/null - bash -c "$SCRIPTDIR/build-kernel" - ) >>$PKGDIR/vyos-kernel.buildlog 2>&1 - if [ $? -ne 0 ]; then - status_fail - verbose_msg "$PKGDIR/vyos-kernel.buildlog" - error_msg "Failed to build package vyos-kernel, look in vyos-kernel.buildlog to examine the fault\n" - return 1 - fi - - VERSION=$(grep "^VERSION" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - PATCHLEVEL=$(grep "^PATCHLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - SUBLEVEL=$(grep "^SUBLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - ARCH=$(dpkg --print-architecture) - status_ok -} -build_kernel -ERRCODE=$? -if [ "$ERRCODE" -ne "0" ]; then - exit $ERRCODE -fi - - -# WIREGUARD -build_wireguard() { - PKG="vyos-wireguard" - if ! package_in_buildlist "vyos-wireguard"; then - return 0 - fi - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - status_start "Building package: vyos-wireguard Commit ID:$COMMITID" - - if [ ! -d "$PKGDIR/vyos-wireguard/debian" ]; then - status_skip "No source for: vyos-wireguard" - return 0 - fi - - if [ ! -f "$PKGDIR/vyos-kernel/Makefile" ]; then - status_fail - error_msg "No Makefile found in kernel package" - return 1 - fi - - if ! grep -q "KBUILD_OUTPUT" $PKGDIR/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" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - PATCHLEVEL=$(grep "^PATCHLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - SUBLEVEL=$(grep "^SUBLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - ARCH=$(dpkg --print-architecture) - # Collect kernel information - ( set -e; set -x - cd $PKGDIR/vyos-wireguard - echo "src/wireguard.ko /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra" | tee debian/wireguard-modules.install - KERNELDIR=$PKGDIR/vyos-kernel dpkg-buildpackage -uc -us -tc -b -j$(cat /proc/cpuinfo | grep processor | wc -l) - ) >>$PKGDIR/vyos-wireguard.buildlog 2>&1 - if [ $? -ne 0 ]; then - status_fail - verbose_msg "$PKGDIR/vyos-wireguard.buildlog" - 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 -ERRCODE=$? -if [ "$ERRCODE" -ne "0" ]; then - exit $ERRCODE -fi - -# ACCEL-PPP -build_accel-ppp() { - PKG="vyos-accel-ppp" - if ! package_in_buildlist "accel-ppp"; then - return 0 - fi - COMMITID=$(cd $PKGDIR/$PKG; git rev-parse --short=10 HEAD) - status_start "Building package: vyos-accel-ppp Commit ID: $COMMITID" - if [ ! -d "$PKGDIR/vyos-accel-ppp/debian" ]; then - status_skip "No source for: vyos-accel-ppp" - return 0 - fi - - if [ ! -f "$PKGDIR/vyos-kernel/Makefile" ]; then - status_fail - error_msg "No Makefile found in kernel package" - return 1 - fi - - if ! grep -q "KBUILD_OUTPUT" $PKGDIR/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" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - PATCHLEVEL=$(grep "^PATCHLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - SUBLEVEL=$(grep "^SUBLEVEL" $PKGDIR/vyos-kernel/Makefile | grep -Eo '[0-9]{1,4}') - ARCH=$(dpkg --print-architecture) - - ( set -e; set -x - cd $PKGDIR/vyos-accel-ppp - echo "lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$ARCH-vyos/extra/*.ko" | tee 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 -j$(cat /proc/cpuinfo | grep processor | wc -l) - ) >>$PKGDIR/vyos-accel-ppp.buildlog 2>&1 - if [ $? -ne 0 ]; then - status_fail - verbose_msg "$PKGDIR/vyos-accel-ppp.buildlog" - 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 -ERRCODE=$? -if [ "$ERRCODE" -ne "0" ]; then - exit $ERRCODE -fi |