From mboxrd@z Thu Jan 1 00:00:00 1970 From: L p R n d n Subject: Packaging Arcan Date: Fri, 23 Nov 2018 13:14:47 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37023) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gQ9QM-0004T3-T0 for guix-devel@gnu.org; Fri, 23 Nov 2018 06:15:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gQ9QJ-0004JS-KO for guix-devel@gnu.org; Fri, 23 Nov 2018 06:15:02 -0500 Received: from mout01.posteo.de ([185.67.36.141]:51199) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gQ9QJ-0004HK-8Q for guix-devel@gnu.org; Fri, 23 Nov 2018 06:14:59 -0500 Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id EE952160075 for ; Fri, 23 Nov 2018 12:14:51 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 431YcP2304z6tmR for ; Fri, 23 Nov 2018 12:14:44 +0100 (CET) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org --=-=-= Content-Type: text/plain Hello, I started to package Arcan[1], mostly for fun and trying to learn a bit more about Guile/Guix. (maybe hoping for guile bindings too. :D) It mostly works, at least builds, but a few questions arised so here I am. I join the current WIP patch just in case. 1. Using 'guix lint', I get the same error for all packages: 'the source file name should contain the package name' which I don't understand. So what's wrong? 2. Arcan server needs some ENV variables to be set to find all its components. After some search/tries, I ended up using wrap-program which works. But I stumbled upon 'search-paths' and 'native-search-paths' along the way. I looked in the manual but I still don't understand there concrete use. Can someone enlighten me? 3. Arcan uses patched versions of some softwares in certain cases (openal, qemu and xorg-server) which are all obtained throught dedicated git repositories. xorg-server seems okay as it mainly produces a binary called Xarcan. The two others are a little bit ore complicated 3.a. For qemu, I fear the produced binaries would conflict with the original ones. Is there something we can do in the build process to deal with that can of thing or sould we just expect the user deal with it on its own as Guix doest it very well on its own? 3.b. The patched openal is used during build to produce a special binary (arcan_lwa which allows nested servers). It should normally be fetched during build time which is obviously not possible here. I suppose there is no clear answer here but how would you deal with that kind of behaviour? Create a modified openal package? Can we fetch multiple sources? 4. Licenses seem quite complicated (see COPYING[2]). I added a list of licenses to the package for now. Is there a better way? By the way, if someone is interested by this package, every help is welcomed. ;) Thanks a lot, Lprndn [1] https://arcan-fe.com/ [2] https://github.com/letoram/arcan/blob/master/COPYING --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-Add-Arcan.patch >From 38315df876ba7e60ea078f428bcbfefd8570dd42 Mon Sep 17 00:00:00 2001 From: Lprndn Date: Fri, 23 Nov 2018 12:42:58 +0100 Subject: [PATCH] gnu: Add Arcan. --- gnu/packages/arcan.scm | 300 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 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..52b730fa5 --- /dev/null +++ b/gnu/packages/arcan.scm @@ -0,0 +1,300 @@ +(define-module (gnu packages arcan) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (guix utils) + + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages libusb) + #:use-module (gnu packages pcre) + #:use-module (gnu packages lua) + #:use-module (gnu packages sdl) + #:use-module (gnu packages audio) + #:use-module (gnu packages databases) + #:use-module (gnu packages apr) + #:use-module (gnu packages gtk) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages video) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages autotools) + #:use-module (gnu packages ocr) + #:use-module (gnu packages compression) + #:use-module (gnu packages tls) + #:use-module (gnu packages linux) + #:use-module (gnu packages xorg) + #:use-module (gnu packages freedesktop) + #:use-module (srfi srfi-1)) + + +(define-public arcan-sdl + (package + (name "arcan-sdl") + (version "0.5.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/letoram/arcan.git") + (commit "67231da5e736a045cfc0b8db4104351b6bea9774"))) + (sha256 + (base32 + "1ws9fpy6bg0xyblfjca0vyyz1hxm65l99xdfszx3xwa495mss9ix")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DVIDEO_PLATFORM=sdl" "-DBUILTIN_LUA=off" + "-DDISABLE_JIT=on" "-DENABLE_LWA=off" + "-DSTATIC_SQLITE3=off" "-DSTATIC_FREETYPE=off" + "-DSHMIF_TUI_ACCEL=on") + #:phases + (modify-phases %standard-phases + (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" ":" prefix + (,(string-append out "/share/arcan/resources"))) + `("ARCAN_BINPATH" ":" prefix + (,(string-append out "/bin"))) + `("ARCAN_SCRIPTPATH" ":" prefix + (,(string-append out "/share/arcan/scripts"))) + `("ARCAN_APPLBASEPATH" ":" prefix + (,(string-append out "/share/arcan/appl")))))))) + #:tests? #f)) + ;; (native-search-paths + ;; '((search-path-specification + ;; (variable "ARCAN_RESOURCEPATH") + ;; (files '("share/arcan/resources"))) + ;; (search-path-specification + ;; (variable "ARCAN_BINPATH") + ;; (files '("bin"))) + ;; (search-path-specification + ;; (variable "ARCANSCRIPTPATH") + ;; (files '("share/arcan/scripts"))) + ;; (search-path-specification + ;; (variable "ARCAN_APPLBASEPATH") + ;; (files '("share/arcan/appl"))))) + (inputs + `(("pcre" ,pcre) + ("glib" ,glib) + ("libusb" ,libusb) + ("lua" ,lua-5.1) + ("sdl" ,sdl) + ("vlc" ,vlc) + ("openal" ,openal) + ("sqlite" ,sqlite) + ("apr" ,apr) + ("harfbuzz" ,harfbuzz) + ("freetype" ,freetype) + ("lzip" ,lzip) + ("glu" ,glu) + ("libxkbcommon" ,libxkbcommon) + ("ffmpeg" ,ffmpeg) + ("tesseract-ocr" ,tesseract-ocr))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://arcan-fe.com") + (synopsis "Combined display server, multimedia framework and game engine (sdl)") + (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)))) + +(define-public arcan + (package + (inherit arcan-sdl) + (name "arcan") + (inputs + `(("libdrm" ,libdrm) + ,@(fold alist-delete (package-inputs arcan-sdl) + '("sdl")))) + (arguments + `(#:tests? #f + #:configure-flags '("-DVIDEO_PLATFORM=egl-dri" "-DBUILTIN_LUA=off" + "-DDISABLE_JIT=on" "-DENABLE_LWA=off" + "-DSTATIC_SQLITE3=off" "-DSTATIC_FREETYPE=off" + "-DSHMIF_TUI_ACCEL=on") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-harcoded-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-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" ":" prefix + (,(string-append out "/share/arcan/resources"))) + `("ARCAN_BINPATH" ":" prefix + (,(string-append out "/bin"))) + `("ARCAN_SCRIPTPATH" ":" prefix + (,(string-append out "/share/arcan/scripts"))) + `("ARCAN_APPLBASEPATH" ":" prefix + (,(string-append out "/share/arcan/appl")))))))))) + (synopsis "Combined display server, +multimedia framework and game engine (egl-dri)"))) + +(define-public xarcan + (package + (name "xarcan") + (version "0.5.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/letoram/xarcan.git") + (commit "8e6ee029388326cfe5cddeffe482eb3702e9b7f3"))) + (sha256 + (base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("util-macros" ,util-macros) + ("font-util" ,font-util) + ("xtrans" ,xtrans) + ("xkeyboard-config" ,xkeyboard-config))) + (inputs + `(("pixman" ,pixman) + ("libdrm" ,libdrm) + ("libx11" ,libx11) + ("mesa" ,mesa) + ("libressl" ,libressl) + ("libxfont2" ,libxfont2) + ("libkbfile" ,libxkbfile) + ("libepoxy" ,libepoxy) + ("arcan" ,arcan) + ("xorgproto" ,xorgproto))) + (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-output=" + "/tmp")) ; FIXME: This is a bit doubtful; where should + ; the compiled keyboard maps go? + + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'noconfigure + (lambda _ + (setenv "NOCONFIGURE" "true") + #t))))) + (home-page "https://arcan-fe.com") + (synopsis "Patched Xserver that bridges connections to Arcan") + (description "Patched Xserver that bridges connections to Arcan") + (license license:expat))) + +(define-public arcan-wayland + (package + (inherit arcan-sdl) + (name "arcan-wayland") + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libxkbcommon" ,libxkbcommon) + ("libseccomp" ,libseccomp) + ("arcan" ,arcan) + ("wayland" ,wayland) + ("wayland-protocols" ,wayland-protocols) + ("mesa" ,mesa))) + (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") (string-append (assoc-ref inputs "arcan") ""))) + #t))))) + (synopsis "Wayland protocol service for Arcan") + (description "Wayland protocol service for Arcan") + (license license:bsd-3))) + +(define-public aclip + (package + (name "aclip") + (version (package-version arcan)) + (source (package-source arcan)) + (build-system cmake-build-system) + (native-inputs + `(("arcan" ,arcan))) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir + (lambda _ + (chdir "src/tools/aclip") + #t)) + (add-after 'unpack 'fix-cmake-find-shmif + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake" + (("/usr/local") (string-append (assoc-ref inputs "arcan") ""))) + #t))))) + (home-page "https://arcan-fe.com") + (synopsis "Clipboard manager for Arcan") + (description "Clipboard manager for Arcan") + (license license:bsd-3))) + +(define-public aloadimage + (package + (name "aloadimage") + (version (package-version arcan)) + (source (package-source arcan)) + (build-system cmake-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("arcan" ,arcan) + ("libseccomp" ,libseccomp))) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir + (lambda _ + (chdir "src/tools/aloadimage") + #t)) + (add-after 'unpack 'fix-cmake-find-shmif + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake" + (("/usr/local") (string-append (assoc-ref inputs "arcan") ""))) + #t))))) + (home-page "https://arcan-fe.com") + (synopsis "Image viewer for Arcan") + (description "Image viewer for Arcan") + (license license:bsd-3))) -- 2.19.1 --=-=-=--