[erlang-questions] Building, Packaging and Installing

Tristan Sloughter tristan.sloughter@REDACTED
Sat Apr 28 15:36:54 CEST 2012


I started with this problem as something to simply discuss with the
maintainers of certain build and package management projects -- sinan and
agner specifically. But it seems to be more broad and cover how all of us
who keep apps on github handle versioning and dependencies.

The basic issue is app versions within .app files on branches in github,
the resultant directory from a agner install and the discrepancies this
causes.

For an example take an app like Cowboy that its .app files in the master
branch has {vsn, "0.5.0"} but this is not really 0.5.0. That is a tagged
version. What is in master is a version beyond 0.5.0.

An agner install of this results in lib/cowboy-@REDACTED with the .app file
still being vsn 0.5.0, of course.

Rebar has a partial work around for these where you can put {vsn git} in
your .app.src file and it will populate it on build with part of the git
hash for the repo at that time. This I think could be part of the ultimate
solution. Though another problem arises for cut versions put into tags,
like if you simply download
https://github.com/boundary/folsom/zipball/0.6you can not build it by
default because it is not a git repo. And if you
pull the tag and build it (as Agner does for when you do a 'agner install
folsom -v 0.6' the version is not 0.6 in the .app as you'd expect, but
instead 0.6-<git sha>. Thus I had to create an agner package for the
tag 0.6-51-gdaa75cb that points to the 0.6 tag of folsom -- other wise the
dir name and the actual app version would not match.

So I've been doing many work arounds for this for my needs, none of them
yet satisfying.

For real development of an Erlang project on a team its important to keep
versions of dependencies in sync AND accurate. I've not found a good flow
for this with the current environment of Erlang apps from their main
source, github.

Am I the only one going crazy with this? haha Does anyone have
suggestions/examples of what they do for production projects on teams to
ease these annoyances?

I mostly just create my own packages and repos of dependencies, or package
third party deps with the project.

Tristan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120428/fa53704a/attachment.htm>


More information about the erlang-questions mailing list