diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/virtualization/singularity')
-rw-r--r-- | nixpkgs/pkgs/applications/virtualization/singularity/default.nix | 76 | ||||
-rw-r--r-- | nixpkgs/pkgs/applications/virtualization/singularity/deps.nix | 1 |
2 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/virtualization/singularity/default.nix b/nixpkgs/pkgs/applications/virtualization/singularity/default.nix new file mode 100644 index 000000000000..f6a1a3bc6a91 --- /dev/null +++ b/nixpkgs/pkgs/applications/virtualization/singularity/default.nix @@ -0,0 +1,76 @@ +{stdenv +, removeReferencesTo +, lib +, fetchFromGitHub +, utillinux +, openssl +, coreutils +, go +, which +, makeWrapper +, squashfsTools +, buildGoPackage}: + +with lib; + +buildGoPackage rec { + pname = "singularity"; + version = "3.2.1"; + + src = fetchFromGitHub { + owner = "sylabs"; + repo = "singularity"; + rev = "v${version}"; + sha256 = "14lhxwy21s7q081x7kbnvkjsbxgsg2f181qlzmlxcn6n7gfav3kj"; + }; + + goPackagePath = "github.com/sylabs/singularity"; + goDeps = ./deps.nix; + + buildInputs = [ openssl utillinux ]; + nativeBuildInputs = [ removeReferencesTo which makeWrapper ]; + propagatedBuildInputs = [ coreutils squashfsTools ]; + + prePatch = '' + substituteInPlace internal/pkg/build/copy/copy.go \ + --replace /bin/cp ${coreutils}/bin/cp + ''; + + postConfigure = '' + cd go/src/github.com/sylabs/singularity + + patchShebangs . + sed -i 's|defaultPath := "[^"]*"|defaultPath := "${stdenv.lib.makeBinPath propagatedBuildInputs}"|' cmd/internal/cli/actions.go + + ./mconfig -V ${version} -p $out --localstatedir=/var + + # Don't install SUID binaries + sed -i 's/-m 4755/-m 755/g' builddir/Makefile + + ''; + + buildPhase = '' + make -C builddir + ''; + + installPhase = '' + make -C builddir install LOCALSTATEDIR=$out/var + chmod 755 $out/libexec/singularity/bin/starter-suid + wrapProgram $out/bin/singularity --prefix PATH : ${stdenv.lib.makeBinPath propagatedBuildInputs} + ''; + + postFixup = '' + find $out/libexec/ -type f -executable -exec remove-references-to -t ${go} '{}' + || true + + # These etc scripts shouldn't have their paths patched + cp etc/actions/* $out/etc/singularity/actions/ + ''; + + meta = with stdenv.lib; { + homepage = "http://www.sylabs.io/"; + description = "Application containers for linux"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = [ maintainers.jbedo ]; + }; +} diff --git a/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix b/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix new file mode 100644 index 000000000000..fe51488c7066 --- /dev/null +++ b/nixpkgs/pkgs/applications/virtualization/singularity/deps.nix @@ -0,0 +1 @@ +[] |