On 08/14/2013 12:39 AM, Siddhesh Poyarekar wrote:
On Tue, Aug 13, 2013 at 04:50:10PM -0400, Carlos O'Donell wrote:
> I have immediately reverted this patch.
>
> It turns out that if you run this glibc through the rawhide build
> process it will break the rawhide chroot generation.
>
> Why?
>
> It turns out that packages explicitly `Requires: /sbin/ldconfig' and
> the new glibc doesn't provide that and everything breaks.
>
> The only way forward for glibc is if rpm provides transitional
> mappings from `Requires: /sbin/ldconfig' to /usr/sbin/ldconfig,
> otherwise MoveToUsr is not possible for glibc without a rewrite
> of all spec files or explicit `Provies: /sbin/ldconfig' from the
> glibc side.
A 'Provides:' should be sufficient, although this seems quite a risky
change now that I think of it. How does the UsrMov transition handle
the fact that the linker hard-codes the dynamic linker path into the
.interp of a binary? It looks to me like not making /lib* available
is not an option if we want to maintain binary compatibility.
I agree that `Provides:' should be sufficient, but I'll let the rpm
talk about it. The bug is enough to allow me to waive this for rhel-7.0,
and likely push it back to rhel-8.0.
At best UsrMove can never be complete until all distros migrate, change
the compiler, and forgo backwards compatibilty with the old ABI dynamic
linker path.
The best way forward if you wanted to do it would be a transitional
ABI change. When you release Fedora X you change the compiler to use
the new dynamic linker (it's the compiler's spec string that sets
the dynamic linker, see -dumpspecs output, and that is translated
into DT_INTERP in .dynamic or .interp by the linker). You keep providing
a /lib symlink until everything in the distribution has been rebuilt,
and until some number of years have passed. Then you remove the symlink,
but provide a special package say `glibc-compat' that still provices
the old symlink and users can install that if they need compat.
Then you move on with a unified filesystem.
Personally I would have gotten rid of /usr :-)
Cheers,
Carlos.