Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 347663 - portage-2.2.01.17304: Package collision detection prevents dev-lang/perl-5.12.02 from installing
Summary: portage-2.2.01.17304: Package collision detection prevents dev-lang/perl-5.12...
Status: RESOLVED INVALID
Alias: None
Product: Gentoo/Alt
Classification: Unclassified
Component: Prefix Support (show other bugs)
Hardware: All OS X
: High major (vote)
Assignee: Gentoo Prefix
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-03 16:29 UTC by Charles Davis
Modified: 2010-12-03 16:43 UTC (History)
0 users

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


Attachments
Build log for dev-lang/perl-5.12.2-r4 (build.log,778.55 KB, text/plain)
2010-12-03 16:33 UTC, Charles Davis
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Charles Davis 2010-12-03 16:29:14 UTC
The very latest portage available on Gentoo Prefix for Mac OS attempts to prevent packages from colliding (i.e. overwriting each others' files) by checking at install time if installing files would overwrite existing files. Whether or not the files belong to a Gentoo package, if the files already exist, portage will refuse to install over them. There is no way to get around this, because there is no way to tell portage to force installation.

Unfortunately, dev-lang/perl-5.12.02 (and possibly other versions) bypasses the normal installation mechanism and installs its files itself directly into the prefix, instead of installing into a destroot which is then copied into the prefix (like usual). (You can see this happen by reading the log; it shows the files being installed directly into the prefix.) This sets off portage's collision detection mechanism; because perl's files are already installed, but not registered to a package, portage refuses to finish installing.

Reproducible: Always

Steps to Reproduce:
1. Install portage-2.2.01.17304. (Might happen with other portage versions, but I only recently started seeing this behavior.)
2. emerge perl

Actual Results:  
Perl compiles, but does not finish installing because portage detects a file collision.

Expected Results:  
Perl should finish installing.

Portage 2.2.01.17304-prefix (prefix/darwin/macos/10.6/x86, gcc-4.2.1, unavailable, 10.5.0 i386)
=================================================================
                        System Settings
=================================================================
System uname: Darwin-10.5.0-i386-32bit
Timestamp of tree: Fri, 03 Dec 2010 15:12:41 +0000
distcc 3.1-toolwhip.1 i386-apple-darwin10.0 [disabled]
app-shells/bash:     4.1_p7
dev-lang/python:     2.6.5-r2
dev-util/cmake:      2.8.1-r2
sys-devel/autoconf:  2.68
sys-devel/automake:  1.9.6-r3, 1.11.1
sys-devel/gcc-config: 1.4.1-r00.2
sys-devel/libtool:   2.4
sys-devel/make:      3.82
Repositories: gentoo_prefix
ACCEPT_KEYWORDS="~x86-macos"
ACCEPT_LICENSE="* -@EULA"
CBUILD="i686-apple-darwin10"
CFLAGS="-O2 -pipe -march=core2"
CHOST="i686-apple-darwin10"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/portage /etc/revdep-rebuild /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=core2"
DISTDIR="/Users/chip/Gentoo/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs collision-protect distlocks fixlafiles fixpackages news nostrip parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LDFLAGS="-Wl,-dead_strip_dylibs"
MAKEOPTS="-j4"
PKGDIR="/Users/chip/Gentoo/usr/portage/packages"
PORTAGE_CONFIGROOT="/Users/chip/Gentoo/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/Users/chip/Gentoo/var/tmp"
PORTDIR="/Users/chip/Gentoo/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix"
USE="aqua bash-completion berkdb bzip2 coreaudio cracklib crypt curl cxx dbus exceptions expat extensions gdbm gnutls gpg gzip iconv icu ipv6 jbig jpeg libssh2 lzma lzo mmx mmxext mng modules mysql ncurses nls objc objc++ pch perl png prefix python qt3support readline ruby sql sqlite3 sse sse2 ssl subversion tcl threads tiff tk truetype unicode vim-syntax x86-macos xml zlib" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="Darwin" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse" KERNEL="Darwin" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" PHP_TARGETS="php5-2" RUBY_TARGETS="ruby18" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" 
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Fabian Groffen gentoo-dev 2010-12-03 16:33:07 UTC
what are the collisions you see?

You can disable portage's collision-protect feature by exporting

  FEATURES="-collision-protect"

preferably temporarily only for the package you need to merge in question
Comment 2 Charles Davis 2010-12-03 16:33:17 UTC
Created attachment 256251 [details]
Build log for dev-lang/perl-5.12.2-r4

Here the build log, and, before I forget, the output from emerge -pqv:

[ebuild  N    ] dev-lang/perl-5.12.2-r4  USE="berkdb gdbm ithreads -build -debug -doc"
Comment 3 Charles Davis 2010-12-03 16:34:51 UTC
(In reply to comment #1)
> what are the collisions you see?
It's a really long list. It's in the build log.
> 
> You can disable portage's collision-protect feature by exporting
> 
>   FEATURES="-collision-protect"
> 
> preferably temporarily only for the package you need to merge in question
That's useful. I'll give it a shot.
Comment 4 Fabian Groffen gentoo-dev 2010-12-03 16:37:53 UTC
I'm affraid it's not perl installing stuff outside the destroot, but more a failed/incorrect previous installation of your current perl.
Comment 5 Charles Davis 2010-12-03 16:43:58 UTC
(In reply to comment #4)
> I'm affraid it's not perl installing stuff outside the destroot, but more a
> failed/incorrect previous installation of your current perl.
That thought crossed my mind, but then I saw in the build output what I thought was perl installing stuff straight into the prefix. I guess that output is somewhat misleading.

I wonder how this happened. I even unmerged perl (emerge --unmerge perl) because of this. I'll bet portage's database of installed packages and their files got corrupted somehow. In any case, this is yet another bug that wasn't.