From: <pj...@us...> - 2008-07-17 01:44:02
|
Revision: 4960 http://jython.svn.sourceforge.net/jython/?rev=4960&view=rev Author: pjenvey Date: 2008-07-17 01:43:59 +0000 (Thu, 17 Jul 2008) Log Message: ----------- use the full path of sys.prefix Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2008-07-17 01:23:59 UTC (rev 4959) +++ trunk/jython/src/org/python/core/PySystemState.java 2008-07-17 01:43:59 UTC (rev 4960) @@ -379,6 +379,14 @@ } } } + if (root != null) { + File rootFile = new File(root); + try { + root = rootFile.getCanonicalPath(); + } catch (IOException ioe) { + root = rootFile.getAbsolutePath(); + } + } return root; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-11-07 01:48:32
|
Revision: 5553 http://jython.svn.sourceforge.net/jython/?rev=5553&view=rev Author: pjenvey Date: 2008-11-07 01:48:27 +0000 (Fri, 07 Nov 2008) Log Message: ----------- fix prefix/exec_prefix/copyright being unicode Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2008-11-07 01:15:50 UTC (rev 5552) +++ trunk/jython/src/org/python/core/PySystemState.java 2008-11-07 01:48:27 UTC (rev 5553) @@ -3,10 +3,7 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FilterInputStream; import java.io.IOException; -import java.io.InputStream; import java.net.URL; import java.net.URLDecoder; import java.security.AccessControlException; @@ -56,7 +53,7 @@ * The copyright notice for this release. */ // TBD: should we use \u00a9 Unicode c-inside-circle? - public static String copyright = + public static PyObject copyright = Py.newString( "Copyright (c) 2000-2008, Jython Developers\n" + "All rights reserved.\n\n" + @@ -72,7 +69,7 @@ "Copyright (c) 1991-1995 Stichting Mathematisch Centrum, " + "Amsterdam.\n" + - "All Rights Reserved.\n\n"; + "All Rights Reserved.\n\n"); private static Hashtable builtinNames; public static PyTuple builtin_module_names = null; @@ -85,8 +82,8 @@ private static PyObject defaultExecutable; public static Properties registry; // = init_registry(); - public static String prefix; - public static String exec_prefix=""; + public static PyObject prefix; + public static PyObject exec_prefix = Py.EmptyString; private static boolean initialized = false; @@ -446,7 +443,8 @@ } registry = preProperties; - prefix = exec_prefix = findRoot(preProperties, postProperties, jarFileName); + String prefix = findRoot(preProperties, postProperties, jarFileName); + String exec_prefix = prefix; // Load the default registry if (prefix != null) { @@ -461,14 +459,17 @@ } catch (Exception exc) { } } - try { - String jythonpath = System.getenv("JYTHONPATH"); - if (jythonpath != null) - registry.setProperty("python.path", jythonpath); - } catch (SecurityException e) { - } + PySystemState.prefix = Py.newString(prefix); + PySystemState.exec_prefix = Py.newString(exec_prefix); + try { + String jythonpath = System.getenv("JYTHONPATH"); + if (jythonpath != null) { + registry.setProperty("python.path", jythonpath); + } + } catch (SecurityException e) { + } if (postProperties != null) { - registry.putAll(postProperties); + registry.putAll(postProperties); } if (standalone) { // set default standalone property (if not yet set) @@ -625,7 +626,7 @@ } cachedir = new File(props.getProperty(PYTHON_CACHEDIR, CACHEDIR_DEFAULT_NAME)); if (!cachedir.isAbsolute()) { - cachedir = new File(PySystemState.prefix, cachedir.getPath()); + cachedir = new File(prefix.toString(), cachedir.getPath()); } } @@ -727,7 +728,7 @@ PyList path = new PyList(); addPaths(path, props.getProperty("python.path", "")); if (prefix != null) { - String libpath = new File(prefix, "Lib").toString(); + String libpath = new File(prefix.toString(), "Lib").toString(); path.append(new PyString(libpath)); } if (standalone) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-11-21 02:00:18
|
Revision: 5596 http://jython.svn.sourceforge.net/jython/?rev=5596&view=rev Author: pjenvey Date: 2008-11-21 02:00:11 +0000 (Fri, 21 Nov 2008) Log Message: ----------- fix handling of null prefix/exec_prefix values now that they're PyObjects fixes #1173 thanks boisgera Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2008-11-20 23:44:08 UTC (rev 5595) +++ trunk/jython/src/org/python/core/PySystemState.java 2008-11-21 02:00:11 UTC (rev 5596) @@ -459,8 +459,12 @@ } catch (Exception exc) { } } - PySystemState.prefix = Py.newString(prefix); - PySystemState.exec_prefix = Py.newString(exec_prefix); + if (prefix != null) { + PySystemState.prefix = Py.newString(prefix); + } + if (exec_prefix != null) { + PySystemState.exec_prefix = Py.newString(exec_prefix); + } try { String jythonpath = System.getenv("JYTHONPATH"); if (jythonpath != null) { @@ -626,7 +630,7 @@ } cachedir = new File(props.getProperty(PYTHON_CACHEDIR, CACHEDIR_DEFAULT_NAME)); if (!cachedir.isAbsolute()) { - cachedir = new File(prefix.toString(), cachedir.getPath()); + cachedir = new File(prefix == null ? null : prefix.toString(), cachedir.getPath()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <otm...@us...> - 2008-11-25 21:10:03
|
Revision: 5640 http://jython.svn.sourceforge.net/jython/?rev=5640&view=rev Author: otmarhumbel Date: 2008-11-25 21:09:57 +0000 (Tue, 25 Nov 2008) Log Message: ----------- check for both jython-complete.jar and jython.jar in findRoot() Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2008-11-25 14:11:53 UTC (rev 5639) +++ trunk/jython/src/org/python/core/PySystemState.java 2008-11-25 21:09:57 UTC (rev 5640) @@ -34,6 +34,7 @@ protected static final String CACHEDIR_DEFAULT_NAME = "cachedir"; public static final String JYTHON_JAR = "jython.jar"; + public static final String JYTHON_COMPLETE_JAR = "jython-complete.jar"; private static final String JAR_URL_PREFIX = "jar:file:"; private static final String JAR_SEPARATOR = "!"; @@ -392,10 +393,14 @@ if (root == null) { String classpath = preProperties.getProperty("java.class.path"); if (classpath != null) { - int jpy = classpath.toLowerCase().indexOf(JYTHON_JAR); - if (jpy >= 0) { - int start = classpath.lastIndexOf(java.io.File.pathSeparator, jpy) + 1; - root = classpath.substring(start, jpy); + String lowerCaseClasspath = classpath.toLowerCase(); + int jarIndex = lowerCaseClasspath.indexOf(JYTHON_COMPLETE_JAR); + if (jarIndex < 0) { + jarIndex = lowerCaseClasspath.indexOf(JYTHON_JAR); + } + if (jarIndex >= 0) { + int start = classpath.lastIndexOf(java.io.File.pathSeparator, jarIndex) + 1; + root = classpath.substring(start, jarIndex); } else { // in case JYTHON_JAR is referenced from a MANIFEST inside another jar on the classpath root = jarFileName; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-04-05 17:22:43
|
Revision: 6164 http://jython.svn.sourceforge.net/jython/?rev=6164&view=rev Author: thobes Date: 2009-04-05 17:22:40 +0000 (Sun, 05 Apr 2009) Log Message: ----------- Fix for http://bugs.jython.org/issue1110 Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-04-05 03:18:39 UTC (rev 6163) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-04-05 17:22:40 UTC (rev 6164) @@ -449,10 +449,16 @@ * @return a resolved path String */ public String getPath(String path) { - if (path == null || new File(path).isAbsolute()) { + if (path == null) { return path; + } else { + File file = new File(path); + if (!file.isAbsolute()) { + file = new File(getCurrentWorkingDir(), path); + } + // This needs to be performed always to trim trailing backslashes on Windows + return file.getPath(); } - return new File(getCurrentWorkingDir(), path).getPath(); } public void callExitFunc() throws PyIgnoreMethodTag { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-04-07 01:49:36
|
Revision: 6180 http://jython.svn.sourceforge.net/jython/?rev=6180&view=rev Author: pjenvey Date: 2009-04-07 01:49:15 +0000 (Tue, 07 Apr 2009) Log Message: ----------- shadow sys.platform Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-04-07 00:37:45 UTC (rev 6179) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-04-07 01:49:15 UTC (rev 6180) @@ -93,7 +93,6 @@ public static Properties registry; // = init_registry(); public static PyObject prefix; public static PyObject exec_prefix = Py.EmptyString; - public static PyString platform = new PyString("java"); public static final PyString byteorder = new PyString("big"); public static final int maxint = Integer.MAX_VALUE; @@ -110,6 +109,7 @@ // shadowed statics - don't use directly public static PyList warnoptions = new PyList(); public static PyObject builtins; + public static PyObject platform = new PyString("java"); public PyList meta_path; public PyList path_hooks; @@ -197,7 +197,6 @@ name == "__class__" || name == "registry" || name == "exec_prefix" || - name == "platform" || name == "packageManager") { throw Py.TypeError("readonly attribute"); } @@ -242,8 +241,7 @@ public synchronized PyObject getBuiltins() { if (shadowing == null) { return getDefaultBuiltins(); - } - else { + } else { return shadowing.builtins; } } @@ -260,8 +258,7 @@ public synchronized PyObject getWarnoptions() { if (shadowing == null) { return warnoptions; - } - else { + } else { return shadowing.warnoptions; } } @@ -274,6 +271,22 @@ } } + public synchronized PyObject getPlatform() { + if (shadowing == null) { + return platform; + } else { + return shadowing.platform; + } + } + + public synchronized void setPlatform(PyObject value) { + if (shadowing == null) { + platform = value; + } else { + shadowing.platform = value; + } + } + // xxx fix this accessors public PyObject __findattr_ex__(String name) { if (name == "exc_value") { @@ -298,6 +311,8 @@ return getWarnoptions(); } else if (name == "builtins") { return getBuiltins(); + } else if (name == "platform") { + return getPlatform(); } else { PyObject ret = super.__findattr_ex__(name); if (ret != null) { @@ -321,10 +336,12 @@ if (name == "builtins") { shadow(); setBuiltins(value); - } - else if (name == "warnoptions") { + } else if (name == "warnoptions") { shadow(); setWarnoptions(value); + } else if (name == "platform") { + shadow(); + setPlatform(value); } else { PyObject ret = getType().lookup(name); // xxx fix fix fix if (ret != null && ret._doset(this, value)) { @@ -1228,9 +1245,11 @@ class Shadow { PyObject builtins; PyList warnoptions; + PyObject platform; Shadow() { builtins = PySystemState.getDefaultBuiltins(); warnoptions = PySystemState.warnoptions; + platform = PySystemState.platform; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-04-25 18:46:17
|
Revision: 6262 http://jython.svn.sourceforge.net/jython/?rev=6262&view=rev Author: pjenvey Date: 2009-04-25 18:45:51 +0000 (Sat, 25 Apr 2009) Log Message: ----------- refactor Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-04-24 12:45:27 UTC (rev 6261) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-04-25 18:45:51 UTC (rev 6262) @@ -12,7 +12,6 @@ import java.nio.charset.Charset; import java.nio.charset.UnsupportedCharsetException; import java.security.AccessControlException; -import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; @@ -626,9 +625,7 @@ FileInputStream fp = new FileInputStream(file); try { fileProperties.load(fp); - Iterator<Object> iterator = fileProperties.keySet().iterator(); - while (iterator.hasNext()) { - Object key = iterator.next(); + for (Object key : fileProperties.keySet()) { if (!registry.containsKey(key)) { registry.put(key, fileProperties.get(key)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <otm...@us...> - 2009-04-29 05:48:29
|
Revision: 6277 http://jython.svn.sourceforge.net/jython/?rev=6277&view=rev Author: otmarhumbel Date: 2009-04-29 05:48:23 +0000 (Wed, 29 Apr 2009) Log Message: ----------- revert to user registry having precedence over installed registry; should fix #1331 Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-04-29 04:39:13 UTC (rev 6276) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-04-29 05:48:23 UTC (rev 6277) @@ -585,9 +585,10 @@ prefix = exec_prefix = "."; } try { - addRegistryFile(new File(prefix, "registry")); + // user registry has precedence over installed registry File homeFile = new File(registry.getProperty("user.home"), ".jython"); addRegistryFile(homeFile); + addRegistryFile(new File(prefix, "registry")); } catch (Exception exc) { } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-05-28 05:32:19
|
Revision: 6413 http://jython.svn.sourceforge.net/jython/?rev=6413&view=rev Author: pjenvey Date: 2009-05-28 05:32:12 +0000 (Thu, 28 May 2009) Log Message: ----------- combine getPath/getPathLazy and special case paths with a single leading '\' (e.g. r'\Jython25') as an absolute path on Windows Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-05-28 05:31:51 UTC (rev 6412) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-05-28 05:32:12 UTC (rev 6413) @@ -19,6 +19,7 @@ import java.util.jar.JarEntry; import java.util.jar.JarFile; +import org.jruby.ext.posix.util.Platform; import org.python.Version; import org.python.core.adapter.ClassicPyObjectAdapter; import org.python.core.adapter.ExtensiblePyObjectAdapter; @@ -482,16 +483,40 @@ * @return a resolved path String */ public String getPath(String path) { + return getPath(this, path); + } + + /** + * Resolve a path. Returns the full path taking the current + * working directory into account. + * + * Like getPath but called statically. The current PySystemState + * is only consulted for the current working directory when it's + * necessary (when the path is relative). + * + * @param path a path String + * @return a resolved path String + */ + public static String getPathLazy(String path) { + // XXX: This method likely an unnecessary optimization + return getPath(null, path); + } + + private static String getPath(PySystemState sys, String path) { if (path == null) { return path; - } else { - File file = new File(path); - if (!file.isAbsolute()) { - file = new File(getCurrentWorkingDir(), path); + } + + File file = new File(path); + // Python considers r'\Jython25' an abspath on Windows, unlike java.io.File + if (!file.isAbsolute() && (!Platform.IS_WINDOWS || !path.startsWith("\\"))) { + if (sys == null) { + sys = Py.getSystemState(); } - // This needs to be performed always to trim trailing backslashes on Windows - return file.getPath(); + file = new File(sys.getCurrentWorkingDir(), path); } + // This needs to be performed always to trim trailing backslashes on Windows + return file.getPath(); } public void callExitFunc() throws PyIgnoreMethodTag { @@ -1146,24 +1171,6 @@ packageManager.addJarDir(directoryPath, cache); } - /** - * Resolve a path. Returns the full path taking the current - * working directory into account. - * - * Like getPath but called statically. The current PySystemState - * is only consulted for the current working directory when it's - * necessary (when the path is relative). - * - * @param path a path String - * @return a resolved path String - */ - public static String getPathLazy(String path) { - if (path == null || new File(path).isAbsolute()) { - return path; - } - return new File(Py.getSystemState().getCurrentWorkingDir(), path).getPath(); - } - // Not public by design. We can't rebind the displayhook if // a reflected function is inserted in the class dict. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-05-29 02:30:43
|
Revision: 6417 http://jython.svn.sourceforge.net/jython/?rev=6417&view=rev Author: pjenvey Date: 2009-05-29 01:46:19 +0000 (Fri, 29 May 2009) Log Message: ----------- don't try putting null into this Hashtable Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2009-05-28 13:37:28 UTC (rev 6416) +++ trunk/jython/src/org/python/core/PySystemState.java 2009-05-29 01:46:19 UTC (rev 6417) @@ -660,7 +660,9 @@ } catch (SecurityException se) { encoding = null; } - registry.put(PYTHON_CONSOLE_ENCODING, encoding); + if (encoding != null) { + registry.put(PYTHON_CONSOLE_ENCODING, encoding); + } } // Set up options from registry Options.setFromRegistry(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zy...@us...> - 2010-10-01 02:13:49
|
Revision: 7129 http://jython.svn.sourceforge.net/jython/?rev=7129&view=rev Author: zyasoft Date: 2010-10-01 02:13:43 +0000 (Fri, 01 Oct 2010) Log Message: ----------- Attempting to remove a shutdown hook when the JVM is already shutting down should be quietly ignored. Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2010-09-29 06:29:59 UTC (rev 7128) +++ trunk/jython/src/org/python/core/PySystemState.java 2010-10-01 02:13:43 UTC (rev 7129) @@ -1343,7 +1343,11 @@ // close this thread so we can unload any associated classloaders in cycle with this instance if (shutdownHook != null) { - Runtime.getRuntime().removeShutdownHook(shutdownHook); + try { + Runtime.getRuntime().removeShutdownHook(shutdownHook); + } catch (IllegalStateException e) { + // JVM is already shutting down, so we cannot remove this shutdown hook anyway + } } for (Callable callable : resourceClosers) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2011-02-05 01:23:18
|
Revision: 7194 http://jython.svn.sourceforge.net/jython/?rev=7194&view=rev Author: pjenvey Date: 2011-02-05 01:23:12 +0000 (Sat, 05 Feb 2011) Log Message: ----------- remove the unused startCleanupThread Modified Paths: -------------- trunk/jython/src/org/python/core/PySystemState.java Modified: trunk/jython/src/org/python/core/PySystemState.java =================================================================== --- trunk/jython/src/org/python/core/PySystemState.java 2011-02-03 21:56:23 UTC (rev 7193) +++ trunk/jython/src/org/python/core/PySystemState.java 2011-02-05 01:23:12 UTC (rev 7194) @@ -157,9 +157,6 @@ private final PySystemStateCloser closer; private static final ReferenceQueue systemStateQueue = new ReferenceQueue<PySystemState>(); private static final ConcurrentMap<WeakReference<PySystemState>, PySystemStateCloser> sysClosers = Generic.concurrentMap(); -// static { -// startCleanupThread(); -// } public PySystemState() { initialize(); @@ -1301,25 +1298,6 @@ closer.cleanup(); } - private static void startCleanupThread() { - Thread cleanupThread = new Thread(new Runnable() { - public void run() { - while (true) { - try { - Reference<PySystemStateCloser> ref = systemStateQueue.remove(); - PySystemStateCloser closer = sysClosers.get(ref); - closer.cleanup(); - sysClosers.remove(ref); - } catch (InterruptedException ex) { - break; - } - } - } - }); - cleanupThread.setDaemon(true); - cleanupThread.start(); - } - private static class PySystemStateCloser { private final Set<Callable> resourceClosers = new LinkedHashSet<Callable>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |