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
, lib
, requireFile
, makeWrapper
, libredirect
@ -22,25 +23,67 @@
, alsaLib
, libidn
, zlib
, version ? null
}:
let versionRec = { major = "13"; minor = "7"; patch = "0"; };
in stdenv.mkDerivation rec {
let
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}";
version = with versionRec; "${major}.${minor}.${patch}";
homepage = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html;
version = "${major}.${minor}.${patch}";
inherit homepage;
prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
src = with versionRec; requireFile rec {
name =
if stdenv.is64bit
then "${prefixWithBitness}-${version}.10276927.tar.gz"
else "${prefixWithBitness}-${version}.10276925.tar.gz";
sha256 =
if stdenv.is64bit
then "18fb374b9fb8e249b79178500dddca7a1f275411c6537e7695da5dcf19c5ba91"
else "4c68723b0327cf6f12da824056fce2b7853c38e6163a48c9d222b93dd8da75b6";
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:
@ -48,7 +91,7 @@ in stdenv.mkDerivation rec {
${homepage}
(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")
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; {
license = stdenv.lib.licenses.unfree;
homepage = homepage;
inherit homepage;
description = "Citrix Receiver";
maintainers = with maintainers; [ obadz a1russell ];
platforms = platforms.linux;
};
}
};
in citrixReceiverForVersion (lib.getAttr version versionInfo)

View File

@ -1398,7 +1398,13 @@ with pkgs;
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 { };