aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2022-04-28 11:46:47 +0200
committerLoïc Hoguin <[email protected]>2022-04-28 11:46:47 +0200
commit6f9ee4c52066cdbec7c809363649ab30fda22db0 (patch)
tree8e553eeebae229e3d061f1f7b5abcc2e3b6eef0e
parent3e83513764e8205d67b12346206d8c2fa0e5eed3 (diff)
downloaderlang.mk-6f9ee4c52066cdbec7c809363649ab30fda22db0.tar.gz
erlang.mk-6f9ee4c52066cdbec7c809363649ab30fda22db0.tar.bz2
erlang.mk-6f9ee4c52066cdbec7c809363649ab30fda22db0.zip
fixup! Upgrade to Relx 4 which is now used as a library
-rw-r--r--CHANGELOG.asciidoc42
-rw-r--r--plugins/relx.mk19
-rw-r--r--test/core_deps.mk10
-rw-r--r--test/plugin_bootstrap.mk3
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