summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/containers.scm103
2 files changed, 104 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index e14bd47b95..852f9f3246 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -157,6 +157,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/configuration-management.scm	\
   %D%/packages/conky.scm			\
   %D%/packages/connman.scm			\
+  %D%/packages/containers.scm			\
   %D%/packages/convmv.scm			\
   %D%/packages/cook.scm				\
   %D%/packages/coq.scm				\
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
new file mode 100644
index 0000000000..4228a27a91
--- /dev/null
+++ b/gnu/packages/containers.scm
@@ -0,0 +1,103 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Timmy Douglas <mail@timmydouglas.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages containers)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
+  #:use-module (guix build-system meson)
+  #:use-module (guix utils)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages selinux)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization)
+  #:use-module (gnu packages web))
+
+(define-public crun
+  (let ((commit "8e5757a4e68590326dafe8a8b1b4a584b10a1370"))
+    (package
+      (name "crun")
+      (version "1.3")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/containers/crun")
+               (commit commit)
+               (recursive? #t)))
+         (sha256
+          (base32 "01yiss2d57kwlxb7zlqzjwlg9fyaf19yjngd1mw9n4hxls3dfj3k"))
+         (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:configure-flags '("--disable-systemd")
+         #:tests? #f ; XXX: needs /sys/fs/cgroup mounted
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'do-not-depend-on-git
+             (lambda _
+               (substitute* "autogen.sh"
+                 (("^git submodule update.*")
+                  ""))
+               (with-output-to-file "git-version.h"
+                 (lambda ()
+                   (display (string-append
+                             "/* autogenerated.  */\n#ifndef GIT_VERSION\n# define GIT_VERSION \""
+                             ,commit
+                             "\"\n#endif\n"))))))
+           (add-after 'unpack 'fix-tests
+             (lambda _
+               (substitute* (find-files "tests" "\\.(c|py)")
+                 (("/bin/true") (which "true"))
+                 (("/bin/false") (which "false"))
+                 ; relies on sd_notify which requires systemd?
+                 (("\"sd-notify\" : test_sd_notify,") "")
+                 (("\"sd-notify-file\" : test_sd_notify_file,") "")))))))
+      (inputs
+       (list libcap
+             libseccomp
+             libyajl))
+      (native-inputs
+       (list automake
+             autoconf
+             git
+             libtool
+             pkg-config
+             python-3))
+      (home-page "https://github.com/containers/crun")
+      (synopsis "Open Container Initiative (OCI) Container runtime")
+      (description
+       "crun is a fast and low-memory footprint Open Container Initiative (OCI)
+Container Runtime fully written in C.")
+      (license license:gpl2+))))