summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAndreas Baumbach <healther@users.noreply.github.com>2018-08-16 14:51:09 +0200
committerAdam J. Stewart <ajstewart426@gmail.com>2018-08-16 07:51:09 -0500
commitead9363bee6cc90132a5bb4888c3444b726de5a2 (patch)
tree04ac4cd95ab1d3e7ec19956639a94da563c54fb4 /var
parent5be5c486ace6e0e67f67caa6d553d556df1cc5ba (diff)
downloadspack-ead9363bee6cc90132a5bb4888c3444b726de5a2.tar.gz
spack-ead9363bee6cc90132a5bb4888c3444b726de5a2.tar.bz2
spack-ead9363bee6cc90132a5bb4888c3444b726de5a2.tar.xz
spack-ead9363bee6cc90132a5bb4888c3444b726de5a2.zip
add patch for gcc@8 for python 2.7.14 (#8990)
* add gcc8 patch for python 2.7.14 Change-Id: I48cb5e717577d8158d1f7f1fe270156a01940d8a * add explaining comment Change-Id: Ia46168e2269d7de47d7ec8d0bf9e3b7696ea8e31 * remove unnecessary part of the patch Change-Id: Iee763effe2439f0f160c1547640eca4bb9451a68
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/python/gcc-8-2.7.14.patch35
-rw-r--r--var/spack/repos/builtin/packages/python/package.py4
2 files changed, 39 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/python/gcc-8-2.7.14.patch b/var/spack/repos/builtin/packages/python/gcc-8-2.7.14.patch
new file mode 100644
index 0000000000..72c879cdea
--- /dev/null
+++ b/var/spack/repos/builtin/packages/python/gcc-8-2.7.14.patch
@@ -0,0 +1,35 @@
+diff --git a/Include/objimpl.h b/Include/objimpl.h
+index 5f2868332955..cbf6bc3f8763 100644
+--- a/Include/objimpl.h
++++ b/Include/objimpl.h
+@@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t);
+ /* for source compatibility with 2.2 */
+ #define _PyObject_GC_Del PyObject_GC_Del
+
++/*
++ * Former over-aligned definition of PyGC_Head, used to compute the size of the
++ * padding for the new version below.
++ */
++union _gc_head;
++union _gc_head_old {
++ struct {
++ union _gc_head_old *gc_next;
++ union _gc_head_old *gc_prev;
++ Py_ssize_t gc_refs;
++ } gc;
++ long double dummy;
++};
++
+ /* GC information is stored BEFORE the object structure. */
+ typedef union _gc_head {
+ struct {
+@@ -255,7 +269,8 @@ typedef union _gc_head {
+ union _gc_head *gc_prev;
+ Py_ssize_t gc_refs;
+ } gc;
+- long double dummy; /* force worst-case alignment */
++ double dummy; /* Force at least 8-byte alignment. */
++ char dummy_padding[sizeof(union _gc_head_old)];
+ } PyGC_Head;
+
+ extern PyGC_Head *_PyGC_generation0;
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 5b8c7e94e3..ac42ffa547 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -118,6 +118,10 @@ class Python(AutotoolsPackage):
patch('cray-rpath-2.3.patch', when="@2.3:3.0.1 platform=cray")
patch('cray-rpath-3.1.patch', when="@3.1:3.99 platform=cray")
+ # Fixes an alignment problem with more aggressive optimization in gcc8
+ # https://github.com/python/cpython/commit/0b91f8a668201fc58fa732b8acc496caedfdbae0
+ patch('gcc-8-2.7.14.patch', when="@2.7.14 %gcc@8:")
+
# For more information refer to this bug report:
# https://bugs.python.org/issue29712
conflicts(