erlware / relx

Sane, simple release creation for Erlang
http://erlware.github.io/relx
Apache License 2.0
697 stars 232 forks source link

Unable to rewrite .app file error #583

Closed rcc closed 7 years ago

rcc commented 7 years ago

===> Unable to rewrite .app file <release_build_directory>/lib/public_key-1.4/ebin/public_key.app due to {error, eacces}

I'm getting this new error as of commit 3a5137a9dca04c02b52d787aaec6630e721d0e08

I'm still digging into why, but it appears to be due to this public_key app being part of the system's installed libraries. I'm not using public_key directly, but believe it is a dependency of one of my dependencies.

rcc commented 7 years ago

The permissions in the public_key app's ebin directory are identical between the working and non-working builds. So possibly a new access is trying to happen that's not valid.

rcc commented 7 years ago

I've confirmed that if I manually fix the application dependency list to put kernel, stdlib first, I no longer get the error. For me the file is at /usr/local/Cellar/erlang/19.3/lib/erlang/lib/public_key-1.4/ebin/public_key.app

Now I'm hitting the same error on the next library, ssl-8.1.1.

Looks like the new code is causing the reordered application dependency list is trying to be written back to the .app file, but all the permissions are read only.

rcc commented 7 years ago

it's causing this case statement to trigger in rlx_prv_assembler.erl

    case write_file_if_contents_differ(AppFile, Spec) of
        ok -> ok;
        Error -> ?RLX_ERROR({rewrite_app_file, AppFile, Error})
    end.
lrascao commented 7 years ago

Thanks for the investigation, do you mind trying #585 and see if it fixes the issue?

rcc commented 7 years ago

Confirmed. That change fixes it for me.

lrascao commented 7 years ago

closing via #585