Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 13520 - rrdtool fails with new perl
Summary: rrdtool fails with new perl
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High major (vote)
Assignee: Michael Cummings (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-01-08 15:36 UTC by Dan Noe
Modified: 2003-11-24 23:47 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
/var/db/pkg/net-analyzer/rrdtool-1.0.39/CONTENTS (CONTENTS,12.34 KB, text/plain)
2003-01-09 14:32 UTC, Dan Noe
Details
thread_files (thread_files,9.81 KB, text/plain)
2003-01-10 11:54 UTC, Dan Noe
Details
thread_list (thread_list,15.02 KB, text/plain)
2003-01-10 12:00 UTC, Dan Noe
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dan Noe 2003-01-08 15:36:05 UTC
After recent emerge --update world, perl scripts using RRDs fail:

RRDs object version 1.000391 does not match bootstrap parameter 1.000351 
at /usr/lib/perl5/5.8.0/i686-linux/DynaLoader.pm line 249.
Compilation failed in require at /usr/local/bin/logger_update.pl line 3.
BEGIN failed--compilation aborted at /usr/local/bin/logger_update.pl line 3.

Correct perl update proceedure has been followed, and I ran the script as 
well, to no help.
Comment 1 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 11:27:10 UTC
Dan, 

   rrdtool compiles and installs fine over here. A few questions. Did you run 
the recommened libperl_rebuilder after upgrading perl as it states in the einfo 
at the end of the perl install? This should have caught rrdtool and reinstalled 
it (which appears to be your problem). What is the third line in your script, 
logger_update, and what provided that? Can you paste the top portion of that 
script in here, especially any require/use fields?
Comment 2 Dan Noe 2003-01-09 11:49:34 UTC
Yes, I ran the perl rebuilder afterwards as stated.  However, a cursory 
examination of emerge.log showed that rrdtool was not recompiled.. I could be 
wrong, however.

I unmerged and remerged rrdtool as well, with no change in symptom.  The 
script is something I wrote to add lm_sensors data into a RRD using cron.

top three lines:
#!/usr/bin/perl -w
use strict;
use RRDs;

Those are the only use/require statements.  Any other ideas?
Comment 3 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 12:17:51 UTC
Tons of ideas :)

Patience is the only thing we may run out of. 

First shot - does this work on the command line:
perl -e "use RRDs;" - if it works, you should get, well, nothing back. If it 
doesn't work, then the problem is isolated to your RRDs install. If that is the 
case, we should check to see when the deps for RRDs were installed.

Which version of libgd are you using?

