#!/bin/sh set -e -x deps=" libosmocore libosmo-abis osmo-bts " base="$PWD" rm -f "$base/osmo-bts-sysmo.*.tgz" have_repo() { repo="$1" cd "$base" if [ ! -d "$repo" ]; then git clone "git://git.osmocom.org/$repo" "$repo" fi cd "$repo" git clean -dxf git fetch origin git reset --hard origin/master git rev-parse HEAD cd "$base" } for dep in $deps; do have_repo "$dep" done # for gsm_data_shared.h have_repo openbsc . /opt/poky/1.5.4/environment-setup-armv5te-poky-linux-gnueabi # Cross-compilation: all installations need to be put in the sysmo SDK sysroot export DESTDIR="/opt/poky/1.5.4/sysroots/armv5te-poky-linux-gnueabi" prefix_base="/usr/local/jenkins-build" prefix_base_real="$DESTDIR$prefix_base" rm -rf "$prefix_base_real" prefix="$prefix_base/inst-osmo-bts-sysmo" prefix_real="$DESTDIR$prefix" mkdir -p "$prefix_real" # Installation in non-system dir, but keep the PKG_CONFIG_PATH from the SDK: export PKG_CONFIG_PATH="$prefix_real/lib/pkgconfig:$PKG_CONFIG_PATH" env for dep in $deps; do set +x; echo " ====================== $dep "; set -x cd "$base/$dep" rm -rf * git checkout . echo "$(git rev-parse HEAD) $dep" >> "$prefix_real/osmo-bts-sysmo_git_hashes.txt" autoreconf -fi config_opts="" case "$dep" in 'libosmocore') config_opts="--disable-pcsc" ;; 'osmo-bts') config_opts="--enable-sysmocom-bts --with-openbsc=$base/openbsc/openbsc/include" ;; esac set +x; echo; echo; set -x ./configure --prefix="$prefix" $CONFIGURE_FLAGS $config_opts set +x; echo; echo; set -x make -j8 set +x; echo; echo; set -x make install done # don't package documentation -- the libosmocore docs can be up to 16 Mb large, # a significant amount compared to the binaries rm -rf "$prefix_real/share/doc/libosmocore" # build the archive that is going to be copied to the tester and then to the BTS rm "$base"/*.tgz "$base"/*.md5 || true cd "$prefix_real" this="osmo-bts-sysmo.build-${BUILD_NUMBER}" tar="${this}.tgz" tar czf "$base/$tar" * cd "$base" md5sum "$tar" > "${this}.md5"