Red Hat Bugzilla – Bug 1297132
RFE: Use the %__erlang_provides macro in the spec file
Last modified: 2016-03-16 07:24:11 EDT
I noticed that there is a handy %__erlang_provides_requires macro in /usr/lib/rpm/macros.d/macros.erlang and attempted to use it on one of my packages. Unfortunately, this causes my package to depend on lots of Erlang built-ins and the erlang package doesn't mark itself as providing these built-ins. For example, when I use that macro in my erlang-oauth2 package, it fails to install like this:
$ sudo dnf install erlang-oauth2/results/erlang-oauth2-0.6.0-3.fc24.x86_64.rpm
Last metadata expiration check performed 1:57:49 ago on Sat Jan 9 10:17:18 2016.
Error: nothing provides erlang(application:get_env/2) needed by erlang-oauth2-0.6.0-3.fc24.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages)
In the meantime, I can work around this issue by using the correct Requires on my package but it would be a nice improvement if we could get that automatically working, especially since somebody took the time to write that fancy macro.
Initially erlang-rpm-macros was written for a very outdated RPM version (can't remember what was used in 2009), and it contains a lot of ugly workarounds and shortcomings. Fortunately RPM evolved significantly so a lot of these ugly things should just be trashed (which I did already, actually).
I;ve added a lot of fun stuff (automatic dependency picker), so starting from the next erlang-rpm-macros version we should really start using it.
Hey Peter! I've enjoyed the new automatic dependency system you've developed. I'm happy to close this bug if you are. Thanks!
(In reply to Randy Barlow from comment #2)
> Hey Peter! I've enjoyed the new automatic dependency system you've
> developed. I'm happy to close this bug if you are. Thanks!
We'd better keep it for a while since there is one missing piece - Erlang/OTP itself which doesn't use these macros (yet).