From: <otm...@us...> - 2008-11-25 14:12:03
|
Revision: 5639 http://jython.svn.sourceforge.net/jython/?rev=5639&view=rev Author: otmarhumbel Date: 2008-11-25 14:11:53 +0000 (Tue, 25 Nov 2008) Log Message: ----------- to enable virtualenv again: do not hardcode JYTHON_HOME this fixes issue #1180 Modified Paths: -------------- trunk/installer/src/java/org/python/util/install/StartScriptGenerator.java trunk/installer/src/java/org/python/util/install/driver/jython_test.bat.template trunk/installer/src/java/org/python/util/install/driver/jython_test.template trunk/installer/test/java/org/python/util/install/StartScriptGeneratorTest.java trunk/jython/src/shell/jython trunk/jython/src/shell/jython.bat Modified: trunk/installer/src/java/org/python/util/install/StartScriptGenerator.java =================================================================== --- trunk/installer/src/java/org/python/util/install/StartScriptGenerator.java 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/installer/src/java/org/python/util/install/StartScriptGenerator.java 2008-11-25 14:11:53 UTC (rev 5639) @@ -15,6 +15,11 @@ protected final static String WIN_CR_LF; + private final static String JAVA_HOME = "JAVA_HOME"; + + /** do not hard-wire JYTHON_HOME */ + private final static String JYTHON_HOME_FALLBACK = "JYTHON_HOME_FALLBACK"; + private final static String JYTHON = "jython"; private final static String JYTHON_BAT = "jython.bat"; @@ -128,11 +133,17 @@ * @see getStartScript */ private String getWindowsJythonTemplate() { - StringBuffer buffer = getWindowsHeaderTemplate(); - buffer.append("set JAVA_HOME=\"{2}\"" + WIN_CR_LF); - buffer.append("set JYTHON_HOME=\"{3}\"" + WIN_CR_LF); - buffer.append(WIN_CR_LF); - return buffer.toString(); + StringBuilder builder = getWindowsHeaderTemplate(); + builder.append("set "); + builder.append(JAVA_HOME); + builder.append("=\"{2}\""); + builder.append(WIN_CR_LF); + builder.append("set "); + builder.append(JYTHON_HOME_FALLBACK); + builder.append("=\"{3}\""); + builder.append(WIN_CR_LF); + builder.append(WIN_CR_LF); + return builder.toString(); } /** @@ -140,13 +151,16 @@ * * @see getStartScript */ - private StringBuffer getWindowsHeaderTemplate() { - StringBuffer buffer = new StringBuffer(1000); - buffer.append("@echo off" + WIN_CR_LF); - buffer.append("rem This file was generated by the Jython installer" + WIN_CR_LF); - buffer.append("rem Created on {0} by {1}" + WIN_CR_LF); - buffer.append(WIN_CR_LF); - return buffer; + private StringBuilder getWindowsHeaderTemplate() { + StringBuilder builder = new StringBuilder(1000); + builder.append("@echo off"); + builder.append(WIN_CR_LF); + builder.append("rem This file was generated by the Jython installer"); + builder.append(WIN_CR_LF); + builder.append("rem Created on {0} by {1}"); + builder.append(WIN_CR_LF); + builder.append(WIN_CR_LF); + return builder; } /** @@ -155,11 +169,13 @@ * @see getStartScript */ private String getUnixJythonTemplate() { - StringBuffer buffer = getUnixHeaderTemplate(); - buffer.append("JAVA_HOME=\"{2}\"\n"); - buffer.append("JYTHON_HOME=\"{3}\"\n"); - buffer.append("\n"); - return buffer.toString(); + StringBuilder builder = getUnixHeaderTemplate(); + builder.append(JAVA_HOME); + builder.append("=\"{2}\"\n"); + builder.append(JYTHON_HOME_FALLBACK); + builder.append("=\"{3}\"\n"); + builder.append("\n"); + return builder.toString(); } /** @@ -167,14 +183,14 @@ * * @see getStartScript */ - private StringBuffer getUnixHeaderTemplate() { - StringBuffer buffer = new StringBuffer(1000); - buffer.append("#!/usr/bin/env bash\n"); - buffer.append("\n"); - buffer.append("# This file was generated by the Jython installer\n"); - buffer.append("# Created on {0} by {1}\n"); - buffer.append("\n"); - return buffer; + private StringBuilder getUnixHeaderTemplate() { + StringBuilder builder = new StringBuilder(1000); + builder.append("#!/usr/bin/env bash\n"); + builder.append("\n"); + builder.append("# This file was generated by the Jython installer\n"); + builder.append("# Created on {0} by {1}\n"); + builder.append("\n"); + return builder; } /** Modified: trunk/installer/src/java/org/python/util/install/driver/jython_test.bat.template =================================================================== --- trunk/installer/src/java/org/python/util/install/driver/jython_test.bat.template 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/installer/src/java/org/python/util/install/driver/jython_test.bat.template 2008-11-25 14:11:53 UTC (rev 5639) @@ -35,6 +35,28 @@ call jython.bat "%_SCRIPT%" set E=%ERRORLEVEL% +cd .. + +echo {3}: no home, calling in home dir: +set JAVA_HOME= +set JYTHON_HOME= +call jython.bat "%_SCRIPT%" +set E=%ERRORLEVEL% + +cd .. + +echo {3}: no home, calling /jython.bat from another working dir:" +set JAVA_HOME= +set JYTHON_HOME= +call "%_INSTALL_DIR%\jython.bat" "%_SCRIPT%" +set E=%ERRORLEVEL% + +echo {3}: no home, calling bin/jython.bat from another working dir:" +set JAVA_HOME= +set JYTHON_HOME= +call "%_INSTALL_DIR%\bin\jython.bat" "%_SCRIPT%" +set E=%ERRORLEVEL% + rem cleanup: set JAVA_HOME=%_OLD_JAVA_HOME% set JYTHON_HOME=%_OLD_JYTHON_HOME% Modified: trunk/installer/src/java/org/python/util/install/driver/jython_test.template =================================================================== --- trunk/installer/src/java/org/python/util/install/driver/jython_test.template 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/installer/src/java/org/python/util/install/driver/jython_test.template 2008-11-25 14:11:53 UTC (rev 5639) @@ -33,11 +33,23 @@ export JYTHON_HOME="$_INSTALL_DIR" ./jython "$_SCRIPT" +cd .. + +echo "{3}: no home, calling in home dir:" +export JAVA_HOME= +export JYTHON_HOME= +./jython "$_SCRIPT" + cd ~ -echo "{3}: no home, calling from another working dir:" +echo "{3}: no home, calling /jython from another working dir:" export JAVA_HOME= export JYTHON_HOME= +"$_INSTALL_DIR/jython" "$_SCRIPT" + +echo "{3}: no home, calling /bin/jython from another working dir:" +export JAVA_HOME= +export JYTHON_HOME= "$_INSTALL_DIR/bin/jython" "$_SCRIPT" # cleanup: Modified: trunk/installer/test/java/org/python/util/install/StartScriptGeneratorTest.java =================================================================== --- trunk/installer/test/java/org/python/util/install/StartScriptGeneratorTest.java 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/installer/test/java/org/python/util/install/StartScriptGeneratorTest.java 2008-11-25 14:11:53 UTC (rev 5639) @@ -49,7 +49,7 @@ buf.append("JAVA_HOME=\""); buf.append(System.getProperty("java.home")); buf.append("\"\n"); - buf.append("JYTHON_HOME=\""); + buf.append("JYTHON_HOME_FALLBACK=\""); buf.append(_targetDir.getAbsolutePath()); buf.append("\"\n"); // some rudimentary tests - feel free to do more @@ -59,6 +59,11 @@ assertTrue(unixScript.length() > 3500); assertTrue(unixScript.indexOf("-Dpython.home=") > start.length()); assertTrue(unixScript.indexOf("-Dpython.executable=") > start.length()); + // no hard coding of JYTHON_HOME + int jythonHomeIndex = unixScript.indexOf("if [ -z \"$JYTHON_HOME\" ] ; then"); + assertTrue(jythonHomeIndex >= 0); + int definitionIndex = unixScript.indexOf("JYTHON_HOME="); + assertTrue(definitionIndex > jythonHomeIndex || definitionIndex < 0); } public void testWindows() throws IOException { @@ -72,7 +77,7 @@ winBuf.append(System.getProperty("java.home")); winBuf.append("\""); winBuf.append(WIN_CR_LF); - winBuf.append("set JYTHON_HOME=\""); + winBuf.append("set JYTHON_HOME_FALLBACK=\""); winBuf.append(_targetDir.getAbsolutePath()); winBuf.append("\""); winBuf.append(WIN_CR_LF); @@ -84,6 +89,11 @@ assertTrue(winScript.indexOf("if not \"%_TRIMMED_JAVA_HOME%\"==\"\"") > start.length()); assertTrue(winScript.indexOf("-Dpython.home=") > start.length()); assertTrue(winScript.indexOf("-Dpython.executable=") > start.length()); + // no hard coding of JYTHON_HOME + int jythonHomeIndex = winScript.indexOf("if not \"%_TRIMMED_JYTHON_HOME%\"==\"\""); + assertTrue(jythonHomeIndex >= 0); + int definitionIndex = winScript.indexOf("set JYTHON_HOME="); + assertTrue(definitionIndex > jythonHomeIndex || definitionIndex < 0); } public void testFlavour() { Modified: trunk/jython/src/shell/jython =================================================================== --- trunk/jython/src/shell/jython 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/jython/src/shell/jython 2008-11-25 14:11:53 UTC (rev 5639) @@ -43,16 +43,24 @@ JAVA_CMD=("$JAVA_HOME/bin/java") fi +# try to dynamically determine jython home +# (this script typically resides in jython home, or in the /bin subdirectory) if [ -z "$JYTHON_HOME" ] ; then if [ "$PRG" = "./jython" ] ; then - # current dir is /bin dir - JYTHON_HOME_1=`pwd` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is the script dir + JYTHON_HOME_1=`pwd` else - # current dir is not /bin dir - JYTHON_HOME_1=`dirname "$PRG"` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is not the script dir + JYTHON_HOME_1=`dirname "$PRG"` fi + if [ -f "$JYTHON_HOME_1"/jython-complete.jar -o -f "$JYTHON_HOME_1"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_1" + else + JYTHON_HOME=`dirname "$JYTHON_HOME_1"` + fi + if [ ! -f "$JYTHON_HOME"/jython-complete.jar -a ! -f "$JYTHON_HOME"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_FALLBACK" + fi fi if [ -z "$JYTHON_OPTS" ] ; then @@ -189,7 +197,7 @@ [ -n "$profile_requested" ] && echo "Running with instrumented profiler" java_args=("${java_args[@]}" -classpath "$CP$CP_DELIMITER$CLASSPATH") else - if [ -z $help_requested ] ; then + if [ -z "$help_requested" ] ; then JAVA_CMD=(exec "${JAVA_CMD[@]}") fi java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP" -classpath "$CLASSPATH") Modified: trunk/jython/src/shell/jython.bat =================================================================== --- trunk/jython/src/shell/jython.bat 2008-11-25 14:00:26 UTC (rev 5638) +++ trunk/jython/src/shell/jython.bat 2008-11-25 14:11:53 UTC (rev 5639) @@ -31,9 +31,22 @@ set _JYTHON_HOME="%_TRIMMED_JYTHON_HOME%" goto gotHome ) + +rem try to dynamically determine jython home +rem (this script typically resides in jython home, or in the /bin subdirectory) +pushd "%~dp0%" +set _JYTHON_HOME="%CD%" +popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome pushd "%~dp0%\.." set _JYTHON_HOME="%CD%" popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome +rem jython home fallback (if all else fails) +rem if present, %JYTHON_HOME_FALLBACK% is already quoted +set _JYTHON_HOME=%JYTHON_HOME_FALLBACK% :gotHome if not exist %_JYTHON_HOME%\jython.jar goto tryComplete @@ -49,7 +62,7 @@ if exist %_JYTHON_HOME%/jython-complete.jar goto run echo Cannot find jython.jar or jython-complete.jar in %_JYTHON_HOME% -echo Try running this batch file from the 'bin' directory of an installed Jython +echo Try running this batch file from the 'bin' directory of an installed Jython, echo or setting JYTHON_HOME. goto cleanup This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |