Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

5 changed files with 167 additions and 32 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/zstd-1.4.4.tar.gz SOURCES/zstd-1.5.1.tar.gz

View File

@ -1 +1 @@
8ec1a47b704001c1804b8670a3c86f4baf035c07 SOURCES/zstd-1.4.4.tar.gz e6a51ef3f7d5be5b74ac74d88bf3850057e00adb SOURCES/zstd-1.5.1.tar.gz

38
SOURCES/enable-CET.patch Normal file
View File

@ -0,0 +1,38 @@
From cd7620a730413a48843e175d34dc408c152f8125 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 11 Jan 2022 07:28:25 -0800
Subject: [PATCH] x86-64: Enable Intel CET
Intel Control-flow Enforcement Technology (CET):
https://en.wikipedia.org/wiki/Control-flow_integrity#Intel_Control-flow_Enforcement_Technology
requires that on Linux, all linker input files are marked as CET enabled
in .note.gnu.property section. For high-level language source codes,
.note.gnu.property section is added by compiler with the -fcf-protection
option. For assembly sources, include <cet.h> to add .note.gnu.property
section.
---
lib/common/portability_macros.h | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/common/portability_macros.h b/lib/common/portability_macros.h
index 627ef9eed4..6ac4b05510 100644
--- a/lib/common/portability_macros.h
+++ b/lib/common/portability_macros.h
@@ -128,4 +128,15 @@
# define ZSTD_ENABLE_ASM_X86_64_BMI2 0
#endif
+/*
+ * For x86 ELF targets, add .note.gnu.property section for Intel CET in
+ * assembly sources when CET is enabled.
+ */
+#if defined(__ELF__) && (defined(__x86_64__) || defined(__i386__)) \
+ && defined(__has_include)
+# if __has_include(<cet.h>)
+# include <cet.h>
+# endif
+#endif
+
#endif /* ZSTD_PORTABILITY_MACROS_H */

View File

@ -1,11 +1,10 @@
diff -Naur -Naru zstd-1.3.4/programs/zstd.1 zstd-1.3.4.new/programs/zstd.1 diff -Naur zstd-1.5.1.orig/programs/zstd.1 zstd-1.5.1/programs/zstd.1
--- zstd-1.3.4/programs/zstd.1 2018-03-26 22:19:34.000000000 +0000 --- zstd-1.5.1.orig/programs/zstd.1 2021-12-20 22:49:18.000000000 +0000
+++ zstd-1.3.4.new/programs/zstd.1 2018-03-28 04:28:27.532777239 +0000 +++ zstd-1.5.1/programs/zstd.1 2021-12-22 16:49:17.160850340 +0000
@@ -177,7 +177,14 @@ @@ -146,6 +146,14 @@
. \fB\-\-show\-default\-cparams\fR: Shows the default compression parameters that will be used for a particular src file\. If the provided src file is not a regular file (eg\. named pipe), the cli will just output the default parameters\. That is, the parameters that are used when the src size is unknown\.
.SS "Restricted usage of Environment Variables" .IP "\[ci]" 4
Using environment variables to set parameters has security implications\. Therefore, this avenue is intentionally restricted\. Only \fBZSTD_CLEVEL\fR is supported currently, for setting compression level\. \fBZSTD_CLEVEL\fR can be used to set the level between 1 and 19 (the "normal" range)\. If the value of \fBZSTD_CLEVEL\fR is not a valid integer, it will be ignored with a warning message\. \fBZSTD_CLEVEL\fR just replaces the default compression level (\fB3\fR)\. It can be overridden by corresponding command line arguments\. \fB\-\-\fR: All arguments after \fB\-\-\fR are treated as files
-.
+ +
+.SH Parallel Zstd OPTIONS +.SH Parallel Zstd OPTIONS
+Additional options for the pzstd utility +Additional options for the pzstd utility
@ -14,6 +13,6 @@ diff -Naur -Naru zstd-1.3.4/programs/zstd.1 zstd-1.3.4.new/programs/zstd.1
+ number of threads to use for (de)compression (default:4) + number of threads to use for (de)compression (default:4)
+ +
+ +
.SH "DICTIONARY BUILDER" .IP "" 0
\fBzstd\fR offers \fIdictionary\fR compression, which greatly improves efficiency on small files and messages\. It\'s possible to train \fBzstd\fR with a set of samples, the result of which is saved into a file called a \fBdictionary\fR\. Then during compression and decompression, reference the same dictionary, using command \fB\-D dictionaryFileName\fR\. Compression of small files similar to the sample set will be greatly improved\. .SS "Restricted usage of Environment Variables"
. Using environment variables to set parameters has security implications\. Therefore, this avenue is intentionally restricted\. Only \fBZSTD_CLEVEL\fR and \fBZSTD_NBTHREADS\fR are currently supported\. They set the compression level and number of threads to use during compression, respectively\.

