ninenines / erlang.mk

A build tool for Erlang that just works.
https://erlang.mk
ISC License
578 stars 241 forks source link

Release package saved into a wrong output dir? #966

Closed ethrbh closed 1 year ago

ethrbh commented 1 year ago

hello,

I would like to get some help.

I have made a tinny test project, and I would like to create a release package for the project, where the release output folder would be different that the default _rel folder. I have followed the documentation in this link https://erlang.mk/guide/relx.html, 9.2. Configuration

and set the RELX_OUTPUT_DIR variable to RELX_OUTPUT_DIR = /tmp/test/_rel

Unfortunately the release package does not saved in the wanted folder (/tmp/test/_rel), but this is saved in the /_rel folder instead. I was checking again the erlang-ml documentation, also checked the configuration files I made, but do not see what might be wrong :-(

Folder of the project:

/home/ethrbh/projects/test

List of folders, files:

deps ebin erlang.mk Makefile _rel relx.config src test.d

List of the _rel folder

ethrbh@ubuntu:/home/ethrbh/projects/test> ls _rel/test/ bin lib releases test-0.1.0.tar.gz ethrbh@ubuntu:/home/ethrbh/projects/test>

I think I did something wrong, but I do not see what it would be, that is why I would like to turn to you. Below you can see few detailed info.

Erlang-mk version

ERLANG_MK_VERSION = 6423c1c

The Makefile:

PROJECT = test PROJECT_DESCRIPTION = New project PROJECT_VERSION = 0.1.0 RELX_OUTPUT_DIR = /tmp/test/_rel

LOCAL_DEPS = sasl tools observer runtime_tools mnesia ssl observer

REL_DEPS = relx

include erlang.mk

This is the contents of the relx.config file

{release, {test, "0.1.0"}, [test, sasl, runtime_tools]}.

This is the output of the "make rel"

ethrbh@ubuntu:~/projects/test> make rel
make[1]: Entering directory '/home/ethrbh/projects/test/deps/relx'
make[1]: Leaving directory '/home/ethrbh/projects/test/deps/relx'
erl +A1 -noinput -boot no_dot_erlang -pa ebin/ -pz /home/ethrbh/projects/test/.erlang.mk/rebar/ebin -eval " {ok, Config} = file:consult(\"/home/ethrbh/projects/test/relx.config\"),    {release, {Name, Vsn0}, _} = lists:keyfind(release, 1, Config), Vsn = case Vsn0 of      {cmd, Cmd} -> os:cmd(Cmd);      semver -> \"\";     {semver, _} -> \"\";        VsnStr -> Vsn0  end,    {ok, _} = relx:build_release(#{name => Name, vsn => Vsn}, Config),  halt(0)." -- erlang.mk
Solving Release test-0.1.0Resolved test-0.1.0release: test-0.1.0
     erts: 12.1
     goals: 
          test
          sasl
          runtime_tools
     applications: 
          {kernel,"8.1"}
          {stdlib,"3.16"}
          {sasl,"4.1"}
          {tools,"3.5.1"}
          {observer,"2.10"}
          {runtime_tools,"1.17"}
          {mnesia,"4.20"}
          {crypto,"5.0.3"}
          {asn1,"5.0.17"}
          {public_key,"1.11.2"}
          {ssl,"10.5"}
          {test,"0.1.0"}
Assembling release test-0.1.0...Release output dir /home/ethrbh/projects/test/_rel/testRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/kernel-8.1/ebin/kernel.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/stdlib-3.16/ebin/stdlib.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/sasl-4.1/ebin/sasl.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/tools-3.5.1/ebin/tools.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/observer-2.10/ebin/observer.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/runtime_tools-1.17/ebin/runtime_tools.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/mnesia-4.20/ebin/mnesia.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/crypto-5.0.3/ebin/crypto.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/asn1-5.0.17/ebin/asn1.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/public_key-1.11.2/ebin/public_key.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/ssl-10.5/ebin/ssl.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/test-0.1.0/ebin/test.appWarnings generating release:
*WARNING* public_key: Source code not found: 'OTP-PUB-KEY'.erl
*WARNING* public_key: Source code not found: 'PKCS-FRAME'.erlrelease start script createdRelease successfully assembled: _rel/testmake[1]: Entering directory '/home/ethrbh/projects/test'
make[1]: Leaving directory '/home/ethrbh/projects/test'
erl +A1 -noinput -boot no_dot_erlang -pa ebin/ -pz /home/ethrbh/projects/test/.erlang.mk/rebar/ebin -eval " {ok, Config} = file:consult(\"/home/ethrbh/projects/test/relx.config\"),    {release, {Name, Vsn0}, _} = lists:keyfind(release, 1, Config), Vsn = case Vsn0 of      {cmd, Cmd} -> os:cmd(Cmd);      semver -> \"\";     {semver, _} -> \"\";        VsnStr -> Vsn0  end,    {ok, _} = relx:build_tar(#{name => Name, vsn => Vsn}, Config),  halt(0)." -- erlang.mk
Solving Release test-0.1.0Resolved test-0.1.0release: test-0.1.0
     erts: 12.1
     goals: 
          test
          sasl
          runtime_tools
     applications: 
          {kernel,"8.1"}
          {stdlib,"3.16"}
          {sasl,"4.1"}
          {tools,"3.5.1"}
          {observer,"2.10"}
          {runtime_tools,"1.17"}
          {mnesia,"4.20"}
          {crypto,"5.0.3"}
          {asn1,"5.0.17"}
          {public_key,"1.11.2"}
          {ssl,"10.5"}
          {test,"0.1.0"}
Assembling release test-0.1.0...Release output dir /home/ethrbh/projects/test/_rel/testRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/kernel-8.1/ebin/kernel.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/stdlib-3.16/ebin/stdlib.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/sasl-4.1/ebin/sasl.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/tools-3.5.1/ebin/tools.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/observer-2.10/ebin/observer.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/runtime_tools-1.17/ebin/runtime_tools.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/mnesia-4.20/ebin/mnesia.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/crypto-5.0.3/ebin/crypto.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/asn1-5.0.17/ebin/asn1.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/public_key-1.11.2/ebin/public_key.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/ssl-10.5/ebin/ssl.appRewriting .app file: /home/ethrbh/projects/test/_rel/test/lib/test-0.1.0/ebin/test.appWarnings generating release:
*WARNING* public_key: Source code not found: 'OTP-PUB-KEY'.erl
*WARNING* public_key: Source code not found: 'PKCS-FRAME'.erlrelease start script createdRelease successfully assembled: _rel/testBuilding release tarball test-0.1.0.tar.gz...Tarball successfully created: _rel/test/test-0.1.0.tar.gzethrbh@ubuntu:~/projects/test> 
ethrbh@ubuntu:~/projects/test> 

thanks for your help

br, /Robi

essen commented 1 year ago

It's possible that something broke. Until I can look at it, a potential workaround would be to not set the variable, and add this at the bottom of the Makefile (after include erlang.mk):

rel::
    rm -rf /tmp/test/_rel
    mv _rel /tmp/test

Or similar.

ethrbh commented 1 year ago

hello Essen,

Thanks for the quick reply. I already did something similar you have suggested.

thanks, /Robi

essen commented 1 year ago

I have fixed this locally. Will push later today. Thanks!