Merge topic 'cpack-7z-zip-algorithms'

3db6cce657 cpack: 7z & zip supports compression algorithms
1e4b829279 cpack: restore broken archive compression methods

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11513
This commit is contained in:
Brad King
2025-12-17 19:11:37 +00:00
committed by Kitware Robot
49 changed files with 348 additions and 6 deletions

View File

@@ -8,6 +8,36 @@ any of the following formats:
.. versionadded:: 3.1
This is an alias for ``7Z_LZMA``
- 7Z_BZ2 - 7zip - (``.7z``) - BZip2 compressed
.. versionadded:: 4.3
- 7Z_DEFLATE - 7zip - (``.7z``) - Deflate compressed
.. versionadded:: 4.3
- 7Z_LZMA - 7zip - (``.7z``) - LZMA compressed
.. versionadded:: 4.3
- 7Z_LZMA2 - 7zip - (``.7z``) - LZMA2 compressed
.. versionadded:: 4.3
- 7Z_PPMD - 7zip - (``.7z``) - PPMd compressed
.. versionadded:: 4.3
- 7Z_STORE - 7zip - (``.7z``) - no compression is used
.. versionadded:: 4.3
- 7Z_ZSTD - 7zip - (``.7z``) - Zstandard compressed
.. versionadded:: 4.3
- TAR (``.tar``) - no compression is used
.. versionadded:: 4.0
@@ -28,6 +58,32 @@ any of the following formats:
- ZIP (``.zip``) - Deflate compressed
This is an alias for ``ZIP_DEFLATE``
- ZIP_BZ2 (``.zip``) - BZip2 compressed
.. versionadded:: 4.3
- ZIP_DEFLATE (``.zip``) - Deflate compressed
.. versionadded:: 4.3
- ZIP_LZMA (``.zip``) - LZMA compressed
.. versionadded:: 4.3
- ZIP_LZMA2 (``.zip``) - LZMA2 compressed
.. versionadded:: 4.3
- ZIP_STORE (``.zip``) - no compression is used
.. versionadded:: 4.3
- ZIP_ZSTD (``.zip``) - Zstandard compressed
.. versionadded:: 4.3
When this generator is called from ``CPackSourceConfig.cmake`` (or through
the ``package_source`` target), then the generated archive will contain all
files in the project directory, except those specified in

View File

@@ -0,0 +1,5 @@
cpack-7z-zip-algorithms
-----------------------
* The :cpack_gen:`CPack Archive Generator` generator supports support compression
methods specification for ``7zip`` and ``zip`` formats.

View File

@@ -134,11 +134,52 @@ private:
};
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZGenerator()
{
return cmCPackArchiveGenerator::Create7ZLzmaGenerator();
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZStoreGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZDeflateGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressGZip, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZBzip2Generator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressBZip2, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZLzmaGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressLZMA, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZLzma2Generator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZZstdGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressZstd, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::Create7ZPPMdGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressPPMd, "7zip",
".7z");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateTBZ2Generator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressBZip2, "paxr",
@@ -176,11 +217,46 @@ cmCPackGenerator* cmCPackArchiveGenerator::CreateTarGenerator()
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZIPGenerator()
{
return cmCPackArchiveGenerator::CreateZipDeflateGenerator();
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipStoreGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "zip",
".zip");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipDeflateGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressGZip, "zip",
".zip");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipBzip2Generator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressBZip2, "zip",
".zip");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipLzmaGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressLZMA, "zip",
".zip");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipLzma2Generator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, "zip",
".zip");
}
cmCPackGenerator* cmCPackArchiveGenerator::CreateZipZstdGenerator()
{
return new cmCPackArchiveGenerator(cmArchiveWrite::CompressZstd, "zip",
".zip");
}
cmCPackArchiveGenerator::cmCPackArchiveGenerator(
cmArchiveWrite::Compress compress, std::string format, std::string extension)
: Compress(compress)

View File

