{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.312We7K0/b1/apt_2.2.4_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.312We7K0/b2/apt_2.2.4_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -2,10 +2,10 @@\n 45da673bbf57aa1396104c8cfd7944c9 6766812 debug optional apt-dbgsym_2.2.4_amd64.deb\n 3c9a8e3e348a2f965e0ef6a8ec6efed4 389020 doc optional apt-doc_2.2.4_all.deb\n 559b845daf8931dc41fb7f8f33c73afb 159640 oldlibs optional apt-transport-https_2.2.4_all.deb\n b27553ae4e102cfd2f30a0aff4d6b954 1679788 debug optional apt-utils-dbgsym_2.2.4_amd64.deb\n cd5ebb80ce64f1569d25e98d867bc704 439116 admin important apt-utils_2.2.4_amd64.deb\n d1172b59b7c4f76243bc046c3241eefc 1492024 admin important apt_2.2.4_amd64.deb\n d6ba86a48eabf1988fe22ab717f37795 249204 libdevel optional libapt-pkg-dev_2.2.4_amd64.deb\n- e31b33f2712c6883518c7c1459a2e42c 971940 doc optional libapt-pkg-doc_2.2.4_all.deb\n+ 499b595b1965043292c92ded2c782030 971920 doc optional libapt-pkg-doc_2.2.4_all.deb\n 1b2754dd991ff6e28ff8c65ab643e98f 9676728 debug optional libapt-pkg6.0-dbgsym_2.2.4_amd64.deb\n b54364a07d3dd3fb4c59795dbe559169 1012792 libs optional libapt-pkg6.0_2.2.4_amd64.deb\n"}, {"source1": "libapt-pkg-doc_2.2.4_all.deb", "source2": "libapt-pkg-doc_2.2.4_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2021-06-10 08:53:34.000000 debian-binary\n -rw-r--r-- 0 0 0 30668 2021-06-10 08:53:34.000000 control.tar.xz\n--rw-r--r-- 0 0 0 941080 2021-06-10 08:53:34.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 941060 2021-06-10 08:53:34.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/libapt-pkg-doc/html/todo.xhtml", "source2": "./usr/share/doc/libapt-pkg-doc/html/todo.xhtml", "unified_diff": "@@ -43,47 +43,51 @@\n
\n
Todo List
\n \n
\n
\n
Module acquire
\n
Acquire supports inserting an object into several queues at once, but it is not clear what its behavior in this case is, and no subclass of pkgAcquire::Item seems to actually use this capability.
\n+
Member MMap::Map (FileFd &Fd)
\n+
Writing to compressed fd's ?
\n+
Class pkgAcqIndex
\n+
Why does pkgAcqIndex have protected members?
\n+
Class pkgAcqMetaSig
\n+
Why protected members?
\n+
Class pkgAcquire
\n+

Why so many protected values?

\n+

Why all the protected data items and methods?

\n+

Like everything else in the Acquire system, this has way too many protected items.

\n+
\n+
Member pkgCdrom::Add (pkgCdromStatus *log)
\n+
We ignore stat() errors here as we usually have only one of those in use
\n+
Member pkgDPkgPM::Go (APT::Progress::PackageManager *progress) APT_OVERRIDE
\n+
workaround for dpkg bug, see our ./test-bug-740843-versioned-up-down-breaks test
\n
Member CacheSetHelper::PackageFromString (PackageContainerInterface *const pci, pkgCacheFile &Cache, std::string const &pattern)
\n
hm, hm, regexp/fnmatch incompatible?
\n
Member CommandLine::GetCommand (Dispatch const *const Map, unsigned int const argc, char const *const *const argv) APT_PURE
\n
How like is it that an option parameter will be also a valid Match ?
\n
Member debReleaseIndex::Load (std::string const &Filename, std::string *const ErrorText) APT_OVERRIDE
\n
find better tag name
\n
Member edspListParser::ParseStatus (pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) APT_OVERRIDE
\n
Using an overriding pin is wrong.
\n-
Member MMap::Map (FileFd &Fd)
\n-
Writing to compressed fd's ?
\n
Member PackageManagerFancy::GetTerminalSize ()
\n
get from \"child_pty\" instead?
\n
Member PackageManagerProgressDeb822Fd::StartDpkg () APT_OVERRIDE
\n
use SetCloseExec here once it taught about throwing
\n
Member PackageManagerProgressFd::StartDpkg () APT_OVERRIDE
\n
use SetCloseExec here once it taught about throwing
\n
Member pkgAcqDiffIndex::ParseDiffIndex (std::string const &IndexDiffFile)
\n
all of pdiff supports only .gz compressed patches
\n
Member pkgAcqDiffIndex::pkgAcqDiffIndex (pkgAcquire *const Owner, pkgAcqMetaClearSig *const TransactionManager, IndexTarget const &Target) APT_NONNULL(2
\n
Magic number as an upper bound on pdiffs we will reasonably acquire
\n-
Class pkgAcqIndex
\n-
Why does pkgAcqIndex have protected members?
\n
Member pkgAcqIndexDiffs::available_patches
\n
These are indexed by sha1sum; why not use some sort of dictionary instead of relying on ordering and stripping them off the front?
\n-
Class pkgAcqMetaSig
\n-
Why protected members?
\n
Member pkgAcqMetaSig::Failed (std::string const &Message, pkgAcquire::MethodConfig const *const Cnf) APT_OVERRIDE
\n
this is used often (e.g. in pkgAcqIndexTrans) so refactor
\n-
Class pkgAcquire
\n-

Why all the protected data items and methods?

\n-

Why so many protected values?

\n-

Like everything else in the Acquire system, this has way too many protected items.

\n-
\n
Member pkgAcquire::Access
\n
Doesn't this duplicate Config->Access?
\n
Member pkgAcquire::Bump ()
\n
Why both this and Cycle()? Are they expected to be different someday?
\n
Member pkgAcquire::Configs
\n
why a hand-managed config dictionary instead of std::map?
\n
Member pkgAcquire::InReady
\n@@ -100,18 +104,18 @@\n
Wouldn't a std::dequeue be more appropriate?
\n
Member pkgAcquire::OutReady
\n
Is this right?
\n
Member pkgAcquire::Queues
\n
why a hand-managed list of queues instead of std::list or std::set?
\n
Member pkgAcquire::RunMessages ()
\n
Several message types lack separate handlers.
\n-
Member pkgAcquire::Workers
\n-

Why not just use a std::set?

\n-

why a hand-managed list of workers instead of std::list or std::set?

\n-

This is plural because support exists in Queue for multiple workers. However, it does not appear that there is any way to actually associate more than one worker with a queue.

\n+
Member pkgAcquire::Workers
\n+

why a hand-managed list of workers instead of std::list or std::set?

\n+

This is plural because support exists in Queue for multiple workers. However, it does not appear that there is any way to actually associate more than one worker with a queue.

\n+

Why not just use a std::set?

\n
\n
Class pkgAcquireStatus
\n
Why protected members?
\n
Member pkgAcquireStatus::MediaChange (std::string Media, std::string Drive)=0
\n
This is a horrible blocking monster; it should be CPSed with prejudice.
\n
Member pkgCache< Str, Itr >::DescFile::Size
\n
document pkgCache::DescFile::Size
\n@@ -123,31 +127,27 @@\n
enumerate at least the possible indexes
\n
Member pkgCache< Str, Itr >::ReleaseFile::Flags
\n
document PackageFile::Flags
\n
Member pkgCache< Str, Itr >::VerFile::Size
\n
document pkgCache::VerFile::Size
\n
Member pkgCacheGenerator::MakeStatusCache (pkgSourceList &List, OpProgress *Progress, MMap **OutMap, pkgCache **OutCache, bool AllowMem=false)
\n
deprecate the ignored AllowMem parameter
\n-
Member pkgCdrom::Add (pkgCdromStatus *log)
\n-
We ignore stat() errors here as we usually have only one of those in use
\n
Member pkgDepCache::GetRootSetFunc ()
\n
Is this the best place for this function? Perhaps the settings for mark-and-sweep should be stored in a single external class?
\n
Member pkgDepCache::Policy::IsImportantDep (DepIterator const &Dep) const
\n
this is a meant as a temporary solution until the
\n-
Member pkgDPkgPM::Go (APT::Progress::PackageManager *progress) APT_OVERRIDE
\n-
workaround for dpkg bug, see our ./test-bug-740843-versioned-up-down-breaks test
\n
Member pkgDPkgPM::OpenLog ()
\n
use a better string after freeze
\n
Member pkgDPkgPM::ProcessDpkgStatusLine (char *line)
\n-

2: is \"pkgname\" here reliable with dpkg only sending us

\n-

this needs a muliarch testcase

\n+

this needs a muliarch testcase

\n+

2: is \"pkgname\" here reliable with dpkg only sending us

\n
\n
Member pkgPackageManager::EarlyRemove (PkgIterator Pkg, DepIterator const *const Dep) APT_MUSTCHECK
\n-

Unify messaging with Protected below.

\n-

Message should talk about Protected, not Essential, and unified.

\n+

Message should talk about Protected, not Essential, and unified.

\n+

Unify messaging with Protected below.

\n
\n
Member pkgPolicy::pkgPolicy (pkgCache *Owner)
\n
make ExpressionMatches static to use it here easily
\n
Member pkgProblemResolver::ResolveInternal (bool const BrokenFix=false)
\n

we should undo the complete MarkInstall process here

\n

use DoUpgrade(Pkg) instead?

\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -6,55 +6,60 @@\n commandline package manager\n \n Todo List\n Module acquire\n Acquire supports inserting an object into several queues at once, but it\n is not clear what its behavior in this case is, and no subclass of\n pkgAcquire::Item seems to actually use this capability.\n+ Member MMap::Map (FileFd &Fd)\n+ Writing to compressed fd's ?\n+ Class pkgAcqIndex\n+ Why does pkgAcqIndex have protected members?\n+ Class pkgAcqMetaSig\n+ Why protected members?\n+ Class pkgAcquire\n+ Why so many protected values?\n+ Why all the protected data items and methods?\n+ Like everything else in the Acquire system, this has way too many\n+ protected items.\n+ Member pkgCdrom::Add (pkgCdromStatus *log)\n+ We ignore stat() errors here as we usually have only one of those in use\n+ Member pkgDPkgPM::Go (APT::Progress::PackageManager *progress) APT_OVERRIDE\n+ workaround for dpkg bug, see our ./test-bug-740843-versioned-up-down-\n+ breaks test\n Member CacheSetHelper::PackageFromString (PackageContainerInterface *const\n pci, pkgCacheFile &Cache, std::string const &pattern)\n hm, hm, regexp/fnmatch incompatible?\n Member CommandLine::GetCommand (Dispatch const *const Map, unsigned int const\n argc, char const *const *const argv) APT_PURE\n How like is it that an option parameter will be also a valid Match ?\n Member debReleaseIndex::Load (std::string const &Filename, std::string *const\n ErrorText) APT_OVERRIDE\n find better tag name\n Member edspListParser::ParseStatus (pkgCache::PkgIterator &Pkg, pkgCache::\n VerIterator &Ver) APT_OVERRIDE\n Using an overriding pin is wrong.\n- Member MMap::Map (FileFd &Fd)\n- Writing to compressed fd's ?\n Member PackageManagerFancy::GetTerminalSize ()\n get from \"child_pty\" instead?\n Member PackageManagerProgressDeb822Fd::StartDpkg () APT_OVERRIDE\n use SetCloseExec here once it taught about throwing\n Member PackageManagerProgressFd::StartDpkg () APT_OVERRIDE\n use SetCloseExec here once it taught about throwing\n Member pkgAcqDiffIndex::ParseDiffIndex (std::string const &IndexDiffFile)\n all of pdiff supports only .gz compressed patches\n Member pkgAcqDiffIndex::pkgAcqDiffIndex (pkgAcquire *const Owner,\n pkgAcqMetaClearSig *const TransactionManager, IndexTarget const &Target)\n APT_NONNULL(2\n Magic number as an upper bound on pdiffs we will reasonably acquire\n- Class pkgAcqIndex\n- Why does pkgAcqIndex have protected members?\n Member pkgAcqIndexDiffs::available_patches\n These are indexed by sha1sum; why not use some sort of dictionary instead\n of relying on ordering and stripping them off the front?\n- Class pkgAcqMetaSig\n- Why protected members?\n Member pkgAcqMetaSig::Failed (std::string const &Message, pkgAcquire::\n MethodConfig const *const Cnf) APT_OVERRIDE\n this is used often (e.g. in pkgAcqIndexTrans) so refactor\n- Class pkgAcquire\n- Why all the protected data items and methods?\n- Why so many protected values?\n- Like everything else in the Acquire system, this has way too many\n- protected items.\n Member pkgAcquire::Access\n Doesn't this duplicate Config->Access?\n Member pkgAcquire::Bump ()\n Why both this and Cycle()? Are they expected to be different someday?\n Member pkgAcquire::Configs\n why a hand-managed config dictionary instead of std::map?\n Member pkgAcquire::InReady\n@@ -72,19 +77,19 @@\n Member pkgAcquire::OutReady\n Is this right?\n Member pkgAcquire::Queues\n why a hand-managed list of queues instead of std::list or std::set?\n Member pkgAcquire::RunMessages ()\n Several message types lack separate handlers.\n Member pkgAcquire::Workers\n- Why not just use a std::set?\n why a hand-managed list of workers instead of std::list or std::set?\n This is plural because support exists in Queue for multiple workers.\n However, it does not appear that there is any way to actually associate\n more than one worker with a queue.\n+ Why not just use a std::set?\n Class pkgAcquireStatus\n Why protected members?\n Member pkgAcquireStatus::MediaChange (std::string Media, std::string Drive)=0\n This is a horrible blocking monster; it should be CPSed with prejudice.\n Member pkgCache<_Str,_Itr_>::DescFile::Size\n document pkgCache::DescFile::Size\n Member pkgCache<_Str,_Itr_>::Description::FileList\n@@ -96,33 +101,28 @@\n Member pkgCache<_Str,_Itr_>::ReleaseFile::Flags\n document PackageFile::Flags\n Member pkgCache<_Str,_Itr_>::VerFile::Size\n document pkgCache::VerFile::Size\n Member pkgCacheGenerator::MakeStatusCache (pkgSourceList &List, OpProgress\n *Progress, MMap **OutMap, pkgCache **OutCache, bool AllowMem=false)\n deprecate the ignored AllowMem parameter\n- Member pkgCdrom::Add (pkgCdromStatus *log)\n- We ignore stat() errors here as we usually have only one of those in use\n Member pkgDepCache::GetRootSetFunc ()\n Is this the best place for this function? Perhaps the settings for mark-\n and-sweep should be stored in a single external class?\n Member pkgDepCache::Policy::IsImportantDep (DepIterator const &Dep) const\n this is a meant as a temporary solution until the\n- Member pkgDPkgPM::Go (APT::Progress::PackageManager *progress) APT_OVERRIDE\n- workaround for dpkg bug, see our ./test-bug-740843-versioned-up-down-\n- breaks test\n Member pkgDPkgPM::OpenLog ()\n use a better string after freeze\n Member pkgDPkgPM::ProcessDpkgStatusLine (char *line)\n- 2: is \"pkgname\" here reliable with dpkg only sending us\n this needs a muliarch testcase\n+ 2: is \"pkgname\" here reliable with dpkg only sending us\n Member pkgPackageManager::EarlyRemove (PkgIterator Pkg, DepIterator const\n *const Dep) APT_MUSTCHECK\n- Unify messaging with Protected below.\n Message should talk about Protected, not Essential, and unified.\n+ Unify messaging with Protected below.\n Member pkgPolicy::pkgPolicy (pkgCache *Owner)\n make ExpressionMatches static to use it here easily\n Member pkgProblemResolver::ResolveInternal (bool const BrokenFix=false)\n we should undo the complete MarkInstall process here\n use DoUpgrade(Pkg) instead?\n Member pkgSrcRecords::Parser::BuildDepends (std::vector< BuildDepRec >\n &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch=true)=0\n"}]}]}]}]}]}