Compare commits

...

2 Commits

Author SHA1 Message Date
John Kehayias
ca5775fab9
nongnu: heroic-client: Update to 2.15.2.
* nongnu/packages/game-client.scm (heroic-client): Update to 2.15.2.
2025-02-03 15:58:13 -05:00
John Kehayias
e65677969e
nonguix: binary-build-system: Use add-rpath instead of set-rpath.
Fixes #369.

Previously we were using "patchelf --set-rpath" in binary-build-system for
binaries to find dependencies in Guix.  However, this will override any
previous setting, including if "$ORIGIN" was in RUNPATH.

For Electron applications specifically (like signal-desktop and heroic),
bundled libraries were not found without wrapping with LD_LIBRARY_PATH.  While
this does work, it is not ideal and led to issues in child processes that
inherit LD_LIBRARY_PATH, namely breaking games using Wine/Proton in Heroic.

A possible consequence of this commit is that Guix added paths to RUNPATH are
after what was originally set, perhaps leading to library
loading/compatibility issues.  However, we always try to replace all needed
libraries with Guix packages (just that Electron applications seem to require
bundled libraries in $ORIGIN).

* nonguix/build/binary-build-system.scm (patchelf): Use add-rpath instead of set-rpath.
* nongnu/packages/game-client.scm (heroic-client)[arguments]<#:phases>: Remove
'wrap-where-patchelf-does-not-work phase as it is no longer needed (needed
libraries are found with $ORIGIN preserved in RUNPATH).
* nongnu/packages/messaging.scm (element-desktop, signal-desktop): Likewise.
* nongnu/packages/editors.scm (vscodium): Likewise.
2025-02-03 15:57:36 -05:00
4 changed files with 7 additions and 39 deletions

View File

@ -83,15 +83,7 @@
#:startup-w-m-class "Code" #:startup-w-m-class "Code"
#:comment #:comment
'(("en" "Code Editing. Redefined.") '(("en" "Code Editing. Redefined.")
(#f "Code Editing. Redefined.")))))) (#f "Code Editing. Redefined.")))))))))
(add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
(lambda _
(wrap-program (string-append #$output "/bin/codium")
`("LD_LIBRARY_PATH" ":"
prefix
(,(string-join
(list (string-append #$output "/opt/vscodium"))
":")))))))))
(supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux")) (supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux"))
(native-inputs (native-inputs
(list tar)) (list tar))

View File

@ -58,7 +58,7 @@
(define heroic-client (define heroic-client
(package (package
(name "heroic-client") (name "heroic-client")
(version "2.14.1") (version "2.15.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -67,7 +67,7 @@
version "/heroic_" version "_amd64.deb")) version "/heroic_" version "_amd64.deb"))
(sha256 (sha256
(base32 (base32
"17q8cylhyp48qmjrn6jx0fvpp84q4lb9qvgc99c9y7m31xp897nw")))) "1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj"))))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
@ -97,15 +97,7 @@
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Heroic/heroic") (symlink (string-append #$output "/lib/Heroic/heroic")
(string-append #$output "/bin/heroic")))) (string-append #$output "/bin/heroic")))))))
(add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
(lambda _
(wrap-program (string-append #$output "/lib/Heroic/heroic")
`("LD_LIBRARY_PATH" ":" prefix
(,(string-join
(list
(string-append #$output "/lib/Heroic"))
":")))))))))
(home-page "https://heroicgameslauncher.com") (home-page "https://heroicgameslauncher.com")
(synopsis "A Native GOG, Amazon and Epic Games Launcher") (synopsis "A Native GOG, Amazon and Epic Games Launcher")
(description "Heroic is an Open Source Game Launcher. Right now it supports launching (description "Heroic is an Open Source Game Launcher. Right now it supports launching

View File

@ -69,15 +69,7 @@
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Element/element-desktop") (symlink (string-append #$output "/lib/Element/element-desktop")
(string-append #$output "/bin/element-desktop")))) (string-append #$output "/bin/element-desktop")))))))
(add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
(lambda _
(wrap-program (string-append #$output "/lib/Element/element-desktop")
`("LD_LIBRARY_PATH" ":" prefix
(,(string-join
(list
(string-append #$output "/lib/Element"))
":")))))))))
(home-page "https://github.com/vector-im/element-desktop") (home-page "https://github.com/vector-im/element-desktop")
(synopsis "Matrix collaboration client for desktop") (synopsis "Matrix collaboration client for desktop")
(description "Element Desktop is a Matrix client for desktop with Element Web at (description "Element Desktop is a Matrix client for desktop with Element Web at
@ -123,15 +115,7 @@ its core.")
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Signal/signal-desktop") (symlink (string-append #$output "/lib/Signal/signal-desktop")
(string-append #$output "/bin/signal-desktop")))) (string-append #$output "/bin/signal-desktop")))))))
(add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
(lambda _
(wrap-program (string-append #$output "/lib/Signal/signal-desktop")
`("LD_LIBRARY_PATH" ":" prefix
(,(string-join
(list
(string-append #$output "/lib/Signal"))
":")))))))))
(home-page "https://signal.org/") (home-page "https://signal.org/")
(synopsis "Private messenger using the Signal protocol") (synopsis "Private messenger using the Signal protocol")
(description "Signal Desktop is an Electron application that links with Signal on Android (description "Signal Desktop is an Electron application that links with Signal on Android

View File

@ -113,7 +113,7 @@ The inputs are optional when the file is an executable."
(make-rpath name))) (make-rpath name)))
runpath) runpath)
":"))) ":")))
(invoke "patchelf" "--set-rpath" rpath binary))) (invoke "patchelf" "--add-rpath" rpath binary)))
#t) #t)
(display "Using patchelf version: ") (display "Using patchelf version: ")