Browse Source

erlang.mk now has built-in support for relx

Loïc Hoguin 11 years ago
parent
commit
4769412daa

+ 30 - 3
erlang.mk

@@ -24,7 +24,7 @@ export PKG_FILE
 PKG_FILE_URL ?= https://raw.github.com/extend/erlang.mk/master/packages.v1.tsv
 
 define get_pkg_file
-	wget -O $(PKG_FILE) $(PKG_FILE_URL)
+	wget -O $(PKG_FILE) $(PKG_FILE_URL) || rm $(PKG_FILE)
 endef
 
 # Verbosity and tweaks.
@@ -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) || rm $(RELX)
+	chmod +x $(RELX)
+endef
+
+rel: clean-rel all $(RELX)
+	@$(RELX)
+
+$(RELX):
+	@$(call get_relx)
+
+clean-rel:
+	@rm -rf _rel
+
+endif
 
 # Deps directory.
 

+ 0 - 8
examples/chunked_hello_world/Makefile

@@ -3,12 +3,4 @@ PROJECT = chunked_hello_world
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/compress_response/Makefile

@@ -3,12 +3,4 @@ PROJECT = compress_response
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/cookie/Makefile

@@ -4,12 +4,4 @@ DEPS = cowboy erlydtl
 dep_cowboy = pkg://cowboy master
 dep_erlydtl = pkg://erlydtl master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/echo_get/Makefile

@@ -3,12 +3,4 @@ PROJECT = echo_get
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/echo_post/Makefile

@@ -3,12 +3,4 @@ PROJECT = echo_post
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/error_hook/Makefile

@@ -3,12 +3,4 @@ PROJECT = error_hook
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/eventsource/Makefile

@@ -3,12 +3,4 @@ PROJECT = eventsource
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/hello_world/Makefile

@@ -3,12 +3,4 @@ PROJECT = hello_world
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/rest_basic_auth/Makefile

@@ -3,12 +3,4 @@ PROJECT = rest_basic_auth
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/rest_hello_world/Makefile

@@ -3,12 +3,4 @@ PROJECT = rest_hello_world
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/rest_pastebin/Makefile

@@ -3,12 +3,4 @@ PROJECT = rest_pastebin
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/rest_stream_response/Makefile

@@ -3,12 +3,4 @@ PROJECT = rest_stream_response
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/ssl_hello_world/Makefile

@@ -3,12 +3,4 @@ PROJECT = ssl_hello_world
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/static_world/Makefile

@@ -3,12 +3,4 @@ PROJECT = static_world
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/web_server/Makefile

@@ -3,12 +3,4 @@ PROJECT = web_server
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 0 - 8
examples/websocket/Makefile

@@ -3,12 +3,4 @@ PROJECT = websocket
 DEPS = cowboy
 dep_cowboy = pkg://cowboy master
 
-.PHONY: release clean-release
-
-release: clean-release all
-	relx
-
-clean-release:
-	rm -rf _rel
-
 include ../../erlang.mk

+ 7 - 9
guide/getting_started.md

@@ -44,6 +44,7 @@ hello_erlang/
         hello_erlang_sup.beam
         hello_handler.beam
     _rel/
+    relx
 ```
 
 As you can probably guess, the `.app.src` file end up becoming
@@ -271,14 +272,11 @@ $ make
 ```
 
 That's not all however, as we want to create a working release.
-For that purpose we will need `relx`. You can download it directly
-[from Github](https://github.com/erlware/relx). After downloading
-it, you will need to build it using `make`, which should give
-you a `relx` executable that you can then put in your `$PATH`.
-You only need to do this once.
-
-We are almost ready to build the release. All that's left is
-the `relx.config` file! In it, we only need to tell `relx` that
+For that purpose, we need to create a `relx.config` file. When
+this file exists, `erlang.mk` will automatically download `relx`
+and build the release when you type `make`.
+
+In the `relx.config` file, we only need to tell `relx` that
 we want the release to include the `hello_erlang` application,
 and that we want an extended start script for convenience.
 `relx` will figure out which other applications are required
@@ -295,7 +293,7 @@ version, and the applications to be included.
 We can now build and start the release.
 
 ``` bash
-$ relx
+$ make
 $ ./_rel/bin/hello_erlang console
 ```