citrix_receiver: refactor so older versions can still be installed

Version 13.4.0 is the latest version that doesn't suffer from the bug
described at
https://discussions.citrix.com/topic/385459-ssl-error-with-135-works-with-134/page-2#entry1977735

As a result, upgrades to 13.5.0, 13.6.0 and 13.7.0 were postponed.
However some users aren't affected by this big. This enables everyone to
download the version that suits their needs.

Related to: #23975, #27664, #30029
This commit is contained in:
obadz 2017-10-23 17:53:11 +01:00
parent 32866a3b0b
commit 26122b368a
2 changed files with 180 additions and 129 deletions

View File

@ -1,4 +1,5 @@
{ stdenv { stdenv
, lib
, requireFile , requireFile
, makeWrapper , makeWrapper
, libredirect , libredirect
@ -22,25 +23,67 @@
, alsaLib , alsaLib
, libidn , libidn
, zlib , zlib
, version ? null
}: }:
let versionRec = { major = "13"; minor = "7"; patch = "0"; }; let
in stdenv.mkDerivation rec { versionInfo = {
"13.4.0" = rec {
major = "13";
minor = "4";
patch = "0";
x64hash = "133brs0sq6d0mgr19rc6ig1n9ahm3ryi23v5nrgqfh0hgxqcrrjb";
x86hash = "0r7jfl5yqv1s2npy8l9gsn0gbb82f6raa092ppkc8xy5pni5sh7l";
x64suffix = "10109380";
x86suffix = x64suffix;
homepage = https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/receiver-for-linux-latest-13-4.html;
};
"13.5.0" = rec {
major = "13";
minor = "5";
patch = "0";
x64hash = "1r24mhkpcc0z95n597p07fz92pd1b8qqzp2z6w07rmb9wb8mpd4x";
x86hash = "0pwxshlryzhkl86cj9ryybm54alhzjx0gpp67fnvdn5r64wy1nd1";
x64suffix = "10185126";
x86suffix = x64suffix;
homepage = https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/receiver-for-linux-latest-13-5.html;
};
"13.6.0" = rec {
major = "13";
minor = "6";
patch = "0";
x64hash = "6e423be41d5bb8186bcca3fbb4ede54dc3f00b8d2aeb216ae4aabffef9310d34";
x86hash = "0ba3eba208b37844904d540b3011075ed5cecf429a0ab6c6cd52f2d0fd841ad2";
x64suffix = "10243651";
x86suffix = x64suffix;
homepage = https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/receiver-for-linux-136.html;
};
"13.7.0" = {
major = "13";
minor = "7";
patch = "0";
x64hash = "18fb374b9fb8e249b79178500dddca7a1f275411c6537e7695da5dcf19c5ba91";
x86hash = "4c68723b0327cf6f12da824056fce2b7853c38e6163a48c9d222b93dd8da75b6";
homepage = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html; # Fix when updating version
x64suffix = "10276927";
x86suffix = "10276925";
};
};
citrixReceiverForVersion = { major, minor, patch, x86hash, x64hash, x86suffix, x64suffix, homepage }:
stdenv.mkDerivation rec {
name = "citrix-receiver-${version}"; name = "citrix-receiver-${version}";
version = with versionRec; "${major}.${minor}.${patch}"; version = "${major}.${minor}.${patch}";
homepage = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html; inherit homepage;
prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86"; prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
src = with versionRec; requireFile rec { src = requireFile rec {
name = name = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz";
if stdenv.is64bit sha256 = if stdenv.is64bit then x64hash else x86hash;
then "${prefixWithBitness}-${version}.10276927.tar.gz"
else "${prefixWithBitness}-${version}.10276925.tar.gz";
sha256 =
if stdenv.is64bit
then "18fb374b9fb8e249b79178500dddca7a1f275411c6537e7695da5dcf19c5ba91"
else "4c68723b0327cf6f12da824056fce2b7853c38e6163a48c9d222b93dd8da75b6";
message = '' message = ''
In order to use Citrix Receiver, you need to comply with the Citrix EULA and download 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: the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
@ -48,7 +91,7 @@ in stdenv.mkDerivation rec {
${homepage} ${homepage}
(if you do not find version ${version} there, try at (if you do not find version ${version} there, try at
https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/receiver-for-linux-latest-${major}-${minor}.html 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") 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 Once you have downloaded the file, please use the following command and re-run the
@ -167,9 +210,11 @@ in stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
homepage = homepage; inherit homepage;
description = "Citrix Receiver"; description = "Citrix Receiver";
maintainers = with maintainers; [ obadz a1russell ]; maintainers = with maintainers; [ obadz a1russell ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} };
in citrixReceiverForVersion (lib.getAttr version versionInfo)

View File

@ -1398,7 +1398,13 @@ with pkgs;
ciopfs = callPackage ../tools/filesystems/ciopfs { }; ciopfs = callPackage ../tools/filesystems/ciopfs { };
citrix_receiver = callPackage ../applications/networking/remote/citrix-receiver { }; # Use Citrix Receiver 13.4.0 below if you get "A network error occured (SSL error 4)"
# See https://discussions.citrix.com/topic/385459-ssl-error-with-135-works-with-134/?p=1977735
citrix_receiver = hiPrio citrix_receiver_13_7_0;
citrix_receiver_13_7_0 = callPackage ../applications/networking/remote/citrix-receiver { version = "13.7.0"; };
citrix_receiver_13_6_0 = callPackage ../applications/networking/remote/citrix-receiver { version = "13.6.0"; };
citrix_receiver_13_5_0 = callPackage ../applications/networking/remote/citrix-receiver { version = "13.5.0"; };
citrix_receiver_13_4_0 = callPackage ../applications/networking/remote/citrix-receiver { version = "13.4.0"; };
citra = libsForQt5.callPackage ../misc/emulators/citra { }; citra = libsForQt5.callPackage ../misc/emulators/citra { };