Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 71659

Summary: perl is not compliant with FEATURES="collision-protect"
Product: Gentoo Linux Reporter: Alexander Skwar <askwar>
Component: Current packagesAssignee: Gentoo Perl team <perl>
Status: RESOLVED FIXED    
Severity: normal CC: betelgeuse, bsd+disabled, bugs, casta, chris-ml-gentoo-bugzilla, damien.thebault, david+gentoo.org, ehmsen, gentoo.org, hanno, jakub, ka0ttic, lars, lukenshiro, mal, mark, moixa, sanchan, sascha-gentoo-bugzilla, solomarv, spock
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on: 89890    
Bug Blocks:    

Description Alexander Skwar 2004-11-18 05:04:01 UTC
>>> Completed installing into /var/tmp/portage/PodParser-1.28/image/

* checking 27 files for package collisions
existing file /usr/bin/pod2usage is not owned by this package
existing file /usr/bin/podchecker is not owned by this package
existing file /usr/bin/podselect is not owned by this package
existing file /usr/share/man/man1/pod2usage.1.gz is not owned by this package
existing file /usr/share/man/man1/podchecker.1.gz is not owned by this package
existing file /usr/share/man/man1/podselect.1.gz is not owned by this package
existing file /usr/share/man/man3/Pod::InputObjects.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::Select.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::PlainText.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::Checker.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::ParseUtils.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::Find.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::Usage.3pm.gz is not owned by this package
existing file /usr/share/man/man3/Pod::Parser.3pm.gz is not owned by this package
* spend 0.00640106201172 seconds checking for file collisions



[13:59:36 vz6tml@exp01:~] $ epm -qf /usr/bin/pod2usage /usr/bin/podchecker /usr/bin/podselect /usr/share/man/man1/pod2usage.1.gz /usr/share/man/man1/podchecker.1.gz /usr/share/man/man1/podselect.1.gz /usr/share/man/man3/Pod::InputObjects.3pm.gz /usr/share/man/man3/Pod::Select.3pm.gz /usr/share/man/man3/Pod::PlainText.3pm.gz /usr/share/man/man3/Pod::Checker.3pm.gz /usr/share/man/man3/Pod::ParseUtils.3pm.gz /usr/share/man/man3/Pod::Find.3pm.gz /usr/share/man/man3/Pod::Usage.3pm.gz /usr/share/man/man3/Pod::Parser.3pm.gz
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1
perl-5.8.5-r1


Reproducible: Always
Steps to Reproduce:




