Subject: [PATCH] gnu: Add runc.
From: 宋文武 <[email-masked]>
To: [email-masked]
Cc: 宋文武 <[email-masked]>
Date: Sun, 22 Apr 2018 20:58:44 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/virtualization.scm (runc): New variable.
---
 gnu/packages/virtualization.scm | 54 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 55ace5a56..e6d52c870 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017 Rutger Helling <[email-masked]>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2018 Danny Milosavljevic <[email-masked]>
+;;; Copyright © 2018 Sou Bunnbu <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libusb)
@@ -65,7 +67,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix download)
-  #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+))
+  #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+
+                                               asl2.0))
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
@@ -772,3 +775,52 @@ monitor/GPU.")
    ;; This package requires SSE instructions.
    (supported-systems '("i686-linux" "x86_64-linux"))
    (license gpl2+)))
+
+(define-public runc
+  (package
+    (name "runc")
+    (version "1.0.0-rc5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/opencontainers/runc/releases/"
+                    "download/v" version "/runc.tar.xz"))
+              (sha256
+               (base32
+                "081avdzwnqpk368wbaihlzsypaxpj42d7699h7jgp0fks14x4103"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; FIXME: 20/139 tests fail.
+       #:test-target "localunittest"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no 'configure' script
+         (replace 'build
+           (lambda _
+             (let* ((gopath (string-append (getenv "TMPDIR") "/go"))
+                    (srcdir (string-append
+                             gopath "/src/github.com/opencontainers/runc")))
+               (setenv "GOPATH" gopath)
+               (mkdir-p (dirname srcdir))
+               (copy-recursively (getcwd) srcdir)
+               (chdir srcdir)
+               ;; XXX: requires 'go-md2man'.
+               ;; (invoke "make man")
+               (invoke "make"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+              (invoke "make" "install" "install-bash"
+                      (string-append "PREFIX=" out))))))))
+    (native-inputs
+     `(("go" ,go)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libseccomp" ,libseccomp)))
+    (synopsis "Open container initiative runtime")
+    (home-page "https://www.opencontainers.org/")
+    (description
+     "@command{runc} is a command line client for running applications
+packaged according to the Open Container Initiative (OCI) format and is a
+compliant implementation of the Open Container Initiative specification.")
+    (license asl2.0)))
-- 
2.13.3