Skip to contentSkip to conversation

turbovnc: new package

PATCH New Stefan Fröberg 4 participants 14 messages Oct 30, 2017 – Nov 7, 2017

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 turbovnc: new package

Changes v1 -> v2:
- Actually selecting the needed dependencies (by Baruch)
- Dropped run-time dependencies perl and xfont_font-misc-misc (by Baruch)
- Made linux-pam optional dependency
- Added README.txt to license files (by Baruch)
- Added hashes for all license files (by Baruch)

---
 package/Config.in              |  1 +
 package/turbovnc/Config.in     | 24 ++++++++++++++++++++++++
 package/turbovnc/turbovnc.hash | 25 +++++++++++++++++++++++++
 package/turbovnc/turbovnc.mk   | 25 +++++++++++++++++++++++++
 4 files changed, 75 insertions(+)
 create mode 100644 package/turbovnc/Config.in
 create mode 100644 package/turbovnc/turbovnc.hash
 create mode 100644 package/turbovnc/turbovnc.mk
package/Config.in +1 -0
index dbfb288..2ab14bf 100644
@@ -330,6 +330,7 @@ comment "X applications"
 	source "package/qt-webkit-kiosk/Config.in"
 	source "package/rdesktop/Config.in"
 	source "package/synergy/Config.in"
+	source "package/turbovnc/Config.in"
 	source "package/wmctrl/Config.in"
 	source "package/x11vnc/Config.in"
 	source "package/xdotool/Config.in"
package/turbovnc/Config.in new file +24 -0
new file mode 100644
index 0000000..0b98073
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_TURBOVNC
+	bool "turbovnc"
+	select BR2_PACKAGE_JPEG_TURBO
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_XLIB_LIBICE
+	select BR2_PACKAGE_XLIB_LIBSM
+	select BR2_PACKAGE_XLIB_LIBX11
+	select BR2_PACKAGE_XLIB_LIBXEXT
+	select BR2_PACKAGE_XLIB_LIBXAU
+	select BR2_PACKAGE_XLIB_LIBXDMCP
+	help
+	  TurboVNC is a high-performance, enterprise-quality version 
+	  of VNC based on TightVNC, TigerVNC, and X.org.
+	  It contains a variant of Tight encoding that is tuned for
+	  maximum performance and compression with 3D applications
+	  (VirtualGL), video, and other image-intensive workloads.
+	  TurboVNC, in combination with VirtualGL, provides a 
+	  complete solution for remotely displaying 3D applications
+	  with interactive performance. TurboVNC's high-speed encoding
+	  methods have been adopted by TigerVNC and libvncserver,
+	  and TurboVNC is also compatible with any other TightVNC
+	  derivative.
+
+	  https://turbovnc.org
package/turbovnc/turbovnc.hash new file +25 -0
new file mode 100644
index 0000000..3dc092a
@@ -0,0 +1,25 @@
+# From https://sourceforge.net/projects/turbovnc/files/2.1.2/
+md5	9d04b26d40664d0d8072e8b1828f69c4  turbovnc-2.1.2.tar.gz
+sha1	cd99a27cee86f0680410133beb25da1d6f35a3ea  turbovnc-2.1.2.tar.gz
+# Locally computed
+sha256	2389f76eafc48412b980a61280ffb8d111dacd9e51d5e3df2112f505558b48d4  turbovnc-2.1.2.tar.gz
+
+md5	b234ee4d69f5fce4486a80fdaf4a4263  doc/LICENSE.txt
+sha1	4cc77b90af91e615a64ae04893fdffa7939db84c  doc/LICENSE.txt
+sha256	8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  doc/LICENSE.txt
+
+md5	f1fbc9578354b488efd1c7e276855c6a  doc/LICENSE-PuTTY.txt
+sha1	a069392e138032b7ebb156bad71035146916821f  doc/LICENSE-PuTTY.txt
+sha256	867b1e03a9a1bd0131b5ab7cb0cc617750cbd9edec9dee1903e15b306bb8f94b  doc/LICENSE-PuTTY.txt
+
+md5	c017ff17fc6f0794adf93db5559ccd56  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+sha1	265206b28e7c1b750b7e6ea27cc527a6cc6e7644  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+sha256	f6333b3a9106f10190e96d9f994f934deb7a5632851a1aaf846b94651a80f4da  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+
+md5	ddeb76cd34e791893c0f539fdab879bb  unix/Xvnc/lib/bzip2/LICENSE
+sha1	1c0c6888759a63c32bca7eb63353af2cd9bd5d9e  unix/Xvnc/lib/bzip2/LICENSE
+sha256	4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204  unix/Xvnc/lib/bzip2/LICENSE
+
+md5	009fb6d6593627afd6064fa51ca8d986  README.txt
+sha1	aa41dc5b5268417e32fc280077b25e715e6d18f3  README.txt
+sha256	6d38c387215532019f457f9b0050f24bcccdda2e8f2524014a79d294730735db  README.txt
package/turbovnc/turbovnc.mk new file +25 -0
new file mode 100644
index 0000000..34208e3
@@ -0,0 +1,25 @@
+################################################################################
+#
+# turbovnc
+#
+################################################################################
+
+TURBOVNC_VERSION = 2.1.2
+TURBOVNC_SOURCE = turbovnc-$(TURBOVNC_VERSION).tar.gz
+TURBOVNC_SITE = https://downloads.sourceforge.net/project/turbovnc/$(TURBOVNC_VERSION)
+TURBOVNC_DEPENDENCIES = jpeg-turbo openssl xlib_libICE xlib_libSM xlib_libX11 \
+			xlib_libXext xlib_libXau xlib_libXdmcp 
+TURBOVNC_LICENSE = GPL-2.0, MIT (putty), Dual FTL/GPL-2.0+ (freetype) \
+		   bzip2 license (bzip2), Zlib (zlib)
+TURBOVNC_LICENSE_FILES = doc/LICENSE.txt doc/LICENSE-PuTTY.txt \
+			 unix/Xvnc/extras/freetype2/doc/LICENSE.txt \
+			 unix/Xvnc/lib/bzip2/LICENSE README.txt
+
+# Build just server
+TURBOVNC_CONF_OPTS += -DTVNC_BUILDJAVA=0 -DTVNC_BUILDNATIVE=0
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+TURBOVNC_DEPENDENCIES += linux-pam
+endif
+
+$(eval $(cmake-package))
Signature · 1 line
2.7.3
#1 lore raw

