Subject: [PATCH] gnu: Add arcan.

From: L p R n d n <[email-masked]>
Date: Thu, 24 Jan 2019 13:54:17 +0100

>From f1d5416c9d7a8a5ba5ecb4d380d06ee066b62a29 Mon Sep 17 00:00:00 2001
From: Lprndn <[email-masked]>
Date: Thu, 24 Jan 2019 13:29:21 +0100
Subject: [PATCH] gnu: Add arcan.

* gnu/packages/arcan.scm New module.
* gnu/packages/arcan.scm (arcan): New variable.
---
 gnu/packages/arcan.scm | 130 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100644 gnu/packages/arcan.scm

diff --git a/gnu/packages/arcan.scm b/gnu/packages/arcan.scm
new file mode 100644
index 000000000..910464dec
--- /dev/null
+++ b/gnu/packages/arcan.scm
@@ -0,0 +1,130 @@
+(define-module (gnu packages arcan)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+
+  #:use-module (gnu packages apr)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libusb)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages ocr)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xdisorg))
+
+(define-public arcan
+  (package
+    (name "arcan")
+    (version "0.5.5.2")                 ;A few commits ahead, really. To fix some bugs.
+    (source (origin
+              (method git-fetch)
+              (file-name (git-file-name name version))
+              (uri (git-reference
+                    (url "https://github.com/letoram/arcan.git")
+                    (commit "b4dd1fbd1938492ff4b269189d3c8524be7450a9")))
+              (sha256
+               (base32
+                "1pd0avlzc2rig1hd37zbhc7r2s6fjzdhshfg9l9cfzibl7caclyw"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DVIDEO_PLATFORM=egl-dri" "-DBUILTIN_LUA=off"
+                           "-DSTATIC_OPENAL=off""-DENABLE_LWA=on"
+                           "-DSTATIC_SQLITE3=off" "-DSTATIC_FREETYPE=off"
+                           "-DSHMIF_TUI_ACCEL=on")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-cmake-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/platform/cmake/modules/FindGBMKMS.cmake"
+               (("/usr/local/include/libdrm")
+                (string-append (assoc-ref inputs "libdrm")
+                               "/include/libdrm")))
+             (substitute* "src/platform/cmake/modules/FindAPR.cmake"
+               (("/usr/local/apr/include/apr-1")
+                (string-append (assoc-ref inputs "apr")
+                               "/include/apr-1")))
+             #t))
+         (add-after 'unpack 'prepare-static-openal ; For building arcan_lwa
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((arcan-openal (assoc-ref inputs "arcan-openal")))
+               (mkdir-p "external/openal")
+               (symlink arcan-openal "external/git/openal"))
+             #t))
+         (add-after 'prepare-static-openal 'generate-man
+           (lambda _
+             (with-directory-excursion "doc"
+               (invoke "ruby" "docgen.rb" "mangen"))
+             #t))
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "src")
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/arcan")
+                 `("ARCAN_RESOURCEPATH" ":" suffix
+                   (,(string-append out "/share/arcan/resources")))
+                 `("ARCAN_STATEBASEPATH" ":" =
+                   ("$HOME/.arcan/resources/savestates"))
+                 `("ARCAN_STATEPATH" ":" =
+                   ("$HOME/.arcan/resources/savestates"))
+                 `("ARCAN_BINPATH" ":" =
+                   (,(string-append out "/bin/arcan_frameserver")))
+                 `("ARCAN_SCRIPTPATH" ":" suffix
+                   (,(string-append out "/share/arcan/scripts")))))
+             #t)))
+       #:tests? #f))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "ARCAN_APPLBASEPATH")
+            (separator #f)
+            (files '("share/arcan/appl")))))
+    (inputs
+     `(("apr" ,apr)
+       ("ffmpeg" ,ffmpeg)
+       ("freetype" ,freetype)
+       ("glib" ,glib)
+       ("glu" ,glu)
+       ("harfbuzz" ,harfbuzz)
+       ("libdrm" ,libdrm)
+       ("libusb" ,libusb)
+       ("libxkbcommon" ,libxkbcommon)
+       ("lua" ,luajit)
+       ("lzip" ,lzip)
+       ("openal" ,openal)
+       ("pcre" ,pcre)
+       ("sqlite" ,sqlite)
+       ("tesseract-ocr" ,tesseract-ocr)
+       ("leptonica" ,leptonica)
+       ("vlc" ,vlc)
+       ("arcan-openal" ,(origin
+                          (method git-fetch)
+                          (uri (git-reference
+                                (url "https://github.com/letoram/openal.git")
+                                (commit "1c7302c580964fee9ee9e1d89ff56d24f934bdef")))
+                          (sha256
+                           (base32
+                            "0dcxcnqjkyyqdr2yk84mprvkncy5g172kfs6vc4zrkklsbkr8yi2"))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("ruby" ,ruby)))                 ; For documentation and testing
+    (home-page "https://arcan-fe.com")
+    (synopsis "Combined display server, multimedia framework and game engine (egl-dri)")
+    (description "Arcan is a powerful development framework for creating virtually
+anything from user interfaces for specialized embedded applications
+all the way to full-blown desktop environments")
+    (license (list license:gpl2+
+                   license:lgpl2.0
+                   license:bsd-3))))
-- 
2.19.2