[14:01:44 vz6tml@exp01:~] $ emerge info
Portage 2.0.51-r3 (default-linux/x86/2004.3, gcc-3.3.4, glibc-2.3.4.20041102-r0,
2.6.8.1-ck9 i686)
=================================================================
System uname: 2.6.8.1-ck9 i686 Intel(R) Pentium(R) 4 CPU 1.80GHz
Gentoo Base System version 1.6.6
ccache version 2.3 [enabled]
Autoconf: sys-devel/autoconf-2.59-r5
Automake: sys-devel/automake-1.8.5-r1
Binutils: sys-devel/binutils-2.15.92.0.2-r1
Headers:  sys-kernel/linux26-headers-2.6.8.1-r1
Libtools: sys-devel/libtool-1.5.2-r7
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-march=pentium4 -O3 -fomit-frame-pointer -pipe -funroll-loops"
CHOST="i686-pc-linux-gnu"
COMPILER=""
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown
/usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config
/var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=pentium4 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs ccache collision-protect distlocks sandbox sfperms"
GENTOO_MIRRORS="http://gentoo.osuosl.org
http://distro.ibiblio.org/pub/Linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X aalib acl acpi adns alsa apache2 apm arts artswrappersuid artworkextra
audiofile avi bcmath bitmap-fonts bzlib cairo crypt cscope cups curl
curlwrappers directfb divx4linux djbfft dvd encode esd ethereal evo exif f77 fam
fbcon flac foomaticdb fortran ftp gd gdbm gif gimpprint gnome gnutls gphoto2 gpm
gstreamer gtk gtk2 hal iconv imagemagick imap imlib imlib2 immqt-bc inifile
ithreads java javascript jbig jikes jpeg jpeg2k kde kerberos ldap libedit libg++
libwww lzw-tiff mad maildir mailwrapper matroska mbox mmap mmx mng motif
mozcalendar mozilla moznoirc mpeg ncurses nls noantlr nobcel nobeanutils nobsh
nocommonslogging nocommonsnet nodrm nojdepend nojoystick nojsch nojython nolog4j
nooro noregexp norhino noxalan noxerces nptl nptlonly offensive oggvorbis opengl
oss pam parse-clocks pcntl pcre pdflib perl pic pie png posix ppds pwdb python
qt quicktime quotes readline real recode samba sasl sdl shared slang sndfile
sockets spell sse ssl svg sysvipc tcltk tcpd theora tiff truetype unicode usb
videos vim-with-x wmf x86 xchattext xfs xml xml2 xmms xscreensaver xv xvid zlib
linguas_de"
Comment 1 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:47:35 UTC
*** Bug 71868 has been marked as a duplicate of this bug. ***
Comment 2 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:49:10 UTC
*** Bug 73392 has been marked as a duplicate of this bug. ***
Comment 3 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:49:29 UTC
*** Bug 73394 has been marked as a duplicate of this bug. ***
Comment 4 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:49:56 UTC
*** Bug 73396 has been marked as a duplicate of this bug. ***
Comment 5 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:50:34 UTC
*** Bug 73448 has been marked as a duplicate of this bug. ***
Comment 6 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:51:37 UTC
*** Bug 77648 has been marked as a duplicate of this bug. ***
Comment 7 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:51:50 UTC
*** Bug 78303 has been marked as a duplicate of this bug. ***
Comment 8 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:52:03 UTC
*** Bug 79053 has been marked as a duplicate of this bug. ***
Comment 9 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:53:23 UTC
*** Bug 79366 has been marked as a duplicate of this bug. ***
Comment 10 Michael Cummings (RETIRED) gentoo-dev 2005-01-26 09:56:41 UTC
Now that I've gathered all ye bugs together...

Perl is not, and I don't see where it ever will be, compliant with collision-protect.

And before that causes an uproar....

* We provide ebuilds that suppliment and update modules that were installed by the core perl package. This means that files will be updated that were originally owned by dev-lang/perl. This is the price you pay for being secure, up to date, and able to install packages that depend on newer versions of modules than came with the original perl core you are working with.

* Some module authors include "stubs" from other modules they maintain which conflict under collision-protect. Carp-clan is an example of this - there is the ebuild for the module, which is the full puppy, but the author also includes a bare stub of it in his other modules for use. But the man pages, pm files, etc., are all the same (for obvious reasons regarding @INC).

I'm open to suggestions. For the time being I recommend you remove collision protection for your perl needs. It is a good thing to have, but in the case of perl it's going to be tough. The only thought I can come up with is sometime after we split up dev-perl into parts, we can PDEPEND the core modules that can be updated. Even then, though, there will be stragglers that do still collide.
Comment 11 Jakub Moc (RETIRED) gentoo-dev 2005-04-20 09:18:38 UTC
*** Bug 89825 has been marked as a duplicate of this bug. ***
Comment 12 MAL 2005-04-20 09:44:01 UTC
So portage needs an /etc/portage/package.features, in which we can put:

dev-lang/perl       -collision-protect

or:

dev-perl/PodParser  -collision-protect

And in the long term, portage could maintain a /usr/portage/profiles/package.features

Comments?
Comment 13 Michael Cummings (RETIRED) gentoo-dev 2005-04-20 14:00:57 UTC
Mal, 

