aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages genealogy)
  #:use-module (guix build-system python)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages fonts)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages geo)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages graphviz)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages python)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages sqlite)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages xml))

(define-public gramps
  (package
    (name "gramps")
    (version "5.2.3")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/gramps-project/gramps")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1gzhi5hxpgc6pxs40xsxf67hndjifnfhm89s3ly68c70x83qmwhd"))))
    (build-system python-build-system)
    (native-inputs
     `(("gettext" ,gettext-minimal)
       ("intltool" ,intltool)
       ("glibc-utf8-locales" ,glibc-utf8-locales))) ;; for one test
    (inputs
     (list bash-minimal
           cairo
           font-gnu-freefont
           geocode-glib
           gexiv2
           ghostscript
           gobject-introspection
           gtk+
           gtkspell3
           graphviz
           (librsvg-for-system)
           osm-gps-map
           pango
           python-bsddb3
           python-jsonschema
           python-lxml
           python-pillow
           python-pycairo
           python-pygobject
           python-pyicu
           rcs
           sqlite
           xdg-utils))
    (arguments
     `(#:imported-modules ((guix build glib-or-gtk-build-system)
                           ,@%python-build-system-modules)
       #:modules ((ice-9 match)
                  (guix build python-build-system)
                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                  (guix build utils))
       #:phases
       (modify-phases %standard-phases
         (add-before 'check 'set-home-for-tests
           (lambda _
             (setenv "HOME" (getenv "TMPDIR"))))
         (add-before 'check 'prepare-tests
           (lambda _
             ;; Presence of .git directory is used to determine whether this
             ;; is a final installation.  Without it, tests fail to determine
             ;; resource path.
             (mkdir ".git")
             ;; Test is failing
             (delete-file "gramps/gen/utils/test/file_test.py")))
         (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out"))
                   (paths (map (match-lambda
                                 ((output . directory)
                                  (let ((girepodir (string-append
                                                    directory
                                                    "/lib/girepository-1.0")))
                                    (if (file-exists? girepodir)
                                        girepodir
                                        #f))))
                               inputs)))
               (wrap-program (string-append out "/bin/gramps")
                 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))))
         (add-after 'wrap 'glib-or-gtk-wrap
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
    (home-page "https://gramps-project.org")
    (synopsis "Genealogical research software")
    (description
     "Gramps is a free software project and community striving to produce
a genealogy program that is both intuitive for hobbyists and feature-complete
for professional genealogists.")
    (license license:gpl2+)))
services/herd.scm (open-connection): Use 'block for 'setvbuf'. Ludovic Courtès 2019-01-17services: herd: Allow to pass arguments to start-service....* gnu/services/herd.scm (start-service)[arguments]: New optional argument. Mathieu Othacehe 2018-09-26guix system: Load all services on reconfigure, not just stopped ones....This uses the 'replacement' service slot introduced in the Shepherd version 0.5.0. * gnu/services/shepherd.scm (shepherd-service-upgrade): Return a list of services that need to be restarted to complete their upgrade. * guix/scripts/system.scm (call-with-service-upgrade-info): Rename an internal variable to reflect the change to shepherd-service-upgrade. (upgrade-shepherd-services): Call 'load-services/safe' instead of 'load-services'. Print a message about services that need to be manually restarted. * gnu/services/herd.scm (load-services/safe): New procedure. * doc/guix.texi (Invoking guix system): Document the new behaviour. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Carlo Zancanaro 2018-07-13services: mcron: Add 'schedule' action....Inspired by <https://lists.gnu.org/archive/html/help-guix/2018-07/msg00035.html>. * gnu/services/mcron.scm (shepherd-schedule-action): New procedure. (mcron-shepherd-services): Add 'actions' field. * gnu/tests/base.scm (run-mcron-test)["schedule action"]: New test. * doc/guix.texi (Scheduled Job Execution): Mention 'herd schedule'. Ludovic Courtès 2018-01-21services: herd: 'with-shepherd' no longer leaves an open connection....* gnu/services/herd.scm (with-shepherd): Use 'dynamic-wind' and close CONNECTION at the end. Ludovic Courtès 2017-08-23services: herd: Actions return a list of results....Fixes a regression introduced in 0642838b2e9ab2bd988dccb64b9e1130006347bf. * gnu/services/herd.scm (invoke-action): Explain that we get a list of results. (current-services): Expect a list of result and use the first one. (unload-service, %load-file, eval-there): Likewise. Ludovic Courtès 2017-08-08services: herd: Add a stop-service procedure....* gnu/services/herd.scm (stop-service): New procedure. Christopher Baines 2017-08-08services: herd: Fix matching ok responses from shepherd service....Previously the match expression case for a successful response (where error is #f) required that the result component contained a list with a single element. As far as I see when looking at the responses from the shepherd, this is not normally the case. Therefore, to avoid treating successful responses as errors, make the match requirement more permissive, accepting any value. * gnu/services/herd.scm (invoke-action): Change match condition for ok responses. Christopher Baines