Gramps for Windows with MSYS2
Warning Do not open your existing databases with the master branch, it might destroy your data, and will make it impossible to use the data in the stable version 52. To try it out, export your database to a gramps xml file, eg |
How to use MSYS2 to run latest Gramps development version from source in 64bit Windows.
In similar way you can build the 32bit version (2020-05-17 - 32-bit MSYS2 no longer actively supported)
Contents
Install MSYS2
Installation restrictions MSYS2 can't be installed on FAT* formatted disk partitions. |
From the MSYS2 home page https://www.msys2.org/ download the latest MSYS2 64bit installer( msys2-x86_64-YYYYMMDD.exe ) from https://repo.msys2.org/distrib/x86_64/ and run it.
Install it in short path like C:\msys64
At the end of install select to run mingw64 shell eg: use the MSYS2 MinGW 64-bit shortcut.
Update MSYS2
First keep running the following command(multiple times) until it has updated the list of packages and updated all core packages nothing else to do:
pacman -Syuu
If core packages are updated you must close the mingw64 shell (forcefully with close button, not just typing exit on it) and then restart the mingw64 shell from the shortcut. Following a core update, run the update command again to update non-core packages.
Install Gramps dependencies
Start mingw64 shell and use pacman package manager to download and install Gramps dependencies
pacman -S mingw-w64-x86_64-python3-bsddb3 mingw-w64-x86_64-gexiv2 mingw-w64-x86_64-ghostscript mingw-w64-x86_64-python3-cairo mingw-w64-x86_64-python3-gobject mingw-w64-x86_64-python3-icu mingw-w64-x86_64-iso-codes mingw-w64-x86_64-hunspell mingw-w64-x86_64-hunspell-en mingw-w64-x86_64-enchant
To handle the following warning No intltool or version < 0.25.0, build_intl is aborting during the build later, install:
pacman -S perl-XML-Parser pacman -S intltool
You will also need the following to run the test:
pacman -S mingw-w64-x86_64-python3-lxml pacman -S mingw-w64-x86_64-python3-jsonschema
Some additional (optional) items needed for certain addons.
pacman -S mingw-w64-x86_64-gtkspell3 pacman -S mingw-w64-x86_64-geocode-glib pacman -S mingw-w64-x86_64-python3-pillow
Install Git and Gcc.
pacman -S msys/git pacman -S msys/gcc
The Genealogical Symbols preferences tab needs Python Fontconfig version 0.5 so we need to build it. From a suitable build directory (I use ~/build)
git clone https://github.com/Vayn/python-fontconfig.git cd python-fontconfig/ git checkout e1b1751f52167184e0c python3 setup.py install
Install Graphviz. To run the Graph View addon also install goocanvas. (If you run into a problem try the alternate instructions to install Graphviz)
pacman -S mingw-w64-x86_64-graphviz pacman -S mingw-w64-x86_64-goocanvas
Install osmgpsmap for the Geography Views with the following command:
pacman -S mingw-w64-x86_64-osm-gps-map
Install Gramps
Prepare source
Create directory to store Gramps source in and go to it
mkdir ~/grampsdev cd ~/grampsdev
Download source
Download Gramps master branch from source repository
git init git remote add -t master -f origin https://github.com/gramps-project/gramps.git git checkout master
Check which Gramps version is used
git describe
it should return something like:
v5.0.0-alpha1-1024-g0919763f1
Setup source
Before using Gramps you must set-it up.
You just use setup build command not install one
python3 setup.py build
Run Gramps
Start mingw64 shell and go to directory where Gramps source reside
cd ~/grampsdev
Use python3 to start Gramps
To check gramps version use "v" flag
python3 Gramps.py -v
It should return something like:
Gramps Settings: ---------------- python : 3.5.3 gramps : 5.0.0-alpha1-0919763f1 gtk++ : 3.22.9 pygobject : 3.22.0 pango : 1.40.3 cairo : 1.15.4 pycairo : 1.1.10 osmgpsmap : 1.0 GExiv2 : 0.10 ICU : 57.1 PyICU : 1.9.3 o.s. : win32 Non-python dependencies: ------------------------ Graphviz : Graphviz not in system PATH Ghostscr. : 9.20
Run Gramps
python3 Gramps.py
Building and updating MSYS2/MinGW packages
Install build tools
pacman -S --needed --noconfirm base-devel mingw-w64-x86_64-toolchain
MINGW-packages recipes are on GitHub so you can use git to clone it. If instead you want to access recipe one by one you can download it with Subversion so install it first
pacman -S subversion
We need a place to download and build from source code so we will create folder called "build" inside our home folder
mkdir ~/build
To prevent pacman to upgrade packages we rebuilt for our needs we can assign them to group gramps_fixed and add them to IgnoreGroup list. Open in text editor file etc/pacman.conf (C:\MSYS2\etc\pacman.conf) and add line IgnoreGroup = gramps_fixed to options section.
[options] IgnoreGroup = gramps_fixed
db
GrampsAIO uses Oracle Berkeley DB version 6.0.30 but MSYS2 have it at version 6.0.19 and most probably never update it to a newer version.
Gramps will ask permission to downgrade database version at import of any family tree created with GrampsAIO bundle. To prevent that build right version of DB.
Hard way (it can take some time to finish)
cd ~/build svn checkout https://github.com/bpisoj/MINGW-packages/branches/gramps5/mingw-w64-db cd mingw-w64-db MINGW_INSTALLS=mingw64 makepkg-mingw -sLf pacman -U mingw-w64-x86_64-db-6.0.30-1-any.pkg.tar.zst
The easy way doesn't work anymore! This is because the recent versions of Python have changed and we have to rebuild.
Start msys2 shell and type (easy way):
cd ~/build wget https://github.com/bpisoj/MINGW-packages/releases/download/v5.0/mingw-w64-x86_64-db-6.0.30-1-any.pkg.tar.xz pacman -U mingw-w64-x86_64-db-6.0.30-1-any.pkg.tar.xz
bsddb3
As db version is changed then we have to rebuild Python bindings for Oracle Berkeley DB
From msys2 shell (easy way):
cd ~/build wget https://github.com/bpisoj/MINGW-packages/releases/download/v5.0/mingw-w64-x86_64-python3-bsddb3-6.1.0-3.1-any.pkg.tar.xz pacman -U mingw-w64-x86_64-python3-bsddb3-6.1.0-3.1-any.pkg.tar.xz
Or hard way:
cd ~/build svn checkout https://github.com/bpisoj/MINGW-packages/branches/gramps5/mingw-w64-python-bsddb3 cd mingw-w64-python-bsddb3 MINGW_INSTALLS=mingw64 makepkg-mingw -sLf pacman -U mingw-w64-x86_64-python3-bsddb3-6.1.0-3.1-any.pkg.tar.xz
gtk3
GTK+ since version 3.20 drag-and-drop code has been rearchitected to move the drag cancel animation and most input handling into GDK, thereby dropping most of the platform-dependent code out of GTK (MSYS2 version of GTK is currently 3.22.10). This change is not yet present in Windows port of code so we have to use older GTK version 3.18 where it still works.
Latest in gtk-3.18 branch is gtk-3.18.9 (previous versions of this branch have working dnd but have other bugs) so we build that.
- Easy way:
cd ~/build wget https://github.com/bpisoj/MINGW-packages/releases/download/v5.0/mingw-w64-x86_64-gtk3-3.18.9-1-any.pkg.tar.xz pacman -U mingw-w64-x86_64-gtk3-3.18.9-1-any.pkg.tar.xz
- Hard Way:
cd ~/build svn checkout https://github.com/bpisoj/MINGW-packages/branches/gramps5/mingw-w64-gtk3 cd mingw-w64-gtk3 MINGW_INSTALLS=mingw64 makepkg-mingw -sLf pacman -U mingw-w64-x86_64-gtk3-3.18.9-1-any.pkg.tar.xz
graphviz
As of 2019.09.17 package mingw-w64-osm-gps-map is available so all you have to do is:
pacman -S mingw-w64-x86_64-graphviz
Previously Graphviz was in MSYS2 MINGW-packages git repository but was not build-able at that time (2017-03-26) so it is not available via pacman. We build latest version from Graphviz git repository by manually patching code in process so we can't yet provide PKGBUILD
- Easy way
As we use simple archive not real packages we need to make care that dependencies are satisfied
pacman -S --needed mingw-w64-x86_64-cairo mingw-w64-x86_64-devil mingw-w64-x86_64-expat mingw-w64-x86_64-freetype mingw-w64-x86_64-glib2 mingw-w64-x86_64-gtk2 mingw-w64-x86_64-gtkglext mingw-w64-x86_64-fontconfig mingw-w64-x86_64-freeglut mingw-w64-x86_64-libglade mingw-w64-x86_64-libgd mingw-w64-x86_64-libpng mingw-w64-x86_64-libsystre mingw-w64-x86_64-pango mingw-w64-x86_64-poppler mingw-w64-x86_64-zlib mingw-w64-x86_64-libtool
Next we download prebuilt archive and extract it
cd ~/build wget https://github.com/bpisoj/MINGW-packages/releases/download/v5.0/win64_graphviz_20170323.1842.tar.xz tar xfv win64_graphviz_20170323.1842.tar.xz -C /
After successful install we first need to configure it (from mingw64 shell)
dot -c
If no error is displayed everything is working fine and Graphviz registered their plugins. We can check version with
dot -V dot - graphviz version 2.41.20170323.1842 (20170323.1842)
winpty dot -v dot - graphviz version 2.41.20170323.1842 (20170323.1842) libdir = "C:\MSYS2\mingw64\bin" Activated plugin library: libgvplugin_dot_layout-6.dll Using layout: dot:dot_layout Activated plugin library: libgvplugin_core-6.dll Using render: dot:core Using device: dot:dot:core The plugin configuration file: C:\MSYS2\mingw64\bin\config6 was successfully loaded. render : cairo dot fig gd map pic pov ps svg tk vml vrml xdot layout : circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi textlayout : textlayout device : bmp canon cmap cmapx cmapx_np dot eps fig gd gd2 gif gv ico imap imap_np ismap jpe jpeg jpg pdf pic plain plain-ext png pov ps ps2 svg svgz tga tif tiff tk vml vmlz vrml wbmp xdot xdot1.2 xdot1.4 loadimage : (lib) bmp eps gd gd2 gif ico jpe jpeg jpg pdf png ps svg xbm
- Hard way (TODO)
pygraphviz
Needed for NetworkChart report (Third-party addon)
- Easy way:
cd ~/build wget https://github.com/bpisoj/MINGW-packages/releases/download/v5.0/mingw-w64-x86_64-python3-pygraphviz-1.4rc1-1-any.pkg.tar.xz pacman -U mingw-w64-x86_64-python3-pygraphviz-1.4rc1-1-any.pkg.tar.xz
- Hard way
download https://gramps-project.org/wiki/images/2/2b/Pygraphviz-1.4rc1.zip (source here)
Unzip it into ~/build/pygraphviz-1.4rc1/
cd ~/build/pygraphviz-1.4rc1 MINGW_INSTALLS=mingw64 makepkg-mingw -sLf pacman -U mingw-w64-x86_64-python3-pygraphviz-1.4rc1-0.0-any.pkg.tar.xz
For NetworkChart report to work install also networkx package
pacman -S mingw-w64-x86_64-python3-networkx
For NetworkChart report to work install also pydotplus
pip3 install pydotplus
osmgpsmap
As of 2019.02.08 package mingw-w64-osm-gps-map is available so all you have to do is
pacman -S mingw-w64-x86_64-osm-gps-map
Start msys2 shell (always build package recipes from msys2 shell)
Hard way:
cd ~/build svn checkout https://github.com/Alexpux/MINGW-packages/trunk/mingw-w64-osm-gps-map cd mingw-w64-osm-gps-map MINGW_INSTALLS=mingw64 makepkg-mingw -sLf pacman -U mingw-w64-x86_64-osm-gps-map-1.1.0-2-any.pkg.tar.xz
Issue
Graphviz
- No Graphviz see: MSYS2:Package request: graphviz
- Marked as WIP see: https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-graphviz
Alternate method using Windows version of Graphviz
Tested alternate method to use Windows version of Graphviz[1]
Download the current GraphViz ZIP archive from https://www.graphviz.org/download/ and extract it to C:\graphviz, so that it directly contains the directories bin, lib, share and so on.
From the msys2 prompt type:
echo 'export PATH=/c/graphviz/bin:$PATH' >> ~/.bashrc source ~/.bashrc
Then type:
python3 Gramps.py -v
and Graphviz will be listed.
Non-python dependencies: ------------------------ Graphviz : 2.38
Install Python pip
To install a working version of pip use the following steps:
mkdir ~/scripts cd ~/scripts curl -O 'https://bootstrap.pypa.io/get-pip.py' ./get-pip.py
Test that it works:
pip3 --version
If that succeeds you can now remove the installation script if wanted:
rm get-pip.py
Keep your GRAMPSHOME separate
To keep your test family trees separate from your personal family trees you may want to use your MSYS2 home directory which you can set from mingw64 shell either:
On each run like:
GRAMPSHOME=~ python3 Gramps.py
If you want it persistent:
echo 'export GRAMPSHOME=~' >> ~/.profile source ~/.profile