From 7b0a6cd244ad3a2822625ecb3fb016ac141aa04d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C3=A9cureuil?= <neoclust.kde@free.fr> Date: Sat, 27 Oct 2012 02:17:18 +0200 Subject: [PATCH 2/3] Add XZ support --- Modules/CPack.cmake | 6 +++++- Source/CMakeLists.txt | 1 + Source/CPack/cmCPackGeneratorFactory.cxx | 6 ++++++ Tests/CMakeTests/ModuleNoticesTest.cmake.in | 1 + Tests/SimpleInstall/CMakeLists.txt | 5 +++++ Tests/SimpleInstallS2/CMakeLists.txt | 5 +++++ Utilities/Release/release_cmake.cmake | 3 +++ 7 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index 6886ed9..f4623a1 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -432,6 +432,7 @@ if(NOT CPACK_GENERATOR) option(CPACK_BINARY_STGZ "Enable to build STGZ packages" ON) option(CPACK_BINARY_TGZ "Enable to build TGZ packages" ON) option(CPACK_BINARY_TBZ2 "Enable to build TBZ2 packages" OFF) + option(CPACK_BINARY_TXZ "Enable to build TXZ packages" OFF) option(CPACK_BINARY_DEB "Enable to build Debian packages" OFF) option(CPACK_BINARY_RPM "Enable to build RPM packages" OFF) option(CPACK_BINARY_NSIS "Enable to build NSIS packages" OFF) @@ -452,6 +453,7 @@ if(NOT CPACK_GENERATOR) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_STGZ STGZ) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_TGZ TGZ) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_TBZ2 TBZ2) + cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_TXZ TXZ) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_TZ TZ) cpack_optional_append(CPACK_GENERATOR CPACK_BINARY_ZIP ZIP) @@ -465,6 +467,7 @@ if(NOT CPACK_SOURCE_GENERATOR) else() option(CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" ON) option(CPACK_SOURCE_TGZ "Enable to build TGZ source packages" ON) + option(CPACK_SOURCE_TXZ "Enable to build TXZ source packages" ON) option(CPACK_SOURCE_TZ "Enable to build TZ source packages" ON) option(CPACK_SOURCE_ZIP "Enable to build ZIP source packages" OFF) endif() @@ -475,6 +478,7 @@ if(NOT CPACK_SOURCE_GENERATOR) cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_CYGWIN CygwinSource) cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TGZ TGZ) cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TBZ2 TBZ2) + cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TXZ TXZ) cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_TZ TZ) cpack_optional_append(CPACK_SOURCE_GENERATOR CPACK_SOURCE_ZIP ZIP) endif() @@ -485,7 +489,7 @@ mark_as_advanced(CPACK_BINARY_CYGWIN CPACK_BINARY_PACKAGEMAKER CPACK_BINARY_OSXX CPACK_BINARY_DEB CPACK_BINARY_RPM CPACK_BINARY_TZ CPACK_BINARY_NSIS CPACK_BINARY_ZIP CPACK_BINARY_BUNDLE CPACK_SOURCE_CYGWIN CPACK_SOURCE_TBZ2 CPACK_SOURCE_TGZ - CPACK_SOURCE_TZ CPACK_SOURCE_ZIP CPACK_BINARY_DRAGNDROP) + CPACK_SOURCE_TXZ CPACK_SOURCE_TZ CPACK_SOURCE_ZIP CPACK_BINARY_DRAGNDROP) # Set some other variables cpack_set_if_not_set(CPACK_INSTALL_CMAKE_PROJECTS diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 8bf6c40..96a06d8 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -491,6 +491,7 @@ set(CPACK_SRCS CPack/cmCPackTGZGenerator.cxx CPack/cmCPackTarBZip2Generator.cxx CPack/cmCPackTarCompressGenerator.cxx + CPack/cmCPackTarXZGenerator.cxx CPack/cmCPackZIPGenerator.cxx CPack/cmCPackDocumentVariables.cxx CPack/cmCPackDocumentMacros.cxx diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx index 37ff460..2d5e757 100644 --- a/Source/CPack/cmCPackGeneratorFactory.cxx +++ b/Source/CPack/cmCPackGeneratorFactory.cxx @@ -16,6 +16,7 @@ #include "cmCPackTGZGenerator.h" #include "cmCPackTarBZip2Generator.h" #include "cmCPackTarCompressGenerator.h" +#include "cmCPackTarXZGenerator.h" #include "cmCPackZIPGenerator.h" #include "cmCPackSTGZGenerator.h" #include "cmCPackNSISGenerator.h" @@ -85,6 +86,11 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory() this->RegisterGenerator("TBZ2", "Tar BZip2 compression", cmCPackTarBZip2Generator::CreateGenerator); } + if (cmCPackTarXZGenerator::CanGenerate()) + { + this->RegisterGenerator("TXZ", "Tar XZ compression", + cmCPackTarXZGenerator::CreateGenerator); + } if (cmCPackTarCompressGenerator::CanGenerate()) { this->RegisterGenerator("TZ", "Tar Compress compression", diff --git a/Tests/CMakeTests/ModuleNoticesTest.cmake.in b/Tests/CMakeTests/ModuleNoticesTest.cmake.in index 8ecebd3..1fd5a7f 100644 --- a/Tests/CMakeTests/ModuleNoticesTest.cmake.in +++ b/Tests/CMakeTests/ModuleNoticesTest.cmake.in @@ -22,6 +22,7 @@ string(REPLACE "\r\r" "\r" notice_regex "${notice_regex}") # Modules that do not require our notice. set(notice_exceptions FindCUDA.cmake # MIT License, distributed here from upstream project + FindLibLZMA.cmake # Mandriva own patch, do not copyright by Kitware ) # Load the list of modules to check. diff --git a/Tests/SimpleInstall/CMakeLists.txt b/Tests/SimpleInstall/CMakeLists.txt index 479d6ec..10cf7b2 100644 --- a/Tests/SimpleInstall/CMakeLists.txt +++ b/Tests/SimpleInstall/CMakeLists.txt @@ -359,6 +359,11 @@ if(UNIX AND NOT APPLE) if(found_bz2) set(CPACK_GENERATOR "${CPACK_GENERATOR};TBZ2") endif() + find_program(found_xz + NAMES xz) + if(found_xz) + set(CPACK_GENERATOR "${CPACK_GENERATOR};TXZ") + endif() endif() set(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install") diff --git a/Tests/SimpleInstallS2/CMakeLists.txt b/Tests/SimpleInstallS2/CMakeLists.txt index 479d6ec..10cf7b2 100644 --- a/Tests/SimpleInstallS2/CMakeLists.txt +++ b/Tests/SimpleInstallS2/CMakeLists.txt @@ -359,6 +359,11 @@ if(UNIX AND NOT APPLE) if(found_bz2) set(CPACK_GENERATOR "${CPACK_GENERATOR};TBZ2") endif() + find_program(found_xz + NAMES xz) + if(found_xz) + set(CPACK_GENERATOR "${CPACK_GENERATOR};TXZ") + endif() endif() set(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install") diff --git a/Utilities/Release/release_cmake.cmake b/Utilities/Release/release_cmake.cmake index f351ac8..18f266d 100644 --- a/Utilities/Release/release_cmake.cmake +++ b/Utilities/Release/release_cmake.cmake @@ -100,6 +100,9 @@ foreach(gen ${generators}) set(SUFFIXES ${SUFFIXES} "*.tar.bz2") set(extra_files setup.hint) endif() + if("${gen}" STREQUAL "TXZ") + set(SUFFIXES ${SUFFIXES} "*.tar.xz") + endif() if("${gen}" STREQUAL "TZ") set(SUFFIXES ${SUFFIXES} "*.tar.Z") endif() -- 1.8.0 --- a/Modules/FindLibLZMA.cmake 2012-06-08 11:29:30.000000000 +0000 +++ b/Modules/FindLibLZMA.cmake 2012-06-08 11:29:30.000000000 +0000 @@ -0,0 +1,49 @@ +# - Find LibLZMA +# Find LibLZMA headers and library +# +# LIBLZMA_FOUND - True if liblzma is found. +# LIBLZMA_INCLUDE_DIR - Directory where liblzma headers are located. +# LIBLZMA_LIBRARIES - Lzma libraries to link against. +# LIBLZMA_HAS_AUTO_DECODER - True if lzma_auto_decoder() is found (required). +# LIBLZMA_HAS_EASY_ENCODER - True if lzma_easy_encoder() is found (required). +# LIBLZMA_HAS_LZMA_PRESET - True if lzma_lzma_preset() is found (required). + + +#============================================================================= +# Copyright 2008-2009 Per Øyvind Karlsen <peroyvind@mandriva.org> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +IF (LIBLZMA_INCLUDE_DIRS AND LIBLZMA_LIBRARIES) + SET(LIBLZMA_FIND_QUIETLY TRUE) +ENDIF (LIBLZMA_INCLUDE_DIRS AND LIBLZMA_LIBRARIES) + +IF (NOT WIN32) + INCLUDE(FindPkgConfig) + PKG_SEARCH_MODULE(LIBLZMA liblzma) + ELSE (NOT WIN32) + FIND_PATH(LIBLZMA_INCLUDE_DIRS lzma.h ) + FIND_LIBRARY(LIBLZMA_LIBRARIES NAMES lzma ) + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBLZMA DEFAULT_MSG LIBLZMA_INCLUDE_DIRS LIBLZMA_LIBRARIES) +ENDIF (NOT WIN32) + +IF (LIBLZMA_FOUND) + INCLUDE(CheckLibraryExists) + CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER) + CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER) + CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARIES} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET) + IF (NOT LIBLZMA_HAS_AUTO_DECODER AND LIBLZMA_HAS_EASY_ENCODER AND LIBLZMA_HAS_LZMA_PRESET) + SET(LIBLZMA_FOUND FALSE) + ENDIF(NOT LIBLZMA_HAS_AUTO_DECODER AND LIBLZMA_HAS_EASY_ENCODER AND LIBLZMA_HAS_LZMA_PRESET) +ENDIF (LIBLZMA_FOUND) + +MARK_AS_ADVANCED( LIBLZMA_INCLUDE_DIRS LIBLZMA_LIBRARIES ) --- a/Source/CPack/cmCPackTarXZGenerator.cxx 2012-06-08 11:29:30.000000000 +0000 +++ b/Source/CPack/cmCPackTarXZGenerator.cxx 2012-06-08 11:29:30.000000000 +0000 @@ -0,0 +1,31 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmCPackTarXZGenerator.cxx,v $ + Language: C++ + Date: $Date: 2011-05-06 19:02:00 $ + Version: $Revision: 1.0 $ + + 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 "cmCPackTarXZGenerator.h" + +//---------------------------------------------------------------------- +cmCPackTarXZGenerator::cmCPackTarXZGenerator() + :cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, + cmArchiveWrite::TypeTAR) +{ +} + +//---------------------------------------------------------------------- +cmCPackTarXZGenerator::~cmCPackTarXZGenerator() +{ +} + --- a/Source/CPack/cmCPackTarXZGenerator.h 2012-06-08 11:29:30.000000000 +0000 +++ b/Source/CPack/cmCPackTarXZGenerator.h 2012-06-08 11:29:30.000000000 +0000 @@ -0,0 +1,39 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile: cmCPackTarXZGenerator.h,v $ + Language: C++ + Date: $Date: 2007-02-02 19:40:26 $ + Version: $Revision: 1.2 $ + + 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 cmCPackTarXZGenerator_h +#define cmCPackTarXZGenerator_h + +#include "cmCPackArchiveGenerator.h" + +/** \class cmCPackTarXZGenerator + * \brief A generator for TarXZ files + */ +class cmCPackTarXZGenerator : public cmCPackArchiveGenerator +{ +public: + cmCPackTypeMacro(cmCPackTarXZGenerator, cmCPackArchiveGenerator); + /** + * Construct generator + */ + cmCPackTarXZGenerator(); + virtual ~cmCPackTarXZGenerator(); +protected: + virtual const char* GetOutputExtension() { return ".tar.xz"; } +}; + +#endif