pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Bump - Non-functional xfreerdp2 on 8.1 STABLE - missing POSIX timer_create?





On 17.11.2020 18:06, nia wrote:
I read the actual code that uses POSIX timers, it hasn't changed at all
in the various release candidates.

If you want to simulate building with POSIX timer support disabled,
you can do the following:

BUILDLINK_TRANSFORM+=	rm:-DWITH_POSIX_TIMER


Well but it is known that freerdp2 will not connect without those POSIX timers

The FreeBSD-related PR you linked to enables Linux epoll emulation for
a specific code path.


Well initially they put another ifdef for FREEBSD, but it was removed by this
https://github.com/FreeRDP/FreeRDP/issues/4592

Funny how they mention they do not want to "whitelist" every OS, but yet in
code they left whitelists/ifdefs for Apple :-D

If you want to test if that code path is reached, edit the
"os specific implementation is missing" messages in
work/freerdp-2.1.2/winpr/libwinpr/synch/timer.c.


I tested ;-)

[19:36:37:151] [7164:29fd6000] [INFO][com.freerdp.gdi] - Local framebuffer format PIXEL_FORMAT_BGRX32 [19:36:37:151] [7164:29fd6000] [INFO][com.freerdp.gdi] - Remote framebuffer format PIXEL_FORMAT_RGB16 [19:36:37:203] [7164:29fd6000] [INFO][com.winpr.clipboard] - initialized POSIX local file subsystem [19:36:37:228] [7164:29fd6000] [INFO][com.freerdp.channels.rdpsnd.client] - [static] Loaded fake backend for rdpsnd [19:36:37:228] [7164:29fd6000] [ERROR][com.winpr.synch.timer] - InitializeWaitableTimer: Line 248 of code, 1st apperance

so we are here:

    240 #ifdef HAVE_SYS_TIMERFD_H
241 timer->fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK);
    242
    243                 if (timer->fd <= 0)
    244                         return -1;
    245
    246 #elif defined(__APPLE__)
    247 #else
248 WLog_ERR(TAG, "%s: Line 248 of code, 1st apperance", __FUNCTION__);
    249                 result = -1;
    250 #endif



Note that there are two such messages, and both are identical.
It would be useful to know which one is being triggered.

It's possible we need to either:

1) Enable the "__APPLE__" code paths in that file on NetBSD too.

2) Borrow the epoll emulation code.


Based on error above and snippet of the code and the fact that different OSs were
before whitelisted in libwinpr/synch/synch.h which is not the case now:

     28
     29 #include <winpr/synch.h>
     30


     79 #ifdef HAVE_SYS_TIMERFD_H
     80 #include <stdio.h>
     81 #include <unistd.h>
     82 #include <fcntl.h>
     83 #include <sys/timerfd.h>
     84 #endif

    101 #ifdef WITH_POSIX_TIMER
    102         timer_t tid;
    103         struct itimerspec timeout;
    104 #endif

Isn't it then just a problem during compile not picking up proper libraries/paths
towards NetBSD implementation of POSIX timer?

But then I can see this in libwinpr/synch/CMakeLists.txt:

if(FREEBSD)
        winpr_include_directory_add(${EPOLLSHIM_INCLUDE_DIR})
        winpr_library_add_private(${EPOLLSHIM_LIBS})
endif()


I can't test this because I don't have a Windows machine to connect to...

Trying to find under /usr/pkgsrc/net/freerdp2/work some details from
compile time what was picked - if it will be there of course.


Home | Main Index | Thread Index | Old Index