ninenines / erlang.mk

A build tool for Erlang that just works.
https://erlang.mk
ISC License
578 stars 241 forks source link

system deps are not included in release anymore #965

Closed lightuponcloud closed 1 year ago

lightuponcloud commented 1 year ago

Hello

It looks like system libraries, such as inets are not copied to _rel/lib directory anymore. In shell: code:get_path(). ["ebin",".","/usr/lib/erlang/lib/kernel-8.5.1/ebin", "/usr/lib/erlang/lib/stdlib-4.1.1/ebin",

In cowboy shell those paths are missing.

Makefile: PROJECT = pubsub PROJECT_DESCRIPTION = Notifications Manager PROJECT_VERSION = 0.0.1

DEPS = cowboy jsx lager REL_DEPS = relx LOCAL_DEPS = inets xmerl DEP_PLUGINS = cowboy TEST_DEPS = meck

dep_cowboy_commit = 2.7.0 dep_meck = git https://github.com/eproxus/meck.git master dep_jsx = git https://github.com/talentdeficit/jsx v2.11.0 dep_epgsql = git https://github.com/epgsql/epgsql 4.6.1

APP_VERSION = $(shell cat rel/version)

pubsub: all echo APP_VERSION = $(APP_VERSION)

include erlang.mk

ERLC_OPTS += +'{parse_transform, lager_transform}'

I use Erlang from Debian, 25.1.2+dfsg-1.

I need to use httpc in cowboy, but I receive module not found error, as inets is not loaded.

In previous version (2017.08.28-16-g1a5adc6) of erlang.mk it worked

essen commented 1 year ago

The default has changed in relx so if you had a relx.config generated before you will need to add some new stuff like dev_mode and include_erts in your config. See the configuration that Erlang.mk now has to set to make it work like before: https://github.com/ninenines/erlang.mk/blob/master/plugins/bootstrap.mk#L94-L101

lightuponcloud commented 1 year ago

Thank you for prompt reply. I appreciate that.

I tried updating relx.config with the same result.

{release, {pubsub, "0.0.1"}, [pubsub, sasl, runtime_tools]}.
{dev_mode, false}.
{include_erts, true}.
{extended_start_script, true}.
{sys_config, "rel/sys.config"}.
{vm_args, "rel/vm.args"}.
{overlay, [
    {template, "rel/version", "version"}
]}.

Is there's anything else that should be changed ?

Thank you

lightuponcloud commented 1 year ago

I added inets to relx and it worked: {release, {pubsub, "0.0.1"}, [pubsub, sasl, inets, runtime_tools]}.

Thank you very much

essen commented 1 year ago

You also need inets either as a dependency of the release or of the application that uses httpc yes. In Erlang.mk that means adding it to LOCAL_DEPS of your application.