gnu: libdvdcss: Update to 1.4.3.
[jackhill/guix/guix.git] / gnu / packages / arcan.scm
CommitLineData
e3209973
L
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 L p R n d n <guix@lprndn.info>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages arcan)
20 #:use-module (guix build-system cmake)
38ffa53e 21 #:use-module (guix build-system gnu)
e3209973
L
22 #:use-module (guix git-download)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix packages)
c3644813 25 #:use-module (guix utils)
e3209973
L
26 #:use-module (gnu packages apr)
27 #:use-module (gnu packages audio)
38ffa53e 28 #:use-module (gnu packages autotools)
e3209973
L
29 #:use-module (gnu packages compression)
30 #:use-module (gnu packages databases)
31 #:use-module (gnu packages fontutils)
b9c88c22 32 #:use-module (gnu packages freedesktop)
e3209973
L
33 #:use-module (gnu packages gl)
34 #:use-module (gnu packages glib)
35 #:use-module (gnu packages gtk)
36 #:use-module (gnu packages image)
37 #:use-module (gnu packages libusb)
b9c88c22 38 #:use-module (gnu packages linux)
e3209973
L
39 #:use-module (gnu packages lua)
40 #:use-module (gnu packages ocr)
41 #:use-module (gnu packages pcre)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages ruby)
c3644813 44 #:use-module (gnu packages sdl)
e3209973 45 #:use-module (gnu packages sqlite)
38ffa53e 46 #:use-module (gnu packages tls)
e3209973 47 #:use-module (gnu packages video)
c3644813 48 #:use-module (gnu packages xdisorg)
38ffa53e 49 #:use-module (gnu packages xorg)
c3644813 50 #:use-module (srfi srfi-1))
e3209973
L
51
52(define-public arcan
53 (let ((commit "b4dd1fbd1938492ff4b269189d3c8524be7450a9")
54 (revision "1"))
55 (package
56 (name "arcan")
57 (version (git-version "0.5.5.2" revision commit))
58 (source (origin
59 (method git-fetch)
60 (file-name (git-file-name name version))
61 (uri (git-reference
b0e7b699 62 (url "https://github.com/letoram/arcan")
e3209973
L
63 (commit commit)))
64 (sha256
65 (base32 "1pd0avlzc2rig1hd37zbhc7r2s6fjzdhshfg9l9cfzibl7caclyw"))))
66 (build-system cmake-build-system)
67 (arguments
68 `(#:configure-flags '("-DVIDEO_PLATFORM=egl-dri" "-DBUILTIN_LUA=off"
69 "-DSTATIC_OPENAL=off""-DENABLE_LWA=on"
70 "-DSTATIC_SQLITE3=off" "-DSTATIC_FREETYPE=off"
71 "-DSHMIF_TUI_ACCEL=on")
72 #:phases
73 (modify-phases %standard-phases
74 (add-after 'unpack 'fix-cmake-paths
75 (lambda* (#:key inputs #:allow-other-keys)
76 (substitute* "src/platform/cmake/modules/FindGBMKMS.cmake"
77 (("/usr/local/include/libdrm")
78 (string-append (assoc-ref inputs "libdrm")
79 "/include/libdrm")))
80 (substitute* "src/platform/cmake/modules/FindAPR.cmake"
81 (("/usr/local/apr/include/apr-1")
82 (string-append (assoc-ref inputs "apr")
83 "/include/apr-1")))
84 #t))
85 ;; Normally, it tries to fetch patched openal with git
86 ;; but copying files manually in the right place seems to work too.
87 (add-after 'unpack 'prepare-static-openal
88 (lambda* (#:key inputs #:allow-other-keys)
89 (let ((arcan-openal (assoc-ref inputs "arcan-openal")))
90 (copy-recursively arcan-openal "external/git/openal"))
91 #t))
92 (add-after 'prepare-static-openal 'generate-man
93 (lambda _
94 (with-directory-excursion "doc"
95 (invoke "ruby" "docgen.rb" "mangen"))
96 #t))
97 (add-before 'configure 'chdir
98 (lambda _
99 (chdir "src")
100 #t))
101 (add-after 'install 'wrap-program
102 (lambda* (#:key outputs #:allow-other-keys)
103 (let ((out (assoc-ref outputs "out")))
104 (wrap-program (string-append out "/bin/arcan")
105 `("ARCAN_RESOURCEPATH" ":" suffix
106 (,(string-append out "/share/arcan/resources")))
107 `("ARCAN_STATEBASEPATH" ":" =
108 ("$HOME/.arcan/resources/savestates"))
109 `("ARCAN_STATEPATH" ":" =
110 ("$HOME/.arcan/resources/savestates"))
111 `("ARCAN_BINPATH" ":" =
112 (,(string-append out "/bin/arcan_frameserver")))))
113 #t)))
114 #:tests? #f))
115 (native-search-paths
116 (list (search-path-specification
117 (variable "ARCAN_APPLBASEPATH")
118 (separator #f)
119 (files '("share/arcan/appl")))
120 (search-path-specification
121 (variable "ARCAN_SCRIPTPATH")
122 (separator #f)
123 (files '("share/arcan/scripts")))))
124 (inputs
125 `(("apr" ,apr)
126 ("ffmpeg" ,ffmpeg)
127 ("freetype" ,freetype)
128 ("glib" ,glib)
129 ("glu" ,glu)
130 ("harfbuzz" ,harfbuzz)
131 ("libdrm" ,libdrm)
132 ("libusb" ,libusb)
133 ("libxkbcommon" ,libxkbcommon)
134 ("lua" ,luajit)
135 ("lzip" ,lzip)
136 ("openal" ,openal)
137 ("pcre" ,pcre)
138 ("sqlite" ,sqlite)
139 ("tesseract-ocr" ,tesseract-ocr)
140 ("leptonica" ,leptonica)
141 ("vlc" ,vlc)
142 ;; To build arcan_lwa, we need a patched version of openal.
143 ;; https://github.com/letoram/arcan/wiki/packaging
144 ("arcan-openal" ,(origin
145 (method git-fetch)
146 (file-name "arcan-openal-0.5.4")
147 (uri (git-reference
b0e7b699 148 (url "https://github.com/letoram/openal")
e3209973
L
149 (commit "1c7302c580964fee9ee9e1d89ff56d24f934bdef")))
150 (sha256
151 (base32
152 "0dcxcnqjkyyqdr2yk84mprvkncy5g172kfs6vc4zrkklsbkr8yi2"))))))
153 (native-inputs
154 `(("pkg-config" ,pkg-config)
155 ("ruby" ,ruby))) ; For documentation and testing
156 (home-page "https://arcan-fe.com")
157 (synopsis "Display server, multimedia framework and game engine (egl-dri)")
158 (description "Arcan is a development framework for creating virtually
159anything from user interfaces for specialized embedded applications
160all the way to full-blown desktop environments. At its heart lies a multimedia
161engine programmable using Lua.")
162 ;; https://github.com/letoram/arcan/blob/master/COPYING
163 (license (list license:gpl2+
164 license:lgpl2.0
165 license:lgpl2.0+
166 license:public-domain
167 license:bsd-3)))))
c3644813
L
168
169(define-public arcan-sdl
170 (package
171 (inherit arcan)
172 (name "arcan-sdl")
173 (inputs
174 `(("sdl" ,sdl)
175 ,@(fold alist-delete (package-inputs arcan)
176 '("libdrm"))))
177 (arguments
178 `(,@(ensure-keyword-arguments
179 (package-arguments arcan)
180 '(#:configure-flags
181 '("-DVIDEO_PLATFORM=sdl" "-DBUILTIN_LUA=off"
182 "-DSTATIC_OPENAL=off" "-DDISABLE_JIT=off"
183 "-DENABLE_LWA=on" "-DSTATIC_SQLITE3=off"
184 "-DSTATIC_FREETYPE=off" "-DSHMIF_TUI_ACCEL=on")))))
185 (synopsis "Combined display server, multimedia framework and game engine (SDL)")))
38ffa53e
L
186
187(define-public xarcan
188 (let ((commit "8e6ee029388326cfe5cddeffe482eb3702e9b7f3")
189 (revision "1" ))
190 (package
191 (name "xarcan")
192 (version (git-version "0.5.4" revision commit))
193 (source
194 (origin
195 (method git-fetch)
196 (file-name (git-file-name name version))
197 (uri (git-reference
b0e7b699 198 (url "https://github.com/letoram/xarcan")
38ffa53e
L
199 (commit commit)))
200 (sha256
201 (base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym"))))
202 (build-system gnu-build-system)
203 (arguments
204 `(#:configure-flags
205 `("--enable-kdrive" "--enable-xarcan"
206 "--disable-xorg" "--disable-xwayland"
207 "--disable-xnest" "--disable-xvfb"
208 "--enable-glamor" "--enable-glx"
209 "--disable-int10-module" "--enable-ipv6"
210 "--enable-record" "--without-systemd-daemon"
211 "--enable-xcsecurity" "--disable-static"
212 ,(string-append "--with-xkb-path="
213 (assoc-ref %build-inputs "xkeyboard-config")
214 "/share/X11/xkb")
215 ,(string-append "--with-xkb-bin-directory="
216 (assoc-ref %build-inputs "xkbcomp")
217 "/bin")
218 ,(string-append "--with-xkb-output="
778d6b52 219 "/tmp")))) ; FIXME: Copied from xorg
38ffa53e
L
220 (native-inputs
221 `(("pkg-config" ,pkg-config)
222 ("autoconf" ,autoconf)
223 ("automake" ,automake)
224 ("libtool" ,libtool)
225 ("util-macros" ,util-macros)))
226 (inputs
227 `(("arcan" ,arcan)
228 ("font-util" ,font-util)
229 ("libdrm" ,libdrm)
230 ("libepoxy" ,libepoxy)
231 ("libkbfile" ,libxkbfile)
232 ("libressl" ,libressl)
233 ("libx11" ,libx11)
234 ("libxfont2" ,libxfont2)
235 ("mesa" ,mesa)
236 ("pixman" ,pixman)
237 ("xkeyboard-config" ,xkeyboard-config)
238 ("xkbcomp" ,xkbcomp)
239 ("xorgproto" ,xorgproto)
240 ("xtrans" ,xtrans)))
241 (home-page "https://arcan-fe.com")
242 (synopsis "Patched Xserver that bridges connections to Arcan")
243 (description "Patched Xserver with a KDrive backend that uses the arcan-shmif
244 to map Xlib/Xcb/X clients to a running arcan instance. It allows running an X session
245as a window under Arcan.")
246 (license license:expat))))
b9c88c22
L
247
248(define-public arcan-wayland
249 (package
250 (inherit arcan)
251 (name "arcan-wayland")
252 (native-inputs
253 `(("pkg-config" ,pkg-config)))
254 (inputs
255 `(("arcan" ,arcan)
256 ("libseccomp" ,libseccomp)
257 ("libxkbcommon" ,libxkbcommon)
258 ("mesa" ,mesa)
259 ("wayland" ,wayland)
260 ("wayland-protocols" ,wayland-protocols)))
261 (arguments
262 `(#:tests? #f
263 #:phases
264 (modify-phases %standard-phases
265 (add-before 'configure 'chdir
266 (lambda _
267 (chdir "src/tools/waybridge")
268 #t))
269 (add-after 'unpack 'fix-cmake-find-shmif
270 (lambda* (#:key inputs #:allow-other-keys)
271 (substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake"
272 (("/usr/local") (assoc-ref inputs "arcan")))
273 #t)))))
274 (synopsis "Wayland protocol service for Arcan")
275 (description "Arcan-wayland (waybridge) bridges Wayland connections
276with an Arcan connection point. It allows Wayland compatible clients
277to connect and render using Arcan.")
278 (license license:bsd-3)))