[Cmake-commits] [cmake-commits] david.cole committed cmCPackBundleGenerator.cxx 1.9 1.10 cmCPackDragNDropGenerator.cxx 1.1 1.2 cmCPackDragNDropGenerator.h 1.1 1.2
cmake-commits at cmake.org
cmake-commits at cmake.org
Thu Feb 19 10:39:10 EST 2009
Update of /cvsroot/CMake/CMake/Source/CPack
In directory public:/mounts/ram/cvs-serv2981/Source/CPack
Modified Files:
cmCPackBundleGenerator.cxx cmCPackDragNDropGenerator.cxx
cmCPackDragNDropGenerator.h
Log Message:
BUG: A little bit more refactoring from BundleGenerator to DragNDropGenerator. See issue #8556. Thanks for Clinton Stimpson for the patch.
Index: cmCPackBundleGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CPack/cmCPackBundleGenerator.cxx,v
retrieving revision 1.9
retrieving revision 1.10
diff -C 2 -d -r1.9 -r1.10
*** cmCPackBundleGenerator.cxx 22 Jan 2009 18:56:13 -0000 1.9
--- cmCPackBundleGenerator.cxx 19 Feb 2009 15:39:08 -0000 1.10
***************
*** 99,105 ****
// Get optional arguments ...
- const std::string cpack_package_icon = this->GetOption("CPACK_PACKAGE_ICON")
- ? this->GetOption("CPACK_PACKAGE_ICON") : "";
-
const std::string cpack_bundle_startup_command =
this->GetOption("CPACK_BUNDLE_STARTUP_COMMAND")
--- 99,102 ----
***************
*** 176,300 ****
}
! // Add a symlink to /Applications so users can drag-and-drop the bundle
! // into it
! cmOStringStream application_link;
! application_link << staging.str() << "/Applications";
! cmSystemTools::CreateSymlink("/Applications",
! application_link.str().c_str());
!
! // Optionally add a custom volume icon ...
! if(!cpack_package_icon.empty())
! {
! cmOStringStream package_icon_source;
! package_icon_source << cpack_package_icon;
!
! cmOStringStream package_icon_destination;
! package_icon_destination << staging.str() << "/.VolumeIcon.icns";
!
! if(!this->CopyFile(package_icon_source, package_icon_destination))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error copying disk volume icon. "
! "Check the value of CPACK_PACKAGE_ICON."
! << std::endl);
!
! return 0;
! }
! }
!
! // Create a temporary read-write disk image ...
! cmOStringStream temp_image;
! temp_image << this->GetOption("CPACK_TOPLEVEL_DIRECTORY") << "/temp.dmg";
!
! cmOStringStream temp_image_command;
! temp_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
! temp_image_command << " create";
! temp_image_command << " -ov";
! temp_image_command << " -srcfolder \"" << staging.str() << "\"";
! temp_image_command << " -volname \""
! << this->GetOption("CPACK_PACKAGE_FILE_NAME") << "\"";
! temp_image_command << " -format UDRW";
! temp_image_command << " \"" << temp_image.str() << "\"";
!
! if(!this->RunCommand(temp_image_command))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error generating temporary disk image."
! << std::endl);
!
! return 0;
! }
!
! // Optionally set the custom icon flag for the image ...
! if(!cpack_package_icon.empty())
! {
! cmOStringStream temp_mount;
!
! cmOStringStream attach_command;
! attach_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
! attach_command << " attach";
! attach_command << " \"" << temp_image.str() << "\"";
!
! std::string attach_output;
! if(!this->RunCommand(attach_command, &attach_output))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error attaching temporary disk image."
! << std::endl);
!
! return 0;
! }
!
! cmsys::RegularExpression mountpoint_regex(".*(/Volumes/[^\n]+)\n.*");
! mountpoint_regex.find(attach_output.c_str());
! temp_mount << mountpoint_regex.match(1);
!
! cmOStringStream setfile_command;
! setfile_command << this->GetOption("CPACK_COMMAND_SETFILE");
! setfile_command << " -a C";
! setfile_command << " \"" << temp_mount.str() << "\"";
!
! if(!this->RunCommand(setfile_command))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error assigning custom icon to temporary disk image."
! << std::endl);
!
! return 0;
! }
!
! cmOStringStream detach_command;
! detach_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
! detach_command << " detach";
! detach_command << " \"" << temp_mount.str() << "\"";
!
! if(!this->RunCommand(detach_command))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error detaching temporary disk image."
! << std::endl);
!
! return 0;
! }
! }
!
! // Create the final compressed read-only disk image ...
! cmOStringStream final_image_command;
! final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
! final_image_command << " convert \"" << temp_image.str() << "\"";
! final_image_command << " -format UDZO";
! final_image_command << " -imagekey";
! final_image_command << " zlib-level=9";
! final_image_command << " -o \"" << outFileName << "\"";
!
! if(!this->RunCommand(final_image_command))
! {
! cmCPackLogger(cmCPackLog::LOG_ERROR,
! "Error compressing disk image."
! << std::endl);
!
! return 0;
! }
!
! return 1;
}
--- 173,176 ----
}
! return this->CreateDMG(toplevel, outFileName);
}
Index: cmCPackDragNDropGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CPack/cmCPackDragNDropGenerator.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C 2 -d -r1.1 -r1.2
*** cmCPackDragNDropGenerator.h 22 Jan 2009 17:12:44 -0000 1.1
--- cmCPackDragNDropGenerator.h 19 Feb 2009 15:39:08 -0000 1.2
***************
*** 40,43 ****
--- 40,45 ----
bool CopyFile(cmOStringStream& source, cmOStringStream& target);
bool RunCommand(cmOStringStream& command, std::string* output = 0);
+
+ virtual int CreateDMG(const std::string& installdir, const std::string& outdmg);
std::string InstallPrefix;
Index: cmCPackDragNDropGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CPack/cmCPackDragNDropGenerator.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -C 2 -d -r1.1 -r1.2
*** cmCPackDragNDropGenerator.cxx 22 Jan 2009 17:12:44 -0000 1.1
--- cmCPackDragNDropGenerator.cxx 19 Feb 2009 15:39:08 -0000 1.2
***************
*** 72,75 ****
--- 72,128 ----
(void) files;
+ return this->CreateDMG(toplevel, outFileName);
+ }
+
+ //----------------------------------------------------------------------
+ bool cmCPackDragNDropGenerator::CopyFile(cmOStringStream& source,
+ cmOStringStream& target)
+ {
+ if(!cmSystemTools::CopyFileIfDifferent(
+ source.str().c_str(),
+ target.str().c_str()))
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Error copying "
+ << source.str()
+ << " to "
+ << target.str()
+ << std::endl);
+
+ return false;
+ }
+
+ return true;
+ }
+
+ //----------------------------------------------------------------------
+ bool cmCPackDragNDropGenerator::RunCommand(cmOStringStream& command,
+ std::string* output)
+ {
+ int exit_code = 1;
+
+ bool result = cmSystemTools::RunSingleCommand(
+ command.str().c_str(),
+ output,
+ &exit_code,
+ 0,
+ this->GeneratorVerbose,
+ 0);
+
+ if(!result || exit_code)
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Error executing: "
+ << command.str()
+ << std::endl);
+
+ return false;
+ }
+
+ return true;
+ }
+
+ int cmCPackDragNDropGenerator::CreateDMG(const std::string& toplevel, const std::string& outFileName)
+ {
// Get optional arguments ...
const std::string cpack_package_icon = this->GetOption("CPACK_PACKAGE_ICON")
***************
*** 205,253 ****
}
- //----------------------------------------------------------------------
- bool cmCPackDragNDropGenerator::CopyFile(cmOStringStream& source,
- cmOStringStream& target)
- {
- if(!cmSystemTools::CopyFileIfDifferent(
- source.str().c_str(),
- target.str().c_str()))
- {
- cmCPackLogger(cmCPackLog::LOG_ERROR,
- "Error copying "
- << source.str()
- << " to "
- << target.str()
- << std::endl);
-
- return false;
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- bool cmCPackDragNDropGenerator::RunCommand(cmOStringStream& command,
- std::string* output)
- {
- int exit_code = 1;
-
- bool result = cmSystemTools::RunSingleCommand(
- command.str().c_str(),
- output,
- &exit_code,
- 0,
- this->GeneratorVerbose,
- 0);
-
- if(!result || exit_code)
- {
- cmCPackLogger(cmCPackLog::LOG_ERROR,
- "Error executing: "
- << command.str()
- << std::endl);
-
- return false;
- }
-
- return true;
- }
--- 258,259 ----
More information about the Cmake-commits
mailing list