PATCH v2 1/1 turbovnc: new package

Hi Stefan,

Quoted 37 lines · Stefan Fr?berg

Changes v1 -> v2:
- Actually selecting the needed dependencies (by Baruch)
- Dropped run-time dependencies perl and xfont_font-misc-misc (by Baruch)
- Made linux-pam optional dependency
- Added README.txt to license files (by Baruch)
- Added hashes for all license files (by Baruch)

---
 package/Config.in              |  1 +
 package/turbovnc/Config.in     | 24 ++++++++++++++++++++++++
 package/turbovnc/turbovnc.hash | 25 +++++++++++++++++++++++++
 package/turbovnc/turbovnc.mk   | 25 +++++++++++++++++++++++++
 4 files changed, 75 insertions(+)
 create mode 100644 package/turbovnc/Config.in
 create mode 100644 package/turbovnc/turbovnc.hash
 create mode 100644 package/turbovnc/turbovnc.mk
package/Config.in +1 -0
index dbfb288..2ab14bf 100644
@@ -330,6 +330,7 @@ comment "X applications"
 	source "package/qt-webkit-kiosk/Config.in"
 	source "package/rdesktop/Config.in"
 	source "package/synergy/Config.in"
+	source "package/turbovnc/Config.in"
 	source "package/wmctrl/Config.in"
 	source "package/x11vnc/Config.in"
 	source "package/xdotool/Config.in"
package/turbovnc/Config.in new file +0 -0
new file mode 100644
index 0000000..0b98073

package/turbovnc/Config.in line 3

Quoted 3 lines
package/turbovnc/Config.in new file +3 -0
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_TURBOVNC
+	bool "turbovnc"
+	select BR2_PACKAGE_JPEG_TURBO

You also need to select BR2_PACKAGE_JPEG because BR2_PACKAGE_JPEG_TURBO depends on BR2_PACKAGE_JPEG.

package/turbovnc/Config.in line 10

Quoted 7 lines
package/turbovnc/Config.in new file +7 -0
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_XLIB_LIBICE
+	select BR2_PACKAGE_XLIB_LIBSM
+	select BR2_PACKAGE_XLIB_LIBX11
+	select BR2_PACKAGE_XLIB_LIBXEXT
+	select BR2_PACKAGE_XLIB_LIBXAU
+	select BR2_PACKAGE_XLIB_LIBXDMCP

The perl and xfont_font-misc-misc run-time dependencies are missing here.

Quoted 35 lines
package/turbovnc/Config.in new file +14 -0
+	help
+	  TurboVNC is a high-performance, enterprise-quality version 
+	  of VNC based on TightVNC, TigerVNC, and X.org.
+	  It contains a variant of Tight encoding that is tuned for
+	  maximum performance and compression with 3D applications
+	  (VirtualGL), video, and other image-intensive workloads.
+	  TurboVNC, in combination with VirtualGL, provides a 
+	  complete solution for remotely displaying 3D applications
+	  with interactive performance. TurboVNC's high-speed encoding
+	  methods have been adopted by TigerVNC and libvncserver,
+	  and TurboVNC is also compatible with any other TightVNC
+	  derivative.
+
+	  https://turbovnc.org
package/turbovnc/turbovnc.hash new file +15 -0
new file mode 100644
index 0000000..3dc092a
@@ -0,0 +1,25 @@
+# From https://sourceforge.net/projects/turbovnc/files/2.1.2/
+md5	9d04b26d40664d0d8072e8b1828f69c4  turbovnc-2.1.2.tar.gz
+sha1	cd99a27cee86f0680410133beb25da1d6f35a3ea  turbovnc-2.1.2.tar.gz
+# Locally computed
+sha256	2389f76eafc48412b980a61280ffb8d111dacd9e51d5e3df2112f505558b48d4  turbovnc-2.1.2.tar.gz
+
+md5	b234ee4d69f5fce4486a80fdaf4a4263  doc/LICENSE.txt
+sha1	4cc77b90af91e615a64ae04893fdffa7939db84c  doc/LICENSE.txt
+sha256	8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  doc/LICENSE.txt
+
+md5	f1fbc9578354b488efd1c7e276855c6a  doc/LICENSE-PuTTY.txt
+sha1	a069392e138032b7ebb156bad71035146916821f  doc/LICENSE-PuTTY.txt
+sha256	867b1e03a9a1bd0131b5ab7cb0cc617750cbd9edec9dee1903e15b306bb8f94b  doc/LICENSE-PuTTY.txt
+
+md5	c017ff17fc6f0794adf93db5559ccd56  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT

package/turbovnc/turbovnc.hash line 25

Quoted 10 lines
package/turbovnc/turbovnc.hash new file +10 -0
+sha1	265206b28e7c1b750b7e6ea27cc527a6cc6e7644  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+sha256	f6333b3a9106f10190e96d9f994f934deb7a5632851a1aaf846b94651a80f4da  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+
+md5	ddeb76cd34e791893c0f539fdab879bb  unix/Xvnc/lib/bzip2/LICENSE
+sha1	1c0c6888759a63c32bca7eb63353af2cd9bd5d9e  unix/Xvnc/lib/bzip2/LICENSE
+sha256	4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204  unix/Xvnc/lib/bzip2/LICENSE
+
+md5	009fb6d6593627afd6064fa51ca8d986  README.txt
+sha1	aa41dc5b5268417e32fc280077b25e715e6d18f3  README.txt
+sha256	6d38c387215532019f457f9b0050f24bcccdda2e8f2524014a79d294730735db  README.txt

Since the license files hashes are locally calculated, having only sha256 for each file should be enough.

Quoted 21 lines
package/turbovnc/turbovnc.mk new file +15 -0
new file mode 100644
index 0000000..34208e3
@@ -0,0 +1,25 @@
+################################################################################
+#
+# turbovnc
+#
+################################################################################
+
+TURBOVNC_VERSION = 2.1.2
+TURBOVNC_SOURCE = turbovnc-$(TURBOVNC_VERSION).tar.gz
+TURBOVNC_SITE = https://downloads.sourceforge.net/project/turbovnc/$(TURBOVNC_VERSION)
+TURBOVNC_DEPENDENCIES = jpeg-turbo openssl xlib_libICE xlib_libSM xlib_libX11 \
+			xlib_libXext xlib_libXau xlib_libXdmcp 
+TURBOVNC_LICENSE = GPL-2.0, MIT (putty), Dual FTL/GPL-2.0+ (freetype) \
+		   bzip2 license (bzip2), Zlib (zlib)
+TURBOVNC_LICENSE_FILES = doc/LICENSE.txt doc/LICENSE-PuTTY.txt \
+			 unix/Xvnc/extras/freetype2/doc/LICENSE.txt \

package/turbovnc/turbovnc.mk line 25

Quoted 10 lines
package/turbovnc/turbovnc.mk new file +10 -0
+			 unix/Xvnc/lib/bzip2/LICENSE README.txt
+
+# Build just server
+TURBOVNC_CONF_OPTS += -DTVNC_BUILDJAVA=0 -DTVNC_BUILDNATIVE=0
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+TURBOVNC_DEPENDENCIES += linux-pam
+endif
+
+$(eval $(cmake-package))

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#2 lore raw

PATCH v2 1/1 turbovnc: new package

Hello,

Quoted 6 lines · Baruch Siach

package/turbovnc/Config.in line 3

Quoted 3 lines
package/turbovnc/Config.in new file +3 -0
+config BR2_PACKAGE_TURBOVNC
+	bool "turbovnc"
+	select BR2_PACKAGE_JPEG_TURBO  

You also need to select BR2_PACKAGE_JPEG because BR2_PACKAGE_JPEG_TURBO depends on BR2_PACKAGE_JPEG.

No, you cannot do that, because BR2_PACKAGE_JPEG_TURBO is part of a choice, and you cannot select options in a choice.

I don't see why TurboVNC would need jpeg-turbo specifically, as it's API compatible with libjpeg. Therefore, please select BR2_PACKAGE_JPEG here, and let the user decide whether jpeg-turbo or libjpeg should be used.

Quoted 7 lines

package/turbovnc/Config.in line 10

Quoted 7 lines
package/turbovnc/Config.in new file +7 -0
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_XLIB_LIBICE
+	select BR2_PACKAGE_XLIB_LIBSM
+	select BR2_PACKAGE_XLIB_LIBX11
+	select BR2_PACKAGE_XLIB_LIBXEXT
+	select BR2_PACKAGE_XLIB_LIBXAU
+	select BR2_PACKAGE_XLIB_LIBXDMCP  

If you select those libraries, you need to add a:

depends on BR2_PACKAGE_XORG7

Quoted 2 lines

Since the license files hashes are locally calculated, having only sha256 for each file should be enough.

Agreed.

Quoted 6 lines

package/turbovnc/turbovnc.mk line 12

