diff options
author | Alexander Neundorf <neundorf@kde.org> | 2007-07-27 12:59:59 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2007-07-27 12:59:59 (GMT) |
commit | d6a0c330bc2087eb5007d4b6b056e573220dc590 (patch) | |
tree | 1413695a25b3348b79d3541c22029fb7b80bc3a3 /Source | |
parent | e2aeecc29440b906fad3d8964b169b62cdfef188 (diff) | |
download | CMake-d6a0c330bc2087eb5007d4b6b056e573220dc590.zip CMake-d6a0c330bc2087eb5007d4b6b056e573220dc590.tar.gz CMake-d6a0c330bc2087eb5007d4b6b056e573220dc590.tar.bz2 |
ENH: deb generator can now generate deb packages
-remove the unscriptable commands also from the cpack cmake
-use CPACK_PACKAGE_CONTACT in CMakeCPack.cmake, it's used in the nsis and
the deb generator
-make set_properties() scriptable
-use a non-const char array for adding the python modules
Alex
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CPack/cmCPackDebGenerator.cxx | 40 | ||||
-rw-r--r-- | Source/CPack/cpack.cxx | 1 | ||||
-rw-r--r-- | Source/CTest/cmCTestScriptHandler.cxx | 20 | ||||
-rw-r--r-- | Source/cmSetPropertiesCommand.h | 7 | ||||
-rw-r--r-- | Source/cmake.cxx | 23 | ||||
-rw-r--r-- | Source/cmake.h | 1 |
6 files changed, 51 insertions, 41 deletions
diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx index c4c4750..a9078f8 100644 --- a/Source/CPack/cmCPackDebGenerator.cxx +++ b/Source/CPack/cmCPackDebGenerator.cxx @@ -52,39 +52,36 @@ int cmCPackDebGenerator::CompressFiles(const char* outFileName, out << std::endl; // required for valid debian package } - // debian policy enforce lower case for package name - // IF(NOT DEBIAN_PACKAGE_NAME) - // STRING(TOLOWER - // ${CPACK_PACKAGE_NAME} - // DEBIAN_PACKAGE_NAME - // ) - // control file std::string ctlfilename; ctlfilename = toplevel; ctlfilename += "/control"; + + // debian policy enforce lower case for package name + std::string debian_pkg_name = cmsys::SystemTools::LowerCase( this->GetOption("DEBIAN_PACKAGE_NAME") ); + const char* debian_pkg_version = this->GetOption("DEBIAN_PACKAGE_VERSION"); + const char* debian_pkg_arch = this->GetOption("DEBIAN_PACKAGE_ARCHITECTURE"); + const char* debian_pkg_dep = this->GetOption("DEBIAN_PACKAGE_DEPENDS"); + const char* maintainer = this->GetOption("DEBIAN_PACKAGE_MAINTAINER"); + const char* desc = this->GetOption("DEBIAN_PACKAGE_DESCRIPTION"); + { // the scope is needed for cmGeneratedFileStream cmGeneratedFileStream out(ctlfilename.c_str()); - out << "Package: ${DEBIAN_PACKAGE_NAME}\n"; - out << "Version: ${CPACK_PACKAGE_VERSION}\n"; + out << "Package: " << debian_pkg_name << "\n"; + out << "Version: " << debian_pkg_version << "\n"; out << "Section: devel\n"; out << "Priority: optional\n"; - out << "Architecture: ${DEBIAN_ARCHITECTURE}\n"; - out << "Depends: ${DEBIAN_PACKAGE_DEPENDS}\n"; - out << "Maintainer: ${CPACK_NSIS_CONTACT}\n"; - out << "Description: ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\n"; - out << "${DEBIAN_PACKAGE_NAME} was packaged by UseDebian and CMake.\n"; + out << "Architecture: " << debian_pkg_arch << "\n"; + out << "Depends: " << debian_pkg_dep << " \n"; + out << "Maintainer: " << maintainer << "\n"; + out << "Description: " << desc << "\n"; + out << " " << debian_pkg_name << " was packaged by CMake.\n"; out << std::endl; } - std::string output; - std::string cmd; -// cmd = this->GetOption("CPACK_DEB_COMMAND"); -// cmsys::SystemTools::ReplaceString(cmd, "<ARCHIVE>", outFileName); -// cmsys::SystemTools::ReplaceString(cmd, "<FILELIST>", "deb.filelist"); - - cmd = cmakeExecutable; + std::string cmd = cmakeExecutable; cmd += " -E tar cfz data.tar.gz ./usr"; + std::string output; int retVal = -1; int res = cmSystemTools::RunSingleCommand(cmd.c_str(), &output, &retVal, toplevel, this->GeneratorVerbose, 0); @@ -151,6 +148,7 @@ int cmCPackDebGenerator::CompressFiles(const char* outFileName, cmd += "\" debian-binary control.tar.gz data.tar.gz"; res = cmSystemTools::RunSingleCommand(cmd.c_str(), &output, &retVal, toplevel, this->GeneratorVerbose, 0); + return 1; } diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index a737d8b..8428315 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -218,6 +218,7 @@ int main (int argc, char *argv[]) "Read CPack config file: " << cpackConfigFile.c_str() << std::endl); cmake cminst; + cminst.RemoveUnscriptableCommands(); cmGlobalGenerator cmgg; cmgg.SetCMakeInstance(&cminst); cmLocalGenerator* cmlg = cmgg.CreateLocalGenerator(); diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index db44531..64cf92d 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -303,25 +303,7 @@ void cmCTestScriptHandler::CreateCMake() // remove all cmake commands which are not scriptable, since they can't be // used in ctest scripts - std::vector<std::string> unscriptableCommands; - cmake::RegisteredCommandsMap* commands = this->CMake->GetCommands(); - for (cmake::RegisteredCommandsMap::const_iterator pos = commands->begin(); - pos != commands->end(); - ++pos) - { - if (!pos->second->IsScriptable()) - { - unscriptableCommands.push_back(pos->first); - } - } - - for(std::vector<std::string>::const_iterator it=unscriptableCommands.begin(); - it != unscriptableCommands.end(); - ++it) - { -// fprintf(stderr, "Removing %s\n", it->c_str()); - this->CMake->RemoveCommand(it->c_str()); - } + this->CMake->RemoveUnscriptableCommands(); // add any ctest specific commands, probably should have common superclass // for ctest commands to clean this up. If a couple more commands are diff --git a/Source/cmSetPropertiesCommand.h b/Source/cmSetPropertiesCommand.h index 51c52b1..79c9394 100644 --- a/Source/cmSetPropertiesCommand.h +++ b/Source/cmSetPropertiesCommand.h @@ -60,7 +60,12 @@ public: "or TEST test_name." ; } - + + /** + * This determines if the command is invoked when in script mode. + */ + virtual bool IsScriptable() { return true; } + cmTypeMacro(cmSetPropertiesCommand, cmCommand); }; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index c8d5fde..ea1e8b7 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -290,6 +290,29 @@ void cmake::AddCommand(cmCommand* wg) this->Commands.insert( RegisteredCommandsMap::value_type(name, wg)); } + +void cmake::RemoveUnscriptableCommands() +{ + std::vector<std::string> unscriptableCommands; + cmake::RegisteredCommandsMap* commands = this->GetCommands(); + for (cmake::RegisteredCommandsMap::const_iterator pos = commands->begin(); + pos != commands->end(); + ++pos) + { + if (!pos->second->IsScriptable()) + { + unscriptableCommands.push_back(pos->first); + } + } + + for(std::vector<std::string>::const_iterator it=unscriptableCommands.begin(); + it != unscriptableCommands.end(); + ++it) + { + this->RemoveCommand(it->c_str()); + } +} + // Parse the args bool cmake::SetCacheArgs(const std::vector<std::string>& args) { diff --git a/Source/cmake.h b/Source/cmake.h index a089e95..c0b3cd0 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -197,6 +197,7 @@ class cmake void AddCommand(cmCommand* ); void RenameCommand(const char* oldName, const char* newName); void RemoveCommand(const char* name); + void RemoveUnscriptableCommands(); /** * Get a command by its name |