diff --git a/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix b/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix deleted file mode 100644 index 8cb748f54059..000000000000 --- a/pkgs/applications/networking/instant-messengers/jami/client-gnome.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ version -, src -, jami-meta -, stdenv -, lib -, pkg-config -, cmake -, wrapQtAppsHook -, wrapGAppsHook -, gtk3-x11 -, networkmanager # for libnm -, libayatana-appindicator -, libnotify -, clutter-gtk -, libcanberra-gtk3 -, webkitgtk -, qrencode -, jami-libclient -, qttools -}: - -stdenv.mkDerivation { - pname = "jami-client-gnome"; - inherit version src; - - sourceRoot = "source/client-gnome"; - - preConfigure = '' - echo ${version} > version.txt - ''; - - nativeBuildInputs = [ - pkg-config - cmake - wrapGAppsHook - wrapQtAppsHook - ]; - # To spare double wrapping - dontWrapGApps = true; - preFixup = '' - qtWrapperArgs+=("''${gappsWrapperArgs[@]}") - # Users that set CLUTTER_BACKEND=wayland in their default environment will - # encounter a segfault due to: - # https://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1100 . - qtWrapperArgs+=("--unset" "CLUTTER_BACKEND") - ''; - - buildInputs = [ - qttools - jami-libclient - gtk3-x11 - networkmanager - libayatana-appindicator - libnotify - clutter-gtk - libcanberra-gtk3 - webkitgtk - qrencode - ]; - - meta = jami-meta // { - description = "The client based on GTK" + jami-meta.description; - }; -} diff --git a/pkgs/applications/networking/instant-messengers/jami/client-qt.nix b/pkgs/applications/networking/instant-messengers/jami/client-qt.nix index 0c952fd1ecad..74bfbc600689 100644 --- a/pkgs/applications/networking/instant-messengers/jami/client-qt.nix +++ b/pkgs/applications/networking/instant-messengers/jami/client-qt.nix @@ -1,8 +1,8 @@ { version , src , jami-meta -, mkDerivation , lib +, stdenv , pkg-config , cmake , networkmanager # for libnm @@ -10,18 +10,19 @@ , qttools # for translations , wrapQtAppsHook , libnotify -, qrencode -, qtwebengine +, qt5compat +, qtbase , qtdeclarative -, qtquickcontrols2 +, qrencode , qtmultimedia +, qtnetworkauth , qtsvg +, qtwebengine , qtwebchannel -, qtgraphicaleffects # no gui without this , jami-libclient }: -mkDerivation { +stdenv.mkDerivation { pname = "jami-client-qt"; inherit version src; @@ -33,6 +34,7 @@ mkDerivation { ''; nativeBuildInputs = [ + wrapQtAppsHook pkg-config cmake python3 @@ -43,14 +45,20 @@ mkDerivation { jami-libclient networkmanager libnotify + qtbase + qt5compat qrencode - qtwebengine + qtnetworkauth qtdeclarative - qtquickcontrols2 qtmultimedia qtsvg qtwebchannel - qtgraphicaleffects + qtwebengine + ]; + + qtWrapperArgs = [ + # With wayland the titlebar is not themed and the wmclass is wrong. + "--set-default QT_QPA_PLATFORM xcb" ]; meta = jami-meta // { diff --git a/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common new file mode 100644 index 000000000000..5c3f607e5c0e --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_common @@ -0,0 +1,19 @@ +--disable-sound +--enable-video +--enable-ext-sound +--disable-speex-aec +--disable-g711-codec +--disable-l16-codec +--disable-gsm-codec +--disable-g722-codec +--disable-g7221-codec +--disable-speex-codec +--disable-ilbc-codec +--disable-opencore-amr +--disable-silk +--disable-sdl +--disable-ffmpeg +--disable-v4l2 +--disable-openh264 +--disable-resample +--disable-libwebrtc diff --git a/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux new file mode 100644 index 000000000000..d1292afe3a29 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/jami/config/pjsip_args_linux @@ -0,0 +1 @@ +--enable-epoll diff --git a/pkgs/applications/networking/instant-messengers/jami/daemon.nix b/pkgs/applications/networking/instant-messengers/jami/daemon.nix index f39b731132ea..635cc569e86f 100644 --- a/pkgs/applications/networking/instant-messengers/jami/daemon.nix +++ b/pkgs/applications/networking/instant-messengers/jami/daemon.nix @@ -58,16 +58,22 @@ let pjsip-jami = pjsip.overrideAttrs (old: let - src-args = import ./pjproject-src.nix; - version = lib.concatStrings (lib.lists.take 7 (lib.stringToCharacters src-args.rev)); patch-src = src + "/daemon/contrib/src/pjproject/"; in - { - inherit version; + rec { + version = "e1f389d0b905011e0cb62cbdf7a8b37fc1bcde1a"; - src = fetchFromGitHub src-args; + src = fetchFromGitHub { + owner = "savoirfairelinux"; + repo = "pjproject"; + rev = version; + sha256 = "sha256-6t+3b7pvvwi+VD05vxtujabEJmWmJTAeyD/Dapav10Y="; + }; patches = old.patches ++ (map (x: patch-src + x) (readLinesToList ./config/pjsip_patches)); + + configureFlags = (readLinesToList ./config/pjsip_args_common) + ++ lib.optionals stdenv.isLinux (readLinesToList ./config/pjsip_args_linux); }); opendht-jami = opendht.override { diff --git a/pkgs/applications/networking/instant-messengers/jami/default.nix b/pkgs/applications/networking/instant-messengers/jami/default.nix index ef8959b57a97..32b5a2663898 100644 --- a/pkgs/applications/networking/instant-messengers/jami/default.nix +++ b/pkgs/applications/networking/instant-messengers/jami/default.nix @@ -4,21 +4,21 @@ , fetchzip , jack , udev -, libsForQt5 +, qt6Packages }: -rec { - version = "20211223.2.37be4c3"; +let + version = "20220503.1550.0f35faa"; src = fetchzip { url = "https://dl.jami.net/release/tarballs/jami_${version}.tar.gz"; - sha256 = "1zw9azwmxr4991nq5kl527lbwlj7psrissgvrkl1kxxbfbdncbhh"; + hash = "sha256-iCmsgjgGogNjj1k0sYRqx59ZEwFZcJOeVGBNyBlcy1M="; stripRoot = false; postFetch = '' cd $out - mv ring-project/* ./ - rm -r ring-project.rst ring-project client-android client-ios client-macosx client-uwp + mv jami-project/* ./ + rm -r jami-project.rst jami-project client-android client-ios client-macosx client-uwp rm daemon/contrib/tarballs/* ''; }; @@ -30,12 +30,11 @@ rec { platforms = platforms.linux; maintainers = [ maintainers.linsui ]; }; - +in +rec { jami-daemon = callPackage ./daemon.nix { inherit version src udev jack jami-meta; }; - jami-libclient = libsForQt5.callPackage ./libclient.nix { inherit version src jami-meta; }; + jami-libclient = qt6Packages.callPackage ./libclient.nix { inherit version src jami-meta; }; - jami-client-gnome = libsForQt5.callPackage ./client-gnome.nix { inherit version src jami-meta; }; - - jami-client-qt = libsForQt5.callPackage ./client-qt.nix { inherit version src jami-meta; }; + jami-client-qt = qt6Packages.callPackage ./client-qt.nix { inherit version src jami-meta; }; } diff --git a/pkgs/applications/networking/instant-messengers/jami/libclient.nix b/pkgs/applications/networking/instant-messengers/jami/libclient.nix index b5ea7431b915..d998fe7a0612 100644 --- a/pkgs/applications/networking/instant-messengers/jami/libclient.nix +++ b/pkgs/applications/networking/instant-messengers/jami/libclient.nix @@ -22,6 +22,7 @@ stdenv.mkDerivation { buildInputs = [ jami-daemon + jami-daemon.ffmpeg ]; patches = [ diff --git a/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix b/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix deleted file mode 100644 index 76e88d887555..000000000000 --- a/pkgs/applications/networking/instant-messengers/jami/pjproject-src.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - owner = "savoirfairelinux"; - repo = "pjproject"; - rev = "e1f389d0b905011e0cb62cbdf7a8b37fc1bcde1a"; - sha256 = "0inpmyb6mhrzr0g309d6clkc99lddqdvyf9xajz0igvgp9pvgpza"; -} diff --git a/pkgs/applications/networking/instant-messengers/jami/update.sh b/pkgs/applications/networking/instant-messengers/jami/update.sh index 10d9bb885c35..ecf14e25ddaf 100755 --- a/pkgs/applications/networking/instant-messengers/jami/update.sh +++ b/pkgs/applications/networking/instant-messengers/jami/update.sh @@ -3,11 +3,14 @@ set -e -jami_dir="$( dirname "${BASH_SOURCE[0]}" )" +jami_dir=$(readlink -e $(dirname "${BASH_SOURCE[0]}")) + +cd $jami_dir/../../../../.. # Update src version and hash version=$(curl -s 'https://dl.jami.net/release/tarballs/?C=M;O=D' | sed -n -E 's/^.*jami_([0-9.a-f]+)\.tar\.gz.*$/\1/p' | head -n 1) -update-source-version jami-libclient "$version" --file=pkgs/applications/networking/instant-messengers/jami/default.nix + +update-source-version jami-libclient "$version" --file=$jami_dir/default.nix src=$(nix-build --no-out-link -A jami-libclient.src) @@ -43,8 +46,15 @@ echo "${pjsip_patches}" > "$config_dir/pjsip_patches" # Update pjsip version pjsip_version=$(sed -n -E 's/.*PJPROJECT_VERSION := ([0-9a-f]+).*/\1/p' ${src}/daemon/contrib/src/pjproject/rules.mak) -nix-prefetch fetchFromGitHub \ - --owner savoirfairelinux \ - --repo pjproject \ - --rev ${pjsip_version} \ - --output nix > "${jami_dir}/pjproject-src.nix" +update-source-version jami-daemon.pjsip "$pjsip_version" --file=pkgs/applications/networking/instant-messengers/jami/daemon.nix + +pjsip_rules="${src}/daemon/contrib/src/pjproject/rules.mak" + +# Update pjsip args +pjsip_args_common=$(sed -n '/PJPROJECT_OPTIONS :=/,/with-gnutls/p' ${pjsip_rules} | sed -n -E 's/.*(--[0-9a-z=_-]+).*\\/\1/p') +echo -e "Common args for pjsip:\n${pjsip_args_common}\n" +echo "${pjsip_args_common}" > "$config_dir/pjsip_args_common" + +pjsip_args_linux=$(sed -n '/HAVE_LINUX/,/endif/p' ${pjsip_rules} | sed -n -E 's/.*(--[0-9a-z=_-]+).*/\1/p') +echo -e "Linux args for pjsip:\n${pjsip_args_linux}\n" +echo "${pjsip_args_linux}" > "$config_dir/pjsip_args_linux" diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d9014d8384fa..38f09fcdb710 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -623,6 +623,7 @@ mapAliases ({ jack2Full = jack2; # moved from top-level 2021-03-14 + jami-client-gnome = throw "jami-client-gnome has been removed: abandoned upstream"; # Added 2022-05-15 jamomacore = throw "jamomacore has been removed: abandoned upstream"; # Added 2020-11-21 jbidwatcher = throw "jbidwatcher was discontinued in march 2021"; # Added 2021-03-15 jbuilder = throw "'jbuilder' has been renamed to/replaced by 'dune_1'"; # Converted to throw 2022-02-22 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 741db94e3933..91f65ad44983 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35517,12 +35517,12 @@ with pkgs; btcdeb = callPackage ../applications/blockchains/btcdeb { }; - inherit (callPackage ../applications/networking/instant-messengers/jami { + jami = callPackages ../applications/networking/instant-messengers/jami { # TODO: remove once `udev` is `systemdMinimal` everywhere. udev = systemdMinimal; jack = libjack2; - }) - jami-daemon jami-libclient jami-client-gnome jami-client-qt; + }; + inherit (jami) jami-daemon jami-libclient jami-client-qt; jitsi-meet-electron = callPackage ../applications/networking/instant-messengers/jitsi-meet-electron { electron = electron_17;