about summary refs log tree commit diff
path: root/pkgs/applications/networking/remote/freerdp/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/remote/freerdp/default.nix')
-rw-r--r--pkgs/applications/networking/remote/freerdp/default.nix111
1 files changed, 60 insertions, 51 deletions
diff --git a/pkgs/applications/networking/remote/freerdp/default.nix b/pkgs/applications/networking/remote/freerdp/default.nix
index 05ec51d66814..d35f22c18396 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 = {
-    description = "A Remote Desktop Protocol Client";
+  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;
   };
 }