freerdp3: init at 3.4.0

Non-maintainer upload. Did not test.

Mostly based on changes in `packaging/rpm/freerdp-nightly.spec`.

ref: 8032bb6173
This commit is contained in:
Bobby Rong 2024-02-26 22:09:52 +08:00 committed by Maxine Aubrey
parent d548f7858b
commit 9914081155
No known key found for this signature in database
GPG Key ID: F6FE033DFCB899F7
2 changed files with 222 additions and 4 deletions

View File

@ -0,0 +1,209 @@
{ stdenv
, lib
, fetchFromGitHub
, cmake
, docbook-xsl-nons
, libxslt
, pkg-config
, alsa-lib
, faac
, faad2
, ffmpeg
, fuse3
, glib
, openh264
, openssl
, p11-kit
, pcre2
, pkcs11helper
, uriparser
, zlib
, libX11
, libXcursor
, libXdamage
, libXdmcp
, libXext
, libXi
, libXinerama
, libXrandr
, libXrender
, libXtst
, libXv
, libxkbcommon
, libxkbfile
, wayland
, wayland-scanner
, icu
, libunwind
, orc
, cairo
, cjson
, libusb1
, libpulseaudio
, cups
, pcsclite
, SDL2
, SDL2_ttf
, SDL2_image
, systemd
, libjpeg_turbo
, libkrb5
, libopus
, buildServer ? true
, nocaps ? false
, AudioToolbox
, AVFoundation
, Carbon
, Cocoa
, CoreMedia
, withUnfree ? false
# tries to compile and run generate_argument_docbook.c
, withManPages ? stdenv.buildPlatform.canExecute stdenv.hostPlatform
, buildPackages
}:
let
cmFlag = flag: if flag then "ON" else "OFF";
in
stdenv.mkDerivation (finalAttrs: {
pname = "freerdp";
version = "3.4.0";
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
rev = finalAttrs.version;
hash = "sha256-ZOYHhldTdV8DrOHoXS42NXB6JHBJMGRswgTczn1S6BE=";
};
postPatch = ''
export HOME=$TMP
# skip NIB file generation on darwin
substituteInPlace "client/Mac/CMakeLists.txt" "client/Mac/cli/CMakeLists.txt" \
--replace-fail "if (NOT IS_XCODE)" "if (FALSE)"
substituteInPlace "libfreerdp/freerdp.pc.in" \
--replace-fail "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@"
'' + lib.optionalString (pcsclite != null) ''
substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \
--replace-fail "libpcsclite.so" "${lib.getLib pcsclite}/lib/libpcsclite.so"
'' + lib.optionalString nocaps ''
substituteInPlace "libfreerdp/locale/keyboard_xkbfile.c" \
--replace-fail "RDP_SCANCODE_CAPSLOCK" "RDP_SCANCODE_LCONTROL"
'';
nativeBuildInputs = [
cmake
libxslt
docbook-xsl-nons
pkg-config
wayland-scanner
];
buildInputs = [
cairo
cjson
cups
faad2
ffmpeg
glib
icu
libX11
libXcursor
libXdamage
libXdmcp
libXext
libXi
libXinerama
libXrandr
libXrender
libXtst
libXv
libjpeg_turbo
libkrb5
libopus
libpulseaudio
libunwind
libusb1
libxkbcommon
libxkbfile
openh264
openssl
orc
pcre2
pcsclite
pkcs11helper
SDL2
SDL2_ttf
SDL2_image
uriparser
zlib
] ++ lib.optionals stdenv.isLinux [
alsa-lib
fuse3
systemd
wayland
] ++ lib.optionals stdenv.isDarwin [
AudioToolbox
AVFoundation
Carbon
Cocoa
CoreMedia
] ++ lib.optionals withUnfree [
faac
];
# https://github.com/FreeRDP/FreeRDP/issues/8526#issuecomment-1357134746
cmakeFlags = [
"-Wno-dev"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DDOCBOOKXSL_DIR=${docbook-xsl-nons}/xml/xsl/docbook"
"-DWAYLAND_SCANNER=${buildPackages.wayland-scanner}/bin/wayland-scanner"
] ++ lib.mapAttrsToList (k: v: "-D${k}=${cmFlag v}") {
BUILD_TESTING = false; # false is recommended by upstream
WITH_CAIRO = (cairo != null);
WITH_CUPS = (cups != null);
WITH_FAAC = (withUnfree && faac != null);
WITH_FAAD2 = (faad2 != null);
WITH_FUSE = (stdenv.isLinux && fuse3 != null);
WITH_JPEG = (libjpeg_turbo != null);
WITH_KRB5 = (libkrb5 != null);
WITH_OPENH264 = (openh264 != null);
WITH_OPUS = (libopus != null);
WITH_OSS = false;
WITH_MANPAGES = withManPages;
WITH_PCSC = (pcsclite != null);
WITH_PULSE = (libpulseaudio != null);
WITH_SERVER = buildServer;
WITH_WEBVIEW = false; # avoid introducing webkit2gtk-4.0
WITH_VAAPI = false; # false is recommended by upstream
WITH_X11 = true;
};
env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.isDarwin [
"-DTARGET_OS_IPHONE=0"
"-DTARGET_OS_WATCH=0"
"-include AudioToolbox/AudioToolbox.h"
] ++ lib.optionals stdenv.cc.isClang [
"-Wno-error=incompatible-function-pointer-types"
]);
env.NIX_LDFLAGS = toString (lib.optionals stdenv.isDarwin [
"-framework AudioToolbox"
]);
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 = "https://www.freerdp.com/";
license = licenses.asl20;
maintainers = with maintainers; [ peterhoeg lheckemann ];
platforms = platforms.unix;
};
})

View File

@ -31390,10 +31390,19 @@ with pkgs;
pulseaudio-module-xrdp = callPackage ../applications/networking/remote/xrdp/pulseaudio-module-xrdp { };
inherit
({
freerdp = callPackage ../applications/networking/remote/freerdp {
inherit (darwin.apple_sdk.frameworks) AudioToolbox AVFoundation Carbon Cocoa CoreMedia;
inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good;
};
freerdp3 = callPackage ../applications/networking/remote/freerdp/3.nix {
inherit (darwin.apple_sdk.frameworks) AudioToolbox AVFoundation Carbon Cocoa CoreMedia;
};
})
freerdp
freerdp3
;
freerdpUnstable = freerdp;