summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2009-01-21 11:54:30 -0500
committerDavid Cole <david.cole@kitware.com>2009-01-21 11:54:30 -0500
commitc647ed54d9c071393e95b204aac2bb975ec95fe9 (patch)
treede2b8f9c339804962fdf912d9837410cec5e3e60
parentd2f27558dfe6ab7c3a36b631249c9e3b89e9eb28 (diff)
downloadcmake-c647ed54d9c071393e95b204aac2bb975ec95fe9.tar.gz
BUG: Fix issue #7833: Add file extension handling to CPack generated installers for OSXX11 applications. Also modify the X11 test to build such an installer on Mac builds that test CPack and have X11 available. Thanks to Wes Turner for the patch.
-rwxr-xr-xModules/CPack.OSXScriptLauncher.inbin1345804 -> 29592 bytes
-rw-r--r--Modules/CPack.OSXScriptLauncher.rsrc.inbin0 -> 362 bytes
-rw-r--r--Modules/CPack.OSXX11.Info.plist.in13
-rw-r--r--Modules/CPack.OSXX11.main.scpt.inbin0 -> 1870 bytes
-rwxr-xr-xModules/CPack.RuntimeScript.in21
-rw-r--r--Source/CPack/OSXLauncherScript.scptbin0 -> 3102 bytes
-rw-r--r--Source/CPack/cmCPackOSXX11Generator.cxx9
-rw-r--r--Tests/CMakeLists.txt9
-rw-r--r--Tests/X11/CMakeLists.txt11
9 files changed, 59 insertions, 4 deletions
diff --git a/Modules/CPack.OSXScriptLauncher.in b/Modules/CPack.OSXScriptLauncher.in
index a3e1737e9e..c715860463 100755
--- a/Modules/CPack.OSXScriptLauncher.in
+++ b/Modules/CPack.OSXScriptLauncher.in
Binary files differ
diff --git a/Modules/CPack.OSXScriptLauncher.rsrc.in b/Modules/CPack.OSXScriptLauncher.rsrc.in
new file mode 100644
index 0000000000..5f5f17a1c7
--- /dev/null
+++ b/Modules/CPack.OSXScriptLauncher.rsrc.in
Binary files differ
diff --git a/Modules/CPack.OSXX11.Info.plist.in b/Modules/CPack.OSXX11.Info.plist.in
index 30ce2de8b1..851b67ba82 100644
--- a/Modules/CPack.OSXX11.Info.plist.in
+++ b/Modules/CPack.OSXX11.Info.plist.in
@@ -4,6 +4,19 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>@CPACK_FILE_ASSOCIATION_EXTENSION@</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>@CPACK_FILE_ASSOCIATION_TYPE@</string>
+ <key>CFBundleTypeRole</key>
+ <string>Editor</string>
+ </dict>
+ </array>
<key>CFBundleExecutable</key>
<string>@CPACK_PACKAGE_FILE_NAME@</string>
<key>CFBundleGetInfoString</key>
diff --git a/Modules/CPack.OSXX11.main.scpt.in b/Modules/CPack.OSXX11.main.scpt.in
new file mode 100644
index 0000000000..de30ea11b4
--- /dev/null
+++ b/Modules/CPack.OSXX11.main.scpt.in
Binary files differ
diff --git a/Modules/CPack.RuntimeScript.in b/Modules/CPack.RuntimeScript.in
index 72dd14ec47..eaecdd8fad 100755
--- a/Modules/CPack.RuntimeScript.in
+++ b/Modules/CPack.RuntimeScript.in
@@ -6,6 +6,26 @@ CWD="`dirname \"$0\"`"
TMP=/tmp/$UID/TemporaryItems
version=`sw_vers -productVersion`
+if [ "$?" == "0" ]; then
+ major=${version%%\.*}
+ rest=${version#*\.}
+ minor=${rest%%\.*}
+ build=${rest#*\.}
+else
+ major=10
+ minor=4
+ build=0
+fi
+
+echo $version
+echo "Major = $major"
+echo "Minor = $minor"
+echo "Build = $build"
+
+
+# if 10.5 or greater, then all the open-x11 stuff need not occur
+if ((( $major < 10 )) || ((( $major == 10)) && (( $minor < 5 )))); then
+version=`sw_vers -productVersion`
if [ "$?" = "0" ]; then
major=${version%%\.*}
rest=${version#*\.}
@@ -42,6 +62,7 @@ else
echo \$DISPLAY > "$TMP/display"
fi
__END_OF_GETDISPLAY_SCRIPT__
+fi
chmod +x "$TMP/getdisplay.sh"
rm -f $TMP/display
open-x11 $TMP/getdisplay.sh || \
diff --git a/Source/CPack/OSXLauncherScript.scpt b/Source/CPack/OSXLauncherScript.scpt
new file mode 100644
index 0000000000..342cf8c01b
--- /dev/null
+++ b/Source/CPack/OSXLauncherScript.scpt
Binary files differ
diff --git a/Source/CPack/cmCPackOSXX11Generator.cxx b/Source/CPack/cmCPackOSXX11Generator.cxx
index 6d04b6e765..ba4ad22f93 100644
--- a/Source/CPack/cmCPackOSXX11Generator.cxx
+++ b/Source/CPack/cmCPackOSXX11Generator.cxx
@@ -89,10 +89,15 @@ int cmCPackOSXX11Generator::CompressFiles(const char* outFileName,
std::string contentsDirectory = packageDirFileName + "/Contents";
std::string resourcesDirectory = contentsDirectory + "/Resources";
std::string appDirectory = contentsDirectory + "/MacOS";
+ std::string scriptDirectory = resourcesDirectory + "/Scripts";
+ std::string resourceFileName = this->GetOption("CPACK_PACKAGE_FILE_NAME");
+ resourceFileName += ".rsrc";
const char* dir = resourcesDirectory.c_str();
const char* appdir = appDirectory.c_str();
+ const char* scrDir = scriptDirectory.c_str();
const char* contDir = contentsDirectory.c_str();
+ const char* rsrcFile = resourceFileName.c_str();
const char* iconFile = this->GetOption("CPACK_PACKAGE_ICON");
if ( iconFile )
{
@@ -124,6 +129,10 @@ int cmCPackOSXX11Generator::CompressFiles(const char* outFileName,
!this->CopyResourcePlistFile("RuntimeScript", dir) ||
!this->CopyResourcePlistFile("OSXX11.Info.plist", contDir,
"Info.plist" ) ||
+ !this->CopyResourcePlistFile("OSXX11.main.scpt", scrDir,
+ "main.scpt", true ) ||
+ !this->CopyResourcePlistFile("OSXScriptLauncher.rsrc", dir,
+ rsrcFile, true) ||
!this->CopyResourcePlistFile("OSXScriptLauncher", appdir,
this->GetOption("CPACK_PACKAGE_FILE_NAME"), true)
)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index ca87201905..9e59660aba 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -407,7 +407,13 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponents")
ENDIF(CTEST_RUN_CPackComponents)
- ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
+ IF(CTEST_TEST_CPACK)
+ SET(X11_build_target_arg --build-target package)
+ ELSE(CTEST_TEST_CPACK)
+ SET(X11_build_target_arg)
+ ENDIF(CTEST_TEST_CPACK)
+
+ ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/X11"
"${CMake_BINARY_DIR}/Tests/X11"
@@ -415,6 +421,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
--build-project UseX11
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
--build-two-config
+ ${X11_build_target_arg}
--test-command UseX11)
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/X11")
diff --git a/Tests/X11/CMakeLists.txt b/Tests/X11/CMakeLists.txt
index 52f4a6fe9e..cc24464cee 100644
--- a/Tests/X11/CMakeLists.txt
+++ b/Tests/X11/CMakeLists.txt
@@ -6,6 +6,7 @@ INCLUDE (${CMAKE_ROOT}/Modules/FindX11.cmake)
MESSAGE("X11_FOUND: ${X11_FOUND}")
ADD_EXECUTABLE (UseX11 X11.c)
+install(TARGETS UseX11 DESTINATION bin)
# so for universal binaries this test will fail if
#
@@ -26,10 +27,14 @@ IF(X11_FOUND)
IF(APPLE)
ADD_EXECUTABLE(HelloWorldX11 HelloWorldX11.cxx)
TARGET_LINK_LIBRARIES(HelloWorldX11 ${X11_LIBRARIES})
- install( TARGETS HelloWorldX11 DESTINATION bin)
- # build a CPack driven installer package
+ install(TARGETS HelloWorldX11 DESTINATION bin)
+
+ set(CPACK_BINARY_OSXX11 "ON")
+ set(CPACK_BINARY_PACKAGEMAKER "OFF")
set(CPACK_PACKAGE_NAME HelloWorldX11Package)
set(CPACK_PACKAGE_EXECUTABLES HelloWorldX11 HelloWorldX11)
- include(CPack)
ENDIF(APPLE)
ENDIF(X11_FOUND)
+
+# build a CPack driven installer package
+include(CPack)