Folks,
this is a followup on these issues
1) clang 5.0 issue
it seems clang 5.0 on trusty is busted.
The simple program below fails to compile
#include <stdatomic.h>
#include <stdint.h>
void conftest() {
_Atomicuint32_t a;
uint32_t b;
atomic_fetch_xor_explicit(&a, b, memory_order_relaxed);
}
with clang 5.0
|$ clang-5.0 -c conftest.c conftest.c:7:5: error: address argument to
bitwise atomic operation must be a pointer to integer
('_Atomic(uint32_t) *' invalid) atomic_fetch_xor_explicit(&a, b,
memory_order_relaxed);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/i686-linux-gnu/4.9/include/stdatomic.h:224:6: note:
expanded from macro 'atomic_fetch_xor_explicit' __atomic_fetch_xor
((PTR), (VAL), (MO)) ^ ~~~~~ 1 error generated. |
fwiw, clang 6.0 & 7 work just fine.
I added this test to Open MPI configury in
https://github.com/open-mpi/ompi/pull/6272
so C11 atomics are disabled if this test fails.
2) make distcheck issue.
This issue has always been there, but popped up when we choose to
default to external hwloc.
The following makefile evidences what is going wrong
CPPFLAGS = -Dbar
all:
@env | grep ^CPPFLAGS || echo no CPPFLAGS in the environment
$ make
no CPPFLAGS in the environment
but if we put already have CPPFLAGS in the environment, the environment
is updated to use the value in the Makefile
$ CPPFLAGS=-Dfoo make
CPPFLAGS=-Dbar
To me this is really counter intuitive, and could be a bug.
Anyway, I can see two possible options to workaround this feature/bug
- do not `export CPPFLAGS=...` but configure CPPFLAGS=... instead
- keep export CPPFLAGS=... *and* export
DISTCHECK_CONFIGURE_FLAGS='CPPFLAGS=...' ...
Bottom line, this is not an Open MPI bug/regression but the root cause
is how we use travis.
Cheers,
Gilles
On 1/9/2019 11:45 AM, Gilles Gouaillardet wrote:
I do not know how/why travis was enabled.
That being said, the errors look legit to me, and there are two
1) with clang 5.0
CC opal_convertor_raw.lo
In file included from opal_convertor_raw.c:21:
In file included from ../../opal/datatype/opal_convertor_internal.h:21:
In file included from ../../opal/datatype/opal_convertor.h:35:
In file included from ../../opal/datatype/opal_datatype.h:43:
In file included from ../../opal/class/opal_object.h:126:
In file included from ../../opal/threads/thread_usage.h:30:
In file included from ../../opal/include/opal/sys/atomic.h:63:
../../opal/include/opal/sys/atomic_stdc.h:109:1: error: address
argument to atomic operation must be a pointer to integer or pointer
('opal_atomic_int32_t *' (aka '_Atomic(int32_t) *') invalid)
OPAL_ATOMIC_STDC_DEFINE_FETCH_OP(add, 32, int32_t, +)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../opal/include/opal/sys/atomic_stdc.h:101:16: note: expanded from
macro 'OPAL_ATOMIC_STDC_DEFINE_FETCH_OP'
return atomic_fetch_ ## op ## _explicit (addr, value,
memory_order_relaxed); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<scratch space>:33:1: note: expanded from here
(there are many kind of errors like this one, could be a clang 5 issue
or something we failed to detect with this compiler)
2) with "make distcheck"
Here is how to reproduce the issue
export CPPFLAGS=-I$HOME/bogus/include
./configure --prefix=$HOME/bogus
make
make distcheck
the first configure reports
============================================================================
== Modular Component Architecture (MCA) setup
============================================================================
checking for subdir args... '--prefix=/home/gilles/bogus'
'CPPFLAGS=-I/home/gilles/bogus/include'
but the second one (invoked indirectly by make distcheck) reports
============================================================================
== Modular Component Architecture (MCA) setup
============================================================================
checking for subdir args...
'--prefix=/home/gilles/src/ompi-master/openmpi-gitclone/_inst'
'CPPFLAGS=-I. -I./orte/include
-I/home/gilles/src/ompi-master/opal/mca/event/libevent2022/libevent
-I/home/gilles/src/ompi-master/opal/mca/event/libevent2022/libevent/include
-I/home/gilles/src/ompi-master/opal/mca/hwloc/hwloc201/hwloc/include
-I/home/gilles/bogus/include -I/usr/local/include -I/usr/local/include'
and we endup using the include files from the embedded hwloc of the
first 'make' and linking with the system hwloc, which fails (no
mangling and possibly version inconsistency)
I will run a bisect to search when this started.
Cheers,
Gilles
On 1/9/2019 7:57 AM, Jeff Squyres (jsquyres) via devel wrote:
Did someone enable Travis CI on GitHub:open-mpi/ompi?
I thought we had specifically disabled Travis after we kept running
into problems with it...?
I ask because it's failing on some PRs for reasons that seem to have
nothing to do with the PR. I don't know if our Travis setup has bit
rotted, if there's a genuine problem, or if Travis is just acting
wonky...
_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/devel