summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-install.cc19
-rwxr-xr-xtest/integration/test-solver3-evaluation96
2 files changed, 16 insertions, 99 deletions
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
index e3d176ffe..cf92f91ad 100644
--- a/apt-private/private-install.cc
+++ b/apt-private/private-install.cc
@@ -89,7 +89,7 @@ bool CheckNothingBroken(CacheFile &Cache)
// ---------------------------------------------------------------------
static void WriteApportReport(pkgCacheFile &Cache, std::string &title, std::vector<std::string> const &errors, int mode, bool distUpgrade)
{
- auto dumpfile = flCombine(_config->FindDir("Dir::Log"), "edsp.log");
+ auto dumpfile = flCombine(_config->FindDir("Dir::Log"), "edsp.log.zst");
auto crashfile = flCombine(_config->FindDir("Dir::Apport", "/var/crash"), "apt-edsp." + std::to_string(getuid()) + ".crash");
auto apt = Cache->FindPkg("apt");
if (access(flNotFile(dumpfile).c_str(), W_OK) != 0 || access(flNotFile(crashfile).c_str(), W_OK) != 0)
@@ -97,7 +97,8 @@ static void WriteApportReport(pkgCacheFile &Cache, std::string &title, std::vect
OpTextProgress Progress(*_config);
Progress.OverallProgress(0, 100, 50, _("Writing error report"));
FileFd edspDump(dumpfile,
- FileFd::Exclusive | FileFd::Create | FileFd::WriteOnly | FileFd::BufferedWrite);
+ FileFd::Exclusive | FileFd::Create | FileFd::WriteOnly | FileFd::BufferedWrite,
+ FileFd::Extension);
int edspFlags = 0;
if (mode || distUpgrade)
edspFlags |= EDSP::Request::UPGRADE_ALL;
@@ -127,10 +128,18 @@ static void WriteApportReport(pkgCacheFile &Cache, std::string &title, std::vect
for (auto &error : errors)
crash << " " << error << "\n";
- crash << "AptSolverDump:\n";
std::ifstream toCopy(edspDump.Name());
- for (std::string line; std::getline(toCopy, line);)
- crash << " " << line << "\n";
+ std::ostringstream readStream;
+ readStream << toCopy.rdbuf();
+ const auto base64 = Base64Encode(readStream.str());
+ if (not base64.empty())
+ {
+ crash << "AptSolverDump:\n";
+ // Print the base64, with line wrapping, indented by one space; substr(i, 76)
+ // returns at most 76 characters or as many as are left.
+ for (size_t i=0; i < base64.size(); i += 76)
+ crash << " " << std::string_view{base64}.substr(i, 76) << "\n";
+ }
crash.close();
}
diff --git a/test/integration/test-solver3-evaluation b/test/integration/test-solver3-evaluation
index a873d5b21..b05e7cb9b 100755
--- a/test/integration/test-solver3-evaluation
+++ b/test/integration/test-solver3-evaluation
@@ -32,99 +32,7 @@ Title: Failure: The 3.0 solver produced a worse result
SourcePackage: apt
ErrorMessage:
AptSolverDump:
- Request: EDSP 0.5
- Architecture: amd64
- Architectures: amd64
- Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee
- Install: x:amd64 y:amd64
- Solver: internal
-
- Package: a
- Architecture: all
- Version: 3
- APT-ID: 2
- Source: a
- Source-Version: 3
- Priority: optional
- Section: other
- Size: 42
- APT-Release:
- a=unstable,n=sid,c=main,b=all
- APT-Pin: 500
- APT-Candidate: yes
- Depends: c
-
- Package: b
- Architecture: all
- Version: 3
- APT-ID: 3
- Source: b
- Source-Version: 3
- Priority: optional
- Section: other
- Size: 42
- APT-Release:
- a=unstable,n=sid,c=main,b=all
- APT-Pin: 500
- APT-Candidate: yes
-
- Package: c
- Architecture: all
- Version: 3
- APT-ID: 4
- Source: c
- Source-Version: 3
- Priority: optional
- Section: other
- Size: 42
- APT-Release:
- a=unstable,n=sid,c=main,b=all
- APT-Pin: 500
- APT-Candidate: yes
-
- Package: x
- Architecture: all
- Version: 3
- APT-ID: 0
- Source: x
- Source-Version: 3
- Priority: optional
- Section: other
- Size: 42
- APT-Release:
- a=unstable,n=sid,c=main,b=all
- APT-Pin: 500
- APT-Candidate: yes
- Depends: a | b
-
- Package: y
- Architecture: all
- Version: 3
- APT-ID: 1
- Source: y
- Source-Version: 3
- Priority: optional
- Section: other
- Size: 42
- APT-Release:
- a=unstable,n=sid,c=main,b=all
- APT-Pin: 500
- APT-Candidate: yes
- Depends: b | a
-
- Package: apport
- Architecture: all
- Version: 3
- APT-ID: 6
- Source: apport
- Source-Version: 3
- Priority: optional
- Section: other
- Installed: yes
- APT-Pin: 100
- APT-Candidate: yes
- " cat rootdir/var/crash/apt-edsp.$(id -u).crash
-
+$(cat rootdir/var/log/apt/edsp.log.zst | base64 | sed 's#^# #')" cat rootdir/var/crash/apt-edsp.$(id -u).crash
testsuccessequal "Request: EDSP 0.5
Architecture: amd64
@@ -217,7 +125,7 @@ Section: other
Installed: yes
APT-Pin: 100
APT-Candidate: yes
-" cat rootdir/var/log/apt/edsp.log
+" apthelper cat-file rootdir/var/log/apt/edsp.log.zst
testfailureequal "Reading package lists...
Building dependency tree...