From fab5c030ad5e8fa30cfd407b0e440e05ca091559 Mon Sep 17 00:00:00 2001 From: Joel Johnson Date: Thu, 27 Jun 2024 14:37:53 -0600 Subject: [PATCH] CPack/RPM: Add zstd compression support Fixes: #26088 --- Help/cpack_gen/rpm.rst | 10 +++++++--- Help/release/dev/cpack-rpm-zstd.rst | 5 +++++ Modules/Internal/CPack/CPackRPM.cmake | 6 ++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 Help/release/dev/cpack-rpm-zstd.rst diff --git a/Help/cpack_gen/rpm.rst b/Help/cpack_gen/rpm.rst index 4a2ce5f9b6..ebd3766668 100644 --- a/Help/cpack_gen/rpm.rst +++ b/Help/cpack_gen/rpm.rst @@ -246,9 +246,8 @@ List of CPack RPM generator specific variables: :Default: (system default) May be used to override RPM compression type to be used to build the - RPM. For example some Linux distribution now default to ``lzma`` or ``xz`` - compression whereas older cannot use such RPM. Using this one can enforce - compression type to be used. + RPM. For example some Linux distributions default to ``xz`` or ``zstd``. + Using this, one can specify a specific compression type to be used. Possible values are: @@ -264,6 +263,11 @@ List of CPack RPM generator specific variables: ``gzip`` GNU Gzip compression + ``zstd`` + .. versionadded:: 3.31 + + Zstandard compression + .. variable:: CPACK_RPM_PACKAGE_AUTOREQ CPACK_RPM__PACKAGE_AUTOREQ diff --git a/Help/release/dev/cpack-rpm-zstd.rst b/Help/release/dev/cpack-rpm-zstd.rst new file mode 100644 index 0000000000..828d5f611a --- /dev/null +++ b/Help/release/dev/cpack-rpm-zstd.rst @@ -0,0 +1,5 @@ +cpack-rpm-zstd +-------------- + +* The :cpack_gen:`CPack RPM Generator` gained support for ``zstd`` as a + :variable:`CPACK_RPM_COMPRESSION_TYPE` value. diff --git a/Modules/Internal/CPack/CPackRPM.cmake b/Modules/Internal/CPack/CPackRPM.cmake index 61a708240c..e3f8f5e38a 100644 --- a/Modules/Internal/CPack/CPackRPM.cmake +++ b/Modules/Internal/CPack/CPackRPM.cmake @@ -1049,6 +1049,12 @@ function(cpack_rpm_generate_package) set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.bzdio") elseif(CPACK_RPM_COMPRESSION_TYPE STREQUAL "gzip") set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w9.gzdio") + elseif(CPACK_RPM_COMPRESSION_TYPE STREQUAL "zstd") + if(CPACK_THREADS GREATER "0") + set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w19T${CPACK_THREADS}.zstdio") + else() + set(CPACK_RPM_COMPRESSION_TYPE_TMP "%define _binary_payload w19T0.zstdio") + endif() else() message(FATAL_ERROR "Specified CPACK_RPM_COMPRESSION_TYPE value is not supported: ${CPACK_RPM_COMPRESSION_TYPE}") endif()