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 [2014/09/17 22:21] mikedep333 [Open SSH Server] Currently_Testing: Several libs not needed for openssh |
wiki:development:build-howto-mswin:x2goclient [2020/02/06 10:27] ionic Add staging prefix for later installation. |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Build X2GoClient and 3rd-party programs for MS Windows ====== | ====== Build X2GoClient and 3rd-party programs for MS Windows ====== | ||
- | This howto explains how to build the MS Windows version of X2Go Client. This howto explains how to build the 32-bit version of X2Go Client on MS Windows. If someone successfully attempts a 64-bit (which should work, but needs to be tested), please contribute to this wiki page. | + | This howto explains how to build the MS Windows version of X2Go Client. |
+ | |||
+ | This howto explains how to build the 32-bit version of X2Go Client on MS Windows. If someone successfully attempts a 64-bit (which should work, but needs to be tested), please contribute to this wiki page. | ||
+ | |||
+ | This howto is intended for 2 different audiences: | ||
+ | - Those doing official X2Go Project builds. | ||
+ | - Those doing informal builds, personal builds, or builds for use within their organization. | ||
+ | The former audience has extra steps to do. These steps will be noted. | ||
===== Overview of third-party components ===== | ===== Overview of third-party components ===== | ||
- | X2Go Cltient | + | X2Go Client |
- | * [[wiki: | + | * [[wiki: |
- | * [[wiki: | + | * [[wiki: |
* [[wiki: | * [[wiki: | ||
- | * [[wiki: | + | * [[wiki: |
+ | |||
+ | * [[wiki: | ||
* [[wiki: | * [[wiki: | ||
- | All these programmes | + | All these programs, as well as many of the libraries, |
+ | |||
+ | They can also be built from source, | ||
+ | |||
+ | You can also copy the 3rd-party components from X2Go Client installation (on MS Windows) directory. | ||
===== 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, | ||
+ | |||
+ | For official X2Go project updates to x2goclient-contrib, | ||
Notepad2 is a freeware alternative to Notepad shipped with Microsoft Windows. Notepad2 understands UTF-8 text formats (and others) and can handle Unix-style line endings. In case you want to introspect a code file, this tool is very handy. | Notepad2 is a freeware alternative to Notepad shipped with Microsoft Windows. Notepad2 understands UTF-8 text formats (and others) and can handle Unix-style line endings. In case you want to introspect a code file, this tool is very handy. | ||
- | ===== Build X2Go Client ===== | ||
+ | ===== Setup Build Environment ===== | ||
==== 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 | ||
+ | |||
+ | http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/ | ||
- | Extract it to your disk ('' | + | Extract it to your disk ('' |
- | 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 Qt ==== | ==== Installing Qt ==== | ||
- | You need Qt to build X2Go Client from source. Qt-4.8.5 is tested and recommended for current version of X2Go Client. | + | You need Qt to build X2Go Client from source. |
- | Download and install the **MinGW** version of Qt-4.8.5 for Windows from [[http:// | + | Qt-4.8.6 is tested and recommended |
- | In this example D:\Qt will be chosen as installation directory | + | Download and install the **MinGW** version of Qt-4.8.6 for Windows from [[http:// |
+ | In this example D:\Qt\4.8.6 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 60: | Line 78: | ||
After installation, | After installation, | ||
+ | For MinGW 4.8: | ||
< | < | ||
- | d: | + | d: |
</ | </ | ||
- | |||
- | < | ||
=== Static builds of Qt with SSL support === | === Static builds of Qt with SSL support === | ||
- | It is recommended to configure Qt to build statically linked applications. 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 is recommended to configure Qt to build statically linked applications. |
- | Open Qt Command Prompt and start configuration script | + | 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. | ||
+ | |||
+ | Open Qt Command Prompt and start configuration script. | ||
+ | |||
+ | For Qt 4.8.6, the command needs extra args due to QTBUG-38706: | ||
< | < | ||
- | $ configure -release -static -openssl | + | $ configure -release -static -openssl |
</ | </ | ||
- | < | + | Rebuild Qt: |
- | * configure -release -static -openssl -qt-style-windowsxp -qt-style-windowsvista | + | |
- | </ | + | |
- | + | ||
- | Rebuild Qt | + | |
< | < | ||
- | $ make sub-src | + | $ make -j3 sub-src |
</ | </ | ||
Line 88: | Line 107: | ||
If you choose to build dynamically linked applications with Qt, you still have to rebuild Qt in order to get OpenSSL support into Qt. | If you choose to build dynamically linked applications with Qt, you still have to rebuild Qt in order to get OpenSSL support into Qt. | ||
- | Open Qt Command Prompt and start configuration script | + | Open Qt Command Prompt and start configuration script. |
+ | |||
+ | For Qt 4.8.6, the command needs extra args due to QTBUG-38706: | ||
< | < | ||
- | $ configure -release -openssl | + | $ configure -release -openssl |
</ | </ | ||
- | < | ||
- | * configure -release -openssl -qt-style-windowsxp -qt-style-windowsvista | ||
- | </ | ||
- | Rebuild Qt | + | Rebuild Qt: |
< | < | ||
- | $ 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 uses libssh 0.6.3 with pageant support. Get the **library** package built with MinGW 4.4.0 from [[ http:// | + | X2Go Client 4.1.2.2 and later use libssh 0.9.x with pageant support. |
- | < | + | === Pre-built Binaries === |
- | * libssh-0.6.3-762055b-pageant-support-mingw482.zip | + | |
- | </ | + | |
- | 2Go Client 4.0.2.1 uses 0.5.5 with pageant support. | + | Get the **library** package built with MinGW 4.8.x (currently 4.8.2) |
- | Prior versions can be found here [[ftp:// | ||
- | Extract | + | Copy headers |
- | Copy headers files in " | + | For MinGW 4.8: |
+ | < | ||
+ | x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\include\libssh -> d: | ||
+ | </ | ||
- | libssh\include\libssh -> d: | + | Copy library files in " |
- | <note>Currently_Testing: | + | For MinGW 4.8: |
- | * D: | + | <code> |
- | </note> | + | x2goclient-contrib\libssh\0.6.3-762055b-pageant-support-mingw482_bin\lib\*.* -> d: |
+ | </code> | ||
+ | === Building From Source === | ||
- | Copy library | + | If you want to rebuild the library |
- | libssh\lib\*.* -> d: | + | == Preparation == |
- | < | + | Download the tarball from [[https://www.libssh.org/get-it/|the libssh website]]. |
- | * D:\i686-4.8.2-release-posix-dwarf-rt_v3-rev3\mingw32\i686-w64-mingw32\lib\ | + | |
- | </note> | + | |
+ | 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 from source ==== | ==== Build X2Go Client from source ==== | ||
Line 138: | Line 197: | ||
< | < | ||
$ git clone git:// | $ git clone git:// | ||
+ | $ cd x2goclient | ||
</ | </ | ||
- | Build X2Go Client 4.0.2.1 or earlier: | + | Generate the changelog, which x2goclient.exe --changelog will show: |
< | < | ||
- | $ cd x2goclient | + | $ copy debian\changelog txt\ |
- | $ PATH=%PATH%; | + | $ git --no-pager log --since "2 years ago" --format="%ai %aN (%h) %n%n%x09*%w(68, |
- | $ config_win.bat | + | $ copy ChangeLog.gitlog txt\git-info |
- | $ mingw32-make | + | |
</ | </ | ||
- | Build X2Go Client | + | Build X2Go Client: |
< | < | ||
$ cd x2goclient | $ cd x2goclient | ||
- | $ PATH=%PATH%; | + | $ PATH=%PATH%; |
$ config_win.bat | $ config_win.bat | ||
+ | $ cd client_build | ||
$ mingw32-make | $ mingw32-make | ||
+ | $ cd .. | ||
$ cd x2gohelper | $ cd x2gohelper | ||
$ mingw32-make | $ mingw32-make | ||
Line 160: | Line 221: | ||
X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | ||
- | |||
- | (x2gohelper.exe only applies to X2Go Client 4.0.3.0 and later.) | ||
==== Build X2Go Client from source (debug build) ==== | ==== Build X2Go Client from source (debug build) ==== | ||
Line 169: | Line 228: | ||
- 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 " |
- | ==== Pack/Compress X2Go Client ==== | + | CreateShortCut " |
+ | </code> | ||
- | You may want to pack X2Go Client to reduce it size. You can do it with [[http:// | + | ==== Copy the X2Go Client |
- | ==== X2Go Client package folder ==== | + | The 2 binaries to copy are: |
- | To make X2Go Client usable on Windows, you must put X2Go Client binary and all libraries and components in one directory. | + | - '' |
+ | - '' | ||
- | All of the files referenced below (apart from x2goclient.exe) can be obtained from [[http:// | + | 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 create an x2goclient NSIS installer, create the '' | ||
- | In the base directory of your X2Go Client | + | ==== Pack/ |
- | * X2Go Client with libraries | + | You may want to pack X2Go Client |
- | * nxproxy with libraries | + | |
- | * Open SSH Server with libraries (optional) | + | |
- | * VcXsrv | + | |
- | * PulseAudio (optional) | + | |
- | === Add X2Go Client | + | Official regular builds of X2Go Client |
- | - Add x2goclient.exe (from the '' | + | It is available |
- | - Add MinGW libraries (copy from '' | + | <code> |
- | * '' | + | x2goclient-contrib\upx\3.95_bin\upx.exe |
- | * '' | + | </code> |
- | - Add OpenSSL libraries (copy from your OpenSSL installation directory) | + | |
- | * '' | + | |
- | * '' | + | |
- | - libssh library ([[wiki: | + | |
- | * '' | + | |
- | - libzip library (available [[http:// | + | |
- | * '' | + | |
- | | + | |
- | * '' | + | |
- | - zlib library for libssh (available [[http://code.x2go.org/ | + | |
- | * '' | + | |
- | | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | < | + | The 2 files to pack are: |
- | * libgcc_s_dw2-1.dll | + | - '' |
- | * libstdc\+\+-6.dll | + | - '' |
- | * libwinpthread-1.dll | + | |
- | </ | + | |
- | ===== Build/ | + | ===== Building |
- | You can download | + | Building a new version |
- | - Copy the nxproxy | + | Official X2Go project builds usually rebuild |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | If you want to build nxproxy from source, you need install and configure Cygwin first. | + | Official X2Go project builds are kept under the x2goclient-contrib git repository under a folder like " |
==== Installing Cygwin ==== | ==== Installing Cygwin ==== | ||
- | Download and start the [[http:// | + | 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 OpenSSH you should install both, binary and source packages. Toggle the " | ||
If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | ||
Line 274: | Line 329: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
Line 285: | Line 341: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | < | + | If you are doing official builds, install these **source** packages for both nxproxy and openssh: |
- | * libpng-devel | + | * '' |
- | </ | + | * '' |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | < | + | ==== Building nxproxy 3.5 ==== |
- | * bash | + | |
- | * cygwin | + | |
- | * e2fsprogs (select source for: libcom_err2) | + | |
- | * gcc (select source for: gcc-core) | + | |
- | * gettext (select source for: libintl-devel) | + | |
- | * krb5 (select source for: likrb5-devel) | + | |
- | * libedit (select source for: libedit0) | + | |
- | * libiconv | + | |
- | * libjpeg-turbo (select source for: libjpeg-devel) | + | |
- | * libpng (select source for: libpng-devel) | + | |
- | * ncurses (select source for: libncurses-devel) | + | |
- | * openssh (source, but not binary) | + | |
- | * openssl | + | |
- | * readline (select source for: libreadline7) | + | |
- | * zlib (select source for: zlib-devel) | + | |
- | </ | + | |
- | ==== Installing libpng | + | |
- | You will need a libpng12 to build nxproxy. | + | X2Go Client for Windows is currently built with nxproxy |
- | * Open a cygwin shell. Go to the src directory | + | * Open a cygwin shell and change |
< | < | ||
- | $ cd /usr/src | + | $ cd /cygdrive/d/Build |
</ | </ | ||
- | * Get a libpng12 | + | * Download and extract the latest nx-libs-lite tarball |
+ | |||
+ | <note warning> | ||
< | < | ||
- | $ wget http://downloads.sourceforge.net/project/libpng/libpng12/ | + | $ wget http://code.x2go.org/releases/source/nx-libs/nx-libs-3.5.0.27-lite.tar.gz |
- | $ tar -xzvf libpng-1.2.51.tar.gz | + | $ tar -xvzf nx-libs-3.5.0.27-lite.tar.gz |
- | $ cd libpng-1.2.51 | + | $ cd nx-libs-3.5.0.27 |
</ | </ | ||
- | * Build and install libpng | + | |
+ | Fix building with libpng15 (X2Go Client 4.0.3.x): | ||
< | < | ||
- | $ ./configure | + | diff --git a/Pgn.cpp.orig b/Pgn.cpp |
- | $ make && make install | + | index cdcde84..1f56787 100644 |
- | </code> | + | --- a/nxcomp/Pgn.cpp.orig |
+ | +++ b/ | ||
+ | @@ -28,7 +28,7 @@ | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | -#include < | ||
+ | +#include < | ||
- | < | + | # |
- | ==== Building nxproxy ==== | + | #include " |
- | * Open a cygwin shell and change to your build directory. In this example d:\Build will be used | ||
- | < | ||
- | $ cd / | ||
</ | </ | ||
- | * Download and extract the latest nx-libs-lite tarball from http://code.x2go.org/releases/source/nx-libs/ . Regular nx-libs sources will also work. | + | < |
+ | diff --git a/configure.in.orig b/configure.in | ||
+ | index 6fa9757..b0699bb 100644 | ||
+ | --- a/nxcomp/configure.in.orig | ||
+ | +++ b/nxcomp/configure.in | ||
+ | @@ -385,7 +385,7 @@ AC_SUBST(ALL) | ||
- | <note warning> | + | if test " |
+ | | ||
+ | - LIBS=" | ||
+ | + LIBS=" | ||
+ | | ||
+ | | ||
+ | fi | ||
+ | |||
+ | </code> | ||
< | < | ||
- | $ wget http://code.x2go.org/releases/source/nx-libs/nx-libs-3.5.0.27-lite.tar.gz | + | diff --git a/nxproxy/configure.in.orig b/nxproxy/configure.in |
- | $ tar -xvzf nx-libs-3.5.0.27-lite.tar.gz | + | index b86828d..5858b36 100644 |
- | $ cd nx-libs-3.5.0.27 | + | --- a/ |
+ | +++ b/ | ||
+ | @@ -159,7 +159,7 @@ dnl GCC 3.3.x requires also the z, png and jpeg libraries. This is | ||
+ | dnl not true anymore since GCC 3.4.x. | ||
+ | |||
+ | if test " | ||
+ | - LIBS=" | ||
+ | + LIBS="$LIBS -L../nxcomp -lXcomp -lstdc++ -Wl, | ||
+ | | ||
+ | | ||
+ | fi | ||
</ | </ | ||
* Build nxcomp | * Build nxcomp | ||
Line 356: | Line 437: | ||
$ ./configure | $ ./configure | ||
$ make | $ make | ||
+ | $ 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 363: | Line 479: | ||
==== 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 |
+ | - nx-libs 3.5: From '' | ||
+ | - nx-libs 3.5: From '' | ||
+ | - nx-libs 3.6: From '' | ||
+ | - nx-libs 3.6: From '' | ||
- | - From nxproxy directory (d: | + | You must also copy required libraries into that folder. |
- | - From nxcomp | + | - From cygwin |
- | - From cygwin directory (c: | + | |
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | < | ||
- | $ cd /usr/bin | ||
- | $ cp --preserve=time -t / | ||
- | ===== Open SSH Server ===== | ||
- | X2Go Client for Windows using modified Cygwin Open SSH Server for file sharing. You can download it [[http:// | ||
- | If you want to build it from source, you should | + | If you wish to facilitate debugging, or if you are updating x2goclient-contrib, you should |
+ | - nx-libs 3.5: From '' | ||
+ | - nx-libs 3.5: From '' | ||
+ | * '' | ||
+ | * '' | ||
+ | - nx-libs 3.6: From '' | ||
+ | - nx-libs 3.6: From '' | ||
+ | * '' | ||
+ | * '' | ||
- | After that run Cygwin installer (setup.exe), | ||
- | *libedit | ||
- | *libedit-devel | ||
- | *libkrb5-devel | ||
- | *libncurses-devel | ||
- | *openssl-devel | ||
- | *patch | ||
- | For openssh you should install both, binary and source packages (toggle " | + | ==== 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 |
</ | </ | ||
- | < | ||
- | Currently_Testing: | ||
- | * $./ | ||
- | </ | ||
- | Open SSH Server binaries are ready. | + | < |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ==== Copying OpenSSH Server binaries ==== | ||
+ | |||
+ | Open SSH Server binaries are ready. | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | *sftp.exe | + | For example: |
- | *sftp-server.exe | + | |
- | *ssh-keygen.exe | + | |
- | *sshd.exe | + | |
< | < | ||
- | $ cp --preserve=time | + | $ 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 the Cygwin directory (c: | ||
- | To be able to run Open SSH Server you should also copy needed programs and libraries from cygwin directory (c: | + | First, |
- | *sh.exe | + | * '' |
- | *cygcom_err-2.dll | + | * '' |
- | *cygcrypto-1.0.0.dll | + | * '' |
- | *cygedit-0.dll | + | * '' |
- | *cyggcc_s-1.dll | + | * '' |
- | *cyggssapi_krb5-2.dll | + | * '' |
- | *cygiconv-2.dll | + | * '' |
- | *cygintl-8.dll | + | |
- | *cygk5crypto-3.dll | + | For example: |
- | *cygkrb5-3.dll | + | |
- | *cygkrb5support-0.dll | + | |
- | *cygncursesw-10.dll | + | |
- | *cygreadline7.dll | + | |
- | *cygssp-0.dll | + | |
- | *cygwin1.dll | + | |
- | *cygz.dll | + | |
< | < | ||
+ | $ 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 / | ||
+ | </ | ||
- | < | + | Then, copy the dash executable over and rename it: |
- | | + | < |
- | | + | ash.exe -> sh.exe |
- | *cygk5crypto-3.dll | + | </ |
- | | + | |
- | *cygkrb5support-0.dll | + | |
+ | For example: | ||
+ | < | ||
+ | $ cp --preserve=time ash.exe / | ||
+ | </ | ||
- | $ cd /usr/bin/ | + | Some of these libraries are also used by nxproxy. Open SSH Server and nxproxy should be built using same version of Cygwin. |
- | $ cp --preserve=time -t /cygdrive/d/Build/ | + | |
+ | < | ||
+ | |||
+ | ===== Copying 3rd-party libraries and components | ||
+ | |||
+ | ==== Overview ==== | ||
+ | |||
+ | To make X2Go Client usable on Windows, all libraries and components must be in the some directory as where the 2 binaries are. | ||
+ | |||
+ | All of the files referenced below (except for the OpenSSL-Win32 library, which you installed previously) can be obtained from [[http://code.x2go.org/gitweb? | ||
+ | |||
+ | In the previous step, you chose either the '' | ||
+ | |||
+ | * libraries | ||
+ | * nxproxy with libraries | ||
+ | * Open SSH Server with libraries (optional) | ||
+ | * PuTTY | ||
+ | * VcXsrv | ||
+ | * PulseAudio (optional) | ||
+ | |||
+ | ==== Scripted Copying ==== | ||
+ | |||
+ | You can then install all of them by using the '' | ||
+ | |||
+ | First, clone [[http:// | ||
+ | |||
+ | Now run the script with the following arguments. In this example: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | < | ||
+ | $ cd x2goclient | ||
+ | $ copy-deps-win32.bat ..\x2goclient-contrib D: | ||
+ | </ | ||
+ | or to the '' | ||
+ | < | ||
+ | $ cd x2goclient | ||
+ | $ copy-deps-win32.bat nsis\x2goclient | ||
</ | </ | ||
- | Some of this libraries are also used by nxproxy. Open SSH Server and nxproxy should be built using same version of Cygwin. | + | ==== Scripted Copying (debug builds) |
- | ===== PulseAudio ===== | + | |
- | You can download PulseAudio 5.0 for Windows [[http:// | + | Follow the instructions |
- | Prior versions of PulseAudio are available from [[http:// | + | However, at the end: |
- | ===== VcXsrv ===== | + | - View the '' |
+ | - From the Cygwin bundle, '' | ||
+ | - Replace nxproxy.exe with nxproxy.exe.unstripped | ||
- | you can download VcXsrv for Windows [[http:// | + | ==== Manual Copying ==== |
- | 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. | + | === Libraries === |
- | Also, you are doing an official | + | - Add MinGW 4.8's libraries (copy from '' |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | - Add OpenSSL libraries (copy from your OpenSSL installation directory) | ||
+ | * '' | ||
+ | * '' | ||
+ | - libssh library ([[wiki: | ||
+ | * '' | ||
+ | - zlib library for libssh (available [[http:// | ||
+ | * '' | ||
+ | - If you want to use X2Go Client on older versions of Windows, you should put the " | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
- | If you do download | + | |
+ | === nxproxy === | ||
+ | |||
+ | The latest version is available in [[http:// | ||
+ | |||
+ | You can download older versions, including their libraries, from here [[http:// | ||
+ | |||
+ | === nxproxy (debug builds)=== | ||
+ | |||
+ | Follow the instructions above for nxproxy. | ||
+ | |||
+ | Except at the end, replace nxproxy.exe with nxproxy.exe.unstripped. | ||
+ | |||
+ | Older builds | ||
+ | |||
+ | === OpenSSH Server === | ||
+ | |||
+ | X2Go Client for Windows uses a modified Cygwin OpenSSH Server for file sharing. | ||
+ | |||
+ | The latest version is available in [[http:// | ||
+ | |||
+ | You can download | ||
+ | |||
+ | === PulseAudio === | ||
+ | |||
+ | PulseAudio for Windows 6.0 is used by X2Go Client 4.0.4.x and it is available in [[http:// | ||
+ | |||
+ | PulseAudio for Windows 5.0 is used by X2Go Client 4.0.3.x and it is available in [[http:// | ||
+ | |||
+ | You can download older Windows builds here [[http:// | ||
+ | |||
+ | Note that the files must be installed to the '' | ||
+ | |||
+ | Even older Windows builds are available from [[http:// | ||
+ | |||
+ | === VcXsrv - XP Compatible === | ||
+ | |||
+ | The latest version is available in [[http:// | ||
+ | |||
+ | You can download older versions, modified by the X2Go project, (VcXsrv - XP Compatible), | ||
+ | |||
+ | Note that the files must be installed to the '' | ||
+ | |||
+ | Building VcXsrv from source is not the part of this howto. However, it is documented in the [[https:// | ||
+ | |||
+ | 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 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.2.1, deselect to install the fonts. They would more than double the size of the X2Go NSIS installer. Some legacy apps do need them, and users can install them if they'd like. | ||
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.14.3.1 | + | 1.15.2.3+xp-vc2013+x2go1 |
- | ===== PuTTY ===== | + | |
- | you can download PuTTY for Windows from [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|project site]]. Building PuTTY from source is not the part of this Howto | + | If you are doing an official X2Go Project build, copy the project' |
+ | * '' | ||
- | These are the only binaries you need from PuTTY. Copy them directly into the '' | + | === x3270-fonts ==== |
- | | + | For IBM x3270 compatibility, |
- | *pscp.exe | + | |
+ | 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 === | ||
+ | |||
+ | You can download PuTTY for Windows from [[https:// | ||
+ | |||
+ | These are the only binaries you need from PuTTY. Copy them directly into the '' | ||
+ | |||
+ | | ||
+ | * '' | ||
+ | |||
+ | Out of courtesy, we also ship the following additional, not strictly needed binaries: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | ===== Creating an NSIS Installer ===== | ||
+ | |||
+ | Install NSIS (currently, 3.05): https:// | ||
+ | |||
+ | Previously, we used NSIS Unicode, but this project is stale and NSIS 3.x nowadays supports Unicode. | ||
+ | |||
+ | Then, edit '' | ||
+ | |||
+ | Then, open '' | ||
+ | |||
+ | If you wish to build via the command-line, | ||
+ | < | ||
+ | $ " | ||
+ | </ | ||
+ | (Adjust path if on 32-bit Windows.) |