-
Notifications
You must be signed in to change notification settings - Fork 363
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFE: Finer-grained symbol dependencies #362
Comments
We are trying to do something similar with @legionus . We will come back with some results after some time ;) |
First, I don't see why you need the rich deps here. Wouldn't a Then, wouldn't your proposal mean that over time you'll have a provide for every symbol? That'll be quite some burden on the metadata size and dependency solver setup. If you really want something like this you should look at altlinux's support of set-versions dependencies (IIRC). |
My understanding is that set-versions imposes the same requirement (provide for each symbol), only that it's inscrutable to the user because it's hashed rather than in user-comprehensible form. You're correct that it may not necessarily require rich deps, though. I was thinking of cases where a library may provide multiple symbol names and do funny things (for example, I believe libsystemd did this at one point). |
No, the point of set-versions is that you only have one provides/requires for all of the symbols. This means that it's a somewhat probabilistic method, there's some small chance it will not detect a missing symbol. |
Yeah set versions is no doubt clever. Problem is it's too clever for my taste. Call me a chicken anytime you like but I'm not going to pull this thing in: http://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=blob;f=lib/set.c;h=9474a2ee6d7c9ce321d131cc310bfb4e80bdc6e4;hb=HEAD |
Historically speaking, RPM's library dependencies have been only covered the soname.
However, this has bitten us from time to time when the actual symbols have changed. Some distributions solve this by actually generating dependencies against both the version/soname and the library symbol name.
I suggest that
elfdeps
be extended to offer a mode to generate finer-grained dependencies.For example, suppose package
libfoo
provideslibfoo.so.1
, andbar
depends on it.libfoo.so.1
provides two symbolsdo_foo
and__do_baz
with a symbol versionFOO_1.0
.Classically, this means that libfoo would have the following Provides:
And
bar
would require these two symbols. But if__do_baz
is deleted,bar
would be broken if it used that symbol or depended on it in some way. Unfortunately, it'd still be installable...However, with an enhancement, the libfoo package would have the following Provides:
Then,
bar
would have the following Requires:This effectively guarantees that the symbol is tracked in the dependency itself.
The text was updated successfully, but these errors were encountered: