Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
slapos
slapos
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Merge Requests 72
    • Merge Requests 72
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Jobs
  • Commits
  • nexedi
  • slaposslapos
  • Merge Requests
  • !1095

Merged
Opened Dec 02, 2021 by Kirill Smelkov@kirr
  • Report abuse
Report abuse

component/nxdtest: Prepare for nxdtest!13

Prepare for upcoming nxdtest changes to run each testcase with its own /tmp and /dev/shm:

  1. 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.

  2. 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.

  3. 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:

    !1095 (comment 146799)

    -> 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.

/cc @tomo
/helped-by @jerome

Edited Dec 09, 2021 by Kirill Smelkov
  • Discussion 53
  • Commits 3
  • Pipelines 1
  • Changes 6
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
0
Labels
None
Assign labels
  • View project labels
Reference: nexedi/slapos!1095

Revert this commit

This will create a new commit in order to revert the existing changes.

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.

Cherry-pick this commit

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7