From 87e26e47695b3a85fc46a4d2a6a9f32c38a5cad7 Mon Sep 17 00:00:00 2001 From: Gyorgy Sarvari Date: Tue, 17 Mar 2026 15:02:25 +0100 Subject: freerdp3: upgrade 3.23.0 -> 3.24.0 Contains many bugfixes and CVE fixes: https://github.com/FreeRDP/FreeRDP/releases/tag/3.24.0 Added build option to use internal rc4 and md4 ciphers: this is due to a recent change in oe-core. OpenSSL's legacy ciphers (like RC4 and MD4) are now disabled by default (with 'legacy' PACKAGECONFIG), however FreeRDP3 relies on them. To ensure that the required ciphers are available, build the recipe with this ciphers' internal implementations instead of expecting OpenSSL to support them. Ptests passed successfully. Signed-off-by: Gyorgy Sarvari Signed-off-by: Khem Raj --- meta-oe/recipes-support/freerdp/freerdp3_3.23.0.bb | 126 -------------------- meta-oe/recipes-support/freerdp/freerdp3_3.24.0.bb | 128 +++++++++++++++++++++ 2 files changed, 128 insertions(+), 126 deletions(-) delete mode 100644 meta-oe/recipes-support/freerdp/freerdp3_3.23.0.bb create mode 100644 meta-oe/recipes-support/freerdp/freerdp3_3.24.0.bb (limited to 'meta-oe') diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.23.0.bb b/meta-oe/recipes-support/freerdp/freerdp3_3.23.0.bb deleted file mode 100644 index 52ec74d5d7..0000000000 --- a/meta-oe/recipes-support/freerdp/freerdp3_3.23.0.bb +++ /dev/null @@ -1,126 +0,0 @@ -DESCRIPTION = "FreeRDP RDP client & server library" -HOMEPAGE = "http://www.freerdp.com" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" - -DEPENDS = "openssl libusb1 uriparser cairo icu pkcs11-helper zlib jpeg json-c" -RDEPENDS:${PN}-ptest += "cmake coreutils" - -inherit pkgconfig cmake ptest - -SRCREV = "b933ae18d9ad2a1d73c610868fcc30eb61654070" -SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV} \ - file://run-ptest" - - -CVE_PRODUCT = "freerdp" - -PACKAGECONFIG ??= " \ - ${@bb.utils.filter('DISTRO_FEATURES', 'pam pulseaudio wayland x11', d)} \ - ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)} \ - gstreamer cups pcsc \ - ${@bb.utils.contains('PTEST_ENABLED', '1', 'test', '', d)} \ -" - -EXTRA_OECMAKE = " \ - -DRDTK_FORCE_STATIC_BUILD=ON \ - -DUWAC_FORCE_STATIC_BUILD=ON \ - -DWITH_AAD=ON \ - -DWITH_BINARY_VERSIONING=ON \ - -DWITH_CHANNELS=ON \ - -DWITH_CLIENT_CHANNELS=ON \ - -DWITH_JPEG=ON \ - -DWITH_PKCS11=ON \ - -DWITH_SERVER_CHANNELS=ON \ - -DWITH_SERVER=ON \ - -DPKG_CONFIG_RELOCATABLE=OFF \ - -DWITH_ALSA=OFF \ - -DWITH_CLIENT_SDL=OFF \ - -DWITH_SAMPLE=OFF \ - -DWITH_CAIRO=ON \ - -DWITH_MANPAGES=OFF \ - " - -X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile" -PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF -DWITH_SHADOW=OFF,${X11_DEPS}" -PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native libxkbcommon" -PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam" -PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio" -PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER_1_0=ON,-DWITH_GSTREAMER_1_0=OFF,gstreamer1.0 gstreamer1.0-plugins-base" -PACKAGECONFIG[cups] = "-DWITH_CUPS=ON,-DWITH_CUPS=OFF,cups" -PACKAGECONFIG[fuse] = "-DWITH_FUSE=ON,-DWITH_FUSE=OFF,fuse3,fuse3" -PACKAGECONFIG[pcsc] = "-DWITH_PCSC=ON,-DWITH_PCSC=OFF,pcsc-lite" -PACKAGECONFIG[ffmpeg] = "-DWITH_DSP_FFMPEG=ON -DWITH_FFMPEG=ON -DWITH_SWSCALE=ON, -DWITH_DSP_FFMPEG=OFF -DWITH_FFMPEG=OFF -DWITH_SWSCALE=OFF,ffmpeg" -PACKAGECONFIG[krb5] = "-DWITH_KRB5=ON -DWITH_KRB5_NO_NTLM_FALLBACK=OFF,-DWITH_KRB5=OFF,krb5" -PACKAGECONFIG[openh264] = "-DWITH_OPENH264=ON,-DWITH_OPENH264=OFF,openh264" -PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,virtual/libopencl1" -PACKAGECONFIG[lame] = "-DWITH_LAME=ON,-DWITH_LAME=OFF,lame" -PACKAGECONFIG[faad] = "-DWITH_FAAD=ON,-DWITH_FAAD=OFF,faad2" -PACKAGECONFIG[faac] = "-DWITH_FAAC=ON,-DWITH_FAAC=OFF,faac" -PACKAGECONFIG[test] = "-DBUILD_TESTING=ON,-DBUILD_TESTING=OFF" - -do_configure:prepend() { - sed -i 's|TEST_SOURCE_DIR="\${CMAKE_CURRENT_SOURCE_DIR}"|TEST_SOURCE_DIR="${PTEST_PATH}/test"|' ${S}/client/common/test/CMakeLists.txt - sed -i 's|\${CMAKE_SOURCE_DIR}|${PTEST_PATH}|' ${S}/winpr/libwinpr/clipboard/test/CMakeLists.txt - sed -i 's|="\${CMAKE_CURRENT_SOURCE_DIR}|="${PTEST_PATH}/test|' ${S}/winpr/libwinpr/utils/test/CMakeLists.txt - sed -i 's|="\${CMAKE_CURRENT_BINARY_DIR}|="${PTEST_PATH}/test|' ${S}/winpr/libwinpr/utils/test/CMakeLists.txt - sed -i 's|="\${CMAKE_CURRENT_SOURCE_DIR}|="${PTEST_PATH}/test|' ${S}/libfreerdp/codec/test/CMakeLists.txt - sed -i 's|="\${CMAKE_CURRENT_BINARY_DIR}|="${PTEST_PATH}/test|' ${S}/libfreerdp/codec/test/CMakeLists.txt - -} - -do_configure:append() { - sed -i -e 's|${WORKDIR}||g' ${B}/include/freerdp/buildflags.h - sed -i -e 's|${WORKDIR}||g' ${B}/winpr/include/winpr/buildflags.h -} - -do_install_ptest() { - install -d ${D}${PTEST_PATH}/test - # main CTestTestfile.cmake file - cp ${B}/CTestTestfile.cmake ${D}${PTEST_PATH} - # the actual test executables - cp -r ${B}/Testing ${D}${PTEST_PATH} - # test data - cp ${S}/winpr/libwinpr/utils/test/*bmp ${D}${PTEST_PATH}/test/ - cp ${S}/libfreerdp/codec/test/*bmp ${D}${PTEST_PATH}/test/ - cp -r ${S}/client/common/test/* ${D}${PTEST_PATH}/test/ - cp -r ${S}/resources ${D}${PTEST_PATH} - cp -r ${S}/libfreerdp/codec/test/planar ${D}${PTEST_PATH}/test/ - cp -r ${S}/libfreerdp/codec/test/interleaved ${D}${PTEST_PATH}/test/ - - cd ${B} - # the test definitions, how to execute the tests - find . -name CTestTestfile.cmake -exec install -Dm 0644 {} ${D}${PTEST_PATH}/{} \; - - for testfile in $(find ${D}${PTEST_PATH} -name CTestTestfile.cmake); do - # these are comments only, containing ${S} and ${B}, at the top of each file - sed -i "s,Source directory: ${S},," $testfile - sed -i "s,Build directory: ${B},," $testfile - - # change the ${B} to ${PTEST_PATH}, so the files will be searches at the correct place - sed -i "s,${B}/Testing,${PTEST_PATH}/Testing,g" $testfile - - # These add some extra traceability info to the tests, to pair them with CMakeLists.txt files, - # containing ${B}. - # They are not needed for test execution, just remove the whole line. - sed -i "s,set_tests_properties.*_BACKTRACE_TRIPLES.*,," $testfile - done - - # This is not part of the tests it is just in the same folder, and requires Python to be installed. - # Just remove it. - rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py - - # This particular test requires openh264, which is part of meta-multimedia layer. - # Since it is not a dependency of meta-oe, comment this test out. - sed -i 's/add_test(TestFreeRDPCodecH264/#add_test(TestFreeRDPCodecH264/' ${D}${PTEST_PATH}/libfreerdp/codec/test/CTestTestfile.cmake -} - -PACKAGES =+ "${PN}-proxy-plugins" - -FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*" - -FILES:${PN} += "${datadir}" - -SYSROOT_DIRS += "${bindir}" - -INSANE_SKIP:${PN}-proxy-plugins += "dev-so" diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.24.0.bb b/meta-oe/recipes-support/freerdp/freerdp3_3.24.0.bb new file mode 100644 index 0000000000..3c0fed5dc4 --- /dev/null +++ b/meta-oe/recipes-support/freerdp/freerdp3_3.24.0.bb @@ -0,0 +1,128 @@ +DESCRIPTION = "FreeRDP RDP client & server library" +HOMEPAGE = "http://www.freerdp.com" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +DEPENDS = "openssl libusb1 uriparser cairo icu pkcs11-helper zlib jpeg json-c" +RDEPENDS:${PN}-ptest += "cmake coreutils" + +inherit pkgconfig cmake ptest + +SRCREV = "b00402d3258402c868224b6ffed04182cbed78d9" +SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV} \ + file://run-ptest" + + +CVE_PRODUCT = "freerdp" + +PACKAGECONFIG ??= " \ + ${@bb.utils.filter('DISTRO_FEATURES', 'pam pulseaudio wayland x11', d)} \ + ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)} \ + gstreamer cups pcsc \ + ${@bb.utils.contains('PTEST_ENABLED', '1', 'test', '', d)} \ +" + +EXTRA_OECMAKE = " \ + -DRDTK_FORCE_STATIC_BUILD=ON \ + -DUWAC_FORCE_STATIC_BUILD=ON \ + -DWITH_AAD=ON \ + -DWITH_BINARY_VERSIONING=ON \ + -DWITH_CHANNELS=ON \ + -DWITH_CLIENT_CHANNELS=ON \ + -DWITH_JPEG=ON \ + -DWITH_PKCS11=ON \ + -DWITH_SERVER_CHANNELS=ON \ + -DWITH_SERVER=ON \ + -DPKG_CONFIG_RELOCATABLE=OFF \ + -DWITH_ALSA=OFF \ + -DWITH_CLIENT_SDL=OFF \ + -DWITH_SAMPLE=OFF \ + -DWITH_CAIRO=ON \ + -DWITH_MANPAGES=OFF \ + -DWITH_INTERNAL_RC4=ON \ + -DWITH_INTERNAL_MD4=ON \ + " + +X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile" +PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF -DWITH_SHADOW=OFF,${X11_DEPS}" +PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native libxkbcommon" +PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam" +PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio" +PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER_1_0=ON,-DWITH_GSTREAMER_1_0=OFF,gstreamer1.0 gstreamer1.0-plugins-base" +PACKAGECONFIG[cups] = "-DWITH_CUPS=ON,-DWITH_CUPS=OFF,cups" +PACKAGECONFIG[fuse] = "-DWITH_FUSE=ON,-DWITH_FUSE=OFF,fuse3,fuse3" +PACKAGECONFIG[pcsc] = "-DWITH_PCSC=ON,-DWITH_PCSC=OFF,pcsc-lite" +PACKAGECONFIG[ffmpeg] = "-DWITH_DSP_FFMPEG=ON -DWITH_FFMPEG=ON -DWITH_SWSCALE=ON, -DWITH_DSP_FFMPEG=OFF -DWITH_FFMPEG=OFF -DWITH_SWSCALE=OFF,ffmpeg" +PACKAGECONFIG[krb5] = "-DWITH_KRB5=ON -DWITH_KRB5_NO_NTLM_FALLBACK=OFF,-DWITH_KRB5=OFF,krb5" +PACKAGECONFIG[openh264] = "-DWITH_OPENH264=ON,-DWITH_OPENH264=OFF,openh264" +PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,virtual/libopencl1" +PACKAGECONFIG[lame] = "-DWITH_LAME=ON,-DWITH_LAME=OFF,lame" +PACKAGECONFIG[faad] = "-DWITH_FAAD=ON,-DWITH_FAAD=OFF,faad2" +PACKAGECONFIG[faac] = "-DWITH_FAAC=ON,-DWITH_FAAC=OFF,faac" +PACKAGECONFIG[test] = "-DBUILD_TESTING=ON,-DBUILD_TESTING=OFF" + +do_configure:prepend() { + sed -i 's|TEST_SOURCE_DIR="\${CMAKE_CURRENT_SOURCE_DIR}"|TEST_SOURCE_DIR="${PTEST_PATH}/test"|' ${S}/client/common/test/CMakeLists.txt + sed -i 's|\${CMAKE_SOURCE_DIR}|${PTEST_PATH}|' ${S}/winpr/libwinpr/clipboard/test/CMakeLists.txt + sed -i 's|="\${CMAKE_CURRENT_SOURCE_DIR}|="${PTEST_PATH}/test|' ${S}/winpr/libwinpr/utils/test/CMakeLists.txt + sed -i 's|="\${CMAKE_CURRENT_BINARY_DIR}|="${PTEST_PATH}/test|' ${S}/winpr/libwinpr/utils/test/CMakeLists.txt + sed -i 's|="\${CMAKE_CURRENT_SOURCE_DIR}|="${PTEST_PATH}/test|' ${S}/libfreerdp/codec/test/CMakeLists.txt + sed -i 's|="\${CMAKE_CURRENT_BINARY_DIR}|="${PTEST_PATH}/test|' ${S}/libfreerdp/codec/test/CMakeLists.txt + +} + +do_configure:append() { + sed -i -e 's|${WORKDIR}||g' ${B}/include/freerdp/buildflags.h + sed -i -e 's|${WORKDIR}||g' ${B}/winpr/include/winpr/buildflags.h +} + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/test + # main CTestTestfile.cmake file + cp ${B}/CTestTestfile.cmake ${D}${PTEST_PATH} + # the actual test executables + cp -r ${B}/Testing ${D}${PTEST_PATH} + # test data + cp ${S}/winpr/libwinpr/utils/test/*bmp ${D}${PTEST_PATH}/test/ + cp ${S}/libfreerdp/codec/test/*bmp ${D}${PTEST_PATH}/test/ + cp -r ${S}/client/common/test/* ${D}${PTEST_PATH}/test/ + cp -r ${S}/resources ${D}${PTEST_PATH} + cp -r ${S}/libfreerdp/codec/test/planar ${D}${PTEST_PATH}/test/ + cp -r ${S}/libfreerdp/codec/test/interleaved ${D}${PTEST_PATH}/test/ + + cd ${B} + # the test definitions, how to execute the tests + find . -name CTestTestfile.cmake -exec install -Dm 0644 {} ${D}${PTEST_PATH}/{} \; + + for testfile in $(find ${D}${PTEST_PATH} -name CTestTestfile.cmake); do + # these are comments only, containing ${S} and ${B}, at the top of each file + sed -i "s,Source directory: ${S},," $testfile + sed -i "s,Build directory: ${B},," $testfile + + # change the ${B} to ${PTEST_PATH}, so the files will be searches at the correct place + sed -i "s,${B}/Testing,${PTEST_PATH}/Testing,g" $testfile + + # These add some extra traceability info to the tests, to pair them with CMakeLists.txt files, + # containing ${B}. + # They are not needed for test execution, just remove the whole line. + sed -i "s,set_tests_properties.*_BACKTRACE_TRIPLES.*,," $testfile + done + + # This is not part of the tests it is just in the same folder, and requires Python to be installed. + # Just remove it. + rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py + + # This particular test requires openh264, which is part of meta-multimedia layer. + # Since it is not a dependency of meta-oe, comment this test out. + sed -i 's/add_test(TestFreeRDPCodecH264/#add_test(TestFreeRDPCodecH264/' ${D}${PTEST_PATH}/libfreerdp/codec/test/CTestTestfile.cmake +} + +PACKAGES =+ "${PN}-proxy-plugins" + +FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*" + +FILES:${PN} += "${datadir}" + +SYSROOT_DIRS += "${bindir}" + +INSANE_SKIP:${PN}-proxy-plugins += "dev-so" -- cgit v1.2.3-54-g00ecf