<p>osmith has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ci/+/18514">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">repo-install-test: support centos<br><br>Related: OS#4563<br>Depends: I50743c304728444ede8e0d40b8abef9d17c44d8d (docker-playground)<br>Change-Id: I399360ee6389591180859b52f0ef08883447b90b<br>---<br>M scripts/repo-install-test.sh<br>A scripts/repo-install-test/blacklist_centos.txt<br>R scripts/repo-install-test/blacklist_debian.txt<br>M scripts/repo-install-test/run-inside-docker.sh<br>4 files changed, 107 insertions(+), 17 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/14/18514/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/scripts/repo-install-test.sh b/scripts/repo-install-test.sh</span><br><span>index e0367ec..4bc0fab 100755</span><br><span>--- a/scripts/repo-install-test.sh</span><br><span>+++ b/scripts/repo-install-test.sh</span><br><span>@@ -4,10 +4,19 @@</span><br><span> # * FEED: binary package feed (e.g. "latest", "nightly")</span><br><span> # * KEEP_CACHE: set to 1 to keep downloaded binary packages (for development)</span><br><span> . "$(dirname "$0")/common.sh"</span><br><span style="color: hsl(0, 100%, 40%);">-docker_images_require "debian-repo-install-test"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# Show usage</span><br><span style="color: hsl(120, 100%, 40%);">+if [ "$#" -ne 1 ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+       echo "usage: repo-install-test.sh DISTRO"</span><br><span style="color: hsl(120, 100%, 40%);">+   echo "DISTRO: debian or centos"</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%);">+DISTRO="$1"</span><br><span style="color: hsl(120, 100%, 40%);">+docker_images_require "$DISTRO-repo-install-test"</span><br><span> </span><br><span> [ -z "$FEED" ] && FEED="nightly"</span><br><span style="color: hsl(0, 100%, 40%);">-CONTAINER="repo-install-test-$FEED"</span><br><span style="color: hsl(120, 100%, 40%);">+CONTAINER="$DISTRO-repo-install-test-$FEED"</span><br><span> </span><br><span> # Try to run "systemctl status" 10 times, kill the container on failure</span><br><span> check_if_systemd_is_running() {</span><br><span>@@ -34,6 +43,7 @@</span><br><span> if [ -n "$KEEP_CACHE" ]; then</span><br><span>  args="$args -e KEEP_CACHE=1"</span><br><span>       args="$args -v $OSMO_CI_DIR/_repo_install_test_cache/debian/apt:/var/cache/apt"</span><br><span style="color: hsl(120, 100%, 40%);">+     args="$args -v $OSMO_CI_DIR/_repo_install_test_cache/centos/dnf:/var/cache/dnf"</span><br><span> fi</span><br><span> </span><br><span> # Run the container</span><br><span>@@ -45,6 +55,7 @@</span><br><span>               -v "$OSMO_CI_DIR/_repo_install_test_data:/data" \</span><br><span>          --name "$CONTAINER" \</span><br><span>              -e FEED="$FEED" \</span><br><span style="color: hsl(120, 100%, 40%);">+           -e DISTRO="$DISTRO" \</span><br><span>              -e container=docker \</span><br><span>                --tmpfs /run \</span><br><span>               --tmpfs /run/lock \</span><br><span>@@ -53,7 +64,7 @@</span><br><span>              --cap-add SYS_ADMIN \</span><br><span>                --cap-add SYS_NICE \</span><br><span>                 $args \</span><br><span style="color: hsl(0, 100%, 40%);">-         "$USER/debian-repo-install-test" \</span><br><span style="color: hsl(120, 100%, 40%);">+          "$USER/$DISTRO-repo-install-test" \</span><br><span>                /lib/systemd/systemd &</span><br><span> check_if_systemd_is_running</span><br><span> </span><br><span>diff --git a/scripts/repo-install-test/blacklist_centos.txt b/scripts/repo-install-test/blacklist_centos.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..83d2cbd</span><br><span>--- /dev/null</span><br><span>+++ b/scripts/repo-install-test/blacklist_centos.txt</span><br><span>@@ -0,0 +1,11 @@</span><br><span style="color: hsl(120, 100%, 40%);">+# These packages will not get explicitly installed in this test.</span><br><span style="color: hsl(120, 100%, 40%);">+# Package lines must have nothing but the package (no comment,</span><br><span style="color: hsl(120, 100%, 40%);">+# no additional space etc).</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# The ulfius package in network:osmocom:* is linked to the opensuse version,</span><br><span style="color: hsl(120, 100%, 40%);">+# which has dependencies that exist under another name in centos</span><br><span style="color: hsl(120, 100%, 40%);">+# (libgnutls-devel, libjansson-devel). Linking to the opensuse version has the</span><br><span style="color: hsl(120, 100%, 40%);">+# advantage that we don't need to worry about updating the package. However,</span><br><span style="color: hsl(120, 100%, 40%);">+# the dependency problem means that we can't simply install the package in</span><br><span style="color: hsl(120, 100%, 40%);">+# centos. In OBS we work around this in the project config.</span><br><span style="color: hsl(120, 100%, 40%);">+ulfius-devel</span><br><span>diff --git a/scripts/repo-install-test/blacklist.txt b/scripts/repo-install-test/blacklist_debian.txt</span><br><span>similarity index 100%</span><br><span>rename from scripts/repo-install-test/blacklist.txt</span><br><span>rename to scripts/repo-install-test/blacklist_debian.txt</span><br><span>diff --git a/scripts/repo-install-test/run-inside-docker.sh b/scripts/repo-install-test/run-inside-docker.sh</span><br><span>index eed33d2..4265180 100755</span><br><span>--- a/scripts/repo-install-test/run-inside-docker.sh</span><br><span>+++ b/scripts/repo-install-test/run-inside-docker.sh</span><br><span>@@ -2,6 +2,7 @@</span><br><span> # Environment variables:</span><br><span> # * FEED: binary package feed (e.g. "latest", "nightly")</span><br><span> # * KEEP_CACHE: set to 1 to keep downloaded binary packages (for development)</span><br><span style="color: hsl(120, 100%, 40%);">+# * DISTRO: linux distribution  name (e.g. "debian", "centos")</span><br><span> </span><br><span> # Systemd services that must start up successfully after installing all packages (OS#3369)</span><br><span> # Disabled services:</span><br><span>@@ -43,16 +44,37 @@</span><br><span>                echo "ERROR: missing environment variable \$FEED!"</span><br><span>                 exit 1</span><br><span>       fi</span><br><span style="color: hsl(120, 100%, 40%);">+    if [ -n "$DISTRO" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+           echo "Linux distribution: $DISTRO"</span><br><span style="color: hsl(120, 100%, 40%);">+  else</span><br><span style="color: hsl(120, 100%, 40%);">+          echo "ERROR: missing environment variable \$DISTRO!"</span><br><span style="color: hsl(120, 100%, 40%);">+                exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+        fi</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-configure_osmocom_repo() {</span><br><span style="color: hsl(120, 100%, 40%);">+configure_osmocom_repo_debian() {</span><br><span>     echo "Configuring Osmocom repository"</span><br><span>      echo "deb $HTTP ./" \</span><br><span>              > /etc/apt/sources.list.d/osmocom-latest.list</span><br><span>     apt-get update</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-configure_keep_cache() {</span><br><span style="color: hsl(120, 100%, 40%);">+configure_osmocom_repo_centos() {</span><br><span style="color: hsl(120, 100%, 40%);">+    echo "Configuring Osmocom repository"</span><br><span style="color: hsl(120, 100%, 40%);">+       # Generate this file, based on the feed:</span><br><span style="color: hsl(120, 100%, 40%);">+      # https://download.opensuse.org/repositories/network:osmocom:latest/CentOS_8_Stream/network:osmocom:latest.repo</span><br><span style="color: hsl(120, 100%, 40%);">+       cat << EOF > /etc/yum.repos.d/network:osmocom:$FEED.repo</span><br><span style="color: hsl(120, 100%, 40%);">+[network_osmocom_$FEED]</span><br><span style="color: hsl(120, 100%, 40%);">+name=$FEED packages of the Osmocom project (CentOS_8_Stream)</span><br><span style="color: hsl(120, 100%, 40%);">+type=rpm-md</span><br><span style="color: hsl(120, 100%, 40%);">+baseurl=https://download.opensuse.org/repositories/network:/osmocom:/$FEED/CentOS_8_Stream/</span><br><span style="color: hsl(120, 100%, 40%);">+gpgcheck=1</span><br><span style="color: hsl(120, 100%, 40%);">+gpgkey=https://download.opensuse.org/repositories/network:/osmocom:/$FEED/CentOS_8_Stream/repodata/repomd.xml.key</span><br><span style="color: hsl(120, 100%, 40%);">+enabled=1</span><br><span style="color: hsl(120, 100%, 40%);">+EOF</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%);">+configure_keep_cache_debian() {</span><br><span>      if [ -z "$KEEP_CACHE" ]; then</span><br><span>              return</span><br><span>       fi</span><br><span>@@ -65,7 +87,25 @@</span><br><span>              > /etc/apt/apt.conf.d/01keep-debs</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-install_repo_packages() {</span><br><span style="color: hsl(120, 100%, 40%);">+configure_keep_cache_centos() {</span><br><span style="color: hsl(120, 100%, 40%);">+       if [ -z "$KEEP_CACHE" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+               return</span><br><span style="color: hsl(120, 100%, 40%);">+        fi</span><br><span style="color: hsl(120, 100%, 40%);">+    echo "keepcache=1" >> /etc/dnf/dnf.conf</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%);">+# Filter /data/osmocom_packages_all.txt through a blacklist_$DISTRO.txt and store the result in</span><br><span style="color: hsl(120, 100%, 40%);">+# /data/osmocom_packages.txt.</span><br><span style="color: hsl(120, 100%, 40%);">+filter_packages_txt() {</span><br><span style="color: hsl(120, 100%, 40%);">+ # Copy distro specific blacklist file, remove comments and sort it</span><br><span style="color: hsl(120, 100%, 40%);">+    grep -v "^#" /repo-install-test/blacklist_$DISTRO.txt | sort -u > /data/blacklist.txt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  # Generate list of pkgs to be installed from available pkgs minus the ones blacklisted</span><br><span style="color: hsl(120, 100%, 40%);">+        comm -23 /data/osmocom_packages_all.txt \</span><br><span style="color: hsl(120, 100%, 40%);">+             /data/blacklist.txt > /data/osmocom_packages.txt</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%);">+install_repo_packages_debian() {</span><br><span>   echo "Installing all repository packages"</span><br><span> </span><br><span>      # Get a list of all packages from the repository. Reference:</span><br><span>@@ -74,15 +114,25 @@</span><br><span>          "?origin($OBS) ?architecture(native)" | sort \</span><br><span>             > /data/osmocom_packages_all.txt</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- # Remove comments from blacklist.txt (and sort it)</span><br><span style="color: hsl(0, 100%, 40%);">-      grep -v "^#" /repo-install-test/blacklist.txt | sort -u > /data/blacklist.txt</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      # Install all repo packages which are not on the blacklist</span><br><span style="color: hsl(0, 100%, 40%);">-      comm -23 /data/osmocom_packages_all.txt \</span><br><span style="color: hsl(0, 100%, 40%);">-               /data/blacklist.txt > /data/osmocom_packages.txt</span><br><span style="color: hsl(120, 100%, 40%);">+   filter_packages_txt</span><br><span>  apt install -y $(cat /data/osmocom_packages.txt)</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+install_repo_packages_centos() {</span><br><span style="color: hsl(120, 100%, 40%);">+   echo "Installing all repository packages"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Get a list of all packages from the repository</span><br><span style="color: hsl(120, 100%, 40%);">+      LANG=C.UTF-8 repoquery \</span><br><span style="color: hsl(120, 100%, 40%);">+              --quiet \</span><br><span style="color: hsl(120, 100%, 40%);">+             --repoid="network_osmocom_$FEED" \</span><br><span style="color: hsl(120, 100%, 40%);">+          --archlist="x86_64,noarch" \</span><br><span style="color: hsl(120, 100%, 40%);">+                --qf="%{name}" \</span><br><span style="color: hsl(120, 100%, 40%);">+            > /data/osmocom_packages_all.txt</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ filter_packages_txt</span><br><span style="color: hsl(120, 100%, 40%);">+   dnf install -y $(cat /data/osmocom_packages.txt)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> test_binaries_version() {</span><br><span>   # Make sure --version runs and does not output UNKNOWN</span><br><span>       failed=""</span><br><span>@@ -122,8 +172,12 @@</span><br><span>           osmo-sgsn \</span><br><span>          osmo-sip-connector \</span><br><span>                 osmo-stp \</span><br><span style="color: hsl(0, 100%, 40%);">-              osmo-trx-uhd \</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo-trx-usrp1</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo-trx-uhd</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        if [ "$DISTRO" = "debian" ]; then</span><br><span style="color: hsl(120, 100%, 40%);">+         test_binaries_version \</span><br><span style="color: hsl(120, 100%, 40%);">+                       osmo-trx-usrp1</span><br><span style="color: hsl(120, 100%, 40%);">+        fi</span><br><span> }</span><br><span> </span><br><span> services_check() {</span><br><span>@@ -156,8 +210,22 @@</span><br><span> }</span><br><span> </span><br><span> check_env</span><br><span style="color: hsl(0, 100%, 40%);">-configure_keep_cache</span><br><span style="color: hsl(0, 100%, 40%);">-configure_osmocom_repo</span><br><span style="color: hsl(0, 100%, 40%);">-install_repo_packages</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+case "$DISTRO" in</span><br><span style="color: hsl(120, 100%, 40%);">+debian)</span><br><span style="color: hsl(120, 100%, 40%);">+ configure_keep_cache_debian</span><br><span style="color: hsl(120, 100%, 40%);">+   configure_osmocom_repo_debian</span><br><span style="color: hsl(120, 100%, 40%);">+ install_repo_packages_debian</span><br><span style="color: hsl(120, 100%, 40%);">+  ;;</span><br><span style="color: hsl(120, 100%, 40%);">+centos)</span><br><span style="color: hsl(120, 100%, 40%);">+   configure_keep_cache_centos</span><br><span style="color: hsl(120, 100%, 40%);">+   configure_osmocom_repo_centos</span><br><span style="color: hsl(120, 100%, 40%);">+ install_repo_packages_centos</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%);">+        echo "ERROR: unknown DISTRO=$DISTRO"</span><br><span style="color: hsl(120, 100%, 40%);">+        exit 1</span><br><span style="color: hsl(120, 100%, 40%);">+esac</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> test_binaries</span><br><span> services_check</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ci/+/18514">change 18514</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/osmo-ci/+/18514"/><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-Change-Id: I399360ee6389591180859b52f0ef08883447b90b </div>
<div style="display:none"> Gerrit-Change-Number: 18514 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>