[haiku-bugs] Re: [Haiku] #15828: Add automatic path remapping in packages in secondary architectures
- From: "Haiku" <trac@xxxxxxxxxxxx>
- To: undisclosed-recipients: ;
- Date: Wed, 25 Mar 2020 11:59:54 -0000
#15828: Add automatic path remapping in packages in secondary architectures
--------------------------------------+----------------------------
Reporter: X512 | Owner: bonefish
Type: enhancement | Status: reopened
Priority: normal | Milestone: Unscheduled
Component: File Systems/packagefs | Version: R1/Development
Resolution: | Keywords:
Blocked By: | Blocking:
Has a Patch: 0 | Platform: All
--------------------------------------+----------------------------
Changes (by pulkomandy):
* status: closed => reopened
* resolution: invalid =>
Comment:
Linux distros avoid this by having *all* libs and included in arch
subdirs, which has other downsides we decided not to go with.
Cication needed, what are the downsides? I can't think of anything
obvious.
In theory, software once made should be possible to run forever in
originally packaged form.
I would love to live in Theory, because in Theory, everything goes well.
There are many things that get in the way of achieving this, and at some
point, alternate solutions end up being better. For BeOS apps, these
include:
- Getting the source to the app and patching it,
- Running it in a virtual machine,
- Rewriting a replacement (or better) application,
- Patching the binaries.
All of these would be unrealistic for Mac OS X or Windows because they
have so many applications. The first one is essentially what Linux does,
with the Linux distributions putting all their resources and efforts into
it. In our case, there are not that many BeOS applications, which mean we
can afford in some cases to be less compatible and patch the applications
instead (ideally we would detect the binary and live-patch it or
something).
This is not to say we should completely give up on compatibility, but at
some point we have to drop the oldest things. Even Microsoft has dropped
support for 16bit applications (Win16) and DOS applications in modern
Windows.
What we should aim for is a platform that supports and runs existing
binaries long enough that distributing binaries is a reasonable way to do
thing. How long is long enough? It depends on the ecosystem.
BeOS is not perfect in terms of future-proofing, they made a quite good
try, but there are limitations to their approach. We could set up
ambitious plans to keep things working at all costs, for example,
implement the gcc2 ABI in clang so we can use a modern compiler to build
support libraries for BeOS apps. But it is worth the effort? Or will it
end up being simpler to recreate the few affected apps?
I see the BeOS comaptibility as a way to train ourselves on what binary
compatibility means, and to learn how to forward-proof our new
developments. So, I think we should make best-effort compatibility with
BeOS, for as long as reasonably possible, and learn from the limitations
of what they did, and see if we can avoid hitting the same problems.
--
Back on-topic now. Should this be done in packagefs? Or in the
runtime_loader? Or maybe both need to collaborate? Do we need a new
package format to make this simpler? Change to the buildtools?
Maybe it will end up being moved to Haiku R2 because it can't be done for
BeOS apps but only for packaged Haiku R1 ones. But that is no reason for
closing the ticket, there is a valid use case here and things to talk
about.
--
Ticket URL: <
https://dev.haiku-os.org/ticket/15828#comment:9>
Haiku <
https://dev.haiku-os.org>
The Haiku operating system.
Other related posts: