Unverified Commit 5980debf authored by Wolfgang Walther's avatar Wolfgang Walther Committed by GitHub
Browse files

citrix_workspace: 25.05 -> 25.08.10 (#464965)

parents d1845c64 090fb8a5
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -4,24 +4,10 @@
# reference guide: https://developer-docs.citrix.com/en-us/citrix-workspace-app-for-linux/citrix-workspace-app-for-linux-oem-reference-guide

let
  inherit (callPackage ./sources.nix { }) supportedVersions unsupportedVersions;
  supportedVersions = callPackage ./sources.nix { };

  toAttrName = x: "citrix_workspace_${builtins.replaceStrings [ "." ] [ "_" ] x}";

  unsupported = lib.listToAttrs (
    map (
      x:
      lib.nameValuePair (toAttrName x) (throw ''
        Citrix Workspace at version ${x} is not supported anymore!

        Actively supported releases are listed here:
        https://www.citrix.com/support/product-lifecycle/workspace-app.html
      '')
    ) unsupportedVersions
  );

  supported = lib.mapAttrs' (
    attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo)
  ) supportedVersions;
in
supported // unsupported
lib.mapAttrs' (
  attr: versionInfo: lib.nameValuePair (toAttrName attr) (callPackage ./generic.nix versionInfo)
) supportedVersions
+46 −28
Original line number Diff line number Diff line
@@ -10,10 +10,11 @@
  cacert,
  cairo,
  dconf,
  fetchurl,
  enchant2,
  file,
  fontconfig,
  freetype,
  fuse3,
  gdk-pixbuf,
  glib,
  glib-networking,
@@ -22,8 +23,11 @@
  gtk2-x11,
  gtk3,
  gtk_engines,
  harfbuzzFull,
  heimdal,
  hyphen,
  krb5,
  lcms2,
  libGL,
  libappindicator-gtk3,
  libcanberra-gtk3,
@@ -32,15 +36,19 @@
  libfaketime,
  libgbm,
  libinput,
  libjpeg,
  libjpeg8,
  libjson,
  libmanette,
  libnotify,
  libpng12,
  libpulseaudio,
  libredirect,
  libseccomp,
  libsecret,
  libsoup_2_4,
  libvorbis,
  libxml2_13,
  libxslt,
  llvmPackages,
  more,
  nspr,
@@ -49,25 +57,33 @@
  openssl,
  pango,
  pcsclite,
  perl,
  sane-backends,
  speex,
  symlinkJoin,
  systemd,
  tzdata,
  # webkitgtk_4_0,
  which,
  woff2,
  xorg,
  zlib,

  homepage,
  version,
  prefix,
  hash,

  extraCerts ? [ ],
}:

let
  fuse3' = symlinkJoin {
    name = "fuse3-backwards-compat";
    paths = [ (lib.getLib fuse3) ];
    postBuild = ''
      ln -sf $out/lib/libfuse3.so.3.17.4 $out/lib/libfuse3.so.3
    '';
  };

  openssl' = symlinkJoin {
    name = "openssl-backwards-compat";
    nativeBuildInputs = [ makeWrapper ];
