[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