[Rpm-maint] [rpm-software-management/rpm] RFE: Finer-grained symbol dependencies using rich dependencies (#362)

Neal Gompa (ニール・ゴンパ) notifications at github.com
Sat Nov 18 20:10:17 UTC 2017


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` provides `libfoo.so.1`, and `bar` depends on it.

libfoo.so.1 provides two symbols `do_foo` and `__do_baz` with a symbol version `FOO_1.0`.

Classically, this means that libfoo would have the following Provides:
```
libfoo.so.1()(64bit)
libfoo.so.1(FOO_1.0)(64bit)
```

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:
```
libfoo.so.1()(64bit)
libfoo.so.1(FOO_1.0)(64bit)
libfoo.so.1(do_foo at FOO_1.0)(64bit)
libfoo.so.1(__do_baz at FOO_1.0)(64bit)
```

Then, `bar` would have the following Requires:
```
(libfoo.so.1()(64bit) with libfoo.so.1(do_foo at FOO_1.0)(64bit))
(libfoo.so.1()(64bit) with libfoo.so.1(__do_baz at FOO_1.0)(64bit))
```

This effectively guarantees that the symbol is tracked in the dependency itself.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/362
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20171118/5388c896/attachment.html>


More information about the Rpm-maint mailing list