Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/main/groovy/io/seqera/wave/util/ContainerHelper.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ class ContainerHelper {
final spec = req.packages

// Default templates based on package type (when no explicit template)
if( spec.type == PackagesSpec.Type.CONDA && (!req.buildTemplate || req.buildTemplate==CONDA_MICROMAMBA_V1) ) {
return CondaHelper.containerFile(spec, singularity)
}
if( req.buildTemplate == CONDA_MICROMAMBA_V2 ) {
if( spec.type == PackagesSpec.Type.CONDA && (!req.buildTemplate || req.buildTemplate==CONDA_MICROMAMBA_V2) ) {
return CondaHelper.containerFileV2(spec, req.containerImage, singularity)
}
if( req.buildTemplate == CONDA_MICROMAMBA_V1 ) {
return CondaHelper.containerFile(spec, singularity)
}
if( req.buildTemplate == CONDA_PIXI_V1 ) {
return PixiHelper.containerFile(spec, req.containerImage, singularity)
}
Expand Down
46 changes: 42 additions & 4 deletions src/test/groovy/io/seqera/wave/util/ContainerHelperTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class ContainerHelperTest extends Specification {
def CONDA_OPTS = new CondaOpts([basePackages: 'foo::one bar::two'])
def PACKAGES = ['https://foo.com/lock.yml']
def packages = new PackagesSpec(type: PackagesSpec.Type.CONDA, entries: PACKAGES, channels: CHANNELS, condaOpts: CONDA_OPTS)
def req = new SubmitContainerTokenRequest(packages: packages, format: 'sif')
def req = new SubmitContainerTokenRequest(packages: packages, format: 'sif', buildTemplate: BuildTemplate.CONDA_MICROMAMBA_V1)

when:
def result = ContainerHelper.containerFileFromRequest(req)
Expand Down Expand Up @@ -81,7 +81,7 @@ class ContainerHelperTest extends Specification {
def CONDA_OPTS = new CondaOpts([basePackages: 'foo::one bar::two'])
def PACKAGES = ['https://foo.com/lock.yml']
def packages = new PackagesSpec(type: PackagesSpec.Type.CONDA, entries: PACKAGES, channels: CHANNELS, condaOpts: CONDA_OPTS)
def req = new SubmitContainerTokenRequest(packages: packages)
def req = new SubmitContainerTokenRequest(packages: packages, buildTemplate: BuildTemplate.CONDA_MICROMAMBA_V1)

when:
def result = ContainerHelper.containerFileFromRequest(req)
Expand Down Expand Up @@ -109,7 +109,7 @@ class ContainerHelperTest extends Specification {
def CONDA_OPTS = new CondaOpts([basePackages: 'foo::one bar::two'])
def PACKAGES = ['bwa=0.7.15', 'salmon=1.1.1']
def packages = new PackagesSpec(type: PackagesSpec.Type.CONDA, entries: PACKAGES, channels: CHANNELS, condaOpts: CONDA_OPTS)
def req = new SubmitContainerTokenRequest(packages: packages, format: 'sif')
def req = new SubmitContainerTokenRequest(packages: packages, format: 'sif', buildTemplate: BuildTemplate.CONDA_MICROMAMBA_V1)

when:
def result = ContainerHelper.containerFileFromRequest(req)
Expand Down Expand Up @@ -139,7 +139,7 @@ class ContainerHelperTest extends Specification {
def CONDA_OPTS = new CondaOpts([basePackages: 'foo::one bar::two'])
def PACKAGES = ['bwa=0.7.15', 'salmon=1.1.1']
def packages = new PackagesSpec(type: PackagesSpec.Type.CONDA, entries: PACKAGES, channels: CHANNELS, condaOpts: CONDA_OPTS)
def req = new SubmitContainerTokenRequest(packages: packages)
def req = new SubmitContainerTokenRequest(packages: packages, buildTemplate: BuildTemplate.CONDA_MICROMAMBA_V1)

when:
def result = ContainerHelper.containerFileFromRequest(req)
Expand Down Expand Up @@ -751,6 +751,44 @@ class ContainerHelperTest extends Specification {
'''.stripIndent()
}

def 'should create conda docker file with packages using micromamba v2 by default'() {
given:
def CHANNELS = ['conda-forge', 'bioconda']
def PACKAGES = ['bwa=0.7.15', 'salmon=1.1.1']
def packages = new PackagesSpec(
type: PackagesSpec.Type.CONDA,
entries: PACKAGES,
channels: CHANNELS)
and:
// no explicit build template: should default to micromamba v2
def req = new SubmitContainerTokenRequest(packages:packages)
when:
def result = ContainerHelper.containerFileFromRequest(req)

then:
result =='''\
FROM mambaorg/micromamba:2-amazon2023 AS build
COPY --chown=$MAMBA_USER:$MAMBA_USER conda.yml /tmp/conda.yml
RUN (micromamba install -y -n base -f /tmp/conda.yml > /tmp/mamba.log 2>&1 \\
&& cat /tmp/mamba.log \\
|| (cat /tmp/mamba.log >&2 && grep -q __cuda /tmp/mamba.log \\
&& CONDA_OVERRIDE_CUDA="99" micromamba install -y -n base -f /tmp/conda.yml)) \\
&& micromamba install -y -n base conda-forge::procps-ng \\
&& micromamba clean -a -y \\
&& micromamba env export --name base --explicit > environment.lock \\
&& echo ">> CONDA_LOCK_START" \\
&& cat environment.lock \\
&& echo "<< CONDA_LOCK_END"

FROM ubuntu:24.04 AS prod
ARG MAMBA_ROOT_PREFIX="/opt/conda"
ENV MAMBA_ROOT_PREFIX=$MAMBA_ROOT_PREFIX
COPY --from=build "$MAMBA_ROOT_PREFIX" "$MAMBA_ROOT_PREFIX"
USER root
ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH"
'''.stripIndent()
}

def 'should create conda docker file with packages and micromamba v2 custom image'() {
given:
def CHANNELS = ['conda-forge', 'bioconda']
Expand Down
3 changes: 3 additions & 0 deletions wave-api/src/main/java/io/seqera/wave/api/BuildTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ public static String defaultTemplate(PackagesSpec packages) {
if (packages == null) {
return null;
}
if( packages.type == PackagesSpec.Type.CONDA ) {
return CONDA_MICROMAMBA_V2;
}
if( packages.type == PackagesSpec.Type.CRAN ) {
return CRAN_INSTALLR_V1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class BuildTemplateTest extends Specification {
where:
PACKAGES | EXPECTED
new PackagesSpec(type: PackagesSpec.Type.CRAN) | BuildTemplate.CRAN_INSTALLR_V1
new PackagesSpec(type: PackagesSpec.Type.CONDA) | null
new PackagesSpec(type: PackagesSpec.Type.CONDA) | BuildTemplate.CONDA_MICROMAMBA_V2
null | null
new PackagesSpec() | null
}
Expand Down
Loading