[Cmake-commits] CMake branch, master, updated. v3.14.4-1155-g05af177
Kitware Robot
kwrobot at kitware.com
Thu May 30 09:43:07 EDT 2019
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, master has been updated
via 05af1770a05e00d67f12f4e3ef294360d8d6480d (commit)
via 53cb1f2d04bc9ca7bd50bd3b1a60dc933eab0777 (commit)
from c68efd196eace176bed5216573d99fabba66df84 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=05af1770a05e00d67f12f4e3ef294360d8d6480d
commit 05af1770a05e00d67f12f4e3ef294360d8d6480d
Merge: c68efd1 53cb1f2
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu May 30 13:39:23 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Thu May 30 09:39:35 2019 -0400
Merge topic 'tar-zstd-compression'
53cb1f2d04 cmake: Teach cmake -E tar command, Zstandard compression
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3357
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=53cb1f2d04bc9ca7bd50bd3b1a60dc933eab0777
commit 53cb1f2d04bc9ca7bd50bd3b1a60dc933eab0777
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
AuthorDate: Mon Mar 11 23:26:04 2019 +0100
Commit: Bartosz Kosiorek <gang65 at poczta.onet.pl>
CommitDate: Wed May 22 03:46:55 2019 +0200
cmake: Teach cmake -E tar command, Zstandard compression
Fixes #18657
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst
index df0d4c5..eddc3cb 100644
--- a/Help/manual/cmake.1.rst
+++ b/Help/manual/cmake.1.rst
@@ -546,20 +546,23 @@ Available commands are:
Compress the resulting archive with bzip2.
``J``
Compress the resulting archive with XZ.
- ``--``
- Stop interpreting options and treat all remaining arguments
- as file names even if they start in ``-``.
+ ``--zstd``
+ Compress the resulting archive with Zstandard.
``--files-from=<file>``
Read file names from the given file, one per line.
Blank lines are ignored. Lines may not start in ``-``
except for ``--add-file=<name>`` to add files whose
names start in ``-``.
- ``--mtime=<date>``
- Specify modification time recorded in tarball entries.
``--format=<format>``
Specify the format of the archive to be created.
Supported formats are: ``7zip``, ``gnutar``, ``pax``,
``paxr`` (restricted pax, default), and ``zip``.
+ ``--mtime=<date>``
+ Specify modification time recorded in tarball entries.
+ ``--``
+ Stop interpreting options and treat all remaining arguments
+ as file names, even if they start with ``-``.
+
``time <command> [<args>...]``
Run command and display elapsed time.
diff --git a/Help/release/dev/cmake-e-tar-zstd-support.rst b/Help/release/dev/cmake-e-tar-zstd-support.rst
new file mode 100644
index 0000000..e3488b5
--- /dev/null
+++ b/Help/release/dev/cmake-e-tar-zstd-support.rst
@@ -0,0 +1,7 @@
+Help/release/dev/cmake-e-tar-zstd-support
+-----------------------------------------
+
+* The :manual:`cmake(1)` ``-E tar`` tool now support Zstandard compression
+ algorithm with ``--zstd`` option. Zstandard was designed to give
+ a compression ratio comparable to that of the DEFLATE (zip) algorithm,
+ but faster, especially for decompression.
diff --git a/Source/cmArchiveWrite.cxx b/Source/cmArchiveWrite.cxx
index 177ba02..359d57a 100644
--- a/Source/cmArchiveWrite.cxx
+++ b/Source/cmArchiveWrite.cxx
@@ -137,6 +137,13 @@ cmArchiveWrite::cmArchiveWrite(std::ostream& os, Compress c,
return;
}
break;
+ case CompressZstd:
+ if (archive_write_add_filter_zstd(this->Archive) != ARCHIVE_OK) {
+ this->Error = "archive_write_add_filter_zstd: ";
+ this->Error += cm_archive_error_string(this->Archive);
+ return;
+ }
+ break;
}
#if !defined(_WIN32) || defined(__CYGWIN__)
if (archive_read_disk_set_standard_lookup(this->Disk) != ARCHIVE_OK) {
diff --git a/Source/cmArchiveWrite.h b/Source/cmArchiveWrite.h
index 1f23dae..9ea88d3 100644
--- a/Source/cmArchiveWrite.h
+++ b/Source/cmArchiveWrite.h
@@ -49,7 +49,8 @@ public:
CompressGZip,
CompressBZip2,
CompressLZMA,
- CompressXZ
+ CompressXZ,
+ CompressZstd
};
/** Construct with output stream to which to write archive. */
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 545e6c5..4ba04ed 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -1614,6 +1614,9 @@ bool cmSystemTools::CreateTar(const char* outFileName,
case TarCompressXZ:
compress = cmArchiveWrite::CompressXZ;
break;
+ case TarCompressZstd:
+ compress = cmArchiveWrite::CompressZstd;
+ break;
case TarCompressNone:
compress = cmArchiveWrite::CompressNone;
break;
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h
index d145d47..64d6d7a 100644
--- a/Source/cmSystemTools.h
+++ b/Source/cmSystemTools.h
@@ -451,6 +451,7 @@ public:
TarCompressGZip,
TarCompressBZip2,
TarCompressXZ,
+ TarCompressZstd,
TarCompressNone
};
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 3c75957..e1b6f48 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -1043,11 +1043,17 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
std::vector<std::string> files;
std::string mtime;
std::string format;
+ cmSystemTools::cmTarCompression compress =
+ cmSystemTools::TarCompressNone;
+ int nCompress = 0;
bool doing_options = true;
for (auto const& arg : cmMakeRange(args).advance(4)) {
if (doing_options && cmHasLiteralPrefix(arg, "--")) {
if (arg == "--") {
doing_options = false;
+ } else if (arg == "--zstd") {
+ compress = cmSystemTools::TarCompressZstd;
+ ++nCompress;
} else if (cmHasLiteralPrefix(arg, "--mtime=")) {
mtime = arg.substr(8);
} else if (cmHasLiteralPrefix(arg, "--files-from=")) {
@@ -1075,10 +1081,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
}
}
cmSystemTools::cmTarAction action = cmSystemTools::TarActionNone;
- cmSystemTools::cmTarCompression compress =
- cmSystemTools::TarCompressNone;
bool verbose = false;
- int nCompress = 0;
for (auto flag : flags) {
switch (flag) {
diff --git a/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake b/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
index 5deb110..4ed9535 100644
--- a/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
@@ -27,6 +27,7 @@ run_cmake(gnutar)
run_cmake(gnutar-gz)
run_cmake(pax)
run_cmake(pax-xz)
+run_cmake(pax-zstd)
run_cmake(paxr)
run_cmake(paxr-bz2)
run_cmake(zip)
diff --git a/Tests/RunCMake/CommandLineTar/pax-zstd.cmake b/Tests/RunCMake/CommandLineTar/pax-zstd.cmake
new file mode 100644
index 0000000..c2a304d
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/pax-zstd.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar.zstd")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=pax --zstd)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("28b52ffd0058" LIMIT 6 HEX)
-----------------------------------------------------------------------
Summary of changes:
Help/manual/cmake.1.rst | 13 ++++++++-----
Help/release/dev/cmake-e-tar-zstd-support.rst | 7 +++++++
Source/cmArchiveWrite.cxx | 7 +++++++
Source/cmArchiveWrite.h | 3 ++-
Source/cmSystemTools.cxx | 3 +++
Source/cmSystemTools.h | 1 +
Source/cmcmd.cxx | 9 ++++++---
Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake | 1 +
Tests/RunCMake/CommandLineTar/pax-zstd.cmake | 10 ++++++++++
9 files changed, 45 insertions(+), 9 deletions(-)
create mode 100644 Help/release/dev/cmake-e-tar-zstd-support.rst
create mode 100644 Tests/RunCMake/CommandLineTar/pax-zstd.cmake
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list