[pypy-commit] pypy default: merge heads

arigo noreply at buildbot.pypy.org
Wed May 18 16:15:05 CEST 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r44281:1cd8af4dff37
Date: 2011-05-18 16:24 +0200
http://bitbucket.org/pypy/pypy/changeset/1cd8af4dff37/

Log:	merge heads

diff --git a/pypy/tool/release/package.py b/pypy/tool/release/package.py
--- a/pypy/tool/release/package.py
+++ b/pypy/tool/release/package.py
@@ -36,6 +36,10 @@
 class PyPyCNotFound(Exception):
     pass
 
+def fix_permissions(basedir):
+    if sys.platform != 'win32':
+        os.system("chmod -R a+rX %s" % basedir)
+
 def package(basedir, name='pypy-nightly', rename_pypy_c='pypy',
             copy_to_dir = None, override_pypy_c = None):
     basedir = py.path.local(basedir)
@@ -93,6 +97,7 @@
         archive = bindir.join(target)
         shutil.copy(str(source), str(archive))
     old_dir = os.getcwd()
+    fix_permissions(builddir)
     try:
         os.chdir(str(builddir))
         #
@@ -117,7 +122,7 @@
             zf.close()
         else:
             archive = str(builddir.join(name + '.tar.bz2'))
-            e = os.system('tar cvjf ' + archive + " " + name)
+            e = os.system('tar --owner=root --group=root --numeric-owner -cvjf ' + archive + " " + name)
             if e:
                 raise OSError('"tar" returned exit status %r' % e)
     finally:
diff --git a/pypy/tool/release/test/test_package.py b/pypy/tool/release/test/test_package.py
--- a/pypy/tool/release/test/test_package.py
+++ b/pypy/tool/release/test/test_package.py
@@ -10,9 +10,11 @@
     if sys.platform == 'win32':
         basename = 'pypy-c.exe'
         rename_pypy_c = 'pypy-c'
+        exe_name_in_archive = 'pypy-c.exe'
     else:
         basename = 'pypy-c'
         rename_pypy_c = 'pypy'
+        exe_name_in_archive = 'bin/pypy'
     pypy_c = py.path.local(pypydir).join('translator', 'goal', basename)
     if not pypy_c.check():
         os.system("echo faked_pypy_c> %s" % (pypy_c,))
@@ -25,10 +27,7 @@
         prefix = builddir.join(test)
         cpyver = '%d.%d' % CPYTHON_VERSION[:2]
         assert prefix.join('lib-python', cpyver, 'test').check()
-        if sys.platform == 'win32':
-            assert prefix.join('pypy-c.exe').check()
-        else:
-            assert prefix.join('bin', 'pypy').check()
+        assert prefix.join(exe_name_in_archive).check()
         assert prefix.join('lib_pypy', 'syslog.py').check()
         assert not prefix.join('lib_pypy', 'py').check()
         assert not prefix.join('lib_pypy', 'ctypes_configure').check()
@@ -39,7 +38,14 @@
             assert zh.open('%s/lib_pypy/syslog.py' % test)
         else:
             th = tarfile.open(str(builddir.join('%s.tar.bz2' % test)))
-            assert th.getmember('%s/lib_pypy/syslog.py' % test)
+            syslog = th.getmember('%s/lib_pypy/syslog.py' % test)
+            exe = th.getmember('%s/%s' % (test, exe_name_in_archive))
+            assert syslog.mode == 0644
+            assert exe.mode == 0755
+            assert exe.uname == ''
+            assert exe.gname == ''
+            assert exe.uid == 0
+            assert exe.gid == 0
 
         # the headers file could be not there, because they are copied into
         # trunk/include only during translation
@@ -66,3 +72,26 @@
         test_dir_structure(test='testzipfile')
     finally:
         package.USE_ZIPFILE_MODULE = prev
+
+def test_fix_permissions(tmpdir):
+    def check(f, mode):
+        assert f.stat().mode & 0777 == mode
+    #
+    mydir = tmpdir.join('mydir').ensure(dir=True)
+    bin   = tmpdir.join('bin')  .ensure(dir=True)
+    file1 = tmpdir.join('file1').ensure(file=True)
+    file2 = mydir .join('file2').ensure(file=True)
+    pypy  = bin   .join('pypy') .ensure(file=True)
+    #
+    mydir.chmod(0700)
+    bin.chmod(0700)
+    file1.chmod(0600)
+    file2.chmod(0640)
+    pypy.chmod(0700)
+    #
+    package.fix_permissions(tmpdir)
+    check(mydir, 0755)
+    check(bin,   0755)
+    check(file1, 0644)
+    check(file2, 0644)
+    check(pypy,  0755)


More information about the pypy-commit mailing list