osmith has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38803?usp=email )
(
2 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: testenv: install dbg pkgs with --binary-repo too
......................................................................
testenv: install dbg pkgs with --binary-repo too
When using --binary-repo, figure out the -dbg and -dbgsym packages for
all dependencies of packages to be installed, and install them as well.
This will make debug symbols available in jenkins, useful for the
related issue. Before this patch debug symbols were only available when
building locally without --binary-repo.
Related: OS#6630
Change-Id: I4dc57257b944126fed2c7b031c92c77a3d4286e0
---
M _testenv/data/podman/Dockerfile
M _testenv/testenv/podman_install.py
2 files changed, 58 insertions(+), 0 deletions(-)
Approvals:
fixeria: Looks good to me, approved
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
diff --git a/_testenv/data/podman/Dockerfile b/_testenv/data/podman/Dockerfile
index 6f6c739..5321bfe 100644
--- a/_testenv/data/podman/Dockerfile
+++ b/_testenv/data/podman/Dockerfile
@@ -19,6 +19,7 @@
-y \
--no-install-recommends \
-o Dpkg::Options::="--force-confold" \
+ apt-rdepends \
autoconf \
automake \
bc \
diff --git a/_testenv/testenv/podman_install.py b/_testenv/testenv/podman_install.py
index 9c680b9..3c38285 100644
--- a/_testenv/testenv/podman_install.py
+++ b/_testenv/testenv/podman_install.py
@@ -3,6 +3,9 @@
import logging
import multiprocessing
import os
+import shlex
+import string
+import subprocess
import sys
import testenv.cmd
import testenv.podman
@@ -30,6 +33,58 @@
os.makedirs(git_dir, exist_ok=True)
+def get_dbg_pkgs(dep):
+ ret = [f"{dep}-dbg", f"{dep}-dbgsym"]
+
+ # Get from e.g. libosmocore22 to libosmocore-dbg
+ dep_nodigits = dep.rstrip(string.digits)
+ if dep_nodigits != dep:
+ ret += [f"{dep_nodigits}-dbg", f"{dep_nodigits}-dbgsym"]
+
+ return ret
+
+
+def apt_get_dbg_pkgs(pkgs):
+ dbg_pkgs_all = os.path.join(testenv.args.cache, "podman",
"dbg_pkgs_all")
+ dbg_pkgs = {}
+
+ testenv.cmd.run(f"apt-cache pkgnames | grep -- -dbg >
{shlex.quote(dbg_pkgs_all)}")
+
+ for pkg in pkgs:
+ # Iterate over apt-rdepends, example output:
+ # osmo-mgw
+ # Depends: libc6 (>= 2.34)
+ # Depends: libosmoabis13
+ rdeps = testenv.cmd.run(["apt-rdepends", pkg], stdout=subprocess.PIPE)
+ for line in rdeps.stdout.decode("utf-8").split("\n"):
+ if line.startswith(" "):
+ continue
+ dep = line.rstrip().split(" ", 1)[0]
+
+ if dep not in dbg_pkgs:
+ for dbg_pkg in get_dbg_pkgs(dep):
+ # Use subprocess.run so we don't get lots of log messages.
+ # Also we don't need to run grep through podman.
+ grep = subprocess.run(["grep", "-q",
f"^{dbg_pkg}$", dbg_pkgs_all])
+
+ if grep.returncode == 0:
+ dbg_pkgs[dep] = dbg_pkg
+ break
+
+ if dep not in dbg_pkgs:
+ dbg_pkgs[dep] = None
+
+ if dbg_pkgs[dep]:
+ logging.debug(f"{pkg} -> {dep}: installing
{dbg_pkgs[dep]}")
+
+ ret = []
+ for dep, dbg in dbg_pkgs.items():
+ if dbg:
+ ret += [dbg]
+
+ return ret
+
+
def apt_install(pkgs):
if not pkgs:
return
@@ -37,6 +92,8 @@
# Remove duplicates
pkgs = list(set(pkgs))
+ pkgs += apt_get_dbg_pkgs(pkgs)
+
logging.info(f"Installing packages: {', '.join(pkgs)}")
testenv.cmd.run(["apt-get", "-q", "install",
"-y", "--no-install-recommends"] + pkgs)
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38803?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I4dc57257b944126fed2c7b031c92c77a3d4286e0
Gerrit-Change-Number: 38803
Gerrit-PatchSet: 3
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>