Skip to content

Commit e535a2f

Browse files
authored
add freerdp3 package (FreeRDP 3.30.0) (#64)
Add a new external freerdp3 package derived from Buildroot's freerdp packaging and pin it to FreeRDP 3.30.0. Wire it into external Config.in and switch generic-x86_64 to freerdp3. Drop/rename obsolete FreeRDP2-era CMake flags for the FreeRDP 3.30.0 package wiring, and add a dedicated BR2_PACKAGE_FREERDP3_RDPECAM toggle that enables CHANNEL_RDPECAM and CHANNEL_RDPECAM_CLIENT with libv4l/libusb dependencies. Enable it in generic-x86_64 config. * freerdp3: add host-pkgconf build dependency (#66) * freerdp3: disable kerberos when krb5 is unavailable (#67) * use host dir pkg-config * add BR2_PACKAGE_FREERDP3_FUSE * remove obsolete FREERDP3_INSTALL_KEYS * add more cleanup stuff * fix buildroot package check linter error * add WITH_VERBOSE_WINPR_ASSERT=OFF * fix circular dependency issue * finalize freerdp 3.30.0 compile options * enable freerdp3 for all platforms * fix shellcheck
1 parent d772269 commit e535a2f

12 files changed

Lines changed: 689 additions & 10 deletions

File tree

.github/workflows/dependency-updates.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ jobs:
3030
package: buildroot
3131
version_file: Makefile
3232
version_regex: '^BUILDROOT_VERSION=(.*)$'
33+
- slug: freerdp3
34+
script: scripts/update-freerdp3.sh
35+
package: freerdp3
36+
version_file: buildroot-external/package/freerdp3/freerdp3.mk
37+
version_regex: '^FREERDP3_VERSION = (.*)$'
3338
- slug: hotkeyd
3439
script: scripts/update-hotkeyd.sh
3540
package: hotkeyd

buildroot-external/Config.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ menu "Additional software"
55
source "$BR2_EXTERNAL_THINROOT_PATH/package/qutselect/Config.in"
66
source "$BR2_EXTERNAL_THINROOT_PATH/package/thinlinc/Config.in"
77
source "$BR2_EXTERNAL_THINROOT_PATH/package/thinlinc-nightly/Config.in"
8+
source "$BR2_EXTERNAL_THINROOT_PATH/package/freerdp3/Config.in"
89
source "$BR2_EXTERNAL_THINROOT_PATH/package/hotkeyd/Config.in"
910
source "$BR2_EXTERNAL_THINROOT_PATH/package/numlockx/Config.in"
1011
source "$BR2_EXTERNAL_THINROOT_PATH/package/xprintidle/Config.in"

buildroot-external/configs/generic-x86_64.config

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ BR2_PACKAGE_LIBKRB5=y
3737
BR2_PACKAGE_LIBNSS=y
3838
BR2_PACKAGE_CUPS=y
3939
BR2_PACKAGE_LIBV4L_UTILS=y
40+
BR2_PACKAGE_LIBV4L=y
4041
BR2_TARGET_ROOTFS_INITRAMFS=y
4142

4243
# select/deselect webkiosk/thinroot applications
4344
BR2_PACKAGE_QUTSELECT=y
4445
BR2_PACKAGE_THINLINC_NIGHTLY=y
45-
BR2_PACKAGE_FREERDP=y
46-
# BR2_PACKAGE_FREERDP_CLIENT_WL is not set
46+
BR2_PACKAGE_FREERDP3=y
47+
BR2_PACKAGE_FREERDP3_RDPECAM=y
48+
# BR2_PACKAGE_FREERDP3_CLIENT_WL is not set
4749
BR2_PACKAGE_VIRT_VIEWER=y
4850
BR2_PACKAGE_WEBKITGTK=y
4951
BR2_PACKAGE_WEBKITGTK_HTTPS=y

buildroot-external/configs/rpi3.config

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE="multilib32_arm_a53.config"
5656
# select/deselect webkiosk/thinroot applications
5757
BR2_PACKAGE_QUTSELECT=y
5858
BR2_PACKAGE_THINLINC=y
59-
BR2_PACKAGE_FREERDP=y
60-
# BR2_PACKAGE_FREERDP_CLIENT_WL is not set
59+
BR2_PACKAGE_FREERDP3=y
60+
BR2_PACKAGE_FREERDP3_RDPECAM=y
61+
# BR2_PACKAGE_FREERDP3_CLIENT_WL is not set
6162
BR2_PACKAGE_VIRT_VIEWER=y
6263
BR2_PACKAGE_WEBKITGTK=y
6364
BR2_PACKAGE_WEBKITGTK_HTTPS=y

buildroot-external/configs/rpi4.config

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ BR2_PACKAGE_RPI_EEPROM=y
5656
# select/deselect webkiosk/thinroot applications
5757
BR2_PACKAGE_QUTSELECT=y
5858
BR2_PACKAGE_THINLINC=y
59-
BR2_PACKAGE_FREERDP=y
60-
# BR2_PACKAGE_FREERDP_CLIENT_WL is not set
59+
BR2_PACKAGE_FREERDP3=y
60+
BR2_PACKAGE_FREERDP3_RDPECAM=y
61+
# BR2_PACKAGE_FREERDP3_CLIENT_WL is not set
6162
BR2_PACKAGE_VIRT_VIEWER=y
6263
BR2_PACKAGE_WEBKITGTK=y
6364
BR2_PACKAGE_WEBKITGTK_HTTPS=y

buildroot-external/configs/rpi5.config

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ BR2_PACKAGE_RPI_EEPROM_RPI5=y
5555
# select/deselect webkiosk/thinroot applications
5656
BR2_PACKAGE_QUTSELECT=y
5757
BR2_PACKAGE_THINLINC=y
58-
BR2_PACKAGE_FREERDP=y
59-
# BR2_PACKAGE_FREERDP_CLIENT_WL is not set
58+
BR2_PACKAGE_FREERDP3=y
59+
BR2_PACKAGE_FREERDP3_RDPECAM=y
60+
# BR2_PACKAGE_FREERDP3_CLIENT_WL is not set
6061
BR2_PACKAGE_VIRT_VIEWER=y
6162
BR2_PACKAGE_WEBKITGTK=y
6263
BR2_PACKAGE_WEBKITGTK_HTTPS=y

buildroot-external/configs/tinkerboard.config

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/b
5353
# select/deselect webkiosk/thinroot applications
5454
BR2_PACKAGE_QUTSELECT=y
5555
BR2_PACKAGE_THINLINC=y
56-
BR2_PACKAGE_FREERDP=y
57-
# BR2_PACKAGE_FREERDP_CLIENT_WL is not set
56+
BR2_PACKAGE_FREERDP3=y
57+
BR2_PACKAGE_FREERDP3_RDPECAM=y
58+
# BR2_PACKAGE_FREERDP3_CLIENT_WL is not set
5859
BR2_PACKAGE_VIRT_VIEWER=y
5960
BR2_PACKAGE_WEBKITGTK=y
6061
BR2_PACKAGE_WEBKITGTK_HTTPS=y
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
config BR2_PACKAGE_FREERDP3
2+
bool "freerdp3"
3+
# FreeRDP does not have a single C++ source file, however it
4+
# insists on having a C++ compiler. Removing that requirement
5+
# is a bit too much involving, so we just depend on it...
6+
depends on BR2_INSTALL_LIBSTDCPP
7+
depends on BR2_USE_WCHAR
8+
depends on !BR2_STATIC_LIBS # uses dlfcn.h
9+
depends on BR2_TOOLCHAIN_HAS_THREADS
10+
depends on BR2_USE_MMU # libglib2
11+
depends on BR2_TOOLCHAIN_HAS_SYNC_4
12+
select BR2_PACKAGE_OPENSSL
13+
select BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL
14+
select BR2_PACKAGE_ZLIB
15+
select BR2_PACKAGE_LIBGLIB2
16+
help
17+
FreeRDP is a free implementation of the Remote Desktop
18+
Protocol (RDP), released under the Apache license
19+
20+
This only installs the freerdp libraries.
21+
22+
http://www.freerdp.com/
23+
24+
if BR2_PACKAGE_FREERDP3
25+
26+
config BR2_PACKAGE_FREERDP3_GSTREAMER1
27+
bool "gstreamer support"
28+
depends on BR2_PACKAGE_GSTREAMER1
29+
depends on BR2_PACKAGE_XORG7 # xlib-libxrandr
30+
# gstreamer-1.x dependencies already dependencies of FreeRDP
31+
select BR2_PACKAGE_GST1_PLUGINS_BASE
32+
select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP
33+
select BR2_PACKAGE_XLIB_LIBXRANDR
34+
35+
comment "gstreamer support needs X.Org"
36+
depends on !BR2_PACKAGE_XORG7
37+
depends on BR2_PACKAGE_GSTREAMER1
38+
39+
config BR2_PACKAGE_FREERDP3_SERVER
40+
bool "server"
41+
depends on BR2_PACKAGE_XORG7
42+
select BR2_PACKAGE_XLIB_LIBX11
43+
select BR2_PACKAGE_XLIB_LIBXDAMAGE
44+
select BR2_PACKAGE_XLIB_LIBXEXT
45+
select BR2_PACKAGE_XLIB_LIBXFIXES
46+
help
47+
Build the freerdp-shadow-cli server.
48+
49+
TLS certificate and private key material are not installed
50+
by this package and must be provisioned separately.
51+
52+
config BR2_PACKAGE_FREERDP3_CLIENT_X11
53+
bool "X11 client"
54+
default y
55+
depends on BR2_PACKAGE_XORG7
56+
select BR2_PACKAGE_XLIB_LIBX11
57+
select BR2_PACKAGE_XLIB_LIBXEXT
58+
59+
comment "server and X11 client need X.Org"
60+
depends on !BR2_PACKAGE_XORG7
61+
62+
config BR2_PACKAGE_FREERDP3_CLIENT_WL
63+
bool "wayland client"
64+
default y
65+
depends on BR2_PACKAGE_WAYLAND
66+
select BR2_PACKAGE_LIBXKBCOMMON
67+
68+
config BR2_PACKAGE_FREERDP3_RDPECAM
69+
bool "RDPECAM camera redirection"
70+
default y
71+
depends on BR2_PACKAGE_LIBUSB
72+
depends on BR2_PACKAGE_LIBV4L
73+
help
74+
Enable [MS-RDPECAM] camera redirection support for FreeRDP3.
75+
76+
This enables the rdpecam channel and
77+
the rdpecam client module.
78+
79+
comment "RDPECAM camera redirection needs libusb and libv4l"
80+
depends on !BR2_PACKAGE_LIBUSB || !BR2_PACKAGE_LIBV4L
81+
82+
config BR2_PACKAGE_FREERDP3_FUSE
83+
bool "FUSE clipboard file copy support"
84+
depends on BR2_PACKAGE_LIBFUSE3
85+
help
86+
Enable clipboard file copy support using FUSE3. This
87+
allows clipboard-based file transfers between the RDP
88+
client and server via a FUSE-mounted filesystem.
89+
90+
comment "FUSE clipboard support needs libfuse3"
91+
depends on !BR2_PACKAGE_LIBFUSE3
92+
93+
endif
94+
95+
comment "freerdp3 needs a toolchain w/ wchar, dynamic library, threads, C++"
96+
depends on BR2_TOOLCHAIN_HAS_SYNC_4
97+
depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
98+
|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Locally computed
2+
sha256 21b3f72bd688fcd1dbbef37b7129bfc9701906705572fce2a5a80b1e85ecc0ee freerdp3-3.30.0.tar.gz
3+
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE

0 commit comments

Comments
 (0)