distro: Split (distro packages base) into several files.

* distro/packages/base.scm (libsigsegv, gawk, perl, m4, gmp, mpfr, mpc,
  ncurses, readline, bash, libtool, libunistring, libffi, pkg-config,
  libgc): Move to modules of their own.
  (guile-1.8, guile-2.0): Move to...
* distro/packages/guile.scm: ... here.

* distro/packages/bash.scm, distro/packages/bdw-gc.scm,
  distro/packages/gawk.scm, distro/packages/libffi.scm,
  distro/packages/libsigsegv.scm, distro/packages/libtool.scm,
  distro/packages/libunistring.scm, distro/packages/m4.scm,
  distro/packages/multiprecision.scm, distro/packages/ncurses.scm,
  distro/packages/perl.scm, distro/packages/pkg-config.scm,
  distro/packages/readline.scm: New files.
This commit is contained in:
Ludovic Courtès 2012-11-04 22:37:22 +01:00
parent 18633d4f35
commit c44899a28b
16 changed files with 1049 additions and 703 deletions

View File

@ -43,12 +43,26 @@ MODULES = \
guix.scm \ guix.scm \
distro.scm \ distro.scm \
distro/packages/base.scm \ distro/packages/base.scm \
distro/packages/bash.scm \
distro/packages/bdw-gc.scm \
distro/packages/bootstrap.scm \ distro/packages/bootstrap.scm \
distro/packages/gawk.scm \
distro/packages/guile.scm \ distro/packages/guile.scm \
distro/packages/ld-wrapper.scm \ distro/packages/ld-wrapper.scm \
distro/packages/libffi.scm \
distro/packages/libsigsegv.scm \
distro/packages/libtool.scm \
distro/packages/libunistring.scm \
distro/packages/lout.scm \ distro/packages/lout.scm \
distro/packages/m4.scm \
distro/packages/multiprecision.scm \
distro/packages/ncurses.scm \
distro/packages/perl.scm \
distro/packages/pkg-config.scm \
distro/packages/readline.scm \
distro/packages/recutils.scm distro/packages/recutils.scm
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
nobase_dist_guilemodule_DATA = $(MODULES) nobase_dist_guilemodule_DATA = $(MODULES)

View File

@ -19,7 +19,12 @@
(define-module (distro packages base) (define-module (distro packages base)
#:use-module (distro) #:use-module (distro)
#:use-module (distro packages bash)
#:use-module (distro packages bootstrap) #:use-module (distro packages bootstrap)
#:use-module (distro packages gawk)
#:use-module (distro packages guile)
#:use-module (distro packages multiprecision)
#:use-module (distro packages perl)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix ftp) #:use-module (guix ftp)
#:use-module (guix http) #:use-module (guix http)
@ -36,65 +41,6 @@
;;; ;;;
;;; Code: ;;; Code:
(define-public libsigsegv
(package
(name "libsigsegv")
(version "2.10")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-"
version ".tar.gz"))
(sha256
(base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
(build-system gnu-build-system)
(outputs '("out" "lib")) ; separate libdir from the rest
(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 "GPLv2+")))
(define-public gawk
(package
(name "gawk")
(version "4.0.0")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/gawk/gawk-" version
".tar.bz2"))
(sha256
(base32 "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0"))))
(build-system gnu-build-system)
(arguments (case-lambda
((system)
(if (string=? system "i686-cygwin")
'(#:tests? #f) ; work around test failure on Cygwin
'(#:parallel-tests? #f))) ; test suite fails in parallel
((system cross-system)
'(#:parallel-tests? #f))))
(inputs `(("libsigsegv" ,libsigsegv) ; headers
("libsigsegv/lib" ,libsigsegv "lib"))) ; library
(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 "GPLv3+")))
(define-public hello (define-public hello
(package (package
(name "hello") (name "hello")
@ -188,56 +134,6 @@ files (as archives).")
(license "GPLv3+") (license "GPLv3+")
(home-page "http://www.gnu.org/software/tar/"))) (home-page "http://www.gnu.org/software/tar/")))
(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 http-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"))
(pwd (search-path (search-path-as-string->list
(getenv "PATH"))
"pwd")))
;; Use the right path for `pwd'.
(substitute* "dist/Cwd/Cwd.pm"
(("/bin/pwd") pwd))
(zero?
(system* "/bin/sh" "./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 "GPLv1+"))) ; or "Artistic"
(define-public gzip (define-public gzip
(package (package
(name "gzip") (name "gzip")
@ -488,56 +384,6 @@ are expected to exist on every operating system.")
(license "GPLv3+") (license "GPLv3+")
(home-page "http://www.gnu.org/software/coreutils/"))) (home-page "http://www.gnu.org/software/coreutils/")))
(define-public m4
(package
(name "m4")
(version "1.4.16")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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"))))
((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 "GPLv3+")
(home-page "http://www.gnu.org/software/m4/")))
(define-public gnu-make (define-public gnu-make
(package (package
(name "make") (name "make")
@ -567,97 +413,6 @@ that it is possible to use Make to build and install the program.")
(license "GPLv3+") (license "GPLv3+")
(home-page "http://www.gnu.org/software/make/"))) (home-page "http://www.gnu.org/software/make/")))
(define-public gmp
(package
(name "gmp")
(version "5.0.5")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/gmp/gmp-" version
".tar.bz2"))
(sha256
(base32
"1jfymbr90mpn0zw5sg001llqnvf2462y77vgjknrmfs1rjn8ln0z"))))
(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 "LGPLv3+")
(home-page "http://gmplib.org/")))
(define-public mpfr
(package
(name "mpfr")
(version "3.1.1")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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 "LGPLv3+")
(home-page "http://www.mpfr.org/")))
(define-public mpc
(package
(name "mpc")
(version "1.0")
(source (origin
(method http-fetch)
(uri (string-append
"http://www.multiprecision.org/mpc/download/mpc-"
version ".tar.gz"))
(sha256 (base32
"00rxjmkpqnv6zzcyw9aa5w6rzaav32ys87km25zgfcv9i32km5cw"))))
(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 is built
upon and follows the same principles as GNU MPFR.")
(license "LGPLv3+")
(home-page "http://mpc.multiprecision.org/")))
(define-public binutils (define-public binutils
(package (package
(name "binutils") (name "binutils")
@ -798,456 +553,6 @@ used in the GNU system including the GNU/Linux variant.")
(license "GPLv3+") (license "GPLv3+")
(home-page "http://gcc.gnu.org/")))) (home-page "http://gcc.gnu.org/"))))
(define-public ncurses
(let ((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 http-fetch)
(uri (string-append "http://ftp.gnu.org/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
%standard-phases)
;; The `ncursesw5-config' has a #!/bin/sh that we don't want to
;; patch, to avoid retaining a reference to the build-time Bash.
#:patch-shebangs? #f))
((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/"))))
(define-public readline
(package
(name "readline")
(version "6.2")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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"))))
(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 "GPLv3+")
(home-page "http://savannah.gnu.org/projects/readline/")))
(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")
" ")))
(package
(name "bash")
(version "4.2")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/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
(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"))))
%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 "GPLv3+")
(home-page "http://www.gnu.org/software/bash/"))))
(define-public libtool
(package
(name "libtool")
(version "2.4.2")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/libtool/libtool-"
version ".tar.gz"))
(sha256
(base32
"0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))))
(build-system gnu-build-system)
(native-inputs `(("m4" ,m4)
("perl" ,perl)))
(arguments
;; TODO: Use `TESTSUITEFLAGS=-jN' for tests.
`(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))))
(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 "GPLv3+")
(home-page "http://www.gnu.org/software/libtool/")))
(define-public libunistring
(package
(name "libunistring")
(version "0.9.3")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/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 "LGPLv3+")))
(define-public guile-1.8
(package
(name "guile")
(version "1.8.8")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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 "LGPLv2+")))
(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 ftp-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 "free, non-copyleft"))))
(define-public pkg-config
(package
(name "pkg-config")
(version "0.27.1")
(source (origin
(method http-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 "GPLv2+")
(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.")))
(define-public libgc
(package
(name "libgc")
(version "7.2alpha6")
(source (origin
(method http-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")))
(define-public guile-2.0
(package
(name "guile")
(version "2.0.6")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version
".tar.xz"))
(sha256
(base32
"000ng5qsq3cl1k35jvzvhwxj92wx4q87745n2fppkd4irh58vv5l"))))
(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)
(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 "LGPLv3+")))
(define-public linux-libre-headers (define-public linux-libre-headers
(let* ((version* "3.3.8") (let* ((version* "3.3.8")
(build-phase (build-phase

88
distro/packages/bash.scm Normal file
View File

@ -0,0 +1,88 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages bash)
#:use-module (distro packages ncurses)
#:use-module (distro packages readline)
#:use-module (guix packages)
#:use-module (guix http)
#: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")
" ")))
(package
(name "bash")
(version "4.2")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/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
(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"))))
%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 "GPLv3+")
(home-page "http://www.gnu.org/software/bash/"))))

View File

@ -0,0 +1,59 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages bdw-gc)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public libgc
(package
(name "libgc")
(version "7.2alpha6")
(source (origin
(method http-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")))

59
distro/packages/gawk.scm Normal file
View File

@ -0,0 +1,59 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages gawk)
#:use-module (distro packages libsigsegv)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public gawk
(package
(name "gawk")
(version "4.0.0")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/gawk/gawk-" version
".tar.bz2"))
(sha256
(base32 "0sss7rhpvizi2a88h6giv0i7w5h07s2fxkw3s6n1hqvcnhrfgbb0"))))
(build-system gnu-build-system)
(arguments (case-lambda
((system)
(if (string=? system "i686-cygwin")
'(#:tests? #f) ; work around test failure on Cygwin
'(#:parallel-tests? #f))) ; test suite fails in parallel
((system cross-system)
'(#:parallel-tests? #f))))
(inputs `(("libsigsegv" ,libsigsegv) ; headers
("libsigsegv/lib" ,libsigsegv "lib"))) ; library
(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 "GPLv3+")))

View File

@ -17,7 +17,16 @@
;;; along with Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages guile) (define-module (distro packages guile)
#:use-module (distro packages base) #:use-module (distro)
#:use-module (distro packages bdw-gc)
#:use-module (distro packages gawk)
#:use-module (distro packages libffi)
#:use-module (distro packages libtool)
#:use-module (distro packages libunistring)
#:use-module (distro packages m4)
#:use-module (distro packages multiprecision)
#:use-module (distro packages pkg-config)
#:use-module (distro packages readline)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix http) #:use-module (guix http)
#:use-module (guix utils) #:use-module (guix utils)
@ -25,10 +34,107 @@
;;; Commentary: ;;; Commentary:
;;; ;;;
;;; Modules and extensions for GNU Guile. ;;; GNU Guile, and modules and extensions.
;;; ;;;
;;; Code: ;;; Code:
(define-public guile-1.8
(package
(name "guile")
(version "1.8.8")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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 "LGPLv2+")))
(define-public guile-2.0
(package
(name "guile")
(version "2.0.6")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version
".tar.xz"))
(sha256
(base32
"000ng5qsq3cl1k35jvzvhwxj92wx4q87745n2fppkd4irh58vv5l"))))
(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)
(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 "LGPLv3+")))
;;;
;;; Extensions.
;;;
(define (guile-reader guile) (define (guile-reader guile)
"Build Guile-Reader against GUILE, a package of some version of Guile 1.8 "Build Guile-Reader against GUILE, a package of some version of Guile 1.8
or 2.0." or 2.0."
@ -45,7 +151,8 @@ or 2.0."
"1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n")))) "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkgconfig" ,pkg-config) (native-inputs `(("pkgconfig" ,pkg-config)
("gperf" ,(nixpkgs-derivation "gperf")))) ("gperf" ,(false-if-exception ; FIXME
(nixpkgs-derivation "gperf")))))
(inputs `(("guile" ,guile))) (inputs `(("guile" ,guile)))
(synopsis "Guile-Reader, a simple framework for building readers for (synopsis "Guile-Reader, a simple framework for building readers for
GNU Guile") GNU Guile")

View File

@ -0,0 +1,72 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages libffi)
#:use-module (guix packages)
#:use-module (guix ftp)
#: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 ftp-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 "free, non-copyleft"))))

View File

@ -0,0 +1,47 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages libsigsegv)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public libsigsegv
(package
(name "libsigsegv")
(version "2.10")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-"
version ".tar.gz"))
(sha256
(base32 "16hrs8k3nmc7a8jam5j1fpspd6sdpkamskvsdpcw6m29vnis8q44"))))
(build-system gnu-build-system)
(outputs '("out" "lib")) ; separate libdir from the rest
(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 "GPLv2+")))

View File

@ -0,0 +1,56 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages libtool)
#:use-module (distro)
#:use-module (distro packages m4)
#:use-module (distro packages perl)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public libtool
(package
(name "libtool")
(version "2.4.2")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/libtool/libtool-"
version ".tar.gz"))
(sha256
(base32
"0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))))
(build-system gnu-build-system)
(native-inputs `(("m4" ,m4)
("perl" ,perl)))
(arguments
;; TODO: Use `TESTSUITEFLAGS=-jN' for tests.
`(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))))
(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 "GPLv3+")
(home-page "http://www.gnu.org/software/libtool/")))

View File

@ -0,0 +1,57 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages libunistring)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public libunistring
(package
(name "libunistring")
(version "0.9.3")
(source (origin
(method http-fetch)
(uri (string-append
"http://ftp.gnu.org/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 "LGPLv3+")))

74
distro/packages/m4.scm Normal file
View File

@ -0,0 +1,74 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages m4)
#:use-module (distro)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public m4
(package
(name "m4")
(version "1.4.16")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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"))))
((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 "GPLv3+")
(home-page "http://www.gnu.org/software/m4/")))

View File

@ -0,0 +1,116 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages multiprecision)
#:use-module (distro)
#:use-module (distro packages m4)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public gmp
(package
(name "gmp")
(version "5.0.5")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/gmp/gmp-" version
".tar.bz2"))
(sha256
(base32
"1jfymbr90mpn0zw5sg001llqnvf2462y77vgjknrmfs1rjn8ln0z"))))
(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 "LGPLv3+")
(home-page "http://gmplib.org/")))
(define-public mpfr
(package
(name "mpfr")
(version "3.1.1")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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 "LGPLv3+")
(home-page "http://www.mpfr.org/")))
(define-public mpc
(package
(name "mpc")
(version "1.0")
(source (origin
(method http-fetch)
(uri (string-append
"http://www.multiprecision.org/mpc/download/mpc-"
version ".tar.gz"))
(sha256 (base32
"00rxjmkpqnv6zzcyw9aa5w6rzaav32ys87km25zgfcv9i32km5cw"))))
(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 is built
upon and follows the same principles as GNU MPFR.")
(license "LGPLv3+")
(home-page "http://mpc.multiprecision.org/")))

106
distro/packages/ncurses.scm Normal file
View File

@ -0,0 +1,106 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages ncurses)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public ncurses
(let ((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 http-fetch)
(uri (string-append "http://ftp.gnu.org/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
%standard-phases)
;; The `ncursesw5-config' has a #!/bin/sh that we don't want to
;; patch, to avoid retaining a reference to the build-time Bash.
#:patch-shebangs? #f))
((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/"))))

74
distro/packages/perl.scm Normal file
View File

@ -0,0 +1,74 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages perl)
#:use-module (distro)
#:use-module (guix packages)
#:use-module (guix http)
#: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 http-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"))
(pwd (search-path (search-path-as-string->list
(getenv "PATH"))
"pwd")))
;; Use the right path for `pwd'.
(substitute* "dist/Cwd/Cwd.pm"
(("/bin/pwd") pwd))
(zero?
(system* "/bin/sh" "./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 "GPLv1+"))) ; or "Artistic"

View File

@ -0,0 +1,50 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages pkg-config)
#:use-module (guix packages)
#:use-module (guix http)
#: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 http-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 "GPLv2+")
(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.")))

View File

@ -0,0 +1,62 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
;;; 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.
;;;
;;; 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 Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages readline)
#:use-module (distro)
#:use-module (distro packages ncurses)
#:use-module (guix packages)
#:use-module (guix http)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
(define-public readline
(package
(name "readline")
(version "6.2")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/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"))))
(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 "GPLv3+")
(home-page "http://savannah.gnu.org/projects/readline/")))