diff --git a/nixos/tests/zoom-us.nix b/nixos/tests/zoom-us.nix index a8a6a3f2f9ea..aa5a082d403d 100644 --- a/nixos/tests/zoom-us.nix +++ b/nixos/tests/zoom-us.nix @@ -10,11 +10,38 @@ }; testScript = '' + import time + machine.succeed("which zoom") # fail early if this is missing machine.wait_for_x() - machine.execute("zoom >&2 &") - machine.wait_for_window("Zoom Workplace") + machine.execute("zoom > /tmp/zoom-us.log 2>&1 & echo $! > /tmp/zoom-us.pid") + + def has_zoom_window(): + return any("Zoom Workplace" in name for name in machine.get_window_names()) + + # Zoom should open its main window shortly after startup. Poll for it, but + # stop as soon as the launcher process exits (for example because of a + # missing shared library) instead of waiting for the whole window timeout. + deadline = time.time() + 120 + while not has_zoom_window(): + if machine.execute("kill -0 $(cat /tmp/zoom-us.pid)")[0] != 0: + raise Exception( + "zoom exited before opening its main window:\n" + + machine.execute("cat /tmp/zoom-us.log")[1] + ) + if time.time() > deadline: + raise Exception( + "timed out waiting for the Zoom Workplace window:\n" + + machine.execute("cat /tmp/zoom-us.log")[1] + ) + time.sleep(1) + + # The window should stay open for a while instead of crashing on startup. machine.sleep(20) - machine.wait_for_window("Zoom Workplace") + if not has_zoom_window(): + raise Exception( + "the Zoom Workplace window disappeared shortly after startup:\n" + + machine.execute("cat /tmp/zoom-us.log")[1] + ) ''; } diff --git a/pkgs/by-name/zo/zoom-us/package.nix b/pkgs/by-name/zo/zoom-us/package.nix index f867eb87f659..20dfc04afa6c 100644 --- a/pkgs/by-name/zo/zoom-us/package.nix +++ b/pkgs/by-name/zo/zoom-us/package.nix @@ -54,20 +54,20 @@ let # Zoom versions are released at different times per platform and often with different versions. # We write them on three lines like this (rather than using {}) so that the updater script can # find where to edit them. - versions.aarch64-darwin = "7.1.5.84650"; + versions.aarch64-darwin = "7.2.2.88465"; # This is the fallback version so that evaluation can produce a meaningful result. - versions.x86_64-linux = "7.1.5.4332"; + versions.x86_64-linux = "7.2.1.5760"; srcs = { aarch64-darwin = fetchurl { url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64"; name = "zoomusInstallerFull.pkg"; - hash = "sha256-Sc9wr2dBdvNwi507UZ9YVCTEQsz3RP2WWTJ5Z5ccgnk="; + hash = "sha256-/xXZJu9acUxmg8wj7WKKfC/EPQgKiKxUr04gC6A6JFY="; }; x86_64-linux = fetchurl { url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz"; - hash = "sha256-5znZNrySgRrs9I5zhqN5p5dPfXpEHXKf8o2dWeYTPso="; + hash = "sha256-Nuh5j0L1bqinPHcqrFlKMPFqGqTRUdYVdrPcgufS5Qo="; }; }; @@ -181,8 +181,9 @@ let pkgs.pipewire pkgs.qt6.qtbase pkgs.qt6.qtdeclarative - pkgs.stdenv.cc.cc + pkgs.stdenv.cc.cc.lib # only libstdc++, libatomic and libgomp are needed at runtime pkgs.udev + pkgs.util-linux.lib # provides libuuid.so.1, which Zoom 7.2 links against pkgs.wayland pkgs.libx11 pkgs.libxcomposite