The issue is basically as follows: 1) - Update from glibc-2.3.5 to glibc-2.3.6. - On merging of the files, any symlink that is merged, is not modified if it points to a new file/whatever. For example: /lib/libc.so.6 points to libc-2.3.5.so The new /lib/libc.so.6 should now point to libc-2.3.6.so, but it does not - Now during the unmerge fase, it seems like portage checks the symlinks again, and since they are not valid, it removes them .. thus _all_ the symlinks apps use to resolve the libc libraries are missing. - After unmerge, instead of portage running 'ldconfig' to try and fix any linking/symlink issues that might be there, it just goes: 'hey, lests try to run pkg_postrm()' - Which fails horribly as nothing can find libc or the dynamic linker. 2) And on multilib systems: /lib64/ld-linux.so.2 points to ../lib32/ld-linux.so.2 But after the unmerge, it seems here at least that ../lib32/ld-linux.so.2 was already removed since it pointed to an invalid file, thus /lib64/ld-linux.so.2 is also removed, breaking all 32bit apps. 3) - Same thing basically as 2). as /lib/libdl.so.2 is missing, /usr/lib/libdl.so etc symlinks are aparently process after the /lib symlinks, so they get removed as /lib/libdl.so.2 is already missing. - Now try to build anything linking to libdl (or whatever that have a /usr/lib symlink to /lib), and instead of linking to libdl.so, it links to libdl.a which breaks. So basically, it seems portage not updating symlinks if they point to new locations during the merge fase have a few reprocussions, and in the case of glibc it: - leaves the system unusable until 'ldconfig' is called - breaks building anything linking to libdl, as the /usr/lib/libdl.so symlink is missing - breaks 32bit apps on multilib systems, as the dynamic loader (/lib/ld-linux.sso.2 symlink) is missing.
where is install instructions ?
(In reply to comment #1) > where is install instructions ? Huh?
I built glibc-2.3.6 on both default-linux/x86/2005.1 and default-linux/amd64/2005.1 profiles but was unable to reproduce this problem. +nls +pic -build +nptl +nptlonly -erandom -hardened +userlocales -multilib -selinux -glibc-compat20 -glibc-omitfp -linuxthreads-tls -profile
I had no problems merging gcc 2.3.6 on any machine. Perhaps this only is a problem with the devel versions of portage? Gentoo Base System version 1.6.13 Portage 2.0.51.22-r3 (default-linux/amd64/2005.1, gcc-4.0.2-20051020, glibc-2.3.6-r0, 2.6.14-ck4 x86_64) ================================================================= System uname: 2.6.14-ck4 x86_64 AMD Athlon(tm) 64 Processor 3500+ dev-lang/python: 2.4.2 sys-apps/sandbox: 1.2.12 sys-devel/autoconf: 2.13, 2.59-r6 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1 sys-devel/binutils: 2.16.1 sys-devel/libtool: 1.5.20 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -march=athlon64 -pipe -fno-ident" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/X11/xkb /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -march=athlon64 -pipe -fno-ident -fno-enforce-eh-specs -fvisibility-inlines-hidden" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks sandbox sfperms strict" GENTOO_MIRRORS="http://snigel.no-ip.com/ http://mirror.pudas.net/gentoo ftp://ftp.rhnet.is/pub/gentoo/" LANG="sv_SE.UTF-8" LC_ALL="sv_SE.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="sv" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="amd64 X aalib alsa artswrappersuid audiofile avi berkdb bzip2 cairo caps cdb cdr compositor crypt dbus dga dlloader dvd dvdr dvdread emboss encode exif expat f77 fam fbcon firefox foomaticdb fortran gif glibc-omitfp glut gmp gnome gphoto2 gpm gtk gtk2 hal imagemagick imlib ipv6 ithreads jack-tmpfs java javascript jpeg kdeenablefinal lcms logitech-mouse lzw lzw-tiff mad mikmod mng mozpango mp3 mpeg nautilus ncurses nls nomalloccheck nptl nptlonly nvidia objc offensive oggvorbis opengl pdflib perl pic png pnp python quicktime readline samba sdl spell ssl svg tcpd threads tiff truetype truetype-fonts type1-fonts udev unicode usb userlocales visualization xine xml2 xmms xpm xv xvid zlib video_cards_nvidia linguas_sv userland_GNU kernel_linux elibc_glibc" Unset: ASFLAGS, CTARGET
(In reply to comment #4) > I had no problems merging gcc 2.3.6 on any machine. Perhaps this only is a > problem with the devel versions of portage? I meant glibc 2.3.6 of course. :)
Az, post a -d run where this occurs. Also, get that conditional setting of PROVIDE the hell out of the ebuild. It's not valid how y'all are using it. Finally, kindly remove that @!#*ing Portage sucks from the ebuild and properly mask it instead of an intentional die stuck in a build.
(In reply to comment #6) > Az, post a -d run where this occurs. > Ill try. > Also, get that conditional setting of PROVIDE the hell out of the ebuild. It's > not valid how y'all are using it. > Cannot see how it matters for this case. > Finally, kindly remove that @!#*ing Portage sucks from the ebuild and properly > mask it instead of an intentional die stuck in a build. Sorry, joke in bad taste.
Created attachment 72626 [details] 3811-glibc-2.3.6.log.bz2 Logs of merge (no -d yet) ... nothing interesting really.
Created attachment 72627 [details] 3812-glibc-2.3.6.log More logs.
Created attachment 72628 [details] lib-before-ldconfig.log 'ls /lib' before running ldconfig (just after emerge crashed).
Created attachment 72629 [details] lib-after-ldconfig.log 'ls /lib' after running ldconfig.
Diff of the two previous attatchments .. notice all the symlinks were missing: ----- --- lib-before-ldconfig.log 2005-11-11 12:31:27.000000000 +0200 +++ lib-after-ldconfig.log 2005-11-11 12:31:27.000000000 +0200 @@ -9,9 +9,12 @@ ld-2.3.6.so ld-linux.so.1 ld-linux.so.1.9.11 +ld-linux.so.2 libBrokenLocale-2.3.6.so +libBrokenLocale.so.1 libSegFault.so libanl-2.3.6.so +libanl.so.1 libblkid.so libblkid.so.1 libblkid.so.1.0 @@ -20,7 +23,9 @@ libbz2.so.1.0 libbz2.so.1.0.3 libc-2.3.6.so +libc.so.6 libcidn-2.3.6.so +libcidn.so.1 libcom_err.so libcom_err.so.2 libcom_err.so.2.1 @@ -28,10 +33,12 @@ libcrack.so.2 libcrack.so.2.8.0 libcrypt-2.3.6.so +libcrypt.so.1 libcurses.so libdevmapper.so libdevmapper.so.1.01 libdl-2.3.6.so +libdl.so.2 libe2p.so libe2p.so.2 libe2p.so.2.3 @@ -47,17 +54,25 @@ libhistory.so.5 libhistory.so.5.0 libm-2.3.6.so +libm.so.6 libmemusage.so libncurses.so libncurses.so.5 libncurses.so.5.5 libnsl-2.3.6.so +libnsl.so.1 libnss_compat-2.3.6.so +libnss_compat.so.2 libnss_dns-2.3.6.so +libnss_dns.so.2 libnss_files-2.3.6.so +libnss_files.so.2 libnss_hesiod-2.3.6.so +libnss_hesiod.so.2 libnss_nis-2.3.6.so +libnss_nis.so.2 libnss_nisplus-2.3.6.so +libnss_nisplus.so.2 libpam.so libpam.so.0 libpam.so.0.78 @@ -70,6 +85,7 @@ libpcprofile.so libproc-3.2.5.so libpthread-2.3.6.so +libpthread.so.0 libpwdb.so libpwdb.so.0 libpwdb.so.0.62 @@ -77,7 +93,9 @@ libreadline.so.5 libreadline.so.5.0 libresolv-2.3.6.so +libresolv.so.2 librt-2.3.6.so +librt.so.1 libss.so libss.so.2 libss.so.2.0 @@ -88,6 +106,7 @@ libthread_db-1.0.so libthread_db.so.1 libutil-2.3.6.so +libutil.so.1 libuuid.so libuuid.so.1 libuuid.so.1.2
Final merge output. Notice where it first removes all the /lib symlinks, and then the /usr/lib symlinks due to the /lib symlinks missing: ----- --- !mtime obj /sbin/sln --- !mtime obj /sbin/ldconfig <<< obj /lib/libutil-2.3.90.so --- !mtime obj /lib/libthread_db-1.0.so <<< obj /lib/librt-2.3.90.so <<< obj /lib/libresolv-2.3.90.so <<< obj /lib/libpthread-2.3.90.so --- !mtime obj /lib/libpcprofile.so <<< obj /lib/libnss_nisplus-2.3.90.so <<< obj /lib/libnss_nis-2.3.90.so <<< obj /lib/libnss_hesiod-2.3.90.so <<< obj /lib/libnss_files-2.3.90.so <<< obj /lib/libnss_dns-2.3.90.so <<< obj /lib/libnss_compat-2.3.90.so <<< obj /lib/libnsl-2.3.90.so --- !mtime obj /lib/libmemusage.so <<< obj /lib/libm-2.3.90.so <<< obj /lib/libdl-2.3.90.so <<< obj /lib/libcrypt-2.3.90.so <<< obj /lib/libcidn-2.3.90.so <<< obj /lib/libc-2.3.90.so <<< obj /lib/libanl-2.3.90.so --- !mtime obj /lib/libSegFault.so <<< obj /lib/libBrokenLocale-2.3.90.so <<< obj /lib/ld-2.3.90.so --- !mtime obj /lib/gconv_pic.map --- cfgpro obj /etc/rpc --- cfgpro obj /etc/nsswitch.conf --- cfgpro obj /etc/nscd.conf --- cfgpro obj /etc/init.d/nscd --- cfgpro dir /etc/init.d --- cfgpro obj /etc/host.conf <<< sym /usr/lib/libutil.so <<< sym /usr/lib/librt.so <<< sym /usr/lib/libresolv.so <<< sym /usr/lib/libnss_nisplus.so <<< sym /usr/lib/libnss_nis.so <<< sym /usr/lib/libnss_hesiod.so <<< sym /usr/lib/libnss_files.so <<< sym /usr/lib/libnss_dns.so <<< sym /usr/lib/libnss_compat.so <<< sym /usr/lib/libnsl.so <<< sym /usr/lib/libm.so <<< sym /usr/lib/libdl.so <<< sym /usr/lib/libcrypt.so <<< sym /usr/lib/libcidn.so <<< sym /usr/lib/libanl.so <<< sym /usr/lib/libBrokenLocale.so <<< sym /lib/libutil.so.1 <<< sym /lib/librt.so.1 <<< sym /lib/libresolv.so.2 <<< sym /lib/libpthread.so.0 <<< sym /lib/libnss_nisplus.so.2 <<< sym /lib/libnss_nis.so.2 <<< sym /lib/libnss_hesiod.so.2 <<< sym /lib/libnss_files.so.2 <<< sym /lib/libnss_dns.so.2 <<< sym /lib/libnss_compat.so.2 <<< sym /lib/libnsl.so.1 <<< sym /lib/libm.so.6 <<< sym /lib/libdl.so.2 <<< sym /lib/libcrypt.so.1 <<< sym /lib/libcidn.so.1 <<< sym /lib/libc.so.6 <<< sym /lib/libanl.so.1 <<< sym /lib/libBrokenLocale.so.1 <<< sym /lib/ld-linux.so.2 <<< dir /usr/share/doc/glibc-2.3.5.20050722 --- !empty dir /usr/share/zoneinfo/right/US --- !empty dir /usr/share/zoneinfo/right/SystemV --- !empty dir /usr/share/zoneinfo/right/Pacific --- !empty dir /usr/share/zoneinfo/right/Mideast --- !empty dir /usr/share/zoneinfo/right/Mexico --- !empty dir /usr/share/zoneinfo/right/Indian --- !empty dir /usr/share/zoneinfo/right/Europe --- !empty dir /usr/share/zoneinfo/right/Etc --- !empty dir /usr/share/zoneinfo/right/Chile --- !empty dir /usr/share/zoneinfo/right/Canada --- !empty dir /usr/share/zoneinfo/right/Brazil --- !empty dir /usr/share/zoneinfo/right/Australia --- !empty dir /usr/share/zoneinfo/right/Atlantic --- !empty dir /usr/share/zoneinfo/right/Asia --- !empty dir /usr/share/zoneinfo/right/Arctic --- !empty dir /usr/share/zoneinfo/right/Antarctica --- !empty dir /usr/share/zoneinfo/right/America/North_Dakota --- !empty dir /usr/share/zoneinfo/right/America/Kentucky --- !empty dir /usr/share/zoneinfo/right/America/Indiana --- !empty dir /usr/share/zoneinfo/right/America/Argentina --- !empty dir /usr/share/zoneinfo/right/America --- !empty dir /usr/share/zoneinfo/right/Africa --- !empty dir /usr/share/zoneinfo/right --- !empty dir /usr/share/zoneinfo/posix/US --- !empty dir /usr/share/zoneinfo/posix/SystemV --- !empty dir /usr/share/zoneinfo/posix/Pacific --- !empty dir /usr/share/zoneinfo/posix/Mideast --- !empty dir /usr/share/zoneinfo/posix/Mexico --- !empty dir /usr/share/zoneinfo/posix/Indian --- !empty dir /usr/share/zoneinfo/posix/Europe --- !empty dir /usr/share/zoneinfo/posix/Etc --- !empty dir /usr/share/zoneinfo/posix/Chile --- !empty dir /usr/share/zoneinfo/posix/Canada --- !empty dir /usr/share/zoneinfo/posix/Brazil --- !empty dir /usr/share/zoneinfo/posix/Australia --- !empty dir /usr/share/zoneinfo/posix/Atlantic --- !empty dir /usr/share/zoneinfo/posix/Asia --- !empty dir /usr/share/zoneinfo/posix/Arctic --- !empty dir /usr/share/zoneinfo/posix/Antarctica --- !empty dir /usr/share/zoneinfo/posix/America/North_Dakota --- !empty dir /usr/share/zoneinfo/posix/America/Kentucky --- !empty dir /usr/share/zoneinfo/posix/America/Indiana --- !empty dir /usr/share/zoneinfo/posix/America/Argentina --- !empty dir /usr/share/zoneinfo/posix/America --- !empty dir /usr/share/zoneinfo/posix/Africa --- !empty dir /usr/share/zoneinfo/posix --- !empty dir /usr/share/zoneinfo/US --- !empty dir /usr/share/zoneinfo/SystemV --- !empty dir /usr/share/zoneinfo/Pacific --- !empty dir /usr/share/zoneinfo/Mideast --- !empty dir /usr/share/zoneinfo/Mexico --- !empty dir /usr/share/zoneinfo/Indian --- !empty dir /usr/share/zoneinfo/Europe --- !empty dir /usr/share/zoneinfo/Etc --- !empty dir /usr/share/zoneinfo/Chile --- !empty dir /usr/share/zoneinfo/Canada --- !empty dir /usr/share/zoneinfo/Brazil --- !empty dir /usr/share/zoneinfo/Australia --- !empty dir /usr/share/zoneinfo/Atlantic --- !empty dir /usr/share/zoneinfo/Asia --- !empty dir /usr/share/zoneinfo/Arctic --- !empty dir /usr/share/zoneinfo/Antarctica --- !empty dir /usr/share/zoneinfo/America/North_Dakota --- !empty dir /usr/share/zoneinfo/America/Kentucky --- !empty dir /usr/share/zoneinfo/America/Indiana --- !empty dir /usr/share/zoneinfo/America/Argentina --- !empty dir /usr/share/zoneinfo/America --- !empty dir /usr/share/zoneinfo/Africa --- !empty dir /usr/share/zoneinfo --- !empty dir /usr/share/man/man3 --- !empty dir /usr/share/man --- !empty dir /usr/share/locale/zh_TW/LC_MESSAGES --- !empty dir /usr/share/locale/zh_TW --- !empty dir /usr/share/locale/zh_CN/LC_MESSAGES --- !empty dir /usr/share/locale/zh_CN --- !empty dir /usr/share/locale/tr/LC_MESSAGES --- !empty dir /usr/share/locale/tr --- !empty dir /usr/share/locale/sv/LC_MESSAGES --- !empty dir /usr/share/locale/sv --- !empty dir /usr/share/locale/sk/LC_MESSAGES --- !empty dir /usr/share/locale/sk --- !empty dir /usr/share/locale/rw/LC_MESSAGES --- !empty dir /usr/share/locale/rw --- !empty dir /usr/share/locale/ru/LC_MESSAGES --- !empty dir /usr/share/locale/ru --- !empty dir /usr/share/locale/pt_BR/LC_MESSAGES --- !empty dir /usr/share/locale/pt_BR --- !empty dir /usr/share/locale/pl/LC_MESSAGES --- !empty dir /usr/share/locale/pl --- !empty dir /usr/share/locale/nl/LC_MESSAGES --- !empty dir /usr/share/locale/nl --- !empty dir /usr/share/locale/nb/LC_MESSAGES --- !empty dir /usr/share/locale/nb --- !empty dir /usr/share/locale/ko/LC_MESSAGES --- !empty dir /usr/share/locale/ko --- !empty dir /usr/share/locale/ja/LC_MESSAGES --- !empty dir /usr/share/locale/ja --- !empty dir /usr/share/locale/it/LC_MESSAGES --- !empty dir /usr/share/locale/it --- !empty dir /usr/share/locale/hu/LC_MESSAGES --- !empty dir /usr/share/locale/hu --- !empty dir /usr/share/locale/hr/LC_MESSAGES --- !empty dir /usr/share/locale/hr --- !empty dir /usr/share/locale/gl/LC_MESSAGES --- !empty dir /usr/share/locale/gl --- !empty dir /usr/share/locale/fr/LC_MESSAGES --- !empty dir /usr/share/locale/fr --- !empty dir /usr/share/locale/fi/LC_MESSAGES --- !empty dir /usr/share/locale/fi --- !empty dir /usr/share/locale/es/LC_MESSAGES --- !empty dir /usr/share/locale/es --- !empty dir /usr/share/locale/en_GB/LC_MESSAGES --- !empty dir /usr/share/locale/en_GB --- !empty dir /usr/share/locale/el/LC_MESSAGES --- !empty dir /usr/share/locale/el --- !empty dir /usr/share/locale/de/LC_MESSAGES --- !empty dir /usr/share/locale/de --- !empty dir /usr/share/locale/da/LC_MESSAGES --- !empty dir /usr/share/locale/da --- !empty dir /usr/share/locale/cs/LC_MESSAGES --- !empty dir /usr/share/locale/cs --- !empty dir /usr/share/locale/ca/LC_MESSAGES --- !empty dir /usr/share/locale/ca --- !empty dir /usr/share/locale/be/LC_MESSAGES --- !empty dir /usr/share/locale/be --- !empty dir /usr/share/locale --- !empty dir /usr/share/info --- !empty dir /usr/share/i18n/locales --- !empty dir /usr/share/i18n/charmaps --- !empty dir /usr/share/i18n --- !empty dir /usr/share/doc --- !empty dir /usr/share --- !empty dir /usr/sbin --- !empty dir /usr/lib/misc/glibc/getconf --- !empty dir /usr/lib/misc/glibc --- !empty dir /usr/lib/misc --- !empty dir /usr/lib/locale/en_US/LC_MESSAGES --- !empty dir /usr/lib/locale/en_US.utf8/LC_MESSAGES --- !empty dir /usr/lib/locale/en_US.utf8 --- !empty dir /usr/lib/locale/en_US --- !empty dir /usr/lib/locale --- !empty dir /usr/lib/gconv --- !empty dir /usr/lib --- !empty dir /usr/include/sys --- !empty dir /usr/include/scsi --- !empty dir /usr/include/rpcsvc --- !empty dir /usr/include/rpc --- !empty dir /usr/include/protocols --- !empty dir /usr/include/nfs --- !empty dir /usr/include/netrose --- !empty dir /usr/include/netrom --- !empty dir /usr/include/netpacket --- !empty dir /usr/include/netipx --- !empty dir /usr/include/netinet --- !empty dir /usr/include/neteconet --- !empty dir /usr/include/netax25 --- !empty dir /usr/include/netatalk --- !empty dir /usr/include/netash --- !empty dir /usr/include/net --- !empty dir /usr/include/gnu --- !empty dir /usr/include/bits --- !empty dir /usr/include/arpa --- !empty dir /usr/include --- !empty dir /usr/bin --- !empty dir /usr --- !empty dir /sbin --- !empty dir /lib --- !empty dir /etc --- !targe sym /usr/lib/libthread_db.so --- !targe sym /usr/lib/libbsd.a --- !targe sym /lib/libthread_db.so.1 Traceback (most recent call last): File "/usr/bin/emerge", line 3222, in ? mydepgraph.merge(pkglist) File "/usr/bin/emerge", line 1960, in merge retval=unmerge("clean", [xsplit[0]]) File "/usr/bin/emerge", line 2250, in unmerge retval=portage.unmerge(mysplit[0],mysplit[1],portage.root,mysettings,unmerge_action not in ["clean","prune"]) File "/usr/lib/portage/pym/portage.py", line 2951, in unmerge mylink.unmerge(trimworld=mytrimworld,cleanup=1) File "/usr/lib/portage/pym/portage.py", line 6427, in unmerge a=doebuild(myebuildpath,"postrm",self.myroot,self.settings,use_cache=0,tree=self.treetype) File "/usr/lib/portage/pym/portage.py", line 2651, in doebuild return spawn(EBUILD_SH_BINARY+" "+mydo,mysettings,debug=debug,free=1,logfile=logfile) File "/usr/lib/portage/pym/portage.py", line 1615, in spawn !!! FAILED postrm: 1
Ps, this was on my P4, where the original issue was on my amd64. Now I admit I could have diagnosed the issue wrongly, but I did not imagine it ;) And from the success reports (2.3.5 to 2.3.6) it seems it might be rather from glibc-2.3.5.2005* to glibc-2.3.6 upgrades. Ps, what does the symlink stuff do? Use some external app to check if they present or not ... as this might also explain it ... ?
Created attachment 72631 [details, diff] debug output run with this patch please, tagging the merge output into an attachment.
Created attachment 72635 [details] glibc-merge.log.bz2 Here is your emerge -d log with the patch .. had to modify the patch though, as it tried the os.readlink() printing _after_ unlinking.
Now what you will notice, is: - It aparently merges the symlinks properly pointing to the correct file - Then when it comes to unmerge, it points to the old file again. I can only assume that portage runs a ldconfig inbetween merge and unmerge, as this will explain it? Anyhow, because the actual libs are already removed, it chucks the invalid symlinks - Finished with unmerging, it does not run ldconfig again, and due to nothing finding libc/whatever, portage crashes. Possible fixes are: 1) Run ldconfig after unmerge .. this will however not fix the /usr/lib/libdl.so, etc symlinks being nuked. 2) Same as above, but do not remove invalid symlinks. Not sure if this will cause any issues. 3) Do not run the aparent ldconfig inbetween merge and unmerge .. not sure if this will break things either .. it in theory should not, as preplib and co should make sure the merged stuff have the proper symlinks to the libraries. So not sure .. maybe 3) is the best solution. We might have to bug Nick though, is I know he did lots of testing with the merge code and glibc/whatever in the past. Anyhow, I hope this will get us past the 'dev error' or 'PROVIDE is set conditionally' BS ?
Created attachment 72640 [details, diff] portage-library-symlink.patch Proposed patch which works here. Basically it does: - change running of env_update after merge to not ever update symlinks .. those should be correct after the preplib run - run env_update after unmerge and let it update symlinks
Created attachment 72643 [details, diff] portage-library-symlink.patch Should be better patch. Remove unused code, and do not run env_update twice.
I haven't had a look at the patch yet, but the main thing to be careful of is that it does not break downgrading of glibc. If you can test that to make sure it works in the standard case (lib version downgrade and portage version downgrade) as well as your weird version mismatch case... By the way, the 'PROVIDE is set conditionally' BS is not BS. PROVIDE, like almost every other var, will be based on however any conditionals are evaluated at the time the cache is generated. And yes, PROVIDE is used prior to an ebuild being merged.
(In reply to comment #20) > I haven't had a look at the patch yet, but the main thing to be careful of is > that it does not break downgrading of glibc. If you can test that to make sure > it works in the standard case (lib version downgrade and portage version > downgrade) as well as your weird version mismatch case... > Here glibc works fine on stable x86, for 2.3.5-r2 -> 2.3.6, then back from 2.3.6 to 2.3.5-r2, then back again. Brian mentioned the new patch calling env_update conditional in treewalk .. added some debugging: ----- glibc-2.3.5_to_2.3.6-update.log:>>> testing env_update (treewalk) glibc-2.3.5_to_2.3.6-update.log:>>> testing env_update (unmerge) glibc-2.3.6-remerge.log:>>> testing in treewalk before self.unmerge(oldcontents,trimworld=0) glibc-2.3.6-remerge.log:>>> testing env_update (unmerge) glibc-2.3.6-remerge.log:>>> testing in treewalk after self.unmerge(oldcontents,trimworld=0) glibc-2.3.6_to_2.3.5-downgrade.log:>>> testing env_update (treewalk) glibc-2.3.6_to_2.3.5-downgrade.log:>>> testing env_update (unmerge) ----- Which seems fine, as for update/downgrade, merge (ala treewalk) and unmerge is called in 'seperate runs', but for remerge, unmerge is called from treewalk. > By the way, the 'PROVIDE is set conditionally' BS is not BS. PROVIDE, like > almost every other var, will be based on however any conditionals are > evaluated at the time the cache is generated. And yes, PROVIDE is used prior > to an ebuild being merged. I wanted to get the fishing for ebuild/'dev error' fishing out of the way, which is BS in regards to possible reasons for this issue.
Portage downgrade/upgrade seems to work fine.
Portage has no libraries. ;) If it survives portage up/glibc down, portage up/glibc up and portage down/glibc down then it should be safe enough to throw out into the wild.
(In reply to comment #23) > Portage has no libraries. ;) > Heh, you asked me to test it ;p
Ok, like I said in previous comment, glibc up/down grade works just fine. Also tested glib/gtk+ and they work fine as well.
this probably doesn't need a confirm, but FYI i can reproduce this on my machine.
I'm having the same problem. I've upgraded from a very stable GCC 3.4.4 / glibc-2.3.5-r2 system, attempting to upgrade to GCC 4.1-beta-20051125. i can successfully compile & install GCC, but when i attempt to compile glibc 2.3.6 I get the following error message: <snip># emerge glibc -v Calculating dependencies ...done! >>> emerge (1 of 1) sys-libs/glibc-2.3.6-r1 to / >>> md5 src_uri ;-) glibc-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-linuxthreads-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-libidn-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-2.3.6-patches-1.2.tar.bz2 >>> md5 src_uri ;-) glibc-manpages-2.3.6-1.tar.bz2 >>> md5 src_uri ;-) glibc-infopages-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-fedora-20041219T2331.tar.bz2 * Portage have a serious bug in regards to symlinks, and merging * this with current versions will fail! See: * http://bugs.gentoo.org/show_bug.cgi?id=112082 * If you want to update, please apply this patch: * http://bugs.gentoo.org/attachment.cgi?id=72643 </snip> now here's what's interesting: on the first pass, the error message appeared. on every subsequent attempt to compile glibc, the error report is not displayed and compilation just fails. syncing and re-emerging portage doesn't help, and the recommended python script doesn't fix the bug either: <snip># emerge glibc -v Calculating dependencies ...done! >>> emerge (1 of 1) sys-libs/glibc-2.3.6-r1 to / >>> md5 src_uri ;-) glibc-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-linuxthreads-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-libidn-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-2.3.6-patches-1.2.tar.bz2 >>> md5 src_uri ;-) glibc-manpages-2.3.6-1.tar.bz2 >>> md5 src_uri ;-) glibc-infopages-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-fedora-20041219T2331.tar.bz2 </snip> <xnip># /etc/env.d/gcc/portage.py /etc/env.d/gcc/portage.py: line 1: ---: command not found /etc/env.d/gcc/portage.py: line 2: +++: command not found /etc/env.d/gcc/portage.py: line 3: @@: command not found /etc/env.d/gcc/portage.py: line 4: syntax error near unexpected token `"!!! FAILED postrm: "+str' /etc/env.d/gcc/portage.py: line 4: ` writemsg("!!! FAILED postrm: "+str(a)+"\n")' todland gcc # emerge glibc -v Calculating dependencies ...done! >>> emerge (1 of 1) sys-libs/glibc-2.3.6-r1 to / >>> md5 src_uri ;-) glibc-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-linuxthreads-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-libidn-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-2.3.6-patches-1.2.tar.bz2 >>> md5 src_uri ;-) glibc-manpages-2.3.6-1.tar.bz2 >>> md5 src_uri ;-) glibc-infopages-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-fedora-20041219T2331.tar.bz2 </snip> :-/
> /etc/env.d/gcc/portage.py: line 1: ---: command not found It's a patch to portage, not a python file to try and run.
got a bit more information in the error this time: <snip> >>> md5 src_uri ;-) glibc-manpages-2.3.6-1.tar.bz2 >>> md5 src_uri ;-) glibc-infopages-2.3.6.tar.bz2 >>> md5 src_uri ;-) glibc-fedora-20041219T2331.tar.bz2 * Portage have a serious bug in regards to symlinks, and merging * this with current versions will fail! See: * http://bugs.gentoo.org/show_bug.cgi?id=112082 * If you want to update, please apply this patch: * http://bugs.gentoo.org/attachment.cgi?id=72643 * to '/usr/lib/portage/portage.py' and * comment the die() below. !!! ERROR: sys-libs/glibc-2.3.6-r1 failed. !!! Function pkg_setup, Line 1127, Exitcode 0 !!! Might break upgrading. !!! If you need support, post the topmost build error, NOT this status message. </snip> unfortunately the error message in the ebuild is sufficiently cryptic that it leaves the user with no idea what to do. could someone explain this in a bit more detail?
(In reply to comment #29) > unfortunately the error message in the ebuild is sufficiently cryptic that it > leaves the user with no idea what to do. could someone explain this in a bit > more detail? > * If you want to update, please apply this patch: > > * http://bugs.gentoo.org/attachment.cgi?id=72643 > > * to '/usr/lib/portage/portage.py' and > * comment the die() below. i think it's pretty safe to assume that if a user is willingly trying to use an experimental, unsupported, keyword-masked, alpha level compiler to build an unsupported, keyword-masked glibc, they know how to apply a simple patch and comment a line in an ebuild as is clearly described in that message.
er, except that it should be "/usr/lib/portage/pym/portage.py", not "/usr/lib/portage/portage.py". =P
I was hoping that someone would provide helpful information instead of an insult that would have been more appropritate on a Debian forum. :o
(In reply to comment #32) > I was hoping that someone would provide helpful information instead of an insult > that would have been more appropritate on a Debian forum. :o I assume that is in response to comment 30, which IMHO, was not insulting in the least. Patching a program is a relatively simple affair; although I'd agree that explicit instructions would be better. Ebuilds generally don't say "copy this file over that" they say "cp /foo/bar /foobar". In either case, you will probably want to use 'patch' to apply the patch to portage, and it's manpage documents it's usage. However, a simple 'cd /usr/lib/portage/ && patch -p0 --dry-run < /path/to/patch' should probably suffice.
Released in 2.1_pre1.
The patch doesn't apply cleanly to portage-2.10_pre10-r5. Is it still required? Or can I simply comment out the kill?
(In reply to comment #35) > The patch doesn't apply cleanly to portage-2.10_pre10-r5. Is it still required? No patch is needed for >=portage-2.1_pre1.
(In reply to comment #30 which implies we shouldn't hit this bug unless we're unmasking experimental bits) As far as I can tell, I'm not trying to emerge anything experimental. The only pieces I have unmasked or done something remotely naughty are skype and sun's java. I could be wrong, but I don't think so. If I SHOULD NOT be hitting this bug, and I AM pulling something experimental, and you would like to know more about my config, I'll happily provide what I can.