aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-11-26 15:56:10 +0100
committerLoïc Hoguin <[email protected]>2018-11-26 15:56:10 +0100
commitb444f586e25dd2d0355c28cf94b4cd5ee6c1711d (patch)
treeae68664c08ce130b38f1118dfb7480ba08d7881e
parent54df98c780eec454a4ac0a9357c7e7a8a837c0b9 (diff)
downloaderlang.mk-b444f586e25dd2d0355c28cf94b4cd5ee6c1711d.tar.gz
erlang.mk-b444f586e25dd2d0355c28cf94b4cd5ee6c1711d.tar.bz2
erlang.mk-b444f586e25dd2d0355c28cf94b4cd5ee6c1711d.zip
Don't include applications with no ebin/ directory in escripts
-rw-r--r--plugins/escript.mk3
-rw-r--r--test/plugin_escript.mk31
2 files changed, 33 insertions, 1 deletions
diff --git a/plugins/escript.mk b/plugins/escript.mk
index 706505e..487e2a4 100644
--- a/plugins/escript.mk
+++ b/plugins/escript.mk
@@ -33,7 +33,8 @@ escript-zip:: deps app
$(gen_verbose) cd .. && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) $(PROJECT)/ebin/*
ifneq ($(DEPS),)
$(verbose) cd $(DEPS_DIR) && $(ESCRIPT_ZIP) $(ESCRIPT_ZIP_FILE) \
- `cat $(ERLANG_MK_TMP)/deps.log | sed 's/^$(subst /,\/,$(DEPS_DIR))\///' | sed 's/$$/\/ebin\/\*/'`
+ $(subst $(DEPS_DIR)/,,$(addsuffix /*,$(wildcard \
+ $(addsuffix /ebin,$(shell cat $(ERLANG_MK_TMP)/deps.log)))))
endif
escript:: escript-zip
diff --git a/test/plugin_escript.mk b/test/plugin_escript.mk
index 7c6b8ce..317425a 100644
--- a/test/plugin_escript.mk
+++ b/test/plugin_escript.mk
@@ -34,6 +34,37 @@ escript-build: build clean
$i "Check that the escript was removed"
$t test ! -e $(APP)/$(APP)
+escript-build-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 "Add lfe.mk to the list of build dependencies"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "BUILD_DEPS = lfe.mk\ndep_lfe.mk = git https://github.com/ninenines/lfe.mk master\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 build dependency was fetched"
+ $t test -d $(APP)/deps/lfe.mk
+
+ $i "Check that the escript runs"
+ $t $(APP)/$(APP) | grep -q good
+
+ $i "Check that the escript does not contain the build dependency"
+ $t ! zipinfo $(APP)/$(APP) 2> /dev/null | grep -q lfe
+
escript-deps: build clean
$i "Bootstrap a new OTP library named $(APP)"