From 3a6788c0d0b50e0cae902cfdc737d1b2624202ba Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 11 Jan 2017 10:50:02 +0100 Subject: single: allow to build self-extracting executable This allows to create a self extracting executable. The standalone binary and lua files are extracted to /tmp/.vis-XXXXXX, vis is started with the given command line arguments, finally temporary files are removed. Signed-off-by: Christian Hesse --- .gitignore | 1 + GNUmakefile | 5 +++++ vis-single.sh | 14 ++++++++++++++ 3 files changed, 20 insertions(+) create mode 100755 vis-single.sh diff --git a/.gitignore b/.gitignore index 103b097..63eab3f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /dependency /vis /vis-menu +/vis-single *.css *.gcda *.gcno diff --git a/GNUmakefile b/GNUmakefile index dba2952..052c300 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -185,4 +185,9 @@ standalone: clean CFLAGS="-I$(DEPS_INC) --static -Wl,--as-needed" LDFLAGS="-L$(DEPS_LIB)" CC=musl-gcc PATH=$(DEPS_BIN):$$PATH $(MAKE) +single: standalone + cp vis-single.sh vis-single + strip vis + tar c vis lua/ | gzip -9 >> vis-single + .PHONY: standalone local dependencies-common dependencies-local dependencies-clean diff --git a/vis-single.sh b/vis-single.sh new file mode 100755 index 0000000..b6ff69e --- /dev/null +++ b/vis-single.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +VISTMP="$(mktemp -d -p "${TMPDIR:-/tmp}" .vis-XXXXXX)" +trap 'rm -rf "$VISTMP"' EXIT INT QUIT TERM HUP + +sed '1,/^__TAR_GZ_ARCHIVE_BELOW__$/d' "$0" | gzip -d | tar xC "$VISTMP" + +"$VISTMP/vis" "$@" + +exit $? + +__TAR_GZ_ARCHIVE_BELOW__ -- cgit v1.2.3