1.9-3
* Tue Jul 10 2012 David Malcolm <dmalcolm@redhat.com> - 1.9-3 - log all output from "make" (patch 6) - disable the MOTD at startup (patch 7) - hide symbols from the dynamic linker (patch 8) - add PyInt_AsUnsignedLongLongMask (patch 9) - capture the Makefile, the typeids.txt, and the dynamic-symbols file within the debuginfo package
This commit is contained in:
parent
92ec0ebc5b
commit
26f62305fe
11
006-always-log-stdout.patch
Normal file
11
006-always-log-stdout.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- pypy-pypy-341e1e3821ff/pypy/translator/platform/__init__.py.always_log_stdout 2012-07-06 11:13:46.878979461 -0400
|
||||||
|
+++ pypy-pypy-341e1e3821ff/pypy/translator/platform/__init__.py 2012-07-06 11:25:26.281235732 -0400
|
||||||
|
@@ -126,6 +126,8 @@ class Platform(object):
|
||||||
|
self._handle_error(returncode, stdout, stderr, outname)
|
||||||
|
|
||||||
|
def _handle_error(self, returncode, stdout, stderr, outname):
|
||||||
|
+ for line in stdout.splitlines():
|
||||||
|
+ log.message(line)
|
||||||
|
if returncode != 0:
|
||||||
|
errorfile = outname.new(ext='errors')
|
||||||
|
errorfile.write(stderr, 'wb')
|
21
007-remove-startup-message.patch
Normal file
21
007-remove-startup-message.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
--- pypy-pypy-341e1e3821ff/lib_pypy/_pypy_interact.py.remove_startup_message 2012-07-06 12:10:46.504228264 -0400
|
||||||
|
+++ pypy-pypy-341e1e3821ff/lib_pypy/_pypy_interact.py 2012-07-06 12:11:01.986034714 -0400
|
||||||
|
@@ -13,18 +13,6 @@ def interactive_console(mainmodule=None)
|
||||||
|
sys.ps2 = '.... '
|
||||||
|
#
|
||||||
|
try:
|
||||||
|
- from _pypy_irc_topic import some_topic
|
||||||
|
- text = "And now for something completely different: ``%s''" % (
|
||||||
|
- some_topic(),)
|
||||||
|
- while len(text) >= 80:
|
||||||
|
- i = text[:80].rfind(' ')
|
||||||
|
- print text[:i]
|
||||||
|
- text = text[i+1:]
|
||||||
|
- print text
|
||||||
|
- except ImportError:
|
||||||
|
- pass
|
||||||
|
- #
|
||||||
|
- try:
|
||||||
|
if not os.isatty(sys.stdin.fileno()):
|
||||||
|
# Bail out if stdin is not tty-like, as pyrepl wouldn't be happy
|
||||||
|
# For example, with:
|
15
008-fix-dynamic-symbols-script.patch
Normal file
15
008-fix-dynamic-symbols-script.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff --git a/pypy/translator/platform/posix.py b/pypy/translator/platform/posix.py
|
||||||
|
--- a/pypy/translator/platform/posix.py
|
||||||
|
+++ b/pypy/translator/platform/posix.py
|
||||||
|
@@ -48,8 +48,10 @@
|
||||||
|
response_file = self._make_response_file("dynamic-symbols-")
|
||||||
|
f = response_file.open("w")
|
||||||
|
f.write("{\n")
|
||||||
|
+ f.write(" global:\n")
|
||||||
|
for sym in eci.export_symbols:
|
||||||
|
- f.write("%s;\n" % (sym,))
|
||||||
|
+ f.write(" %s;\n" % (sym,))
|
||||||
|
+ f.write(" local:*;\n")
|
||||||
|
f.write("};")
|
||||||
|
f.close()
|
||||||
|
|
48
009-add-PyInt_AsUnsignedLongLongMask.patch
Normal file
48
009-add-PyInt_AsUnsignedLongLongMask.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
diff --git a/pypy/module/cpyext/intobject.py b/pypy/module/cpyext/intobject.py
|
||||||
|
--- a/pypy/module/cpyext/intobject.py
|
||||||
|
+++ b/pypy/module/cpyext/intobject.py
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
PyObject, PyObjectFields, CONST_STRING, CANNOT_FAIL, Py_ssize_t)
|
||||||
|
from pypy.module.cpyext.pyobject import (
|
||||||
|
make_typedescr, track_reference, RefcountState, from_ref)
|
||||||
|
-from pypy.rlib.rarithmetic import r_uint, intmask, LONG_TEST
|
||||||
|
+from pypy.rlib.rarithmetic import r_uint, intmask, LONG_TEST, r_ulonglong
|
||||||
|
from pypy.objspace.std.intobject import W_IntObject
|
||||||
|
import sys
|
||||||
|
|
||||||
|
@@ -83,6 +83,20 @@
|
||||||
|
num = space.bigint_w(w_int)
|
||||||
|
return num.uintmask()
|
||||||
|
|
||||||
|
+@cpython_api([PyObject], rffi.ULONGLONG, error=-1)
|
||||||
|
+def PyInt_AsUnsignedLongLongMask(space, w_obj):
|
||||||
|
+ """Will first attempt to cast the object to a PyIntObject or
|
||||||
|
+ PyLongObject, if it is not already one, and then return its value as
|
||||||
|
+ unsigned long long, without checking for overflow.
|
||||||
|
+ """
|
||||||
|
+ w_int = space.int(w_obj)
|
||||||
|
+ if space.is_true(space.isinstance(w_int, space.w_int)):
|
||||||
|
+ num = space.int_w(w_int)
|
||||||
|
+ return r_ulonglong(num)
|
||||||
|
+ else:
|
||||||
|
+ num = space.bigint_w(w_int)
|
||||||
|
+ return num.ulonglongmask()
|
||||||
|
+
|
||||||
|
@cpython_api([PyObject], lltype.Signed, error=CANNOT_FAIL)
|
||||||
|
def PyInt_AS_LONG(space, w_int):
|
||||||
|
"""Return the value of the object w_int. No error checking is performed."""
|
||||||
|
diff --git a/pypy/module/cpyext/test/test_intobject.py b/pypy/module/cpyext/test/test_intobject.py
|
||||||
|
--- a/pypy/module/cpyext/test/test_intobject.py
|
||||||
|
+++ b/pypy/module/cpyext/test/test_intobject.py
|
||||||
|
@@ -34,6 +34,11 @@
|
||||||
|
assert (api.PyInt_AsUnsignedLongMask(space.wrap(10**30))
|
||||||
|
== 10**30 % ((sys.maxint + 1) * 2))
|
||||||
|
|
||||||
|
+ assert (api.PyInt_AsUnsignedLongLongMask(space.wrap(sys.maxint))
|
||||||
|
+ == sys.maxint)
|
||||||
|
+ assert (api.PyInt_AsUnsignedLongLongMask(space.wrap(10**30))
|
||||||
|
+ == 10**30 % (2**64))
|
||||||
|
+
|
||||||
|
def test_coerce(self, space, api):
|
||||||
|
class Coerce(object):
|
||||||
|
def __int__(self):
|
76
pypy.spec
76
pypy.spec
@ -1,6 +1,6 @@
|
|||||||
Name: pypy
|
Name: pypy
|
||||||
Version: 1.9
|
Version: 1.9
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Python implementation with a Just-In-Time compiler
|
Summary: Python implementation with a Just-In-Time compiler
|
||||||
|
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
@ -164,6 +164,39 @@ Patch4: more-readable-c-code.patch
|
|||||||
# Not yet sent upstream
|
# Not yet sent upstream
|
||||||
Patch5: pypy-1.6-fix-test-subprocess-with-nonreadable-path-dir.patch
|
Patch5: pypy-1.6-fix-test-subprocess-with-nonreadable-path-dir.patch
|
||||||
|
|
||||||
|
# Patch pypy.translator.platform so that stdout from "make" etc gets logged,
|
||||||
|
# rather than just stderr, so that the command-line invocations of the compiler
|
||||||
|
# and linker are captured:
|
||||||
|
Patch6: 006-always-log-stdout.patch
|
||||||
|
|
||||||
|
# Disable the printing of a quote from IRC on startup (these are stored in
|
||||||
|
# ROT13 form in lib_pypy/_pypy_irc_topic.py). Some are cute, but some could
|
||||||
|
# cause confusion for end-users (and many are in-jokes within the PyPy
|
||||||
|
# community that won't make sense outside of it). [Sorry to be a killjoy]
|
||||||
|
Patch7: 007-remove-startup-message.patch
|
||||||
|
|
||||||
|
# With pypy-1.9-1.fc17.x86_64, the pypy binary exposes about 200k symbols to
|
||||||
|
# the dynamic linker:
|
||||||
|
# $ eu-readelf -s $(which pypy) | head
|
||||||
|
# Symbol table [ 5] '.dynsym' contains 194163 entries:
|
||||||
|
# which is far more than necessary.
|
||||||
|
# Fix the version script for the linker as invoked thus in the Makefile:
|
||||||
|
# "-Wl,--export-dynamic,--version-script=../dynamic-symbols-6"
|
||||||
|
# so that it contains a "local: *;" clause, thus hiding the bulk of the
|
||||||
|
# symbols from the dynamic linker.
|
||||||
|
# Ideally we'd add:
|
||||||
|
# __attribute__ ((visibility ("hidden")))
|
||||||
|
# to most symbols, allowing the compiler to potentially generate better code.
|
||||||
|
# Not yet reported upstream
|
||||||
|
Patch8: 008-fix-dynamic-symbols-script.patch
|
||||||
|
|
||||||
|
|
||||||
|
# Cherrypick upstream patch to add PyInt_AsUnsignedLongLongMask (used by
|
||||||
|
# the rpm python bindings); see https://bugs.pypy.org/issue1211
|
||||||
|
# This is https://bitbucket.org/pypy/pypy/changeset/542d481517d3
|
||||||
|
Patch9: 009-add-PyInt_AsUnsignedLongLongMask.patch
|
||||||
|
|
||||||
|
|
||||||
# Build-time requirements:
|
# Build-time requirements:
|
||||||
|
|
||||||
# pypy's can be rebuilt using itself, rather than with CPython; doing so
|
# pypy's can be rebuilt using itself, rather than with CPython; doing so
|
||||||
@ -358,6 +391,11 @@ Build of PyPy with support for micro-threads for massive concurrency
|
|||||||
# [translation:ERROR] AttributeError: 'Block' object has no attribute 'isstartblock'
|
# [translation:ERROR] AttributeError: 'Block' object has no attribute 'isstartblock'
|
||||||
|
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
%patch8 -p1
|
||||||
|
%patch9 -p1
|
||||||
|
|
||||||
|
|
||||||
# Replace /usr/local/bin/python shebangs with /usr/bin/python:
|
# Replace /usr/local/bin/python shebangs with /usr/bin/python:
|
||||||
find -name "*.py" -exec \
|
find -name "*.py" -exec \
|
||||||
@ -696,15 +734,31 @@ mkdir -p %{buildroot}%{pypy_debuginfo_dir}
|
|||||||
# copy over everything:
|
# copy over everything:
|
||||||
cp -a pypy %{buildroot}%{pypy_debuginfo_dir}
|
cp -a pypy %{buildroot}%{pypy_debuginfo_dir}
|
||||||
|
|
||||||
# ...then delete files that aren't .py files:
|
# ...then delete files that aren't:
|
||||||
|
# - *.py files
|
||||||
|
# - the Makefile
|
||||||
|
# - typeids.txt
|
||||||
|
# - dynamic-symbols-*
|
||||||
find \
|
find \
|
||||||
%{buildroot}%{pypy_debuginfo_dir} \
|
%{buildroot}%{pypy_debuginfo_dir} \
|
||||||
\( -type f \
|
\( -type f \
|
||||||
-a \
|
-a \
|
||||||
\! -name "*.py" \
|
\! \( -name "*.py" \
|
||||||
\) \
|
-o \
|
||||||
|
-name "Makefile" \
|
||||||
|
-o \
|
||||||
|
-name "typeids.txt" \
|
||||||
|
-o \
|
||||||
|
-name "dynamic-symbols-*" \
|
||||||
|
\) \
|
||||||
|
\) \
|
||||||
-delete
|
-delete
|
||||||
|
|
||||||
|
# Alternatively, we could simply keep everything. This leads to a ~350MB
|
||||||
|
# debuginfo package, but it makes it easy to hack on the Makefile and C build
|
||||||
|
# flags by rebuilding/linking the sources.
|
||||||
|
# To do so, remove the above "find" command.
|
||||||
|
|
||||||
# We don't need bytecode for these files; they are being included for reference
|
# We don't need bytecode for these files; they are being included for reference
|
||||||
# purposes.
|
# purposes.
|
||||||
# There are some rpmlint warnings from these files:
|
# There are some rpmlint warnings from these files:
|
||||||
@ -890,6 +944,14 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jul 10 2012 David Malcolm <dmalcolm@redhat.com> - 1.9-3
|
||||||
|
- log all output from "make" (patch 6)
|
||||||
|
- disable the MOTD at startup (patch 7)
|
||||||
|
- hide symbols from the dynamic linker (patch 8)
|
||||||
|
- add PyInt_AsUnsignedLongLongMask (patch 9)
|
||||||
|
- capture the Makefile, the typeids.txt, and the dynamic-symbols file within
|
||||||
|
the debuginfo package
|
||||||
|
|
||||||
* Mon Jun 18 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 1.9-2
|
* Mon Jun 18 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 1.9-2
|
||||||
- Compile with PIC, fixes FTBFS on ARM
|
- Compile with PIC, fixes FTBFS on ARM
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user