|
Re: against the components utopia: msg#00076lang.scala
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> |
|---|---|---|
| Previous by Date: | RE: against the components utopia: 00076, Judson, Ross |
|---|---|
| Next by Date: | sbaz not working for me: 00076, Raoul Duke |
| Previous by Thread: | Re: against the components utopiai: 00076, Jamie Webb |
| Next by Thread: | NonNull, scala.reflect: 00076, Judson, Ross |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |