rebar3 icon indicating copy to clipboard operation
rebar3 copied to clipboard

{{rel_vsn}} empty

Open jozefc opened this issue 4 years ago • 2 comments

Environment

i am using gitbash on windows.

user@hostMINGW64 /c/src/erl/rel1/release1
$ rebar3 report
===> Expanded command sequence to be run: [{default,report}]
===> Provider: {default,report}
Rebar3 report
 version 3.14.1
 generated at 2020-10-09T11:24:47+00:00
=================
Please submit this along with your issue at https://github.com/erlang/rebar3/issues (and feel free to edit out private information, if any)
-----------------
Task:
Entered as:

-----------------
Operating System: win32
ERTS: Erlang/OTP 21 [erts-10.1] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1]
Root Directory: c:/Program Files/erl10.1
Library directory: c:/Program Files/erl10.1/lib
-----------------
Loaded Applications:
bbmustache: 1.10.0
certifi: 2.5.2
cf: 0.3.1
common_test: 1.16.1
compiler: 7.2.5
crypto: 4.3.3
cth_readable: 1.4.8
dialyzer: 3.3.1
edoc: 0.9.4
erlware_commons: 1.3.1
eunit: 2.3.7
eunit_formatters: 0.5.0
getopt: 1.0.1
hipe: 3.18.1
inets: 7.0.2
kernel: 6.1
providers: 1.8.1
public_key: 1.6.2
relx: 4.0.2
sasl: 3.2.1
snmp: 5.2.12
ssl_verify_fun: 1.1.6
stdlib: 3.6
syntax_tools: 2.1.6
tools: 3.0.1

-----------------
Escript path: c:/Program Files/erl10.1/bin/rebar3
Providers:
  app_discovery as clean compile compile cover ct deps dialyzer do edoc escriptize eunit get-deps help install install_deps list lock new path pkgs release relup report repos shell state tar tree unlock update upgrade upgrade upgrade version xref

OS:  windows 10 ent., ver 1909, build 18363.1082

Current behaviour

overlay command mkdir doesn't create directory correctly - does not include {{rel_vsn}}, this variable is EMPTY - see comments below:

part of rebar.config:

 {overlay,[
                  {mkdir, "release_version_default-{{release_version}}"}, %% ok: create directory "release_version_default-0.1.0"
                  {mkdir, "release_version_default_x-\{\{release_version\}\}"}, %% ok: create directory "release_version_default_x-0.1.0"
                  {mkdir, "rel_vsn_default-{{rel_vsn}}"},  %% fail: only create directory "rel_vsn_default-" without release number included
                  {mkdir, "rel_vsn_default_x-\{\{rel_vsn\}\}"}   %% fail : only create directory "rel_vsn_default_x-" without release number included
        ]}
$ rebar3 release
===> Expanded command sequence to be run: [{default,app_discovery},
                                                  {default,install_deps},
                                                  {default,lock},
                                                  {default,compile},
                                                  {default,release}]
===> Provider: {default,app_discovery}
===> Provider: {default,install_deps}
===> Verifying dependencies...
===> Provider: {default,lock}
===> Provider: {default,compile}
===> Compile (apps)
===> run_hooks("c:/src/erl/rel1/release1", pre_hooks, compile) -> no hooks defined

===> sh info:
        cwd: "c:/src/erl/rel1/release1"
        cmd: cmd /c mklink /j "c:\\src\\erl\\rel1\\release1\\_build\\default\\lib\\release1\\src" "c:\\src\\erl\\rel1\\release1\\apps\\release1\\src"

===>    opts: [{use_stdout,false},return_on_error]

===> Port Cmd: cmd /q /c cmd /c mklink /j "c:\\src\\erl\\rel1\\release1\\_build\\default\\lib\\release1\\src" "c:\\src\\erl\\rel1\\release1\\apps\\release1\\src"
Port Opts: [exit_status,
            {line,16384},
            use_stdio,stderr_to_stdout,hide,eof,binary]

===> Compile (project_apps)
===> run_hooks("c:/src/erl/rel1/release1/apps/release1", pre_hooks, compile) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1/apps/release1", pre_hooks, erlc_compile) -> no hooks defined

===> Analyzing applications...
===> Compiling release1
===> erlopts [debug_info]
===> files to compile ["c:/src/erl/rel1/release1/apps/release1/src/release1_sup.erl",
                              "c:/src/erl/rel1/release1/apps/release1/src/release1_app.erl"]
===> Starting 0 worker(s)
===> run_hooks("c:/src/erl/rel1/release1/apps/release1", post_hooks, erlc_compile) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1/apps/release1", pre_hooks, app_compile) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1/apps/release1", post_hooks, app_compile) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1/apps/release1", post_hooks, compile) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1", post_hooks, compile) -> no hooks defined

===> Provider: {default,release}
===> run_hooks("c:/src/erl/rel1/release1", pre_hooks, release) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1", pre_hooks, release) -> no hooks defined

===> Solving Release release1-0.1.0
===> Resolved release1-0.1.0
===> release: release1-0.1.0
     erts: 10.1
     goals:
          release1
          sasl
     applications:
          {release1,"0.1.0"}
          {sasl,"3.2.1"}
          {kernel,"6.1"}
          {stdlib,"3.6"}

===> Assembling release release1-0.1.0...
===> Release output dir c:/src/erl/rel1/release1/_build/default/rel/release1
===> release start script created
===> Release successfully assembled: _build/default/rel/release1
===> run_hooks("c:/src/erl/rel1/release1", post_hooks, release) -> no hooks defined

===> run_hooks("c:/src/erl/rel1/release1", post_hooks, release) -> no hooks defined

Expected behaviour

directories created by overlay should include {{rel_vsn}} in directory name.

according the documentation from https://github.com/erlware/relx/wiki/Overlays: Available Variables: ... rel_vsn : Same as release_version. Exists for backwards compatibility

also see comments in rebar.config above.

jozefc avatar Oct 09 '20 11:10 jozefc

I experienced the same for default_release_version.

@jozefc Since rel_vsn is an alias for release_version try going with release_version. That var should still work

meike-hecker avatar Jan 12 '21 14:01 meike-hecker

I checked all documented overlay variables and as far as I can see, the following are undefined:

log
overridden
goals
lib_dirs
config_file
providers
default_release_name
default_release_version
default_release
rel_vsn
release_applications

While these are defined as documented:

output_dir
target_dir
sys_config
root_dir
release_erts_version
erts_vsn
release_name
release_version

(If that's not easy to fix, maybe just remove the undefined variables from the docs for the moment?)

weiss avatar Aug 02 '22 15:08 weiss