that would be nice - but that's a portage "bug"/feature request (outside this bug)
Comment 14 Alexander Skwar 2005-04-20 23:18:45 UTC
Well, yes, that might be really useful - It would, however, be much more useful, if everything could be installed with +collision-protect and if the ebuild could specify which files are okay to be overwritten. 
Comment 15 Alexander Skwar 2005-04-20 23:33:03 UTC
I filed bug #89890 to track what MAL suggested in comment #12.
Comment 16 Michael Cummings (RETIRED) gentoo-dev 2005-04-21 02:32:42 UTC
The sad thing is that it should only be the man pages that are in conflict here (we install the modules in vendor, core install is usually either in straight out PERL_VERSION or site_perl), but at the same time we can't ignore the new man pages because they may contain changes/updates over the core install.

On the upside, I have a freaky idea whenever we get versioned virtuals going that we could prove virtual/perl-pod-parser-1.2.8 in both dev-lang/perl and dev-perl/podparser - usually people only hit this "bug" when they're pulling in a dep, but if the virtual sees the dep being filled by dev-lang/perl already then we could at least avoid a portion of the collision protect bugs.
Comment 17 Jakub Moc (RETIRED) gentoo-dev 2005-04-28 10:20:39 UTC
*** Bug 90740 has been marked as a duplicate of this bug. ***
Comment 18 Jakub Moc (RETIRED) gentoo-dev 2005-05-01 04:08:02 UTC
*** Bug 87771 has been marked as a duplicate of this bug. ***
Comment 19 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 10:03:57 UTC
*** Bug 91713 has been marked as a duplicate of this bug. ***
Comment 20 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 10:12:01 UTC
*** Bug 91714 has been marked as a duplicate of this bug. ***
Comment 21 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 10:12:47 UTC
*** Bug 91715 has been marked as a duplicate of this bug. ***
Comment 22 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 10:16:53 UTC
*** Bug 91716 has been marked as a duplicate of this bug. ***
Comment 23 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 13:23:33 UTC
I
Comment 24 Jakub Moc (RETIRED) gentoo-dev 2005-05-06 13:23:33 UTC
I´m changing the summary of this bug to something more appropriate. 
Comment 25 Michael Cummings (RETIRED) gentoo-dev 2005-05-12 17:28:59 UTC
*** Bug 92422 has been marked as a duplicate of this bug. ***
Comment 26 Michael Cummings (RETIRED) gentoo-dev 2005-05-16 09:26:05 UTC
*** Bug 89869 has been marked as a duplicate of this bug. ***
Comment 27 Michael Cummings (RETIRED) gentoo-dev 2005-05-17 07:26:50 UTC
*** Bug 92847 has been marked as a duplicate of this bug. ***
Comment 28 Jakub Moc (RETIRED) gentoo-dev 2005-06-30 01:47:10 UTC
*** Bug 97453 has been marked as a duplicate of this bug. ***
Comment 29 Blu3 2005-07-22 12:52:46 UTC
FEATURES="" emerge -u perl doesn't work for turning off collision protection.
Comment 30 Sascha Silbe 2005-07-22 13:22:31 UTC
Re comment #28: Use FEATURES="-collision-protect" to disable collision-protection.
Comment 31 Jakub Moc (RETIRED) gentoo-dev 2005-08-11 04:43:16 UTC
*** Bug 102105 has been marked as a duplicate of this bug. ***
Comment 32 Jakub Moc (RETIRED) gentoo-dev 2005-09-04 04:12:26 UTC
Mass re-assign.
Comment 33 Jakub Moc (RETIRED) gentoo-dev 2005-09-22 22:06:58 UTC
*** Bug 106914 has been marked as a duplicate of this bug. ***
Comment 34 barthek 2005-09-25 12:11:15 UTC
guys... perl module ebuilds in gentoo are a real mess. and i mean MESS. 

differentiating systems between perl built with 'minimal' (+ all perl modules
used by different applications) and 'full' perl conflicting with anything else
is a real failure of gentoo :|

