Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
howtos:win32:msys2 [2016/03/13 17:39] – Add bundle and installer creation notes enricohowtos:win32:msys2 [2024/09/12 18:15] (current) – Provides the /usr/share/gettext/archive.dir.tar.xz that autopoint wants dnabre
Line 1: Line 1:
- 
- 
 ====== Build Geany on Windows (using MSYS2) ====== ====== Build Geany on Windows (using MSYS2) ======
  
-*** UNDER CONSTRUCTION *** +Msys2 is a successor to msys which offers a unix-like environment on Windows combined with a pacman-based package manager. 
- +It's purpose is to simplify win32 compiliations, and it's doing great at that for GTK+ stack and related projects. 
-Msys2 is a successor to msys which offers a unix-like environment on Windows combined with a pacman-based package manager. It's purpose is to simplify win32 compiliations, and it's doing great at that for GTK+ stack and related projects. In fact, it's so good it should become the default method of compiling Geany on Windows.+In fact, it's so good it should become the default method of compiling Geany on Windows.
  
 See http://sourceforge.net/projects/msys2/ and http://msys2.github.io/ See http://sourceforge.net/projects/msys2/ and http://msys2.github.io/
  
-This page aims at showing how to use msys2 to build Geany on Windows, both GTK+2 and GTK+3 versions.+This page aims at showing how to use MSYS2 to build Geany on Windows.
  
-===== One-time Setup =====+===== Initial Setup =====
  
