[pypy-svn] r49446 - in pypy/dist/pypy/translator: . jvm

antocuni at codespeak.net antocuni at codespeak.net
Thu Dec 6 12:16:02 CET 2007


Author: antocuni
Date: Thu Dec  6 12:15:58 2007
New Revision: 49446

Modified:
   pypy/dist/pypy/translator/driver.py
   pypy/dist/pypy/translator/jvm/genjvm.py
Log:
intermediate checkin; automatically merge jna.jar into the jar
generated by genjvm. I still have to add jna.jar to the repo



Modified: pypy/dist/pypy/translator/driver.py
==============================================================================
--- pypy/dist/pypy/translator/driver.py	(original)
+++ pypy/dist/pypy/translator/driver.py	Thu Dec  6 12:15:58 2007
@@ -722,7 +722,8 @@
         basename = self.exe_name % self.get_info()
         root = udir.join('pypy')
         manifest = self.create_manifest(root)
-        classlist = self.create_classlist(root)
+        jnajar = py.path.local(__file__).dirpath('jvm', 'src', 'jna.jar')
+        classlist = self.create_classlist(root, [jnajar])
         jarfile = py.path.local(basename + '.jar')
         self.log.info('Creating jar file')
         oldpath = root.chdir()
@@ -746,10 +747,19 @@
         manifest.close()
         return filename
 
-    def create_classlist(self, root):
+    def create_classlist(self, root, additional_jars=[]):
+        from py.compat import subprocess
+        # first, uncompress additional jars
+        for jarfile in additional_jars:
+            oldpwd = root.chdir()
+            subprocess.call(['jar', 'xf', str(jarfile)])
+            oldpwd.chdir()
         filename = root.join('classlist.txt')
         classlist = filename.open('w')
-        classfiles = root.visit('*.class', True)
+        classfiles = list(root.visit('*.class', True))
+        classfiles += root.visit('*.so', True)
+        classfiles += root.visit('*.dll', True)
+        classfiles += root.visit('*.jnilib', True)
         for classfile in classfiles:
             print >> classlist, classfile.relto(root)
         classlist.close()

Modified: pypy/dist/pypy/translator/jvm/genjvm.py
==============================================================================
--- pypy/dist/pypy/translator/jvm/genjvm.py	(original)
+++ pypy/dist/pypy/translator/jvm/genjvm.py	Thu Dec  6 12:15:58 2007
@@ -114,6 +114,7 @@
         srcdir = rootdir.join('pypy')
         javafiles = srcdir.listdir('*.java')
         classfiles = srcdir.listdir('*.class')
+        jnajar = rootdir.join('jna.jar')
 
         recompile = True
         if len(classfiles) == len(javafiles):
@@ -125,7 +126,12 @@
         if recompile:
            log.red('Compiling java classes')               
            javasrcs = [str(jf) for jf in javafiles]
-           self._invoke([getoption('javac'), '-nowarn', '-d', str(rootdir)] + javasrcs, True)
+           self._invoke([getoption('javac'),
+                         '-nowarn',
+                         '-d', str(rootdir),
+                         '-classpath', str(jnajar)
+                         ] + javasrcs,
+                        True)
 
         # copy .class files to classdir
         for classfile in srcdir.listdir('*.class'):



More information about the Pypy-commit mailing list