From 6f9ee4c52066cdbec7c809363649ab30fda22db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 28 Apr 2022 11:46:47 +0200 Subject: fixup! Upgrade to Relx 4 which is now used as a library --- CHANGELOG.asciidoc | 42 ++++++++++++++++++++---------------------- plugins/relx.mk | 19 ------------------- test/core_deps.mk | 10 +++++----- test/plugin_bootstrap.mk | 3 +++ 4 files changed, 28 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index f237592..db5c7ef 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -1,25 +1,3 @@ -2018/12/03: Relx has been updated to v3.27.0. - -2018/12/03: Dependencies are no longer always rebuilt by - default. Please check the documentation for - information. A quick fix if this causes an - issue is to add `FULL = 1` at the top of your - Makefile. - -2018/12/06: Change the default COVER_DATA_DIR to be the - same as COVER_REPORT_DIR. - -2019/06/20: `list-deps` now includes local applications - found in the `APPS_DIR` directory. - -2020/03/25: The `-lerl_interface` argument has been removed - from the default `LDLIBS`. This is an old library - that is getting removed in OTP-23 and should no - longer be used. Note that the default still includes - `-lei` which is part of the Erlang/OTP Erl_Interface - *application* but is built as a separate C library. - The removal only applies to `-lerl_interface` itself. - 2020/06/18: Concuerror integration has been added. It is currently minimal but usable. Experimentation and feedback is welcome. @@ -27,3 +5,23 @@ 2020/11/30: Support for publishing Hex releases and docs has been added. It is currently experimental. Feedback is more than welcome. + +2022/03/25: The -Wrace_conditions Dialyzer flag was removed + as it is no longer available starting from OTP 25. + +2022/??/??: Relx has been updated to v4. Relx v4 is no longer + an escript, therefore breaking changes were + introduced. The `RELX`, `RELX_URL` and `RELX_OPTS` + variables were removed. The `relx` project must + be added as a `DEPS`, `BUILD_DEPS` or `REL_DEPS` + dependency to enable building releases. For example: + `REL_DEPS = relx`. Relx itself has had some + additional changes: the `start` command has + been replaced by `daemon`, and configuration + defaults have changed so that you may need + to add the following to your relx.config file: + + ``` erlang + {dev_mode, false}. + {include_erts, true}. + ``` diff --git a/plugins/relx.mk b/plugins/relx.mk index eb560ff..de12ba1 100644 --- a/plugins/relx.mk +++ b/plugins/relx.mk @@ -6,11 +6,8 @@ ifeq ($(filter relx,$(BUILD_DEPS) $(DEPS) $(REL_DEPS)),relx) # Configuration. -#RELX ?= $(ERLANG_MK_TMP)/relx RELX_CONFIG ?= $(CURDIR)/relx.config -#RELX_URL ?= https://erlang.mk/res/relx-v3.27.0-22 -#RELX_OPTS ?= RELX_OUTPUT_DIR ?= _rel RELX_REL_EXT ?= RELX_TAR ?= 1 @@ -19,12 +16,6 @@ ifdef SFX RELX_TAR = 1 endif -#ifeq ($(firstword $(RELX_OPTS)),-o) -# RELX_OUTPUT_DIR = $(word 2,$(RELX_OPTS)) -#else -# RELX_OPTS += -o $(RELX_OUTPUT_DIR) -#endif - # Core targets. ifeq ($(IS_DEP),) @@ -39,10 +30,6 @@ distclean:: distclean-relx-rel # Plugin-specific targets. -#$(RELX): | $(ERLANG_MK_TMP) -# $(gen_verbose) $(call core_http_get,$(RELX),$(RELX_URL)) -# $(verbose) chmod +x $(RELX) - define relx_release.erl {ok, Config} = file:consult("$(call core_native_path,$(RELX_CONFIG))"), {release, {Name, Vsn0}, _} = lists:keyfind(release, 1, Config), @@ -78,26 +65,20 @@ define relx_relup.erl {semver, _} -> ""; VsnStr -> Vsn0 end, - io:format("~p~n~n", [Vsn]), {ok, _} = relx:build_relup(Name, Vsn, undefined, Config ++ [{output_dir, "$(RELX_OUTPUT_DIR)"}]), halt(0). endef relx-rel: rel-deps app -# $(verbose) $(RELX) $(if $(filter 1,$V),-V 3) -c $(RELX_CONFIG) $(RELX_OPTS) release $(call erlang,$(call relx_release.erl),-pa ebin/) $(verbose) $(MAKE) relx-post-rel ifeq ($(RELX_TAR),1) -# $(verbose) touch $(RELX_OUTPUT_DIR)/$(PROJECT)_release/releases/RELEASES -# $(verbose) $(RELX) $(if $(filter 1,$V),-V 3) -c $(RELX_CONFIG) $(RELX_OPTS) tar $(call erlang,$(call relx_tar.erl),-pa ebin/) endif relx-relup: rel-deps app -# $(verbose) $(RELX) $(if $(filter 1,$V),-V 3) -c $(RELX_CONFIG) $(RELX_OPTS) release $(call erlang,$(call relx_release.erl),-pa ebin/) $(MAKE) relx-post-rel -# $(verbose) $(RELX) $(if $(filter 1,$V),-V 3) -c $(RELX_CONFIG) $(RELX_OPTS) relup $(if $(filter 1,$(RELX_TAR)),tar) $(call erlang,$(call relx_relup.erl),-pa ebin/) ifeq ($(RELX_TAR),1) $(call erlang,$(call relx_tar.erl),-pa ebin/) diff --git a/test/core_deps.mk b/test/core_deps.mk index 5b46000..c7778ed 100644 --- a/test/core_deps.mk +++ b/test/core_deps.mk @@ -1260,8 +1260,8 @@ core-deps-rel: init $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib bootstrap-rel $v - $i "Add Recon to the list of release dependencies" - $t perl -ni.bak -e 'print;if ($$.==1) {print "REL_DEPS = recon\n"}' $(APP)/Makefile + $i "Add Relx and Recon to the list of release dependencies" + $t perl -ni.bak -e 'print;if ($$.==1) {print "REL_DEPS = relx recon\n"}' $(APP)/Makefile $i "Add Recon to the relx.config file" $t $(ERL) -eval " \ @@ -1302,17 +1302,17 @@ core-deps-rel: init ifeq ($(PLATFORM),msys2) # $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd install $v # $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd start $v -# $t test -n "`$(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd rpcterms \ +# $t test -n "`$(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd rpc \ # application loaded_applications | grep recon`" # $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd stop $v # $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd uninstall $v else $i "Start the release and check that Recon is loaded" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release start $v + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release daemon $v $t apps="Node is not running!"; \ while test "$$apps" = "Node is not running!"; do \ apps=$$($(APP)/_rel/$(APP)_release/bin/$(APP)_release \ - rpcterms \ application loaded_applications); \ + rpc application loaded_applications); \ done; \ echo "$$apps" | grep -q recon $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release stop $v diff --git a/test/plugin_bootstrap.mk b/test/plugin_bootstrap.mk index 7093fce..251de7a 100644 --- a/test/plugin_bootstrap.mk +++ b/test/plugin_bootstrap.mk @@ -201,6 +201,9 @@ bootstrap-rel: init $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v + $i "Add Relx to the list of release dependencies" + $t perl -ni.bak -e 'print;if ($$.==1) {print "REL_DEPS = relx\n"}' $(APP)/Makefile + $i "Check that all bootstrapped files exist" $t test -f $(APP)/Makefile $t test -f $(APP)/relx.config -- cgit v1.2.3