Files
gentoo/dev-libs/libtecla/libtecla-1.6.3-r1.ebuild
Eli Schwartz d258a6ab04 dev-libs/libtecla: mark as LTO-unsafe
Actually, it doesn't use the compiler to link its shared libraries, it
uses $LD directly. Totally broken. The resulting shared library is LTO
bytecode linked without a bytecode handler, i.e. it's not really a real
library. Everything then explodes.

Closes: https://bugs.gentoo.org/772014
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
2024-03-12 03:30:49 +00:00

56 lines
1.4 KiB
Bash

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools flag-o-matic
DESCRIPTION="Tecla command-line editing library"
HOMEPAGE="https://www.astro.caltech.edu/~mcs/tecla/"
SRC_URI="https://www.astro.caltech.edu/~mcs/tecla/${P}.tar.gz"
S="${WORKDIR}/libtecla"
LICENSE="icu"
SLOT="0"
KEYWORDS="amd64 ~arm ppc ~riscv x86 ~amd64-linux ~x86-linux"
DEPEND="sys-libs/ncurses:="
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/${PN}-1.6.1-install.patch
"${FILESDIR}"/${PN}-1.6.1-no-strip.patch
"${FILESDIR}"/${PN}-1.6.3-ldflags.patch
"${FILESDIR}"/${PN}-1.6.3-prll-build.patch
"${FILESDIR}"/${PN}-1.6.1-prll-install.patch
"${FILESDIR}"/${PN}-1.6.3-static-libs.patch
"${FILESDIR}"/${PN}-1.6.3-secure-runpath.patch
"${FILESDIR}"/${PN}-1.6.3-configure-clang16.patch
)
src_prepare() {
default
eautoreconf
}
src_configure() {
# ld: <artificial>:(.text.startup+0x6c): undefined reference to `libtecla_version'
#
# For some mysterious reason this is running $LD directly to link the
# shared library rather than use the compiler as the linker driver. As a
# result -flto is effectively a no-op *at link time* and the shared library
# contains... nothing. Because it didn't process the bytecode. Of course,
# nothing can then link to it.
#
# https://bugs.gentoo.org/772014
filter-lto
default
}
src_compile() {
emake \
OPT="" \
LDFLAGS="${LDFLAGS}" \
LFLAGS="$(raw-ldflags)"
}