Describe the bug
Several issues prevent the OpenCue sandbox from working end-to-end when submitting jobs via pyoutline:
-
pycuerun is not on PATH after pip install: pyoutline/pyproject.toml has no [project.scripts] entry point, so pip install pyoutline/ does not create a pycuerun command. Users must manually symlink or add the bin/ directory to PATH.
-
Missing --priority option in CuerunOptionParser: options_to_args() references options.priority, but the parser never defines a --priority option, causing:
AttributeError: 'Values' object has no attribute 'priority'.
-
Empty --repos flag consumes the next CLI argument: When outline.versions.get_repos() returns an empty string, build_command() emits --repos with no value, which causes it to consume the next flag (e.g. --debug) as its argument.
-
use_pycuerun=False crashes for layers without a command arg: serialize_simple() calls " ".join(layer.get_arg("command")), which raises TypeError when command is None (e.g. custom Layer subclasses).
-
RQD Docker container cannot execute frames: The rqd container does not have pyoutline or pycue installed, so the wrapper script and pycuerun are unavailable. The default opencue_wrap_frame requires /bin/tcsh, which is not present in the container. There is also no python symlink (only python3.9), so #!/usr/bin/env python shebangs fail.
To Reproduce
Bug 1:
pip install pyoutline/
- Run
pycuerun my_job.outline
- Result:
command not found: pycuerun
Bug 2:
- Run
pycuerun --priority 100 my_job.outline
- Result:
AttributeError: 'Values' object has no attribute 'priority'
Bug 3:
- Run
pycuerun in an environment where OL_REPOS is unset and no repos are configured
- The
--repos flag with an empty value consumes the next argument
Bug 4:
- Create a custom
Layer subclass and launch with use_pycuerun=False
- Result:
TypeError: can only join an iterable
Bug 5:
- Run
docker compose up with the sandbox
- Submit a job via
pycuerun
- Frames fail with errors such as:
/bin/tcsh: bad interpreter: No such file or directory
or
env: 'python': No such file or directory
Expected behavior
pip install pyoutline/ should make pycuerun available on PATH
--priority should be a valid CLI option
- Empty
--repos should not be emitted
use_pycuerun=False should give a clear error for layers without a command instead of a TypeError
- The rqd Docker container should be able to execute frames out of the box
Version Number
Describe the bug
Several issues prevent the OpenCue sandbox from working end-to-end when submitting jobs via pyoutline:
pycuerunis not on PATH afterpip install:pyoutline/pyproject.tomlhas no[project.scripts]entry point, sopip install pyoutline/does not create apycueruncommand. Users must manually symlink or add thebin/directory to PATH.Missing
--priorityoption inCuerunOptionParser:options_to_args()referencesoptions.priority, but the parser never defines a--priorityoption, causing:AttributeError: 'Values' object has no attribute 'priority'.Empty
--reposflag consumes the next CLI argument: Whenoutline.versions.get_repos()returns an empty string,build_command()emits--reposwith no value, which causes it to consume the next flag (e.g.--debug) as its argument.use_pycuerun=Falsecrashes for layers without a command arg:serialize_simple()calls" ".join(layer.get_arg("command")), which raisesTypeErrorwhencommandisNone(e.g. customLayersubclasses).RQD Docker container cannot execute frames: The rqd container does not have
pyoutlineorpycueinstalled, so the wrapper script andpycuerunare unavailable. The defaultopencue_wrap_framerequires/bin/tcsh, which is not present in the container. There is also nopythonsymlink (onlypython3.9), so#!/usr/bin/env pythonshebangs fail.To Reproduce
Bug 1:
pip install pyoutline/pycuerun my_job.outlinecommand not found: pycuerunBug 2:
pycuerun --priority 100 my_job.outlineAttributeError: 'Values' object has no attribute 'priority'Bug 3:
pycuerunin an environment whereOL_REPOSis unset and no repos are configured--reposflag with an empty value consumes the next argumentBug 4:
Layersubclass and launch withuse_pycuerun=FalseTypeError: can only join an iterableBug 5:
docker compose upwith the sandboxpycuerun/bin/tcsh: bad interpreter: No such file or directoryor
env: 'python': No such file or directoryExpected behavior
pip install pyoutline/should makepycuerunavailable on PATH--priorityshould be a valid CLI option--reposshould not be emitteduse_pycuerun=Falseshould give a clear error for layers without a command instead of aTypeErrorVersion Number