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.
138 lines
4.3 KiB
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
|
|
}
|