Quoted 6 lines
package/turbovnc/turbovnc.mk new file +6 -0
+TURBOVNC_VERSION = 2.1.2
+TURBOVNC_SOURCE = turbovnc-$(TURBOVNC_VERSION).tar.gz
+TURBOVNC_SITE = https://downloads.sourceforge.net/project/turbovnc/$(TURBOVNC_VERSION)
+TURBOVNC_DEPENDENCIES = jpeg-turbo openssl xlib_libICE xlib_libSM xlib_libX11 \
+			xlib_libXext xlib_libXau xlib_libXdmcp 
+TURBOVNC_LICENSE = GPL-2.0, MIT (putty), Dual FTL/GPL-2.0+ (freetype) \

Missing comma at the end of this line.

Why does it bundle freetype? Can it use an external Freetype instead?

Quoted 1 line

package/turbovnc/turbovnc.mk line 13

Quoted 1 line
package/turbovnc/turbovnc.mk new file +1 -0
+		   bzip2 license (bzip2), Zlib (zlib)

The SPDX license code for bzip2 license is bzip2-1.0.5 or bzip2-1.0.6, see https://spdx.org/licenses/.

Also, why does it bundle Zlib ?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#3 lore raw

PATCH v2 1/1 turbovnc: new package

Hi Thomas

1.11.2017, 11:53, Thomas Petazzoni kirjoitti:

Quoted 6 lines

Why does it bundle freetype? Can it use an external Freetype instead?

Quoted 1 line

package/turbovnc/turbovnc.mk line 13

Quoted 1 line
package/turbovnc/turbovnc.mk new file +1 -0
+		   bzip2 license (bzip2), Zlib (zlib)

The SPDX license code for bzip2 license is bzip2-1.0.5 or bzip2-1.0.6, see https://spdx.org/licenses/.

Also, why does it bundle Zlib ?

I honestly have not the faintest idea why it want's to use it's own, bundled versions of bzip2,freetype2 and zlib.
On my 64-bit Intel box these are produced under lib directory:

libbzip2.a      libfontenc.a    librandr.a    libXau.a libxkb.a
libcomposite.a  libfreetype2.a  librender.a   libXdmcp.a libXNVCtrl.a
libdamage.a     libmain.a       libsha1.a     libXext-server.a libzlib.a
libdamageext.a  libmi.a         libsync.a     libxfixes.a
libdix.a        libos.a         libvnc.a      libXfont.a
libfb.a         libpixman.a     libvncauth.a  libXi.a

But then doing ldd for Xvnc binary gives this:
Xvnc:

         linux-vdso.so.1 (0x00007fffbbffe000)
         libturbojpeg.so.0 => /usr/lib64/libturbojpeg.so.0 
(0x00007f1d221b8000)
         libm.so.6 => /lib64/libm.so.6 (0x00007f1d21eba000)
         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1d21c9e000)
         libpam.so.0 => /lib64/libpam.so.0 (0x00007f1d21a90000)
         libdl.so.2 => /lib64/libdl.so.2 (0x00007f1d2188c000)
         libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f1d21683000)
         libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f1d21466000)
         libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f1d21124000)
         libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f1d20f12000)
         libc.so.6 => /lib64/libc.so.6 (0x00007f1d20b76000)
         /lib64/ld-linux-x86-64.so.2 (0x00007f1d2242b000)
         libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f1d20971000)
         libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f1d2075b000)
         libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f1d20532000)
         librt.so.1 => /lib64/librt.so.1 (0x00007f1d2032a000)
         libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f1d20126000)
         libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f1d1ff20000)

So it builds a static versions of libXau.a libXdmcp.a for example, but then does not use them anyway in the final link but instead the system wide versions ?

I posted question to github if bzip2, freetype2 and zlib can be external dependencies or if they contain some TurboVNC specific stuff.

-S-

#4 lore raw

PATCH v2 1/1 turbovnc: new package

Hello,

Quoted 6 lines · Stefan Fr?berg
libbzip2.a      libfontenc.a    librandr.a    libXau.a libxkb.a
libcomposite.a  libfreetype2.a  librender.a   libXdmcp.a libXNVCtrl.a
libdamage.a     libmain.a       libsha1.a     libXext-server.a libzlib.a
libdamageext.a  libmi.a         libsync.a     libxfixes.a
libdix.a        libos.a         libvnc.a      libXfont.a
libfb.a         libpixman.a     libvncauth.a  libXi.a

That's a lot of static libraries, but I'm sure TurboVNC didn't duplicate the source code for all of these. Perhaps it is copying them from their system-wide location to its build directory, for some funky reason?

Quoted 22 lines

But then doing ldd for Xvnc binary gives this:
Xvnc:

         linux-vdso.so.1 (0x00007fffbbffe000)
         libturbojpeg.so.0 => /usr/lib64/libturbojpeg.so.0 
(0x00007f1d221b8000)
         libm.so.6 => /lib64/libm.so.6 (0x00007f1d21eba000)
         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1d21c9e000)
         libpam.so.0 => /lib64/libpam.so.0 (0x00007f1d21a90000)
         libdl.so.2 => /lib64/libdl.so.2 (0x00007f1d2188c000)
         libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f1d21683000)
         libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f1d21466000)
         libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f1d21124000)
         libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f1d20f12000)
         libc.so.6 => /lib64/libc.so.6 (0x00007f1d20b76000)
         /lib64/ld-linux-x86-64.so.2 (0x00007f1d2242b000)
         libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f1d20971000)
         libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f1d2075b000)
         libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f1d20532000)
         librt.so.1 => /lib64/librt.so.1 (0x00007f1d2032a000)
         libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f1d20126000)
         libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f1d1ff20000)