@@ -97,12 +113,12 @@ stdenv.mkDerivation rec {
  inherit version;

  src = requireFile rec {
    name = "${prefix}-${version}.tar.gz";
    name = "linuxx64-${version}.tar.gz";
    sha256 = hash;

    message = ''
      In order to use Citrix Workspace, you need to comply with the Citrix EULA and download
      the ${if stdenv.hostPlatform.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
      the 64-bit binaries, .tar.gz from:

      ${homepage}

@@ -137,8 +153,10 @@ stdenv.mkDerivation rec {
    atk
    cairo
    dconf
    enchant2
    fontconfig
    freetype
    fuse3'
    gdk-pixbuf
    glib-networking
    gnome2.gtkglext
@@ -146,22 +164,29 @@ stdenv.mkDerivation rec {
    gtk2-x11
    gtk3
    gtk_engines
    harfbuzzFull
    heimdal
    hyphen
    krb5
    lcms2
    libGL
    libcanberra-gtk3
    libcap
    libcxx
    libgbm
    libinput
    libjpeg
    libjpeg8
    libjson
    libmanette
    libnotify
    libpng12
    libpulseaudio
    libseccomp
    libsecret
    libsoup_2_4
    libvorbis
    libxml2_13
    libxslt
    llvmPackages.libunwind
    nspr
    nss
@@ -173,7 +198,7 @@ stdenv.mkDerivation rec {
    speex
    stdenv.cc.cc
    (lib.getLib systemd)
    # webkitgtk_4_0
    woff2
    xorg.libXScrnSaver
    xorg.libXaw
    xorg.libXmu
@@ -216,9 +241,9 @@ stdenv.mkDerivation rec {
          ${lib.optionalString (icaFlag program != null) ''--add-flags "${icaFlag program} $ICAInstDir"''} \
          --set ICAROOT "$ICAInstDir" \
          --prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
          --prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib" \
          --prefix LD_LIBRARY_PATH : "$ICAInstDir:$ICAInstDir/lib:$ICAInstDir/usr/lib/x86_64-linux-gnu:$ICAInstDir/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle" \
          --set LD_PRELOAD "${libredirect}/lib/libredirect.so ${lib.getLib pcsclite}/lib/libpcsclite.so" \
          --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
          --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone:/usr/lib/x86_64-linux-gnu=$ICAInstDir/usr/lib/x86_64-linux-gnu"
      '';
      wrapLink = program: ''
        ${wrap program}
@@ -247,9 +272,9 @@ stdenv.mkDerivation rec {
      export HOME=$(mktemp -d)

      # Run upstream installer in the store-path.
      sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' ./${prefix}/hinst
      sed -i -e 's,^ANSWER="",ANSWER="$INSTALLER_YES",g' -e 's,/bin/true,true,g' -e 's, -C / , -C . ,g' ./linuxx64/hinst
      source_date=$(date --utc --date=@$SOURCE_DATE_EPOCH "+%F %T")
      faketime -f "$source_date" ${stdenv.shell} ${prefix}/hinst CDROM "$(pwd)"
      faketime -f "$source_date" ${stdenv.shell} linuxx64/hinst CDROM "$(pwd)"

      if [ -f "$ICAInstDir/util/setlog" ]; then
        chmod +x "$ICAInstDir/util/setlog"
@@ -274,11 +299,6 @@ stdenv.mkDerivation rec {

      ${mkWrappers copyCert extraCerts}

      # See https://developer-docs.citrix.com/en-us/citrix-workspace-app-for-linux/citrix-workspace-app-for-linux-oem-reference-guide/reference-information/#library-files
      # Those files are fallbacks to support older libwekit.so and libjpeg.so
      rm $out/opt/citrix-icaclient/lib/ctxjpeg_fb_8.so || true
      rm $out/opt/citrix-icaclient/lib/UIDialogLibWebKit.so || true

      # We support only Gstreamer 1.0
      rm $ICAInstDir/util/{gst_aud_{play,read},gst_*0.10,libgstflatstm0.10.so} || true
      ln -sf $ICAInstDir/util/gst_play1.0 $ICAInstDir/util/gst_play
@@ -299,26 +319,24 @@ stdenv.mkDerivation rec {
  # Make sure that `autoPatchelfHook` is executed before
  # running `ctx_rehash`.
  dontAutoPatchelf = true;
  preFixup = ''
    find $out/opt/citrix-icaclient/lib -name "libopencv_imgcodecs.so.*" | while read -r fname; do
      # lib needs libtiff.so.5, but nixpkgs provides libtiff.so.6
      patchelf --replace-needed libtiff.so.5 libtiff.so $fname
      # lib needs libjpeg.so.8, but nixpkgs provides libjpeg.so.9
      patchelf --replace-needed libjpeg.so.8 libjpeg.so $fname
    done
  '';
  # Null out hardcoded webkit bundle path so it falls back to LD_LIBRARY_PATH
  postFixup = ''
    ${lib.getExe perl} -0777 -pi -e 's{/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/injected-bundle/}{"\0" x length($&)}e' \
      $out/opt/citrix-icaclient/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.56.4

    autoPatchelf -- "$out"

    $out/opt/citrix-icaclient/util/ctx_rehash
  '';

  meta = {
    # webkitgtk_4_0 was removed
    broken = true;
    # Older versions need webkitgtk_4_0 which was removed.
    # 25.08 bundles the same.
    broken = lib.versionOlder version "25.08";
    license = lib.licenses.unfree;
    description = "Citrix Workspace";
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    platforms = [ "x86_64-linux" ] ++ lib.optional (lib.versionOlder version "24") "i686-linux";
    platforms = [ "x86_64-linux" ];
    maintainers = with lib.maintainers; [ flacks ];
    inherit homepage;
  };
+10 −99
Original line number Diff line number Diff line
@@ -7,117 +7,28 @@ let
      major,
      minor,
      patch,
      x64hash,
      x86hash,
      x64suffix,
      x86suffix,
      hash,
      suffix,
      homepage,
    }:
    {
      inherit homepage;
      version = "${major}.${minor}.${patch}.${
        if stdenv.hostPlatform.is64bit then x64suffix else x86suffix
      }";
      prefix = "linuxx${if stdenv.hostPlatform.is64bit then "64" else "86"}";
      hash = if stdenv.hostPlatform.is64bit then x64hash else x86hash;
      inherit hash homepage;
      version = "${major}.${minor}.${patch}.${suffix}";
    };

  # Attribute-set with all actively supported versions of the Citrix workspace app
  # for Linux.
  #
  # The latest versions can be found at https://www.citrix.com/downloads/workspace-app/linux/
  # x86 is unsupported past 23.11, see https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/deprecation
  supportedVersions = lib.mapAttrs mkVersionInfo {

    "23.11.0" = {
      major = "23";
      minor = "11";
      patch = "0";
      x64hash = "d3dde64baa6db7675a025eff546d552544d3523f4f3047621884f7830a9e2822";
      x86hash = "65b8c144e51b5bd78b98ae69e0fa76d6c020a857d74fd5254be49492527072b6";
      x64suffix = "82";
      x86suffix = "82";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest10.html";
    };

    "24.02.0" = {
      major = "24";
      minor = "2";
      patch = "0";
      x64hash = "eaeb5d3bd079d4e5c9707da67f5f7a25cb765e19c36d01861290655dbf2aaee4";
      x86hash = "";
      x64suffix = "65";
      x86suffix = "";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest12.html";
    };

    "24.05.0" = {
      major = "24";
      minor = "5";
      patch = "0";
      x64hash = "sha256-pye2JOilSbp8PFCpVXFkrRW98E8klCqoisVSWjR38nE=";
      x86hash = "";
      x64suffix = "76";
      x86suffix = "";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest1.html";
    };

    "24.08.0" = {
      major = "24";
      minor = "8";
      patch = "0";
      x64hash = "1jb22n6gcv4pv8khg98sv663yfpi47dpkvqgifbhps98iw5zrkbp";
      x86hash = "";
      x64suffix = "98";
      x86suffix = "";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest-2408.html";
    };

    "24.11.0" = {
      major = "24";
      minor = "11";
      patch = "0";
      x64hash = "0kylvqdzkw0635mbb6r5k1lamdjf1hr9pk5rxcff63z4f8q0g3zf";
      x86hash = "";
      x64suffix = "85";
      x86suffix = "";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest13.html";
    };

    "25.03.0" = {
      major = "25";
      minor = "03";
      patch = "0";
      x64hash = "052zibykhig9091xl76z2x9vn4f74w5q8i9frlpc473pvfplsczk";
      x86hash = "";
      x64suffix = "66";
      x86suffix = "";
      homepage = "https://www.citrix.com/downloads/workspace-app/legacy-workspace-app-for-linux/workspace-app-for-linux-latest-2503.html";
    };

    "25.05.0" = {
    "25.08.10" = {
      major = "25";
      minor = "05";
      patch = "0";
      x64hash = "0fwqsxggswms40b5k8saxpm1ghkxppl27x19w8jcslq1f0i1fwqx";
      x86hash = "";
      x64suffix = "44";
      x86suffix = "";
      minor = "08";
      patch = "10";
      hash = "06hdwi5rd8z43nlpvym6yrw3snfz8jh6ic3g4pihn9ji22bw5pbd";
      suffix = "111";
      homepage = "https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html";
    };
  };

  # Retain attribute-names for abandoned versions of Citrix workspace to
  # provide a meaningful error-message if it's attempted to use such an old one.
  #
  # The lifespans of Citrix products can be found here:
  # https://www.citrix.com/support/product-lifecycle/workspace-app.html
  unsupportedVersions = [
    "23.02.0"
    "23.07.0"
    "23.09.0"
  ];
in
{
  inherit supportedVersions unsupportedVersions;
}
supportedVersions
+7 −0
Original line number Diff line number Diff line
@@ -432,6 +432,13 @@ mapAliases {
  chrome-gnome-shell = throw "'chrome-gnome-shell' has been renamed to/replaced by 'gnome-browser-connector'"; # Converted to throw 2025-10-27
  ci-edit = throw "'ci-edit' has been removed due to lack of maintenance upstream"; # Added 2025-08-26
  cinnamon-common = cinnamon; # Added 2025-08-06
  citrix_workspace_23_11_0 = throw "'citrix_workspace_23_11_0' has been removed because it has reached EOL."; # Added 2025-11-25
  citrix_workspace_24_02_0 = throw "'citrix_workspace_24_02_0' has been removed because it has reached EOL."; # Added 2025-11-25
  citrix_workspace_24_05_0 = throw "'citrix_workspace_24_05_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25
  citrix_workspace_24_08_0 = throw "'citrix_workspace_24_08_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25
  citrix_workspace_24_11_0 = throw "'citrix_workspace_24_11_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25
  citrix_workspace_25_03_0 = throw "'citrix_workspace_25_03_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25
  citrix_workspace_25_05_0 = throw "'citrix_workspace_25_05_0' has been removed because it depended on the removed webkitgtk_4_0."; # Added 2025-11-25
  clamsmtp = throw "'clamsmtp' has been removed as it is unmaintained and broken"; # Added 2025-05-17
  clang12Stdenv = throw "clang12Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10
  clang13Stdenv = throw "clang13Stdenv has been removed, as it is unmaintained and obsolete"; # Added 2025-08-10
+3 −9
Original line number Diff line number Diff line
@@ -2181,15 +2181,9 @@ with pkgs;
  circus = with python310Packages; toPythonApplication circus;

  inherit (callPackage ../applications/networking/remote/citrix-workspace { })
    citrix_workspace_23_11_0
    citrix_workspace_24_02_0
    citrix_workspace_24_05_0
    citrix_workspace_24_08_0
    citrix_workspace_24_11_0
    citrix_workspace_25_03_0
    citrix_workspace_25_05_0
    ;
  citrix_workspace = citrix_workspace_25_05_0;
    citrix_workspace_25_08_10
    ;
  citrix_workspace = citrix_workspace_25_08_10;

  colord-gtk4 = colord-gtk.override { withGtk4 = true; };