I don't want to infringe on your script, but if the perl -e line comes back ok, 
may need to ask if I can take a look at your script. I can send you my gpg key 
if you would rather encrypt it (just being cautious, don't want to seem like 
I'm "stealing" your source). Let me know how you want to proceed, plus the info 
above.

Thanks!

Comment 4 Dan Noe 2003-01-09 12:25:32 UTC
dpn@juniper:~$ perl -e "use RRDs;"
RRDs object version 1.000391 does not match bootstrap parameter 1.000351 
at /usr/lib/perl5/5.8.0/i686-linux/DynaLoader.pm line 249.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

I should have thought to try that before, however, I hadn't considered the 
possibility of a problem in the script.

Current version of libgd installed is: media-libs/libgd-1.8.3-r5

If you want to see the script, you're welcome to take a look.  However, from 
the earlier pasted response to perl -e, I don't think it is the problem.
Comment 5 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 13:16:45 UTC
Hmmm, looks like I'm going to have to find someone more knowledge about RRDs. 
Namely, I don't know more than it compiles, installs some perl modules, etc., 
and that over here those appear to be fine (perl -e does as expected). 

Also - sorry about the rebuiler question, I missed the part in your original 
post where you said "ran the script".

A question I should have asked to begin with, though the @INC statement would 
indicate not - did you compile perl with threads? If so, there was a tweak to 
the ebuild yesterday evening EST time that corrected a bug for -threaded 
installs.
I will keep poking at it. In the meantime, can you post the contents 
of /var/db/pkg/net-analyzer/rrdtool-1.0.39/CONTENTS? That will tell us exactly 
where everything was installed to and help eliminate a few other items real 
fast. Thanks,

Mike
Comment 6 Dan Noe 2003-01-09 14:32:47 UTC
Created attachment 7146 [details]
/var/db/pkg/net-analyzer/rrdtool-1.0.39/CONTENTS
Comment 7 Dan Noe 2003-01-09 14:33:08 UTC
dpn@juniper:~$ perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  Platform:
    osname=linux, osvers=2.4.19-gentoo-r10, archname=i686-linux
    uname='linux juniper.nlocal.net 2.4.19-gentoo-r10 #1 wed jan 1 20:47:34 
est 2003 i686 amd athlon(tm) xp 2000+ authenticamd gnulinux '
    config_args='-des -Darchname=i686-linux -Dcc=gcc -Dprefix=/usr -
Dvendorprefix=/usr -Dsiteprefixx=/usr -Dlocincpth=  -Doptimize=-mcpu=athlon-
xp -O3 -pipe -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Dman3ext=3pm -
Dcf_by=Gentoo -Ud_csh -Di_gdbm -Di_db -Di_ndbm'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef 
usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL5 -fno-strict-aliasing -D_LARGEFILE_SOURCE -
D_FILE_OFFSET_BITS=64',
    optimize='-mcpu=athlon-xp -O3 -pipe',
    cppflags='-DPERL5 -DPERL5 -fno-strict-aliasing'
    ccversion='', gccversion='3.2.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lndbm -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil
    perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil
    libc=/lib/libc-2.3.1.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.3.1'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: USE_LARGE_FILES
  Built under linux
  Compiled at Jan  8 2003 14:33:25
  @INC:
    /usr/lib/perl5/5.8.0/i686-linux
    /usr/lib/perl5/5.8.0
    /usr/lib/perl5/site_perl/5.8.0/i686-linux
    /usr/lib/perl5/site_perl/5.8.0
    /usr/lib/perl5/site_perl/5.6.1
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.0/i686-linux
    /usr/lib/perl5/vendor_perl/5.8.0
    /usr/lib/perl5/vendor_perl
    .

I presume that indicates I have not compiled with threads, right?  
threads=undef?  I know a good bit about perl, but threads isn't something I've 
dabbled in.

The CONTENTS file is attached.
Comment 8 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 14:38:03 UTC
Threads required you to "interfere" with the ebuild and do a USE="threads"
emerge perl - so no, your good. I only ask because there are problems with
threaded perls - really only available for the die hard perl folks who couldn't
live without them.

The good news is I see the proble. Looking at the Contents file, then looking
over at my own installation, I see that most of the install went into
/usr/lib/perl5/blahnblah, good, but a few files, went into /usr/lib/perl/ <---eeek!

The bad news is it is going to take me a little while to get the patch in for
this. I wanted to post so that you knew that I saw the problem and will get to
it, but that it will be later today before I have the fix in (or figure out the
fix, though it should be simple enough). 

Thanks,

Mike
Comment 9 Dan Noe 2003-01-09 14:44:06 UTC
Thanks a bunch.  No rush on the fix.. my rrdtool graphs 
(http://juniper.isomerica.net/sysgraph/) are mainly an experiment/toy :)
Comment 10 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 20:07:59 UTC
Dan,

     OK, I had some ideas. Played around. Even went on a tangent to look at the
newer libgd, the newer (one version up) of rrdtools, but I'm still at the same
spot - unable to duplicate your problem. Even asked a few other devs to emerge
it, ditto, we all can use it fine (yeah, dev conspiracy if you ask me).

     So here's a final stab. In /usr/lib, can you do a find ./ -name "RRDs.so" -
would like to see that it only shows up in two places, the bogus /usr/lib/perl/
(harmless, though it needs to be removed in the build - the packages are
properly installed elsewhere) and
/usr/lib/perl5/site_perl/5.8.0/i686-linux/auto/RRDs/ and making. If that works,
then the only other thing I can think to check is doing an ldd on
/usr/lib/perl5/site_perl/5.8.0/i686-linux/auto/RRDs/RRDs.so and making sure
everything comes back found.
Comment 11 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 20:09:16 UTC
well, maybe not entirely the last straw. The last straw would be to offer to
give you a binary package of the install (compile it over here on one of my 1.4
boxes, perhaps my 686) and send that to you. I can do that, will do it
willingly, but would like to see this resolved short of that since this suggests
other problems.
Comment 12 Dan Noe 2003-01-09 20:15:43 UTC
root@juniper:/usr/lib# find ./ -name "RRDs.so"
./perl/auto/RRDs/RRDs.so
./perl5/site_perl/5.8.0/i686-linux-thread-multi/auto/RRDs/RRDs.so

Comment 13 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 20:22:43 UTC
Dan,


Have you upgraded perl more than once? Or, is this not your first perl 5.8
install? You have conflicting paths below - one set points to a non threaded
perl, but the location of that RRDs.so is in a threaded perl directory.
Comment 14 Dan Noe 2003-01-09 20:46:18 UTC
Its quite possible.  A while ago, my perl got updated to 5.8.0 during a --
update world, I presume because it had been added but not masked yet, or 
something silly.  Bad timing.  A later world update reverted perl to 5.6.0.  
Never once did I explicitly specify any options, however.
Comment 15 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 21:04:24 UTC
I had some tragic accidents in my early days. This is the payback.

Threading was initially enabled in that ebuild until we/I realized how utterly
bad it was for some applications. That is what is throwing off your install of
rrdtools. Let me see if I can think of "nice" way to get you your working perl
without losing anything.

What does emerge -pc perl show? Does it show anything for that last merge of
perl 5.8? If so, emerge -c perl may get you going again, lickety split.
Otherwise, the only course of actions I can see are to either a) try removing
the -thread-multi dir's from your perl 5.8 tree, and seeing if a re-emerge of
rrdtools puts that .so (and other files) in the right place, or (last resort
that I would suggest) unmerging perl, keep track of anything like rrdtools that
placed files in /usr/lib/perl5, remove /usr/lib/perl5, then emerge perl, run the
paired down version of the rebuilder located at
http://cvs.gentoo.org/~mcummings/perl58.html (there's a link on there for a perl
module rebuilder), then rebuilding those apps like rrdtool that place files in
/usr/lib/perl5. This last one is an absolute last resort, I'd rather not
entertain the notion, but it is an ultimate solution.

