gnu: remind: Move Tcl/Tk scripts to separate output.

* gnu/packages/calendar.scm (remind)[outputs]: Add "tcl".
[arguments]: Add a new 'split-:tcl phase.
[inputs]: Add inetutils, tcl, tcllib, and tk.
This commit is contained in:
Tobias Geerinckx-Rice 2021-05-06 23:30:35 +02:00
parent 07f0ebda1a
commit bf3589f16c
No known key found for this signature in database
GPG key ID: 0DB0FF884F556D79

View file

@ -35,6 +35,7 @@ (define-module (gnu packages calendar)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages check)
#:use-module (gnu packages dav)
@ -51,6 +52,7 @@ (define-module (gnu packages calendar)
#:use-module (gnu packages qt)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tcl)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
#:use-module (srfi srfi-26))
@ -239,8 +241,42 @@ (define-public remind
(sha256
(base32 "0nszv62gqyclsvsygqj4b1c5h40rp66s5njgcf1h7iy9f00hr6ln"))))
(build-system gnu-build-system)
(outputs (list "out"
"tcl")) ; more than doubles the closure by >110 MiB
(arguments
'(#:test-target "test"))
'(#:test-target "test"
#:phases
(modify-phases %standard-phases
(add-after 'install 'split-:tcl
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(tcl (assoc-ref outputs "tcl")))
(for-each
(lambda (file)
(let ((from (string-append out "/" file))
(to (string-append tcl "/" file)))
(mkdir-p (dirname to))
(rename-file from to)
;; For simplicity, wrap all scripts with the same variables
;; even though, e.g., inetutils is not needed by cm2rem.tcl.
;; XXX Using WRAP-SCRIPT currently breaks tkremind.
(wrap-program to
`("PATH" ":" prefix
,(map (lambda (dir)
(string-append dir "/bin"))
(append (list out tcl)
(map (lambda (input)
(assoc-ref inputs input))
(list "tcl" "tk" "inetutils")))))
`("TCLLIBPATH" " " =
(,(getenv "TCLLIBPATH"))))))
(list "bin/cm2rem.tcl"
"bin/tkremind"))))))))
(inputs
`(("inetutils" ,inetutils)
("tcl" ,tcl)
("tcllib" ,tcllib)
("tk" ,tk)))
(home-page "https://dianne.skoll.ca/projects/remind/")
(synopsis "Sophisticated calendar and alarm program")
(description