[ 
https://issues.apache.org/jira/browse/MESOS-7396?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

François Garillot updated MESOS-7396:
-------------------------------------
    Environment: 
ArchLinux 

kernel 4.10.9-1-ARCH #1 SMP PREEMPT Sat Apr 8 12:39:59 CEST 2017 x86_64 
GNU/Linux

gcc (GCC) 5.3.0 and gcc (GCC) 6.3.1 20170306 (same results for both)

All this is reported on 1.2.0. I also obtained the aliasing issue on 1.1.0 
(same kernel), but did not pursue further.


  was:
ArchLinux 

kernel 4.10.9-1-ARCH #1 SMP PREEMPT Sat Apr 8 12:39:59 CEST 2017 x86_64 
GNU/Linux

gcc (GCC) 5.3.0 and gcc (GCC) 6.3.1 20170306 (same results for both)

I obtained the aliasing issue on 1.2.0



> Build errors on a recent Linux (4.10.9)
> ---------------------------------------
>
>                 Key: MESOS-7396
>                 URL: https://issues.apache.org/jira/browse/MESOS-7396
>             Project: Mesos
>          Issue Type: Bug
>    Affects Versions: 1.2.0
>         Environment: ArchLinux 
> kernel 4.10.9-1-ARCH #1 SMP PREEMPT Sat Apr 8 12:39:59 CEST 2017 x86_64 
> GNU/Linux
> gcc (GCC) 5.3.0 and gcc (GCC) 6.3.1 20170306 (same results for both)
> All this is reported on 1.2.0. I also obtained the aliasing issue on 1.1.0 
> (same kernel), but did not pursue further.
>            Reporter: François Garillot
>              Labels: build-failure, build-problem
>
> A couple of issues building with the regular PKGBUILD for Archlinux:
> https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=mesos
> The build script (simple and somewhat readable) includes the following 
> notable flags :
> {code}
>  ../configure \
>   --enable-optimize \
>   --prefix=/usr \
>   --sysconfdir=/etc \
>   --libexecdir=/usr/lib \
>   --exec-prefix=/usr \
>   --sbindir=/usr/bin \
>   --with-network-isolator
>  make
> {code}
> The first set of errors is :
> {code}
> In file included from ../../src/checks/health_checker.cpp:56:0:
> ../../src/linux/ns.hpp: In function ‘Try<int> ns::clone(pid_t, int, const 
> std::function<int()>&, int)’:
> ../../src/linux/ns.hpp:487:69: error: dereferencing type-punned pointer will 
> break strict-aliasing rules [-Werror=strict-aliasing]
>      pid_t pid = ((struct ucred*) CMSG_DATA(CMSG_FIRSTHDR(&message)))->pid;
>                                                                      ^
> ../../src/linux/ns.hpp: In lambda function:
> ../../src/linux/ns.hpp:589:59: error: dereferencing type-punned pointer will 
> break strict-aliasing rules [-Werror=strict-aliasing]
>        ((struct ucred*) CMSG_DATA(CMSG_FIRSTHDR(&message)))->pid = ::getpid();
>                                                            ^
> ../../src/linux/ns.hpp:590:59: error: dereferencing type-punned pointer will 
> break strict-aliasing rules [-Werror=strict-aliasing]
>        ((struct ucred*) CMSG_DATA(CMSG_FIRSTHDR(&message)))->uid = ::getuid();
>                                                            ^
> ../../src/linux/ns.hpp:591:59: error: dereferencing type-punned pointer will 
> break strict-aliasing rules [-Werror=strict-aliasing]
>        ((struct ucred*) CMSG_DATA(CMSG_FIRSTHDR(&message)))->gid = ::getgid();
>                                                            ^
> cc1plus: all warnings being treated as errors
> make[2]: *** [Makefile:6848: 
> checks/libmesos_no_3rdparty_la-health_checker.lo] Error 1
> make[2]: Leaving directory '/home/huitseeker/mesos/src/mesos-1.2.0/build/src'
> make[1]: *** [Makefile:3476: all] Error 2
> make[1]: Leaving directory '/home/huitseeker/mesos/src/mesos-1.2.0/build/src'
> make: *** [Makefile:765: all-recursive] Error 1
> ==> ERROR: A failure occurred in build().
>     Aborting...
> {code}
> Full log: https://gist.github.com/7b01ff080d91780ad5e4825dff610517
> This can be fixed by adding :
> {code}
> CPPFLAGS="-fno-strict-aliasing"
> {code}
> before the above call to {{confgure}}.
> The following build error is :
> {code}
> ../../src/linux/fs.cpp:273:13: error: In the GNU C Library, "makedev" is 
> defined
>  by <sys/sysmacros.h>. For historical compatibility, it is
>  currently defined by <sys/types.h> as well, but we plan to
>  remove this soon. To use "makedev", include <sys/sysmacros.h>
>  directly. If you did not intend to use a system-defined macro
>  "makedev", you should undefine it after including <sys/types.h>. [-Werror]
>    entry.devno = makedev(major.get(), minor.get());
>              ^
> cc1plus: all warnings being treated as errors
> make[2]: *** [Makefile:7716: linux/libmesos_no_3rdparty_la-fs.lo] Error 1
> make[2]: Leaving directory '/home/huitseeker/mesos/src/mesos-1.2.0/build/src'
> make[1]: *** [Makefile:3476: all] Error 2
> make[1]: Leaving directory '/home/huitseeker/mesos/src/mesos-1.2.0/build/src'
> make: *** [Makefile:765: all-recursive] Error 1
> ==> ERROR: A failure occurred in build().
>     Aborting...
> {code}
> Full log : 
> https://gist.github.com/be7ba7cd3251ae9ac1b63b09ee2a38cf
> This is fixed by adding 
> {code}
> #include <sys/sysmacros.h>
> {code}
> towards the end of external imports in {{src/mesos-1.2.0/src/linux/fs.cpp}}
> Finally, the same error is triggered by the use of {{major}} and {{minor}} in 
> {{src/mesos-1.2.0/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp}} 
> and is fixed by the same import as well.
>  (If you want to reproduce under Archlinux, use {{makepkg -e}} after any 
> edition of the source, though Arch build scripts are not necessary)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to