From 6b3980d05f0349ffbf5d6a67813c88db8b31b745 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 26 May 2020 17:28:31 +0200 Subject: repo-install-test: support centos Related: OS#4563 Depends: I50743c304728444ede8e0d40b8abef9d17c44d8d (docker-playground) Change-Id: I399360ee6389591180859b52f0ef08883447b90b --- scripts/repo-install-test.sh | 17 +++++- scripts/repo-install-test/blacklist.txt | 27 --------- scripts/repo-install-test/blacklist_centos.txt | 11 ++++ scripts/repo-install-test/blacklist_debian.txt | 27 +++++++++ scripts/repo-install-test/run-inside-docker.sh | 82 +++++++++++++++++++++----- 5 files changed, 120 insertions(+), 44 deletions(-) delete mode 100644 scripts/repo-install-test/blacklist.txt create mode 100644 scripts/repo-install-test/blacklist_centos.txt create mode 100644 scripts/repo-install-test/blacklist_debian.txt diff --git a/scripts/repo-install-test.sh b/scripts/repo-install-test.sh index e0367ec..4bc0fab 100755 --- a/scripts/repo-install-test.sh +++ b/scripts/repo-install-test.sh @@ -4,10 +4,19 @@ # * FEED: binary package feed (e.g. "latest", "nightly") # * KEEP_CACHE: set to 1 to keep downloaded binary packages (for development) . "$(dirname "$0")/common.sh" -docker_images_require "debian-repo-install-test" + +# Show usage +if [ "$#" -ne 1 ]; then + echo "usage: repo-install-test.sh DISTRO" + echo "DISTRO: debian or centos" + exit 1 +fi + +DISTRO="$1" +docker_images_require "$DISTRO-repo-install-test" [ -z "$FEED" ] && FEED="nightly" -CONTAINER="repo-install-test-$FEED" +CONTAINER="$DISTRO-repo-install-test-$FEED" # Try to run "systemctl status" 10 times, kill the container on failure check_if_systemd_is_running() { @@ -34,6 +43,7 @@ args="" if [ -n "$KEEP_CACHE" ]; then args="$args -e KEEP_CACHE=1" args="$args -v $OSMO_CI_DIR/_repo_install_test_cache/debian/apt:/var/cache/apt" + args="$args -v $OSMO_CI_DIR/_repo_install_test_cache/centos/dnf:/var/cache/dnf" fi # Run the container @@ -45,6 +55,7 @@ docker run --rm \ -v "$OSMO_CI_DIR/_repo_install_test_data:/data" \ --name "$CONTAINER" \ -e FEED="$FEED" \ + -e DISTRO="$DISTRO" \ -e container=docker \ --tmpfs /run \ --tmpfs /run/lock \ @@ -53,7 +64,7 @@ docker run --rm \ --cap-add SYS_ADMIN \ --cap-add SYS_NICE \ $args \ - "$USER/debian-repo-install-test" \ + "$USER/$DISTRO-repo-install-test" \ /lib/systemd/systemd & check_if_systemd_is_running diff --git a/scripts/repo-install-test/blacklist.txt b/scripts/repo-install-test/blacklist.txt deleted file mode 100644 index cb7db6a..0000000 --- a/scripts/repo-install-test/blacklist.txt +++ /dev/null @@ -1,27 +0,0 @@ -# These packages will not get explicitly installed in this test. -# Package lines must have nothing but the package (no comment, -# no additional space etc). - -# OpenBSC -# This is legacy, we aren't really interested in testing openbsc.git -# derived packages. Packages are found in openbsc/debian/control. -openbsc-dev -osmo-bsc-mgcp -osmo-bsc-mgcp-dbg -osmocom-bs11-utils -osmocom-bs11-utils-dbg -osmocom-bsc-nat -osmocom-bsc-nat-dbg -osmocom-bsc-sccplite -osmocom-bsc-sccplite-dbg -osmocom-ipaccess-utils -osmocom-ipaccess-utils-dbg -osmocom-nitb -osmocom-nitb-dbg - -# SoapySDR is not used anymore (see OS#3542) -soapysdr-module-lms7 -soapysdr0.6-module-lms7 -soapysdr0.6-module-lms7-dbgsym -soapysdr0.7-module-lms7 -soapysdr0.7-module-lms7-dbgsym diff --git a/scripts/repo-install-test/blacklist_centos.txt b/scripts/repo-install-test/blacklist_centos.txt new file mode 100644 index 0000000..83d2cbd --- /dev/null +++ b/scripts/repo-install-test/blacklist_centos.txt @@ -0,0 +1,11 @@ +# These packages will not get explicitly installed in this test. +# Package lines must have nothing but the package (no comment, +# no additional space etc). + +# The ulfius package in network:osmocom:* is linked to the opensuse version, +# which has dependencies that exist under another name in centos +# (libgnutls-devel, libjansson-devel). Linking to the opensuse version has the +# advantage that we don't need to worry about updating the package. However, +# the dependency problem means that we can't simply install the package in +# centos. In OBS we work around this in the project config. +ulfius-devel diff --git a/scripts/repo-install-test/blacklist_debian.txt b/scripts/repo-install-test/blacklist_debian.txt new file mode 100644 index 0000000..cb7db6a --- /dev/null +++ b/scripts/repo-install-test/blacklist_debian.txt @@ -0,0 +1,27 @@ +# These packages will not get explicitly installed in this test. +# Package lines must have nothing but the package (no comment, +# no additional space etc). + +# OpenBSC +# This is legacy, we aren't really interested in testing openbsc.git +# derived packages. Packages are found in openbsc/debian/control. +openbsc-dev +osmo-bsc-mgcp +osmo-bsc-mgcp-dbg +osmocom-bs11-utils +osmocom-bs11-utils-dbg +osmocom-bsc-nat +osmocom-bsc-nat-dbg +osmocom-bsc-sccplite +osmocom-bsc-sccplite-dbg +osmocom-ipaccess-utils +osmocom-ipaccess-utils-dbg +osmocom-nitb +osmocom-nitb-dbg + +# SoapySDR is not used anymore (see OS#3542) +soapysdr-module-lms7 +soapysdr0.6-module-lms7 +soapysdr0.6-module-lms7-dbgsym +soapysdr0.7-module-lms7 +soapysdr0.7-module-lms7-dbgsym diff --git a/scripts/repo-install-test/run-inside-docker.sh b/scripts/repo-install-test/run-inside-docker.sh index eed33d2..a6eda13 100755 --- a/scripts/repo-install-test/run-inside-docker.sh +++ b/scripts/repo-install-test/run-inside-docker.sh @@ -2,6 +2,7 @@ # Environment variables: # * FEED: binary package feed (e.g. "latest", "nightly") # * KEEP_CACHE: set to 1 to keep downloaded binary packages (for development) +# * DISTRO: linux distribution name (e.g. "debian", "centos") # Systemd services that must start up successfully after installing all packages (OS#3369) # Disabled services: @@ -43,16 +44,37 @@ check_env() { echo "ERROR: missing environment variable \$FEED!" exit 1 fi + if [ -n "$DISTRO" ]; then + echo "Linux distribution: $DISTRO" + else + echo "ERROR: missing environment variable \$DISTRO!" + exit 1 + fi } -configure_osmocom_repo() { +configure_osmocom_repo_debian() { echo "Configuring Osmocom repository" echo "deb $HTTP ./" \ > /etc/apt/sources.list.d/osmocom-latest.list apt-get update } -configure_keep_cache() { +configure_osmocom_repo_centos() { + echo "Configuring Osmocom repository" + # Generate this file, based on the feed: + # https://download.opensuse.org/repositories/network:osmocom:latest/CentOS_8_Stream/network:osmocom:latest.repo + cat << EOF > /etc/yum.repos.d/network:osmocom:$FEED.repo +[network_osmocom_$FEED] +name=$FEED packages of the Osmocom project (CentOS_8_Stream) +type=rpm-md +baseurl=https://download.opensuse.org/repositories/network:/osmocom:/$FEED/CentOS_8_Stream/ +gpgcheck=1 +gpgkey=https://download.opensuse.org/repositories/network:/osmocom:/$FEED/CentOS_8_Stream/repodata/repomd.xml.key +enabled=1 +EOF +} + +configure_keep_cache_debian() { if [ -z "$KEEP_CACHE" ]; then return fi @@ -65,7 +87,25 @@ configure_keep_cache() { > /etc/apt/apt.conf.d/01keep-debs } -install_repo_packages() { +configure_keep_cache_centos() { + if [ -z "$KEEP_CACHE" ]; then + return + fi + echo "keepcache=1" >> /etc/dnf/dnf.conf +} + +# Filter /data/osmocom_packages_all.txt through a blacklist_$DISTRO.txt and store the result in +# /data/osmocom_packages.txt. +filter_packages_txt() { + # Copy distro specific blacklist file, remove comments and sort it + grep -v "^#" /repo-install-test/blacklist_$DISTRO.txt | sort -u > /data/blacklist.txt + + # Generate list of pkgs to be installed from available pkgs minus the ones blacklisted + comm -23 /data/osmocom_packages_all.txt \ + /data/blacklist.txt > /data/osmocom_packages.txt +} + +install_repo_packages_debian() { echo "Installing all repository packages" # Get a list of all packages from the repository. Reference: @@ -74,15 +114,25 @@ install_repo_packages() { "?origin($OBS) ?architecture(native)" | sort \ > /data/osmocom_packages_all.txt - # Remove comments from blacklist.txt (and sort it) - grep -v "^#" /repo-install-test/blacklist.txt | sort -u > /data/blacklist.txt - - # Install all repo packages which are not on the blacklist - comm -23 /data/osmocom_packages_all.txt \ - /data/blacklist.txt > /data/osmocom_packages.txt + filter_packages_txt apt install -y $(cat /data/osmocom_packages.txt) } +install_repo_packages_centos() { + echo "Installing all repository packages" + + # Get a list of all packages from the repository + LANG=C.UTF-8 repoquery \ + --quiet \ + --repoid="network_osmocom_$FEED" \ + --archlist="x86_64,noarch" \ + --qf="%{name}" \ + > /data/osmocom_packages_all.txt + + filter_packages_txt + dnf install -y $(cat /data/osmocom_packages.txt) +} + test_binaries_version() { # Make sure --version runs and does not output UNKNOWN failed="" @@ -122,8 +172,12 @@ test_binaries() { osmo-sgsn \ osmo-sip-connector \ osmo-stp \ - osmo-trx-uhd \ - osmo-trx-usrp1 + osmo-trx-uhd + + if [ "$DISTRO" = "debian" ]; then + test_binaries_version \ + osmo-trx-usrp1 + fi } services_check() { @@ -156,8 +210,8 @@ services_check() { } check_env -configure_keep_cache -configure_osmocom_repo -install_repo_packages +configure_keep_cache_${DISTRO} +configure_osmocom_repo_${DISTRO} +install_repo_packages_${DISTRO} test_binaries services_check -- cgit v1.2.3