diff mbox series

[meta-oe,v2] freerdb3: add ptest support

Message ID 20251223121737.619747-1-skandigraun@gmail.com
State Under Review
Headers show
Series [meta-oe,v2] freerdb3: add ptest support | expand

Commit Message

Gyorgy Sarvari Dec. 23, 2025, 12:17 p.m. UTC
The execution takes under 10s.

Sample output:

root@qemux86-64:~# ptest-runner
START: ptest-runner
2025-12-23T11:36
BEGIN: /usr/lib/freerdp3/ptest
PASS: TestSynchInit
PASS: TestSynchEvent
PASS: TestSynchMutex
[...many lines...]
PASS: TestClientRdpFile
PASS: TestClientChannels
PASS: TestClientCmdLine
DURATION: 7
END: /usr/lib/freerdp3/ptest
2025-12-23T11:37
STOP: ptest-runner
TOTAL: 1 FAIL: 0

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---

v2: when I finished v1, I reordered the test data copying part, to make it nice.
    But this reordering made destination of testdata copying to be non-existent.
    v2 created the test folder explicitly in do_install_ptest

 .../include/ptest-packagelists-meta-oe.inc    |  1 +
 .../freerdp/freerdp3/run-ptest                |  2 +
 .../freerdp/freerdp3_3.20.0.bb                | 53 ++++++++++++++++++-
 3 files changed, 54 insertions(+), 2 deletions(-)
 create mode 100644 meta-oe/recipes-support/freerdp/freerdp3/run-ptest

Comments

Khem Raj Dec. 24, 2025, 8:05 p.m. UTC | #1
On Tue, Dec 23, 2025 at 4:17 AM Gyorgy Sarvari via lists.openembedded.org
<skandigraun=gmail.com@lists.openembedded.org> wrote:

> The execution takes under 10s.
>
> Sample output:
>
> root@qemux86-64:~# ptest-runner
> START: ptest-runner
> 2025-12-23T11:36
> BEGIN: /usr/lib/freerdp3/ptest
> PASS: TestSynchInit
> PASS: TestSynchEvent
> PASS: TestSynchMutex
> [...many lines...]
> PASS: TestClientRdpFile
> PASS: TestClientChannels
> PASS: TestClientCmdLine
> DURATION: 7
> END: /usr/lib/freerdp3/ptest
> 2025-12-23T11:37
> STOP: ptest-runner
> TOTAL: 1 FAIL: 0
>
> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> ---
>
> v2: when I finished v1, I reordered the test data copying part, to make it
> nice.
>     But this reordering made destination of testdata copying to be
> non-existent.
>     v2 created the test folder explicitly in do_install_ptest
>
>  .../include/ptest-packagelists-meta-oe.inc    |  1 +
>  .../freerdp/freerdp3/run-ptest                |  2 +
>  .../freerdp/freerdp3_3.20.0.bb                | 53 ++++++++++++++++++-
>  3 files changed, 54 insertions(+), 2 deletions(-)
>  create mode 100644 meta-oe/recipes-support/freerdp/freerdp3/run-ptest
>
> diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> index 1f21db7ae1..556fa8a148 100644
> --- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> +++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> @@ -16,6 +16,7 @@ PTESTS_FAST_META_OE = "\
>      ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'dbus-broker', '',
> d)} \
>      duktape \
>      exiv2 \
> +    freerdp3 \
>      fuse3 \
>      function2 \
>      fwupd \
> diff --git a/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> new file mode 100644
> index 0000000000..1a9b69c27e
> --- /dev/null
> +++ b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> @@ -0,0 +1,2 @@
> +#!/bin/sh
> +ctest | sed 's/\*\*\*/   /g' | awk '/Test +#/{gsub(/Passed/,"PASS");
> gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
> diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> index 07e6db69b7..08bea845f0 100644
> --- a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> +++ b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> @@ -4,11 +4,13 @@ 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
> +inherit pkgconfig cmake ptest
>
>  SRCREV = "b8e790a02ede8dd64ff7177fb9027d1844e66bb6"
> -SRC_URI = "git://
> github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
> <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>
> "
> +SRC_URI = "git://
> github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
> <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>
> \
> +           file://run-ptest"
>
>
>  CVE_PRODUCT = "freerdp"
> @@ -17,6 +19,7 @@ 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 openh264', '', d)} \
>

