logo       

Re: against the components utopia: msg#00076

lang.scala

Subject: Re: against the components utopia

Okay, I see.

Keep in mind that once you are willing to do some modification of the
code somewhere, then repackaging is a serious option. You can either
repackage stuff for a public universe like one of Debian's streams, or
you can create a little private universe of your own to hold your
hacks. This mechanism is always available, and thus the dependency
system and the linker should be designed with that in mind.

For the case you mention of of wanting two different libraries, it
could simply be a matter of posting one library or both to the local
universe, with one of the packages renamed and all the necessary files
renamed so that they do not conflict. Given a fancy linker, that's
all you need, because the linker can take care of the rest. Given the
status quo, you'd probably have more work ahead of you.



> I want to use both libA and libB, so I create a union universe. sbaz
> will have to install both versions of libZ, because it can't know
> whether libA is able to use libZ-2.0 (can it do this? if not, that's a
> separate issue).

You have to rename one of the two packages, e.g. "libZ" and "libZ2".

Letting people install multiple versions of the same package does not
strike me as a good deal. For one thing, it invalidates using the
filesystem as a single global namespace. Instead, each package must
install its files with versions in their paths, just in case someone
tries to install a different version of the same package. And each
package must *refer* to filenames using a version in addition to the
filename. You end up needing some other way to reference files than
filenames.

For another problem, it complicates dependencies and linking. If A
depends on B, but there are five different B's installed, which one
does it end up using? Do we then back away from the simple "depends
on B" dependencies? That would be a pity.

To contrast, the overwhelmingly common intention when there is both
"libZ-1.0" and "libZ-1.1" in the universe is that they mutually
conflict. Instead of explicitly writing that very common dependency
on almost every package, it seems better to use renaming to handle the
uncommon (but occuring) situation where you do want to let both of
them load simultaneously.

I played with FreeBSD for a while, and it would let you install
multiple versions of the same package. It became a mess if you
"tried" it, and usually when you "try" it was just an accident.

Overall, the cost of a little more repackaging seems much lower than
the cost of every package having to deal with a system where there are
multiple versions of the same package installed.



-Lex




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise