views:

93

answers:

3

After reading 10.2 Release Resource File, I get the impression that each application release is very much tied down to a specific release of Erlang OTP. Is this true?

Can the version information in the .rel file be written along the following lines?

   {release,
     {"ch_rel", "A"},
     {erts, "5.3"},
     [{kernel, ">=2.9"},
      {stdlib, ">=1.12"},
      {sasl, ">=1.10"},
      {ch_app, "1"}]
    }.
+3  A: 

Unfortunately you're correct - with the OTP release handler, the version checking is exact, you can't specify ranges or 'at least this version'. The new 'reltool' application in OTP (R13B+) is designed to help with this by putting in all the version information for you.

archaelus
Unfortunate... I like to decouple my Erlang packages from the OTP release cycle as much as I can: I have yet to stumbled across any pressure to do so... but I guess time will come.Thanks for the input!
jldupont
The purpose of the rel file is to bundle into one release all the applications needed for your application release to run. This includes the OTP core applications. It guarantees that even the core of the system you need will be exactly what you expect when releasing since the entire runtime environment is included in the tar. Almost like you had statically linked them in for a compiled binary. So technically you are still pretty decoupled and the benefits you get in stability from release to release is well worth it.
Jeremy Wall
Yes the OTP release principle is awesome: it 'gels' everything into place in order to have a specific running environment.I am after something a little bit more 'relaxed': my current applications are not 'stressing' erl that much + I like releasing my apps through DEBIAN repository. Having to issue multiple releases i.e. one for each sensible Erlang release would be an additional pain that I do not need (currently).Thanks for the valuable input.
jldupont
+3  A: 

I think you might be slightly confused by the terminology. In erlang a release is

  • An erlang runtime environment
  • plus your applications you have written
  • plus configuration

And is intended for deployment of a standalone erlang environment and Applications for a specific purpose.

While the Application is a bundle of related code and libraries for a specific function. For most people's useage they don't need a .rel file. The .app file and boot scripts are plenty for an application you will be deploying to an already setup erlang environment.

From your question sit sounded a little like you might be using the .rel file in a way it wasn't really intended for.

If I'm wrong then feel free to ignore me :-)

Jeremy Wall
jldupont
@Jean-Lou Dupont as archaelus already mentioned, there should be a new tool coming with R13B02 (within September) called reltool, that can be used to generate this directory structure
Zed
A: 

You should consider releasing your software via erlware which will allow builds against different versions of the runtime to be managed easily

Gordon Guthrie