See if emerge -pc perl shows anything, but hold off on removing perl and
starting over (that seems silly).
Comment 16 Dan Noe 2003-01-09 21:15:20 UTC
root@juniper:~# emerge -pc perl

>>> These are the packages that I would unmerge:

 sys-devel/perl
    selected: none
   protected: 5.8.0-r8
     omitted: none

>>> clean: No packages selected for removal.

I'm afraid I lost you a bit in your thinking.. What would emerge -c perl do?  
Remerge it and unlink the original files?
Comment 17 Michael Cummings (RETIRED) gentoo-dev 2003-01-09 21:43:26 UTC
emerge -c cleans out previous installs if you don't have autoclean enabled (or
turned off, actually). My hope was that emerge -c perl would emerge a previous
version of perl -namely the version that was installed with threading enabled.
Comment 18 Dan Noe 2003-01-09 21:49:37 UTC
whats the next course of action then?  manual remove of the threaded directory?
Comment 19 Michael Cummings (RETIRED) gentoo-dev 2003-01-10 05:49:27 UTC
I'd like to take this "slowly" so as to avoid complications. My first 
recommendation would be to cd /usr/lib/perl5 and do the following:

ls -al `find ./ -name "*thread*" -type d` >~/thread_list (those are backticks)
find ./ -type f -exec grep -risl "thread" {} \; >~/thread_files

That way we have a listing of what was in those directories, and what files 
(particularly whether Config.pm in CORE) contained thread references. The 
second list will have false positives - that's to be expected. Even a non-
threaded perl does come with threads.pm for manual invocation. If you don't 
mind posting those files here as attachments, that would be helpful.

What I'm looking for is to see what is inside those -thread directories in 
particular, and whether your primary Config.pm for perl is referencing them. If 
all that is located inside those thread directories are a few files installed 
by other apps, we can wipe the dirs immediately, grab what packages provided 
the errant files (searching the CONTENTS files in /var/db/pkg/*/*/CONTENTS 
based on the first list) and you will be all set. That is the best possible 
scenario.

Failing that, say for instance that your Config.pm also contains references, we 
can try removing the directories, fixing your Config.pm, and see if a remerge 
of rrdtools is fixed.

