Fix showing arch of packages after optimization

* Move the binary package arch truly into the base package
This commit is contained in:
Martchus 2022-05-31 19:50:46 +02:00
parent b74392c34d
commit ecebf9fbde
11 changed files with 18 additions and 23 deletions

View File

@ -101,8 +101,8 @@ static void printPackageSearchResults(const LibRepoMgr::WebClient::Response::bod
for (const auto &[db, package, packageID] : packages) {
const auto &dbInfo = std::get<LibPkg::DatabaseInfo>(db);
t.add_row(
{ package->packageInfo ? package->packageInfo->arch : dbInfo.arch, dbInfo.name, package->name, package->version, package->description,
package->packageInfo && !package->packageInfo->buildDate.isNull() ? package->packageInfo->buildDate.toString() : "?" });
{ package->packageInfo ? package->arch : dbInfo.arch, dbInfo.name, package->name, package->version, package->description,
package->packageInfo && !package->buildDate.isNull() ? package->packageInfo->buildDate.toString() : "?" });
}
t.row(0).format().font_align(tabulate::FontAlign::center).font_style({ tabulate::FontStyle::bold });
configureColumnWidths(t);
@ -135,7 +135,7 @@ static void printPackageDetails(const LibRepoMgr::WebClient::Response::body_type
tabulate::Table t;
t.format().hide_border();
if (pkg->packageInfo) {
t.add_row({ "Arch", pkg->packageInfo->arch });
t.add_row({ "Arch", pkg->arch });
} else if (!pkg->archs.empty()) {
t.add_row({ "Archs", formatList(pkg->archs) });
} else if (pkg->sourceInfo) {

View File

@ -322,13 +322,10 @@ std::string PackageVersion::toString() const
*/
string LibPkg::Package::computeFileName(const char *extension) const
{
if (!packageInfo) {
return string();
}
if (!packageInfo->fileName.empty()) {
if (packageInfo && !packageInfo->fileName.empty()) {
return packageInfo->fileName;
}
return argsToString(name, '-', version, '-', packageInfo->arch, '.', extension);
return argsToString(name, '-', version, '-', arch, '.', extension);
}
string LibPkg::PackageBase::computeRegularPackageName() const

View File

@ -233,7 +233,6 @@ struct LIBPKG_EXPORT PackageInfo : public ReflectiveRapidJSON::JsonSerializable<
std::string md5;
std::string sha256;
std::string pgpSignature;
std::string arch; // arch of concrete binary package
std::uint32_t size = 0;
bool operator==(const PackageInfo &other) const = default;
};

View File

@ -234,7 +234,7 @@ static void addPackageInfo(Package &package, PackageVersion &version, const char
if (isPackageInfo) {
// add as binary arch when parsing PKGINFO
ensure_pkg_info;
package.packageInfo->arch = valueString;
package.arch = valueString;
} else if (!packageCount) {
// add to sourceInfo when still parsing base info
package.sourceInfo->archs.emplace_back(value, valueSize);
@ -319,7 +319,7 @@ static void addPackageDescription(Package &package, const char *field, size_t fi
}
else_if_field("ARCH")
{
package.packageInfo->arch = valueString;
package.arch = valueString;
}
else_if_field("LICENSE")
{
@ -934,10 +934,10 @@ std::shared_ptr<Package> Package::fromPkgFileName(std::string_view fileName)
pkg->origin = PackageOrigin::PackageFileName;
pkg->name = name;
pkg->version = version;
pkg->arch = arch;
pkg->provides.emplace_back(pkg->name, pkg->version);
pkg->packageInfo = std::make_optional<PackageInfo>();
pkg->packageInfo->fileName = fileName;
pkg->packageInfo->arch = arch;
return pkg;
}

View File

@ -273,10 +273,9 @@ void DataTests::testComputingFileName()
auto pkg = Package();
pkg.name = "test";
pkg.version = "1.2-3";
CPPUNIT_ASSERT_EQUAL_MESSAGE("packageInfo required for computing filename", string(), pkg.computeFileName());
pkg.packageInfo = std::make_optional<PackageInfo>();
pkg.packageInfo->arch = "x86_64";
pkg.arch = "x86_64";
CPPUNIT_ASSERT_EQUAL_MESSAGE("file name computed from name, version and arch", "test-1.2-3-x86_64.pkg.tar.zst"s, pkg.computeFileName());
pkg.packageInfo = std::make_optional<PackageInfo>();
pkg.packageInfo->fileName = "explicitly-specified-filename";
CPPUNIT_ASSERT_EQUAL_MESSAGE("explicitly specified filename returned", "explicitly-specified-filename"s, pkg.computeFileName());
}

View File

@ -280,7 +280,7 @@ void ParserTests::testParsingPkgName()
CPPUNIT_ASSERT_EQUAL_MESSAGE("origin", PackageOrigin::PackageFileName, pkg->origin);
CPPUNIT_ASSERT_EQUAL("texlive-localmanager-git"s, pkg->name);
CPPUNIT_ASSERT_EQUAL("0.4.6.r0.gd71966e-1"s, pkg->version);
CPPUNIT_ASSERT_EQUAL("any"s, pkg->packageInfo->arch);
CPPUNIT_ASSERT_EQUAL("any"s, pkg->arch);
}
void ParserTests::testExtractingPkgFile()

View File

@ -104,7 +104,7 @@ void BinaryParserTests::testParsingElfFromPkgFile()
const auto pkgFilePath3 = testFilePath("perl/perl-linux-desktopfiles-0.22-2-any.pkg.tar.xz");
const auto package3 = Package::fromPkgFile(pkgFilePath3);
CPPUNIT_ASSERT_EQUAL_MESSAGE("origin", PackageOrigin::PackageContents, package3->origin);
CPPUNIT_ASSERT_EQUAL_MESSAGE("arch", "any"s, package3->packageInfo->arch);
CPPUNIT_ASSERT_EQUAL_MESSAGE("arch", "any"s, package3->arch);
const unordered_set<Dependency> expectedPerlDependencies{
Dependency("perl", "5.28", DependencyMode::GreatherEqual), // because contained module built against Perl 5.28
Dependency("perl", "5.29", DependencyMode::LessThan), // because contained module built against Perl 5.28
@ -120,7 +120,7 @@ void BinaryParserTests::testParsingElfFromPkgFile()
const auto pkgFilePath4 = testFilePath("python/sphinxbase-5prealpha-7-i686.pkg.tar.xz");
const auto package4 = Package::fromPkgFile(pkgFilePath4);
CPPUNIT_ASSERT_EQUAL_MESSAGE("origin", PackageOrigin::PackageContents, package4->origin);
CPPUNIT_ASSERT_EQUAL_MESSAGE("arch", "i686"s, package4->packageInfo->arch);
CPPUNIT_ASSERT_EQUAL_MESSAGE("arch", "i686"s, package4->arch);
const unordered_set<Dependency> expectedPythonDependencies{
Dependency("libpulse"), // from PKGBUILD
Dependency("lapack"), // from PKGBUILD

View File

@ -33,7 +33,7 @@ void checkHarfbuzzPackage(const Package &pkg)
CPPUNIT_ASSERT_MESSAGE("package info present"s, pkg.packageInfo);
CPPUNIT_ASSERT_MESSAGE("no source archs present"s, pkg.sourceInfo->archs.empty());
CPPUNIT_ASSERT_EQUAL_MESSAGE("package arch"s, "Martchus <@.net>"s, pkg.packageInfo->packager);
CPPUNIT_ASSERT_EQUAL_MESSAGE("packer"s, "any"s, pkg.packageInfo->arch);
CPPUNIT_ASSERT_EQUAL_MESSAGE("packer"s, "any"s, pkg.arch);
const vector<Dependency> makeDependencies = {
Dependency("mingw-w64-configure"s),
Dependency("mingw-w64-cairo"s),
@ -81,7 +81,7 @@ void checkAutoconfPackage(const Package &pkg)
CPPUNIT_ASSERT_MESSAGE("package info present"s, pkg.packageInfo);
CPPUNIT_ASSERT_MESSAGE("no source archs present"s, pkg.sourceInfo->archs.empty());
CPPUNIT_ASSERT_EQUAL_MESSAGE("packer"s, "Allan McRae <allan@archlinux.org>"s, pkg.packageInfo->packager);
CPPUNIT_ASSERT_EQUAL_MESSAGE("package arch"s, "any"s, pkg.packageInfo->arch);
CPPUNIT_ASSERT_EQUAL_MESSAGE("package arch"s, "any"s, pkg.arch);
CPPUNIT_ASSERT_EQUAL_MESSAGE("package file name"s, "autoconf-2.69-4-any.pkg.tar.xz"s, pkg.packageInfo->fileName);
CPPUNIT_ASSERT_EQUAL_MESSAGE("package build date"s, 636089958990000000ul, pkg.packageInfo->buildDate.totalTicks());
CPPUNIT_ASSERT_EQUAL_MESSAGE("package files"s, 74ul, pkg.packageInfo->files.size());

View File

@ -177,7 +177,7 @@ bool ReloadLibraryDependencies::addRelevantPackage(LibPkg::StorageID packageID,
std::string path, url, cachePath;
std::error_code ec;
const auto &fileName = packageInfo->fileName;
const auto &arch = packageInfo->arch;
const auto &arch = package->arch;
if (!db->localPkgDir.empty() && std::filesystem::file_size(cachePath = db->localPkgDir % '/' + fileName, ec) && !ec) {
path = std::move(cachePath);
} else if (std::filesystem::file_size(cachePath = m_cacheDir + fileName, ec) && !ec) {

View File

@ -470,7 +470,7 @@ void CheckForProblems::run()
.desc = "signature file for package \"" % package->packageInfo->fileName + "\" not present", .pkg = package->name });
}
}
if (package->packageInfo->arch == "any" && (!package->libdepends.empty() || !package->libprovides.empty())) {
if (package->arch == "any" && (!package->libdepends.empty() || !package->libprovides.empty())) {
auto crossOnly = true;
for (const auto &libnames : { package->libdepends, package->libprovides }) {
for (const auto &libname : libnames) {

View File

@ -69,7 +69,7 @@ export function renderDependency(mode, value)
}
const labelsWithoutBasics = ['Architecture', 'Repository', 'Description', 'Upstream URL', 'License(s)', 'Groups', 'Package size', 'Installed size', 'Packager', 'Build date', 'Dependencies', 'Optional dependencies', 'Make dependencies', 'Check dependencies', 'Provides', 'Replaces', 'Conflicts', 'Contained libraries', 'Needed libraries', 'Files'];
const fieldsWithoutBasics = ['packageInfo.arch', 'db', 'description', 'upstreamUrl', 'licenses', 'groups', 'packageInfo.size', 'installInfo.installedSize', 'packageInfo.packager', 'packageInfo.buildDate', 'dependencies', 'optionalDependencies', 'sourceInfo.makeDependencies', 'sourceInfo.checkDependencies', 'provides', 'replaces', 'conflicts', 'libprovides', 'libdepends', 'packageInfo.files'];
const fieldsWithoutBasics = ['arch', 'db', 'description', 'upstreamUrl', 'licenses', 'groups', 'packageInfo.size', 'installInfo.installedSize', 'packageInfo.packager', 'packageInfo.buildDate', 'dependencies', 'optionalDependencies', 'sourceInfo.makeDependencies', 'sourceInfo.checkDependencies', 'provides', 'replaces', 'conflicts', 'libprovides', 'libdepends', 'packageInfo.files'];
const labelsWithBasics = ['Name', 'Version', ...labelsWithoutBasics];
const fieldsWithBasics = ['name', 'version', ...fieldsWithoutBasics];