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
9 changed files with 42 additions and 102 deletions

View File

@ -40,7 +40,7 @@
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:substitutable? #f
#:wrapper-plan
#~'(("opt/vscodium/codium" (("out" "/opt/vscodium"))))
#~'("opt/vscodium/codium")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack

View File

@ -72,7 +72,14 @@
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'(("lib/Heroic/heroic" (("out" "/lib/Heroic"))))
#~'("lib/Heroic/heroic"
"lib/Heroic/libEGL.so"
"lib/Heroic/libGLESv2.so"
"lib/Heroic/libvk_swiftshader.so"
"lib/Heroic/libvulkan.so.1"
"lib/Heroic/chrome-sandbox"
"lib/Heroic/chrome_crashpad_handler"
"lib/Heroic/libffmpeg.so")
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -81,23 +88,18 @@
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
;; Remove unneeded files.
(delete-file-recursively "usr")))
;; Fix the .desktop file "Exec" line to just be "heroic" in
;; order for this desktop file to be useful to launch heroic in
;; the container (heroic package) as well.
(add-after 'patch-dot-desktop-files 'fix-desktop-file
(lambda _
(substitute*
(string-append #$output "/share/applications/heroic.desktop")
(("Exec=.*/heroic") "Exec=heroic"))))
(delete 'patch-dot-desktop-files)
(delete-file-recursively "usr")
;; Fix the .desktop file binary location.
(substitute* '("share/applications/heroic.desktop")
(("/opt/Heroic/")
(string-append #$output "/bin/")))))
(add-after 'install 'symlink-binary-file
(lambda _
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Heroic/heroic")
(string-append #$output "/bin/heroic")))))))
(home-page "https://heroicgameslauncher.com")
(synopsis "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
games from the Epic Games Store using Legendary, GOG Games using our custom
implementation with gogdl and Amazon Games using Nile.")
@ -169,12 +171,6 @@ implementation with gogdl and Amazon Games using Nile.")
("fontconfig" ,fontconfig) ; Required for steam client.
("file" ,file) ; Used for steam installation.
("find" ,findutils) ; Required at least for some logging.
("font-google-noto" ,font-google-noto) ; Not required but to match following fonts.
;; These next three fonts are to cover emoji and Chinese/Japanese/Korean
;; and related scripts.
("font-google-noto-emoji" ,font-google-noto-emoji)
("font-google-noto-sans-cjk" ,font-google-noto-sans-cjk)
("font-google-noto-serif-cjk" ,font-google-noto-serif-cjk)
("freetype" ,freetype) ; Required for steam login.
("gawk" ,gawk)
("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.

View File

@ -136,9 +136,6 @@ some freedo package or an output of package-version procedure."
"The unmodified Linux kernel, including nonfree blobs, for running Guix System
on hardware which requires nonfree software to function."))))
(define-public linux-6.13
(corrupt-linux linux-libre-6.13))
(define-public linux-6.12
(corrupt-linux linux-libre-6.12))
@ -279,7 +276,7 @@ distribution with custom settings and new features. It's built to provide a
stable, responsive and smooth desktop experience.")))
;; Linux-XanMod sources
(define-public linux-xanmod-version "6.12.13")
(define-public linux-xanmod-version "6.12.10")
(define-public linux-xanmod-revision "xanmod1")
(define-public linux-xanmod-source
(make-linux-xanmod-source
@ -287,7 +284,7 @@ stable, responsive and smooth desktop experience.")))
linux-xanmod-revision
#:xanmod-branch "main"
#:kernel-hash (base32 "1sr58vsh39hdwk0z27lg14isqwn4g8m4r7a8z2rsyhkfwlmmd8mi")
#:xanmod-hash (base32 "18a7hbm7gvf6b7wr84rszmpl1yb3mdgj2plv5627mv09dn87lvz2")))
#:xanmod-hash (base32 "1szi250nhj5j9km8q0z32hdf38kkl6kry5jh71dpc1ar0x1b26bd")))
(define-public linux-xanmod-lts-version "6.6.72")
(define-public linux-xanmod-lts-revision "xanmod1")
@ -318,14 +315,14 @@ stable, responsive and smooth desktop experience.")))
(define-public linux-firmware
(package
(name "linux-firmware")
(version "20250211")
(version "20250109")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/firmware/"
"linux-firmware-" version ".tar.xz"))
(sha256
(base32
"0z998nxplnc22nbj3yzdyjjs433p92rzvq2x5i9rv0xzjxc39q9d"))))
"0w0mclq20jcam6xl6jbil3n9vw74nqlvw0k7dkslnfck8y7v6b51"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f

View File

@ -4,7 +4,6 @@
;;; Copyright © 2022 Evgenii Lepikhin <johnlepikhin@gmail.com>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Raven Hallsby <karl@hallsby.org>
;;; Copyright © 2025 Ashish SHUKLA <ashish.is@lostca.se>
(define-module (nongnu packages messaging)
#:use-module (gnu packages base)
@ -52,7 +51,7 @@
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'(("lib/Element/element-desktop" (("out" "/lib/Element"))))
#~'("lib/Element/element-desktop")
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -83,7 +82,7 @@ its core.")
(define-public signal-desktop
(package
(name "signal-desktop")
(version "7.41.0")
(version "7.39.0")
(source
(origin
(method url-fetch)
@ -92,13 +91,13 @@ its core.")
"https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version
"_amd64.deb"))
(sha256
(base32 "1ainlhhzf427f0jqdh83m8519ywihnxyiw505n4msgyhpwgwj5n0"))))
(base32 "16xm74km0zmf1725knlzbl9j87ynzq7h37rqki6kmcnb3q7hgpf7"))))
(supported-systems '("x86_64-linux"))
(build-system chromium-binary-build-system)
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'(("lib/Signal/signal-desktop" (("out" "/lib/Signal"))))
#~'("lib/Signal/signal-desktop")
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd

View File

@ -14,7 +14,7 @@
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net>
;;; Copyright © 2020-2025 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020-2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
;;; Copyright © 2021, 2024 Brice Waegeneire <brice@waegenei.re>
@ -86,19 +86,19 @@
;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-esr-build-id "20250203132125")
(define %firefox-esr-build-id "20250106141840")
(define-public firefox-esr
(package
(name "firefox-esr")
(version "128.7.0esr")
(version "128.6.0esr")
(source
(origin
(method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(sha256
(base32 "1xwl6z8ax3dw5hjb5lwpl5641rmlizmfqs3xg74cnczsvm7bz9z0"))
(base32 "0245hrqmra5a3qhfj2jgq8ykvdabvnf48pjascfh419dw4y9v8xp"))
(patches
(map (lambda (patch)
(search-path
@ -185,11 +185,6 @@
;; XDG settings should be managed by Guix.
(write-setting "browser.shell.checkDefaultBrowser" "false")
;; It defaults to Google Location Services, but misses a necessary
;; API key.
(write-setting "geo.provider.network.url"
"\"https://api.beacondb.net/v1/geolocate\"")
(close-port port))))
(add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
(lambda* (#:key inputs #:allow-other-keys)
@ -551,13 +546,13 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-build-id "20250203132324")
(define %firefox-build-id "20250120192449")
(define-public firefox
(package
(inherit firefox-esr)
(name "firefox")
(version "135.0")
(version "134.0.2")
(source
(origin
(method url-fetch)
@ -573,7 +568,7 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
"firefox-esr-compare-paths.patch"
"firefox-use-system-wide-dir.patch")))
(sha256
(base32 "0q5r2q6q56kyzl5pknrir9bzlhmzbvv9hi5gi4852izgcali4zl2"))))
(base32 "09yxacfcklgjqbqvcac32llwmlb16d9jhfp2mif9qs7s2gzvfvkc"))))
(arguments
(substitute-keyword-arguments (package-arguments firefox-esr)
((#:phases phases)

View File

@ -89,9 +89,6 @@
"libnvidia-egl-gbm\\.so\\."
;; egl-wayland
"libnvidia-egl-wayland\\.so\\."
;; egl-x11
"libnvidia-egl-xcb\\.so\\."
"libnvidia-egl-xlib\\.so\\."
;; libglvnd
"libEGL\\.so\\."
"libGL\\.so\\."
@ -444,60 +441,29 @@ mainly used as a dependency of other packages. For user-facing purpose, use
(package
(inherit nvidia-driver)
(name "nvidia-driver-beta")
(version "570.86.16")
(version "565.57.01")
(source (nvidia-source
version "1mfbc59g5v1c6dqissg1mfawvaknqrr7r985214py92lnr5ylqs5"))
version "0yic33xx1b3jbgciphlwh6zqfj21vx9439zm0j45wf2yb17fksvf"))
(arguments
(substitute-keyword-arguments (package-arguments nvidia-driver)
((#:install-plan plan)
#~(append
#$plan
'(("." "share/egl/egl_external_platform.d/" #:include-regexp ("(xcb|xlib)\\.json$"))
("nvidia_icd_vksc.json" "etc/vulkansc/icd.d/")
("sandboxutils-filelist.json" "share/nvidia/files.d/"))))
#~(cons '("nvidia_icd_vksc.json" "etc/vulkansc/icd.d/")
#$plan))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'create-misc-files 'create-misc-files-for-beta
(lambda* (#:key inputs #:allow-other-keys)
;; EGL external platform configuraiton
(substitute* '("20_nvidia_xcb.json"
"20_nvidia_xlib.json")
(("libnvidia-egl-(xcb|xlib)\\.so\\.." all)
(search-input-file inputs (string-append "lib/" all))))
(lambda _
;; VulkanSC ICD configuration
(substitute* "nvidia_icd_vksc.json"
(("libnvidia-vksc-core\\.so\\.." all)
(string-append #$output "/lib/" all)))))
(add-after 'add-architecture-to-filename 'add-architecture-to-filename-for-beta
(lambda _
(for-each
(lambda (path)
(let* ((out #$output)
(system #$(or (%current-target-system)
(%current-system)))
(dash (string-index system #\-))
(arch (string-take system dash))
(dot (string-index-right path #\.))
(base (string-take path dot))
(ext (string-drop path (+ 1 dot))))
;; <...>/nvidia.icd -> <...>/nvidia.x86_64.icd
;; <...>/nvidia_icd.json -> <...>/nvidia_icd.x86_64.json
(rename-file
(string-append out path)
(string-append out base "." arch "." ext))))
'("/share/egl/egl_external_platform.d/20_nvidia_xcb.json"
"/share/egl/egl_external_platform.d/20_nvidia_xlib.json"))))
(add-after 'install-commands 'install-commands-for-beta
(lambda _
(when (string-match
"x86_64-linux"
(or #$(%current-target-system) #$(%current-system)))
(install-file "nvidia-pcc"
(string-append #$output "/bin")))))))))
(inputs
(modify-inputs (package-inputs nvidia-driver)
(prepend egl-x11)))))
(string-append #$output "/bin")))))))))))
(define-public nvidia-libs
(deprecated-package "nvidia-libs" nvidia-driver))
@ -720,10 +686,10 @@ configuration, creating application profiles, gpu monitoring and more.")
(package
(inherit nvidia-settings)
(name "nvidia-settings-beta")
(version "570.86.16")
(version "565.57.01")
(source (nvidia-settings-source
name version
"0gs5iml7yp5sd6vybj3alb6cg06ylljn4h7iwp2i1jhkms3nmfzn"))
"006my5a69689wkzjcg3k1y35ifmizfyfj4n7f02naxhbgrxq9fqz"))
(inputs
(modify-inputs (package-inputs nvidia-settings)
(prepend vulkan-headers)))))

View File

@ -54,12 +54,7 @@
#~(let ((patchelf-inputs
(list #$@(map car inputs))))
(map (lambda (file)
;; Either an entry in WRAPPER-PLAN is just a string which can be
;; used directly, or it is a list where the second element is a
;; list of additional inputs for patchelf-plan.
(if (list? file)
(cons (car file) (list (append patchelf-inputs (cadr file))))
(cons file (list patchelf-inputs))))
(cons file (list patchelf-inputs)))
#$wrapper-plan)))
(define* (lower name
@ -168,13 +163,7 @@
(substitutable? #t)
allowed-references
disallowed-references)
"Build SOURCE using binary-build-system. WRAPPER-PLAN is a list of strings for
files which patchelf will add the INPUTS (which implicitly includes the base
packages needed for chromium-based binaries) to RPATH and wrap with needed
environment variables. Optionally, an entry can be a list with the first
entry the file to be patched and the second a list of additional inputs for
patchelf, like PATCHELF-PLAN in binary-build-system. PATCHELF-PLAN itself is
ignored if WRAPPER-PLAN is not '()."
"Build SOURCE using binary-build-system."
(define builder
(with-imported-modules imported-modules
#~(begin

View File

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

View File

@ -570,9 +570,7 @@ application."
;; games). Wait to set this inside the container to not cause
;; issues on foreign distros, see
;; <https://gitlab.com/nonguix/nonguix/-/issues/303>
(setenv "LD_LIBRARY_PATH"
(string-append "/lib64:/lib:/lib64/nss:/lib/nss:"
"/lib64/vdpau:/lib/vdpau"))
(setenv "LD_LIBRARY_PATH" "/lib64:/lib:/lib64/vdpau:/lib/vdpau")
;; Process FHS-specific command line options.
(let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec))