aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-10-14 14:29:32 +0200
committerLoïc Hoguin <[email protected]>2013-10-14 14:29:32 +0200
commitcfcbcb5f407e95d44948f41d2a6397d9b2e8897c (patch)
tree1918bde4439f20f832b7d903b759234be03b91cd
parent6b42bd74b64ca157458aec78cb59f31c627bd350 (diff)
downloaderlang.mk-cfcbcb5f407e95d44948f41d2a6397d9b2e8897c.tar.gz
erlang.mk-cfcbcb5f407e95d44948f41d2a6397d9b2e8897c.tar.bz2
erlang.mk-cfcbcb5f407e95d44948f41d2a6397d9b2e8897c.zip
Add release support to erlang.mk
No special configuration is needed, the release will be built automatically if a relx.config file is found.
-rw-r--r--README.md21
-rw-r--r--erlang.mk31
2 files changed, 49 insertions, 3 deletions
diff --git a/README.md b/README.md
index c115f3b..ae358e8 100644
--- a/README.md
+++ b/README.md
@@ -73,6 +73,15 @@ for fetching the dependency.
All packages featured in the index are compatible with erlang.mk
with no extra work required.
+Releases
+--------
+
+If a `relx.config` file is present, erlang.mk will download `relx`
+automatically and build the release into the `_rel` folder. This
+is the default command when the file exists.
+
+No special configuration is required for this to work.
+
Compiled files
--------------
@@ -110,6 +119,8 @@ The following targets are defined:
| `dialyze` | Run Dialyzer on the application |
| `pkg-list` | List packages in the index |
| `pkg-search` | Search for packages in the index |
+| `rel` | Builds a release |
+| `clean-rel` | Delete the previously built release |
Cleaning means removing all generated and temporary files.
@@ -122,7 +133,8 @@ targets. For example if you have a common_test suite named `spdy`
and you want to run only this suite and not the others, you can
use the `make test_spdy` command.
-The default target when calling `make` is `all`.
+The default target when calling `make` is `all` when no `relx.config`
+exists, and `rel` when it does exist.
You can combine targets to perform many operations. For example, the
shell command `make clean app` will have the effect of recompiling
@@ -170,6 +182,13 @@ on your system.
`PKG_FILE_URL` allows you to change the URL from which the package index
file is fetched.
+`RELX_CONFIG` is the location of the `relx.config` file, if any.
+
+`RELX` is the location of the `relx` executable for building releases.
+
+`RELX_URL` is the location where `relx` can be downloaded if it is
+not found locally.
+
Extra targets
-------------
diff --git a/erlang.mk b/erlang.mk
index 2c09cf8..8e769f5 100644
--- a/erlang.mk
+++ b/erlang.mk
@@ -46,8 +46,35 @@ dtl_verbose = $(dtl_verbose_$(V))
gen_verbose_0 = @echo " GEN " $@;
gen_verbose = $(gen_verbose_$(V))
-.PHONY: all clean-all app clean deps clean-deps docs clean-docs \
- build-tests tests build-plt dialyze
+.PHONY: rel clean-rel all clean-all app clean deps clean-deps \
+ docs clean-docs build-tests tests build-plt dialyze
+
+# Release.
+
+RELX_CONFIG ?= $(CURDIR)/relx.config
+
+ifneq ($(wildcard $(RELX_CONFIG)),)
+
+RELX ?= $(CURDIR)/relx
+export RELX
+
+RELX_URL ?= https://github.com/erlware/relx/releases/download/0.4.0/relx
+
+define get_relx
+ wget -O $(RELX) $(RELX_URL)
+ chmod +x $(RELX)
+endef
+
+rel: clean-rel all $(RELX)
+ $(RELX)
+
+$(RELX):
+ @$(call get_relx)
+
+clean-rel:
+ rm -rf _rel
+
+endif
# Deps directory.