openh264 is neither in core nor in meta-oe, its in meta-multimedia and
meta-oe does not depend upon it rather its other way around
I think this needs to added via a dynamic-layer


>  "
>
>  EXTRA_OECMAKE = " \
> @@ -54,12 +57,58 @@ 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},<source_dir>," $testfile
> +        sed -i "s,Build directory: ${B},<build_dir>," $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
> +
> +    rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py
> +}
> +
>  PACKAGES =+ "${PN}-proxy-plugins"
>
>  FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#122836):
> https://lists.openembedded.org/g/openembedded-devel/message/122836
> Mute This Topic: https://lists.openembedded.org/mt/116914811/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Gyorgy Sarvari Dec. 24, 2025, 8:10 p.m. UTC | #2
On 12/24/25 21:05, Khem Raj wrote:
>
>
> On Tue, Dec 23, 2025 at 4:17 AM Gyorgy Sarvari via
> lists.openembedded.org <http://lists.openembedded.org>
> <skandigraun=gmail.com@lists.openembedded.org> wrote:
>
>     The execution takes under 10s.
>
>     Sample output:
>
>     root@qemux86-64:~# ptest-runner
>     START: ptest-runner
>     2025-12-23T11:36
>     BEGIN: /usr/lib/freerdp3/ptest
>     PASS: TestSynchInit
>     PASS: TestSynchEvent
>     PASS: TestSynchMutex
>     [...many lines...]
>     PASS: TestClientRdpFile
>     PASS: TestClientChannels
>     PASS: TestClientCmdLine
>     DURATION: 7
>     END: /usr/lib/freerdp3/ptest
>     2025-12-23T11:37
>     STOP: ptest-runner
>     TOTAL: 1 FAIL: 0
>
>     Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
>     ---
>
>     v2: when I finished v1, I reordered the test data copying part, to
>     make it nice.
>         But this reordering made destination of testdata copying to be
>     non-existent.
>         v2 created the test folder explicitly in do_install_ptest
>
>      .../include/ptest-packagelists-meta-oe.inc    |  1 +
>      .../freerdp/freerdp3/run-ptest                |  2 +
>      .../freerdp/freerdp3_3.20.0.bb <http://freerdp3_3.20.0.bb>       
>             | 53 ++++++++++++++++++-
>      3 files changed, 54 insertions(+), 2 deletions(-)
>      create mode 100644 meta-oe/recipes-support/freerdp/freerdp3/run-ptest
>
>     diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
>     b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
>     index 1f21db7ae1..556fa8a148 100644
>     --- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
>     +++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
>     @@ -16,6 +16,7 @@ PTESTS_FAST_META_OE = "\
>          ${@bb.utils.contains('DISTRO_FEATURES', 'systemd',
>     'dbus-broker', '', d)} \
>          duktape \
>          exiv2 \
>     +    freerdp3 \
>          fuse3 \
>          function2 \
>          fwupd \
>     diff --git a/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
>     b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
>     new file mode 100644
>     index 0000000000..1a9b69c27e
>     --- /dev/null
>     +++ b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
>     @@ -0,0 +1,2 @@
>     +#!/bin/sh
>     +ctest | sed 's/\*\*\*/   /g' | awk '/Test
>     +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL");
>     gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
>     diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
>     <http://freerdp3_3.20.0.bb>
>     b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
>     <http://freerdp3_3.20.0.bb>
>     index 07e6db69b7..08bea845f0 100644
>     --- a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
>     <http://freerdp3_3.20.0.bb>
>     +++ b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
>     <http://freerdp3_3.20.0.bb>
>     @@ -4,11 +4,13 @@ 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
>     +inherit pkgconfig cmake ptest
>
>      SRCREV = "b8e790a02ede8dd64ff7177fb9027d1844e66bb6"
>     -SRC_URI =
>     "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
>     <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>"
>     +SRC_URI =
>     "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
>     <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>
>     \
>     +           file://run-ptest"
>
>
>      CVE_PRODUCT = "freerdp"
>     @@ -17,6 +19,7 @@ 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 openh264',
>     '', d)} \
>
>
> openh264 is neither in core nor in meta-oe, its in meta-multimedia and
> meta-oe does not depend upon it rather its other way around
> I think this needs to added via a dynamic-layer 