i am sure this is very annoying for us, regular gentoo users ...

is there a lack of will to solve it or is it just matter of solving conflicts
between gentoo guys responsible for perl ebuilds???
Comment 35 Jakub Moc (RETIRED) gentoo-dev 2005-09-25 12:27:40 UTC
(In reply to comment #33)
> guys... perl module ebuilds in gentoo are a real mess. and i mean MESS. 
> 
> differentiating systems between perl built with 'minimal' (+ all perl modules
> used by different applications) and 'full' perl conflicting with anything else
> is a real failure of gentoo :|

I've really missed how is this related to collision-protect; the reasons why
perl is not collision-protect compliant are pretty much explained above.

> is there a lack of will to solve it or is it just matter of solving conflicts
> between gentoo guys responsible for perl ebuilds???

Ditto... So, please, don't clutter this bug w/ irrelevant comments. Thanks. 

P.S. perl w/ minimal use flag is *not* suitable for general usage (explained
many times in many other bugs). Now, please keep on topic. 

Comment 36 Florian Friesdorf 2005-11-04 23:47:22 UTC
(In reply to comment #16)  
> The sad thing is that it should only be the man pages that are in conflict  
here (we install the modules in vendor, core install is usually either in  
straight out PERL_VERSION or site_perl), but at the same time we can't ignore  
the new man pages because they may contain changes/updates over the core  
install.  
  
I experienced the problem now with perl-core/Test-Harness-2.42. The modules are  
installed fine into vendor, which means for me that perl _is_ compliant or at  
least can be made compliant with collision-protect. It is just, that we need to  
install the man pages of modules that "overlay" modules, which are included in  
perl, into a directory where they are not overwriting the man pages shipped  
with perl, but overriding them.  
  
I placed a file in /etc/env.d which is used before 00basic (ugly!)  
# echo MANPATH="/usr/lib/perl5/vendor_perl/5.8.6/man"  
> /etc/env.d/000perl-5.8.6  
 
# env-update 
>>> Regenerating /etc/ld.so.cache... 
# . /etc/profile  
  
Changed the perl-modules.eclass  
--- /usr/portage/eclass/perl-module.eclass.old  2005-11-05 07:58:36.000000000  
+0100  
+++ /usr/portage/eclass/perl-module.eclass      2005-11-05 07:58:59.000000000  
+0100  
@@ -107,7 +107,10 @@  
        else  
                einfo "Using ExtUtils::MakeMaker"  
                perl Makefile.PL ${myconf} \  
-               PREFIX=/usr INSTALLDIRS=vendor DESTDIR=${D}  
+               PREFIX=/usr INSTALLDIRS=vendor \  
+               INSTALLVENDORMAN1DIR=/usr/lib/perl5/vendor_perl/5.8.6/man/man1  
\  
+               INSTALLVENDORMAN3DIR=/usr/lib/perl5/vendor_perl/5.8.6/man/man3  
\  
+               DESTDIR=${D}  
        fi  
 }  
  
There is however a case where Build.PL is used instead of Makefile.PL. Not  
needed for Test-Harness and therefore not dealt with at the moment.  
  
  
Now when emergeing Test-Harness, the man pages are installed fine into my new  
vendor man page directories, without collisions and 'man Test::Harness' even 
shows the new version. 
 
 
To be honest the next was /usr/bin/prove to collide. I renamed it, but some 
part of my mind already started thinking. I did the emerge again. It worked 
without collision. "man Test::Harness" shows the same version as before. hmmm. 
I edited the new file - voila - it really shows the new file. hmmm. I started 
to feel stupid. The exactly same version (2.42) is already provided by perl, 
which leads me to the conclusion, that this versioned virtuals are definitely 
nice too have - at least from this point of view. 
 
Please dont judge me by this - I just got up and I had no coffee yet ;) 
 
