diff options
-rw-r--r-- | build.config | 1 | ||||
-rw-r--r-- | plugins/sfx.mk | 45 |
2 files changed, 46 insertions, 0 deletions
diff --git a/build.config b/build.config index 6a8d567..0ba1245 100644 --- a/build.config +++ b/build.config @@ -37,6 +37,7 @@ plugins/xref # Plugins enhancing the functionality of other plugins. plugins/cover +plugins/sfx # Core modules which can use variables from plugins. core/deps-tools diff --git a/plugins/sfx.mk b/plugins/sfx.mk new file mode 100644 index 0000000..ab9761c --- /dev/null +++ b/plugins/sfx.mk @@ -0,0 +1,45 @@ +# Copyright (c) 2016, Loïc Hoguin <[email protected]> +# This file is part of erlang.mk and subject to the terms of the ISC License. + +.PHONY: sfx + +ifdef RELX_RELEASE +ifdef SFX + +# Configuration. + +SFX_OUTPUT = $(RELX_OUTPUT_DIR)/$(RELX_RELEASE).run + +# Core targets. + +rel:: sfx + +# Plugin-specific targets. + +define sfx_stub +#!/bin/sh + +TMPDIR=`mktemp -d` +ARCHIVE=`awk '/^__ARCHIVE_BELOW__$$/ {print NR + 1; exit 0;}' $$0` +FILENAME=$$(basename $$0) +REL=$${FILENAME%.*} + +tail -n+$$ARCHIVE $$0 | tar xz -C $$TMPDIR + +$$TMPDIR/$$REL/bin/$$REL console +RET=$$? + +rm -rf $$TMPDIR + +exit $$RET + +__ARCHIVE_BELOW__ +endef + +sfx: + $(call render_template,sfx_stub,$(SFX_OUTPUT)) + $(gen_verbose) tar -C $(RELX_OUTPUT_DIR) -czO $(RELX_RELEASE) >> $(SFX_OUTPUT) + $(verbose) chmod +x $(SFX_OUTPUT) + +endif +endif |