Skip to the content.

Packaging for conda in a container

How to build BrainVisa packages and publish them for end users in a container

Creating an Apptainer/Singularity container with a pixi installation inside

On Debian/Ubuntu systems for instance:

sudo apt install apptainer apptainer-suid

Make sure that the apptainer distribution works with the "fakeroot" features:

sudo apptainer config fakeroot --add $USER
git clone https://github.com/brainvisa/casa-distro
export PATH=$(pwd)/casa-distro/bin:"$PATH"
export CASA_BASE_DIRECTORY=$(pwd)
casa_distro pull_image image=casa-pixi-5.4.sif
casa_distro_admin create_user_image container_type=apptainer_pixi image_version=5.4 base_image=casa-pixi-5.4.sif version=6.0 distro=brainvisa install=0
casa_distro_admin create_user_image container_type=apptainer_pixi image_version=5.4 base_image=casa-pixi-5.4.sif version=6.0 distro=brainvisa

(note that the only difference is the install option)

Installing an apptainer/pixi environment (user side):

(note: this doc section should end up in a user installation doc)

mkdir brainvisa-6.0
apptainer run -c -B brainvisa-6.0:/casa/setup brainvisa-6.0.sif
brainvisa-6.0/bin/bv bash

Creating a self-contained container from the modular one

Bootstrap: localimage

From: brainvisa-6.0.sif

%post
cd /casa/install
pixi add brainvisa=6.0
pixi run bv_update_bin_links
apptainer build brainvisa_monolithic-6.0.sif brainvisa-monolithic.recipe
mkdir brainvisa-monomithic-6.0
apptainer run -c -B brainvisa-monlithic-6.0:/casa/setup brainvisa-monolithic-6.0.sif

Rebuilding the base casa-pixi image

Users should not need to do that, this doc is mainly for casa-distro developers (us), unless you need to ship additional packages in the image.

apptainer pull ubuntu-24.04.sif docker://ubuntu:24.04
export CASA_BASE_DIRECTORY=$(pwd)
casa_distro_admin create_base_image type=pixi image_version=5.4 base=ubuntu-24.04.sif
casa_distro_admin publish_base_image type=casa-pixi image=casa-pixi-5.4.sif