Make build reproducible in spite of gcc profile based optimizations (boo#1040589) The previous version would create an unused tar file called 'd' and use an empty tmpfile for training gzip profiles though it did make builds reproducible, it would lose some optimizations OBS-URL: https://build.opensuse.org/request/show/499876 OBS-URL: https://build.opensuse.org/package/show/Base:System/gzip?expand=0&rev=52
144 lines
4.0 KiB
RPMSpec
144 lines
4.0 KiB
RPMSpec
#
|
|
# spec file for package gzip
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%define _buildshell /bin/bash
|
|
Name: gzip
|
|
Version: 1.8
|
|
Release: 0
|
|
Summary: GNU Zip Compression Utilities
|
|
License: GPL-2.0+
|
|
Group: Productivity/Archiving/Compression
|
|
Url: http://www.gnu.org/software/gzip/
|
|
Source: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
|
|
Source2: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig
|
|
Source3: %{name}.keyring
|
|
Patch0: zgrep.diff
|
|
Patch2: zmore.diff
|
|
Patch3: non-exec-stack.diff
|
|
Patch6: zdiff.diff
|
|
# PATCH FIX OPENSUSE BNC#799561 - zgrep silently fails on LZMA compressed files
|
|
Patch7: xz_lzma.patch
|
|
Patch8: manpage-no-date.patch
|
|
BuildRequires: makeinfo
|
|
BuildRequires: xz
|
|
Requires(post): %{install_info_prereq}
|
|
Requires(preun): %{install_info_prereq}
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
|
|
%description
|
|
Gzip reduces the size of the named files using Lempel-Ziv coding LZ77.
|
|
Whenever possible, each file is replaced by one with the extension .gz,
|
|
while keeping the same ownership modes and access and modification
|
|
times.
|
|
|
|
%prep
|
|
%setup -q
|
|
%patch0
|
|
%patch2 -p1
|
|
%patch3
|
|
%patch6
|
|
%patch7 -p1
|
|
%patch8 -p1
|
|
|
|
%build
|
|
export CFLAGS="%{optflags} -fomit-frame-pointer \
|
|
-W -Wall -Wno-unused-parameter -Wstrict-prototypes -Wpointer-arith -fPIE"
|
|
export LDFLAGS="-pie"
|
|
%configure --disable-silent-rules \
|
|
gl_cv_func_printf_directive_n=yes \
|
|
gl_cv_func_printf_infinite_long_double=yes
|
|
profile_gzip()
|
|
{
|
|
tmpfile=$(mktemp)
|
|
trap "rm -f $tmpfile $tmpfile.gz" EXIT
|
|
xz -cd %{SOURCE0} > $tmpfile
|
|
time ./gzip < $tmpfile > $tmpfile.gz
|
|
time ./gzip -d < $tmpfile.gz > /dev/null
|
|
}
|
|
%if %{do_profiling}
|
|
make %{?_smp_mflags} CFLAGS="$CFLAGS -fprofile-generate" LDFLAGS="-pie"
|
|
profile_gzip
|
|
make clean %{?_smp_mflags}
|
|
make %{?_smp_mflags} CFLAGS="$CFLAGS -fprofile-use" LDFLAGS="-pie"
|
|
%else
|
|
make %{?_smp_mflags} LDFLAGS="-pie"
|
|
%endif
|
|
|
|
%check
|
|
for i in {1..9}; do
|
|
for f in build-aux/texinfo.tex /bin/bash; do
|
|
basef=${f##*/}
|
|
time ./gzip -$i < $f > $basef.gz
|
|
./gzip --test $basef.gz
|
|
./gzip -d < $basef.gz > $basef.test$i
|
|
cmp $f $basef.test$i
|
|
done
|
|
done
|
|
|
|
%install
|
|
%make_install
|
|
#UsrMerge
|
|
mkdir -p %{buildroot}/bin
|
|
ln -sf %{_bindir}/gzip %{_bindir}/gunzip %{_bindir}/zcat %{buildroot}/bin
|
|
#EndUsrMerge
|
|
ln -sf zmore %{buildroot}%{_bindir}/zless
|
|
ln -sf zmore.1 %{buildroot}%{_mandir}/man1/zless.1
|
|
|
|
%post
|
|
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
|
|
|
|
%preun
|
|
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
|
|
|
|
%files
|
|
%defattr(-, root, root)
|
|
%doc README AUTHORS ChangeLog TODO NEWS THANKS
|
|
#UsrMerge
|
|
/bin/gunzip
|
|
/bin/gzip
|
|
/bin/zcat
|
|
#EndUsrMerge
|
|
%{_bindir}/gunzip
|
|
%{_bindir}/gzexe
|
|
%{_bindir}/gzip
|
|
%{_bindir}/uncompress
|
|
%{_bindir}/zcat
|
|
%{_bindir}/zcmp
|
|
%{_bindir}/zdiff
|
|
%{_bindir}/zegrep
|
|
%{_bindir}/zfgrep
|
|
%{_bindir}/zforce
|
|
%{_bindir}/zgrep
|
|
%{_bindir}/zless
|
|
%{_bindir}/zmore
|
|
%{_bindir}/znew
|
|
%{_infodir}/gzip.info%{ext_info}
|
|
%{_mandir}/man1/gunzip.1%{ext_man}
|
|
%{_mandir}/man1/gzexe.1%{ext_man}
|
|
%{_mandir}/man1/gzip.1%{ext_man}
|
|
%{_mandir}/man1/zcat.1%{ext_man}
|
|
%{_mandir}/man1/zcmp.1%{ext_man}
|
|
%{_mandir}/man1/zdiff.1%{ext_man}
|
|
%{_mandir}/man1/zforce.1%{ext_man}
|
|
%{_mandir}/man1/zgrep.1%{ext_man}
|
|
%{_mandir}/man1/zless.1%{ext_man}
|
|
%{_mandir}/man1/zmore.1%{ext_man}
|
|
%{_mandir}/man1/znew.1%{ext_man}
|
|
|
|
%changelog
|