ENH: Several CPack fixes. First, allow user to set CMAKE_MODULE_PATH for CPack; make SetOptionIfNotSet more robust to handle empty options; do test TGZ, STGZ, and TZ, Add handling (and test) of Install Script; set environment variable CMAKE_INSTALL_PREFIX
This commit is contained in:
parent
77a4227652
commit
e31dc3abe5
@ -56,6 +56,8 @@ cpack_set_if_not_set(CPACK_RESOURCE_FILE_README
|
|||||||
cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
|
cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
|
||||||
"${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
|
"${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
|
||||||
|
|
||||||
|
cpack_set_if_not_set(CPACK_MODULE_PATH "${CMAKE_MODULE_PATH}")
|
||||||
|
|
||||||
IF(CPACK_NSIS_MODIFY_PATH)
|
IF(CPACK_NSIS_MODIFY_PATH)
|
||||||
SET(CPACK_NSIS_MODIFY_PATH ON)
|
SET(CPACK_NSIS_MODIFY_PATH ON)
|
||||||
ENDIF(CPACK_NSIS_MODIFY_PATH)
|
ENDIF(CPACK_NSIS_MODIFY_PATH)
|
||||||
|
@ -184,6 +184,14 @@ int cmCPackGenericGenerator::InstallProject()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the CPackConfig file sets CPACK_INSTALL_SCRIPT then run them
|
||||||
|
// as listed
|
||||||
|
if ( !this->InstallProjectViaInstallScript(
|
||||||
|
movable, tempInstallDirectory) )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// If the CPackConfig file sets CPACK_INSTALLED_DIRECTORIES
|
// If the CPackConfig file sets CPACK_INSTALLED_DIRECTORIES
|
||||||
// then glob it and copy it to CPACK_TEMPORARY_DIRECTORY
|
// then glob it and copy it to CPACK_TEMPORARY_DIRECTORY
|
||||||
// This is used in Source packageing
|
// This is used in Source packageing
|
||||||
@ -258,6 +266,9 @@ int cmCPackGenericGenerator::InstallProjectViaInstallCommands(
|
|||||||
const char* installCommands = this->GetOption("CPACK_INSTALL_COMMANDS");
|
const char* installCommands = this->GetOption("CPACK_INSTALL_COMMANDS");
|
||||||
if ( installCommands && *installCommands )
|
if ( installCommands && *installCommands )
|
||||||
{
|
{
|
||||||
|
std::string tempInstallDirectoryEnv = "CMAKE_INSTALL_PREFIX=";
|
||||||
|
tempInstallDirectoryEnv += tempInstallDirectory;
|
||||||
|
cmSystemTools::PutEnv(tempInstallDirectoryEnv.c_str());
|
||||||
std::vector<std::string> installCommandsVector;
|
std::vector<std::string> installCommandsVector;
|
||||||
cmSystemTools::ExpandListArgument(installCommands,installCommandsVector);
|
cmSystemTools::ExpandListArgument(installCommands,installCommandsVector);
|
||||||
std::vector<std::string>::iterator it;
|
std::vector<std::string>::iterator it;
|
||||||
@ -390,6 +401,46 @@ int cmCPackGenericGenerator::InstallProjectViaInstalledDirectories(
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
int cmCPackGenericGenerator::InstallProjectViaInstallScript(
|
||||||
|
bool movable, const char* tempInstallDirectory)
|
||||||
|
{
|
||||||
|
const char* cmakeScripts
|
||||||
|
= this->GetOption("CPACK_INSTALL_SCRIPT");
|
||||||
|
std::string currentWorkingDirectory =
|
||||||
|
cmSystemTools::GetCurrentWorkingDirectory();
|
||||||
|
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
|
||||||
|
"- Install scripts: " << cmakeScripts << std::endl);
|
||||||
|
if ( cmakeScripts && *cmakeScripts )
|
||||||
|
{
|
||||||
|
std::vector<std::string> cmakeScriptsVector;
|
||||||
|
cmSystemTools::ExpandListArgument(cmakeScripts,
|
||||||
|
cmakeScriptsVector);
|
||||||
|
std::vector<std::string>::iterator it;
|
||||||
|
for ( it = cmakeScriptsVector.begin();
|
||||||
|
it != cmakeScriptsVector.end();
|
||||||
|
++it )
|
||||||
|
{
|
||||||
|
std::string installScript = it->c_str();
|
||||||
|
|
||||||
|
cmCPackLogger(cmCPackLog::LOG_OUTPUT,
|
||||||
|
"- Install script: " << installScript << std::endl);
|
||||||
|
if ( movable )
|
||||||
|
{
|
||||||
|
this->SetOption("CMAKE_INSTALL_PREFIX", tempInstallDirectory);
|
||||||
|
}
|
||||||
|
this->SetOptionIfNotSet("CMAKE_CURRENT_BINARY_DIR", tempInstallDirectory);
|
||||||
|
this->SetOptionIfNotSet("CMAKE_CURRENT_SOURCE_DIR", tempInstallDirectory);
|
||||||
|
int res = this->MakefileMap->ReadListFile(0, installScript.c_str());
|
||||||
|
if ( cmSystemTools::GetErrorOccuredFlag() || !res )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects(
|
int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects(
|
||||||
bool movable, const char* tempInstallDirectory)
|
bool movable, const char* tempInstallDirectory)
|
||||||
@ -535,7 +586,8 @@ int cmCPackGenericGenerator::InstallProjectViaInstallCMakeProjects(
|
|||||||
void cmCPackGenericGenerator::SetOptionIfNotSet(const char* op,
|
void cmCPackGenericGenerator::SetOptionIfNotSet(const char* op,
|
||||||
const char* value)
|
const char* value)
|
||||||
{
|
{
|
||||||
if ( this->MakefileMap->GetDefinition(op) )
|
const char* def = this->MakefileMap->GetDefinition(op);
|
||||||
|
if ( def && *def )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,8 @@ protected:
|
|||||||
//! Run install commands if specified
|
//! Run install commands if specified
|
||||||
virtual int InstallProjectViaInstallCommands(
|
virtual int InstallProjectViaInstallCommands(
|
||||||
bool movable, const char* tempInstallDirectory);
|
bool movable, const char* tempInstallDirectory);
|
||||||
|
virtual int InstallProjectViaInstallScript(
|
||||||
|
bool movable, const char* tempInstallDirectory);
|
||||||
virtual int InstallProjectViaInstalledDirectories(
|
virtual int InstallProjectViaInstalledDirectories(
|
||||||
bool movable, const char* tempInstallDirectory);
|
bool movable, const char* tempInstallDirectory);
|
||||||
virtual int InstallProjectViaInstallCMakeProjects(
|
virtual int InstallProjectViaInstallCMakeProjects(
|
||||||
|
@ -301,6 +301,11 @@ int main (int argc, char *argv[])
|
|||||||
globalMF->AddDefinition(cdit->first.c_str(), cdit->second.c_str());
|
globalMF->AddDefinition(cdit->first.c_str(), cdit->second.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* cpackModulesPath = globalMF->GetDefinition("CPACK_MODULE_PATH");
|
||||||
|
if ( cpackModulesPath )
|
||||||
|
{
|
||||||
|
globalMF->AddDefinition("CMAKE_MODULE_PATH", cpackModulesPath);
|
||||||
|
}
|
||||||
const char* genList = globalMF->GetDefinition("CPACK_GENERATOR");
|
const char* genList = globalMF->GetDefinition("CPACK_GENERATOR");
|
||||||
if ( !genList )
|
if ( !genList )
|
||||||
{
|
{
|
||||||
|
@ -218,6 +218,7 @@ ENDIF(CMAKE_CONFIGURATION_TYPES)
|
|||||||
# Dummy test of CPack
|
# Dummy test of CPack
|
||||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
|
||||||
SET(CPACK_PACKAGE_VENDOR "Kitware")
|
SET(CPACK_PACKAGE_VENDOR "Kitware")
|
||||||
|
SET(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/PackageScript.cmake")
|
||||||
|
|
||||||
IF(WIN32 AND NOT UNIX)
|
IF(WIN32 AND NOT UNIX)
|
||||||
FIND_PROGRAM(NSIS_MAKENSIS NAMES makensis
|
FIND_PROGRAM(NSIS_MAKENSIS NAMES makensis
|
||||||
@ -229,7 +230,7 @@ IF(WIN32 AND NOT UNIX)
|
|||||||
ENDIF(NOT NSIS_MAKENSIS)
|
ENDIF(NOT NSIS_MAKENSIS)
|
||||||
ENDIF(WIN32 AND NOT UNIX)
|
ENDIF(WIN32 AND NOT UNIX)
|
||||||
IF(UNIX AND NOT APPLE)
|
IF(UNIX AND NOT APPLE)
|
||||||
# SET(CPACK_GENERATOR "TGZ;STGZ")
|
SET(CPACK_GENERATOR "TGZ;STGZ;TZ")
|
||||||
# FIND_PROGRAM(found_compress
|
# FIND_PROGRAM(found_compress
|
||||||
# NAMES compress)
|
# NAMES compress)
|
||||||
# IF(found_compress)
|
# IF(found_compress)
|
||||||
|
@ -218,6 +218,7 @@ ENDIF(CMAKE_CONFIGURATION_TYPES)
|
|||||||
# Dummy test of CPack
|
# Dummy test of CPack
|
||||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
|
||||||
SET(CPACK_PACKAGE_VENDOR "Kitware")
|
SET(CPACK_PACKAGE_VENDOR "Kitware")
|
||||||
|
SET(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/PackageScript.cmake")
|
||||||
|
|
||||||
IF(WIN32 AND NOT UNIX)
|
IF(WIN32 AND NOT UNIX)
|
||||||
FIND_PROGRAM(NSIS_MAKENSIS NAMES makensis
|
FIND_PROGRAM(NSIS_MAKENSIS NAMES makensis
|
||||||
@ -229,7 +230,7 @@ IF(WIN32 AND NOT UNIX)
|
|||||||
ENDIF(NOT NSIS_MAKENSIS)
|
ENDIF(NOT NSIS_MAKENSIS)
|
||||||
ENDIF(WIN32 AND NOT UNIX)
|
ENDIF(WIN32 AND NOT UNIX)
|
||||||
IF(UNIX AND NOT APPLE)
|
IF(UNIX AND NOT APPLE)
|
||||||
# SET(CPACK_GENERATOR "TGZ;STGZ")
|
SET(CPACK_GENERATOR "TGZ;STGZ;TZ")
|
||||||
# FIND_PROGRAM(found_compress
|
# FIND_PROGRAM(found_compress
|
||||||
# NAMES compress)
|
# NAMES compress)
|
||||||
# IF(found_compress)
|
# IF(found_compress)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user