The package rpms/pypy.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/pypy.git/commit/?id=9abcdf12f6dbf....
Change:
+%ifarch %{ix86} x86_64 %{arm} s390x %{power64} aarch64
Thanks.
Full change:
============
commit 9abcdf12f6dbfa9d1b3598426c212e584b59cfbf
Author: Miro Hronok <miro(a)hroncok.cz>
Date: Wed Oct 23 17:03:00 2019 +0200
Enable JIT on aarch64, add upstream workaround
diff --git a/d81c769a235307f6671a8fa916f48d6896cbb823.patch
b/d81c769a235307f6671a8fa916f48d6896cbb823.patch
new file mode 100644
index 0000000..8debd29
--- /dev/null
+++ b/d81c769a235307f6671a8fa916f48d6896cbb823.patch
@@ -0,0 +1,49 @@
+# HG changeset patch
+# User Armin Rigo <arigo(a)tunes.org>
+# Date 1571380165 -7200
+# Node ID d81c769a235307f6671a8fa916f48d6896cbb823
+# Parent f27546b858f97bfa286a891e1474579759028784
+Arguably, clarify the logic. The real motivation is a gcc bug, see issue #3086
+
+diff --git a/rpython/jit/backend/aarch64/opassembler.py
b/rpython/jit/backend/aarch64/opassembler.py
+--- a/rpython/jit/backend/aarch64/opassembler.py
++++ b/rpython/jit/backend/aarch64/opassembler.py
+@@ -808,9 +808,7 @@
+ # Inline a series of STR operations, starting at 'dstaddr_loc'.
+ #
+ self.mc.gen_load_int(r.ip0.value, 0)
+- i = 0
+- adjustment = 0
+- needs_adjustment = itemsize < 8 and (startbyte % 8)
++ i = dst_i = 0
+ total_size = size_box.getint()
+ while i < total_size:
+ sz = itemsize
+@@ -818,19 +816,19 @@
+ next_group += 8
+ if next_group <= total_size:
+ sz = 8
++ if dst_i % 8: # unaligned?
++ self.mc.ADD_ri(dstaddr_loc.value, dstaddr_loc.value, dst_i)
++ dst_i = 0
+ if sz == 8:
+- if needs_adjustment:
+- self.mc.ADD_ri(dstaddr_loc.value, dstaddr_loc.value, i)
+- adjustment = -i
+- needs_adjustment = False
+- self.mc.STR_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STR_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ elif sz == 4:
+- self.mc.STRW_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRW_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ elif sz == 2:
+- self.mc.STRH_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRH_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ else:
+- self.mc.STRB_ri(r.ip0.value, dstaddr_loc.value, i + adjustment)
++ self.mc.STRB_ri(r.ip0.value, dstaddr_loc.value, dst_i)
+ i += sz
++ dst_i += sz
+
+ else:
+ if isinstance(size_box, ConstInt):
diff --git a/pypy.spec b/pypy.spec
index 091d2b4..7f8ec58 100644
--- a/pypy.spec
+++ b/pypy.spec
@@ -2,7 +2,7 @@
Name: pypy
Version: %{basever}.0
%global pyversion 2.7
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Python implementation with a Just-In-Time compiler
# LGPL and another free license we'd need to ask spot about are present in some
@@ -97,8 +97,7 @@ URL:
http://pypy.org/
%global src_name %{ver_name}-v%{version}-src
-# aarch64:
https://bitbucket.org/pypy/pypy/issues/3086
-%ifarch %{ix86} x86_64 %{arm} s390x %{power64}
+%ifarch %{ix86} x86_64 %{arm} s390x %{power64} aarch64
%global with_jit 1
%else
%global with_jit 0
@@ -164,6 +163,9 @@ Patch1: 007-remove-startup-message.patch
#
https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
Patch2: 009-add-libxcrypt-support.patch
+#
https://bitbucket.org/pypy/pypy/issues/3086
+Patch3: d81c769a235307f6671a8fa916f48d6896cbb823.patch
+
# Instead of bundled wheels, use our RPM packaged wheels from
# /usr/share/python-wheels
# We conditionally apply this, but we use autosetup, so we use Source here
@@ -798,6 +800,9 @@ CheckPyPy %{name}-c-stackless
%changelog
+* Wed Oct 23 2019 Miro Hronok <mhroncok(a)redhat.com> - 7.2.0-3
+- Enable JIT on aarch64
+
* Wed Oct 16 2019 Miro Hronok <mhroncok(a)redhat.com> - 7.2.0-2
- Enable JIT on power64