I often need to track the Erlang dev branch for what I am doing.
Hence, I am fairly often rebuilding Erlang/OTP. Also, I am using
Ubuntu and the default installation has historically been riddled with
odd design decisions. Hence, I am building from source. Unfortunately,
this also means you may be the only one running that particular
release and that gives problems when reporting bugs. This is trick I
use to build Erlang/OTP.
1. Install stow,
sudo aptitude install stow
If you don't know what stow does, it maintains a symbolic link farm
for you in /usr/local so we can enable/disable Erlang versions at whim
and have multiple installed Erlangs. It also means cleaning up is easy
since each program in /usr/local is installed in its own dir.
sudo aptitude build-dep erlang
to pull in all build dependencies we need. Since we are on Ubuntu and
Ubuntu *does* have an Erlang we can exploit it knows about the
dependencies we need.
git clone git://github.com/erlang/otp.git
to pull the source off of git.
4. Get into the directory and fire away
git checkout dev && ./otp_build autoconf
which sets up the environment and runs autoconf.
5. Get a useful tag for the otp version you have built
This is the trick! `git describe` will output to us a useful tag. In
my case it is OTP_R14B02-625-g5f7fa62 which means we are 625 commits
*after* the R14B02 tag and the SHA1 of that commit start with
g5f7fa62. In other words, I now have a neat hook I can report back to
the Erlang Devs if there are any problems and we will know exactly on
which commit I am and exactly what fixes I may not have present in my
build. In some of my projects I have a -tainted I add to the `git
describe` if I have local changes not present upstream and then I
embed this in the version string of my software. Hence, if some
downstream (Ubuntu packagers, etc) choose to patch the software I know
it has some patches on it I need to investigate the contents of.