Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 269517 - >=dev-libs/boost-1.35.0-r3: no slot eselected by default
Summary: >=dev-libs/boost-1.35.0-r3: no slot eselected by default
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Tiziano Müller (RETIRED)
URL:
Whiteboard:
Keywords:
: 269495 269525 269560 269670 269671 269672 269703 269854 270021 270182 270227 270242 270818 275203 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-05-12 08:32 UTC by Justin Lecher (RETIRED)
Modified: 2009-06-23 19:44 UTC (History)
13 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Justin Lecher (RETIRED) gentoo-dev 2009-05-12 08:32:55 UTC
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.
Comment 1 Justin Lecher (RETIRED) gentoo-dev 2009-05-12 08:39:47 UTC
$ emerge -pvq boost
[ebuild   R   ] dev-libs/boost-1.37.0-r1  USE="expat python -debug -doc -eselect -icu -mpi -tools"
Comment 2 Sebastian Luther (few) 2009-05-12 09:03:45 UTC
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.
Comment 3 Sebastian Luther (few) 2009-05-12 15:26:39 UTC
*** Bug 269560 has been marked as a duplicate of this bug. ***
Comment 4 Sebastian Luther (few) 2009-05-13 10:24:13 UTC
*** Bug 269670 has been marked as a duplicate of this bug. ***
Comment 5 Sebastian Luther (few) 2009-05-13 10:25:12 UTC
*** Bug 269671 has been marked as a duplicate of this bug. ***
Comment 6 Sebastian Luther (few) 2009-05-13 10:26:44 UTC
As reference for the duplicates: use eselect boost to select the new version or enable the eselect useflag for boost.
Comment 7 Sebastian Luther (few) 2009-05-13 10:28:19 UTC
*** Bug 269525 has been marked as a duplicate of this bug. ***
Comment 8 Sebastian Luther (few) 2009-05-13 10:30:33 UTC
*** Bug 269495 has been marked as a duplicate of this bug. ***
Comment 9 Sebastian Luther (few) 2009-05-13 11:03:18 UTC
*** Bug 269672 has been marked as a duplicate of this bug. ***
Comment 10 Robert Bradbury 2009-05-13 12:14:51 UTC
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.
Comment 11 Sebastian Luther (few) 2009-05-13 13:58:00 UTC
*** Bug 269703 has been marked as a duplicate of this bug. ***
Comment 12 Denis Dupeyron (RETIRED) gentoo-dev 2009-05-13 14:07:30 UTC
Sebastian,

Please do not CC me on random bugs. I receive enough bugspam already.

Denis.
Comment 13 Sebastian Luther (few) 2009-05-13 17:33:46 UTC
> 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)
Comment 14 Tiziano Müller (RETIRED) gentoo-dev 2009-05-13 19:19:06 UTC
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.
Comment 15 Robert Bradbury 2009-05-14 07:54:08 UTC
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.
Comment 16 Sebastian Luther (few) 2009-05-14 15:43:16 UTC
*** Bug 269854 has been marked as a duplicate of this bug. ***
Comment 17 Robert Bradbury 2009-05-15 00:36:06 UTC
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.
Comment 18 Sebastian Luther (few) 2009-05-16 06:07:36 UTC
*** Bug 270021 has been marked as a duplicate of this bug. ***
Comment 19 Sebastian Luther (few) 2009-05-17 16:05:49 UTC
*** Bug 270182 has been marked as a duplicate of this bug. ***
Comment 20 Serkan Kaba (RETIRED) gentoo-dev 2009-05-18 04:26:17 UTC
*** Bug 270242 has been marked as a duplicate of this bug. ***
Comment 21 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2009-05-18 06:45:43 UTC
*** Bug 270227 has been marked as a duplicate of this bug. ***
Comment 22 Marijn Schouten (RETIRED) gentoo-dev 2009-05-18 12:07:54 UTC
(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...                                              
Comment 23 Marijn Schouten (RETIRED) gentoo-dev 2009-05-18 12:19:37 UTC
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.
Comment 24 Marijn Schouten (RETIRED) gentoo-dev 2009-05-18 12:20:17 UTC
$ 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
Comment 25 Łukasz Michalik 2009-05-18 12:31:15 UTC
Marijin, was that an upgrade?  If so, what version was being replaced by that install?
Comment 26 Łukasz Michalik 2009-05-19 14:05:35 UTC
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).
Comment 27 Sebastian Luther (few) 2009-05-19 15:43:52 UTC
Means it should be solved by a !!-blocker, right?
Comment 28 Peter Alfredsen (RETIRED) gentoo-dev 2009-05-19 20:41:25 UTC
(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.
Comment 29 Sebastian Luther (few) 2009-05-19 20:50:36 UTC
What about creating a 1.35 slot, moving the slot-aware versions in there and depend on !!boost:0?
Comment 30 Łukasz Michalik 2009-05-19 22:14:32 UTC
(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.
Comment 31 Peter Alfredsen (RETIRED) gentoo-dev 2009-05-19 22:26:29 UTC
> 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.
Comment 32 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2009-05-22 12:38:04 UTC
*** Bug 270818 has been marked as a duplicate of this bug. ***
Comment 33 Tiziano Müller (RETIRED) gentoo-dev 2009-05-24 05:42:37 UTC
Done.
Comment 34 Serkan Kaba (RETIRED) gentoo-dev 2009-06-23 16:55:23 UTC
*** Bug 275203 has been marked as a duplicate of this bug. ***