Update of /cvsroot/jython/jython/Tools/jythonc
In directory slayer.i.sourceforge.net:/tmp/cvs-serv23829
Modified Files:
ImportName.py compile.py depend.py jar.py
Log Message:
Added very simplistic support for resourcefiles. The resource must be
specified with an absolute path to be recognized. I.e.
public static String[] __depends__ = new String[] {
"/org/python/modules/ucnhash.dat",
}
in a java module will cause the named resource to be included in
the resulting jar.
Index: ImportName.py
===================================================================
RCS file: /cvsroot/jython/jython/Tools/jythonc/ImportName.py,v
retrieving revision 2.4
retrieving revision 2.5
diff -C2 -r2.4 -r2.5
*** ImportName.py 2000/11/17 12:44:21 2.4
--- ImportName.py 2000/12/04 21:43:18 2.5
***************
*** 34,37 ****
--- 34,39 ----
def importName(name):
+ if name[0] == "/":
+ return Resource(name)
try:
names = name.split('.')
***************
*** 61,64 ****
--- 63,72 ----
return importName(name)
+ class Resource:
+ def __init__(self, name):
+ self.name = name
+ def getDepends(self):
+ return []
+
class Namespace:
Index: compile.py
===================================================================
RCS file: /cvsroot/jython/jython/Tools/jythonc/compile.py,v
retrieving revision 2.15
retrieving revision 2.16
diff -C2 -r2.15 -r2.16
*** compile.py 2000/11/30 08:54:55 2.15
--- compile.py 2000/12/04 21:43:18 2.16
***************
*** 264,267 ****
--- 264,269 ----
m.addEvents(attrs, self.events, mod.name)
self.addJavaClass(m.name, mod.name)
+ elif isinstance(m, ImportName.Resource):
+ self.javadepends[m.name] = mod.name
if self.dependencies.has_key(m):
Index: depend.py
===================================================================
RCS file: /cvsroot/jython/jython/Tools/jythonc/depend.py,v
retrieving revision 2.4
retrieving revision 2.5
diff -C2 -r2.4 -r2.5
*** depend.py 2000/11/17 12:44:21 2.4
--- depend.py 2000/12/04 21:43:18 2.5
***************
*** 134,137 ****
--- 134,154 ----
return openResource(res)
+ def getZipName(self):
+ return '/'.join(self.classname.split('.')) + '.class'
+
+ class ResourceEntry:
+ def __init__(self, name):
+ self.name = name
+
+ def __repr__(self):
+ return "ResourceEntry(%s)" % (self.name)
+
+ def getInputStream(self):
+ import java
+ return java.lang.Class.getResourceAsStream("".__class__, self.name)
+
+ def getZipName(self):
+ return self.name
+
##class ZipEntry:
***************
*** 165,168 ****
--- 182,187 ----
def depends(name):
+ if name[0] == '/':
+ return ResourceEntry(name), []
ze = getFile(name)
ip = ze.getInputStream()
Index: jar.py
===================================================================
RCS file: /cvsroot/jython/jython/Tools/jythonc/jar.py,v
retrieving revision 2.5
retrieving revision 2.6
diff -C2 -r2.5 -r2.6
*** jar.py 2000/11/17 12:44:21 2.5
--- jar.py 2000/12/04 21:43:18 2.6
***************
*** 50,54 ****
def addEntry(self, entry):
! outfile = SLASH.join(entry.classname.split('.')) + '.class'
if self.jar_entries.has_key(outfile):
return
--- 50,54 ----
def addEntry(self, entry):
! outfile = entry.getZipName()
if self.jar_entries.has_key(outfile):
return
***************
*** 83,87 ****
for entry in self.entries:
! outfile = SLASH.join(entry.classname.split('.')) + '.class'
instream = entry.getInputStream()
self.zipfile.putNextEntry(ZipEntry(outfile))
--- 83,87 ----
for entry in self.entries:
! outfile = entry.getZipName()
instream = entry.getInputStream()
self.zipfile.putNextEntry(ZipEntry(outfile))
|