component/nxdtest: Prepare for nxdtest!13
Prepare for upcoming nxdtest changes to run each testcase with its own /tmp and /dev/shm:
-
put unshare from SlapOS component into $PATH, so that our version is used even if OS provides /bin/unshare. As @jerome explains we need features that were added relatively recently and are missing in unshare on Debian 10: nxdtest!13 (comment 146752)
It is anyway better to "isolate" from OS by using our own component instead of system-provided one.
Correspondingly adjust util-linux to enable unshare in its build.
-
similarly to "1" adjust util-linux to enable mount so that our version is used instead of /bin/mount. For example on Debian 9, even if we successfully enter user/mount namespace with
unshare -Umc
/bin/mount -t tmpfs none /tmp
complains that
mount: only root can use "--types" option
-> Fix it the same way as with unshare by forcing usage of SlapOS-provided mount.
-
rework how nxdtest script is generated and split it into .nxdtest.pyexe and nxdtest itself. .nxdtest.pyexe is python interpreter via which nxdtest is run. This interpreter has all eggs required by nxdtest in sys.path, so that nxdtest could spawn its trun.py via sys.executable. If we don't care to have properly setup sys.executable, trun.py will fail when importing any module that nxdtest.py could already successfully import.
Initially I tried to workaround this issue via adjusting $PYTHONPATH <- sys.path in main nxdtest script, but @jerome points out that, $PYTHONPATH, if set, also affects processes that trun.py spawns, which is not good:
-> so fix this via running nxdtest via environment where sys.executable is properly setup python interpreter with path for all eggs that nxdtest has access to.
Because we already have half-way workarounds for similar problem in several places, and because running a script with correctly setup sys.executable is generally better, I would say it should be a good idea to rework zc.recipe.egg:scripts to generate all scripts to work this way, but I do not want to fight about it.
So let's leave this scheme nxdtest-specific for now.