repo-install-test: update package filtering logic

Instead of filtering with several blacklist_* files that must contain
the exact names of packages to be filtered, add a shell function that
uses fnmatch for filtering. Combine all lists into one.

This fixes the error we get with each limesuite release, without the
need to increase the version in the txt files every time. Currently the
repo-install-tests are failing for all debian versions because of this.

Change-Id: I6745b10804685119d68b089f129ec9b0cde8cdf5
This commit is contained in:
Oliver Smith 2023-11-24 11:07:13 +01:00 committed by osmith
parent de1651b1bf
commit 2031b3d747
5 changed files with 51 additions and 251 deletions

View File

@ -1,15 +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).
# 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
# Also linked to opensuse versions
nftables-devel
python3-nftables

View File

@ -1,67 +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
# Not relevant for the test
limesuite-images
limesuite-images23.10
# 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
# Depends on specific verions 0.5.4.38.0847 of rtl-sdr, which we won't install
librtlsdr0-dbgsym
rtl-sdr-dbgsym
# Depends on mongodb, which was droppend from debian 10 onwards
open5gs
open5gs-amf
open5gs-amf-dbgsym
open5gs-ausf
open5gs-ausf-dbgsym
open5gs-common
open5gs-common-dbgsym
open5gs-dbg
open5gs-hss
open5gs-hss-dbgsym
open5gs-mme
open5gs-mme-dbgsym
open5gs-nrf
open5gs-nrf-dbgsym
open5gs-pcf
open5gs-pcf-dbgsym
open5gs-pcrf
open5gs-pcrf-dbgsym
open5gs-sgwc
open5gs-sgwc-dbgsym
open5gs-sgwu
open5gs-sgwu-dbgsym
open5gs-smf
open5gs-smf-dbgsym
open5gs-udm
open5gs-udm-dbgsym
open5gs-udr
open5gs-udr-dbgsym
open5gs-upf
open5gs-upf-dbgsym

View File

@ -1,72 +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
# Causing conflicts, not relevant for the test
liblimesuite20.10-1-dbgsym
liborcania1.2
liborcania1.2-dbgsym
liborcania2.1
liborcania2.1-dbgsym
libulfius2.5
libulfius2.5-dbgsym
libulfius2.7
libulfius2.7-dbgsym
libyder2.0-dbgsym
limesuite-dbgsym
limesuite-images
limesuite-images23.10
soapysdr0.7-module-lms7-dbgsym
# Depends on specific verions 0.5.4.38.0847 of rtl-sdr, which we won't install
librtlsdr0-dbgsym
rtl-sdr-dbgsym
# Depends on mongodb, which was droppend from debian 10 onwards
open5gs
open5gs-amf
open5gs-amf-dbgsym
open5gs-ausf
open5gs-ausf-dbgsym
open5gs-common
open5gs-common-dbgsym
open5gs-dbg
open5gs-hss
open5gs-hss-dbgsym
open5gs-mme
open5gs-mme-dbgsym
open5gs-nrf
open5gs-nrf-dbgsym
open5gs-pcf
open5gs-pcf-dbgsym
open5gs-pcrf
open5gs-pcrf-dbgsym
open5gs-sgwc
open5gs-sgwc-dbgsym
open5gs-sgwu
open5gs-sgwu-dbgsym
open5gs-smf
open5gs-smf-dbgsym
open5gs-udm
open5gs-udm-dbgsym
open5gs-udr
open5gs-udr-dbgsym
open5gs-upf
open5gs-upf-dbgsym

View File

