#!/bin/bash # ci build script # runs tests and then builds the OpenWRT package # requires the following env vars: # - $BUILD_DIR # - $DOWNLOADS_DIR # - $CORES (defaults to 1) set -e ./runtests BUILD_DIR=${BUILD_DIR-./build} DOWNLOADS_DIR=${DOWNLOADS_DIR-./downloads} START_TIME=$(date +"%Y-%m-%d-%H%M%S") VERSIONED_DIR="$DOWNLOADS_DIR/$START_TIME" LATEST_LINK="$DOWNLOADS_DIR/latest" CORES=${CORES:-1} CURRENT_DIR=$(pwd) OPENWRT_BRANCH="openwrt-19.07" mkdir -p $BUILD_DIR mkdir -p $DOWNLOADS_DIR cd $BUILD_DIR if ! [ -d "openwrt" ]; then git clone https://github.com/openwrt/openwrt.git openwrt fi cd openwrt git reset --hard HEAD git checkout $OPENWRT_BRANCH git pull origin $OPENWRT_BRANCH # configure feeds echo "src-link openwisp $CURRENT_DIR" > feeds.conf cat feeds.conf.default >> feeds.conf # remove unneeded feeds sed -i '/telephony/d' feeds.conf sed -i '/routing/d' feeds.conf ./scripts/feeds update -a ./scripts/feeds install -a # any arch/target is fine because the package is architecture indipendent arch="ar71xx" echo "CONFIG_TARGET_$arch=y" > .config; echo "CONFIG_PACKAGE_openwisp-config-openssl=y" >> .config echo "CONFIG_PACKAGE_openwisp-config-mbedtls=y" >> .config echo "CONFIG_PACKAGE_openwisp-config-wolfssl=y" >> .config echo "CONFIG_PACKAGE_openwisp-config-nossl=y" >> .config make defconfig make -j$CORES tools/install make -j$CORES toolchain/install make -j$CORES package/openwisp-config/compile || exit 1 mv $BUILD_DIR/openwrt/bin/packages/mips_24kc/openwisp $VERSIONED_DIR rm $LATEST_LINK || true ln -s $VERSIONED_DIR $LATEST_LINK