Obviously, I am avoiding the painful but quick (keystroke wise, not time wise) 
method of fixing this, which is to unmerge perl, remove /usr/lib/perl5, remerge 
perl, then remerge your installed modules/apps. That will work, but I'd rather 
suggest doing the least amount of damage as possible in one go.

On a side note, I'm sorry about this. This is actually an atypical occurance, 
and one can say completely my fault. Thank you for your patience,

Mike
Comment 20 Dan Noe 2003-01-10 11:54:48 UTC
Created attachment 7168 [details]
thread_files

Interestingly enough, there seem to be a lot of 5.6.1 references left. 
Shouldn't these have been deleted when clean wiped them earlier?
Comment 21 Dan Noe 2003-01-10 12:00:33 UTC
Created attachment 7169 [details]
thread_list

Thanks again.  The problem is not that serious.. and the support I'm getting is
great.	Thanks
Comment 22 Michael Cummings (RETIRED) gentoo-dev 2003-01-10 12:12:12 UTC
The 5.6.1 references that remain are not part of the actual 5.6.1 install. They 
are left over from modules installed while 5.6.1 was the "active" perl.

OK, looking over your list of files in -thread-multi, most(all) of these look 
like add-on modules, not core modules, which is good. The .ph files can be 
ignored completely, these are just left over header=>perl conversion files. 
With these lists in hand, you should be able (or I can ;) ) to identify what 
the original module was that owned these and simply remove the directory 
site_perl/5.8.0/i686-linux-thread-multi. 

Before you do that, a crazy notion that wouldn't break anything. Can you tar up 
that directory (i.e., just back up site_perl/5.8.0/i686-linux-thread-multi), 
then remove it and see if RRDs loads? -thread-multi isn't in your @INC, I'm 
just wondering if perl is hitting it first, seeing an RDDs.so in there, and 
trying that instead following through to your new install (which the CONTENTS 
you posted confirms is good).

Thanks for saying it's not a rush, but it's annoying to have slightly broken 
someone's box. :)
Comment 23 Dan Noe 2003-01-10 14:06:13 UTC
Ok, I tarred up the directory /usr/lib/perl5/site_perl/5.8.0/i686-linux-thread-
multi and then removed it.  Now, trying to load RRDs, it cannot locate it 
correctly.

root@juniper:/usr/lib/perl5/site_perl/5.8.0# perl -e 'use RRDs;'
Can't locate loadable object for module RRDs in @INC (@INC 
contains: /usr/lib/perl5/5.8.0/i686-
linux /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i686-
linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl/5.6.1 /usr/lib/pe
rl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i686-
linux /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at -e 
line 1
Comment 24 Michael Cummings (RETIRED) gentoo-dev 2003-01-10 17:51:19 UTC
Believe it or not, that is really progress. It just means you will need to
reinstall rrdtools. Now, looking at the list of files in the thread_list
attachment, ignoring the .ph files, there are more than a few that will need to
be re-emerged. There are two options here. You can rerun the libperl_rebuilder
script - it may take a while, but it should get everything back into place. THe
other is the old fashioned "what broke? emerge...". 
Comment 25 Dan Noe 2003-01-10 19:09:13 UTC
Oh dear.. Well, I ran the update script, which seems to be having a few 
problems.. gaim, irssi, and vim, gvim, xchat were all unmerged but not 
remerged (!!).  The last line of the output from the script complained that 
the "livecd" package was no longer in gentoo, and then dumped me back to a 
prompt.  And...

root@juniper:~# perl -e 'use RRDs;'
RRDs object version 1.000391 does not match bootstrap parameter 1.000351 
at /usr/lib/perl5/5.8.0/i686-linux/DynaLoader.pm line 249.

However, I don't /think/ the script is working correctly.  I've manually 
remerged the affected applications, and I unmerged the "livecd" package (don't 
need it, don't really know why I installed it).
Comment 26 Dan Noe 2003-01-13 17:49:55 UTC
Everything seems to be working perfectly after cleanout and remerge.  Thanks.
Comment 27 Marius Mauch (RETIRED) gentoo-dev 2003-11-24 23:47:35 UTC
*** Bug 24269 has been marked as a duplicate of this bug. ***