You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sci-mathematics/pari/pari-2.15.5.ebuild

138 lines
4.3 KiB

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic toolchain-funcs
DESCRIPTION="Computer-aided number theory C library and tools"
HOMEPAGE="https://pari.math.u-bordeaux.fr/"
SRC_URI="https://pari.math.u-bordeaux.fr/pub/${PN}/unix/${P}.tar.gz"
# Their LICENSE file says "or (at your option) any later version"
LICENSE="GPL-2+"
# The subslot is the value of $soname_num obtained from
# upstream's config/version script.
SLOT="0/8"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="data doc examples fltk gmp test threads X"
REQUIRED_USE="fltk? ( !X )" # mutually exclusive plot implementations
RESTRICT="!test? ( test )"
BDEPEND="
virtual/pkgconfig
doc? ( virtual/latex-base )
"
DEPEND="
sys-libs/readline:0=
data? ( sci-mathematics/pari-data )
doc? ( X? ( x11-misc/xdg-utils ) )
fltk? ( x11-libs/fltk:1= )
gmp? ( dev-libs/gmp:0= )
X? ( x11-libs/libX11:0= )"
RDEPEND="${DEPEND}"
src_prepare() {
default
# move doc dir to a gentoo doc dir and replace acroread by xdg-open
sed -i \
-e "s:\$d = \$0:\$d = '${EPREFIX}/usr/share/doc/${PF}':" \
-e 's:"acroread":"xdg-open":' \
doc/gphelp.in || die "Failed to fix doc dir"
# These tests fail when LaTeX is not installed (which we don't
# require without USE=doc), most likely due to output formatting
# issues but I haven't deleted my LaTeX installation to check.
# There's no real upstream support for enabling/disabling the LaTeX
# docs, so this is probably the correctest way to skip these tests.
if ! use doc; then
rm src/test/{in,32}/help || die
fi
}
src_configure() {
tc-export CC CXX PKG_CONFIG
# Workaraound to "asm operand has impossible constraints" as
# suggested in bug #499996.
use x86 && append-cflags $(test-flags-CC -fno-stack-check)
# sysdatadir installs a pari.cfg stuff which is informative only.
# It is supposed to be for "architecture-dependent" data. It needs
# to be easily discoverable for downstream packages such as gp2c.
# We set LD="" and DLLD="$CC" so that the "shared library linker"
# always gets set to the value of the compiler used. Pari's build
# system does not cope very well with a naked linker, it is
# expecting a compiler driver. See bugs 722090 and 871117.
# DLLDFLAGS, on the other hand, is used exactly like LDFLAGS would
# be in a less-weird build system.
#
# There's a lot of automagic involved in the graphics detection. We
# first pass --graphic=none, which disables some of it. We then pass
# --graphic=fltk (or --graphic=X11) only if USE=fltk (or USE=X) is
# set. This is a stronger hint to the build system than --with-fltk
# would be, and importantly does not rely on the corresponding but
# nonexistent(!) option option for X11.
LD="" DLLD="$(tc-getCC)" DLLDFLAGS="${LDFLAGS}" ./Configure \
--prefix="${EPREFIX}"/usr \
--datadir="${EPREFIX}/usr/share/${PN}" \
--libdir="${EPREFIX}/usr/$(get_libdir)" \
--sysdatadir="${EPREFIX}"/usr/share/pari \
--mandir="${EPREFIX}"/usr/share/man/man1 \
--with-readline="${EPREFIX}"/usr \
--with-readline-lib="${EPREFIX}/usr/$(get_libdir)" \
--with-ncurses-lib="${EPREFIX}/usr/$(get_libdir)" \
--graphic=none \
$(usex X --graphic=X11 "" "" "") \
$(usex fltk --graphic=fltk "" "" "") \
$(use_with gmp) \
$(usex threads "--mt=pthread" "" "" "") \
|| die "./Configure failed"
}
src_compile() {
emake gp
if use doc; then
# To prevent sandbox violations by metafont
VARTEXFONTS="${T}/fonts" emake docpdf
fi
}
src_test() {
# Welcome to the jungle, where the tests fail if you make your
# terminal bigger.
emake COLUMNS=80 test-all
}
src_install() {
DOCS=( AUTHORS CHANGES* COMPAT NEW README* )
# Install examples to a junk location by default because "make
# install-nodata" includes the examples with it. Only if the user
# has USE=examples set do we provide the correct directory.
local exdir="${T}"
if use examples; then
docompress -x "/usr/share/doc/${PF}/examples"
exdir="${ED}/usr/share/doc/${PF}/examples"
fi
# Use "true" in place of "strip" to sabotage the unconditional
# binary stripping.
emake DESTDIR="${D}" \
EXDIR="${exdir}" \
STRIP="true" \
install-nodata install-data
einstalldocs
if use doc; then
docompress -x "/usr/share/doc/${PF}"
emake \
DESTDIR="${D}" \
DOCDIR="${ED}/usr/share/doc/${PF}" \
install-docpdf install-doctex
fi
}