[pypy-svn] r75338 - in pypy/trunk/pypy/tool: . test

fijal at codespeak.net fijal at codespeak.net
Sat Jun 12 21:09:05 CEST 2010


Author: fijal
Date: Sat Jun 12 21:08:20 2010
New Revision: 75338

Added:
   pypy/trunk/pypy/tool/pack.py   (contents, props changed)
   pypy/trunk/pypy/tool/test/test_pack.py
Log:
A tool for packaging pypy in a platform-independent way


Added: pypy/trunk/pypy/tool/pack.py
==============================================================================
--- (empty file)
+++ pypy/trunk/pypy/tool/pack.py	Sat Jun 12 21:08:20 2010
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+import autopath
+import sys
+import tarfile
+import os, py
+
+goal_dir = py.path.local(__file__).join('..', '..', 'translator', 'goal')
+
+def filenames_from_platform(platform):
+    if platform == 'win32':
+        files = [goal_dir / 'pypy-c.exe']
+        dll = goal_dir.join('pypy-c.dll')
+        if dll.check():
+            files.append(dll)
+    else:
+        files = [goal_dir / 'pypy-c']
+    for file in files:
+        if not file.check():
+            print "Necessary file (%s) missing, build pypy" % file
+            sys.exit(1)
+    return files
+
+def main(outbasename='pypy-c.tar.bz2'):
+    files = filenames_from_platform(sys.platform)
+    olddir = os.getcwd()
+    os.chdir(str(goal_dir))
+    try:
+        t = tarfile.open(str(goal_dir.join(outbasename)), 'w:bz2')
+        for f in files:
+            t.add(f.basename)
+        t.close()
+    finally:
+        os.chdir(olddir)
+
+if __name__ == '__main__':
+    main()

Added: pypy/trunk/pypy/tool/test/test_pack.py
==============================================================================
--- (empty file)
+++ pypy/trunk/pypy/tool/test/test_pack.py	Sat Jun 12 21:08:20 2010
@@ -0,0 +1,24 @@
+
+import py, sys
+from pypy.tool.pack import main
+import tarfile
+
+def test_pack():
+    goal_dir = py.path.local(__file__).join('..', '..', '..', 'translator', 'goal')
+    if not sys.platform == 'linux2':
+        py.test.skip("untested on not linux")
+    pypy_c = goal_dir.join('pypy-c')
+    if not pypy_c.check():
+        pypy_c.write('xxx')
+        remove_pypy_c = True
+    else:
+        remove_pypy_c = False
+    try:
+        main()
+    finally:
+        if remove_pypy_c:
+            pypy_c.remove()
+    bzfile = goal_dir.join('pypy-c.tar.bz2')
+    assert bzfile.check()
+    assert tarfile.open(str(bzfile), 'r:bz2').getnames() == ['pypy-c']
+    bzfile.remove()



More information about the Pypy-commit mailing list