Merge branch 'extend-wrapper-plan' into 'master'

nonguix: chromium-binary-build: Extend wrapper-plan syntax.

Closes #369

See merge request nonguix/nonguix!617
This commit is contained in:
podiki 2025-02-09 19:12:19 +00:00
commit 795f4ff70f
4 changed files with 23 additions and 51 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")
#~'(("opt/vscodium/codium" (("out" "/opt/vscodium"))))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
@ -83,15 +83,7 @@
#:startup-w-m-class "Code"
#:comment
'(("en" "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"))
":")))))))))
(#f "Code Editing. Redefined.")))))))))
(supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux"))
(native-inputs
(list tar))

View File

@ -58,7 +58,7 @@
(define heroic-client
(package
(name "heroic-client")
(version "2.14.1")
(version "2.15.2")
(source
(origin
(method url-fetch)
@ -67,19 +67,12 @@
version "/heroic_" version "_amd64.deb"))
(sha256
(base32
"17q8cylhyp48qmjrn6jx0fvpp84q4lb9qvgc99c9y7m31xp897nw"))))
"1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj"))))
(build-system chromium-binary-build-system)
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'("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")
#~'(("lib/Heroic/heroic" (("out" "/lib/Heroic"))))
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -97,15 +90,7 @@
(lambda _
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Heroic/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"))
":")))))))))
(string-append #$output "/bin/heroic")))))))
(home-page "https://heroicgameslauncher.com")
(synopsis "A Native GOG, Amazon and Epic Games Launcher")
(description "Heroic is an Open Source Game Launcher. Right now it supports launching

View File

@ -52,7 +52,7 @@
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'("lib/Element/element-desktop")
#~'(("lib/Element/element-desktop" (("out" "/lib/Element"))))
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -70,15 +70,7 @@
(lambda _
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Element/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"))
":")))))))))
(string-append #$output "/bin/element-desktop")))))))
(home-page "https://github.com/vector-im/element-desktop")
(synopsis "Matrix collaboration client for desktop")
(description "Element Desktop is a Matrix client for desktop with Element Web at
@ -106,7 +98,7 @@ its core.")
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'("lib/Signal/signal-desktop")
#~'(("lib/Signal/signal-desktop" (("out" "/lib/Signal"))))
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -124,15 +116,7 @@ its core.")
(lambda _
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Signal/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"))
":")))))))))
(string-append #$output "/bin/signal-desktop")))))))
(home-page "https://signal.org/")
(synopsis "Private messenger using the Signal protocol")
(description "Signal Desktop is an Electron application that links with Signal on Android

View File

@ -54,7 +54,12 @@
#~(let ((patchelf-inputs
(list #$@(map car inputs))))
(map (lambda (file)
(cons file (list patchelf-inputs)))
;; 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))))
#$wrapper-plan)))
(define* (lower name
@ -163,7 +168,13 @@
(substitutable? #t)
allowed-references
disallowed-references)
"Build SOURCE using binary-build-system."
"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 '()."
(define builder
(with-imported-modules imported-modules
#~(begin