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

Bug 290478

Summary: Moving dev-libs/boost from unslotted to slotted may leave library files (@preserved-libs) making it impossible to eselect a boost version
Product: Gentoo Linux Reporter: Antek Grzymała (antoszka) <antoni>
Component: Current packagesAssignee: Portage team <dev-portage>
Status: RESOLVED DUPLICATE    
Severity: major CC: cpp+disabled, dev-zero, djc, luke-jr+gentoobugs, SebastianLuther, zmedico
Priority: High    
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 240323, 286714    
Attachments: Build log

Description Antek Grzymała (antoszka) 2009-10-25 18:06:37 UTC
As normal system upgrade procedure I upgraded today dev-libs/boost from 1.35.0-r2 to 1.35.0-r5 and ran emerge @preserved-rebuild as instructed by emerge. The only package left for preserved-ebuild was app-office/lyx-1.6.4 and now it fails to compile.

Reproducible: Always

Steps to Reproduce:
emerge @preserved-rebuild

or:

emerge lyx



Portage 2.2_rc46 (default/linux/amd64/10.0, gcc-4.3.4, glibc-2.9_p20081201-r2, 2.6.31.4 x86_64)
=================================================================
                        System Settings
=================================================================
System uname: Linux-2.6.31.4-x86_64-Intel-R-_Core-TM-2_CPU_T5600_@_1.83GHz-with-gentoo-2.0.1
Timestamp of tree: Sun, 25 Oct 2009 16:30:01 +0000
distcc 3.1 x86_64-pc-linux-gnu [disabled]
app-shells/bash:     4.0_p33
dev-java/java-config: 2.1.8-r1
dev-lang/python:     2.6.2-r1
dev-util/cmake:      2.6.4
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.5.2-r1
sys-apps/sandbox:    1.6-r2
sys-devel/autoconf:  2.63-r1
sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--nospinner --keep-going --load-average 8"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LC_ALL="en_US.UTF-8"
LDFLAGS="-Wl,-O1"
LINGUAS="en en_GB pl"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="--progress"
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="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/lisp /usr/local/portage/layman/sunrise /usr/local/portage/layman/roslin /usr/local/portage/antoni"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="64bit 7zip X a52 aac aalib acl acpi activefilter adns afs alsa amd64 amr amrnb amrwb ares atm bash-completion berkdb bluetooth bzip2 cairo caps cdparanoia cjk cleartype cli color-console cpudetection cracklib crypt cups curl cyrillic dbus device-mapper djvu dri dv dvd dvdr dvdread eap-tls emacs exif faac faad fastcgi fat ffmpeg flac fortran gd gdbm gif gimp glitz gpgme gpgmeidn gpm gtk guile hal hdri hfs iconv idn imap inkjar iproute2 ipv6 isdnlog iso14755 ithreads jabber jfs jingle jpeg kipi kpathsea ladspa lcms libsamplerate loop-aes mad maildir mbox mdnsresponder-compat mikmod mjpeg mmx mmxext mng modules monolithic-build mp3 mplayer mudflap multilib musepack ncurses net nethack networking nls nntp nodrm nptl nptlonly ntfs offensive opencore-amr openct opengl openmp pam pcre pcsc-lite pdf perl pg-intdatetime plotutils png ppds pppd pulseaudio python qt3support quicktime radeon radius readline reflection reiser4 reiserfs rle rtc ruby samba sbcl session skey slang slp smartcard smime smp sndfile socks5 spl srt sse sse2 ssl subtitles svg sysfs tcl tcpd theora thread threads tiff tk tkimg toolkit-scroll-bars truetype unicode urandom usb v4l v4l2 vcd video vim vim-syntax vorbis wmf x264 xattr xetex xfs xft xinerama xmp xorg xv xvid zlib zsh-completion" ALSA_CARDS="hda-intel usb-audio vxpocket virmidi indigoio" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" 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 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" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_GB pl" USERLAND="GNU" VIDEO_CARDS="vesa nvidia" 
Unset:  CPPFLAGS, CTARGET, FFLAGS, INSTALL_MASK, LANG, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

=================================================================
                        Package Settings
=================================================================

app-office/lyx-1.6.4 was built with the following:
USE="X cups latex monolithic-build (multilib) nls -debug -dia -docbook -dot -html -rcs -rtf -subversion" LINGUAS="en pl -ar -ca -cs -de -es -eu -fi -fr -gl -he -hu -id -it -ja -nb -nn -pt -ro -ru -sk -tr -uk -zh_CN -zh_TW"
Comment 1 Antek Grzymała (antoszka) 2009-10-25 18:07:34 UTC
Created attachment 208229 [details]
Build log

