Skip to content

[pyoutline/rqd] pycuerun not installable via pip, CLI bugs, and sandbox cannot execute frames #2214

@ramonfigueiredo

Description

@ramonfigueiredo

Describe the bug
Several issues prevent the OpenCue sandbox from working end-to-end when submitting jobs via pyoutline:

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

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

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

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

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

  1. pip install pyoutline/
  2. Run pycuerun my_job.outline
  3. Result: command not found: pycuerun

Bug 2:

  1. Run pycuerun --priority 100 my_job.outline
  2. Result: AttributeError: 'Values' object has no attribute 'priority'

Bug 3:

  1. Run pycuerun in an environment where OL_REPOS is unset and no repos are configured
  2. The --repos flag with an empty value consumes the next argument

Bug 4:

  1. Create a custom Layer subclass and launch with use_pycuerun=False
  2. Result: TypeError: can only join an iterable

Bug 5:

  1. Run docker compose up with the sandbox
  2. Submit a job via pycuerun
  3. 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

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions