Re: Proposal: Rethink Fedora multilib support (Take Two!)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 5, 2017 at 5:08 PM, Stephen Gallagher <sgallagh@xxxxxxxxxx> wrote:
> On 01/05/2017 11:03 AM, Stephen Gallagher wrote:
>> # Overview
>>
>> For many years, Fedora has supported multilib by carrying parallel-installable
>> libraries in /usr/lib[64]. This was necessary for a very long time in order to
>> support 32-bit applications running on a 64-bit deployment. However, in today's
>> new container world, there is a whole new option.
>>
>> I'd like to propose that we consider moving away from our traditional approach
>> to multilib in favor of recommending the use of a 32-bit container runtime when
>> needed on a 64-bit host.
>>
>
>
> So, this thread provided a lot of feedback. I had anticipated that the
> suggestion would not be universally accepted, but I didn't quite expect quite
> so... vehement a response. :-)
>
>
> I'll attempt to summarize the conversation thus far:
>
> * By far, the most frequent concern was that it would break Wine and Steam.
>
> * Third-party software written only for 32-bit runtimes would likely require
> considerable hacking to continue working under such a system.
>
> * Cross-compilers wouldn't be able to work with this system without significant
> modification.

* Represents a significant change to how end-user developers will need
to build software.

> Two suggestions were raised as alternatives to the container approach:
>
> * Switch to using the Debian style of multi-arch layout, which instead of
> /usr/lib and /usr/lib64 uses /usr/lib/$ARCH-linux-gnu. Benefits to this would
> include the emergence of a de-facto standard for system layout between the major
> distributions.

What does SuSE do for multi-lib?  Or Arch or Gentoo?  I don't think
Fedora switching would mean a de-facto anything.

> * Ship only one arch in the repositories and allow users to trivially enable the
> repositories for other arches through DNF if they have need.
>
>
>
> Those two suggestions are not (to my mind) incompatible with one another and
> their combination may indeed prove to be a superior solution to the one I
> initially came up with and suggested.
>
> I feel it necessary to point out some of the (surmountable) issues that such a
> transition would face.
>
>
> == multi-arch layout ==
> * Moving the locations of all of the system libraries would potentially still
> break third-party applications that were compiled to expect libraries to be in
> the /usr/lib[64] paths. This would be a similar problem to the UsrMove change
> and would likely be solved the same way; by maintaining symlinks in the old
> locations for some reasonable migration period. Given the enormous number of
> packages involved and the fact that it's not a simple directory rename, we may
> need to add a hack into rpmbuild to automatically generate these symlinks in the
> old location.
>
> * Switching to this layout might give a false (or possibly accurate, in some
> cases) impression that one could expect Debian/Ubuntu packages to function "out
> of the box" on Fedora (if using something like Alien). Education is key here.
>
>
> == Separated Repositories ==
>
> This one is actually a lot harder than it might appear at first look, mostly due
> to the way our packaging dependencies are written. In many (most?) cases of
> arch-ful packages, their dependencies are likely to be specified without the
> %{?_isa} suffix. As a result, if we were to just blindly add the i686 repository
> to a running x86_64 system, even at lower priority, there would be times when an
> update would attempt to pull in the wrong architecture's package (consider
> situations where the i686 mirror the user is connected to may have synced
> already, but their x86_64 mirror has not). The user would inadvertently pull in
> the wrong version of a dependency and their application or service might fail to
> start or function unexpectedly.
>
> So if we were to go this route, it would mean a great deal of work fixing up
> hundreds (if not thousands) of spec files to add explicit architecture
> dependencies, or else new functionality in DNF/libsolv to ensure that
> architectures don't change in a transaction. Or, ideally, both.

Why wouldn't you have the rpm macros package automatically include the
%{?_isa} suffix in all built packages?  The RPMs are built in
arch-specific chroots, so if it was done automatically it would likely
just need a mass rebuild?  Am I missing a reason that wouldn't work?

> I think there is a lot of potential with these ideas (and they're compatible
> with our plans for modularity as well). Would people be willing to participate
> in such a task if we were to undertake it?

Can you elaborate on the modularity plans, or point to a thread or
documentation if you've already described it?

> Similarly, I'm sure there are other "gotchas" hidden here that I didn't
> immediately come up with. What other issues am I missing? I assume we made the
> decision to do /usr/lib[64] in the first place for good reasons; What were they,
> and are they still valid?

I have no idea.

josh
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux