summaryrefslogtreecommitdiffstats
path: root/external/meta-virtualization/recipes-containers/singularity
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-virtualization/recipes-containers/singularity')
-rw-r--r--external/meta-virtualization/recipes-containers/singularity/README46
-rw-r--r--external/meta-virtualization/recipes-containers/singularity/singularity_git.bb35
2 files changed, 81 insertions, 0 deletions
diff --git a/external/meta-virtualization/recipes-containers/singularity/README b/external/meta-virtualization/recipes-containers/singularity/README
new file mode 100644
index 00000000..582480f8
--- /dev/null
+++ b/external/meta-virtualization/recipes-containers/singularity/README
@@ -0,0 +1,46 @@
+Singularity is a container platform based on the principle of mobility of
+compute, and it is designed for use within HPC clusters. For more info see
+singularity.lbl.gov.
+
+To test whether the software functions correctly, you can use `singularity
+selftest`. This is what you would expect to see:
+
+~# singularity selftest
+ + sh -c test -f /etc/singularity/singularity.conf (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/action-suid (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/create-suid (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/expand-suid (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/export-suid (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/import-suid (retval=0) OK
+ + test -u /usr/libexec/singularity/bin/mount-suid (retval=0) OK
+
+You can also pull a container from Docker Hub to prove full functionality
+(Test was performed on a Raspberry Pi 3, hence the arm32v7 part of the Docker
+link. Make sure you pull an image which is compatible with your hardware.)
+For instance:
+
+~# singularity pull docker://arm32v7/debian:latest
+Initializing Singularity image subsystem
+Opening image file: debian-latest.img
+Creating 200MiB image
+Binding image to loop
+Creating file system within image
+Image is done: debian-latest.img
+Docker image path: index.docker.io/arm32v7/debian:latest
+Cache folder set to /home/root/.singularity/docker
+[1/1] |===================================| 100.0%
+Importing: base Singularity environment
+Importing: /home/root/.singularity/docker/sha256:ed4f1f0d0a0457e7f76ffb25a8d6a193007709dd312b7647cb44fc6979ec4a53.tar.gz
+Importing: /home/root/.singularity/metadata/sha256:89997b2c16b29c5a3a316e314172ef21b36f67cc3200b1c4d95927f716dbee83.tar.gz
+Done. Container is at: debian-latest.img
+~# singularity shell debian-latest.img
+Singularity: Invoking an interactive shell within container...
+
+Singularity debian-latest.img:~> echo "Hello from within the container!"
+Hello from within the container!
+Singularity debian-latest.img:~> ls /
+bin dev home lost+found mnt proc run singularity sys usr
+boot etc lib media opt root sbin srv tmp var
+Singularity debian-latest.img:~> exit
+exit
+~#
diff --git a/external/meta-virtualization/recipes-containers/singularity/singularity_git.bb b/external/meta-virtualization/recipes-containers/singularity/singularity_git.bb
new file mode 100644
index 00000000..6fee8f35
--- /dev/null
+++ b/external/meta-virtualization/recipes-containers/singularity/singularity_git.bb
@@ -0,0 +1,35 @@
+# Skip QA check for library symbolic links (core issue is a packaging problem within
+# Singularity build / config: read up on the dev-so test for more info)
+INSANE_SKIP_${PN} += "dev-so"
+
+RDEPENDS_${PN} += "glibc python3 ca-certificates openssl bash e2fsprogs-mke2fs"
+# Singularity expects to find python3 under the name python, therefore both
+# cannot be installed at the same time.
+RCONFLICTS_${PN} = "python"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYRIGHT.md;md5=be78c34e483dd7d8439358b1e024b294 \
+ file://LICENSE-LBNL.md;md5=45a007b527e1a9507aa7fa869f8d7ede \
+ file://LICENSE.md;md5=df4326b473db6424033f1d98a5645e30 \
+ file://debian/copyright;md5=ed267cf386d9b75ab1f27f407e935b10"
+
+SRC_URI = "git://github.com/singularityware/singularity.git;protocol=https"
+PV = "2.3.1+git${SRCPV}"
+SRCREV = "e214d4ebf0a1274b1c63b095fd55ae61c7e92947"
+
+S = "${WORKDIR}/git"
+
+inherit pythonnative autotools-brokensep
+EXTRA_OECONF = "--prefix=/usr/local"
+
+pkg_postinst_${PN}() {
+ # Singularity requires "python" to resolve to "python3" within the commandline.
+ # This creates a symbolic link from python3 to python. A side-effect of this is
+ # that scripts which expect Python 2 may fail to run correctly.
+ ln -sr $D${bindir}/python3 $D${bindir}/python
+
+ # python3 expects CA certificates to be installed in a different place to where
+ # they are actually installed. These lines link the two locations.
+ rm -r $D${libdir}/ssl-1.1/certs
+ ln -sr $D${sysconfdir}/ssl/certs $D${libdir}/ssl-1.1
+}