Changes

Jump to: navigation, search

Gramps for Windows with MSYS2

10,729 bytes added, 01:43, 24 August 2023
Run second update after core packages are updated
{{man warn|1=Warning|2=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 {{stable_branch}}. To try it out, export your database to a gramps xml file, eg <code>test_master.gramps</code>, create a new family tree in the master branch, and import this xml file.<br>Alternatively you can [[Gramps_for_Windows_with_MSYS2#Keep_your_GRAMPSHOME_separate|Keep your GRAMPSHOME separate]]}}
 
How to use MSYS2 to run latest Gramps development version from source in 64bit Windows.
In similar way you can build the 32bit version([https://www.msys2.org/news/#2020-05-17-32-bit-msys2-no-longer-actively-supported 2020-05-17 - 32-bit MSYS2 no longer actively supported])
==Install MSYS2==
{{man note|Installation restrictions|MSYS2 can't be installed on [https://en.wikipedia.org/wiki/File_Allocation_Table FAT* formatted disk partitions].<br>Current MSYS2 can't be installed on Windows XP anymore.}}
From the MSYS2 home page httphttps://www.msys2.org / download the latest MSYS2 64bit installer( msys2-x86_64-YYYYMMDD.exe ) from [httphttps://repo.msys2.org/distrib/x86_64/https://repo.msys2-.org/distrib/x86_64-20161025.exe MSYS2 64bit/] installer and run it.
Install it in short path like <code>C:\MSYS2msys64</code>
At the end of install select to run mingw64 shell eg: use the '''MSYS2 MinGW 64-bit''' shortcut.
</pre>
If core packages are updated you must close the mingw64 shell (forcefully with close button, not just typing exit on it) and then restart itthe mingw64 shell from the shortcut. Following a core update, run the update command again to update non-core packages.
===Install Gramps dependencies===
<pre>
pacman -S mingw-w64-x86_64-python3-bsddb3 mingw-w64-x86_64-gexiv2 mingw-w64-x86_64-osmgpsmap-git 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
</pre>
===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:<pre>pacman -S mingw-w64-x86_64-python3-lxmlpacman -S mingw-w64-x86_64-python3-jsonschema</pre>Some additional (optional) items needed for certain addons.<pre>pacman -S mingw-w64-x86_64-gtkspell3pacman -S mingw-w64-x86_64-geocode-glibpacman -S mingw-w64-x86_64-python3-pillow</pre> Install Git===and Gcc.
<pre>
pacman -S msys/git
pacman -S msys/gcc
</pre>
 
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)
<pre>
git clone https://github.com/Vayn/python-fontconfig.git
cd python-fontconfig/
git checkout e1b1751f52167184e0c
python3 setup.py install
</pre>
 
Install Graphviz. To run the Graph View addon also install goocanvas.
(If you run into a problem try the alternate instructions to install [[Gramps_for_Windows_with_MSYS2#Issue|Graphviz]])
<pre>
pacman -S mingw-w64-x86_64-graphviz
pacman -S mingw-w64-x86_64-goocanvas
</pre>
 
Install osmgpsmap for the Geography Views with the following command:
<pre>
pacman -S mingw-w64-x86_64-osm-gps-map
</pre>
<pre>
python3 Gramps.py
</pre>
==Building and updating MSYS2/MinGW packages==
===Install build tools===
<pre>
pacman -S --needed --noconfirm base-devel mingw-w64-x86_64-toolchain
</pre>
[https://github.com/Alexpux/MINGW-packages 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
<pre>
pacman -S subversion
</pre>
We need a place to download and build from source code so we will create folder called "build" inside our home folder
<pre>
mkdir ~/build
</pre>
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.
<pre>
[options]
IgnoreGroup = gramps_fixed
</pre>
===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.
<br>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.
<br>''Hard way'' (it can take some time to finish)
<pre>
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
</pre>
'''The easy way doesn't work anymore! This is because the recent versions of Python have changed and we have to rebuild.'''
<br>Start ''msys2 shell'' and type (easy way):
<pre>
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
</pre>
 
===bsddb3===
As db version is changed then we have to rebuild Python bindings for Oracle Berkeley DB
<br>From ''msys2 shell'' (easy way):
<pre>
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
</pre>
Or hard way:
<pre>
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
</pre>
 
===gtk3===
[https://www.gtk.org/ 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.
<br>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:
<pre>
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
</pre>
* Hard Way:
<pre>
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
</pre>
 
===graphviz===
 
As of 2019.09.17 package mingw-w64-osm-gps-map is available so all you have to do is:
 
<pre>
pacman -S mingw-w64-x86_64-graphviz
</pre>
 
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
<pre>
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
</pre>
Next we download prebuilt archive and extract it
<pre>
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 /
</pre>
After successful install we first need to configure it (from mingw64 shell)
<pre>
dot -c
</pre>
If no error is displayed everything is working fine and Graphviz registered their plugins.
We can check version with
<pre>
dot -V
 
dot - graphviz version 2.41.20170323.1842 (20170323.1842)
</pre>
<pre>
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
</pre>
* Hard way (TODO)
====pygraphviz====
Needed for NetworkChart report (Third-party addon)
* Easy way:
<pre>
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
</pre>
* Hard way
download https://gramps-project.org/wiki/images/2/2b/Pygraphviz-1.4rc1.zip [[:File:Pygraphviz-1.4rc1.zip|(source here)]]
 
Unzip it into <code>~/build/pygraphviz-1.4rc1/</code>
<pre>
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
</pre>
For NetworkChart report to work install also networkx package
<pre>
pacman -S mingw-w64-x86_64-python3-networkx
</pre>
For NetworkChart report to work install also pydotplus
<pre>
pip3 install pydotplus
</pre>
 
===osmgpsmap===
As of 2019.02.08 package mingw-w64-osm-gps-map is available so all you have to do is
<pre>
pacman -S mingw-w64-x86_64-osm-gps-map
</pre>
<br>Start '''msys2 shell''' (always build package recipes from msys2 shell)
Hard way:
<pre>
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
</pre>
==Issue==
===Graphviz===
* No Graphviz see: [https://github.com/Alexpux/MINGW-packages/issues/737 MSYS2:Package request: graphviz]
** Marked as WIP see: https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-graphviz
;Untested ====Alternate method using Windows version of Graphviz====Tested alternate method to use Windows version of Graphviz[http://felsin9.de/nnis/ghc-vis/installing-windows/]{{man warn|Warning it is not advised for users to mix various libraries like the following it is a direct way to dll hell.|This way Gramps will use graphviz libs instead of MSYS2 ones and they are older and in much way incompatible with rest of Gramps dependencies.<br> until Graphviz becomes available from MSYS2 directly this is an alternate method.}} <i>Download the current GraphViz ZIP archive from httphttps://www.graphviz.org/Download_windows.php download/ and extract it to C:\graphviz, so that it directly contains the directories bin, lib, share and so on.</i>
From the msys2 prompt type:
python3 Gramps.py -v
to see if and Graphviz is will be listed?. <pre>Non-python dependencies:------------------------ Graphviz : 2.38</pre> ==Install Python pip==To install a working version of pip use the following steps: <pre> mkdir ~/scriptscd ~/scriptscurl -O 'https://bootstrap.pypa.io/get-pip.py'./get-pip.py</pre>  Test that it works:  pip3 --version If that succeeds you can now remove the installation script if wanted: rm get-pip.py ==Keep your [[Gramps_{{man version}}_Wiki_Manual_-_Command_Line#GRAMPSHOME|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
==See also==
* [[Running a development version of Gramps]]
* [https://sourceforge.net/p/gramps/mailman/message/35346200/ Gramps on WSL (Win10/Ubuntu 14.04/VcXsvr)]
[[Category:GEPS|M]]
[[Category:Developers/General]]
36
edits

Navigation menu