Package: ubuntu-dev-tools Version: 0.203 Severity: normal Tags: patch upstream X-Debbugs-Cc: sre4e...@free.fr
Hi, reverse-depends currently (ubuntu-dev-tools-0.203) crashes when attempting to display the reverse build dependencies of a package that build-depends on itself. Sample output of `reverse-depends -b gradle`: ------------------------------------------------------------------------ Reverse-Build-Depends-Indep =========================== * simplyhtml * zeroc-ice Reverse-Build-Depends ===================== * asm * darcula * freeplane * gradle * simplyhtml * zeroc-ice * asm * darcula * freeplane * gradle * simplyhtml * zeroc-ice * asm * darcula * freeplane * gradle * simplyhtml * zeroc-ice * asm * darcula * freeplane * gradle * simplyhtml * zeroc-ice * asm * darcula * freeplane * gradle ------------------------------------------------------------------------ ... and so on until it crashes Exception report: ------------------------------------------------------------------------ Traceback (most recent call last): File "/usr/bin/reverse-depends", line 247, in <module> main() File "/usr/bin/reverse-depends", line 178, in main display_verbose(options.package, result) File "/usr/bin/reverse-depends", line 221, in display_verbose log_package( File "/usr/bin/reverse-depends", line 200, in log_package log_package( File "/usr/bin/reverse-depends", line 200, in log_package log_package( File "/usr/bin/reverse-depends", line 200, in log_package log_package( [Previous line repeated 983 more times] File "/usr/bin/reverse-depends", line 194, in log_package Logger.info(line) File "/usr/lib/python3.12/logging/__init__.py", line 1539, in info self._log(INFO, msg, args, **kwargs) File "/usr/lib/python3.12/logging/__init__.py", line 1684, in _log self.handle(record) File "/usr/lib/python3.12/logging/__init__.py", line 1700, in handle self.callHandlers(record) File "/usr/lib/python3.12/logging/__init__.py", line 1762, in callHandlers hdlr.handle(record) File "/usr/lib/python3.12/logging/__init__.py", line 1028, in handle self.emit(record) File "/usr/lib/python3.12/logging/__init__.py", line 1160, in emit msg = self.format(record) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/logging/__init__.py", line 999, in format return fmt.format(record) ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/logging/__init__.py", line 706, in format s = self.formatMessage(record) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/logging/__init__.py", line 675, in formatMessage return self._style.format(record) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/logging/__init__.py", line 464, in format return self._format(record) ^^^^^^^^^^^^^^^^^^^^ RecursionError: maximum recursion depth exceeded ------------------------------------------------------------------------ Patch: ------------------------------------------------------------------------ --- a/reverse-depends +++ b/reverse-depends @@ -183,7 +183,7 @@ def display_verbose(package, values): Logger.info("No reverse dependencies found") return - def log_package(values, package, arch, dependency, offset=0): + def log_package(values, package, arch, dependency, visited, offset=0): line = f"{' ' * offset}* {package}" if all_archs and set(arch) != all_archs: line += f" [{' '.join(sorted(arch))}]" @@ -192,6 +192,9 @@ def display_verbose(package, values): line += " " * (30 - len(line)) line += f" (for {dependency})" Logger.info(line) + if package in visited: + return + visited = visited.copy().add(package) data = values.get(package) if data: offset = offset + 1 @@ -202,6 +205,7 @@ def display_verbose(package, values): rdep["Package"], rdep.get("Architectures", all_archs), rdep.get("Dependency"), + visited, offset, ) @@ -223,6 +227,7 @@ def display_verbose(package, values): rdep["Package"], rdep.get("Architectures", all_archs), rdep.get("Dependency"), + {package}, ) Logger.info("") ------------------------------------------------------------------------ Best regards, -- Julien Plissonneau Duquène -- System Information: Debian Release: trixie/sid APT prefers trixie APT policy: (500, 'trixie'), (500, 'testing'), (20, 'unstable'), (10, 'experimental'), (5, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 6.11.2-amd64 (SMP w/4 CPU threads; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages ubuntu-dev-tools depends on: ii binutils 2.43.1-5 ii dctrl-tools 2.24-3+b1 ii devscripts 2.24.3+jpd1 ii diffstat 1.66-1 ii distro-info 1.12 ii dpkg-dev 1.22.11 ii dput 1.2.4 ii lsb-release 12.1-1 ii perl 5.40.0-7 ii python3 3.12.6-1 ii python3-apt 2.9.0+b1 ii python3-debian 0.1.49 ii python3-debianbts 4.1.1 ii python3-distro-info 1.12 ii python3-httplib2 0.22.0-1 ii python3-launchpadlib-desktop 2.0.0-1 ii python3-lazr.restfulclient 0.14.6-2 ii python3-ubuntutools 0.203 ii python3-yaml 6.0.2-1 ii sensible-utils 0.0.24 ii sudo 1.9.15p5-3+b1 ii tzdata 2024a-4 Versions of packages ubuntu-dev-tools recommends: ii arch-test 0.21-1 ii ca-certificates 20240203 ii cowbuilder 0.90 ii debian-archive-keyring 2023.4 ii debian-keyring 2024.09.22 ii debootstrap 1.0.137 ii genisoimage 9:1.1.11-3.5 ii lintian 2.120.0 ii patch 2.7.6-7 ii pbuilder 0.231.1 ii python3-dns 4.0.2-2 ii quilt 0.68-1 ii reportbug 13.0.2 ii ubuntu-keyring [ubuntu-archive-keyring] 2023.11.28.1-0.2 Versions of packages ubuntu-dev-tools suggests: pn bzr | brz <none> pn bzr-builddeb | brz-debian <none> pn qemu-user-static <none> -- no debconf information