-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
xrdpvr was successfully recompiled at Fedora 35 (ffmpeg 4.4.3) #2478
base: devel
Are you sure you want to change the base?
Conversation
Please, review |
Hi @alexpevzner Firstly, thanks for this. I'd like to try to get this working with the CI system, which means getting this building on Ubuntu. I'm having a few problems however, around the use of The commit I used to add the CI is here:- There's a CI run here:- https://github.com/matt335672/xrdp/actions/runs/3759531688 Essentially One way around this might be to bas the settings for https://github.com/search?q=LIBAVFORMAT_VERSION_MAJOR+av_close_input_file&type=code Thoughts? |
Hi @matt335672, I want to try by myself. |
I've fixed You need to install 2 packages: |
I build with g++ by using If you duplicate the changes to build.yml and install_xrdp_dependencies_with_apt.sh which I made, you should get the same results on a push. |
Now I see. What do you think about conditional replacement |
I have implemented this idea, and now all tests passed. Please, have a look |
Thanks @alexpevzner In principle that sounds fine. I'll have a formal look when I can get some time away from the usual family commitments at this time of year! |
Thanks, @matt335672, looking forward for you final verdict. Have a nice evening! :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple of minor comments/questions
if test "x$enable_xrdpvr" = xyes; then | ||
save_CC="$CC" | ||
|
||
# For some strange reason, at Ubuntu 20.04 g++ compiles conftest.c |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest you remove the "for some strange reason". The actual reason is that the functions are not wrapped in a extern "C"
wrapper, so the C++ compiler will mangle them. See this link for more explanation.
* | ||
* FIXME -- this function is deprecated and eventually | ||
* will be removed from the library. */ | ||
#pragma GCC diagnostic push |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a few of these about. Presumably it's for compatibility with older versions of the library. Is that right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @matt335672,
Suggest you remove the "for some strange reason".
autoconf generates test files with the .c
extention, and g++
11.3.1 on Fedora treats them as C language files, not as C++. So it looks strange for me that g++
on Ubuntu doesn't do the same
Presumably it's for compatibility with older versions of the library. Is that right?
Not exactly. These functions are marked as "deprecated" at the current version of the library, so they are likely to disappear in the reasonable future. Where possible, I've found a non-deprecated replacement, in another places I've just silenced the warning, but eventually these places must be somehow fixed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not seeing that behaviour on a live Fedora 37 CD with g++ installed. On that platform, g++ will mangle external C names:-
$ cat temp.c
int externfunc();
int main()
{
return externfunc();
}
$ gcc -c temp.c
$ nm temp.o | grep externfunc
U externfunc
$ g++ -c temp.c
$ nm temp.o | grep externfunc
U _Z10externfuncv
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-12.2.1-20221121/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none --without-cuda-driver --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.1 20221121 (Red Hat 12.2.1-4) (GCC)
As far as the "deprecated" warnings go, are you able to comment them with the version at which the deprecation warning was introduced? That will help all of us trying to maintain this going forwards.
Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @alexpevzner
We seem to have stalled on this one. Given my comment above, are you happy to remove the "for some strange reason" and squash so we can get this one put to bed?
Thanks.
Hi!
I have successfully recompiled xrdpvr at Fedore 35 (ffmpeg 4.4.3). This patch should be actually applicable to any more or less recent version of Linux. I have added missed checks for libav dependencies and added workarounds for some breaking changes in the ffmpeg libraries API