From 4a219a1a4761a892681cc63eb3a35ef3a13f1a9b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 7 Jan 2013 21:11:19 +0100 Subject: distro: Add Tcl, Expect, and DejaGNU. * distro/packages/dejagnu.scm, distro/packages/tcl.scm: New files. * Makefile.am (MODULES): Add them. --- Makefile.am | 2 + distro/packages/dejagnu.scm | 87 ++++++++++++++++++++++++++++++++++++++++ distro/packages/tcl.scm | 96 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 185 insertions(+) create mode 100644 distro/packages/dejagnu.scm create mode 100644 distro/packages/tcl.scm diff --git a/Makefile.am b/Makefile.am index bc4e986e43..51b7957d98 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,6 +57,7 @@ MODULES = \ distro/packages/compression.scm \ distro/packages/cpio.scm \ distro/packages/bdb.scm \ + distro/packages/dejagnu.scm \ distro/packages/ddrescue.scm \ distro/packages/ed.scm \ distro/packages/flex.scm \ @@ -95,6 +96,7 @@ MODULES = \ distro/packages/rsync.scm \ distro/packages/shishi.scm \ distro/packages/system.scm \ + distro/packages/tcl.scm \ distro/packages/texinfo.scm \ distro/packages/time.scm \ distro/packages/wget.scm \ diff --git a/distro/packages/dejagnu.scm b/distro/packages/dejagnu.scm new file mode 100644 index 0000000000..bb735bfe37 --- /dev/null +++ b/distro/packages/dejagnu.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès +;;; +;;; 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 . + +(define-module (distro packages dejagnu) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses) + #:use-module (distro packages tcl)) + +(define-public dejagnu + (package + (name "dejagnu") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/dejagnu/dejagnu-" + version ".tar.gz")) + (sha256 + (base32 + "1nx3x3h96a82q92q108q71giv2nz9xmbbn2nrlr3wvvs6l45id68")))) + (build-system gnu-build-system) + (inputs `(("expect" ,expect))) + (arguments + '(#:phases (alist-replace + 'check + (lambda _ + ;; Note: The test-suite *requires* /dev/pts among the + ;; `build-chroot-dirs' of the build daemon when + ;; building in a chroot. See + ;; + ;; for details. + (if (and (directory-exists? "/dev/pts") + (directory-exists? "/proc")) + (begin + ;; Provide `runtest' with a log name, otherwise + ;; it tries to run `whoami', which fails when in + ;; a chroot. + (setenv "LOGNAME" "guix-builder") + + ;; The test-suite needs to have a non-empty stdin: + ;; . + (zero? + (system "make check < /dev/zero"))) + (begin + (display "test suite cannot be run, skipping\n") + #t))) + (alist-cons-after + 'install 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Use the right `expect' binary. + (let ((out (assoc-ref outputs "out")) + (expect (assoc-ref inputs "expect"))) + (substitute* (string-append out "/bin/runtest") + (("expectbin=expect") + (string-append "expectbin=" + expect "/bin/expect"))))) + %standard-phases)))) + (home-page + "http://www.gnu.org/software/dejagnu/") + (synopsis "The DejaGNU testing framework") + (description + "DejaGnu is a framework for testing other programs. Its purpose +is to provide a single front end for all tests. Think of it as a +custom library of Tcl procedures crafted to support writing a +test harness. A test harness is the testing infrastructure that +is created to support a specific program or tool. Each program +can have multiple testsuites, all supported by a single test +harness. DejaGnu is written in Expect, which in turn uses Tcl -- +Tool command language.") + (license gpl2+))) diff --git a/distro/packages/tcl.scm b/distro/packages/tcl.scm new file mode 100644 index 0000000000..369c986ffb --- /dev/null +++ b/distro/packages/tcl.scm @@ -0,0 +1,96 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès +;;; +;;; 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 . + +(define-module (distro packages tcl) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses)) + +(define-public tcl + (package + (name "tcl") + (version "8.6.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tcl/Tcl/" + version "/tcl" version "-src.tar.gz")) + (sha256 + (base32 + "1pnabp3xsja4rc8c01l9q1avb65a3zhdzci3j54qa5krqjwj4i1m")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-cons-before + 'configure 'pre-configure + (lambda _ + (chdir "unix")) + (alist-cons-after + 'install 'install-private-headers + (lambda _ + ;; Private headers are needed by Expect. + (zero? (system* "make" "install-private-headers"))) + %standard-phases)) + #:tests? #f)) ; FIXME: use #:test-target "test" + (home-page "http://www.tcl.tk/") + (synopsis "The Tcl scripting language") + (description "The Tcl (Tool Command Language) scripting language.") + (license (bsd-style "http://www.tcl.tk/software/tcltk/license.html" + "Tcl/Tk license")))) + + +(define-public expect + (package + (name "expect") + (version "5.45") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/expect/Expect/" + version "/expect" version ".tar.gz")) + (sha256 + (base32 + "0h60bifxj876afz4im35rmnbnxjx4lbdqp2ja3k30fwa8a8cm3dj")))) + (build-system gnu-build-system) + (inputs + `(;; TODO: Add these optional dependencies. + ;; ("libX11" ,libX11) + ;; ("xproto" ,xproto) + ;; ("tk" ,tk) + ("tcl" ,tcl))) + (arguments + '(#:configure-flags + (list (string-append "--with-tcl=" + (assoc-ref %build-inputs "tcl") + "/lib") + (string-append "--with-tclinclude=" + (assoc-ref %build-inputs "tcl") + "/include") + (string-append "--exec-prefix=" + (assoc-ref %outputs "out"))) + #:tests? #f)) ; FIXME: use #:test-target "test" + (home-page "http://expect.nist.gov/") + (synopsis + "A tool for automating interactive applications") + (description + "Expect is a tool for automating interactive applications such as +telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this +stuff trivial. Expect is also useful for testing these same +applications. And by adding Tk, you can wrap interactive applications in +X11 GUIs.") + (license public-domain))) ; as written in `license.terms' -- cgit 1.4.1