[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