Quoted 6 lines

So it builds a static versions of libXau.a libXdmcp.a for example, but then does not use them anyway in the final link but instead the system wide versions ?

I posted question to github if bzip2, freetype2 and zlib can be external dependencies or if they contain some TurboVNC specific stuff.

Thanks. Let's see what upstream says.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#5 lore raw

PATCH v2 1/1 turbovnc: new package

Hi

2.11.2017, 23:28, Thomas Petazzoni kirjoitti:

Quoted 7 lines
Quoted 2 lines

I posted question to github if bzip2, freetype2 and zlib can be external dependencies or if they contain some TurboVNC specific stuff.

Thanks. Let's see what upstream says.

Best regards,

Thomas

Yeah. Im actually pretty excited to test and see how well TurboVNC server will perform with
Raspberry Pi 2 or 3 after reading about TurboVNCs possibility of using multithreading on multi-core systems and other acceleration tricks.

https://github.com/TurboVNC/turbovnc/blob/master/doc/performance.txt

And then there is this:
https://github.com/TurboVNC/turbovnc/issues/95

I did not even know that there are 3 different implementations of SIMD-accelerated zlib's out there.
:-O

-S-

#6 lore raw

PATCH v2 1/1 turbovnc: new package

In reply to Thomas Petazzoni

Hi

Upstream was very helpfull and fast :-)
https://github.com/TurboVNC/turbovnc/issues/111

So system-wide bzip2,freetype and zlib should be possible with version 2.1.3
:-)
https://github.com/TurboVNC/turbovnc/commit/88fae55850b4888e4aef6512e183a959d73df1e7

But the following raises a tought:

"On RHEL 7 & Fedora, I can generate a fully system-specific build of TurboVNC like so:

cmake -G"Unix Makefiles" -DTVNC_SYSTEMLIBS=1 -DTVNC_SYSTEMX11=1 -DTVNC_DLOPENSSL=0 -DTJPEG_INCLUDE_DIR=/usr/include -DTJPEG_LIBRARY=-lturbojpeg

Generally TVNC_SYSTEMX11 won't work unless the system is using the same version of X.org as the TurboVNC Server, or a newer version."

So how should I check, if using -DTVNC_SYSTEMX11=1 switch, that the builded system Xorg headers/libs and the
TurboVNC bundled Xorg are at least same version ???

-S-

2.11.2017, 23:28, Thomas Petazzoni kirjoitti:

Quoted 49 lines

Hello,

Quoted 6 lines · Stefan Fr?berg
libbzip2.a      libfontenc.a    librandr.a    libXau.a libxkb.a
libcomposite.a  libfreetype2.a  librender.a   libXdmcp.a libXNVCtrl.a
libdamage.a     libmain.a       libsha1.a     libXext-server.a libzlib.a
libdamageext.a  libmi.a         libsync.a     libxfixes.a
libdix.a        libos.a         libvnc.a      libXfont.a
libfb.a         libpixman.a     libvncauth.a  libXi.a

That's a lot of static libraries, but I'm sure TurboVNC didn't duplicate the source code for all of these. Perhaps it is copying them from their system-wide location to its build directory, for some funky reason?

Quoted 22 lines

But then doing ldd for Xvnc binary gives this:
Xvnc:

          linux-vdso.so.1 (0x00007fffbbffe000)
          libturbojpeg.so.0 => /usr/lib64/libturbojpeg.so.0
(0x00007f1d221b8000)
          libm.so.6 => /lib64/libm.so.6 (0x00007f1d21eba000)
          libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1d21c9e000)
          libpam.so.0 => /lib64/libpam.so.0 (0x00007f1d21a90000)
          libdl.so.2 => /lib64/libdl.so.2 (0x00007f1d2188c000)
          libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f1d21683000)
          libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f1d21466000)
          libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f1d21124000)
          libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f1d20f12000)
          libc.so.6 => /lib64/libc.so.6 (0x00007f1d20b76000)
          /lib64/ld-linux-x86-64.so.2 (0x00007f1d2242b000)
          libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f1d20971000)
          libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f1d2075b000)
          libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f1d20532000)
          librt.so.1 => /lib64/librt.so.1 (0x00007f1d2032a000)
          libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f1d20126000)
          libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f1d1ff20000)
Quoted 6 lines

So it builds a static versions of libXau.a libXdmcp.a for example, but then does not use them anyway in the final link but instead the system wide versions ?

I posted question to github if bzip2, freetype2 and zlib can be external dependencies or if they contain some TurboVNC specific stuff.

Thanks. Let's see what upstream says.

Best regards,

Thomas

#7 lore raw

PATCH v2 1/1 turbovnc: new package

In reply to Thomas Petazzoni

Hi

I have now successfully compiled latest TurboVNC from git and with bzip2,freetype and zlib as
external dependencies, also, libXau, libXdmcp and libXfont are now external.

