gentoo/sys-fs/progsreiserfs/progsreiserfs-0.3.1_rc8-r1.ebuild
Eli Schwartz d035a27fd1
sys-fs/progsreiserfs: mark as LTO-unsafe on musl
It fails with linker errors due to including a code copy of a manky old
libintl.

Happens because for some inexplicable reason, packages which genuinely
need the full power and flexibility of GNU libintl, can only rely on
dev-libs/libintl on *non* linux operating systems, even though it was
very much intended upstream to be useful and usable on musl systems.

glibc, obviously, works fine.

Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
2024-11-17 23:14:08 -05:00

72 lines
1.6 KiB
Bash

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit flag-o-matic libtool
MY_P=${PN}-${PV/_/-}
DESCRIPTION="Library for accessing and manipulating reiserfs partitions"
HOMEPAGE="http://reiserfs.linux.kiev.ua/"
SRC_URI="http://reiserfs.linux.kiev.ua/snapshots/${MY_P}.tar.gz"
S="${WORKDIR}"/${MY_P}
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm ~arm64 ~hppa ~mips ppc ~ppc64 ~riscv ~sparc x86"
IUSE="debug examples nls static-libs"
DEPEND="
sys-apps/util-linux
nls? (
sys-devel/gettext
virtual/libintl
)
"
PATCHES=(
"${FILESDIR}"/${P}-autotools.patch
"${FILESDIR}"/${PN}-0.3.1_rc8-musl-getopt_internal-fix.patch
"${FILESDIR}"/${PN}-0.3.1_rc8-c99-configure.patch
)
src_prepare() {
default
elibtoolize
}
src_configure() {
filter-lfs-flags
# bundled libintl gets used because dev-libs/libintl isn't an option on musl
# and fails to LTO: undefined reference to `__argz_count'
use elibc_glibc && filter-lto
econf \
$(use_enable static-libs static) \
--disable-Werror \
$(use_enable nls) \
$(use_enable debug)
}
src_install() {
default
if use examples; then
docinto examples
dodoc demos/*.c
fi
find "${ED}" -name '*.la' -delete || die
rm -r "${ED}"/usr/{sbin,share/man} || die
}
pkg_postinst() {
ewarn "progsreiserfs has been proven dangerous in the past, generating bad"
ewarn "partitions and destroying data on resize/cpfs operations."
ewarn "Because of this, we do NOT provide their binaries, but only their"
ewarn "libraries instead, as these are needed for other applications."
}