diff options
Diffstat (limited to 'gnu/packages')
109 files changed, 8987 insertions, 0 deletions
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm new file mode 100644 index 0000000000..1cba608c8c --- /dev/null +++ b/gnu/packages/acl.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 acl) + #:use-module (guix licenses) + #:use-module (gnu packages attr) + #:use-module (gnu packages perl) + #:use-module ((gnu packages gettext) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public acl + (package + (name "acl") + (version "2.2.51") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/acl/acl-" + version ".src.tar.gz")) + (sha256 + (base32 + "09aj30m49ivycl3irram8c3givc0crivjm3ymw0nhfaxrwhlb186")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-cons-after + 'configure 'patch-makefile-SHELL + (lambda _ + (patch-makefile-SHELL "include/buildmacros")) + (alist-replace + 'check + (lambda _ + (system* "make" "tests" "-C" "test") + + ;; XXX: Ignore the test result since this is + ;; dependent on the underlying file system. + #t) + %standard-phases)))) + (inputs `(("attr" ,attr) + ("gettext" ,guix:gettext) + ("perl" ,perl))) + (home-page + "http://savannah.nongnu.org/projects/acl") + (synopsis + "Library and tools for manipulating access control lists") + (description + "Library and tools for manipulating access control lists.") + (license '(gpl2+ lgpl2.1+)))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm new file mode 100644 index 0000000000..088e32bc0c --- /dev/null +++ b/gnu/packages/algebra.scm @@ -0,0 +1,193 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 algebra) + #:use-module (distro) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages perl) + #:use-module (gnu packages readline) + #:use-module (gnu packages flex) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + + +(define-public mpfrcx + (package + (name "mpfrcx") + (version "0.4.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.multiprecision.org/mpfrcx/download/mpfrcx-" + version ".tar.gz")) + (sha256 + (base32 + "1rrc75chxyicqjgg5mfhgbz7p9mx1fgh0qlx14a82m25vfhifnd1")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp) + ("mpfr" ,mpfr) + ("mpc" ,mpc))) + (synopsis "mpfrcx, a library for the arithmetic of univariate polynomials +over arbitrary precision real or complex numbers") + (description + "mpfrcx is a library for the arithmetic of univariate polynomials over +arbitrary precision real (mpfr) or complex (mpc) numbers, without control +on the rounding. For the time being, only the few functions needed to +implement the floating point approach to complex multiplication are +implemented. On the other hand, these comprise asymptotically fast +multiplication routines such as Toom–Cook and the FFT. ") + (license lgpl2.1+) + (home-page "http://mpfrcx.multiprecision.org/"))) + +(define-public fplll + (package + (name "fplll") + (version "4.0.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-" + version ".tar.gz")) + (sha256 (base32 + "122bpqdlikshhd7nmq0l5qfc0agyk7x21gvplv1l9hb77l8cy9rw")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp) + ("mpfr" ,mpfr))) + (synopsis "fplll, a library for LLL-reduction of euclidean lattices") + (description + "fplll LLL-reduces euclidean lattices. Since version 3, it can also +solve the shortest vector problem.") + (license lgpl2.1+) + (home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/"))) + +(define-public gsl + (package + (name "gsl") + (version "1.15") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gsl/gsl-" + version ".tar.gz")) + (sha256 + (base32 + "18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/gsl/") + (synopsis "The GNU Scientific Library, a large numerical library") + (description + "The GNU Scientific Library (GSL) is a numerical library for C +and C++ programmers. It is free software under the GNU General +Public License. + +The library provides a wide range of mathematical routines such +as random number generators, special functions and least-squares +fitting. There are over 1000 functions in total with an +extensive test suite.") + (license gpl3+))) + +(define-public pari-gp + (package + (name "pari-gp") + (version "2.5.3") + (source (origin + (method url-fetch) + (uri (string-append + "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-" + version ".tar.gz")) + (sha256 (base32 + "0zsjccnnv00kwj2gk3ww2v530kjin1rgj8p8hbl4pwcnwc7m68gl")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp) + ("perl" ,perl) + ("readline" ,readline))) + (arguments + (lambda (system) + `(#:make-flags '("gp") +;; FIXME: building the documentation requires tex; once this is available, +;; replace "gp" by "all" + #:test-target "dobench" + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (readline (assoc-ref inputs "readline")) + (gmp (assoc-ref inputs "gmp"))) + (zero? + (system* "./Configure" + (string-append "--prefix=" out) + (string-append "--with-readline=" readline) + (string-append "--with-gmp=" gmp))))) +;; FIXME: readline and gmp will be detected automatically in the next +;; stable release + %standard-phases)))) + (synopsis "PARI/GP, a computer algebra system for number theory") + (description + "PARI/GP is a widely used computer algebra system designed for fast +computations in number theory (factorisations, algebraic number theory, +elliptic curves...), but it also contains a large number of other useful +functions to compute with mathematical entities such as matrices, +polynomials, power series, algebraic numbers, etc., and a lot of +transcendental functions. +PARI is also available as a C library to allow for faster computations.") + (license gpl2+) + (home-page "http://pari.math.u-bordeaux.fr/"))) + +(define-public bc + (package + (name "bc") + (version "1.06") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz")) + (sha256 + (base32 + "0cqf5jkwx6awgd2xc2a0mkpxilzcfmhncdcfg7c9439wgkqxkxjf")))) + (build-system gnu-build-system) + (inputs `(("readline" ,readline) + ("flex" ,flex))) + (arguments + '(#:phases + (alist-replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; This old `configure' script doesn't support + ;; variables passed as arguments. + (let ((out (assoc-ref outputs "out"))) + (setenv "CONFIG_SHELL" (which "bash")) + (zero? + (system* "./configure" + (string-append "--prefix=" out))))) + %standard-phases))) + (home-page "http://www.gnu.org/software/bc/") + (synopsis "GNU software calculator") + (description + "bc is an arbitrary precision numeric processing language. Syntax +is similar to C, but differs in many substantial areas. It supports +interactive execution of statements. bc is a utility included in the +POSIX P1003.2/D11 draft standard. + +Since the POSIX document does not specify how bc must be implemented, +this version does not use the historical method of having bc be a +compiler for the dc calculator. This version has a single executable +that both compiles the language and runs the resulting `byte code'. The +byte code is not the dc language.") + (license gpl2+))) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm new file mode 100644 index 0000000000..ca0218d814 --- /dev/null +++ b/gnu/packages/aspell.scm @@ -0,0 +1,54 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 aspell) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses) + #:use-module (gnu packages perl)) + +(define-public aspell + (package + (name "aspell") + (version "0.60.6.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/aspell/aspell-" + version ".tar.gz")) + (sha256 + (base32 + "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl))) + (home-page "http://aspell.net/") + (synopsis + "GNU Aspell, A spell checker for many languages") + (description + "GNU Aspell is a free spell checker designed to eventually replace +Ispell. It can either be used as a library or as an independent spell +checker. Its main feature is that it does a superior job of suggesting +possible replacements for a misspelled word than just about any other +spell checker out there for the English language. Unlike Ispell, Aspell +can also easily check documents in UTF-8 without having to use a special +dictionary. Aspell will also do its best to respect the current locale +setting. Other advantages over Ispell include support for using +multiple dictionaries at once and intelligently handling personal +dictionaries when more than one Aspell process is open at once.") + (license lgpl2.1+))) diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm new file mode 100644 index 0000000000..2f8a0e0e65 --- /dev/null +++ b/gnu/packages/attr.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 attr) + #:use-module (guix licenses) + #:use-module (gnu packages perl) + #:use-module ((gnu packages gettext) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public attr + (package + (name "attr") + (version "2.4.46") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/attr/attr-" + version ".src.tar.gz")) + (sha256 + (base32 + "07qf6kb2zk512az481bbnsk9jycn477xpva1a726n5pzlzf9pmnw")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-cons-after + 'configure 'patch-makefile-SHELL + (lambda _ + (patch-makefile-SHELL "include/buildmacros")) + (alist-replace + 'install + (lambda _ + (zero? (system* "make" + "install" + "install-lib" + "install-dev"))) + (alist-replace + 'check + (lambda _ + ;; Use the right shell. + (substitute* "test/run" + (("/bin/sh") + (which "bash"))) + + (system* "make" "tests" "-C" "test") + + ;; XXX: Ignore the test result since this is dependent on the + ;; underlying file system. + #t) + %standard-phases))))) + (inputs `(("perl" ,perl) + ("gettext" ,guix:gettext))) + (home-page + "http://savannah.nongnu.org/projects/attr/") + (synopsis + "Library and tools for manipulating extended attributes") + (description + "Portable library and tools for manipulating extended attributes.") + (license '(gpl2+ lgpl2.1+)))) diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm new file mode 100644 index 0000000000..b5c8b6ec87 --- /dev/null +++ b/gnu/packages/autotools.scm @@ -0,0 +1,144 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 autotools) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages perl) + #:use-module (gnu packages m4) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public autoconf + (package + (name "autoconf") + (version "2.69") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/autoconf/autoconf-" + version ".tar.xz")) + (sha256 + (base32 + "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4")))) + (build-system gnu-build-system) + (inputs + `(("perl" ,perl) + ("m4" ,m4))) + ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It + ;; should use our own "cpp" instead of "/lib/cpp". + (arguments `(#:tests? #f)) + (home-page + "http://www.gnu.org/software/autoconf/") + (synopsis + "GNU Autoconf, a part of the GNU Build System") + (description + "GNU Autoconf is an extensible package of M4 macros that produce +shell scripts to automatically configure software source code +packages. These scripts can adapt the packages to many kinds of +UNIX-like systems without manual user intervention. Autoconf +creates a configuration script for a package from a template +file that lists the operating system features that the package +can use, in the form of M4 macro calls.") + (license gpl3+))) ; some files are under GPLv2+ + +(define-public automake + (package + (name "automake") + (version "1.12.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/automake/automake-" + version ".tar.xz")) + (sha256 + (base32 + "1ynvca8z4aqcwr94rf7j1bfiid2w9w250y9qhnyj9vmi8lhsnd7q")))) + (build-system gnu-build-system) + (inputs + `(("autoconf" ,autoconf) + ("perl" ,perl))) + (home-page + "http://www.gnu.org/software/automake/") + (synopsis + "GNU Automake, a GNU standard-compliant makefile generator") + (description + "GNU Automake is a tool for automatically generating +`Makefile.in' files compliant with the GNU Coding +Standards. Automake requires the use of Autoconf.") + (license gpl2+))) ; some files are under GPLv3+ + +(define-public libtool + (package + (name "libtool") + (version "2.4.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/libtool/libtool-" + version ".tar.gz")) + (sha256 + (base32 + "0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk")))) + (build-system gnu-build-system) + (native-inputs `(("m4" ,m4) + ("perl" ,perl))) + + ;; Separate binaries from the rest. During bootstrap, only ltdl is + ;; used; not depending on the binaries allows us to avoid retaining + ;; a reference to the bootstrap bash. + (outputs '("bin" ; libtoolize, libtool, etc. + "out")) ; libltdl.so, ltdl.h, etc. + + (arguments + `(#:patches (list (assoc-ref %build-inputs "patch/skip-tests")) + #:phases (alist-cons-before + 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + ;; Run the test suite in parallel, if possible. + (let ((ncores + (cond + ((getenv "NIX_BUILD_CORES") + => + (lambda (n) + (if (zero? (string->number n)) + (number->string (current-processor-count)) + n))) + (else "1")))) + (setenv "TESTSUITEFLAGS" + (string-append "-j" ncores))) + + ;; Path references to /bin/sh. + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "tests/testsuite" + (("/bin/sh") + (string-append bash "/bin/bash"))))) + %standard-phases))) + (inputs `(("patch/skip-tests" + ,(search-patch "libtool-skip-tests.patch")))) + (synopsis "GNU Libtool, a generic library support script") + (description + "GNU libtool is a generic library support script. Libtool hides the +complexity of using shared libraries behind a consistent, portable interface. + +To use libtool, add the new generic library building commands to your +Makefile, Makefile.in, or Makefile.am. See the documentation for +details.") + (license gpl3+) + (home-page "http://www.gnu.org/software/libtool/"))) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm new file mode 100644 index 0000000000..b5a5856609 --- /dev/null +++ b/gnu/packages/base.scm @@ -0,0 +1,1082 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 base) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages acl) + #:use-module (gnu packages bash) + #:use-module (gnu packages bootstrap) + #:use-module (gnu packages compression) + #:use-module (gnu packages gawk) + #:use-module (gnu packages guile) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages perl) + #:use-module (gnu packages linux) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) + #:use-module (guix utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match)) + +;;; Commentary: +;;; +;;; Base packages of the Guix-based GNU user-land software distribution. +;;; +;;; Code: + +(define-public hello + (package + (name "hello") + (version "2.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/hello/hello-" version + ".tar.gz")) + (sha256 + (base32 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6")))) + (build-system gnu-build-system) + (arguments '(#:configure-flags + `("--disable-dependency-tracking" + ,(string-append "--with-gawk=" ; for illustration purposes + (assoc-ref %build-inputs "gawk"))))) + (inputs `(("gawk" ,gawk))) + (synopsis "GNU Hello") + (description "Yeah...") + (home-page "http://www.gnu.org/software/hello/") + (license gpl3+))) + +(define-public grep + (package + (name "grep") + (version "2.14") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/grep/grep-" + version ".tar.xz")) + (sha256 + (base32 + "1qbjb1l7f9blckc5pqy8jlf6482hpx4awn2acmhyf5mv9wfq03p7")))) + (build-system gnu-build-system) + (synopsis "GNU implementation of the Unix grep command") + (description + "The grep command searches one or more input files for lines containing a +match to a specified pattern. By default, grep prints the matching +lines.") + (license gpl3+) + (home-page "http://www.gnu.org/software/grep/"))) + +(define-public sed + (package + (name "sed") + (version "4.2.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/sed/sed-" version + ".tar.bz2")) + (sha256 + (base32 + "13wlsb4sf5d5a82xjhxqmdvrrn36rmw5f0pl9qyb9zkvldnb7hra")))) + (build-system gnu-build-system) + (synopsis "GNU sed, a batch stream editor") + (arguments + `(#:phases (alist-cons-before + 'patch-source-shebangs 'patch-test-suite + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (patch-makefile-SHELL "testsuite/Makefile.tests") + (substitute* '("testsuite/bsd.sh" + "testsuite/bug-regex9.c") + (("/bin/sh") + (string-append bash "/bin/bash"))))) + %standard-phases))) + (description + "Sed (stream editor) isn't really a true text editor or text processor. +Instead, it is used to filter text, i.e., it takes text input and performs +some operation (or set of operations) on it and outputs the modified text. +Sed is typically used for extracting part of a file using pattern matching or +substituting multiple occurrences of a string within a file.") + (license gpl3+) + (home-page "http://www.gnu.org/software/sed/"))) + +(define-public tar + (package + (name "tar") + (version "1.26") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/tar/tar-" + version ".tar.bz2")) + (sha256 + (base32 + "0hbdkzmchq9ycr2x1pxqdcgdbaxksh8c6ac0jf75jajhcks6jlss")))) + (build-system gnu-build-system) + (inputs `(("patch/gets" ,(search-patch "tar-gets-undeclared.patch")))) + (arguments + `(#:patches (list (assoc-ref %build-inputs "patch/gets")))) + (synopsis "GNU implementation of the `tar' archiver") + (description + "The Tar program provides the ability to create tar archives, as well as +various other kinds of manipulation. For example, you can use Tar on +previously created archives to extract files, to store additional files, or +to update or list files which were already stored. + +Initially, tar archives were used to store files conveniently on magnetic +tape. The name \"Tar\" comes from this use; it stands for tape archiver. +Despite the utility's name, Tar can direct its output to available devices, +files, or other programs (using pipes), it can even access remote devices or +files (as archives).") + (license gpl3+) + (home-page "http://www.gnu.org/software/tar/"))) + +(define-public patch + (package + (name "patch") + (version "2.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/patch/patch-" + version ".tar.xz")) + (sha256 + (base32 + "18012gxs9wc96izskp1q7bclrwns6rdmkn4jj31c8jbyfz6l5npq")))) + (build-system gnu-build-system) + (native-inputs '()) ; FIXME: needs `ed' for the tests + (arguments + (case-lambda + ((system) '(#:tests? #f)) + ((system cross-system) + '(#:configure-flags '("ac_cv_func_strnlen_working=yes"))))) + (synopsis "GNU Patch, a program to apply differences to files") + (description + "GNU Patch takes a patch file containing a difference listing produced by +the diff program and applies those differences to one or more original files, +producing patched versions.") + (license gpl3+) + (home-page "http://savannah.gnu.org/projects/patch/"))) + +(define-public diffutils + (package + (name "diffutils") + (version "3.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/diffutils/diffutils-" + version ".tar.xz")) + (sha256 + (base32 + "0jci0wv68025xd0s0rq4s5qxpx56dd9d730lka63qpzk1rfvfkxb")))) + (build-system gnu-build-system) + (inputs `(("patch/gets" + ,(search-patch "diffutils-gets-undeclared.patch")))) + (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets")))) + (synopsis "Programs to find differences among text files") + (description + "GNU Diffutils is a package of several programs related to finding +differences between files. + +Computer users often find occasion to ask how two files differ. Perhaps one +file is a newer version of the other file. Or maybe the two files started out +as identical copies but were changed by different people. + +You can use the diff command to show differences between two files, or each +corresponding file in two directories. diff outputs differences between files +line by line in any of several formats, selectable by command line +options. This set of differences is often called a ‘diff’ or ‘patch’. For +files that are identical, diff normally produces no output; for +binary (non-text) files, diff normally reports only that they are different. + +You can use the cmp command to show the offsets and line numbers where two +files differ. cmp can also show all the characters that differ between the +two files, side by side. + +You can use the diff3 command to show differences among three files. When two +people have made independent changes to a common original, diff3 can report +the differences between the original and the two changed versions, and can +produce a merged file that contains both persons' changes together with +warnings about conflicts. + +You can use the sdiff command to merge two files interactively.") + (license gpl3+) + (home-page "http://www.gnu.org/software/diffutils/"))) + +(define-public findutils + (package + (name "findutils") + (version "4.4.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/findutils/findutils-" + version ".tar.gz")) + (sha256 + (base32 + "0amn0bbwqvsvvsh6drfwz20ydc2czk374lzw5kksbh6bf78k4ks3")))) + (build-system gnu-build-system) + (native-inputs + `(("patch/absolute-paths" + ,(search-patch "findutils-absolute-paths.patch")))) + (arguments + (case-lambda + ((system) + `(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths")))) + ((system cross-system) + ;; Work around cross-compilation failure. + ;; See <http://savannah.gnu.org/bugs/?27299#comment1>. + `(#:configure-flags '("gl_cv_func_wcwidth_works=yes") + ,@(arguments cross-system))))) + (synopsis "Basic directory searching utilities of the GNU operating +system") + (description + "The GNU Find Utilities are the basic directory searching utilities of +the GNU operating system. These programs are typically used in conjunction +with other programs to provide modular and powerful directory search and file +locating capabilities to other commands. + +The tools supplied with this package are: + + * find - search for files in a directory hierarchy; + * locate - list files in databases that match a pattern; + * updatedb - update a file name database; + * xargs - build and execute command lines from standard input. +") + (license gpl3+) + (home-page "http://www.gnu.org/software/findutils/"))) + +(define-public coreutils + (package + (name "coreutils") + (version "8.20") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/coreutils/coreutils-" + version ".tar.xz")) + (sha256 + (base32 + "1cly97xdy3v4nbbx631k43smqw0nnpn651kkprs0yyl2cj3pkjyv")))) + (build-system gnu-build-system) + (inputs `(("acl" ,acl) + ("gmp" ,gmp) + ("perl" ,perl))) ; TODO: add SELinux + (arguments + `(#:parallel-build? #f ; help2man may be called too early + #:phases (alist-cons-before + 'build 'patch-shell-references + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* (cons "src/split.c" + (find-files "gnulib-tests" + "\\.c$")) + (("/bin/sh") + (format #f "~a/bin/sh" bash))) + (substitute* (find-files "tests" "\\.sh$") + (("#!/bin/sh") + (format #f "#!~a/bin/bash" bash))))) + %standard-phases))) + (synopsis + "The basic file, shell and text manipulation utilities of the GNU +operating system") + (description + "The GNU Core Utilities are the basic file, shell and text manipulation +utilities of the GNU operating system. These are the core utilities which +are expected to exist on every operating system.") + (license gpl3+) + (home-page "http://www.gnu.org/software/coreutils/"))) + +(define-public gnu-make + (package + (name "make") + (version "3.82") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" version + ".tar.bz2")) + (sha256 + (base32 + "0ri98385hsd7li6rh4l5afcq92v8l2lgiaz85wgcfh4w2wzsghg2")))) + (build-system gnu-build-system) + (native-inputs + `(("patch/impure-dirs" ,(search-patch "make-impure-dirs.patch")))) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/impure-dirs")) + #:phases (alist-cons-before + 'build 'set-default-shell + (lambda* (#:key inputs #:allow-other-keys) + ;; Change the default shell from /bin/sh. + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "job.c" + (("default_shell\\[\\] =.*$") + (format #f "default_shell[] = \"~a/bin/bash\";\n" + bash))))) + %standard-phases))) + (synopsis "GNU Make, a program controlling the generation of non-source +files from sources") + (description + "Make is a tool which controls the generation of executables and other +non-source files of a program from the program's source files. + +Make gets its knowledge of how to build your program from a file called the +makefile, which lists each of the non-source files and how to compute it from +other files. When you write a program, you should write a makefile for it, so +that it is possible to use Make to build and install the program.") + (license gpl3+) + (home-page "http://www.gnu.org/software/make/"))) + +(define-public binutils + (package + (name "binutils") + (version "2.22") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (sha256 + (base32 + "1a9w66v5dwvbnawshjwqcgz7km6kw6ihkzp6sswv9ycc3knzhykc")))) + (build-system gnu-build-system) + + ;; Split Binutils in several outputs, mostly to avoid collisions in + ;; user profiles with GCC---e.g., libiberty.a. + (outputs '("out" ; ar, ld, binutils.info, etc. + "lib")) ; libbfd.a, bfd.h, etc. + + ;; TODO: Add dependency on zlib + those for Gold. + (native-inputs + `(("patch/new-dtags" ,(search-patch "binutils-ld-new-dtags.patch")))) + (arguments + `(#:patches (list (assoc-ref %build-inputs "patch/new-dtags")) + #:configure-flags '(;; Add `-static-libgcc' to not retain a dependency + ;; on GCC when bootstrapping. + "LDFLAGS=-static-libgcc" + + ;; Don't search under /usr/lib & co. + "--with-lib-path=/no-ld-lib-path"))) + + (synopsis "GNU Binutils, tools for manipulating binaries (linker, +assembler, etc.)") + (description + "The GNU Binutils are a collection of binary tools. The main ones are +`ld' (the GNU linker) and `as' (the GNU assembler). They also include the +BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.") + (license gpl3+) + (home-page "http://www.gnu.org/software/binutils/"))) + +(define-public gcc-4.7 + (let ((stripped? #t)) ; TODO: make this a parameter + (package + (name "gcc") + (version "4.7.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "115h03hil99ljig8lkrq4qk426awmzh0g99wrrggxf8g07bq74la")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp) + ("mpfr" ,mpfr) + ("mpc" ,mpc))) ; TODO: libelf, ppl, cloog, zlib, etc. + (arguments + (lambda (system) + `(#:out-of-source? #t + #:strip-binaries? ,stripped? + #:configure-flags + `("--enable-plugin" + "--enable-languages=c,c++" + "--disable-multilib" + + "--with-local-prefix=/no-gcc-local-prefix" + + ,(let ((libc (assoc-ref %build-inputs "libc"))) + (if libc + (string-append "--with-native-system-header-dir=" libc + "/include") + "--without-headers"))) + #:make-flags + (let ((libc (assoc-ref %build-inputs "libc"))) + `(,@(if libc + (list (string-append "LDFLAGS_FOR_BUILD=" + "-L" libc "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc + ,(glibc-dynamic-linker system))) + '()) + ,(string-append "BOOT_CFLAGS=-O2 " + ,(if stripped? "-g0" "-g")))) + + #:tests? #f + #:phases + (alist-cons-before + 'configure 'pre-configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (libc (assoc-ref inputs "libc"))) + (when libc + ;; The following is not performed for `--without-headers' + ;; cross-compiler builds. + + ;; Fix the dynamic linker's file name. + (substitute* (find-files "gcc/config" + "^linux(64|-elf)?\\.h$") + (("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix) + (format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%" + suffix + (string-append libc ,(glibc-dynamic-linker system))))) + + ;; Tell where to find libstdc++, libc, and `?crt*.o', except + ;; `crt{begin,end}.o', which come with GCC. + (substitute* (find-files "gcc/config" + "^(gnu-user(64)?|linux-elf)\\.h$") + (("#define LIB_SPEC (.*)$" _ suffix) + ;; Note that with this "lib" spec, we may still add a + ;; RUNPATH to GCC even when `libgcc_s' is not NEEDED. + ;; There's not much that can be done to avoid it, though. + (format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \ +%{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a~%" + libc libc out out suffix)) + (("#define STARTFILE_SPEC.*$" line) + (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\" +#define STANDARD_STARTFILE_PREFIX_2 \"\" +~a~%" + libc line)))) + + ;; Don't retain a dependency on the build-time sed. + (substitute* "fixincludes/fixincl.x" + (("static char const sed_cmd_z\\[\\] =.*;") + "static char const sed_cmd_z[] = \"sed\";")))) + + (alist-cons-after + 'configure 'post-configure + (lambda _ + ;; Don't store configure flags, to avoid retaining references to + ;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'. + (substitute* "Makefile" + (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest) + "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))) + (alist-replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (zero? + (system* "make" + ,(if stripped? + "install-strip" + "install")))) + %standard-phases)))))) + + (properties `((gcc-libc . ,(assoc-ref inputs "libc")))) + (synopsis "The GNU Compiler Collection") + (description + "The GNU Compiler Collection includes compiler front ends for C, C++, +Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well as +libraries for these languages (libstdc++, libgcj, libgomp,...). + +GCC development is a part of the GNU Project, aiming to improve the compiler +used in the GNU system including the GNU/Linux variant.") + (license gpl3+) + (home-page "http://gcc.gnu.org/")))) + +(define-public glibc + (package + (name "glibc") + (version "2.17") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glibc/glibc-" + version ".tar.xz")) + (sha256 + (base32 + "0gmjnn4kma9vgizccw1jv979xw55a8n1nkk94gg0l3hy80vy6539")))) + (build-system gnu-build-system) + + ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc + ;; users should automatically pull Linux headers as well. + (propagated-inputs `(("linux-headers" ,linux-libre-headers))) + + (arguments + `(#:out-of-source? #t + #:patches (list (assoc-ref %build-inputs "patch/ld.so.cache")) + #:configure-flags + (list "--enable-add-ons" + "--sysconfdir=/etc" + "--localedir=/var/run/current-system/sw/lib/locale" ; XXX + (string-append "--with-headers=" + (assoc-ref %build-inputs "linux-headers") + "/include") + + ;; The default is to assume a 2.4 Linux interface, but we'll + ;; always use something newer. See "kernel-features.h" in the + ;; GNU libc for details. + "--enable-kernel=2.6.30" + + ;; Use our Bash instead of /bin/sh. + (string-append "BASH_SHELL=" + (assoc-ref %build-inputs "bash") + "/bin/bash") + + ;; XXX: Work around "undefined reference to `__stack_chk_guard'". + "libc_cv_ssp=no") + + #:tests? #f ; XXX + #:phases (alist-cons-before + 'configure 'pre-configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + ;; Use `pwd', not `/bin/pwd'. + (substitute* "configure" + (("/bin/pwd") "pwd")) + + ;; Install the rpc data base file under `$out/etc/rpc'. + ;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ]; + (substitute* "sunrpc/Makefile" + (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix) + (string-append out "/etc/rpc" suffix "\n")) + (("^install-others =.*$") + (string-append "install-others = " out "/etc/rpc\n"))) + + (substitute* "Makeconfig" + ;; According to + ;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>, + ;; linking against libgcc_s is not needed with GCC + ;; 4.7.1. + ((" -lgcc_s") "")) + + ;; Copy a statically-linked Bash in the output, with + ;; no references to other store paths. + (mkdir-p bin) + (copy-file (string-append (assoc-ref inputs "static-bash") + "/bin/bash") + (string-append bin "/bash")) + (remove-store-references (string-append bin "/bash")) + (chmod (string-append bin "/bash") #o555) + + ;; Keep a symlink, for `patch-shebang' resolution. + (with-directory-excursion bin + (symlink "bash" "sh")) + + ;; Have `system' use that Bash. + (substitute* "sysdeps/posix/system.c" + (("#define[[:blank:]]+SHELL_PATH.*$") + (format #f "#define SHELL_PATH \"~a/bin/bash\"\n" + out))) + + ;; Same for `popen'. + (substitute* "libio/iopopen.c" + (("/bin/sh") + (string-append out "/bin/bash"))))) + %standard-phases))) + (inputs `(("patch/ld.so.cache" + ,(search-patch "glibc-no-ld-so-cache.patch")) + ("static-bash" ,(static-package bash-light)))) + (synopsis "The GNU C Library") + (description + "Any Unix-like operating system needs a C library: the library which +defines the \"system calls\" and other basic facilities such as open, malloc, +printf, exit... + +The GNU C library is used as the C library in the GNU system and most systems +with the Linux kernel.") + (license lgpl2.0+) + (home-page "http://www.gnu.org/software/libc/"))) + + +;;; +;;; Bootstrap packages. +;;; + +(define gnu-make-boot0 + (package-with-bootstrap-guile + (package (inherit gnu-make) + (name "make-boot0") + (location (source-properties->location (current-source-location))) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:tests? #f ; cannot run "make check" + ,@(substitute-keyword-arguments (package-arguments gnu-make) + ((#:phases phases) + `(alist-replace + 'build (lambda _ + (zero? (system* "./build.sh"))) + (alist-replace + 'install (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (copy-file "make" + (string-append bin "/make")))) + ,phases)))))) + (inputs %bootstrap-inputs)))) + +(define diffutils-boot0 + (package-with-bootstrap-guile + (let ((p (package-with-explicit-inputs diffutils + `(("make" ,gnu-make-boot0) + ,@%bootstrap-inputs) + #:guile %bootstrap-guile))) + (package (inherit p) + (location (source-properties->location (current-source-location))) + (arguments `(#:tests? #f ; the test suite needs diffutils + ,@(package-arguments p))))))) + +(define findutils-boot0 + (package-with-bootstrap-guile + (package-with-explicit-inputs findutils + `(("make" ,gnu-make-boot0) + ("diffutils" ,diffutils-boot0) ; for tests + ,@%bootstrap-inputs) + (current-source-location) + #:guile %bootstrap-guile))) + + +(define %boot0-inputs + `(("make" ,gnu-make-boot0) + ("diffutils" ,diffutils-boot0) + ("findutils" ,findutils-boot0) + ,@%bootstrap-inputs)) + +(define* (nix-system->gnu-triplet system #:optional (vendor "unknown")) + "Return an a guess of the GNU triplet corresponding to Nix system +identifier SYSTEM." + (let* ((dash (string-index system #\-)) + (arch (substring system 0 dash)) + (os (substring system (+ 1 dash)))) + (string-append arch + "-" vendor "-" + (if (string=? os "linux") + "linux-gnu" + os)))) + +(define boot-triplet + ;; Return the triplet used to create the cross toolchain needed in the + ;; first bootstrapping stage. + (cut nix-system->gnu-triplet <> "guix")) + +;; Following Linux From Scratch, build a cross-toolchain in stage 0. That +;; toolchain actually targets the same OS and arch, but it has the advantage +;; of being independent of the libc and tools in %BOOTSTRAP-INPUTS, since +;; GCC-BOOT0 (below) is built without any reference to the target libc. + +(define binutils-boot0 + (package-with-bootstrap-guile + (package (inherit binutils) + (name "binutils-cross-boot0") + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(substitute-keyword-arguments (package-arguments binutils) + ((#:configure-flags cf) + `(list ,(string-append "--target=" (boot-triplet system)))))))) + (inputs %boot0-inputs)))) + +(define gcc-boot0 + (package-with-bootstrap-guile + (package (inherit gcc-4.7) + (name "gcc-cross-boot0") + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 regex) + (srfi srfi-1) + (srfi srfi-26)) + ,@(substitute-keyword-arguments ((package-arguments gcc-4.7) system) + ((#:configure-flags flags) + `(append (list ,(string-append "--target=" + (boot-triplet system)) + + ;; No libc yet. + "--without-headers" + + ;; Disable features not needed at this stage. + "--disable-shared" + "--enable-languages=c" + "--disable-libmudflap" + "--disable-libgomp" + "--disable-libssp" + "--disable-libquadmath" + "--disable-decimal-float") + (remove (cut string-match "--enable-languages.*" <>) + ,flags))) + ((#:phases phases) + `(alist-cons-after + 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) + + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (or (zero? (system* "tar" "xvf" source)) + (error "failed to unpack tarball" + source))) + (list gmp mpfr mpc)) + + ;; Create symlinks like `gmp' -> `gmp-5.0.5'. + ,@(map (lambda (lib) + `(symlink ,(package-full-name lib) + ,(package-name lib))) + (list gmp mpfr mpc)) + + ;; MPFR headers/lib are found under $(MPFR)/src, but + ;; `configure' wrongfully tells MPC too look under + ;; $(MPFR), so fix that. + (substitute* "configure" + (("extra_mpc_mpfr_configure_flags(.+)--with-mpfr-include=([^/]+)/mpfr(.*)--with-mpfr-lib=([^ ]+)/mpfr" + _ equals include middle lib) + (string-append "extra_mpc_mpfr_configure_flags" equals + "--with-mpfr-include=" include + "/mpfr/src" middle + "--with-mpfr-lib=" lib + "/mpfr/src")) + (("gmpinc='-I([^ ]+)/mpfr -I([^ ]+)/mpfr" _ a b) + (string-append "gmpinc='-I" a "/mpfr/src " + "-I" b "/mpfr/src")) + (("gmplibs='-L([^ ]+)/mpfr" _ a) + (string-append "gmplibs='-L" a "/mpfr/src"))))) + (alist-cons-after + 'install 'symlink-libgcc_eh + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Glibc wants to link against libgcc_eh, so provide + ;; it. + (with-directory-excursion + (string-append out "/lib/gcc/" + ,(boot-triplet system) + "/" ,(package-version gcc-4.7)) + (symlink "libgcc.a" "libgcc_eh.a")))) + ,phases))))))) + + (inputs `(("gmp-source" ,(package-source gmp)) + ("mpfr-source" ,(package-source mpfr)) + ("mpc-source" ,(package-source mpc)) + ("binutils-cross" ,binutils-boot0) + + ;; Call it differently so that the builder can check whether + ;; the "libc" input is #f. + ("libc-native" ,@(assoc-ref %boot0-inputs "libc")) + ,@(alist-delete "libc" %boot0-inputs)))))) + +(define linux-libre-headers-boot0 + (package-with-bootstrap-guile + (package (inherit linux-libre-headers) + (arguments `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments linux-libre-headers))) + (native-inputs + (let ((perl (package-with-explicit-inputs perl + %boot0-inputs + (current-source-location) + #:guile %bootstrap-guile))) + `(("perl" ,perl) + ,@%boot0-inputs)))))) + +(define %boot1-inputs + ;; 2nd stage inputs. + `(("gcc" ,gcc-boot0) + ("binutils-cross" ,binutils-boot0) + + ;; Keep "binutils" here because the cross-gcc invokes `as', not the + ;; cross-`as'. + ,@%boot0-inputs)) + +(define glibc-final-with-bootstrap-bash + ;; The final libc, "cross-built". If everything went well, the resulting + ;; store path has no dependencies. Actually, the really-final libc is + ;; built just below; the only difference is that this one uses the + ;; bootstrap Bash. + (package-with-bootstrap-guile + (package (inherit glibc) + (name "glibc-intermediate") + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + + ,@(substitute-keyword-arguments (package-arguments glibc) + ((#:configure-flags flags) + `(append (list ,(string-append "--host=" (boot-triplet system)) + ,(string-append "--build=" + (nix-system->gnu-triplet system)) + + ;; Build Sun/ONC RPC support. In particular, + ;; install rpc/*.h. + "--enable-obsolete-rpc") + ,flags)))))) + (propagated-inputs `(("linux-headers" ,linux-libre-headers-boot0))) + (inputs + `( ;; A native GCC is needed to build `cross-rpcgen'. + ("native-gcc" ,@(assoc-ref %boot0-inputs "gcc")) + + ;; Here, we use the bootstrap Bash, which is not satisfactory + ;; because we don't want to depend on bootstrap tools. + ("static-bash" ,@(assoc-ref %boot0-inputs "bash")) + + ,@%boot1-inputs + ,@(alist-delete "static-bash" + (package-inputs glibc))))))) ; patches + +(define (cross-gcc-wrapper gcc binutils glibc bash) + "Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC +that makes it available under the native tool names." + (package (inherit gcc-4.7) + (name (string-append (package-name gcc) "-wrapped")) + (source #f) + (build-system trivial-build-system) + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + + (let* ((binutils (assoc-ref %build-inputs "binutils")) + (gcc (assoc-ref %build-inputs "gcc")) + (libc (assoc-ref %build-inputs "libc")) + (bash (assoc-ref %build-inputs "bash")) + (out (assoc-ref %outputs "out")) + (bindir (string-append out "/bin")) + (triplet ,(boot-triplet system))) + (mkdir-p bindir) + (with-directory-excursion bindir + (for-each (lambda (tool) + (symlink (string-append binutils "/bin/" + triplet "-" tool) + tool)) + '("ar" "ranlib")) + + ;; GCC-BOOT0 is a libc-less cross-compiler, so it + ;; needs to be told where to find the crt files and + ;; the dynamic linker. + (call-with-output-file "gcc" + (lambda (p) + (format p "#!~a/bin/bash +exec ~a/bin/~a-gcc -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" + bash + gcc triplet + libc libc + ,(glibc-dynamic-linker system)))) + + (chmod "gcc" #o555))))))) + (native-inputs + `(("binutils" ,binutils) + ("gcc" ,gcc) + ("libc" ,glibc) + ("bash" ,bash))) + (inputs '()))) + +(define static-bash-for-glibc + ;; A statically-linked Bash to be embedded in GLIBC-FINAL, for use by + ;; system(3) & co. + (let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0 + glibc-final-with-bootstrap-bash + (car (assoc-ref %boot1-inputs "bash")))) + (bash (package (inherit bash-light) + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + ,@(package-arguments bash-light))))))) + (package-with-bootstrap-guile + (package-with-explicit-inputs (static-package bash) + `(("gcc" ,gcc) + ("libc" ,glibc-final-with-bootstrap-bash) + ,@(fold alist-delete %boot1-inputs + '("gcc" "libc"))) + (current-source-location))))) + +(define-public glibc-final + ;; The final glibc, which embeds the statically-linked Bash built above. + (package (inherit glibc-final-with-bootstrap-bash) + (name "glibc") + (inputs `(("static-bash" ,static-bash-for-glibc) + ,@(alist-delete + "static-bash" + (package-inputs glibc-final-with-bootstrap-bash)))))) + +(define gcc-boot0-wrapped + ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the + ;; non-cross names. + (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final + (car (assoc-ref %boot1-inputs "bash")))) + +(define %boot2-inputs + ;; 3rd stage inputs. + `(("libc" ,glibc-final) + ("gcc" ,gcc-boot0-wrapped) + ,@(fold alist-delete %boot1-inputs '("libc" "gcc")))) + +(define-public binutils-final + (package-with-bootstrap-guile + (package (inherit binutils) + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments binutils)))) + (inputs %boot2-inputs)))) + +(define-public gcc-final + ;; The final GCC. + (package (inherit gcc-boot0) + (name "gcc") + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + + ;; Build again GMP & co. within GCC's build process, because it's hard + ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus + ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) + ,@(substitute-keyword-arguments ((package-arguments gcc-boot0) system) + ((#:configure-flags boot-flags) + (let loop ((args ((package-arguments gcc-4.7) system))) + (match args + ((#:configure-flags normal-flags _ ...) + normal-flags) + ((_ rest ...) + (loop rest))))) + ((#:phases phases) + `(alist-delete 'symlink-libgcc_eh ,phases)))))) + + (inputs `(("gmp-source" ,(package-source gmp)) + ("mpfr-source" ,(package-source mpfr)) + ("mpc-source" ,(package-source mpc)) + ("binutils" ,binutils-final) + ,@%boot2-inputs)))) + +(define ld-wrapper-boot3 + ;; A linker wrapper that uses the bootstrap Guile. + (package + (name "ld-wrapper-boot3") + (version "0") + (source #f) + (build-system trivial-build-system) + (inputs `(("binutils" ,binutils-final) + ("guile" ,%bootstrap-guile) + ("bash" ,@(assoc-ref %boot2-inputs "bash")) + ("wrapper" ,(search-path %load-path + "gnu/packages/ld-wrapper.scm")))) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils) + (system base compile)) + + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (ld (string-append bin "/ld")) + (go (string-append bin "/ld.go"))) + + (setvbuf (current-output-port) _IOLBF) + (format #t "building ~s/bin/ld wrapper in ~s~%" + (assoc-ref %build-inputs "binutils") + out) + + (mkdir-p bin) + (copy-file (assoc-ref %build-inputs "wrapper") ld) + (substitute* ld + (("@GUILE@") + (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (("@BASH@") + (string-append (assoc-ref %build-inputs "bash") + "/bin/bash")) + (("@LD@") + (string-append (assoc-ref %build-inputs "binutils") + "/bin/ld"))) + (chmod ld #o555) + (compile-file ld #:output-file go))))) + (synopsis "The linker wrapper") + (description + "The linker wrapper (or `ld-wrapper') wraps the linker to add any +missing `-rpath' flags, and to detect any misuse of libraries outside of the +store.") + (home-page #f) + (license gpl3+))) + +(define %boot3-inputs + ;; 4th stage inputs. + `(("gcc" ,gcc-final) + ("ld-wrapper" ,ld-wrapper-boot3) + ,@(alist-delete "gcc" %boot2-inputs))) + +(define-public bash-final + ;; Link with `-static-libgcc' to make sure we don't retain a reference + ;; to the bootstrap GCC. + (package-with-bootstrap-guile + (package-with-explicit-inputs (static-libgcc-package bash) + %boot3-inputs + (current-source-location) + #:guile %bootstrap-guile))) + +(define %boot4-inputs + ;; Now use the final Bash. + `(("bash" ,bash-final) + ,@(alist-delete "bash" %boot3-inputs))) + +(define-public guile-final + (package-with-bootstrap-guile + (package-with-explicit-inputs guile-2.0/fixed + %boot4-inputs + (current-source-location) + #:guile %bootstrap-guile))) + +(define-public ld-wrapper + ;; The final `ld' wrapper, which uses the final Guile. + (package (inherit ld-wrapper-boot3) + (name "ld-wrapper") + (inputs `(("guile" ,guile-final) + ("bash" ,bash-final) + ,@(fold alist-delete (package-inputs ld-wrapper-boot3) + '("guile" "bash")))))) + +(define-public %final-inputs + ;; Final derivations used as implicit inputs by `gnu-build-system'. + (let ((finalize (cut package-with-explicit-inputs <> %boot4-inputs + (current-source-location)))) + `(,@(map (match-lambda + ((name package) + (list name (finalize package)))) + `(("tar" ,tar) + ("gzip" ,gzip) + ("bzip2" ,bzip2) + ("xz" ,xz) + ("diffutils" ,diffutils) + ("patch" ,patch) + ("coreutils" ,coreutils) + ("sed" ,sed) + ("grep" ,grep) + ("findutils" ,findutils) + ("gawk" ,gawk) + ("make" ,gnu-make))) + ("bash" ,bash-final) + ("ld-wrapper" ,ld-wrapper) + ("binutils" ,binutils-final) + ("gcc" ,gcc-final) + ("libc" ,glibc-final)))) + +;;; base.scm ends here diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm new file mode 100644 index 0000000000..d74315ad18 --- /dev/null +++ b/gnu/packages/bash.scm @@ -0,0 +1,110 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 bash) + #:use-module (guix licenses) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages readline) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public bash + (let ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'" + "-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'" + "-DDEFAULT_PATH_VALUE='\"/no-such-path\"'" + "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'" + "-DNON_INTERACTIVE_LOGIN_SHELLS" + "-DSSH_SOURCE_BASHRC") + " ")) + (post-install-phase + '(lambda* (#:key outputs #:allow-other-keys) + ;; Add a `bash' -> `sh' link. + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion (string-append out "/bin") + (symlink "bash" "sh")))))) + (package + (name "bash") + (version "4.2") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/bash/bash-" version ".tar.gz")) + (sha256 + (base32 + "1n5kbblp5ykbz5q8aq88lsif2z0gnvddg9babk33024wxiwi2ym2")))) + (build-system gnu-build-system) + (inputs `(("readline" ,readline) + ("ncurses" ,ncurses))) ; TODO: add texinfo + (arguments + `(#:configure-flags `("--with-installed-readline" + ,,(string-append "CPPFLAGS=" cppflags) + ,(string-append + "LDFLAGS=-Wl,-rpath -Wl," + (assoc-ref %build-inputs "readline") + "/lib" + " -Wl,-rpath -Wl," + (assoc-ref %build-inputs "ncurses") + "/lib")) + + ;; Bash is reportedly not parallel-safe. See, for instance, + ;; <http://patches.openembedded.org/patch/32745/> and + ;; <http://git.buildroot.net/buildroot/commit/?h=79e2d802ae7e376a413c02097790493e1f65c3a4>. + #:parallel-build? #f + #:parallel-tests? #f + + ;; XXX: The tests have a lot of hard-coded paths, so disable them + ;; for now. + #:tests? #f + + #:phases (alist-cons-after 'install 'post-install + ,post-install-phase + %standard-phases))) + (synopsis "GNU Bourne-Again Shell") + (description + "Bash is the shell, or command language interpreter, that will appear in +the GNU operating system. Bash is an sh-compatible shell that incorporates +useful features from the Korn shell (ksh) and C shell (csh). It is intended +to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It +offers functional improvements over sh for both programming and interactive +use. In addition, most sh scripts can be run by Bash without +modification.") + (license gpl3+) + (home-page "http://www.gnu.org/software/bash/")))) + +(define-public bash-light + ;; A stripped-down Bash for non-interactive use. + (package (inherit bash) + (name "bash-light") + (inputs '()) ; no readline, no curses + (arguments + (let ((args `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1) + (srfi srfi-26)) + ,@(package-arguments bash)))) + (substitute-keyword-arguments args + ((#:configure-flags flags) + `(list "--without-bash-malloc" + "--disable-readline" + "--disable-history" + "--disable-help-builtin" + "--disable-progcomp" + "--disable-net-redirections" + "--disable-nls"))))))) diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm new file mode 100644 index 0000000000..1be57b302a --- /dev/null +++ b/gnu/packages/bdb.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 bdb) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public bdb + (package + (name "bdb") + (version "5.3.21") + (source (origin + (method url-fetch) + (uri (string-append "http://download.oracle.com/berkeley-db/db-" version + ".tar.gz")) + (sha256 (base32 + "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx")))) + (build-system gnu-build-system) + (arguments + (lambda (system) + `(#:tests? #f ; no check target available + #:phases + (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? + (system* "./dist/configure" + (string-append "--prefix=" out) + (string-append "CONFIG_SHELL=" (which "bash")) + (string-append "SHELL=" (which "bash")))))) + %standard-phases)))) + (synopsis "db, the Berkeley database") + (description + "Berkeley DB is an embeddable database allowing developers the choice of +SQL, Key/Value, XML/XQuery or Java Object storage for their data model.") + (license (bsd-style "file://LICENSE" + "See LICENSE in the distribution.")) + (home-page "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html"))) diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm new file mode 100644 index 0000000000..65c2fd99ce --- /dev/null +++ b/gnu/packages/bdw-gc.scm @@ -0,0 +1,60 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 bdw-gc) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public libgc + (package + (name "libgc") + (version "7.2alpha6") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-" + version ".tar.gz")) + (sha256 + (base32 + "05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b")))) + (build-system gnu-build-system) + (synopsis "The Boehm-Demers-Weiser conservative garbage collector +for C and C++") + (description + "The Boehm-Demers-Weiser conservative garbage collector can be used +as a garbage collecting replacement for C malloc or C++ new. It allows +you to allocate memory basically as you normally would, without +explicitly deallocating memory that is no longer useful. The collector +automatically recycles memory when it determines that it can no longer +be otherwise accessed. + +The collector is also used by a number of programming language +implementations that either use C as intermediate code, want to +facilitate easier interoperation with C libraries, or just prefer the +simple collector interface. + +Alternatively, the garbage collector may be used as a leak detector for +C or C++ programs, though that is not its primary goal.") + (home-page "http://www.hpl.hp.com/personal/Hans_Boehm/gc/") + + ;; permissive X11-style license: + ;; http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt + (license x11))) diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm new file mode 100644 index 0000000000..95ffb17522 --- /dev/null +++ b/gnu/packages/bison.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 bison) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages m4) + #:use-module (gnu packages perl)) + +(define-public bison + (package + (name "bison") + (version "2.6.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/bison/bison-" + version ".tar.xz")) + (sha256 + (base32 + "0y9svfkbw8jc8yv280hqzilpvlwg60gayck83jj98djmzaxr1w86")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl))) + (propagated-inputs `(("m4" ,m4))) + (home-page "http://www.gnu.org/software/bison/") + (synopsis + "GNU Bison, a Yacc-compatible parser generator") + (description + "Bison is a general-purpose parser generator that converts an +annotated context-free grammar into an LALR(1) or GLR parser for +that grammar. Once you are proficient with Bison, you can use +it to develop a wide range of language parsers, from those used +in simple desk calculators to complex programming languages. + +Bison is upward compatible with Yacc: all properly-written Yacc +grammars ought to work with Bison with no change. Anyone +familiar with Yacc should be able to use Bison with little +trouble. You need to be fluent in C or C++ programming in order +to use Bison.") + (license gpl3+))) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm new file mode 100644 index 0000000000..6cad933644 --- /dev/null +++ b/gnu/packages/bootstrap.scm @@ -0,0 +1,378 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 bootstrap) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) + #:use-module ((guix store) #:select (add-to-store add-text-to-store)) + #:use-module ((guix derivations) #:select (derivation)) + #:use-module (guix utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match) + #:export (bootstrap-origin + package-with-bootstrap-guile + glibc-dynamic-linker + + %bootstrap-guile + %bootstrap-coreutils&co + %bootstrap-binutils + %bootstrap-gcc + %bootstrap-glibc + %bootstrap-inputs)) + +;;; Commentary: +;;; +;;; Pre-built packages that are used to bootstrap the +;;; distribution--i.e., to build all the core packages from scratch. +;;; +;;; Code: + + + +;;; +;;; Helper procedures. +;;; + +(define (bootstrap-origin source) + "Return a variant of SOURCE, an <origin> instance, whose method uses +%BOOTSTRAP-GUILE to do its job." + (define (boot fetch) + (lambda* (store url hash-algo hash + #:optional name #:key system) + (fetch store url hash-algo hash + #:guile %bootstrap-guile + #:system system))) + + (let ((orig-method (origin-method source))) + (origin (inherit source) + (method (cond ((eq? orig-method url-fetch) + (boot url-fetch)) + (else orig-method)))))) + +(define (package-from-tarball name* source* program-to-test description*) + "Return a package that correspond to the extraction of SOURCE*. +PROGRAM-TO-TEST is a program to run after extraction of SOURCE*, to +check whether everything is alright." + (package + (name name*) + (version "0") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder + (let ((out (assoc-ref %outputs "out")) + (tar (assoc-ref %build-inputs "tar")) + (xz (assoc-ref %build-inputs "xz")) + (tarball (assoc-ref %build-inputs "tarball"))) + (use-modules (guix build utils)) + + (mkdir out) + (copy-file tarball "binaries.tar.xz") + (system* xz "-d" "binaries.tar.xz") + (let ((builddir (getcwd))) + (with-directory-excursion out + (and (zero? (system* tar "xvf" + (string-append builddir "/binaries.tar"))) + (zero? (system* (string-append "bin/" ,program-to-test) + "--version")))))))) + (inputs + `(("tar" ,(lambda (system) + (search-bootstrap-binary "tar" system))) + ("xz" ,(lambda (system) + (search-bootstrap-binary "xz" system))) + ("tarball" ,(lambda (system) + (bootstrap-origin (source* system)))))) + (synopsis description*) + (description #f) + (home-page #f))) + +(define package-with-bootstrap-guile + (memoize + (lambda (p) + "Return a variant of P such that all its origins are fetched with +%BOOTSTRAP-GUILE." + (define rewritten-input + (match-lambda + ((name (? origin? o)) + `(,name ,(bootstrap-origin o))) + ((name (? package? p) sub-drvs ...) + `(,name ,(package-with-bootstrap-guile p) ,@sub-drvs)) + (x x))) + + (package (inherit p) + (source (match (package-source p) + ((? origin? o) (bootstrap-origin o)) + (s s))) + (inputs (map rewritten-input + (package-inputs p))) + (native-inputs (map rewritten-input + (package-native-inputs p))) + (propagated-inputs (map rewritten-input + (package-propagated-inputs p))))))) + +(define (glibc-dynamic-linker system) + "Return the name of Glibc's dynamic linker for SYSTEM." + (cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2") + ((string=? system "i686-linux") "/lib/ld-linux.so.2") + (else (error "dynamic linker name not known for this system" + system)))) + + +;;; +;;; Bootstrap packages. +;;; + +(define %bootstrap-guile + ;; The Guile used to run the build scripts of the initial derivations. + ;; It is just unpacked from a tarball containing a pre-built binary. + ;; This is typically built using %GUILE-BOOTSTRAP-TARBALL below. + ;; + ;; XXX: Would need libc's `libnss_files2.so' for proper `getaddrinfo' + ;; support (for /etc/services). + (let ((raw (build-system + (name "raw") + (description "Raw build system with direct store access") + (build (lambda* (store name source inputs #:key outputs system) + (define (->store file) + (add-to-store store file #t #t "sha256" + (or (search-bootstrap-binary file + system) + (error "bootstrap binary not found" + file system)))) + + (let* ((tar (->store "tar")) + (xz (->store "xz")) + (mkdir (->store "mkdir")) + (bash (->store "bash")) + (guile (->store "guile-2.0.7.tar.xz")) + (builder + (add-text-to-store store + "build-bootstrap-guile.sh" + (format #f " +echo \"unpacking bootstrap Guile to '$out'...\" +~a $out +cd $out +~a -dc < ~a | ~a xv + +# Sanity check. +$out/bin/guile --version~%" + mkdir xz guile tar) + (list mkdir xz guile tar)))) + (derivation store name system + bash `(,builder) '() + `((,bash) (,builder))))))))) + (package + (name "guile-bootstrap") + (version "2.0") + (source #f) + (build-system raw) + (synopsis "Bootstrap Guile") + (description "Pre-built Guile for bootstrapping purposes.") + (home-page #f) + (license lgpl3+)))) + +(define %bootstrap-base-urls + ;; This is where the initial binaries come from. + '("http://alpha.gnu.org/gnu/guix/bootstrap" + "http://www.fdn.fr/~lcourtes/software/guix/packages")) + +(define %bootstrap-coreutils&co + (package-from-tarball "bootstrap-binaries" + (lambda (system) + (origin + (method url-fetch) + (uri (map (cut string-append <> "/" system + "/20130105/static-binaries.tar.xz") + %bootstrap-base-urls)) + (sha256 + (match system + ("x86_64-linux" + (base32 + "0md23alzy6nc5f16pric7mkagczdzr8xbh074sb3rjzrls06j1ls")) + ("i686-linux" + (base32 + "0nzj1lmm9b94g7k737cr4w1dv282w5nmhb53238ikax9r6pkc0yb")))))) + "true" ; the program to test + "Bootstrap binaries of Coreutils, Awk, etc.")) + +(define %bootstrap-binutils + (package-from-tarball "binutils-bootstrap" + (lambda (system) + (origin + (method url-fetch) + (uri (map (cut string-append <> "/" system + "/20130105/binutils-2.22.tar.xz") + %bootstrap-base-urls)) + (sha256 + (match system + ("x86_64-linux" + (base32 + "1ffmk2yy2pxvkqgzrkzp3s4jpn4qaaksyk3b5nsc5cjwfm7qkgzh")) + ("i686-linux" + (base32 + "1rafk6aq4sayvv3r3d2khn93nkyzf002xzh0xadlyci4mznr6b0a")))))) + "ld" ; the program to test + "Bootstrap binaries of the GNU Binutils")) + +(define %bootstrap-glibc + ;; The initial libc. + (package + (name "glibc-bootstrap") + (version "0") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder + (let ((out (assoc-ref %outputs "out")) + (tar (assoc-ref %build-inputs "tar")) + (xz (assoc-ref %build-inputs "xz")) + (tarball (assoc-ref %build-inputs "tarball"))) + (use-modules (guix build utils)) + + (mkdir out) + (copy-file tarball "binaries.tar.xz") + (system* xz "-d" "binaries.tar.xz") + (let ((builddir (getcwd))) + (with-directory-excursion out + (system* tar "xvf" + (string-append builddir + "/binaries.tar")) + (chmod "lib" #o755) + + ;; Patch libc.so so it refers to the right path. + (substitute* "lib/libc.so" + (("/[^ ]+/lib/(libc|ld)" _ prefix) + (string-append out "/lib/" prefix)))))))) + (inputs + `(("tar" ,(lambda (system) + (search-bootstrap-binary "tar" system))) + ("xz" ,(lambda (system) + (search-bootstrap-binary "xz" system))) + ("tarball" ,(lambda (system) + (bootstrap-origin + (origin + (method url-fetch) + (uri (map (cut string-append <> "/" system + "/20130105/glibc-2.17.tar.xz") + %bootstrap-base-urls)) + (sha256 + (match system + ("x86_64-linux" + (base32 + "18kv1z9d8dr1j3hm9w7663kchqw9p6rsx11n1m143jgba2jz6jy3")) + ("i686-linux" + (base32 + "08hv8i0axwnihrcgbz19x0a7s6zyv3yx38x8r29liwl8h82x9g88")))))))))) + (synopsis "Bootstrap binaries and headers of the GNU C Library") + (description #f) + (home-page #f))) + +(define %bootstrap-gcc + ;; The initial GCC. Uses binaries from a tarball typically built by + ;; %GCC-BOOTSTRAP-TARBALL. + (package + (name "gcc-bootstrap") + (version "0") + (source #f) + (build-system trivial-build-system) + (arguments + (lambda (system) + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder + (let ((out (assoc-ref %outputs "out")) + (tar (assoc-ref %build-inputs "tar")) + (xz (assoc-ref %build-inputs "xz")) + (bash (assoc-ref %build-inputs "bash")) + (libc (assoc-ref %build-inputs "libc")) + (tarball (assoc-ref %build-inputs "tarball"))) + (use-modules (guix build utils) + (ice-9 popen)) + + (mkdir out) + (copy-file tarball "binaries.tar.xz") + (system* xz "-d" "binaries.tar.xz") + (let ((builddir (getcwd)) + (bindir (string-append out "/bin"))) + (with-directory-excursion out + (system* tar "xvf" + (string-append builddir "/binaries.tar"))) + + (with-directory-excursion bindir + (chmod "." #o755) + (rename-file "gcc" ".gcc-wrapped") + (call-with-output-file "gcc" + (lambda (p) + (format p "#!~a +exec ~a/bin/.gcc-wrapped -B~a/lib \ + -Wl,-rpath -Wl,~a/lib \ + -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" + bash + out libc libc libc + ,(glibc-dynamic-linker system)))) + + (chmod "gcc" #o555))))))) + (inputs + `(("tar" ,(lambda (system) + (search-bootstrap-binary "tar" system))) + ("xz" ,(lambda (system) + (search-bootstrap-binary "xz" system))) + ("bash" ,(lambda (system) + (search-bootstrap-binary "bash" system))) + ("libc" ,%bootstrap-glibc) + ("tarball" ,(lambda (system) + (bootstrap-origin + (origin + (method url-fetch) + (uri (map (cut string-append <> "/" system + "/20130105/gcc-4.7.2.tar.xz") + %bootstrap-base-urls)) + (sha256 + (match system + ("x86_64-linux" + (base32 + "1x1p7han5crnbw906iwdifykr6grzm0w27dy9gz75j0q1b32i4px")) + ("i686-linux" + (base32 + "06wqs0xxnpw3hn0xjb4c9cs0899p1xwkcysa2rvzhvpra0c5vsg2")))))))))) + (synopsis "Bootstrap binaries of the GNU Compiler Collection") + (description #f) + (home-page #f))) + +(define %bootstrap-inputs + ;; The initial, pre-built inputs. From now on, we can start building our + ;; own packages. + `(("libc" ,%bootstrap-glibc) + ("gcc" ,%bootstrap-gcc) + ("binutils" ,%bootstrap-binutils) + ("coreutils&co" ,%bootstrap-coreutils&co) + + ;; In gnu-build-system.scm, we rely on the availability of Bash. + ("bash" ,%bootstrap-coreutils&co))) + +;;; bootstrap.scm ends here diff --git a/gnu/packages/bootstrap/i686-linux/bash b/gnu/packages/bootstrap/i686-linux/bash new file mode 100755 index 0000000000..9882d4adc7 --- /dev/null +++ b/gnu/packages/bootstrap/i686-linux/bash Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/mkdir b/gnu/packages/bootstrap/i686-linux/mkdir new file mode 100755 index 0000000000..0ddab232b7 --- /dev/null +++ b/gnu/packages/bootstrap/i686-linux/mkdir Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/tar b/gnu/packages/bootstrap/i686-linux/tar new file mode 100755 index 0000000000..6bee702cf5 --- /dev/null +++ b/gnu/packages/bootstrap/i686-linux/tar Binary files differdiff --git a/gnu/packages/bootstrap/i686-linux/xz b/gnu/packages/bootstrap/i686-linux/xz new file mode 100755 index 0000000000..5a126e4fc5 --- /dev/null +++ b/gnu/packages/bootstrap/i686-linux/xz Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/bash b/gnu/packages/bootstrap/x86_64-linux/bash new file mode 100755 index 0000000000..3b0227fbb1 --- /dev/null +++ b/gnu/packages/bootstrap/x86_64-linux/bash Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/mkdir b/gnu/packages/bootstrap/x86_64-linux/mkdir new file mode 100755 index 0000000000..7207ad8a46 --- /dev/null +++ b/gnu/packages/bootstrap/x86_64-linux/mkdir Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/tar b/gnu/packages/bootstrap/x86_64-linux/tar new file mode 100755 index 0000000000..9104da7b53 --- /dev/null +++ b/gnu/packages/bootstrap/x86_64-linux/tar Binary files differdiff --git a/gnu/packages/bootstrap/x86_64-linux/xz b/gnu/packages/bootstrap/x86_64-linux/xz new file mode 100755 index 0000000000..488e319b37 --- /dev/null +++ b/gnu/packages/bootstrap/x86_64-linux/xz Binary files differdiff --git a/gnu/packages/check.scm b/gnu/packages/check.scm new file mode 100644 index 0000000000..ec2997cbe6 --- /dev/null +++ b/gnu/packages/check.scm @@ -0,0 +1,48 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 check) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public check + (package + (name "check") + (version "0.9.9") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/check/check/" + version "/check-" version ".tar.gz")) + (sha256 + (base32 + "1jcahzrvxcnp5chdn2x46l0y4aba8d8yd70lljfin7h5knxrlyhs")))) + (build-system gnu-build-system) + (home-page "http://check.sourceforge.net/") + (synopsis "Check, a unit testing framework for C") + (description + "Check is a unit testing framework for C. It features a simple +interface for defining unit tests, putting little in the way of the +developer. Tests are run in a separate address space, so Check can +catch both assertion failures and code errors that cause segmentation +faults or other signals. The output from unit tests can be used within +source code editors and IDEs.") + (license lgpl2.1+))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm new file mode 100644 index 0000000000..dc00f323ce --- /dev/null +++ b/gnu/packages/compression.scm @@ -0,0 +1,200 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 compression) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public zlib + (package + (name "zlib") + (version "1.2.7") + (source + (origin + (method url-fetch) + (uri (string-append "http://zlib.net/zlib-" + version ".tar.gz")) + (sha256 + (base32 + "1i96gsdvxqb6skp9a58bacf1wxamwi9m9pg4yn7cpf7g7239r77s")))) + (build-system gnu-build-system) + (arguments + `(#:phases (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; Zlib's home-made `configure' doesn't fails when passed + ;; extra flags like `--enable-fast-install', so we need to + ;; invoke it with just what it understand. + (let ((out (assoc-ref outputs "out"))) + (zero? (system* "./configure" + (string-append "--prefix=" out))))) + %standard-phases))) + (home-page "http://zlib.net/") + (synopsis "The zlib compression library") + (description + "zlib is designed to be a free, general-purpose, legally unencumbered -- +that is, not covered by any patents -- lossless data-compression library for +use on virtually any computer hardware and operating system. The zlib data +format is itself portable across platforms. Unlike the LZW compression method +used in Unix compress(1) and in the GIF image format, the compression method +currently used in zlib essentially never expands the data. (LZW can double or +triple the file size in extreme cases.) zlib's memory footprint is also +independent of the input data and can be reduced, if necessary, at some cost +in compression.") + (license license:zlib))) + +(define-public gzip + (package + (name "gzip") + (version "1.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gzip/gzip-" + version ".tar.gz")) + (sha256 + (base32 + "18rm80kar7n016g8bsyy1a3zk50i2826xdgs874yh64rzj7nxmdm")))) + (build-system gnu-build-system) + (synopsis "Gzip, the GNU zip compression program") + (arguments + ;; FIXME: The test suite wants `less', and optionally Perl. + '(#:tests? #f)) + (description + "gzip (GNU zip) is a popular data compression program written by Jean-loup +Gailly for the GNU project. Mark Adler wrote the decompression part. + +We developed this program as a replacement for compress because of the Unisys +and IBM patents covering the LZW algorithm used by compress. These patents +made it impossible for us to use compress, and we needed a replacement. The +superior compression ratio of gzip is just a bonus.") + (license license:gpl3+) + (home-page "http://www.gnu.org/software/gzip/"))) + +(define-public bzip2 + (let ((fix-man-dir + ;; Move man pages to $out/share/. + '(lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion (assoc-ref outputs "out") + (mkdir "share") + (rename-file "man" "share")))) + (build-shared-lib + ;; Build a shared library. + '(lambda* (#:key inputs #:allow-other-keys) + (patch-makefile-SHELL "Makefile-libbz2_so") + (zero? (system* "make" "-f" "Makefile-libbz2_so")))) + (install-shared-lib + '(lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libdir (string-append out "/lib"))) + (for-each (lambda (file) + (let ((base (basename file))) + (format #t "installing `~a' to `~a'~%" + base libdir) + (copy-file file + (string-append libdir "/" base)))) + (find-files "." "^libbz2\\.so")))))) + (package + (name "bzip2") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (string-append "http://www.bzip.org/" version "/bzip2-" + version ".tar.gz")) + (sha256 + (base32 + "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (alist-cons-before + 'build 'build-shared-lib ,build-shared-lib + (alist-cons-after + 'install 'fix-man-dir ,fix-man-dir + (alist-cons-after + 'install 'install-shared-lib ,install-shared-lib + (alist-delete 'configure %standard-phases)))) + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))))) + (synopsis "high-quality data compression program") + (description + "bzip2 is a freely available, patent free (see below), high-quality data +compressor. It typically compresses files to within 10% to 15% of the best +available techniques (the PPM family of statistical compressors), whilst +being around twice as fast at compression and six times faster at +decompression.") + (license (license:bsd-style "file://LICENSE" + "See LICENSE in the distribution.")) + (home-page "http://www.bzip.org/")))) + +(define-public xz + (package + (name "xz") + (version "5.0.4") + (source (origin + (method url-fetch) + (uri (string-append "http://tukaani.org/xz/xz-" version + ".tar.gz")) + (sha256 + (base32 + "1dl35ca8fdss9z2d6y234gxh24ixq904xksizrjmjr5dimwhax6n")))) + (build-system gnu-build-system) + (synopsis + "XZ, general-purpose data compression software, successor of LZMA") + (description + "XZ Utils is free general-purpose data compression software with high +compression ratio. XZ Utils were written for POSIX-like systems, but also +work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils. + +The core of the XZ Utils compression code is based on LZMA SDK, but it has +been modified quite a lot to be suitable for XZ Utils. The primary +compression algorithm is currently LZMA2, which is used inside the .xz +container format. With typical files, XZ Utils create 30 % smaller output +than gzip and 15 % smaller output than bzip2.") + (license '(license:gpl2+ license:lgpl2.1+)) ; bits of both + (home-page "http://tukaani.org/xz/"))) + +(define-public lzo + (package + (name "lzo") + (version "2.06") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.oberhumer.com/opensource/lzo/download/lzo-" + version ".tar.gz")) + (sha256 + (base32 + "0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz")))) + (build-system gnu-build-system) + (home-page "http://www.oberhumer.com/opensource/lzo") + (synopsis + "A data compresion library suitable for real-time data de-/compression") + (description + "LZO is a data compression library which is suitable for data +de-/compression in real-time. This means it favours speed over +compression ratio. + +LZO is written in ANSI C. Both the source code and the compressed data +format are designed to be portable across platforms.") + (license license:gpl2+))) diff --git a/gnu/packages/cpio.scm b/gnu/packages/cpio.scm new file mode 100644 index 0000000000..6fddc3f768 --- /dev/null +++ b/gnu/packages/cpio.scm @@ -0,0 +1,58 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 cpio) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public cpio + (package + (name "cpio") + (version "2.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/cpio/cpio-" + version ".tar.bz2")) + (sha256 + (base32 + "1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv")))) + (build-system gnu-build-system) + (arguments + `(#:patches (list (assoc-ref %build-inputs + "patch/gets")))) + (inputs + `(("patch/gets" ,(search-patch "cpio-gets-undeclared.patch")))) + (home-page "https://www.gnu.org/software/cpio/") + (synopsis + "A program to create or extract from cpio archives") + (description + "GNU Cpio copies files into or out of a cpio or tar archive. The +archive can be another file on the disk, a magnetic tape, or a pipe. + +GNU Cpio supports the following archive formats: binary, old ASCII, new +ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. The +tar format is provided for compatability with the tar program. By +default, cpio creates binary format archives, for compatibility with +older cpio programs. When extracting from archives, cpio automatically +recognizes which kind of archive it is reading and can read archives +created on machines with a different byte-order.") + (license gpl3+))) \ No newline at end of file diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm new file mode 100644 index 0000000000..fe8ea4ef7c --- /dev/null +++ b/gnu/packages/cyrus-sasl.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 cyrus-sasl) + #:use-module (distro) + #:use-module (gnu packages gdbm) + #:use-module (gnu packages mit-krb5) + #:use-module (gnu packages openssl) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public cyrus-sasl + (package + (name "cyrus-sasl") + (version "2.1.26") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-" version + ".tar.gz")) + (sha256 (base32 + "1hvvbcsg21nlncbgs0cgn3iwlnb3vannzwsp6rwvnn9ba4v53g4g")))) + (build-system gnu-build-system) + (inputs `(("gdbm" ,gdbm) + ("mit-krb5" ,mit-krb5) + ("openssl" ,openssl))) + (arguments + '(#:configure-flags (list (string-append "--with-plugindir=" + (assoc-ref %outputs "out") + "/lib/sasl2")))) + (synopsis "Cyrus SASL, an implementation of the Simple Authentication Security Layer framework") + (description + "SASL (Simple Authentication Security Layer) is an Internet +standards-track method for remote computers to authenticate. The Cyrus SASL +library makes supporting various SASL mechanisms easy for both client and +server writers.") + (license (license:bsd-style "file://COPYING" + "See COPYING in the distribution.")) + (home-page "http://cyrusimap.web.cmu.edu/index.php"))) diff --git a/gnu/packages/ddrescue.scm b/gnu/packages/ddrescue.scm new file mode 100644 index 0000000000..e9c7856af3 --- /dev/null +++ b/gnu/packages/ddrescue.scm @@ -0,0 +1,60 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 ddrescue) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public ddrescue + (package + (name "ddrescue") + (version "1.16") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/ddrescue/ddrescue-" + version ".tar.gz")) + (sha256 + (base32 + "1rixya7p8c4jrn4p0flf6h5dqwybrilf3hrj4r7x41h3zgjz5cvn")))) + (build-system gnu-build-system) + (home-page + "http://www.gnu.org/software/ddrescue/ddrescue.html") + (synopsis "GNU ddrescue, a data recovery tool") + (description + "GNU ddrescue is a data recovery tool. It copies data from one +file or block device (hard disc, cdrom, etc) to another, trying hard to +rescue data in case of read errors. + +The basic operation of ddrescue is fully automatic. That is, you don't +have to wait for an error, stop the program, read the log, run it in +reverse mode, etc. + +If you use the logfile feature of ddrescue, the data is rescued very +efficiently (only the needed blocks are read). Also you can interrupt +the rescue at any time and resume it later at the same point. + +Automatic merging of backups: If you have two or more damaged copies of +a file, cdrom, etc, and run ddrescue on all of them, one at a time, with +the same output file, you will probably obtain a complete and error-free +file. This is so because the probability of having damaged areas at the +same places on different input files is very low. Using the logfile, +only the needed blocks are read from the second and successive copies.") + (license gpl3+))) diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm new file mode 100644 index 0000000000..1efc7c78e7 --- /dev/null +++ b/gnu/packages/dejagnu.scm @@ -0,0 +1,88 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 dejagnu) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses) + #:use-module (gnu 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 + ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036> + ;; 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: + ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>. + (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") + (("^mypath.*$" all) + (string-append all + "export PATH=" + expect "/bin:$PATH\n"))))) + %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/gnu/packages/ed.scm b/gnu/packages/ed.scm new file mode 100644 index 0000000000..83d8b21bfb --- /dev/null +++ b/gnu/packages/ed.scm @@ -0,0 +1,53 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 ed) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public ed + (package + (name "ed") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/ed/ed-" + version + ".tar.gz")) + (sha256 + (base32 + "18gvhyhwpabmgv4lh21lg8vl3z7acdyhh2mr2kj9g75wksj39pcp")))) + (build-system gnu-build-system) + (arguments '(#:configure-flags '("CC=gcc"))) + (home-page "http://www.gnu.org/software/ed/") + (synopsis + "GNU ed, an implementation of the standard Unix editor") + (description + "GNU ed is a line-oriented text editor. It is used to create, +display, modify and otherwise manipulate text files, both +interactively and via shell scripts. A restricted version of ed, +red, can only edit files in the current directory and cannot +execute shell commands. Ed is the \"standard\" text editor in the +sense that it is the original editor for Unix, and thus widely +available. For most purposes, however, it is superseded by +full-screen editors such as GNU Emacs or GNU Moe.") + (license gpl3+))) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm new file mode 100644 index 0000000000..c9d0822a80 --- /dev/null +++ b/gnu/packages/emacs.scm @@ -0,0 +1,93 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 emacs) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (distro) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages pkg-config)) + +(define-public emacs + (package + (name "emacs") + (version "24.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/emacs/emacs-" + version ".tar.bz2")) + (sha256 + (base32 + "13wbjfjmz13qpjwssy44nw2230lllmkkgjsy0rqfm6am2cf87n3k")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "--with-crt-dir=" (assoc-ref %build-inputs "libc") + "/lib")) + #:patches (list (assoc-ref %build-inputs "patch/epaths")) + #:phases (alist-cons-before + 'configure 'fix-/bin/pwd + (lambda _ + ;; Use `pwd', not `/bin/pwd'. + (substitute* (find-files "." "^Makefile\\.in$") + (("/bin/pwd") + "pwd"))) + %standard-phases))) + (inputs + `(("pkg-config" ,pkg-config) + ("gnutls" ,gnutls) + ("texinfo" ,texinfo) + ("ncurses" ,ncurses) + + ;; TODO: Add the optional dependencies. + ;; ("xlibs" ,xlibs) + ;; ("gtk+" ,gtk+) + ;; ("libXft" ,libXft) + ;; ("libtiff" ,libtiff) + ;; ("libungif" ,libungif) + ;; ("libjpeg" ,libjpeg) + ;; ("libpng" ,libpng) + ;; ("libXpm" ,libXpm) + ;; ("libxml2" ,libxml2) + ;; ("dbus-library" ,dbus-library) + + ("patch/epaths" ,(search-patch "emacs-configure-sh.patch")) + )) + (home-page "http://www.gnu.org/software/emacs/") + (synopsis + "GNU Emacs 24, the extensible, customizable text editor") + (description + "GNU Emacs is an extensible, customizable text editor—and more. At its +core is an interpreter for Emacs Lisp, a dialect of the Lisp +programming language with extensions to support text editing. + +The features of GNU Emacs include: content-sensitive editing modes, +including syntax coloring, for a wide variety of file types including +plain text, source code, and HTML; complete built-in documentation, +including a tutorial for new users; full Unicode support for nearly all +human languages and their scripts; highly customizable, using Emacs +Lisp code or a graphical interface; a large number of extensions that +add other functionality, including a project planner, mail and news +reader, debugger interface, calendar, and more. Many of these +extensions are distributed with GNU Emacs; others are available +separately.") + (license gpl3+))) diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm new file mode 100644 index 0000000000..5a2cc2ad80 --- /dev/null +++ b/gnu/packages/file.scm @@ -0,0 +1,44 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 file) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public file + (package + (name "file") + (version "5.12") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.astron.com/pub/file/file-" + version ".tar.gz")) + (sha256 (base32 + "08ix4xrvan0k80n0l5lqfmc4azjv5lyhvhwdxny4r09j5smhv78r")))) + (build-system gnu-build-system) + (synopsis "file, a file type guesser") + (description + "The file command is a file type guesser, a command-line tool that tells +you in words what kind of data a file contains. It does not rely on filename +extentions to tell you the type of a file, but looks at the actual contents +of the file.") + (license bsd-2) + (home-page "http://www.darwinsys.com/file/"))) diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm new file mode 100644 index 0000000000..7a6d5f507d --- /dev/null +++ b/gnu/packages/flex.scm @@ -0,0 +1,63 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 flex) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (distro) + #:use-module (gnu packages m4) + #:use-module (gnu packages bison) + #:use-module (gnu packages indent)) + +(define-public flex + (package + (name "flex") + (version "2.5.37") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flex/flex-" + version ".tar.bz2")) + (sha256 + (base32 + "0ah5mi4j62b85a9rllv1004mzjb5cd0mn4glvz13p88rpx77pahp")))) + (build-system gnu-build-system) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/bison-tests")))) + (inputs `(("patch/bison-tests" ,(search-patch "flex-bison-tests.patch")) + ("bison" ,bison) + ("indent" ,indent))) + (propagated-inputs `(("m4" ,m4))) + (home-page "http://flex.sourceforge.net/") + (synopsis "A fast lexical analyser generator") + (description + "Flex is a tool for generating scanners. A scanner, sometimes +called a tokenizer, is a program which recognizes lexical patterns in +text. The flex program reads user-specified input files, or its standard +input if no file names are given, for a description of a scanner to +generate. The description is in the form of pairs of regular expressions +and C code, called rules. Flex generates a C source file named, +\"lex.yy.c\", which defines the function yylex(). The file \"lex.yy.c\" +can be compiled and linked to produce an executable. When the executable +is run, it analyzes its input for occurrences of text matching the +regular expressions for each rule. Whenever it finds a match, it +executes the corresponding C code.") + (license (bsd-style "file://COPYING" + "See COPYING in the distribution.")))) + diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm new file mode 100644 index 0000000000..802042665a --- /dev/null +++ b/gnu/packages/gawk.scm @@ -0,0 +1,71 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gawk) + #:use-module (guix licenses) + #:use-module (gnu packages libsigsegv) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public gawk + (package + (name "gawk") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gawk/gawk-" version + ".tar.bz2")) + (sha256 + (base32 "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0")))) + (build-system gnu-build-system) + (arguments + (case-lambda + ((system) + `(#:parallel-tests? #f ; test suite fails in parallel + + ;; Work around test failure on Cygwin. + #:tests? ,(not (string=? system "i686-cygwin")) + + #:phases (alist-cons-before + 'configure 'set-shell-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Refer to the right shell. + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "io.c" + (("/bin/sh") + (string-append bash "/bin/bash"))))) + %standard-phases))) + ((system cross-system) + '(#:parallel-tests? #f)))) + (inputs `(("libsigsegv" ,libsigsegv))) + (home-page "http://www.gnu.org/software/gawk/") + (synopsis "GNU implementation of the Awk programming language") + (description + "Many computer users need to manipulate text files: extract and then +operate on data from parts of certain lines while discarding the rest, make +changes in various text files wherever certain patterns appear, and so on. +To write a program to do these things in a language such as C or Pascal is a +time-consuming inconvenience that may take many lines of code. The job is +easy with awk, especially the GNU implementation: Gawk. + +The awk utility interprets a special-purpose programming language that makes +it possible to handle many data-reformatting jobs with just a few lines of +code.") + (license gpl3+))) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm new file mode 100644 index 0000000000..c8c771bfd5 --- /dev/null +++ b/gnu/packages/gdb.scm @@ -0,0 +1,65 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gdb) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages readline) + #:use-module (gnu packages dejagnu) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages xml) + #:use-module (gnu packages python) + #:use-module ((guix licenses) #:select (gpl3+)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public gdb + (package + (name "gdb") + (version "7.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gdb/gdb-" + version ".tar.bz2")) + (sha256 + (base32 + "0chrws5ga90b50kp06yll6zy42fhnx9yr87r4i7swsc369fc8y6i")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-cons-after + 'configure 'post-configure + (lambda _ + (patch-makefile-SHELL "gdb/gdbserver/Makefile.in")) + %standard-phases))) + (inputs + `(("expat" ,expat) + ("mpfr" ,mpfr) + ("gmp" ,gmp) + ("readline" ,readline) + ("ncurses" ,ncurses) + ("python" ,python) + ("texinfo" ,texinfo) + ("dejagnu" ,dejagnu))) + (home-page "http://www.gnu.org/software/gdb/") + (synopsis "GDB, the GNU Project debugger") + (description + "GDB, the GNU Project debugger, allows you to see what is going +on `inside' another program while it executes -- or what another +program was doing at the moment it crashed.") + (license gpl3+))) diff --git a/gnu/packages/gdbm.scm b/gnu/packages/gdbm.scm new file mode 100644 index 0000000000..588b732b02 --- /dev/null +++ b/gnu/packages/gdbm.scm @@ -0,0 +1,56 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gdbm) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public gdbm + (package + (name "gdbm") + (version "1.10") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gdbm/gdbm-" + version ".tar.gz")) + (sha256 + (base32 + "0h9lfzdjc2yl849y0byg51h6xfjg0y7vg9jnsw3gpfwlbd617y13")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/gdbm/") + (synopsis "GNU dbm key/value database library") + (description + "GNU dbm (or GDBM, for short) is a library of database functions +that use extensible hashing and work similar to the standard UNIX dbm. +These routines are provided to a programmer needing to create and +manipulate a hashed database. + +The basic use of GDBM is to store key/data pairs in a data file. Each +key must be unique and each key is paired with only one data item. + +The library provides primitives for storing key/data pairs, searching +and retrieving the data by its key and deleting a key along with its +data. It also support sequential iteration over all key/data pairs in a +database. + +For compatibility with programs using old UNIX dbm function, the package +also provides traditional dbm and ndbm interfaces.") + (license gpl3+))) diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm new file mode 100644 index 0000000000..c45a488dca --- /dev/null +++ b/gnu/packages/gettext.scm @@ -0,0 +1,78 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 gettext) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public gettext + (package + (name "gettext") + (version "0.18.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gettext/gettext-" + version ".tar.gz")) + (sha256 + (base32 + "1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k")))) + (build-system gnu-build-system) + (arguments + `(#:patches (list (assoc-ref %build-inputs "patch/gets")) + #:phases (alist-cons-before + 'check 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* (find-files "gettext-tools/tests" + "^msgexec-[0-9]") + (("#![[:blank:]]/bin/sh") + (format #f "#!~a/bin/sh" bash))) + (substitute* (find-files "gettext-tools/gnulib-tests" + "posix_spawn") + (("/bin/sh") + (format #f "~a/bin/bash" bash))))) + %standard-phases))) + (inputs + `(("patch/gets" + ,(search-patch "gettext-gets-undeclared.patch")))) + (home-page + "http://www.gnu.org/software/gettext/") + (synopsis + "GNU gettext, a well integrated set of translation tools and documentation") + (description + "Usually, programs are written and documented in English, and use +English at execution time for interacting with users. Using a common +language is quite handy for communication between developers, +maintainers and users from all countries. On the other hand, most +people are less comfortable with English than with their own native +language, and would rather be using their mother tongue for day to +day's work, as far as possible. Many would simply love seeing their +computer screen showing a lot less of English, and far more of their +own language. + +GNU `gettext' is an important step for the GNU Translation Project, as +bit is an asset on which we may build many other steps. This package +offers to programmers, translators, and even users, a well integrated +set of tools and documentation. Specifically, the GNU `gettext' +utilities are a set of tools that provides a framework to help other +GNU packages produce multi-lingual messages.") + (license gpl3))) ; some files are under GPLv2+ diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm new file mode 100644 index 0000000000..705efbbbed --- /dev/null +++ b/gnu/packages/global.scm @@ -0,0 +1,58 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 global) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages autotools) + #:use-module (distro)) + +(define-public global ; a global variable + (package + (name "global") + (version "6.2.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/global/global-" + version ".tar.gz")) + (sha256 + (base32 + "1dr250kz65wqpbms4lhz857mzmvmpmiaxgyqxvxkb4b0s840i14i")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses) + ("libtool" ,libtool))) + (arguments + `(#:configure-flags + (list (string-append "--with-ncurses=" + (assoc-ref %build-inputs "ncurses"))))) + (home-page "http://www.gnu.org/software/global/") + (synopsis "GNU GLOBAL source code tag system") + (description + "GNU GLOBAL is a source code tagging system that works the same way +across diverse environments (Emacs, vi, less, Bash, web browser, etc). +You can locate specified objects in source files and move there easily. +It is useful for hacking a large project containing many +subdirectories, many #ifdef and many main() functions. It is similar +to ctags or etags but is different from them at the point of +independence of any editor. It runs on a UNIX (POSIX) compatible +operating system like GNU and BSD.") + (license "GPLv3+"))) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm new file mode 100644 index 0000000000..82f8d26a65 --- /dev/null +++ b/gnu/packages/gnupg.scm @@ -0,0 +1,168 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gnupg) + #:use-module (guix licenses) + #:use-module (gnu packages pth) + #:use-module (gnu packages readline) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libgpg-error + (package + (name "libgpg-error") + (version "1.10") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-" + version ".tar.bz2")) + (sha256 + (base32 + "0cal3jdnzdailr13qcy74grfbplbghkgr3qwk6qjjp4bass2j1jj")))) + (build-system gnu-build-system) + (home-page "http://gnupg.org") + (synopsis + "Libgpg-error, a small library that defines common error values for all GnuPG components") + (description + "Libgpg-error is a small library that defines common error values +for all GnuPG components. Among these are GPG, GPGSM, GPGME, +GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard +Daemon and possibly more in the future.") + (license lgpl2.0+))) + +(define-public libgcrypt + (package + (name "libgcrypt") + (version "1.5.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" + version ".tar.bz2")) + (sha256 + (base32 + "1ykkh7dm0gyndz7bbpvn3agijj8xb2h02m02f42hm504c18zqqjb")))) + (build-system gnu-build-system) + (propagated-inputs + `(("libgpg-error" ,libgpg-error))) + (home-page "http://gnupg.org/") + (synopsis + "GNU Libgcrypt, a general-pupose cryptographic library") + (description + "GNU Libgcrypt is a general purpose cryptographic library based on +the code from GnuPG. It provides functions for all +cryptographic building blocks: symmetric ciphers, hash +algorithms, MACs, public key algorithms, large integer +functions, random numbers and a lot of supporting functions.") + (license lgpl2.0+))) + +(define-public libassuan + (package + (name "libassuan") + (version "2.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/libassuan/libassuan-" + version ".tar.bz2")) + (sha256 + (base32 + "06xckkvxxlx7cj77803m8x58gxksap4k8yhspc5cqsy7fhinimds")))) + (build-system gnu-build-system) + (propagated-inputs + `(("libgpg-error" ,libgpg-error) ("pth" ,pth))) + (home-page "http://gnupg.org") + (synopsis + "Libassuan, the IPC library used by GnuPG and related software") + (description + "Libassuan is a small library implementing the so-called Assuan +protocol. This protocol is used for IPC between most newer +GnuPG components. Both, server and client side functions are +provided.") + (license lgpl2.0+))) + +(define-public libksba + (package + (name "libksba") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnupg/libksba/libksba-" + version ".tar.bz2")) + (sha256 + (base32 + "0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9")))) + (build-system gnu-build-system) + (propagated-inputs + `(("libgpg-error" ,libgpg-error))) + (home-page "http://www.gnupg.org") + (synopsis + "Libksba is a CMS and X.509 access library under development") + (description + "KSBA (pronounced Kasbah) is a library to make X.509 certificates +as well as the CMS easily accessible by other applications. Both +specifications are building blocks of S/MIME and TLS.") + (license gpl3+))) + +(define-public gnupg + (package + (name "gnupg") + (version "2.0.19") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/gnupg/gnupg-" version + ".tar.bz2")) + (sha256 + (base32 + "08n636sfffs5qvg9ppiprvsh00q0dmdw425psg3m3nssja53m8pg")))) + (build-system gnu-build-system) + (inputs + `(;; TODO: Add missing optional deps. + ;; ("curl" ,curl) + ;; ("libusb" ,libusb) + ;; ("openldap" ,openldap) + + ("bzip2" ,guix:bzip2) + ("libassuan" ,libassuan) + ("libgcrypt" ,libgcrypt) + ("libksba" ,libksba) + ("pth" ,pth) + ("libgpg-error" ,libgpg-error) + ("zlib" ,guix:zlib) + ("readline" ,readline))) + (home-page "http://gnupg.org/") + (synopsis + "GNU Privacy Guard (GnuPG), GNU Project's implementation of the OpenPGP standard") + (description + "GnuPG is the GNU project's complete and free implementation of +the OpenPGP standard as defined by RFC4880. GnuPG allows to +encrypt and sign your data and communication, features a +versatile key managment system as well as access modules for all +kind of public key directories. GnuPG, also known as GPG, is a +command line tool with features for easy integration with other +applications. A wealth of frontend applications and libraries +are available. Version 2 of GnuPG also provides support for +S/MIME.") + (license gpl3+))) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm new file mode 100644 index 0000000000..4bda9a9ac5 --- /dev/null +++ b/gnu/packages/gnutls.scm @@ -0,0 +1,98 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gnutls) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages base) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages nettle) + #:use-module (gnu packages guile) + #:use-module (gnu packages perl) + #:use-module (gnu packages which)) + +(define-public libtasn1 + (package + (name "libtasn1") + (version "3.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/libtasn1/libtasn1-" + version ".tar.gz")) + (sha256 + (base32 + "0gvgndypwicchf7m660zh7jdgmkfj9g9xavpcc08pyd0120y0bk7")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/libtasn1/") + (synopsis "GNU Libtasn1, an ASN.1 library") + (description + "Libtasn1 is the ASN.1 library used by GnuTLS, GNU Shishi and some +other packages. The goal of this implementation is to be highly +portable, and only require an ANSI C89 platform.") + (license lgpl2.0+))) + +(define-public gnutls + (package + (name "gnutls") + (version "3.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/gnutls/gnutls-" + version + ".tar.xz")) + (sha256 + (base32 + "0zsybr9plllk1phh83bx9bg7c5ccik427j4n3k1s9fiy4j69n0w3")))) + (build-system gnu-build-system) + + ;; Build of the Guile bindings is not parallel-safe. See + ;; <http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=330995a920037b6030ec0282b51dde3f8b493cad> + ;; for the actual fix. + (arguments '(#:parallel-build? #f)) + + (inputs + `(("guile" ,guile-2.0) + ;; ("lzo" ,lzo) + ("zlib" ,guix:zlib) + ("perl" ,perl))) + (propagated-inputs + `(("libtasn1" ,libtasn1) + ("nettle" ,nettle) + ("which" ,which))) + (home-page "http://www.gnu.org/software/gnutls/") + (synopsis + "The GNU Transport Layer Security Library") + (description + "GnuTLS is a project that aims to develop a library which provides +a secure layer, over a reliable transport layer. Currently the GnuTLS +library implements the proposed standards by the IETF's TLS working +group. + +Quoting from the TLS protocol specification: + +\"The TLS protocol provides communications privacy over the +Internet. The protocol allows client/server applications to communicate +in a way that is designed to prevent eavesdropping, tampering, or +message forgery.\"") + (license lgpl2.1+))) diff --git a/gnu/packages/gperf.scm b/gnu/packages/gperf.scm new file mode 100644 index 0000000000..94fa62b652 --- /dev/null +++ b/gnu/packages/gperf.scm @@ -0,0 +1,55 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 gperf) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public gperf + (package + (name "gperf") + (version "3.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gperf/gperf-" + version ".tar.gz")) + (sha256 + (base32 + "0gnnm8iqcl52m8iha3sxrzrl9mcyhg7lfrhhqgdn4zj00ji14wbn")))) + (build-system gnu-build-system) + (arguments '(#:parallel-tests? #f)) + (home-page "http://www.gnu.org/software/gperf/") + (synopsis + "GNU gperf, a perfect hash function generator") + (description + "GNU gperf is a perfect hash function generator. For a given +list of strings, it produces a hash function and hash table, in +form of C or C++ code, for looking up a value depending on the +input string. The hash function is perfect, which means that +the hash table has no collisions, and the hash table lookup +needs a single string comparison only. + +GNU gperf is highly customizable. There are options for +generating C or C++ code, for emitting switch statements or +nested ifs instead of a hash table, and for tuning the algorithm +employed by gperf.") + (license gpl3+))) diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm new file mode 100644 index 0000000000..dc75b18455 --- /dev/null +++ b/gnu/packages/gsasl.scm @@ -0,0 +1,113 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 gsasl) + #:use-module (distro) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages libidn) + #:use-module (gnu packages nettle) + #:use-module (gnu packages shishi) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libntlm + (package + (name "libntlm") + (version "1.3") + (source (origin + (method url-fetch) + (uri (string-append "http://www.nongnu.org/libntlm/releases/libntlm-" version + ".tar.gz")) + (sha256 (base32 + "101pr110ardcj2di940g6vaqifsaxc44h6hjn81l63dvmkj5a6ga")))) + (build-system gnu-build-system) + (synopsis "Libntlm, a library that implements NTLM authentication") + (description + "Libntlm is a library that implements NTLM authentication") + (license lgpl2.1+) + (home-page "http://www.nongnu.org/libntlm/"))) + +(define-public gss + (package + (name "gss") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gss/gss-" version + ".tar.gz")) + (sha256 (base32 + "1qa8lbkzi6ilfggx7mchfzjnchvhwi68rck3jf9j4425ncz7zsd9")))) + (build-system gnu-build-system) + (inputs `(("nettle" ,nettle) + ("shishi" ,shishi) + ("zlib" ,guix:zlib) + )) + (synopsis "GNU GSS (Generic Security Service), a free implementatio of RFC 2743/2744") + (description + "GNU GSS is an implementation of the Generic Security Service Application +Program Interface (GSS-API). GSS-API is used by network servers to provide +security services, e.g., to authenticate SMTP/IMAP clients against +SMTP/IMAP servers. GSS consists of a library and a manual.") + (license gpl3+) + (home-page "http://www.gnu.org/software/gss/"))) + +(define-public gsasl + (package + (name "gsasl") + (version "1.8.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gsasl/gsasl-" version + ".tar.gz")) + (sha256 (base32 + "1rci64cxvcfr8xcjpqc4inpfq7aw4snnsbf5xz7d30nhvv8n40ii")))) + (build-system gnu-build-system) + (inputs `(("libidn" ,libidn) + ("libntlm" ,libntlm) + ("gnutls" ,gnutls) + ("gss" ,gss) + ("zlib" ,guix:zlib) + )) + (synopsis "GNU SASL, an implementation of the Simple Authentication and Security Layer framework") + (description + "GNU SASL is an implementation of the Simple Authentication and Security +Layer framework and a few common SASL mechanisms. SASL is used by network +servers (e.g., IMAP, SMTP) to request authentication from clients, and in +clients to authenticate against servers. + +GNU SASL consists of a library (libgsasl), a command line utility (gsasl) +to access the library from the shell, and a manual. The library includes +support for the framework (with authentication functions and application +data privacy and integrity functions) and at least partial support for the +CRAM-MD5, EXTERNAL, GSSAPI, ANONYMOUS, PLAIN, SECURID, DIGEST-MD5, +SCRAM-SHA-1, SCRAM-SHA-1-PLUS, LOGIN, and NTLM mechanisms. + +The library is portable because it does not do network communication by +itself, but rather leaves it up to the calling application. The library is +flexible with regards to the authorization infrastructure used, as it +utilises callbacks into the application to decide whether an user is +authorised or not. + +The gsasl package distribution includes the library part as well, +so there is no need to install two packages.") + (license gpl3+) + (home-page "http://www.gnu.org/software/gsasl/"))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm new file mode 100644 index 0000000000..5034ae914a --- /dev/null +++ b/gnu/packages/guile.scm @@ -0,0 +1,197 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 guile) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gperf) + #:use-module (gnu packages libffi) + #:use-module (gnu packages autotools) + #:use-module (gnu packages libunistring) + #:use-module (gnu packages m4) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages readline) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +;;; Commentary: +;;; +;;; GNU Guile, and modules and extensions. +;;; +;;; Code: + +(define-public guile-1.8 + (package + (name "guile") + (version "1.8.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/guile/guile-" version + ".tar.gz")) + (sha256 + (base32 + "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3")))) + (build-system gnu-build-system) + (arguments '(#:configure-flags '("--disable-error-on-warning") + #:patches (list (assoc-ref %build-inputs "patch/snarf")) + + ;; Insert a phase before `configure' to patch things up. + #:phases (alist-cons-before + 'configure + 'patch-loader-search-path + (lambda* (#:key outputs #:allow-other-keys) + ;; Add a call to `lt_dladdsearchdir' so that + ;; `libguile-readline.so' & co. are in the + ;; loader's search path. + (substitute* "libguile/dynl.c" + (("lt_dlinit.*$" match) + (format #f + " ~a~% lt_dladdsearchdir(\"~a/lib\");~%" + match + (assoc-ref outputs "out"))))) + %standard-phases))) + (inputs `(("patch/snarf" ,(search-patch "guile-1.8-cpp-4.5.patch")) + ("gawk" ,gawk) + ("readline" ,readline))) + + ;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be + ;; propagated. + (propagated-inputs `(("gmp" ,gmp) + ("libtool" ,libtool))) + + ;; When cross-compiling, a native version of Guile itself is needed. + (self-native-input? #t) + + (synopsis "GNU Guile 1.8, an embeddable Scheme interpreter") + (description +"GNU Guile 1.8 is an interpreter for the Scheme programming language, +packaged as a library that can be embedded into programs to make them +extensible. It supports many SRFIs.") + (home-page "http://www.gnu.org/software/guile/") + (license lgpl2.0+))) + +(define-public guile-2.0 + (package + (name "guile") + (version "2.0.7") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/guile/guile-" version + ".tar.xz")) + (sha256 + (base32 + "0f53pxkia4v17n0avwqlcjpy0n89hkazm2xsa6p84lv8k6k8y9vg")))) + (build-system gnu-build-system) + (native-inputs `(("pkgconfig" ,pkg-config))) + (inputs `(("libffi" ,libffi) + ("readline" ,readline))) + + (propagated-inputs + `( ;; These ones aren't normally needed here, but since `libguile-2.0.la' + ;; reads `-lltdl -lunistring', adding them here will add the needed + ;; `-L' flags. As for why the `.la' file lacks the `-L' flags, see + ;; <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903>. + ("libunistring" ,libunistring) + ("libtool" ,libtool) + + ;; The headers and/or `guile-2.0.pc' refer to these packages, so they + ;; must be propagated. + ("bdw-gc" ,libgc) + ("gmp" ,gmp))) + + (self-native-input? #t) + + (arguments + '(#:phases (alist-cons-before + 'configure 'pre-configure + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "module/ice-9/popen.scm" + (("/bin/sh") + (string-append bash "/bin/bash"))))) + %standard-phases))) + + (synopsis "GNU Guile 2.0, an embeddable Scheme implementation") + (description +"GNU Guile is an implementation of the Scheme programming language, with +support for many SRFIs, packaged for use in a wide variety of environments. +In addition to implementing the R5RS Scheme standard and a large subset of +R6RS, Guile includes a module system, full access to POSIX system calls, +networking support, multiple threads, dynamic linking, a foreign function +call interface, and powerful string processing.") + (home-page "http://www.gnu.org/software/guile/") + (license lgpl3+))) + +(define-public guile-2.0/fixed + ;; A package of Guile 2.0 that's rarely changed. It is the one used + ;; in the `base' module, and thus changing it entails a full rebuild. + guile-2.0) + + +;;; +;;; Extensions. +;;; + +(define (guile-reader guile) + "Build Guile-Reader against GUILE, a package of some version of Guile 1.8 +or 2.0." + (package + (name (string-append "guile-reader-for-guile-" (package-version guile))) + (version "0.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-" + version ".tar.gz")) + (sha256 + (base32 + "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n")))) + (build-system gnu-build-system) + (native-inputs `(("pkgconfig" ,pkg-config) + ("gperf" ,gperf))) + (inputs `(("guile" ,guile))) + (synopsis "Guile-Reader, a simple framework for building readers for +GNU Guile") + (description +"Guile-Reader is a simple framework for building readers for GNU Guile. + +The idea is to make it easy to build procedures that extend Guile’s read +procedure. Readers supporting various syntax variants can easily be written, +possibly by re-using existing “token readers” of a standard Scheme +readers. For example, it is used to implement Skribilo’s R5RS-derived +document syntax. + +Guile-Reader’s approach is similar to Common Lisp’s “read table”, but +hopefully more powerful and flexible (for instance, one may instantiate as +many readers as needed).") + (home-page "http://www.nongnu.org/guile-reader/") + (license gpl3+))) + +(define-public guile-reader/guile-1.8 + ;; Guile-Reader built against Guile 1.8. + (guile-reader guile-1.8)) + +(define-public guile-reader/guile-2.0 + ;; Guile-Reader built against Guile 2.0. + (guile-reader guile-2.0)) + +;;; guile.scm ends here diff --git a/gnu/packages/help2man.scm b/gnu/packages/help2man.scm new file mode 100644 index 0000000000..0acd39a524 --- /dev/null +++ b/gnu/packages/help2man.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 help2man) + #:use-module (guix licenses) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (gnu packages perl)) + +(define-public help2man + (package + (name "help2man") + (version "1.40.8") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/help2man/help2man-" + version ".tar.gz")) + (sha256 + (base32 + "0s6phazn8jgvpbsby8kj2m58rj1zjghi1aipvamh8af226ssqfzj")))) + (build-system gnu-build-system) + (arguments `(;; There's no `check' target. + #:tests? #f)) + (inputs + `(("perl" ,perl) + ;; TODO: Add these optional dependencies. + ;; ("perl-LocaleGettext" ,perl-LocaleGettext) + ;; ("gettext" ,gettext) + )) + (home-page "http://www.gnu.org/software/help2man/") + (synopsis "GNU help2man generates man pages from `--help' output") + (description + "help2man produces simple manual pages from the ‘--help’ and +‘--version’ output of other commands.") + (license gpl3+))) diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm new file mode 100644 index 0000000000..e0aa3bcd88 --- /dev/null +++ b/gnu/packages/icu4c.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 icu4c) + #:use-module (distro) + #:use-module (gnu packages perl) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public icu4c + (package + (name "icu4c") + (version "50.1.1") + (source (origin + (method url-fetch) + (uri (string-append "http://download.icu-project.org/files/icu4c/" + version + "/icu4c-" + (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) + "-src.tgz")) + (sha256 (base32 + "13yz0kk6zsgj94idnlr3vbg8iph5z4ly4b4xrd5wfja7q3ijdx56")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl))) + (arguments + `(#:phases + (alist-replace + 'unpack + (lambda* (#:key source #:allow-other-keys) + (and (zero? (system* "tar" "xvf" source)) + (chdir "icu/source"))) + (alist-replace + 'configure + (lambda* (#:key #:allow-other-keys #:rest args) + (let ((configure (assoc-ref %standard-phases 'configure))) + ;; patch out two occurrences of /bin/sh from configure script + ;; that might have disappeared in a release later than 50.1.1 + (substitute* "configure" + (("`/bin/sh") + (string-append "`" (which "bash")))) + (apply configure args))) + %standard-phases)))) + (synopsis "ICU, International Components for Unicode") + (description + "ICU is a set of C/C++ and Java libraries providing Unicode and +globalisation support for software applications. This package contains the +C/C++ part.") + (license x11) + (home-page "http://site.icu-project.org/"))) diff --git a/gnu/packages/idutils.scm b/gnu/packages/idutils.scm new file mode 100644 index 0000000000..34b6dfcff9 --- /dev/null +++ b/gnu/packages/idutils.scm @@ -0,0 +1,65 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 idutils) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix licenses) + #:use-module (distro)) + +(define-public idutils + (package + (name "idutils") + (version "4.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/idutils/idutils-" + version ".tar.xz")) + (sha256 + (base32 + "1hmai3422iaqnp34kkzxdnywl7n7pvlxp11vrw66ybxn9wxg90c1")))) + (build-system gnu-build-system) + (inputs `(;; TODO: Add Emacs as an input for byte-compilation. + ;; ("emacs" ,emacs) + ("patch/gets" + ,(search-patch "diffutils-gets-undeclared.patch")))) + (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets")))) + (home-page "http://www.gnu.org/software/idutils/") + (synopsis "GNU Idutils, a text searching utility") + (description + "An \"ID database\" is a binary file containing a list of file +names, a list of tokens, and a sparse matrix indicating which +tokens appear in which files. + +With this database and some tools to query it, many +text-searching tasks become simpler and faster. For example, +you can list all files that reference a particular `\\#include' +file throughout a huge source hierarchy, search for all the +memos containing references to a project, or automatically +invoke an editor on all files containing references to some +function or variable. Anyone with a large software project to +maintain, or a large set of text files to organize, can benefit +from the ID utilities. + +Although the name `ID' is short for `identifier', the ID +utilities handle more than just identifiers; they also treat +other kinds of tokens, most notably numeric constants, and the +contents of certain character strings.") + (license gpl3+))) diff --git a/gnu/packages/indent.scm b/gnu/packages/indent.scm new file mode 100644 index 0000000000..eb42e6a7b4 --- /dev/null +++ b/gnu/packages/indent.scm @@ -0,0 +1,44 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 indent) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public indent + (package + (name "indent") + (version "2.2.10") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/indent/indent-" version + ".tar.gz")) + (sha256 (base32 + "0f9655vqdvfwbxvs1gpa7py8k1z71aqh8hp73f65vazwbfz436wa")))) + (build-system gnu-build-system) + (synopsis "GNU Indent, a program for code indentation and formatting") + (description + "GNU Indent can be used to make code easier to read. It can also convert +from one style of writing C to another. Indent understands a substantial +amount about the syntax of C, but it also attempts to cope with incomplete +and misformed syntax. The GNU style of indenting is the default.") + (license gpl3+) + (home-page "http://www.gnu.org/software/indent/"))) diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm new file mode 100644 index 0000000000..fd5a4cbd0c --- /dev/null +++ b/gnu/packages/ld-wrapper.scm @@ -0,0 +1,147 @@ +#!@BASH@ +# -*- mode: scheme; coding: utf-8; -*- + +# XXX: We have to go through Bash because there's no command-line switch to +# augment %load-compiled-path, and because of the silly 127-byte limit for +# the shebang line in Linux. +# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our +# .go file (see <http://bugs.gnu.org/12519>). + +main="(@ (gnu build-support ld-wrapper) ld-wrapper)" +exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@" +!# +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 build-support ld-wrapper) + #:use-module (srfi srfi-1) + #:export (ld-wrapper)) + +;;; Commentary: +;;; +;;; This is a wrapper for the linker. Its purpose is to inspect the -L and +;;; -l switches passed to the linker, add corresponding -rpath arguments, and +;;; invoke the actual linker with this new set of arguments. +;;; +;;; The alternatives to this hack would be: +;;; +;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than +;;; needed in the RPATH; for instance, given a package with `libfoo' as +;;; an input, all its binaries would have libfoo in their RPATH, +;;; regardless of whether they actually NEED it. +;;; +;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a +;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. +;;; However, this doesn't work when $LIBRARY_PATH is used, because the +;;; additional `-L' switches are not matched by the above rule, because +;;; the rule only matches explicit user-provided switches. See +;;; <http://gcc.gnu.org/ml/gcc-help/2012-09/msg00110.html> for details. +;;; +;;; As a bonus, this wrapper checks for "impurities"--i.e., references to +;;; libraries outside the store. +;;; +;;; Code: + +(define %real-ld + ;; Name of the linker that we wrap. + "@LD@") + +(define %store-directory + ;; File name of the store. + (or (getenv "NIX_STORE") "/nix/store")) + +(define %temporary-directory + ;; Temporary directory. + (or (getenv "TMPDIR") "/tmp")) + +(define %build-directory + ;; Top build directory when run from a builder. + (getenv "NIX_BUILD_TOP")) + +(define %allow-impurities? + ;; Whether to allow references to libraries outside the store. + (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES")) + +(define %debug? + ;; Whether to emit debugging output. + (getenv "GUIX_LD_WRAPPER_DEBUG")) + +(define (pure-file-name? file) + ;; Return #t when FILE is the name of a file either within the store or + ;; within the build directory. + (or (not (string-prefix? "/" file)) + (string-prefix? %store-directory file) + (string-prefix? %temporary-directory file) + (and %build-directory + (string-prefix? %build-directory file)))) + +(define (switch-arguments switch args) + ;; Return the arguments passed for the occurrences of SWITCH--e.g., + ;; "-L"--in ARGS. + (let ((prefix-len (string-length switch))) + (fold-right (lambda (arg path) + (if (string-prefix? switch arg) + (cons (substring arg prefix-len) path) + path)) + '() + args))) + +(define (library-path args) + ;; Return the library search path extracted from `-L' switches in ARGS. + ;; Note: allow references to out-of-store directories. When this leads to + ;; actual impurities, this is caught later. + (switch-arguments "-L" args)) + +(define (library-files-linked args) + ;; Return the file names of shared libraries explicitly linked against via + ;; `-l' in ARGS. + (map (lambda (lib) + (string-append "lib" lib ".so")) + (switch-arguments "-l" args))) + +(define (rpath-arguments lib-path library-files) + ;; Return the `-rpath' argument list for each of LIBRARY-FILES found in + ;; LIB-PATH. + (fold-right (lambda (file args) + (let ((absolute (search-path lib-path file))) + (if absolute + (if (or %allow-impurities? + (pure-file-name? absolute)) + (cons* "-rpath" (dirname absolute) + args) + (begin + (format (current-error-port) + "ld-wrapper: error: attempt to use impure library ~s~%" + absolute) + (exit 1))) + args))) + '() + library-files)) + +(define (ld-wrapper . args) + ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. + (let* ((lib-path (library-path args)) + (libs (library-files-linked args)) + (args (append args (rpath-arguments lib-path libs)))) + (if %debug? + (format (current-error-port) + "ld-wrapper: invoking `~a' with ~s~%" + %real-ld args)) + (apply execl %real-ld (basename %real-ld) args))) + +;;; ld-wrapper.scm ends here diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm new file mode 100644 index 0000000000..63a3d98a9b --- /dev/null +++ b/gnu/packages/less.scm @@ -0,0 +1,51 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 less) + #:use-module (guix licenses) + #:use-module (gnu packages ncurses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public less + (package + (name "less") + (version "451") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/less/less-" + version ".tar.gz")) + (sha256 + (base32 + "0mszdd9m1dsbg59pav62swg9f87xmjpfspcw2jsazzksciy2is4z")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses))) + (home-page "https://www.gnu.org/software/less/") + (synopsis + "GNU less is a program similar to more, but which allows backward +movement in the file as well as forward movement") + (description + "GNU less is a program similar to more, but which allows backward +movement in the file as well as forward movement. Also, less does not +have to read the entire input file before starting, so with large input +files it starts up faster than text editors like vi. Less uses +termcap (or terminfo on some systems), so it can run on a variety of +terminals. There is even limited support for hardcopy terminals.") + (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm new file mode 100644 index 0000000000..87c849e564 --- /dev/null +++ b/gnu/packages/libffi.scm @@ -0,0 +1,73 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 libffi) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public libffi + (let ((post-install-phase + ;; Install headers in the right place. + '(lambda* (#:key outputs #:allow-other-keys) + (define out (assoc-ref outputs "out")) + (mkdir (string-append out "/include")) + (with-directory-excursion + (string-append out "/lib/libffi-3.0.9/include") + (for-each (lambda (h) + (format #t "moving `~a' to includedir~%" h) + (rename-file h (string-append out "/include/" h))) + (scandir "." + (lambda (x) + (not (member x '("." "..")))))))))) + (package + (name "libffi") + (version "3.0.9") + (source (origin + (method url-fetch) + (uri + (string-append "ftp://sourceware.org/pub/libffi/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0ln4jbpb6clcsdpb9niqk0frgx4k0xki96wiv067ig0q4cajb7aq")))) + (build-system gnu-build-system) + (arguments `(#:modules ((guix build utils) (guix build gnu-build-system) + (ice-9 ftw) (srfi srfi-26)) + #:phases (alist-cons-after 'install 'post-install + ,post-install-phase + %standard-phases))) + (synopsis "libffi, a foreign function call interface library") + (description + "The libffi library provides a portable, high level programming interface +to various calling conventions. This allows a programmer to call any +function specified by a call interface description at run-time. + +FFI stands for Foreign Function Interface. A foreign function interface is +the popular name for the interface that allows code written in one language +to call code written in another language. The libffi library really only +provides the lowest, machine dependent layer of a fully featured foreign +function interface. A layer must exist above libffi that handles type +conversions for values passed between the two languages.") + (home-page "http://sources.redhat.com/libffi/") + + ;; See <http://github.com/atgreen/libffi/blob/master/LICENSE>. + (license expat)))) + diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm new file mode 100644 index 0000000000..dd246ef3e1 --- /dev/null +++ b/gnu/packages/libidn.scm @@ -0,0 +1,51 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 libidn) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libidn + (package + (name "libidn") + (version "1.26") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/libidn/libidn-" version + ".tar.gz")) + (sha256 (base32 + "0g657kv60rh486m7bwyp5k24ljmym4wnb8nmk6d3i3qgr1qlqbqa")))) + (build-system gnu-build-system) +;; FIXME: No Java and C# libraries are currently built. + (synopsis "GNU Libidn, a library to encode and decode internationalised domain names") + (description + "GNU Libidn is a fully documented implementation of the Stringprep, +Punycode and IDNA specifications. Libidn's purpose is to encode and decode +internationalised domain names. + +The library contains a generic Stringprep implementation. Profiles for +Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. Punycode and +ASCII Compatible Encoding (ACE) via IDNA are supported. A mechanism to +define Top-Level Domain (TLD) specific validation tables, and to compare +strings against those tables, is included. +Default tables for some TLDs are also included.") + (license lgpl2.1+) + (home-page "http://www.gnu.org/software/libidn/"))) diff --git a/gnu/packages/libjpeg.scm b/gnu/packages/libjpeg.scm new file mode 100644 index 0000000000..22d5a6b1c1 --- /dev/null +++ b/gnu/packages/libjpeg.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 libjpeg) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libjpeg + (package + (name "libjpeg") + (version "9") + (source (origin + (method url-fetch) + (uri (string-append "http://www.ijg.org/files/jpegsrc.v" + version ".tar.gz")) + (sha256 (base32 + "0dg5wxcx3cw0hal9gvivj97vid9z0s5sb1yvg55hpxmafn9rxqn4")))) + (build-system gnu-build-system) + (synopsis "Libjpeg, a library for handling JPEG files") + (description + "Libjpeg implements JPEG image encoding, decoding, and transcoding. +JPEG is a standardized compression method for full-color and gray-scale +images. +The included programs provide conversion between the JPEG format and +image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.") + (license ijg) + (home-page "http://www.ijg.org/"))) + +(define-public libjpeg-8 + (package (inherit libjpeg) + (name "libjpeg-8") + (version "8d") + (source (origin + (method url-fetch) + (uri (string-append "http://www.ijg.org/files/jpegsrc.v" + version ".tar.gz")) + (sha256 (base32 + "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0")))))) + diff --git a/gnu/packages/libsigsegv.scm b/gnu/packages/libsigsegv.scm new file mode 100644 index 0000000000..de896e4e8b --- /dev/null +++ b/gnu/packages/libsigsegv.scm @@ -0,0 +1,47 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 libsigsegv) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public libsigsegv + (package + (name "libsigsegv") + (version "2.10") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/libsigsegv/libsigsegv-" + version ".tar.gz")) + (sha256 + (base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/libsigsegv/") + (synopsis "GNU libsigsegv, a library to handle page faults in user mode") + (description +"GNU libsigsegv is a library for handling page faults in user mode. A page +fault occurs when a program tries to access to a region of memory that is +currently not available. Catching and handling a page fault is a useful +technique for implementing pageable virtual memory, memory-mapped access to +persistent databases, generational garbage collectors, stack overflow +handlers, distributed shared memory, and more.") + (license gpl2+))) diff --git a/gnu/packages/libtiff.scm b/gnu/packages/libtiff.scm new file mode 100644 index 0000000000..0e785a622b --- /dev/null +++ b/gnu/packages/libtiff.scm @@ -0,0 +1,65 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 libtiff) + #:use-module (distro) + #:use-module (gnu packages file) + #:use-module (gnu packages libjpeg) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libtiff + (package + (name "libtiff") + (version "4.0.3") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.remotesensing.org/pub/libtiff/tiff-" + version ".tar.gz")) + (sha256 (base32 + "0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa")))) + (build-system gnu-build-system) + (inputs `(("file" ,file) + ("libjpeg-8" ,libjpeg-8))) + ;; currently does not compile with libjpeg version 9 + (arguments + `(#:configure-flags + (list (string-append "--with-jpeg-include-dir=" + (assoc-ref %build-inputs "libjpeg-8") + "/include")) + #:phases + (alist-replace + 'configure + (lambda* (#:key #:allow-other-keys #:rest args) + (let ((configure (assoc-ref %standard-phases 'configure))) + (substitute* "configure" + (("`/usr/bin/file") + (string-append "`" (which "file")))) + (apply configure args))) + %standard-phases))) + (synopsis "Libtiff, a library for handling TIFF files") + (description + "Libtiff provides support for the Tag Image File Format (TIFF), a format +used for storing image data. +Included are a library, libtiff, for reading and writing TIFF and a small +collection of tools for doing simple manipulations of TIFF images.") + (license (bsd-style "file://COPYRIGHT" + "See COPYRIGHT in the distribution.")) + (home-page "http://www.libtiff.org/"))) diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm new file mode 100644 index 0000000000..62ade5e378 --- /dev/null +++ b/gnu/packages/libunistring.scm @@ -0,0 +1,58 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 libunistring) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public libunistring + (package + (name "libunistring") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/libunistring/libunistring-" + version ".tar.gz")) + (sha256 + (base32 + "18q620269xzpw39dwvr9zpilnl2dkw5z5kz3mxaadnpv4k3kw3b1")))) + (propagated-inputs '()) ; FIXME: add libiconv when !glibc + (build-system gnu-build-system) + (synopsis "GNU Libunistring, a Unicode string library") + (description + "This library provides functions for manipulating Unicode strings and for +manipulating C strings according to the Unicode standard. + +GNU libunistring is for you if your application involves non-trivial text +processing, such as upper/lower case conversions, line breaking, operations +on words, or more advanced analysis of text. Text provided by the user can, +in general, contain characters of all kinds of scripts. The text processing +functions provided by this library handle all scripts and all languages. + +libunistring is for you if your application already uses the ISO C / POSIX +<ctype.h>, <wctype.h> functions and the text it operates on is provided by +the user and can be in any language. + +libunistring is also for you if your application uses Unicode strings as +internal in-memory representation.") + (home-page "http://www.gnu.org/software/libunistring/") + (license lgpl3+))) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm new file mode 100644 index 0000000000..1813f0cd04 --- /dev/null +++ b/gnu/packages/libusb.scm @@ -0,0 +1,44 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 libusb) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public libusb + (package + (name "libusb") + (version "1.0.9") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libusb/libusb-1.0/" + "libusb-" version "/libusb-" version ".tar.bz2")) + (sha256 + (base32 + "16sz34ix6hw2wwl3kqx6rf26fg210iryr68wc439dc065pffw879")))) + (build-system gnu-build-system) + (home-page "http://www.libusb.org") + (synopsis "Libusb, a user-space USB library") + (description + "Libusb is a library that gives applications easy access to USB +devices on various operating systems.") + (license lgpl2.1+))) \ No newline at end of file diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm new file mode 100644 index 0000000000..ded36c5eec --- /dev/null +++ b/gnu/packages/linux.scm @@ -0,0 +1,259 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 linux) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages flex) + #:use-module (gnu packages libusb) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public linux-libre-headers + (let* ((version* "3.3.8") + (build-phase + '(lambda* (#:key system #:allow-other-keys) + (let ((arch (car (string-split system #\-)))) + (setenv "ARCH" + (cond ((string=? arch "i686") "i386") + (else arch))) + (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))) + + (and (zero? (system* "make" "defconfig")) + (zero? (system* "make" "mrproper" "headers_check"))))) + (install-phase + `(lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (and (zero? (system* "make" + (string-append "INSTALL_HDR_PATH=" out) + "headers_install")) + (mkdir (string-append out "/include/config")) + (call-with-output-file + (string-append out + "/include/config/kernel.release") + (lambda (p) + (format p "~a-default~%" ,version*)))))))) + (package + (name "linux-libre-headers") + (version version*) + (source (origin + (method url-fetch) + (uri (string-append + "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-" + version "-gnu.tar.xz")) + (sha256 + (base32 + "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl")))) + (build-system gnu-build-system) + (native-inputs `(("perl" ,perl))) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases (alist-replace + 'build ,build-phase + (alist-replace + 'install ,install-phase + (alist-delete 'configure %standard-phases))) + #:tests? #f)) + (synopsis "GNU Linux-Libre kernel headers") + (description "Headers of the Linux-Libre kernel.") + (license "GPLv2") + (home-page "http://www.gnu.org/software/linux-libre/")))) + +(define-public linux-pam + (package + (name "linux-pam") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-" + version ".tar.bz2") + (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-" + version ".tar.bz2"))) + (sha256 + (base32 + "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s")))) + (build-system gnu-build-system) + (inputs + `(("flex" ,flex) + + ;; TODO: optional dependencies + ;; ("libxcrypt" ,libxcrypt) + ;; ("cracklib" ,cracklib) + )) + (arguments + ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d + ;; isn't available. + '(#:tests? #f)) + (home-page "http://www.linux-pam.org/") + (synopsis "Pluggable authentication modules for Linux") + (description + "A *Free* project to implement OSF's RFC 86.0. +Pluggable authentication modules are small shared object files that can +be used through the PAM API to perform tasks, like authenticating a user +at login. Local and dynamic reconfiguration are its key features") + (license bsd-3))) + +(define-public psmisc + (package + (name "psmisc") + (version "22.20") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-" + version ".tar.gz")) + (sha256 + (base32 + "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses))) + (home-page "http://psmisc.sourceforge.net/") + (synopsis + "set of utilities that use the proc filesystem, such as fuser, killall, and pstree") + (description + "This PSmisc package is a set of some small useful utilities that +use the proc filesystem. We're not about changing the world, but +providing the system administrator with some help in common tasks.") + (license gpl2+))) + +(define-public util-linux + (package + (name "util-linux") + (version "2.21") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kernel.org/linux/utils/" + name "/v" version "/" + name "-" version ".2" ".tar.xz")) + (sha256 + (base32 + "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--disable-use-tty-group") + #:phases (alist-cons-after + 'install 'patch-chkdupexe + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (string-append out "/bin/chkdupexe") + ;; Allow 'patch-shebang' to do its work. + (("@PERL@") "/bin/perl")))) + %standard-phases))) + (inputs `(("zlib" ,guix:zlib) + ("ncurses" ,ncurses) + ("perl" ,perl))) + (home-page "https://www.kernel.org/pub/linux/utils/util-linux/") + (synopsis + "util-linux is a random collection of utilities for the Linux kernel") + (description + "util-linux is a random collection of utilities for the Linux kernel.") + + ;; Note that util-linux doesn't use the same license for all the + ;; code. GPLv2+ is the default license for a code without an + ;; explicitly defined license. + (license (list gpl3+ gpl2+ gpl2 lgpl2.0+ + bsd-4 public-domain)))) + +(define-public procps + (package + (name "procps") + (version "3.2.8") + (source (origin + (method url-fetch) + (uri (string-append "http://procps.sourceforge.net/procps-" + version ".tar.gz")) + (sha256 + (base32 + "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses) + ("patch/make-3.82" ,(search-patch "procps-make-3.82.patch")))) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/make-3.82")) + #:phases (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; No `configure', just a single Makefile. + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("/usr/") "/") + (("--(owner|group) 0") "") + (("ldconfig") "true") + (("^LDFLAGS[[:blank:]]*:=(.*)$" _ value) + ;; Add libproc to the RPATH. + (string-append "LDFLAGS := -Wl,-rpath=" + out "/lib" value)))) + (setenv "CC" "gcc")) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (and (zero? + (system* "make" "install" + (string-append "DESTDIR=" out))) + + ;; Sanity check. + (zero? + (system* (string-append out "/bin/ps") + "--version"))))) + %standard-phases)) + + ;; What did you expect? Tests? + #:tests? #f)) + (home-page "http://procps.sourceforge.net/") + (synopsis + "Utilities that give information about processes using the /proc filesystem") + (description + "procps is the package that has a bunch of small useful utilities +that give information about processes using the Linux /proc file system. +The package includes the programs ps, top, vmstat, w, kill, free, +slabtop, and skill.") + (license gpl2))) + +(define-public usbutils + (package + (name "usbutils") + (version "006") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/" + "usbutils-" version ".tar.xz")) + (sha256 + (base32 + "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr")))) + (build-system gnu-build-system) + (inputs + `(("libusb" ,libusb) ("pkg-config" ,pkg-config))) + (home-page "http://www.linux-usb.org/") + (synopsis + "Tools for working with USB devices, such as lsusb") + (description + "Tools for working with USB devices, such as lsusb.") + (license gpl2+))) diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm new file mode 100644 index 0000000000..b95b694ab4 --- /dev/null +++ b/gnu/packages/lout.scm @@ -0,0 +1,132 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 lout) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public lout + ;; This one is a bit tricky, because it doesn't follow the GNU Build System + ;; rules. Instead, it has a makefile that has to be patched to set the + ;; prefix, etc., and it has no makefile rules to build its doc. + (let ((configure-phase + '(lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (substitute* "makefile" + (("^PREFIX[[:blank:]]*=.*$") + (string-append "PREFIX = " out "\n")) + (("^LOUTLIBDIR[[:blank:]]*=.*$") + (string-append "LOUTLIBDIR = " out "/lib/lout\n")) + (("^LOUTDOCDIR[[:blank:]]*=.*$") + (string-append "LOUTDOCDIR = " doc "/doc/lout\n")) + (("^MANDIR[[:blank:]]*=.*$") + (string-append "MANDIR = " out "/man\n"))) + (mkdir out) + (mkdir (string-append out "/bin")) + (mkdir (string-append out "/lib")) + (mkdir (string-append out "/man")) + (mkdir-p (string-append doc "/doc/lout"))))) + (install-man-phase + '(lambda* (#:key outputs #:allow-other-keys) + (zero? (system* "make" "installman")))) + (doc-phase + '(lambda* (#:key outputs #:allow-other-keys) + (define out + (assoc-ref outputs "doc")) + + (setenv "PATH" + (string-append (assoc-ref outputs "out") + "/bin:" (getenv "PATH"))) + (chdir "doc") + (every (lambda (doc) + (format #t "doc: building `~a'...~%" doc) + (with-directory-excursion doc + (let ((file (string-append out "/doc/lout/" + doc ".ps"))) + (and (or (file-exists? "outfile.ps") + (zero? (system* "lout" "-r4" "-o" + "outfile.ps" "all"))) + (begin + (copy-file "outfile.ps" file) + #t) + (zero? (system* "ps2pdf" + "-dPDFSETTINGS=/prepress" + "-sPAPERSIZE=a4" + file + (string-append out "/doc/lout/" + doc ".pdf"))))))) + '("design" "expert" "slides" "user"))))) + (package + (name "lout") + (version "3.39") + (source (origin + (method url-fetch) + ;; FIXME: `http-get' doesn't follow redirects, hence the URL. + (uri (string-append + "http://download-mirror.savannah.gnu.org/releases/lout/lout-" + version ".tar.gz")) + (sha256 + (base32 + "12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq")))) + (build-system gnu-build-system) ; actually, just a makefile + (outputs '("out" "doc")) + (inputs + `(;; FIXME: Add dependency on Ghostscript. + ;; ("ghostscript" ,(lambda _ + ;; (nixpkgs-derivation "ghostscript"))) + )) + (arguments `(#:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1)) ; we need SRFI-1 + #:tests? #f ; no "check" target + + ;; Customize the build phases. + #:phases (alist-replace + 'configure ,configure-phase + + (alist-cons-after + 'install 'install-man-pages + ,install-man-phase + + (alist-cons-after + 'install 'install-doc + ,doc-phase + %standard-phases))))) + (synopsis "Lout, a document layout system similar in style to LaTeX") + (description +"The Lout document formatting system is now reads a high-level description of +a document similar in style to LaTeX and produces a PostScript or plain text +output file. + +Lout offers an unprecedented range of advanced features, including optimal +paragraph and page breaking, automatic hyphenation, PostScript EPS file +inclusion and generation, equation formatting, tables, diagrams, rotation and +scaling, sorted indexes, bibliographic databases, running headers and +odd-even pages, automatic cross referencing, multilingual documents including +hyphenation (most European languages are supported), formatting of computer +programs, and much more, all ready to use. Furthermore, Lout is easily +extended with definitions which are very much easier to write than troff of +TeX macros because Lout is a high-level, purely functional language, the +outcome of an eight-year research project that went back to the +beginning.") + (license gpl3+) + (home-page "http://savannah.nongnu.org/projects/lout/")))) diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm new file mode 100644 index 0000000000..b42eb24639 --- /dev/null +++ b/gnu/packages/lsh.scm @@ -0,0 +1,126 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 lsh) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (distro) + #:use-module (gnu packages m4) + #:use-module (gnu packages linux) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages readline) + #:use-module (gnu packages gperf) + #:use-module (gnu packages base)) + +(define-public liboop + (package + (name "liboop") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://download.ofb.net/liboop/liboop-" + version ".tar.gz")) + (sha256 + (base32 + "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l")))) + (build-system gnu-build-system) + (home-page "http://liboop.ofb.net/") + (synopsis "`liboop', an event loop library") + (description "liboop is an event loop library.") + (license lgpl2.1+))) + +(define-public lsh + (package + (name "lsh") + (version "2.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/lsh/lsh-" + version ".tar.gz")) + (sha256 + (base32 + "149hf49xcj99wwvi7hcb59igq4vpyv8har1br1if3lrsw5irsjv1")))) + (build-system gnu-build-system) + (inputs + `(("linux-pam" ,linux-pam) + ("m4" ,m4) + ("readline" ,readline) + ("liboop" ,liboop) + ("zlib" ,guix:zlib) + ("gmp" ,gmp) + ("guile" ,guile-final) + ("gperf" ,gperf) + ("psmisc" ,psmisc) ; for `killall' + + ("patch/no-root-login" ,(search-patch "lsh-no-root-login.patch")) + ("patch/guile-compat" ,(search-patch "lsh-guile-compat.patch")) + ("patch/pam-service-name" + ,(search-patch "lsh-pam-service-name.patch")))) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/no-root-login") + (assoc-ref %build-inputs "patch/pam-service-name") + (assoc-ref %build-inputs "patch/guile-compat")) + + ;; Skip the `configure' test that checks whether /dev/ptmx & + ;; co. work as expected, because it relies on impurities (for + ;; instance, /dev/pts may be unavailable in chroots.) + #:configure-flags '("lsh_cv_sys_unix98_ptys=yes") + + ;; FIXME: Tests won't run in a chroot, presumably because + ;; /etc/profile is missing, and thus clients get an empty $PATH + ;; and nothing works. + #:tests? #f + + #:phases + (alist-cons-before + 'configure 'fix-test-suite + (lambda _ + ;; Tests rely on $USER being set. + (setenv "USER" "guix") + + (substitute* "src/testsuite/functions.sh" + (("localhost") + ;; Avoid host name lookups since they don't work in chroot + ;; builds. + "127.0.0.1") + (("set -e") + ;; Make tests more verbose. + "set -e\nset -x")) + + (substitute* (find-files "src/testsuite" "-test$") + (("localhost") "127.0.0.1")) + + (substitute* "src/testsuite/login-auth-test" + (("/bin/cat") + ;; Use the right path to `cat'. + (which "cat")))) + %standard-phases))) + (home-page "http://www.lysator.liu.se/~nisse/lsh/") + (synopsis + "GNU lsh, a GPL'd implementation of the SSH protocol") + (description + "lsh is a free implementation (in the GNU sense) of the ssh +version 2 protocol, currently being standardised by the IETF +SECSH working group.") + (license gpl2+))) diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm new file mode 100644 index 0000000000..bac8d02c85 --- /dev/null +++ b/gnu/packages/m4.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 m4) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public m4 + (package + (name "m4") + (version "1.4.16") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/m4/m4-" + version ".tar.bz2")) + (sha256 + (base32 + "035r7ma272j2cwni2961jp22k6bn3n9xwn3b3qbcn2yrvlghql22")))) + (build-system gnu-build-system) + (arguments (case-lambda + ((system) + ;; XXX: Disable tests on those platforms with know issues. + `(#:tests? ,(not (member system + '("x86_64-darwin" + "i686-cygwin" + "i686-sunos"))) + #:patches (list (assoc-ref %build-inputs "patch/s_isdir") + (assoc-ref %build-inputs + "patch/readlink-EINVAL") + (assoc-ref %build-inputs "patch/gets")) + #:phases (alist-cons-before + 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + ;; Fix references to /bin/sh. + (let ((bash (assoc-ref inputs "bash"))) + (for-each patch-shebang + (find-files "tests" "\\.sh$")) + (substitute* (find-files "tests" + "posix_spawn") + (("/bin/sh") + (format #f "~a/bin/bash" bash))))) + %standard-phases))) + ((system cross-system) + `(#:patches (list (assoc-ref %build-inputs "patch/s_isdir") + (assoc-ref %build-inputs + "patch/readlink-EINVAL") + (assoc-ref %build-inputs "patch/gets")))))) + (inputs `(("patch/s_isdir" ,(search-patch "m4-s_isdir.patch")) + ("patch/readlink-EINVAL" + ,(search-patch "m4-readlink-EINVAL.patch")) + ("patch/gets" ,(search-patch "m4-gets-undeclared.patch")))) + (synopsis "GNU M4, a macro processor") + (description + "GNU M4 is an implementation of the traditional Unix macro processor. It +is mostly SVR4 compatible although it has some extensions (for example, +handling more than 9 positional parameters to macros). GNU M4 also has +built-in functions for including files, running shell commands, doing +arithmetic, etc. + +GNU M4 is a macro processor in the sense that it copies its input to the +output expanding macros as it goes. Macros are either builtin or +user-defined and can take any number of arguments. Besides just doing macro +expansion, m4 has builtin functions for including named files, running UNIX +commands, doing integer arithmetic, manipulating text in various ways, +recursion etc... m4 can be used either as a front-end to a compiler or as a +macro processor in its own right.") + (license gpl3+) + (home-page "http://www.gnu.org/software/m4/"))) diff --git a/gnu/packages/mailutils.scm b/gnu/packages/mailutils.scm new file mode 100644 index 0000000000..f6d46aaf34 --- /dev/null +++ b/gnu/packages/mailutils.scm @@ -0,0 +1,106 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 mailutils) + #:use-module (distro) + #:use-module (gnu packages linux) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages gdbm) + #:use-module (gnu packages guile) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages readline) + #:use-module (gnu packages dejagnu) + #:use-module (gnu packages m4) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages mysql) + #:use-module (gnu packages autotools) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public mailutils + (package + (name "mailutils") + (version "2.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mailutils/mailutils-" + version ".tar.bz2")) + (sha256 + (base32 + "0szbqa12zqzldqyw97lxqax3ja2adis83i7brdfsxmrfw68iaf65")))) + (build-system gnu-build-system) + (arguments + '(;; TODO: Add `--with-sql'. + #:patches (list (assoc-ref %build-inputs + "patch/gets-undeclared")) + #:phases (alist-cons-before + 'build 'pre-build + (lambda _ + ;; Use Guile 2.0's public API. + (substitute* "libmu_scm/mu_message.c" + (("scm_i_string_length") + "scm_c_string_length")) + + ;; This file should be generated to use the right + ;; value of $(libdir) et al. + (delete-file "libmu_scm/mailutils.scm") + + ;; Use the right file name for `cat'. + (substitute* "testsuite/lib/mailutils.exp" + (("/bin/cat") + (which "cat")))) + %standard-phases) + #:parallel-tests? #f)) + (inputs + `(("dejagnu" ,dejagnu) + ("m4" ,m4) + ("texinfo" ,texinfo) + ("guile" ,guile-2.0) + ("gnutls" ,gnutls) + ("ncurses" ,ncurses) + ("readline" ,readline) + ("linux-pam" ,linux-pam) + ("libtool" ,libtool) + ("gdbm" ,gdbm) + ("patch/gets-undeclared" + ,(search-patch "m4-gets-undeclared.patch")))) + (home-page "http://www.gnu.org/software/mailutils/") + (synopsis "A rich and powerful protocol-independent mail framework") + (description + "GNU Mailutils is a rich and powerful protocol-independent mail +framework. It contains a series of useful mail libraries, clients, and +servers. These are the primary mail utilities for the GNU system. The +central library is capable of handling electronic mail in various +mailbox formats and protocols, both local and remote. Specifically, +this project contains a POP3 server, an IMAP4 server, and a Sieve mail +filter. It also provides a POSIX `mailx' client, and a collection of +other handy tools. + +The GNU Mailutils libraries supply an ample set of primitives for +handling electronic mail in programs written in C, C++, Python or +Scheme. + +The utilities provided by Mailutils include imap4d and pop3d mail +servers, mail reporting utility comsatd, general-purpose mail delivery +agent maidag, mail filtering program sieve, and an implementation of MH +message handling system.") + (license + ;; Libraries are under LGPLv3+, and programs under GPLv3+. + (list gpl3+ lgpl3+)))) diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm new file mode 100644 index 0000000000..20679d2244 --- /dev/null +++ b/gnu/packages/make-bootstrap.scm @@ -0,0 +1,562 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 make-bootstrap) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix licenses) + #:use-module (guix build-system trivial) + #:use-module (guix build-system gnu) + #:use-module ((distro) #:select (search-patch)) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages gawk) + #:use-module (gnu packages guile) + #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:export (%bootstrap-binaries-tarball + %binutils-bootstrap-tarball + %glibc-bootstrap-tarball + %gcc-bootstrap-tarball + %guile-bootstrap-tarball + %bootstrap-tarballs)) + +;;; Commentary: +;;; +;;; This modules provides tools to build tarballs of the "bootstrap binaries" +;;; used in (gnu packages bootstrap). These statically-linked binaries are +;;; taken for granted and used as the root of the whole bootstrap procedure. +;;; +;;; Code: + +(define %glibc-for-bootstrap + ;; A libc whose `system' and `popen' functions looks for `sh' in $PATH, + ;; without nscd, and with static NSS modules. + (package (inherit glibc-final) + (arguments + (lambda (system) + (substitute-keyword-arguments ((package-arguments glibc-final) system) + ((#:patches patches) + `(cons (assoc-ref %build-inputs "patch/system") + ,patches)) + ((#:configure-flags flags) + ;; Arrange so that getaddrinfo & co. do not contact the nscd, + ;; and can use statically-linked NSS modules. + `(cons* "--disable-nscd" "--disable-build-nscd" + "--enable-static-nss" + ,flags))))) + (inputs + `(("patch/system" ,(search-patch "glibc-bootstrap-system.patch")) + ,@(package-inputs glibc-final))))) + +(define %standard-inputs-with-relocatable-glibc + ;; Standard inputs with the above libc and corresponding GCC. + `(("libc", %glibc-for-bootstrap) + ("gcc" ,(package-with-explicit-inputs + gcc-4.7 + `(("libc",%glibc-for-bootstrap) + ,@(alist-delete "libc" %final-inputs)) + (current-source-location))) + ,@(fold alist-delete %final-inputs '("libc" "gcc")))) + +(define %bash-static + (static-package bash-light)) + +(define %static-inputs + ;; Packages that are to be used as %BOOTSTRAP-INPUTS. + (let ((coreutils (package (inherit coreutils) + (arguments + `(#:configure-flags + '("--disable-nls" + "--disable-silent-rules" + "--enable-no-install-program=stdbuf,libstdbuf.so" + "CFLAGS=-Os -g0" ; smaller, please + "LDFLAGS=-static -pthread") + #:tests? #f ; signal-related Gnulib tests fail + ,@(package-arguments coreutils))) + + ;; Remove optional dependencies such as GMP. + (inputs `(,(assoc "perl" (package-inputs coreutils)))))) + (bzip2 (package (inherit bzip2) + (arguments + (substitute-keyword-arguments (package-arguments bzip2) + ((#:phases phases) + `(alist-cons-before + 'build 'dash-static + (lambda _ + (substitute* "Makefile" + (("^LDFLAGS[[:blank:]]*=.*$") + "LDFLAGS = -static"))) + ,phases)))))) + (xz (package (inherit xz) + (arguments + `(#:strip-flags '("--strip-all") + #:phases (alist-cons-before + 'configure 'static-executable + (lambda _ + ;; Ask Libtool for a static executable. + (substitute* "src/xz/Makefile.in" + (("^xz_LDADD =") + "xz_LDADD = -all-static"))) + %standard-phases))))) + (gawk (package (inherit gawk) + (arguments + (lambda (system) + `(#:patches (list (assoc-ref %build-inputs "patch/sh")) + ,@(substitute-keyword-arguments + ((package-arguments gawk) system) + ((#:phases phases) + `(alist-cons-before + 'configure 'no-export-dynamic + (lambda _ + ;; Since we use `-static', remove + ;; `-export-dynamic'. + (substitute* "configure" + (("-export-dynamic") ""))) + ,phases)))))) + (inputs `(("patch/sh" ,(search-patch "gawk-shell.patch")))))) + (finalize (lambda (p) + (static-package (package-with-explicit-inputs + p + %standard-inputs-with-relocatable-glibc) + (current-source-location))))) + `(,@(map (match-lambda + ((name package) + (list name (finalize package)))) + `(("tar" ,tar) + ("gzip" ,gzip) + ("bzip2" ,bzip2) + ("xz" ,xz) + ("patch" ,patch) + ("coreutils" ,coreutils) + ("sed" ,sed) + ("grep" ,grep) + ("gawk" ,gawk))) + ("bash" ,%bash-static) + ;; ("ld-wrapper" ,ld-wrapper) + ;; ("binutils" ,binutils-final) + ;; ("gcc" ,gcc-final) + ;; ("libc" ,glibc-final) + ))) + +(define %static-binaries + (package + (name "static-binaries") + (version "0") + (build-system trivial-build-system) + (source #f) + (inputs %static-inputs) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (ice-9 ftw) + (ice-9 match) + (srfi srfi-1) + (srfi srfi-26) + (guix build utils)) + + (let () + (define (directory-contents dir) + (map (cut string-append dir "/" <>) + (scandir dir (negate (cut member <> '("." "..")))))) + + (define (copy-directory source destination) + (for-each (lambda (file) + (format #t "copying ~s...~%" file) + (copy-file file + (string-append destination "/" + (basename file)))) + (directory-contents source))) + + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + + ;; Copy Coreutils binaries. + (let* ((coreutils (assoc-ref %build-inputs "coreutils")) + (source (string-append coreutils "/bin"))) + (copy-directory source bin)) + + ;; For the other inputs, copy just one binary, which has the + ;; same name as the input. + (for-each (match-lambda + ((name . dir) + (let ((source (string-append dir "/bin/" name))) + (format #t "copying ~s...~%" source) + (copy-file source + (string-append bin "/" name))))) + (alist-delete "coreutils" %build-inputs)) + + ;; But of course, there are exceptions to this rule. + (let ((grep (assoc-ref %build-inputs "grep"))) + (copy-file (string-append grep "/bin/fgrep") + (string-append bin "/fgrep")) + (copy-file (string-append grep "/bin/egrep") + (string-append bin "/egrep"))) + + ;; Clear references to the store path. + (for-each remove-store-references + (directory-contents bin)) + + (with-directory-excursion bin + ;; Programs such as Perl's build system want these aliases. + (symlink "bash" "sh") + (symlink "gawk" "awk")) + + #t))))) + (synopsis "Statically-linked bootstrap binaries") + (description + "Binaries used to bootstrap the distribution.") + (license #f) + (home-page #f))) + +(define %binutils-static + ;; Statically-linked Binutils. + (package (inherit binutils) + (name "binutils-static") + (arguments + `(#:configure-flags '("--disable-gold" "--with-lib-path=/no-ld-lib-path") + #:strip-flags '("--strip-all") + #:phases (alist-cons-before + 'configure 'all-static + (lambda _ + ;; The `-all-static' libtool flag can only be passed + ;; after `configure', since configure tests don't use + ;; libtool, and only for executables built with libtool. + (substitute* '("binutils/Makefile.in" + "gas/Makefile.in" + "ld/Makefile.in") + (("^LDFLAGS =(.*)$" line) + (string-append line + "\nAM_LDFLAGS = -static -all-static\n")))) + %standard-phases))))) + +(define %binutils-static-stripped + ;; The subset of Binutils that we need. + (package (inherit %binutils-static) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + + (setvbuf (current-output-port) _IOLBF) + (let* ((in (assoc-ref %build-inputs "binutils")) + (out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (for-each (lambda (file) + (let ((target (string-append bin "/" file))) + (format #t "copying `~a'...~%" file) + (copy-file (string-append in "/bin/" file) + target) + (remove-store-references target))) + '("ar" "as" "ld" "nm" "objcopy" "objdump" + "ranlib" "readelf" "size" "strings" "strip")) + #t)))) + (inputs `(("binutils" ,%binutils-static))))) + +(define %glibc-stripped + ;; GNU libc's essential shared libraries, dynamic linker, and headers, + ;; with all references to store directories stripped. As a result, + ;; libc.so is unusable and need to be patched for proper relocation. + (let ((glibc %glibc-for-bootstrap)) + (package (inherit glibc) + (name "glibc-stripped") + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + + (setvbuf (current-output-port) _IOLBF) + (let* ((out (assoc-ref %outputs "out")) + (libdir (string-append out "/lib")) + (incdir (string-append out "/include")) + (libc (assoc-ref %build-inputs "libc")) + (linux (assoc-ref %build-inputs "linux-headers"))) + (mkdir-p libdir) + (for-each (lambda (file) + (let ((target (string-append libdir "/" + (basename file)))) + (copy-file file target) + (remove-store-references target))) + (find-files (string-append libc "/lib") + "^(crt.*|ld.*|lib(c|m|dl|rt|pthread|nsl|util).*\\.so(\\..*)?|libc_nonshared\\.a)$")) + + (copy-recursively (string-append libc "/include") incdir) + + ;; Copy some of the Linux-Libre headers that glibc headers + ;; refer to. + (mkdir (string-append incdir "/linux")) + (for-each (lambda (file) + (copy-file (string-append linux "/include/linux/" file) + (string-append incdir "/linux/" + (basename file)))) + '("limits.h" "errno.h" "socket.h" "kernel.h" + "sysctl.h" "param.h" "ioctl.h" "types.h" + "posix_types.h" "stddef.h")) + + (copy-recursively (string-append linux "/include/asm") + (string-append incdir "/asm")) + (copy-recursively (string-append linux "/include/asm-generic") + (string-append incdir "/asm-generic")) + #t)))) + (inputs `(("libc" ,glibc) + ("linux-headers" ,linux-libre-headers)))))) + +(define %gcc-static + ;; A statically-linked GCC, with stripped-down functionality. + (package-with-explicit-inputs + (package (inherit gcc-final) + (name "gcc-static") + (arguments + (lambda (system) + `(#:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 regex)) + ,@(substitute-keyword-arguments ((package-arguments gcc-final) system) + ((#:guile _) #f) + ((#:implicit-inputs? _) #t) + ((#:configure-flags flags) + `(append (list + "--disable-shared" + "--disable-plugin" + "--enable-languages=c" + "--disable-libmudflap" + "--disable-libgomp" + "--disable-libssp" + "--disable-libquadmath" + "--disable-decimal-float") + (remove (cut string-match "--(.*plugin|enable-languages)" <>) + ,flags))) + ((#:make-flags flags) + `(cons "BOOT_LDFLAGS=-static" ,flags)))))) + (inputs `(("gmp-source" ,(package-source gmp)) + ("mpfr-source" ,(package-source mpfr)) + ("mpc-source" ,(package-source mpc)) + ("binutils" ,binutils-final) + ,@(package-inputs gcc-4.7)))) + %standard-inputs-with-relocatable-glibc)) + +(define %gcc-stripped + ;; The subset of GCC files needed for bootstrap. + (package (inherit gcc-4.7) + (name "gcc-stripped") + (build-system trivial-build-system) + (source #f) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (srfi srfi-1) + (srfi srfi-26) + (guix build utils)) + + (setvbuf (current-output-port) _IOLBF) + (let* ((out (assoc-ref %outputs "out")) + (bindir (string-append out "/bin")) + (libdir (string-append out "/lib")) + (libexecdir (string-append out "/libexec")) + (gcc (assoc-ref %build-inputs "gcc"))) + (copy-recursively (string-append gcc "/bin") bindir) + (for-each remove-store-references + (find-files bindir ".*")) + + (copy-recursively (string-append gcc "/lib") libdir) + (for-each remove-store-references + (remove (cut string-suffix? ".h" <>) + (find-files libdir ".*"))) + + (copy-recursively (string-append gcc "/libexec") + libexecdir) + (for-each remove-store-references + (find-files libexecdir ".*")) + #t)))) + (inputs `(("gcc" ,%gcc-static))))) + +(define %guile-static + ;; A statically-linked Guile that is relocatable--i.e., it can search + ;; .scm and .go files relative to its installation directory, rather + ;; than in hard-coded configure-time paths. + (let ((guile (package (inherit guile-2.0) + (inputs + `(("patch/relocatable" + ,(search-patch "guile-relocatable.patch")) + ("patch/utf8" + ,(search-patch "guile-default-utf8.patch")) + ,@(package-inputs guile-2.0))) + (arguments + `(;; When `configure' checks for ltdl availability, it + ;; doesn't try to link using libtool, and thus fails + ;; because of a missing -ldl. Work around that. + #:configure-flags '("LDFLAGS=-ldl") + + #:phases (alist-cons-before + 'configure 'static-guile + (lambda _ + (substitute* "libguile/Makefile.in" + ;; Create a statically-linked `guile' + ;; executable. + (("^guile_LDFLAGS =") + "guile_LDFLAGS = -all-static") + + ;; Add `-ldl' *after* libguile-2.0.la. + (("^guile_LDADD =(.*)$" _ ldadd) + (string-append "guile_LDADD = " + (string-trim-right ldadd) + " -ldl\n")))) + %standard-phases) + + ;; Allow Guile to be relocated, as is needed during + ;; bootstrap. + #:patches + (list (assoc-ref %build-inputs "patch/relocatable") + (assoc-ref %build-inputs "patch/utf8")) + + ;; There are uses of `dynamic-link' in + ;; {foreign,coverage}.test that don't fly here. + #:tests? #f))))) + (package-with-explicit-inputs (static-package guile) + %standard-inputs-with-relocatable-glibc + (current-source-location)))) + +(define %guile-static-stripped + ;; A stripped static Guile binary, for use during bootstrap. + (package (inherit %guile-static) + (name "guile-static-stripped") + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let () + (use-modules (guix build utils)) + + (let ((in (assoc-ref %build-inputs "guile")) + (out (assoc-ref %outputs "out"))) + (mkdir-p (string-append out "/share/guile/2.0")) + (copy-recursively (string-append in "/share/guile/2.0") + (string-append out "/share/guile/2.0")) + + (mkdir-p (string-append out "/lib/guile/2.0/ccache")) + (copy-recursively (string-append in "/lib/guile/2.0/ccache") + (string-append out "/lib/guile/2.0/ccache")) + + (mkdir (string-append out "/bin")) + (copy-file (string-append in "/bin/guile") + (string-append out "/bin/guile")) + (remove-store-references (string-append out "/bin/guile")) + #t)))) + (inputs `(("guile" ,%guile-static))))) + +(define (tarball-package pkg) + "Return a package containing a tarball of PKG." + (package (inherit pkg) + (location (source-properties->location (current-source-location))) + (name (string-append (package-name pkg) "-tarball")) + (build-system trivial-build-system) + (inputs `(("tar" ,tar) + ("xz" ,xz) + ("input" ,pkg))) + (arguments + (lambda (system) + (let ((name (package-name pkg)) + (version (package-version pkg))) + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((out (assoc-ref %outputs "out")) + (input (assoc-ref %build-inputs "input")) + (tar (assoc-ref %build-inputs "tar")) + (xz (assoc-ref %build-inputs "xz"))) + (mkdir out) + (set-path-environment-variable "PATH" '("bin") (list tar xz)) + (with-directory-excursion input + (zero? (system* "tar" "cJvf" + (string-append out "/" + ,name "-" ,version + "-" ,system ".tar.xz") + "."))))))))))) + +(define %bootstrap-binaries-tarball + ;; A tarball with the statically-linked bootstrap binaries. + (tarball-package %static-binaries)) + +(define %binutils-bootstrap-tarball + ;; A tarball with the statically-linked Binutils programs. + (tarball-package %binutils-static-stripped)) + +(define %glibc-bootstrap-tarball + ;; A tarball with GNU libc's shared libraries, dynamic linker, and headers. + (tarball-package %glibc-stripped)) + +(define %gcc-bootstrap-tarball + ;; A tarball with a dynamic-linked GCC and its headers. + (tarball-package %gcc-stripped)) + +(define %guile-bootstrap-tarball + ;; A tarball with the statically-linked, relocatable Guile. + (tarball-package %guile-static-stripped)) + +(define %bootstrap-tarballs + ;; A single derivation containing all the bootstrap tarballs, for + ;; convenience. + (package + (name "bootstrap-tarballs") + (version "0") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let ((out (assoc-ref %outputs "out"))) + (use-modules (guix build utils) + (ice-9 match) + (srfi srfi-26)) + + (setvbuf (current-output-port) _IOLBF) + (mkdir out) + (chdir out) + (for-each (match-lambda + ((name . directory) + (for-each (lambda (file) + (format #t "~a -> ~a~%" file out) + (symlink file (basename file))) + (find-files directory "\\.tar\\.")))) + %build-inputs) + #t))) + (inputs `(("guile-tarball" ,%guile-bootstrap-tarball) + ("gcc-tarball" ,%gcc-bootstrap-tarball) + ("binutils-tarball" ,%binutils-bootstrap-tarball) + ("glibc-tarball" ,%glibc-bootstrap-tarball) + ("coreutils&co-tarball" ,%bootstrap-binaries-tarball))) + (synopsis #f) + (description #f) + (home-page #f) + (license gpl3+))) + +;;; make-bootstrap.scm ends here diff --git a/gnu/packages/mit-krb5.scm b/gnu/packages/mit-krb5.scm new file mode 100644 index 0000000000..4b30a7ca17 --- /dev/null +++ b/gnu/packages/mit-krb5.scm @@ -0,0 +1,69 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 mit-krb5) + #:use-module (distro) + #:use-module (gnu packages bison) + #:use-module (gnu packages perl) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public mit-krb5 + (package + (name "mit-krb5") + (version "1.11") + (source (origin + (method url-fetch) + (uri (string-append "http://web.mit.edu/kerberos/www/dist/krb5/" + version + "/krb5-" version + "-signed.tar")) + (sha256 (base32 + "0lc6lxb98qzg4x01lppq700vkr1ax9rld09znahrinwqnf9zndzy")))) + (build-system gnu-build-system) + (inputs `(("bison" ,bison) + ("perl" ,perl) + )) + (arguments + (lambda (system) + `(#:tests? #f + #:phases + (alist-replace + 'unpack + (lambda* (#:key source #:allow-other-keys) + (system* "echo" source) + (let ((inner + (substring source + (string-index-right source #\k) + (string-index-right source #\-)))) + (system* "echo" inner) + (and (zero? (system* "tar" "xvf" source)) + (zero? (system* "tar" "xvf" (string-append inner ".tar.gz"))) + (chdir inner) + (chdir "src")))) + %standard-phases)))) + (synopsis "MIT Kerberos 5") + (description + "Massachusetts Institute of Technology implementation of Kerberos. +Kerberos is a network authentication protocol designed to provide strong +authentication for client/server applications by using secret-key cryptography.") + (license (bsd-style "file://NOTICE" + "See NOTICE in the distribution.")) + (home-page "http://web.mit.edu/kerberos/"))) diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm new file mode 100644 index 0000000000..f05fe1994e --- /dev/null +++ b/gnu/packages/multiprecision.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 multiprecision) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages m4) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public gmp + (package + (name "gmp") + (version "5.1.0") + (source (origin + (method url-fetch) + (uri + ;; Note: this version is not available from GNU mirrors + ;; because it was made with an Automake affected by + ;; CVE-2012-3386. + (string-append "ftp://ftp.gmplib.org/pub/gmp-" + version "/gmp-" version ".tar.bz2")) + (sha256 + (base32 + "15n7xxgasbxdch8ii8z9ic6fxc2ysk3q8iavf55abjp5iylspnfz")))) + (build-system gnu-build-system) + (native-inputs `(("m4" ,m4))) + (arguments `(#:configure-flags + '(;; Build a "fat binary", with routines for several + ;; sub-architectures. + "--enable-fat" + "--enable-cxx"))) + (synopsis "GMP, the GNU multiple precision arithmetic library") + (description + "GMP is a free library for arbitrary precision arithmetic, operating on +signed integers, rational numbers, and floating point numbers. There is no +practical limit to the precision except the ones implied by the available +memory in the machine GMP runs on. GMP has a rich set of functions, and the +functions have a regular interface. + +The main target applications for GMP are cryptography applications and +research, Internet security applications, algebra systems, computational +algebra research, etc. + +GMP is carefully designed to be as fast as possible, both for small operands +and for huge operands. The speed is achieved by using fullwords as the basic +arithmetic type, by using fast algorithms, with highly optimised assembly +code for the most common inner loops for a lot of CPUs, and by a general +emphasis on speed. + +GMP is faster than any other bignum library. The advantage for GMP increases +with the operand sizes for many operations, since GMP uses asymptotically +faster algorithms.") + (license lgpl3+) + (home-page "http://gmplib.org/"))) + +(define-public mpfr + (package + (name "mpfr") + (version "3.1.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mpfr/mpfr-" version + ".tar.xz")) + (sha256 (base32 + "0ym1ylcq803n52qrggxqmkz66gbn8ncc3ybawal31v5y5p1srma9")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp))) + (synopsis "GNU MPFR, a library for multiple-precision floating-point +arithmetic") + (description + "The GNU MPFR library is a C library for multiple-precision +floating-point computations with correct rounding. MPFR is based on the GMP +multiple-precision library. + +The main goal of MPFR is to provide a library for multiple-precision +floating-point computation which is both efficient and has a well-defined +semantics. It copies the good ideas from the ANSI/IEEE-754 standard for +double-precision floating-point arithmetic (53-bit mantissa).") + (license lgpl3+) + (home-page "http://www.mpfr.org/"))) + +(define-public mpc + (package + (name "mpc") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/mpc/mpc-" version ".tar.gz")) + (sha256 (base32 + "1zq0fidp1jii2j5k5n9hmx55a6wwid33gjzhimvxq9d5zrf82npd")))) + (build-system gnu-build-system) + (inputs `(("gmp" ,gmp) + ("mpfr" ,mpfr))) + (synopsis "GNU MPC, a library for multiprecision complex arithmetic +with exact rounding") + (description + "GNU MPC is a C library for the arithmetic of complex numbers with +arbitrarily high precision and correct rounding of the result. It extends +the principles of the IEEE-754 standard for fixed precision real floating +point numbers to complex numbers, providing well-defined semantics for +every operation. At the same time, speed of operation at high precision +is a major design goal. The library is built upon and follows the same +principles as GNU MPFR.") + (license lgpl3+) + (home-page "http://mpc.multiprecision.org/"))) diff --git a/gnu/packages/mysql.scm b/gnu/packages/mysql.scm new file mode 100644 index 0000000000..517f65610e --- /dev/null +++ b/gnu/packages/mysql.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 mysql) + #:use-module (distro) + #:use-module (gnu packages perl) + #:use-module (gnu packages linux) + #:use-module (gnu packages openssl) + #:use-module (gnu packages compression) + #:use-module (gnu packages ncurses) + #:use-module ((guix licenses) #:select (gpl2)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public mysql + (package + (name "mysql") + (version "5.1.54") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.mysql.com/archives/mysql-5.1/mysql-" + version ".tar.gz")) + (sha256 + (base32 + "07xbnwk7h1xya8s6dw34nrv7ampzag8l0l1szd2pc9zyqkzhydw4")))) + (build-system gnu-build-system) + (inputs + `(("procps" ,procps) + ("openssl" ,openssl) + ("perl" ,perl) + ("zlib" ,zlib) + ("ncurses" ,ncurses))) + (arguments + '(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw)) ; for "rm -rf" + #:phases (alist-cons-after + 'install 'clean-up + (lambda* (#:key outputs #:allow-other-keys) + ;; Remove the 112 MiB of tests that get installed. + (let ((out (assoc-ref outputs "out"))) + (define (rm-rf dir) + (file-system-fold (const #t) ; enter? + (lambda (file stat result) ; leaf + (delete-file file)) + (const #t) ; down + (lambda (dir stat result) ; up + (rmdir dir)) + (const #t) + (lambda (file stat errno result) + (format (current-error-port) + "error: ~a: ~a~%" + file (strerror errno))) + #t + (string-append out "/" dir))) + (rm-rf "mysql-test") + (rm-rf "sql-bench") + + ;; Compress the 14 MiB Info file. + (zero? + (system* "gzip" "--best" + (string-append out "/share/info/mysql.info"))))) + %standard-phases))) + (home-page "http://www.mysql.com/") + (synopsis "A fast, easy to use, and popular database") + (description + "MySQL is a fast, reliable, and easy to use relational database +management system that supports the standardized Structured Query +Language.") + (license gpl2))) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm new file mode 100644 index 0000000000..09fbe7f168 --- /dev/null +++ b/gnu/packages/nano.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 nano) + #:use-module (guix licenses) + #:use-module ((gnu packages gettext) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages ncurses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public nano + (package + (name "nano") + (version "2.2.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/nano/nano-" + version ".tar.gz")) + (sha256 + (base32 + "0yp6pid67k8h7394spzw0067fl2r7rxm2b6kfccg87g8nlry2s5y")))) + (build-system gnu-build-system) + (inputs + `(("gettext" ,guix:gettext) + ("ncurses" ,ncurses))) + (home-page "http://www.nano-editor.org/") + (synopsis + "A small, user-friendly console text editor") + (description + "GNU nano is designed to be a free replacement for the Pico text +editor, part of the Pine email suite from The University of +Washington. It aims to emulate Pico as closely as possible and perhaps +include extra functionality.") + (license gpl3+))) ; some files are under GPLv2+ \ No newline at end of file diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm new file mode 100644 index 0000000000..1be2551a63 --- /dev/null +++ b/gnu/packages/ncurses.scm @@ -0,0 +1,128 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 ncurses) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public ncurses + (let ((patch-makefile-phase + '(lambda _ + (for-each patch-makefile-SHELL + (find-files "." "Makefile.in")))) + (configure-phase + '(lambda* (#:key inputs outputs configure-flags + #:allow-other-keys) + ;; The `ncursesw5-config' has a #!/bin/sh. We want to patch + ;; it to point to libc's embedded Bash, to avoid retaining a + ;; reference to the bootstrap Bash. + (let* ((libc (assoc-ref inputs "libc")) + (bash (string-append libc "/bin/bash")) + (out (assoc-ref outputs "out"))) + (format #t "configure flags: ~s~%" configure-flags) + (zero? (apply system* bash "./configure" + (string-append "SHELL=" bash) + (string-append "CONFIG_SHELL=" bash) + (string-append "--prefix=" out) + configure-flags))))) + (post-install-phase + '(lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; When building a wide-character (Unicode) build, create backward + ;; compatibility links from the the "normal" libraries to the + ;; wide-character libraries (e.g. libncurses.so to libncursesw.so). + (with-directory-excursion (string-append out "/lib") + (for-each (lambda (lib) + (define libw.a + (string-append "lib" lib "w.a")) + (define lib.a + (string-append "lib" lib ".a")) + (define libw.so.x + (string-append "lib" lib "w.so.5")) + (define lib.so.x + (string-append "lib" lib ".so.5")) + (define lib.so + (string-append "lib" lib ".so")) + + (when (file-exists? libw.a) + (format #t "creating symlinks for `lib~a'~%" lib) + (symlink libw.a lib.a) + (symlink libw.so.x lib.so.x) + (false-if-exception (delete-file lib.so)) + (call-with-output-file lib.so + (lambda (p) + (format p "INPUT (-l~aw)~%" lib))))) + '("curses" "ncurses" "form" "panel" "menu"))))))) + (package + (name "ncurses") + (version "5.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/ncurses/ncurses-" + version ".tar.gz")) + (sha256 + (base32 + "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh")))) + (build-system gnu-build-system) + (arguments + (case-lambda + ((system) + `(#:configure-flags + `("--with-shared" "--without-debug" "--enable-widec" + + ;; By default headers land in an `ncursesw' subdir, which is not + ;; what users expect. + ,(string-append "--includedir=" (assoc-ref %outputs "out") + "/include") + + ;; C++ bindings fail to build on + ;; `i386-pc-solaris2.11' with GCC 3.4.3: + ;; <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6395191>. + ,,@(if (string=? system "i686-solaris") + '("--without-cxx-binding") + '())) + #:tests? #f ; no "check" target + #:phases (alist-cons-after + 'install 'post-install ,post-install-phase + (alist-cons-before + 'configure 'patch-makefile-SHELL + ,patch-makefile-phase + (alist-replace + 'configure + ,configure-phase + %standard-phases))))) + ((system cross-system) + (arguments cross-system)))) + (self-native-input? #t) + (synopsis + "GNU Ncurses, a free software emulation of curses in SVR4 and more") + (description + "The Ncurses (new curses) library is a free software emulation of curses +in System V Release 4.0, and more. It uses Terminfo format, supports pads +and color and multiple highlights and forms characters and function-key +mapping, and has all the other SYSV-curses enhancements over BSD Curses. + +The ncurses code was developed under GNU/Linux. It has been in use for some +time with OpenBSD as the system curses library, and on FreeBSD and NetBSD as +an external package. It should port easily to any ANSI/POSIX-conforming +UNIX. It has even been ported to OS/2 Warp!") + (license x11) + (home-page "http://www.gnu.org/software/ncurses/")))) diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm new file mode 100644 index 0000000000..6a0b6ef40a --- /dev/null +++ b/gnu/packages/nettle.scm @@ -0,0 +1,60 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 nettle) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages m4)) + +(define-public nettle + (package + (name "nettle") + (version "2.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/nettle/nettle-" + version ".tar.gz")) + (sha256 + (base32 + "0mminj3fg0vba8qx4q6dbf0xz6fskamli7z2r8rci5xrcd7n5pv0")))) + (build-system gnu-build-system) + (inputs `(("m4" ,m4))) + (propagated-inputs `(("gmp" ,gmp))) + (home-page "http://www.lysator.liu.se/~nisse/nettle/") + (synopsis "GNU Nettle, a cryptographic library") + (description + "Nettle is a cryptographic library that is designed to fit easily +in more or less any context: In crypto toolkits for object-oriented +languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, +or even in kernel space. In most contexts, you need more than the basic +cryptographic algorithms, you also need some way to keep track of +available algorithms, their properties and variants. You often have +some algorithm selection process, often dictated by a protocol you want +to implement. + +And as the requirements of applications differ in subtle and not so +subtle ways, an API that fits one application well can be a pain to use +in a different context. And that is why there are so many different +cryptographic libraries around. \nNettle tries to avoid this problem by +doing one thing, the low-level crypto stuff, and providing a simple but +general interface to it. In particular, Nettle doesn't do algorithm +selection. It doesn't do memory allocation. It doesn't do any I/O.") + (license gpl2+))) diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm new file mode 100644 index 0000000000..8c8ba4c668 --- /dev/null +++ b/gnu/packages/openssl.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 openssl) + #:use-module (distro) + #:use-module (gnu packages perl) + #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public openssl + (package + (name "openssl") + (version "1.0.1c") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version + ".tar.gz")) + (sha256 (base32 + "1gjy6a7d8nszi9wq8jdzx3cffn0nss23h3cw2ywlw4cb9v6v77ia")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl))) + (arguments + (lambda (system) + `(#:parallel-build? #f + #:parallel-tests? #f + #:test-target "test" + #:phases + (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? + (system* "./config" + "shared" ; build shared libraries + "--libdir=lib" + (string-append "--prefix=" out))))) + (alist-cons-before + 'patch-source-shebangs 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* (find-files "test" ".*") + (("/bin/sh") + (string-append bash "/bin/bash")) + (("/bin/rm") + "rm")))) + %standard-phases))))) + (synopsis "OpenSSL, an SSL/TLS implementation") + (description + "OpenSSL is an implementation of SSL/TLS") + (license license:openssl) + (home-page "http://www.openssl.org/"))) diff --git a/gnu/packages/patches/bigloo-gc-shebangs.patch b/gnu/packages/patches/bigloo-gc-shebangs.patch new file mode 100644 index 0000000000..07af261887 --- /dev/null +++ b/gnu/packages/patches/bigloo-gc-shebangs.patch @@ -0,0 +1,17 @@ +Patch shebangs in source that gets unpacked by `configure'. + +--- bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:24:01.000000000 +0100 ++++ bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:23:51.000000000 +0100 +@@ -29,9 +29,11 @@ fi + # untar the two versions of the GC + $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1) + /bin/rm -rf "../gc/$gc"_fth ++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g" + mv ../gc/gc-7.2 "../gc/$gc"_fth || (echo "mv gc-7.2 failed"; exit 1) + + $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1) ++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g" + mv ../gc/gc-7.2 "../gc/$gc" + + # general Bigloo patch + diff --git a/gnu/packages/patches/binutils-ld-new-dtags.patch b/gnu/packages/patches/binutils-ld-new-dtags.patch new file mode 100644 index 0000000000..5f7a03fc38 --- /dev/null +++ b/gnu/packages/patches/binutils-ld-new-dtags.patch @@ -0,0 +1,16 @@ +Turn on --enable-new-dtags by default to make the linker set RUNPATH +instead of RPATH on binaries. This is important because RUNPATH can +be overriden using LD_LIBRARY_PATH at runtime. + +Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>. + +--- binutils/ld/ldmain.c ++++ binutils/ld/ldmain.c +@@ -296,6 +296,7 @@ main (int argc, char **argv) + + link_info.allow_undefined_version = TRUE; + link_info.keep_memory = TRUE; ++ link_info.new_dtags = TRUE; + link_info.combreloc = TRUE; + link_info.strip_discarded = TRUE; + link_info.callbacks = &link_callbacks; diff --git a/gnu/packages/patches/cpio-gets-undeclared.patch b/gnu/packages/patches/cpio-gets-undeclared.patch new file mode 100644 index 0000000000..bc34de6455 --- /dev/null +++ b/gnu/packages/patches/cpio-gets-undeclared.patch @@ -0,0 +1,45 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + +The upstream fix was: + + commit 66712c23388e93e5c518ebc8515140fa0c807348 + Author: Eric Blake <eblake@redhat.com> + Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake <eblake@redhat.com> + +This patch just gets rid of the offending part. + +--- cpio-2.11/gnu/stdio.in.h-orig 2012-11-25 22:17:06.000000000 +0400 ++++ cpio-2.11/gnu/stdio.in.h 2012-11-25 22:18:36.000000000 +0400 +@@ -135,12 +135,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/patches/diffutils-gets-undeclared.patch b/gnu/packages/patches/diffutils-gets-undeclared.patch new file mode 100644 index 0000000000..b6cdc77caa --- /dev/null +++ b/gnu/packages/patches/diffutils-gets-undeclared.patch @@ -0,0 +1,71 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + + +commit 66712c23388e93e5c518ebc8515140fa0c807348 +Author: Eric Blake <eblake@redhat.com> +Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake <eblake@redhat.com> + +diff --git a/lib/stdio.in.h b/lib/stdio.in.h +index aa7b599..c377b6e 100644 +--- a/lib/stdio.in.h ++++ b/lib/stdio.in.h +@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " + # endif + #endif + +-#if @GNULIB_GETS@ +-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ +-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +-# undef gets +-# define gets rpl_gets +-# endif +-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); +-_GL_CXXALIAS_RPL (gets, char *, (char *s)); +-# else +-_GL_CXXALIAS_SYS (gets, char *, (char *s)); +-# undef gets +-# endif +-_GL_CXXALIASWARN (gets); + /* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + +@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " + # endif + #endif + +-/* Some people would argue that sprintf should be handled like gets +- (for example, OpenBSD issues a link warning for both functions), +- since both can cause security holes due to buffer overruns. ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. + However, we believe that sprintf can be used safely, and is more + efficient than snprintf in those safe cases; and as proof of our + belief, we use sprintf in several gnulib modules. So this header diff --git a/gnu/packages/patches/emacs-configure-sh.patch b/gnu/packages/patches/emacs-configure-sh.patch new file mode 100644 index 0000000000..fd34d06ced --- /dev/null +++ b/gnu/packages/patches/emacs-configure-sh.patch @@ -0,0 +1,14 @@ +Make sure the right shell is used when creating src/epaths.h. + +--- emacs-24.2/configure 2013-01-13 17:01:53.000000000 +0100 ++++ emacs-24.2/configure 2013-01-13 17:01:57.000000000 +0100 +@@ -24135,7 +24135,7 @@ done + ;; + "epaths":C) + echo creating src/epaths.h +-${MAKE-make} epaths-force ++${MAKE-make} epaths-force SHELL="$CONFIG_SHELL" + ;; + "gdbinit":C) + if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then + diff --git a/gnu/packages/patches/findutils-absolute-paths.patch b/gnu/packages/patches/findutils-absolute-paths.patch new file mode 100644 index 0000000000..96341e281f --- /dev/null +++ b/gnu/packages/patches/findutils-absolute-paths.patch @@ -0,0 +1,29 @@ +Fix use of LFS-style absolute paths. + +Patches from Nixpkgs by Armijn Hemel <armijn@gpl-violations.org> +and Wouter den Breejen <uu@denbreejen.net>. + +diff -ruN findutils-4.2.20/locate/updatedb.sh findutils-4.2.20.new/locate/updatedb.sh +--- findutils-4.2.20/locate/updatedb.sh 2005-01-24 17:12:35.000000000 +0100 ++++ findutils-4.2.20.new/locate/updatedb.sh 2005-08-23 14:37:10.000000000 +0200 +@@ -141,7 +141,7 @@ + : ${code:=${LIBEXECDIR}/@code@} + + +-PATH=/bin:/usr/bin:${BINDIR}; export PATH ++PATH=/bin:/usr/bin:${BINDIR}:${PATH}; export PATH + + : ${PRUNEFS="nfs NFS proc afs proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs sysfs shfs"} + +diff -Naur findutils-4.2.30/xargs/xargs.c findutils-4.2.30_new/xargs/xargs.c +--- findutils-4.2.30/xargs/xargs.c 2007-02-27 11:21:08.000000000 +0100 ++++ findutils-4.2.30_new/xargs/xargs.c 2007-07-17 19:02:05.000000000 +0200 +@@ -402,7 +402,7 @@ + int show_limits = 0; /* --show-limits */ + int always_run_command = 1; + char *input_file = "-"; /* "-" is stdin */ +- char *default_cmd = "/bin/echo"; ++ char *default_cmd = "echo"; + int (*read_args) PARAMS ((void)) = read_line; + void (*act_on_init_result)(void) = noop; + int env_too_big = 0; diff --git a/gnu/packages/patches/flex-bison-tests.patch b/gnu/packages/patches/flex-bison-tests.patch new file mode 100644 index 0000000000..0f372f83bf --- /dev/null +++ b/gnu/packages/patches/flex-bison-tests.patch @@ -0,0 +1,24 @@ +The `test-bison-yyl{loc,val}' tests fail with "conflicting types for +'testparse'" because `YYPARSE_PARAM' is undefined; work around that. + +--- flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:01.000000000 +0100 ++++ flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:07.000000000 +0100 +@@ -21,6 +21,7 @@ + * PURPOSE. + */ + ++#define YYPARSE_PARAM scanner + #include "parser.h" + #include "scanner.h" + + +--- flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:42.000000000 +0100 ++++ flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:49.000000000 +0100 +@@ -21,6 +21,7 @@ + * PURPOSE. + */ + ++#define YYPARSE_PARAM scanner + #include "parser.h" + #include "scanner.h" + diff --git a/gnu/packages/patches/gawk-shell.patch b/gnu/packages/patches/gawk-shell.patch new file mode 100644 index 0000000000..89b8540a8d --- /dev/null +++ b/gnu/packages/patches/gawk-shell.patch @@ -0,0 +1,34 @@ +As for libc's `system', change Awk to look for `sh' in $PATH. This patch is +only meant to be used during bootstrapping, where we don't know in advance the +absolute file name of `sh'. + +--- gawk-4.0.0/io.c 2011-05-18 20:47:29.000000000 +0200 ++++ gawk-4.0.0/io.c 2012-12-18 15:56:06.000000000 +0100 +@@ -1759,7 +1759,7 @@ two_way_open(const char *str, struct red + + signal(SIGPIPE, SIG_DFL); + +- execl("/bin/sh", "sh", "-c", str, NULL); ++ execlp("sh", "sh", "-c", str, NULL); + _exit(errno == ENOENT ? 127 : 126); + + case -1: +@@ -1924,7 +1924,7 @@ use_pipes: + || close(ctop[0]) == -1 || close(ctop[1]) == -1) + fatal(_("close of pipe failed (%s)"), strerror(errno)); + /* stderr does NOT get dup'ed onto child's stdout */ +- execl("/bin/sh", "sh", "-c", str, NULL); ++ execlp("sh", "sh", "-c", str, NULL); + _exit(errno == ENOENT ? 127 : 126); + } + #endif /* NOT __EMX__ */ +@@ -2074,7 +2074,7 @@ gawk_popen(const char *cmd, struct redir + fatal(_("moving pipe to stdout in child failed (dup: %s)"), strerror(errno)); + if (close(p[0]) == -1 || close(p[1]) == -1) + fatal(_("close of pipe failed (%s)"), strerror(errno)); +- execl("/bin/sh", "sh", "-c", cmd, NULL); ++ execlp("sh", "sh", "-c", cmd, NULL); + _exit(errno == ENOENT ? 127 : 126); + } + #endif /* NOT __EMX__ */ + diff --git a/gnu/packages/patches/gettext-gets-undeclared.patch b/gnu/packages/patches/gettext-gets-undeclared.patch new file mode 100644 index 0000000000..072a8d94ab --- /dev/null +++ b/gnu/packages/patches/gettext-gets-undeclared.patch @@ -0,0 +1,77 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + +The upstream fix was: + + commit 66712c23388e93e5c518ebc8515140fa0c807348 + Author: Eric Blake <eblake@redhat.com> + Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake <eblake@redhat.com> + +This patch just gets rid of the offending part. + +--- gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h-orig 2012-11-24 01:13:14.000000000 +0400 ++++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h 2012-11-24 01:13:46.000000000 +0400 +@@ -137,12 +137,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) + +--- gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h-orig 2012-11-24 00:26:49.000000000 +0400 ++++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h 2012-11-24 00:45:54.000000000 +0400 +@@ -137,12 +137,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) + +--- gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h-orig 2012-11-24 01:00:26.000000000 +0400 ++++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h 2012-11-24 01:00:53.000000000 +0400 +@@ -137,12 +137,6 @@ + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/patches/glibc-bootstrap-system.patch b/gnu/packages/patches/glibc-bootstrap-system.patch new file mode 100644 index 0000000000..7208cce3f4 --- /dev/null +++ b/gnu/packages/patches/glibc-bootstrap-system.patch @@ -0,0 +1,28 @@ +We want to allow builds in chroots that lack /bin/sh. Thus, system(3) +and popen(3) need to be tweaked to use the right shell. For the bootstrap +glibc, we just use whatever `sh' can be found in $PATH. The final glibc +instead uses the hard-coded absolute file name of `bash'. + +--- a/sysdeps/posix/system.c ++++ b/sysdeps/posix/system.c +@@ -134,7 +134,7 @@ do_system (const char *line) + INIT_LOCK (); + + /* Exec the shell. */ +- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ); ++ (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ); + _exit (127); + } + else if (pid < (pid_t) 0) + +--- b/libio/iopopen.c 2012-06-30 21:12:34.000000000 +0200 ++++ b/libio/iopopen.c 2012-12-19 12:52:29.000000000 +0100 +@@ -226,7 +226,7 @@ _IO_new_proc_open (fp, command, mode) + _IO_close (fd); + } + +- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0); ++ execlp ("sh", "sh", "-c", command, (char *) 0); + _IO__exit (127); + } + _IO_close (child_end); diff --git a/gnu/packages/patches/glibc-no-ld-so-cache.patch b/gnu/packages/patches/glibc-no-ld-so-cache.patch new file mode 100644 index 0000000000..75fff50b47 --- /dev/null +++ b/gnu/packages/patches/glibc-no-ld-so-cache.patch @@ -0,0 +1,53 @@ +Disable attempts to use the system-wide /etc/ld.so.cache. This is +required on LFS distros to avoid loading the distro's libc.so instead +of ours. + +Patch from Nixpkgs. Idea by Eelco Dolstra, initial patch by Jack +Cummings, minor fixups by Shea Levy. + +diff -Naur glibc-2.13-orig/elf/ldconfig.c glibc-2.13/elf/ldconfig.c +--- glibc-2.13-orig/elf/ldconfig.c 2011-01-17 23:34:07.000000000 -0500 ++++ glibc-2.13/elf/ldconfig.c 2012-04-10 23:28:45.957492340 -0400 +@@ -51,7 +51,7 @@ + #endif + + #ifndef LD_SO_CONF +-# define LD_SO_CONF SYSCONFDIR "/ld.so.conf" ++# define LD_SO_CONF PREFIX "/etc/ld.so.conf" + #endif + + /* Get libc version number. */ + +--- glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/elf/Makefile 2012-11-12 23:52:21.000000000 +0100 +@@ -415,12 +415,12 @@ $(objpfx)ldconfig: $(ldconfig-modules:%= + + $(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o) + +-SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"' +-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \ ++PREFIX-FLAGS := -D'PREFIX="$(sysconfdir)"' ++CFLAGS-ldconfig.c = $(PREFIX-FLAGS) -D'LIBDIR="$(libdir)"' \ + -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1 +-CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) +-CFLAGS-cache.c = $(SYSCONF-FLAGS) +-CFLAGS-rtld.c = $(SYSCONF-FLAGS) ++CFLAGS-dl-cache.c = $(PREFIX-FLAGS) ++CFLAGS-cache.c = $(PREFIX-FLAGS) ++CFLAGS-rtld.c = $(PREFIX-FLAGS) + + CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ + -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) + +diff -Naur glibc-2.13-orig/sysdeps/generic/dl-cache.h glibc-2.13/sysdeps/generic/dl-cache.h +--- glibc-2.13-orig/sysdeps/generic/dl-cache.h 2011-01-17 23:34:07.000000000 -0500 ++++ glibc-2.13/sysdeps/generic/dl-cache.h 2012-04-10 23:28:20.077488815 -0400 +@@ -29,7 +29,7 @@ + #endif + + #ifndef LD_SO_CACHE +-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" ++# define LD_SO_CACHE PREFIX "/etc/ld.so.cache" + #endif + + #ifndef add_system_dir diff --git a/gnu/packages/patches/guile-1.8-cpp-4.5.patch b/gnu/packages/patches/guile-1.8-cpp-4.5.patch new file mode 100644 index 0000000000..638d071baf --- /dev/null +++ b/gnu/packages/patches/guile-1.8-cpp-4.5.patch @@ -0,0 +1,24 @@ +Fix doc snarfing with GCC 4.5+. +From <http://git.savannah.gnu.org/cgit/guile.git/commit/?h=branch_release-1-8&id=aac41d28358cea594bb30f6e547afb82bb6004a6>. + +diff --git a/scripts/snarf-check-and-output-texi b/scripts/snarf-check-and-output-texi +index ea33e17..8cd42e8 100755 +--- a/scripts/snarf-check-and-output-texi ++++ b/scripts/snarf-check-and-output-texi +@@ -267,6 +267,17 @@ exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@" + (set! *file* file) + (set! *line* line)) + ++ ;; newer gccs like to throw around more location markers into the ++ ;; preprocessed source; these (hash . hash) bits are what they translate to ++ ;; in snarfy terms. ++ (('location ('string . file) ('int . line) ('hash . 'hash)) ++ (set! *file* file) ++ (set! *line* line)) ++ ++ (('location ('hash . 'hash) ('string . file) ('int . line) ('hash . 'hash)) ++ (set! *file* file) ++ (set! *line* line)) ++ + (('arglist rest ...) + (set! *args* (do-arglist rest))) diff --git a/gnu/packages/patches/guile-default-utf8.patch b/gnu/packages/patches/guile-default-utf8.patch new file mode 100644 index 0000000000..409f435161 --- /dev/null +++ b/gnu/packages/patches/guile-default-utf8.patch @@ -0,0 +1,111 @@ +This hack makes Guile default to UTF-8. This avoids calls to +`iconv_open'; `iconv_open' tries to open shared objects that aren't +available during bootstrap, so using UTF-8 avoids that (and UTF-8 has +built-in conversions in glibc, too.) + +diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c +index cf41f2f..facfb91 100644 +--- a/libguile/bytevectors.c ++++ b/libguile/bytevectors.c +@@ -1887,7 +1887,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness) + if (scm_i_is_narrow_string (str)) \ + { \ + err = mem_iconveh (scm_i_string_chars (str), c_strlen, \ +- "ISO-8859-1", c_utf_name, \ ++ "UTF-8", c_utf_name, \ + iconveh_question_mark, NULL, \ + &c_utf, &c_utf_len); \ + if (SCM_UNLIKELY (err)) \ +diff --git a/libguile/ports.c b/libguile/ports.c +index 301bc44..b0ea2e6 100644 +--- a/libguile/ports.c ++++ b/libguile/ports.c +@@ -1750,7 +1750,7 @@ scm_ungetc (scm_t_wchar c, SCM port) + if (pt->encoding != NULL) + encoding = pt->encoding; + else +- encoding = "ISO-8859-1"; ++ encoding = "UTF-8"; + + len = sizeof (result_buf); + result = u32_conv_to_encoding (encoding, +@@ -2212,7 +2212,7 @@ scm_i_set_port_encoding_x (SCM port, const char *encoding) + pt = SCM_PTAB_ENTRY (port); + + if (encoding == NULL) +- encoding = "ISO-8859-1"; ++ encoding = "UTF-8"; + + if (pt->encoding != encoding) + pt->encoding = scm_gc_strdup (encoding, "port"); +diff --git a/libguile/posix.c b/libguile/posix.c +index 4f8b8ac..fea7f74 100644 +--- a/libguile/posix.c ++++ b/libguile/posix.c +@@ -1740,7 +1740,7 @@ SCM_DEFINE (scm_setlocale, "setlocale", 1, 1, 0, + SCM_SYSERROR; + } + +- enc = locale_charset (); ++ enc = "UTF-8"; + + /* Set the default encoding for new ports. */ + scm_i_set_default_port_encoding (enc); +diff --git a/libguile/script.c b/libguile/script.c +index 83daf8a..083891e 100644 +--- a/libguile/script.c ++++ b/libguile/script.c +@@ -387,7 +387,7 @@ locale_arguments_to_string_list (int argc, char **const argv) + SCM lst; + const char *encoding; + +- encoding = environ_locale_charset (); ++ encoding = "UTF-8"; + for (i = argc - 1, lst = SCM_EOL; + i >= 0; + i--) +diff --git a/libguile/strings.c b/libguile/strings.c +index 5d0db23..8266247 100644 +--- a/libguile/strings.c ++++ b/libguile/strings.c +@@ -1576,7 +1576,7 @@ scm_from_locale_string (const char *str) + SCM + scm_from_locale_stringn (const char *str, size_t len) + { +- return scm_from_stringn (str, len, locale_charset (), ++ return scm_from_stringn (str, len, "UTF-8", + scm_i_default_port_conversion_handler ()); + } + +@@ -1803,7 +1803,7 @@ char * + scm_to_locale_stringn (SCM str, size_t *lenp) + { + return scm_to_stringn (str, lenp, +- locale_charset (), ++ "UTF-8", + scm_i_default_port_conversion_handler ()); + } + +@@ -2054,7 +2054,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding, + "string contains #\\nul character: ~S", + scm_list_1 (str)); + +- if (scm_i_is_narrow_string (str) && (encoding == NULL)) ++ if (scm_i_is_narrow_string (str)) + { + /* If using native Latin-1 encoding, just copy the string + contents. */ +@@ -2079,11 +2079,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding, + len = 0; + enc = encoding; + if (enc == NULL) +- enc = "ISO-8859-1"; ++ enc = "UTF-8"; + if (scm_i_is_narrow_string (str)) + { + ret = mem_iconveh (scm_i_string_chars (str), ilen, +- "ISO-8859-1", enc, ++ "UTF-8", enc, + (enum iconv_ilseq_handler) handler, NULL, + &buf, &len); + diff --git a/gnu/packages/patches/guile-relocatable.patch b/gnu/packages/patches/guile-relocatable.patch new file mode 100644 index 0000000000..077394cdde --- /dev/null +++ b/gnu/packages/patches/guile-relocatable.patch @@ -0,0 +1,70 @@ +This patch changes Guile to use a default search path relative to the +location of the `guile' binary, allowing it to be relocated. + +diff --git a/libguile/load.c b/libguile/load.c +index af2ca45..19dd338 100644 +--- a/libguile/load.c ++++ b/libguile/load.c +@@ -26,6 +26,7 @@ + + #include <string.h> + #include <stdio.h> ++#include <libgen.h> + + #include "libguile/_scm.h" + #include "libguile/private-gc.h" /* scm_getenv_int */ +@@ -255,6 +256,32 @@ scm_init_load_path () + SCM cpath = SCM_EOL; + + #ifdef SCM_LIBRARY_DIR ++ char *program, *bin_dir, *prefix, *module_dir, *ccache_dir; ++ ++ /* Determine the source and compiled module directories at run-time, ++ relative to the executable's location. ++ ++ Note: Use /proc/self/exe instead of argv[0] because the latter is ++ not necessarily an absolute, nor a valid file name. */ ++ ++ program = scm_gc_malloc_pointerless (256, "string"); ++ readlink ("/proc/self/exe", program, 256); ++ ++ bin_dir = dirname (strdupa (program)); ++ ++ prefix = scm_gc_malloc_pointerless (strlen (bin_dir) + 4, "string"); ++ strcpy (prefix, bin_dir); ++ strcat (prefix, "/.."); ++ prefix = canonicalize_file_name (prefix); ++ ++ module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string"); ++ strcpy (module_dir, prefix); ++ strcat (module_dir, "/share/guile/2.0"); ++ ++ ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string"); ++ strcpy (ccache_dir, prefix); ++ strcat (ccache_dir, "/lib/guile/2.0/ccache"); ++ + env = getenv ("GUILE_SYSTEM_PATH"); + if (env && strcmp (env, "") == 0) + /* special-case interpret system-path=="" as meaning no system path instead +@@ -263,10 +290,7 @@ scm_init_load_path () + else if (env) + path = scm_parse_path (scm_from_locale_string (env), path); + else +- path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR), +- scm_from_locale_string (SCM_SITE_DIR), +- scm_from_locale_string (SCM_GLOBAL_SITE_DIR), +- scm_from_locale_string (SCM_PKGDATA_DIR)); ++ path = scm_list_1 (scm_from_locale_string (module_dir)); + + env = getenv ("GUILE_SYSTEM_COMPILED_PATH"); + if (env && strcmp (env, "") == 0) +@@ -276,8 +300,7 @@ scm_init_load_path () + cpath = scm_parse_path (scm_from_locale_string (env), cpath); + else + { +- cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR), +- scm_from_locale_string (SCM_SITE_CCACHE_DIR)); ++ cpath = scm_list_1 (scm_from_locale_string (ccache_dir)); + } + + #endif /* SCM_LIBRARY_DIR */ diff --git a/gnu/packages/patches/libtool-skip-tests.patch b/gnu/packages/patches/libtool-skip-tests.patch new file mode 100644 index 0000000000..6e12615d51 --- /dev/null +++ b/gnu/packages/patches/libtool-skip-tests.patch @@ -0,0 +1,37 @@ +Because our GCC `lib' spec automatically adds `-rpath' for each `-L' +and a couple more `-rpath, there are two test failures: +demo-hardcode.test, and destdir.at. Disable these. + +--- libtool-2.4.2/Makefile.in 2011-10-17 12:18:55.000000000 +0200 ++++ libtool-2.4.2/Makefile.in 2012-09-13 23:50:37.000000000 +0200 +@@ -909,7 +908,7 @@ COMMON_TESTS = \ + # but they depend on the other tests being run beforehand. + INTERACTIVE_TESTS = tests/demo-shared.test tests/demo-shared-make.test \ + tests/demo-shared-exec.test tests/demo-shared-inst.test \ +- tests/demo-hardcode.test tests/demo-relink.test \ ++ tests/demo-relink.test \ + tests/demo-noinst-link.test tests/demo-shared-unst.test \ + tests/depdemo-shared.test tests/depdemo-shared-make.test \ + tests/depdemo-shared-exec.test tests/depdemo-shared-inst.test \ +@@ -2580,8 +2579,7 @@ tests/cdemo-static-make.log: tests/cdemo + + tests/demo-shared-unst.log: tests/demo-noinst-link.log + tests/demo-noinst-link.log: tests/demo-relink.log +-tests/demo-relink.log: tests/demo-hardcode.log +-tests/demo-hardcode.log: tests/demo-shared-inst.log ++tests/demo-relink.log: tests/demo-shared-inst.log + tests/demo-shared-inst.log: tests/demo-shared-exec.log + tests/demo-shared-exec.log: tests/demo-shared-make.log + tests/demo-shared-make.log: tests/demo-shared.log + +--- libtool-2.4.2/tests/testsuite 2011-10-17 12:19:52.000000000 +0200 ++++ libtool-2.4.2/tests/testsuite 2012-09-14 00:28:45.000000000 +0200 +@@ -14443,6 +14443,6 @@ read at_status <"$at_status_file" + #AT_START_69 + at_fn_group_banner 69 'destdir.at:75' \ + "DESTDIR with in-package deplibs" " " 4 +-at_xfail=no ++at_xfail=yes + eval `$LIBTOOL --config | grep '^fast_install='` + case $fast_install in no) :;; *) false;; esac && at_xfail=yes + diff --git a/gnu/packages/patches/lsh-guile-compat.patch b/gnu/packages/patches/lsh-guile-compat.patch new file mode 100644 index 0000000000..0fe0484580 --- /dev/null +++ b/gnu/packages/patches/lsh-guile-compat.patch @@ -0,0 +1,9 @@ +Use (ice-9 rdelim) for `read-line'. + +--- lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:01.000000000 +0100 ++++ lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:04.000000000 +0100 +@@ -21,3 +21,4 @@ + ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (use-syntax (ice-9 syncase)) ++(use-modules (ice-9 rdelim)) diff --git a/gnu/packages/patches/lsh-no-root-login.patch b/gnu/packages/patches/lsh-no-root-login.patch new file mode 100644 index 0000000000..9dd81de3fb --- /dev/null +++ b/gnu/packages/patches/lsh-no-root-login.patch @@ -0,0 +1,16 @@ +Correctly handle the `--no-root-login' option. + +--- lsh-2.0.4/src/lshd.c 2006-05-01 13:47:44.000000000 +0200 ++++ lsh-2.0.4/src/lshd.c 2009-09-08 12:20:36.000000000 +0200 +@@ -758,6 +758,10 @@ main_argp_parser(int key, char *arg, str + self->allow_root = 1; + break; + ++ case OPT_NO_ROOT_LOGIN: ++ self->allow_root = 0; ++ break; ++ + case OPT_KERBEROS_PASSWD: + self->pw_helper = PATH_KERBEROS_HELPER; + break; + diff --git a/gnu/packages/patches/lsh-pam-service-name.patch b/gnu/packages/patches/lsh-pam-service-name.patch new file mode 100644 index 0000000000..6a6156855c --- /dev/null +++ b/gnu/packages/patches/lsh-pam-service-name.patch @@ -0,0 +1,14 @@ +Tell `lsh-pam-checkpw', the PAM password helper program, to use a more +descriptive service name. + +--- lsh-2.0.4/src/lsh-pam-checkpw.c 2003-02-16 22:30:10.000000000 +0100 ++++ lsh-2.0.4/src/lsh-pam-checkpw.c 2008-11-28 16:16:58.000000000 +0100 +@@ -38,7 +38,7 @@ + #include <security/pam_appl.h> + + #define PWD_MAXLEN 1024 +-#define SERVICE_NAME "other" ++#define SERVICE_NAME "lshd" + #define TIMEOUT 600 + + static int diff --git a/gnu/packages/patches/m4-gets-undeclared.patch b/gnu/packages/patches/m4-gets-undeclared.patch new file mode 100644 index 0000000000..d28f0cdcc4 --- /dev/null +++ b/gnu/packages/patches/m4-gets-undeclared.patch @@ -0,0 +1,45 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + +The upstream fix was: + + commit 66712c23388e93e5c518ebc8515140fa0c807348 + Author: Eric Blake <eblake@redhat.com> + Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake <eblake@redhat.com> + +This patch just gets rid of the offending part. + +--- m4-1.4.16/lib/stdio.in.h.orig 2012-09-01 01:05:36.000000000 +0200 ++++ m4-1.4.16/lib/stdio.in.h 2012-09-01 01:05:42.000000000 +0200 +@@ -158,12 +158,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/patches/m4-readlink-EINVAL.patch b/gnu/packages/patches/m4-readlink-EINVAL.patch new file mode 100644 index 0000000000..dd371584a7 --- /dev/null +++ b/gnu/packages/patches/m4-readlink-EINVAL.patch @@ -0,0 +1,18 @@ +Newer Linux kernels would return EINVAL instead of ENOENT. +The patch below, taken from Gnulib, allows the test to pass when +these Linux versions are in use: +https://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00308.html . + +diff --git a/tests/test-readlink.h b/tests/test-readlink.h +index 08d5662..7247fc4 100644 +--- a/tests/test-readlink.h ++++ b/tests/test-readlink.h +@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print) + ASSERT (errno == ENOENT); + errno = 0; + ASSERT (func ("", buf, sizeof buf) == -1); +- ASSERT (errno == ENOENT); ++ ASSERT (errno == ENOENT || errno == EINVAL); + errno = 0; + ASSERT (func (".", buf, sizeof buf) == -1); + ASSERT (errno == EINVAL); diff --git a/gnu/packages/patches/m4-s_isdir.patch b/gnu/packages/patches/m4-s_isdir.patch new file mode 100644 index 0000000000..a009a4ba44 --- /dev/null +++ b/gnu/packages/patches/m4-s_isdir.patch @@ -0,0 +1,14 @@ +Fails to build with glibc 2.12.1 without this patch. + +http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html + +--- a/src/path.c ++++ b/src/path.c +@@ -22,6 +22,7 @@ + /* Handling of path search of included files via the builtins "include" + and "sinclude". */ + + #include "m4.h" ++#include "sys/stat.h" + + struct includes diff --git a/gnu/packages/patches/make-impure-dirs.patch b/gnu/packages/patches/make-impure-dirs.patch new file mode 100644 index 0000000000..83a5fbe3a5 --- /dev/null +++ b/gnu/packages/patches/make-impure-dirs.patch @@ -0,0 +1,40 @@ +Purity: don't look for library dependencies (of the form `-lfoo') in +/lib and /usr/lib. Likewise, when searching for included Makefiles, +don't look in /usr/include and friends. + +Patch from Nixpkgs, by Eelco Dolstra. + +diff -rc make-3.81-orig/read.c make-3.81/read.c +*** make-3.81-orig/read.c 2006-03-17 15:24:20.000000000 +0100 +--- make-3.81/read.c 2007-05-24 17:16:31.000000000 +0200 +*************** +*** 99,107 **** +--- 99,109 ---- + #endif + INCLUDEDIR, + #ifndef _AMIGA ++ #if 0 + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", ++ #endif + #endif + 0 + }; +diff -rc make-3.81-orig/remake.c make-3.81/remake.c +*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/remake.c 2007-05-24 17:06:54.000000000 +0200 +*************** +*** 1452,1460 **** +--- 1452,1462 ---- + static char *dirs[] = + { + #ifndef _AMIGA ++ #if 0 + "/lib", + "/usr/lib", + #endif ++ #endif + #if defined(WINDOWS32) && !defined(LIBDIR) + /* + * This is completely up to the user at product install time. Just define diff --git a/gnu/packages/patches/perl-no-sys-dirs.patch b/gnu/packages/patches/perl-no-sys-dirs.patch new file mode 100644 index 0000000000..3aba4d7529 --- /dev/null +++ b/gnu/packages/patches/perl-no-sys-dirs.patch @@ -0,0 +1,156 @@ +Don't long for headers and libraries in "traditional" locations. + +Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>. + +diff -ru -x '*~' perl-5.14.2-orig/Configure perl-5.14.2/Configure +--- perl-5.14.2-orig/Configure 2011-09-26 11:44:34.000000000 +0200 ++++ perl-5.14.2/Configure 2012-01-20 17:05:23.089223129 +0100 +@@ -106,15 +106,7 @@ + fi + + : Proper PATH setting +-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin' +-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" +-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" +-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" +-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" +-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" +-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" +-paths="$paths /sbin /usr/sbin /usr/libexec" +-paths="$paths /system/gnu_library/bin" ++paths='' + + for p in $paths + do +@@ -1311,8 +1303,7 @@ + archname='' + : Possible local include directories to search. + : Set locincpth to "" in a hint file to defeat local include searches. +-locincpth="/usr/local/include /opt/local/include /usr/gnu/include" +-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" ++locincpth="" + : + : no include file wanted by default + inclwanted='' +@@ -1328,17 +1319,12 @@ + archobjs='' + libnames='' + : change the next line if compiling for Xenix/286 on Xenix/386 +-xlibpth='/usr/lib/386 /lib/386' ++xlibpth='' + : Possible local library directories to search. +-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" +-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" ++loclibpth="" + + : general looking path for locating libraries +-glibpth="/lib /usr/lib $xlibpth" +-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" +-test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" +-test -f /shlib/libc.so && glibpth="/shlib $glibpth" +-test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" ++glibpth="" + + : Private path used by Configure to find libraries. Its value + : is prepended to libpth. This variable takes care of special +@@ -1371,8 +1357,6 @@ + libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD" + : We probably want to search /usr/shlib before most other libraries. + : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. +-glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` +-glibpth="/usr/shlib $glibpth" + : Do not use vfork unless overridden by a hint file. + usevfork=false + +@@ -2380,7 +2364,6 @@ + zip + " + pth=`echo $PATH | sed -e "s/$p_/ /g"` +-pth="$pth /lib /usr/lib" + for file in $loclist; do + eval xxx=\$$file + case "$xxx" in +@@ -4785,7 +4768,7 @@ + : Set private lib path + case "$plibpth" in + '') if ./mips; then +- plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib" ++ plibpth="$incpath/usr/lib" + fi;; + esac + case "$libpth" in +@@ -8390,13 +8373,8 @@ + echo " " + case "$sysman" in + '') +- syspath='/usr/share/man/man1 /usr/man/man1' +- syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1" +- syspath="$syspath /usr/man/u_man/man1" +- syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1" +- syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1" +- syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1" +- sysman=`./loc . /usr/man/man1 $syspath` ++ syspath='' ++ sysman='' + ;; + esac + if $test -d "$sysman"; then +@@ -19721,9 +19699,10 @@ + case "$full_ar" in + '') full_ar=$ar ;; + esac ++full_ar=ar + + : Store the full pathname to the sed program for use in the C program +-full_sed=$sed ++full_sed=sed + + : see what type gids are declared as in the kernel + echo " " +diff -ru -x '*~' perl-5.14.2-orig/ext/Errno/Errno_pm.PL perl-5.14.2/ext/Errno/Errno_pm.PL +--- perl-5.14.2-orig/ext/Errno/Errno_pm.PL 2011-09-26 11:44:34.000000000 +0200 ++++ perl-5.14.2/ext/Errno/Errno_pm.PL 2012-01-20 17:02:07.938138311 +0100 +@@ -137,11 +137,7 @@ + if ($dep =~ /(\S+errno\.h)/) { + $file{$1} = 1; + } +- } elsif ($^O eq 'linux' && +- $Config{gccversion} ne '' && +- $Config{gccversion} !~ /intel/i +- # might be using, say, Intel's icc +- ) { ++ } elsif (0) { + # Some Linuxes have weird errno.hs which generate + # no #file or #line directives + my $linux_errno_h = -e '/usr/include/errno.h' ? +diff -ru -x '*~' perl-5.14.2-orig/hints/freebsd.sh perl-5.14.2/hints/freebsd.sh +--- perl-5.14.2-orig/hints/freebsd.sh 2011-09-19 15:18:22.000000000 +0200 ++++ perl-5.14.2/hints/freebsd.sh 2012-01-20 17:10:37.267924044 +0100 +@@ -118,21 +118,21 @@ + objformat=`/usr/bin/objformat` + if [ x$objformat = xaout ]; then + if [ -e /usr/lib/aout ]; then +- libpth="/usr/lib/aout /usr/local/lib /usr/lib" +- glibpth="/usr/lib/aout /usr/local/lib /usr/lib" ++ libpth="" ++ glibpth="" + fi + lddlflags='-Bshareable' + else +- libpth="/usr/lib /usr/local/lib" +- glibpth="/usr/lib /usr/local/lib" ++ libpth="" ++ glibpth="" + ldflags="-Wl,-E " + lddlflags="-shared " + fi + cccdlflags='-DPIC -fPIC' + ;; + *) +- libpth="/usr/lib /usr/local/lib" +- glibpth="/usr/lib /usr/local/lib" ++ libpth="" ++ glibpth="" + ldflags="-Wl,-E " + lddlflags="-shared " + cccdlflags='-DPIC -fPIC' diff --git a/gnu/packages/patches/procps-make-3.82.patch b/gnu/packages/patches/procps-make-3.82.patch new file mode 100644 index 0000000000..7bf53e2ccc --- /dev/null +++ b/gnu/packages/patches/procps-make-3.82.patch @@ -0,0 +1,14 @@ +Fix compilation with GNU Make 3.82 (patch from Nixpkgs). + +diff --git a/Makefile b/Makefile +index 09fb3ed..59eba16 100644 +--- a/Makefile ++++ b/Makefile +@@ -174,7 +174,7 @@ INSTALL := $(BINFILES) $(MANFILES) + # want this rule first, use := on ALL, and ALL not filled in yet + all: do_all + +--include */module.mk ++-include proc/module.mk ps/module.mk + + do_all: $(ALL) diff --git a/gnu/packages/patches/readline-link-ncurses.patch b/gnu/packages/patches/readline-link-ncurses.patch new file mode 100644 index 0000000000..0fd0598f46 --- /dev/null +++ b/gnu/packages/patches/readline-link-ncurses.patch @@ -0,0 +1,18 @@ +This patch is to make sure that `libncurses' is among the `NEEDED' +dependencies of `libreadline.so' and `libhistory.so'. + +Failing to do that, applications linking against Readline are +forced to explicitly link against libncurses as well; in addition, +this trick doesn't work when using GNU ld's `--as-needed'. + +--- shlib/Makefile.in 2009-01-06 18:03:22.000000000 +0100 ++++ shlib/Makefile.in 2009-07-27 14:43:25.000000000 +0200 +@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ + SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ + SHOBJ_LIBS = @SHOBJ_LIBS@ + +-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ ++SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses + SHLIB_LIBS = @SHLIB_LIBS@ + + SHLIB_DOT = @SHLIB_DOT@ diff --git a/gnu/packages/patches/shishi-gets-undeclared.patch b/gnu/packages/patches/shishi-gets-undeclared.patch new file mode 100644 index 0000000000..a3d6d0cca2 --- /dev/null +++ b/gnu/packages/patches/shishi-gets-undeclared.patch @@ -0,0 +1,71 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + + +commit 66712c23388e93e5c518ebc8515140fa0c807348 +Author: Eric Blake <eblake@redhat.com> +Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + + Gnulib intentionally does not have a gets module, and now that C11 + and glibc have dropped it, we should be more proactive about warning + any user on a platform that still has a declaration of this dangerous + interface. + + * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets + support. + * modules/stdio (Makefile.am): Likewise. + * lib/stdio-read.c (gets): Likewise. + * tests/test-stdio-c++.cc: Likewise. + * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. + * lib/stdio.in.h (gets): Make warning occur in more places. + * doc/posix-functions/gets.texi (gets): Update documentation. + Reported by Christer Solskogen. + + Signed-off-by: Eric Blake <eblake@redhat.com> + +diff --git a/gl/stdio.in.h b/gl/stdio.in.h +index aa7b599..c377b6e 100644 +--- a/gl/stdio.in.h ++++ b/gl/stdio.in.h +@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " + # endif + #endif + +-#if @GNULIB_GETS@ +-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ +-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +-# undef gets +-# define gets rpl_gets +-# endif +-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); +-_GL_CXXALIAS_RPL (gets, char *, (char *s)); +-# else +-_GL_CXXALIAS_SYS (gets, char *, (char *s)); +-# undef gets +-# endif +-_GL_CXXALIASWARN (gets); + /* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + +@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " + # endif + #endif + +-/* Some people would argue that sprintf should be handled like gets +- (for example, OpenBSD issues a link warning for both functions), +- since both can cause security holes due to buffer overruns. ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. + However, we believe that sprintf can be used safely, and is more + efficient than snprintf in those safe cases; and as proof of our + belief, we use sprintf in several gnulib modules. So this header diff --git a/gnu/packages/patches/tar-gets-undeclared.patch b/gnu/packages/patches/tar-gets-undeclared.patch new file mode 100644 index 0000000000..301a09dde1 --- /dev/null +++ b/gnu/packages/patches/tar-gets-undeclared.patch @@ -0,0 +1,26 @@ +This patch is needed to allow builds with newer versions of +the GNU libc (2.16+). + +This is a backport of this patch: + +commit 66712c23388e93e5c518ebc8515140fa0c807348 +Author: Eric Blake <eblake@redhat.com> +Date: Thu Mar 29 13:30:41 2012 -0600 + + stdio: don't assume gets any more + +--- tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:45.000000000 +0200 ++++ tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:50.000000000 +0200 +@@ -160,12 +160,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not + "use gnulib module fflush for portable POSIX compliance"); + #endif + +-/* It is very rare that the developer ever has full control of stdin, +- so any use of gets warrants an unconditional warning. Assume it is +- always declared, since it is required by C89. */ +-#undef gets +-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); +- + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ + # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm new file mode 100644 index 0000000000..719aa4db5c --- /dev/null +++ b/gnu/packages/perl.scm @@ -0,0 +1,73 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 perl) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public perl + ;; Yeah, Perl... It is required early in the bootstrap process by Linux. + (package + (name "perl") + (version "5.16.1") + (source (origin + (method url-fetch) + (uri (string-append "http://www.cpan.org/src/5.0/perl-" + version ".tar.gz")) + (sha256 + (base32 + "15qxzba3a50c9nik5ydgyfp62x7h9vxxn12yd1jgl93hb1wj96km")))) + (build-system gnu-build-system) + (arguments + (lambda (system) + `(#:tests? #f + #:patches (list (assoc-ref %build-inputs "patch/no-sys-dirs")) + #:phases + (alist-replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (libc (assoc-ref inputs "libc"))) + ;; Use the right path for `pwd'. + (substitute* "dist/Cwd/Cwd.pm" + (("/bin/pwd") + (which "pwd"))) + + (zero? + (system* "./Configure" + (string-append "-Dprefix=" out) + (string-append "-Dman1dir=" out "/share/man/man1") + (string-append "-Dman3dir=" out "/share/man/man3") + "-de" "-Dcc=gcc" + "-Uinstallusrbinperl" + "-Dinstallstyle=lib/perl5" + "-Duseshrplib" + (string-append "-Dlocincpth=" libc "/include") + (string-append "-Dloclibpth=" libc "/lib"))))) + %standard-phases)))) + (inputs `(("patch/no-sys-dirs" ,(search-patch "perl-no-sys-dirs.patch")))) + (synopsis "Implementation of the Perl programming language") + (description + "Perl 5 is a highly capable, feature-rich programming language with over +24 years of development.") + (home-page "http://www.perl.org/") + (license gpl1+))) ; or "Artistic" diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm new file mode 100644 index 0000000000..f9bcf18728 --- /dev/null +++ b/gnu/packages/pkg-config.scm @@ -0,0 +1,51 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 pkg-config) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public pkg-config + (package + (name "pkg-config") + (version "0.27.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://pkgconfig.freedesktop.org/releases/pkg-config-" + version ".tar.gz")) + (sha256 + (base32 + "05wc5nwkqz7saj2v33ydmz1y6jdg659dll4jjh91n41m63gx0qsg")))) + (build-system gnu-build-system) + (arguments `(#:configure-flags '("--with-internal-glib"))) + (home-page "http://www.freedesktop.org/wiki/Software/pkg-config") + (license gpl2+) + (synopsis "a helper tool used when compiling applications and +libraries") + (description + "pkg-config is a helper tool used when compiling applications and +libraries. It helps you insert the correct compiler options on the +command line so an application can use gcc -o test test.c `pkg-config +--libs --cflags glib-2.0` for instance, rather than hard-coding values +on where to find glib (or other libraries). It is language-agnostic, so +it can be used for defining the location of documentation tools, for +instance."))) diff --git a/gnu/packages/pth.scm b/gnu/packages/pth.scm new file mode 100644 index 0000000000..b0d5092cb0 --- /dev/null +++ b/gnu/packages/pth.scm @@ -0,0 +1,61 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 pth) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public pth + (package + (name "pth") + (version "2.0.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/pth/pth-" version + ".tar.gz")) + (sha256 + (base32 + "0ckjqw5kz5m30srqi87idj7xhpw6bpki43mj07bazjm2qmh3cdbj")))) + (build-system gnu-build-system) + (arguments '(#:parallel-build? #f)) + (home-page "http://www.gnu.org/software/pth") + (synopsis "The GNU Portable Threads library") + (description + "Pth is a very portable POSIX/ANSI-C based library for Unix +platforms which provides non-preemptive priority-based scheduling for +multiple threads of execution (aka ``multithreading'') inside +event-driven applications. All threads run in the same address space of +the server application, but each thread has it's own individual +program-counter, run-time stack, signal mask and errno variable. + +The thread scheduling itself is done in a cooperative way, i.e., the +threads are managed by a priority- and event-based non-preemptive +scheduler. The intention is that this way one can achieve better +portability and run-time performance than with preemptive +scheduling. The event facility allows threads to wait until various +types of events occur, including pending I/O on file descriptors, +asynchronous signals, elapsed timers, pending I/O on message ports, +thread and process termination, and even customized callback functions. + +Additionally Pth provides an optional emulation API for POSIX.1c +threads (\"Pthreads\") which can be used for backward compatibility to +existing multithreaded applications.") + (license lgpl2.1+))) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm new file mode 100644 index 0000000000..39d4880ecc --- /dev/null +++ b/gnu/packages/python.scm @@ -0,0 +1,58 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 python) + #:use-module ((guix licenses) #:select (psfl)) + #:use-module (gnu packages compression) + #:use-module (gnu packages openssl) + #:use-module (gnu packages base) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public python + (package + (name "python") + (version "2.7.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.python.org/ftp/python/" + version "/Python-" version ".tar.xz")) + (sha256 + (base32 + "11f9aw855lrmknr6c82gm1ijr3n0smc6idyp94y7774yivjnplv1")))) + (build-system gnu-build-system) + (arguments `(#:tests? #f)) ; XXX: some tests fail + (inputs + `(("zlib" ,zlib) + ("openssl" ,openssl) + ("bzip2" ,bzip2))) + (home-page "http://python.org") + (synopsis + "Python, a high-level dynamically-typed programming language") + (description + "Python is a remarkably powerful dynamic programming language that +is used in a wide variety of application domains. Some of its key +distinguishing features include: clear, readable syntax; strong +introspection capabilities; intuitive object orientation; natural +expression of procedural code; full modularity, supporting hierarchical +packages; exception-based error handling; and very high level dynamic +data types.") + (license psfl))) diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm new file mode 100644 index 0000000000..8623e63758 --- /dev/null +++ b/gnu/packages/readline.scm @@ -0,0 +1,79 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 readline) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages ncurses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public readline + (let ((post-install-phase + '(lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + ;; Make libraries writable so that `strip' can work. + ;; Failing to do that, it bails out with "Permission + ;; denied". + (for-each (lambda (f) (chmod f #o755)) + (find-files lib "\\.so")) + (for-each (lambda (f) (chmod f #o644)) + (find-files lib "\\.a")))))) + (package + (name "readline") + (version "6.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/readline/readline-" + version ".tar.gz")) + (sha256 + (base32 + "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr")))) + (build-system gnu-build-system) + (propagated-inputs `(("ncurses" ,ncurses))) + (inputs `(("patch/link-ncurses" + ,(search-patch "readline-link-ncurses.patch")))) + (arguments `(#:patches (list (assoc-ref %build-inputs + "patch/link-ncurses")) + #:patch-flags '("-p0") + #:configure-flags + (list (string-append "LDFLAGS=-Wl,-rpath -Wl," + (assoc-ref %build-inputs "ncurses") + "/lib")) + + #:phases (alist-cons-after + 'install 'post-install + ,post-install-phase + %standard-phases))) + (synopsis "GNU Readline, a library for interactive line editing") + (description + "The GNU Readline library provides a set of functions for use by +applications that allow users to edit command lines as they are typed in. +Both Emacs and vi editing modes are available. The Readline library includes +additional functions to maintain a list of previously-entered command lines, +to recall and perhaps reedit those lines, and perform csh-like history +expansion on previous commands. + +The history facilites are also placed into a separate library, the History +library, as part of the build process. The History library may be used +without Readline in applications which desire its capabilities.") + (license gpl3+) + (home-page "http://savannah.gnu.org/projects/readline/")))) diff --git a/gnu/packages/recutils.scm b/gnu/packages/recutils.scm new file mode 100644 index 0000000000..39452b54b9 --- /dev/null +++ b/gnu/packages/recutils.scm @@ -0,0 +1,57 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 recutils) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages emacs) + #:use-module (gnu packages check) + #:use-module (gnu packages algebra)) + +(define-public recutils + (package + (name "recutils") + (version "1.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/recutils/recutils-" + version ".tar.gz")) + (sha256 + (base32 + "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky")))) + (build-system gnu-build-system) + (inputs `(;; TODO: Enable optional deps when they're packaged. + ;; ("curl" ,(nixpkgs-derivation "curl")) + ("emacs" ,emacs) + ("check" ,check) + ("bc" ,bc) + ("patch/gets" + ,(search-patch "diffutils-gets-undeclared.patch")))) + (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets")))) + (synopsis "GNU recutils, tools and libraries to access human-editable, +text-based databases") + (description + "GNU recutils is a set of tools and libraries to access human-editable, +text-based databases called recfiles. The data is stored as a sequence of +records, each record containing an arbitrary number of named fields.") + (license gpl3+) + (home-page "http://www.gnu.org/software/recutils/"))) diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm new file mode 100644 index 0000000000..3fb7874434 --- /dev/null +++ b/gnu/packages/rsync.scm @@ -0,0 +1,51 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> +;;; +;;; 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 rsync) + #:use-module (distro) + #:use-module (gnu packages perl) + #:use-module (gnu packages acl) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + + +(define-public rsync + (package + (name "rsync") + (version "3.0.9") + (source (origin + (method url-fetch) + (uri (string-append "http://rsync.samba.org/ftp/rsync/rsync-" + version ".tar.gz")) + (sha256 + (base32 + "01bw4klqsrlhh3i9lazd485sd9qx5djvnwa21lj2h3a9sn6hzw9h")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl) + ("acl" ,acl))) + (synopsis "rsync, a remote (and local) file copying tool") + (description + "rsync is a fast and versatile file copying tool. It can copy locally, +to/from another host over any remote shell, or to/from a remote rsync daemon. +Its delta-transfer algorithm reduces the amount of data sent over the network +by sending only the differences between the source files and the existing +files in the destination.") + (license gpl3+) + (home-page "http://rsync.samba.org/"))) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm new file mode 100644 index 0000000000..a1b8f68c9d --- /dev/null +++ b/gnu/packages/scheme.scm @@ -0,0 +1,168 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 scheme) + #:use-module (distro) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages m4) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages emacs) + #:use-module (gnu packages texinfo) + #:use-module (ice-9 match)) + +(define-public mit-scheme + (package + (name "mit-scheme") + (version "9.1.1") + (source #f) ; see below + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target + #:phases + (alist-replace + 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (and (zero? (system* "tar" "xzvf" + (assoc-ref inputs "source"))) + (chdir ,(string-append name "-" version)) + (begin + ;; Delete these dangling symlinks since they break + ;; `patch-shebangs'. + (for-each delete-file + (append (find-files "src/lib/lib" "\\.so$") + (find-files "src/lib" "^ffi-test"))) + (chdir "src") + #t))) + (alist-replace + 'build + (lambda* (#:key system outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (if (or (string-prefix? "x86_64" system) + (string-prefix? "i686" system)) + (zero? (system* "make" "compile-microcode")) + (zero? (system* "./etc/make-liarc.sh" + (string-append "--prefix=" out)))))) + %standard-phases)))) + (inputs + `(;; TODO: Build doc when TeX Live is available. + ;; ("automake" ,automake) + ;; ("texlive-core" ,texlive-core) + ("texinfo" ,texinfo) + ("m4" ,m4) + + ("source" + ,(lambda (system) + ;; MIT/GNU Scheme is not bootstrappable, so it's recommended to + ;; compile from the architecture-specific tarballs, which contain + ;; pre-built binaries. It leads to more efficient code than when + ;; building the tarball that contains generated C code instead of + ;; those binaries. + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mit-scheme/stable.pkg/" + version "/mit-scheme-" + version "-" + (match system + ("x86_64-linux" "x86-64") + ("i686-linux" "i386") + (_ "c")) + ".tar.gz")) + (sha256 + (match system + ("x86_64-linux" + (base32 + "1wcxm9hyfc53myvlcn93fyqrnnn4scwkknl9hkbp1cphc6mp291x")) + ("i686-linux" + (base32 + "0vi760fy550d9db538m0vzbq1mpdncvw9g8bk4lswk0kcdira55z")) + (_ + (base32 + "0pclakzwxbqgy6wqwvs6ml62wgby8ba8xzmwzdwhx1v8wv05yw1j"))))))))) + (home-page "http://www.gnu.org/software/mit-scheme/") + (synopsis "MIT/GNU Scheme, a native code Scheme compiler") + (description + "MIT/GNU Scheme is an implementation of the Scheme programming +language, providing an interpreter, compiler, source-code debugger, +integrated Emacs-like editor, and a large runtime library. MIT/GNU +Scheme is best suited to programming large applications with a rapid +development cycle.") + (license gpl2+))) + +(define-public bigloo + (package + (name "bigloo") + (version "3.9a") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo" + version ".tar.gz")) + (sha256 + (base32 + "0v1q0gcbn38ackdzsnvpkdgaj6ydkfdya31l2hag21aig087px1y")))) + (build-system gnu-build-system) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/shebangs")) + #:test-target "test" + #:phases (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + + (substitute* "configure" + (("^shell=.*$") + (string-append "shell=" (which "bash") "\n"))) + + ;; Those variables are used by libgc's `configure'. + (setenv "SHELL" (which "bash")) + (setenv "CONFIG_SHELL" (which "bash")) + + ;; The `configure' script doesn't understand options + ;; of those of Autoconf. + (let ((out (assoc-ref outputs "out"))) + (zero? + (system* "./configure" + (string-append "--prefix=" out) + (string-append"--mv=" (which "mv")) + (string-append "--rm=" (which "rm")))))) + (alist-cons-after + 'patch 'patch-absolute-file-names + (lambda _ + (substitute* (cons "configure" + (find-files "gc" "^install-gc")) + (("/bin/rm") (which "rm")) + (("/bin/mv") (which "mv")))) + %standard-phases)))) + (inputs + `(("gmp" ,gmp) + ("emacs" ,emacs) + ("patch/shebangs" ,(search-patch "bigloo-gc-shebangs.patch")))) + (home-page "http://www-sop.inria.fr/indes/fp/Bigloo/") + (synopsis "Bigloo, an efficient Scheme compiler") + (description + "Bigloo is a Scheme implementation devoted to one goal: enabling +Scheme based programming style where C(++) is usually +required. Bigloo attempts to make Scheme practical by offering +features usually presented by traditional programming languages +but not offered by Scheme and functional programming. Bigloo +compiles Scheme modules. It delivers small and fast stand alone +binary executables. Bigloo enables full connections between +Scheme and C programs, between Scheme and Java programs, and +between Scheme and C# programs.") + (license gpl2+))) diff --git a/gnu/packages/shishi.scm b/gnu/packages/shishi.scm new file mode 100644 index 0000000000..d6d152f368 --- /dev/null +++ b/gnu/packages/shishi.scm @@ -0,0 +1,71 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 shishi) + #:use-module (guix licenses) + #:use-module (distro) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages gnupg) + #:use-module ((gnu packages compression) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public shishi + (package + (name "shishi") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/shishi/shishi-" + version + ".tar.gz")) + (sha256 + (base32 + "13c6w9rpaqb3am65nrn86byvmll5r78pld2vb0i68491vww4fzlx")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + '("CPPFLAGS=-DMAX_ERROR_DESCRIPTION_SIZE=ASN1_MAX_ERROR_DESCRIPTION_SIZE") + #:patches (list (assoc-ref %build-inputs + "patch/gets")))) + (inputs + `(("gnutls" ,gnutls) + ("zlib" ,guix:zlib) + ("libgcrypt" ,libgcrypt) + ("libtasn1" ,libtasn1) + ("patch/gets" ,(search-patch "shishi-gets-undeclared.patch")))) + (home-page "http://www.gnu.org/software/shishi/") + (synopsis + "GNU Shishi, free implementation of the Kerberos 5 network security system") + (description + " GNU Shishi is an implementation of the Kerberos 5 network + authentication system, as specified in RFC 4120. Shishi can be + used to authenticate users in distributed systems. + + Shishi contains a library (`libshishi') that can be used by + application developers to add support for Kerberos 5. Shishi + contains a command line utility (1shishi') that is used by + users to acquire and manage tickets (and more). The server + side, a Key Distribution Center, is implemented by `shishid'. +") + (license gpl3+))) ; some files are under GPLv2+ diff --git a/gnu/packages/system.scm b/gnu/packages/system.scm new file mode 100644 index 0000000000..5fb3dc463b --- /dev/null +++ b/gnu/packages/system.scm @@ -0,0 +1,91 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 system) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (distro) + #:use-module (gnu packages ncurses)) + +(define-public pies + (package + (name "pies") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/pies/pies-" + version ".tar.bz2")) + (sha256 + (base32 + "18w0dbg77i56cx1bwa789w0qi3l4xkkbascxcv2b6gbm0zmjg1g6")))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/pies/") + (synopsis + "GNU Pies, a program invocation and execution supervisor") + (description + "The name Pies (pronounced \"p-yes\") stands for Program Invocation +and Execution Supervisor. This utility starts and controls execution of +external programs, called components. Each component is a stand-alone +program, which is executed in the foreground. Upon startup, pies reads +the list of components from its configuration file, starts them, and +remains in the background, controlling their execution. If any of the +components terminates, the default action of Pies is to restart it. +However, it can also be programmed to perform a variety of another +actions such as, e.g., sending mail notifications to the system +administrator, invoking another external program, etc. + +Pies can be used for a wide variety of tasks. Its most obious use is to +put in backgound a program which normally cannot detach itself from the +controlling terminal, such as, e.g., minicom. It can launch and control +components of some complex system, such as Jabberd or MeTA1 (and it +offers much more control over them than the native utilities). Finally, +it can replace the inetd utility!") + (license gpl3+))) + +(define-public inetutils + (package + (name "inetutils") + (version "1.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/inetutils/inetutils-" + version ".tar.gz")) + (sha256 + (base32 + "0azzg6njgq79byl6960kb0wihfhhzf49snslhxgvi30ribgfpa82")))) + (build-system gnu-build-system) + (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets")) + + ;; FIXME: `tftp.sh' relies on `netstat' from utils-linux, + ;; which is currently missing. + #:tests? #f)) + (inputs `(("patch/gets" ,(search-patch "diffutils-gets-undeclared.patch")) + ("ncurses" ,ncurses))) + (home-page "http://www.gnu.org/software/inetutils/") + (synopsis + "GNU Inetutils, a collection of common network programs") + (description + "The GNU network utilities suite provides the following tools: +ftp(d), hostname, ifconfig, inetd, logger, ping, rcp, rexec(d), +rlogin(d), rsh(d), syslogd, talk(d), telnet(d), tftp(d), traceroute, +uucpd, and whois.") + (license gpl3+))) diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm new file mode 100644 index 0000000000..a8c4c957c4 --- /dev/null +++ b/gnu/packages/tcl.scm @@ -0,0 +1,109 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 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)) + + ;; XXX: There are a few test failures (related to HTTP, most + ;; likely related to name resolution), but that doesn't cause + ;; `make' to fail. + #: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"))) + + #:phases (alist-cons-before + 'configure 'set-path-to-stty + (lambda _ + (substitute* "configure" + (("STTY_BIN=/bin/stty") + (string-append "STTY_BIN=" (which "stty"))))) + %standard-phases) + + #: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' diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm new file mode 100644 index 0000000000..9a264c627c --- /dev/null +++ b/gnu/packages/texinfo.scm @@ -0,0 +1,61 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 texinfo) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages compression) + #:use-module (gnu packages ncurses)) + +(define-public texinfo + (package + (name "texinfo") + (version "4.13a") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/texinfo/texinfo-" + version + ".tar.lzma")) + (sha256 + (base32 + "1rf9ckpqwixj65bw469i634897xwlgkm5i9g2hv3avl6mv7b0a3d")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses) ("xz" ,xz))) + (home-page + "http://www.gnu.org/software/texinfo/") + (synopsis + "GNU Texinfo, the GNU documentation system") + (description + "Texinfo is the official documentation format of the GNU project. +It was invented by Richard Stallman and Bob Chassell many years +ago, loosely based on Brian Reid's Scribe and other formatting +languages of the time. It is used by many non-GNU projects as +well. + +Texinfo uses a single source file to produce output in a number +of formats, both online and printed (dvi, html, info, pdf, xml, +etc.). This means that instead of writing different documents +for online information and another for a printed manual, you +need write only one document. And when the work is revised, you +need revise only that one document. The Texinfo system is +well-integrated with GNU Emacs.") + (license gpl3+))) diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm new file mode 100644 index 0000000000..cfb3261f94 --- /dev/null +++ b/gnu/packages/time.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 time) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public time + (package + (name "time") + (version "1.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/time/time-" + version ".tar.gz")) + (sha256 + (base32 + "0va9063fcn7xykv658v2s9gilj2fq4rcdxx2mn2mmy1v4ndafzp3")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (alist-replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; This old `configure' script doesn't support + ;; variables passed as arguments. + (let ((out (assoc-ref outputs "out"))) + (setenv "CONFIG_SHELL" (which "bash")) + (zero? + (system* "./configure" + (string-append "--prefix=" out))))) + %standard-phases))) + (home-page "http://www.gnu.org/software/time/") + (synopsis + "GNU Time, a tool that runs programs and summarizes the system +resources they use") + (description + "The 'time' command runs another program, then displays information +about the resources used by that program, collected by the system while +the program was running. You can select which information is reported +and the format in which it is shown, or have 'time' save the information +in a file instead of displaying it on the screen. + +The resources that 'time' can report on fall into the general categories +of time, memory, and I/O and IPC calls. Some systems do not provide +much information about program resource use; 'time' reports unavailable +information as zero values.") + (license gpl2+))) diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm new file mode 100644 index 0000000000..ea31a1e70d --- /dev/null +++ b/gnu/packages/wget.scm @@ -0,0 +1,61 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 wget) + #:use-module (guix licenses) + #:use-module ((gnu packages gettext) + #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages gnutls) + #:use-module (gnu packages perl) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public wget + (package + (name "wget") + (version "1.14") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/wget/wget-" + version ".tar.xz")) + (sha256 + (base32 + "0yqllj3nv9p3vqbdm6j4nvpjcwf1y19rq8sd966nrbd2qvvxfq8p")))) + (build-system gnu-build-system) + (inputs + `(("gnutls" ,gnutls) + ("perl" ,perl) + ("gettext" ,guix:gettext))) + (arguments + '(#:phases + (alist-cons-before 'build 'patch-/usr/bin/env + (lambda _ + (for-each patch-shebang + '("doc/texi2pod.pl" "tests/run-px"))) + %standard-phases))) + (home-page "http://www.gnu.org/software/wget/") + (synopsis + "GNU Wget, a tool for retrieving files using HTTP, HTTPS, and FTP") + (description + "GNU Wget is a free software package for retrieving files using HTTP, +HTTPS and FTP, the most widely-used Internet protocols. It is a +non-interactive commandline tool, so it may easily be called from +scripts, cron jobs, terminals without X-Windows support, etc.") + (license gpl3+))) ; some files are under GPLv2+ diff --git a/gnu/packages/which.scm b/gnu/packages/which.scm new file mode 100644 index 0000000000..aa5330cad7 --- /dev/null +++ b/gnu/packages/which.scm @@ -0,0 +1,48 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> +;;; +;;; 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 which) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public which + (package + (name "which") + (version "2.20") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/which/which-" + version ".tar.gz")) + (sha256 + (base32 + "1y2p50zadb36izzh2zw4dm5hvdiydqf3qa88l8kav20dcmfbc5yl")))) + (build-system gnu-build-system) + (home-page "https://gnu.org/software/which/") + (synopsis + "GNU Which shows the full path of (shell) commands") + (description + "GNU Which takes one or more arguments. For each of its arguments +it prints to stdout the full path of the executables that would have +been executed when this argument had been entered at the shell +prompt. It does this by searching for an executable or script in the +directories listed in the environment variable PATH using the same +algorithm as bash(1).") + (license gpl3+))) ; some files are under GPLv2+ diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm new file mode 100644 index 0000000000..d67057dab2 --- /dev/null +++ b/gnu/packages/xml.scm @@ -0,0 +1,44 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 xml) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public expat + (package + (name "expat") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/expat/expat/" + version "/expat-" version ".tar.gz")) + (sha256 + (base32 + "11pblz61zyxh68s5pdcbhc30ha1b2vfjd83aiwfg4vc15x3hadw2")))) + (build-system gnu-build-system) + (home-page "http://www.libexpat.org/") + (synopsis "A stream-oriented XML parser library written in C") + (description + "Expat is an XML parser library written in C. It is a +stream-oriented parser in which an application registers handlers for +things the parser might find in the XML document (like start tags).") + (license license:expat))) diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm new file mode 100644 index 0000000000..b5366c046f --- /dev/null +++ b/gnu/packages/zile.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; +;;; 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 zile) + #:use-module (guix licenses) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages perl) + #:use-module (gnu packages help2man) + #:use-module (gnu packages ncurses)) + +(define-public zile + (package + (name "zile") + (version "2.4.9") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/zile/zile-" + version ".tar.gz")) + (sha256 + (base32 + "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7")))) + (build-system gnu-build-system) + (inputs + `(("boehm-gc" ,libgc) + ("ncurses" ,ncurses) + ("perl" ,perl) + ("help2man" ,help2man))) + (home-page "http://www.gnu.org/software/zile/") + (synopsis "GNU Zile, a lightweight Emacs clone") + (description + "GNU Zile, which is a lightweight Emacs clone. Zile is short +for Zile Is Lossy Emacs. Zile has been written to be as +similar as possible to Emacs; every Emacs user should feel at +home. + +Zile has all of Emacs's basic editing features: it is 8-bit +clean (though it currently lacks Unicode support), and the +number of editing buffers and windows is only limited by +available memory and screen space respectively. Registers, +minibuffer completion and auto fill are available. Function +and variable names are identical with Emacs's (except those +containing the word \"emacs\", which instead contain the word +\"zile\"!). + +However, all of this is packed into a program which typically +compiles to about 130Kb.") + (license gpl3+))) |