#!/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 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 "docker instructions" 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-docker-subpaclages" fi 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\n" } error_msg() { echo -ne " $1\n" } ROOTDIR="$(pwd)" PKGDIR="$(pwd)/packages" echo "Cleaning up buildfiles..." rm -rf $PKGDIR/*.deb rm -rf $PKGDIR/*.changes rm -rf $PKGDIR/*.buildlog echo "-----------------------------------------------------" echo "Starting build process for all packages" echo "" for PKG in mdns-repeater \ pmacct \ udp-broadcast-relay \ vyatta-bash \ 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-vrrp \ vyatta-wanloadbalance \ vyatta-webgui \ vyatta-webproxy \ vyatta-wireless \ vyatta-wirelessmodem \ vyatta-zone \ vyos-keepalived \ vyos-nhrp \ vyos-pppoe-server \ 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" fi done # KERNEL if [ -f "packages/vyos-kernel/Makefile" ]; then status_start "Building-package: vyos-kernel" pushd 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) sed -i.bak "s/--linux-packages .* \\\/--linux-packages linux-image-$VERSION\.$PATCHLEVEL\.$SUBLEVEL \\\/" $ROOTDIR/scripts/live-build-config status_ok fi popd > /dev/null else status_skip "No source for: vyos-kernel" fi # 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 status_skip "No source for: vyos-wireguard" fi