ENH: install working with symlink qt tool

This commit is contained in:
Bill Hoffman 2008-02-19 14:26:20 -05:00
parent 4a9517a688
commit ee2a13b11f
6 changed files with 88 additions and 15 deletions

View File

@ -38,6 +38,22 @@ cmCPackPackageMakerGenerator::~cmCPackPackageMakerGenerator()
{
}
int cmCPackPackageMakerGenerator::CopyInstallScript(const char* resdir,
const char* script,
const char* name)
{
std::string dst = resdir;
dst += "/";
dst += name;
cmSystemTools::CopyFileAlways(script, dst.c_str());
cmSystemTools::SetPermissions(dst.c_str(),0777);
cmCPackLogger(cmCPackLog::LOG_VERBOSE,
"copy script : " << script << "\ninto " << dst.c_str() <<
std::endl);
return 1;
}
//----------------------------------------------------------------------
int cmCPackPackageMakerGenerator::CompressFiles(const char* outFileName,
const char* toplevel,
@ -50,15 +66,51 @@ int cmCPackPackageMakerGenerator::CompressFiles(const char* outFileName,
resDir += "/Resources";
std::string preflightDirName = resDir + "/PreFlight";
std::string postflightDirName = resDir + "/PostFlight";
if ( !cmsys::SystemTools::MakeDirectory(preflightDirName.c_str())
|| !cmsys::SystemTools::MakeDirectory(postflightDirName.c_str()) )
const char* preflight = this->GetOption("CPACK_PREFLIGHT_SCRIPT");
const char* postflight = this->GetOption("CPACK_POSTFLIGHT_SCRIPT");
const char* postupgrade = this->GetOption("CPACK_POSTUPGRADE_SCRIPT");
// if preflight or postflight scripts not there create directories
// of the same name, I think this makes it work
if(!preflight)
{
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Problem creating installer directories: "
<< preflightDirName.c_str() << " and "
<< postflightDirName.c_str() << std::endl);
return 0;
if ( !cmsys::SystemTools::MakeDirectory(preflightDirName.c_str()))
{
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Problem creating installer directory: "
<< preflightDirName.c_str() << std::endl);
return 0;
}
}
if(!postflight)
{
if ( !cmsys::SystemTools::MakeDirectory(postflightDirName.c_str()))
{
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Problem creating installer directory: "
<< postflightDirName.c_str() << std::endl);
return 0;
}
}
// if preflight, postflight, or postupgrade are set
// then copy them into the resource directory and make
// them executable
if(preflight)
{
this->CopyInstallScript(resDir.c_str(),
preflight,
"preflight");
}
if(postflight)
{
this->CopyInstallScript(resDir.c_str(),
postflight,
"postflight");
}
if(postupgrade)
{
this->CopyInstallScript(resDir.c_str(),
postupgrade,
"postupgrade");
}
if ( !this->CopyCreateResourceFile("License")

View File

@ -39,6 +39,9 @@ public:
virtual ~cmCPackPackageMakerGenerator();
protected:
int CopyInstallScript(const char* resdir,
const char* script,
const char* name);
virtual int InitializeInternal();
int CompressFiles(const char* outFileName, const char* toplevel,
const std::vector<std::string>& files);

View File

@ -13,8 +13,6 @@ ELSE(NOT QT4_FOUND)
IF(WIN32 AND NOT QT_CONFIG MATCHES "static")
SET(CMAKE_PACKAGE_QTGUI FALSE)
ENDIF(WIN32 AND NOT QT_CONFIG MATCHES "static")
CONFIGURE_FILE("${QtDialog_SOURCE_DIR}/QtDialogCPack.cmake.in"
"${QtDialog_BINARY_DIR}/QtDialogCPack.cmake" @ONLY)
SET(SRCS
AddCacheEntry.cxx
AddCacheEntry.h
@ -69,9 +67,19 @@ ELSE(NOT QT4_FOUND)
${CMAKE_INSTALL_DESTINATION_ARGS})
ENDIF(CMAKE_PACKAGE_QTGUI)
IF(APPLE)
SET(CMAKE_POSTFLIGHT_SCRIPT
"${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh")
SET(CMAKE_POSTUPGRADE_SCRIPT
"${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh")
configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postflight.sh.in"
"${CMake_BINARY_DIR}/Source/QtDialog/postflight.sh")
configure_file("${CMake_SOURCE_DIR}/Source/QtDialog/postupgrade.sh.in"
"${CMake_BINARY_DIR}/Source/QtDialog/postupgrade.sh")
INSTALL(CODE "set(input_file
\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/cmake-gui\")")
INSTALL(SCRIPT "${CMake_SOURCE_DIR}/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake")
ENDIF(APPLE)
CONFIGURE_FILE("${QtDialog_SOURCE_DIR}/QtDialogCPack.cmake.in"
"${QtDialog_BINARY_DIR}/QtDialogCPack.cmake" @ONLY)
ENDIF(NOT QT4_FOUND)

View File

@ -3,11 +3,15 @@ SET(CMAKE_PACKAGE_QTGUI @CMAKE_PACKAGE_QTGUI@)
IF(CMAKE_PACKAGE_QTGUI)
SET(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "cmake-gui" "cmake-gui(beta)")
IF(IS_APPLE)
# for apple install we set the install prefix to /Applications and then install
# cmake into the bundle for cmake-gui
SET(CPACK_SET_DESTDIR TRUE)
ENDIF(IS_APPLE)
IF(IS_APPLE)
# for apple install we set the install prefix to
# / and then install
# cmake into the bundle for cmake-gui and must use DESTDIR
SET(CPACK_SET_DESTDIR TRUE)
# we also want to run post install stuff to setup command line
SET(CPACK_POSTFLIGHT_SCRIPT "@CMAKE_POSTFLIGHT_SCRIPT@")
SET(CPACK_POSTUPGRADE_SCRIPT "@CMAKE_POSTUPGRADE_SCRIPT@")
ENDIF(IS_APPLE)
ENDIF(CMAKE_PACKAGE_QTGUI)

View File

@ -0,0 +1,4 @@
#!/bin/bash
echo "$2/@CMAKE_INSTALL_SUBDIR@/cmake-gui.app/Contents/MacOS/cmake-gui" >>/tmp/mylog
"$2/@CMAKE_INSTALL_SUBDIR@/cmake-gui.app/Contents/MacOS/cmake-gui" --mac-install
exit 0

View File

@ -0,0 +1,2 @@
#!/bin/bash
exit 0