aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Nemanov <[email protected]>2018-05-23 11:59:44 +0300
committerLoïc Hoguin <[email protected]>2018-11-22 15:56:54 +0100
commite0829f241929078c71736412e307b9ad09b16760 (patch)
tree834c3590705d3ae7a6bafb570f250d80daae1531
parentdbc51f9caa610305fec5db0beebc629d2e46f46d (diff)
downloaderlang.mk-e0829f241929078c71736412e307b9ad09b16760.tar.gz
erlang.mk-e0829f241929078c71736412e307b9ad09b16760.tar.bz2
erlang.mk-e0829f241929078c71736412e307b9ad09b16760.zip
Add relx-post-rel hook
This hook can be used, for example, to copy additional files to release before it is tared by relx.
-rw-r--r--plugins/relx.mk13
-rw-r--r--test/plugin_relx.mk43
2 files changed, 54 insertions, 2 deletions
diff --git a/plugins/relx.mk b/plugins/relx.mk
index dd3860a..94f2e79 100644
--- a/plugins/relx.mk
+++ b/plugins/relx.mk
@@ -44,14 +44,23 @@ $(RELX):
$(verbose) chmod +x $(RELX)
relx-rel: $(RELX) rel-deps app
- $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release $(if $(filter 1,$(RELX_TAR)),tar)
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release
+ $(MAKE) relx-post-rel
+ifeq ($(RELX_TAR),1)
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) tar
+endif
relx-relup: $(RELX) rel-deps app
- $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release relup $(if $(filter 1,$(RELX_TAR)),tar)
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) release
+ $(MAKE) relx-post-rel
+ $(verbose) $(RELX) -c $(RELX_CONFIG) $(RELX_OPTS) relup $(if $(filter 1,$(RELX_TAR)),tar)
distclean-relx-rel:
$(gen_verbose) rm -rf $(RELX_OUTPUT_DIR)
+# Default hooks.
+relx-post-rel::
+
# Run target.
ifeq ($(wildcard $(RELX_CONFIG)),)
diff --git a/test/plugin_relx.mk b/test/plugin_relx.mk
index 3e77516..b5b6033 100644
--- a/test/plugin_relx.mk
+++ b/test/plugin_relx.mk
@@ -74,6 +74,49 @@ relx-bare-rel: build clean
$t test -d $(APP)/_rel/$(APP)_release/releases
$t test -d $(APP)/_rel/$(APP)_release/releases/1
+relx-post-rel: build clean
+
+ $i "Bootstrap a new release named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v
+
+ $i "Add relx-post-rel target to Makefile"
+ $t echo "relx-post-rel::" >> $(APP)/Makefile
+ $t echo " echo test post rel > _rel/$(APP)_release/test_post_rel" >> $(APP)/Makefile
+ $i "Build the release"
+ $t $(MAKE) -C $(APP) $v
+
+ $i "Check that relx was downloaded"
+ $t test -f $(APP)/.erlang.mk/relx
+
+ $i "Check that the release was built"
+ $t test -d $(APP)/_rel
+ $t test -d $(APP)/_rel/$(APP)_release
+ $t test -f $(APP)/_rel/$(APP)_release/test_post_rel
+ $t test "test post rel" = "`cat $(APP)/_rel/$(APP)_release/test_post_rel`"
+ $t test -d $(APP)/_rel/$(APP)_release/bin
+ $t test -d $(APP)/_rel/$(APP)_release/lib
+ $t test -d $(APP)/_rel/$(APP)_release/releases
+ $t test -d $(APP)/_rel/$(APP)_release/releases/1
+
+ $i "Clean the application"
+ $t $(MAKE) -C $(APP) clean $v
+
+ $i "Check that the release still exists"
+ $t test -d $(APP)/_rel
+ $t test -d $(APP)/_rel/$(APP)_release
+ $t test -d $(APP)/_rel/$(APP)_release/bin
+ $t test -d $(APP)/_rel/$(APP)_release/lib
+ $t test -d $(APP)/_rel/$(APP)_release/releases
+ $t test -d $(APP)/_rel/$(APP)_release/releases/1
+
+ $i "Distclean the application"
+ $t $(MAKE) -C $(APP) distclean $v
+
+ $i "Check that the output directory was removed entirely"
+ $t test ! -d $(APP)/_rel/
+
relx-relup: build clean
$i "Bootstrap a new release named $(APP)"