If I remember well, it's only one testcase that requires it. Maybe it
would be cleaner if I would just to bin that?


>  
>
>      "
>
>      EXTRA_OECMAKE = " \
>     @@ -54,12 +57,58 @@ 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},<source_dir>," $testfile
>     +        sed -i "s,Build directory: ${B},<build_dir>," $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
>     +
>     +    rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py
>     +}
>     +
>      PACKAGES =+ "${PN}-proxy-plugins"
>
>      FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*"
>
>     -=-=-=-=-=-=-=-=-=-=-=-
>     Links: You receive all messages sent to this group.
>     View/Reply Online (#122836):
>     https://lists.openembedded.org/g/openembedded-devel/message/122836
>     Mute This Topic: https://lists.openembedded.org/mt/116914811/1997914
>     Group Owner: openembedded-devel+owner@lists.openembedded.org
>     <mailto:openembedded-devel%2Bowner@lists.openembedded.org>
>     Unsubscribe:
>     https://lists.openembedded.org/g/openembedded-devel/unsub
>     [raj.khem@gmail.com]
>     -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj Dec. 24, 2025, 8:12 p.m. UTC | #3
On Wed, Dec 24, 2025 at 12:10 PM Gyorgy Sarvari <skandigraun@gmail.com>
wrote:

> On 12/24/25 21:05, Khem Raj wrote:
> >
> >
> > On Tue, Dec 23, 2025 at 4:17 AM Gyorgy Sarvari via
> > lists.openembedded.org <http://lists.openembedded.org>
> > <skandigraun=gmail.com@lists.openembedded.org> wrote:
> >
> >     The execution takes under 10s.
> >
> >     Sample output:
> >
> >     root@qemux86-64:~# ptest-runner
> >     START: ptest-runner
> >     2025-12-23T11:36
> >     BEGIN: /usr/lib/freerdp3/ptest
> >     PASS: TestSynchInit
> >     PASS: TestSynchEvent
> >     PASS: TestSynchMutex
> >     [...many lines...]
> >     PASS: TestClientRdpFile
> >     PASS: TestClientChannels
> >     PASS: TestClientCmdLine
> >     DURATION: 7
> >     END: /usr/lib/freerdp3/ptest
> >     2025-12-23T11:37
> >     STOP: ptest-runner
> >     TOTAL: 1 FAIL: 0
> >
> >     Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> >     ---
> >
> >     v2: when I finished v1, I reordered the test data copying part, to
> >     make it nice.
> >         But this reordering made destination of testdata copying to be
> >     non-existent.
> >         v2 created the test folder explicitly in do_install_ptest
> >
> >      .../include/ptest-packagelists-meta-oe.inc    |  1 +
> >      .../freerdp/freerdp3/run-ptest                |  2 +
> >      .../freerdp/freerdp3_3.20.0.bb <http://freerdp3_3.20.0.bb>
> >             | 53 ++++++++++++++++++-
> >      3 files changed, 54 insertions(+), 2 deletions(-)
> >      create mode 100644
> meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> >
> >     diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> >     b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> >     index 1f21db7ae1..556fa8a148 100644
> >     --- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> >     +++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> >     @@ -16,6 +16,7 @@ PTESTS_FAST_META_OE = "\
> >          ${@bb.utils.contains('DISTRO_FEATURES', 'systemd',
> >     'dbus-broker', '', d)} \
> >          duktape \
> >          exiv2 \
> >     +    freerdp3 \
> >          fuse3 \
> >          function2 \
> >          fwupd \
> >     diff --git a/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> >     b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> >     new file mode 100644
> >     index 0000000000..1a9b69c27e
> >     --- /dev/null
> >     +++ b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
> >     @@ -0,0 +1,2 @@
> >     +#!/bin/sh
> >     +ctest | sed 's/\*\*\*/   /g' | awk '/Test
> >     +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL");
> >     gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
> >     diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> >     <http://freerdp3_3.20.0.bb>
> >     b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> >     <http://freerdp3_3.20.0.bb>
> >     index 07e6db69b7..08bea845f0 100644
> >     --- a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> >     <http://freerdp3_3.20.0.bb>
> >     +++ b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
> >     <http://freerdp3_3.20.0.bb>
> >     @@ -4,11 +4,13 @@ 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
> >     +inherit pkgconfig cmake ptest
> >
> >      SRCREV = "b8e790a02ede8dd64ff7177fb9027d1844e66bb6"
> >     -SRC_URI =
> >     "git://
> github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
> <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>
> >     <
> http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D
> >"
> >     +SRC_URI =
> >     "git://
> github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}
> <http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D>
> >     <
> http://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=$%7BPV%7D
> >
> >     \
> >     +           file://run-ptest"
> >
> >
> >      CVE_PRODUCT = "freerdp"
> >     @@ -17,6 +19,7 @@ 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 openh264',
> >     '', d)} \
> >
> >
> > openh264 is neither in core nor in meta-oe, its in meta-multimedia and
> > meta-oe does not depend upon it rather its other way around
> > I think this needs to added via a dynamic-layer
>
> If I remember well, it's only one testcase that requires it. Maybe it
> would be cleaner if I would just to bin that?
>

