Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
slapos slapos
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Labels
    • Labels
  • Merge requests 124
    • Merge requests 124
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • slaposslapos
  • Merge requests
  • !1095

Merged
Created Dec 02, 2021 by Kirill Smelkov@kirrOwner

component/nxdtest: Prepare for nxdtest!13

  • Overview 53
  • Commits 3
  • Pipelines 1
  • Changes 6

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
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: y/nxdtest+unshare
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7