fix: mount shared dir symlinks when opening the solver GUI - #23
Merged
Merged
Conversation
build_gui_command (docker) and the singularity branch of build_runtime_gui_command mounted only the runs dir, unlike their run counterparts. With mesh_mode = symlink (the default since 0.4.1), MESH and POST symlinks pointing outside RUNS were left dangling inside the container.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
build_gui_command(docker) and the singularity branch ofbuild_runtime_gui_commandmounted only the runs dir. Theirruncounterpartsalso bind the targets of shared-dir symlinks. Both GUI paths now do the same,
MESHread-only andPOSTwritable, in the same order.Six lines of production code, mirroring the
runpath exactly.Why
Since 0.4.1,
mesh_mode = "symlink"is the default, soRUNS/MESHis normally asymlink pointing outside
RUNS. Container runtimes only bind-mount the runs dir,which is why the
runpath additionally binds each symlink target at its ownabsolute path.
The GUI path never did. Opening the solver GUI on such a case therefore gave a
dangling
MESHsymlink inside the container: the GUI starts, but the meshdeclared in
setup.xmlcannot be resolved.Before / after, for the same case:
How to test
pytest -q # 357 passed, 3 skippedThree new tests, written before the fix and observed failing: docker and
singularity both bind the symlink target with the expected
:roonMESH, plusa negative test asserting no extra mount appears when the shared dirs are real
directories.
End to end, with a campaign whose
MESHis a symlink (the default aftercsauto prepare):Click Open GUI on a case. The launched command now contains the
MESHandPOSTbinds; previously it contained only the runs dir and the X11 socket.Checklist
pytest -q)ruff check . && ruff format --check .)frontend/dist/is up-to-date — not applicable, unchanged