Hi Tobi,
Two issues in 1.0.47 break rrdtool on Perl's older than 5.6.x.
I still find Orca users with 5.005 perls, so I have an interest
in getting this fixed.
The addition of the CCFLAGS line in perl-shared/Makefile.PL.in
in 1.0.47 causes RRDs.so to not compile on older Perls because
by default CCFLAGS is set to '-Dbool=char -DHAS_BOOL' and the
new CCFLAGS setting overrides this:
diff -ru rrdtool-1.0.46/perl-shared/Makefile.PL.in
rrdtool-1.0.47/perl-shared/Makefile.PL.in
--- rrdtool-1.0.46/perl-shared/Makefile.PL.in 2003-08-12 14:50:06.000000000
-0700
+++ rrdtool-1.0.47/perl-shared/Makefile.PL.in 2004-04-03 06:33:13.000000000
-0800
@@ -10,10 +10,11 @@
'NAME' => 'RRDs',
'VERSION_FROM' => '@top_srcdir@/perl-shared/RRDs.pm', # finds $VERSION
'DEFINE' => "-DPERLPATCHLEVEL=$Config{PATCHLEVEL}",
- 'INC' => '[EMAIL PROTECTED]@/src [EMAIL PROTECTED]@/gd1.3',
+ 'INC' => '[EMAIL PROTECTED]@ [EMAIL PROTECTED]@/src [EMAIL
PROTECTED]@/gd1.3',
+ 'CCFLAGS' => '-DHAVE_CONFIG_H',
# where to look for the necessary libraries
# Perl will figure out which one is valid
- 'depend' => {'RRDs.c' => "../src/.libs/librrd_private.a"},
+ 'depend' => {'RRDs.c' => "@top_srcdir@/src/.libs/librrd_private.a"},
'dynamic_lib' => {'OTHERLDFLAGS' => "$librrd -lm"},
'realclean' => {FILES => 't/demo?.rrd t/demo?.gif' }
);
make[5]: Entering directory `/tmp/rrdtool-1.0.47/perl-shared'
cp ntmake.pl blib/lib/ntmake.pl
cp RRDs.pm blib/lib/RRDs.pm
/opt/i386-linux/installed/perl-5.005_03/bin/perl /opt/i386-linux/installed/perl-
5.005_03/lib/5.00503/ExtUtils/xsubpp -typemap /opt/i386-linux/installed/perl-5.
005_03/lib/5.00503/ExtUtils/typemap RRDs.xs > RRDs.xsc && mv RRDs.xsc RRDs.c
/opt/i386-linux/gcc/bin/gcc -c -I.. -I../src -I../gd1.3 -DHAVE_CONFIG_H -O3 -
DVERSION=\"1.000471\" -DXS_VERSION=\"1.000471\" -fpic "-I/opt/i386-linux/install
ed/perl-5.005_03/lib/5.00503/i686-linux/CORE" -DPERLPATCHLEVEL=5 RRDs.c
In file included from /opt/i386-linux/installed/perl-5.005_03/lib/5.00503/i686-l
inux/CORE/perl.h:1276,
from RRDs.xs:6:
/opt/i386-linux/installed/perl-5.005_03/lib/5.00503/i686-linux/CORE/cop.h:217: e
rror: parse error before "bool"
Here's a patch to fix the problem:
% diff -ru ../rrdtool-1.0.47-orig .
diff -ru ../rrdtool-1.0.47-orig/perl-shared/Makefile.PL.in
./perl-shared/Makefile.PL.in
--- ../rrdtool-1.0.47-orig/perl-shared/Makefile.PL.in 2004-04-03
06:33:13.000000000 -0800
+++ ./perl-shared/Makefile.PL.in 2004-04-05 11:28:15.000000000 -0700
@@ -11,7 +11,7 @@
'VERSION_FROM' => '@top_srcdir@/perl-shared/RRDs.pm', # finds $VERSION
'DEFINE' => "-DPERLPATCHLEVEL=$Config{PATCHLEVEL}",
'INC' => '[EMAIL PROTECTED]@ [EMAIL PROTECTED]@/src [EMAIL
PROTECTED]@/gd1.3',
- 'CCFLAGS' => '-DHAVE_CONFIG_H',
+ 'CCFLAGS' => "$Config{ccflags} -DHAVE_CONFIG_H",
# where to look for the necessary libraries
# Perl will figure out which one is valid
'depend' => {'RRDs.c' => "@top_srcdir@/src/.libs/librrd_private.a"},
The second issue is that the new rrd_times() function in RRDs.xs uses
newSVuv:
+ PUSHs(sv_2mortal(newSVuv(start_tmp)));
+ PUSHs(sv_2mortal(newSVuv(end_tmp)));
which gets an unresolved link error when make test is run. Greping
through various perl versions, it appears that newSVuv was only added
in Perl 5.6.x and later.
Is there anything this can be safely changed to to work with older
Perls?
Best,
Blair
--
Blair Zajac <[EMAIL PROTECTED]>
Plots of your system's performance - http://www.orcaware.com/orca/
--
Unsubscribe mailto:[EMAIL PROTECTED]
Help mailto:[EMAIL PROTECTED]
Archive http://www.ee.ethz.ch/~slist/rrd-developers
WebAdmin http://www.ee.ethz.ch/~slist/lsg2.cgi