Re: Result of first real test with split of runtime glibc 32 bits in a separate package
Jeffrey Johnson <[email protected]> Sun, 22 Jan 2012 10:16:43 -0500
| Newsgroups | gmane.linux.mandrake.cooker.devel |
|---|---|
| Message-ID | <[email protected]> |
On Jan 22, 2012, at 4:24 AM, [email protected] wrote: > > With a glibc package without elf 32 binaries, and gcc libraries > also split, what holds removal of the 32 bit libc6 package in a > minimal chroot is: > > # LC_ALL=C rpm -e libc6 (aside) Well that's one way to identify dependencies. One of these days you are going to be surprised when rpm -e libc6 actually succeeds however: add --test (which doesn't test anything whatsoever) or use rpm -Va --nofiles There are some subtle differences. There are 3 "contexts" attached to dependencies: installing needed while installing unmarked needed to use removing needed while removing and "rpm -e" will show the union of the dependencies in removing+unmarked while "rpm -Va --nofiles" will show the union of the dependencies in installing+unmarked But you are actually interested in the members of the unmarked set implied by "… holds removal …". > error: Failed dependencies: > libc.so.6 is needed by (installed) lib64ffi4-4.6.2-4.x86_64 > libc.so.6 is needed by (installed) zlib1-1.2.5-10.x86_64 > libc.so.6 is needed by (installed) grub-0.97-35.x86_64 > libc.so.6(GLIBC_2.0) is needed by (installed) lib64ffi4-4.6.2-4.x86_64 > libc.so.6(GLIBC_2.0) is needed by (installed) zlib1-1.2.5-10.x86_64 > libc.so.6(GLIBC_2.0) is needed by (installed) grub-0.97-35.x86_64 > libc.so.6(GLIBC_2.1) is needed by (installed) lib64ffi4-4.6.2-4.x86_64 > libc.so.6(GLIBC_2.1) is needed by (installed) zlib1-1.2.5-10.x86_64 > libc.so.6(GLIBC_2.1) is needed by (installed) grub-0.97-35.x86_64 > libc.so.6(GLIBC_2.1.3) is needed by (installed) lib64ffi4-4.6.2-4.x86_64 > libc.so.6(GLIBC_2.1.3) is needed by (installed) zlib1-1.2.5-10.x86_64 > libc.so.6(GLIBC_2.2) is needed by (installed) grub-0.97-35.x86_64 > libc.so.6(GLIBC_2.3) is needed by (installed) grub-0.97-35.x86_64 > libc.so.6(GLIBC_2.3.4) is needed by (installed) zlib1-1.2.5-10.x86_64 > libc.so.6(GLIBC_2.4) is needed by (installed) zlib1-1.2.5-10.x86_64 > (aside) All of the versioned symbol dependencies can likely be ripped out everywhere and replaced (for "legacy compatibility" during the transition) with some Provides: added externally like in /etc/rpm/sysinfo/Providename. I can go into any depth of detail, but the version of glib implies that all previous version symbols exist always (for glibc, not in general, where promoting symbol's version as if it were a so name attribute has a different and subtle flaw). Yes no one is prepared to rip out versioned soname dependencies everywhere people phear change more than they love "dependency hell" … *shrug*. Specific question: Is it feasible to make internal DT_SONAME mandatory everywhere on 2012, enforced by rpmlint checks? I personally would also force DT_SONAME into "modules" so that the rule is simple (and devising a heuristic based on paths to "modules" is not: adding DT_SONAME to "modules" hurts nothing that I know of even if not used). > These should need a rebuild to link to libffi5: > > # LC_ALL=C rpm -e lib64ffi4 > error: Failed dependencies: > libffi.so.4()(64bit) is needed by (installed) > lib64ORBit2_0-2.14.19-4.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64gnome-vfs2_0-2.24.4-4.x86_64 > (aside) The proposed patch for x32abi parallels the "…()(64bit)" markup. Instead of adding Yet More Compexity with another "…(x32abi)" markers, all of the appended strings "…()(64bit)" will be ripped out of dependencies, and a simpler (than adding suffixes to all soname deps) will be used instead. Unlikely to happen in 2012, the above is FYI because something needs to be done with both x32 and ARM abi's pretty soon. > zlib1 should follow to split elf 32, but grub would not be an > easy task to convert to 64 bit; fortunately, if switching to > grub2 it would no longer be an issue. What is holding grub2 > is updating /usr/sbin/bootloader-config and the related > perl modules in drakxtools-backend to handle grub2, as well > as some good amount of tests… > Specific question: Is it feasible to consider grub -> grub2 switch in 2012 > Too bad currently "urpmq --whatrequires 'libffi.so.4()(64bit)'" does > not work, so, for some extra information, in my home desktop I have > these other: > There's no reason to expect urpmq and rpm to display the same information atm: urpmq and rpm differ in what is commonly called Requires: > $ LC_ALL=C sudo rpm -e lib64ffi4 > error: Failed dependencies: > libffi.so.4()(64bit) is needed by (installed) ecl-11.1.1-2.x86_64 > libffi.so.4()(64bit) is needed by (installed) udisks-1.0.4-6.x86_64 > libffi.so.4()(64bit) is needed by (installed) > gstreamer0.10-ffmpeg-0.10.13-1.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64nm-util1-0.8.6.0-1.x86_64 > libffi.so.4()(64bit) is needed by (installed) lib64gck1_0-3.2.2-1.x86_64 > libffi.so.4()(64bit) is needed by (installed) gnome-keyring-3.2.2-1.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64gnomecanvas2_0-2.30.3-4.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64ORBit2_0-2.14.19-4.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64gnome-vfs2_0-2.24.4-4.x86_64 > libffi.so.4()(64bit) is needed by (installed) lib64notify4-0.7.4-4.x86_64 > libffi.so.4()(64bit) is needed by (installed) > lib64poppler-glib8-0.18.1-3.x86_64 > > Paulo >