Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 156230 - g-cpan infinite loop?
Summary: g-cpan infinite loop?
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Gentoo Perl team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-11-25 09:56 UTC by David Masover
Modified: 2006-12-10 04:37 UTC (History)
0 users

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


Attachments
perl-gcpan overlay (perl-gcpan.tar.bz2,9.95 KB, application/octet-stream)
2006-11-26 16:30 UTC, David Masover
Details

Note You need to log in before you can comment on or make changes to this bug.
Description David Masover 2006-11-25 09:56:16 UTC
Running "g-cpan -u" on either of my machines now results in what seems to be an infinite loop. I haven't left it running all night or anything, but I do get the following lines repeating for as long as I've let it run:

 * g-cpan: Looking for Bundle::CPAN
  Is already unwrapped into directory /root/.cpan/build/Bundle-CPAN-1.854
WARNING: SIGN is not a known parameter.
 * g-cpan: Ebuild already exists for Module-Signature
 * g-cpan: Ebuild already exists for Scalar-List-Utils
 * g-cpan: Ebuild already exists for YAML
 * g-cpan: Ebuild already exists for Compress-Zlib
 * g-cpan: Ebuild already exists for Archive-Zip
 * g-cpan: Ebuild already exists for File-Spec
 * g-cpan: Ebuild already exists for File-Which
 * g-cpan: Ebuild already exists for Expect
 * g-cpan: Ebuild already exists for libnet
 * g-cpan: Ebuild already exists for Term-ReadLine-Perl
 * g-cpan: Ebuild already exists for Digest-SHA
 * g-cpan: Ebuild already exists for Text-Glob
 * g-cpan: Ebuild already exists for Archive-Tar
 * g-cpan: Ebuild already exists for Module-Build
 * g-cpan: Ebuild already exists for TermReadKey
 * g-cpan: Ebuild already exists for ExtUtils-CBuilder
 * g-cpan: Ebuild already exists for Test-Harness
 * g-cpan: Ebuild already exists for libnet
 * g-cpan: Ebuild already exists for File-HomeDir
 * g-cpan: Ebuild already exists for Data-Dumper
 * g-cpan: Ebuild already exists for CPAN-Reporter
 * g-cpan: Ebuild already exists for YAML-Syck

What would I have to do to keep my current CPAN config options, but purge any and all caches CPAN or g-cpan might have? Just a hunch...

But even if that fixes it, it's still a bug. Once again, g-cpan is useless.

Running the latest stable g-cpan and portage, on amd64, as of about an hour ago. I'll attach "emerge --info" from one or both machines if needed, Bugzilla won't let me paste them here (comment too long).
Comment 1 Michael Cummings (RETIRED) gentoo-dev 2006-11-25 20:04:32 UTC
(In reply to comment #0)
> What would I have to do to keep my current CPAN config options, but purge any
> and all caches CPAN or g-cpan might have? Just a hunch...

There's no cache to purge. It's based on whatever the latest downloaded 02/03* file is from cpan (the list of modules and packages), and whatever is sitting in your overlay. 

> But even if that fixes it, it's still a bug. Once again, g-cpan is useless.

Constructive comment.

> Running the latest stable g-cpan and portage, on amd64, as of about an hour
> ago. I'll attach "emerge --info" from one or both machines if needed, Bugzilla
> won't let me paste them here (comment too long).

Would you be willing to tar/gzip up your perl-gcpan overlay so I can see if -u loops here as well? Then again, I suppose that might be useless to.

Comment 2 David Masover 2006-11-26 16:28:27 UTC
(In reply to comment #1)
> (In reply to comment #0)

> > But even if that fixes it, it's still a bug. Once again, g-cpan is useless.
> 
> Constructive comment.

Sorry, that sounded worse than I meant it. I mean, this is the second g-cpan bug that's left me completely unable to use it for what it's intended.

Attaching my perl-gcpan overlay...
Comment 3 David Masover 2006-11-26 16:30:09 UTC
Created attachment 102811 [details]
perl-gcpan overlay

I can reproduce this bug on another machine, let me know if you want that overlay as well.
Comment 4 Michael Cummings (RETIRED) gentoo-dev 2006-12-05 05:42:29 UTC
just sticking my head in to say i'll work on this this week, don't want you thinking this is lost/forgotten. I'm aiming to put an rc into portage once this bug is resolved (and for the other bugs resolved lately) :)
Comment 5 Michael Cummings (RETIRED) gentoo-dev 2006-12-05 09:32:28 UTC
Fixed in svn (or it will be in a few minutes). Finally tracked this down (thanks for the copy of your repo!) The "bug" was that we "analyze" the .pm files in the bundle to see what they list in a somewhat sloppy fashion (could be better, but it works for now at least). In the case of Bundle::CPAN there is a reference to Bundle::CPAN later in the .pm, so g-cpan blithely marked it as a dep and pursued it over and over and over again. Fixed in CPAN.pm (next if dep and module are the same name). I'll push this into the tree later this week (~arch'd) for more testing. Thanks for your patience!
Comment 6 David Masover 2006-12-07 06:33:47 UTC
Hmm, sounds good, but if I understand this, we'd still have a problem with mutually recursive dependencies. (This solves the GNU's Not Unix problem, but not the HURD/HIRD problem.)

So, what do we do if package A depends on B which depends on A?

Can we build a hash (Perl terminology -- an index, say) of everything seen so far, such that at the end of it, we use that as the list of packages to feed directly to Portage (and we never process the same one twice in the same run)?

I'm tempted to jump in and see how this all works.

Oh, and thanks for the fix, even if I don't have it yet.
Comment 7 Michael Cummings (RETIRED) gentoo-dev 2006-12-10 04:37:28 UTC
I'm going to go ahead and mark this fixed since the original problem has been corrected :)

As for your last question, ironically we fixed the horse before fixing the cart (does that analogy work here?). We already track the deps and remove them from the queue if we've already seen them - the problem in this case was that we do it after we've finished processing an item, and the reference was internal to the bundle::cpan processing. A to B to A should never happen.