Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 425768 - perl-core/Pod-Simple-3.160.0 breaks pod2html on dev-lang/perl-5.16.0 ( seen while building sys-devel/llvm-3.1-r1 )
Summary: perl-core/Pod-Simple-3.160.0 breaks pod2html on dev-lang/perl-5.16.0 ( seen w...
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Linux bug wranglers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-07-11 05:03 UTC by Kent Fredric (IRC: kent\n) (RETIRED)
Modified: 2013-02-12 16:53 UTC (History)
1 user (show)

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


Attachments
emerge --info (emerge_info,5.17 KB, text/plain)
2012-07-11 05:03 UTC, Kent Fredric (IRC: kent\n) (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2012-07-11 05:03:37 UTC
Created attachment 317890 [details]
emerge --info

llvm[1]: Installing HTML documentation
make[2]: Entering directory `/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide'
pod2html --css=manpage.css --htmlroot=. \
  --podpath=. --noindex --infile=lit.pod --outfile=/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/lit.html --title=lit
pod2html --css=manpage.css --htmlroot=. \
  --podpath=. --noindex --infile=opt.pod --outfile=/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/opt.html --title=opt
pod2html --css=manpage.css --htmlroot=. \
  --podpath=. --noindex --infile=llvm-config.pod --outfile=/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/llvm-config.html --title=llvm-config
Can't locate object method "recurse" via package "Pod::Simple::Search" at /usr/lib64/perl5/5.16.0/Pod/Html.pm line 317.
make[2]: *** [/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/opt.html] Error 2
make[2]: *** Waiting for unfinished jobs....
Can't locate object method "recurse" via package "Pod::Simple::Search" at /usr/lib64/perl5/5.16.0/Pod/Html.pm line 317.
Can't locate object method "recurse" via package "Pod::Simple::Search" at /usr/lib64/perl5/5.16.0/Pod/Html.pm line 317.
make[2]: *** [/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/lit.html] Error 2
make[2]: *** [/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide/llvm-config.html] Error 2
rm /var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide//.dir
make[2]: Leaving directory `/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs/CommandGuide'
make[1]: *** [install] Error 1
make[1]: Leaving directory `/var/tmp/portage/sys-devel/llvm-3.1-r1/work/llvm-3.1.src/docs'
make: *** [install] Error 1


And I still have old Pod::Simples due to --autounmask not auto-unmasking everything. 

This is the offending code snippet:

# find all pod modules/pages in podpath, store in %Pages
# - callback used to remove Podroot and extension from each file
# - laborious to allow '.' in dirnames (e.g., /usr/share/perl/5.14.1)
Pod::Simple::Search->new->inc(0)->verbose($Verbose)->laborious(1)
 ->callback(\&_save_page)->recurse($Recurse)->survey(@Podpath);

The addition of the ->recurse() call happened here: 

http://perl5.git.perl.org/perl.git/commitdiff/1d7ed44a3073f21892eceff9e92a17e20ac0cdc3?hp=18f1a6e3a6a2fe0c14e1602b6cc055b838df9af4

At that time, the blead version of Pod::Simple was 3.19 

http://perl5.git.perl.org/perl.git/blob/1d7ed44a3073f21892eceff9e92a17e20ac0cdc3:/cpan/Pod-Simple/ChangeLog

And you'll see that the ->recurse method is listed in the Pod::Simple Changelog as being a new addition in Pod::Simple 3.17. 

So, this means for pod2html to work fully, a minimum version of Pod::Simple 3.17 is required under Perl 5.16.0  ( Pod::HTML  is one of those pesky things where its not dual lifed and the only upstream is blead ) 

perl-cleaner at present will not resolve this problem, no does dep-clean. 



* perl-core/Pod-Simple
     Available versions:  3.14 ~3.15 3.160.0 ~3.170.0 ~3.180.0 ~3.190.0 ~3.200.0 ~3.210.0 ~3.220.0
     Installed versions:  Version:   3.160.0
                          Date:      15:56:43 07/11/12
     Best versions/slot:  3.160.0
 

* virtual/perl-Pod-Simple
     Available versions:  3.14 ~3.15 3.160.0-r2 ~3.170.0 ~3.180.0 ~3.190.0 ~3.200.0-r1 ~3.210.0 ~3.220.0
     Installed versions:  Version:   3.160.0-r2
                          Date:      11:01:44 07/02/12
     Best versions/slot:  3.160.0-r2


* perl-core/Pod-Simple / 3.160.0 / 
KEYWORDS:  alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris
DEPEND:    ${RDEPEND}
RDEPEND:   >=virtual/perl-Pod-Escapes-1.04 dev-lang/perl[-build]

* virtual/perl-Pod-Simple / 3.160.0-r2
KEYWORDS:  alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x86-macos ~x86-solaris
RDEPEND:   || ( =dev-lang/perl-5.14* ~perl-core/Pod-Simple-3.160.0 )
Comment 1 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2012-07-11 05:27:43 UTC
Confirming:

emerge -v1 =virtual/perl-Pod-Simple-3.170.0 --autounmask-write y
dispatch-conf
emerge -v1 =virtual/perl-Pod-Simple-3.170.0 --autounmask-write y
emerge -v1 =llvm-3.1-r1 --autounmask-write y

^^ Now works. 

Recommendations:

perl-5.16.0 should block <virtual/perl-Pod-Simple-3.170.0
Comment 2 Torsten Veller (RETIRED) gentoo-dev 2012-07-11 11:33:12 UTC
Don't mix testing dev-lang/perl and stable perl-core/ packages. It WILL fail.
Comment 3 Kent Fredric (IRC: kent\n) (RETIRED) gentoo-dev 2012-07-12 02:09:59 UTC
That is known, but it should be such that its harder to come into an invalid configuration like this.

Perhaps the problem as it stands is merely sub-optimal, and we don't have a good way at present to prevent this configuration occurring, but in an ideal world, it would be "Nice" to have ways to avert users stumbling into this problem.

It may be such that an extension to perl-cleaner which looks at what version of dev-perl you have installed, and then fires off emerge with 

emerge ">=virtual/perl-Pod-Simple-$V" to ensure a "sane" system.

Another approach is perhaps, creating: virtual/perl-5.16 , which would be

RDEPEND="
  =dev-lang/perl-5.16*
  >=virtual/perl-Pod-Simple-$V
"

etc, etc.

This might be marginally better than trying to rely on PDEPEND and other approaches to ensure a "sane" system. 

( it would be nice to be able to do emerge -va =virtual/perl-5.16 --autounmask-write y  and have it JustWork(TM) )
Comment 4 Jaak Ristioja 2013-02-12 16:53:15 UTC
I ran into the same bug while building Clang. Running pod2html from the command line also results in:

  Can't locate object method "recurse" via package "Pod::Simple::Search" at /usr/lib64/perl5/5.16.2/Pod/Html.pm line 317.

even after re-emerging Perl.


(In reply to comment #1)
> Recommendations:
> 
> perl-5.16.0 should block <virtual/perl-Pod-Simple-3.170.0

I can't agree more. The dependencies are broken.

(In reply to comment #2)
> Don't mix testing dev-lang/perl and stable perl-core/ packages. It WILL fail.

This is no excuse. How is the user supposed to know stuff like this?! Fix the dependencies so that testing dev-lang/perl will require appropriate versions of the perl-core/ packages.