If an ebin/myapp.app file is present, the plug-in will publish the version from there instead of the one in src/myapp.app.src or _build/default/lib/myapp/ebin/myapp.app. This frequently happens when the current myapp project is symlinked in another projects _checkouts folder. When that is the case, Rebar 3 will compile the project and put an ebin folder inside _checkouts/myapp/ebin which then, because of the symlink, ends up being myapp/ebin. ebin is usually Git ignored in projects because of Rebar's generated default .gitignore file.
This leads to weird scenarios when publishing a new version and all files are up to date except the files in ebin which are old and previously compiled by Rebar 3 in another projects _checkouts.
I think the logic should be to use the app files in the following order:
./src/myapp.app.src
_build/default/lib/myapp/ebin/myapp.app (rebar3 hex publishmust ensure the app is compiled in this case)
ebin/myapp.app (perhaps only if it is checked in or not ignored by VCSes? This could be tricky to support though)
If an
ebin/myapp.app
file is present, the plug-in will publish the version from there instead of the one insrc/myapp.app.src
or_build/default/lib/myapp/ebin/myapp.app
. This frequently happens when the currentmyapp
project is symlinked in another projects_checkouts
folder. When that is the case, Rebar 3 will compile the project and put anebin
folder inside_checkouts/myapp/ebin
which then, because of the symlink, ends up beingmyapp/ebin
.ebin
is usually Git ignored in projects because of Rebar's generated default.gitignore
file.This leads to weird scenarios when publishing a new version and all files are up to date except the files in
ebin
which are old and previously compiled by Rebar 3 in another projects_checkouts
.I think the logic should be to use the app files in the following order:
./src/myapp.app.src
_build/default/lib/myapp/ebin/myapp.app
(rebar3 hex publish
must ensure the app is compiled in this case)ebin/myapp.app
(perhaps only if it is checked in or not ignored by VCSes? This could be tricky to support though)