Unpack JARs for running servers in $site_path/tmp

Instead of unpacking a running server into ~/.gerritcodereview/tmp
only use that location for commands like init where there is no active
site. From gerrit.sh always use $site_path/tmp for the JARs to isolate
servers that run on the same host under the same UNIX user account.

Change-Id: I688490ffbbf70312767bb766dc7ccbea52401ad1
diff --git a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
index 7f2007e..61bb52f 100644
--- a/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
+++ b/gerrit-launcher/src/main/java/com/google/gerrit/launcher/GerritLauncher.java
@@ -423,36 +423,42 @@
   }
 
   private static File tmproot() {
-    // Try to find the user's home directory. If we can't find it
-    // return null so the JVM's default temporary directory is used
-    // instead. This is probably /tmp or /var/tmp.
-    //
-    String userHome = System.getProperty("user.home");
-    if (userHome == null || "".equals(userHome)) {
-      userHome = System.getenv("HOME");
+    File tmp;
+    String gerritTemp = System.getenv("GERRIT_TMP");
+    if (gerritTemp != null && gerritTemp.length() > 0) {
+      tmp = new File(gerritTemp);
+    } else {
+      // Try to find the user's home directory. If we can't find it
+      // return null so the JVM's default temporary directory is used
+      // instead. This is probably /tmp or /var/tmp.
+      //
+      String userHome = System.getProperty("user.home");
       if (userHome == null || "".equals(userHome)) {
-        System.err.println("warning: cannot determine home directory");
-        System.err.println("warning: using system temporary directory instead");
-        return null;
+        userHome = System.getenv("HOME");
+        if (userHome == null || "".equals(userHome)) {
+          System.err.println("warning: cannot determine home directory");
+          System.err.println("warning: using system temporary directory instead");
+          return null;
+        }
       }
-    }
 
-    // Ensure the home directory exists. If it doesn't, try to make it.
-    //
-    final File home = new File(userHome);
-    if (!home.exists()) {
-      if (home.mkdirs()) {
-        System.err.println("warning: created " + home.getAbsolutePath());
-      } else {
-        System.err.println("warning: " + home.getAbsolutePath() + " not found");
-        System.err.println("warning: using system temporary directory instead");
-        return null;
+      // Ensure the home directory exists. If it doesn't, try to make it.
+      //
+      final File home = new File(userHome);
+      if (!home.exists()) {
+        if (home.mkdirs()) {
+          System.err.println("warning: created " + home.getAbsolutePath());
+        } else {
+          System.err.println("warning: " + home.getAbsolutePath() + " not found");
+          System.err.println("warning: using system temporary directory instead");
+          return null;
+        }
       }
-    }
 
-    // Use $HOME/.gerritcodereview/tmp for our temporary file area.
-    //
-    final File tmp = new File(new File(home, ".gerritcodereview"), "tmp");
+      // Use $HOME/.gerritcodereview/tmp for our temporary file area.
+      //
+      tmp = new File(new File(home, ".gerritcodereview"), "tmp");
+    }
     if (!tmp.exists() && !tmp.mkdirs()) {
       System.err.println("warning: cannot create " + tmp.getAbsolutePath());
       System.err.println("warning: using system temporary directory instead");
diff --git a/gerrit-pgm/src/main/resources/com/google/gerrit/pgm/gerrit.sh b/gerrit-pgm/src/main/resources/com/google/gerrit/pgm/gerrit.sh
index 51b7d1a..3857ebd 100755
--- a/gerrit-pgm/src/main/resources/com/google/gerrit/pgm/gerrit.sh
+++ b/gerrit-pgm/src/main/resources/com/google/gerrit/pgm/gerrit.sh
@@ -176,6 +176,8 @@
 
 GERRIT_PID="$GERRIT_SITE/logs/gerrit.pid"
 GERRIT_RUN="$GERRIT_SITE/logs/gerrit.run"
+GERRIT_TMP="$GERRIT_SITE/tmp"
+export GERRIT_TMP
 
 ##################################################
 # Check for JAVA_HOME
@@ -492,6 +494,7 @@
     echo "  GERRIT_SITE     =  $GERRIT_SITE"
     echo "  GERRIT_CONFIG   =  $GERRIT_CONFIG"
     echo "  GERRIT_PID      =  $GERRIT_PID"
+    echo "  GERRIT_TMP      =  $GERRIT_TMP"
     echo "  GERRIT_WAR      =  $GERRIT_WAR"
     echo "  GERRIT_FDS      =  $GERRIT_FDS"
     echo "  GERRIT_USER     =  $GERRIT_USER"