This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
wiki:development:build-howto-mswin:x2goclient [2015/04/25 20:14] mikedep333 [Installing Cygwin] mc is not needed to build |
wiki:development:build-howto-mswin:x2goclient [2023/05/08 22:20] (current) orion [Copying the nxproxy binaries] Use nxproxy\src\.libs\nxproxy.exe |
||
---|---|---|---|
Line 8: | Line 8: | ||
This howto is intended for 2 different audiences: | This howto is intended for 2 different audiences: | ||
- Those doing official X2Go Project builds. | - Those doing official X2Go Project builds. | ||
- | - Those doing informal builds, | + | - Those doing informal builds, |
The former audience has extra steps to do. These steps will be noted. | The former audience has extra steps to do. These steps will be noted. | ||
===== Overview of third-party components ===== | ===== Overview of third-party components ===== | ||
- | X2Go Client for Windows needs several 3rd-party | + | X2Go Client for Windows needs several 3rd-party |
- | * [[wiki: | + | * [[wiki: |
- | * [[wiki: | + | * [[wiki: |
* [[wiki: | * [[wiki: | ||
- | * [[wiki: | + | * [[wiki: |
+ | |||
+ | * [[wiki: | ||
* [[wiki: | * [[wiki: | ||
- | All these programmes, as well as many of the libraries, can now be downloaded from [[http:// | + | All these programs, as well as many of the libraries, can now be downloaded from [[http:// |
They can also be built from source, or downloaded from their project sites. However, this howto only explains how to build nxproxy and OpenSSH. | They can also be built from source, or downloaded from their project sites. However, this howto only explains how to build nxproxy and OpenSSH. | ||
Line 34: | Line 36: | ||
===== Build Utilities ===== | ===== Build Utilities ===== | ||
- | For building X2Go Client, we highly recommend to install [[http:// | + | For building X2Go Client, we highly recommend to install [[http:// |
MSysGit provides a Unix-like shell (bash) environment, | MSysGit provides a Unix-like shell (bash) environment, | ||
Line 44: | Line 46: | ||
===== Setup Build Environment ===== | ===== Setup Build Environment ===== | ||
- | ==== Installing MinGW (Current Version) | + | ==== 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 56: | Line 58: | ||
Finally, you have to add these MinGW executable directories to your PATH environment variable: '' | Finally, you have to add these MinGW executable directories to your PATH environment variable: '' | ||
- | ==== Installing | + | ==== Installing Qt ==== |
- | + | ||
- | Using Qt 4.8.5 + MinGW 4.4 is still an option for building X2Go Client 4.0.3.0 and later. It was how X2Go Client 4.0.2.1 and many prior versions were built. | + | |
- | Unfortunately, | + | |
- | + | ||
- | Extract it to your disk ('' | + | |
- | + | ||
- | Finally, you have to add these MinGW executable directories to your PATH environment variable: '' | + | |
- | ==== Installing Qt (Current Version)==== | + | |
You need Qt to build X2Go Client from source. | You need Qt to build X2Go Client from source. | ||
Line 74: | Line 68: | ||
In this example D:\Qt\4.8.6 will be chosen as installation directory | In this example D:\Qt\4.8.6 will be chosen as installation directory | ||
- | ==== Installing Qt (Old Version)==== | ||
- | |||
- | Qt-4.8.5 was tested and recommended for X2Go Client 4.0.2.1 and earlier. It is still an option for X2Go Client 4.0.3.0 and later. | ||
- | |||
- | Download and install the **MinGW** version of Qt-4.8.5 for Windows from [[http:// | ||
- | |||
- | In this example D:\Qt\4.8.5 will be chosen as installation directory | ||
==== Configuring Qt ==== | ==== Configuring Qt ==== | ||
=== 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 [[http:// | + | 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 94: | Line 81: | ||
< | < | ||
d: | d: | ||
- | </ | ||
- | For MinGW 4.4: | ||
- | < | ||
- | d: | ||
</ | </ | ||
Line 104: | Line 87: | ||
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 113: | Line 96: | ||
< | < | ||
$ configure -release -static -openssl -qt-style-windowsxp -qt-style-windowsvista | $ configure -release -static -openssl -qt-style-windowsxp -qt-style-windowsvista | ||
- | </ | ||
- | For Qt 4.8.5: | ||
- | < | ||
- | $ configure -release -static -openssl | ||
</ | </ | ||
- | For either version of Qt, rebuild | + | Rebuild |
< | < | ||
- | $ make sub-src | + | $ make -j3 sub-src |
</ | </ | ||
Line 133: | Line 112: | ||
< | < | ||
$ configure -release -openssl -qt-style-windowsxp -qt-style-windowsvista | $ configure -release -openssl -qt-style-windowsxp -qt-style-windowsvista | ||
- | </ | ||
- | For Qt 4.8.5: | ||
- | < | ||
- | $ configure -release -openssl | ||
</ | </ | ||
- | For either version of Qt, rebuild | + | Rebuild |
< | < | ||
- | $ make sub-src | + | $ make -j3 sub-src |
</ | </ | ||
+ | |||
==== Installing libssh ==== | ==== Installing libssh ==== | ||
You need libssh to build X2Go Client. | You need libssh to build X2Go Client. | ||
- | X2Go Client 4.0.3.0 and later use libssh 0.6.3 with pageant support. | + | X2Go Client 4.1.2.2 and later use libssh 0.9.x with pageant support. |
+ | |||
+ | === Pre-built Binaries === | ||
Get the **library** package built with MinGW 4.8.x (currently 4.8.2) from [[http:// | Get the **library** package built with MinGW 4.8.x (currently 4.8.2) from [[http:// | ||
- | Or for MingW 4.4.0, | ||
Copy headers files in " | Copy headers files in " | ||
Line 157: | Line 134: | ||
< | < | ||
x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\include\libssh -> d: | x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\include\libssh -> d: | ||
- | </ | ||
- | For MinGW 4.4: | ||
- | < | ||
- | libssh\include\libssh -> d: | ||
</ | </ | ||
Line 169: | Line 142: | ||
x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\lib\*.* -> d: | x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\lib\*.* -> d: | ||
</ | </ | ||
- | For MinGW 4.4: | + | |
+ | === Building From Source === | ||
+ | |||
+ | If you want to rebuild the library (e.g., to backport fixes) or update it as part of the release process, follow these steps. | ||
+ | |||
+ | == Preparation == | ||
+ | |||
+ | Download the tarball from [[https:// | ||
+ | |||
+ | Unpack it as usually. The X2Go Project keeps libssh source code at '' | ||
+ | |||
+ | Adapt any required patches so that they apply cleanup, build and work correctly. | ||
+ | |||
+ | We currently patch libssh to include support for PuTTY' | ||
+ | |||
+ | To rebase patches, the X2Go Project uses the private git repository at '' | ||
+ | * update the repository: < | ||
+ | * check out new release tag (or branch or whatever you intend to build later on): < | ||
+ | * create new branch based on the tag/ | ||
+ | * cherry-pick specific X2Go-related commits from older branches, one '' | ||
+ | * fix any merge conflicts, pull in other upstream code etc. | ||
+ | * update the commit message! | ||
+ | * when done, create patch files: < | ||
+ | |||
+ | Move the patches to the respective source directory and apply them in order. | ||
+ | |||
+ | If needed, install or update '' | ||
+ | |||
+ | == Configuration == | ||
+ | |||
+ | Open a terminal window. Crucially, this must **not** be a '' | ||
+ | |||
+ | Make sure that the MinGW toolchain that was used to build Qt (and will be used to build X2Go CLient later on) is part of the %PATH% variable. On the X2Go Windows Builder, a session spawned via '' | ||
+ | |||
+ | Go to the unpacked source directory: < | ||
+ | |||
+ | Create and switch to a build subdirectory: | ||
+ | |||
+ | The pre-built libssh versions in '' | ||
+ | |||
+ | Call '' | ||
+ | |||
+ | == Build == | ||
+ | |||
+ | Build the software like any other, append '' | ||
+ | |||
+ | < | ||
+ | |||
+ | == Install == | ||
+ | |||
+ | It's recommended to make sure that the install staging area is clean (fully deleted or at least empty) before installing/ | ||
+ | |||
+ | This ensures that old/removed files won't linger around and that changes will not remain undetected. | ||
+ | |||
+ | < | ||
+ | " | ||
+ | |||
+ | Afterwards, clean and install the newly built files into the MinGW prefix: | ||
+ | |||
+ | Header files: | ||
< | < | ||
- | libssh\lib\*.* -> d:\mingw\lib\ | + | rm -rf " |
+ | cp -av "D:\Build\libssh\libssh-staging\include\libssh" | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | As such, it is important to keep these static DLL import libraries around on Windows, even if library is supposed to be used in a dynamically-linked fashion.</ | ||
+ | |||
+ | |||
+ | Library files: | ||
+ | |||
+ | < | ||
+ | for /R " | ||
+ | D: | ||
+ | cd " | ||
+ | for %I in (libssh*) do cp -av " | ||
+ | </ | ||
+ | |||
+ | Afterwards, optionally bundle the new libssh source and binaries in x2goclient-contrib. Explicitly document the command line invocation in a file named '' | ||
===== Build X2Go Client ===== | ===== Build X2Go Client ===== | ||
Line 187: | Line 237: | ||
< | < | ||
$ copy debian\changelog txt\ | $ copy debian\changelog txt\ | ||
- | 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 206: | Line 255: | ||
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 212: | Line 262: | ||
- 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 225: | Line 280: | ||
The 2 binaries to copy are: | The 2 binaries to copy are: | ||
- | - x2goclient.exe (from the '' | + | - '' |
- | - x2gohelper.exe (from the '' | + | - '' |
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/ | ||
- | You may want to pack X2Go Client to reduce it size. You can do it with [[http://upx.sourceforge.net/|upx]], which is available for Windows, Linux and Cygwin. | + | You may want to pack X2Go Client to reduce it size. You can do it with [[https://upx.github.io/|upx]], which is available for Windows, Linux and Cygwin. |
- | Official regular builds of X2Go Client are packed. Official debug builds of X2Go Client are not. | + | Official regular builds of X2Go Client are packed. Official debug builds of X2Go Client are not. There is no difference between nightly and release versions - both pack the release binary, while not packing the debug binary. |
It is available in [[http:// | It is available in [[http:// | ||
< | < | ||
- | x2goclient-contrib\upx\3.91_bin\upx.exe | + | x2goclient-contrib\upx\3.95_bin\upx.exe |
</ | </ | ||
The 2 files to pack are: | The 2 files to pack are: | ||
- | - x2goclient.exe | + | - '' |
- | - x2gohelper.exe | + | - '' |
===== Building nxproxy & OpenSSH (Optional) ===== | ===== Building nxproxy & OpenSSH (Optional) ===== | ||
Line 252: | Line 308: | ||
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 " | ||
==== Installing Cygwin ==== | ==== Installing Cygwin ==== | ||
- | Download and start the [[https:// | + | Download and start the [[https:// |
- | Choose your cygwin | + | Choose your Cygwin |
- | on installer page " | + | For the X2Go-WinBuilder VM, install to D: |
+ | |||
+ | You can automate the entirety of the instructions below with this command, except for selecting the source packages to install: | ||
+ | |||
+ | < | ||
+ | $ setup-x86.exe -P " | ||
+ | </ | ||
+ | |||
+ | on installer page " | ||
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | <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 | + | * '' |
- | *libncurses-devel | + | * '' |
- | *openssl-devel | + | * '' |
- | *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 307: | Line 375: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
If you are doing official builds, install these **source** packages for both nxproxy and openssh: | If you are doing official builds, install these **source** packages for both nxproxy and openssh: | ||
- | * dash | + | * '' |
- | * cygwin | + | * '' |
- | * gcc (select source for: gcc-core) | + | * '' |
- | * libedit (select source for: libedit0) | + | * '' |
- | * libjpeg-turbo (select source for: libjpeg-devel) | + | * '' |
- | * libpng15 (select source for: libpng-devel) (X2Go Client 4.0.3.x) | + | * '' |
- | * libpng (select source for: libpng-devel) (X2Go Client 4.0.4.x) | + | * '' |
- | * ncurses (select source for: libncurses-devel) | + | * '' |
- | * openssh (source, but not binary) | + | * '' |
- | * openssl | + | * '' |
- | * zlib (select source for: zlib-devel) | + | * '' |
- | ==== Building nxproxy ==== | + | |
+ | ==== Building nxproxy | ||
+ | |||
+ | 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 400: | Line 473: | ||
$ cp -p nxproxy.exe nxproxy.exe.unstripped | $ cp -p nxproxy.exe nxproxy.exe.unstripped | ||
$ strip nxproxy.exe | $ strip nxproxy.exe | ||
+ | $ cd .. | ||
+ | </ | ||
+ | |||
+ | ==== Building nxproxy 3.6 ==== | ||
+ | |||
+ | <note tip>X2Go Client for Windows is currently shipped with nxproxy 3.5, not 3.6. However, it should be safe to use 3.6.</ | ||
+ | <note important> | ||
+ | |||
+ | * Open a Cygwin shell and change to your build directory. In this example '' | ||
+ | < | ||
+ | $ cd / | ||
+ | </ | ||
+ | * Download [[nx-libs from Arctica on GitHub|https:// | ||
+ | < | ||
+ | git clone https:// | ||
+ | cd nx-libs | ||
+ | git checkout 3.6.x | ||
+ | </ | ||
+ | * Build nxcomp | ||
+ | < | ||
+ | $ cd nxcomp | ||
+ | $ autoreconf -vfi | ||
+ | $ ./configure | ||
+ | $ make | ||
+ | $ cd .. | ||
+ | </ | ||
+ | * Build nxproxy | ||
+ | < | ||
+ | $ cd nxproxy | ||
+ | $ autreoconf -vfi | ||
+ | $ ./configure | ||
+ | $ make | ||
+ | $ cp -p src/ | ||
+ | $ strip src/ | ||
$ cd .. | $ cd .. | ||
</ | </ | ||
Line 406: | Line 513: | ||
==== Copying the nxproxy binaries ==== | ==== Copying the nxproxy binaries ==== | ||
- | Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the programme | + | Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the program |
- | - From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
+ | - nx-libs 3.6: From '' | ||
+ | - 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 420: | Line 531: | ||
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, | ||
- | - From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
* '' | * '' | ||
* '' | * '' | ||
+ | - nx-libs 3.6: From '' | ||
+ | - 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. | + | Open SSH Server binaries are ready. |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | *sftp.exe | + | For example: |
- | *sftp-server.exe | + | < |
- | *ssh-keygen.exe | + | $ cp --preserve=time |
- | *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 |
+ | First, copy these files over without changing their filenames. | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | 1st, copy these files over without changing their filenames. | + | For example: |
- | *cygcrypto-1.0.0.dll | + | < |
- | *cygedit-0.dll | + | $ cd /bin |
- | *cyggcc_s-1.dll | + | $ cp --preserve=time |
- | *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 | ||
+ | </ | ||
+ | |||
+ | For example: | ||
+ | < | ||
+ | $ cp --preserve=time ash.exe / | ||
</ | </ | ||
Line 487: | Line 623: | ||
< | < | ||
- | |||
===== Copying 3rd-party libraries and components ===== | ===== Copying 3rd-party libraries and components ===== | ||
Line 510: | Line 645: | ||
You can then install all of them by using the '' | You can then install all of them by using the '' | ||
- | The scripted approach is limited to MinGW 4.8. | + | First, clone [[http:// |
- | 1st, clone [[http://code.x2go.org/ | + | Now run the script with the following arguments. In this example: |
- | + | * '' | |
- | 2nd, update the '' | + | * '' |
- | * Do a find & replace in the script | + | |
- | * Do a find & replace in the script to replace | + | |
- | + | ||
- | Now run the script, telling it to copy to the '' | + | |
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat dist | + | $ copy-deps-win32.bat |
</ | </ | ||
or to the '' | or to the '' | ||
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat nsis\x2goclient | + | $ copy-deps-win32.bat nsis\x2goclient |
</ | </ | ||
Line 535: | Line 667: | ||
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 543: | Line 675: | ||
=== Libraries === | === Libraries === | ||
- | - If you are using MinGW 4.4, add its libraries (copy from '' | + | - Add MinGW 4.8's libraries (copy from '' |
- | * '' | + | |
- | * '' | + | |
- | - If you are using MinGW 4.8, add its libraries (copy from '' | + | |
* '' | * '' | ||
- | * '' | + | * '' |
- | * libwinpthread-1.dll | + | * '' |
- Add OpenSSL libraries (copy from your OpenSSL installation directory) | - Add OpenSSL libraries (copy from your OpenSSL installation directory) | ||
* '' | * '' | ||
Line 555: | Line 684: | ||
- libssh library ([[wiki: | - libssh library ([[wiki: | ||
* '' | * '' | ||
- | | + | - zlib library for libssh (available [[http:// |
- | * '' | + | |
- | - zlib library for libzip (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 " |
- | * '' | + | * '' |
- | * '' | + | * '' |
- | * '' | + | * '' |
- | * '' | + | |
=== 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 581: | Line 706: | ||
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 599: | Line 724: | ||
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 609: | Line 734: | ||
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, | ||
- | |||
- | If you are doing an official X2Go Project build of X2Go Client 4.0.3.x, use the version: 1.15.2.3+xp-vc2013+x2go1 | ||
- | The " | ||
If you do install VcXsrv via the setup installer, and you are building X2Go Client 4.0.3.x or later, select to install the fonts. They will be an optional component of X2Go Client for Windows in its installer. | If you do install VcXsrv via the setup installer, and you are building X2Go Client 4.0.3.x or later, select to install the fonts. They will be an optional component of X2Go Client for Windows in its installer. | ||
Line 621: | Line 743: | ||
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 | + | * '' |
- | *Xcms.txt | + | * '' |
- | *xhost.exe | + | * '' |
- | *xlaunch.exe | + | * '' |
- | *xrdb.exe | + | * '' |
- | *xwininfo.exe | + | |
- | Also, if you are doing an official X2Go Project build, create this file in the VcXsrv folder: | + | Also, if you are doing an official X2Go Project build, before importing it into x2goclient-contrib, |
- | *vcxsrv-version.txt | + | Using Debian' |
- | And specify the version string of VcXsrv in it. The version string should be the only contents | + | < |
+ | $ cd / | ||
+ | $ find . -iname ' | ||
+ | </ | ||
+ | If you are doing an official X2Go Project build, create this file in the VcXsrv folder: | ||
+ | * '' | ||
+ | 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' | ||
+ | * '' | ||
+ | |||
+ | === x3270-fonts ==== | ||
+ | |||
+ | For IBM x3270 compatibility, | ||
+ | |||
+ | Note that versions prior to 3.6 are classified non-free by major distributions due to their custom, restrictive license. Do **not** use and (re-)distribute older versions than 3.6 with X2Go Client. | ||
+ | |||
+ | ==== Updating x3270 Fonts Package ==== | ||
+ | |||
+ | * Check the current licensing situation. Do **not** update the package if it becomes non-free again. | ||
+ | * Build the x3270 package, download a complete precompiled one or just fetch a binary fonts package. Debian conveniently offers one named [[https:// | ||
+ | * Create a new versioned subdirectory in the '' | ||
+ | * Extract the binary fonts. | ||
+ | * Make sure that all binary font files are located in one single directory called '' | ||
+ | * Get copyright and licensing information and place them into a file called '' | ||
+ | * Use Debian' | ||
+ | < | ||
+ | $ find misc -iname ' | ||
+ | </ | ||
+ | * For official builds, create timestamps script: | ||
+ | < | ||
+ | $ cd .. | ||
+ | $ ../ | ||
+ | </ | ||
+ | * For official builds, call the timestamps script in x2goclient-contrib' | ||
+ | * For official builds, update the [[https:// | ||
+ | |||
=== PuTTY === | === PuTTY === | ||
- | you can download PuTTY for Windows from [[http:// | + | You can download PuTTY for Windows from [[https:// |
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 | + | * '' |
+ | |||
+ | Out of courtesy, we also ship the following additional, not strictly needed binaries: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
===== Creating an NSIS Installer ===== | ===== Creating an NSIS Installer ===== | ||
- | Install NSIS Unicode | + | Install NSIS (currently, |
+ | |||
+ | Previously, we used NSIS Unicode, but this project is stale and NSIS 3.x nowadays supports Unicode. | ||
- | 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.) |