Please consider this in no way to be compliant with any standards, but just as 
a proove of concept, which might help to find a solution. 
 
> On the upside, I have a freaky idea whenever we get versioned virtuals going  
that we could prove virtual/perl-pod-parser-1.2.8 in both dev-lang/perl and  
dev-perl/podparser - usually people only hit this "bug" when they're pulling in  
a dep, but if the virtual sees the dep being filled by dev-lang/perl already  
then we could at least avoid a portion of the collision protect bugs.  
  
That would be really nice to have - see above. 
Comment 37 Jakub Moc (RETIRED) gentoo-dev 2005-11-06 03:18:00 UTC
*** Bug 111673 has been marked as a duplicate of this bug. ***
Comment 38 Jakub Moc (RETIRED) gentoo-dev 2005-11-09 09:11:11 UTC
Mass re-assign.
Comment 39 Jakub Moc (RETIRED) gentoo-dev 2005-11-12 15:49:45 UTC
*** Bug 112345 has been marked as a duplicate of this bug. ***
Comment 40 Jakub Moc (RETIRED) gentoo-dev 2005-11-23 15:05:18 UTC
*** Bug 113400 has been marked as a duplicate of this bug. ***
Comment 41 Michael Cummings (RETIRED) gentoo-dev 2005-11-28 03:32:34 UTC
This should be now resolved for a good 99% of all cases. The perl-module eclass
has been broken into a perl-app and perl-module eclass (perl-app inheriting its
bulk from perl-module). Perl modules will no longer generate man3 pages in
addition to the standard pod docs available in perldoc. The net result of this
is that the file collisions that folks were experiencing should be eliminated
now (the collisions were for the most part a conflict between the man3 pages of
dev-lang/perl and dev-perl||perl-core ebuilds). Since this was added to the
eclass directory last night, safe to say it's propagated outwards, so I'm going
to go ahead and close this monster bug.
Comment 42 Tobias Sager 2006-01-17 02:13:26 UTC
I just hit this bug with perl-5.8.7-r3 and Test-Harness-2.42.
When emerging Test-Harness it collides on:
existing file /usr/bin/prove is not owned by this package
existing file /usr/share/man/man1/prove.1.gz is not owned by this package

Anyone can tell me what I should do about that? And which version of prove should be used generally?
Comment 43 Sascha Silbe 2006-01-19 03:31:26 UTC
It seems it's not fully fixed, there's still a collision between 
dev-lang/perl-5.8.7-r3 and perl-core/digest-base-1.10:

>>> Completed installing perl-5.8.7-r3 into /var/tmp/portage/perl-5.8.7-r3/image/

* checking 2638 files for package collisions
existing file /usr/share/man/man3/Digest::file.3pm.gz is not owned by this package
1000 files checked ...
2000 files checked ...
* spent 1.67967796326 seconds checking for file collisions
* This package is blocked because it wants to overwrite
* files belonging to other packages (see messages above).
* If you have no clue what this is all about report it 
* as a bug for this package on http://bugs.gentoo.org

package dev-lang/perl-5.8.7-r3 NOT merged

No package files given... Grabbing a set.
root@caravan:~# equery belongs /usr/share/man/man3/Digest::file.3pm.gz
[ Searching for file(s) /usr/share/man/man3/Digest::file.3pm.gz in *... ]
perl-core/digest-base-1.10 (/usr/share/man/man3/Digest::file.3pm.gz)
root@caravan:~# 


Shall I file a new bug report for that occurence or will it be handled in this report?

Comment 44 Jakub Moc (RETIRED) gentoo-dev 2006-01-19 04:00:01 UTC
(In reply to comment #42)
> It seems it's not fully fixed, there's still a collision between 
> dev-lang/perl-5.8.7-r3 and perl-core/digest-base-1.10:
> Shall I file a new bug report for that occurence or will it be handled in this
> report?

No. >=1.13 is fixed, 1.10 will never be fixed.