releases + warning for application resource file

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

releases + warning for application resource file

Nato-2
Is there a heuristic or tactic for ensuring that
one's application includes all the necessary OTP
applications (listed in the application resource
file's list of `applications')?

I've had it happen a couple times where
I'll use a module belonging to, say `inets,'
compiling is just fine, code works locally,
and release-building is all good too.
However, I'll ship the release and since
`inets' wasn't listed in the application
resource file, at runtime, calling, say
`httpd_util' module, falls over.

I suppose I'm looking to toggle on something
in `relx' or even better, `erlc' to Error-out
when my code calls modules that won't be
accessible in a release.

--
Nato

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: releases + warning for application resource file

Tristan Sloughter-4
Sadly there is a way to tell systools to run an xref check before generating the boot script based on what will be in the release, but it is not possible to add it to the options through relx at this time, http://erlang.org/doc/man/systools.html#make_script-2

My plan is for exref to be a default option used by relx in the next major release, discussed here https://github.com/erlware/relx/issues/729

I've been meaning to check if 'rebar3 xref' can catch stuff like this or if it needs to change to work properly on only the runtime dependencies specified by an application. I'll take a look at that today and also open an issue for rebar3 if that is the case.

Tristan

On Fri, Jul 5, 2019, at 10:26, Nato wrote:

> Is there a heuristic or tactic for ensuring that
> one's application includes all the necessary OTP
> applications (listed in the application resource
> file's list of `applications')?
>
> I've had it happen a couple times where
> I'll use a module belonging to, say `inets,'
> compiling is just fine, code works locally,
> and release-building is all good too.
> However, I'll ship the release and since
> `inets' wasn't listed in the application
> resource file, at runtime, calling, say
> `httpd_util' module, falls over.
>
> I suppose I'm looking to toggle on something
> in `relx' or even better, `erlc' to Error-out
> when my code calls modules that won't be
> accessible in a release.
>
> --
> Nato
>
> _______________________________________________
> erlang-questions mailing list
> [hidden email]
> http://erlang.org/mailman/listinfo/erlang-questions
>
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: releases + warning for application resource file

Tristan Sloughter-4
Verified and created a rebar3 ticket https://github.com/erlang/rebar3/issues/2119

On Fri, Jul 5, 2019, at 11:02, Tristan Sloughter wrote:

> Sadly there is a way to tell systools to run an xref check before
> generating the boot script based on what will be in the release, but it
> is not possible to add it to the options through relx at this time,
> http://erlang.org/doc/man/systools.html#make_script-2
>
> My plan is for exref to be a default option used by relx in the next
> major release, discussed here https://github.com/erlware/relx/issues/729
>
> I've been meaning to check if 'rebar3 xref' can catch stuff like this
> or if it needs to change to work properly on only the runtime
> dependencies specified by an application. I'll take a look at that
> today and also open an issue for rebar3 if that is the case.
>
> Tristan
>
> On Fri, Jul 5, 2019, at 10:26, Nato wrote:
> > Is there a heuristic or tactic for ensuring that
> > one's application includes all the necessary OTP
> > applications (listed in the application resource
> > file's list of `applications')?
> >
> > I've had it happen a couple times where
> > I'll use a module belonging to, say `inets,'
> > compiling is just fine, code works locally,
> > and release-building is all good too.
> > However, I'll ship the release and since
> > `inets' wasn't listed in the application
> > resource file, at runtime, calling, say
> > `httpd_util' module, falls over.
> >
> > I suppose I'm looking to toggle on something
> > in `relx' or even better, `erlc' to Error-out
> > when my code calls modules that won't be
> > accessible in a release.
> >
> > --
> > Nato
> >
> > _______________________________________________
> > erlang-questions mailing list
> > [hidden email]
> > http://erlang.org/mailman/listinfo/erlang-questions
> >
> _______________________________________________
> erlang-questions mailing list
> [hidden email]
> http://erlang.org/mailman/listinfo/erlang-questions
>
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: releases + warning for application resource file

Nato-2
Thanks for taking the time to look at this,
Tristan.


--
Nato

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions