Running a development version of Gramps
Contents
Preparation
- These instructions assume you have installed a recent version of Ubuntu, or Linux Mint (which is Ubuntu based).
- Install a text editor if you plan on modifying the Gramps source. You can use any text editor such as gedit, kate, or sourcenav (sudo apt-get install sourcenav), erik4, SPE, or Eclipse with the python plugin. Instructions on installing and configuring Eclipse for Gramps development. Follow the programming guidelines for Gramps.
Gramps 6.0, a maintenance branch and Python virtual environment
Note The steps in this section have been tested with fresh Debian 13 |
Suppose that you'd like to install Gramps to fix some bug in the current release. According to Committing policies you must do the changes in the most recent maintenance branch. You clone Gramps source code repository and switch to the maintenance branch as described here into ~/Gramps. Then you install the software as follows:
1. Install Debian packages:
sudo apt install python3-venv pkg-config libgtk-3-dev python3-dev libgirepository-2.0-dev gettext gir1.2-gexiv2
2. Create Python virtual environment:
python3 -m venv ~/.venvs/gramps source ~/.venvs/gramps/bin/activate python3 -m pip install pip --upgrade
3. Install Python packages into the created virtual environment :
python3 -m pip install setuptools # required to invoke the custom 'build' command - see below python3 -m pip install pycairo pygobject pyicu # optional but recommended packages
4. Install Gramps in the [Development mode] into the created virtual environment:
cd ~/Gramps python3 setup.py build # a workaround to invoke the custom 'build' command in setup.py python3 -m pip install -e .
Now everything is ready to run Gramps from source. Open new terminal window and enter the following commands:
source ~/.venvs/gramps/bin/activate python3 -m gramps
Changes made in the Python source code will immediately take place without requiring a new installation.
Gramps 4.0 and the master branch
Note The steps in this section have been tested with Ubuntu 14.04 |
For the internationalization code to work, you need to have the translation tools.
On Debian, just run (as root) - (Only if Debian installs Gramps 4.0+ as Gramps version!):
apt-get build-dep gramps
On Fedora 8 - 10 (Fedora is up to version 17 now so does this still apply?), you will need:
yum install intltool gnome-doc-utils gettext git-core rcs
Build
Now go into the top-level directory and type (earlier versions of Gramps used python 2 and from Gramps 4.2.x and newer only python 3 so substitute as required eg: python3):
python setup.py build
|
Warning Do not install the development version if you don't know how to version python modules. That is, do not type sudo python setup.py install. |
Run
Option 1: run from source repo
From Gramps 4.2.x and master in the top-level directory you only need to type (this assumes your default python is python3):
python Gramps.py
Option 2: run from source repo
For Gramps 4.1.x and earlier (You can use either python or python3 substitute as necessary ):
Here, we use the code in working directory to run Gramps. This means that compiled python files will be stored there. This is not ideal, but the easiest way to develop Gramps, as changes are immediately picked up by the code.
Copy the const.py file created in build to your source directory if you want to use your source directory to work with Gramps:
cp build/lib.linux-$(uname -m)-2.7/gramps/gen/const.py gramps/gen/const.py python Gramps.py
Note: the lib.linux-$(uname -m)-2.7 folder name vary depending on your system (i686 or x86_64).
That is it. If you installed some dependencies of Gramps in non-default positions, you need to indicate with PYTHONPATH where they can be found, and with LD_LIBRARY_PATH where link libraries can be found. Eg, if you install GTK and spell checking from source too, you will need something like:
PYTHONPATH=/usr/local/lib/python2.7/site-packages/ LD_LIBRARY_PATH=/usr/local/lib python Gramps.py
Option 3: use the build code
Here, we use the code build in trunk/build directory to run Gramps. For compiled programs this is the only way, but for Gramps nothing is compiled. It is not bad however to keep your code separated from your execution, as deleting the build directory is easy. After a code change in your source, you then need to run however python setup.py again to update the build direcotry. To run Gramps from build, do
cd trunk/build/lib.linux-$(uname -m)-2.7/ python -c 'from gramps.grampsapp import main; main()'
Again, it might be needed to set with PYTHONPATH where dependencies can be found, and with LD_LIBRARY_PATH link libraries, see option 1.
If you point your PYTHONPATH to the build directory, you can actually run Gramps from a random directory. Like this:
cd PYTHONPATH=~/gramps-trunk/build/lib.linux-$(uname -m)-2.7/ python -c 'from gramps.grampsapp import main; main()'
So, more general:
cd PYTHONPATH=~/gramps-trunk/build/lib.linux-$(uname -m)-2.7/:/usr/local/lib/python2.7/site-packages/ LD_LIBRARY_PATH=/usr/local/lib python -c 'from gramps.grampsapp import main; main()'
If the build directory is in your PYTHONPATH, you can also just execute the grampsapp.py module. So this will work too:
cd ~/gramps-trunk/build/lib.linux-$(uname -m)-2.7/gramps PYTHONPATH=~/gramps-trunk/build/lib.linux-$(uname -m)-2.7/ python grampsapp.py
or again more generally
PYTHONPATH=~/gramps-trunk/build/lib.linux-$(uname -m)-2.7/:/usr/local/lib/python2.7/site-packages/ LD_LIBRARY_PATH=/usr/local/lib python grampsapp.py
Note using grampsapp.py works all imports in Gramps have been converted to relative or absolute imports. This conversion was finished at the end of 2012. |
Known Problems Some problems are due to the migration from GTK2 to GTK3: list of known problems |
Gramps 3.4 and before
Note The steps in this section have been tested with Ubuntu 7.04, 7.10, 8.04, 10.04, 10.10 and 12.10 and Mint 14 |
- Install the tools we will need:
sudo apt-get install build-essential gnome-common libglib2.0-dev git-core gettext
Build
- Get ready to build Gramps:
The old versions of Gramps use autotools, so you need to run:
./autogen.sh
- Build Gramps:
make
Run
- Run Gramps:
python src/gramps.py
At this point, any time you want to update to the latest version of Gramps, simply run:
git pull --rebase python src/gramps.py
If some of the Gramps constants have changed and you obtain an error in const.py, rerun the commands autogen.sh and make.
