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
const auto upstreamVersion = PackageVersion::fromString(package->version).upstream;
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>{
{ "mingw-w64-headers", "MinGW-w64" },
{ "gcc", "GCC" },
@ -140,7 +140,7 @@ std::string Config::addLicenseInfo(LicenseResult &result, PackageSearchResult &s
// read custom license
if (!regularPackageName.empty()) {
const auto regularPackageSearchResult = findPackage(Dependency(regularPackageName, package->version));
const auto regularPackageSearchResult = findPackage(Dependency(packageID, package->version));
if (regularPackageSearchResult.pkg) {
const auto regularUpstreamVersion = PackageVersion::fromString(regularPackageSearchResult.pkg->version).upstream;
if (upstreamVersion != regularUpstreamVersion) {

View File

@ -328,25 +328,32 @@ string LibPkg::Package::computeFileName(const char *extension) const
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") {
return string();
return std::string_view();
}
if (startsWith(name, "lib32-")) {
return name.substr(strlen("lib32-"));
} else if (startsWith(name, "mingw-w64-")) {
return name.substr(strlen("mingw-w64-"));
} else if (startsWith(name, "android-aarch64-")) {
return name.substr(strlen("android-aarch64-"));
} else if (startsWith(name, "android-x86-64-")) {
return name.substr(strlen("android-x86-64-"));
} else if (startsWith(name, "android-x86-")) {
return name.substr(strlen("android-x86-"));
} else if (startsWith(name, "android-armv7a-eabi-")) {
return name.substr(strlen("android-armv7a-eabi-"));
static constexpr std::string_view prefixes[] = {
"lib32-",
"mingw-w64-",
"android-aarch64-",
"android-x86-64-",
"android-x86-",
"android-armv7a-eabi-",
"static-compat-",
};
for (const auto prefix : prefixes) {
if (name.starts_with(prefix)) {
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()

View File

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