<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13415">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add osmocom-build-old-tags-against-master.sh<br><br>Build old releases of Osmocom programs and libraries against<br>"master of the day" to detect breakage.<br><br>This initial configuration builds the last three release tags of the<br>Osmocom repositories against master, but specific tags could be<br>configured as well if needed.<br><br>Related: OS#3765<br>Change-Id: I7cb45cc40c9930840a3d4e6a86f39e1400478ed3<br>---<br>M .gitignore<br>A scripts/osmocom-build-old-tags-against-master.sh<br>2 files changed, 138 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/15/13415/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/.gitignore b/.gitignore</span><br><span>index 1717928..00fe73d 100644</span><br><span>--- a/.gitignore</span><br><span>+++ b/.gitignore</span><br><span>@@ -6,3 +6,5 @@</span><br><span> jenkins_jobs.ini</span><br><span> jenkins-jobs.ini</span><br><span> __pycache__/</span><br><span style="color: hsl(120, 100%, 40%);">+_temp/</span><br><span style="color: hsl(120, 100%, 40%);">+_deps/</span><br><span>diff --git a/scripts/osmocom-build-old-tags-against-master.sh b/scripts/osmocom-build-old-tags-against-master.sh</span><br><span>new file mode 100755</span><br><span>index 0000000..a94156e</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/osmocom-build-old-tags-against-master.sh</span><br><span>@@ -0,0 +1,136 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/bin/sh -e</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+cd "$(dirname "$0")"</span><br><span style="color: hsl(120, 100%, 40%);">+. ./common.sh</span><br><span style="color: hsl(120, 100%, 40%);">+PARALLEL_MAKE="${PARALLEL_MAKE:--j5}"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REPOS_MASTER="</span><br><span style="color: hsl(120, 100%, 40%);">+      libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+   libosmo-abis</span><br><span style="color: hsl(120, 100%, 40%);">+  libosmo-netif</span><br><span style="color: hsl(120, 100%, 40%);">+ libosmo-sccp</span><br><span style="color: hsl(120, 100%, 40%);">+  libsmpp34</span><br><span style="color: hsl(120, 100%, 40%);">+     libasn1c</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-ggsn</span><br><span style="color: hsl(120, 100%, 40%);">+     osmo-iuh</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-mgw</span><br><span style="color: hsl(120, 100%, 40%);">+"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+REPOS_TAGS="</span><br><span style="color: hsl(120, 100%, 40%);">+ libosmo-abis</span><br><span style="color: hsl(120, 100%, 40%);">+  libosmocore</span><br><span style="color: hsl(120, 100%, 40%);">+   libosmo-netif</span><br><span style="color: hsl(120, 100%, 40%);">+ libosmo-sccp</span><br><span style="color: hsl(120, 100%, 40%);">+  openbsc</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo-bsc</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-bts</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-ggsn</span><br><span style="color: hsl(120, 100%, 40%);">+     osmo-hlr</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-iuh</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-mgw</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-msc</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-pcu</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo-sgsn</span><br><span style="color: hsl(120, 100%, 40%);">+     osmo-sip-connector</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo-trx</span><br><span style="color: hsl(120, 100%, 40%);">+"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Print which tags should be built for a specific repository.</span><br><span style="color: hsl(120, 100%, 40%);">+# This function is part of the configuration, do not insert functions above.</span><br><span style="color: hsl(120, 100%, 40%);">+# $1: repository</span><br><span style="color: hsl(120, 100%, 40%);">+tags_to_build() {</span><br><span style="color: hsl(120, 100%, 40%);">+  case "$1" in</span><br><span style="color: hsl(120, 100%, 40%);">+                # Add repository specific tag listings here:</span><br><span style="color: hsl(120, 100%, 40%);">+          # libosmocore)</span><br><span style="color: hsl(120, 100%, 40%);">+                #       echo "0.1.0"</span><br><span style="color: hsl(120, 100%, 40%);">+                #       osmo_git_last_tags "$1" 3</span><br><span style="color: hsl(120, 100%, 40%);">+           #       ;;</span><br><span style="color: hsl(120, 100%, 40%);">+            *)</span><br><span style="color: hsl(120, 100%, 40%);">+                    osmo_git_last_tags "$1" 3</span><br><span style="color: hsl(120, 100%, 40%);">+                   ;;</span><br><span style="color: hsl(120, 100%, 40%);">+    esac</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Delete existing temp dir and create a new one, output the path.</span><br><span style="color: hsl(120, 100%, 40%);">+prepare_temp_dir() {</span><br><span style="color: hsl(120, 100%, 40%);">+  TEMP="$(cd ..; pwd)/_temp"</span><br><span style="color: hsl(120, 100%, 40%);">+  if [ -d "$TEMP" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+             rm -r "$TEMP"</span><br><span style="color: hsl(120, 100%, 40%);">+       fi</span><br><span style="color: hsl(120, 100%, 40%);">+    mkdir -p "$TEMP/log"</span><br><span style="color: hsl(120, 100%, 40%);">+        echo "Temp dir (with build logs): $TEMP"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Build a repository either from master or from a specific tag against master.</span><br><span style="color: hsl(120, 100%, 40%);">+# The build output is redirected to a file, and partially shown on error.</span><br><span style="color: hsl(120, 100%, 40%);">+# $1: installation path (either $TEMP/inst_master or $TEMP/inst)</span><br><span style="color: hsl(120, 100%, 40%);">+# $2: repository</span><br><span style="color: hsl(120, 100%, 40%);">+# $3: branch, tag or commit</span><br><span style="color: hsl(120, 100%, 40%);">+build_repo() {</span><br><span style="color: hsl(120, 100%, 40%);">+   local log="$TEMP/log/$2-$3.txt"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if ! PATH="$PWD:$PATH"\</span><br><span style="color: hsl(120, 100%, 40%);">+             PKG_CONFIG_PATH="$TEMP/inst_master/lib/pkgconfig:$PKG_CONFIG_PATH" \</span><br><span style="color: hsl(120, 100%, 40%);">+                LD_LIBRARY_PATH="$TEMP/inst_master/lib:$LD_LIBRARY_PATH" \</span><br><span style="color: hsl(120, 100%, 40%);">+          MAKE="make" \</span><br><span style="color: hsl(120, 100%, 40%);">+               PARALLEL_MAKE="$PARALLEL_MAKE" \</span><br><span style="color: hsl(120, 100%, 40%);">+            CHECK="1" \</span><br><span style="color: hsl(120, 100%, 40%);">+         deps="../_deps" \</span><br><span style="color: hsl(120, 100%, 40%);">+           inst="$1" \</span><br><span style="color: hsl(120, 100%, 40%);">+         ./osmo-build-dep.sh "$2" "$3" \</span><br><span style="color: hsl(120, 100%, 40%);">+           > "$log" 2>&1</span><br><span style="color: hsl(120, 100%, 40%);">+     then</span><br><span style="color: hsl(120, 100%, 40%);">+          printf "\n"</span><br><span style="color: hsl(120, 100%, 40%);">+         echo "BUILD FAILED!"</span><br><span style="color: hsl(120, 100%, 40%);">+                echo "Showing last lines of build log below, full log (see jenkins artifacts):"</span><br><span style="color: hsl(120, 100%, 40%);">+             echo "$log"</span><br><span style="color: hsl(120, 100%, 40%);">+         echo "---"</span><br><span style="color: hsl(120, 100%, 40%);">+          tail -n 20 "$log"</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Build all configured repositories from master and install to $TEMP/inst_master.</span><br><span style="color: hsl(120, 100%, 40%);">+build_repos_master() {</span><br><span style="color: hsl(120, 100%, 40%);">+    local repo_master</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   echo "Building libraries from current master..."</span><br><span style="color: hsl(120, 100%, 40%);">+    for repo_master in $REPOS_MASTER; do</span><br><span style="color: hsl(120, 100%, 40%);">+          local commit="$(osmo_git_head_commit "$repo_master")"</span><br><span style="color: hsl(120, 100%, 40%);">+             printf "%-21s %s" " * $repo_master" "$commit"</span><br><span style="color: hsl(120, 100%, 40%);">+           build_repo "$TEMP/inst_master" "$repo_master" "$commit"</span><br><span style="color: hsl(120, 100%, 40%);">+         printf "\n"</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Build all configured repositories on specific tags against master. The result is installed to $TEMP/inst, but deleted</span><br><span style="color: hsl(120, 100%, 40%);">+# after each build.</span><br><span style="color: hsl(120, 100%, 40%);">+build_repos_tags() {</span><br><span style="color: hsl(120, 100%, 40%);">+ local repo</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  echo "Building old tags against libraries from current master..."</span><br><span style="color: hsl(120, 100%, 40%);">+   for repo in $REPOS_TAGS; do</span><br><span style="color: hsl(120, 100%, 40%);">+           local tags="$(tags_to_build "$repo" | sort -V | tr '\n' ' ')"</span><br><span style="color: hsl(120, 100%, 40%);">+             if [ -z "$tags" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+                     echo "ERROR: no tags configured for: $repo"</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%);">+            printf "%-21s" " * $repo"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+               local tag</span><br><span style="color: hsl(120, 100%, 40%);">+             for tag in $tags; do</span><br><span style="color: hsl(120, 100%, 40%);">+                  printf "%10s" " $tag"</span><br><span style="color: hsl(120, 100%, 40%);">+                     if [ -d "$TEMP/inst" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+                                rm -r "$TEMP/inst"</span><br><span style="color: hsl(120, 100%, 40%);">+                  fi</span><br><span style="color: hsl(120, 100%, 40%);">+                    build_repo "$TEMP/inst" "$repo" "$tag"</span><br><span style="color: hsl(120, 100%, 40%);">+          done</span><br><span style="color: hsl(120, 100%, 40%);">+          printf "\n"</span><br><span style="color: hsl(120, 100%, 40%);">+ done</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+prepare_temp_dir</span><br><span style="color: hsl(120, 100%, 40%);">+build_repos_master</span><br><span style="color: hsl(120, 100%, 40%);">+build_repos_tags</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13415">change 13415</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/13415"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ci </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I7cb45cc40c9930840a3d4e6a86f39e1400478ed3 </div>
<div style="display:none"> Gerrit-Change-Number: 13415 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>