Browse Source

Merge topic 'cpack-tar'

09d5a4d7f0 CPack: add uncompressed TAR support
9d4be239b2 Help: Improve CPack Archive generator format list layout

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !10265
Brad King 10 months ago
parent
commit
765eb70fa0

+ 23 - 13
Help/cpack_gen/archive.rst

@@ -4,19 +4,29 @@ CPack Archive Generator
 CPack generator for packaging files into an archive, which can have
 any of the following formats:
 
-  - 7Z - 7zip - (``.7z``)
-  - TBZ2 (``.tar.bz2``)
-  - TGZ (``.tar.gz``)
-  - TXZ (``.tar.xz``)
-  - TZ (``.tar.Z``)
-  - TZST (``.tar.zst``)
-  - ZIP (``.zip``)
-
-.. versionadded:: 3.1
-  7Z and TXZ formats support.
-
-.. versionadded:: 3.16
-  TZST format support.
+- 7Z - 7zip - (``.7z``)
+
+  .. versionadded:: 3.1
+
+- TAR (``.tar``)
+
+  .. versionadded:: 4.0
+
+- TBZ2 (``.tar.bz2``)
+
+- TGZ (``.tar.gz``)
+
+- TXZ (``.tar.xz``)
+
+  .. versionadded:: 3.1
+
+- TZ (``.tar.Z``)
+
+- TZST (``.tar.zst``)
+
+  .. versionadded:: 3.16
+
+- ZIP (``.zip``)
 
 When this generator is called from ``CPackSourceConfig.cmake`` (or through
 the ``package_source`` target), then the generated archive will contain all

+ 5 - 0
Help/release/dev/cpack-tar.rst

@@ -0,0 +1,5 @@
+cpack-tar
+---------
+
+* The :cpack_gen:`CPack Archive Generator` learned to generated `.tar`
+  packages without compression.

+ 6 - 0
Source/CPack/cmCPackArchiveGenerator.cxx

@@ -169,6 +169,12 @@ cmCPackGenerator* cmCPackArchiveGenerator::CreateTZSTGenerator()
                                      ".tar.zst");
 }
 
+cmCPackGenerator* cmCPackArchiveGenerator::CreateTarGenerator()
+{
+  return new cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "gnutar",
+                                     ".tar");
+}
+
 cmCPackGenerator* cmCPackArchiveGenerator::CreateZIPGenerator()
 {
   return new cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "zip",

+ 1 - 0
Source/CPack/cmCPackArchiveGenerator.h

@@ -29,6 +29,7 @@ public:
   static cmCPackGenerator* CreateTXZGenerator();
   static cmCPackGenerator* CreateTZGenerator();
   static cmCPackGenerator* CreateTZSTGenerator();
+  static cmCPackGenerator* CreateTarGenerator();
   static cmCPackGenerator* CreateZIPGenerator();
 
   /**

+ 2 - 0
Source/CPack/cmCPackGeneratorFactory.cxx

@@ -54,6 +54,8 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
                             cmCPackArchiveGenerator::CreateTZGenerator);
     this->RegisterGenerator("TZST", "Tar Zstandard compression",
                             cmCPackArchiveGenerator::CreateTZSTGenerator);
+    this->RegisterGenerator("TAR", "Tar no compression",
+                            cmCPackArchiveGenerator::CreateTarGenerator);
     this->RegisterGenerator("ZIP", "ZIP file format",
                             cmCPackArchiveGenerator::CreateZIPGenerator);
   }

+ 1 - 0
Tests/RunCMake/CMakeLists.txt

@@ -1126,6 +1126,7 @@ set(cpack_tests
   RPM.COMPONENT_WITH_SPECIAL_CHARS
 
   7Z
+  TAR
   TBZ2
   TGZ
   TXZ

+ 4 - 4
Tests/RunCMake/CPack/RunCMakeTest.cmake

@@ -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;External" false "MONOLITHIC;COMPONENT")
-run_cpack_test_package_target(MINIMAL "RPM.MINIMAL;DEB.MINIMAL;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;External" false "MONOLITHIC;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_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")
@@ -78,6 +78,6 @@ else()
 endif()
 run_cpack_test_package_target(PRE_POST_SCRIPTS "ZIP" false "MONOLITHIC;COMPONENT")
 run_cpack_test_subtests(DUPLICATE_FILE "success;conflict_file;conflict_symlink" "TGZ" false "COMPONENT;GROUP")
-run_cpack_test(COMPONENT_WITH_SPECIAL_CHARS "RPM.COMPONENT_WITH_SPECIAL_CHARS;DEB.COMPONENT_WITH_SPECIAL_CHARS;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ" false "MONOLITHIC;COMPONENT;GROUP")
-run_cpack_test_package_target(COMPONENT_WITH_SPECIAL_CHARS "RPM.COMPONENT_WITH_SPECIAL_CHARS;DEB.COMPONENT_WITH_SPECIAL_CHARS;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ" false "MONOLITHIC;COMPONENT;GROUP")
+run_cpack_test(COMPONENT_WITH_SPECIAL_CHARS "RPM.COMPONENT_WITH_SPECIAL_CHARS;DEB.COMPONENT_WITH_SPECIAL_CHARS;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;TAR" false "MONOLITHIC;COMPONENT;GROUP")
+run_cpack_test_package_target(COMPONENT_WITH_SPECIAL_CHARS "RPM.COMPONENT_WITH_SPECIAL_CHARS;DEB.COMPONENT_WITH_SPECIAL_CHARS;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;TAR" false "MONOLITHIC;COMPONENT;GROUP")
 run_cpack_test_subtests(MULTIARCH "same;foreign;allowed;fail" "DEB.MULTIARCH" false "MONOLITHIC;COMPONENT")

+ 3 - 0
Tests/RunCMake/CPack/TAR/Helpers.cmake

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

+ 4 - 0
Tests/RunCMake/CPack/TAR/Prerequirements.cmake

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

+ 1 - 0
Tests/RunCMake/CPack/TAR/packaging_COMPONENT_default.cmake

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