Heads up! Erlang package becomes modularized in Fedora.

Peter Lemenkov lemenkov at gmail.com
Sat Apr 10 12:56:50 UTC 2010

Hello All!

CC to devel at lists.fedoraproject.org
CC to erlang-questions at erlang.org

I would like to attract attention those erlangers, who use Fedora and
especially those of them, who use Erlang from Fedora's main
repository. Others are safe :)

Since Erlang adoption steadily grows and more applications, written in
Erlang, becomes popular, people starts complaining about the way
Erlang is delivered in Fedora. One large bulk containing mixture of
erlang/c/java sources, beam-files, examples, which has heavy
dependencies like wxGTK and Java, is not that Average Joe wants when
he tries to install his favorite document-oriented database, yet
another web-server, xmpp-server or something similar.

The problem is that we try to offer users a package with as much
features enabled, as we could, so we can't simply disable some
functionality at a build time. All we really can do here is to split
one large package into pieces. Few of us (Fedora maintainers) briefly
discussed this situation, and there is a consensus, that we should
split off at least some parts of main Erlang package.

I did some investigation, and find a way to completely modularize
whole Erlang package. In a few words - main package consists of purely
virtual 'erlang' package and a dozens of sub-packages (from
erlang-appmon to erlang-xmerl - one sub-package for each
%{_libdir}/erlang/lib/* item). The main virtual package 'erlang'
depends on every subpackage, so if you prefer to install/upgrade
erlang by typing "yum install erlang" you won't see any difference.
What's new is a set of scripts to generate cross-subpackage
dependencies. The approach for dependency generation is very
straightforward and simple - with the addition to normal RPM
dependency generator, each ebin/*.beam file within each sub-package is
analyzed for imported and exported functions, and they are added (in
form of erlang(Module:Finction/Arity)) to the list of RPM provides and

Other visible change is a removal of c_src, java_src and erlang
src/*.erl files from subpackages. In fact, everything stored in /usr
is not intended for recompiling by user, so it's safe to remove these
files. If someone have any *technical* objections for doing this, it's
time to dispute this change. At the first try, I did very sensitive
mistake (already recovered) - unfortunately some *.hrl files, which
should be stored in %{module}-%{version}/include intentionally stored
in %{module}-%{version}/src . We can't do much here since many users
hardcode these paths in their projects, so I just leaved all *.hrl
files in src directory intact.

I also remove empty and *.o files and fixed some installation errors
with priv libraries, but these are minor changes.

I repeat and emphasize - I'll do my best to achieve full compatibility
with previous installations, and I'm pretty sure that all these
changes wont break anything. Also I'm sure that we need to push this
change into both F-12 and forthcoming F-13, since benefits are really
great (if everything will be done properly and careful, of course -
that's why I'm still testing every erlang-related package, included
(and even yet not included) in Fedora for possible regressions).
Fedora 11, EL-4 and EL-5 will remain unchanged.

List of affected packages:


Any objections and commentaries are highly welcome!

With best regards, Peter Lemenkov.

More information about the devel mailing list