From 01efaa6764088ee0df0d1ec6e5f561707af5ebe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 30 Oct 2016 16:56:29 +0200 Subject: Greatly improve the escript support The plugin can now easily generate escripts as complex as relx or rebar/rebar3. It generates a proper structure and allows embedding extra files by extending the escript-zip target. Documentation and tests have been added. --- test/plugin_escript.mk | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 test/plugin_escript.mk (limited to 'test/plugin_escript.mk') diff --git a/test/plugin_escript.mk b/test/plugin_escript.mk new file mode 100644 index 0000000..3916094 --- /dev/null +++ b/test/plugin_escript.mk @@ -0,0 +1,89 @@ +# Escript plugin. + +ESCRIPT_CASES = build deps extra +ESCRIPT_TARGETS = $(addprefix escript-,$(ESCRIPT_CASES)) + +.PHONY: escript $(ESCRIPT_TARGETS) + +escript: $(ESCRIPT_TARGETS) + +escript-build: build clean + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript exists" + $t test -f $(APP)/$(APP) + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Distclean the application" + $t $(MAKE) -C $(APP) distclean $v + + $i "Check that the escript was removed" + $t test ! -e $(APP)/$(APP) + +escript-deps: build clean + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Add Ranch to the list of dependencies" + $t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = ranch\n"}' $(APP)/Makefile + + $i "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Check that the escript contains the dependency" + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q ranch + +escript-extra: build clean + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Instruct Erlang.mk to add extra files to the escript" + $t printf "%s\n" \ + "escript-zip::" \ + ' $$(verbose) $$(ESCRIPT_ZIP) $$(ESCRIPT_ZIP_FILE) Makefile erlang.mk' >> $(APP)/Makefile + + $i "Generate a module containing a function main/1" + $t printf "%s\n" \ + "-module($(APP))." \ + "-export([main/1])." \ + 'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl + + $i "Build the escript" + $t $(MAKE) -C $(APP) escript $v + + $i "Check that the escript runs" + $t $(APP)/$(APP) | grep -q good + + $i "Check that the escript contains the extra files" + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q Makefile + $t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q erlang.mk -- cgit v1.2.3