View File

@ -1,3 +1,12 @@
# enable .lz4 support by default
%bcond_without lz4
# enable .xz/.lzma support by default
%bcond_without lzma
# enable .gz support by default
%bcond_without zlib
%if 0%{?rhel} && 0%{?rhel} <= 6 %if 0%{?rhel} && 0%{?rhel} <= 6
# gcc-4.4 is currently too old to compile pzstd # gcc-4.4 is currently too old to compile pzstd
%bcond_with pzstd %bcond_with pzstd
@ -11,9 +20,21 @@
%endif %endif
%endif %endif
%ifarch x86_64
%bcond_without asm
%else
# Disable asm to ensure non excutable stack
# used on archs where asm not actually used
# https://github.com/facebook/zstd/issues/2963
%bcond_with asm
%endif
# Disable gtest
%bcond_with gtest
Name: zstd Name: zstd
Version: 1.4.4 Version: 1.5.1
Release: 1%{?dist} Release: 2%{?dist}
Summary: Zstd compression library Summary: Zstd compression library
License: BSD and GPLv2 License: BSD and GPLv2
@ -21,11 +42,26 @@ URL: https://github.com/facebook/zstd
Source0: https://github.com/facebook/zstd/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz Source0: https://github.com/facebook/zstd/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch1: pzstd.1.patch Patch1: pzstd.1.patch
Patch2: enable-CET.patch
BuildRequires: gcc gtest-devel BuildRequires: make
BuildRequires: gcc
%if %{with gtest}
BuildRequires: gtest-devel
%endif
%if %{with lz4}
BuildRequires: lz4-devel
%endif
%if %{with lzma}
BuildRequires: xz-devel
%endif
%if %{with pzstd} %if %{with pzstd}
BuildRequires: gcc-c++ BuildRequires: gcc-c++
%endif %endif
%if %{with zlib}
BuildRequires: zlib-devel
%endif
BuildRequires: execstack
%description %description
Zstd, short for Zstandard, is a fast lossless compression algorithm, Zstd, short for Zstandard, is a fast lossless compression algorithm,
@ -41,9 +77,15 @@ Zstandard compression shared library.
Summary: Header files for Zstd library Summary: Header files for Zstd library
Requires: lib%{name}%{?_isa} = %{version}-%{release} Requires: lib%{name}%{?_isa} = %{version}-%{release}
%package -n lib%{name}-static
Summary: Static variant of the Zstd library
Requires: lib%{name}-devel = %{version}-%{release}
%description -n lib%{name}-devel %description -n lib%{name}-devel
Header files for Zstd library. Header files for Zstd library.
%description -n lib%{name}-static
Static variant of the Zstd library.
%prep %prep
%setup -q %setup -q
@ -51,31 +93,35 @@ find -name .gitignore -delete
%if %{with pzstd} %if %{with pzstd}
%patch1 -p1 %patch1 -p1
%endif %endif
%patch2 -p1
%build %build
export CFLAGS="$RPM_OPT_FLAGS" export CFLAGS="$RPM_OPT_FLAGS"
export LDFLAGS="$RPM_LD_FLAGS" export LDFLAGS="$RPM_LD_FLAGS"
for dir in lib programs; do export PREFIX="%{_prefix}"
%make_build -C "$dir" export LIBDIR="%{_libdir}"
done %make_build -C lib lib-mt %{!?with_asm:ZSTD_NO_ASM=1}
%make_build -C programs %{!?with_asm:ZSTD_NO_ASM=1}
%if %{with pzstd} %if %{with pzstd}
export CXXFLAGS="$RPM_OPT_FLAGS -std=c++11" export CXXFLAGS="$RPM_OPT_FLAGS"
%make_build -C contrib/pzstd %make_build -C contrib/pzstd %{!?with_asm:ZSTD_NO_ASM=1}
%endif %endif
%check %check
execstack lib/libzstd.so.1
export CFLAGS="$RPM_OPT_FLAGS" export CFLAGS="$RPM_OPT_FLAGS"
export LDFLAGS="$RPM_LD_FLAGS" export LDFLAGS="$RPM_LD_FLAGS"
make -C tests test-zstd make -C tests test-zstd
%if %{with pzstd} %if %{with pzstd}
export CXXFLAGS="$RPM_OPT_FLAGS -std=c++11" %if %{with gtest}
export CXXFLAGS="$RPM_OPT_FLAGS"
make -C contrib/pzstd test make -C contrib/pzstd test
%endif %endif
%endif
%install %install
%make_install PREFIX=%{_prefix} LIBDIR=%{_libdir} %make_install PREFIX=%{_prefix} LIBDIR=%{_libdir}
# Don't install the static lib
rm %{buildroot}%{_libdir}/libzstd.a
%if %{with pzstd} %if %{with pzstd}
install -D -m755 contrib/pzstd/pzstd %{buildroot}%{_bindir}/pzstd install -D -m755 contrib/pzstd/pzstd %{buildroot}%{_bindir}/pzstd
install -D -m644 programs/%{name}.1 %{buildroot}%{_mandir}/man1/p%{name}.1 install -D -m644 programs/%{name}.1 %{buildroot}%{_mandir}/man1/p%{name}.1
@ -105,25 +151,77 @@ install -D -m644 programs/%{name}.1 %{buildroot}%{_mandir}/man1/p%{name}.1
%license COPYING LICENSE %license COPYING LICENSE
%files -n lib%{name}-devel %files -n lib%{name}-devel
%{_includedir}/zbuff.h
%{_includedir}/zdict.h %{_includedir}/zdict.h
%{_includedir}/zstd.h %{_includedir}/zstd.h
%{_includedir}/zstd_errors.h %{_includedir}/zstd_errors.h
%{_libdir}/pkgconfig/libzstd.pc %{_libdir}/pkgconfig/libzstd.pc
%{_libdir}/libzstd.so %{_libdir}/libzstd.so
%files -n lib%{name}-static
%{_libdir}/libzstd.a
%ldconfig_scriptlets -n lib%{name} %ldconfig_scriptlets -n lib%{name}
%changelog %changelog
* Thu Jun 4 2020 Jakub Martisko <jamartis@redhat.com> - 1.4.4-1 * Mon Feb 07 2022 Jakub Martisko <jamartis@redhat.com> - 1.5.1-2
- Rebase to 1.4.4
Resolvese: 1807452
* Tue Oct 15 2019 Jakub Martisko <jamartis@redhat.com> - 1.4.2-2
- Add some basic gating tests - Add some basic gating tests
Resolves: rhbz#2050272
* Tue Oct 15 2019 Jakub Martisko <jamartis@redhat.com> - 1.4.2-1 * Wed Jan 12 2022 Michel Alexandre Salim <salimma@centosproject.org> - 1.5.1-1
- Initial rhel commit - Rebase to the latest upstream version
- Enable optional gz, xz/lzma, and lz4 support in the zstd tool
- Disable amd64 assembly on non-x86_64 architectures (rhbz#2035802)
this should avoid the issue where an executable stack is created
- Re-enable CET protections (rhbz#2039353)
Resolves: rhbz#2039488
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.5.0-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Jul 12 2021 Jakub Martisko <jamartis@redhat.com> - 1.5.0-1
* Rebase to the latest upstream version
Resolves: rhbz#1928094
* Thu Jul 01 2021 Jakub Martisko <jamartis@redhat.com> - 1.4.9-3
- Drop gtest-devel dependency
Resolves: rhbz#1977606
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.4.9-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Mar 05 2021 Pádraig Brady <P@draigBrady.com> - 1.4.9-1
- Latest upstream
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Dec 17 2020 Pádraig Brady <P@draigBrady.com> - 1.4.7-1
- Latest upstream
* Wed Aug 26 2020 Jeff Law <law@redhat.com> - 1.4.5-6
- Do not force C++11 mode
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.5-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat Jul 11 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.4.5-4
- Build libzstd with multi-threading support
* Mon May 25 2020 Pádraig Brady <P@draigBrady.com> - 1.4.5-3
- Build shared library with correct compiler flags
* Fri May 22 2020 Pádraig Brady <P@draigBrady.com> - 1.4.5-1
- Latest upstream
* Fri May 22 2020 Avi Kivity <avi@scylladb.com> - 1.4.4-3
- Added static library subpackage
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jan 15 2020 Pádraig Brady <P@draigBrady.com> - 1.4.4-1
- Latest upstream
* Wed Jul 31 2019 Pádraig Brady <P@draigBrady.com> - 1.4.2-1 * Wed Jul 31 2019 Pádraig Brady <P@draigBrady.com> - 1.4.2-1
- Latest upstream - Latest upstream