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
78
79
80
81
82
83
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;;
;;; 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 tup)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages version-control)
#:use-module (gnu packages perl)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public tup
(package
(name "tup")
(version "0.7.4")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/gittup/"
name "/archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"044h9kbcg1sfwpn13j1grw79kwysqhyn3w3g6yy8ap4j32v10gz2"))))
(build-system gnu-build-system)
(arguments
;; tup requires fusermount to have suid, which we cannot provide in build env,
;; we bootstrap it and use tup generate. This also means that no tests are run.
`(#:tests? #f
#:modules ((guix build gnu-build-system)
(guix build utils))
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(zero? (system* "./build.sh"))
(zero? (system* "./build/tup" "generate" "script.sh"))))
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "script.sh"
(("`git describe`") (string-append "v" ,version)))
(zero? (system* "./script.sh"))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man1")))
(install-file "tup" bin)
(install-file "tup.1" man))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("perl" ,perl)))
(inputs
`(("fuse" ,fuse)))
(synopsis "A file-based build system")
(description
"Tup is a file-based build system for Linux, OSX, and Windows. It inputs a list
of file changes and a directed acyclic graph (DAG), then processes the DAG to
execute the appropriate commands required to update dependent files. Updates are
performed with very little overhead since tup implements powerful build
algorithms to avoid doing unnecessary work. This means you can stay focused on
your project rather than on your build system.")
(home-page "http://gittup.org/tup/")
(license license:gpl2)))
|