def test_bootstrap(self):
        """Singularity bootstrap option"""
        b = baseimage(image='foo.sif', _bootstrap='localimage')
        self.assertEqual(
            str(b), r'''BootStrap: localimage
From: foo.sif
%post
    . /.singularity.d/env/10-docker*.sh''')
    def test_value_singularity(self):
        """Image name is specified"""
        b = baseimage(image='foo')
        self.assertEqual(
            str(b), r'''BootStrap: docker
From: foo
%post
    . /.singularity.d/env/10-docker*.sh''')
    def test_as_deprecated_singularity(self):
        """Docker specified image naming"""
        b = baseimage(image='foo', AS='dev')
        self.assertEqual(
            str(b), r'''BootStrap: docker
From: foo
%post
    . /.singularity.d/env/10-docker*.sh''')
    def test_as_singularity32(self):
        """Docker specified image naming"""
        b = baseimage(image='foo', _as='dev')
        self.assertEqual(
            str(b), r'''BootStrap: docker
From: foo
Stage: dev
%post
    . /.singularity.d/env/10-docker*.sh''')
예제 #5
0
    def test_multistage_noas_docker(self):
        """Multistage naming"""
        s0 = Stage()
        s0 += baseimage(image='centos:7')
        s0 += boost()
        s1 = Stage()
        s1 += s0.runtime()
        self.assertEqual(
            str(s1), r'''# Boost
COPY --from=0 /usr/local/boost /usr/local/boost
ENV LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH''')
예제 #6
0
    def test_multistage_as_override_docker(self):
        """Multistage naming"""
        s0 = Stage()
        s0 += baseimage(image='centos:7', _as='devel')
        s0 += boost()
        s1 = Stage()
        s1 += s0.runtime(_from='build')
        self.assertEqual(
            str(s1), r'''# Boost
COPY --from=build /usr/local/boost /usr/local/boost
ENV LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH''')
    def test_as_singularity32(self):
        """Docker specified image naming"""
        b = baseimage(image='foo', _as='dev')
        self.assertEqual(
            str(b),
            r'''# NOTE: this definition file depends on features only available in
# Singularity 3.2 and later.
BootStrap: docker
From: foo
Stage: dev
%post
    . /.singularity.d/env/10-docker*.sh''')
예제 #8
0
    def baseimage(self, image, _distro=''):
        """Insert the baseimage as the first layer

        # Arguments

        image (string): The image identifier to use as the base image.
        The value is passed to the `baseimage` primitive.

        _distro: The underlying Linux distribution of the base image.
        The value is passed to the `baseimage` primitive.
        """
        if image:
            self.__layers.insert(
                0, baseimage(image=image, _as=self.name, _distro=_distro))
예제 #9
0
    def test_multistage_as_override_singularity(self):
        """Multistage naming"""
        s0 = Stage()
        s0 += baseimage(image='centos:7', _as='devel')
        s0 += boost()
        s1 = Stage()
        s1 += s0.runtime(_from='build')
        self.assertEqual(
            str(s1), r'''# Boost
%files from build
    /usr/local/boost /usr/local/boost
%environment
    export LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH
%post
    export LD_LIBRARY_PATH=/usr/local/boost/lib:$LD_LIBRARY_PATH''')
 def test_invalid_ctype(self):
     """Invalid container type specified"""
     b = baseimage()
     with self.assertRaises(RuntimeError):
         str(b)
 def test_empty_singularity(self):
     """Default base image"""
     b = baseimage()
     self.assertNotEqual(str(b), '')
 def test_empty_docker(self):
     """Default base image"""
     b = baseimage()
     self.assertNotEqual(str(b), '')
 def test_arch_nonexistent(self):
     """Base image CPU architecture specification"""
     b = baseimage(image='foo', _arch='nonexistent')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.X86_64)
 def test_arch_ppc64le(self):
     """Base image CPU architecture specification"""
     b = baseimage(image='foo', _arch='ppc64le')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.PPC64LE)
 def test_arch_aarch64(self):
     """Base image CPU architecture specification"""
     b = baseimage(image='foo', _arch='aarch64')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.AARCH64)
 def test_detect_ubuntu_18(self):
     """Base image Linux distribution detection"""
     b = baseimage(image='ubuntu:18.04')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.UBUNTU)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('18.04'))
 def test_as_deprecated_docker(self):
     """Docker specified image naming"""
     b = baseimage(image='foo', AS='dev')
     self.assertEqual(str(b), 'FROM foo AS dev')
 def test_value_bash(self):
     """Image name is specified"""
     b = baseimage(image='foo')
     self.assertEqual(str(b), '#!/bin/bash -ex')
 def test_distro_nonexistent(self):
     """Base image Linux distribution specification"""
     b = baseimage(image='foo', _distro='nonexistent')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.UBUNTU)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('16.04'))
 def test_distro_centos8(self):
     """Base image Linux distribution specification"""
     b = baseimage(image='foo', _distro='centos8')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.CENTOS)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('8.0'))
 def test_detect_ubi8(self):
     """Base image Linux distribution detection"""
     b = baseimage(image='nvidia/cuda:10.1-devel-ubi8')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.RHEL)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('8.0'))
 def test_detect_centos_8(self):
     """Base image Linux distribution detection"""
     b = baseimage(image='centos:8')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.CENTOS)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('8.0'))
 def test_detect_centos(self):
     """Base image Linux distribution detection"""
     b = baseimage(image='nvidia/cuda:9.0-devel-centos7')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.CENTOS)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('7.0'))
 def test_value_docker(self):
     """Image name is specified"""
     b = baseimage(image='foo')
     self.assertEqual(str(b), 'FROM foo')
예제 #25
0
 def baseimage(self, image, _distro=''):
     """Insert the baseimage as the first layer"""
     if image:
         self.__layers.insert(
             0, baseimage(image=image, _as=self.name, _distro=_distro))
 def test_detect_ubuntu16(self):
     """Base image Linux distribution detection"""
     b = baseimage(image='nvidia/cuda:9.0-devel-ubuntu16.04')
     self.assertEqual(hpccm.config.g_linux_distro, linux_distro.UBUNTU)
     self.assertEqual(hpccm.config.g_linux_version, StrictVersion('16.04'))
    def test_false_docker_env_singularity(self):
        """Docker env is False"""
        b = baseimage(image='foo', _docker_env=False)
        self.assertEqual(str(b), r'''BootStrap: docker
From: foo''')
 def test_detect_ppc64le(self):
     """Base image CPU architecture detection"""
     b = baseimage(image='ppc64le/centos:7')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.PPC64LE)
 def test_detect_aarch64(self):
     """Base image CPU architecture detection"""
     b = baseimage(image='arm64v8/centos:7')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.AARCH64)
 def test_detect_nonexistent(self):
     """Base image CPU architecture detection"""
     b = baseimage(image='foo')
     self.assertEqual(hpccm.config.g_cpu_arch, cpu_arch.X86_64)