summaryrefslogtreecommitdiff
path: root/scripts/build-submodules
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-04-09 20:15:57 +0200
committerChristian Poessinger <christian@poessinger.com>2019-04-23 08:43:23 +0200
commit63493afa4c9cb05cdf7318b841edf52ad0779014 (patch)
tree380d4e5ce9d77a37dc3e6ed4a94a2ea79a5f8a36 /scripts/build-submodules
parenta0b3251dba33a9a2e59aecd742746fc22f96fd8d (diff)
downloadvyos-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-xscripts/build-submodules452
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