diff options
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/bdb.scm | 6 | ||||
-rw-r--r-- | gnu/packages/gd.scm | 68 | ||||
-rw-r--r-- | gnu/packages/ghostscript.scm | 20 | ||||
-rw-r--r-- | gnu/packages/graphviz.scm | 124 | ||||
-rw-r--r-- | gnu/packages/gtk.scm | 109 | ||||
-rw-r--r-- | gnu/packages/imagemagick.scm | 92 | ||||
-rw-r--r-- | gnu/packages/libpng.scm | 5 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 97 | ||||
-rw-r--r-- | gnu/packages/make-bootstrap.scm | 192 | ||||
-rw-r--r-- | gnu/packages/pkg-config.scm | 5 | ||||
-rw-r--r-- | gnu/packages/scheme.scm | 73 | ||||
-rw-r--r-- | gnu/packages/subversion.scm | 58 | ||||
-rw-r--r-- | gnu/packages/version-control.scm | 36 |
13 files changed, 726 insertions, 159 deletions
diff --git a/gnu/packages/bdb.scm b/gnu/packages/bdb.scm index 9a626b17d7..75a2b72b44 100644 --- a/gnu/packages/bdb.scm +++ b/gnu/packages/bdb.scm @@ -45,7 +45,11 @@ (system* "./dist/configure" (string-append "--prefix=" out) (string-append "CONFIG_SHELL=" (which "bash")) - (string-append "SHELL=" (which "bash")))))) + (string-append "SHELL=" (which "bash")) + + ;; The compatibility mode is needed by some packages, + ;; notably iproute2. + "--enable-compat185")))) %standard-phases))) (synopsis "db, the Berkeley database") (description diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm new file mode 100644 index 0000000000..13bcd45f77 --- /dev/null +++ b/gnu/packages/gd.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages gd) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (gnu packages libpng) + #:use-module (gnu packages libjpeg) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages compression) + #:use-module ((guix licenses) #:select (bsd-style))) + +(define-public gd + (package + (name "gd") + + ;; Note: With libgd.org now pointing to bitbucket.org, genuine old + ;; tarballs are no longer available. Notably, versions 2.0.34 and .35 are + ;; missing. + (version "2.0.33") + + (source (origin + (method url-fetch) + (uri "https://bitbucket.org/libgd/gd-libgd/get/GD_2_0_33.tar.gz") + (sha256 + (base32 + "0yrbx8mj9pykyzm0zl1q86xlkdvkajcsf5jmg688vhw9yc5wmbbw")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-cons-after + 'unpack 'chdir + (lambda _ + (chdir "src")) + %standard-phases))) + (inputs + `(("freetype" ,freetype) + ("libpng" ,libpng) + ("zlib" ,zlib))) + (propagated-inputs + `(("fontconfig" ,fontconfig) + ("libjpeg" ,libjpeg))) + (home-page "http://www.libgd.org/") + (synopsis "Library for the dynamic creation of images by programmers") + (description + "GD is a library for the dynamic creation of images by programmers. GD +is written in C, and \"wrappers\" are available for Perl, PHP and other +languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other +formats. GD is commonly used to generate charts, graphics, thumbnails, and +most anything else, on the fly. While not restricted to use on the web, the +most common applications of GD involve website development.") + (license (bsd-style "file://COPYING" + "See COPYING file in the distribution.")))) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 04aac9d94e..dd6c576cdf 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -214,3 +214,23 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.") (license license:gpl2) (home-page "http://sourceforge.net/projects/gs-fonts/"))) +(define-public libspectre + (package + (name "libspectre") + (version "0.2.7") + (source (origin + (method url-fetch) + (uri (string-append "http://libspectre.freedesktop.org/releases/libspectre-" + version ".tar.gz")) + (sha256 (base32 + "1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8")))) + (build-system gnu-build-system) + (inputs `(("ghostscript" ,ghostscript) + ("pkg-config" ,pkg-config))) + (synopsis "postscript rendering library") + (description + "libspectre is a small library for rendering Postscript documents. +It provides a convenient easy to use API for handling and rendering +Postscript documents.") + (license license:gpl2+) + (home-page "http://www.freedesktop.org/wiki/Software/libspectre"))) diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm new file mode 100644 index 0000000000..d49b3d07dc --- /dev/null +++ b/gnu/packages/graphviz.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages graphviz) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (gnu packages xorg) + #:use-module (gnu packages gtk) + #:use-module (gnu packages xml) + #:use-module (gnu packages glib) + #:use-module (gnu packages bison) + #:use-module (gnu packages libpng) + #:use-module (gnu packages libjpeg) + #:use-module (gnu packages autotools) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages compression) + #:use-module (gnu packages gd) + #:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0))) + +(define-public graphviz + (package + (name "graphviz") + (version "2.28.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-" + version + ".tar.gz")) + (sha256 + (base32 + "0xpwg99cd8sp0c6r8klsmc66h1pday64kmnr4v6f9jkqqmrpkank")))) + (build-system gnu-build-system) + (arguments + ;; FIXME: rtest/rtest.sh is a ksh script (!). Add ksh as an input. + '(#:tests? #f + + #:phases (alist-cons-before + 'build 'pre-build + (lambda _ + ;; Work around bogus makefile when using an external + ;; libltdl. Failing to do so, one hits this error: + ;; "No rule to make target `-lltdl', needed by `libgvc.la'." + (substitute* "lib/gvc/Makefile" + (("am__append_5 *=.*") + "am_append_5 =\n"))) + %standard-phases))) + (inputs + `(("libXrender" ,libxrender) + ("libX11" ,libx11) + ("gts" ,gts) + ("gd" ,gd) ; FIXME: Our GD is too old + ("pango" ,pango) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("libltdl" ,libtool) + ("bison" ,bison) + ("libXaw" ,libxaw) + ("expat" ,expat) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("pkg-config" ,pkg-config))) + (home-page "http://www.graphviz.org/") + (synopsis "Graph visualization software") + (description + "Graphviz is a graph visualization tool suite. Graph visualization is a +way of representing structural information as diagrams of abstract graphs and +networks. It has important applications in networking, bioinformatics, +software engineering, database and web design, machine learning, and in visual +interfaces for other technical domains.") + (license epl1.0))) + +(define-public gts + (package + (name "gts") + (version "0.7.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gts/gts-" + version ".tar.gz")) + (sha256 + (base32 + "07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705")))) + (build-system gnu-build-system) + (arguments + '(#:phases (alist-cons-before + 'check 'pre-check + (lambda _ + (chmod "test/boolean/test.sh" #o777)) + %standard-phases) + + ;; Some data files used by the test suite are missing. + ;; See <http://sourceforge.net/p/gts/bugs/41/>. + #:tests? #f)) + (inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + ;; The gts.pc file has glib-2.0 as required. + `(("glib" ,glib))) + (home-page "http://gts.sourceforge.net/") + + ;; Note: Despite the name, this is not official GNU software. + (synopsis "Triangulated Surface Library") + (description + "Library intended to provide a set of useful functions to deal with +3D surfaces meshed with interconnected triangles.") + (license lgpl2.0+))) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 5dfe20f523..38ad05e074 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -22,8 +22,16 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (gnu packages compression) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages libpng) + #:use-module (gnu packages pdf) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages xorg)) (define-public atk (package @@ -46,3 +54,102 @@ by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications.") (license license:lgpl2.0+) (home-page "https://developer.gnome.org/atk/"))) + +(define-public cairo + (package + (name "cairo") + (version "1.12.14") + (source (origin + (method url-fetch) + (uri (string-append "http://cairographics.org/releases/cairo-" + version ".tar.xz")) + (sha256 + (base32 + "04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n")))) + (build-system gnu-build-system) + (propagated-inputs + `(("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glib" ,glib) + ("libpng" ,libpng) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxrender" ,libxrender) + ("pixman" ,pixman))) + (inputs + `(("ghostscript" ,ghostscript) + ("libspectre" ,libspectre) + ("pkg-config" ,pkg-config) + ("poppler" ,poppler) + ("python" ,python) + ("xextproto" ,xextproto) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f)) ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html + (synopsis "2D graphics library") + (description + "Cairo is a 2D graphics library with support for multiple output devices. +Currently supported output targets include the X Window System (via both +Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file +output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB. + +Cairo is designed to produce consistent output on all output media while +taking advantage of display hardware acceleration when available +eg. through the X Render Extension). + +The cairo API provides operations similar to the drawing operators of +PostScript and PDF. Operations in cairo including stroking and filling cubic +Bézier splines, transforming and compositing translucent images, and +antialiased text rendering. All drawing operations can be transformed by any +affine transformation (scale, rotation, shear, etc.)") + (license license:lgpl2.1) ; or Mozilla Public License 1.1 + (home-page "http://cairographics.org/"))) + +(define-public harfbuzz + (package + (name "harfbuzz") + (version "0.9.18") + (source (origin + (method url-fetch) + (uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-" + version ".tar.bz2")) + (sha256 + (base32 + "026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y")))) + (build-system gnu-build-system) + (inputs + `(("cairo" ,cairo) + ("icu4c" ,icu4c) + ("pkg-config" ,pkg-config) + ("python" ,python))) + (synopsis "opentype text shaping engine") + (description + "HarfBuzz is an OpenType text shaping engine.") + (license (license:x11-style "file://COPYING" + "See 'COPYING' in the distribution.")) + (home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/"))) + +(define-public pango + (package + (name "pango") + (version "1.34.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/pango/1.34/pango-" + version ".tar.xz")) + (sha256 + (base32 + "0k7662qix7zzh7mf6ikdj594n8jpbfm25z8swz64zbm86kgk1shs")))) + (build-system gnu-build-system) + (inputs + `(("cairo" ,cairo) + ("harfbuzz" ,harfbuzz) + ("pkg-config" ,pkg-config) + ("zlib" ,zlib))) + (synopsis "GNOME text and font handling library") + (description + "Pango is the core text and font handling library used in GNOME +applications. It has extensive support for the different writing systems +used throughout the world.") + (license license:lgpl2.0+) + (home-page "https://developer.gnome.org/pango/"))) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm new file mode 100644 index 0000000000..e408b13fa3 --- /dev/null +++ b/gnu/packages/imagemagick.scm @@ -0,0 +1,92 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages imagemagick) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module ((guix licenses) #:select (fsf-free)) + #:use-module (gnu packages libjpeg) + #:use-module (gnu packages compression) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages xorg) + #:use-module (gnu packages xml) + #:use-module (gnu packages gtk) + #:use-module (gnu packages libpng) + #:use-module (gnu packages libtiff) + #:use-module (gnu packages libjpeg) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages pkg-config)) + +(define-public imagemagick + (package + (name "imagemagick") + (version "6.8.6-0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://imagemagick/ImageMagick-" + version ".tar.xz")) + (sha256 + (base32 + "1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv")))) + (build-system gnu-build-system) + (arguments + `(#:phases (alist-cons-before + 'build 'pre-build + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile" + ;; Clear the `LIBRARY_PATH' setting, which otherwise + ;; interferes with our own use. + (("^LIBRARY_PATH[[:blank:]]*=.*$") + "") + + ;; Since the Makefile overrides $docdir, modify it to + ;; refer to what we want. + (("^DOCUMENTATION_PATH[[:blank:]]*=.*$") + (let ((doc (assoc-ref outputs "doc"))) + (string-append "DOCUMENTATION_PATH = " + doc "/share/doc/" + ,name "-" ,version "\n"))))) + %standard-phases))) + ;; TODO: Add Jasper, LCMS, etc. + (inputs `(("graphviz" ,graphviz) + ("ghostscript" ,ghostscript) + ("libx11" ,libx11) + ("zlib" ,zlib) + ("libxml2" ,libxml2) + ("libtiff" ,libtiff) + ("libpng" ,libpng) + ("libjpeg" ,libjpeg-8) + ("pango" ,pango) + ("freetype" ,freetype) + ("bzip2" ,bzip2) + ("xz" ,xz) + ("pkg-config" ,pkg-config))) + (outputs '("out" + "doc")) ; 26 MiB of HTML documentation + (home-page "http://www.imagemagick.org/") + (synopsis "Create, edit, compose, or convert bitmap images") + (description + "ImageMagick® is a software suite to create, edit, compose, or convert +bitmap images. It can read and write images in a variety of formats (over 100) +including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, +and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and +transform images, adjust image colors, apply various special effects, or draw +text, lines, polygons, ellipses and Bézier curves.") + (license (fsf-free "http://www.imagemagick.org/script/license.php")))) diff --git a/gnu/packages/libpng.scm b/gnu/packages/libpng.scm index 06facc9a9a..32f38194e4 100644 --- a/gnu/packages/libpng.scm +++ b/gnu/packages/libpng.scm @@ -37,7 +37,10 @@ (sha256 (base32 "0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l")))) (build-system gnu-build-system) - (inputs `(("zlib" ,zlib))) + + ;; libpng.la says "-lz", so propagate it. + (propagated-inputs `(("zlib" ,zlib))) + (synopsis "Libpng, a library for handling PNG files") (description "Libpng is the official PNG (Portable Network Graphics) reference diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0708b5cb81..0bc9fbcb5e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -23,8 +23,10 @@ #:use-module ((gnu packages compression) #:renamer (symbol-prefix-proc 'guix:)) #:use-module (gnu packages flex) + #:use-module (gnu packages bison) #:use-module (gnu packages libusb) #:use-module (gnu packages ncurses) + #:use-module (gnu packages bdb) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (guix packages) @@ -78,12 +80,18 @@ (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) - (srfi srfi-1)) + (srfi srfi-1) + ,@(if (%current-target-system) + '((guix build gnu-cross-build)) + '())) #:phases (alist-replace 'build ,(build-phase (%current-system)) (alist-replace 'install ,install-phase - (alist-delete 'configure %standard-phases))) + (alist-delete 'configure + ,(if (%current-target-system) + '%standard-cross-phases + '%standard-phases)))) #:tests? #f)) (synopsis "GNU Linux-Libre kernel headers") (description "Headers of the Linux-Libre kernel.") @@ -449,3 +457,88 @@ trace of all the system calls made by a another process/program.") "The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux-based operating system.") (license lgpl2.1+))) + +(define-public iptables + (package + (name "iptables") + (version "1.4.16.2") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.netfilter.org/projects/iptables/files/iptables-" + version ".tar.bz2")) + (sha256 + (base32 + "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24")))) + (build-system gnu-build-system) + (arguments '(#:tests? #f)) ; no test suite + (home-page "http://www.netfilter.org/projects/iptables/index.html") + (synopsis "Program to configure the Linux IP packet filtering rules") + (description + "iptables is the userspace command line program used to configure the +Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards +system administrators. Since Network Address Translation is also configured +from the packet filter ruleset, iptables is used for this, too. The iptables +package also includes ip6tables. ip6tables is used for configuring the IPv6 +packet filter.") + (license gpl2+))) + +(define-public iproute + (package + (name "iproute2") + (version "3.8.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/utils/net/iproute2/iproute2-" + version ".tar.xz")) + (sha256 + (base32 + "0kqy30wz2krbg4y7750hjq5218hgy2vj9pm5qzkn1bqskxs4b4ap")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no test suite + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "DESTDIR=" + (string-append "LIBDIR=" out "/lib") + (string-append "SBINDIR=" out "/sbin") + (string-append "CONFDIR=" out "/etc") + (string-append "DOCDIR=" out "/share/doc/" + ,name "-" ,version) + (string-append "MANDIR=" out "/share/man"))) + #:phases (alist-cons-before + 'install 'pre-install + (lambda _ + ;; Don't attempt to create /var/lib/arpd. + (substitute* "Makefile" + (("^.*ARPDDIR.*$") ""))) + %standard-phases))) + (inputs + `(("iptables" ,iptables) + ("db4" ,bdb) + ("pkg-config" ,pkg-config) + ("flex" ,flex) + ("bison" ,bison))) + (home-page + "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2") + (synopsis + "A collection of utilities for controlling TCP/IP networking and traffic control in Linux") + (description + "Iproute2 is a collection of utilities for controlling TCP/IP +networking and traffic with the Linux kernel. + +Most network configuration manuals still refer to ifconfig and route as the +primary network configuration tools, but ifconfig is known to behave +inadequately in modern network environments. They should be deprecated, but +most distros still include them. Most network configuration systems make use +of ifconfig and thus provide a limited feature set. The /etc/net project aims +to support most modern network technologies, as it doesn't use ifconfig and +allows a system administrator to make use of all iproute2 features, including +traffic control. + +iproute2 is usually shipped in a package called iproute or iproute2 and +consists of several tools, of which the most important are ip and tc. ip +controls IPv4 and IPv6 configuration and tc stands for traffic control. Both +tools print detailed usage messages and are accompanied by a set of +manpages.") + (license gpl2+))) diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index b927d5db25..c8de969b1a 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -49,33 +49,39 @@ ;;; ;;; Code: -(define %glibc-for-bootstrap - ;; A libc whose `system' and `popen' functions looks for `sh' in $PATH, - ;; without nscd, and with static NSS modules. - (package (inherit glibc-final) +(define* (glibc-for-bootstrap #:optional (base glibc-final)) + "Return a libc deriving from BASE whose `system' and `popen' functions looks +for `sh' in $PATH, and without nscd, and with static NSS modules." + (package (inherit base) (arguments - (substitute-keyword-arguments (package-arguments glibc-final) + (substitute-keyword-arguments (package-arguments base) ((#:patches patches) - `(cons (assoc-ref %build-inputs "patch/system") ,patches)) + `(cons (assoc-ref %build-inputs "patch/system") ,patches)) ((#:configure-flags flags) - ;; Arrange so that getaddrinfo & co. do not contact the nscd, - ;; and can use statically-linked NSS modules. - `(cons* "--disable-nscd" "--disable-build-nscd" - "--enable-static-nss" - ,flags)))) + ;; Arrange so that getaddrinfo & co. do not contact the nscd, + ;; and can use statically-linked NSS modules. + `(cons* "--disable-nscd" "--disable-build-nscd" + "--enable-static-nss" + ,flags)))) (inputs `(("patch/system" ,(search-patch "glibc-bootstrap-system.patch")) - ,@(package-inputs glibc-final))))) - -(define %standard-inputs-with-relocatable-glibc - ;; Standard inputs with the above libc and corresponding GCC. - `(("libc", %glibc-for-bootstrap) - ("gcc" ,(package-with-explicit-inputs - gcc-4.7 - `(("libc",%glibc-for-bootstrap) - ,@(alist-delete "libc" %final-inputs)) - (current-source-location))) - ,@(fold alist-delete %final-inputs '("libc" "gcc")))) + ,@(package-inputs base))))) + +(define (package-with-relocatable-glibc p) + "Return a variant of P that uses the libc as defined by +`glibc-for-bootstrap'." + + (define inputs + `(("libc", (glibc-for-bootstrap)) + ("gcc" ,(package-with-explicit-inputs + gcc-4.7 + `(("libc",(glibc-for-bootstrap)) + ,@(alist-delete "libc" %final-inputs)) + (current-source-location))) + ,@(fold alist-delete %final-inputs '("libc" "gcc")))) + + (package-with-explicit-inputs p inputs + (current-source-location))) (define %bash-static (static-package bash-light)) @@ -83,18 +89,22 @@ (define %static-inputs ;; Packages that are to be used as %BOOTSTRAP-INPUTS. (let ((coreutils (package (inherit coreutils) - (arguments - `(#:configure-flags - '("--disable-nls" - "--disable-silent-rules" - "--enable-no-install-program=stdbuf,libstdbuf.so" - "CFLAGS=-Os -g0" ; smaller, please - "LDFLAGS=-static -pthread") - #:tests? #f ; signal-related Gnulib tests fail - ,@(package-arguments coreutils))) - - ;; Remove optional dependencies such as GMP. - (inputs `(,(assoc "perl" (package-inputs coreutils)))))) + (arguments + `(#:configure-flags + '("--disable-nls" + "--disable-silent-rules" + "--enable-no-install-program=stdbuf,libstdbuf.so" + "CFLAGS=-Os -g0" ; smaller, please + "LDFLAGS=-static -pthread") + #:tests? #f ; signal-related Gnulib tests fail + ,@(package-arguments coreutils))) + + ;; Remove optional dependencies such as GMP. Keep Perl + ;; except if it's missing (which is the case when + ;; cross-compiling). + (inputs (match (assoc "perl" (package-inputs coreutils)) + (#f '()) + (x (list x)))))) (bzip2 (package (inherit bzip2) (arguments (substitute-keyword-arguments (package-arguments bzip2) @@ -131,11 +141,8 @@ (("-export-dynamic") ""))) ,phases))))) (inputs `(("patch/sh" ,(search-patch "gawk-shell.patch")))))) - (finalize (lambda (p) - (static-package (package-with-explicit-inputs - p - %standard-inputs-with-relocatable-glibc) - (current-source-location))))) + (finalize (compose static-package + package-with-relocatable-glibc))) `(,@(map (match-lambda ((name package) (list name (finalize package)))) @@ -280,7 +287,7 @@ ;; GNU libc's essential shared libraries, dynamic linker, and headers, ;; with all references to store directories stripped. As a result, ;; libc.so is unusable and need to be patched for proper relocation. - (let ((glibc %glibc-for-bootstrap)) + (let ((glibc (glibc-for-bootstrap))) (package (inherit glibc) (name "glibc-stripped") (build-system trivial-build-system) @@ -331,7 +338,7 @@ (define %gcc-static ;; A statically-linked GCC, with stripped-down functionality. - (package-with-explicit-inputs + (package-with-relocatable-glibc (package (inherit gcc-final) (name "gcc-static") (arguments @@ -358,11 +365,10 @@ ((#:make-flags flags) `(cons "BOOT_LDFLAGS=-static" ,flags))))) (inputs `(("gmp-source" ,(package-source gmp)) - ("mpfr-source" ,(package-source mpfr)) - ("mpc-source" ,(package-source mpc)) - ("binutils" ,binutils-final) - ,@(package-inputs gcc-4.7)))) - %standard-inputs-with-relocatable-glibc)) + ("mpfr-source" ,(package-source mpfr)) + ("mpc-source" ,(package-source mpc)) + ("binutils" ,binutils-final) + ,@(package-inputs gcc-4.7)))))) (define %gcc-stripped ;; The subset of GCC files needed for bootstrap. @@ -405,54 +411,52 @@ ;; .scm and .go files relative to its installation directory, rather ;; than in hard-coded configure-time paths. (let* ((guile (package (inherit guile-2.0) - (name (string-append (package-name guile-2.0) "-static")) - (inputs - `(("patch/relocatable" - ,(search-patch "guile-relocatable.patch")) - ("patch/utf8" - ,(search-patch "guile-default-utf8.patch")) - ("patch/syscalls" - ,(search-patch "guile-linux-syscalls.patch")) - ,@(package-inputs guile-2.0))) - (propagated-inputs - `(("bdw-gc" ,libgc) - ,@(alist-delete "bdw-gc" - (package-propagated-inputs guile-2.0)))) - (arguments - `(;; When `configure' checks for ltdl availability, it - ;; doesn't try to link using libtool, and thus fails - ;; because of a missing -ldl. Work around that. - #:configure-flags '("LDFLAGS=-ldl") - - #:phases (alist-cons-before - 'configure 'static-guile - (lambda _ - (substitute* "libguile/Makefile.in" - ;; Create a statically-linked `guile' - ;; executable. - (("^guile_LDFLAGS =") - "guile_LDFLAGS = -all-static") - - ;; Add `-ldl' *after* libguile-2.0.la. - (("^guile_LDADD =(.*)$" _ ldadd) - (string-append "guile_LDADD = " - (string-trim-right ldadd) - " -ldl\n")))) - %standard-phases) - - ;; Allow Guile to be relocated, as is needed during - ;; bootstrap. - #:patches - (list (assoc-ref %build-inputs "patch/relocatable") - (assoc-ref %build-inputs "patch/utf8") - (assoc-ref %build-inputs "patch/syscalls")) - - ;; There are uses of `dynamic-link' in - ;; {foreign,coverage}.test that don't fly here. - #:tests? #f))))) - (package-with-explicit-inputs (static-package guile) - %standard-inputs-with-relocatable-glibc - (current-source-location)))) + (name (string-append (package-name guile-2.0) "-static")) + (inputs + `(("patch/relocatable" + ,(search-patch "guile-relocatable.patch")) + ("patch/utf8" + ,(search-patch "guile-default-utf8.patch")) + ("patch/syscalls" + ,(search-patch "guile-linux-syscalls.patch")) + ,@(package-inputs guile-2.0))) + (propagated-inputs + `(("bdw-gc" ,libgc) + ,@(alist-delete "bdw-gc" + (package-propagated-inputs guile-2.0)))) + (arguments + `(;; When `configure' checks for ltdl availability, it + ;; doesn't try to link using libtool, and thus fails + ;; because of a missing -ldl. Work around that. + #:configure-flags '("LDFLAGS=-ldl") + + #:phases (alist-cons-before + 'configure 'static-guile + (lambda _ + (substitute* "libguile/Makefile.in" + ;; Create a statically-linked `guile' + ;; executable. + (("^guile_LDFLAGS =") + "guile_LDFLAGS = -all-static") + + ;; Add `-ldl' *after* libguile-2.0.la. + (("^guile_LDADD =(.*)$" _ ldadd) + (string-append "guile_LDADD = " + (string-trim-right ldadd) + " -ldl\n")))) + %standard-phases) + + ;; Allow Guile to be relocated, as is needed during + ;; bootstrap. + #:patches + (list (assoc-ref %build-inputs "patch/relocatable") + (assoc-ref %build-inputs "patch/utf8") + (assoc-ref %build-inputs "patch/syscalls")) + + ;; There are uses of `dynamic-link' in + ;; {foreign,coverage}.test that don't fly here. + #:tests? #f))))) + (package-with-relocatable-glibc (static-package guile)))) (define %guile-static-stripped ;; A stripped static Guile binary, for use during bootstrap. diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm index 9f10440fec..eb5f748bda 100644 --- a/gnu/packages/pkg-config.scm +++ b/gnu/packages/pkg-config.scm @@ -24,7 +24,10 @@ #:use-module (guix build-system trivial) #:export (pkg-config)) -(define %pkg-config +;; This is the "primitive" pkg-config package. People should use `pkg-config' +;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that +;; `fold-packages' finds it. +(define-public %pkg-config (package (name "pkg-config") (version "0.27.1") diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index c79a709ecd..1e66750b01 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -31,6 +31,10 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages avahi) #:use-module (gnu packages libphidget) + #:use-module (gnu packages glib) + #:use-module (gnu packages libffi) + #:use-module (gnu packages libjpeg) + #:use-module ((gnu packages gtk) #:select (cairo pango)) #:use-module (ice-9 match)) (define-public mit-scheme @@ -319,3 +323,72 @@ implementation techniques and as an expository tool.") ;; Most files are BSD-3; see COPYING for the few exceptions. (license bsd-3))) + +(define-public racket + (package + (name "racket") + (version "5.3.4") + (source (origin + (method url-fetch) + (uri (list (string-append "http://download.racket-lang.org/installers/" + version "/racket/racket-" version + "-src-unix.tgz") + (string-append + "http://mirror.informatik.uni-tuebingen.de/mirror/racket/" + version "/racket/racket-" version "-src-unix.tgz"))) + (sha256 + ;; XXX: Used to be 1xhnx3yd74zrvn6sfcqmk57kxj51cwvm660dwiaxr1qxnm5lq0v7. + (base32 "0yrdmpdvzf092869y6zjjjxl6j2kypgiv7qrfkv7lj8w01pbh7sd")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (let* ((gui-libs + (lambda (inputs) + ;; FIXME: Add GTK+ and GDK for DrRacket. + (let ((glib (string-append (assoc-ref inputs "glib") "/lib")) + (cairo (string-append (assoc-ref inputs "cairo") "/lib")) + (pango (string-append (assoc-ref inputs "pango") "/lib")) + (libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib"))) + (list glib cairo pango libjpeg))))) + (alist-cons-before + 'configure 'pre-configure + (lambda* (#:key inputs #:allow-other-keys) + (chdir "src") + + ;; The GUI libs are dynamically opened through the FFI, so they + ;; must be in the loader's search path. + (setenv "LD_LIBRARY_PATH" (string-join (gui-libs inputs) ":"))) + (alist-cons-after + 'unpack 'patch-/bin/sh + (lambda _ + (substitute* "collects/racket/system.rkt" + (("/bin/sh") (which "sh")))) + (alist-cons-after + 'install 'wrap-programs + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (define (wrap prog) + (wrap-program prog + `("LD_LIBRARY_PATH" ":" prefix + ,(gui-libs inputs)))) + + (with-directory-excursion (string-append out "/bin") + (for-each wrap + (list "gracket" "drracket" "slideshow" "mred")) + #t))) + %standard-phases)))) + #:tests? #f ; XXX: how to run them? + )) + (inputs `(("libffi" ,libffi) + ("glib" ,glib) ; for DrRacket + ("cairo" ,cairo) + ("pango" ,pango) + ("libjpeg" ,libjpeg-8))) + (home-page "http://racket-lang.org") + (synopsis "Implementation of Scheme and related languages") + (description + "Racket is an implementation of the Scheme programming language (R5RS and +R6RS) and related languages, such as Typed Racket. It features a compiler and +a virtual machine with just-in-time native compilation, as well as a large set +of libraries.") + (license lgpl2.0+))) diff --git a/gnu/packages/subversion.scm b/gnu/packages/subversion.scm deleted file mode 100644 index 28ddc42e00..0000000000 --- a/gnu/packages/subversion.scm +++ /dev/null @@ -1,58 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages subversion) - #:use-module ((guix licenses) #:select (asl2.0)) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages) - #:use-module (gnu packages compression) - #:use-module (gnu packages libapr) - #:use-module (gnu packages perl) - #:use-module (gnu packages python) - #:use-module (gnu packages sqlite)) - -(define-public subversion - (package - (name "subversion") - (version "1.7.8") - (source (origin - (method url-fetch) - (uri (string-append "https://archive.apache.org/dist/subversion/subversion-" - version ".tar.bz2")) - (sha256 - (base32 - "11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw")))) - (build-system gnu-build-system) - (inputs - `(("libapr" ,libapr) - ("libaprutil" ,libaprutil) - ("perl" ,perl) - ("python" ,python) - ("sqlite" ,sqlite) - ("zlib" ,zlib))) - (home-page "http://subversion.apache.org/") - (synopsis "Subversion, a revision control system") - (description - "Subversion exists to be universally recognized and adopted as an -open-source, centralized version control system characterized by its -reliability as a safe haven for valuable data; the simplicity of its model and -usage; and its ability to support the needs of a wide variety of users and -projects, from individuals to large-scale enterprise operations.") - (license asl2.0))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 6654be93b2..018cf1b9f8 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,7 +18,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages version-control) - #:use-module ((guix licenses) #:select (gpl1+ gpl2+ gpl3+)) + #:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -25,7 +26,11 @@ #:use-module (guix build utils) #:use-module ((gnu packages gettext) #:renamer (symbol-prefix-proc 'guix:)) + #:use-module (gnu packages libapr) #:use-module (gnu packages nano) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages sqlite) #:use-module (gnu packages compression)) (define-public bazaar @@ -56,6 +61,35 @@ organize their workspace in whichever way they want. It is possible to work from a command line or use a GUI application.") (license gpl2+))) +(define-public subversion + (package + (name "subversion") + (version "1.7.8") + (source (origin + (method url-fetch) + (uri (string-append "https://archive.apache.org/dist/subversion/subversion-" + version ".tar.bz2")) + (sha256 + (base32 + "11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw")))) + (build-system gnu-build-system) + (inputs + `(("libapr" ,libapr) + ("libaprutil" ,libaprutil) + ("perl" ,perl) + ("python" ,python) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (home-page "http://subversion.apache.org/") + (synopsis "Subversion, a revision control system") + (description + "Subversion exists to be universally recognized and adopted as an +open-source, centralized version control system characterized by its +reliability as a safe haven for valuable data; the simplicity of its model and +usage; and its ability to support the needs of a wide variety of users and +projects, from individuals to large-scale enterprise operations.") + (license asl2.0))) + (define-public rcs (package (name "rcs") |