That is a good compromise. Add a comment in the recipe so we remember the
context in future.


>
>
> >
> >
> >      "
> >
> >      EXTRA_OECMAKE = " \
> >     @@ -54,12 +57,58 @@ 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},<source_dir>," $testfile
> >     +        sed -i "s,Build directory: ${B},<build_dir>," $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
> >     +
> >     +    rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py
> >     +}
> >     +
> >      PACKAGES =+ "${PN}-proxy-plugins"
> >
> >      FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*"
> >
> >     -=-=-=-=-=-=-=-=-=-=-=-
> >     Links: You receive all messages sent to this group.
> >     View/Reply Online (#122836):
> >     https://lists.openembedded.org/g/openembedded-devel/message/122836
> >     Mute This Topic: https://lists.openembedded.org/mt/116914811/1997914
> >     Group Owner: openembedded-devel+owner@lists.openembedded.org
> >     <mailto:openembedded-devel%2Bowner@lists.openembedded.org>
> >     Unsubscribe:
> >     https://lists.openembedded.org/g/openembedded-devel/unsub
> >     [raj.khem@gmail.com]
> >     -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
diff mbox series

Patch

diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
index 1f21db7ae1..556fa8a148 100644
--- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
+++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
@@ -16,6 +16,7 @@  PTESTS_FAST_META_OE = "\
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'dbus-broker', '', d)} \
     duktape \
     exiv2 \
+    freerdp3 \
     fuse3 \
     function2 \
     fwupd \
diff --git a/meta-oe/recipes-support/freerdp/freerdp3/run-ptest b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
new file mode 100644
index 0000000000..1a9b69c27e
--- /dev/null
+++ b/meta-oe/recipes-support/freerdp/freerdp3/run-ptest
@@ -0,0 +1,2 @@ 
+#!/bin/sh
+ctest | sed 's/\*\*\*/   /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
diff --git a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
index 07e6db69b7..08bea845f0 100644
--- a/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
+++ b/meta-oe/recipes-support/freerdp/freerdp3_3.20.0.bb
@@ -4,11 +4,13 @@  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
+inherit pkgconfig cmake ptest
 
 SRCREV = "b8e790a02ede8dd64ff7177fb9027d1844e66bb6"
-SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV}"
+SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https;tag=${PV} \
+           file://run-ptest"
 
 
 CVE_PRODUCT = "freerdp"
@@ -17,6 +19,7 @@  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 openh264', '', d)} \
 "
 
 EXTRA_OECMAKE = " \
@@ -54,12 +57,58 @@  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},<source_dir>," $testfile
+        sed -i "s,Build directory: ${B},<build_dir>," $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
+
+    rm ${D}${PTEST_PATH}/resources/conv_to_ewm_prop.py
+}
+
 PACKAGES =+ "${PN}-proxy-plugins"
 
 FILES:${PN}-proxy-plugins += "${libdir}/${BPN}/proxy/*.so*"