Control: tags -1 + patch
Patch attached (based on top of Salsa HEAD, 2662f6f255).
It's something, I think, but it's also entirely possible it's nothing!
New output:
-- >8 --
$ build/cmdline/apt-cache rdepends libtokyocabinet9
libtokyocabinet9
Reverse Depends:
libtokyocabinet-dev
neomutt
libtokyocabinet9-dbgsym
tokyocabinet-bin
bogofilter-tokyocabinet
ruby-tokyocabinet
regina-normal
mutt
libtokyocabinet-perl
libgrok1
grok
duc-nox
duc
-- >8 --
Diff of apt-cache depends systemd --recurse, bullseye against patch,
first 200 lines, is promising:
-- >8 --
diff --git a/tmp/cur b/tmp/new
index 975d5b1d2..f38a4840b 100644
--- a/tmp/cur
+++ b/tmp/new
@@ -645,7 +645,6 @@ locales
locales-all
Depends: libc-l10n
macs
- Depends: python3
Depends: python3
Depends: python3-numpy
Depends: <python3:any>
@@ -658,7 +657,6 @@ nscd
Depends: lsb-base
Depends: libaudit1
Depends: libc6
- Depends: libc6
Depends: libcap2
Depends: libselinux1
openarena
@@ -671,7 +669,6 @@ openarena
Depends: openarena-085-data
Depends: openarena-088-data
Depends: openarena-data
- Depends: openarena-data
Depends: libc6
Recommends: openarena-oacmp1
openssh-server
@@ -773,7 +770,6 @@ libnss-nis
libnss-nisplus
Depends: libc6
Depends: libnsl2
- Depends: libnsl2
Depends: libtirpc3
Breaks: libc6
Replaces: libc6
@@ -831,7 +827,6 @@ rng-tools-debian
Depends: makedev
Conflicts: <intel-rng-tools>
Breaks: rng-tools
- Breaks: rng-tools
Replaces: <intel-rng-tools>
rng-tools-debian
Replaces: rng-tools
@@ -1216,7 +1211,6 @@ network-manager
Depends: policykit-1
policykit-1:i386
Breaks: ppp
- Breaks: ppp
Recommends: ppp
Recommends: dnsmasq-base
dnsmasq-base-lua
@@ -1291,7 +1285,6 @@ perl:i386
Suggests: <libterm-readline-perl-perl:i386>
Suggests: make:i386
make-guile:i386
- make-guile
Suggests: <libtap-harness-archive-perl:i386>
Replaces: perl-base:i386
perl
@@ -1799,7 +1792,6 @@ python3:i386
Suggests: python3-venv:i386
Replaces: python3-minimal:i386
python3-dbus
- Depends: python3
Depends: python3
Depends: <python3:any>
python3:i386
@@ -1813,7 +1805,6 @@ python3-dbus
python3-gi
Depends: gir1.2-glib-2.0
Depends: python3
- Depends: python3
Depends: <python3:any>
python3:i386
python3
@@ -1960,11 +1951,9 @@ nscd:i386
lsb-base
Depends: libaudit1:i386
Depends: libc6:i386
- Depends: libc6:i386
Depends: libcap2:i386
Depends: libselinux1:i386
unscd
- Depends: libc6
Depends: libc6
Depends: libsystemd0
libelogind0
@@ -2702,18 +2691,15 @@ libgegl-dev
Replaces: <libgegl-0.0-dev>
libgegl-dev
libc-bin
- Depends: libc6
Depends: libc6
Recommends: manpages
libc-bin:i386
- Depends: libc6:i386
Depends: libc6:i386
Recommends: <manpages:i386>
manpages
python3-numpy
Depends: python3-pkg-resources
Depends: python3
- Depends: python3
Depends: <python3.9:any>
python3.9:i386
python3.9
@@ -4037,7 +4023,6 @@ libgegl-0.4-0:i386
Replaces: libgegl-dev:i386
Breaks: libgegl-dev:i386
macs:i386
- Depends: python3:i386
Depends: python3:i386
Depends: python3-numpy:i386
Depends: <python3:any>
@@ -4120,7 +4105,6 @@ libnss-nis:i386
libnss-nisplus:i386
Depends: libc6:i386
Depends: libnsl2:i386
- Depends: libnsl2:i386
Depends: libtirpc3:i386
Breaks: libc6:i386
Replaces: libc6:i386
@@ -4178,7 +4162,6 @@ openarena:i386
Depends: <openarena-085-data:i386>
Depends: <openarena-088-data:i386>
Depends: <openarena-data:i386>
- Depends: <openarena-data:i386>
Depends: libc6:i386
Recommends: <openarena-oacmp1:i386>
r-cran-later:i386
@@ -4233,7 +4216,6 @@ network-manager:i386
Depends: policykit-1:i386
policykit-1
Breaks: ppp:i386
- Breaks: ppp:i386
Recommends: ppp:i386
Recommends: dnsmasq-base:i386
dnsmasq-base-lua:i386
@@ -4937,14 +4919,6 @@ make-guile:i386
Suggests: <make-doc:i386>
Replaces: make:i386
make-guile:i386
- make-guile
-make-guile
- Depends: guile-3.0-libs
- Depends: libc6
- Conflicts: make
- Suggests: make-doc
- Replaces: make
- make-guile
libperl5.32
Depends: libbz2-1.0
Depends: libc6
@@ -5054,6 +5028,13 @@ make
Conflicts: make-guile
Suggests: make-doc
Replaces: make-guile
+make-guile
+ Depends: guile-3.0-libs
+ Depends: libc6
+ Conflicts: make
+ Suggests: make-doc
+ Replaces: make
+ make-guile
libtap-harness-archive-perl
Depends: perl
Depends: libyaml-tiny-perl
@@ -5079,7 +5060,6 @@ python3-doc
Suggests: python3
Suggests: python3-examples
python3-tk
- Depends: python3
Depends: python3
Depends: blt
Depends: libc6
@@ -5580,8 +5560,6 @@ postfix
Suggests: <dovecot-common>
dovecot-core
|Suggests: libsasl2-modules
- Suggests: <dovecot-common>
- dovecot-core
Suggests: resolvconf
openresolv
Suggests: postfix-cdb
@@ -6179,8 +6157,6 @@ postfix:i386
Suggests: <dovecot-common:i386>
dovecot-core:i386
|Suggests: libsasl2-modules:i386
- Suggests: <dovecot-common:i386>
- dovecot-core:i386
Suggests: <resolvconf:i386>
openresolv
Suggests: postfix-cdb:i386
@@ -6349,7 +6325,6 @@ exim4
|Depends: debconf
Depends: cdebconf
Depends: exim4-base
- Depends: exim4-base
|Depends: exim4-daemon-light
|Depends: exim4-daemon-heavy
Depends: <exim4-daemon-custom>
-- >8 --
Of apt-cache -o APT::Cache::ShowVersion=true depends systemd --recurse,
full:
-- >8 --
diff --git a/tmp/cur+v b/tmp/new+v
index 14e736b58..adb98aab6 100644
--- a/tmp/old+v
+++ b/tmp/new+v
@@ -1291,7 +1291,6 @@ perl:i386
Suggests: <libterm-readline-perl-perl:i386>
Suggests: make:i386
make-guile:i386
- make-guile
Suggests: <libtap-harness-archive-perl:i386>
Replaces: perl-base:i386 (<< 5.32.0-2)
perl
@@ -4937,14 +4936,6 @@ make-guile:i386
Suggests: <make-doc:i386>
Replaces: make:i386
make-guile:i386
- make-guile
-make-guile
- Depends: guile-3.0-libs
- Depends: libc6 (>= 2.27)
- Conflicts: make
- Suggests: make-doc
- Replaces: make
- make-guile
libperl5.32
Depends: libbz2-1.0
Depends: libc6 (>= 2.29)
@@ -5054,6 +5045,13 @@ make
Conflicts: make-guile
Suggests: make-doc
Replaces: make-guile
+make-guile
+ Depends: guile-3.0-libs
+ Depends: libc6 (>= 2.27)
+ Conflicts: make
+ Suggests: make-doc
+ Replaces: make
+ make-guile
libtap-harness-archive-perl
Depends: perl (>= 5.15.4)
Depends: libyaml-tiny-perl
@@ -5580,8 +5578,6 @@ postfix
Suggests: <dovecot-common>
dovecot-core
|Suggests: libsasl2-modules
- Suggests: <dovecot-common>
- dovecot-core
Suggests: resolvconf
openresolv
Suggests: postfix-cdb
@@ -6179,8 +6175,6 @@ postfix:i386
Suggests: <dovecot-common:i386>
dovecot-core:i386
|Suggests: libsasl2-modules:i386
- Suggests: <dovecot-common:i386>
- dovecot-core:i386
Suggests: <resolvconf:i386>
openresolv
Suggests: postfix-cdb:i386
@@ -13261,7 +13255,6 @@ r-base-dev
|Depends: libblas-dev
Depends: libatlas-base-dev
|Depends: liblapack-dev
- Depends: libatlas-base-dev
Depends: libncurses5-dev
libncurses-dev
Depends: libreadline-dev
@@ -14258,7 +14251,6 @@ pandoc:i386
uwsgi-plugin-php:i386
Suggests: perl:i386
Suggests: <python:i386>
- python-is-python2
Suggests: ruby:i386
Suggests: r-base-core:i386
Suggests: <libjs-mathjax:i386>
@@ -18142,14 +18134,11 @@ backuppc:i386
Depends: <libcgi-pm-perl:i386>
Depends: <libdigest-md5-perl:i386>
perl:i386
- perl
Depends: <libfile-listing-perl:i386>
|Depends: <libio-compress-perl:i386>
perl:i386
- perl
Depends: <libcompress-zlib-perl:i386>
perl:i386
- perl
Depends: <libtime-parsedate-perl:i386>
Depends: <lsb-base:i386>
lsb-base
@@ -18302,10 +18291,8 @@ slic3r:i386
Depends: <libmoo-perl:i386>
Depends: <libstorable-perl:i386>
perl:i386
- perl
Depends: <libtime-hires-perl:i386>
perl:i386
- perl
Depends: perl:i386
Depends: <perlapi-5.32.1:i386>
perl-base:i386
@@ -18448,7 +18435,6 @@ libfilter-perl:i386
Recommends: cpp:i386
Suggests: <libcompress-zlib-perl:i386>
perl:i386
- perl
libc6-dev:i386
Depends: libc6:i386 (= 2.31-13+deb11u2)
Depends: libc-dev-bin:i386 (= 2.31-13+deb11u2)
@@ -18706,25 +18692,6 @@ guile-3.0-libs:i386
Depends: libltdl7:i386 (>= 2.4.6)
Depends: libreadline8:i386 (>= 6.0)
Depends: libunistring2:i386 (>= 0.9.7)
-guile-3.0-libs
- Depends: libc6 (>= 2.29)
- Depends: libcrypt1 (>= 1:4.1.0)
- Depends: libffi7 (>= 3.3~20180313)
- Depends: libgc1 (>= 1:7.4.2)
- Depends: libgmp10
- Depends: libltdl7 (>= 2.4.6)
- Depends: libreadline8 (>= 6.0)
- Depends: libunistring2 (>= 0.9.7)
-make-doc
- |Depends: dpkg (>= 1.15.4)
- dpkg:i386
- Depends: install-info
- install-info:i386
- Suggests: make
- make-guile
- Replaces: make (<< 3.80+3.81.rc2-1)
- Enhances: make
- make-guile
libgdbm-compat4
Depends: libc6 (>= 2.14)
Depends: libgdbm6 (>= 1.16)
@@ -18991,6 +18958,25 @@ libterm-readkey-perl
Depends: <perlapi-5.32.0>
perl-base
Depends: libc6 (>= 2.28)
+make-doc
+ |Depends: dpkg (>= 1.15.4)
+ dpkg:i386
+ Depends: install-info
+ install-info:i386
+ Suggests: make
+ make-guile
+ Replaces: make (<< 3.80+3.81.rc2-1)
+ Enhances: make
+ make-guile
+guile-3.0-libs
+ Depends: libc6 (>= 2.29)
+ Depends: libcrypt1 (>= 1:4.1.0)
+ Depends: libffi7 (>= 3.3~20180313)
+ Depends: libgc1 (>= 1:7.4.2)
+ Depends: libgmp10
+ Depends: libltdl7 (>= 2.4.6)
+ Depends: libreadline8 (>= 6.0)
+ Depends: libunistring2 (>= 0.9.7)
libyaml-tiny-perl
Depends: perl
python3.9-minimal
@@ -32725,7 +32711,6 @@ gcc:i386
Suggests: gcc-multilib:i386
Suggests: make:i386
make-guile:i386
- make-guile
Suggests: <manpages-dev:i386>
manpages-dev
Suggests: <autoconf:i386>
@@ -38717,13 +38702,10 @@ ruby:i386
Suggests: ruby-dev:i386
Replaces: <irb:i386>
ruby:i386
- ruby
Replaces: <rdoc:i386>
ruby:i386
- ruby
Replaces: <rubygems:i386>
ruby:i386
- ruby
ruby-sqlite3:i386
Depends: libc6:i386 (>= 2.4)
Depends: libsqlite3-0:i386 (>= 3.7.10)
@@ -50804,7 +50786,6 @@ libjson-rpc-perl
|Depends: libhttp-daemon-perl
Depends: libwww-perl (<< 6)
|Depends: libhttp-message-perl
- Depends: libwww-perl (<< 6)
Depends: libjson-perl
Depends: libplack-perl
Depends: librouter-simple-perl
@@ -62649,7 +62630,6 @@ slapd:i386
perl
Depends: <libmime-base64-perl:i386>
perl:i386
- perl
Depends: <adduser:i386>
adduser
Depends: <lsb-base:i386> (>= 3.2-13)
@@ -74196,7 +74176,6 @@ muffin:i386
cinnamon-session:i386
lxqt-session:i386
lxsession:i386
- lxsession
mate-session-manager:i386
openbox:i386
plasma-workspace:i386
@@ -74290,7 +74269,6 @@ network-manager-gnome:i386
gnome-flashback:i386
gnome-shell:i386
lxpolkit:i386
- lxpolkit
lxqt-policykit:i386
mate-polkit:i386
phosh:i386
@@ -74821,7 +74799,6 @@ gdm3:i386
cinnamon-session:i386
lxqt-session:i386
lxsession:i386
- lxsession
mate-session-manager:i386
openbox:i386
plasma-workspace:i386
@@ -80590,7 +80567,6 @@ ocl-icd-opencl-dev
|Depends: opencl-c-headers
Depends: opencl-headers
|Depends: opencl-clhpp-headers
- Depends: opencl-headers
Depends: ocl-icd-libopencl1 (= 2.2.14-2)
Conflicts: <opencl-dev>
Breaks: <amd-libopencl1> (<< 1:13.4-4~)
@@ -82474,7 +82450,6 @@ build-essential:i386
Depends: g++:i386 (>= 4:10.2)
Depends: make:i386
make-guile:i386
- make-guile
Depends: <dpkg-dev:i386> (>= 1.17.11)
dpkg-dev
bison-doc
@@ -89036,7 +89011,6 @@ mc:i386
Suggests: poppler-utils:i386
poppler-utils
Suggests: <python:i386>
- python-is-python2
Suggests: <python-boto:i386>
Suggests: <python-tz:i386>
Suggests: unar:i386
@@ -119942,7 +119916,6 @@ lxsession:i386
gnome-flashback:i386
gnome-shell:i386
lxpolkit:i386
- lxpolkit
lxqt-policykit:i386
mate-polkit:i386
phosh:i386
@@ -129365,7 +129338,6 @@ lxappearance:i386
Recommends: gtk2-engines:i386
Recommends: lxde-settings-daemon:i386
lxsession:i386
- lxsession
liblxqt-globalkeys0:i386
Depends: libc6:i386 (>= 2.4)
Depends: libqt5core5a:i386 (>= 5.15.1)
@@ -130014,7 +129986,6 @@ xinit:i386
cinnamon-session:i386
lxqt-session:i386
lxsession:i386
- lxsession
mate-session-manager:i386
openbox:i386
plasma-workspace:i386
@@ -134824,7 +134795,6 @@ ayatana-indicator-session
Suggests: mate-control-center
|Suggests: <unity-control-center-signon>
|Suggests: <gnome-control-center-signon>
- Suggests: mate-control-center
Suggests: lightdm
Suggests: zenity
zenity:i386
@@ -144440,7 +144410,6 @@ mate-desktop-environment
Recommends: ffmpegthumbnailer
Recommends: libcanberra-pulse
|Recommends: mate-backgrounds (>= 1.24)
- Recommends: <ubuntu-mate-wallpapers>
Recommends: mate-calc (>= 1.24)
Recommends: mate-applet-brisk-menu
Recommends: mate-applets (>= 1.24)
@@ -145555,7 +145524,6 @@ libmath-bigint-gmp-perl:i386
Depends: libgmp10:i386
Depends: <libmath-bigint-perl:i386> (>= 1.999817)
perl:i386
- perl
asterisk-modules:i386
Depends: libasound2:i386 (>= 1.0.16)
Depends: libc6:i386 (>= 2.27)
@@ -147928,7 +147896,6 @@ libdbd-pg-perl:i386
Depends: libdbi-perl:i386
Depends: libversion-perl:i386
perl:i386
- perl
libterm-size-perl:i386
Depends: perl:i386
Depends: <perlapi-5.32.0:i386>
@@ -149815,7 +149782,6 @@ gnome-applets:i386
gnome-flashback:i386
gnome-shell:i386
lxpolkit:i386
- lxpolkit
lxqt-policykit:i386
mate-polkit:i386
phosh:i386
@@ -152632,7 +152598,6 @@ libgivaro-dev:i386
Depends: libgivaro9:i386 (= 4.1.1-2)
Depends: make:i386
make-guile:i386
- make-guile
Suggests: <libgivaro-doc:i386>
libgivaro-doc
gap-core:i386
@@ -157208,7 +157173,6 @@ pcmanfm:i386
gnome-flashback:i386
gnome-shell:i386
lxpolkit:i386
- lxpolkit
lxqt-policykit:i386
mate-polkit:i386
phosh:i386
@@ -159851,7 +159815,6 @@ kde-telepathy-call-ui
Depends: kde-telepathy-data (>= 0.8.1)
|Depends: pulseaudio
pulseaudio:i386
- Depends: gstreamer1.0-alsa
Depends: qml-module-org-kde-telepathy
Depends: qml-module-qtgstreamer (>= 1.2)
Depends: libc6 (>= 2.14)
@@ -164492,7 +164455,6 @@ ayatana-indicator-session:i386
Suggests: mate-control-center:i386
|Suggests: <unity-control-center-signon:i386>
|Suggests: <gnome-control-center-signon:i386>
- Suggests: mate-control-center:i386
Suggests: lightdm:i386
Suggests: zenity:i386
zenity
@@ -166326,7 +166288,6 @@ kde-telepathy-call-ui:i386
kde-telepathy-data
|Depends: pulseaudio:i386
pulseaudio
- Depends: gstreamer1.0-alsa:i386
Depends: qml-module-org-kde-telepathy:i386
Depends: qml-module-qtgstreamer:i386 (>= 1.2)
Depends: libc6:i386 (>= 2.4)
@@ -174415,7 +174376,6 @@ cmake:i386
Recommends: gcc:i386
Recommends: make:i386
make-guile:i386
- make-guile
Suggests: <cmake-doc:i386>
cmake-doc
Suggests: ninja-build:i386
@@ -175714,8 +175674,6 @@ ocl-icd-opencl-dev:i386
opencl-headers
|Depends: <opencl-clhpp-headers:i386>
opencl-clhpp-headers
- Depends: <opencl-headers:i386>
- opencl-headers
Depends: ocl-icd-libopencl1:i386 (= 2.2.14-2)
Conflicts: <opencl-dev:i386>
Breaks: ocl-icd-libopencl1:i386 (<< 2.1.3-5~)
@@ -179528,7 +179486,6 @@ jigit:i386
Depends: zlib1g:i386 (>= 1:1.2.3.3)
Depends: <libio-compress-perl:i386>
perl:i386
- perl
Recommends: wget:i386
wget
cdck:i386
@@ -194300,7 +194257,6 @@ google-android-build-tools-installer:i386
wget
|Depends: make:i386
make-guile:i386
- make-guile
|Depends: build-essential:i386
Depends: <dpkg-dev:i386>
dpkg-dev
@@ -215722,7 +215678,6 @@ systemtap:i386
Depends: systemtap-common:i386 (= 4.4-2)
Depends: make:i386
make-guile:i386
- make-guile
Depends: <lsb-release:i386>
lsb-release
Suggests: systemtap-doc:i386
-- >8 --
It's pointing toward beign nothing especially
with the @@ -89036,7 +89011,6 @@ hunk, which is missing the entire
quad-indented bit (TODO-marked).
Hm.
наб
From 3d32f4e9a692131b92e05408f9ed578a63c5de88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= <nabijaczleweli@nabijaczleweli.xyz>
Date: Tue, 21 Dec 2021 03:57:28 +0100
Subject: [PATCH] apt-cache: deduplicate output lines in each package if
possible
X-Mutt-PGP: OS
---
apt-private/private-depends.cc | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/apt-private/private-depends.cc b/apt-private/private-depends.cc
index 95c747ee3..0bccf00b8 100644
--- a/apt-private/private-depends.cc
+++ b/apt-private/private-depends.cc
@@ -14,6 +14,7 @@
#include <iostream>
#include <string>
+#include <string_view>
#include <vector>
#include <stddef.h>
@@ -59,6 +60,7 @@ static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
Shown[Pkg->ID] = true;
std::cout << Pkg.FullName(true) << std::endl;
+ std::set<std::tuple<const char *, std::string, map_flags_t, std::string_view>> already_written;
if (RevDepends == true)
std::cout << "Reverse Depends:" << std::endl;
@@ -82,21 +84,26 @@ static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
if((Installed && Trg->CurrentVer != 0) || !Installed)
{
-
- if ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false)
+ bool or_pkg = (D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or && ShowOnlyFirstOr == false;
+ std::tuple<const char *, std::string, map_flags_t, std::string_view> cachent_c{ShowDepType ? D.DepType() : nullptr, (Trg->VersionList == 0 ? "<" : "") + Trg.FullName(true) += (Trg->VersionList == 0 ? ">" : ""), ShowVersion == true && D->Version != 0 ? D->CompareOp : 0, ShowVersion == true && D->Version != 0 ? D.TargetVer() : ""};
+ const auto *cachent = &cachent_c;
+ if (or_pkg)
std::cout << " |";
else
+ {
+ auto [i, ins] = already_written.insert(std::move(cachent_c));
+ if (!ins)
+ goto last;
+ cachent = &*i;
std::cout << " ";
+ }
// Show the package
- if (ShowDepType == true)
- std::cout << D.DepType() << ": ";
- if (Trg->VersionList == 0)
- std::cout << "<" << Trg.FullName(true) << ">";
- else
- std::cout << Trg.FullName(true);
+ if (std::get<0>(*cachent))
+ std::cout << std::get<0>(*cachent) << ": ";
+ std::cout << std::get<1>(*cachent);
if (ShowVersion == true && D->Version != 0)
- std::cout << " (" << pkgCache::CompTypeDeb(D->CompareOp) << ' ' << D.TargetVer() << ')';
+ std::cout << " (" << pkgCache::CompTypeDeb(std::get<2>(*cachent)) << ' ' << std::get<3>(*cachent) << ')';
std::cout << std::endl;
if (Recurse == true && Shown[Trg->ID] == false)
@@ -106,6 +113,7 @@ static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
}
// Display all solutions
+ // TODO: only allow fallthrough if this has no entries?
std::unique_ptr<pkgCache::Version *[]> List(D.AllTargets());
pkgPrioSortList(*Cache,List.get());
for (pkgCache::Version **I = List.get(); *I != 0; I++)
@@ -125,6 +133,7 @@ static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
}
+ last:
if (ShowOnlyFirstOr == true)
while ((D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) ++D;
}
--
2.30.2
Attachment:
signature.asc
Description: PGP signature