summaryrefslogtreecommitdiff
path: root/test/upgrade_project/rel/files/erl
diff options
context:
space:
mode:
authorjoewilliams <joe@joetify.com>2011-01-27 18:15:25 +0100
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2011-01-27 18:37:39 +0100
commit5298e93a180e6db87a33f26eb6a2db06e8065dc7 (patch)
tree179659725014a0263e608cc0d4c3857a40eb53f6 /test/upgrade_project/rel/files/erl
parent3fd3bfc89a614728c21360ecb91d8a5029f7d0b3 (diff)
Add 'generate-upgrade' command
To support OTP release upgrades I have added support for building upgrade packages. Support for this is included in the rebar_upgrade module, specifically generate_upgrade/2. It requires one variable to be set on the command line 'previous_release' which is the absolute path or relative path from 'rel/' to the previous release one is upgrading from. Running an upgrade will create the needed files, including a relup and result in a tarball containing the upgrade being written to 'rel/'. When done it cleans up the temporary files systools created. Usage: $ rebar generate-upgrade previous_release=/path/to/old/version This also includes a dummy application that can be used to test upgrades as well as an example. Special thanks to Daniel Reverri, Jesper Louis Andersen and Richard Jones for comments and patches.
Diffstat (limited to 'test/upgrade_project/rel/files/erl')
-rwxr-xr-xtest/upgrade_project/rel/files/erl34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/upgrade_project/rel/files/erl b/test/upgrade_project/rel/files/erl
new file mode 100755
index 0000000..b985f23
--- /dev/null
+++ b/test/upgrade_project/rel/files/erl
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+## This script replaces the default "erl" in erts-VSN/bin. This is necessary
+## as escript depends on erl and in turn, erl depends on having access to a
+## bootscript (start.boot). Note that this script is ONLY invoked as a side-effect
+## of running escript -- the embedded node bypasses erl and uses erlexec directly
+## (as it should).
+##
+## Note that this script makes the assumption that there is a start_clean.boot
+## file available in $ROOTDIR/release/VSN.
+
+# Determine the abspath of where this script is executing from.
+ERTS_BIN_DIR=$(cd ${0%/*} && pwd)
+
+# Now determine the root directory -- this script runs from erts-VSN/bin,
+# so we simply need to strip off two dirs from the end of the ERTS_BIN_DIR
+# path.
+ROOTDIR=${ERTS_BIN_DIR%/*/*}
+
+# Parse out release and erts info
+START_ERL=`cat $ROOTDIR/releases/start_erl.data`
+ERTS_VSN=${START_ERL% *}
+APP_VSN=${START_ERL#* }
+
+BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin
+EMU=beam
+PROGNAME=`echo $0 | sed 's/.*\\///'`
+CMD="$BINDIR/erlexec"
+export EMU
+export ROOTDIR
+export BINDIR
+export PROGNAME
+
+exec $CMD -boot $ROOTDIR/releases/$APP_VSN/start_clean ${1+"$@"}