This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
wiki:development:build-howto-mswin:x2goclient [2018/06/07 06:15] ionic Clarify that every other editor will do as well. |
wiki:development:build-howto-mswin:x2goclient [2018/06/07 06:48] ionic Typos, spelling, formatting, ... |
||
---|---|---|---|
Line 46: | Line 46: | ||
==== Installing MinGW ==== | ==== Installing MinGW ==== | ||
- | MinGW is a gcc compiler for Windows. You need it to build X2Go Client. | + | MinGW includes the GCC compiler |
Since X2Go Client 4.0.3.0, X2Go Client uses Qt 4.8.6 specifically. Qt 4.8.6 uses MinGW 4.8.x. Qt 4.8.6 for Windows recommends this specific build of MinGW, so it is this specific build that you should use. | Since X2Go Client 4.0.3.0, X2Go Client uses Qt 4.8.6 specifically. Qt 4.8.6 uses MinGW 4.8.x. Qt 4.8.6 for Windows recommends this specific build of MinGW, so it is this specific build that you should use. | ||
Line 70: | Line 70: | ||
=== Providing OpenSSL support in Qt === | === Providing OpenSSL support in Qt === | ||
- | As X2Go Client needs a Qt with SSL support you must install OpenSSL for MS Windows. OpenSSL depends on the [[https:// | + | As X2Go Client needs Qt built with SSL support you must install OpenSSL for MS Windows. OpenSSL depends on the [[https:// |
Download the OpenSSL installer for Windows by browsing [[http:// | Download the OpenSSL installer for Windows by browsing [[http:// | ||
Line 85: | Line 85: | ||
It is recommended to configure Qt to build statically linked applications. | It is recommended to configure Qt to build statically linked applications. | ||
- | This is how official X2Go Client builds are done | + | This is how official X2Go Client builds are done. |
It will take some time to reconfigure Qt for static builds. You surely can skip this step, but in this case you must provide Qt libraries with your X2Go Client binary. | It will take some time to reconfigure Qt for static builds. You surely can skip this step, but in this case you must provide Qt libraries with your X2Go Client binary. | ||
Line 116: | Line 116: | ||
$ make -j3 sub-src | $ make -j3 sub-src | ||
</ | </ | ||
+ | |||
==== Installing libssh ==== | ==== Installing libssh ==== | ||
You need libssh to build X2Go Client. | You need libssh to build X2Go Client. | ||
Line 153: | Line 154: | ||
git --no-pager log --since "2 years ago" --format=" | git --no-pager log --since "2 years ago" --format=" | ||
$ copy ChangeLog.gitlog txt\git-info | $ copy ChangeLog.gitlog txt\git-info | ||
- | |||
</ | </ | ||
Line 170: | Line 170: | ||
X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | ||
+ | |||
==== Build X2Go Client from source (debug build) ==== | ==== Build X2Go Client from source (debug build) ==== | ||
Repeat the instructions for "Build X2Go Client from source", | Repeat the instructions for "Build X2Go Client from source", | ||
Line 176: | Line 177: | ||
- Edit nsis\x2goclient.nsi so that the following lines: | - Edit nsis\x2goclient.nsi so that the following lines: | ||
- | * CreateShortCut " | + | < |
- | | + | |
- | | + | CreateShortCut " |
+ | CreateShortCut " | ||
+ | </ | ||
Are replaced with the following: | Are replaced with the following: | ||
- | * CreateShortCut " | + | < |
- | | + | |
- | | + | CreateShortCut " |
+ | CreateShortCut " | ||
+ | </ | ||
==== Copy the X2Go Client binaries to the desired folder ==== | ==== Copy the X2Go Client binaries to the desired folder ==== | ||
Line 194: | Line 200: | ||
However, you must decide where you wish to copy them. | However, you must decide where you wish to copy them. | ||
- | - If you wish to run x2goclient from a folder without creating and running the NSIS installer , copy them to the '' | + | - If you wish to run x2goclient from a folder without creating and running the NSIS installer, copy them to the '' |
- | - If you wish to create an x2goclient NSIS installer, create the '' | + | - If you wish to create an x2goclient NSIS installer, create the '' |
==== Pack/ | ==== Pack/ | ||
Line 211: | Line 217: | ||
- x2goclient.exe | - x2goclient.exe | ||
- x2gohelper.exe | - x2gohelper.exe | ||
+ | |||
===== Building nxproxy & OpenSSH (Optional) ===== | ===== Building nxproxy & OpenSSH (Optional) ===== | ||
Line 217: | Line 224: | ||
Official X2Go project builds usually rebuild nxproxy and OpenSSH if there are desired updates to those components, or if the cygwin libraries have been updated. | Official X2Go project builds usually rebuild nxproxy and OpenSSH if there are desired updates to those components, or if the cygwin libraries have been updated. | ||
- | Official X2Go project builds are kept under the x2goclient-contrib git repository under a folder like " | + | Official X2Go project builds are kept under the x2goclient-contrib git repository under a folder like " |
==== Installing Cygwin ==== | ==== Installing Cygwin ==== | ||
- | Download and start the [[https:// | + | Download and start the [[https:// |
- | Choose your cygwin | + | Choose your Cygwin |
For the X2Go-WinBuilder VM, install to D: | For the X2Go-WinBuilder VM, install to D: | ||
Line 232: | Line 240: | ||
</ | </ | ||
- | on installer page " | + | on installer page " |
* '' | * '' | ||
* '' | * '' | ||
Line 242: | Line 250: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Line 249: | Line 257: | ||
* '' | * '' | ||
- | <note tip>By installing the '' | + | <note tip>By installing the '' |
- | For building of OpenSSH Server, you will also need:: | + | For building of OpenSSH Server, you will also need: |
- | *libedit-devel | + | * libedit-devel |
- | *libncurses-devel | + | * libncurses-devel |
- | *openssl-devel | + | * openssl-devel |
- | *patch | + | * patch |
- | For openssh | + | For OpenSSH |
If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | ||
Line 290: | Line 298: | ||
* libjpeg-turbo (select source for: libjpeg-devel) | * libjpeg-turbo (select source for: libjpeg-devel) | ||
* libpng15 (select source for: libpng-devel) (X2Go Client 4.0.3.x) | * libpng15 (select source for: libpng-devel) (X2Go Client 4.0.3.x) | ||
- | * libpng (select source for: libpng-devel) (X2Go Client 4.0.4.x | + | * libpng (select source for: libpng-devel) (X2Go Client 4.0.4.x+) |
* ncurses (select source for: libncurses-devel) | * ncurses (select source for: libncurses-devel) | ||
* openssh (source, but not binary) | * openssh (source, but not binary) | ||
* openssl | * openssl | ||
* zlib (select source for: zlib-devel) | * zlib (select source for: zlib-devel) | ||
+ | |||
==== Building nxproxy 3.5 ==== | ==== Building nxproxy 3.5 ==== | ||
X2Go Client for Windows is currently built with nxproxy 3.5. | X2Go Client for Windows is currently built with nxproxy 3.5. | ||
- | * Open a cygwin shell and change to your build directory. In this example | + | * Open a cygwin shell and change to your build directory. In this example |
< | < | ||
$ cd / | $ cd / | ||
</ | </ | ||
- | * Download and extract the latest nx-libs-lite tarball from http:// | + | * Download and extract the latest nx-libs-lite tarball from [[http:// |
<note warning> | <note warning> | ||
Line 382: | Line 391: | ||
==== Building nxproxy 3.6 ==== | ==== Building nxproxy 3.6 ==== | ||
- | <note tip>X2Go Client for Windows is currently | + | <note tip>X2Go Client for Windows is currently |
- | </ | + | <note important> |
- | <note important> | + | |
- | </ | + | |
- | * Open a cygwin | + | * Open a Cygwin |
< | < | ||
$ cd / | $ cd / | ||
Line 420: | Line 427: | ||
Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the program packaging folder ('' | Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the program packaging folder ('' | ||
- | - nx-libs 3.5: From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.5: From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.6: From nxproxy\src directory (d: | + | - nx-libs 3.6: From '' |
- | - nx-libs 3.5: From nxcomp\src\.libs directory (d: | + | - nx-libs 3.6: From '' |
You must also copy required libraries into that folder. | You must also copy required libraries into that folder. | ||
- | - From cygwin directory (c: | + | - From cygwin directory ('' |
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Line 436: | Line 444: | ||
If you wish to facilitate debugging, or if you are updating x2goclient-contrib, | If you wish to facilitate debugging, or if you are updating x2goclient-contrib, | ||
- | - nx-libs 3.5: From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.5 :From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
* '' | * '' | ||
* '' | * '' | ||
- | - nx-libs 3.6: From nxproxy\src directory (d: | + | - nx-libs 3.6: From '' |
- | - nx-libs 3.5 :From nxcomp\src\.libs directory (d: | + | - nx-libs 3.6: From '' |
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | |||
==== Building OpenSSH Server ==== | ==== Building OpenSSH Server ==== | ||
- | Copy the source folder (downloaded and extracted from a tarball by cygwin) to your build directory. In this example | + | Copy the source folder (downloaded and extracted from a tarball by Cygwin) to your build directory. In this example |
< | < | ||
- | $cp -pr / | + | $ cp -pr / |
</ | </ | ||
- | cd to the openssh source directory, extract the upstream (openssh.com) tarball within, and cd to the lower-level source directory | + | '' |
< | < | ||
- | $cd / | + | $ cd / |
- | $tar -xzvf openssh-6.6p1.tar.gz | + | $ tar -xzvf openssh-6.6p1.tar.gz |
- | $cd openssh-6.6p1 | + | $ cd openssh-6.6p1 |
</ | </ | ||
- | Apply any patches that cygwin | + | Apply any patches that Cygwin |
< | < | ||
- | $patch < ../ | + | $ patch < ../ |
</ | </ | ||
Get and apply the X2Go patch, which enables use of the Open SSH Server with X2Go Client | Get and apply the X2Go patch, which enables use of the Open SSH Server with X2Go Client | ||
< | < | ||
- | $wget http:// | + | $ wget http:// |
- | $patch.exe < ../ | + | $ patch.exe < ../ |
</ | </ | ||
Build Open SSH Server | Build Open SSH Server | ||
< | < | ||
- | $./ | + | $ ./configure --libexecdir=/ |
- | $make | + | $ make |
- | $strip *.exe | + | $ strip *.exe |
</ | </ | ||
- | < | + | < |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
- | < | ||
- | < | ||
==== Copying OpenSSH Server binaries ==== | ==== Copying OpenSSH Server binaries ==== | ||
- | Open SSH Server binaries are ready. You can copy it into the program packaging folder (dist/ or nsis/ | + | Open SSH Server binaries are ready. You can copy it into the program packaging folder ('' |
- | *sftp.exe | + | * sftp.exe |
- | *sftp-server.exe | + | * sftp-server.exe |
- | *ssh-keygen.exe | + | * ssh-keygen.exe |
- | *sshd.exe | + | * sshd.exe |
For example: | For example: | ||
< | < | ||
- | cp --preserve=time sftp.exe sftp-server.exe ssh-keygen.exe sshd.exe / | + | $ cp --preserve=time sftp.exe sftp-server.exe ssh-keygen.exe sshd.exe / |
</ | </ | ||
- | To be able to run Open SSH Server you should also copy needed programs and libraries from cygwin | + | To be able to run Open SSH Server you should also copy needed programs and libraries from the Cygwin |
- | 1st, copy these files over without changing their filenames. | + | First, copy these files over without changing their filenames. |
- | *cygcrypto-1.0.0.dll | + | * cygcrypto-1.0.0.dll |
- | *cygedit-0.dll | + | * cygedit-0.dll |
- | *cyggcc_s-1.dll | + | * cyggcc_s-1.dll |
- | *cygncursesw-10.dll | + | * cygncursesw-10.dll |
- | *cygssp-0.dll | + | * cygssp-0.dll |
- | *cygwin1.dll | + | * cygwin1.dll |
- | *cygz.dll | + | * cygz.dll |
For example: | For example: | ||
< | < | ||
- | cd /bin | + | $ cd /bin |
- | cp --preserve=time cygcrypto-1.0.0.dll cygedit-0.dll cyggcc_s-1.dll cygncursesw-10.dll cygssp-0.dll cygwin1.dll cygz.dll / | + | $ cp --preserve=time cygcrypto-1.0.0.dll cygedit-0.dll cyggcc_s-1.dll cygncursesw-10.dll cygssp-0.dll cygwin1.dll cygz.dll / |
</ | </ | ||
- | 2nd, copy the Dash executable over and rename it: | + | Then, copy the dash executable over and rename it: |
< | < | ||
ash.exe -> sh.exe | ash.exe -> sh.exe | ||
Line 519: | Line 530: | ||
For example: | For example: | ||
< | < | ||
- | cp --preserve=time ash.exe / | + | $ cp --preserve=time ash.exe / |
</ | </ | ||
Line 547: | Line 558: | ||
You can then install all of them by using the '' | You can then install all of them by using the '' | ||
- | 1st, clone [[http:// | + | First, clone [[http:// |
Now run the script with the following arguments. In this example: | Now run the script with the following arguments. In this example: | ||
- | * ..\x2goclient-contrib is the path to the x2goclient-contrib git repo | + | * '' |
- | * D: | + | * '' |
- | * "dist" | + | * '' |
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat ..\x2goclient-contrib D: | + | $ copy-deps-win32.bat ..\x2goclient-contrib D: |
</ | </ | ||
or to the '' | or to the '' | ||
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat nsis\x2goclient | + | $ copy-deps-win32.bat nsis\x2goclient |
</ | </ | ||
Line 569: | Line 580: | ||
However, at the end: | However, at the end: | ||
- | - View the copy-deps-win32.bat file to determine the location of the cygwin | + | - View the '' |
- | - From the cygwin | + | - From the Cygwin |
- Replace nxproxy.exe with nxproxy.exe.unstripped | - Replace nxproxy.exe with nxproxy.exe.unstripped | ||
Line 577: | Line 588: | ||
=== Libraries === | === Libraries === | ||
- | - Add MinGW 4.8' | + | - Add MinGW 4.8' |
* '' | * '' | ||
* '' | * '' | ||
- | * libwinpthread-1.dll | + | * '' |
- Add OpenSSL libraries (copy from your OpenSSL installation directory) | - Add OpenSSL libraries (copy from your OpenSSL installation directory) | ||
* '' | * '' | ||
Line 586: | Line 597: | ||
- libssh library ([[wiki: | - libssh library ([[wiki: | ||
* '' | * '' | ||
- | - libzip library (available [[http:// | + | - libzip library (available [[http:// |
* '' | * '' | ||
- | - zlib library for libzip (available [[http:// | + | - zlib library for libzip (available [[http:// |
* '' | * '' | ||
- | - zlib library for libssh (available [[http:// | + | - zlib library for libssh (available [[http:// |
* '' | * '' | ||
- If you want to use X2Go Client on older versions of Windows, you should put the " | - If you want to use X2Go Client on older versions of Windows, you should put the " | ||
Line 600: | Line 611: | ||
=== nxproxy === | === nxproxy === | ||
- | The latest version is available in [[http:// | + | The latest version is available in [[http:// |
You can download older versions, including their libraries, from here [[http:// | You can download older versions, including their libraries, from here [[http:// | ||
Line 612: | Line 623: | ||
Older builds do not have nxproxy.exe.unstripped; | Older builds do not have nxproxy.exe.unstripped; | ||
- | === OpenSSH | + | === OpenSSH |
X2Go Client for Windows uses a modified Cygwin OpenSSH Server for file sharing. | X2Go Client for Windows uses a modified Cygwin OpenSSH Server for file sharing. | ||
- | The latest version is available in [[http:// | + | The latest version is available in [[http:// |
You can download older versions from [[http:// | You can download older versions from [[http:// | ||
Line 630: | Line 641: | ||
Note that the files must be installed to the '' | Note that the files must be installed to the '' | ||
- | Even older Windows builds are available from [[http:// | + | Even older Windows builds are available from [[http:// |
=== VcXsrv - XP Compatible === | === VcXsrv - XP Compatible === | ||
Line 640: | Line 651: | ||
Note that the files must be installed to the '' | Note that the files must be installed to the '' | ||
- | Building VcXsrv from source is not the part of this Howto. However, it is documented | + | Building VcXsrv from source is not the part of this howto. However, it is documented |
All official X2Go Project builds use the 32-bit builds of VcXsrv. 64-bit builds are probably compatible with the 32-bit X2Go Client, but have not been tested. Furthermore, | All official X2Go Project builds use the 32-bit builds of VcXsrv. 64-bit builds are probably compatible with the 32-bit X2Go Client, but have not been tested. Furthermore, | ||
Line 649: | Line 660: | ||
Also, if you are doing an official X2Go Project build, remove these files that X2Go Client does not need and would take up extra space: | Also, if you are doing an official X2Go Project build, remove these files that X2Go Client does not need and would take up extra space: | ||
- | *iconv.dll | + | * '' |
- | *libgcc-s-sjlj-1.dll | + | * '' |
- | *libiconv-2.dll | + | * '' |
- | *libwinpthread-1.dll | + | * '' |
- | *libxml2.dll | + | * '' |
- | *libxml2-2.dll | + | * '' |
- | *plink.exe | + | * '' |
- | *uninstall.exe | + | * '' |
- | *xauth.exe | + | * '' |
- | *XCalc | + | * '' |
- | *xcalc.exe | + | * '' |
- | *XCalc-color | + | * '' |
- | *XClock | + | * '' |
- | *xclock.exe | + | * '' |
- | *XClock-color | + | * '' |
- | *xhost.exe | + | * '' |
- | *xlaunch.exe | + | * '' |
- | *xrdb.exe | + | * '' |
- | *xwininfo.exe | + | * '' |
- | Also, if you are doing an official X2Go Project build, before importing it into x2goclient-contrib, | + | Also, if you are doing an official X2Go Project build, before importing it into x2goclient-contrib, |
- | Using debian's strip-nondeterminism (a perl script that calls a perl library, both of which can be extracted from their deb's & run fine under Cygwin): | + | Using Debian's strip-nondeterminism (a perl script that calls a perl library, both of which can be extracted from their deb's & run fine under Cygwin): |
< | < | ||
- | cd / | + | $ cd / |
- | find . -name *.gz | xargs strip-nondeterminism | + | $ find . -name *.gz | xargs strip-nondeterminism |
</ | </ | ||
If you are doing an official X2Go Project build, create this file in the VcXsrv folder: | If you are doing an official X2Go Project build, create this file in the VcXsrv folder: | ||
- | *vcxsrv-version.txt | + | * '' |
- | And specify the version string of VcXsrv in it. The version string should be the only contents | + | And specify the version string of VcXsrv in it. The version string should be the only content |
1.15.2.3+xp-vc2013+x2go1 | 1.15.2.3+xp-vc2013+x2go1 | ||
If you are doing an official X2Go Project build, copy the project' | If you are doing an official X2Go Project build, copy the project' | ||
- | *COPYING.txt | + | * '' |
+ | |||
=== PuTTY === | === PuTTY === | ||
- | you can download PuTTY for Windows from [[http:// | + | You can download PuTTY for Windows from [[http:// |
These are the only binaries you need from PuTTY. Copy them directly into the '' | These are the only binaries you need from PuTTY. Copy them directly into the '' | ||
- | *plink.exe | + | * '' |
- | *pscp.exe | + | * '' |
+ | |||
===== Creating an NSIS Installer ===== | ===== Creating an NSIS Installer ===== | ||
Install NSIS Unicode (currently, 2.46.5): http:// | Install NSIS Unicode (currently, 2.46.5): http:// | ||
- | Then, edit nsis/ | + | Then, edit '' |
- | Then, open nsis\x2goclient.nsi with NSIS Unicode. It will build an installer (*-setup.exe) | + | Then, open '' |
If you wish to build via the command-line, | If you wish to build via the command-line, | ||
< | < | ||
- | " | + | $ " |
</ | </ | ||
(Adjust path if on 32-bit Windows.) | (Adjust path if on 32-bit Windows.) |