@ -1,75 +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
# Causing conflicts, not relevant for the test
liblimesuite20.10-1-dbgsym
liblimesuite22.09-1-dbgsym
liborcania1.2
liborcania1.2-dbgsym
liborcania2.1
liborcania2.1-dbgsym
libulfius2.5
libulfius2.5-dbgsym
libulfius2.7
libulfius2.7-dbgsym
libyder2.0-dbgsym
limesuite-dbgsym
limesuite-images
limesuite-images23.10
soapysdr0.7-module-lms7
soapysdr0.7-module-lms7-dbgsym
soapysdr-module-lms7
# Depends on specific verions 0.5.4.38.0847 of rtl-sdr, which we won't install
librtlsdr0-dbgsym
rtl-sdr-dbgsym
# Depends on mongodb, which was droppend from debian 10 onwards
open5gs
open5gs-amf
open5gs-amf-dbgsym
open5gs-ausf
open5gs-ausf-dbgsym
open5gs-common
open5gs-common-dbgsym
open5gs-dbg
open5gs-hss
open5gs-hss-dbgsym
open5gs-mme
open5gs-mme-dbgsym
open5gs-nrf
open5gs-nrf-dbgsym
open5gs-pcf
open5gs-pcf-dbgsym
open5gs-pcrf
open5gs-pcrf-dbgsym
open5gs-sgwc
open5gs-sgwc-dbgsym
open5gs-sgwu
open5gs-sgwu-dbgsym
open5gs-smf
open5gs-smf-dbgsym
open5gs-udm
open5gs-udm-dbgsym
open5gs-udr
open5gs-udr-dbgsym
open5gs-upf
open5gs-upf-dbgsym

View File

@ -306,48 +306,77 @@ test_conflict() {
esac
}
# Filter $PWD/osmocom_packages_all.txt through a blacklist_$DISTRO.txt and store the result in
# $PWD/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 > blacklist.txt
filter_packages() {
for i in "$@"; do
case "$i" in
# OpenBSC
# This is legacy, we aren't really interested in testing
# openbsc.git derived packages. Packages are found in
# openbsc/debian/control.
osmo-bsc-dev) ;;
osmo-bsc-mgcp*) ;;
osmocom-bs11-utils*) ;;
osmocom-bsc-nat*) ;;
osmocom-bsc-sccplite*) ;;
osmocom-ipaccess-utils*) ;;
osmocom-nitb*) ;;
# Generate list of pkgs to be installed from available pkgs minus the ones blacklisted
comm -23 osmocom_packages_all.txt \
blacklist.txt > osmocom_packages.txt
# Causing conflicts, not relevant for the test
liblimesuite*) ;;
liborcania*) ;;
libulfius*) ;;
libhyder*) ;;
limesuite*) ;;
soapysdr*-module-lms7*) ;;
# Depends on specific verions 0.5.4.38.0847 of rtl-sdr, which
# we won't install
librtlsdr0-dbgsym) ;;
rtl-sdr-dbgsym) ;;
# Depends on mongodb, which was droppend from debian 10 onwards
open5gs*) ;;
# Dependencies that have a different name in centos8/almalinux8
# but are pulled in by linking to opensuse packages. In OBS we
# work around this in the project config.
ulfius-devel) ;;
nftables-devel) ;;
python3-nftables) ;;
# All other packages are not filtered
*) echo "$i" ;;
esac
done
}
install_repo_packages_debian() {
local packages
echo "Installing all repository packages"
# Get a list of all packages from the repository. Reference:
# https://www.debian.org/doc/manuals/aptitude/ch02s04s05.en.html
aptitude search -F%p \
"?origin(.*$PROJ.*) ?architecture(native)" | sort \
> osmocom_packages_all.txt
packages="$(aptitude search -F%p \
"?origin(.*$PROJ.*) ?architecture(native)" | sort)"
packages="$(filter_packages $packages)"
cat osmocom_packages_all.txt
filter_packages_txt
apt-get install -y --no-install-recommends $(cat osmocom_packages.txt)
apt-get install -y --no-install-recommends -- $packages
}
install_repo_packages_centos() {
local packages
echo "Installing all repository packages"
# Get a list of all packages from the repository
LANG=C.UTF-8 repoquery \
packages=$(LANG=C.UTF-8 repoquery \
--quiet \
--repoid="$(proj_with_underscore "$PROJ")" \
--archlist="x86_64,noarch" \
--qf="%{name}" \
| sort \
> osmocom_packages_all.txt
| sort)
cat osmocom_packages_all.txt
filter_packages_txt
dnf install -y $(cat osmocom_packages.txt)
packages="$(filter_packages $packages)"
dnf install -y -- $packages
}
install_repo_packages() {