Subject: pkg/18298: pkgsrc rrdtool perl code doesn't work
To: None <gnats-bugs@gnats.netbsd.org>
From: None <hag@linnaean.org>
List: netbsd-bugs
Date: 09/14/2002 21:07:51
>Number:         18298
>Category:       pkg
>Synopsis:       pkgsrc rrdtool perl code doesn't work
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Sep 14 18:08:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Daniel Hagerty
>Release:        NetBSD 1.5.3_RC2
>Organization:
	
>Environment:
	
	
System: NetBSD perdition.linnaean.org 1.5.3_RC2 NetBSD 1.5.3_RC2 (PERDITION) #20: Thu Jun 20 15:47:45 EDT 2002 root@beastie-box:/usr/src/sys/arch/i386/compile/PERDITION i386
Architecture: i386
Machine: i386
>Description:
	At least on my systems, building rrdtool from pkgsrc generates
perl code that doesn't work.  It appears to be an rpath problem.  It's
not at all clear to me where in pkgsrc is rep

>How-To-Repeat:
$ cd /usr/pkgsrc/databases/rrdtool && make -k install
[...]
$ perl -e 'use RRDs'
Can't load '/usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/RRDs/RRDs.so' for module RRDs: Shared object "libpng.so.2" not found at /usr/pkg/lib/perl5/5.6.1/i386-netbsd/DynaLoader.pm line 206.
$ ldd /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/RRDs/RRDs.so
/usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/RRDs/RRDs.so:
	 -lperl => /usr/pkg/lib/perl5/5.6.1/i386-netbsd/CORE/libperl.so
	 -lcgi.0 => /usr/pkg/lib/libcgi.so.0
	 -lm.0 => /usr/lib/libm387.so.0
	 -lm.0 => /usr/lib/libm.so.0
	 -lz.0 => /usr/lib/libz.so.0
	 -lpng.3 => /usr/pkg/lib/libpng.so.3
	 -ljpeg.62 => /usr/pkg/lib/libjpeg.so.62
	 -lintl.1 => /usr/pkg/lib/libintl.so.1
	 -lttf.4 => /usr/pkg/lib/libttf.so.4
	 -lgd.1 => /usr/pkg/lib/libgd.so.1
	 -lXpm.4 => not found
	 -lX11.6 => not found
$ objdump --all-headers  /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/RRDs/RRDs.so|grep RPATH
  RPATH       /usr/pkg/lib:/usr/pkg/lib/perl5/5.6.1/i386-netbsd/CORE
>Fix:
    Looks like "our" fault; patch-ak twiddles Makefile.PL but
doesn't deal with this detail.

    Two parts, a new patch-ak (diffs of diff being so hard to read)
and a diff to databases/rrdtool/Makefile

diff -ur pkgsrc/databases/rrdtool/Makefile pkgsrc-obj/databases/rrdtool/Makefile
--- pkgsrc/databases/rrdtool/Makefile   Mon Aug 12 06:06:54 2002
+++ pkgsrc-obj/databases/rrdtool/Makefile       Sat Sep 14 21:00:13 2002
@@ -40,8 +40,8 @@
        cd ${WRKSRC};                                                   \
         files="perl-shared/Makefile.PL";                               \
         for file in $${files}; do                                      \
-               ${SED}  -e "s|@X11BASE@|${X11BASE}|"                    \
-                       -e "s|@LOCALBASE@|${LOCALBASE}|"                \
+               ${SED}  -e "s|@X11BASE@|${X11BASE}|g"                   \
+                       -e "s|@LOCALBASE@|${LOCALBASE}|g"               \
                        $${file} > $${file}.new;                        \
                ${MV} -f $${file}.new $${file};                         \
        done

$NetBSD: patch-ak,v 1.7 2002/08/10 13:59:35 skrll Exp $

--- perl-shared/Makefile.PL.orig        Thu Jul 13 22:22:17 2000
+++ perl-shared/Makefile.PL
@@ -4,16 +4,18 @@ use Config;
 # the contents of the Makefile that is written.
 
 # Specify the location of the archive containing PIC compiled object files.
+# This is a cheat.
 my $librrd = "-L../src/.libs/ -lrrd_private"  ;
 
 WriteMakefile(
     'NAME'         => 'RRDs',
     'VERSION_FROM' => 'RRDs.pm', # finds $VERSION
     'DEFINE'      => "-DPERLPATCHLEVEL=$Config{PATCHLEVEL}",
-    'INC'          => '-I../src -I../gd1.3',
+    'INC'          => '-I../src -I${PREFIX}/include',
+    'LIBS'         => "-L@X11BASE@/lib -Wl,-R@X11BASE@/lib -L@LOCALBASE@/lib -lcgi -lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11 -lintl",
     # where to look for the necessary libraries 
     # Perl will figure out which one is valid
-    'depend'      => {'RRDs.c' => "../src/.libs/librrd_private.a"},
-    'dynamic_lib'  => {'OTHERLDFLAGS' => "$librrd -lm"},
+    'depend'      => {'RRDs.c' => "../src/librrd_private.la"},
+    'dynamic_lib'  => {'OTHERLDFLAGS' => "$librrd"},
     'realclean'    => {FILES => 't/demo?.rrd t/demo?.gif' }
 );
>Release-Note:
>Audit-Trail:
>Unformatted: