aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/calcurse.scm
blob: 5da701492b3a5d5c13c1438ddfa844d22d769178 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018, 2019 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 calcurse)
  #:use-module (guix packages)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages base)
  #:use-module (gnu packages ncurses))

(define-public calcurse
  (package
    (name "calcurse")
    (version "4.5.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://calcurse.org/files/calcurse-"
                           version ".tar.gz"))
       (sha256
        (base32 "0cgkd285x5pk62lmdx9fjxl46c5lj8wj2cqbxq7d99yb4il5fdjk"))))
    (build-system gnu-build-system)
    (inputs (list ncurses))
    (native-inputs (list tzdata-for-tests))
    (arguments
     ;; The ical tests all want to create a ".calcurse" directory, and may
     ;; fail with "cannot create directory '.calcurse': File exists" if run
     ;; concurently.
     `(#:configure-flags
       (list (string-append "--docdir=" (assoc-ref %outputs "out")
                            "/share/doc/" ,name "-" ,version))
       #:parallel-tests? #f
       ;; Since this tzdata is only used for tests and not referenced by the
       ;; built package, used the "fixed" obsolete version of tzdata and ensure
       ;; it does not sneak in to the closure.
       #:disallowed-references (,tzdata-for-tests)
       #:phases (modify-phases %standard-phases
                  (add-after 'unpack 'respect-docdir
                    ;; doc/Makefile disregards ./configure's --docdir option.
                    (lambda _
                      (substitute* "doc/Makefile.in"
                        (("(docdir =) .*" _ match)
                         (format #f "~a @docdir@\n" match)))
                      #t))
                  (add-before 'check 'check-setup
                    (lambda* (#:key inputs #:allow-other-keys)
                      (setenv "TZDIR"   ; for test/ical-007.sh
                              (search-input-directory inputs
                                                      "share/zoneinfo")))))))
    (home-page "https://www.calcurse.org")
    (synopsis "Text-based calendar and scheduling")
    (description
     "Calcurse is a text-based calendar and scheduling application.  It helps
keep track of events, appointments and everyday tasks.  A configurable
notification system reminds user of upcoming deadlines, and the curses based
interface can be customized to suit user needs.  All of the commands are
documented within an online help system.")
    (license bsd-2)))
s, as well as that # of Bash (such as "Terminated" messages when 'guix-daemon' is # killed.) exec 2> /dev/null shift ;; esac if [ -x "@abs_top_builddir@/guix-daemon" ] then NIX_STORE_DIR="@GUIX_TEST_ROOT@/store" # Do that because store.scm calls `canonicalize-path' on it. mkdir -p "$NIX_STORE_DIR" # Canonicalize the store directory name in an attempt to avoid symlinks in # it or its parent directories. See <http://bugs.gnu.org/17935>. NIX_STORE_DIR="`cd "@GUIX_TEST_ROOT@/store"; pwd -P`" GUIX_LOG_DIRECTORY="@GUIX_TEST_ROOT@/var/log/guix" GUIX_DATABASE_DIRECTORY="@GUIX_TEST_ROOT@/db" # Choose a PID-dependent name to allow for parallel builds. Note # that the directory name must be chosen so that the socket's file # name is less than 108-char long (the size of `sun_path' in glibc). # Currently, in Nix builds, we're at ~106 chars... GUIX_STATE_DIRECTORY="@GUIX_TEST_ROOT@/var/$$" # We can't exit when we reach the limit, because perhaps the test doesn't # actually rely on the daemon, but at least warn. if test "`echo -n "$GUIX_STATE_DIRECTORY/daemon-socket/socket" | wc -c`" -ge 108 then echo "warning: exceeding socket file name limit; test may fail!" >&2 fi # The configuration directory, for import/export signing keys. GUIX_CONFIGURATION_DIRECTORY="@GUIX_TEST_ROOT@/etc" if [ ! -d "$GUIX_CONFIGURATION_DIRECTORY" ] then # Copy the keys so that the secret key has the right permissions (the # daemon errors out when this is not the case.) mkdir -p "$GUIX_CONFIGURATION_DIRECTORY" cp "@abs_top_srcdir@/tests/keys/signing-key.sec" \ "@abs_top_srcdir@/tests/keys/signing-key.pub" \ "$GUIX_CONFIGURATION_DIRECTORY" chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec" fi # A place to store data of the substituter. GUIX_BINARY_SUBSTITUTE_URL="file://$GUIX_STATE_DIRECTORY/substituter-data" rm -rf "$GUIX_STATE_DIRECTORY/substituter-data" mkdir -p "$GUIX_STATE_DIRECTORY/substituter-data" # For a number of tests, we want to allow unsigned narinfos, for # simplicity. GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES=yes # Place for the substituter's cache. XDG_CACHE_HOME="$GUIX_STATE_DIRECTORY/cache-$$" export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \ GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY \ GUIX_BINARY_SUBSTITUTE_URL \ GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \ GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME # Launch the daemon without chroot support because is may be # unavailable, for instance if we're not running as root. "@abs_top_builddir@/pre-inst-env" \ "@abs_top_builddir@/guix-daemon" --disable-chroot \ --substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL" & daemon_pid=$! trap "kill $daemon_pid ; rm -rf $GUIX_STATE_DIRECTORY" EXIT # The test suite expects the 'guile-bootstrap' package to be available. # Normally the Guile bootstrap tarball is downloaded by a fixed-output # derivation but when network access is missing we allow users to drop # the tarball in 'gnu/packages/bootstrap/SYSTEM' and "intern" it here. bootstrap_directory="@abs_top_builddir@/gnu/packages/bootstrap/@guix_system@" if [ -d "$bootstrap_directory" ] then # Make sure 'guix-daemon' is listening before invoking 'guix # download'. "@abs_top_builddir@/pre-inst-env" "@GUILE@" -c \ '(use-modules (guix)) (let loop ((i 10)) (catch #t (lambda () (open-connection)) (lambda (key . args) (if (zero? i) (apply throw key args) (begin (usleep 500000) (loop (- i 1)))))))' for file in "$bootstrap_directory"/guile-* do [ -f "$file" ] && \ "@abs_top_builddir@/pre-inst-env" \ guix download "file://$file" > /dev/null done fi fi # Avoid issues that could stem from l10n, such as language/encoding # mismatches. unset LANGUAGE LC_MESSAGES=C export LC_MESSAGES # Disable grafts by default because they can cause things to be built # regardless of '--dry-run'. GUIX_BUILD_OPTIONS="--no-grafts" export GUIX_BUILD_OPTIONS # Ignore user settings. unset GUIX_PACKAGE_PATH storedir="@storedir@" prefix="@prefix@" datarootdir="@datarootdir@" datadir="@datadir@" localstatedir="@localstatedir@" export storedir prefix datarootdir datadir localstatedir "@abs_top_builddir@/pre-inst-env" "$@" exit $?