But there are two issues that need resolving:

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast.
So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc
package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

2. TurboVNC (Xvnc binary) really is two servers rolled into one. Actual normally working,
altought TurboVNC patched Xorg server and VNC server.
So, maybe the right place for turbovnc in the menus would be below "Alternate X servers",
below Xvfb.
And then I just copy dependencies from xorg package, so that if the user want's both
VNC and Xorg then he just selects the turbovnc without needing to waste space for
the real, vanilla Xorg installation.
Is that okay?

Maybe in future, there could be even virtual package virtual-xvnc, like "Xvnc --->" below Xvfb in the
menu where user could select what Xvnc implementation (TurboVNC, TightVNC, TigerVNC etc...)
he/she want's to use.

Tought?

-S-

2.11.2017, 23:28, Thomas Petazzoni kirjoitti:

Quoted 49 lines

Hello,

Quoted 6 lines · Stefan Fr?berg
libbzip2.a      libfontenc.a    librandr.a    libXau.a libxkb.a
libcomposite.a  libfreetype2.a  librender.a   libXdmcp.a libXNVCtrl.a
libdamage.a     libmain.a       libsha1.a     libXext-server.a libzlib.a
libdamageext.a  libmi.a         libsync.a     libxfixes.a
libdix.a        libos.a         libvnc.a      libXfont.a
libfb.a         libpixman.a     libvncauth.a  libXi.a

That's a lot of static libraries, but I'm sure TurboVNC didn't duplicate the source code for all of these. Perhaps it is copying them from their system-wide location to its build directory, for some funky reason?

Quoted 22 lines

But then doing ldd for Xvnc binary gives this:
Xvnc:

          linux-vdso.so.1 (0x00007fffbbffe000)
          libturbojpeg.so.0 => /usr/lib64/libturbojpeg.so.0
(0x00007f1d221b8000)
          libm.so.6 => /lib64/libm.so.6 (0x00007f1d21eba000)
          libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1d21c9e000)
          libpam.so.0 => /lib64/libpam.so.0 (0x00007f1d21a90000)
          libdl.so.2 => /lib64/libdl.so.2 (0x00007f1d2188c000)
          libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f1d21683000)
          libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f1d21466000)
          libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f1d21124000)
          libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f1d20f12000)
          libc.so.6 => /lib64/libc.so.6 (0x00007f1d20b76000)
          /lib64/ld-linux-x86-64.so.2 (0x00007f1d2242b000)
          libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f1d20971000)
          libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f1d2075b000)
          libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f1d20532000)
          librt.so.1 => /lib64/librt.so.1 (0x00007f1d2032a000)
          libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f1d20126000)
          libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f1d1ff20000)
Quoted 6 lines

So it builds a static versions of libXau.a libXdmcp.a for example, but then does not use them anyway in the final link but instead the system wide versions ?

I posted question to github if bzip2, freetype2 and zlib can be external dependencies or if they contain some TurboVNC specific stuff.

Thanks. Let's see what upstream says.

Best regards,

Thomas

#8 lore raw

PATCH v2 1/1 turbovnc: new package

Hi Stefan,

Quoted 4 lines · Stefan Fr?berg

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast. So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

I don't think so.

The manual (?17.2.3) says you should "use a select type of dependency for dependencies on libraries", and conversely "use a depends on type of dependency when the user really needs to be aware of the dependency". In this case there is nothing obvious about having to enable turbo-jpeg for turbovnc, IMO.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
#9 lore raw

PATCH v2 1/1 turbovnc: new package

Hello,

Quoted 6 lines · Baruch Siach
Quoted 4 lines · Stefan Fr?berg

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast. So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

Quoted 7 lines

I don't think so.

The manual (?17.2.3) says you should "use a select type of dependency for dependencies on libraries", and conversely "use a depends on type of dependency when the user really needs to be aware of the dependency". In this case there is nothing obvious about having to enable turbo-jpeg for turbovnc, IMO.

Yes, but Stefan cannot select jpeg-turbo, because it is part of a choice, and you can't "select" one item of a choice. So this suggestion from the manual doesn't apply in this specific case.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#10 lore raw

PATCH v2 1/1 turbovnc: new package

In reply to Stefan Fröberg
Quoted 5 lines · Stefan Fr?berg

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast.
So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

Yes, there is no other way. However, please do add a comment (separately from
the toolchain comments) that it needs jpeg-turbo.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#11 lore raw

PATCH v2 1/1 turbovnc: new package

Hello,

Quoted 8 lines · Arnout Vandecappelle
Quoted 5 lines

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast.
So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

Yes, there is no other way. However, please do add a comment (separately from
the toolchain comments) that it needs jpeg-turbo.

I still would like to challenge why it needs jpeg-turbo. libjpeg and jpeg-turbo are supposed to be API compatible, so how can TurboVNC need one rather than the other? I can understand that TurboVNC's performance might be horrible with the regular libjpeg, but I don't get why it wouldn't work.

Stefan?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#12 lore raw

PATCH v2 1/1 turbovnc: new package

Hi

Well, the only reason seems to be that TurboVNC configuration is not happy untill the following
conditions are met:

