summary refs log tree commit diff
path: root/gnu/packages/arcan.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/arcan.scm')
-rw-r--r--gnu/packages/arcan.scm366
1 files changed, 171 insertions, 195 deletions
diff --git a/gnu/packages/arcan.scm b/gnu/packages/arcan.scm
index 7483777ff0..4ca76edbec 100644
--- a/gnu/packages/arcan.scm
+++ b/gnu/packages/arcan.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 L  p R n  d n <guix@lprndn.info>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,151 +20,149 @@
 
 (define-module (gnu packages arcan)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
   #: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 autotools)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #: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 linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ocr)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages sdl)
+  #:use-module (gnu packages speech)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages vnc)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
   #:use-module (srfi srfi-1))
 
 (define-public arcan
-  (let ((commit "b4dd1fbd1938492ff4b269189d3c8524be7450a9")
-        (revision "1"))
-    (package
-      (name "arcan")
-      (version (git-version "0.5.5.2" revision commit))
-      (source (origin
-                (method git-fetch)
-                (file-name (git-file-name name version))
-                (uri (git-reference
-                      (url "https://github.com/letoram/arcan")
-                      (commit commit)))
-                (sha256
-                 (base32 "1pd0avlzc2rig1hd37zbhc7r2s6fjzdhshfg9l9cfzibl7caclyw"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:configure-flags '("-DCMAKE_C_FLAGS=-fcommon"
-                             "-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")
-                  (search-input-directory inputs "include/libdrm")))
-               (substitute* "src/platform/cmake/modules/FindAPR.cmake"
-                 (("/usr/local/apr/include/apr-1")
-                  (search-input-directory inputs "include/apr-1")))
-               #t))
-           ;; Normally, it tries to fetch patched openal with git
-           ;; but copying files manually in the right place seems to work too.
-           (add-after 'unpack 'prepare-static-openal
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((arcan-openal (assoc-ref inputs "arcan-openal")))
-                 (copy-recursively 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")))))
-               #t)))
-         #:tests? #f))
-      (native-search-paths
-       (list (search-path-specification
-              (variable "ARCAN_APPLBASEPATH")
-              (separator #f)
-              (files '("share/arcan/appl")))
-             (search-path-specification
-              (variable "ARCAN_SCRIPTPATH")
-              (separator #f)
-              (files '("share/arcan/scripts")))))
-      (inputs
-       `(("apr" ,apr)
-         ("ffmpeg" ,ffmpeg-4)
-         ("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)
-         ;;  To build arcan_lwa, we need a patched version of openal.
-         ;; https://github.com/letoram/arcan/wiki/packaging
-         ("arcan-openal" ,(origin
-                            (method git-fetch)
-                            (file-name "arcan-openal-0.5.4")
-                            (uri (git-reference
-                                  (url "https://github.com/letoram/openal")
-                                  (commit "1c7302c580964fee9ee9e1d89ff56d24f934bdef")))
-                            (sha256
-                             (base32
-                              "0dcxcnqjkyyqdr2yk84mprvkncy5g172kfs6vc4zrkklsbkr8yi2"))))))
-      (native-inputs
-       (list pkg-config ruby))               ; For documentation and testing
-      (home-page "https://arcan-fe.com")
-      (synopsis "Display server, multimedia framework and game engine (egl-dri)")
-      (description "Arcan is a development framework for creating virtually
+  (package
+    (name "arcan")
+    (version "0.6.2.1")
+    (source (origin
+              (method git-fetch)
+              (file-name (git-file-name name version))
+              (uri (git-reference
+                    (url "https://github.com/letoram/arcan")
+                    (commit version)))
+              (sha256
+               (base32
+                "14wwb7mgq8ab39dfprps7hzdz7a37r3cl8dc5q6m1r8n5daxyzgc"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Remove some bundled packages.
+               #~(begin
+                   (delete-file-recursively "external/git")
+                   (delete-file-recursively "external/lua")
+                   (delete-file-recursively "external/sqlite")))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:configure-flags #~'("-DBUILD_PRESET=everything"
+                                 "-DDISTR_TAG='Guix'")
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'patch-paths
+                          (lambda* (#:key outputs #:allow-other-keys)
+                            (substitute* "src/platform/posix/paths.c"
+                              (("/usr/local")
+                               (assoc-ref outputs "out")))))
+                        ;; Normally, it tries to fetch patched openal with git
+                        ;; but copying files manually in the right place seems
+                        ;; to work too.
+                        (add-after 'unpack 'prepare-static-openal
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (let ((arcan-openal (assoc-ref inputs
+                                                           "arcan-openal")))
+                              (copy-recursively 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)))
+           #:tests? #f))
+    (inputs `(("bash-minimal" ,bash-minimal)
+              ("espeak" ,espeak)
+              ("ffmpeg" ,ffmpeg)
+              ("freetype" ,freetype)
+              ("gumbo-parser" ,gumbo-parser)
+              ("harfbuzz" ,harfbuzz)
+              ("jbig2dec" ,jbig2dec)
+              ("leptonica" ,leptonica)
+              ("libdrm" ,libdrm)
+              ("libjpeg-turbo" ,libjpeg-turbo)
+              ("libseccomp" ,libseccomp)
+              ("libusb" ,libusb)
+              ("libvnc" ,libvnc)
+              ("libxkbcommon" ,libxkbcommon)
+              ("luajit" ,luajit)
+              ("mupdf" ,mupdf)
+              ("openal" ,openal)
+              ("openjpeg" ,openjpeg)
+              ("sdl2" ,sdl2)
+              ("sqlite" ,sqlite)
+              ("tesseract-ocr" ,tesseract-ocr)
+              ("vlc" ,vlc)
+              ("wayland" ,wayland)
+              ("wayland-protocols" ,wayland-protocols)
+              ("xcb-util" ,xcb-util)
+              ("xcb-util-wm" ,xcb-util-wm)
+              ("zlib" ,zlib)
+              ;; To build arcan_lwa, we need a patched version of openal.
+              ;; https://github.com/letoram/arcan/wiki/packaging
+              ("arcan-openal"
+               ,(origin
+                  (method git-fetch)
+                  (file-name "arcan-openal-0.6.2")
+                  (uri (git-reference (url
+                                       "https://github.com/letoram/openal")
+                                      (commit "0.6.2")))
+                  (sha256
+                   (base32
+                    "0vg3fda47q2dk1n43ijcc64q39z044pa8h6scmfyi22g6r6bfw2z"))))))
+    (native-inputs (list pkg-config ruby)) ;For documentation and testing
+    (home-page "https://arcan-fe.com")
+    (synopsis "Display server, multimedia framework and game engine")
+    (description
+     "Arcan is a development framework for creating virtually
 anything from user interfaces for specialized embedded applications
 all the way to full-blown desktop environments.  At its heart lies a multimedia
-engine programmable using Lua.")
-      ;; https://github.com/letoram/arcan/blob/master/COPYING
-      (license (list license:gpl2+
-                     license:lgpl2.0
-                     license:lgpl2.0+
-                     license:public-domain
-                     license:bsd-3)))))
+engine with a Lua scripting interface.")
+    ;; https://github.com/letoram/arcan/blob/master/COPYING
+    (license (list license:asl2.0
+                   license:bsd-3
+                   license:cc-by3.0
+                   license:expat
+                   license:gpl2+
+                   license:lgpl2.0
+                   license:lgpl2.0+
+                   license:public-domain
+                   license:silofl1.1
+                   license:zlib))))
 
 (define-public arcan-sdl
   (package
@@ -185,90 +184,67 @@ engine programmable using Lua.")
     (synopsis "Combined display server, multimedia framework and game engine (SDL)")))
 
 (define-public xarcan
-  (let ((commit "8e6ee029388326cfe5cddeffe482eb3702e9b7f3")
-        (revision "1" ))
-    (package
-      (name "xarcan")
-      (version (git-version "0.5.4" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (file-name (git-file-name name version))
-         (uri (git-reference
-               (url "https://github.com/letoram/xarcan")
-               (commit commit)))
-         (sha256
-          (base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:configure-flags
-         `("--enable-kdrive" "--enable-xarcan"
-           "--disable-xorg" "--disable-xwayland"
-           "--disable-xnest" "--disable-xvfb"
-           "--enable-glamor" "--enable-glx"
-           "--disable-int10-module" "--enable-ipv6"
-           "--enable-record" "--without-systemd-daemon"
-           "--enable-xcsecurity" "--disable-static"
-           ,(string-append "--with-xkb-path="
-                           (assoc-ref %build-inputs "xkeyboard-config")
-                           "/share/X11/xkb")
-           ,(string-append "--with-xkb-bin-directory="
-                           (assoc-ref %build-inputs "xkbcomp")
-                           "/bin")
-           ,(string-append "--with-xkb-output="
-                           "/tmp"))))   ; FIXME: Copied from xorg
-      (native-inputs
-       (list pkg-config autoconf automake libtool util-macros))
-      (inputs
-       `(("arcan" ,arcan)
-         ("font-util" ,font-util)
-         ("libdrm" ,libdrm)
-         ("libepoxy" ,libepoxy)
-         ("libkbfile" ,libxkbfile)
-         ("libressl" ,libressl)
-         ("libx11" ,libx11)
-         ("libxfont2" ,libxfont2)
-         ("mesa" ,mesa)
-         ("pixman" ,pixman)
-         ("xkeyboard-config" ,xkeyboard-config)
-         ("xkbcomp" ,xkbcomp)
-         ("xorgproto" ,xorgproto)
-         ("xtrans" ,xtrans)))
-      (home-page "https://arcan-fe.com")
-      (synopsis "Patched Xserver that bridges connections to Arcan")
-      (description "Patched Xserver with a KDrive backend that uses the arcan-shmif
- to map Xlib/Xcb/X clients to a running arcan instance.  It allows running an X session
-as a window under Arcan.")
-      (license license:expat))))
-
-(define-public arcan-wayland
   (package
-    (inherit arcan)
-    (name "arcan-wayland")
+    (name "xarcan")
+    (version "0.6.1")
+    (source
+     (origin
+       (method git-fetch)
+       (file-name (git-file-name name version))
+       (uri (git-reference
+             (url "https://github.com/letoram/xarcan")
+             (commit version)))
+       (sha256
+        (base32 "1z4sf101i2y6rg2vcxfwmp1nkzfa3rw1pp48ym1ds1ka513vy128"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list
+         "-Dglamor=true" "-Dint10=false"
+         "-Dipv6=true"
+         "-Dsystemd_logind=false"
+
+         ;; The following arguments were taken from the Xwayland package.
+
+         ;; The build system insist on providing a default font path; give
+         ;; that of dejavu, the same used for our fontconfig package.
+         (string-append "-Ddefault_font_path="
+                        #$(this-package-input "font-dejavu") "/share/fonts")
+         (string-append "-Dxkb_dir=" #$(this-package-input "xkeyboard-config")
+                        "/share/X11/xkb")
+         (string-append "-Dxkb_bin_dir=" #$(this-package-input "xkbcomp")
+                        "/bin")
+         (format #f "-Dbuilder_string=\"Build ID: ~a ~a\"" #$name #$version))))
     (native-inputs
-     (list pkg-config))
+     (list pkg-config autoconf automake libtool util-macros))
     (inputs
      (list arcan
-           libseccomp
-           libxkbcommon
+           font-dejavu
+           font-util
+           libdrm
+           libepoxy
+           libtirpc
+           libx11
+           libxfont2
+           libxkbfile
+           libxshmfence
            mesa
-           wayland
-           wayland-protocols))
-    (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'chdir
-           (lambda _
-             (chdir "src/tools/waybridge")
-             #t))
-         (add-after 'unpack 'fix-cmake-find-shmif
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake"
-               (("/usr/local") (assoc-ref inputs "arcan")))
-             #t)))))
-    (synopsis "Wayland protocol service for Arcan")
-    (description "Arcan-wayland (waybridge) bridges Wayland connections
-with an Arcan connection point.  It allows Wayland compatible clients
-to connect and render using Arcan.")
-    (license license:bsd-3)))
+           openssl
+           pixman
+           xcb-util
+           xcb-util-wm
+           xkbcomp
+           xkeyboard-config
+           xorgproto
+           xtrans))
+    (home-page "https://arcan-fe.com")
+    (synopsis "Patched Xserver that bridges connections to Arcan")
+    (description "Patched Xserver with a KDrive backend that uses the arcan-shmif
+ to map Xlib/Xcb/X clients to a running arcan instance.  It allows running an X session
+as a window under Arcan.")
+    (license (list license:bsd-3 license:expat))))
+
+;; Package was merged into arcan in upstream.
+(define-public arcan-wayland
+  (deprecated-package "arcan-wayland" arcan))