diff options
author | Alexander Neundorf <neundorf@kde.org> | 2007-08-08 15:33:42 (GMT) |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2007-08-08 15:33:42 (GMT) |
commit | 7432ef206e47118d8812be5dc62c7250c9e0bfdd (patch) | |
tree | d103f0a5fa3a97c614d1876b494e0515507a3b8b | |
parent | b34078bca98a052907bb1198e2301d1223b3aae0 (diff) | |
download | CMake-7432ef206e47118d8812be5dc62c7250c9e0bfdd.zip CMake-7432ef206e47118d8812be5dc62c7250c9e0bfdd.tar.gz CMake-7432ef206e47118d8812be5dc62c7250c9e0bfdd.tar.bz2 |
ENH: add empty RPM package generator, Eric Noulard wants to work on it
Alex
-rw-r--r-- | Modules/CPack.cmake | 2 | ||||
-rw-r--r-- | Modules/CPackRPM.cmake | 14 | ||||
-rw-r--r-- | Source/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Source/CPack/cmCPackGenerators.cxx | 3 | ||||
-rw-r--r-- | Source/CPack/cmCPackRPMGenerator.cxx | 58 | ||||
-rw-r--r-- | Source/CPack/cmCPackRPMGenerator.h | 48 |
6 files changed, 126 insertions, 0 deletions
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index ac9be77..1e05036 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -115,6 +115,7 @@ if(NOT CPACK_GENERATOR) option(CPACK_TGZ "Enable to build TGZ packages" ON) option(CPACK_TBZ2 "Enable to build TBZ2 packages" ON) option(CPACK_DEB "Enable to build Debian packages" OFF) + option(CPACK_RPM "Enable to build RPM packages" OFF) option(CPACK_NSIS "Enable to build NSIS packages" OFF) endif(CYGWIN) else(UNIX) @@ -126,6 +127,7 @@ if(NOT CPACK_GENERATOR) cpack_optional_append(CPACK_GENERATOR CPACK_OSXX11 OSXX11) cpack_optional_append(CPACK_GENERATOR CPACK_CYGWIN_BINARY CygwinBinary) cpack_optional_append(CPACK_GENERATOR CPACK_DEB DEB) + cpack_optional_append(CPACK_GENERATOR CPACK_RPM RPM) cpack_optional_append(CPACK_GENERATOR CPACK_NSIS NSIS) cpack_optional_append(CPACK_GENERATOR CPACK_STGZ STGZ) cpack_optional_append(CPACK_GENERATOR CPACK_TGZ TGZ) diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake new file mode 100644 index 0000000..dc6cd1f --- /dev/null +++ b/Modules/CPackRPM.cmake @@ -0,0 +1,14 @@ +IF(CMAKE_BINARY_DIR) + MESSAGE(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.") +ENDIF(CMAKE_BINARY_DIR) + +IF(NOT UNIX) + MESSAGE(FATAL_ERROR "CPackRPM.cmake may only be used under UNIX.") +ENDIF(NOT UNIX) + +FIND_PROGRAM(RPMBUILD_EXECUTABLE rpmbuild) + +IF(NOT RPMBUILD_EXECUTABLE) + MESSAGE(FATAL_ERROR "RPM package requires rpmbuild executable") +ENDIF(NOT RPMBUILD_EXECUTABLE) + diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 1a0e8ab..fe54ef8 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -305,6 +305,7 @@ SET(CPACK_SRCS CPack/cmCPackCygwinBinaryGenerator.cxx CPack/cmCPackCygwinSourceGenerator.cxx CPack/cmCPackDebGenerator.cxx + CPack/cmCPackRPMGenerator.cxx ) # Build CPackLib ADD_LIBRARY(CPackLib ${CPACK_SRCS}) diff --git a/Source/CPack/cmCPackGenerators.cxx b/Source/CPack/cmCPackGenerators.cxx index 5951457..9baa2aa 100644 --- a/Source/CPack/cmCPackGenerators.cxx +++ b/Source/CPack/cmCPackGenerators.cxx @@ -37,6 +37,7 @@ #if !defined(_WIN32) && !defined(__APPLE__) \ && !defined(__QNXNTO__) && !defined(__BEOS__) # include "cmCPackDebGenerator.h" +# include "cmCPackRPMGenerator.h" #endif @@ -74,6 +75,8 @@ cmCPackGenerators::cmCPackGenerators() && !defined(__QNXNTO__) && !defined(__BEOS__) this->RegisterGenerator("DEB", "Debian packages", cmCPackDebGenerator::CreateGenerator); + this->RegisterGenerator("RPM", "RPM packages", + cmCPackDebGenerator::CreateGenerator); #endif } diff --git a/Source/CPack/cmCPackRPMGenerator.cxx b/Source/CPack/cmCPackRPMGenerator.cxx new file mode 100644 index 0000000..59ef94f --- /dev/null +++ b/Source/CPack/cmCPackRPMGenerator.cxx @@ -0,0 +1,58 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmCPackRPMGenerator.h" + +#include "cmSystemTools.h" +#include "cmMakefile.h" +#include "cmGeneratedFileStream.h" +#include "cmCPackLog.h" + +#include <cmsys/SystemTools.hxx> +#include <cmsys/Glob.hxx> + +//---------------------------------------------------------------------- +cmCPackRPMGenerator::cmCPackRPMGenerator() +{ +} + +//---------------------------------------------------------------------- +cmCPackRPMGenerator::~cmCPackRPMGenerator() +{ +} + +//---------------------------------------------------------------------- +int cmCPackRPMGenerator::CompressFiles(const char* outFileName, + const char* toplevel, + const std::vector<std::string>& files) +{ + this->ReadListFile("CPackRPM.cmake"); + if (!this->IsSet("RPMBUILD_EXECUTABLE")) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, "Cannot find rpmbuild" << std::endl); + return 0; + } + const char* rpmbuildExecutable = this->GetOption("RPMBUILD_EXECUTABLE"); + + return 1; +} + +//---------------------------------------------------------------------- +int cmCPackRPMGenerator::InitializeInternal() +{ + return this->Superclass::InitializeInternal(); +} + diff --git a/Source/CPack/cmCPackRPMGenerator.h b/Source/CPack/cmCPackRPMGenerator.h new file mode 100644 index 0000000..17c93f4 --- /dev/null +++ b/Source/CPack/cmCPackRPMGenerator.h @@ -0,0 +1,48 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#ifndef cmCPackRPMGenerator_h +#define cmCPackRPMGenerator_h + + +#include "cmCPackGenericGenerator.h" + +/** \class cmCPackRPMGenerator + * \brief A generator for RPM packages + * + */ +class cmCPackRPMGenerator : public cmCPackGenericGenerator +{ +public: + cmCPackTypeMacro(cmCPackRPMGenerator, cmCPackGenericGenerator); + + /** + * Construct generator + */ + cmCPackRPMGenerator(); + virtual ~cmCPackRPMGenerator(); + +protected: + virtual int InitializeInternal(); + int CompressFiles(const char* outFileName, const char* toplevel, + const std::vector<std::string>& files); + virtual const char* GetOutputExtension() { return ".rpm"; } + virtual const char* GetInstallPrefix() { return "/usr"; } + +}; + +#endif |