TJPEG_INCLUDE_DIR = <path_to_include>/turbojepg.h
TJPEG_LIBRARY = <path_to_lib>/libturbojpeg

So why is it looking those and not jpeg,h or libjpeg ? Let's do some detective work :-)

First, looking from my gentoo installation (that only has libjpeg-turbo) I can see that:
/usr/include
-----------------
jpeglib.h
turbojpeg.h

and
/usr/lib
----------------
libjpeg.so -> libjpeg.so.62.2.0
libjpeg.so.62 -> libjpeg.so.62.2.0
libjpeg.so.62.2.0
libturbojpeg.so -> libturbojpeg.so.0.1.0
libturbojepg.so.0 -> libturbojpeg.so.0.1.0
libturbojpeg.so.0.1.0

Funny, I always tought that jpeglib.h and all the libjpeg.* would be just symlinks to turbojpeg.h and libturbojpeg

So why does my gentoo libjpeg-turbo installation have separate jpeg.h and libjpeg.* files instead of just symlinks?

It appears to be that libjpeg-turbo library contains actually *two* JPEG API's!

jpeg.h and libjpeg.* being the standard (but SIMD accelerated), API compatible
implementation like you mentioned and that can just be dropped to replace vanilla jpeg.

And then there is another API called TurboJPEG (turbojpeg.h and libturbojpeg.*) that is
also bundled with libjpeg-turbo library and that's what the TurboVNC is using.

Performance wise there is no difference between the two API's but according to below link,
TurboJPEG API provides some features that are not easy to implement with standard libjpeg API

https://libjpeg-turbo.org/About/TurboJPEG

