|
|
@ -19,7 +19,12 @@ |
|
|
|
|
|
|
|
(define-module (distro packages base) |
|
|
|
#:use-module (distro) |
|
|
|
#:use-module (distro packages bash) |
|
|
|
#: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 ftp) |
|
|
|
#:use-module (guix http) |
|
|
@ -36,65 +41,6 @@ |
|
|
|
;;; |
|
|
|
;;; 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 |
|
|
|
(package |
|
|
|
(name "hello") |
|
|
@ -188,56 +134,6 @@ files (as archives).") |
|
|
|
(license "GPLv3+") |
|
|
|
(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 |
|
|
|
(package |
|
|
|
(name "gzip") |
|
|
@ -488,56 +384,6 @@ are expected to exist on every operating system.") |
|
|
|
(license "GPLv3+") |
|
|
|
(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 |
|
|
|
(package |
|
|
|
(name "make") |
|
|
@ -567,97 +413,6 @@ that it is possible to use Make to build and install the program.") |
|
|
|
(license "GPLv3+") |
|
|
|
(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 |
|
|
|
(package |
|
|
|
(name "binutils") |
|
|
@ -798,456 +553,6 @@ used in the GNU system including the GNU/Linux variant.") |
|
|
|
(license "GPLv3+") |
|
|
|
(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 |
|
|
|
(let* ((version* "3.3.8") |
|
|
|
(build-phase |
|
|
|