[Pkg-openmpi-maintainers] Bug#839387: package builds crashing under fakeroot
Christian Seiler
christian at iwakd.de
Mon Oct 3 15:21:36 UTC 2016
On 10/03/2016 04:50 PM, Alastair McKinstry wrote:
> In OpenMPI 2.0, Michael Banck discovered that some of the packages that
> failed were doing so as openmpi no longer works under fakeroot.
>
> Upstream (Gilles Gouaillaerdet) point out:
>
> from |validate_cred| in
> |opal/mca/pmix/pmix112/pmix/src/sec/pmix_native.c|
>
> |getsockopt (peer->sd, SOL_SOCKET, SO_PEERCRED, &ucred, &crlen);|
>
> my understanding is that |fakeroot| tricks the processes into
> believing they are ran as |root|,
> as such, |orted| expects a connection from |root| (e.g. |ucred.uid|
> is |0|)
> /* in singleton mode, an |orted| is fork&exec'ed under the hood */
>
> but |fakeroot| cannot trick |getsockopt|, which returns the user
> (non zero)
>
> So its a legitimate tightening of credential-checking in pmix. However
> it causes problems for us running tests under binary-arch.
If the tests themselves don't need root (fakeroot is required for
Debian's build infrastructure), you could just remove the fakeroot
libraries from LD_PRELOAD.
Example script (save as e.g. debian/nofakeroot, make it executable,
call the tests via debian/nofakeroot command in debian/rules):
#!/bin/sh
filter_fakeroot() {
oldifs="$IFS"
IFS=":"
s=
set -- $LD_PRELOAD
for lib in "$@" ; do
if [ x"$lib" = x"${lib%libfakeroot-*}" ] ; then
printf "%s%s" "$s" "$lib"
s=:
fi
done
IFS="$OLDIFS"
}
export LD_PRELOAD="$(filter_fakeroot)"
exec "$@"
Regards,
Christian
More information about the Pkg-openmpi-maintainers
mailing list