So what now?
Try to ask upstream if can use SIMD accelerated, standard libjpeg API (jpeg.h, libjpeg.*) instead of
TurboJPEG API ??? (maybe not possible if TurboVNC indeed needs some of the TurboJPEG API's stuff)

Dang .... maybe I just try to temporarily symlink turbojpeg.h libturbojpeg.* to libjpeg API using version
of the accelerated library and see where it starts to complaining ....

-S-

7.11.2017, 0:38, Thomas Petazzoni kirjoitti:

Quoted 20 lines

Hello,

Quoted 7 lines · Arnout Vandecappelle
Quoted 5 lines

1. TurboVNC really does depend of turbo-jpeg, that's one of the reasons it's so fast.
So for now I have made it "depends on BR2_PACKAGE_JPEG_TURBO" so that turbovnc package will only appear to menu only if jpeg-turbo has been also selected. Is that okay?

Yes, there is no other way. However, please do add a comment (separately from
the toolchain comments) that it needs jpeg-turbo.

I still would like to challenge why it needs jpeg-turbo. libjpeg and jpeg-turbo are supposed to be API compatible, so how can TurboVNC need one rather than the other? I can understand that TurboVNC's performance might be horrible with the regular libjpeg, but I don't get why it wouldn't work.

Stefan?

Thomas

#13 lore raw

PATCH v2 1/1 turbovnc: new package

In reply to Baruch Siach

Hi Baruch

Okay, will sleep little and then make 3rd version of patch. Thanks.

1.11.2017, 8:06, Baruch Siach kirjoitti:

Quoted 136 lines

Hi Stefan,

Quoted 37 lines · Stefan Fr?berg

Changes v1 -> v2:
- Actually selecting the needed dependencies (by Baruch)
- Dropped run-time dependencies perl and xfont_font-misc-misc (by Baruch)
- Made linux-pam optional dependency
- Added README.txt to license files (by Baruch)
- Added hashes for all license files (by Baruch)

---
  package/Config.in              |  1 +
  package/turbovnc/Config.in     | 24 ++++++++++++++++++++++++
  package/turbovnc/turbovnc.hash | 25 +++++++++++++++++++++++++
  package/turbovnc/turbovnc.mk   | 25 +++++++++++++++++++++++++
  4 files changed, 75 insertions(+)

create mode 100644 package/turbovnc/Config.in create mode 100644 package/turbovnc/turbovnc.hash create mode 100644 package/turbovnc/turbovnc.mk

package/Config.in +1 -0
index dbfb288..2ab14bf 100644
@@ -330,6 +330,7 @@ comment "X applications"
  	source "package/qt-webkit-kiosk/Config.in"
  	source "package/rdesktop/Config.in"
  	source "package/synergy/Config.in"
+	source "package/turbovnc/Config.in"
  	source "package/wmctrl/Config.in"
  	source "package/x11vnc/Config.in"
  	source "package/xdotool/Config.in"
package/turbovnc/Config.in new file +0 -0
new file mode 100644
index 0000000..0b98073

package/turbovnc/Config.in line 3

Quoted 3 lines
package/turbovnc/Config.in new file +3 -0
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_TURBOVNC
+	bool "turbovnc"
+	select BR2_PACKAGE_JPEG_TURBO

You also need to select BR2_PACKAGE_JPEG because BR2_PACKAGE_JPEG_TURBO depends on BR2_PACKAGE_JPEG.

package/turbovnc/Config.in line 10

Quoted 7 lines
package/turbovnc/Config.in new file +7 -0
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_XLIB_LIBICE
+	select BR2_PACKAGE_XLIB_LIBSM
+	select BR2_PACKAGE_XLIB_LIBX11
+	select BR2_PACKAGE_XLIB_LIBXEXT
+	select BR2_PACKAGE_XLIB_LIBXAU
+	select BR2_PACKAGE_XLIB_LIBXDMCP

The perl and xfont_font-misc-misc run-time dependencies are missing here.

Quoted 35 lines
package/turbovnc/Config.in new file +14 -0
+	help
+	  TurboVNC is a high-performance, enterprise-quality version
+	  of VNC based on TightVNC, TigerVNC, and X.org.
+	  It contains a variant of Tight encoding that is tuned for
+	  maximum performance and compression with 3D applications
+	  (VirtualGL), video, and other image-intensive workloads.
+	  TurboVNC, in combination with VirtualGL, provides a
+	  complete solution for remotely displaying 3D applications
+	  with interactive performance. TurboVNC's high-speed encoding
+	  methods have been adopted by TigerVNC and libvncserver,
+	  and TurboVNC is also compatible with any other TightVNC
+	  derivative.
+
+	  https://turbovnc.org
package/turbovnc/turbovnc.hash new file +15 -0
new file mode 100644
index 0000000..3dc092a
@@ -0,0 +1,25 @@
+# From https://sourceforge.net/projects/turbovnc/files/2.1.2/
+md5	9d04b26d40664d0d8072e8b1828f69c4  turbovnc-2.1.2.tar.gz
+sha1	cd99a27cee86f0680410133beb25da1d6f35a3ea  turbovnc-2.1.2.tar.gz
+# Locally computed
+sha256	2389f76eafc48412b980a61280ffb8d111dacd9e51d5e3df2112f505558b48d4  turbovnc-2.1.2.tar.gz
+
+md5	b234ee4d69f5fce4486a80fdaf4a4263  doc/LICENSE.txt
+sha1	4cc77b90af91e615a64ae04893fdffa7939db84c  doc/LICENSE.txt
+sha256	8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  doc/LICENSE.txt
+
+md5	f1fbc9578354b488efd1c7e276855c6a  doc/LICENSE-PuTTY.txt
+sha1	a069392e138032b7ebb156bad71035146916821f  doc/LICENSE-PuTTY.txt
+sha256	867b1e03a9a1bd0131b5ab7cb0cc617750cbd9edec9dee1903e15b306bb8f94b  doc/LICENSE-PuTTY.txt
+
+md5	c017ff17fc6f0794adf93db5559ccd56  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT

package/turbovnc/turbovnc.hash line 25

Quoted 10 lines
package/turbovnc/turbovnc.hash new file +10 -0
+sha1	265206b28e7c1b750b7e6ea27cc527a6cc6e7644  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+sha256	f6333b3a9106f10190e96d9f994f934deb7a5632851a1aaf846b94651a80f4da  unix/Xvnc/extras/freetype2/docs/LICENSE.TXT
+
+md5	ddeb76cd34e791893c0f539fdab879bb  unix/Xvnc/lib/bzip2/LICENSE
+sha1	1c0c6888759a63c32bca7eb63353af2cd9bd5d9e  unix/Xvnc/lib/bzip2/LICENSE
+sha256	4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204  unix/Xvnc/lib/bzip2/LICENSE
+
+md5	009fb6d6593627afd6064fa51ca8d986  README.txt
+sha1	aa41dc5b5268417e32fc280077b25e715e6d18f3  README.txt
+sha256	6d38c387215532019f457f9b0050f24bcccdda2e8f2524014a79d294730735db  README.txt

Since the license files hashes are locally calculated, having only sha256 for each file should be enough.

Quoted 21 lines
package/turbovnc/turbovnc.mk new file +15 -0
new file mode 100644
index 0000000..34208e3
@@ -0,0 +1,25 @@
+################################################################################
+#
+# turbovnc
+#
+################################################################################
+
+TURBOVNC_VERSION = 2.1.2
+TURBOVNC_SOURCE = turbovnc-$(TURBOVNC_VERSION).tar.gz
+TURBOVNC_SITE = https://downloads.sourceforge.net/project/turbovnc/$(TURBOVNC_VERSION)
+TURBOVNC_DEPENDENCIES = jpeg-turbo openssl xlib_libICE xlib_libSM xlib_libX11 \
+			xlib_libXext xlib_libXau xlib_libXdmcp
+TURBOVNC_LICENSE = GPL-2.0, MIT (putty), Dual FTL/GPL-2.0+ (freetype) \
+		   bzip2 license (bzip2), Zlib (zlib)
+TURBOVNC_LICENSE_FILES = doc/LICENSE.txt doc/LICENSE-PuTTY.txt \
+			 unix/Xvnc/extras/freetype2/doc/LICENSE.txt \

package/turbovnc/turbovnc.mk line 25

Quoted 10 lines
package/turbovnc/turbovnc.mk new file +10 -0
+			 unix/Xvnc/lib/bzip2/LICENSE README.txt
+
+# Build just server
+TURBOVNC_CONF_OPTS += -DTVNC_BUILDJAVA=0 -DTVNC_BUILDNATIVE=0
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+TURBOVNC_DEPENDENCIES += linux-pam
+endif
+
+$(eval $(cmake-package))

baruch