churchyard pushed to pypy3 (master). "pypy-1.6-1 (..more)"
notifications at fedoraproject.org
notifications at fedoraproject.org
Sun May 10 14:23:30 UTC 2015
From 3a2c2ec86de943a3dbdc8de5608e6a8f79c48a85 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm at redhat.com>
Date: Fri, 19 Aug 2011 19:04:38 -0400
Subject: pypy-1.6-1
- 1.6
- rewrite the %check section, introducing per-test timeouts
diff --git a/.gitignore b/.gitignore
index 017cf34..ecd135f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/pypy-1.4.1-src.tar.bz2
/pypy-1.5-src.tar.bz2
+/release-1.6.tar.bz2
diff --git a/pypy.spec b/pypy.spec
index 0c2c717..c3faabb 100644
--- a/pypy.spec
+++ b/pypy.spec
@@ -1,6 +1,6 @@
Name: pypy
-Version: 1.5
-Release: 2%{?dist}
+Version: 1.6
+Release: 1%{?dist}
Summary: Python implementation with a Just-In-Time compiler
Group: Development/Languages
@@ -104,6 +104,9 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# Easy way to enable/disable verbose logging:
%global verbose_logs 0
+# Easy way to turn off the selftests:
+%global run_selftests 1
+
%global pypyprefix %{_libdir}/pypy-%{version}
%global pylibver 2.7
@@ -117,7 +120,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
# Source and patches:
-Source0: http://pypy.org/download/pypy-%{version}-src.tar.bz2
+Source0: https://bitbucket.org/pypy/pypy/get/release-1.6.tar.bz2
# Edit a translator file for linux in order to configure our cflags and dynamic libffi
Patch0: pypy-1.5-config.patch
@@ -218,9 +221,17 @@ BuildRequires: openssl-devel
BuildRequires: valgrind-devel
%endif
+%if %{run_selftests}
# Used by the selftests, though not by the build:
BuildRequires: gc-devel
+# For use in the selftests, for recording stats:
+BuildRequires: time
+
+# For use in the selftests, for imposing a per-test timeout:
+BuildRequires: perl
+%endif
+
BuildRequires: /usr/bin/execstack
# For byte-compiling the JIT-viewing mode:
@@ -289,7 +300,7 @@ Build of PyPy with support for micro-threads for massive concurrency
%prep
-%setup -q -n pypy-%{version}-src
+%setup -q -n pypy-pypy-release-%{version}
%patch0 -p1 -b .configure-fedora
%patch1 -p1 -b .suppress-mandelbrot-set-during-tty-build
@@ -656,445 +667,47 @@ CheckPyPy() {
pushd %{goal_dir}
- # Gather a list of tests to skip, due to known failures
- # TODO: report these failures to pypy upstream
- # See also rhbz#666967 and rhbz#666969
- TESTS_TO_SKIP=""
-
- # Test failures relating to missing codecs
- # Hopefully when pypy merges to 2.7 support we'll gain these via a
- # refreshed stdlib:
- # test_codecencodings_cn:
- # all tests fail, with one of
- # unknown encoding: gb18030
- # unknown encoding: gb2312
- # unknown encoding: gbk
- SkipTest test_codecencodings_cn
-
- # test_codecencodings_hk:
- # all tests fail, with:
- # unknown encoding: big5hkscs
- SkipTest test_codecencodings_hk
-
- # test_codecencodings_jp:
- # all tests fail, with one of:
- # unknown encoding: cp932
- # unknown encoding: euc_jisx0213
- # unknown encoding: euc_jp
- # unknown encoding: shift_jis
- # unknown encoding: shift_jisx0213
- SkipTest test_codecencodings_jp
-
- # test_codecencodings_kr:
- # all tests fail, with one of:
- # unknown encoding: cp949
- # unknown encoding: euc_kr
- # unknown encoding: johab
- SkipTest test_codecencodings_kr
-
- # test_codecencodings_tw:
- # all tests fail, with:
- # unknown encoding: big5
- SkipTest test_codecencodings_tw
-
- # test_multibytecodec:
- # 14 failures out of 15, due to:
- # unknown encoding: euc-kr
- # unknown encoding: gb2312
- # unknown encoding: jisx0213
- # unknown encoding: cp949
- # unknown encoding: iso2022-jp
- # unknown encoding: gb18030
- SkipTest test_multibytecodec
-
- #
- # Other failures:
- #
- # test_asynchat:
- # seems to hang on this test, within test_line_terminator
- SkipTest test_asynchat
-
- # test_audioop:
- # test test_audioop crashed -- <type 'exceptions.ImportError'>: No module named audioop
- # Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/regrtest.py", line 874, in runtest_inner
- # the_package = __import__(abstest, globals(), locals(), [])
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_audioop.py", line 1, in <module>
- # import audioop
- # ImportError: No module named audioop
- SkipTest test_audioop
-
- # test_capi:
- # RPython traceback:
- # RPython traceback:
- # File "implement.c", line 243013, in _PyObject_New
- # File "implement_1.c", line 31707, in _PyObject_NewVar
- # File "implement.c", line 217060, in from_ref
- # Fatal RPython error: AssertionError
- SkipTest test_capi
-
- # test_compiler:
- # 4 errors out of 13:
- # testSourceCodeEncodingsError
- # testWith
- # testWithAss
- # testYieldExpr
- SkipTest test_compiler
-
- # test_ctypes:
- # failures=17, errors=20, out of 132 tests
- SkipTest test_ctypes
-
- # test_distutils:
- # Warning -- os.environ was modified by test_distutils
- # test test_distutils failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_distutils
-
- # test_frozen:
- # TestFailed: import __hello__ failed:No module named __hello__
- SkipTest test_frozen
-
- # test_gc:
- # test test_gc crashed -- <type 'exceptions.AttributeError'>: 'module' object has no attribute 'get_debug'
- SkipTest test_gc
-
- # test_gdb:
- # test test_gdb crashed -- <type 'exceptions.KeyError'>: 'PY_CFLAGS'
- SkipTest test_gdb
-
- # test_generators:
- # **********************************************************************
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_generators.py", line ?, in test.test_generators.__test__.coroutine
- # Failed example:
- # del g; gc_collect()
- # Expected:
- # exiting
- # Got nothing
- # **********************************************************************
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_generators.py", line ?, in test.test_generators.__test__.coroutine
- # Failed example:
- # del g; gc_collect()
- # Expected:
- # exiting
- # Got nothing
- # **********************************************************************
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_generators.py", line ?, in test.test_generators.__test__.coroutine
- # Failed example:
- # del g; gc_collect()
- # Expected:
- # finally
- # Got nothing
- # **********************************************************************
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_generators.py", line ?, in test.test_generators.__test__.coroutine
- # Failed example:
- # sys.stderr.getvalue().startswith(
- # "Exception RuntimeError: 'generator ignored GeneratorExit' in "
- # )
- # Expected:
- # True
- # Got:
- # False
- # **********************************************************************
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_generators.py", line ?, in test.test_generators.__test__.refleaks
- # Failed example:
- # try:
- # sys.stderr = StringIO.StringIO()
- # class Leaker:
- # def __del__(self):
- # raise RuntimeError
- # l = Leaker()
- # del l
- # gc_collect()
- # err = sys.stderr.getvalue().strip()
- # err.startswith(
- # "Exception RuntimeError: RuntimeError() in "
- # )
- # err.endswith("> ignored")
- # len(err.splitlines())
- # finally:
- # sys.stderr = old
- # Expected:
- # True
- # True
- # 1
- # Got:
- # False
- # False
- # 0
- # **********************************************************************
- # 2 items had failures:
- # 4 of 107 in test.test_generators.__test__.coroutine
- # 1 of 11 in test.test_generators.__test__.refleaks
- # ***Test Failed*** 5 failures.
- # test test_generators failed -- 5 of 294 doctests failed
- SkipTest test_generators
-
- # test_getargs2:
- # test test_getargs2 failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_getargs2
-
- # test_hotshot:
- # test test_hotshot crashed -- <type 'exceptions.ImportError'>: No module named _hotshot
- SkipTest test_hotshot
-
- # test_io:
- # test test_io failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_io
-
- # test_ioctl:
- # Failing in Koji with dist-f15 with:
- # ======================================================================
- # FAIL: test_ioctl (test.test_ioctl.IoctlTests)
- # ----------------------------------------------------------------------
- # Traceback (most recent call last):
- # File "/usr/lib/pypy-1.4.1/lib-python/2.5.2/test/test_ioctl.py", line 25, in test_ioctl
- # self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
- # AssertionError: 0 not in (8304, 17737)
- # ======================================================================
- # FAIL: test_ioctl_mutate (test.test_ioctl.IoctlTests)
- # ----------------------------------------------------------------------
- # Traceback (most recent call last):
- # File "/usr/lib/pypy-1.4.1/lib-python/2.5.2/test/test_ioctl.py", line 35, in test_ioctl_mutate
- # self.assert_(rpgrp in ids, "%s not in %s" % (rpgrp, ids))
- # AssertionError: 0 not in (8304, 17737)
- # ----------------------------------------------------------------------
- SkipTest test_ioctl
-
- # test_iterlen:
- # 24 failures out of 25, apparently all due to TypeError
- SkipTest test_iterlen
-
- # test_multiprocessing:
- # test test_multiprocessing failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_multiprocessing
-
- # test_module:
- # test test_module failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_module.py", line 81, in test_clear_dict_in_ref_cycle
- # self.assertEqual(destroyed, [1])
- # AssertionError: Lists differ: [] != [1]
- # Second list contains 1 additional elements.
- # First extra element 0:
- # 1
- # - []
- # + [1]
- # ? +
- SkipTest test_module
-
- # test_parser:
- # 12 failures out of 15
- SkipTest test_parser
-
- # test_platform:
- # Koji builds show:
- # test test_platform failed -- errors occurred in test.test_platform.PlatformTest
- SkipTest test_platform
-
- # test_posix:
- # test test_posix failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_posix.py", line 361, in test_getcwd_long_pathnames
- # _create_and_do_getcwd(dirname)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_posix.py", line 351, in _create_and_do_getcwd
- # _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_posix.py", line 351, in _create_and_do_getcwd
- # _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
- # [...repeats...]
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_posix.py", line 351, in _create_and_do_getcwd
- # _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_posix.py", line 356, in _create_and_do_getcwd
- # self.assertEqual(e.errno, expected_errno)
- # AssertionError: 36 != 34
- SkipTest test_posix
-
- # test_readline:
- # test test_readline failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_readline.py", line 16, in testHistoryUpdates
- # readline.clear_history()
- # File "/builddir/build/BUILD/pypy-1.5-src/lib_pypy/pyrepl/readline.py", line 277, in clear_history
- # del self.get_reader().history[:]
- # File "/builddir/build/BUILD/pypy-1.5-src/lib_pypy/pyrepl/readline.py", line 186, in get_reader
- # console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib_pypy/pyrepl/unix_console.py", line 103, in __init__
- # self._clear = _my_getstr("clear")
- # File "/builddir/build/BUILD/pypy-1.5-src/lib_pypy/pyrepl/unix_console.py", line 45, in _my_getstr
- # "terminal doesn't have the required '%s' capability"%cap
- # InvalidTerminal: terminal doesn't have the required 'clear' capability
- SkipTest test_readline
-
- # test_scope:
- # test test_scope failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_scope.py", line 437, in testLeaks
- # self.assertEqual(Foo.count, 0)
- # AssertionError: 100 != 0
- SkipTest test_scope
-
- # test_socket:
- # testSockName can fail in Koji with:
- # my_ip_addr = socket.gethostbyname(socket.gethostname())
- # gaierror: (-3, 'Temporary failure in name resolution')
- SkipTest test_socket
-
- # test_sort:
- # some failures
- SkipTest test_sort
-
- # test_sqlite:
- # 3 of the sqlite3.test.dbapi.ExtensionTests raise:
- # ProgrammingError: Incomplete statement ''
- SkipTest test_sqlite
-
- # test_strop:
- # test test_strop crashed -- <type 'exceptions.ImportError'>: No module named strop
- SkipTest test_strop
-
- # test_structmembers:
- # test test_structmembers failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_structmembers
-
- # test_subprocess:
- # debug: WARNING: library path not found, using compiled-in sys.path and sys.prefix will be unset
- # 'import site' failed
- # .
- # this bit of output is from a test of stdout in a different process ...
- # /builddir/build/BUILD/pypy-1.5-src/lib_pypy/ctypes_support.py:26: RuntimeWarning: C function without declared arguments called
- # return standard_c_lib.__errno_location()
- # debug: WARNING: library path not found, using compiled-in sys.path and sys.prefix will be unset
- # 'import site' failed
- # .
- # this bit of output is from a test of stdout in a different process ...
- # test test_subprocess failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_subprocess
-
- # test_symtable:
- # test test_symtable crashed -- <type 'exceptions.ImportError'>: No module named _symtable
- SkipTest test_symtable
-
- # test_sys_settrace:
- # test test_sys_settrace failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_sys_settrace.py", line 334, in test_13_genexp
- # self.run_test(generator_example)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_sys_settrace.py", line 280, in run_test
- # self.run_and_compare(func, func.events)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_sys_settrace.py", line 277, in run_and_compare
- # tracer.events, events)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/test/test_sys_settrace.py", line 269, in compare_events
- # [str(x) for x in events])))
- # AssertionError: events did not match expectation:
- # (0, 'call')
- # (2, 'line')
- # (-6, 'call')
- # (-5, 'line')
- # (-4, 'line')
- # (-4, 'return')
- # - (-4, 'call')
- # - (-4, 'exception')
- # - (-1, 'line')
- # - (-1, 'return')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (6, 'line')
- # (5, 'line')
- # (5, 'return')
- SkipTest test_sys_settrace
-
- # test_tempfile:
- # test test_tempfile failed -- multiple errors occurred; run in verbose mode for details
- SkipTest test_tempfile
-
- # test_thread
- # Koji build appears to hang here
- SkipTest test_thread
-
- # test_traceback:
- # works when run standalone; failures seen when run as part of a suite
- SkipTest test_traceback
-
- # test_uuid:
- # ======================================================================
- # ERROR: test_ifconfig_getnode (test.test_uuid.TestUUID)
- # ----------------------------------------------------------------------
- # Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_uuid.py", line 306, in test_ifconfig_getnode
- # node = uuid._ifconfig_getnode()
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/uuid.py", line 326, in _ifconfig_getnode
- # ip_addr = socket.gethostbyname(socket.gethostname())
- # gaierror: [Errno -3] Temporary failure in name resolution
- # ----------------------------------------------------------------------
- # Ran 14 tests in 0.369s
- # FAILED (errors=1)
- SkipTest test_uuid
-
- # test_zipimport_support:
- # ======================================================================
- # ERROR: test_doctest_main_issue4197 (test.test_zipimport_support.ZipSupportTests)
- # ----------------------------------------------------------------------
- # Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_zipimport_support.py", line 194, in test_doctest_main_issue4197
- # exit_code, data = run_python(script_name)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/script_helper.py", line 80, in run_python
- # p = spawn_python(*args, **kwargs)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/script_helper.py", line 66, in spawn_python
- # **kwargs)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/subprocess.py", line 672, in __init__
- # errread, errwrite)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/subprocess.py", line 1206, in _execute_child
- # raise child_exception
- # OSError: [Errno 13] Permission denied
- # ======================================================================
- # ERROR: test_pdb_issue4201 (test.test_zipimport_support.ZipSupportTests)
- # ----------------------------------------------------------------------
- # Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/test_zipimport_support.py", line 221, in test_pdb_issue4201
- # p = spawn_python(script_name)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/2.7/test/script_helper.py", line 66, in spawn_python
- # **kwargs)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/subprocess.py", line 672, in __init__
- # errread, errwrite)
- # File "/builddir/build/BUILD/pypy-1.5-src/lib-python/modified-2.7/subprocess.py", line 1206, in _execute_child
- # raise child_exception
- # OSError: [Errno 13] Permission denied
- # ----------------------------------------------------------------------
- # Ran 4 tests in 0.726s
- # FAILED (errors=2)
- SkipTest test_zipimport_support
-
- # test_zlib:
- # failure seen in Koji, not sure of reason why:
- # test test_zlib failed -- Traceback (most recent call last):
- # File "/builddir/build/BUILD/pypy-1.4.1-src/lib-python/2.5.2/test/test_zlib.py", line 72, in test_baddecompressobj
- # self.assertRaises(ValueError, zlib.decompressobj, 0)
- # AssertionError: ValueError not raised
- SkipTest test_zlib
-
- %if 0%{use_self_when_building}
- # Patch 3 prioritizes the installed copy of pypy's libraries over the
- # build copy.
- # This leads to test failures of test_pep263 and test_tarfile
- # For now, suppress these when building using pypy itself:
- SkipTest test_pep263 # on-disk encoding issues
- SkipTest test_tarfile # permissions issues
- %endif
-
- # Run the built binary through the selftests
- # "-w" : re-run failed tests in verbose mode
- time ./$ExeName -m test.regrtest -w -x $TESTS_TO_SKIP
+ # I'm seeing numerous cases where tests seem to hang, or fail unpredictably
+ # So we'll run each test in its own process, with a timeout
+
+ # Use regrtest to explicitly list all tests:
+ ( ./$ExeName -c \
+ "from test.regrtest import findtests; print '\n'.join(findtests())"
+ ) > testnames.txt
+
+ echo "== Test names =="
+ cat testnames.txt
+ echo "================="
+
+ echo "" > failed-tests.txt
+
+ for TestName in $(cat testnames.txt) ; do
+
+ echo "===================" $TestName "===================="
+
+ # Use /usr/bin/time (rather than the shell "time" builtin) to gather
+ # info on the process (time/CPU/memory). This passes on the exit
+ # status of the underlying command
+ #
+ # Use perl's alarm command to impose a timeout
+ # 900 seconds is 15 minutes per test.
+ # If a test hangs, that test should get terminated, allowing the build
+ # to continue.
+ #
+ # Invoke pypy on test.regrtest to run the specific test suite
+ # verbosely
+ #
+ # For now, || true, so that any failures don't halt the build:
+ ( /usr/bin/time \
+ perl -e 'alarm shift @ARGV; exec @ARGV' 900 \
+ ./$ExeName -m test.regrtest -v $TestName ) \
+ || (echo $TestName >> failed-tests.txt) \
+ || true
+ done
+
+ echo "== Failed tests =="
+ cat failed-tests.txt
+ echo "================="
popd
@@ -1124,12 +737,14 @@ CheckPyPy() {
echo "--------------------------------------------------------------"
}
+%if %{run_selftests}
CheckPyPy pypy
%if 0%{with_stackless}
CheckPyPy pypy-stackless
%endif
+%endif # run_selftests
%clean
@@ -1142,7 +757,6 @@ rm -rf $RPM_BUILD_ROOT
%dir %{pypyprefix}
%dir %{pypyprefix}/lib-python
-%{pypyprefix}/lib-python/TODO
%{pypyprefix}/lib-python/stdlib-version.txt
%{pypyprefix}/lib-python/%{pylibver}/
%{pypyprefix}/lib-python/modified-%{pylibver}/
@@ -1171,6 +785,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Thu Aug 18 2011 David Malcolm <dmalcolm at redhat.com> - 1.6-1
+- 1.6
+- rewrite the %%check section, introducing per-test timeouts
+
* Tue Aug 2 2011 David Malcolm <dmalcolm at redhat.com> - 1.5-2
- add pypytrace-mode.el to the pypy-libs subpackage, for viewing JIT trace
logs in emacs
diff --git a/sources b/sources
index a047407..5660f1e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-cb9ada2c50666318c3a2863da1fbe487 pypy-1.5-src.tar.bz2
+1189352effc5df7df84e6916b3b3eae3 release-1.6.tar.bz2
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/pypy3.git/commit/?h=master&id=3a2c2ec86de943a3dbdc8de5608e6a8f79c48a85
More information about the scm-commits
mailing list