Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
howtos:win32:msys2 [2015/07/12 11:10] – add tags enrico | howtos: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, | |
- | 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, | + | In fact, it's so good it should become the default method of compiling Geany on Windows. |
See http:// | See http:// | ||
- | 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 | + | ===== Initial |
- | Download the installer from [[http:// | + | Download the installer from https:// |
+ | 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, | + | After installation, |
- | '' | + | `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 | + | |
+ | Now exit and re-open the MSYS2 environment and perform a system update: | ||
+ | |||
+ | | ||
+ | |||
+ | Restart msys2 once more, in case `pacman -Su` updated environment related packages. | ||
+ | |||
+ | Finally, install the dependencies needed by Geany: | ||
+ | |||
+ | # toolchain | ||
+ | pacman -S mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb | ||
+ | # make and Autotools | ||
+ | pacman -S make mingw-w64-x86_64-libtool mingw-w64-x86_64-pkgconf autoconf automake gettext gettext-devel | ||
+ | # gtk family | ||
+ | pacman -S mingw-w64-x86_64-gtk3 | ||
+ | # for building html docs | ||
+ | pacman -S mingw-w64-x86_64-python3 mingw-w64-x86_64-python-lxml | ||
+ | # and if you fancy building from git | ||
+ | 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`, | ||
+ | |||
+ | At last, you might want to add `C: | ||
+ | |||
+ | In case you want also compile the combined Geany-Plugins collection, you need the following dependencies: | ||
+ | |||
+ | # geany-plugins dependencies | ||
+ | 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 | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ===== Geany Compilation ===== | ||
+ | |||
+ | You can either clone the source code from the GIT repository or download a release tarball and unpack it. | ||
+ | |||
+ | cd | ||
+ | curl -L -o geany-master.zip https:// | ||
+ | unzip geany-master.zip | ||
+ | cd geany-master | ||
+ | # autogen.sh is not needed for release tarballs! | ||
+ | NOCONFIGURE=1 ./ | ||
+ | # configure and make take a while, don't panic | ||
+ | ./configure --prefix=/ | ||
+ | make -j2 | ||
+ | make install | ||
+ | |||
+ | After that, you can run Geany either through MSYS2 shell (`/ | ||
+ | |||
+ | The first run should look like this, on GTK+ 3.18.6 {{: | ||
+ | |||
+ | ===== Geany-Plugins Compilation ===== | ||
+ | |||
+ | You can either clone the source code from the GIT repository or download a release tarball and unpack it. | ||
+ | |||
+ | cd | ||
+ | curl -L -o geany-plugins-master.zip https:// | ||
+ | unzip geany-plugins-master.zip | ||
+ | cd geany-plugins-master | ||
+ | # autogen.sh is not needed for release tarballs! | ||
+ | NOCONFIGURE=1 ./ | ||
+ | # configure and make take a while, don't panic | ||
+ | ./configure --prefix=/ | ||
+ | make -j2 | ||
+ | make install | ||
+ | |||
+ | |||
+ | ===== Creating a GTK runtime bundle ===== | ||
+ | |||
+ | In order to run Geany and/or create an installer for distribution, | ||
+ | There is simple script which downloads all necessary packages and unpack them in an automated way. | ||
+ | |||
+ | After you have run the scripts as described below, you should copy the resulting files and directories | ||
+ | all into your Geany installation directory if you want to use it directly for your own Geany | ||
+ | installation. | ||
+ | In case you want to create an installer, leave the directories as they are and read on. | ||
+ | |||
+ | ==== Geany ==== | ||
+ | |||
+ | The script can be found in `scripts/ | ||
+ | |||
+ | To run the script, simply create a new directory where the GTK runtime environment should be | ||
+ | unpacked and change into this directory. | ||
+ | Then call the script and wait a bit. It will download all necessary MSYS2 packages and extract them. | ||
+ | |||
+ | cd | ||
+ | mkdir -p ~/ | ||
+ | cd ~/ | ||
+ | bash ~/ | ||
+ | |||
+ | There are a few command line options for this script. Run it with " | ||
+ | The most important option is " | ||
+ | |||
+ | ==== Geany-Plugins ==== | ||
+ | |||
+ | For Geany-Plugins, | ||
+ | The script for Geany-Plugins is available `build/ | ||
+ | |||
+ | cd | ||
+ | mkdir -p ~/ | ||
+ | cd ~/ | ||
+ | bash ~/ | ||
+ | |||
+ | ===== Creating an installer / Making a release ===== | ||
+ | |||
+ | When creating releases, you always should make sure your GIT working tree is clean | ||
+ | and maybe temporarily rename " | ||
+ | to build a debug release. | ||
+ | Alernatively, | ||
+ | resp. Geany-Plugins. | ||
+ | |||
+ | ==== Geany ==== | ||
+ | |||
+ | Build instructions to build Geany in order to create a Windows installer (within MSYS2 shell): | ||
- | Restart msys2 once more, in case '' | + | DESTINATON=$HOME/ |
+ | VERSION=" | ||
+ | cd ~/geany-master | ||
+ | make distclean | ||
+ | | ||
+ | mkdir _build | ||
+ | cd _build | ||
+ | ../ | ||
+ | make -j 2 | ||
+ | make install | ||
+ | rm -rf $DESTINATON/ | ||
+ | rsync -a --delete ${DESTINATON}/ | ||
- | Finally, install the dependencies needed | + | You can use any other location as installation target |
+ | Then we compile | ||
- | # toolchain | + | The following actually creates |
- | pacman -S pacman -S mingw-w64-i686-binutils mingw-w64-i686-gcc mingw-w64-i686-gdb | + | |
- | # make and Autotools | + | |
- | pacman -S make pkgconfig autoconf automake libtool intltool | + | |
- | # gtk familiy | + | |
- | pacman -S mingw-w64-i686-gtk2 mingw-w64-i686-gtk3 | + | |
- | # for building html docs | + | |
- | pacman -S mingw-w64-i686-python2 mingw-w64-i686-python2-docutils | + | |
- | # and if you fancy building from git | + | |
- | pacman -S git | + | |
- | + | ||
- | At last, you want to add '' | + | |
- | ===== GTK+3 compilation ===== | + | For the following steps, a little Python script is necessary to automate the further installer creation. |
+ | The script can be downloaded here: {{: | ||
+ | Open the script in your editor of choice and change paths at the beginning of the script as needed. | ||
- | This is effectively | + | The script will also use `osslsigncode` to add digital signatures to the created binaries and installers. |
+ | Either adjust the paths to the certifcate at the beginning of the script or leave them empty to skip digital signing. | ||
- | curl -L -o geany-master.zip https:// | + | Finally, run the script: |
- | unzip geany-master.zip | + | |
- | cd geany-master | + | |
- | # autogen.sh is not needed for tarballs! | + | |
- | NOCONFIGURE=1 ./ | + | |
- | # configure and make take a while, don't panic | + | |
- | ./configure --enable-gtk3 --prefix=/ | + | |
- | make -j2 | + | |
- | make install | + | |
- | After that, you can run Geany either through msys2 shell (''/ | + | python3 ~/geany-release.py |
- | The first run should look like this, on GTK+ 3.16.3\\ | + | This will strip and sign all binaries (geany.exe and various |
- | {{: | + | also convert documentation text files to CRLF format. |
+ | At the end, you should get an installer executable in `$DESTINATON`. | ||
- | ===== GTK+2 compilation ===== | + | ==== Geany-Plugins |
- | This is effectively the same procedure as cross-compiling on Linux. For now (until 1.25), a git clone/ | + | Build instructions to build Geany-Plugins in order to create a Windows installer |
- | curl -L -o geany-master.zip https://github.com/ | + | DESTINATON=$HOME/geany_build |
- | unzip geany-master.zip | + | |
- | cd geany-master | + | cd ~/geany-plugins-master |
- | # autogen.sh is not needed for tarballs! | + | make distclean |
- | | + | ./ |
- | # configure and make take a while, don't panic | + | mkdir _build |
- | ./configure --prefix=/c/geany | + | cd _build |
- | make -j2 | + | ../configure --prefix=${DESTINATON}/build/ |
- | make install | + | make -j 2 |
+ | make DESTDIR=${DESTINATON}/ | ||
+ | rsync -a --delete ${DESTINATON}/ | ||
- | After that, you can run Geany either through msys2 shell (''/ | + | For the following steps, a little Python script is necessary to automate the further installer creation. |
+ | The script | ||
+ | Open the script in your editor of choice | ||
- | The first run should look like this, on GTK+ 2.24.27 \\ | + | The script will also use `osslsigncode` to add digital signatures to the created binaries and installers. |
- | {{: | + | Either adjust the paths to the certifcate at the beginning of the script or leave them empty to skip digital signing. |
- | ===== Creating an installer ===== | + | Finally, run the script: |
- | TODO | + | python3 ~/ |
- | ===== Automated build via MAKEPKG file ===== | + | This will strip and sign all binaries (various .dll files) and |
+ | also convert documentation text files to CRLF format. | ||
+ | At the end, you should get an installer executable in `$DESTINATON`. | ||
- | TODO | + | {{tag> |
- | {{tag> |