Merge branch 'zoom-update' into 'master'

Draft: nongnu: zoom: Update to 6.3.6.6315.

See merge request nonguix/nonguix!616
This commit is contained in:
Raven Hallsby 2025-09-23 13:26:47 -05:00
commit cfb622152e

View file

@ -9,9 +9,11 @@
(define-module (nongnu packages messaging) (define-module (nongnu packages messaging)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages cups) #:use-module (gnu packages cups)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -21,6 +23,7 @@
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages nss) #:use-module (gnu packages nss)
#:use-module (gnu packages pulseaudio) #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages qt)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
@ -132,17 +135,19 @@ or iOS.")
'((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases"))) '((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases")))
(license license:agpl3))) (license license:agpl3)))
;; NOTE: Zoom has a HARD DEPENDENCY on $DISPLAY to open something to display on,
;;at least on X11 desktops.
(define-public zoom (define-public zoom
(package (package
(name "zoom") (name "zoom")
(version "5.17.5.2543") (version "6.2.11.5069")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz")) (uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz"))
(file-name (string-append name "-" version "-x86_64.tar.xz")) (file-name (string-append name "-" version "-x86_64.tar.xz"))
(sha256 (sha256
(base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim")))) (base32 "09l9jfmld1dlinkgdgf8ra549rw1hwis3b5cly49a2gvz1sfr8lc"))))
(supported-systems '("x86_64-linux")) (supported-systems '("x86_64-linux"))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
@ -151,19 +156,22 @@ or iOS.")
;; Note: it seems like some (all?) of these only do anything in ;; Note: it seems like some (all?) of these only do anything in
;; LD_LIBRARY_PATH, or at least needed there as well. ;; LD_LIBRARY_PATH, or at least needed there as well.
#~(let ((libs '("alsa-lib" #~(let ((libs '("alsa-lib"
"atk"
"at-spi2-atk" "at-spi2-atk"
"at-spi2-core" "at-spi2-core"
"atk"
"cairo" "cairo"
"cups" "cups"
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"fontconfig-minimal" "fontconfig-minimal"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"gtk+" "gtk+"
"libdrm" "libdrm"
;; "libglvnd"
"libx11" "libx11"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
@ -180,18 +188,35 @@ or iOS.")
"mesa" "mesa"
"nspr" "nspr"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib"))) "zlib")))
`(("lib/zoom/ZoomLauncher" `(("lib/zoom/ZoomLauncher" ,libs)
,libs) ;; ("lib/zoom/zoom" ,libs)
("lib/zoom/zoom" ("lib/zoom/zopen" ,libs)
,libs) ("lib/zoom/aomhost" ,libs)
("lib/zoom/zopen" ("lib/zoom/cef/libEGL.so" ,libs)
,libs) ("lib/zoom/cef/libffmpeg.so" ,libs)
("lib/zoom/aomhost" ("lib/zoom/cef/libGLESv2.so" ,libs)
,libs))) ("lib/zoom/cef/libsqlite3.so.0" ,libs)
("lib/zoom/cef/libvk_swiftshader.so" ,libs)
("lib/zoom/cef/libvulkan.so.1" ,libs)))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
@ -200,6 +225,45 @@ or iOS.")
;; Use the more standard lib directory for everything. ;; Use the more standard lib directory for everything.
(mkdir-p "lib") (mkdir-p "lib")
(rename-file "zoom/" "lib/zoom"))) (rename-file "zoom/" "lib/zoom")))
(add-before 'patchelf 'zoom-dynamic-linker-shenanigans
(lambda* (#:key inputs #:allow-other-keys)
;; (format #t "CWD=~a~%" (getcwd))
(with-directory-excursion "lib/zoom"
(copy-file "zoom" ".zoom")
(delete-file "zoom")
(copy-file (car (find-files (assoc-ref inputs "libc")
"ld-linux.*\\.so"))
"ld.so")
;; We're going to do something super fucked, but this made
;; Zoom work on nixpkgs.
;; We are going to do a fake wrap-program to set the exec
;; line manually, then rely on the later calls to
;; (guix build utils) version of wrap-program to add the
;; environment variables we want.
;; This is a workaround because Guix's wrap-program does
;; not let us change the actual exec line in the generated
;; wrapper script and we cannot use patchelf on the zoom
;; binary from the tarball because that magically breaks
;; things.
(let* ((prog ".zoom")
(prog-tmp (string-append prog "-tmp"))
(wrapped-file "zoom"))
(link prog wrapped-file)
(call-with-output-file prog-tmp
(lambda (port)
(format port
"#!~a~%exec \"~a\" \"~a\" \"$@\"~%"
(which "bash")
(string-append #$output "/lib/zoom/ld.so")
(string-append #$output "/lib/zoom/" prog))))
(chmod prog-tmp #o755)
(rename-file prog-tmp wrapped-file)
;; Lastly, we need to leave a file that LOOKS like we
;; have already wrapped lib/zoom/zoom, so the later call
;; to wrap-program that adds library paths and other env
;; vars does not overwrite our work.
(copy-file prog ".zoom-real")))))
(add-after 'install 'wrap-where-patchelf-does-not-work (add-after 'install 'wrap-where-patchelf-does-not-work
(lambda _ (lambda _
(wrap-program (string-append #$output "/lib/zoom/zopen") (wrap-program (string-append #$output "/lib/zoom/zopen")
@ -208,9 +272,13 @@ or iOS.")
(file-append (this-package-input pkg) "/lib")) (file-append (this-package-input pkg) "/lib"))
'("fontconfig-minimal" '("fontconfig-minimal"
"freetype" "freetype"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
;; "libglvnd"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxkbcommon" "libxkbcommon"
"libxkbfile" "libxkbfile"
@ -227,8 +295,19 @@ or iOS.")
(string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts") (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts")
#$output) #$output)
":"))) ":")))
`("PATH" prefix
,(list #$@(map (lambda (pkg)
(file-append (this-package-input pkg) "/bin"))
'("mesa-utils"
"pulseaudio"
"pipewire"
"util-linux"))))
`("LD_LIBRARY_PATH" prefix `("LD_LIBRARY_PATH" prefix
,(list (string-append #$(this-package-input "nss") "/lib/nss") ,(list (string-append #$(this-package-input "nss") "/lib/nss")
;; ZoomLauncher sets Zoom's own library's paths
(string-append #$output "/lib/zoom")
(string-append #$output "/lib/zoom/cef")
(string-append #$output "/lib/zoom/Qt/lib")
#$@(map (lambda (pkg) #$@(map (lambda (pkg)
(file-append (this-package-input pkg) "/lib")) (file-append (this-package-input pkg) "/lib"))
;; TODO: Reuse this long list as it is ;; TODO: Reuse this long list as it is
@ -244,26 +323,50 @@ or iOS.")
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"gcc" "fontconfig-minimal"
"freetype"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"mesa" "gtk+"
"mit-krb5" "libdrm"
"nspr" ;; "libglvnd"
"libx11"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxext" "libxext"
"libxfixes"
"libxi"
"libxkbcommon" "libxkbcommon"
"libxkbfile" "libxkbfile"
"libxrandr" "libxrandr"
"libxshmfence" "libxshmfence"
"libxtst"
"mesa"
"mit-krb5"
"nspr"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util" "xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-wm"
"xcb-util-renderutil" "xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib"))))) "zlib")))))
(wrap-program (string-append #$output "/lib/zoom/aomhost") (wrap-program (string-append #$output "/lib/zoom/aomhost")
`("FONTCONFIG_PATH" ":" prefix `("FONTCONFIG_PATH" ":" prefix
@ -285,13 +388,17 @@ or iOS.")
"dbus" "dbus"
"eudev" "eudev"
"expat" "expat"
"gcc" ;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib" "glib"
"mesa" "mesa"
"mit-krb5" "mit-krb5"
"nspr" "nspr"
;; "libglvnd"
"libxcb" "libxcb"
"libxcomposite" "libxcomposite"
"libxcursor"
"libxdamage" "libxdamage"
"libxext" "libxext"
"libxkbcommon" "libxkbcommon"
@ -299,24 +406,21 @@ or iOS.")
"libxrandr" "libxrandr"
"libxshmfence" "libxshmfence"
"pango" "pango"
"pipewire"
"pulseaudio" "pulseaudio"
"xcb-util" "xcb-util"
"xcb-util-cursor"
"xcb-util-image" "xcb-util-image"
"xcb-util-keysyms" "xcb-util-keysyms"
"xcb-util-wm" "xcb-util-wm"
"xcb-util-renderutil" "xcb-util-renderutil"
"wayland"
"wayland-protocols"
"zlib"))))))) "zlib")))))))
(add-after 'wrap-where-patchelf-does-not-work 'rename-binary (add-after 'wrap-where-patchelf-does-not-work 'cleanup-linker-shenanigans
;; IPC (for single sign-on and handling links) fails if the
;; name does not end in "zoom," so rename the real binary.
;; Thanks to the Nix packagers for figuring this out.
(lambda _ (lambda _
(rename-file (string-append #$output "/lib/zoom/.zoom-real") (delete-file (string-append #$output "/lib/zoom/.zoom-real"))))
(string-append #$output "/lib/zoom/.zoom")) (add-after 'wrap-where-patchelf-does-not-work 'symlink-binaries
(substitute* (string-append #$output "/lib/zoom/zoom")
(("zoom-real")
"zoom"))))
(add-after 'rename-binary 'symlink-binaries
(lambda _ (lambda _
(delete-file (string-append #$output "/environment-variables")) (delete-file (string-append #$output "/environment-variables"))
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
@ -363,38 +467,73 @@ or iOS.")
expat expat
fontconfig fontconfig
freetype freetype
;; The gcc and `(,gcc "lib") package BOTH have the "gcc"
;; string key in the package inputs alist, and gcc's default
;; out package is found first.
;; We need to rename gcc's lib output so we can look it up
;; correctly later with (this-package-input pkg).
;; gcc is provided by the fact binary-build-system "inherits"
;; from gnu-build-system.
;; Using gcc-toolchain as a stopgap for now.
;; FIXME: Make gcc-lib output work, so we do not need to add
;; gcc-toolchain to Zoom's package closure.
`(,gcc "lib") `(,gcc "lib")
gcc-toolchain
glib glib
gtk+ gtk+
gdk-pixbuf
libdrm libdrm
librsvg librsvg
;; Need mesa for libgbm.so and libglvnd for libEGL, libGL, and libGLX
;; libglvnd
libx11 libx11
libxcb libxcb
libxcomposite libxcomposite
libxcursor
libxdamage libxdamage
libxext libxext
libxfixes libxfixes
libxi
libxkbcommon libxkbcommon
libxkbfile libxkbfile
libxrandr libxrandr
libxrender libxrender
libxshmfence libxshmfence
libxtst
mesa mesa
;; Needed for screensharing.
mesa-utils
mit-krb5 mit-krb5
nspr nspr
nss nss
pango pango
pipewire
pulseaudio pulseaudio
qt3d-5 ; libQt53DACore.so.5, Animation, etc.
qtbase-5 ; libQt5Concurrent.so.5, and many others
qtgamepad ; libQt5Gamepad.so.5
qtxmlpatterns ; libQt5XmlPatterns.so.5
;; Qt below need Qt 5-specific versions! Upstream Guix has
;; already moved to Qt 6!
qtlottie ; libQt5Bodymovin.so.5
qtremoteobjects ; libQt5RemoteObjects.so.5
qtdeclarative ; libQt5QuickParticles.so.5
qtmultimedia ; libQt5Multimedia.so.5
util-linux
xcb-util xcb-util
xcb-util-cursor
xcb-util-image xcb-util-image
xcb-util-keysyms xcb-util-keysyms
xcb-util-renderutil xcb-util-renderutil
xcb-util-wm xcb-util-wm
wayland
wayland-protocols
zlib)) zlib))
(home-page "https://zoom.us/") (home-page "https://zoom.us/")
(synopsis "Video conference client") (synopsis "Video conference client")
(description "The Zoom video conferencing and messaging client. Zoom must be run via an (description "The Zoom video conferencing and messaging client. Zoom must
app launcher to use its .desktop file, or with @code{ZoomLauncher}.") be run via an app launcher to use its .desktop file, or with
@code{ZoomLauncher}.")
(license (license:nonfree "https://explore.zoom.us/en/terms/")))) (license (license:nonfree "https://explore.zoom.us/en/terms/"))))
(define-public zulip-desktop (define-public zulip-desktop