gnu: arcan: Fix paths handling.

This patch removes the wrapper and the propagated environment variables
(through 'native-search-paths') and instead patches the paths inside the
source code. This fixes path handling, which seems to be broken now. It
also allows us to use 'setuid', which is required for some features, and
lets the app use its internal path handling criteria, which some dependent
apps expect.

* gnu/packages/arcan.scm (arcan): Fix paths handling.
[arguments]: Add 'patch-paths' phase. Remove 'wrap-program' phase.
[native-search-paths]: Remove.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
Ahmad Draidi 2023-08-10 22:16:35 +04:00 committed by Maxim Cournoyer
parent 8bcf567c71
commit 2b6b951f55
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -83,6 +83,11 @@ (define-public arcan
"-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
@ -98,30 +103,8 @@ (define-public arcan
(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
`(("bash-minimal" ,bash-minimal)
("espeak" ,espeak)