Commit | Line | Data |
---|---|---|
dcee3fc5 NK |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> | |
cf3fe3b0 | 3 | ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> |
2a5e15c6 | 4 | ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> |
fc1e4516 | 5 | ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> |
3b9af0f3 | 6 | ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> |
dcee3fc5 NK |
7 | ;;; |
8 | ;;; This file is part of GNU Guix. | |
9 | ;;; | |
10 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
11 | ;;; under the terms of the GNU General Public License as published by | |
12 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
13 | ;;; your option) any later version. | |
14 | ;;; | |
15 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
16 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;;; GNU General Public License for more details. | |
19 | ;;; | |
20 | ;;; You should have received a copy of the GNU General Public License | |
21 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
22 | ||
1b1c335f | 23 | (define-module (gnu packages version-control) |
83a39ed7 LC |
24 | #:use-module ((guix licenses) |
25 | #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+ x11-style)) | |
dcee3fc5 NK |
26 | #:use-module (guix packages) |
27 | #:use-module (guix download) | |
1b1c335f | 28 | #:use-module (guix build-system gnu) |
dcee3fc5 NK |
29 | #:use-module (guix build-system python) |
30 | #:use-module (guix build utils) | |
2b24faa2 | 31 | #:use-module (gnu packages apr) |
0e534e74 JD |
32 | #:use-module (gnu packages bison) |
33 | #:use-module (gnu packages cook) | |
d9ff410f | 34 | #:use-module (gnu packages curl) |
740c24df | 35 | #:use-module (gnu packages ed) |
0e534e74 JD |
36 | #:use-module (gnu packages file) |
37 | #:use-module (gnu packages flex) | |
fc1e4516 | 38 | #:use-module (gnu packages gettext) |
0e534e74 JD |
39 | #:use-module (gnu packages groff) |
40 | #:use-module (gnu packages linux) | |
fc1e4516 | 41 | ;; #:use-module (gnu packages gnutls) |
1972fed4 | 42 | #:use-module (gnu packages nano) |
d9ff410f | 43 | #:use-module (gnu packages openssl) |
cf3fe3b0 | 44 | #:use-module (gnu packages perl) |
fc1e4516 | 45 | #:use-module (gnu packages pkg-config) |
cf3fe3b0 | 46 | #:use-module (gnu packages python) |
5f96f303 | 47 | #:use-module (gnu packages databases) |
9de46ffb | 48 | #:use-module (gnu packages admin) |
d9ff410f | 49 | #:use-module (gnu packages xml) |
a4572a17 | 50 | #:use-module (gnu packages emacs) |
8b2fe785 | 51 | #:use-module (gnu packages compression) |
ecfb6993 | 52 | #:use-module (gnu packages swig) |
25f76ef0 JD |
53 | #:use-module (gnu packages tcl) |
54 | #:use-module (gnu packages)) | |
dcee3fc5 NK |
55 | |
56 | (define-public bazaar | |
57 | (package | |
58 | (name "bazaar") | |
881c3f01 | 59 | (version "2.6.0") |
dcee3fc5 NK |
60 | (source |
61 | (origin | |
62 | (method url-fetch) | |
881c3f01 | 63 | (uri (string-append "https://launchpad.net/bzr/2.6/" version |
dcee3fc5 NK |
64 | "/+download/bzr-" version ".tar.gz")) |
65 | (sha256 | |
66 | (base32 | |
881c3f01 | 67 | "1c6sj77h5f97qimjc14kr532kgc0jk3wq778xrkqi0pbh9qpk509")))) |
dcee3fc5 NK |
68 | (build-system python-build-system) |
69 | (inputs | |
70 | ;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh' | |
71 | ;; require Zsh. | |
1dba6407 | 72 | `(("gettext" ,gnu-gettext))) |
dcee3fc5 | 73 | (arguments |
1611eccd | 74 | `(#:tests? #f ; no test target |
3b9af0f3 | 75 | #:python ,python-2 ; Python 3 apparently not yet supported, see |
1611eccd | 76 | ; https://answers.launchpad.net/bzr/+question/229048 |
3b9af0f3 MW |
77 | #:phases (alist-cons-after |
78 | 'unpack 'fix-mandir | |
79 | (lambda _ | |
80 | (substitute* "setup.py" | |
81 | (("man/man1") "share/man/man1"))) | |
82 | %standard-phases))) | |
dcee3fc5 | 83 | (home-page "https://gnu.org/software/bazaar") |
79c311b8 | 84 | (synopsis "Version control system supporting both distributed and centralized workflows") |
dcee3fc5 | 85 | (description |
79c311b8 | 86 | "GNU Bazaar is a version control system that allows you to record |
35b9e423 | 87 | changes to project files over time. It supports both a distributed workflow |
79c311b8 | 88 | as well as the classic centralized workflow.") |
2c71cf66 | 89 | (license gpl2+))) |
1b1c335f | 90 | |
d9ff410f AE |
91 | (define-public git |
92 | (package | |
93 | (name "git") | |
ff212a5c | 94 | (version "2.1.2") |
d9ff410f AE |
95 | (source (origin |
96 | (method url-fetch) | |
4d96439d | 97 | (uri (string-append "mirror://kernel.org/software/scm/git/git-" |
ff212a5c | 98 | version ".tar.xz")) |
d9ff410f AE |
99 | (sha256 |
100 | (base32 | |
ff212a5c | 101 | "12x1qycc0rii6fqpiizp9v9ysdmj6lpi9imqqbrkdx6cifbwh9vv")))) |
d9ff410f | 102 | (build-system gnu-build-system) |
2a5e15c6 LC |
103 | (native-inputs |
104 | `(("native-perl" ,perl) | |
105 | ("gettext" ,gnu-gettext))) | |
d9ff410f AE |
106 | (inputs |
107 | `(("curl" ,curl) | |
108 | ("expat" ,expat) | |
d9ff410f AE |
109 | ("openssl" ,openssl) |
110 | ("perl" ,perl) | |
d1f30e99 | 111 | ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL |
ed5f49ff LC |
112 | ("zlib" ,zlib) |
113 | ||
114 | ;; For 'git-svn'. | |
ecfb6993 LC |
115 | ("subversion" ,subversion) |
116 | ||
117 | ;; For 'git gui', 'gitk', and 'git citool'. | |
118 | ("tcl" ,tcl) | |
119 | ("tk" ,tk))) | |
120 | (outputs '("out" ; the core | |
121 | "svn" ; git-svn | |
122 | "gui")) ; gitk, git gui | |
d9ff410f AE |
123 | (arguments |
124 | `(#:make-flags `("V=1") ; more verbose compilation | |
125 | #:test-target "test" | |
126 | #:tests? #f ; FIXME: Many tests are failing | |
ecfb6993 LC |
127 | |
128 | ;; The explicit --with-tcltk forces the build system to hardcode the | |
129 | ;; absolute file name to 'wish'. | |
130 | #:configure-flags (list (string-append "--with-tcltk=" | |
131 | (assoc-ref %build-inputs "tk") | |
132 | "/bin/wish8.6")) ; XXX | |
133 | ||
d9ff410f | 134 | #:phases |
d4bf49b1 EB |
135 | (alist-cons-after |
136 | 'configure 'patch-makefile-shebangs | |
137 | (lambda _ | |
138 | (substitute* "Makefile" | |
139 | (("/bin/sh") (which "sh")) | |
140 | (("/usr/bin/perl") (which "perl")) | |
141 | (("/usr/bin/python") (which "python")))) | |
ed5f49ff LC |
142 | (alist-cons-after |
143 | 'install 'split | |
144 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
ecfb6993 | 145 | ;; Split the binaries to the various outputs. |
ed5f49ff LC |
146 | (let* ((out (assoc-ref outputs "out")) |
147 | (svn (assoc-ref outputs "svn")) | |
ecfb6993 LC |
148 | (gui (assoc-ref outputs "gui")) |
149 | (gitk (string-append out "/bin/gitk")) | |
150 | (gitk* (string-append gui "/bin/gitk")) | |
151 | (git-gui (string-append out "/libexec/git-core/git-gui")) | |
152 | (git-gui* (string-append gui "/libexec/git-core/git-gui")) | |
153 | (git-cit (string-append out "/libexec/git-core/git-citool")) | |
154 | (git-cit* (string-append gui "/libexec/git-core/git-citool")) | |
ed5f49ff | 155 | (git-svn (string-append out "/libexec/git-core/git-svn")) |
2a5e15c6 LC |
156 | (git-svn* (string-append svn "/libexec/git-core/git-svn")) |
157 | (git-sm (string-append out | |
158 | "/libexec/git-core/git-submodule"))) | |
ecfb6993 LC |
159 | (mkdir-p (string-append gui "/bin")) |
160 | (mkdir-p (string-append gui "/libexec/git-core")) | |
ed5f49ff | 161 | (mkdir-p (string-append svn "/libexec/git-core")) |
ecfb6993 LC |
162 | |
163 | (for-each (lambda (old new) | |
164 | (copy-file old new) | |
165 | (delete-file old) | |
166 | (chmod new #o555)) | |
167 | (list gitk git-gui git-cit git-svn) | |
168 | (list gitk* git-gui* git-cit* git-svn*)) | |
ed5f49ff LC |
169 | |
170 | ;; Tell 'git-svn' where Subversion is. | |
171 | (wrap-program git-svn* | |
172 | `("PATH" ":" prefix | |
173 | (,(string-append (assoc-ref inputs "subversion") | |
0a5a1db2 | 174 | "/bin"))) |
ed5f49ff LC |
175 | `("PERL5LIB" ":" prefix |
176 | (,(string-append (assoc-ref inputs "subversion") | |
177 | "/lib/perl5/site_perl"))) | |
178 | ||
179 | ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so | |
180 | ;; help it find 'libsvn_client-1.so'. | |
181 | `("LD_LIBRARY_PATH" ":" prefix | |
182 | (,(string-append (assoc-ref inputs "subversion") | |
0a5a1db2 LC |
183 | "/lib")))) |
184 | ||
2a5e15c6 LC |
185 | ;; Tell 'git-submodule' where Perl is. |
186 | (wrap-program git-sm | |
187 | `("PATH" ":" prefix | |
188 | (,(string-append (assoc-ref inputs "perl") | |
189 | "/bin")))) | |
190 | ||
0a5a1db2 LC |
191 | ;; Tell 'git' to look for core programs in the user's profile. |
192 | ;; This allows user to install other outputs of this package and | |
193 | ;; have them transparently taken into account. There's a | |
194 | ;; 'GIT_EXEC_PATH' environment variable, but it's supposed to | |
195 | ;; specify a single directory, not a search path. | |
196 | (wrap-program (string-append out "/bin/git") | |
197 | `("PATH" ":" prefix | |
198 | ("$HOME/.guix-profile/libexec/git-core"))))) | |
ed5f49ff | 199 | %standard-phases)))) |
d9ff410f AE |
200 | (synopsis "Distributed version control system") |
201 | (description | |
202 | "Git is a free distributed version control system designed to handle | |
203 | everything from small to very large projects with speed and efficiency.") | |
204 | (license gpl2) | |
205 | (home-page "http://git-scm.com/"))) | |
206 | ||
5151c2e1 AB |
207 | (define-public mercurial |
208 | (package | |
209 | (name "mercurial") | |
210 | (version "2.7.1") | |
211 | (source (origin | |
212 | (method url-fetch) | |
213 | (uri (string-append "http://mercurial.selenic.com/release/mercurial-" | |
214 | version ".tar.gz")) | |
215 | (sha256 | |
216 | (base32 | |
217 | "121m8f7vmipmdg00cnzdz2rjkgydh28mwfirqkrbs5fv089vywl4")))) | |
218 | (build-system python-build-system) | |
219 | (arguments | |
220 | `(;; Restrict to Python 2, as Python 3 would require | |
221 | ;; the argument --c2to3. | |
222 | #:python ,python-2 | |
223 | ;; FIXME: Disabled tests because they require the nose unit | |
224 | ;; testing framework: https://nose.readthedocs.org/en/latest/ . | |
225 | #:tests? #f)) | |
226 | (home-page "http://mercurial.selenic.com") | |
227 | (synopsis "Decentralized version control system") | |
228 | (description | |
229 | "Mercurial is a free, distributed source control management tool. | |
230 | It efficiently handles projects of any size | |
231 | and offers an easy and intuitive interface.") | |
232 | (license gpl2+))) | |
233 | ||
fc1e4516 AE |
234 | (define-public neon |
235 | (package | |
236 | (name "neon") | |
237 | (version "0.30.0") | |
238 | (source (origin | |
239 | (method url-fetch) | |
240 | (uri (string-append "http://www.webdav.org/neon/neon-" | |
241 | version ".tar.gz")) | |
242 | (sha256 | |
243 | (base32 | |
244 | "1hlhg5w505jxdvaf7bq17057f6a48dry981g7lp2gwrhbp5wyqi9")))) | |
245 | (build-system gnu-build-system) | |
246 | (native-inputs | |
247 | `(("perl" ,perl) | |
248 | ("pkg-config" ,pkg-config))) | |
249 | (inputs | |
250 | `(("libxml2" ,libxml2) | |
251 | ("openssl" ,openssl) | |
252 | ("zlib" ,zlib))) | |
253 | (arguments | |
254 | `(;; FIXME: Add tests once reverse address lookup is fixed in glibc, see | |
255 | ;; https://sourceware.org/bugzilla/show_bug.cgi?id=16475 | |
256 | #:tests? #f | |
257 | #:configure-flags '("--enable-shared" | |
258 | ;; requires libgnutils-config, deprecated | |
259 | ;; in gnutls 2.8. | |
260 | ; "--with-ssl=gnutls"))) | |
261 | "--with-ssl=openssl"))) | |
262 | (home-page "http://www.webdav.org/neon/") | |
263 | (synopsis "HTTP and WebDAV client library") | |
264 | (description "Neon is an HTTP and WebDAV client library, with a | |
265 | C interface. Features: | |
266 | High-level wrappers for common HTTP and WebDAV operations (GET, MOVE, | |
267 | DELETE, etc.); | |
268 | low-level interface to the HTTP request/response engine, allowing the use | |
269 | of arbitrary HTTP methods, headers, etc.; | |
270 | authentication support including Basic and Digest support, along with | |
271 | GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32; | |
272 | SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for | |
273 | verifying server certificates, handling client certificates, and examining | |
274 | certificate properties, smartcard-based client certificates are also | |
275 | supported via a PKCS#11 wrapper interface; | |
276 | abstract interface to parsing XML using libxml2 or expat, and wrappers for | |
277 | simplifying handling XML HTTP response bodies; | |
278 | WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify | |
279 | property manipulation.") | |
280 | (license gpl2+))) ; for documentation and tests; source under lgpl2.0+ | |
281 | ||
d56052bd AE |
282 | (define-public neon-0.29.6 |
283 | (package (inherit neon) | |
284 | (name "neon") | |
285 | (version "0.29.6") | |
286 | (source (origin | |
287 | (method url-fetch) | |
288 | (uri (string-append "http://www.webdav.org/neon/neon-" | |
289 | version ".tar.gz")) | |
290 | (sha256 | |
291 | (base32 | |
292 | "0hzbjqdx1z8zw0vmbknf159wjsxbcq8ii0wgwkqhxj3dimr0nr4w")))))) | |
293 | ||
cf3fe3b0 CR |
294 | (define-public subversion |
295 | (package | |
296 | (name "subversion") | |
cb8b285a | 297 | (version "1.7.18") |
cf3fe3b0 CR |
298 | (source (origin |
299 | (method url-fetch) | |
e23dc82c | 300 | (uri (string-append "http://archive.apache.org/dist/subversion/subversion-" |
cf3fe3b0 CR |
301 | version ".tar.bz2")) |
302 | (sha256 | |
303 | (base32 | |
cb8b285a | 304 | "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn")))) |
cf3fe3b0 | 305 | (build-system gnu-build-system) |
8b2fe785 LC |
306 | (arguments |
307 | '(#:phases (alist-cons-after | |
308 | 'install 'instal-perl-bindings | |
309 | (lambda* (#:key outputs #:allow-other-keys) | |
310 | ;; Follow the instructions from | |
311 | ;; 'subversion/bindings/swig/INSTALL'. | |
312 | (let ((out (assoc-ref outputs "out"))) | |
313 | (and (zero? (system* "make" "swig-pl-lib")) | |
314 | ;; FIXME: Test failures. | |
315 | ;; (zero? (system* "make" "check-swig-pl")) | |
316 | (zero? (system* "make" "install-swig-pl-lib")) | |
317 | ||
318 | ;; Set the right installation prefix. | |
319 | (with-directory-excursion | |
320 | "subversion/bindings/swig/perl/native" | |
321 | (and (zero? | |
322 | (system* "perl" "Makefile.PL" | |
323 | (string-append "PREFIX=" out))) | |
324 | (zero? | |
325 | (system* "make" "install"))))))) | |
326 | %standard-phases))) | |
327 | (native-inputs | |
98b79d36 AE |
328 | `(("pkg-config" ,pkg-config) |
329 | ;; For the Perl bindings. | |
330 | ("swig" ,swig))) | |
cf3fe3b0 | 331 | (inputs |
2b24faa2 AE |
332 | `(("apr" ,apr) |
333 | ("apr-util" ,apr-util) | |
98b79d36 | 334 | ("neon" ,neon-0.29.6) |
cf3fe3b0 | 335 | ("perl" ,perl) |
aa9e22ef | 336 | ("python" ,python-2) ; incompatible with Python 3 (print syntax) |
cf3fe3b0 CR |
337 | ("sqlite" ,sqlite) |
338 | ("zlib" ,zlib))) | |
339 | (home-page "http://subversion.apache.org/") | |
35b9e423 | 340 | (synopsis "Revision control system") |
cf3fe3b0 | 341 | (description |
749b90a5 LC |
342 | "Subversion exists to be universally recognized and adopted as a |
343 | centralized version control system characterized by its | |
cf3fe3b0 CR |
344 | reliability as a safe haven for valuable data; the simplicity of its model and |
345 | usage; and its ability to support the needs of a wide variety of users and | |
346 | projects, from individuals to large-scale enterprise operations.") | |
347 | (license asl2.0))) | |
348 | ||
1b1c335f LC |
349 | (define-public rcs |
350 | (package | |
351 | (name "rcs") | |
53f896f2 | 352 | (version "5.9.3") |
1b1c335f LC |
353 | (source (origin |
354 | (method url-fetch) | |
355 | (uri (string-append "mirror://gnu/rcs/rcs-" | |
356 | version ".tar.xz")) | |
357 | (sha256 | |
358 | (base32 | |
53f896f2 | 359 | "0isvzwfvqkg7zcsznra6wqh650z49ib113n7gp6ncxv5p30x3c38")))) |
1b1c335f | 360 | (build-system gnu-build-system) |
740c24df | 361 | (native-inputs `(("ed" ,ed))) |
1b1c335f LC |
362 | (home-page "http://www.gnu.org/software/rcs/") |
363 | (synopsis "Per-file local revision control system") | |
364 | (description | |
79c311b8 LC |
365 | "RCS is the original Revision Control System. It works on a |
366 | file-by-file basis, in contrast to subsequent version control systems such as | |
367 | CVS, Subversion, and Git. This can make it suitable for system | |
368 | administration files, for example, which are often inherently local to one | |
369 | machine.") | |
1b1c335f | 370 | (license gpl3+))) |
1972fed4 LC |
371 | |
372 | (define-public cvs | |
373 | (package | |
374 | (name "cvs") | |
375 | (version "1.12.13") | |
376 | (source (origin | |
377 | (method url-fetch) | |
378 | (uri (string-append | |
379 | "http://ftp.gnu.org/non-gnu/cvs/source/feature/" | |
380 | version "/cvs-" version ".tar.bz2")) | |
381 | (sha256 | |
382 | (base32 | |
383 | "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq")))) | |
384 | (build-system gnu-build-system) | |
385 | (arguments | |
386 | ;; XXX: The test suite looks flawed, and the package is obsolete anyway. | |
387 | '(#:tests? #f)) | |
388 | (inputs `(("zlib" ,zlib) | |
389 | ("nano" ,nano))) ; the default editor | |
390 | (home-page "http://cvs.nongnu.org") | |
391 | (synopsis "Historical centralized version control system") | |
392 | (description | |
393 | "CVS is a version control system, an important component of Source | |
394 | Configuration Management (SCM). Using it, you can record the history of | |
395 | sources files, and documents. It fills a similar role to the free software | |
396 | RCS, PRCS, and Aegis packages.") | |
397 | (license gpl1+))) | |
a4572a17 LC |
398 | |
399 | (define-public vc-dwim | |
400 | (package | |
401 | (name "vc-dwim") | |
402 | (version "1.7") | |
403 | (source (origin | |
404 | (method url-fetch) | |
405 | (uri (string-append "mirror://gnu/vc-dwim/vc-dwim-" | |
406 | version ".tar.xz")) | |
407 | (sha256 | |
408 | (base32 | |
409 | "094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2")))) | |
410 | (build-system gnu-build-system) | |
411 | (inputs `(("perl" ,perl) | |
412 | ("inetutils" ,inetutils) ; for `hostname', used in the tests | |
413 | ("emacs" ,emacs))) ; for `ctags' | |
414 | (home-page "http://www.gnu.org/software/vc-dwim/") | |
415 | (synopsis "Version-control-agnostic ChangeLog diff and commit tool") | |
416 | (description | |
a22dc0c4 LC |
417 | "The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\". |
418 | vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and | |
419 | using version control at the same time, for example by printing a reminder | |
420 | when a file change has been described in the ChangeLog but the file has not | |
79c311b8 | 421 | been added to the VC. vc-chlog scans changed files and generates |
a22dc0c4 | 422 | standards-compliant ChangeLog entries based on the changes that it detects.") |
a4572a17 | 423 | (license gpl3+))) |
83a39ed7 LC |
424 | |
425 | (define-public diffstat | |
426 | (package | |
427 | (name "diffstat") | |
428 | (version "1.58") | |
429 | (source (origin | |
430 | (method url-fetch) | |
431 | (uri (string-append | |
432 | "ftp://invisible-island.net/diffstat/diffstat-" | |
433 | version ".tgz")) | |
434 | (sha256 | |
435 | (base32 | |
436 | "14rpf5c05ff30f6vn6pn6pzy0k4g4is5im656ahsxff3k58i7mgs")))) | |
437 | (build-system gnu-build-system) | |
438 | (home-page "http://invisible-island.net/diffstat/") | |
439 | (synopsis "Make histograms from the output of 'diff'") | |
440 | (description | |
35b9e423 | 441 | "Diffstat reads the output of 'diff' and displays a histogram of the |
83a39ed7 LC |
442 | insertions, deletions, and modifications per-file. It is useful for reviewing |
443 | large, complex patch files.") | |
444 | (license (x11-style "file://COPYING")))) | |
25f76ef0 | 445 | |
25f76ef0 JD |
446 | (define-public cssc |
447 | (package | |
448 | (name "cssc") | |
449 | (version "1.3.0") | |
450 | (source (origin | |
451 | (method url-fetch) | |
452 | (uri (string-append "mirror://gnu/" name "/CSSC-" | |
453 | version ".tar.gz")) | |
454 | (sha256 | |
455 | (base32 | |
456 | "0bkw6fjh20ppvn54smv05461lm1vcwvn02avx941c4acafmkl1cm")) | |
457 | (patches (list (search-patch "cssc-gets-undeclared.patch") | |
458 | (search-patch "cssc-missing-include.patch"))))) | |
459 | (build-system gnu-build-system) | |
460 | (arguments | |
461 | `(#:phases (alist-cons-before | |
462 | 'check 'precheck | |
463 | (lambda _ | |
464 | (begin | |
465 | (substitute* "tests/common/test-common" | |
466 | (("/bin/pwd") (which "pwd"))) | |
467 | ||
468 | (substitute* "tests/prt/all-512.sh" | |
469 | (("/bin/sh") (which "sh"))) | |
470 | ||
471 | ;; XXX: This test has no hope of passing until there is a "nogroup" | |
472 | ;; entry (or at least some group to which the guix builder does | |
473 | ;; not belong) in the /etc/group file of the build environment. | |
474 | ;; Currently we do not have such a group. Disable this test for now. | |
475 | (substitute* "tests/Makefile" | |
476 | (("test-delta ") "")))) | |
477 | %standard-phases))) | |
478 | ;; These are needed for the tests | |
479 | (native-inputs `(("git" ,git) | |
480 | ("cvs" ,cvs))) | |
481 | (home-page "http://www.gnu.org/software/cssc/") | |
482 | (synopsis "File-based version control like SCCS") | |
483 | (description "GNU CSSC provides a replacement for the legacy Unix source | |
484 | code control system SCCS. This allows old code still under that system to be | |
485 | accessed and migrated on modern systems.") | |
486 | (license gpl3+))) | |
0e534e74 JD |
487 | |
488 | ;; This package can unfortunately work only in -TEST mode, since Aegis | |
489 | ;; requires that it is installed setuid root. | |
490 | (define-public aegis | |
491 | (package | |
492 | (name "aegis") | |
493 | (version "4.24") | |
494 | (source (origin | |
495 | (method url-fetch) | |
496 | (uri (string-append "mirror://sourceforge/aegis/aegis-" | |
497 | version ".tar.gz")) | |
498 | (sha256 | |
499 | (base32 | |
500 | "18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl")) | |
501 | (patches (list (search-patch "aegis-perl-tempdir1.patch") | |
502 | (search-patch "aegis-perl-tempdir2.patch") | |
503 | (search-patch "aegis-test-fixup-1.patch") | |
504 | (search-patch "aegis-test-fixup-2.patch") | |
505 | (search-patch "aegis-constness-error.patch"))))) | |
506 | (build-system gnu-build-system) | |
507 | (inputs | |
508 | `(("e2fsprogs" ,e2fsprogs) | |
509 | ("curl" ,curl) | |
510 | ("file" ,file) | |
511 | ("libxml2" ,libxml2) | |
512 | ("zlib" ,zlib) | |
513 | ("gettext" ,gnu-gettext))) | |
514 | (native-inputs | |
515 | `(("bison" ,bison) | |
516 | ("groff" ,groff) | |
517 | ("perl" ,perl) | |
518 | ;; Various tests require the following: | |
519 | ("cvs" ,cvs) | |
520 | ("flex" ,flex) | |
521 | ("cook" ,cook) | |
522 | ("subversion" ,subversion) | |
523 | ("rcs" ,rcs) | |
524 | ("ed" ,ed))) | |
525 | (arguments | |
526 | `(#:configure-flags (list "--with-no-aegis-configured" | |
527 | "--sharedstatedir=/var/com/aegis") | |
528 | #:parallel-build? #f ; There are some nasty racy rules in the Makefile. | |
529 | #:phases | |
530 | (alist-cons-before | |
531 | 'configure 'pre-conf | |
532 | (lambda _ | |
533 | (substitute* (append '("configure" | |
534 | "etc/check-tar-gz.sh" | |
535 | "etc/patches.sh" | |
536 | "etc/test.sh" | |
537 | "script/aexver.in" | |
538 | "script/aebisect.in" | |
539 | "script/aeintegratq.in" | |
540 | "script/tkaegis.in" | |
541 | "script/test_funcs.in" | |
542 | "web/eg_oss_templ.sh" | |
543 | "web/webiface.html" | |
544 | "libaegis/getpw_cache.cc") | |
545 | (find-files "test" "\\.sh")) | |
546 | (("/bin/sh") (which "sh"))) | |
547 | (setenv "SH" (which "sh"))) | |
548 | (alist-replace | |
549 | 'check | |
550 | (lambda _ | |
551 | (let ((home (string-append (getcwd) "/my-new-home"))) | |
552 | ;; Some tests need to write to $HOME. | |
553 | (mkdir home) | |
554 | (setenv "HOME" home) | |
555 | ||
556 | ;; This test assumes that flex has been symlinked to "lex". | |
557 | (substitute* "test/00/t0011a.sh" | |
558 | (("type lex") "type flex")) | |
559 | ||
560 | ;; The author decided to call the check rule "sure". | |
561 | (zero? (system* "make" "sure")))) | |
562 | %standard-phases)))) | |
563 | (home-page "http://aegis.sourceforge.net") | |
564 | (synopsis "Project change supervisor") | |
565 | (description "Aegis is a project change supervisor, and performs some of | |
35b9e423 | 566 | the Software Configuration Management needed in a CASE environment. Aegis |
0e534e74 JD |
567 | provides a framework within which a team of developers may work on many |
568 | changes to a program independently, and Aegis coordinates integrating these | |
569 | changes back into the master source of the program, with as little disruption | |
35b9e423 | 570 | as possible. Resolution of contention for source files, a major headache for |
0e534e74 JD |
571 | any project with more than one developer, is one of Aegis's major functions.") |
572 | (license gpl3+))) |