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