On Tue, 17 Jan 2017, James Cowgill wrote:
I'm not sure I follow. Debhelper runs the testsuite during the build target so it shouldn't be run as root anyway. I don't think you need any workarounds at all for this.
I agree in terms of principles :), but I don't know what actually happens on the buildd machines. I've looked a bit at buildd.debian.org, but it's not completely trivial to decide which is correct - do the buildd builds on the debian build machines run dh_auto_tests as (i) root, as (ii) an unprivileged user running fakeroot, or as (iii) an unprivileged user? Looking at git://git.debian.org/buildd-tools/sbuild.git it looks like the user is "buildd" - but this is just a guess. The mpirun exit-if-root mechanism is in openmpi-2.0.2~git.20161225/orte/orted/orted_submit.c Isolating this to lines 319-335, this is easy to test as a standalone main program (see snippet.c below) - the exit-if-root test is triggered either (i) using root directly, or (ii) as ordinary user running fakeroot. Even as fakeroot, both geteuid() and getuid() in the snippet below report an identity of 0. My own pbuilder setup - closely following the maint-guide.en.txt advice - appears *not* to run "make check" as fakeroot or root, since I do not see the error and exit due to running as root. The snippet below can be tested: user$ ./snippet user$ fakeroot ./snippet root# ./snippet Cheers Boud ---------------------------------------------------------------------- /* inspired by openmpi-2.0.2~git.20161225/orte/orted/orted_submit.c root detection */ /* (C) 2017 GPL-3+ B. Roukema if copyright is needed */ #include <stdio.h> #include <unistd.h> #include <sys/types.h> int main(void) { int uid = 77 , euid = 7777; euid = geteuid(); uid = getuid(); if (0 == euid){ printf("WARNING: You are effectively root.\n"); }; if (0 == uid){ printf("WARNING: You are really root.\n"); }; if (0 != uid && 0 != euid){ printf("You are not running as root :).\n"); } return 0; } ----------------------------------------------------------------------