As already hinted in my previous blog post, here comes a short howto that explains how to test-build nxagent (v3) against a modularized X.org 7.0 source tree.
WARNING: Please note that mixing NX code and X.org code partially turns the original X.org code base into GPL-2 code. We are aware of this situation and work on moving all NXv3 related GPL-2 code into the nxagent DDX code (xserver-xorg/hw/nxagent) or--if possible--dropping it completely. The result shall be a range of patches against X.org (licensable under the same license as the respective X.org files) and a GPL-2 licensed DDX (i.e. nxagent).
How to build this project
For the Brave and Playful
$ git clone https://git.arctica-project.org/nx-X11-rebase/build.git . $ bash populate.sh sources.lst $ ./buildit.sh
You can find the built tree in the _install/ sub-directory.
Please note that cloning Git repositories over the https protocol can be considerably slow. If you want to speed things up, consider signing up with our GitLab server.
For Developers...
... who have registered with our GitLab server.
$ git clone git@git.arctica-project.org:nx-X11-rebase/build.git . $ bash populate.sh sources-devs.lst $ ./buildit.sh
You will find the built tree in the _install/ sub-directory.
The related git repositories are in the repos/ sub-directory. All repos modified for NX have been cloned from the Arctica Project's GitLab server via SSH. Thus, you as a developer can commit changes on those repos and push back your changes to the GitLab server.
Required tools for building
Debian/Ubuntu and alike
- build-essential
- automake
- gawk
- git
- pkg-config
- libtool
- libz-dev
- libjpeg-dev
- libpng-dev
In a one-liner command:
$ sudo apt-get install build-essential automake gawk git pkg-config libtool libz-dev libjpeg-dev libpng-dev
Fedora
If someone tries this out in a clean Fedora chroot environment, please let us know about build dependent packages.
openSUSE
If someone tries this out in a clean openSUSE chroot environment, please let us know about build dependent packages.
Testing the built nxagent and nxproxy
The tests/ subdir contains some scripts which can be used to test the compile results.
- run-nxagent runs an nxagent and starts an nxproxy connection to it (do this as normal non-root user):
$ tests/run-nxagent $ export DISPLAY=:9 # launch e.g. MATE desktop environment on Debian, adapt session type and Xsession startup to your system / distribution $ STARTUP=mate-session /etc/X11/Xsession
- run-nxproxy2nxproxy-test connects to nxproxys using the nx compression protocol:
$ tests/run-nxproxy2nxproxy-test $ export DISPLAY=:8 # launch e.g. xterm and launch other apps from within that xterm process $ xterm &
- more to come...
Notes on required X.org changes (NX_MODIFICATIONS)
For this build workflow to work, we (i.e. mostly Ulrich Sibiller) had to work several NoMachine patches into original X.org 7.0 code. Here is a list of modified X11 components with URLs pointing to the branch containing those changes:
xkbdata xorg/data/xkbdata rebasenx 1.0.1 https://git.arctica-project.org/nx-X11-rebase/xkbdata.git libfontenc xorg/lib/libfontenc rebasenx 1.0.1 https://git.arctica-project.org/nx-X11-rebase/libfontenc.git libSM xorg/lib/libSM rebasenx 1.0.0 https://git.arctica-project.org/nx-X11-rebase/libSM.git libX11 xorg/lib/libX11 rebasenx 1.0.0 https://git.arctica-project.org/nx-X11-rebase/libX11.git libXau xorg/lib/libXau rebasenx 1.0.0 https://git.arctica-project.org/nx-X11-rebase/libXau.git libXfont xorg/lib/libXfont rebasenx 1.3.1 https://git.arctica-project.org/nx-X11-rebase/libXfont.git libXrender xorg/lib/libXrender rebasenx 0.9.0.2 https://git.arctica-project.org/nx-X11-rebase/libXrender.git xtrans xorg/lib/libxtrans rebasenx 1.0.0 https://git.arctica-project.org/nx-X11-rebase/libxtrans.git kbproto xorg/proto/kbproto rebasenx 1.0.2 https://git.arctica-project.org/nx-X11-rebase/kbproto.git xproto xorg/proto/xproto rebasenx 7.0.4 https://git.arctica-project.org/nx-X11-rebase/xproto.git xorg-server xorg/xserver rebasenx 1.0.1 https://git.arctica-project.org/nx-X11-rebase/xserver.git mesa mesa/mesa rebasenx 6.4.1 https://git.arctica-project.org/nx-X11-rebase/mesa.git
Credits
Nearly all of this has been achieved by Ulrich Sibiller. Thanks a lot for giving your time and energy to that. As the rebasing of NXv3 is currently a funded project supported by the Qindel Group, we are currently negotiating ways of monetarily appreciating Ulrich's intensive work on this. Thanks a lot, once more!!!
Feedback
If anyone of you feels like trying out the test build as described above, please consider signing up with the Arctica Project's GitLab server and reporting your issues there directly (against the repository nx-X11-rebase/build). Alternatively, feel free to contact us on IRC (Freenode): #arctica or subscribe to our developers' mailing list. Thank you.
light+love
Mike Gabriel