rewrite osmocom-nightly-package based on the old osmocom-nightly-split.sh

The split build script also initilize the repository if it's empty and doesn't
need any state of the osc repository.

It also downloads bumpversion and limesuite

Change-Id: I3b55e14b5b4915a3aae23ee382d65bce4ef82774
This commit is contained in:
Alexander Couzens 2017-12-05 16:53:01 +01:00 committed by Harald Welte
parent 53bb902b3f
commit 61038264ed
1 changed files with 164 additions and 69 deletions

View File

@ -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