Closed sg2342 closed 2 years ago
i amended the PR to format link_failed
and unable_to_chmod
errors.
without it, rebar3 would throw 'no function clause matching' exceptions on these.
With the PR merged and included in a rebar3 release; the rebar3 release task behavior will change (with examples taken from the shelltest in #917):
malformed_overlay
anything not understood by relx_overlay, e.g.
{overlay, [{malformed, foo}]}
rebar3 release
fails (exit code 1), error output:
===> Uncaught error in rebar_core. Run with DIAGNOSTIC=1 to see stacktrace or consult rebar3.crashdump
rebar3 release
succeeds (exit code 0), error output:
===> Overlay section malformed: {malformed,foo}
unable_to_make_dir
failure to create a directory, e.g.
{overlay, [{mkdir, "releases/RELEASES"}]}
rebar3 release
succeeds (exit code 0), no error output.
rebar3 release
fails (exit code 1), error output:
===> Unable to make directory /tmp/relx/shelltests/overlay_error_test/_build/mkdir_error/rel/overlay_error_test/releases/RELEASES because eexist
copy_failed
failure to copy file, e.g.
{overlay, [{copy, "does_not_exist", "something"}]}
rebar3 release
succeeds (exit code 0), no error output.rebar3 tar
will fail (exit code 1) with error output
===> Tarball generation errors:
Cannot add file /tmp/relx/shelltests/overlay_error_test/_build/copy_error/rel/overlay_error_test/something to tar file - /tmp/relx/shelltests/overlay_error_test/_build/copy_error/rel/overlay_error_test/something: no such file or directory
rebar3 release
fails (exit code 1), error output:
===> Unable to copy from /tmp/relx/shelltests/overlay_error_test/does_not_exist to /tmp/relx/shelltests/overlay_error_test/_build/copy_error/rel/overlay_error_test/something because of {copy_failed,
"/tmp/relx/shelltests/overlay_error_test/does_not_exist",
"/tmp/relx/shelltests/overlay_error_test/_build/copy_error/rel/overlay_error_test/something",
enoent}
read_template
failure to read a template file e.g.
{overlay, [{template, "does_not_exist", "something"}]}
rebar3 release
succeeds (exit code 0), no error output.rebar3 tar
will fail (exit code 1) with error output
===> Tarball generation errors:
Cannot add file /tmp/relx/shelltests/overlay_error_test/_build/template_read_error/rel/overlay_error_test/something to tar file - /tmp/relx/shelltests/overlay_error_test/_build/template_read_error/rel/overlay_error_test/something: no such file or directory
rebar3 release
fails (exit code 1), error output:
===> Unable to read template file (/tmp/relx/shelltests/overlay_error_test/does_not_exist) for overlay due to: no such file or directory
write_template
failure to write a templated file e.g.
{overlay, [{template, "README.md", "releases"}]}
rebar3 release
succeeds (exit code 0), no error output.
rebar3 release
fails (exit code 1), error output:
===> Unable to write to /tmp/relx/shelltests/overlay_error_test/_build/template_write_error/rel/overlay_error_test/releases because eisdir
template_dir
failure to create a enclosing directory e.g.
{overlay, [{template, "README.md", "releases/RELEASES/foo"}]}
rebar3 release
succeeds (exit code 0), no error output.rebar3 tar
will fail (exit code 1) with error output
===> Tarball generation errors:
Cannot add file /tmp/relx/shelltests/overlay_error_test/_build/template_dir_error/rel/overlay_error_test/releases/RELEASES/foo to tar file - /tmp/relx/shelltests/overlay_error_test/_build/template_dir_error/rel/overlay_error_test/releases/RELEASES/foo: not a directory
rebar3 release
fails (exit code 1), error output:
===> Unable to create enclosing directory for /tmp/relx/shelltests/overlay_error_test/_build/template_dir_error/rel/overlay_error_test/releases/RELEASES/foo because eexist
chmod_error
failure to modify file mode bits e.g.
{overlay, [{chmod, 0, "does_not_exist"}]}
rebar3 release
succeeds (exit code 0), no error output.
rebar3 release
fails (exit code 1), error output:
===> Unable to chmod 0 does_not_exist because of enoent
link_error
failure to create a symbolic link.
It is surprisingly hard to get rlx_overlay:link_to/4
to fail...
{mode, dev},
{overlay, [{link, "README.md", "../../../../../../../../../../../../../../../../../../../../../../../../f"}]}
rebar3 release
succeeds (exit code 0), no error output.rebar3 tar
will fail (exit code 1) with error output
===> Tarball generation errors:
Cannot add file /tmp/relx/shelltests/overlay_error_test/_build/link_error/rel/overlay_error_test/../../../../../../../../../../../../../../../../../../../../../../../../f to tar file - /tmp/relx/shelltests/overlay_error_test/_build/link_error/rel/overlay_error_test/../../../../../../../../../../../../../../../../../../../../../../../../f: no such file or directory
rebar3 release
fails (exit code 1), error output:
===> Unable to symlink /tmp/relx/shelltests/overlay_error_test/README.md to /tmp/relx/shelltests/overlay_error_test/_build/link_error/rel/overlay_error_test/../../../../../../../../../../../../../../../../../../../../../../../../f because of eacces
fix: erlware#867