diff options
-rw-r--r-- | Source/CPack/cmCPackFreeBSDGenerator.cxx | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/Source/CPack/cmCPackFreeBSDGenerator.cxx b/Source/CPack/cmCPackFreeBSDGenerator.cxx index bacb451..b5d41fc 100644 --- a/Source/CPack/cmCPackFreeBSDGenerator.cxx +++ b/Source/CPack/cmCPackFreeBSDGenerator.cxx @@ -28,7 +28,8 @@ static const char FreeBSDPackageSuffix_10[] = ".txz"; static const char FreeBSDPackageSuffix_17[] = ".pkg"; cmCPackFreeBSDGenerator::cmCPackFreeBSDGenerator() - : cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, "paxr", FreeBSDPackageSuffix_17 /* old-style, updated if an old-style package is created */) + : cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, "paxr", + FreeBSDPackageSuffix_17) { } @@ -63,7 +64,7 @@ public: { if (d) { - pkg_create_set_format(d, FreeBSDPackageCompression); // Skip over the '.' + pkg_create_set_format(d, FreeBSDPackageCompression); pkg_create_set_compression_level(d, 0); // Explicitly set default pkg_create_set_overwrite(d, false); pkg_create_set_rootdir(d, toplevel_dir.c_str()); @@ -378,7 +379,7 @@ int cmCPackFreeBSDGenerator::PackageFiles() // so update the single filename to what we know will be right. if (this->packageFileNames.size() == 1) { std::string currentPackage = this->packageFileNames[0]; - int lastSlash = currentPackage.rfind('/'); + auto lastSlash = currentPackage.rfind('/'); // If there is a pathname, preserve that; libpkg will write out // a file with the package name and version as specified in the @@ -393,9 +394,6 @@ int cmCPackFreeBSDGenerator::PackageFiles() this->packageFileNames.clear(); this->packageFileNames.emplace_back(actualPackage); - - cmCPackLogger(cmCPackLog::LOG_DEBUG, - "Real filename:" << this->packageFileNames[0] << std::endl); } if (!pkg_initialized() && pkg_init(NULL, NULL) != EPKG_OK) { @@ -442,8 +440,16 @@ int cmCPackFreeBSDGenerator::PackageFiles() for (std::string& name : packageFileNames) { if (cmHasSuffix(name, FreeBSDPackageSuffix_17) && !cmSystemTools::FileExists(name)) { - const std::string suffix(FreeBSDPackageSuffix_17); - name.replace(name.size() - suffix.size(), std::string::npos, suffix); + const std::string badSuffix(FreeBSDPackageSuffix_17); + const std::string goodSuffix(FreeBSDPackageSuffix_10); + std::string repairedName(name); + repairedName.replace(repairedName.size() - badSuffix.size(), + std::string::npos, goodSuffix); + if (cmSystemTools::FileExists(repairedName)) { + name = repairedName; + cmCPackLogger(cmCPackLog::LOG_DEBUG, + "Repaired packagefile " << name << std::endl); + } } } |