On May 15, 2021, at 12:50 AM, SugarRayLua <meaning...@gmail.com> wrote:
Hello, again, TurboVNC Community,
--
You received this message because you are subscribed to the Google Groups "TurboVNC User Discussion/Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to turbovnc-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/797b6ea1-993a-4e5e-a718-d6f47b94379dn%40googlegroups.com.
On May 15, 2021, at 4:46 PM, SugarRayLua <meaning...@gmail.com> wrote:
Ok, thanks.
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/ac661251-a0ef-4606-9ba2-a934692d4224n%40googlegroups.com.
I think this is also a
distribution-specific issue. I verified that my build is using
the same code path in access.c that your build is using. If
sys/socket.h defines SO_PEERCRED, then access.c will try to use
'struct ucred'. (NOTE: access.c is X.org code, not TurboVNC
code.) However, 'struct ucred' is apparently only defined if
_GNU_SOURCE is defined, so the first thing I would do is 'make
VERBOSE=1' and verify whether _GNU_SOURCE is defined on the
command line that builds access.c. If it isn't, then it's
probably because this build system check failed:
https://github.com/TurboVNC/turbovnc/blob/main/unix/Xvnc/CMakeLists.txt#L4-L9,
which would happen if features.h doesn't define __GLIBC__ on
your system. It could also be that, for whatever reason, your
system doesn't define 'struct ucred'.
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/01f07e12-e2ea-40db-9a95-d5ba1c962addn%40googlegroups.com.
I assume you also have the glibc development headers/library installed? If so, then /usr/include/features.h should exist, and that header should define __GLIBC__. If it doesn't, then that's also a distribution-specific issue.
If you have the glibc development headers/library installed and the build is still failing, then I'm clueless. The TurboVNC build system detects glibc in exactly the same way that the (autotools-based) X.org build system does. Thus, the X.org Alpine package may have faced similar difficulties, and it may be instructive to look at that package and see how they worked around them.
glibc is a documented requirement of the
TurboVNC Server on Linux. Even if we were able to work around
this specific compatibility issue with musl, there are many
others that would pop up.
DRC
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/08f243f1-58bf-4799-9df9-3d2d28f7c0d7n%40googlegroups.com.
I just noticed that, earlier, you tried to do:
make CFLAGS=-D_GNU_SOURCE
That won't work with CMake-generated Makefiles, because CMake populates the compiler flags in the Makefiles whenever it generates the build. Try instead:
cd {build-directory}
rm -rf CMake*
cmake {any-other-CMake-args-you-need}
-DCMAKE_C_FLAGS="-D_GNU_SOURCE -D__GLIBC__"
{source-directory}
make
NOTE: 'rm -rf CMake*' clears any cached
build state. Doing that isn't necessary with a fresh build
directory, nor is it necessary when rebuilding. I only
suggested it above in order to make 100% sure that the new
compiler flags are applied, because I can't remember how
aggressively CMake caches those.
If that doesn't work, then I will repeat my advice to look at the X.org X server package for Alpine and see what they did to make it build. X.org also requires __GLIBC__ to be defined in features.h.
To answer your question about __GLIBC__, there are other places within the TurboVNC Server code that check for __GLIBC__ to be defined, so it's best to define both __GLIBC__ and _GNU_SOURCE.
DRC
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/18137fd8-d832-479d-960a-18fa2cb7a786n%40googlegroups.com.
However, when I actually started to try and use TurboVNC, I could start vncserver, but when I tried to connect from a client, it would not finish connecting and the log file indicated the connection aborted due to some illegal commands. I suspect that actually might be a problem with the x86 emulator running the Alpine Linux (as it is known to not be able to yet run all Linux programs)
1) connect remotely to TurboVNC vncserver with any VNC viewer (i.e. not just TurboVNC vncviewer)? I want to be able to do so since I’m aiming to use TurboVNC to allow me to see Linux 3D graphics on my iPad Alpine LInux emulator which the server is on does not have 3D graphics capabilities itself (so VirtualGL won’t helP) and the viewer client is a separate app on my iPAD that is not a Linux device (i.e. I couldn’t install TurboVNC vncviewer on it)
2) view 3D graphics (eg openGL graphics) originating from the linux TurboVNC vncserver headless host given as I mentioned above that the headless host does not have any means to render 3D graphics (i.e. no ability to connect directly from the LInux server to the iPAD’s graphic system) and no link from the iPad’s separate non-Linux VNC viewer to render 3D graphics from the viewer itself. My understanding is that the TurboVNC program is the only VNC program that can software render 3D graphics coming from the VNC server and convert such graphics to a 2D image to then send and be displayed on the VNC non-linux, non 3D graphics viewer. If I am mistaken in this ability of TurboVNC’s then, I will not ask you further for assistance in trying to get this to work for my needs and the needs of the iSH Linux x86 emulator community (it may still be useful for the larger Alpine LInux community though as you helped me show that it at least can be built on that distribution).
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/78975d38-d828-4605-b9db-e85f6b2c590en%40googlegroups.com.
x11vnc is just a screen scraper. It doesn't render anything. It attempts, as best as it can, to figure out when pixels have changed on the X server to which it is attached, and it encodes and transmits those pixels using the RFB protocol. Direct-rendered OpenGL, however, bypasses the mechanisms that x11vnc uses to figure out when pixels have changed, so x11vnc can't generally detect those changes.
As far as the illegal instruction failure, you may want to try various combinations of setting/unsetting JSIMD_FORCENONE=1 in the environment and passing -DTVNC_SYSTEMLIBS=0 or -DTVNC_SYSTEMLIBS=1 to cmake when configuring the build. It occurred to me that we are using a SIMD-accelerated zlib implementation as well. Passing -DTVNC_SYSTEMLIBS=0 to the build will disable it and use the system's zlib implementation (and the system's bzip2 and FreeType implementations, so you'll need those dev kits installed as well.) If that doesn't work, then I have no clue. You are very far outside of the scope of my support. Hopefully you can get away with disabling the SIMD-accelerated zlib implementation but leaving SIMD acceleration enabled in libjpeg-turbo. That would at least give you good performance for the most common cases.
At this point, any further issues will need to be addressed on
your end, unless you can confirm that those issues affect TurboVNC
on supported platforms. Good luck.
DRC
To view this discussion on the web visit https://groups.google.com/d/msgid/turbovnc-users/9fd18102-40d5-4eaf-94d3-a34eef721b38n%40googlegroups.com.