Marcus Meissner
d8cbce283c
- GNU tar 1.34: * Fail when building GNU tar if the platform supports 64-bit time_t but the build only uses 32-bit time_t. * Leave the devmajor and devminor fields empty (rather than zero) for non-special files, as this is more compatible with traditional tar. Fixes: * Fix interaction of --update with --wildcards. * When extracting archives into an empty directory, do not create hard links to files outside that directory. * Handle partial reads from regular files. * Warn file changed as we read it less often. Formerly, tar warned if the file's size or ctime changed. However, this generated a false positive if tar read a file while another process hard-linked to it, changing its ctime. Now, tar warns if the file's size, mtime, user ID, group ID, or mode changes. Although neither heuristic is perfect, the new one should work better in practice. * Fix --ignore-failed-read to ignore file-changed read errors as far as exit status is concerned. You can now suppress file-changed issues entirely with --ignore-failed-read --warning=no-file-changed. * Fix --remove-files to not remove a file that changed while we read it. * Fix --atime-preserve=replace to not fail if there was no need to replace, either because we did not read the file, or the atime did not change. * Fix race when creating a parent directory while another process is also doing so. * Fix handling of prefix keywords not followed by "." in pax headers. * Fix handling of out-of-range sparse entries in pax headers. * Fix handling of --transform='s/s/@/2'. * Fix treatment of options ending in slash in files-from list. * Fix crash on tar --checkpoint-action exec=\". * Fix low-memory crash when reading incremental dumps. * Fix --exclude-vcs-ignores memory allocation misuse. - Update patch: * tar-backup-spec-fix-paths.patch: upstream fixed 2/3rd of paths * tar-fix-extract-unlink.patch some of this is overwritten by bsc1202436-1 and some was fixed upstream * add_readme-tests.patch as Makefile.in no longer exists - Removed: * tar-fix-race-condition.patch * tar-avoid-overflow-in-symlinks-tests.patch * bsc1200657.patch * bsc1202436-2.patch * bsc1202436-1.patch OBS-URL: https://build.opensuse.org/request/show/1131478 OBS-URL: https://build.opensuse.org/package/show/Base:System/tar?expand=0&rev=128
217 lines
7.1 KiB
RPMSpec
217 lines
7.1 KiB
RPMSpec
#
|
|
# spec file for package tar
|
|
#
|
|
# Copyright (c) 2023 SUSE LLC
|
|
#
|
|
# 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 https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
# For correct subpackages docs installation into tar doc directory
|
|
%global _docdir_fmt %{name}
|
|
Name: tar
|
|
Version: 1.35
|
|
Release: 0
|
|
Summary: GNU implementation of ((t)ape (ar)chiver)
|
|
License: GPL-3.0-or-later
|
|
Group: Productivity/Archiving/Backup
|
|
URL: https://www.gnu.org/software/tar/
|
|
Source0: https://ftp.gnu.org/gnu/tar/%{name}-%{version}.tar.xz
|
|
Source1: https://ftp.gnu.org/gnu/tar/%{name}-%{version}.tar.xz.sig
|
|
# http://wwwkeys.pgp.net:11371/pks/lookup?op=get&search=0x3602B07F55D0C732
|
|
Source2: %{name}.keyring
|
|
Source3: pax-global-records.tar
|
|
Patch0: %{name}-wildcards.patch
|
|
Patch1: %{name}-backup-spec-fix-paths.patch
|
|
Patch2: paxutils-rtapelib_mtget.patch
|
|
# don't print warning about zero blocks
|
|
# the patch is used in Fedora and Debian
|
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=235820
|
|
Patch3: %{name}-ignore_lone_zero_blocks.patch
|
|
Patch5: add_readme-tests.patch
|
|
Patch6: tar-PIE.patch
|
|
Patch7: tests-skip-time01-on-32bit-time_t.patch
|
|
Patch11: tar-fix-extract-unlink.patch
|
|
# PATCH-FIX-SUSE danilo.spinella@suse.com bsc#1202436
|
|
Patch12: go-testsuite-test-hang.patch
|
|
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1202436
|
|
Patch13: bsc1202436.patch
|
|
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1207753
|
|
# tar has a one-byte out-of-bounds read that results in use of
|
|
# uninitialized memory for a conditional jump
|
|
Patch16: fix-CVE-2022-48303.patch
|
|
Patch17: add_forgotten-tests.patch
|
|
BuildRequires: automake >= 1.15
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libselinux-devel
|
|
Recommends: %{name}-rmt = %{version}
|
|
Recommends: mt
|
|
Recommends: xz
|
|
Recommends: zstd
|
|
Provides: base:/bin/tar
|
|
|
|
%description
|
|
GNU Tar is an archiver program. It is used to create and manipulate files
|
|
that are actually collections of many other files; the program provides
|
|
users with an organized and systematic method of controlling a large amount
|
|
of data. Despite its name, that is an acronym of "tape archiver", GNU Tar
|
|
is able to direct its output to any available devices, files or other programs,
|
|
it may as well access remote devices or files.
|
|
|
|
%package backup-scripts
|
|
Summary: Backup scripts
|
|
Group: Productivity/Archiving/Backup
|
|
Requires: %{name} = %{version}
|
|
BuildArch: noarch
|
|
|
|
%description backup-scripts
|
|
Shell scripts for system backup/restore
|
|
|
|
%package tests
|
|
Summary: Tests for the package
|
|
Group: Development/Tools/Other
|
|
Requires: %{name} = %{version}
|
|
|
|
%description tests
|
|
Upstream testsuite for the package
|
|
|
|
%package rmt
|
|
Summary: Remote tape drive control server by GNU
|
|
Group: Productivity/Archiving/Backup
|
|
Requires(post): update-alternatives
|
|
Requires(postun):update-alternatives
|
|
Provides: rmt
|
|
|
|
%description rmt
|
|
Provides remote access to files and devices for tar, cpio
|
|
and similar backup utilities
|
|
|
|
%package doc
|
|
Summary: Documentation files for GNU tar
|
|
Group: Documentation/Man
|
|
Requires: %{name} = %{version}
|
|
BuildArch: noarch
|
|
|
|
%description doc
|
|
GNU Tar is an archiver program. It is used to create and manipulate files
|
|
that are actually collections of many other files; the program provides
|
|
users with an organized and systematic method of controlling a large amount
|
|
of data. Despite its name, that is an acronym of "tape archiver", GNU Tar
|
|
is able to direct its output to any available devices, files or other programs,
|
|
it may as well access remote devices or files.
|
|
|
|
%lang_package
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
cp %{S:3} tests
|
|
|
|
%build
|
|
%define my_cflags -W -Wall -Wpointer-arith -Wstrict-prototypes -Wformat-security -Wno-unused-parameter -fPIE
|
|
export CFLAGS="%{optflags} %{my_cflags}"
|
|
export RSH=%{_bindir}/ssh
|
|
export DEFAULT_ARCHIVE_FORMAT="POSIX"
|
|
export DEFAULT_RMT_DIR=%{_bindir}
|
|
autoreconf -fi
|
|
%configure \
|
|
gl_cv_func_linkat_follow="yes" \
|
|
--enable-backup-scripts \
|
|
--disable-silent-rules \
|
|
--program-transform-name='s/^rmt$/gnurmt/'
|
|
%make_build LDFLAGS="-pie"
|
|
cd tests
|
|
%make_build genfile
|
|
mkdir bin
|
|
mv genfile bin
|
|
cd -
|
|
|
|
%check
|
|
%make_build check || { cat tests/testsuite.log; exit 1; }
|
|
|
|
%install
|
|
%make_install DESTDIR=%{buildroot}
|
|
mkdir %{buildroot}/bin
|
|
mv %{buildroot}%{_mandir}/man8/gnurmt.8 %{buildroot}%{_mandir}/man1/gnurmt.1
|
|
install -D -m 644 scripts/backup-specs %{buildroot}%{_sysconfdir}/backup/backup-specs
|
|
# For avoiding file conflicts with dump/restore
|
|
mv %{buildroot}%{_sbindir}/restore %{buildroot}%{_sbindir}/restore.sh
|
|
rm -f %{buildroot}%{_infodir}/dir
|
|
install -D -m 644 -t %{buildroot}%{_docdir}/%{name} README* ABOUT-NLS AUTHORS NEWS THANKS \
|
|
ChangeLog TODO
|
|
install -d -m 755 %{buildroot}%{_localstatedir}/lib/tests
|
|
cp -r tests %{buildroot}%{_localstatedir}/lib/tests/tar
|
|
rm %{buildroot}%{_localstatedir}/lib/tests/tar/*.{c,h,o}
|
|
rm %{buildroot}%{_localstatedir}/lib/tests/tar/package.m4
|
|
rm %{buildroot}%{_localstatedir}/lib/tests/tar/{atconfig,atlocal,Makefile}*
|
|
# Alternatives system
|
|
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
|
ln -sf %{_sysconfdir}/alternatives/rmt %{buildroot}%{_bindir}/rmt
|
|
ln -sf %{_sysconfdir}/alternatives/rmt.1%{ext_man} %{buildroot}%{_mandir}/man1/rmt.1%{ext_man}
|
|
%if 0%{?suse_version} < 1550
|
|
mkdir -p %{buildroot}/bin
|
|
ln -s %{_bindir}/%{name} %{buildroot}/bin
|
|
%endif
|
|
%find_lang %{name}
|
|
|
|
%post rmt
|
|
%{_sbindir}/update-alternatives --force \
|
|
--install %{_bindir}/rmt rmt %{_bindir}/gnurmt 10 \
|
|
--slave %{_mandir}/man1/rmt.1%{ext_man} rmt.1%{ext_man} %{_mandir}/man1/gnurmt.1%{ext_man}
|
|
|
|
%postun rmt
|
|
if [ ! -f %{_bindir}/gnurmt ] ; then
|
|
"%{_sbindir}/update-alternatives" --remove rmt %{_bindir}/gnurmt
|
|
fi
|
|
|
|
%files backup-scripts
|
|
%{_sbindir}/backup
|
|
%{_sbindir}/restore.sh
|
|
%{_libexecdir}/backup.sh
|
|
%{_libexecdir}/dump-remind
|
|
%dir %{_sysconfdir}/backup
|
|
%config(noreplace) %{_sysconfdir}/backup/backup-specs
|
|
|
|
%files lang -f %{name}.lang
|
|
|
|
%files tests
|
|
%{_localstatedir}/lib/tests
|
|
%{_docdir}/%{name}/README-tests
|
|
|
|
%files rmt
|
|
%ghost %{_bindir}/rmt
|
|
%{_bindir}/gnurmt
|
|
%ghost %{_mandir}/man1/rmt.1%{ext_man}
|
|
%{_mandir}/man1/gnurmt.1%{?ext_man}
|
|
%ghost %{_sysconfdir}/alternatives/rmt
|
|
%ghost %{_sysconfdir}/alternatives/rmt.1%{ext_man}
|
|
|
|
%files doc
|
|
%dir %{_docdir}/%{name}
|
|
%{_docdir}/%{name}/NEWS
|
|
%{_docdir}/%{name}/README
|
|
%{_docdir}/%{name}/ABOUT-NLS
|
|
%{_docdir}/%{name}/AUTHORS
|
|
%{_docdir}/%{name}/THANKS
|
|
%{_docdir}/%{name}/ChangeLog
|
|
%{_docdir}/%{name}/TODO
|
|
%{_infodir}/%{name}.info*%{?ext_info}
|
|
|
|
%files
|
|
%license COPYING
|
|
%if 0%{?suse_version} < 1550
|
|
/bin/%{name}
|
|
%endif
|
|
%{_bindir}/%{name}
|
|
%{_mandir}/man1/%{name}.1%{?ext_man}
|
|
|
|
%changelog
|