From 05684f313e58363568697dd0677ae2e927277b0c Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Sun, 5 Feb 2017 14:03:59 +0800 Subject: [PATCH 1/4] freerdp: 20160909 -> 20170201 and rename old freerdp to freerdp_legacy The former "stable" version of FreeRDP was actually not stable - it just happened to have a released version while being both buggy and insecure. The "unstable" branch hasn't seen a release in years, but everybody should be using this instead and I have been using it as a daily driver for ages. This new version works beautifully here. If/when at some point upstream does a normal release, we can bring back stable/unstable if needed. As I am quite dependent on FreeRDP working properly, I will be commit to keeping this updated. The commit used for this release follows the Arch Linux release. --- .../networking/remote/freerdp/default.nix | 111 ++++++++++-------- .../networking/remote/freerdp/legacy.nix | 73 ++++++++++++ .../networking/remote/freerdp/unstable.nix | 56 --------- pkgs/top-level/all-packages.nix | 16 ++- 4 files changed, 143 insertions(+), 113 deletions(-) create mode 100644 pkgs/applications/networking/remote/freerdp/legacy.nix delete mode 100644 pkgs/applications/networking/remote/freerdp/unstable.nix diff --git a/pkgs/applications/networking/remote/freerdp/default.nix b/pkgs/applications/networking/remote/freerdp/default.nix index 05ec51d6681..d35f22c1839 100644 --- a/pkgs/applications/networking/remote/freerdp/default.nix +++ b/pkgs/applications/networking/remote/freerdp/default.nix @@ -1,67 +1,76 @@ -{ stdenv -, fetchurl -, cmake -, openssl -, printerSupport ? true, cups -, pkgconfig -, zlib -, libX11 -, libXcursor -, libXdamage -, libXext -, alsaLib -, ffmpeg -, libxkbfile -#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt -, libXinerama -, libXv -, pulseaudioSupport ? true, libpulseaudio +{ stdenv, lib, fetchFromGitHub, substituteAll, cmake, pkgconfig +, alsaLib, ffmpeg_2, glib, openssl, pcre, zlib +, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama, libXrandr, libXrender, libXv +, libxkbcommon, libxkbfile +, wayland +, gstreamer, gst-plugins-base, gst-plugins-good +, libpulseaudio ? null +, cups ? null +, pcsclite ? null +, systemd ? null +, buildServer ? true +, optimize ? true }: -assert printerSupport -> cups != null; stdenv.mkDerivation rec { - name = "freerdp-${version}"; - version = "1.0.2"; + name = "freerdp-git-${version}"; + version = "20170201"; - src = fetchurl { - url = "https://github.com/FreeRDP/FreeRDP/archive/${version}.tar.gz"; - sha256 = "1w9dk7dsbppspnnms2xwwmbg7jm61i7aw5nkwzbpdyxngbgkgwf0"; + src = fetchFromGitHub { + owner = "FreeRDP"; + repo = "FreeRDP"; + rev = "6001cb710dc67eb8811362b7bf383754257a902b"; + sha256 = "0l2lwqk2r8rq8a0f91wbb30kqg21fv0k0508djpwj0pa9n73fgmg"; }; - buildInputs = [ - cmake - openssl - pkgconfig - zlib - libX11 - libXcursor - libXdamage - libXext - alsaLib - ffmpeg - libxkbfile -# xmlto docbook_xml_dtd_412 docbook_xml_xslt - libXinerama - libXv - ] ++ stdenv.lib.optional printerSupport cups; + # outputs = [ "bin" "out" "dev" ]; - configureFlags = [ - "--with-x" "-DWITH_MANPAGES=OFF" - ] ++ stdenv.lib.optional printerSupport "--with-printer=cups" - ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON"; + prePatch = '' + export HOME=$TMP + substituteInPlace "libfreerdp/freerdp.pc.in" \ + --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@" + ''; - meta = { + patches = with lib; [ + ] ++ optional (pcsclite != null) + (substituteAll { + src = ./dlopen-absolute-paths.diff; + inherit pcsclite; + }); + + buildInputs = with lib; [ + alsaLib cups ffmpeg_2 glib openssl pcre pcsclite libpulseaudio zlib + gstreamer gst-plugins-base gst-plugins-good + libX11 libXcursor libXdamage libXext libXi libXinerama libXrandr libXrender libXv + libxkbcommon libxkbfile + wayland + ] ++ optional stdenv.isLinux systemd; + + nativeBuildInputs = [ + cmake pkgconfig + ]; + + doCheck = false; + + cmakeFlags = with lib; [ + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DWITH_CUNIT=OFF" + "-DWITH_OSS=OFF" + ] ++ optional (libpulseaudio != null) "-DWITH_PULSE=ON" + ++ optional (cups != null) "-DWITH_CUPS=ON" + ++ optional (pcsclite != null) "-DWITH_PCSC=ON" + ++ optional buildServer "-DWITH_SERVER=ON" + ++ optional optimize "-DWITH_SSE2=ON"; + + meta = with lib; { description = "A Remote Desktop Protocol Client"; - longDescription = '' FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) following the Microsoft Open Specifications. ''; - homepage = http://www.freerdp.com/; - - license = stdenv.lib.licenses.free; - platforms = stdenv.lib.platforms.linux; - broken = true; + license = licenses.asl20; + maintainers = with maintainers; [ wkennington peterhoeg ]; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/networking/remote/freerdp/legacy.nix b/pkgs/applications/networking/remote/freerdp/legacy.nix new file mode 100644 index 00000000000..d3746fa6c7a --- /dev/null +++ b/pkgs/applications/networking/remote/freerdp/legacy.nix @@ -0,0 +1,73 @@ +{ stdenv +, fetchurl +, cmake +, openssl +, glib, pcre +, printerSupport ? true, cups +, pkgconfig +, zlib +, libX11 +, libXcursor +, libXdamage +, libXext +, alsaLib +, ffmpeg +, libxkbfile +#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt +, libXfixes +, libXinerama +, libXv +, pulseaudioSupport ? true, libpulseaudio +}: + +assert printerSupport -> cups != null; + +stdenv.mkDerivation rec { + name = "freerdp-${version}"; + version = "1.2.0-beta1+android9"; + + src = fetchurl { + url = "https://github.com/FreeRDP/FreeRDP/archive/${version}.tar.gz"; + sha256 = "181w4lkrk5h5kh2zjlx6h2cl1mfw2aaami3laq3q32pfj06q3rxl"; + }; + + buildInputs = [ + cmake + openssl + glib pcre + pkgconfig + zlib + libX11 + libXcursor + libXdamage + libXext + alsaLib + ffmpeg + libxkbfile +# xmlto docbook_xml_dtd_412 docbook_xml_xslt + libXinerama + libXv + ] ++ stdenv.lib.optional printerSupport cups; + + preConfigure = '' + export HOME=$TMP + ''; + + configureFlags = [ + "--with-x" "-DWITH_MANPAGES=OFF" + ] ++ stdenv.lib.optional printerSupport "--with-printer=cups" + ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON"; + + meta = with stdenv.lib; { + description = "A Remote Desktop Protocol Client"; + + longDescription = '' + FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) + following the Microsoft Open Specifications. + ''; + + homepage = http://www.freerdp.com/; + license = licenses.free; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/remote/freerdp/unstable.nix b/pkgs/applications/networking/remote/freerdp/unstable.nix deleted file mode 100644 index 5483e942076..00000000000 --- a/pkgs/applications/networking/remote/freerdp/unstable.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig, openssl, zlib, libX11, libXcursor -, libXdamage, libXext, libXrender, glib, alsaLib, ffmpeg, libxkbfile, libXinerama, libXv -, substituteAll -, libpulseaudio ? null, cups ? null, pcsclite ? null -, buildServer ? true, optimize ? true -}: - -stdenv.mkDerivation rec { - name = "freerdp-2.0-dev"; - - src = fetchFromGitHub { - owner = "FreeRDP"; - repo = "FreeRDP"; - rev = "1855e36179fb197e713d41c4ef93e19cf1f0be2f"; - sha256 = "1lydkh6by0sjy6dl57bzg7c11ccyp24s80pwxw9h5kmxkbw6mx5q"; - }; - - prePatch = '' - substituteInPlace "libfreerdp/freerdp.pc.in" --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@" - ''; - - patches = [ - ] ++ stdenv.lib.optional (pcsclite != null) - (substituteAll { - src = ./dlopen-absolute-paths.diff; - inherit pcsclite; - }); - - buildInputs = [ - cmake pkgconfig openssl zlib libX11 libXcursor libXdamage libXext libXrender glib - alsaLib ffmpeg libxkbfile libXinerama libXv cups libpulseaudio pcsclite - ]; - - doCheck = false; - - cmakeFlags = [ - "-DCMAKE_INSTALL_LIBDIR=lib" - "-DWITH_CUNIT=OFF" - ] ++ stdenv.lib.optional (libpulseaudio != null) "-DWITH_PULSE=ON" - ++ stdenv.lib.optional (cups != null) "-DWITH_CUPS=ON" - ++ stdenv.lib.optional (pcsclite != null) "-DWITH_PCSC=ON" - ++ stdenv.lib.optional buildServer "-DWITH_SERVER=ON" - ++ stdenv.lib.optional optimize "-DWITH_SSE2=ON"; - - meta = with stdenv.lib; { - description = "A Remote Desktop Protocol Client"; - longDescription = '' - FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) - following the Microsoft Open Specifications. - ''; - homepage = http://www.freerdp.com/; - license = licenses.asl20; - maintainers = with maintainers; [ wkennington ]; - platforms = platforms.unix; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 28668e0fc1c..30b58edc45a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13360,14 +13360,18 @@ with pkgs; xfontsel = callPackage ../applications/misc/xfontsel { }; inherit (xorg) xlsfonts; - freerdpStable = callPackage ../applications/networking/remote/freerdp { + freerdp = callPackage ../applications/networking/remote/freerdp { + inherit libpulseaudio; + inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good; + }; + + freerdpUnstable = freerdp; + + # This must go when weston v2 is released + freerdp_legacy = callPackage ../applications/networking/remote/freerdp/legacy.nix { + cmake = cmake_2_8; ffmpeg = ffmpeg_1; }; - freerdpUnstable = callPackage ../applications/networking/remote/freerdp/unstable.nix { - ffmpeg = ffmpeg_2; - cmake = cmake_2_8; - }; - freerdp = freerdpUnstable; # freerdpStable is marked broken, please switch back to it once fixed freicoin = callPackage ../applications/misc/freicoin { boost = boost155; From e881a21ada36d8bf74bfb70f9334f0ae315e94d1 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Sun, 5 Feb 2017 14:04:51 +0800 Subject: [PATCH 2/4] weston: depend on freerdp_legacy --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30b58edc45a..4dd3a01ac3e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15497,7 +15497,7 @@ with pkgs; }; weston = callPackage ../applications/window-managers/weston { - freerdp = freerdpUnstable; + freerdp = freerdp_legacy; }; windowlab = callPackage ../applications/window-managers/windowlab { }; From 5dbbdce047a8f8cd7eae5b772f03b010385ad073 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Sun, 5 Feb 2017 14:05:10 +0800 Subject: [PATCH 3/4] kde4.krdc: depend on freerdp_legacy --- pkgs/desktops/kde-4.14/kdenetwork/krdc.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix b/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix index 80557e827fe..12cdd4a569c 100644 --- a/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix +++ b/pkgs/desktops/kde-4.14/kdenetwork/krdc.nix @@ -1,7 +1,7 @@ -{ kde, kdelibs, libvncserver, freerdp, telepathy_qt }: +{ kde, kdelibs, libvncserver, freerdp_legacy, telepathy_qt }: kde { - buildInputs = [ kdelibs libvncserver freerdp telepathy_qt ]; + buildInputs = [ kdelibs libvncserver freerdp_legacy telepathy_qt ]; meta = { description = "KDE remote desktop client"; From 94b0128cc627090a9fa8f412668c2386973255ee Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Sun, 5 Feb 2017 14:05:31 +0800 Subject: [PATCH 4/4] remmina: 1.2.0-rcgit.15 -> 1.2.0-rcgit.17 We also drop the embedded freerdp in favour of freerdp from upstream. --- .../networking/remote/remmina/default.nix | 34 +++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/pkgs/applications/networking/remote/remmina/default.nix b/pkgs/applications/networking/remote/remmina/default.nix index ec31beb0080..c3eca16af01 100644 --- a/pkgs/applications/networking/remote/remmina/default.nix +++ b/pkgs/applications/networking/remote/remmina/default.nix @@ -10,7 +10,7 @@ }: let - version = "1.2.0-rcgit.15"; + version = "1.2.0-rcgit.17"; desktopItem = makeDesktopItem { name = "remmina"; @@ -22,41 +22,33 @@ let categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;"; }; - # Latest release of remmina refers to thing that aren't yet in - # a FreeRDP release so we need to build one from git source - # See also https://github.com/FreeRDP/Remmina/pull/731 - # Remove when FreeRDP release catches up with this commit - freerdp_git = stdenv.lib.overrideDerivation freerdp (args: { - name = "freerdp-git-2016-09-30"; - src = fetchFromGitHub { - owner = "FreeRDP"; - repo = "FreeRDP"; - rev = "dbb353db92e7a5cb0be3c73aa950fb1113e627ec"; - sha256 = "1nhm4v6z9var9hasp4bkmhvlrksbdizx95swx19shizfc82s9g4y"; - }; - }); - -in - -stdenv.mkDerivation { +in stdenv.mkDerivation { name = "remmina-${version}"; src = fetchFromGitHub { owner = "FreeRDP"; repo = "Remmina"; rev = "v${version}"; - sha256 = "07lj6a7x9cqcff18pwfkx8c8iml015zp6sq29dfcxpfg4ai578h0"; + sha256 = "1vfg8sfpj83ircp7ny6xsbn2ba5xbp3xrdl5wwyfcg1zrpdmi7f1"; }; buildInputs = [ cmake pkgconfig wrapGAppsHook gsettings_desktop_schemas glib gtk3 gettext libxkbfile libgnome_keyring libX11 - freerdp_git libssh libgcrypt gnutls + freerdp libssh libgcrypt gnutls pcre webkitgtk libdbusmenu-gtk3 libappindicator-gtk3 libvncserver libpthreadstubs libXdmcp libxkbcommon libsecret spice_protocol spice_gtk epoxy at_spi2_core openssl hicolor_icon_theme adwaita-icon-theme ]; - cmakeFlags = "-DWITH_VTE=OFF -DWITH_TELEPATHY=OFF -DWITH_AVAHI=OFF -DWINPR_INCLUDE_DIR=${freerdp_git}/include/winpr2"; + cmakeFlags = [ + "-DWITH_VTE=OFF" + "-DWITH_TELEPATHY=OFF" + "-DWITH_AVAHI=OFF" + "-DFREERDP_LIBRARY=${freerdp}/lib/libfreerdp2.so" + "-DFREERDP_CLIENT_LIBRARY=${freerdp}/lib/libfreerdp-client2.so" + "-DFREERDP_WINPR_LIBRARY=${freerdp}/lib/libwinpr2.so" + "-DWINPR_INCLUDE_DIR=${freerdp}/include/winpr2" + ]; preFixup = '' gappsWrapperArgs+=(