# -*- mode: ruby -*- Vagrant.configure("2") do |config| config.vm.box = "sylabs/singularity-3.5-ubuntu-bionic64" config.vm.box_version = "20191206.0.0" config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.synced_folder "./input", "/input" config.vm.synced_folder "./output", "/output" if !ENV["IPC_THIRD_PARTY"].nil? && Dir.exists?(ENV["IPC_THIRD_PARTY"]) config.vm.synced_folder ENV["IPC_THIRD_PARTY"], "/third-party" end config.vm.provider "virtualbox" do |vb| vb.memory = "8192" vb.cpus = 6 vb.linked_clone = true end config.vm.provision "shell", run: "always", privileged: true, inline: <<-SHELL singularity --version cd /third-party # We build in the directory /third-party, so installers can be copied from the working directory singularity build container.img /input/Singularity > >(tee /output/build.log) 2> >(tee /output/build.err >&2) # We cannot build the container in /output directly, because # singularity uses mmap on the container and this is not # supported accros synchronized folders by vagrant. mv container.img /output SHELL end