mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
295 lines
7.8 KiB
Bash
Executable File
295 lines
7.8 KiB
Bash
Executable File
#!/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|-v - Enable verbose output"
|
|
}
|
|
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-h|-?|--help)
|
|
print_help
|
|
exit 0
|
|
;;
|
|
--init-packages)
|
|
INIT_PACKAGES=1
|
|
;;
|
|
--verbose|-v)
|
|
VERBOSE=1
|
|
;;
|
|
*)
|
|
(>&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\n"
|
|
}
|
|
|
|
error_msg() {
|
|
echo -ne " $1\n"
|
|
}
|
|
ROOTDIR="$(pwd)"
|
|
PKGDIR="$ROOTDIR/packages"
|
|
SCRIPTDIR="$ROOTDIR/scripts"
|
|
|
|
build_package() {
|
|
PKG=$1
|
|
status_start "Building package: $PKG"
|
|
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
|
|
) >>$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
|
|
rm -rf $PKGDIR/*.buildlog
|
|
echo "-----------------------------------------------------"
|
|
echo "Starting build process for all packages"
|
|
echo ""
|
|
|
|
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
|
|
if [ $VERBOSE ]; then
|
|
cat $PKGDIR/init-packages.buildlog
|
|
fi
|
|
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
|
|
|
|
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
|
|
build_package "$PKG"
|
|
ERRCODE=$?
|
|
if [ "$ERRCODE" -ne "0" ]; then
|
|
exit $ERRCODE
|
|
fi
|
|
done
|
|
|
|
# KERNEL
|
|
build_kernel() {
|
|
status_start "Building-package: vyos-kernel"
|
|
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
|
|
if [ $VERBOSE ]; then
|
|
cat $PKGDIR/vyos-kernel.buildlog
|
|
fi
|
|
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)
|
|
echo "$VERSION.$PATCHLEVEL.$SUBLEVEL" > $ROOTDIR/data/kernel_version
|
|
status_ok
|
|
}
|
|
build_kernel
|
|
ERRCODE=$?
|
|
if [ "$ERRCODE" -ne "0" ]; then
|
|
exit $ERRCODE
|
|
fi
|
|
|
|
|
|
# WIREGUARD
|
|
build_wireguard() {
|
|
status_start "Building package: vyos-wireguard"
|
|
|
|
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
|
|
) >>$PKGDIR/vyos-wireguard.buildlog 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
status_fail
|
|
if [ $VERBOSE ]; then
|
|
cat $PKGDIR/vyos-wireguard.buildlog
|
|
fi
|
|
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() {
|
|
status_start "Building package: vyos-accel-ppp"
|
|
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
|
|
) >>$PKGDIR/vyos-accel-ppp.buildlog 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
status_fail
|
|
if [ $VERBOSE ]; then
|
|
cat $PKGDIR/vyos-accel-ppp.buildlog
|
|
fi
|
|
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
|