Support static-compat variant when computing regular package name

This commit is contained in:
Martchus 2022-05-31 20:08:15 +02:00
parent f2902f1d08
commit 0095424696
3 changed files with 25 additions and 18 deletions

View File

@ -49,7 +49,7 @@ std::string Config::addLicenseInfo(LicenseResult &result, PackageSearchResult &s
// * use the real project name if known // * use the real project name if known
const auto upstreamVersion = PackageVersion::fromString(package->version).upstream; const auto upstreamVersion = PackageVersion::fromString(package->version).upstream;
auto regularPackageName = package->computeRegularPackageName(); auto regularPackageName = package->computeRegularPackageName();
auto packageID = regularPackageName.empty() ? package->name : regularPackageName; auto packageID = regularPackageName.empty() ? package->name : std::string(regularPackageName);
static const auto displayNames = unordered_map<string, string>{ static const auto displayNames = unordered_map<string, string>{
{ "mingw-w64-headers", "MinGW-w64" }, { "mingw-w64-headers", "MinGW-w64" },
{ "gcc", "GCC" }, { "gcc", "GCC" },
@ -140,7 +140,7 @@ std::string Config::addLicenseInfo(LicenseResult &result, PackageSearchResult &s
// read custom license // read custom license
if (!regularPackageName.empty()) { if (!regularPackageName.empty()) {
const auto regularPackageSearchResult = findPackage(Dependency(regularPackageName, package->version)); const auto regularPackageSearchResult = findPackage(Dependency(packageID, package->version));
if (regularPackageSearchResult.pkg) { if (regularPackageSearchResult.pkg) {
const auto regularUpstreamVersion = PackageVersion::fromString(regularPackageSearchResult.pkg->version).upstream; const auto regularUpstreamVersion = PackageVersion::fromString(regularPackageSearchResult.pkg->version).upstream;
if (upstreamVersion != regularUpstreamVersion) { if (upstreamVersion != regularUpstreamVersion) {

View File

@ -328,25 +328,32 @@ string LibPkg::Package::computeFileName(const char *extension) const
return argsToString(name, '-', version, '-', arch, '.', extension); return argsToString(name, '-', version, '-', arch, '.', extension);
} }
string LibPkg::PackageBase::computeRegularPackageName() const std::string_view LibPkg::PackageBase::computeRegularPackageName() const
{ {
if (name == "mingw-w64-headers" || name == "mingw-w64-crt") { if (name == "mingw-w64-headers" || name == "mingw-w64-crt") {
return string(); return std::string_view();
} }
if (startsWith(name, "lib32-")) { static constexpr std::string_view prefixes[] = {
return name.substr(strlen("lib32-")); "lib32-",
} else if (startsWith(name, "mingw-w64-")) { "mingw-w64-",
return name.substr(strlen("mingw-w64-")); "android-aarch64-",
} else if (startsWith(name, "android-aarch64-")) { "android-x86-64-",
return name.substr(strlen("android-aarch64-")); "android-x86-",
} else if (startsWith(name, "android-x86-64-")) { "android-armv7a-eabi-",
return name.substr(strlen("android-x86-64-")); "static-compat-",
} else if (startsWith(name, "android-x86-")) { };
return name.substr(strlen("android-x86-")); for (const auto prefix : prefixes) {
} else if (startsWith(name, "android-armv7a-eabi-")) { if (name.starts_with(prefix)) {
return name.substr(strlen("android-armv7a-eabi-")); return std::string_view(name).substr(prefix.size());
}
} }
return string(); static constexpr std::string_view suffixes[] = { "-static-compat" };
for (const auto suffix : suffixes) {
if (name.ends_with(suffix)) {
return std::string_view(name.data(), name.size() - suffix.size());
}
}
return std::string_view();
} }
void PackageBase::clear() void PackageBase::clear()

View File

@ -385,7 +385,7 @@ struct LIBPKG_EXPORT PackageBase : public ReflectiveRapidJSON::JsonSerializable<
bool isSame(const PackageBase &other) const; bool isSame(const PackageBase &other) const;
PackageVersionComparison compareVersion(const PackageBase &other) const; PackageVersionComparison compareVersion(const PackageBase &other) const;
std::string computeRegularPackageName() const; std::string_view computeRegularPackageName() const;
void clear(); void clear();
PackageOrigin origin = PackageOrigin::Default; PackageOrigin origin = PackageOrigin::Default;