blob: 426495e6856442884fc09f455fced6fa252d68e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
#!/bin/bash
# Generate source packages and upload them to OBS, for the nightly or next feed.
# New packages are always uploaded, even if the source does not change. Only
# packages of the same build date (DT) can be installed together.
# Environment variables:
# * PROJ: the OBS namespace to upload to (e.g. "network:osmocom:nightly")
# * FEED: controls the source branch that is used:
# * "nightly": use "master" branch (default)
# * "next": use "next" branch if it exists, otherwise use "master" branch
# * other (e.g. "2021q1"): use last commit of branch of same name, exit with
# error if it does not exist
# * PACKAGES: set to a space-separated list of packages to skip all others
. "$(dirname "$0")/common.sh"
. "$(dirname "$0")/common-obs.sh"
# Values for FEED env var. Adjust FEEDS_ALL in common-obs when changing.
FEEDS="
2021q1
2021q4
2022q1
2022q2
next
nightly
"
set -e
set -x
DT=$(date +%Y%m%d%H%M)
OSMO_OBS_CONFLICT_PKGVER="$OSMO_OBS_CONFLICT_PKGVER.$DT"
TOP=$(pwd)/$(mktemp -d nightly-3g_XXXXXX)
FEED="${FEED:-nightly}"
### OBS build
prepare() {
# clean up the whole space
mkdir -p "$REPO/osc/"
cd "$REPO/osc"
osc co "$PROJ"
cd "$REPO"
osmo_obs_prepare_conflict
}
get_last_tag() {
project="$1"
if [ "$project" = "limesuite" ]; then
ver_regexp="^v[0-9]*.[0-9]*.[0-9]*$"
else
ver_regexp="^[0-9]*.[0-9]*.[0-9]*$"
fi
VER=$(git -C "${REPO}/${project}" tag -l --sort=v:refname | grep "$ver_regexp" | tail -n 1)
echo "${VER}"
}
### common
checkout() {
local name=$1
local url=$2
local branch=$3
if osmo_obs_skip_pkg "$name"; then
return
fi
if [ -z "$url" ]; then
url="$(osmo_git_clone_url "$name")"
fi
if [ -z "$branch" ]; then
case "$FEED" in
nightly|next) ;;
*) branch="$FEED" ;; # e.g. 2021q1
esac
fi
cd "$REPO"
if [ -n "$branch" ] ; then
osmo_git_clone_date "$url" -b "$branch"
else
osmo_git_clone_date "$url"
fi
if [ "$FEED" = "next" ] && git -C "$name" show-branch remotes/origin/next >/dev/null 2>&1; then
git -C "$name" checkout next
fi
cd -
}
# Generate a source package and upload it to OBS
# $1: package name (e.g. "libosmocore")
# $2: update debian dir, unless set to "no_commit":
# * add dependency on osmocom-$FEED package
# * add new version to changelog (e.g. "1.5.1.96.c96d7.202104281354")
# $3: arguments to pass to "gbp buildpackage"
build() {
local name=$1
local changelog=$2
local gitbpargs=$3
local repodir=$REPO/$name
local oscdir=$REPO/osc/$PROJ/$name
local dependver="$OSMO_OBS_CONFLICT_PKGVER"
if osmo_obs_skip_pkg "$name"; then
return
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" != "no_commit" ] ; then
osmo_obs_git_version_gen
# Add date to increase version even if commit did not change (OS#5135)
VER="$(osmo_obs_get_commit_version).$DT"
osmo_obs_add_depend_deb "./debian/control" "$name" "osmocom-$FEED" "$dependver"
dch -b -v "$VER" -m "Snapshot build"
git commit -m "$VER snapshot" debian/
fi
mkdir -p "$DATA/$name"
if [ "$name" = "open5gs" ]; then
# we cannot control the output directory of the generated source :(
dpkg-buildpackage -S -uc -us -d
mv "../$name"*.tar* "../$name"*.dsc "$DATA/$name/"
elif [ -f .tarball-version ]; then
gbp buildpackage -S -uc -us -d --git-ignore-branch "--git-export-dir=$DATA/$name" \
--git-ignore-new $gitbpargs \
--git-postexport='cp $GBP_GIT_DIR/../.tarball-version $GBP_TMP_DIR/'
else
gbp buildpackage -S -uc -us -d --git-ignore-branch "--git-export-dir=$DATA/$name" \
--git-ignore-new $gitbpargs
fi
mv "$DATA/$name/"*.tar* "$DATA/$name/"*.dsc "$oscdir/"
cd "$oscdir"
osc add -- *.tar* *.dsc
osmo_obs_add_rpm_spec "$oscdir" "$repodir" "$name" "osmocom-$FEED" "$dependver"
osc ci -m "Snapshot $name $DT" --noservice
}
post() {
cd "$REPO/osc/$PROJ/"
osc status
}
checkout_limesuite() {
if osmo_obs_skip_pkg "limesuite"; then
return
fi
cd "$REPO"
git clone https://github.com/myriadrf/LimeSuite limesuite
TAG="$(get_last_tag limesuite)"
cd limesuite
git checkout "$TAG"
}
checkout_open5gs() {
if osmo_obs_skip_pkg "open5gs"; then
return
fi
cd "$REPO"
git clone https://github.com/open5gs/open5gs
cd open5gs
meson subprojects download freeDiameter
}
build_osmocom() {
DATA=$TOP/data
REPO=$TOP/repo
# rather than including a dangerous 'rm -rf *' here, lets delegate to the user:
if [ -n "$(ls $TOP)" ]; then
echo "ERROR: I need to run in an empty directory."
exit 1
fi
prepare
# NOTE: when adding a repository that is not in gerrit, adjust osmo_git_clone_url()
checkout_limesuite
checkout osmo-gsm-manuals
checkout libosmocore
checkout libosmo-sccp
checkout libosmo-abis
checkout libosmo-netif
checkout libsmpp34
checkout libasn1c
checkout libgtpnl
checkout libusrp
checkout osmo-iuh
checkout osmo-ggsn
checkout osmo-sgsn
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 python/osmo-python-tests
checkout rtl-sdr
checkout osmo-fl2k
checkout simtrace2
checkout libosmo-dsp
checkout osmo-sysmon
checkout osmo-remsim
checkout_open5gs
checkout neocon https://github.com/laf0rge/neocon
checkout osmo-uecups
checkout osmo-e1d
checkout osmo-smlc
checkout osmo-cbc
checkout osmo-gbproxy
checkout osmo-hnodeb
checkout osmo-hnbgw
checkout osmo-bsc-nat
cd "$REPO"
build osmocom-$FEED no_commit
build limesuite no_commit --git-upstream-tree="$(get_last_tag limesuite)"
build osmo-gsm-manuals
build libosmocore
build libosmo-sccp
build libosmo-abis
build libosmo-netif
build libsmpp34
build libasn1c
build libgtpnl
build libusrp
build osmo-iuh
build osmo-ggsn
build osmo-sgsn
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
build osmo-python-tests
build rtl-sdr
build osmo-fl2k
build simtrace2
build libosmo-dsp
build osmo-sysmon
build osmo-remsim
build open5gs
build neocon
build osmo-uecups
build osmo-e1d
build osmo-smlc
build osmo-cbc
build osmo-gbproxy
build osmo-hnodeb
build osmo-hnbgw
build osmo-bsc-nat
post
}
osmo_obs_verify_feed
build_osmocom
|