Skip to content

Container transparency #76

@lmoureaux

Description

@lmoureaux

Problem description

In the context of the widespread migration to Alma9, containers are needed for the widely-used CMSSW 10_6 series powering Run 2 UltraLegacy analyses. Images are available to be used through the cmssw-cc7 command. Unfortunately, this comes with an important caveat for interactive usage because the images are not designed for this use case:

  • Editors are very limited, even vim is not installed and one has to resort to the antiquated vi
  • Singularity overrides the user's default prompt, removing important contextual information located there
  • Command autocompletion does not work
  • ls colors are disabled
  • etc

It is unfortunately not possible to build more comprehensive images based on CentOS 7 because the corresponding repositories have been removed.

In practice, the above means that users need to juggle between two shells: one running in Singularity to run scram and CMSSW commands, and another running in Alma9 for everything else. This is extremely frustrating.

Desired behavior

I think part of the solution to these issues is for SCRAM to add container support. The behavior would be as follows:

  • When a release for the host architecture is not available, scram project creates a release for the production architecture.
  • When scram runtime is used in an area whose architecture doesn't match the host, it sets up environment variables telling SCRAM to use a container.
  • Other SCRAM commands transparently start a container to run the command inside.
  • A new command, say scram run, allows running a command in the container environment. This is needed for commands like rivet made available by CMSSW.

Implementing this would greatly alleviate the pain of using CMSSW 10_6_X that many analyzes are currently facing.

In fact, I think SCRAM should embrace containers even further and use them regardless of the host architecture. Always running in a container will prevent the same issue from reappearing in the future.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions