summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCalin Cascaval <cascaval@acm.org>2014-12-26 17:48:53 (GMT)
committerBrad King <brad.king@kitware.com>2015-01-12 14:12:50 (GMT)
commit70abf6e780185c9c7041593bc99aff0a26bc9265 (patch)
treea666f99d036a102407710350d37350b208b89d26
parentc118816d44e178e4364a0c32aaece81a14511237 (diff)
downloadCMake-70abf6e780185c9c7041593bc99aff0a26bc9265.zip
CMake-70abf6e780185c9c7041593bc99aff0a26bc9265.tar.gz
CMake-70abf6e780185c9c7041593bc99aff0a26bc9265.tar.bz2
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".
-rw-r--r--Source/CPack/cmCPackPackageMakerGenerator.cxx34
-rw-r--r--Source/CPack/cmCPackPackageMakerGenerator.h2
2 files changed, 26 insertions, 10 deletions
diff --git a/Source/CPack/cmCPackPackageMakerGenerator.cxx b/Source/CPack/cmCPackPackageMakerGenerator.cxx
index d736948..e58415c 100644
--- a/Source/CPack/cmCPackPackageMakerGenerator.cxx
+++ b/Source/CPack/cmCPackPackageMakerGenerator.cxx
@@ -24,11 +24,20 @@
#include <cmsys/Glob.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()
{
this->PackageMakerVersion = 0.0;
- this->PackageCompatibilityVersion = 10.4;
+ this->PackageCompatibilityVersion = getVersion(10, 4);
}
//----------------------------------------------------------------------
@@ -39,7 +48,7 @@ cmCPackPackageMakerGenerator::~cmCPackPackageMakerGenerator()
//----------------------------------------------------------------------
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;
if (compIt->second.IsDownloaded)
{
- if (this->PackageCompatibilityVersion >= 10.5 &&
+ if (this->PackageCompatibilityVersion >= getVersion(10, 5) &&
this->PackageMakerVersion >= 3.0)
{
// Build this package within the upload directory.
@@ -260,7 +269,7 @@ int cmCPackPackageMakerGenerator::PackageFiles()
}
else if (!warnedAboutDownloadCompatibility)
{
- if (this->PackageCompatibilityVersion < 10.5)
+ if (this->PackageCompatibilityVersion < getVersion(10, 5))
{
cmCPackLogger(
cmCPackLog::LOG_WARNING,
@@ -520,22 +529,29 @@ int cmCPackPackageMakerGenerator::InitializeInternal()
const char *packageCompat = this->GetOption("CPACK_OSX_PACKAGE_VERSION");
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"))
{
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.5");
- this->PackageCompatibilityVersion = 10.5;
+ this->PackageCompatibilityVersion = getVersion(10, 5);
}
else if (this->GetOption("CPACK_COMPONENTS_ALL"))
{
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.4");
- this->PackageCompatibilityVersion = 10.4;
+ this->PackageCompatibilityVersion = getVersion(10, 4);
}
else
{
this->SetOption("CPACK_OSX_PACKAGE_VERSION", "10.3");
- this->PackageCompatibilityVersion = 10.3;
+ this->PackageCompatibilityVersion = getVersion(10, 3);
}
std::vector<std::string> no_paths;
@@ -712,7 +728,7 @@ GenerateComponentPackage(const char *packageFile,
// The command that will be used to run PackageMaker
cmOStringStream pkgCmd;
- if (this->PackageCompatibilityVersion < 10.5 ||
+ if (this->PackageCompatibilityVersion < getVersion(10, 5) ||
this->PackageMakerVersion < 3.0)
{
// Create Description.plist and Info.plist files for normal Mac OS
diff --git a/Source/CPack/cmCPackPackageMakerGenerator.h b/Source/CPack/cmCPackPackageMakerGenerator.h
index e350a60..4f9e2a8 100644
--- a/Source/CPack/cmCPackPackageMakerGenerator.h
+++ b/Source/CPack/cmCPackPackageMakerGenerator.h
@@ -117,7 +117,7 @@ protected:
cmCPackComponent PostFlightComponent;
double PackageMakerVersion;
- double PackageCompatibilityVersion;
+ unsigned int PackageCompatibilityVersion;
};
#endif