Unverified Commit 31aba0ed authored by Florian Klink's avatar Florian Klink Committed by GitHub
Browse files

nice-dcv-client: update to 2025.0.8846-1 (#465012)

parents 41df170e bc4d73b8
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -97,9 +97,5 @@ buildNpmPackage (finalAttrs: {
    maintainers = with lib.maintainers; [ flokli ];
    mainProgram = "netron";
    platforms = electron.meta.platforms;
    badPlatforms = [
      # Fails on darwin
      lib.systems.inspect.patterns.isDarwin
    ];
  };
})
+31 −0
Original line number Diff line number Diff line
--- a/usr/bin/dcvviewer
+++ b/usr/bin/dcvviewer
@@ -13,7 +13,7 @@
 
     basedir="${_dir}/usr"
 else
-    basedir=/usr
+    basedir=@basedir@
 fi
 
 bindir=${basedir}/bin
@@ -33,15 +33,15 @@
 
 export LD_LIBRARY_PATH="${libdir}/${variant}:${libdir}:/usr/share/${variant}/cef:${LD_LIBRARY_PATH}"
 export XDG_DATA_DIRS="${datadir}:${XDG_DATA_DIRS}:/usr/share:/usr/local/share"
-export GIO_EXTRA_MODULES="${libdir}/${variant}/gio/modules"
-export GST_PLUGIN_SCANNER="${libexecdir}/${variant}/gst-plugin-scanner"
-export GST_PLUGIN_SYSTEM_PATH="${libdir}/${variant}/gstreamer-1.0"
+export GIO_EXTRA_MODULES=@gio_extra_modules@
+export GST_PLUGIN_SCANNER=@gst_plugin_scanner@
+export GST_PLUGIN_SYSTEM_PATH=@gst_plugin_system_path@
 export GTK_PATH="${libdir}/${variant}"
 export PANGO_LIBDIR="${libdir}/${variant}"
 export GDK_PIXBUF_MODULE_FILE="${libdir}/${variant}/gdk-pixbuf-2.0/2.10.0/loaders.cache"
 export GSETTINGS_SCHEMA_DIR="${datadir}/${variant}/schemas"
 export FONTCONFIG_PATH="${sysconfdir}/fonts"
-export DCV_SASL_PLUGIN_DIR="${libdir}/dcvviewer/sasl2"
+export DCV_SASL_PLUGIN_DIR=@dcv_sasl_plugin_dir@
 
 case "$1" in
     --gdb)
+84 −54
Original line number Diff line number Diff line
@@ -2,89 +2,119 @@
  lib,
  stdenv,
  fetchurl,
  autoPatchelfHook,
  replaceVars,
  wrapGAppsHook4,
  python3Packages,
  cpio,
  cups,
  cyrus_sasl,
  gdk-pixbuf,
  glib,
  libx11,
  glib-networking,
  gst_all_1,
  libepoxy,
  pango,
  cairo,
  gdk-pixbuf,
  e2fsprogs,
  libkrb5,
  gtk4,
  libfido2,
  libva,
  openssl,
  lz4,
  pcsclite,
  gtk3,
  libselinux,
  libxml2,
  libffi,
  python3Packages,
  cpio,
  autoPatchelfHook,
  wrapGAppsHook3,
  protobufc,
}:

stdenv.mkDerivation rec {
let
  pname = "nice-dcv-client";
  version = "2021.2.3797-1";
  version = "2025.0.8846-1";
in
stdenv.mkDerivation {
  inherit version pname;

  src = fetchurl {
    url = "https://d1uj6qtbmh3dt5.cloudfront.net/2021.2/Clients/nice-dcv-viewer-${version}.el8.x86_64.rpm";
    sha256 = "sha256-iLz25SB5v7ghkAZOMGPmpNaPihd8ikzCQS//r1xBNRU=";
    url = "https://d1uj6qtbmh3dt5.cloudfront.net/${lib.versions.majorMinor version}/Clients/nice-dcv-viewer-${version}.el9.x86_64.rpm";
    sha256 = "sha256-JYvOxwSQQKjTLvpfpAQe1tqHS4QsshYJyzC5kIFEZLc=";
  };

  nativeBuildInputs = [
    autoPatchelfHook
    wrapGAppsHook3
    wrapGAppsHook4
    python3Packages.rpm
  ];

  unpackPhase = ''
    rpm2cpio $src | ${cpio}/bin/cpio -idm
  '';

  buildInputs = [
    libselinux
    libkrb5
    libxml2
    cups
    cyrus_sasl
    gdk-pixbuf
    gtk4
    libfido2
    libva
    e2fsprogs
    libx11
    openssl
    lz4
    pcsclite
    gtk3
    cairo
    libepoxy
    pango
    gdk-pixbuf
    protobufc
    gst_all_1.gstreamer
    gst_all_1.gst-plugins-base
  ];

  installPhase = ''
  installPhase =
    let
      gst_plugin_system_path = lib.makeSearchPath "lib/gstreamer-1.0/" (
        with gst_all_1;
        [
          gstreamer
          gst-plugins-base
          gst-plugins-good
        ]
      );
      fixPathsPatch = replaceVars ./fix-paths.patch {
        basedir = null;
        gio_extra_modules = "${glib-networking}/lib/gio/modules";
        gst_plugin_scanner = "${gst_all_1.gstreamer.out}/libexec/gstreamer-1.0/gst-plugin-scanner";
        gst_plugin_system_path = gst_plugin_system_path;
        dcv_sasl_plugin_dir = "${cyrus_sasl.out}/lib/sasl2";
      };
    in
    ''
      # Fix the wrapper script paths.
      patch -p1 < ${fixPathsPatch}
      substituteInPlace usr/bin/dcvviewer \
        --replace-fail '@basedir@' "$out"

      mkdir -p $out/bin/
    mkdir -p $out/lib64/
      mv usr/bin/dcvviewer $out/bin/dcvviewer
    mv usr/lib64/* $out/lib64/

      mkdir -p $out/libexec/dcvviewer
    mv usr/libexec/dcvviewer/dcvviewer $out/libexec/dcvviewer/dcvviewer
      mv \
        usr/libexec/dcvviewer/dcvextensionswatchdog \
        usr/libexec/dcvviewer/dcvviewer \
        $out/libexec/dcvviewer
      patchelf \
        --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
        $out/libexec/dcvviewer/dcvviewer
    # Fix the wrapper script to have the right basedir.
    sed -i "s#basedir=/usr#basedir=$out#" $out/bin/dcvviewer

      mkdir -p $out/lib64/dcvviewer
      mv \
        ./usr/lib64/dcvviewer/libavcodec.so.61 \
        ./usr/lib64/dcvviewer/libavutil.so.59 \
        ./usr/lib64/dcvviewer/libdcv.so \
        ./usr/lib64/dcvviewer/libsoup-3.0.so.0 \
        $out/lib64/dcvviewer

      mv usr/share $out/
      rm -rf $out/usr/share/doc

      ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas

    # we already ship libffi.so.7
    ln -s ${lib.getLib libffi}/lib/libffi.so $out/lib64/libffi.so.6
    '';

  meta = {
  meta = with lib; {
    description = "High-performance remote display protocol";
    homepage = "https://aws.amazon.com/hpc/dcv/";
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    license = lib.licenses.unfree;
    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
    license = licenses.unfree;
    platforms = [ "x86_64-linux" ];
    maintainers = with lib.maintainers; [ rmcgibbo ];
    maintainers = with maintainers; [
      rmcgibbo
      jhol
    ];
  };
}