blob: 871ccaff310329a7de229bda62fc979bd7e9e66e (
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
|
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-mathematics/pari/pari-2.5.4.ebuild,v 1.2 2014/03/06 17:26:35 jer Exp $
EAPI=5
inherit eutils flag-o-matic toolchain-funcs multilib
DESCRIPTION="Computer-aided number theory C library and tools"
HOMEPAGE="http://pari.math.u-bordeaux.fr/"
SRC_URI="http://pari.math.u-bordeaux.fr/pub/${PN}/unix/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-fbsd ~x86-linux ~x86-macos ~x86-solaris"
IUSE="data doc fltk gmp qt4 X"
RDEPEND="
sys-libs/readline
data? ( sci-mathematics/pari-data )
doc? ( X? ( x11-misc/xdg-utils ) )
fltk? ( x11-libs/fltk:1 )
gmp? ( dev-libs/gmp )
qt4? ( dev-qt/qtgui:4 )
X? ( x11-libs/libX11 )"
DEPEND="${RDEPEND}
doc? ( virtual/latex-base )"
get_compile_dir() {
pushd "${S}/config" > /dev/null
local fastread=yes
source ./get_archos
popd > /dev/null
echo "O${osname}-${arch}"
}
src_prepare() {
epatch "${FILESDIR}"/${PN}-2.3.2-strip.patch
epatch "${FILESDIR}"/${PN}-2.3.2-ppc-powerpc-arch-fix.patch
# fix parallel make
epatch "${FILESDIR}"/${PN}-2.5.0-doc-make.patch
# sage error handling patch
epatch "${FILESDIR}"/${PN}-2.5.0-mp.c.patch
# OS X: add -install_name to the linker option
epatch "${FILESDIR}"/${PN}-2.5.0-macos.patch
# fix automagic
epatch "${FILESDIR}"/${PN}-2.5.1-no-automagic.patch
# sage-on-gentoo trac 13902: Slowdown for PARI integer determinant
epatch "${FILESDIR}"/${PN}-2.5.4-slow_determinant.patch
# sage-on-gentoo trac 13054: polred bug / pari bug 1395
epatch "${FILESDIR}"/${PN}-2.5.4-polred.patch
# disable default building of docs during install
sed -i \
-e "s:install-doc install-examples:install-examples:" \
config/Makefile.SH || die "Failed to fix makefile"
# propagate ldflags
sed -i \
-e 's/$shared $extra/$shared $extra \\$(LDFLAGS)/' \
config/get_dlld || die "failed to fix LDFLAGS"
# 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"
sed -i "s:/\(usr\|lib64\):${EPREFIX}/\1:g" \
config/get_{Qt,X11,include_path,libpth} \
|| die "Failed to fix get_X11"
# usersch3.tex is generated
rm doc/usersch3.tex || die "failed to remove generated file"
}
src_configure() {
tc-export CC
export CPLUSPLUS=$(tc-getCXX)
# need to force optimization here, as it breaks without
if is-flag -O0; then
replace-flags -O0 -O2
elif ! is-flag -O?; then
append-flags -O2
fi
# sysdatadir installs a pari.cfg stuff which is informative only
./Configure \
--prefix="${EPREFIX}"/usr \
--datadir="${EPREFIX}"/usr/share/${PN} \
--libdir="${EPREFIX}"/usr/$(get_libdir) \
--sysdatadir="${EPREFIX}"/usr/share/doc/${PF} \
--mandir="${EPREFIX}"/usr/share/man/man1 \
--with-readline="${EPREFIX}"/usr \
--with-ncurses-lib="${EPREFIX}"/usr/$(get_libdir) \
$(use_with fltk) \
$(use_with gmp) \
$(use_with qt4 qt) \
|| die "./Configure failed"
}
src_compile() {
mycxxmake=LD\=$(tc-getCXX)
local installdir=$(get_compile_dir)
cd "${installdir}" || die "failed to change directory"
# upstream set -fno-strict-aliasing.
# aliasing is a known issue on amd64, work on x86 by sheer luck
emake ${mymake} \
CFLAGS="${CFLAGS} -fno-strict-aliasing -DGCC_INLINE -fPIC" lib-dyn
emake ${mymake} ${mycxxmake} \
CFLAGS="${CFLAGS} -DGCC_INLINE" gp ../gp
if use doc; then
cd "${S}" || die "failed to change directory"
# To prevent sandbox violations by metafont
VARTEXFONTS="${T}"/fonts emake docpdf
fi
}
src_test() {
emake dobench
}
src_install() {
emake ${mymake} ${mycxxmake} DESTDIR="${D}" install
dodoc MACHINES COMPAT
if use doc; then
# install gphelp and the pdf documentations manually.
# the install-doc target is overkill.
dodoc doc/*.pdf
dobin doc/gphelp
insinto /usr/share/doc/${PF}
# gphelp looks for some of the tex sources...
doins doc/*.tex doc/translations
# Install the examples - for real.
local installdir=$(get_compile_dir)
cd "${installdir}" || die "failed to change directory"
emake EXDIR="${ED}/usr/share/doc/${PF}/examples" install-examples
fi
}
|