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)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@ -21,6 +23,7 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages nss)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages qt)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
@ -132,17 +135,19 @@ or iOS.")
'((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases")))
(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
(package
(name "zoom")
(version "5.17.5.2543")
(version "6.2.11.5069")
(source
(origin
(method url-fetch)
(uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz"))
(file-name (string-append name "-" version "-x86_64.tar.xz"))
(sha256
(base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim"))))
(base32 "09l9jfmld1dlinkgdgf8ra549rw1hwis3b5cly49a2gvz1sfr8lc"))))
(supported-systems '("x86_64-linux"))
(build-system binary-build-system)
(arguments
@ -151,19 +156,22 @@ or iOS.")
;; Note: it seems like some (all?) of these only do anything in
;; LD_LIBRARY_PATH, or at least needed there as well.
#~(let ((libs '("alsa-lib"
"atk"
"at-spi2-atk"
"at-spi2-core"
"atk"
"cairo"
"cups"
"dbus"
"eudev"
"expat"
"fontconfig-minimal"
"gcc"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib"
"gtk+"
"libdrm"
;; "libglvnd"
"libx11"
"libxcb"
"libxcomposite"
@ -180,18 +188,35 @@ or iOS.")
"mesa"
"nspr"
"pango"
"pipewire"
"pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util"
"xcb-util-cursor"
"xcb-util-image"
"xcb-util-keysyms"
"xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib")))
`(("lib/zoom/ZoomLauncher"
,libs)
("lib/zoom/zoom"
,libs)
("lib/zoom/zopen"
,libs)
("lib/zoom/aomhost"
,libs)))
`(("lib/zoom/ZoomLauncher" ,libs)
;; ("lib/zoom/zoom" ,libs)
("lib/zoom/zopen" ,libs)
("lib/zoom/aomhost" ,libs)
("lib/zoom/cef/libEGL.so" ,libs)
("lib/zoom/cef/libffmpeg.so" ,libs)
("lib/zoom/cef/libGLESv2.so" ,libs)
("lib/zoom/cef/libsqlite3.so.0" ,libs)
("lib/zoom/cef/libvk_swiftshader.so" ,libs)
("lib/zoom/cef/libvulkan.so.1" ,libs)))
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
@ -200,6 +225,45 @@ or iOS.")
;; Use the more standard lib directory for everything.
(mkdir-p "lib")
(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
(lambda _
(wrap-program (string-append #$output "/lib/zoom/zopen")
@ -208,9 +272,13 @@ or iOS.")
(file-append (this-package-input pkg) "/lib"))
'("fontconfig-minimal"
"freetype"
"gcc"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib"
;; "libglvnd"
"libxcomposite"
"libxcursor"
"libxdamage"
"libxkbcommon"
"libxkbfile"
@ -227,8 +295,19 @@ or iOS.")
(string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts")
#$output)
":")))
`("PATH" prefix
,(list #$@(map (lambda (pkg)
(file-append (this-package-input pkg) "/bin"))
'("mesa-utils"
"pulseaudio"
"pipewire"
"util-linux"))))
`("LD_LIBRARY_PATH" prefix
,(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)
(file-append (this-package-input pkg) "/lib"))
;; TODO: Reuse this long list as it is
@ -244,26 +323,50 @@ or iOS.")
"dbus"
"eudev"
"expat"
"gcc"
"fontconfig-minimal"
"freetype"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib"
"mesa"
"mit-krb5"
"nspr"
"gtk+"
"libdrm"
;; "libglvnd"
"libx11"
"libxcb"
"libxcomposite"
"libxcursor"
"libxdamage"
"libxext"
"libxfixes"
"libxi"
"libxkbcommon"
"libxkbfile"
"libxrandr"
"libxshmfence"
"libxtst"
"mesa"
"mit-krb5"
"nspr"
"pango"
"pipewire"
"pulseaudio"
"qtlottie"
"qtremoteobjects"
"qt3d"
"qtbase"
"qtgamepad"
"qtdeclarative"
"qtxmlpatterns"
"qtmultimedia"
"xcb-util"
"xcb-util-cursor"
"xcb-util-image"
"xcb-util-keysyms"
"xcb-util-wm"
"xcb-util-renderutil"
"xcb-util-wm"
"wayland"
"wayland-protocols"
"zlib")))))
(wrap-program (string-append #$output "/lib/zoom/aomhost")
`("FONTCONFIG_PATH" ":" prefix
@ -285,13 +388,17 @@ or iOS.")
"dbus"
"eudev"
"expat"
"gcc"
;; "gcc"
"gcc-toolchain"
"gdk-pixbuf"
"glib"
"mesa"
"mit-krb5"
"nspr"
;; "libglvnd"
"libxcb"
"libxcomposite"
"libxcursor"
"libxdamage"
"libxext"
"libxkbcommon"
@ -299,24 +406,21 @@ or iOS.")
"libxrandr"
"libxshmfence"
"pango"
"pipewire"
"pulseaudio"
"xcb-util"
"xcb-util-cursor"
"xcb-util-image"
"xcb-util-keysyms"
"xcb-util-wm"
"xcb-util-renderutil"
"wayland"
"wayland-protocols"
"zlib")))))))
(add-after 'wrap-where-patchelf-does-not-work 'rename-binary
;; 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.
(add-after 'wrap-where-patchelf-does-not-work 'cleanup-linker-shenanigans
(lambda _
(rename-file (string-append #$output "/lib/zoom/.zoom-real")
(string-append #$output "/lib/zoom/.zoom"))
(substitute* (string-append #$output "/lib/zoom/zoom")
(("zoom-real")
"zoom"))))
(add-after 'rename-binary 'symlink-binaries
(delete-file (string-append #$output "/lib/zoom/.zoom-real"))))
(add-after 'wrap-where-patchelf-does-not-work 'symlink-binaries
(lambda _
(delete-file (string-append #$output "/environment-variables"))
(mkdir-p (string-append #$output "/bin"))
@ -363,38 +467,73 @@ or iOS.")
expat
fontconfig
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-toolchain
glib
gtk+
gdk-pixbuf
libdrm
librsvg
;; Need mesa for libgbm.so and libglvnd for libEGL, libGL, and libGLX
;; libglvnd
libx11
libxcb
libxcomposite
libxcursor
libxdamage
libxext
libxfixes
libxi
libxkbcommon
libxkbfile
libxrandr
libxrender
libxshmfence
libxtst
mesa
;; Needed for screensharing.
mesa-utils
mit-krb5
nspr
nss
pango
pipewire
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-cursor
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
wayland
wayland-protocols
zlib))
(home-page "https://zoom.us/")
(synopsis "Video conference client")
(description "The Zoom video conferencing and messaging client. Zoom must be run via an
app launcher to use its .desktop file, or with @code{ZoomLauncher}.")
(description "The Zoom video conferencing and messaging client. Zoom must
be run via an app launcher to use its .desktop file, or with
@code{ZoomLauncher}.")
(license (license:nonfree "https://explore.zoom.us/en/terms/"))))
(define-public zulip-desktop