Merge pull request #68372 from obadz/citrix-receiver-decomission
citrix-receiver: decomission in favor of citrix-workspace.
This commit is contained in:
commit
5d853163cf
@ -416,7 +416,7 @@ overrides = self: super: rec {
|
||||
<para>
|
||||
Please note that the <literal>citrix_receiver</literal> package has been deprecated since its
|
||||
development was <link xlink:href="https://docs.citrix.com/en-us/citrix-workspace-app.html">discontinued by upstream</link>
|
||||
and will be replaced by <link xlink:href="https://www.citrix.com/products/workspace-app/">the citrix workspace app</link>.
|
||||
and has been replaced by <link xlink:href="https://www.citrix.com/products/workspace-app/">the citrix workspace app</link>.
|
||||
</para>
|
||||
</note>
|
||||
<link xlink:href="https://www.citrix.com/products/receiver/">Citrix Receiver</link> and
|
||||
@ -458,7 +458,7 @@ overrides = self: super: rec {
|
||||
<title>Custom certificates</title>
|
||||
|
||||
<para>
|
||||
The <literal>Citrix Receiver</literal> and <literal>Citrix Workspace App</literal>
|
||||
The <literal>Citrix Workspace App</literal>
|
||||
in <literal>nixpkgs</literal> trust several certificates
|
||||
<link xlink:href="https://curl.haxx.se/docs/caextract.html">from the
|
||||
Mozilla database</link> by default. However several companies using Citrix
|
||||
@ -472,7 +472,7 @@ overrides = self: super: rec {
|
||||
<programlisting>
|
||||
<![CDATA[with import <nixpkgs> { 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;
|
||||
}]]>
|
||||
</programlisting>
|
||||
|
@ -478,6 +478,12 @@
|
||||
Prometheus 2 is now configured with <literal>services.prometheus</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Citrix Receiver (<literal>citrix_receiver</literal>) has been dropped in favor of Citrix Workspace
|
||||
(<literal>citrix_workspace</literal>).
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
@ -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)
|
@ -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
|
||||
'';
|
||||
}
|
@ -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"; };
|
||||
|
Loading…
Reference in New Issue
Block a user