From Gramps
Revision as of 11:04, 12 February 2014 by Romjerome (talk | contribs) (webapp package)
Jump to: navigation, search

For version 4.0 and newer

Actual .debs can be found in

Gramps 4 moves to setuptool/distutils installer.


  • debian stuff
sudo apt-get install devscripts dpkg-dev fakeroot debhelper libgconf2-dev
  • stdeb, which produces Debian source packages from Python packages via a new distutils command, sdist_dsc. Automatic defaults are provided for the Debian package, but many aspects of the resulting package can be customized. An additional command, bdist_deb, creates a Debian binary package, a .deb file. The debianize command builds a debian/ directory directly alongside your
sudo apt-get install python-stdeb python-all  # or python3-all


If there is a problem with gramps/gen/utils/resource-path file, then you need to use an environment variable: GRAMPS_RESOURCES.

$ GRAMPS_RESOURCES=/usr/share gramps

or you need to customize before building your package! eg,

resource_file = os.path.join(os.path.dirname(__file__), 'gramps', 'gen',
                             'utils', 'resource-path')
with, 'w', encoding='utf-8',
             errors='strict') as fp:
-    path = os.path.abspath(os.path.join(self.install_data, 'share'))
+    path = '/usr/share'
    • The launcher under /usr/bin/gramps is using the same path for current stable release and this testing version. Backup your launcher if you want to install both versions. Translations might be also overwritten, you have been warned...
    • You need at least version 3.3.2 of python-gobject for Gramps 4.0.x.
    • You cannot use greater version than 2.28 of python-gobject for Gramps 3.4.x.

via a quick command line

python --command-packages=stdeb.command bdist_deb
  • Custom tarball
python --command-packages=stdeb.command sdist_dsc


python --command-packages=stdeb.command sdist_dsc --depends "python-gobject (>= 3.3.2)"

via customized options

These options are set into /debian folder.

cd debian
export DEBEMAIL='...@...'
export DEBFULLNAME='Your name'
cd ..
dch -v 4.0.0 "New upstream for Gramps 4.0.0"
dpkg-buildpackage -rfakeroot

via Distutils

source :

Sample for creating a debian harmattan (MeeGo 1.2) binary package:

import os
import stdeb.util as util
from shutil import copy
from stdeb.command.sdist_dsc import sdist_dsc
from distutils.core import Command
__all__ = ['bdist_hdeb']
class bdist_hdeb(Command):
   description = 'distutils command to create debian harmattan binary package'
   # aegis, UAC, UOA, GOA, etc ...
   user_options = [ ("aegis-manifest=", None, 'aegis manifest to use') ]
   boolean_options = []
   def initialize_options (self):
       self.aegis_manifest = None
   def finalize_options (self):
   def run(self):
       # generate .dsc source pkg
       # execute system command and read output (execute and read output of find cmd)
       dsc_tree = 'deb_dist'
       target_dir = None
       for entry in os.listdir(dsc_tree):
           fulldir = os.path.join(dsc_tree,entry)
           if os.path.isdir(fulldir):
               if target_dir is not None:
                   raise ValueError('more than one directory in deb_dist. '
                                    'Unsure which is source directory')
                   target_dir = fulldir
       if target_dir is None:
           raise ValueError('could not find debian source directory')
       # inject custom logic to dh_builddeb (build digsigsums before and add aegis manifest after)
       DEBNAME = self.distribution.get_name()+'_'+self.distribution.get_version()+'*_all.deb'
       rules = open(target_dir+'/debian/rules', 'a')
       rules.write('override_dh_builddeb:\n\tpython ../../ '+self.distribution.get_name()+\
       if self.aegis_manifest is not None: # MeeGo 1.2
           rules.write('\n\tar q ../'+DEBNAME+' _aegis') 
       # make aegis manifest avaiable to debian/rules 
       # MeeGo 1.2
       if self.aegis_manifest is not None:
           copy(self.aegis_manifest, target_dir+'/_aegis')
       # define system command to execute (gen .deb binary pkg)
       syscmd = ['dpkg-buildpackage','-rfakeroot','-uc','-b']



$ lintian gramps_4.0.1-2_all.deb
W: gramps: old-fsf-address-in-copyright-file
W: gramps: extra-license-file usr/share/doc/gramps/COPYING.gz
W: gramps: package-contains-upstream-install-documentation usr/share/doc/gramps/INSTALL
W: gramps: extra-license-file usr/share/doc/gramps/LICENSE.gz
W: gramps: menu-icon-missing usr/share/pixmaps/gramps.xpm

webapp package

  • How to include Makefile into deb package?

- package_data_webapp = ['webapp/*.sql', 'webapp/grampsdb/sql/*.sql']
+ package_data_webapp = ['webapp/*.sql', 'webapp/Makefile', 'webapp/grampsdb/sql/*.sql']
  • Depends on python-django, python-sqlite


Package: python-gramps-webapp
Architecture: all


#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
export DH_OPTIONS=-v
    dh $@ --with python2
# Override auto test because upstream do not use the standard unittest discover
# Override of auto_build
      python --server build
# Override of auto_install to remove information from package
       python --server install --root=debian/python-gramps-webapp --install-layout=deb
# Make css style sheets and templates non-executable
       chmod a-x $(CURDIR)/debian/python-gramps-webapp/usr/share/gramps/css/Web_*.css
       chmod a-x $(CURDIR)/debian/python-gramps-webapp/usr/share/gramps/templates/*.html
# Avoid compressing COPYING file so that it can appear in the "About" dialog
       #dh_compress -X COPYING

qml package

  • Depends on python-pyside, gramps

For version 3.4 and before

Instructions on creating the Debian .deb package for Ubuntu:

  • Ensure you have a working build environment
  • For Ubuntu 7.04 or 7.10, install these tools:
sudo apt-get install devscripts dpkg-dev fakeroot debhelper libgconf2-dev
  • For Ubuntu 8.04, install these tools:
sudo apt-get install devscripts dpkg-dev fakeroot debhelper libgconf2-dev python-xml
  • For Ubuntu 12.04 install these tools:
sudo apt-get install devscripts dpkg-dev fakeroot debhelper libgconf2-dev
  • Check out the necessary version; for example, to build the .deb file for GRAMPS version 3.4.3, you'll want to run:
git clone Gramps
git checkout gramps-3.4.3
  • Confirm that sudo apt-get install devscripts dpkg-dev fakeroot debhelper libgconf2-dev, everything builds:
  • Create the Changelog files:
git log gramps-3.4.2.. --pretty --numstat --summary --no-merges | git2cl > ChangeLog
git log gramps-3.4.2.. --pretty --numstat --summary --no-merges -- po | git2cl > po/ChangeLog
  • Create the .deb package:
cd debian
export DEBEMAIL='[email protected]'
export DEBFULLNAME='Stephane Charette'
cd ..
dch -v 3.4.3-3 "New upstream release, include two patches"
dpkg-buildpackage -rfakeroot
Remember to modify DEBEMAIL and DEBFULLNAME to reflect your e-mail and name.
  • Release the .deb files:
cd ..
ls *.deb
Note the gramps_3.4.3-3_all.deb file, which needs to be uploaded to
  • The details on how things are going to be packaged into deb files, what are the dependencies, the pre- and post- install and removal scripts etc are under debian/ directory. Please refer to the Debian New Maintainers' Guide for further details.