ENH: add empty RPM package generator, Eric Noulard wants to work on it

Alex
This commit is contained in:
Alexander Neundorf 2007-08-08 11:33:42 -04:00
parent b34078bca9
commit 7432ef206e
6 changed files with 126 additions and 0 deletions

View File

@ -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)

14
Modules/CPackRPM.cmake Normal file
View File

@ -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)

View File

@ -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})

View File

@ -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
}

View File

@ -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();
}

View File

@ -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