CPack: Fix PackageMaker internal versioning for OS X 10.10

Avoid using a floating point value to represent the version, since
"10.10" would be treated as "10.1".
This commit is contained in:
Calin Cascaval 2014-12-26 09:48:53 -08:00 committed by Brad King
parent c118816d44
commit 70abf6e780
2 changed files with 26 additions and 10 deletions

View File

@ -24,11 +24,20 @@
#include <cmsys/Glob.hxx> #include <cmsys/Glob.hxx>
#include <cmsys/FStream.hxx> #include <cmsys/FStream.hxx>
#include <assert.h>
static inline
unsigned int getVersion(unsigned int major, unsigned int minor)
{
assert(major < 256 && minor < 256);
return ((major & 0xFF) << 16 | minor);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
cmCPackPackageMakerGenerator::cmCPackPackageMakerGenerator() cmCPackPackageMakerGenerator::cmCPackPackageMakerGenerator()
{ {
this->PackageMakerVersion = 0.0; this->PackageMakerVersion = 0.0;
this->PackageCompatibilityVersion = 10.4; this->PackageCompatibilityVersion = getVersion(10, 4);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -39,7 +48,7 @@ cmCPackPackageMakerGenerator::~cmCPackPackageMakerGenerator()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
bool cmCPackPackageMakerGenerator::SupportsComponentInstallation() const bool cmCPackPackageMakerGenerator::SupportsComponentInstallation() const
{ {
return this->PackageCompatibilityVersion >= 10.4; return this->PackageCompatibilityVersion >= getVersion(10, 4);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -241,7 +250,7 @@ int cmCPackPackageMakerGenerator::PackageFiles()
std::string packageFile; std::string packageFile;
if (compIt->second.IsDownloaded) if (compIt->second.IsDownloaded)
{ {
if (this->PackageCompatibilityVersion >= 10.5 && if (this->PackageCompatibilityVersion >= getVersion(10, 5) &&
this->PackageMakerVersion >= 3.0) this->PackageMakerVersion >= 3.0)
{ {
// Build this package within the upload directory. // Build this package within the upload directory.
@ -260,7 +269,7 @@ int cmCPackPackageMakerGenerator::PackageFiles()
} }
else if (!warnedAboutDownloadCompatibility) else if (!warnedAboutDownloadCompatibility)
{ {
if (this->PackageCompatibilityVersion < 10.5) if (this->PackageCompatibilityVersion < getVersion(10, 5))
{ {
cmCPackLogger( cmCPackLogger(
cmCPackLog::LOG_WARNING, cmCPackLog::LOG_WARNING,
@ -520,22 +529,29 @@ int cmCPackPackageMakerGenerator::InitializeInternal()
const char *packageCompat = this->GetOption("CPACK_OSX_PACKAGE_VERSION"); const char *packageCompat = this->GetOption("CPACK_OSX_PACKAGE_VERSION");
if (packageCompat && *packageCompat) if (packageCompat && *packageCompat)
{ {
this->PackageCompatibilityVersion = atof(packageCompat); unsigned int majorVersion = 10;
unsigned int minorVersion = 5;
int res = sscanf(packageCompat, "%u.%u", &majorVersion, &minorVersion);
if (res == 2)
{
this->PackageCompatibilityVersion =
getVersion(majorVersion, minorVersion);
}
} }
else if (this->GetOption("CPACK_DOWNLOAD_SITE")) else if (this->GetOption("CPACK_DOWNLOAD_SITE"))
{ {
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.5"); this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.5");
this->PackageCompatibilityVersion = 10.5; this->PackageCompatibilityVersion = getVersion(10, 5);
} }
else if (this->GetOption("CPACK_COMPONENTS_ALL")) else if (this->GetOption("CPACK_COMPONENTS_ALL"))
{ {
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.4"); this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.4");
this->PackageCompatibilityVersion = 10.4; this->PackageCompatibilityVersion = getVersion(10, 4);
} }
else else
{ {
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.3"); this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.3");
this->PackageCompatibilityVersion = 10.3; this->PackageCompatibilityVersion = getVersion(10, 3);
} }
std::vector<std::string> no_paths; std::vector<std::string> no_paths;
@ -712,7 +728,7 @@ GenerateComponentPackage(const char *packageFile,
// The command that will be used to run PackageMaker // The command that will be used to run PackageMaker
cmOStringStream pkgCmd; cmOStringStream pkgCmd;
if (this->PackageCompatibilityVersion < 10.5 || if (this->PackageCompatibilityVersion < getVersion(10, 5) ||
this->PackageMakerVersion < 3.0) this->PackageMakerVersion < 3.0)
{ {
// Create Description.plist and Info.plist files for normal Mac OS // Create Description.plist and Info.plist files for normal Mac OS

View File

@ -117,7 +117,7 @@ protected:
cmCPackComponent PostFlightComponent; cmCPackComponent PostFlightComponent;
double PackageMakerVersion; double PackageMakerVersion;
double PackageCompatibilityVersion; unsigned int PackageCompatibilityVersion;
}; };
#endif #endif