thread1: gzip
# team-maintainers
m
thread1: gzip
solution: from @Matthias De Smet
Yes! Containers need to be created through the seqera wave API or you need the use a slightly modified version of #CE5LG7WMB (PR pending approval)
https://github.com/nf-core/tools/pull/4449
❤️ 1
a
I ran into this issue with a singularity container in
nf-core
modules recently and I am wondering if there is any plan to audit this and attempt to update the containers affected? The module in question avoided being flagged by CI because the tool only uses
gzip
when run under certain conditions.
m
I think this will come down to the base images used 🤔 to be on the safe side, I’m thinking a single source of truth should be used, which is then converted to the different formats for docker/singularity, without relying on separate base images
a
Yeah I commented questioning how this happened on the issue. It seems like a Seqera containers issue but from what I could trace Paolo basically just said “define all dependencies”
m
yeah, that seems to be the gist of it. I do think some kind of “stable base” should be available to be used across platforms
a
I can’t really fathom a situation where you’d ever want different base images.
m
But thats the current situation AFAIK
And something that either needs to be fixed on the seqera end, or by nf-core by providing a custom base image
And then we need to update every modules container definition 😬
OR
we just drop singularity containers entirely and rely on singularity converting docker on the fly
avoiding the issue altogether
a
I know a lot of people do that already (and we have/had an option before for singularity to pull from docker in nf-core) but it is a blocker for people running
download
right? (or they at least then need singularity installed where they run
download
)
Many modules also already explicitly list
gzip
as a dependency, possibly because they hit this issue
m
The thing is, I’d like to avoid cluttering all the env.yaml files with
gzip
only to satisfy the linter
a
This isn’t a linter thing though right? My main issue with the current “fix” is the the containers will only rebuild in the correct way if you know the custom base packages option or use
nf-core/tools
to build them, and right now it doesn’t work to rebuild images for a patched module installed in a pipeline. Would be better if there was a base image that we could point people too I think - but then that’s another thing we have to maintain and upgrade, which with the rapid pace of 0-days and stuff like this certs chaos is going to be far to often 😂
m
This isn’t a linter thing though right?
I think for most it is though. The linter requires
echo '' | gzip > file.ext.gz
in the stub, so if singularity doesn’t have gzip, they add it to the env.
Disregarding any other implications
a
But it’s not the linter that requires that, it’s that the stub tests will fail if you don’t
gzip
like that.
m
but then that’s another thing we have to maintain and upgrade,
There’s automation for that?
The linter fails when that exact string isn’t in the module
and then the stub will fail indeed
a
Sure, but that’s separate (and less bad) than the fact the whole test fails if you don’t gzip the stub data in some way
It wouldn’t be so bad if the docker base image didn’t have
gzip
by default whilst the others don’t. Many people only test locally with docker.
party this 1
Sorry to say but your fix didn’t work @Matthias De Smet: github.com/nf-core/tools/issues/4542
m
Huh? I’ve been using it for a while now, with success 🤔
a
If by success you mean singularity images have
gzip
then yeah that’s true, but it’s because the
pixi
base image now has it (
ubuntu:24.04
) and not because of
basePackages
.
m
But… how come singularity failed pre fix and worked post fix 🤔 there must be some other variable I overlooked then
a
image.png
m
Yeah… that
Oh well, whatever I guess. The bot is probably smarter than I am
a
I only noticed it wasn’t in the installed conda packages because I tried to manually compare the lockfiles and then I couldn’t see
gzip
. I don’t really understand what happened either though, because we were using the pixi V1 template already…
I asked the bot to find me the actual build of one of the old singularity images on nf-core/modules I know didn’t have gzip:
The old annotsv Singularity image came from the default Wave template, conda/micromamba:v2. Its base image was mambaorg/micromamba:2-amazon2023, with a single stage. The new pixi template changes this, and that is why gzip is now present.
So it seems like just the template in
containers create
using
pixi
was enough, anything with a missing
gzip
must have been coming from people manually updating containers via the wave web gui or cli
m
oh, makes sense, come to think of it 🤔