| Karim.Belabas on Fri, 15 Jun 2001 14:22:31 +0200 (MET DST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Can't build Math::PARI |
On Thu, 7 Jun 2001, Katherine Sauceda wrote:
> Ultimately, I wan to build things like Net:SSH:perl for my perl programmers
> to use. So I need Math::PARI.
>
> I compiled and installed pari-2.1.1 - no errors. I put Math::PARI in the
> build directory for pari-2.1.1 and make fails (using gcc, no Sun compilers
> installed):
[...]
> make: *** No rule to make target `libPARI/Makefile', needed by
> `libPARI/libPARI.a'. Stop.
>
> I get the same error on older versions of the module. Can't seem to find any
> indication of this problem in the news groups. I've looked through the
> patches in Math::PARI and I do not see anything that would address this
> problem.
>
> Can someone give me some advice, please?
Hi,
[ I have no previous experience with Math:PARI, there _may_ be a simple
solution to your problems, but I couldn't find one ]
I checked with perl-5.005_03 on Solaris, and indeed it was quite tough to
get Math::PARI to compile:
1) Math::PARI module expects a directory name like pari-2.1.1 (to get a
version number and apply the relevant patch) but in your situation, it gets
something like '..' [and if would get something like 'pari' from the CVS
server, which would fail just the same].
2) On solaris, it fails if SUNWspro is not installed
3) Header files get tangled up (/usr/include/sys/dl.h attempts to declare
ladd which pari.h already defined with a different meaning)
The three patches below address all that, and then things do compile.
Unfortunately, Math::PARI attempts to support old and instable version [e.g
in the range 1.39 --> 2.0.20], and replicates a lot of 'Configure' logic all
by itself, quite incorrectly at times:
a) less than optimal compiler optimization flags, and an obsolete compiler also
on my machine.
b) The shared library Pari.so eventually produced is incorrect:
ld.so.1: /home/belabas/bin/solaris/perl: elf error:
blib/arch/auto/Math/Pari/Pari.so: bad ELF type: ET_NONE at
/usr/local/lib/perl5/5.00503/sun4-solaris/DynaLoader.pm line 169.
I didn't attempt to correct that since I don't intend to replicate the effort
put into the Configure machinery.
Hope this helps somewhat,
Karim.
*** ./Makefile.PL.orig Fri Jun 15 13:21:56 2001
--- ./Makefile.PL Fri Jun 15 13:43:56 2001
***************
*** 18,23 ****
--- 18,24 ----
sub format_pari {
my $dir = shift;
+ $dir = get_pari_version($dir) if ($dir !~ /[0-9]/);
$dir =~ s/(\d+)\.(\d+).(\d+)/sprintf('%03d%03d%03d',$1,$2,$3)/e;
$dir;
}
***************
*** 41,46 ****
--- 42,59 ----
@gooddirs = sort {format_pari($a) cmp format_pari($b)} @gooddirs;
$paridir = $gooddirs[-1] if @gooddirs;
}
+ }
+
+ sub get_pari_version {
+ my $v = "", $dir = shift;
+ open(IN, "$dir/config/version");
+ while (<IN>)
+ {
+ if (/=\'*([0-9]*)\'*/) { $v .= "$1."; }
+ }
+ close(IN);
+ $v =~ s/\.*$//;
+ return "pari-$v";
}
$paridir = get_pari() if !$paridir;
*** libPARI/Makefile.PL.orig Fri Jun 15 13:44:23 2001
--- libPARI/Makefile.PL Fri Jun 15 13:47:03 2001
***************
*** 289,298 ****
--- 289,300 ----
if ($Config{osname} eq 'solaris') {
+ if (@sc_dirs) {
@sc_dirs = </opt/SUNWspro/SC*>;
die "Cannot find SUNWspro dirs, needed for -lsunmath" unless @sc_dirs;
$libs .= " -L$sc_dirs[-1]/lib -lsunmath";
$sol_under = '_nounder'; # Need to filter
+ }
} elsif ($Config{osname} eq 'sunos') {
# $machine = 'sparcv8_super' if $Config{myuname} =~ /\bsun4m\b/o;
$mycflags .= ' -DULONG_NOT_DEFINED';
*** ./Pari.xs.orig Fri Jun 15 14:04:45 2001
--- ./Pari.xs Fri Jun 15 14:05:07 2001
***************
*** 1,7 ****
- #include <pari.h>
- #include <language/anal.h>
- #include <gp/gp.h> /* init_opts */
-
#define PERL_POLLUTE /* We use older varnames */
#ifdef __cplusplus
--- 1,3 ----
***************
*** 15,20 ****
--- 11,20 ----
#ifdef __cplusplus
}
#endif
+
+ #include <pari.h>
+ #include <language/anal.h>
+ #include <gp/gp.h> /* init_opts */
/* This should not be defined at this moment, but in 5.001n is. */
#ifdef coeff
--
Karim Belabas email: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud Tel: (00 33) 1 69 15 57 48
F-91405 Orsay (France) Fax: (00 33) 1 69 15 60 19
--
PARI/GP Home Page: http://www.parigp-home.de/