@@ -24,6 +24,13 @@ public:
using Superclass = cmCPackGenerator;
static cmCPackGenerator* Create7ZGenerator();
static cmCPackGenerator* Create7ZStoreGenerator();
static cmCPackGenerator* Create7ZDeflateGenerator();
static cmCPackGenerator* Create7ZBzip2Generator();
static cmCPackGenerator* Create7ZLzmaGenerator();
static cmCPackGenerator* Create7ZLzma2Generator();
static cmCPackGenerator* Create7ZZstdGenerator();
static cmCPackGenerator* Create7ZPPMdGenerator();
static cmCPackGenerator* CreateTBZ2Generator();
static cmCPackGenerator* CreateTGZGenerator();
static cmCPackGenerator* CreateTXZGenerator();
@@ -31,6 +38,12 @@ public:
static cmCPackGenerator* CreateTZSTGenerator();
static cmCPackGenerator* CreateTarGenerator();
static cmCPackGenerator* CreateZIPGenerator();
static cmCPackGenerator* CreateZipStoreGenerator();
static cmCPackGenerator* CreateZipDeflateGenerator();
static cmCPackGenerator* CreateZipBzip2Generator();
static cmCPackGenerator* CreateZipLzmaGenerator();
static cmCPackGenerator* CreateZipLzma2Generator();
static cmCPackGenerator* CreateZipZstdGenerator();
/**
* Construct generator

View File

@@ -46,8 +46,30 @@
cmCPackGeneratorFactory::cmCPackGeneratorFactory()
{
if (cmCPackArchiveGenerator::CanGenerate()) {
this->RegisterGenerator("7Z", "7-Zip file format",
cmCPackArchiveGenerator::Create7ZGenerator);
this->RegisterGenerator(
"7Z", "7-Zip file format with default compression algorithm",
cmCPackArchiveGenerator::Create7ZGenerator);
this->RegisterGenerator("7Z_STORE",
"7-Zip file format without compression",
cmCPackArchiveGenerator::Create7ZStoreGenerator);
this->RegisterGenerator("7Z_DEFLATE",
"7-Zip file format with Deflate compression",
cmCPackArchiveGenerator::Create7ZDeflateGenerator);
this->RegisterGenerator("7Z_BZ2",
"7-Zip file format with BZip2 compression",
cmCPackArchiveGenerator::Create7ZBzip2Generator);
this->RegisterGenerator("7Z_LZMA",
"7-Zip file format with LZMA compression",
cmCPackArchiveGenerator::Create7ZLzmaGenerator);
this->RegisterGenerator("7Z_LZMA2",
"7-Zip file format with LZMA2 compression",
cmCPackArchiveGenerator::Create7ZLzma2Generator);
this->RegisterGenerator("7Z_ZSTD",
"7-Zip file format with Zstandard compression",
cmCPackArchiveGenerator::Create7ZZstdGenerator);
this->RegisterGenerator("7Z_PPMD",
"7-Zip file format with PPMd compression",
cmCPackArchiveGenerator::Create7ZPPMdGenerator);
this->RegisterGenerator("TBZ2", "Tar BZip2 compression",
cmCPackArchiveGenerator::CreateTBZ2Generator);
this->RegisterGenerator("TGZ", "Tar GZip compression",
@@ -60,8 +82,26 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
cmCPackArchiveGenerator::CreateTZSTGenerator);
this->RegisterGenerator("TAR", "Tar no compression",
cmCPackArchiveGenerator::CreateTarGenerator);
this->RegisterGenerator("ZIP", "ZIP file format",
cmCPackArchiveGenerator::CreateZIPGenerator);
this->RegisterGenerator(
"ZIP", "ZIP file format with default compression algorithm",
cmCPackArchiveGenerator::CreateZIPGenerator);
this->RegisterGenerator("ZIP_STORE", "ZIP file format without compression",
cmCPackArchiveGenerator::CreateZipStoreGenerator);
this->RegisterGenerator(
"ZIP_DEFLATE", "ZIP file format with Deflate compression",
cmCPackArchiveGenerator::CreateZipDeflateGenerator);
this->RegisterGenerator("ZIP_BZ2",
"ZIP file format with BZip2 compression",
cmCPackArchiveGenerator::CreateZipBzip2Generator);
this->RegisterGenerator("ZIP_LZMA",
"ZIP file format with LZMA compression",
cmCPackArchiveGenerator::CreateZipLzmaGenerator);
this->RegisterGenerator("ZIP_LZMA2",
"ZIP file format with LZMA2 compression",
cmCPackArchiveGenerator::CreateZipLzma2Generator);
this->RegisterGenerator("ZIP_ZSTD",
"ZIP file format with Zstandard compression",
cmCPackArchiveGenerator::CreateZipZstdGenerator);
}
if (cmCPackSTGZGenerator::CanGenerate()) {
this->RegisterGenerator("STGZ", "Self extracting Tar GZip compression",

View File

@@ -1261,12 +1261,26 @@ set(cpack_tests
RPM.COMPONENT_WITH_SPECIAL_CHARS
7Z
7Z_STORE
7Z_DEFLATE
7Z_BZ2
7Z_LZMA
7Z_LZMA2
7Z_ZSTD
7Z_PPMD
TAR
TBZ2
TGZ
TXZ
TZ
TZST
ZIP
ZIP_STORE
ZIP_DEFLATE
ZIP_BZ2
ZIP_LZMA
ZIP_LZMA2
ZIP_ZSTD
STGZ
External
)
@@ -1302,10 +1316,24 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "e2k" AND NOT DEFINED CMake_TEST_E2K_BROKEN_L
RPM.DIST
RPM.AUTO_SUFFIXES
7Z
7Z_STORE
7Z_DEFLATE
7Z_BZ2
7Z_LZMA
7Z_LZMA2
7Z_ZSTD
7Z_PPMD
TXZ
TZST
TBZ2
TGZ
ZIP
ZIP_STORE
ZIP_DEFLATE
ZIP_BZ2
ZIP_LZMA
ZIP_LZMA2
ZIP_ZSTD
STGZ
External
)
@@ -1313,6 +1341,18 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "e2k" AND NOT DEFINED CMake_TEST_E2K_BROKEN_L
endif()
endif()
if(CMake_TEST_LibArchive_VERSION AND CMake_TEST_LibArchive_VERSION VERSION_LESS 3.8.0)
# Exclude tests, that require libarchive >= 3.8.0
# if the version of libarchive is less than required
list(REMOVE_ITEM cpack_tests
7Z_ZSTD
ZIP_BZ2
ZIP_LZMA
ZIP_LZMA2
ZIP_ZSTD
)
endif()
add_RunCMake_test_group(CPack "${cpack_tests}")
if(CMake_TEST_CPACK_APPIMAGE)

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "7z")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -36,8 +36,8 @@ if(DEBUGEDIT AND NOT BRPALT)
endif()
run_cpack_test(LONG_FILENAMES "DEB.LONG_FILENAMES" false "MONOLITHIC")
run_cpack_test_subtests(MAIN_COMPONENT "invalid;found" "RPM.MAIN_COMPONENT" false "COMPONENT")
run_cpack_test(MINIMAL "RPM.MINIMAL;DEB.MINIMAL;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;TAR;External" false "MONOLITHIC;COMPONENT")
run_cpack_test_package_target(MINIMAL "RPM.MINIMAL;DEB.MINIMAL;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;TAR;External" false "MONOLITHIC;COMPONENT")
run_cpack_test(MINIMAL "RPM.MINIMAL;DEB.MINIMAL;7Z;7Z_STORE;7Z_DEFLATE;7Z_BZ2;7Z_LZMA;7Z_LZMA2;7Z_ZSTD;7Z_PPMD;TBZ2;TGZ;TXZ;TZST;TZ;ZIP;ZIP_STORE;ZIP_DEFLATE;ZIP_BZ2;ZIP_LZMA;ZIP_LZMA2;ZIP_ZSTD;STGZ;TAR;External" false "MONOLITHIC;COMPONENT")
run_cpack_test_package_target(MINIMAL "RPM.MINIMAL;DEB.MINIMAL;7Z;7Z_STORE;7Z_DEFLATE;7Z_BZ2;7Z_LZMA;7Z_LZMA2;7Z_ZSTD;7Z_PPMD;TBZ2;TGZ;TXZ;TZST;TZ;ZIP;ZIP_STORE;ZIP_DEFLATE;ZIP_BZ2;ZIP_LZMA;ZIP_LZMA2;ZIP_ZSTD;STGZ;TAR;External" false "MONOLITHIC;COMPONENT")
run_cpack_test_package_target(THREADED_ALL "TXZ;DEB" false "MONOLITHIC;COMPONENT")
run_cpack_test_package_target(THREADED "TXZ;DEB" false "MONOLITHIC;COMPONENT")
run_cpack_test_subtests(PACKAGE_CHECKSUM "invalid;MD5;SHA1;SHA224;SHA256;SHA384;SHA512" "TGZ" false "MONOLITHIC")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "tar.zst")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")

View File

@@ -0,0 +1,3 @@
set(cpack_archive_extension_ "zip")
include("${CMAKE_CURRENT_LIST_DIR}/../ArchiveCommon/common_helpers.cmake")

View File

@@ -0,0 +1,4 @@
function(get_test_prerequirements found_var config_file)
file(WRITE "${config_file}" "")
set(${found_var} true PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")