Permalink
Browse files

Handle vm.args properly while building upgrades

This patch corrects the vm.args behavior while building upgrade tarballs
by copying the file from the release into the upgrade. Additionally it
patches the dummy runner script in the upgrade test project to work
properly.
  • Loading branch information...
1 parent 30d1cdb commit b7bcf5528bb30cc8f2a9b95dc967e2a555243db1 joewilliams committed Oct 6, 2011
Showing with 27 additions and 25 deletions.
  1. +4 −1 src/rebar_upgrade.erl
  2. +23 −24 test/upgrade_project/rel/files/dummy
View
5 src/rebar_upgrade.erl
@@ -151,7 +151,10 @@ boot_files(TargetDir, Ver, Name) ->
filename:join([".", ?TMP, "releases", Ver, Name ++ ".boot"])),
{ok, _} = file:copy(
filename:join([TargetDir, "releases", Ver, "start_clean.boot"]),
- filename:join([".", ?TMP, "releases", Ver, "start_clean.boot"])).
+ filename:join([".", ?TMP, "releases", Ver, "start_clean.boot"])),
+ {ok, _} = file:copy(
+ filename:join([TargetDir, "releases", Ver, "vm.args"]),
+ filename:join([".", ?TMP, "releases", Ver, "vm.args"])).
make_tar(NameVer) ->
Filename = NameVer ++ ".tar.gz",
View
47 test/upgrade_project/rel/files/dummy
@@ -21,49 +21,48 @@ cd $RUNNER_BASE_DIR
# Make sure log directory exists
mkdir -p $RUNNER_LOG_DIR
+# Identify the script name
+SCRIPT=`basename $0`
+
+# Parse out release and erts info
+START_ERL=`cat $RUNNER_BASE_DIR/releases/start_erl.data`
+ERTS_VSN=${START_ERL% *}
+APP_VSN=${START_ERL#* }
+
+# Use releases/VSN/vm.args if it exists otherwise use etc/vm.args
+if [ -e "$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args" ]; then
+ VMARGS_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args"
+else
+ VMARGS_PATH="$RUNNER_ETC_DIR/vm.args"
+fi
+
+# Use releases/VSN/sys.config if it exists otherwise use etc/app.config
+if [ -e "$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config" ]; then
+ CONFIG_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config"
+else
+ CONFIG_PATH="$RUNNER_ETC_DIR/app.config"
+fi
# Extract the target node name from node.args
-NAME_ARG=`egrep '^-s?name' $RUNNER_ETC_DIR/vm.args`
+NAME_ARG=`egrep '^-s?name' $VMARGS_PATH`
if [ -z "$NAME_ARG" ]; then
echo "vm.args needs to have either -name or -sname parameter."
exit 1
fi
# Extract the target cookie
-COOKIE_ARG=`grep '^-setcookie' $RUNNER_ETC_DIR/vm.args`
+COOKIE_ARG=`grep '^-setcookie' $VMARGS_PATH`
if [ -z "$COOKIE_ARG" ]; then
echo "vm.args needs to have a -setcookie parameter."
exit 1
fi
-# Identify the script name
-SCRIPT=`basename $0`
-
-# Parse out release and erts info
-START_ERL=`cat $RUNNER_BASE_DIR/releases/start_erl.data`
-ERTS_VSN=${START_ERL% *}
-APP_VSN=${START_ERL#* }
-
# Add ERTS bin dir to our path
ERTS_PATH=$RUNNER_BASE_DIR/erts-$ERTS_VSN/bin
# Setup command to control the node
NODETOOL="$ERTS_PATH/escript $ERTS_PATH/nodetool $NAME_ARG $COOKIE_ARG"
-# Use releases/VSN/sys.config if it exists otherwise use etc/app.config
-if [ -e "$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config" ]; then
- CONFIG_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config"
-else
- CONFIG_PATH="$RUNNER_ETC_DIR/app.config"
-fi
-
-# Use releases/VSN/vm.args if it exists otherwise use etc/vm.args
-if [-e "$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args" ]; then
- VMARGS_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args"
-else
- VMARGS_PATH="$RUNNER_ETC_DIR/vm.args"
-fi
-
# Check the first argument for instructions
case "$1" in
start)

0 comments on commit b7bcf55

Please sign in to comment.