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.
Steps to Reproduce:
Portage 2.2_rc46 (default/linux/amd64/10.0, gcc-4.3.4, glibc-2.9_p20081201-r2, 220.127.116.11 x86_64)
System uname: Linux-18.104.22.168-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]
sys-devel/automake: 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2
CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
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"
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"
LINGUAS="en en_GB pl"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTDIR_OVERLAY="/usr/local/portage/layman/lisp /usr/local/portage/layman/sunrise /usr/local/portage/layman/roslin /usr/local/portage/antoni"
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
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"
Created attachment 208229 [details]
Build log attached.
See 'eselect boost'.
It's already set without touch anything:
$ sudo eselect boost list
Available boost versions:
 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"
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'
lrwxrwxrwx 1 root root 30 10-10 15:31 /usr/lib/libboost_filesystem-mt.so -> libboost_filesystem-mt-1_39.so
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.
(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.
assigning it properly
*** Bug 290776 has been marked as a duplicate of this bug. ***
removing the preserved lib, eselecting a version, and rebuilding affected packages succeeds, but leaves the "preserved libs" flag on the file.
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 ***
I'm making this block bug 286714 since we might see issues similar to this when that's fixed.
Re Comment #10: It wouldn't? Portage would do the same thing if there was an explicit block AFAIK...
(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.
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...
(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.