From e5e6b514f5d4ec28a29e8a8489cb5c55101b4654 Mon Sep 17 00:00:00 2001 From: obadz Date: Sat, 14 Sep 2019 11:11:30 +0100 Subject: [PATCH] citrix-receiver: decomission in favor of citrix-workspace. Already documented in #64645 --- doc/package-specific-user-notes.xml | 6 +- nixos/doc/manual/release-notes/rl-1909.xml | 6 + .../remote/citrix-receiver/default.nix | 215 ------------------ .../remote/citrix-receiver/wrapper.nix | 19 -- pkgs/top-level/all-packages.nix | 27 +-- 5 files changed, 15 insertions(+), 258 deletions(-) delete mode 100644 pkgs/applications/networking/remote/citrix-receiver/default.nix delete mode 100644 pkgs/applications/networking/remote/citrix-receiver/wrapper.nix diff --git a/doc/package-specific-user-notes.xml b/doc/package-specific-user-notes.xml index a176f4d13959..ef23b022c887 100644 --- a/doc/package-specific-user-notes.xml +++ b/doc/package-specific-user-notes.xml @@ -416,7 +416,7 @@ overrides = self: super: rec { Please note that the citrix_receiver package has been deprecated since its development was discontinued by upstream - and will be replaced by the citrix workspace app. + and has been replaced by the citrix workspace app. Citrix Receiver and @@ -458,7 +458,7 @@ overrides = self: super: rec { Custom certificates - The Citrix Receiver and Citrix Workspace App + The Citrix Workspace App in nixpkgs trust several certificates from the Mozilla database by default. However several companies using Citrix @@ -472,7 +472,7 @@ overrides = self: super: rec { { config.allowUnfree = true; }; let extraCerts = [ ./custom-cert-1.pem ./custom-cert-2.pem /* ... */ ]; in -citrix_workspace.override { # the same applies for `citrix_receiver` if used. +citrix_workspace.override { inherit extraCerts; }]]> diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml index f9cea242c153..58ab7207f533 100644 --- a/nixos/doc/manual/release-notes/rl-1909.xml +++ b/nixos/doc/manual/release-notes/rl-1909.xml @@ -478,6 +478,12 @@ Prometheus 2 is now configured with services.prometheus. + + + Citrix Receiver (citrix_receiver) has been dropped in favor of Citrix Workspace + (citrix_workspace). + + diff --git a/pkgs/applications/networking/remote/citrix-receiver/default.nix b/pkgs/applications/networking/remote/citrix-receiver/default.nix deleted file mode 100644 index 8d21f64765dc..000000000000 --- a/pkgs/applications/networking/remote/citrix-receiver/default.nix +++ /dev/null @@ -1,215 +0,0 @@ -{ stdenv -, lib -, fetchurl -, requireFile -, makeWrapper -, libredirect -, busybox -, file -, makeDesktopItem -, tzdata -, cacert -, glib -, gtk2 -, atk -, gdk-pixbuf -, cairo -, pango -, gnome3 -, xorg -, libpng12 -, freetype -, fontconfig -, gtk_engines -, alsaLib -, libidn -, zlib -, version ? "13.10.0" -}: - -let - # In 56e1bdc7f9c (libidn: 1.34 -> 1.35), libidn.so.11 became libidn.so.12. - # Citrix looks for the former so we build version 1.34 to please the binary - libidn_134 = libidn.overrideDerivation (_: rec { - name = "libidn-1.34"; - src = fetchurl { - url = "mirror://gnu/libidn/${name}.tar.gz"; - sha256 = "0g3fzypp0xjcgr90c5cyj57apx1cmy0c6y9lvw2qdcigbyby469p"; - }; - }); - - versionInfo = let - supportedVersions = { - "13.10.0" = { - major = "13"; - minor = "10"; - patch = "0"; - x64hash = "7025688C7891374CDA11C92FC0BA2FA8151AEB4C4D31589AD18747FAE943F6EA"; - x86hash = "2DCA3C8EDED11C5D824D579BC3A6B7D531EAEDDCBFB16E91B5702C72CAE9DEE4"; - x64suffix = "20"; - x86suffix = "20"; - homepage = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html; - }; - }; - - # break an evaluation for old Citrix versions rather than exiting with - # an "attribute name not found" error to avoid confusion. - deprecatedVersions = let - versions = [ "13.8.0" "13.9.0" "13.9.1" ]; - in - lib.listToAttrs - (lib.forEach versions - (v: lib.nameValuePair v (throw "Unsupported citrix_receiver version: ${v}"))); - in - deprecatedVersions // supportedVersions; - - citrixReceiverForVersion = { major, minor, patch, x86hash, x64hash, x86suffix, x64suffix, homepage }: - stdenv.mkDerivation rec { - pname = "citrix-receiver"; - version = "${major}.${minor}.${patch}"; - inherit homepage; - - prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86"; - - src = requireFile rec { - name = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz"; - sha256 = if stdenv.is64bit then x64hash else x86hash; - message = '' - In order to use Citrix Receiver, you need to comply with the Citrix EULA and download - the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from: - - ${homepage} - - (if you do not find version ${version} there, try at - https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/ - or at https://www.citrix.com/downloads/citrix-receiver/ under "Earlier Versions of Receiver for Linux") - - Once you have downloaded the file, please use the following command and re-run the - installation: - - nix-prefetch-url file://\$PWD/${name} - ''; - }; - - dontBuild = true; - - sourceRoot = "."; - - buildInputs = [ - makeWrapper - busybox - file - gtk2 - gdk-pixbuf - ]; - - libPath = stdenv.lib.makeLibraryPath [ - glib - gtk2 - atk - gdk-pixbuf - cairo - pango - gnome3.dconf - xorg.libX11 - xorg.libXext - xorg.libXrender - xorg.libXinerama - xorg.libXfixes - libpng12 - libidn_134 - zlib - gtk_engines - freetype - fontconfig - alsaLib - stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null) - ]; - - desktopItem = makeDesktopItem { - name = "wfica"; - desktopName = "Citrix Receiver"; - genericName = "Citrix Receiver"; - exec = "wfica"; - icon = "wfica"; - comment = "Connect to remote Citrix server"; - categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;"; - mimeType = "application/x-ica"; - }; - - installPhase = '' - runHook preInstall - - export ICAInstDir="$out/opt/citrix-icaclient" - - sed -i \ - -e 's,^main_install_menu$,install_ICA_client,g' \ - -e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \ - -e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \ - -e 's,/bin/true,true,g' \ - ./${prefixWithBitness}/hinst - - # Run the installer... - bash ./${prefixWithBitness}/hinst CDROM "`pwd`" - - echo "Deleting broken links..." - for link in `find $ICAInstDir -type l ` - do - [ -f "$link" ] || rm -v "$link" - done - - echo "Expanding certificates..." - # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates - pushd "$ICAInstDir/keystore/cacerts" - awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt - popd - - echo "Patching executables..." - find $ICAInstDir -type f -exec file {} \; | - grep 'ELF.*executable' | - cut -f 1 -d : | - grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729 - while read f - do - echo "Patching ELF intrepreter and rpath for $f" - chmod u+w "$f" - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - --set-rpath "$ICAInstDir:$libPath" "$f" - done - - echo "Wrapping wfica..." - mkdir "$out/bin" - - makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \ - --add-flags "-icaroot $ICAInstDir" \ - --set ICAROOT "$ICAInstDir" \ - --set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ - --set LD_LIBRARY_PATH "$libPath" \ - --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone" - - echo "We arbitrarily set the timezone to UTC. No known consequences at this point." - echo UTC > "$ICAInstDir/timezone" - - echo "Installing desktop item..." - mkdir -p $out/share/applications - cp ${desktopItem}/share/applications/* $out/share/applications - - # We introduce a dependency on the source file so that it need not be redownloaded everytime - echo $src >> "$out/share/nix_dependencies.pin" - - runHook postInstall - ''; - - meta = with stdenv.lib; { - license = stdenv.lib.licenses.unfree; - inherit homepage; - description = "Citrix Receiver"; - maintainers = with maintainers; [ obadz a1russell ma27 ]; - platforms = platforms.linux; - }; - }; - -in citrixReceiverForVersion (lib.getAttr version versionInfo) diff --git a/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix b/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix deleted file mode 100644 index 63587030b38e..000000000000 --- a/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ citrix_receiver, extraCerts ? [], symlinkJoin }: - -let - - mkCertCopy = certPath: - "cp ${certPath} $out/opt/citrix-icaclient/keystore/cacerts/"; - -in - -if builtins.length extraCerts == 0 then citrix_receiver else symlinkJoin { - name = "citrix-with-extra-certs-${citrix_receiver.version}"; - paths = [ citrix_receiver ]; - - postBuild = '' - ${builtins.concatStringsSep "\n" (map mkCertCopy extraCerts)} - - sed -i -E "s,-icaroot (.+citrix-icaclient),-icaroot $out/opt/citrix-icaclient," $out/bin/wfica - ''; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 77510a4d65d6..1ce8eede2027 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2220,27 +2220,12 @@ in circleci-cli = callPackage ../development/tools/misc/circleci-cli { }; - citrix_receiver_unwrapped = callPackage ../applications/networking/remote/citrix-receiver { }; - citrix_receiver_unwrapped_13_10_0 = citrix_receiver_unwrapped.override { version = "13.10.0"; }; - citrix_receiver_unwrapped_13_9_1 = citrix_receiver_unwrapped.override { version = "13.9.1"; }; - citrix_receiver_unwrapped_13_9_0 = citrix_receiver_unwrapped.override { version = "13.9.0"; }; - citrix_receiver_unwrapped_13_8_0 = citrix_receiver_unwrapped.override { version = "13.8.0"; }; - - citrix_receiver = callPackage ../applications/networking/remote/citrix-receiver/wrapper.nix { - citrix_receiver = citrix_receiver_unwrapped; - }; - citrix_receiver_13_10_0 = callPackage ../applications/networking/remote/citrix-receiver/wrapper.nix { - citrix_receiver = citrix_receiver_unwrapped_13_10_0; - }; - citrix_receiver_13_9_1 = callPackage ../applications/networking/remote/citrix-receiver/wrapper.nix { - citrix_receiver = citrix_receiver_unwrapped_13_9_1; - }; - citrix_receiver_13_9_0 = callPackage ../applications/networking/remote/citrix-receiver/wrapper.nix { - citrix_receiver = citrix_receiver_unwrapped_13_9_0; - }; - citrix_receiver_13_8_0 = callPackage ../applications/networking/remote/citrix-receiver/wrapper.nix { - citrix_receiver = citrix_receiver_unwrapped_13_8_0; - }; + # Cleanup before 20.03: + citrix_receiver = throw "citrix_receiver has been discontinued by Citrix (https://docs.citrix.com/en-us/citrix-workspace-app.html). Please use citrix_workspace."; + citrix_receiver_13_10_0 = citrix_receiver; + citrix_receiver_13_9_1 = citrix_receiver; + citrix_receiver_13_9_0 = citrix_receiver; + citrix_receiver_13_8_0 = citrix_receiver; citrix_workspace_unwrapped = callPackage ../applications/networking/remote/citrix-workspace { }; citrix_workspace_unwrapped_19_8_0 = citrix_workspace_unwrapped.override { version = "19.8.0"; };