diff --git a/freerdp-builtin-channels-off-link-fix.diff b/freerdp-builtin-channels-off-link-fix.diff new file mode 100644 index 0000000..6f3aa7a --- /dev/null +++ b/freerdp-builtin-channels-off-link-fix.diff @@ -0,0 +1,32 @@ +--- FreeRDP-2.4.0/channels/video/client/CMakeLists.txt~ 2021-07-27 11:58:27.000000000 +0200 ++++ FreeRDP-2.4.0/channels/video/client/CMakeLists.txt 2021-08-20 10:35:04.496719927 +0200 +@@ -26,7 +26,8 @@ include_directories(..) + add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE "DVCPluginEntry") + + +- ++set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client) ++set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} rdpgfx-client) + set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr) + + target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) +--- FreeRDP-2.4.0/channels/rdpsnd/client/proxy/CMakeLists.txt~ 2021-07-27 11:58:27.000000000 +0200 ++++ FreeRDP-2.4.0/channels/rdpsnd/client/proxy/CMakeLists.txt 2021-08-20 13:45:38.459395909 +0200 +@@ -25,6 +25,7 @@ include_directories(..) + + add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "") + ++list(APPEND ${MODULE_PREFIX}_LIBS freerdp-client) + list(APPEND ${MODULE_PREFIX}_LIBS freerdp) + list(APPEND ${MODULE_PREFIX}_LIBS winpr) + +--- FreeRDP-2.4.0/channels/rdp2tcp/client/CMakeLists.txt~ 2021-07-27 11:58:27.000000000 +0200 ++++ FreeRDP-2.4.0/channels/rdp2tcp/client/CMakeLists.txt 2021-08-21 13:15:02.847667180 +0200 +@@ -22,6 +22,6 @@ set(${MODULE_PREFIX}_SRCS + + add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE "VirtualChannelEntryEx") + +-target_link_libraries(${MODULE_NAME} freerdp) ++target_link_libraries(${MODULE_NAME} winpr freerdp) + + set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Client") diff --git a/freerdp-fix-plugin-path.patch b/freerdp-fix-plugin-path.patch new file mode 100644 index 0000000..dfa8113 --- /dev/null +++ b/freerdp-fix-plugin-path.patch @@ -0,0 +1,78 @@ +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -948,11 +948,28 @@ set(FREERDP_EXTENSION_PATH "${CMAKE_INST + # Proxy plugins path + if(NOT DEFINED PROXY_PLUGINDIR) + message("using default plugins location") +- set(FREERDP_PROXY_PLUGINDIR "${CMAKE_BINARY_DIR}/server/proxy/plugins") ++ set(FREERDP_PROXY_PLUGINDIR "${FREERDP_PLUGIN_PATH}/server/proxy/plugins") + else() + set(FREERDP_PROXY_PLUGINDIR "${PROXY_PLUGINDIR}") + endif() + ++function(dump_cmake_variables) ++ get_cmake_property(_variableNames VARIABLES) ++ list (SORT _variableNames) ++ foreach (_variableName ${_variableNames}) ++ if (ARGV0) ++ unset(MATCHED) ++ string(REGEX MATCH ${ARGV0} MATCHED ${_variableName}) ++ if (NOT MATCHED) ++ continue() ++ endif() ++ endif() ++ message(STATUS "${_variableName}=${${_variableName}}") ++ endforeach() ++endfunction() ++ ++dump_cmake_variables("^FREERDP") ++ + # Declare we have config.h, generated later on. + add_definitions("-DHAVE_CONFIG_H") + +Index: b/channels/client/addin.c +=================================================================== +--- a/channels/client/addin.c ++++ b/channels/client/addin.c +@@ -157,7 +157,7 @@ static FREERDP_ADDIN** freerdp_channels_ + LPSTR pszPattern; + size_t cchPattern; + LPCSTR pszAddinPath = FREERDP_ADDIN_PATH; +- LPCSTR pszInstallPrefix = FREERDP_INSTALL_PREFIX; ++ LPCSTR pszInstallPrefix = ""; + LPCSTR pszExtension; + LPSTR pszSearchPath; + size_t cchSearchPath; +@@ -166,7 +166,7 @@ static FREERDP_ADDIN** freerdp_channels_ + FREERDP_ADDIN** ppAddins; + WIN32_FIND_DATAA FindData; + cchAddinPath = strnlen(pszAddinPath, sizeof(FREERDP_ADDIN_PATH)); +- cchInstallPrefix = strnlen(pszInstallPrefix, sizeof(FREERDP_INSTALL_PREFIX)); ++ cchInstallPrefix = strnlen(pszInstallPrefix, 0); + pszExtension = PathGetSharedLibraryExtensionA(0); + cchPattern = 128 + strnlen(pszExtension, MAX_PATH) + 2; + pszPattern = (LPSTR)malloc(cchPattern + 1); +Index: b/libfreerdp/common/addin.c +=================================================================== +--- a/libfreerdp/common/addin.c ++++ b/libfreerdp/common/addin.c +@@ -55,7 +55,7 @@ LPSTR freerdp_get_library_install_path(v + size_t cchInstallPrefix; + BOOL needLibPath, needInstallPath; + LPCSTR pszLibraryPath = FREERDP_LIBRARY_PATH; +- LPCSTR pszInstallPrefix = FREERDP_INSTALL_PREFIX; ++ LPCSTR pszInstallPrefix = ""; + cchLibraryPath = strlen(pszLibraryPath) + 1; + cchInstallPrefix = strlen(pszInstallPrefix) + 1; + cchPath = cchInstallPrefix + cchLibraryPath; +@@ -96,7 +96,7 @@ LPSTR freerdp_get_dynamic_addin_install_ + size_t cchInstallPrefix; + BOOL needLibPath, needInstallPath; + LPCSTR pszAddinPath = FREERDP_ADDIN_PATH; +- LPCSTR pszInstallPrefix = FREERDP_INSTALL_PREFIX; ++ LPCSTR pszInstallPrefix = ""; + cchAddinPath = strlen(pszAddinPath) + 1; + cchInstallPrefix = strlen(pszInstallPrefix) + 1; + cchPath = cchInstallPrefix + cchAddinPath; diff --git a/freerdp.changes b/freerdp.changes index f5846d3..6447b03 100644 --- a/freerdp.changes +++ b/freerdp.changes @@ -1,3 +1,36 @@ +------------------------------------------------------------------- +Sat Sep 18 10:21:29 UTC 2021 - Hans-Peter Jansen + +- Create an explicit freerdp dependency for libwinpr + +------------------------------------------------------------------- +Fri Sep 17 16:37:13 UTC 2021 - Hans-Peter Jansen + +- Add preliminary patch freerdp-fix-plugin-path.patch to fix dynamic + addin loading + +------------------------------------------------------------------- +Fri Sep 17 10:27:03 UTC 2021 - Johannes Weberhofer + +- Modified spec to satisfy because obs-service-source_validator does not + support elif + +------------------------------------------------------------------- +Wed Sep 15 17:18:29 UTC 2021 - Hans-Peter Jansen + +- Fix the spec-cleaner mess +- Enable a few options on TW +- Build for 15.3 required another lib +- Remove X264 option, no related backend exists and enabling it fails + in cmake creation stage + +------------------------------------------------------------------- +Fri Aug 20 13:27:31 UTC 2021 - Hans-Peter Jansen + +- Reorganize build flags +- Apply fix for -DBUILTIN_CHANNELS=OFF: freerdp-builtin-channels-off-link-fix.diff +- Add plugins to libwinpr + ------------------------------------------------------------------- Wed Aug 11 10:51:40 UTC 2021 - Johannes Weberhofer @@ -80,7 +113,7 @@ Thu Feb 25 09:46:34 UTC 2021 - Johannes Weberhofer ------------------------------------------------------------------- Mon Jul 20 14:22:07 UTC 2020 - Johannes Weberhofer -- Updated to release 2.2.0 (boo#1174321) +- Updated to release 2.2.0 (boo#1174321, gh#FreeRDP/FreeRDP#6381) * SECURITY: CVE-2020-15103 - Integer overflow due to missing input sanitation in rdpegfx channel * Sound & mic - filter GSM codec for microphone redirection (gh#FreeRDP/FreeRDP#6263) * windows client title length (gh#FreeRDP/FreeRDP#6335) @@ -95,6 +128,7 @@ Mon Jul 20 14:22:07 UTC 2020 - Johannes Weberhofer - new: support for heartbeats - new: support for rail handshake ex flags - fix: possible race condition with redirects + * Drop upstream fixed patch: freerdp-CVE-2020-15103.patch - Removed freerdp_Mask_CACHED_BRUSH_when_checking_brush_style.patch diff --git a/freerdp.spec b/freerdp.spec index 00a2330..93dc788 100644 --- a/freerdp.spec +++ b/freerdp.spec @@ -16,16 +16,27 @@ # -# X264 and OPENH264 are disabled because openSUSE does not provide the codecs +%if 0%{?suse_version} > 1500 && 0%{?is_opensuse} +%global _with_ffmpeg 1 +#global _with_openh264 1 +%global _with_soxr 1 +%global _with_lame 1 +%else +%if 0%{?sle_version} == 150200 && 0%{?is_opensuse} +%global _with_ffmpeg 1 +%endif +%endif + # enable -DWITH_GSSAPI=ON again after #gh/FreeRDP/FreeRDP/4348 has been fixed #global _with_gss 1 -# + %define major_version 2 %define uwac_version 0 %define uwac_package %{uwac_version}-%{uwac_version} %ifarch aarch64 %{arm} %define _lto_cflags %{nil} %endif + Name: freerdp Version: 2.4.0 Release: 0 @@ -35,6 +46,10 @@ Group: Productivity/Networking/Other URL: https://www.freerdp.com/ Source0: https://github.com/FreeRDP/FreeRDP/archive/%{version}.tar.gz#/FreeRDP-%{version}.tar.gz Source1: freerdp-rpmlintrc +# PATCH-FIX-UPSTREAM freerdp-channels-off-link-fix.diff -- based on https://github.com/FreeRDP/FreeRDP/pull/7235 +Patch0: freerdp-builtin-channels-off-link-fix.diff +# PATCH-FIX-SUSE freerdp-fix-plugin-path.patch -- preliminary fix addin loading +Patch1: freerdp-fix-plugin-path.patch BuildRequires: chrpath BuildRequires: cmake >= 2.8 BuildRequires: cups-devel @@ -52,12 +67,15 @@ BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(gstreamer-1.0) BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) BuildRequires: pkgconfig(icu-i18n) -BuildRequires: pkgconfig(krb5) +%{?_with_gss:BuildRequires: pkgconfig(krb5) >= 1.13} +%{?_with_lame:BuildRequires: libmp3lame-devel} BuildRequires: pkgconfig(libpcsclite) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libusb-1.0) +%{?_with_openh264:BuildRequires: libopenh264-devel} BuildRequires: pkgconfig(openssl) +%{?_with_soxr:BuildRequires: pkgconfig(soxr)} BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-scanner) BuildRequires: pkgconfig(x11) @@ -73,6 +91,11 @@ BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(xv) Requires: lib%{name}%{major_version} = %{version}-%{release} +Requires: libwinpr%{major_version} = %{version}-%{release} +%{?_with_ffmpeg: +BuildRequires: pkgconfig(libavcodec) >= 57.48.101 +BuildRequires: pkgconfig(libavutil) +} %description FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP) @@ -182,17 +205,60 @@ export CFLAGS="%{optflags} -fPIE -pie" -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCMAKE_SKIP_RPATH=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DWITH_SERVER=ON \ - -DWITH_PCSC=ON \ + -DWITH_ALSA=ON \ -DWITH_CAIRO=ON \ -DWITH_CUPS=ON \ - -DWITH_JPEG=ON \ - -DWITH_X264=OFF \ - -DWITH_OPENH264=OFF \ + -DWITH_CHANNELS=ON -DBUILTIN_CHANNELS=OFF \ + -DWITH_CLIENT=ON \ + -DWITH_DIRECTFB=OFF \ + -DWITH_FFMPEG=%{?_with_ffmpeg:ON}%{?!_with_ffmpeg:OFF} \ -DWITH_GSM=ON \ -DWITH_GSSAPI=%{?_with_gss:ON}%{?!_with_gss:OFF} \ - -DWITH_CHANNELS=ON \ - -DBUILTIN_CHANNELS=ON \ + -DWITH_GSTREAMER_1_0=ON -DWITH_GSTREAMER_0_10=OFF \ + -DWITH_ICU=ON \ + -DWITH_IPP=OFF \ + -DWITH_JPEG=ON \ + -DWITH_LAME=%{?_with_lame:ON}%{?!_with_lame:OFF} \ + -DWITH_MANPAGES=ON \ + -DWITH_OPENH264=%{?_with_openh264:ON}%{?!_with_openh264:OFF} \ + -DWITH_OPENSSL=ON \ + -DWITH_PCSC=ON \ + -DWITH_PULSE=ON \ + -DWITH_SERVER=ON \ + -DWITH_SERVER_INTERFACE=ON \ + -DWITH_SHADOW_X11=ON \ + -DWITH_SHADOW_MAC=ON \ + -DWITH_SOXR=%{?_with_soxr:ON}%{?!_with_soxr:OFF} \ + -DWITH_WAYLAND=ON \ + -DWITH_X11=ON \ + -DWITH_XCURSOR=ON \ + -DWITH_XEXT=ON \ + -DWITH_XKBFILE=ON \ + -DWITH_XI=ON \ + -DWITH_XINERAMA=ON \ + -DWITH_XRENDER=ON \ + -DWITH_XTEST=ON \ + -DWITH_XV=ON \ + -DWITH_ZLIB=ON \ +%ifarch x86_64 + -DWITH_SSE2=ON \ + -DWITH_VAAPI=%{?_with_ffmpeg:ON}%{?!_with_ffmpeg:OFF} \ +%else + -DWITH_SSE2=OFF \ +%endif +%ifarch armv7hl + -DARM_FP_ABI=hard \ + -DWITH_NEON=OFF \ +%endif +%ifarch armv7hnl + -DARM_FP_ABI=hard \ + -DWITH_NEON=ON \ +%endif +%ifarch armv5tel armv6l armv7l + -DARM_FP_ABI=soft \ + -DWITH_NEON=OFF \ +%endif + -DCHANNEL_GEOMETRY=ON -DCHANNEL_GEOMETRY_CLIENT=ON \ -DCHANNEL_URBDRC=ON \ -DCHANNEL_URBDRC_CLIENT=ON @@ -237,6 +303,8 @@ cd build %{_libdir}/lib%{name}-shadow%{major_version}.so.* %{_libdir}/lib%{name}-server%{major_version}.so.* %{_libdir}/lib%{name}-shadow-subsystem%{major_version}.so.* +%dir %{_libdir}/freerdp2 +%{_libdir}/freerdp2/*.so %files devel %{_libdir}/cmake/FreeRDP%{major_version}