diff --git a/scripts/osmocom-nightly-packages.sh b/scripts/osmocom-nightly-packages.sh index c2b603b6..8db2d573 100755 --- a/scripts/osmocom-nightly-packages.sh +++ b/scripts/osmocom-nightly-packages.sh @@ -1,84 +1,179 @@ -#!/bin/sh - +#!/bin/bash # requirements # apt install devscripts git-buildpackage osc git -# rather than including a dangerous 'rm -rf *' here, lets delegate to the user: -if [ -n "$(ls)" ]; then - echo "ERROR: I need to run in an empty directory." - exit 1 -fi +set -e +set -x if ! which osc >/dev/null 2>/dev/null ; then echo "osc binary not found" exit 1 fi - -set -x -e - -git clone git://git.osmocom.org/osmo-sip-connector -git clone git://git.osmocom.org/libosmocore -git clone git://git.osmocom.org/libosmo-sccp -git clone git://git.osmocom.org/libosmo-abis -git clone git://git.osmocom.org/libosmo-netif -git clone git://git.osmocom.org/libsmpp34 -git clone git://git.osmocom.org/libasn1c -git clone git://git.osmocom.org/libgtpnl -git clone git://git.osmocom.org/osmo-iuh -git clone git://git.osmocom.org/osmo-sgsn -git clone git://git.osmocom.org/osmo-ggsn -git clone git://git.osmocom.org/openbsc -git clone git://git.osmocom.org/osmo-pcap -git clone git://git.osmocom.org/osmo-trx -git clone git://git.osmocom.org/osmo-bts -git clone git://git.osmocom.org/osmo-pcu -git clone git://git.osmocom.org/osmo-hlr -git clone git://git.osmocom.org/osmo-mgw -git clone git://git.osmocom.org/osmo-msc -git clone git://git.osmocom.org/osmo-bsc - - +DT=$(date +%Y%m%d) PROJ=network:osmocom:nightly -osc co $PROJ -DT=`date +%Y%m%d` +### common +checkout() { + local name=$1 + local branch=$2 + local url="git://git.osmocom.org" + cd "$REPO" -build() { - rm -rf data - cd $1 - VER=`head -1 debian/changelog | cut -d ' ' -f 2 | sed s,"(","", | sed s,")","",` - dch -v $VER.$DT -m "Snapshot build" - git commit -m "$DT snapshot" debian/ - gbp buildpackage -S -uc -us --git-export-dir=$PWD/../data - cd ../$PROJ/$1 - osc rm * || true - mv ../../data/*.dsc . - mv ../../data/*.tar* . - osc add * - cd ../../ + if [ -n "$branch" ] ; then + git clone "$url/$name" -b "$branch" + else + git clone "$url/$name" + fi + + cd - } -build libosmocore -build libosmo-sccp -build libosmo-abis -build libosmo-netif -build libsmpp34 -build libasn1c -build libgtpnl -build osmo-iuh -build osmo-ggsn -build osmo-sgsn -build openbsc -build osmo-pcap -build osmo-trx -build osmo-sip-connector -build osmo-bts -build osmo-pcu -build osmo-hlr -build osmo-mgw -build osmo-msc -build osmo-bsc +### OBS build +prepare() { + # clean up the whole space + mkdir -p "$REPO/osc/" + cd "$REPO/osc" + osc co "$PROJ" +} -cd $PROJ -osc ci -m "Snapshot $DT" +build() { + local name=$1 + local changelog=$2 + local gitbpargs=$3 + local repodir=$REPO/$name + local oscdir=$REPO/osc/$PROJ/$name + + if [ -z "$changelog" ] ; then + changelog=commit + fi + + if [ -d "$oscdir" ] ; then + # remove earlier version + cd "$oscdir" + osc rm -- * || true + else + # new package + mkdir -p "$oscdir/" + cd "$REPO/osc/$PROJ/" + osc add "$name" + fi + + cd "$repodir" + + if [ "$changelog" = "commit" ] ; then + VER=$(head -1 debian/changelog | cut -d ' ' -f 2 | sed 's,(,,' | sed 's,),,') + dch -v "$VER.$DT" -m "Snapshot build" + git commit -m "$DT snapshot" debian/ + fi + + mkdir -p "$DATA/$name" + # source code build without dependency checks and unsigned source and unsigned change log + gbp buildpackage -S -uc -us -d --git-ignore-branch "--git-export-dir=$DATA/$name" $gitbpargs + + mv "$DATA/$name/"*.tar* "$DATA/$name/"*.dsc "$oscdir/" + + cd "$oscdir" + osc add -- *.tar* *.dsc + osc ci -m "Snapshot $name $DT" +} + +post() { + cd "$REPO/osc/$PROJ/" + osc status +} + +download_bumpversion() { + # bumpversion is required for debian < 9/stretch + local oscdir=$REPO/osc/$PROJ/bumpversion + local version=0.5.3 + local release=3 + + if [ ! -d "$oscdir" ] ; then + mkdir "$oscdir" + cd "$oscdir" + wget "http://http.debian.net/debian/pool/main/b/bumpversion/bumpversion_$version-$release.dsc" + wget "http://http.debian.net/debian/pool/main/b/bumpversion/bumpversion_$version.orig.tar.gz" + wget "http://http.debian.net/debian/pool/main/b/bumpversion/bumpversion_$version-$release.debian.tar.xz" + fi +} + +checkout_limesuite() { + TAG="v17.12.0" + + cd "$REPO" + git clone https://github.com/myriadrf/LimeSuite limesuite + cd limesuite + git checkout "$TAG" +} + +build_osmocom() { + BASE=$PWD + DATA=$BASE/data + REPO=$BASE/repo + + # rather than including a dangerous 'rm -rf *' here, lets delegate to the user: + if [ -n "$(ls)" ]; then + echo "ERROR: I need to run in an empty directory." + exit 1 + fi + + prepare + + checkout libosmocore + checkout libosmo-sccp + checkout libosmo-abis + checkout libosmo-netif + checkout libsmpp34 + checkout libasn1c + checkout libgtpnl + checkout osmo-iuh + checkout osmo-ggsn + checkout osmo-sgsn + checkout openbsc + checkout osmo-pcap + checkout osmo-trx + checkout osmo-sip-connector + checkout osmo-bts + checkout osmo-pcu + checkout osmo-hlr + checkout osmo-mgw + checkout osmo-msc + checkout osmo-bsc + checkout_limesuite + + build libosmocore + build libosmo-sccp + build libosmo-abis + build libosmo-netif + build libsmpp34 + build libasn1c + build libgtpnl + build osmo-iuh + build osmo-ggsn + build osmo-sgsn + build openbsc + build osmo-pcap + build osmo-trx + build osmo-sip-connector + build osmo-bts + build osmo-pcu + build osmo-hlr + build osmo-mgw + build osmo-msc + build osmo-bsc + + download_bumpversion + build limesuite no_commit --git-upstream-tree=v17.12.0 + + post +} + +if ! which osc >/dev/null 2>/dev/null ; then + echo "osc binary is not installed" + exit 1 +fi + +TMPDIR=$(mktemp -d nightly-3g_XXXXXX) +cd "$TMPDIR" +build_osmocom