<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/docker-playground/+/23562">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ogt: Add support to build open5gs<br><br>meson from open5gs requires debian10's version. physicial sysmocom OGT<br>setup already migrated to debian10, do the same here.<br><br>Related: SYS#4805<br>Change-Id: Id329726f93251b617219beeb674046065c30a436<br>---<br>M osmo-gsm-tester/Dockerfile<br>M osmo-gsm-tester/jenkins.sh<br>M osmo-gsm-tester/osmo-gsm-tester-master.sh<br>M osmo-gsm-tester/resources.conf<br>4 files changed, 106 insertions(+), 20 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/62/23562/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/osmo-gsm-tester/Dockerfile b/osmo-gsm-tester/Dockerfile</span><br><span>index 8dea613..dc8ba1b 100644</span><br><span>--- a/osmo-gsm-tester/Dockerfile</span><br><span>+++ b/osmo-gsm-tester/Dockerfile</span><br><span>@@ -1,5 +1,6 @@</span><br><span> ARG USER</span><br><span> FROM $USER/debian-buster-jenkins</span><br><span style="color: hsl(120, 100%, 40%);">+ARG OGT_MASTER_ADDR="172.18.50.2"</span><br><span> </span><br><span> MAINTAINER Pau Espin Pedrol <pespin@sysmocom.de></span><br><span> </span><br><span>@@ -37,7 +38,8 @@</span><br><span> "git+https://github.com/podshumok/python-smpplib.git@master#egg=smpplib" \</span><br><span> pydbus \</span><br><span> pyusb \</span><br><span style="color: hsl(0, 100%, 40%);">- pysispm</span><br><span style="color: hsl(120, 100%, 40%);">+ pysispm \</span><br><span style="color: hsl(120, 100%, 40%);">+ pymongo</span><br><span> </span><br><span> # Intall sshd:</span><br><span> RUN apt-get update && apt-get install -y openssh-server</span><br><span>@@ -51,13 +53,10 @@</span><br><span> /osmo-gsm-tester-srsenb \</span><br><span> /osmo-gsm-tester-srsepc \</span><br><span> /osmo-gsm-tester-trx \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-grbroker</span><br><span style="color: hsl(120, 100%, 40%);">+ /osmo-gsm-tester-grbroker \</span><br><span style="color: hsl(120, 100%, 40%);">+ /osmo-gsm-tester-open5gs</span><br><span> RUN chown -R jenkins:jenkins \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-srsue \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-srsenb \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-srsepc \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-trx \</span><br><span style="color: hsl(0, 100%, 40%);">- /osmo-gsm-tester-grbroker</span><br><span style="color: hsl(120, 100%, 40%);">+ /osmo-gsm-tester-*</span><br><span> </span><br><span> # Set a UTF-8 locale</span><br><span> RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \</span><br><span>@@ -112,6 +111,45 @@</span><br><span> gnuradio && \</span><br><span> apt-get clean</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# install open5gs dependencies: (mongodb not available in Debian)</span><br><span style="color: hsl(120, 100%, 40%);">+# systemctl stuff: workaround for https://jira.mongodb.org/browse/SERVER-54386</span><br><span style="color: hsl(120, 100%, 40%);">+ADD https://www.mongodb.org/static/pgp/server-4.4.asc /tmp/mongodb-server-4.4.asc</span><br><span style="color: hsl(120, 100%, 40%);">+RUN apt-key add /tmp/mongodb-server-4.4.asc && \</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" > /etc/apt/sources.list.d/mongodb-org-4.4.list</span><br><span style="color: hsl(120, 100%, 40%);">+RUN apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+ systemctl_path=$(which systemctl) && \</span><br><span style="color: hsl(120, 100%, 40%);">+ mv $systemctl_path /tmp/systemctl && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get install -y --no-install-recommends mongodb-org && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get clean && \</span><br><span style="color: hsl(120, 100%, 40%);">+ mv /tmp/systemctl $systemctl_path && \</span><br><span style="color: hsl(120, 100%, 40%);">+ sed -i "s/127.0.0.1/$OGT_MASTER_ADDR/g" /etc/mongod.conf</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# install open5gs dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+RUN apt-get update && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get install -y --no-install-recommends \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-pip \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-setuptools \</span><br><span style="color: hsl(120, 100%, 40%);">+ python3-wheel \</span><br><span style="color: hsl(120, 100%, 40%);">+ ninja-build \</span><br><span style="color: hsl(120, 100%, 40%);">+ build-essential \</span><br><span style="color: hsl(120, 100%, 40%);">+ flex \</span><br><span style="color: hsl(120, 100%, 40%);">+ bison \</span><br><span style="color: hsl(120, 100%, 40%);">+ git \</span><br><span style="color: hsl(120, 100%, 40%);">+ libsctp-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libgnutls28-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libgcrypt-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libssl-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libidn11-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libmongoc-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libbson-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libyaml-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libnghttp2-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libmicrohttpd-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libcurl4-gnutls-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ libnghttp2-dev \</span><br><span style="color: hsl(120, 100%, 40%);">+ meson && \</span><br><span style="color: hsl(120, 100%, 40%);">+ apt-get clean</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> WORKDIR /tmp</span><br><span> </span><br><span> ARG OSMO_GSM_TESTER_BRANCH="master"</span><br><span>diff --git a/osmo-gsm-tester/jenkins.sh b/osmo-gsm-tester/jenkins.sh</span><br><span>index ae645e7..536e119 100755</span><br><span>--- a/osmo-gsm-tester/jenkins.sh</span><br><span>+++ b/osmo-gsm-tester/jenkins.sh</span><br><span>@@ -28,34 +28,45 @@</span><br><span> SRS_LTE_BRANCH=${SRS_LTE_BRANCH:-master}</span><br><span> SRS_LTE_REPO_PREFIX=${SRS_LTE_REPO_PREFIX:-git@github.com:srsLTE}</span><br><span> SRS_LTE_REPO_NAME=${SRS_LTE_REPO_NAME:-srsLTE}</span><br><span style="color: hsl(0, 100%, 40%);">-have_repo_srslte() {</span><br><span style="color: hsl(120, 100%, 40%);">+OPEN5GS_REPO_PREFIX=${OPEN5GS_REPO_PREFIX:-git@github.com:open5gs}</span><br><span style="color: hsl(120, 100%, 40%);">+OPEN5GS_BRANCH=${OPEN5GS_BRANCH:-main}</span><br><span style="color: hsl(120, 100%, 40%);">+have_repo() {</span><br><span style="color: hsl(120, 100%, 40%);">+ repo_prefix=$1</span><br><span style="color: hsl(120, 100%, 40%);">+ repo_name=$2</span><br><span style="color: hsl(120, 100%, 40%);">+ branch=$3</span><br><span> echo "srsLTE inst not provided, fetching it now and it will be build in container"</span><br><span style="color: hsl(0, 100%, 40%);">- if [ -d "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" ]; then</span><br><span style="color: hsl(0, 100%, 40%);">- git fetch -C ${TRIAL_DIR}/${SRS_LTE_REPO_NAME}</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ -d "${TRIAL_DIR}/${repo_name}" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ git fetch -C ${TRIAL_DIR}/${repo_name}</span><br><span> else</span><br><span> mkdir -p ${TRIAL_DIR}</span><br><span style="color: hsl(0, 100%, 40%);">- git clone "${SRS_LTE_REPO_PREFIX}/${SRS_LTE_REPO_NAME}" "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}"</span><br><span style="color: hsl(120, 100%, 40%);">+ git clone "${repo_prefix}/${repo_name}" "${TRIAL_DIR}/${repo_name}"</span><br><span> fi</span><br><span> # Figure out whether we need to prepend origin/ to find branches in upstream.</span><br><span> # Doing this allows using git hashes instead of a branch name.</span><br><span style="color: hsl(0, 100%, 40%);">- if git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" rev-parse "origin/$SRS_LTE_BRANCH"; then</span><br><span style="color: hsl(0, 100%, 40%);">- SRS_LTE_BRANCH="origin/$SRS_LTE_BRANCH"</span><br><span style="color: hsl(120, 100%, 40%);">+ if git -C "${TRIAL_DIR}/${repo_name}" rev-parse "origin/$branch"; then</span><br><span style="color: hsl(120, 100%, 40%);">+ branch="origin/$branch"</span><br><span> fi</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" checkout -B build_branch "$SRS_LTE_BRANCH"</span><br><span style="color: hsl(0, 100%, 40%);">- rm -rf "${TRIAL_DIR:?}/${SRS_LTE_REPO_NAME}/*"</span><br><span style="color: hsl(0, 100%, 40%);">- git -C "${TRIAL_DIR}/${SRS_LTE_REPO_NAME}" reset --hard "$SRS_LTE_BRANCH"</span><br><span style="color: hsl(120, 100%, 40%);">+ git -C "${TRIAL_DIR}/${repo_name}" checkout -B build_branch "$branch"</span><br><span style="color: hsl(120, 100%, 40%);">+ rm -rf "${TRIAL_DIR:?}/${repo_name}/*"</span><br><span style="color: hsl(120, 100%, 40%);">+ git -C "${TRIAL_DIR}/${repo_name}" reset --hard "$branch"</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> # If srsLTE trial not provided by user, fetch srsLTE git repo and let the container build it:</span><br><span> if [ "x$(ls ${TRIAL_DIR}/srslte.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then</span><br><span style="color: hsl(0, 100%, 40%);">- have_repo_srslte</span><br><span style="color: hsl(120, 100%, 40%);">+ have_repo $SRS_LTE_REPO_PREFIX $SRS_LTE_REPO_NAME $SRS_LTE_BRANCH</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If open5gs trial not provided by user, fetch srsLTE git repo and let the container build it:</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "x$(ls ${TRIAL_DIR}/open5gs.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ have_repo $OPEN5GS_REPO_PREFIX "open5gs" $OPEN5GS_BRANCH</span><br><span style="color: hsl(120, 100%, 40%);">+ have_repo "https://github.com/open5gs" "freeDiameter" "open5gs"</span><br><span style="color: hsl(120, 100%, 40%);">+ mv "${TRIAL_DIR}/freeDiameter" "${TRIAL_DIR}/open5gs/subprojects"</span><br><span> fi</span><br><span> </span><br><span> . ../jenkins-common.sh</span><br><span> IMAGE_SUFFIX="${IMAGE_SUFFIX:-master}"</span><br><span> docker_images_require \</span><br><span style="color: hsl(0, 100%, 40%);">- "debian-stretch-jenkins" \</span><br><span style="color: hsl(120, 100%, 40%);">+ "debian-buster-jenkins" \</span><br><span> "osmo-gsm-tester"</span><br><span> </span><br><span> set_clean_up_trap</span><br><span>diff --git a/osmo-gsm-tester/osmo-gsm-tester-master.sh b/osmo-gsm-tester/osmo-gsm-tester-master.sh</span><br><span>index 4a32376..ae300c9 100755</span><br><span>--- a/osmo-gsm-tester/osmo-gsm-tester-master.sh</span><br><span>+++ b/osmo-gsm-tester/osmo-gsm-tester-master.sh</span><br><span>@@ -34,11 +34,47 @@</span><br><span> popd</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+build_open5gs() {</span><br><span style="color: hsl(120, 100%, 40%);">+ git_repo_dir="/tmp/trial/open5gs"</span><br><span style="color: hsl(120, 100%, 40%);">+ if [ ! -d "$git_repo_dir" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "No external trial nor git repo provided for Open5GS!"</span><br><span style="color: hsl(120, 100%, 40%);">+ exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ fi</span><br><span style="color: hsl(120, 100%, 40%);">+ pushd "/tmp/trial"</span><br><span style="color: hsl(120, 100%, 40%);">+ rm -rf sysroot && mkdir sysroot</span><br><span style="color: hsl(120, 100%, 40%);">+ rm -rf build && mkdir build && cd build || exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+ meson "${git_repo_dir}" --prefix="/tmp/trial/sysroot" --libdir="lib"</span><br><span style="color: hsl(120, 100%, 40%);">+ set +x; echo; echo; set -x</span><br><span style="color: hsl(120, 100%, 40%);">+ ninja "-j$(nproc)"</span><br><span style="color: hsl(120, 100%, 40%);">+ set +x; echo; echo; set -x</span><br><span style="color: hsl(120, 100%, 40%);">+ ninja install</span><br><span style="color: hsl(120, 100%, 40%);">+ find "/tmp/trial/sysroot/lib" -depth -type f -name "lib*.so.*" -exec patchelf --set-rpath '$ORIGIN/' {} \;</span><br><span style="color: hsl(120, 100%, 40%);">+ cd ..</span><br><span style="color: hsl(120, 100%, 40%);">+ this="open5gs.build-${BUILD_NUMBER-$(date +%Y-%m-%d_%H_%M_%S)}"</span><br><span style="color: hsl(120, 100%, 40%);">+ tar="${this}.tgz"</span><br><span style="color: hsl(120, 100%, 40%);">+ tar czf "/tmp/trial/$tar" -C "/tmp/trial/sysroot" .</span><br><span style="color: hsl(120, 100%, 40%);">+ rm -rf build sysroot</span><br><span style="color: hsl(120, 100%, 40%);">+ md5sum "$tar" >>checksums.md5</span><br><span style="color: hsl(120, 100%, 40%);">+ popd</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> # Build srsLTE.git if not provided by host system:</span><br><span> if [ "x$(ls /tmp/trial/srslte.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then</span><br><span> build_srslte</span><br><span> fi</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# Build open5gs.git if not provided by host system:</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "x$(ls /tmp/trial/open5gs.*.tgz 2>/dev/null | wc -l)" = "x0" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ build_open5gs</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# If open5gs is available, start mongodb in the background:</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "x$(ls /tmp/trial/open5gs.*.tgz 2>/dev/null | wc -l)" != "x0" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+ echo "Starting mongodb in the background..."</span><br><span style="color: hsl(120, 100%, 40%);">+ /usr/bin/mongod --fork --config /etc/mongod.conf --logpath /data/mongodb.log</span><br><span style="color: hsl(120, 100%, 40%);">+ chown "${HOST_USER_ID}:${HOST_GROUP_ID}" /data/mongodb.log</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> # Make trial dir avaialable to jenkins user inside container:</span><br><span> chown -R jenkins /tmp/trial/</span><br><span> </span><br><span>diff --git a/osmo-gsm-tester/resources.conf b/osmo-gsm-tester/resources.conf</span><br><span>index d10cc1e..1a8f2a7 100644</span><br><span>--- a/osmo-gsm-tester/resources.conf</span><br><span>+++ b/osmo-gsm-tester/resources.conf</span><br><span>@@ -56,7 +56,8 @@</span><br><span> rf_dev_type: zmq</span><br><span> imsi: '001010123456789'</span><br><span> ki: '00112233445566778899aabbccddeeff'</span><br><span style="color: hsl(0, 100%, 40%);">- auth_algo: 'xor'</span><br><span style="color: hsl(120, 100%, 40%);">+ opc: '63BFA50EE6523365FF14C1F45F88737D'</span><br><span style="color: hsl(120, 100%, 40%);">+ auth_algo: 'milenage'</span><br><span> features: ['4g']</span><br><span> run_node:</span><br><span> run_type: ssh</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/docker-playground/+/23562">change 23562</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/docker-playground/+/23562"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: docker-playground </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id329726f93251b617219beeb674046065c30a436 </div>
<div style="display:none"> Gerrit-Change-Number: 23562 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>