[pypy-svn] r70218 - pypy/trunk/pypy/tool

fijal at codespeak.net fijal at codespeak.net
Sun Dec 20 21:44:35 CET 2009


Author: fijal
Date: Sun Dec 20 21:44:32 2009
New Revision: 70218

Modified:
   pypy/trunk/pypy/tool/package.py
Log:
Make this 2.4 and 2.5 compatible


Modified: pypy/trunk/pypy/tool/package.py
==============================================================================
--- pypy/trunk/pypy/tool/package.py	(original)
+++ pypy/trunk/pypy/tool/package.py	Sun Dec 20 21:44:32 2009
@@ -1,5 +1,8 @@
 #!/usr/bin/env python
-""" A sample script that packages PyPy, provided that it's already built
+""" A sample script that packages PyPy, provided that it's already built.
+Usage:
+
+package.py pypydir [name-of-archive]
 """
 
 import autopath
@@ -7,9 +10,22 @@
 import sys
 import py
 import os
+import fnmatch
 import tarfile
 from pypy.tool.udir import udir
 
+def ignore_patterns(*patterns):
+    """Function that can be used as copytree() ignore parameter.
+
+    Patterns is a sequence of glob-style patterns
+    that are used to exclude files"""
+    def _ignore_patterns(path, names):
+        ignored_names = []
+        for pattern in patterns:
+            ignored_names.extend(fnmatch.filter(names, pattern))
+        return set(ignored_names)
+    return _ignore_patterns
+
 class PyPyCNotFound(Exception):
     pass
 
@@ -22,11 +38,11 @@
     pypydir = builddir.ensure("pypy", dir=True)
     shutil.copytree(str(basedir.join('lib-python')),
                     str(pypydir.join('lib-python')),
-                    ignore=shutil.ignore_patterns('.svn'))
+                    ignore=ignore_patterns('.svn'))
     pypydir.ensure('pypy', dir=True)
     shutil.copytree(str(basedir.join('pypy', 'lib')),
                     str(pypydir.join('pypy', 'lib')),
-                    ignore=shutil.ignore_patterns('.svn'))
+                    ignore=ignore_patterns('.svn'))
     pypydir.ensure('bin', dir=True)
     shutil.copy(str(pypy_c), str(pypydir.join('bin', 'pypy-c')))
     old_dir = os.getcwd()
@@ -39,4 +55,10 @@
     return builddir # for tests
 
 if __name__ == '__main__':
-    main(sys.argv[1])
+    if len(sys.argv) == 1 or len(sys.argv) > 3:
+        print >>sys.stderr, __doc__
+        sys.exit(1)
+    elif len(sys.argv) == 2:
+        main(sys.argv[1])
+    else:
+        main(sys.argv[1], sys.argv[2])



More information about the Pypy-commit mailing list