osmo-gsm-tester/contrib/jenkins-build-osmo-bts-sysm...

93 lines
2.1 KiB
Bash
Executable File

#!/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"