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:57] ionic More formatting and minor changes. |
wiki:development:build-howto-mswin:x2goclient [2020/02/05 17:32] ionic Remove libz.dll as used by libzip. Same reasoning as for libzip. |
||
---|---|---|---|
Line 16: | Line 16: | ||
- | * [[wiki: | + | * [[wiki: |
- | * [[wiki: | + | * [[wiki: |
* [[wiki: | * [[wiki: | ||
- | * [[wiki: | + | * [[wiki: |
+ | |||
+ | * [[wiki: | ||
* [[wiki: | * [[wiki: | ||
Line 120: | Line 122: | ||
You need libssh to build X2Go Client. | You need libssh to build X2Go Client. | ||
- | X2Go Client 4.0.4.0 and later use libssh 0.7.x 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:// | ||
Line 138: | 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: | ||
</ | </ | ||
+ | |||
+ | === 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 '' | ||
+ | |||
+ | < | ||
===== Build X2Go Client ===== | ===== Build X2Go Client ===== | ||
Line 205: | Line 256: | ||
==== 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 |
</ | </ | ||
Line 237: | Line 288: | ||
< | < | ||
- | $ setup-x86.exe -P " | + | $ setup-x86.exe -P " |
</ | </ | ||
Line 290: | Line 341: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
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: | ||
Line 597: | Line 650: | ||
- libssh library ([[wiki: | - libssh library ([[wiki: | ||
* '' | * '' | ||
- | - libzip library (available [[http:// | ||
- | * '' | ||
- | - zlib library for libzip (available [[http:// | ||
- | * '' | ||
- zlib library for libssh (available [[http:// | - zlib library for libssh (available [[http:// | ||
* '' | * '' | ||
Line 661: | Line 710: | ||
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: | ||
* '' | * '' | ||
- | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
Line 683: | Line 732: | ||
Using Debian' | Using Debian' | ||
< | < | ||
- | $ cd / | + | $ cd / |
- | $ find . -name *.gz | xargs strip-nondeterminism | + | $ find . -iname '*.gz' -exec 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: | ||
Line 695: | Line 744: | ||
* '' | * '' | ||
+ | === 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 '' | ||
Line 704: | Line 778: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | 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 '' | Then, edit '' | ||
- | Then, open '' | + | 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.) |