Dear all

The X2Go project is proud to announce the first release of the X2Go
component ,,x2gokdrive''.

New gains of this version of ,,x2gokdrive'' are:

X2Go KDrive is a new backing technology for transferring remote content between
a server and a client, based upon the system-provided X.Org version, of which we
then build a custom DDX. It is mostly intended for fast, low-latency local
networks and can improve rendering speed for, e.g., modern web browsers

While KDrive sessions can be used via the usual client applications, NX and
KDrive sessions are *not* interchangeable.

X2Go Component: x2gokdrive
Timestamp: 1686166664
Date: Wed, 07 Jun 2023 21:37:44 +0200
 x2gokdrive ( RELEASED; urgency=medium
   [ Oleksandr Shneyder ]
   * Initial release:
     - Calculate screen dimensions (in mm) according to dpi value.
       Default DPI (Xorg) is 75. User can set DPI using -dpi command
       line option.
     - Move selection functionality to separate thread. Use XCB API to manage
     - add xcb-xfixes to deps.
     - send a receive feature versions.
     - reinit client version on new connection and awaka sending thread when
       client version received.
     - support sending and receiving selections on demand. Support reading and
       writing INCR properties.
     - move declaration of RemoteHostVars from x2gokdriveremote.h to
     - add some support for HTML5 client (like converting pointer cursors to
       PNG format).
     - fix crashing if client is sending unrequested selection.
     - extended clipboard support for HTML client.
     - add name of the thread to the debug output.
     - move calling of possibly thread-unsafe ospoll functions (SetNotifyFd,
       RemoveNotifyFd) to main thread.
     - (re)enable sessions debugging.
     - fix infinite loop if reading of cookie has failed.
     - improve initialization of cursor frame and cache element structures.
     - improve clearing of the frame list.
     - reiniting of frame and cursors caches by client request.
     - don't check cache data size, only amount of elements.
     - reduce amount of cache elements to save resources.
     - rootless mode for x2gokdrive.
     - improve icon handling in rootless mode.
     - don't show invisible windows.
     - sending KEYRELEASE immediately after KEYPRESS to avoid the "key
     - set initial geometry form the -geometry command line option.
     - change from alder32 to crc32 to avoid collisions on small frames.
     - automatically decrease the jpeg quality when to many frames in queue.
     - update the screen with png frames when no data is transmitted.
     - make screen repaint faster.
     - add command line option for initial JPEG quality.
     - fix building on Xorg <  11900000.
     - don't exit when setting command line arguments -xkb-model, -xkb-layout,
       -xkb-variant on Xorg < 11899001.
     - support for windows with type _NET_WM_WINDOW_TYPE_DND. Ignore windows
       with visibility >= 2.
     - don't ignore windows with visibility == 2. Client should hide them from
   [ Mihai Moldovan ]
   * Initial release:
     - patches.legacy/ whitespace-only fix.
     - patches.legacy/ fix markdown syntax.
     - {./,patches.xorg/{common,1.18.4,1.19.{2,6},1.20.{1,4,5}}/}quilt.env: add
       new quilt environment helper mechanism. Should make using quilt a lot
       easier on the developer's machine. Requires SOURCING(!) the quilt.env:
add trailing slash to QUILT_PATCHES
     - patches.xorg/1.20.4/xorg-server-configure-ac.patch: backport
       XORG_VERSION_CURRENT change from
       e0dbca73f11e9aa7a066e748e6d08ba256be69cf / 1.20.5.
     - patches.xorg/1.20.4: add missing/hw/xfree86/common/modeline2c.awk file,
       working around a bug in CentOS 7 and Fedora 30 (possibly others as
     - patches.xorg/1.20.5: likewise add missing modeline2c.awk file. Actually
       needed for Fedora 30.
     - patches.xorg/1.19.2/xorg-server-configure-ac.patch: backport
       XORG_VERSION_CURRENT change from
       e0dbca73f11e9aa7a066e748e6d08ba256be69cf / 1.20.5.
     - x2gokdrive{remote,selection}.c: warp initializer into another set of
       curly braces until the first POD is reached. Fixes compile errors on
       EPEL 7 and generally systems with older GCC versions. That warning,
       which is turned into an error later on, is generally overly strict,
       since {0} is widely used as an "universal zero initializer" in C,
       initializing all other elements that are not explicitly given in the
       list implicitly with zero. For some reason, GCC decided that it is an
       error to initialize a whole struct that way and explicitly requires that
       at least one plain-old-data type is initialized that way. Case in point,
       newer GCC versions removed that warning altogether and just blindly
       accepts the usual syntax.
     - x2gokdriveselection.c: fix compile error, the xEvent struct (made up of
       union of another struct) needs another layer of curly braces.
     - patches.xorg/: add skeleton for 1.20.3 - needed for OpenSuSE Leap 15.1.
     - patches.xorg/1.20.3: add actual (rebased) patches and potentially
       missing files.
     - patches.xorg/1.18.4: refresh against Ubuntu 16.04/xenial version.
     - x2gokdrive{.c,remote.c,init.{c,h}}: patch for X.Org 1.18.x
       compatibility, merging in the content from
       patches.legacy/osuse_42.3.patch via preprocessor defines.
     - patches.xorg/: add 1.20.6 files, essentially copied and refreshed from
     - patches.xorg/: add 1.20.7 files, essentially copied and refreshed from
     - x2gokdrive{,remote}.c: fix logic flaws.
     - x2gokdriveremote.h: remove duplicate function declaration for
       clientReadNotify ().
     - patches.xorg/1.18.4/xorg-server-configure-ac.patch: add -lpthread to
     - patches.xorg/1.19.6: refresh patch set for Ubuntu 18.04/bionic,
       including backporting of the XORG_VERSION_CURRENT change.
     - patches.xorg/1.18.4/xorg-server-configure-ac.patch: add -lz and also
       -ljpeg and -lpng to be on the safe side, since it seems that these
       libraries are universally missing.
     - add print-debugging to figure out what is being generated
       on Ubuntu 16.04/xenial.
     - revert print-debugging again.
     - patches.xorg/1.18.4/xorg-server-configure-ac.patch: correctly add
       -pthread and -lpthread references *after* the pkgconfig checks execute.
     - quilt.env: add instructions from where to run the source command, this
       got me confused two years later.
     - patches.xorg/: add 1.20.13 subdirectory for Ubuntu Focal (20.04) with
       rebased patch set.
     - patches.xorg/: add 21.1.4 subdirectory for Ubuntu Kinetic (22.10) with
       rebased patch set.
     - patches.xorg/21.1.4/xorg-server-configure-ac.patch: fix FTBFS, typo when
       applying patch.
     - patches.xorg/: add 21.1.7 subdirectory for Debian Bookworm (12) with
       rebased patch set.
     - misc: pre-release date update.
   * debian/control:
     + Grammar fix.
     + Remove dependencies that refer to disabled features.
     + Add build-dependency upon libpam-dev. It would really be libpam0g-dev
       currently, but that looks like a moving target.
     + Add B-D upon x11proto-gl-dev (or nil/hello).
     + Recommend x2goserver >=, we'll better stay on the 4.1.x line.
     + Try to pull libxfont1-dev (for old Ubuntu versions such as 16.04/xenial
       that don't support building X.Org against libXfont2) and fallback to
       libxfont-dev to retain the old, default behavior.
     + Make libxfont1-dev an entirely optional dependency and libxfont-dev a
       hard one. This should always install libxfont-dev (which typically is
       the libXfont2-version), but also the libXfont1-version if available.
       Ubuntu 16.04/xenial has X.Org Server 1.18.4 which is not compatible with
       libXfont2, but Debian 9/stretch uses X.Org Server 1.19.2, which is
       compatible with libXfont2 (and actually requires it), but also has both
       packages available.
     + Depend upon libxfont1-dev << 1.5.2 (which is the version in Debian
       9/stretch) or fall back to libxfont-dev *and* make sure that the
       libxfont1-dev version is greater than 1.4.2. This should essentially
       emulate libxfont1-dev (>> 1.4.2 << 1.5.2) | libxfont-dev (>> 1.4.2) and
       fix issues with "hello" being picked with subsequent dependencies being
       dropped (like libunwind, which is usually not optional).
   * x2gokdrive.spec:
     + Drop Debian-style formatting in description.
     + Typo fixes.
     + Remove empty line at EOF.
     + Copy summary from Debian's short description.
     + Spell out each (build) dependency on one line.
     + Whitespace-only fixes.
     + Backport changes from debian/rules.
     + Copy *.la file removal mechanism from debian/rules.
     + Pull in lsb-release on *SuSE systems and redhat-lsb otherwise for
       lsb_release, needed at package configuration time.
     + Enable hardening in a low-effort way.
     + Disable debugsource... disabling. Debug packages are actually useful!
     + Copy configure flags from debian/rules{,.flags}. Most compiler flags
       should be getting passed down automatically through the %configure
       macro, but CPPFLAGS is special and seemingly not defined in
       redhat-rpm-macros (or the *SuSE equivalent) and is hence passed-down
       manually. %{__global_ldflags} is empty and unknown on some systems, so
       copy workaround from nx-libs for that one.
     + Sync dependency lists with debian/control.
     + Rename binary package to xorg-x11-server-x2gokdrive to be consistent
       with Fedora/*SuSE package naming.
     + It's still %endif, not %fi.
     + Let description be the description of xorg-x11-server-x2gokdrive, not
       the x2gokdrive source package.
     + Add/copy Summary tag to xorg-x11-server-x2gokdrive binary package.
     + Add description for x2gokdrive (source) package. It's a slightly
       modified version of the binary package description.
     + Fix typo pkgconfig(Xau) => pkgconfig(xau).
     + Backport escaping layer change from debian/rules.
     + Fix %autosetup usage - only use it when supported. RPM 4.11.x+.
     + %autosetup (or %setup) create a top-level BUILD directory into which the
       source tarball is extracted - but we also need a BUILD sub-directory.
       Create it.
     + Use pushd instead of cd. Minor change.
     + Build-depend upon libgcrypt-devel for "older" distros that don't define
       a libgcrypt pkgconfig() virtual provide. That means: Fedora < 29, EPEL <
       8 and any *SuSE version that is not Tumbleweed. The most surprising part
       is probably *SuSE.
     + Untangle libjpeg-turbo-devel build-dependency. Recent *SuSE versions
       define a pkgconfig(libturbojpeg) virtual provide, which is unheard of in
       RHEL land. Older *SuSE versions sadly don't have any virtual provide for
       this, and, worse, don't even have libjpeg-turbo-devel packages, so we'll
       need to build-depend upon libjpeg62-devel instead and hope that this is
       actually the turbo variant. RHEL-land (including Fedora) is more
       forgiving and always ships the turbo variant, but sets the virtual
       provide to pkgconfig(libjpeg) (yes, for all versions down to RHEL 6,
       albit via the updates repository!) and do not mention "turbo" in there.
     + Rework gettext-autopoint build dependency. *SuSE uses gettext-tools
       (which provides a virtual gettext-devel package), while RHEL-land has a
       "real" gettext-devel package that virtually provides a gettext-autopoint
     + Also build-depend upon pam-devel.
     + Build verbosely. We do want to see actual compilation steps.
     + Copy xorg-server source verbosely. Matches debian/rules tar call more
     + Use archive mode when copying xorg-server source. We probably want to
       keep stuff like timestamps to not break the Makefile dependencies.
     + *SuSE puts the xorg-server source code into /usr/src/xserver.
     + Change /usr/share/xserver to /usr/src/xserver. For real this time.
     + Add hack installing missing files into the xorg-server source tree.
     + Port change from debian/rules.flags to disable Xorg DDX building.
     + Delete old configure files that might have had the executable bit set.
       We want those to be re-generated with the correct permissions later on.
     + Port *.la file removal commenting from debian/rules.
     + Pull in pkgconfig(glproto) BR. Needed for *SuSE, that doesn't seem to
       pull it in by other means (while RHEL-land does).
     + Fix %exclude entry for protocol.txt, the new configure flags changed its
       path to %{_libexecdir}.
     + Downgrade dependency upon xorg-x11-server-common to 1.18.4. Strictly
       speaking, we'd have to define a unique dependency for each
       distro-version combination (e.g., Fedora 30 uses 1.20.5, EPEL 7
       currently uses 1.20.4 etc.), but that's too complicated - let's depend
       on at least the earliest supported version for now.
     + Work around issue on *SuSE: for some reason, Mesa-libGL-devel doesn't
       pull Mesa-devel in, leading to a compile failure. Do that manually.
     + Depend on/recommend x2goserver >=, backported from
     + Change libunwind build-dependency and usage: for ppc64(be), use it when
       not on RHEL/CentOS (this includes *SuSE and Fedora) and for ppc64le, use
       it on RHEL/CentOS 8+ or when not on RHEL/CentOS.
     + Fix syntax error due to unclosed %if.
     + X11 server package is not split up into binary and common packages on
       *SuSE, so change dependency to xorg-x11-server.
   * debian/rules:
     + Remove weird empty variable reference construct.
     + Whitespace-only fixes.
     + Move options to the front of commands.
     + Drop useless use of cat.
     + Avoid backticks, use $() instead.
     + "a && b || c" doesn't really mean "if a then b else c", but something...
       more difficult: "c" does also run if "a" is false. Switch to a proper
       if-else construct.
     + Split up subshell content onto unique lines and fix bash syntax error
       near "exit 1".
     + Use printf instead of echo. Plain echo doesn't even substitute escape
       sequences for their plain char counterparts and the -e switch is
     + Avoid xargs, use find's -exec feature.
     + More and better quoting.
     + Verbosely remove *.la files.
     + Add missing single quotes - two strings were merged into one by
     + Drop additional escape layer in sed expression. This was previously only
       needed due to the weird escaping/quoting rules for code in backticks.
       The more modern and equally POSIX-compatible $() syntax makes quoting
       and escaping within subshell calls a lot easier.
     + Comment out *.la file removal. We shouldn't need that any longer since
       we don't build the Xorg DDX anymore.
   * debian/rules.flags:
     + Define NULL variable and use it throughout the file.
     + Disable building Xorg DDX. We don't need it and it's only inflating
       build times. Older X.Org patches will need to be modified to define the
       version variable, but we can do that as we go and accept build failures
       for the time being.
   [ Mike Gabriel ]
   * Initial release:
     - patches.xorg/: Add 1.20.11 files, essentially copied and refreshed from
       This is the X.Org Xserver version shipped with Debian bullseye.
     - x2gokdriveinit.c: Only define ddxInputThreadInit() prototype for
       XORG_VERSION_CURRENT less than 1.20.7. Starting with 1.20.8, the
       prototype definition is now available in include/os.h.
     - x2gokdrivedebug.h: Introduce this new file and move all EPHYR_DBG
       stuff into there. And: disable EPHYR_WANT_DEBUG as with it, the project
       fails to build with standard Debian compiler flags."
     - patches.xorg/: Support building against xorg-server 21.1.3.
   * debian/control:
     + Fix B-Ds for building against Ubuntu trusty.
     + Add B-D mesa-common-dev. Introduced here with the X.Org Xserver 1.20.11
     + Add B-D: libxcvt (or 'sl' for not so recent versions of Debian/Ubuntu).
     + No alternative 'hello' B-D for libunwind-dev.


Mihai Moldovan

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

x2go-announcements mailing list

Reply via email to