Build log attached.
Comment 2 Rafał Mużyło 2009-10-25 19:03:13 UTC
See 'eselect boost'.
Comment 3 Antek Grzymała (antoszka) 2009-10-25 19:35:09 UTC
It's already set without touch anything:

$ sudo eselect boost list
Available boost versions:
  [1]   boost-1.35/default *

So I tried resetting it:

$ sudo eselect boost set 1
Removing symlinks from old version
Creating symlinks for boost-1.35/default
ln: creating symbolic link `libboost_filesystem-mt.so': File exists
!!! Error: Couldn't create symlink "/usr/lib64/libboost_filesystem-mt.so"
exiting
Comment 4 Rafał Mużyło 2009-10-25 20:41:23 UTC
That error tells that something went wrong:
all non-versioned libs should be just symlinks
to the versioned ones.

What's i.e. output of 'ln -l /usr/lib64/libboost_filesystem-mt.so' ?

On x86, with boost 1.39 selected, 'ls -l /usr/lib/libboost_filesystem-mt.so'
gives me:
lrwxrwxrwx 1 root root 30 10-10 15:31 /usr/lib/libboost_filesystem-mt.so -> libboost_filesystem-mt-1_39.so
Comment 5 Rafał Mużyło 2009-10-25 20:45:47 UTC
Oh, damned - I think I know what went wrong
- preserved-libs didn't work well with the change
from unslotted boost libs to slotted.
That's just a guess, but probably those unversioned files
are the preserved boost libs.
See, if you you can confirm that.
Comment 6 Antek Grzymała (antoszka) 2009-10-25 22:50:13 UTC
(In reply to comment #5)
> Oh, damned - I think I know what went wrong
> - preserved-libs didn't work well with the change
> from unslotted boost libs to slotted.
> That's just a guess, but probably those unversioned files
> are the preserved boost libs.
> See, if you you can confirm that.

Yep, that was the problem. I guess we need to change the bug title and have it assigned properly.

Comment 7 Tiziano Müller (RETIRED) gentoo-dev 2009-10-26 20:47:02 UTC
assigning it properly
Comment 8 Luke-Jr 2009-10-27 21:04:59 UTC
*** Bug 290776 has been marked as a duplicate of this bug. ***
Comment 9 Luke-Jr 2009-10-27 21:06:34 UTC
removing the preserved lib, eselecting a version, and rebuilding affected packages succeeds, but leaves the "preserved libs" flag on the file.
Comment 10 Sebastian Luther (few) 2009-10-27 22:16:21 UTC
This wouldn't have happened if =dev-libs/boost-1.35.0-r5 would properly block <=dev-libs/boost-1.35.0-r2.

*** This bug has been marked as a duplicate of bug 290691 ***
Comment 11 Zac Medico gentoo-dev 2009-10-27 22:32:46 UTC
I'm making this block bug 286714 since we might see issues similar to this when that's fixed.
Comment 12 Luke-Jr 2009-10-28 01:35:27 UTC
Re Comment #10: It wouldn't? Portage would do the same thing if there was an explicit block AFAIK...
Comment 13 Zac Medico gentoo-dev 2009-10-28 05:54:32 UTC
(In reply to comment #12)
> Re Comment #10: It wouldn't? Portage would do the same thing if there was an
> explicit block AFAIK...

You'd need a EAPI 2 hard !!atom blocker, and you also need >=portage-2.1.7 due to bug #270953.
Comment 14 Luke-Jr 2009-10-28 06:07:40 UTC
Even a hard-block will generally be resolved by a manual -C of the blocking package, which will leave the library once bug 286714 is fixed. I think having the eselect module clean up the mess may be the only realistic solution...
Comment 15 Sebastian Luther (few) 2009-10-28 14:22:37 UTC
(In reply to comment #14)
> Even a hard-block will generally be resolved by a manual -C of the blocking
> package, which will leave the library once bug 286714 is fixed.

As long as portage's behavior is as it is, a strong block is the best solution. And since Zac knows about the situation, he can report back when the time comes.

> I think having
> the eselect module clean up the mess may be the only realistic solution...
> 

That would mean, that eselect would have to delete things, that might or might not belong to some package or even worse that were put there by the user.

All newer version of boost have this strong block, there is no point for .35-r5 to not have it.