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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions