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 (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:substitutable? #f #:substitutable? #f
#:wrapper-plan #:wrapper-plan
#~'("opt/vscodium/codium") #~'(("opt/vscodium/codium" (("out" "/opt/vscodium"))))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
@ -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,19 +67,12 @@
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
#:wrapper-plan #:wrapper-plan
#~'("lib/Heroic/heroic" #~'(("lib/Heroic/heroic" (("out" "/lib/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 #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -97,15 +90,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

@ -52,7 +52,7 @@
(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
#:wrapper-plan #:wrapper-plan
#~'("lib/Element/element-desktop") #~'(("lib/Element/element-desktop" (("out" "/lib/Element"))))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -70,15 +70,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
@ -106,7 +98,7 @@ its core.")
(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
#:wrapper-plan #:wrapper-plan
#~'("lib/Signal/signal-desktop") #~'(("lib/Signal/signal-desktop" (("out" "/lib/Signal"))))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -124,15 +116,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

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