blob: 0d2ed6c018cdb493c3a7c9c2a8bcf1267794ac47 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/tar.asc
inherit branding check-reqs multiprocessing toolchain-funcs verify-sig
DESCRIPTION="Use this to make tarballs :)"
HOMEPAGE="https://www.gnu.org/software/tar/"
SRC_URI="
mirror://gnu/tar/${P}.tar.xz
https://alpha.gnu.org/gnu/tar/${P}.tar.xz
verify-sig? (
mirror://gnu/tar/${P}.tar.xz.sig
https://alpha.gnu.org/gnu/tar/${P}.tar.xz.sig
)
"
LICENSE="GPL-3+"
SLOT="0"
if [[ -z "$(ver_cut 3)" || "$(ver_cut 3)" -lt 90 ]] ; then
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris"
fi
IUSE="acl minimal nls selinux test xattr"
RESTRICT="!test? ( test )"
RDEPEND="
acl? ( virtual/acl )
selinux? ( sys-libs/libselinux )
"
DEPEND="
${RDEPEND}
xattr? ( elibc_glibc? ( sys-apps/attr ) )
"
BDEPEND="
nls? ( sys-devel/gettext )
verify-sig? ( sec-keys/openpgp-keys-tar )
"
PDEPEND="
app-alternatives/tar
"
PATCHES=(
"${FILESDIR}"/${PN}-1.35-acl-2.4.0.patch
)
check_space() {
if use test; then
# https://bugs.gentoo.org/978323
local CHECKREQS_DISK_BUILD=11G
check-reqs_pkg_setup
fi
}
pkg_pretend() {
check_space
}
pkg_setup() {
check_space
}
src_configure() {
# -fanalyzer doesn't make sense for us in ebuilds, as it's for static analysis
export gl_cv_warn_c__fanalyzer=no
local myeconfargs=(
--bindir="${EPREFIX}"/bin
# Avoid -Werror
--disable-gcc-warnings
--enable-backup-scripts
--libexecdir="${EPREFIX}"/usr/sbin
$(use_with acl posix-acls)
$(use_enable nls)
$(use_with selinux)
$(use_with xattr xattrs)
# autoconf looks for gtar before tar (in configure scripts), hence
# in Prefix it is important that it is there, otherwise, a gtar from
# the host system (FreeBSD, Solaris, Darwin) will be found instead
# of the Prefix provided (GNU) tar
--program-prefix=g
)
# https://savannah.gnu.org/support/?111394
# This can be removed when we patch dev-build/autoconf, though
# packages w/o eautoreconf will still need it.
[[ ${enable_year2038} == "no" ]] && myeconfargs+=( --disable-year2038 )
# Drop CONFIG_SHELL hack after 1.35: https://git.savannah.gnu.org/cgit/tar.git/commit/?id=7687bf4acc4dc4554538389383d7fb4c3e6521cd
CONFIG_SHELL="${BROOT}"/bin/bash FORCE_UNSAFE_CONFIGURE=1 econf "${myeconfargs[@]}"
}
src_test() {
# Drop after 1.35: https://git.savannah.gnu.org/cgit/tar.git/commit/?id=18f90676e4695ffcf13413e9fbb24cc0ae2ae9d5
local -x XZ_OPT= XZ_DEFAULTS=
local testargs=(
--jobs=$(get_makeopts_jobs)
)
# 155: time: tricky time stamps FAILED (time01.at:23)
! tc-has-64bit-time_t && testargs+=( -k '!time01' )
emake check TESTSUITEFLAGS="${testargs[*]}"
}
src_install() {
default
# A nasty yet required piece of baggage
exeinto /etc
doexe "${FILESDIR}"/rmt
mv "${ED}"/usr/sbin/{gbackup,backup-tar} || die
mv "${ED}"/usr/sbin/{grestore,restore-tar} || die
mv "${ED}"/usr/sbin/{g,}backup.sh || die
mv "${ED}"/usr/sbin/{g,}dump-remind || die
if use minimal ; then
find "${ED}"/etc "${ED}"/*bin/ "${ED}"/usr/*bin/ \
-type f -a '!' -name gtar \
-delete || die
fi
if ! use minimal; then
dosym grmt /usr/sbin/rmt
fi
dosym grmt.8 /usr/share/man/man8/rmt.8
}
pkg_postinst() {
# Ensure to preserve the symlink before app-alternatives/tar
# is installed
if [[ ! -h ${EROOT}/bin/tar ]]; then
if [[ -e ${EROOT}/usr/bin/tar ]] ; then
# bug #904887
ewarn "${EROOT}/usr/bin/tar exists but is not a symlink."
ewarn "This is expected during Prefix bootstrap and unusual otherwise."
ewarn "Moving away unexpected ${EROOT}/usr/bin/tar to .bak."
mv "${EROOT}/usr/bin/tar" "${EROOT}/usr/bin/tar.bak" || die
fi
ln -s gtar "${EROOT}/bin/tar" || die
fi
}
|