-Download the installer from [[http://msys2.github.io/|here]]Chose the 32bit or 64bit version depending on your Windows version, not whether you target a 32bit or 64bit compilation of Geany (this guide will always compile for 32bit).+Download the installer from https://msys2.github.io/Choose the 32bit or 64bit version depending on your Windows version, 
 +not whether you target a 32bit or 64bit compilation of Geany (this guide will always compile for 64bit).
  
-Run the installer and follow the instructions. In the following we will assume that you installed the 32bit version to C:\mingw32.+Run the installer and follow the instructions. In the following we will assume that you installed the 64bit version to C:\mingw64.
  
-After installation, open the msys2 environment via  +After installation, open the MSYS2 environment via 
-''Start Menu -> All Programs -> MSYS2 32bit -> MinGW-w64 Win32 Shell''+`Start Menu -> All Programs -> MSYS2 64bit -> MSYS2 MinGW x64`
  
 Next, execute: Next, execute:
-  pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime 
  
-Now exit and re-open the msys2 environment and perform a system update: +    pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
-  pacman -Su+
  
-Restart msys2 once more, in case ''pacman -Su'' updated environment related packages.+Now exit and re-open the MSYS2 environment and perform a system update:
  
-Finally, install the dependencies needed by Geany.+    pacman -Su
  
-  # toolchain +Restart msys2 once more, in case `pacman -Su` updated environment related packages. 
-  pacman -S mingw-w64-i686-binutils mingw-w64-i686-gcc mingw-w64-i686-gdb + 
-  # make and Autotools +Finally, install the dependencies needed by Geany: 
-  pacman -S make pkgconfig autoconf automake libtool intltool + 
-  # gtk familiy +    # toolchain 
-  pacman -S mingw-w64-i686-gtk2 mingw-w64-i686-gtk3 +    pacman -S mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb 
-  # for building html docs +    # make and Autotools 
-  pacman -S mingw-w64-i686-python2 mingw-w64-i686-python2-docutils +    pacman -S make mingw-w64-x86_64-libtool mingw-w64-x86_64-pkgconf autoconf automake gettext gettext-devel 
-  # and if you fancy building from git +    # gtk family 
-  pacman -S git +    pacman -S mingw-w64-x86_64-gtk3 
-  # necessary for GTK bundle and installer steps +    # for building html docs 
-  pacman -S rsync +    pacman -S mingw-w64-x86_64-python3 mingw-w64-x86_64-python-lxml 
-   +    # and if you fancy building from git 
-At last, you want to add ''C:\msys32\mingw32\bin'' to your PATH environment variable, in order to run Geany from the Windows Explorer.+    pacman -S git 
 +    # necessary for GTK bundle and installer steps 
 +    pacman -S rsync 
 +    # for GTK bundle creation and release creation 
 +    pacman -S curl tar dos2unix zip unzip mingw-w64-x86_64-osslsigncode mingw-w64-x86_64-nsis patch 
 + 
 +Make sure you have not installed both `gcc` and `mingw-w64-x86_64-gcc`, or you may get errors when building Geany. 
 + 
 +At last, you might want to add `C:\msys64\mingw64\binto your `PATHenvironment variable, in order to run Geany from the Windows Explorer.
  
 In case you want also compile the combined Geany-Plugins collection, you need the following dependencies: In case you want also compile the combined Geany-Plugins collection, you need the following dependencies:
  
-  # geany-plugins dependencies +    # geany-plugins dependencies 
-  pacman -S mingw-w64-i686-check mingw-w64-i686-enchant mingw-w64-i686-lua51 mingw-w64-i686-gpgme mingw-w64-i686-libsoup mingw-w64-i686-libgit2 mingw-w64-i686-gtkspell mingw-w64-i686-webkitgtk2 mingw-w64-i686-webkitgtk3 +    pacman -S mingw-w64-x86_64-check mingw-w64-x86_64-enchant mingw-w64-x86_64-lua51 mingw-w64-x86_64-gpgme mingw-w64-x86_64-libsoup mingw-w64-x86_64-libgit2 mingw-w64-x86_64-gtkspell3 mingw-w64-x86_64-ctpl-git
-  +
  
-===== GTK+3 compilation =====+Note: Pacman will probably suggest to replace `mingw-w64-x86_64-lua51` by `mingw-w64-x86_64-luajit`. 
 +Deny this suggestion and keep installing `mingw-w64-x86_64-lua51`. 
 +Otherwise building the GeanyLua plugin might and creating a release installer will break.
  
-This is effectively the same procedure as cross-compiling on Linux. You can either clone the source code from the GIT repository or download a release tarball (1.27 or later) and unpack it.+===== Geany Compilation =====
  
-  curl -L -o geany-master.zip https://github.com/geany/geany/archive/master.zip +You can either clone the source code from the GIT repository or download a release tarball and unpack it.
-  unzip geany-master.zip +
-  cd geany-master +
-  # autogen.sh is not needed for tarballs! +
-  NOCONFIGURE=1 ./autogen.sh +
-  # configure and make take a while, don't panic +
-  ./configure --enable-gtk3 --prefix=/c/geany +
-  make -j2 +
-  make install+
  
-After that, you can run Geany either through msys2 shell (''/c/geany/bin/geany'') or use the Windows Explorer to locate the executable and run it.+    cd 
 +    curl -L -o geany-master.zip https://github.com/geany/geany/archive/master.zip 
 +    unzip geany-master.zip 
 +    cd geany-master 
 +    # autogen.sh is not needed for release tarballs! 
 +    NOCONFIGURE=1 ./autogen.sh 
 +    # configure and make take a while, don't panic 
 +    ./configure --prefix=/c/geany 
 +    make -j2 
 +    make install
  
-The first run should look like thison GTK+ 3.18.6\\ +After thatyou can run Geany either through MSYS2 shell (`/c/geany/bin/geany`) or use the Windows Explorer to locate the executable and run it.
-{{:howtos:win32:geany-gtk3.png?&300|}}+
  
-===== GTK+2 compilation =====+The first run should look like this, on GTK+ 3.18.6 {{:howtos:win32:geany-gtk3.png?&300|}}
  
-This is effectively the same procedure as cross-compiling on Linux. You can either clone the source code from the GIT repository or download a release tarball (1.27 or later) and unpack it.+===== Geany-Plugins Compilation =====
  
-  curl -L -o geany-master.zip https://github.com/geany/geany/archive/master.zip +You can either clone the source code from the GIT repository or download a release tarball and unpack it.
-  unzip geany-master.zip +
-  cd geany-master +
-  # autogen.sh is not needed for tarballs! +
-  NOCONFIGURE=1 ./autogen.sh +
-  # configure and make take a while, don't panic +
-  ./configure --prefix=/c/geany +
-  make -j2 +
-  make install+
  
-After thatyou can run Geany either through msys2 shell (''/c/geany/bin/geany'') or use the Windows Explorer to locate the executable and run it.+    cd 
 +    curl -L -o geany-plugins-master.zip https://github.com/geany/geany-plugins/archive/master.zip 
 +    unzip geany-plugins-master.zip 
 +    cd geany-plugins-master 
 +    # autogen.sh is not needed for release tarballs! 
 +    NOCONFIGURE=1 ./autogen.sh 
 +    # configure and make take a whiledon't panic 
 +    ./configure --prefix=/c/geany --with-geany-libdir=/c/geany/lib 
 +    make -j2 
 +    make install
  
-The first run should look like this, on GTK+ 2.24.28 \\ 
-{{:howtos:win32:geany-gtk2.png?300|}} 
  
 ===== Creating a GTK runtime bundle ===== ===== Creating a GTK runtime bundle =====
Line 98: Line 103:
 installation. installation.
 In case you want to create an installer, leave the directories as they are and read on. In case you want to create an installer, leave the directories as they are and read on.
- 
  
 ==== Geany ==== ==== Geany ====
  
-The script is available at https://raw.githubusercontent.com/geany/geany/master/scripts/gtk-bundle-from-msys2.sh.+The script can be found in `scripts/gtk-bundle-from-msys2.sh` in the Geany source directory.
  
-To run it, simply create a new directory where the GTK runtime environment should be+To run the script, simply create a new directory where the GTK runtime environment should be
 unpacked and change into this directory. unpacked and change into this directory.
 Then call the script and wait a bit. It will download all necessary MSYS2 packages and extract them. Then call the script and wait a bit. It will download all necessary MSYS2 packages and extract them.
-Finally it will download the sources for *grep* and then compile *grep*. 
  
-  cd +    cd 
-  curl -L -o geany-gtk-bundle-from-msys2.sh https://raw.githubusercontent.com/geany/geany/master/scripts/gtk-bundle-from-msys2.sh +    mkdir -p ~/geany_build/bundle/geany-gtk 
-  mkdir /h/geany-bundle +    cd ~/geany_build/bundle/geany-gtk 
-  cd /h/geany-bundle +    bash ~/geany-master/scripts/gtk-bundle-from-msys2.sh -3
-  bash ~/geany-gtk-bundle-from-msys2.sh -+
-  rsync -a --delete /h/geany-bundle/ ~/geany/gtk/+
  
 There are a few command line options for this script. Run it with "-h" for details. There are a few command line options for this script. Run it with "-h" for details.
-The most important option is "-2" and "-3" which defines the GTK version to be used+The most important option is "-3" and "-4" which defines the GTK version to be used.
- +
-The trailing "rsync" command is only necessary if you intend to create an installer later on.+
  
 ==== Geany-Plugins ==== ==== Geany-Plugins ====
  
 For Geany-Plugins, the process is quite similar. For Geany-Plugins, the process is quite similar.
-The script for Geany-Plugins is available at https://raw.githubusercontent.com/geany/geany-plugins/master/build/gtk-bundle-from-msys2.sh+The script for Geany-Plugins is available `build/gtk-bundle-from-msys2.sh` in the Geany-Plugins source directory.
- +
-  cd +
-  curl -L -o geany-plugins-gtk-bundle-from-msys2.sh https://raw.githubusercontent.com/geany/geany-plugins/master/build/gtk-bundle-from-msys2.sh +
-  mkdir /h/geany-plugins-bundle +
-  cd /h/geany-plugins-bundle +
-  bash ~/geany-plugins-gtk-bundle-from-msys2.sh -2 +
-  rsync -a --delete /h/geany-plugins-bundle/ ~/geany-plugins/contrib/+
  
-The trailing "rsync" command is only necessary if you intend to create an installer later on.+    cd 
 +    mkdir -p ~/geany_build/bundle/geany-plugins-dependencies 
 +    cd ~/geany_build/bundle/geany-plugins-dependencies 
 +    bash ~/geany-plugins-master/build/gtk-bundle-from-msys2.sh -3
  
 ===== Creating an installer / Making a release ===== ===== Creating an installer / Making a release =====
Line 147: Line 142:
 Build instructions to build Geany in order to create a Windows installer (within MSYS2 shell): Build instructions to build Geany in order to create a Windows installer (within MSYS2 shell):
  
-  DESTINATON=/h +    DESTINATON=$HOME/geany_build 
-  VERSION="1.28+    VERSION="1.39
-  cd ~/geany +    cd ~/geany-master 
-  make distclean +    make distclean 
-  ./autogen.sh +    ./autogen.sh 
-  ./configure --prefix=${DESTINATON}/geany_install --disable-silent-rules +    mkdir _build 
-  make -j 2 +    cd _build 
-  make install +    ../configure --prefix=${DESTINATON}/build/geany --disable-silent-rules 
-  make DESTDIR=${DESTINATON}/geany install +    make -j 2 
-  rsync -a --delete ${DESTINATON}/geany/h/geany_install/ ~/geany/geany-${VERSION}/+    make install 
 +    rm -rf $DESTINATON/release/geany-orig 
 +    rsync -a --delete ${DESTINATON}/build/geany/ $DESTINATON/release/geany-orig
  
-The used destination here is "/h" which is the MSYS2 way to address H:\. +You can use any other location as installation target by adjusting `DESTINATON`
-You can use any other location as installation target. +Then we compile Geany and install it normally.
-Then we compile Geany and install it normally and additionally using DESTDIR to +
-another location. +
-The normal installation is for Geany-Plugins so they can easily find the Geany installation +
-while the DESTDIR installation is used to move the installed files into the source directory +
-back for the installer creation. +
- +
-This process can probably be optimized and shortened but for now it works this way.+
  
 The following actually creates the installer. The following actually creates the installer.
-The installer script expects that you have Python and NSIS 2.x (http://nsis.sourceforge.net/Download) 
-installed in your normal Windows system (not in MSYS2). In the future, it would be cool to build the 
-installer from within the MSYS2 environment but currently only NSIS 3.0 Beta is available in MSYS2. 
  
-For the following steps, a little Python is necessary to automate the further installer creation.+For the following steps, a little Python script is necessary to automate the further installer creation.
 The script can be downloaded here: {{:howtos:win32:geany-release.py.txt|}} The script can be downloaded here: {{:howtos:win32:geany-release.py.txt|}}
 Open the script in your editor of choice and change paths at the beginning of the script as needed. Open the script in your editor of choice and change paths at the beginning of the script as needed.
  
-The script will also use SignCode to add digital signatures to the created binaries and installers. +The script will also use `osslsigncode` to add digital signatures to the created binaries and installers. 
-Either setup a working SignCode installation or comment out the signing calls at the end of the script.+Either adjust the paths to the certifcate at the beginning of the script or leave them empty to skip digital signing.
  
-Finally, start a Windows console session (Start->Run->cmd.exe) and execute:+Finally, run the script:
  
-  cd c:\msys64\home\<username>\geany +    python3 ~/geany-release.py
-  python ..\geany-release.py+
  
 This will strip and sign all binaries (geany.exe and various .dll files) and This will strip and sign all binaries (geany.exe and various .dll files) and
 also convert documentation text files to CRLF format. also convert documentation text files to CRLF format.
-At the end, you should get two installer executables in ~/geany. +At the end, you should get an installer executable in `$DESTINATON`.
  
 ==== Geany-Plugins ==== ==== Geany-Plugins ====
Line 194: Line 179:
 Build instructions to build Geany-Plugins in order to create a Windows installer (within MSYS2 shell): Build instructions to build Geany-Plugins in order to create a Windows installer (within MSYS2 shell):
  
-  DESTINATON=/h +    DESTINATON=$HOME/geany_build 
-  VERSION="1.28+    VERSION="1.39
-  cd ~/geany-plugins +    cd ~/geany-plugins-master 
-  make distclean +    make distclean 
-  ./autogen.sh +    ./autogen.sh 
-  ./configure --prefix=${DESTINATON}/geany_install --with-geany-libdir=${DESTINATON}/geany_install/lib --disable-silent-rules +    mkdir _build 
-  make -j 2 +    cd _build 
-  make install +    ../configure --prefix=${DESTINATON}/build/geany --with-geany-libdir=${DESTINATON}/build/geany/lib --disable-silent-rules 
-  make DESTDIR=${DESTINATON}/geany-plugins install +    make -j 2 
-  rsync -a --delete ${DESTINATON}/geany-plugins/h/geany_install/ ~/geany-plugins/geany-plugins-${VERSION}/+    make DESTDIR=${DESTINATON}/build/geany-plugins install 
 +    rsync -a --delete ${DESTINATON}/build/geany-plugins/${DESTINATON}/build/geany/ $DESTINATON/release/geany-plugins-orig
  
-For the following steps, a little Python is necessary to automate the further installer creation.+For the following steps, a little Python script is necessary to automate the further installer creation.
 The script can be downloaded here: {{:howtos:win32:geany-plugins-release.py.txt|}} The script can be downloaded here: {{:howtos:win32:geany-plugins-release.py.txt|}}
 Open the script in your editor of choice and change paths at the beginning of the script as needed. Open the script in your editor of choice and change paths at the beginning of the script as needed.
  
-The script will also use SignCode to add digital signatures to the created binaries and installers. +The script will also use `osslsigncode` to add digital signatures to the created binaries and installers. 
-Either setup a working SignCode installation or comment out the signing calls at the end of the script.+Either adjust the paths to the certifcate at the beginning of the script or leave them empty to skip digital signing.
  
-Finally, start a Windows console session (Start->Run->cmd.exe) and execute:+Finally, run the script:
  
-  cd c:\msys64\home\<username>\geany-plugins +    python3 ~/geany-plugins-release.py
-  python ..\geany-plugins-release.py+
  
 This will strip and sign all binaries (various .dll files) and This will strip and sign all binaries (various .dll files) and
 also convert documentation text files to CRLF format. also convert documentation text files to CRLF format.
-At the end, you should get an installer executable in ~/geany-plugins. +At the end, you should get an installer executable in `$DESTINATON`.
- +
- +
-===== Automated build via MAKEPKG file =====+
  
-TODO+{{tag>howto windows msys2 build build-from-source}}
  
-{{tag>howto win32 build}} 
Print/export