I emerged boost and run into bug 269510. Is this a bug? Otherwise there should be a big fat warning that one has to set it.
$ emerge -pvq boost [ebuild R ] dev-libs/boost-1.37.0-r1 USE="expat python -debug -doc -eselect -icu -mpi -tools"
pkg_postinst() { use eselect && eselect boost update if [ ! -h "${ROOT}/etc/eselect/boost/active" ] ; then elog "No active boost version found. Calling eselect to select one..." eselect boost update fi } Maybe put +eselect in IUSE? I think this is the behavior a user would expect.
*** Bug 269560 has been marked as a duplicate of this bug. ***
*** Bug 269670 has been marked as a duplicate of this bug. ***
*** Bug 269671 has been marked as a duplicate of this bug. ***
As reference for the duplicates: use eselect boost to select the new version or enable the eselect useflag for boost.
*** Bug 269525 has been marked as a duplicate of this bug. ***
*** Bug 269495 has been marked as a duplicate of this bug. ***
*** Bug 269672 has been marked as a duplicate of this bug. ***
The directory /etc/eselect/boost is empty. I specified "-doc" when emerging boost so perhaps that explans why "man module.eselect" does not work (though I would have expected this to be a man page for "eselect" not boost. My boost USE flags also included "-eselect". I have tried "eselect boost set 0.3" which is what "list" says as an available version. I have also tried "eselect boost set 1.37.0" which is what the new version is. Both not work and generate the message: Removing symlinks from old version !!! Error: ${link}" exists and isn't a symlink Killed Please specify the exact eselect command to set the active version of boost to 1.37.0. Thanks. Looking at the boost emerge log file (which I keep) it looks like the 1.37.0 emerge "tried" to set the active boost version but failed with the same error described above. So it looks like there is a "eselect" problem here as well. Note that eselect is kind of irrelevant in my situation. Because I was having so much trouble with boost and I generally try to avoid multiple slots I removed the 1.35 version before installing the 1.37 version.
*** Bug 269703 has been marked as a duplicate of this bug. ***
Sebastian, Please do not CC me on random bugs. I receive enough bugspam already. Denis.
> I have tried "eselect boost set 0.3" which is what "list" says as an available > version. I have also tried "eselect boost set 1.37.0" which is what the new > version is. Both not work and generate the message: > Removing symlinks from old version > !!! Error: ${link}" exists and isn't a symlink > Killed > This looks like a problem with your system. On my system I get $eselect boost list Available boost versions: [1] boost-1.37/default and "eselect set 1" selects 1.37. Alternative should "eselect boost update" work. Did you install boost without using a package manager at any time? I suggest you remove boost again and remove all boost related stuff from /usr/lib (or /usr/lib64) and /usr/include if something is left there. (buildpkg in FEATURES (make.conf) is your friend)
Ok, changed eselect to +eselect to have it run `eselect boost update` per default. @Robert: did you have a different boost version installed either from the gcc-porting-overlay or my dev-overlay? If yes, please remove all boost stuff, remove the symlinks in /usr/lib/libboost* manually and then reinstall boost. Sorry for the inconvinienc, but I broke backwards compatibility when developing the final ebuilds a couple of times when they lurked around in my overlay or in the tree p.masked.
See bug #269722 for a discussion of the eselect problems -- which appear to be due to a shell (bash) capabilities problem. On my system the scripts do not appear to be getting a shell capable of properly executing the eselect scripts. Or the eselect scripts are written for a non-standard shell. On top of this somehow an older version of boost installed /usr/include/boost as a directory (perhaps before boost became a slotted (eselected) package). It is necessary to remove /usr/include/boost for eselect to recreate it as a symlink.
*** Bug 269854 has been marked as a duplicate of this bug. ***
Tiziano, I did have an older version of eselect installed (It looks like Sep 2008 -- eselect-1.0.11-r1) which may have created /usr/include/boost as a directory rather than a symlink. As it looks like the *.eselect scripts do not deal with that case that explains the "${link}" error. However, that does not explain *why* the "current" eselect scripts do not run properly on my system. If I upgrade eselect on my system and lose the changes I have made (dashes to underscores in eselect and a direct printing of the "${link}" variable in boost.eselect I will be back to a dysfunctional eselect. The problem is not "RESOLVED" until an eselect is released which works with the "standard" shell syntax or it is determined why the "enhanced" shell options do not work on my system.
*** Bug 270021 has been marked as a duplicate of this bug. ***
*** Bug 270182 has been marked as a duplicate of this bug. ***
*** Bug 270242 has been marked as a duplicate of this bug. ***
*** Bug 270227 has been marked as a duplicate of this bug. ***
(In reply to comment #14) > Ok, changed eselect to +eselect to have it run `eselect boost update` per > default. > @Robert: did you have a different boost version installed either from the > gcc-porting-overlay or my dev-overlay? If yes, please remove all boost stuff, > remove the symlinks in /usr/lib/libboost* manually and then reinstall boost. > Sorry for the inconvinienc, but I broke backwards compatibility when developing > the final ebuilds a couple of times when they lurked around in my overlay or in > the tree p.masked. I have only ever used ~ boost and eselect and got (at the end of the build log): >>> /usr/lib64/boost-1_37/libboost_date_time.so -> ../libboost_date_time-1_37.so Previously selected profile: default Removing symlinks from old version !!! Error: ${link}" exists and isn't a symlink /var/tmp/portage/dev-libs/boost-1.37.0-r1/temp/environment: line 2755: 22993 Killed eselect boost update * No active boost version found. Calling eselect to select one... Previously selected profile: default Removing symlinks from old version !!! Error: ${link}" exists and isn't a symlink /var/tmp/portage/dev-libs/boost-1.37.0-r1/temp/environment: line 2755: 23012 Killed eselect boost update >>> Regenerating /etc/ld.so.cache...
I was able to manually set boost: # eselect boost set 1 Removing symlinks from old version Creating symlinks for boost-1.37/default After doing this things seem to be able to see boost again.
$ emerge --info Portage 2.1.6.13 (default/linux/amd64/2008.0/desktop, gcc-4.3.3, glibc-2.10.1-r0, 2.6.26-gentoo-r1 x86_64) ================================================================= System uname: Linux-2.6.26-gentoo-r1-x86_64-Intel-R-_Core-TM-2_CPU_6600_@_2.40GHz-with-gentoo-2.0.0 Timestamp of tree: Mon, 18 May 2009 09:00:01 +0000 app-shells/bash: 3.2_p48-r1 dev-lang/python: 2.6.2 dev-python/pycrypto: 2.0.1-r8 dev-util/cmake: 2.6.4 sys-apps/baselayout: 2.0.0 sys-apps/openrc: 0.4.3-r2 sys-apps/sandbox: 1.9 sys-devel/autoconf: 2.13, 2.63-r1 sys-devel/automake: 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.2 sys-devel/binutils: 2.19.1-r1 sys-devel/gcc-config: 1.4.1 sys-devel/libtool: 2.2.6a virtual/os-headers: 2.6.29 ACCEPT_KEYWORDS="amd64 ~amd64" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=core2 -O2 -pipe -ggdb" 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/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=core2 -O2 -pipe -ggdb" DISTDIR="/usr/portage/distfiles" FEATURES="collision-protect cvs distlocks fixpackages parallel-fetch protect-owned sandbox sfperms splitdebug strict unmerge-orphans userfetch" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en nl" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" 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="/home/marijn/git/gentoo-lisp-overlay /home/marijn/overlay" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X Xaw3d a52 aac acl acpi alsa amd64 bash-completion berkdb bluetooth branding bzip2 cairo cdr cli cracklib crypt cups dbus dri dts dvd dvdr dvdread eds emacs emboss encode esd evo fam firefox flac fortran gdbm gif gmp gpm gstreamer gtk hal history iconv ipv6 isdnlog jpeg kde kpathsea ldap libnotify lm_sensors mad metric midi mikmod mmx mng mp3 mpeg mudflap multilib mysql ncurses nls nptl nptlonly nvidia offensive ogg opengl openmp pam pcre pdf perl png ppds pppd python qt3 qt3support qt4 quicktime readline reflection sasl sdl session smp speex spell spl sse sse2 ssl startup-notification svg sysfs tcpd theora threads tiff truetype unicode usb vorbis webkit xinerama xml xorg xpm xulrunner xv zlib" ALSA_CARDS="hda-intel" 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="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en nl" USERLAND="GNU" VIDEO_CARDS="fbdev nouveau nv nvidia" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Marijin, was that an upgrade? If so, what version was being replaced by that install?
I think I know what portage did here. It found that :1.37 was !-blocking <1.35-r3:0, so it first installed :1.37 (and run it's pkg_postinst which failed because :0 was still installed and therefore /usr/include/boost was present) and then uninstalled :0 when it was too late. It also didn't care to notice, that there was a version in :0 slot that was not blocked by :1.37, and could've been first updated (which would magicly work because pkg_postinst is run after replaced version's unmerge).
Means it should be solved by a !!-blocker, right?
(In reply to comment #27) > Means it should be solved by a !!-blocker, right? > Looks like it. I can confirm that when doing (from boost-free install): install boost-1.35.0-r2 install boost-1.37.0-r1 eselect show will show (unset) whether USE=eselect is set or not. and when doing (from boost-free install): install boost-1.35.0-r2 uninstall boost-1.35.0-r2 install boost-1.37.0-r1 eselect show will show boost-1_37 when USE=eselect is set or not. So !! blocker seems to be the best way. That leaves what to do about the eselectable 1.35.0 versions, since portage will just ignore blocks within the same slot.
What about creating a 1.35 slot, moving the slot-aware versions in there and depend on !!boost:0?
(In reply to comment #28) Two long examples rewritten: 1) portage allows installing :1.37 when blocked version is installed, which breaks pkg_postinst. 2) you manually get your system clean, eselect correctly sets default version. > So !! blocker seems to be the best way. That leaves what to do about the > eselectable 1.35.0 versions, since portage will just ignore blocks within the > same slot. > (also in reply to comment #29) There are no blocks within same slot, as there's no need for them here. :0 is saemlessly updateable (it has to be as it saves you the burden of reinstalling everything that rdeps on boost which is one of the points of its slotting). The issue here, is that portage's handling of so called weak blocks is at best ill defined. One had to prepare dummy ebuilds to figure out what it does in slotted situations; other might have to do something similar when another quirk pops out.
> The issue here, is that portage's handling of so called weak blocks is at best > ill defined. One had to prepare dummy ebuilds to figure out what it does in > slotted situations; other might have to do something similar when another quirk > pops out. Weak blocks are defined as such: With weak blocks you cannot be certain that the blocked package is uninstalled when pkg_postinst is run. With strong blocks, you can be certain that it will be uninstalled when pkg_setup is run.
*** Bug 270818 has been marked as a duplicate of this bug. ***
Done.
*** Bug 275203 has been marked as a duplicate of this bug. ***