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