User Tools

Site Tools


wiki:development:build-howto-mswin:x2goclient

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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:51]
ionic Fix ++ issue with dokuwiki.
wiki:development:build-howto-mswin:x2goclient [2020/01/25 18:06]
ionic Stop mentioning libconv-2.dll libiconv-2.dll twice.
Line 16: Line 16:
  
  
-  * [[wiki:development:build-howto-mswin:x2goclient/#build_add_nxproxy_with_libraries|nxproxy]]+  * [[wiki:development:build-howto-mswin:x2goclient/#building_nxproxy_openssh_optional|nxproxy]]
  
-  * [[wiki:development:build-howto-mswin:x2goclient/#open_ssh_server|OpenSSH Server]] for file sharing (optional)+  * [[wiki:development:build-howto-mswin:x2goclient/#openssh_server|OpenSSH Server]] for file sharing (optional)
  
   * [[wiki:development:build-howto-mswin:x2goclient/#pulseaudio|PulseAudio]] for sound support (optional)   * [[wiki:development:build-howto-mswin:x2goclient/#pulseaudio|PulseAudio]] for sound support (optional)
  
-  * [[wiki:development:build-howto-mswin:x2goclient/#vcxsrv|X-Server]](VcXsrv)+  * [[wiki:development:build-howto-mswin:x2goclient/#vcxsrv_-_xp_compatible|X-Server]] (VcXsrv
 + 
 +  * [[wiki:development:build-howto-mswin:x2goclient/#x3270-fonts|x3270 fonts]] (optional)
  
   * [[wiki:development:build-howto-mswin:x2goclient/#putty|PuTTY]] for Kerberos 5 (GSSAPI) authentication   * [[wiki:development:build-howto-mswin:x2goclient/#putty|PuTTY]] for Kerberos 5 (GSSAPI) authentication
Line 152: Line 154:
 <code> <code>
 $ copy debian\changelog txt\ $ copy debian\changelog txt\
-git --no-pager log --since "2 years ago" --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > ChangeLog.gitlog+git --no-pager log --since "2 years ago" --format="%ai %aN (%h) %n%n%x09*%w(68,0,10) %s%d%n" > ChangeLog.gitlog
 $ copy ChangeLog.gitlog txt\git-info $ copy ChangeLog.gitlog txt\git-info
 </code> </code>
Line 195: Line 197:
 The 2 binaries to copy are: The 2 binaries to copy are:
  
-  - x2goclient.exe (from the ''client_build\release'' folder) +  - ''x2goclient.exe'' (from the ''client_build\release'' folder) 
-  - x2gohelper.exe (from the ''client_build\release'' folder)+  - ''x2gohelper.exe'' (from the ''client_build\release'' folder)
  
 However, you must decide where you wish to copy them. However, you must decide where you wish to copy them.
Line 205: Line 207:
 ==== Pack/Compress X2Go Client ==== ==== Pack/Compress X2Go Client ====
  
-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://code.x2go.org/gitweb?p=x2goclient-contrib.git;a=tree;hb=HEAD|x2goclient-contrib.git]]. The current version is located at: It is available in [[http://code.x2go.org/gitweb?p=x2goclient-contrib.git;a=tree;hb=HEAD|x2goclient-contrib.git]]. The current version is located at:
 <code> <code>
-x2goclient-contrib\upx\3.91_bin\upx.exe+x2goclient-contrib\upx\3.95_bin\upx.exe
 </code> </code>
  
 The 2 files to pack are: The 2 files to pack are:
-  - x2goclient.exe +  - ''x2goclient.exe'' 
-  - x2gohelper.exe+  - ''x2gohelper.exe''
  
 ===== Building nxproxy & OpenSSH (Optional) ===== ===== Building nxproxy & OpenSSH (Optional) =====
Line 230: Line 232:
 Download and start the [[https://cygwin.com/setup-x86.exe|Cygwin 32-bit installer]]. Download and start the [[https://cygwin.com/setup-x86.exe|Cygwin 32-bit installer]].
  
-Choose your Cygwin directory. For example c:\cygwin. Follow installer instructions.+Choose your Cygwin directory. For example C:\cygwin. Follow installer instructions.
  
 For the X2Go-WinBuilder VM, install to D:\cygwin.YYYY-MM-DD instead. For the X2Go-WinBuilder VM, install to D:\cygwin.YYYY-MM-DD instead.
Line 237: Line 239:
  
 <code> <code>
-setup-x86.exe -P "autoconf,automake,gcc-core,gcc-g++,git,libX11-devel,libjpeg-devel,libpng-devel,libmpfr4,make,zlib-devel,wget,libedit-devel,libncurses-devel,openssl-devel,patch,bashdb,bash-completion,chere,colorgcc,colordiff,diffutils,dos2unix,cygcheck-dep,cygutils-extra,indent,mc,renameutils,vim,git-completion,patchutils,openssh,xz,unzip,nano,bzip2,time"+setup-x86.exe -P "autoconf,automake,gcc-core,gcc-g++,git,libX11-devel,libjpeg-devel,libpng-devel,libmpfr4,make,zlib-devel,wget,libedit-devel,libncurses-devel,openssl-devel,patch,bashdb,bash-completion,chere,colorgcc,colordiff,diffutils,dos2unix,cygcheck-dep,cygutils-extra,indent,mc,renameutils,vim,git-completion,patchutils,openssh,xz,unzip,nano,bzip2,time,mkfontdir,mkfontscale"
 </code> </code>
  
Line 260: Line 262:
  
 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 you should install both, binary and source packages. Toggle the "Src" checkbox beside the package name. Source package will be installed in ''/usr/src'' directory in your Cygwin installation. For OpenSSH you should install both, binary and source packages. Toggle the "Src" checkbox beside the package name. Source package will be installed in ''/usr/src'' directory in your Cygwin installation.
Line 290: Line 292:
   * ''bzip2''   * ''bzip2''
   * ''time''   * ''time''
 +  * ''mkfontdir''
 +  * ''mkfontscale''
  
 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 +  * ''dash'' 
-  * cygwin +  * ''cygwin'' 
-  * gcc (select source for: gcc-core) +  * ''gcc'' (select source for: ''gcc-core''
-  * libedit (select source for: libedit0) +  * ''libedit'' (select source for: ''libedit0''
-  * 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 ====
Line 496: Line 500:
  
 Open SSH Server binaries are ready. You can copy it into the program packaging folder (''dist/'' or ''nsis/x2goclient/'') of X2Go Client, or the x2goclient-contrib folder: Open SSH Server binaries are ready. You can copy it into the program packaging folder (''dist/'' or ''nsis/x2goclient/'') of X2Go Client, or the x2goclient-contrib 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:
Line 509: Line 513:
  
 First, 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:
Line 661: Line 665:
 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''   * ''iconv.dll''
-  * ''libgcc-s-sjlj-1.dll'' 
   * ''libiconv-2.dll''   * ''libiconv-2.dll''
 +  * ''libgcc-s-sjlj-1.dll''
   * ''libwinpthread-1.dll''   * ''libwinpthread-1.dll''
   * ''libxml2.dll''   * ''libxml2.dll''
Line 683: Line 687:
 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):
 <code> <code>
-$ cd /cygdrive/c/x2gobuilds/x2goclient-contrib/VcXsrv/1.20.0.0_bin/fonts +$ cd /cygdrive/c/x2gobuilds/x2goclient-contrib/VcXsrv/1.20.1.4_bin/fonts 
-$ find . -name *.gz | xargs strip-nondeterminism+$ find . -iname '*.gz' -exec strip-nondeterminism '{}' ';'
 </code> </code>
 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 699:
   * ''COPYING.txt''   * ''COPYING.txt''
  
 +=== x3270-fonts ====
 +
 +For IBM x3270 compatibility, a special set of fonts is necessary. Official builds use the version shipped in the ''x3270-fonts'' subdirectory of x2goclient-contrib.
 +
 +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://packages.debian.org/sid/xfonts-x3270-misc|xfonts-x3270-misc]].
 +  * Create a new versioned subdirectory in the ''x3270-fonts'' directory.
 +  * Extract the binary fonts.
 +  * Make sure that all binary font files are located in one single directory called ''misc''.
 +  * Get copyright and licensing information and place them into a file called ''copyright-x3270-fonts''. Debian's copyright file is very well suited for this, but please remove content that is not relevant to the fonts themselves.
 +  * Use Debian's ''strip-nondeterminism'' script:
 +<code>
 +$ find misc -iname '*.gz' -exec strip-nondeterminism '{}' ';'
 +</code>
 +  * For official builds, create timestamps script:
 +<code>
 +$ cd ..
 +$ ../generate-timestamps-on-folder.sh <new-versions-directory>
 +</code>
 +  * For official builds, call the timestamps script in x2goclient-contrib's top-directory script called ''current-timestamp-scripts.sh''.
 +  * For official builds, update the [[https://code.x2go.org/gitweb?p=x2goclient.git;a=blob;f=copy-deps-win32.bat;hb=HEAD|copy-deps-win32.bat in x2goclient.git]] copying step to use the new directory.
  
 === PuTTY === === 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.+You can download PuTTY for Windows from [[https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|project site]]. Building PuTTY from source is not the part of this howto.
  
 These are the only binaries you need from PuTTY. Copy them directly into the ''dist/'' or ''nsis/x2goclient'' folder. These are the only binaries you need from PuTTY. Copy them directly into the ''dist/'' or ''nsis/x2goclient'' folder.
Line 704: Line 733:
   * ''plink.exe''   * ''plink.exe''
   * ''pscp.exe''   * ''pscp.exe''
 +
 +Out of courtesy, we also ship the following additional, not strictly needed binaries:
 +
 +  * ''pageant.exe''
 +  * ''puttygen.exe''
  
  
 ===== Creating an NSIS Installer ===== ===== Creating an NSIS Installer =====
  
-Install NSIS Unicode (currently, 2.46.5): http://www.scratchpaper.com/+Install NSIS (currently, 3.05): https://nsis.sourceforge.io 
 + 
 +Previously, we used NSIS Unicode, but this project is stale and NSIS 3.x nowadays supports Unicode.
  
 Then, edit ''nsis/x2goclient.nsi'' and replace all instances of ''X2GOCLIENT_VERSION'' with the actual version, and any string at the end. For example, if you were doing a test build of fixing bug 123 on top of 4.0.3.2, use ''4.0.3.2-bug123'' as the version string. Then, edit ''nsis/x2goclient.nsi'' and replace all instances of ''X2GOCLIENT_VERSION'' with the actual version, and any string at the end. For example, if you were doing a test build of fixing bug 123 on top of 4.0.3.2, use ''4.0.3.2-bug123'' as the version string.
  
-Then, open ''nsis\x2goclient.nsi'' with NSIS Unicode. It will build an installer (''*-setup.exe'') and put it into the same directory.+Then, open ''nsis\x2goclient.nsi'' with NSIS. It will build an installer (''*-setup.exe'') and put it into the same directory.
  
 If you wish to build via the command-line, run: If you wish to build via the command-line, run:
 <code> <code>
-$ "C:\Program Files (x86)\NSIS\Unicode\makensis.exe" x2goclient.nsi+$ "C:\Program Files (x86)\NSIS\makensis.exe" x2goclient.nsi
 </code> </code>
 (Adjust path if on 32-bit Windows.) (Adjust path if on 32-bit Windows.)
wiki/development/build-howto-mswin/x2goclient.txt · Last modified: 2023/05/08 22:20 by orion