summaryrefslogtreecommitdiff
path: root/app-arch/tar/tar-1.35-r1.ebuild
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
}