Summary: | create a new pkg "emul-linux-x86-glibc-2.0-compat" | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Jiri Tyr <jiri.tyr> |
Component: | New packages | Assignee: | Gentoo Toolchain Maintainers <toolchain> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | ||
Priority: | High | ||
Version: | 2007.0 | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
emul-linux-x86-glibc-errno-compat-2.5.ebuild
files/glibc-errno-wrapper matlab.log |
Description
Jiri Tyr
2008-01-30 10:47:30 UTC
no, it is not possible ... the old glibc-2.0 compat interface requires linuxthreads which does not exist in glibc-2.6+ please review this document: http://dev.gentoo.org/~vapier/old-broken-errno-apps perhaps we could convert this into a FAQ of some sorts ... (In reply to comment #1) > no, it is not possible ... the old glibc-2.0 compat interface requires > linuxthreads which does not exist in glibc-2.6+ > > please review this document: > http://dev.gentoo.org/~vapier/old-broken-errno-apps > > perhaps we could convert this into a FAQ of some sorts ... OK. I understand. The only solution is to mask >=glibc-2.6. Then you should keep all portage tree independent on >=glibc-2.6 because at the moment when you make some update depending in >=glibc-2.6 all systems which are running old commercial applications will be not updatable. This is also one of the different between commercial and non-commercial Linux distributions. If you manage that, Gentoo will be on the same level. I pray to you manage that, otherwise I have to move to an other distro. Please could you add a breakpoint into the ebuild of glibc-2.6 that if somebody have USE="glibc-compat20" that he shouldn't upgrade because of the incompatibility with GLIBC_2.0? Because now, when I want to downgrade back to glibc-2.5 it will cost me a lot of time with recompiling all the packages which was compiled after the date of installing of the new glibc-2.6. Maybe I could ask you what's the best way of downgrading of glibc, because I don't wanna breakdown my system. (In reply to comment #3) > Maybe I could ask you what's the best way of downgrading of glibc, because I > don't wanna breakdown my system. There's no way to downgrade glibc version beyond reinstall from scratch. (In reply to comment #4) > (In reply to comment #3) > > Maybe I could ask you what's the best way of downgrading of glibc, because I > > don't wanna breakdown my system. > > There's no way to downgrade glibc version beyond reinstall from scratch. > Then I'm urging on you to you add a breakpoint into the ebuild >=glibc-2.6 to avoid to install new version for users who use USE="glibc-compat20". It's not fair to let people upgrade glibc without any notification that there is no GLIBC_2.0 support anymore! no, i'm not adding a die to the ebuild ... a better solution is to put together a little emul package like "emul-linux-x86-glibc-2.0-compat" and have people use that (In reply to comment #6) > no, i'm not adding a die to the ebuild ... a better solution is to put together > a little emul package like "emul-linux-x86-glibc-2.0-compat" and have people > use that OK, that sounds good! When can I expect this package in portage tree? ;o) Created attachment 143760 [details]
emul-linux-x86-glibc-errno-compat-2.5.ebuild
please test
Created attachment 143762 [details]
files/glibc-errno-wrapper
(In reply to comment #8) > Created an attachment (id=143760) [edit] > emul-linux-x86-glibc-errno-compat-2.5.ebuild > > please test I just installed emul-linux-x86-glibc-errno-compat-2.5 and Matlab still doesn't work: $ /etc/lmboot_TMW -u matlab /var/tmp/lm_TMW.ld: relocation error: /var/tmp/lm_TMW.ld: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference $ LD_ASSUME_KERNEL="2.4.1" /etc/lmboot_TMW -u matlab /bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory you arent supposed to execute the app, you need to run it through the wrapper glibc-errno-wraper <your app> (In reply to comment #11) > you arent supposed to execute the app, you need to run it through the wrapper > > glibc-errno-wraper <your app> OK, I didn't know how does it work. Now, I tried this: $ glibc-errno-wrapper /etc/lmboot_TMW -u matlab /usr/bin/glibc-errno-wrapper: line 2: /usr/lib/glibc-errno-compat/lib/ld-linux.so.2: No such file or directory /usr/bin/glibc-errno-wrapper: line 2: exec: /usr/lib/glibc-errno-compat/lib/ld-linux.so.2: cannot execute: No such file or directory According to "epm -ql emul-linux-x86-glibc-errno-compat", the file /usr/lib/glibc-errno-compat/lib/ld-linux.so.2 doesn't exist: $ epm -ql emul-linux-x86-glibc-errno-compat /usr/bin/glibc-errno-wrapper /usr/lib/glibc-errno-compat/lib/ld-linux.so.6 /usr/lib/glibc-errno-compat/lib/libpthread.so.0 /usr/lib/glibc-errno-compat/lib/libc.so.6 So I changed ld-linux.so.2 to ld-linux.so.6 in glibc-errno-wrapper and it still doesn't work: $ glibc-errno-wrapper /etc/lmboot_TMW -u matlab /etc/lmboot_TMW: error while loading shared libraries: /etc/lmboot_TMW: invalid ELF header Then I tried to execute the BIN file directly: $ glibc-errno-wrapper "/usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat" /usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat: error while loading shared libraries: /usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat: cannot open shared object file: No such file or directory If you need any other informations, please let me know. the ebuild has a typoe with the ld-linux install name ... renaming it like you said works if /etc/lmboot_TMW is a shell script, then you will have to modify it so that it executes the binary with the wrapper (In reply to comment #13) > if /etc/lmboot_TMW is a shell script, then you will have to modify it so that > it executes the binary with the wrapper That's it what I did (lm_matlab is binary file): $ glibc-errno-wrapper "/usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat" /usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat: error while loading shared libraries: /usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat: cannot open shared object file: No such file or directory But it still doesn't work. well, what you ran doesnt make sense there is no binary named "/usr/local/matlab/etc/lm_matlab -z -c /tmp/license.dat" that would regardless of running it through the wrapper just drop the broken quotes (In reply to comment #15) > well, what you ran doesnt make sense > > there is no binary named "/usr/local/matlab/etc/lm_matlab -z -c > /tmp/license.dat" > > that would regardless of running it through the wrapper > > just drop the broken quotes > OK, I did it without the quotes: $ exec /usr/lib/glibc-errno-compat/lib/ld-linux.so.6 --library-path /usr/lib/glibc-errno-compat/lib /usr/local/matlab/etc/glnx86/lm_matlab -z -c /tmp/license.dat and it logged me out (in case of "su -" it closed the su session; in case of ssh session it closed ssh connection) and no precess is running. well, obviously ... that is how `exec` works added the fixed package to cvs (In reply to comment #17) > well, obviously ... that is how `exec` works > > added the fixed package to cvs I have tested the emul-linux-x86-glibc-errno-compat from portage tree and it doesn't work. It finish with "Segmentation fault". Created attachment 144130 [details]
matlab.log
Strace of command glibc-errno-wrapper /usr/local/matlab/etc/glnx86/lm_matlab
sorry, you'll need to debug it i have no old binary programs nor do i care about them |