diff options
Diffstat (limited to 'gnu')
74 files changed, 2801 insertions, 821 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index dfbf20d56f..6998996523 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -49,7 +49,8 @@ (sha256 (base32 "07mddw0p62fcphwjzgb6rfa0pjz5sy6jzbha0sm2vc3rqf459jxg")) - (patches (list (search-patch "dmd-getpw.patch"))))) + (patches (list (search-patch "dmd-getpw.patch") + (search-patch "dmd-tests-longer-sleeps.patch"))))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--localstatedir=/var"))) @@ -349,14 +350,14 @@ connection alive.") (define-public isc-dhcp (package (name "isc-dhcp") - (version "4.3.0a1") + (version "4.3.0") (source (origin (method url-fetch) (uri (string-append "http://ftp.isc.org/isc/dhcp/" version "/dhcp-" version ".tar.gz")) (sha256 (base32 - "0001n26m4488nl95h53wg60sywbli4d246vz2h8lpv70jlrq9q1p")))) + "12mydvj6x3zcl3gla06bywfkkrgg03g66fijs94mwb7kbiym3dm7")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after @@ -383,9 +384,9 @@ connection alive.") (system* "tar" "xf" "bind.tar.gz") (for-each patch-shebang - (find-files "bind-9.9.5b1" ".*")) + (find-files "bind-9.9.5" ".*")) (zero? (system* "tar" "cf" "bind.tar.gz" - "bind-9.9.5b1")))) + "bind-9.9.5")))) (alist-cons-after 'install 'post-install (lambda* (#:key inputs outputs #:allow-other-keys) diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm index a2ef71f37f..17da73bd92 100644 --- a/gnu/packages/apl.scm +++ b/gnu/packages/apl.scm @@ -28,14 +28,14 @@ (define-public apl (package (name "apl") - (version "1.1") + (version "1.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz")) (sha256 (base32 - "1myinxa0m3y4fanpxflfakfk3m1s8641wdlbwbs0vg5yp10xm0m3")))) + "0v9jn4hrg4w3hyw4lsj8cys9aqsmrc1x4k0g5f67psgzgd45a4xb")))) (build-system gnu-build-system) (home-page "http://www.gnu.org/software/apl/") (inputs diff --git a/gnu/packages/asciidoc.scm b/gnu/packages/asciidoc.scm new file mode 100644 index 0000000000..5bc5cfa7f9 --- /dev/null +++ b/gnu/packages/asciidoc.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 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 asciidoc) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (gnu packages python) + #:use-module (guix build-system gnu) + #:autoload (gnu packages zip) (unzip)) + +(define-public asciidoc + (package + (name "asciidoc") + (version "8.6.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/asciidoc/asciidoc-" + version ".tar.gz")) + (sha256 + (base32 + "1w71nk527lq504njmaf0vzr93pgahkgzzxzglrq6bay8cw2rvnvq")))) + (build-system gnu-build-system) + (arguments '(#:tests? #f)) ; no 'check' target + (inputs `(("python" ,python-2))) + (home-page "http://www.methods.co.nz/asciidoc/") + (synopsis "Text-based document generation system") + (description + "AsciiDoc is a text document format for writing notes, documentation, +articles, books, ebooks, slideshows, web pages, man pages and blogs. +AsciiDoc files can be translated to many formats including HTML, PDF, +EPUB, man page. + +AsciiDoc is highly configurable: both the AsciiDoc source file syntax and +the backend output markups (which can be almost any type of SGML/XML +markup) can be customized and extended by the user.") + (license gpl2+))) diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm new file mode 100644 index 0000000000..73b377e384 --- /dev/null +++ b/gnu/packages/boost.scm @@ -0,0 +1,89 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 John Darrington <jmd@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 boost) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages python) + #:use-module (gnu packages tcsh) + #:use-module (gnu packages perl)) + +(define-public boost + (package + (name "boost") + (version "1.55.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/boost/boost_" + (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version) + ".tar.bz2")) + (sha256 + (base32 + "0lkv5dzssbl5fmh2nkaszi8x9qbj80pr4acf9i26sj3rvlih1w7z")))) + (build-system gnu-build-system) + (native-inputs + `(("perl" ,perl) + ("python" ,python-2) + ("tcsh" ,tcsh))) + (arguments + `(#:phases + (alist-replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* '("libs/config/configure" + "libs/spirit/classic/phoenix/test/runtest.sh" + "tools/build/v2/doc/bjam.qbk" + "tools/build/v2/engine/execunix.c" + "tools/build/v2/engine/Jambase" + "tools/build/v2/engine/jambase.c") + (("/bin/sh") (which "sh"))) + + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + + (zero? (system* "./bootstrap.sh" + (string-append "--prefix=" out) + "--with-toolset=gcc")))) + (alist-replace + 'build + (lambda _ + (zero? (system* "./b2" "threading=multi" "link=shared"))) + + (alist-replace + 'check + (lambda _ #t) + + (alist-replace + 'install + (lambda _ + (zero? (system* "./b2" "install" "threading=multi" "link=shared"))) + %standard-phases)))))) + + (home-page "http://boost.org") + (synopsis "Peer-reviewed portable C++ source libraries") + (description + "A collection of libraries intended to be widely useful, and usable +across a broad spectrum of applications.") + (license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt" + "Some components have other similar licences.")))) diff --git a/gnu/packages/calcurse.scm b/gnu/packages/calcurse.scm new file mode 100644 index 0000000000..84dab0c53c --- /dev/null +++ b/gnu/packages/calcurse.scm @@ -0,0 +1,49 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.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 autogen) + #:use-module (guix packages) + #:use-module (guix licenses) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages ncurses)) + +(define-public calcurse + (package + (name "calcurse") + (version "3.1.4") + (source + (origin + (method url-fetch) + (uri (string-append "http://calcurse.org/files/calcurse-" + version ".tar.gz")) + (sha256 + (base32 + "1qwhffwhfg7bjxrviwlcrhnfw0976d39da8kfspq6dgd9nqv68a1")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses))) + (home-page "http://www.calcurse.org") + (synopsis "Text-based calendar and scheduling") + (description + "Calcurse is a text-based calendar and scheduling application. It helps +keep track of events, appointments and everyday tasks. A configurable +notification system reminds user of upcoming deadlines, and the curses based +interface can be customized to suit user needs. All of the commands are +documented within an online help system.") + (license bsd-2))) diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 7072ed3878..7309da61e6 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -22,6 +22,7 @@ #: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 gnutls) #:use-module (gnu packages groff) @@ -30,19 +31,24 @@ #:use-module (gnu packages openldap) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages ssh)) (define-public curl (package (name "curl") - (version "7.28.1") + (version "7.35.0") (source (origin (method url-fetch) (uri (string-append "http://curl.haxx.se/download/curl-" version ".tar.lzma")) (sha256 (base32 - "13bhfs41yf60ys2hrikqxjwfzaj0gm91kqzsgc5fr4grzmpm38nx")))) + "14w5cwh6b1426lxkq6kp6h4vxryr4n7wfrrwhny1r4123q7n8ab9")) + (patches + ;; This patch fixes testcase 172 which uses a hardcoded cookie + ;; expiration value which is expired as of Feb 1, 2014. + (list (search-patch "curl-fix-test172.patch"))))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) ("gss" ,gss) @@ -54,9 +60,18 @@ `(("perl" ,perl) ;; to enable the --manual option and make test 1026 pass ("groff" ,groff) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) (arguments - `(#:configure-flags '("--with-gnutls" "--with-gssapi"))) + `(#:configure-flags '("--with-gnutls" "--with-gssapi") + ;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl + #:phases + (alist-cons-before + 'check 'patch-runtests + (lambda _ + (substitute* "tests/runtests.pl" + (("/bin/sh") (which "sh")))) + %standard-phases))) (synopsis "curl, command line tool for transferring data with URL syntax") (description "curl is a command line tool for transferring data with URL syntax, diff --git a/gnu/packages/dc.scm b/gnu/packages/dc.scm index 75ed5f4af7..0cb7c5b4f0 100644 --- a/gnu/packages/dc.scm +++ b/gnu/packages/dc.scm @@ -28,19 +28,19 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) - #:renamer (symbol-prefix-proc 'license:))) + #:renamer (symbol-prefix-proc 'license:))) (define-public ncdc (package (name "ncdc") - (version "1.18.1") + (version "1.19") (source (origin (method url-fetch) (uri (string-append "http://dev.yorhel.nl/download/ncdc-" version - ".tar.gz")) + ".tar.gz")) (sha256 (base32 - "11c6z9c3vv2vg01q02r53m28q3cx6x66j1l63f1mbk1crlqpf9fc")))) + "1wgvqwfxq9kc729h2r528n55821w87sfbm4h21mr6pvkpfw30hf2")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 1df9956f87..45714be70e 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -21,6 +21,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+)) + #:use-module (gnu packages) #:use-module (gnu packages m4) #:use-module (gnu packages compression)) @@ -92,7 +93,8 @@ "/patchelf-" version ".tar.bz2")) (sha256 (base32 - "00bw29vdsscsili65wcb5ay0gvg1w0ljd00sb5xc6br8bylpyzpw")))) + "00bw29vdsscsili65wcb5ay0gvg1w0ljd00sb5xc6br8bylpyzpw")) + (patches (list (search-patch "patchelf-page-size.patch"))))) (build-system gnu-build-system) (home-page "http://nixos.org/patchelf.html") (synopsis "Modify the dynamic linker and RPATH of ELF executables") diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index cecfd6025d..87c4e894c5 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -33,6 +33,8 @@ #:use-module (gnu packages libjpeg) #:use-module (gnu packages libtiff) #:use-module (gnu packages libpng) + #:use-module (gnu packages giflib) + #:use-module (gnu packages linux) #:use-module ((gnu packages compression) #:renamer (symbol-prefix-proc 'compression:)) #:use-module (gnu packages xml) @@ -54,8 +56,7 @@ (arguments '(#:configure-flags (list (string-append "--with-crt-dir=" (assoc-ref %build-inputs "libc") - "/lib") - "--with-gif=no") ; XXX: add libungif + "/lib")) #:phases (alist-cons-before 'configure 'fix-/bin/pwd (lambda _ @@ -73,7 +74,7 @@ ("gtk+" ,gtk+-2) ("libXft" ,libxft) ("libtiff" ,libtiff) - ;; ("libungif" ,libungif) + ("giflib" ,giflib) ("libjpeg" ,libjpeg-8) ;; When looking for libpng `configure' links with `-lpng -lz', so we @@ -83,6 +84,9 @@ ("libXpm" ,libxpm) ("libxml2" ,libxml2) + ("libice" ,libice) + ("libsm" ,libsm) + ("alsa-lib" ,alsa-lib) ("dbus" ,dbus))) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 63a9df4a9a..707d03ffd9 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -26,13 +26,13 @@ (define-public file (package (name "file") - (version "5.12") + (version "5.16") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.astron.com/pub/file/file-" version ".tar.gz")) (sha256 (base32 - "08ix4xrvan0k80n0l5lqfmc4azjv5lyhvhwdxny4r09j5smhv78r")))) + "0qcj72mp8fzvh29h70mksxynax9mk5c6p8gzqw5qlyn34rvsrg28")))) (build-system gnu-build-system) (native-inputs ;; This package depends upon a native install of itself. diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index c367a46e4a..8ec59e4d0e 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,72 @@ #:select (tar)) #:use-module (gnu packages compression)) +(define-public ttf-dejavu + (package + (name "ttf-dejavu") + (version "2.34") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/dejavu/" + version "/dejavu-fonts-ttf-" + version ".tar.bz2")) + (sha256 + (base32 + "0pgb0a3ngamidacmrvasg51ck3gp8gn93w6sf1s8snwzx4x2r9yh")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + + (let ((tar (string-append (assoc-ref %build-inputs + "tar") + "/bin/tar")) + (PATH (string-append (assoc-ref %build-inputs + "bzip2") + "/bin")) + (font-dir (string-append + %output "/share/fonts/truetype")) + (conf-dir (string-append + %output "/share/fontconfig/conf.avail")) + (doc-dir (string-append + %output "/share/doc/" ,name "-" ,version))) + (setenv "PATH" PATH) + (system* tar "xvf" (assoc-ref %build-inputs "source")) + + (mkdir-p font-dir) + (mkdir-p conf-dir) + (mkdir-p doc-dir) + (chdir (string-append "dejavu-fonts-ttf-" ,version)) + (for-each (lambda (ttf) + (copy-file ttf + (string-append font-dir "/" + (basename ttf)))) + (find-files "ttf" "\\.ttf$")) + (for-each (lambda (conf) + (copy-file conf + (string-append conf-dir "/" + (basename conf)))) + (find-files "fontconfig" "\\.conf$")) + (for-each (lambda (doc) + (copy-file doc + (string-append doc-dir "/" + (basename doc)))) + (find-files "." "\\.txt$|^[A-Z][A-Z]*$")))))) + (native-inputs `(("source" ,source) + ("tar" ,tar) + ("bzip2" ,bzip2))) + (home-page "http://dejavu-fonts.org/") + (synopsis "Vera font family derivate with additional characters") + (description "DejaVu provides an expanded version of the Vera font family +aiming for quality and broader Unicode coverage while retaining the original +Vera style. DejaVu currently works towards conformance with the Multilingual +European Standards (MES-1 and MES-2) for Unicode coverage. The DejaVu fonts +provide serif, sans and monospaced variants.") + (license + (license:x11-style + "http://dejavu-fonts.org/")))) + (define-public ttf-bitstream-vera (package (name "ttf-bitstream-vera") diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 5a863e54aa..7a780d8ea2 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,15 +33,14 @@ (define-public gdb (package (name "gdb") - (version "7.6.2") + (version "7.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.bz2")) (sha256 (base32 - "1s6hjqmq7xz10hqx45dgrpfh5mla578shn3zxgnrsv66w4n0wsig")) - (patches (list (search-patch "gdb-loongson-madd-fix.patch"))))) + "08vcb97j1b7vxwq6088wb6s3g3bm8iwikd922y0xsgbbxv3d2104")))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-after diff --git a/gnu/packages/giflib.scm b/gnu/packages/giflib.scm new file mode 100644 index 0000000000..849586ed71 --- /dev/null +++ b/gnu/packages/giflib.scm @@ -0,0 +1,76 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Mark H Weaver <mhw@netris.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 giflib) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (srfi srfi-1) + #:use-module (gnu packages xorg) + #:use-module (gnu packages perl)) + +(define-public giflib + (package + (name "giflib") + (version "4.2.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/giflib/giflib-" + (first (string-split version #\.)) + ".x/giflib-" version ".tar.bz2")) + (sha256 + (base32 "0rmp7ipzk42r841bggd7bfqk4p8qsssbp4wcck4qnz7p4rkxbj0a")))) + (build-system gnu-build-system) + (outputs '("bin" ; utility programs + "out")) ; library + (inputs `(("libx11" ,libx11) + ("libice" ,libice) + ("libsm" ,libsm) + ("perl" ,perl))) + (arguments + `(#:phases (alist-cons-after + 'unpack 'disable-html-doc-gen + (lambda _ + (substitute* "doc/Makefile.in" + (("^all: allhtml manpages") ""))) + (alist-cons-after + 'install 'install-manpages + (lambda* (#:key outputs #:allow-other-keys) + (let* ((bin (assoc-ref outputs "bin")) + (man1dir (string-append bin "/share/man/man1"))) + (mkdir-p man1dir) + (for-each (lambda (file) + (let ((base (basename file))) + (format #t "installing `~a' to `~a'~%" + base man1dir) + (copy-file file + (string-append + man1dir "/" base)))) + (find-files "doc" "\\.1")))) + %standard-phases)))) + (synopsis "Tools and library for working with GIF images") + (description + "giflib is a library for reading and writing GIF images. It is API and +ABI compatible with libungif which was in wide use while the LZW compression +algorithm was patented. Tools are also included to convert, manipulate, +compose, and analyze GIF images.") + (home-page "http://giflib.sourceforge.net/") + (license x11))) + +;;; giflib.scm ends here diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm index 6244e2461e..01674f69c6 100644 --- a/gnu/packages/global.scm +++ b/gnu/packages/global.scm @@ -28,14 +28,14 @@ (define-public global ; a global variable (package (name "global") - (version "6.2.9") + (version "6.2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/global/global-" version ".tar.gz")) (sha256 (base32 - "00y38kp0zbpjl9c9phldy7j2ihqc54qn4cdgk0azbjdsv75k3n6q")))) + "15nvz8g9b3s4i4fsa9ynrr8y517nfpy62agcvsl9rlz3j23b5b7f")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) ("libtool" ,libtool))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 90683f3635..5d17b019fd 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -496,3 +496,30 @@ the API") additional GDK objects which support OpenGL rendering in GTK+ and GtkWidget API add-ons to make GTK+ widgets OpenGL-capable.") (license lgpl2.1+))) + +(define-public glade3 + (package + (name "glade") + (version "3.8.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (substring version 0 (string-rindex version #\.)) "/" + name "3-" version ".tar.xz")) + (sha256 + (base32 "021xgq2l18w3rvwms9aq2idm0fk66vwb4f777gs0qh3ap5shgbn7")))) + (build-system gnu-build-system) + (inputs + `(("gtk+" ,gtk+-2) + ("libxml2" ,libxml2))) + (native-inputs + `(("intltool" ,intltool) + ("python" ,python) + ("pkg-config" ,pkg-config))) + (home-page "https://glade.gnome.org") + (synopsis "GTK+ rapid application development tool") + (description "Glade is a rapid application development (RAD) tool to +enable quick & easy development of user interfaces for the GTK+ toolkit and +the GNOME desktop environment.") + (license lgpl2.0+))) diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm index d8340d6712..3b66cde018 100644 --- a/gnu/packages/gnu-pw-mgr.scm +++ b/gnu/packages/gnu-pw-mgr.scm @@ -27,15 +27,16 @@ (define-public gnu-pw-mgr (package (name "gnu-pw-mgr") - (version "1.0") + (version "1.1") (source (origin (method url-fetch) - (uri (string-append "mirror://gnu/gnu-pw-mgr/gnu-pw-mgr-" + (uri (string-append "mirror://gnu/gnu-pw-mgr/gpw-" + version "/gnu-pw-mgr-" version ".tar.gz")) (sha256 (base32 - "0sn9gzngqkrv74iwxzn5ldqx3w73w9paldcdh8rsv9yvgarv2bm4")))) + "1nqkwjsdcif51d1s4dizr1ifx0qpmkjzvi375vc27dwbav4dwalx")))) (build-system gnu-build-system) (inputs `(("which" ,which))) (home-page "http://www.gnu.org/software/gnu-pw-mgr/") diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 52a434a61c..7f7a6fd6f9 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,6 +18,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages gnunet) + #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -25,11 +27,19 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) #:use-module (gnu packages gnutls) + #:use-module (gnu packages groff) #:use-module (gnu packages gstreamer) + #:use-module (gnu packages libidn) #:use-module (gnu packages libjpeg) #:use-module (gnu packages libtiff) + #:use-module (gnu packages libunistring) + #:use-module (gnu packages maths) #:use-module (gnu packages openssl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages perl) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages sqlite) #:use-module (gnu packages video) #:use-module (gnu packages xiph) #:use-module ((guix licenses) @@ -123,3 +133,119 @@ also features security features such as basic and digest authentication and support for SSL3 and TLS.") (license license:lgpl2.1+) (home-page "http://www.gnu.org/software/libmicrohttpd/"))) + +(define-public gnurl + (package + (name "gnurl") + (version "7.35.0") + (source (origin + (method url-fetch) + (uri (string-append "https://gnunet.org/sites/default/files/gnurl-" + version ".tar.bz2")) + (sha256 + (base32 "0dzj22f5z6ppjj1aq1bml64iwbzzcd8w1qy3bgpk6gnzqslsxknf")))) + (build-system gnu-build-system) + (inputs `(("gnutls" ,gnutls) + ("libidn" ,libidn) + ("zlib" ,zlib))) + (native-inputs + `(("groff" ,groff) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) + (arguments + `(#:configure-flags '("--enable-ipv6" "--with-gnutls" "--without-libssh2" + "--without-libmetalink" "--without-winidn" + "--without-librtmp" "--without-nghttp2" + "--without-nss" "--without-cyassl" + "--without-polarssl" "--without-ssl" + "--without-winssl" "--without-darwinssl" + "--disable-sspi" "--disable-ntlm-wb" + "--disable-ldap" "--disable-rtsp" "--disable-dict" + "--disable-telnet" "--disable-tftp" "--disable-pop3" + "--disable-imap" "--disable-smtp" "--disable-gopher" + "--disable-file" "--disable-ftp") + #:test-target "test" + #:parallel-tests? #f + ;; We have to patch runtests.pl in tests/ directory + #:phases + (alist-cons-before + 'check 'patch-runtests + (lambda _ + (substitute* "tests/runtests.pl" + (("/bin/sh") (which "sh")))) + %standard-phases))) + (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL") + (description + "Gnurl is a microfork of cURL, a command line tool for transferring data +with URL syntax. While cURL supports many crypto backends, libgnurl only +supports HTTPS, HTTPS and GnuTLS.") + (license (license:bsd-style "file://COPYING" + "See COPYING in the distribution.")) + (home-page "https://gnunet.org/gnurl"))) + +(define-public gnunet + (package + (name "gnunet") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gnunet/gnunet-" version + ".tar.gz")) + (sha256 (base32 + "0zqpc47kywhjrpphl0palz849khv00ra2gjrfkysp6p0gfsbvd0i")) + (patches + (list + ;; Patch to fix serious bug in scheduler; upstream commit: #31747 + (search-patch "gnunet-fix-scheduler.patch") + ;; Patch to fix bugs in testcases: + ;; * Disable peerinfo-tool tests as they depend on reverse DNS lookups + ;; * Allow revocation and integration-tests testcases to run on + ;; loopback; upstream: #32130, #32326 + ;; * Skip GNS testcases requiring DNS lookups; upstream: #32118 + (search-patch "gnunet-fix-tests.patch"))) + (patch-flags '("-p0")))) + (build-system gnu-build-system) + (inputs + `(("glpk" ,glpk) + ("gnurl" ,gnurl) + ("gnutls" ,gnutls) + ("libextractor" ,libextractor) + ("libgcrypt" ,libgcrypt) + ("libidn" ,libidn) + ("libmicrohttpd" ,libmicrohttpd) + ("libtool" ,libtool) + ("libunistring" ,libunistring) + ("openssl" ,openssl) + ("opus" ,opus) + ("pulseaudio", pulseaudio) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2))) + (arguments + '(#:phases + ;; swap check and install phases and set paths to installed binaries + (alist-cons-before + 'check 'set-path-for-check + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "GNUNET_PREFIX" out) + (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))) + (alist-cons-after + 'install 'check + (assoc-ref %standard-phases 'check) + (alist-delete + 'check + %standard-phases))))) + (synopsis "Anonymous peer-to-peer file-sharing framework") + (description + "GNUnet is a framework for secure, peer-to-peer networking. It works in a +decentralized manner and does not rely on any notion of trusted services. One +service implemented on it is censorship-resistant file-sharing. Communication +is encrypted and anonymity is provided by making messages originating from a +peer indistinguishable from those that the peer is routing.") + (license license:gpl3+) + (home-page "https://gnunet.org/"))) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 0be19c6177..e06865d196 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,14 +62,14 @@ Daemon and possibly more in the future.") (define-public libgcrypt (package (name "libgcrypt") - (version "1.6.0") + (version "1.6.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "024plbybsmnxbp39hs92lp6dzvkz2cb70nv69qrwr55d02350bb6")))) + "0w10vhpj1r5nq7qm6jp21p1v1vhf37701cw8yilygzzqd7mfzhx1")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error" ,libgpg-error))) @@ -221,10 +222,12 @@ components), libgpg-error (centralized GnuPG error values), and libskba (base32 "15h429h6pd67iiv580bjmwbkadpxsdppw0xrqpcm4dvm24jc271d")))) (build-system gnu-build-system) + (propagated-inputs + ;; Needs to be propagated because gpgme.h includes gpg-error.h. + `(("libgpg-error" ,libgpg-error))) (inputs `(("gnupg" ,gnupg) - ("libassuan" ,libassuan) - ("libgpg-error" ,libgpg-error))) + ("libassuan" ,libassuan))) (home-page "http://www.gnupg.org/related_software/gpgme/") (synopsis "library providing simplified access to GnuPG functionality") (description @@ -418,3 +421,37 @@ including tools for signing keys, keyring analysis, and party preparation. "Pinentry provides a console and a GTK+ GUI that allows users to enter a passphrase when `gpg' or `gpg2' is run and needs it.") (license gpl2+))) + +(define-public paperkey + (package + (name "paperkey") + (version "1.3") + (source (origin + (method url-fetch) + (uri (string-append "http://www.jabberwocky.com/" + "software/paperkey/paperkey-" + version ".tar.gz")) + (sha256 + (base32 + "1yybj8bj68v4lxwpn596b6ismh2fyixw5vlqqg26byrn4d9dfmsv")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-replace + 'check + (lambda* (#:key #:allow-other-keys #:rest args) + (let ((check (assoc-ref %standard-phases 'check))) + (substitute* '("checks/roundtrip.sh" + "checks/roundtrip-raw.sh") + (("/bin/echo") "echo")) + (apply check args))) + %standard-phases))) + (home-page "http://www.jabberwocky.com/software/paperkey/") + (synopsis "Backup OpenPGP keys to paper") + (description + "Paperkey extracts the secret bytes from an OpenPGP (GnuPG, PGP, etc) key +for printing with paper and ink, which have amazingly long retention +qualities. To reconstruct a secret key, you re-enter those +bytes (whether by hand, OCR, QR code, or the like) and paperkey can use +them to transform your existing public key into a secret key.") + (license gpl2+))) diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm index 79cebe637d..915f6f8c8f 100644 --- a/gnu/packages/gnutls.scm +++ b/gnu/packages/gnutls.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +30,8 @@ #:use-module (gnu packages perl) #:use-module (gnu packages which) #:use-module (gnu packages texinfo) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (srfi srfi-1)) (define-public libtasn1 (package @@ -61,17 +63,19 @@ specifications.") (define-public gnutls (package (name "gnutls") - (version "3.2.4") + (version "3.2.11") (source (origin (method url-fetch) (uri ;; Note: Releases are no longer on ftp.gnu.org since the ;; schism (after version 3.1.5). - (string-append "mirror://gnupg/gnutls/v3.2/gnutls-" - version ".tar.xz")) + (string-append "mirror://gnupg/gnutls/v" + (string-join (take (string-split version #\.) 2) + ".") + "/gnutls-" version ".tar.xz")) (sha256 (base32 - "0zvhzy87v9dfxfvmg1pl951kw55rp647cqdza8942fxq7spp158i")))) + "1hgk3k8f6wqijca3bsjbfn8pzyfva509y4j2vaxhm4ynfa5cai5q")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 6ebd8c399b..c68d756d1e 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -43,6 +43,10 @@ (base32 "0c0irk85jd2cihm5pmf4zxhlpg08qpxjcqv1l9qn2n3h2gsaj2lf")))) (build-system gnu-build-system) + (arguments + ;; XXX: Temporarily disable tests to work around 'gst/gstbus' test + ;; failure: <https://bugzilla.gnome.org/show_bug.cgi?id=724073>. + '(#:tests? #f)) (inputs `(("glib" ,glib))) (native-inputs `(("bison" ,bison) @@ -51,8 +55,7 @@ ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) (home-page "http://gstreamer.freedesktop.org/") - (synopsis - "Multimedia library") + (synopsis "Multimedia library") (description "GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index fcfbcc47ce..2a01f891b2 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -590,3 +590,22 @@ are easily extensible via inheritance. You can create user interfaces either in code or with the Glade User Interface designer, using libglademm. There's extensive documentation, including API reference and a tutorial.") (license license:lgpl2.1+))) + + +(define-public gtkmm-2 + (package (inherit gtkmm) + (version "2.24.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/gtkmm/" + (string-take version 4) "/gtkmm-" + version ".tar.xz")) + (sha256 + (base32 + "0gcm91sc1a05c56kzh74l370ggj0zz8nmmjvjaaxgmhdq8lpl369")))) + (propagated-inputs + `(("pangomm" ,pangomm) + ("cairomm" ,cairomm) + ("atkmm" ,atkmm) + ("gtk+" ,gtk+-2) + ("glibmm" ,glibmm))))) diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm index 1dc9f3f50a..b05974c8ae 100644 --- a/gnu/packages/guile-wm.scm +++ b/gnu/packages/guile-wm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -73,14 +73,14 @@ dependencies.") (define-public guile-wm (package (name "guile-wm") - (version "0.2") + (version "1.0") (source (origin (method url-fetch) (uri (string-append "http://www.markwitmer.com/dist/guile-wm-" version ".tar.gz")) (sha256 (base32 - "0vv6avpkl6lgrhy2a16z470fqjhvzi4r93qwl87xw9v5dvldf08p")))) + "1l9qcz236jxvryndimjy62cf8zxf8i3f8vg3zpqqjhw15j9mdk3r")))) (build-system gnu-build-system) (arguments '(;; The '.scm' files go to $(datadir), so set that to the ;; standard value. diff --git a/gnu/packages/gxmessage.scm b/gnu/packages/gxmessage.scm new file mode 100644 index 0000000000..425659274c --- /dev/null +++ b/gnu/packages/gxmessage.scm @@ -0,0 +1,50 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 John Darrington <jmd@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 gxmessage) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages glib) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages gtk) + #:use-module (gnu packages)) + +(define-public gxmessage + (package + (name "gxmessage") + (version "2.20.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gxmessage/gxmessage-" + version ".tar.gz")) + (sha256 + (base32 "1nq8r321x3rzcdkjlvj61i9x7smslnis7b05b39xqcjc9xyg4hv0")))) + (build-system gnu-build-system) + (inputs + `(("gtk+" ,gtk+-2))) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (home-page "http://www.gnu.org/software/gxmessage/") + (synopsis "Open popup message window with buttons for return") + (description "GNU gxmessage is a program that pops up dialog windows, which display +a message to the user and waits for their action. The program then exits +with an exit code corresponding to the response.") + (license gpl3+))) diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm new file mode 100644 index 0000000000..3edccbdd1c --- /dev/null +++ b/gnu/packages/hurd.scm @@ -0,0 +1,88 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@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 hurd) + #:use-module (guix licenses) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (gnu packages flex) + #:use-module (gnu packages bison)) + +(define-public gnumach-headers + (package + (name "gnumach-headers") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gnumach/gnumach-" + version ".tar.gz")) + (sha256 + (base32 + "0r371wsm7imx356p0xsls5hifb1gf9y90rm1phr0qkahbmfk9hlv")))) + (build-system gnu-build-system) + (arguments + `(#:phases (alist-replace + 'install + (lambda _ + (zero? + (system* "make" "install-data"))) + (alist-delete + 'build + %standard-phases)) + + ;; GNU Mach supports only IA32 currently, so cheat so that we can at + ;; least install its headers. + #:configure-flags '("--build=i686-pc-gnu") + + #:tests? #f)) + (home-page "https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html") + (synopsis "GNU Mach kernel headers") + (description + "Headers of the GNU Mach kernel.") + (license gpl2+))) + +(define-public mig + (package + (name "mig") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mig/mig-" + version ".tar.gz")) + (sha256 + (base32 + "1jgzggnbp22sa8z5dilm43zy12vlf1pjxfb3kh13xrfhcay0l97b")))) + (build-system gnu-build-system) + (inputs `(("gnumach-headers" ,gnumach-headers))) + (native-inputs + `(("flex" ,flex) + ("bison" ,bison))) + (arguments `(#:tests? #f)) + (home-page "http://www.gnu.org/software/hurd/microkernel/mach/mig/gnu_mig.html") + (synopsis "Mach 3.0 interface generator for the Hurd") + (description + "GNU MIG is the GNU distribution of the Mach 3.0 interface generator +MIG, as maintained by the GNU Hurd developers for the GNU project. +You need this tool to compile the GNU Mach and GNU Hurd distributions, +and to compile the GNU C library for the Hurd. Also,you will need it +for other software in the GNU system that uses Mach-based inter-process +communication.") + (license gpl2+))) diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm index 6129662436..aea5d2fae5 100644 --- a/gnu/packages/icu4c.scm +++ b/gnu/packages/icu4c.scm @@ -28,7 +28,7 @@ (define-public icu4c (package (name "icu4c") - (version "50.1.1") + (version "52.1") (source (origin (method url-fetch) (uri (string-append "http://download.icu-project.org/files/icu4c/" @@ -37,7 +37,7 @@ (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) "-src.tgz")) (sha256 (base32 - "13yz0kk6zsgj94idnlr3vbg8iph5z4ly4b4xrd5wfja7q3ijdx56")))) + "14l0kl17nirc34frcybzg0snknaks23abhdxkmsqg3k9sil5wk9g")))) (build-system gnu-build-system) (inputs `(("patchelf" ,patchelf) @@ -61,7 +61,7 @@ (lambda* (#:key #:allow-other-keys #:rest args) (let ((configure (assoc-ref %standard-phases 'configure))) ;; patch out two occurrences of /bin/sh from configure script - ;; that might have disappeared in a release later than 50.1.1 + ;; that might have disappeared in a release later than 52.1 (substitute* "configure" (("`/bin/sh") (string-append "`" (which "bash")))) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 0d574731f9..a1713273e9 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -37,14 +37,14 @@ (define-public imagemagick (package (name "imagemagick") - (version "6.8.7-9") + (version "6.8.8-4") (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" version ".tar.xz")) (sha256 (base32 - "0625hqddc93qjd5923yivy74jyagk3n2bi2kjgykn86g7kxh7fcd")))) + "0bfxhfymkdbvardlr0nbjfmv53m47lcl9kkycipk4hxawfs927jr")))) (build-system gnu-build-system) (arguments `(#:phases (alist-cons-before diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm new file mode 100644 index 0000000000..6b8669f373 --- /dev/null +++ b/gnu/packages/inkscape.scm @@ -0,0 +1,79 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 John Darrington <jmd@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 inkscape) + #:use-module ((guix licenses) + #:renamer (symbol-prefix-proc 'license:)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages aspell) + #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages boost) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages maths) + #:use-module (gnu packages perl) + #:use-module (gnu packages pdf) + #:use-module (gnu packages popt) + #:use-module (gnu packages python) + #:use-module (gnu packages xml) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages libpng) + #:use-module (gnu packages pkg-config)) + +(define-public inkscape + (package + (name "inkscape") + (version "0.48.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/inkscape/inkscape-" + version ".tar.gz")) + (sha256 + (base32 + "0nhxsgrgsx6zrgpkd1akxjvmdqjp8ccnsvlwxh62l0brg84fw6bf")) + (patches (list (search-patch "inkscape-stray-comma.patch"))))) + (build-system gnu-build-system) + (inputs + `(("aspell" ,aspell) + ("gtkmm" ,gtkmm-2) + ("gtk" ,gtk+-2) + ("gsl" ,gsl) + ("poppler" ,poppler) + ("libpng" ,libpng) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("libgc" ,libgc) + ("freetype" ,freetype) + ("popt" ,popt) + ("python" ,python-2) + ("lcms" ,lcms) + ("boost" ,boost))) + (native-inputs + `(("intltool" ,intltool) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (home-page "http://inkscape.org/") + (synopsis "Vector graphics editor") + (description "Inkscape is a vector graphics editor. What sets Inkscape +apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard, +as the native format.") + (license license:gpl2+))) diff --git a/gnu/packages/libwebsockets.scm b/gnu/packages/libwebsockets.scm new file mode 100644 index 0000000000..3f900aef72 --- /dev/null +++ b/gnu/packages/libwebsockets.scm @@ -0,0 +1,83 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 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 libwebsockets) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) + #:select (lgpl2.1)) + #:use-module (gnu packages autotools) + #:use-module ((gnu packages compression) #:select (zlib)) + #:use-module (gnu packages perl) + #:use-module (gnu packages openssl)) + +(define-public libwebsockets + (package + (name "libwebsockets") + (version "1.2") + (source (origin + ;; The project does not publish tarballs, so we have to take + ;; things from Git. + (method git-fetch) + (uri (git-reference + (url "git://git.libwebsockets.org/libwebsockets") + (commit (string-append "v" version + "-chrome26-firefox18")))) + (sha256 + (base32 + "1293hbz8qj4p27m1qjf8dn97r10xjyiwdpq491m87zi025s558cl")) + (file-name (string-append name "-" version)))) + + ;; The package has both CMake and GNU build systems, but the latter is + ;; apparently better supported (CMake-generated makefiles lack an + ;; 'install' target, for instance.) + (build-system gnu-build-system) + + (arguments + '(#:phases (alist-replace + 'unpack + ;; FIXME: Remove this when gnu-build-system handles that + ;; case correctly. + (lambda* (#:key source #:allow-other-keys) + (mkdir "source") + (chdir "source") + (copy-recursively source ".") + #t) + + (alist-cons-before + 'configure 'bootstrap + (lambda _ + (chmod "libwebsockets-api-doc.html" #o666) + (zero? (system* "./autogen.sh"))) + %standard-phases)))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool "bin") + ("perl" ,perl))) ; to build the HTML doc + (inputs `(("zlib" ,zlib) + ("openssl" ,openssl))) + (synopsis "WebSockets library written in C") + (description + "libwebsockets is a library that allows C programs to establish client +and server WebSockets connections---a protocol layered above HTTP that allows +for efficient socket-like bidirectional reliable communication channels.") + (home-page "http://libwebsockets.org/") + + ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'. + (license lgpl2.1))) diff --git a/gnu/packages/lightning.scm b/gnu/packages/lightning.scm index 8ec433e0b8..75681bf866 100644 --- a/gnu/packages/lightning.scm +++ b/gnu/packages/lightning.scm @@ -25,14 +25,14 @@ (define-public lightning (package (name "lightning") - (version "2.0.2") + (version "2.0.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/lightning/lightning-" version ".tar.gz")) (sha256 (base32 - "100ya7dx12403gimif7p2q7ahd8vxqrxpxqzqr1zqci825nb0b43")))) + "1mbbqia7ypvyrl15b15h0wxqbr153j7vlapjsv57lid88rr7c7ia")))) (build-system gnu-build-system) (synopsis "Library for generating assembly code at runtime") (description diff --git a/gnu/packages/linux-initrd.scm b/gnu/packages/linux-initrd.scm deleted file mode 100644 index 0134e89da8..0000000000 --- a/gnu/packages/linux-initrd.scm +++ /dev/null @@ -1,403 +0,0 @@ -;;; 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 linux-initrd) - #:use-module (guix utils) - #:use-module (guix licenses) - #:use-module (guix build-system) - #:use-module ((guix derivations) - #:select (imported-modules compiled-modules %guile-for-build)) - #:use-module (gnu packages) - #:use-module (gnu packages cpio) - #:use-module (gnu packages compression) - #:use-module (gnu packages linux) - #:use-module (gnu packages guile) - #:use-module ((gnu packages make-bootstrap) - #:select (%guile-static-stripped)) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system trivial)) - - -;;; Commentary: -;;; -;;; Tools to build initial RAM disks (initrd's) for Linux-Libre, and in -;;; particular initrd's that run Guile. -;;; -;;; Code: - - -(define-syntax-rule (raw-build-system (store system name inputs) body ...) - "Lift BODY to a package build system." - ;; TODO: Generalize. - (build-system - (name "raw") - (description "Raw build system") - (build (lambda* (store name source inputs #:key system #:allow-other-keys) - (parameterize ((%guile-for-build (package-derivation store - guile-2.0))) - body ...))))) - -(define (module-package modules) - "Return a package that contains all of MODULES, a list of Guile module -names." - (package - (name "guile-modules") - (version "0") - (source #f) - (build-system (raw-build-system (store system name inputs) - (imported-modules store modules - #:name name - #:system system))) - (synopsis "Set of Guile modules") - (description synopsis) - (license gpl3+) - (home-page "http://www.gnu.org/software/guix/"))) - -(define (compiled-module-package modules) - "Return a package that contains the .go files corresponding to MODULES, a -list of Guile module names." - (package - (name "guile-compiled-modules") - (version "0") - (source #f) - (build-system (raw-build-system (store system name inputs) - (compiled-modules store modules - #:name name - #:system system))) - (synopsis "Set of compiled Guile modules") - (description synopsis) - (license gpl3+) - (home-page "http://www.gnu.org/software/guix/"))) - -(define* (expression->initrd exp - #:key - (guile %guile-static-stripped) - (cpio cpio) - (gzip gzip) - (name "guile-initrd") - (system (%current-system)) - (modules '()) - (linux #f) - (linux-modules '())) - "Return a package that contains a Linux initrd (a gzipped cpio archive) -containing GUILE and that evaluates EXP upon booting. LINUX-MODULES is a list -of `.ko' file names to be copied from LINUX into the initrd. MODULES is a -list of Guile module names to be embedded in the initrd." - - ;; General Linux overview in `Documentation/early-userspace/README' and - ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. - - (define builder - `(begin - (use-modules (guix build utils) - (ice-9 pretty-print) - (ice-9 popen) - (ice-9 match) - (ice-9 ftw) - (srfi srfi-26) - (system base compile) - (rnrs bytevectors) - ((system foreign) #:select (sizeof))) - - (let ((guile (assoc-ref %build-inputs "guile")) - (cpio (string-append (assoc-ref %build-inputs "cpio") - "/bin/cpio")) - (gzip (string-append (assoc-ref %build-inputs "gzip") - "/bin/gzip")) - (modules (assoc-ref %build-inputs "modules")) - (gos (assoc-ref %build-inputs "modules/compiled")) - (scm-dir (string-append "share/guile/" (effective-version))) - (go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a" - (effective-version) - (if (eq? (native-endianness) (endianness little)) - "LE" - "BE") - (sizeof '*) - (effective-version))) - (out (assoc-ref %outputs "out"))) - (mkdir out) - (mkdir "contents") - (with-directory-excursion "contents" - (copy-recursively guile ".") - (call-with-output-file "init" - (lambda (p) - (format p "#!/bin/guile -ds~%!#~%" guile) - (pretty-print ',exp p))) - (chmod "init" #o555) - (chmod "bin/guile" #o555) - - ;; Copy Guile modules. - (chmod scm-dir #o777) - (copy-recursively modules scm-dir - #:follow-symlinks? #t) - (copy-recursively gos (string-append "lib/guile/" - (effective-version) "/ccache") - #:follow-symlinks? #t) - - ;; Compile `init'. - (mkdir-p go-dir) - (set! %load-path (cons modules %load-path)) - (set! %load-compiled-path (cons gos %load-compiled-path)) - (compile-file "init" - #:opts %auto-compilation-options - #:output-file (string-append go-dir "/init.go")) - - ;; Copy Linux modules. - (let* ((linux (assoc-ref %build-inputs "linux")) - (module-dir (and linux - (string-append linux "/lib/modules")))) - (mkdir "modules") - ,@(map (lambda (module) - `(match (find-files module-dir ,module) - ((file) - (format #t "copying '~a'...~%" file) - (copy-file file (string-append "modules/" - ,module))) - (() - (error "module not found" ,module module-dir)) - ((_ ...) - (error "several modules by that name" - ,module module-dir)))) - linux-modules)) - - ;; Reset the timestamps of all the files that will make it in the - ;; initrd. - (for-each (cut utime <> 0 0 0 0) - (find-files "." ".*")) - - (system* cpio "--version") - (let ((pipe (open-pipe* OPEN_WRITE cpio "-o" - "-O" (string-append out "/initrd") - "-H" "newc" "--null"))) - (define print0 - (let ((len (string-length "./"))) - (lambda (file) - (format pipe "~a\0" (string-drop file len))))) - - ;; Note: as per `ramfs-rootfs-initramfs.txt', always add - ;; directory entries before the files that are inside of it: "The - ;; Linux kernel cpio extractor won't create files in a directory - ;; that doesn't exist, so the directory entries must go before - ;; the files that go in those directories." - (file-system-fold (const #t) - (lambda (file stat result) ; leaf - (print0 file)) - (lambda (dir stat result) ; down - (unless (string=? dir ".") - (print0 dir))) - (const #f) ; up - (const #f) ; skip - (const #f) - #f - ".") - - (and (zero? (close-pipe pipe)) - (with-directory-excursion out - (and (zero? (system* gzip "--best" "initrd")) - (rename-file "initrd.gz" "initrd"))))))))) - - (package - (name name) - (version "0") - (source #f) - (build-system trivial-build-system) - (arguments `(#:modules ((guix build utils)) - #:builder ,builder)) - (inputs `(("guile" ,guile) - ("cpio" ,cpio) - ("gzip" ,gzip) - ("modules" ,(module-package modules)) - ("modules/compiled" ,(compiled-module-package modules)) - ,@(if linux - `(("linux" ,linux)) - '()))) - (synopsis "An initial RAM disk (initrd) for the Linux kernel") - (description - "An initial RAM disk (initrd), really a gzipped cpio archive, for use by -the Linux kernel.") - (license gpl3+) - (home-page "http://www.gnu.org/software/guix/"))) - -(define-public qemu-initrd - (expression->initrd - '(begin - (use-modules (srfi srfi-1) - (srfi srfi-26) - (ice-9 match) - ((system base compile) #:select (compile-file)) - (guix build utils) - (guix build linux-initrd)) - - (display "Welcome, this is GNU's early boot Guile.\n") - (display "Use '--repl' for an initrd REPL.\n\n") - - (mount-essential-file-systems) - (let* ((args (linux-command-line)) - (option (lambda (opt) - (let ((opt (string-append opt "="))) - (and=> (find (cut string-prefix? opt <>) - args) - (lambda (arg) - (substring arg (+ 1 (string-index arg #\=)))))))) - (to-load (option "--load")) - (root (option "--root"))) - - (when (member "--repl" args) - ((@ (system repl repl) start-repl))) - - (display "loading CIFS and companion modules...\n") - (for-each (compose load-linux-module* - (cut string-append "/modules/" <>)) - (list "md4.ko" "ecb.ko" "cifs.ko")) - - (unless (configure-qemu-networking) - (display "network interface is DOWN\n")) - - ;; Make /dev nodes. - (make-essential-device-nodes) - - ;; Prepare the real root file system under /root. - (unless (file-exists? "/root") - (mkdir "/root")) - (if root - (mount root "/root" "ext3") - (mount "none" "/root" "tmpfs")) - (mount-essential-file-systems #:root "/root") - - (mkdir "/root/xchg") - (mkdir-p "/root/nix/store") - - (unless (file-exists? "/root/dev") - (mkdir "/root/dev") - (make-essential-device-nodes #:root "/root")) - - ;; Mount the host's store and exchange directory. - (mount-qemu-smb-share "/store" "/root/nix/store") - (mount-qemu-smb-share "/xchg" "/root/xchg") - - ;; Copy the directories that contain .scm and .go files so that the - ;; child process in the chroot can load modules (we would bind-mount - ;; them but for some reason that fails with EINVAL -- XXX). - (mkdir "/root/share") - (mkdir "/root/lib") - (mount "none" "/root/share" "tmpfs") - (mount "none" "/root/lib" "tmpfs") - (copy-recursively "/share" "/root/share" - #:log (%make-void-port "w")) - (copy-recursively "/lib" "/root/lib" - #:log (%make-void-port "w")) - - - (if to-load - (begin - (format #t "loading boot file '~a'...\n" to-load) - (compile-file (string-append "/root/" to-load) - #:output-file "/root/loader.go" - #:opts %auto-compilation-options) - (match (primitive-fork) - (0 - (chroot "/root") - (load-compiled "/loader.go") - - ;; TODO: Remove /lib, /share, and /loader.go. - ) - (pid - (format #t "boot file loaded under PID ~a~%" pid) - (let ((status (waitpid pid))) - (reboot))))) - (begin - (display "no boot file passed via '--load'\n") - (display "entering a warm and cozy REPL\n") - ((@ (system repl repl) start-repl)))))) - #:name "qemu-initrd" - #:modules '((guix build utils) - (guix build linux-initrd)) - #:linux linux-libre - #:linux-modules '("cifs.ko" "md4.ko" "ecb.ko"))) - -(define-public gnu-system-initrd - ;; Initrd for the GNU system itself, with nothing QEMU-specific. - (expression->initrd - '(begin - (use-modules (srfi srfi-1) - (srfi srfi-26) - (ice-9 match) - (guix build utils) - (guix build linux-initrd)) - - (display "Welcome, this is GNU's early boot Guile.\n") - (display "Use '--repl' for an initrd REPL.\n\n") - - (mount-essential-file-systems) - (let* ((args (linux-command-line)) - (option (lambda (opt) - (let ((opt (string-append opt "="))) - (and=> (find (cut string-prefix? opt <>) - args) - (lambda (arg) - (substring arg (+ 1 (string-index arg #\=)))))))) - (to-load (option "--load")) - (root (option "--root"))) - - (when (member "--repl" args) - ((@ (system repl repl) start-repl))) - - ;; Make /dev nodes. - (make-essential-device-nodes) - - ;; Prepare the real root file system under /root. - (mkdir-p "/root") - (if root - ;; Assume ROOT has a usable /dev tree. - (mount root "/root" "ext3") - (begin - (mount "none" "/root" "tmpfs") - (make-essential-device-nodes #:root "/root"))) - - (mount-essential-file-systems #:root "/root") - - (mkdir-p "/root/tmp") - (mount "none" "/root/tmp" "tmpfs") - - ;; XXX: We don't copy our fellow Guile modules to /root (see - ;; 'qemu-initrd'), so if TO-LOAD tries to load a module (which can - ;; happen if it throws, to display the exception!), then we're - ;; screwed. Hopefully TO-LOAD is a simple expression that just does - ;; '(execlp ...)'. - - (if to-load - (begin - (format #t "loading '~a'...\n" to-load) - (chroot "/root") - (primitive-load to-load) - (format (current-error-port) - "boot program '~a' terminated, rebooting~%" - to-load) - (sleep 2) - (reboot)) - (begin - (display "no init file passed via '--exec'\n") - (display "entering a warm and cozy REPL\n") - ((@ (system repl repl) start-repl)))))) - #:name "qemu-system-initrd" - #:modules '((guix build linux-initrd) - (guix build utils)) - #:linux linux-libre)) - -;;; linux-initrd.scm ends here diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 5e80a5837d..3fca5dfaf9 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -30,6 +30,7 @@ #:use-module (gnu packages bdb) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages algebra) #:use-module (gnu packages gettext) #:use-module (gnu packages pulseaudio) @@ -38,7 +39,8 @@ #:use-module (gnu packages autotools) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python)) (define-public (system->linux-architecture arch) "Return the Linux architecture name for ARCH, a Guix system name such as @@ -146,7 +148,7 @@ (license gpl2+))) (define-public linux-libre - (let* ((version "3.12") + (let* ((version "3.13") (build-phase '(lambda* (#:key system #:allow-other-keys #:rest args) (let ((arch (car (string-split system #\-)))) @@ -161,7 +163,24 @@ (format #t "enabling additional modules...~%") (substitute* ".config" (("^# CONFIG_CIFS.*$") - "CONFIG_CIFS=m\n")) + "CONFIG_CIFS=m\n") + (("^# CONFIG_([[:graph:]]*)VIRTIO([[:graph:]]*) .*$" + _ before after) + (string-append "CONFIG_" before "VIRTIO" + after "=m\n"))) + + ;; XXX: For some reason, some virtio modules need to be + ;; explicitly added. + (let ((port (open-file ".config" "a"))) + (display (string-append "CONFIG_NET_9P_VIRTIO=m\n" + "CONFIG_NET_9P=m\n" + "CONFIG_9P_FS=m\n" + "CONFIG_VIRTIO_NET=m\n" + "CONFIG_VIRTIO_BLK=m\n" + "CONFIG_VIRTIO_BALLOON=m\n") + port) + (close-port port)) + (zero? (system* "make" "oldconfig"))) ;; Call the default `build' phase so `-j' is correctly @@ -192,7 +211,7 @@ (uri (linux-libre-urls version)) (sha256 (base32 - "0drjxm9h2k9bik2mhrqqqi6cm5rn2db647wf0zvb58xldj0zmhb6")))) + "15pdizzxnnvpxmdb1lbi01kpingmdvj17b01vzbyjymi4vwfws3f")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ("bc" ,bc) @@ -840,3 +859,64 @@ settings.") "Aumix adjusts an audio mixer from X, the console, a terminal, the command line or a script.") (license gpl2+))) + +(define-public iotop + (package + (name "iotop") + (version "0.6") + (source + (origin + (method url-fetch) + (uri (string-append "http://guichaz.free.fr/iotop/files/iotop-" + version ".tar.gz")) + (sha256 (base32 + "1kp8mqg2pbxq4xzpianypadfxcsyfgwcaqgqia6h9fsq6zyh4z0s")))) + (build-system python-build-system) + (arguments + ;; The setup.py script expects python-2. + `(#:python ,python-2 + ;; There are currently no checks in the package. + #:tests? #f)) + (native-inputs `(("python" ,python-2))) + (home-page "http://guichaz.free.fr/iotop/") + (synopsis + "Displays the IO activity of running processes") + (description + "Iotop is a Python program with a top like user interface to show the +processes currently causing I/O.") + (license gpl2+))) + +(define-public fuse + (package + (name "fuse") + (version "2.9.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/fuse/fuse-" + version ".tar.gz")) + (sha256 + (base32 + "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb")))) + (build-system gnu-build-system) + (native-inputs `(("util-linux" ,util-linux))) + (arguments + '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH=" + (assoc-ref %outputs "out") + "/sbin") + (string-append "INIT_D_PATH=" + (assoc-ref %outputs "out") + "/etc/init.d") + (string-append "UDEV_RULES_PATH=" + (assoc-ref %outputs "out") + "/etc/udev")))) + (home-page "http://fuse.sourceforge.net/") + (synopsis "Support file systems implemented in user space") + (description + "As a consequence of its monolithic design, file system code for Linux +normally goes into the kernel itself---which is not only a robustness issue, +but also an impediment to system extensibility. FUSE, for \"file systems in +user space\", is a kernel module and user-space library that tries to address +part of this problem by allowing users to run file system implementations as +user-space processes.") + (license (list lgpl2.1 ; library + gpl2+)))) ; command-line utilities diff --git a/gnu/packages/lout.scm b/gnu/packages/lout.scm index 76cb8a753b..1121f1674b 100644 --- a/gnu/packages/lout.scm +++ b/gnu/packages/lout.scm @@ -37,14 +37,14 @@ (("^LOUTLIBDIR[[:blank:]]*=.*$") (string-append "LOUTLIBDIR = " out "/lib/lout\n")) (("^LOUTDOCDIR[[:blank:]]*=.*$") - (string-append "LOUTDOCDIR = " doc "/doc/lout\n")) + (string-append "LOUTDOCDIR = " doc "/share/doc/lout\n")) (("^MANDIR[[:blank:]]*=.*$") (string-append "MANDIR = " out "/man\n"))) (mkdir out) (mkdir (string-append out "/bin")) (mkdir (string-append out "/lib")) (mkdir (string-append out "/man")) - (mkdir-p (string-append doc "/doc/lout"))))) + (mkdir-p (string-append doc "/share/doc/lout"))))) (install-man-phase '(lambda* (#:key outputs #:allow-other-keys) (zero? (system* "make" "installman")))) @@ -60,7 +60,7 @@ (every (lambda (doc) (format #t "doc: building `~a'...~%" doc) (with-directory-excursion doc - (let ((file (string-append out "/doc/lout/" + (let ((file (string-append out "/share/doc/lout/" doc ".ps"))) (and (or (file-exists? "outfile.ps") (zero? (system* "lout" "-r4" "-o" @@ -72,7 +72,7 @@ "-dPDFSETTINGS=/prepress" "-sPAPERSIZE=a4" file - (string-append out "/doc/lout/" + (string-append out "/share/doc/lout/" doc ".pdf"))))))) '("design" "expert" "slides" "user"))))) (package diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 14fc28ced0..81caa263ad 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> +;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,3 +62,27 @@ runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.") (license x11))) + +(define-public luajit + (package + (name "luajit") + (version "2.0.2") + (source (origin + (method url-fetch) + (uri (string-append "http://luajit.org/download/LuaJIT-" + version ".tar.gz")) + (sha256 + (base32 "0f3cykihfdn3gi6na9p0xjd4jnv26z18m441n5vyg42q9abh4ln0")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;luajit is distributed without tests + #:phases (alist-delete 'configure %standard-phases) + #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))))) + (home-page "http://www.luajit.org/") + (synopsis "Just in time compiler for Lua programming language version 5.1") + (description + "LuaJIT is a Just-In-Time Compiler (JIT) for the Lua +programming language. Lua is a powerful, dynamic and light-weight programming +language. It may be embedded or used as a general-purpose, stand-alone +language.") + (license x11))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index bdb3d52070..703762eed3 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,11 +34,15 @@ #:use-module (gnu packages perl) #:use-module (gnu packages readline) #:use-module (gnu packages texinfo) + #:use-module (gnu packages compression) + #:use-module (gnu packages glib) + #:use-module (gnu packages pkg-config) #:use-module ((guix licenses) - #:select (gpl2+ gpl3+ lgpl3+)) + #:select (gpl2+ gpl3+ lgpl2.1+ lgpl3+)) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (srfi srfi-1)) (define-public mailutils (package @@ -162,3 +167,48 @@ aliasing facilities to work just as they would on normal mail.") "Mutt is a small but very powerful text-based mail client for Unix operating systems.") (license gpl2+))) + +(define-public gmime + (package + (name "gmime") + (version "2.6.19") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/gmime/" + (string-join (take (string-split version #\.) + 2) + ".") + "/gmime-" version ".tar.xz")) + (sha256 + (base32 + "0jm1fgbjgh496rsc0il2y46qd4bqq2ln9168p4zzh68mk4ml1yxg")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gnupg" ,gnupg))) ; for tests only + (inputs `(("glib" ,glib) + ("gpgme" ,gpgme) + ("zlib" ,zlib))) + (arguments + `(#:phases + (alist-cons-after + 'unpack 'patch-paths-in-tests + (lambda _ + ;; The test programs run several programs using 'system' + ;; with hard-coded paths. Here we patch them all. We also + ;; change "gpg" to "gpg2". + (substitute* (find-files "tests" "\\.c$") + (("(system *\\(\")(/[^ ]*)" all pre prog-path) + (let* ((base (basename prog-path)) + (prog (which (if (string=? base "gpg") "gpg2" base)))) + (string-append pre (or prog (error "not found: " base))))))) + %standard-phases))) + (home-page "http://spruce.sourceforge.net/gmime/") + (synopsis "MIME message parser and creator library") + (description + "GMime provides a core library and set of utilities which may be used for +the creation and parsing of messages using the Multipurpose Internet Mail +Extension (MIME).") + (license (list lgpl2.1+ gpl2+ gpl3+)))) + +;;; mail.scm ends here diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 640d502783..fe87e6d25a 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> +;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,15 +27,25 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages fltk) #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages gcc) + #:use-module (gnu packages gd) + #:use-module (gnu packages ghostscript) #:use-module (gnu packages gtk) + #:use-module (gnu packages less) + #:use-module (gnu packages xorg) + #:use-module (gnu packages gl) #:use-module (gnu packages multiprecision) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages texlive) #:use-module (gnu packages xml)) (define-public units @@ -163,7 +174,7 @@ output in text, PostScript, PDF or HTML.") (define-public lapack (package (name "lapack") - (version "3.4.2") + (version "3.5.0") (source (origin (method url-fetch) @@ -171,16 +182,7 @@ output in text, PostScript, PDF or HTML.") version ".tgz")) (sha256 (base32 - "1w7sf8888m7fi2kyx1fzgbm22193l8c2d53m8q1ibhvfy6m5v9k0")) - (snippet - ;; Remove non-free files. - ;; See <http://icl.cs.utk.edu/lapack-forum/archives/lapack/msg01383.html>. - '(for-each (lambda (file) - (format #t "removing '~a'~%" file) - (delete-file file)) - '("lapacke/example/example_DGESV_rowmajor.c" - "lapacke/example/example_ZGESV_rowmajor.c" - "DOCS/psfig.tex"))))) + "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s")))) (build-system cmake-build-system) (home-page "http://www.netlib.org/lapack/") (inputs `(("fortran" ,gfortran-4.8) @@ -202,3 +204,120 @@ output in text, PostScript, PDF or HTML.") problems in numerical linear algebra.") (license (license:bsd-style "file://LICENSE" "See LICENSE in the distribution.")))) + +(define-public gnuplot + (package + (name "gnuplot") + (version "4.6.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/" + version "/gnuplot-" version ".tar.gz")) + (sha256 + (base32 + "1xd7gqdhlk7k1p9yyqf9vkk811nadc7m4si0q3nb6cpv4pxglpyz")))) + (build-system gnu-build-system) + (inputs `(("readline" ,readline) + ("cairo" ,cairo) + ("pango" ,pango) + ("gd" ,gd))) + (native-inputs `(("texlive" ,texlive) + ("pkg-config" ,pkg-config))) + (home-page "http://www.gnuplot.info") + (synopsis "Command-line driven graphing utility") + (description "Gnuplot is a portable command-line driven graphing +utility. It was originally created to allow scientists and students to +visualize mathematical functions and data interactively, but has grown to +support many non-interactive uses such as web scripting. It is also used as a +plotting engine by third-party applications like Octave.") + ;; X11 Style with the additional restriction that derived works may only be + ;; distributed as patches to the original. + (license (license:fsf-free + "http://gnuplot.cvs.sourceforge.net/gnuplot/gnuplot/Copyright")))) + +(define-public hdf5 + (package + (name "hdf5") + (version "1.8.12") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-" + version ".tar.bz2")) + (sha256 + (base32 "0f9n0v3p3lwc7564791a39c6cn1d3dbrn7d1j3ikqsi27a8hy23d")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (alist-replace + 'configure + (lambda* (#:key target system outputs #:allow-other-keys #:rest args) + (let ((configure (assoc-ref %standard-phases 'configure))) + (substitute* "configure" + (("/bin/mv") "mv")) + (apply configure args))) + %standard-phases))) + (outputs '("out" "bin" "lib" "include")) + (home-page "http://www.hdfgroup.org") + (synopsis "Management suite for extremely large and complex data") + (description "HDF5 is a suite that makes possible the management of +extremely large and complex data collections.") + (license (license:x11-style "http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) + + +;; For a fully featured Octave, users are strongly recommended also to install +;; the following packages: texinfo, less, ghostscript, gnuplot. +(define-public octave + (package + (name "octave") + (version "3.8.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/octave/octave-" + version ".tar.gz")) + (sha256 + (base32 + "0ks9pr154syw0vb3jn6xsnrkkrbvf9y7i7gaxa28rz6ngxbxvq9l")))) + (build-system gnu-build-system) + (inputs + `(("lapack" ,lapack) + ("readline" ,readline) + ("glpk" ,glpk) + ("curl" ,curl) + ("pcre" ,pcre) + ("fltk" ,fltk) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("hdf5-lib" ,hdf5 "lib") + ("hdf5-include" ,hdf5 "include") + ("libxft" ,libxft) + ("mesa" ,mesa) + ("zlib" ,zlib))) + (native-inputs + `(("gfortran" ,gfortran-4.8) + ("pkg-config" ,pkg-config) + ("perl" ,perl) + ;; The following inputs are not actually used in the build process. However, the + ;; ./configure gratuitously tests for their existence and assumes that programs not + ;; present at build time are also not, and can never be, available at run time! + ;; If these inputs are therefore not present, support for them will be built out. + ;; However, Octave will still run without them, albeit without the features they + ;; provide. + ("less" ,less) + ("texinfo" ,texinfo) + ("ghostscript" ,ghostscript) + ("gnuplot" ,gnuplot))) + (arguments + `(#:configure-flags (list (string-append "--with-shell=" + (assoc-ref %build-inputs "bash") + "/bin/sh")))) + (home-page "http://www.gnu.org/software/octave/") + (synopsis "High-level language for numerical computation") + (description "GNU Octave is a high-level interpreted language that is specialized +for numerical computations. It can be used for both linear and non-linear +applications and it provides great support for visualizing results. Work may +be performed both at the interactive command-line as well as via script +files.") + (license license:gpl3+))) diff --git a/gnu/packages/moe.scm b/gnu/packages/moe.scm new file mode 100644 index 0000000000..0dead5fe0c --- /dev/null +++ b/gnu/packages/moe.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.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 moe) + #:use-module (guix licenses) + #:use-module (gnu packages ncurses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public moe + (package + (name "moe") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/moe/moe-" + version ".tar.gz")) + (sha256 + (base32 + "0hqag8022x68jmii1v6n7jb4fhp9icjkapgcpd2j3p9nzc8xch7s")))) + (build-system gnu-build-system) + (inputs + `(("ncurses" ,ncurses))) + (home-page "https://www.gnu.org/software/moe/moe.html") + (synopsis "Modeless, multiple-buffer, user-friendly 8-bit text editor") + (description + "GNU Moe is a powerful-but-simple-to-use text editor. It works in a +modeless manner, and features an intuitive set of key-bindings that +assign a degree of severity to each key; for example, key +combinations with the Alt key are for harmless commands like cursor +movements while combinations with the Control key are for commands +that will modify the text. Moe features multiple windows, unlimited +undo/redo, unlimited line length, global search and replace, and +more.") + (license gpl3+))) diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index 7e324703a6..c64efe4c03 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -298,7 +298,8 @@ format.") version "/mpc123-" version ".tar.gz")) (sha256 (base32 - "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1")))) + "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1")) + (patches (list (search-patch "mpc123-initialize-ao.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm index 438e76fd71..c0f8b6ff88 100644 --- a/gnu/packages/openssl.scm +++ b/gnu/packages/openssl.scm @@ -27,13 +27,13 @@ (define-public openssl (package (name "openssl") - (version "1.0.1c") + (version "1.0.1f") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version ".tar.gz")) (sha256 (base32 - "1gjy6a7d8nszi9wq8jdzx3cffn0nss23h3cw2ywlw4cb9v6v77ia")))) + "0nnbr70dg67raqsqvlypzxa1v5xsv9gp91f9pavyckfn2w5sihkc")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (arguments diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 9ce24a3cbf..684ef1821e 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -27,7 +27,7 @@ (define-public parallel (package (name "parallel") - (version "20131222") + (version "20140122") (source (origin (method url-fetch) @@ -35,7 +35,7 @@ version ".tar.bz2")) (sha256 (base32 - "08ggxb4id263623mr14clafsdl1n1zhfx13z3mn6kqbd4d6vwwk7")))) + "17y72p7qwr7n0qy9nzxwhcn3q47829fd0d69gql2x6szlsxkk0xi")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (home-page "http://www.gnu.org/software/parallel/") diff --git a/gnu/packages/patches/bigloo-gc-shebangs.patch b/gnu/packages/patches/bigloo-gc-shebangs.patch index 9ead2ba979..367708610a 100644 --- a/gnu/packages/patches/bigloo-gc-shebangs.patch +++ b/gnu/packages/patches/bigloo-gc-shebangs.patch @@ -1,7 +1,7 @@ Patch shebangs in source that gets unpacked by `configure'. ---- bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:45:20.000000000 +0200 -+++ bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:46:36.000000000 +0200 +--- bigloo4.1a/gc/install-gc-7.4.0 2014-02-04 14:55:03.000000000 +0100 ++++ bigloo4.1a/gc/install-gc-7.4.0 2014-02-04 14:55:36.000000000 +0100 @@ -29,10 +29,12 @@ fi # untar the two versions of the GC diff --git a/gnu/packages/patches/curl-fix-test172.patch b/gnu/packages/patches/curl-fix-test172.patch new file mode 100644 index 0000000000..cc2c2705e7 --- /dev/null +++ b/gnu/packages/patches/curl-fix-test172.patch @@ -0,0 +1,12 @@ +diff --git a/tests/data/test172 b/tests/data/test172 +index b3efae9..3d53418 100644 +--- a/tests/data/test172 ++++ b/tests/data/test172 +@@ -36,7 +36,7 @@ http://%HOSTIP:%HTTPPORT/we/want/172 -b log/jar172.txt -b "tool=curl; name=fool" + + .%HOSTIP TRUE /silly/ FALSE 0 ismatch this + .%HOSTIP TRUE / FALSE 0 partmatch present +-%HOSTIP FALSE /we/want/ FALSE 1391252187 nodomain value ++%HOSTIP FALSE /we/want/ FALSE 2139150993 nodomain value + </file> + </client> diff --git a/gnu/packages/patches/dmd-tests-longer-sleeps.patch b/gnu/packages/patches/dmd-tests-longer-sleeps.patch new file mode 100644 index 0000000000..708000f351 --- /dev/null +++ b/gnu/packages/patches/dmd-tests-longer-sleeps.patch @@ -0,0 +1,52 @@ +Increase sleep times in tests, for slower machines. + +Patch by Mark H Weaver <mhw@netris.org>. + +--- dmd/tests/basic.sh 2013-11-30 17:22:00.000000000 -0500 ++++ dmd/tests/basic.sh 2014-02-16 02:18:34.036376953 -0500 +@@ -46,7 +46,7 @@ + dmd -I -s "$socket" -c "$conf" -l "$log" & + dmd_pid=$! + +-sleep 1 # XXX: wait till it's up ++sleep 3 # XXX: wait till it's up + kill -0 $dmd_pid + test -S "$socket" + $deco status dmd | grep -E '(Start.*dmd|Stop.*test)' +--- dmd/tests/respawn.sh 2013-12-01 16:50:37.000000000 -0500 ++++ dmd/tests/respawn.sh 2014-02-16 02:19:16.958251953 -0500 +@@ -39,7 +39,7 @@ + i=0 + while ! test -f "$1" && test $i -lt 20 + do +- sleep 0.3 ++ sleep 1 + i=`expr $i + 1` + done + test -f "$1" +@@ -65,14 +65,14 @@ + #:provides '(test1) + #:start (make-forkexec-constructor + "$SHELL" "-c" +- "echo \$\$ > $service1_pid ; while true ; do sleep 1 ; done") ++ "echo \$\$ > $service1_pid ; while true ; do sleep 3 ; done") + #:stop (make-kill-destructor) + #:respawn? #t) + (make <service> + #:provides '(test2) + #:start (make-forkexec-constructor + "$SHELL" "-c" +- "echo \$\$ > $service2_pid ; while true ; do sleep 1 ; done") ++ "echo \$\$ > $service2_pid ; while true ; do sleep 3 ; done") + #:stop (make-kill-destructor) + #:respawn? #t)) + (start 'test1) +@@ -82,7 +82,7 @@ + dmd -I -s "$socket" -c "$conf" -l "$log" & + dmd_pid=$! + +-sleep 1 # XXX: wait till it's up ++sleep 3 # XXX: wait till it's up + kill -0 $dmd_pid + test -S "$socket" + $deco status test1 | grep started diff --git a/gnu/packages/patches/gdb-loongson-madd-fix.patch b/gnu/packages/patches/gdb-loongson-madd-fix.patch deleted file mode 100644 index 0d50dd2dd4..0000000000 --- a/gnu/packages/patches/gdb-loongson-madd-fix.patch +++ /dev/null @@ -1,44 +0,0 @@ -Fix the Loongson 2F specific fused multiply-add instructions on paired singles to -use the encoding recognized by the processor, as opposed to the mistaken english -Loongson 2F documentation. - -Patch by Mark H Weaver <mhw@netris.org>. - ---- gdb/opcodes/mips-opc.c.orig 2013-02-09 05:24:18.000000000 -0500 -+++ gdb/opcodes/mips-opc.c 2013-10-27 23:35:20.191997541 -0400 -@@ -956,7 +956,7 @@ - {"madd.s", "D,S,T", 0x4600001c, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, EE }, - {"madd.ps", "D,R,S,T", 0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 }, - {"madd.ps", "D,S,T", 0x45600018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E }, --{"madd.ps", "D,S,T", 0x71600018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, -+{"madd.ps", "D,S,T", 0x72c00018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, - {"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, - {"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, - {"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, -@@ -1084,7 +1084,7 @@ - {"msub.s", "D,S,T", 0x4600001d, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, EE }, - {"msub.ps", "D,R,S,T", 0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 }, - {"msub.ps", "D,S,T", 0x45600019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E }, --{"msub.ps", "D,S,T", 0x71600019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, -+{"msub.ps", "D,S,T", 0x72c00019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, - {"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 }, - {"msub", "s,t", 0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, - {"msub", "7,s,t", 0x70000004, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 }, -@@ -1218,7 +1218,7 @@ - {"nmadd.s", "D,S,T", 0x7200001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, IL2F }, - {"nmadd.ps","D,R,S,T", 0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 }, - {"nmadd.ps", "D,S,T", 0x4560001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E }, --{"nmadd.ps", "D,S,T", 0x7160001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, -+{"nmadd.ps", "D,S,T", 0x72c0001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, - {"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4_33 }, - {"nmsub.d", "D,S,T", 0x4620001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E }, - {"nmsub.d", "D,S,T", 0x7220001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, -@@ -1227,7 +1227,7 @@ - {"nmsub.s", "D,S,T", 0x7200001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, IL2F }, - {"nmsub.ps","D,R,S,T", 0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 }, - {"nmsub.ps", "D,S,T", 0x4560001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E }, --{"nmsub.ps", "D,S,T", 0x7160001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, -+{"nmsub.ps", "D,S,T", 0x72c0001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F }, - /* nop is at the start of the table. */ - {"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, - {"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO, 0, I1 }, diff --git a/gnu/packages/patches/gnunet-fix-scheduler.patch b/gnu/packages/patches/gnunet-fix-scheduler.patch new file mode 100644 index 0000000000..1e0aef2a1a --- /dev/null +++ b/gnu/packages/patches/gnunet-fix-scheduler.patch @@ -0,0 +1,13 @@ +Index: src/util/scheduler.c +=================================================================== +--- src/util/scheduler.c (revision 31745) ++++ src/util/scheduler.c (working copy) +@@ -1599,7 +1599,7 @@ + int real_fd; + + GNUNET_DISK_internal_file_handle_ (fd, &real_fd, sizeof (int)); +- GNUNET_assert (real_fd > 0); ++ GNUNET_assert (real_fd >= 0); + return add_without_sets ( + delay, priority, + on_read ? real_fd : -1, diff --git a/gnu/packages/patches/gnunet-fix-tests.patch b/gnu/packages/patches/gnunet-fix-tests.patch new file mode 100644 index 0000000000..4276db5a7c --- /dev/null +++ b/gnu/packages/patches/gnunet-fix-tests.patch @@ -0,0 +1,58 @@ +diff -ru a/src/peerinfo-tool/Makefile.in b/src/peerinfo-tool/Makefile.in +--- src/peerinfo-tool/Makefile.in 2013-12-24 13:55:04.000000000 +0100 ++++ src/peerinfo-tool/Makefile.in 2014-01-30 13:07:52.275965484 +0100 +@@ -335,9 +335,6 @@ + $(top_builddir)/src/statistics/libgnunetstatistics.la \ + $(top_builddir)/src/util/libgnunetutil.la + +-@HAVE_PYTHON_TRUE@check_SCRIPTS = \ +-@HAVE_PYTHON_TRUE@ test_gnunet_peerinfo.py +- + @ENABLE_TEST_RUN_TRUE@TESTS = $(check_SCRIPTS) + do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g' + EXTRA_DIST = \ +diff -ru a/src/revocation/test_revocation.conf b/src/revocation/test_revocation.conf +--- src/revocation/test_revocation.conf 2013-12-21 18:57:06.000000000 +0100 ++++ src/revocation/test_revocation.conf 2014-01-30 15:00:02.841340556 +0100 +@@ -20,6 +20,9 @@ + [transport-udp] + BROADCAST = NO + ++[nat] ++RETURN_LOCAL_ADDRESSES = YES ++ + [peerinfo] + USE_INCLUDED_HELLOS = NO + +Index: src/gns/test_gns_cname_lookup.sh +=================================================================== +--- src/gns/test_gns_cname_lookup.sh (revision 32117) ++++ src/gns/test_gns_cname_lookup.sh (revision 32118) +@@ -13,6 +13,15 @@ + exit 77 + fi + ++# permissive DNS resolver we will use for the test ++DNS_RESOLVER="8.8.8.8" ++if ! nslookup gnunet.org $DNS_RESOLVER &> /dev/null ++then ++ echo "Cannot reach DNS, skipping test" ++ exit 77 ++fi ++ ++ + rm -rf /tmp/test-gnunet-gns-peer-1/ + + TEST_DOMAIN_PLUS="www.gnu" +Index: src/integration-tests/confs/test_defaults.conf +=================================================================== +--- src/integration-tests/confs/test_defaults.conf (revision 32320) ++++ src/integration-tests/confs/test_defaults.conf (working copy) +@@ -17,6 +17,7 @@ + EXTERNAL_ADDRESS = 127.0.0.1 + INTERNAL_ADDRESS = 127.0.0.1 + BINDTO = 127.0.0.1 ++RETURN_LOCAL_ADDRESSES = YES + + [hostlist] + SERVERS = diff --git a/gnu/packages/patches/inkscape-stray-comma.patch b/gnu/packages/patches/inkscape-stray-comma.patch new file mode 100644 index 0000000000..0b000d9e30 --- /dev/null +++ b/gnu/packages/patches/inkscape-stray-comma.patch @@ -0,0 +1,13 @@ +This is verbatim from Upstream: http://bazaar.launchpad.net/~inkscape.dev/inkscape/RELEASE_0_48_BRANCH/diff/9943 +--- a/src/widgets/desktop-widget.h 2011-06-06 06:43:00 +0000 ++++ b/src/widgets/desktop-widget.h 2013-01-05 14:34:09 +0000 +@@ -239,7 +239,7 @@ + private: + GtkWidget *tool_toolbox; + GtkWidget *aux_toolbox; +- GtkWidget *commands_toolbox,; ++ GtkWidget *commands_toolbox; + GtkWidget *snap_toolbox; + + static void init(SPDesktopWidget *widget); + diff --git a/gnu/packages/patches/mpc123-initialize-ao.patch b/gnu/packages/patches/mpc123-initialize-ao.patch new file mode 100644 index 0000000000..85e461f896 --- /dev/null +++ b/gnu/packages/patches/mpc123-initialize-ao.patch @@ -0,0 +1,19 @@ +Description: Zero ao_sample_format structure to cope with libao 1.0.0 +Author: Colin Watson <cjwatson@debian.org> +Bug-Debian: http://bugs.debian.org/591396 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/710268 +Forwarded: no +Last-Update: 2013-05-07 + +Index: b/ao.c +=================================================================== +--- a/ao.c ++++ b/ao.c +@@ -123,6 +123,7 @@ + + /* initialize ao_format struct */ + /* XXX VERY WRONG */ ++ memset(&ao_fmt, 0, sizeof(ao_fmt)); + ao_fmt.bits=16; /*tmp_stream_info.average_bitrate;*/ + ao_fmt.rate=streaminfo->sample_freq; + ao_fmt.channels=streaminfo->channels; diff --git a/gnu/packages/patches/patchelf-page-size.patch b/gnu/packages/patches/patchelf-page-size.patch new file mode 100644 index 0000000000..2528b604e5 --- /dev/null +++ b/gnu/packages/patches/patchelf-page-size.patch @@ -0,0 +1,69 @@ +Improve the determination of pageSize in patchelf.cc. + +Patch by Mark H Weaver <mhw@netris.org>. + +--- patchelf/src/patchelf.cc.orig 1969-12-31 19:00:01.000000000 -0500 ++++ patchelf/src/patchelf.cc 2014-02-16 20:15:06.283203125 -0500 +@@ -21,11 +21,19 @@ + using namespace std; + + +-#ifdef MIPSEL +-/* The lemote fuloong 2f kernel defconfig sets a page size of 16KB */ +-const unsigned int pageSize = 4096*4; +-#else ++/* Note that some platforms support multiple page sizes. Therefore, ++ it is not enough to query the current page size. 'pageSize' must ++ be the maximum architectural page size for the platform, which is ++ typically defined in the corresponding ABI document. ++ ++ XXX FIXME: This won't work when we're cross-compiling. */ ++ ++#if defined __MIPSEL__ || defined __MIPSEB__ || defined __aarch64__ ++const unsigned int pageSize = 65536; ++#elif defined __x86_64__ || defined __i386__ || defined __arm__ + const unsigned int pageSize = 4096; ++#else ++# error maximum architectural page size unknown for this platform + #endif + + +--- patchelf/tests/no-rpath.sh.orig 1969-12-31 19:00:01.000000000 -0500 ++++ patchelf/tests/no-rpath.sh 2014-02-16 20:44:12.036376953 -0500 +@@ -1,22 +1,22 @@ + #! /bin/sh -e + +-rm -rf scratch +-mkdir -p scratch ++if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then ++ rm -rf scratch ++ mkdir -p scratch + +-cp no-rpath scratch/ ++ cp no-rpath scratch/ + +-oldRPath=$(../src/patchelf --print-rpath scratch/no-rpath) +-if test -n "$oldRPath"; then exit 1; fi +-../src/patchelf \ +- --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \ +- --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx scratch/no-rpath ++ oldRPath=$(../src/patchelf --print-rpath scratch/no-rpath) ++ if test -n "$oldRPath"; then exit 1; fi ++ ../src/patchelf \ ++ --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \ ++ --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx scratch/no-rpath + +-newRPath=$(../src/patchelf --print-rpath scratch/no-rpath) +-if ! echo "$newRPath" | grep -q '/foo:/bar'; then +- echo "incomplete RPATH" +- exit 1 +-fi ++ newRPath=$(../src/patchelf --print-rpath scratch/no-rpath) ++ if ! echo "$newRPath" | grep -q '/foo:/bar'; then ++ echo "incomplete RPATH" ++ exit 1 ++ fi + +-if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then + cd scratch && ./no-rpath + fi diff --git a/gnu/packages/patches/ratpoison-shell.patch b/gnu/packages/patches/ratpoison-shell.patch new file mode 100644 index 0000000000..63d265a382 --- /dev/null +++ b/gnu/packages/patches/ratpoison-shell.patch @@ -0,0 +1,91 @@ +Use $SHELL instead of hardcoding /bin/sh in ratpoison. + +Patch by Mark H Weaver <mhw@netris.org>. + +--- ratpoison/src/actions.c.orig 2013-04-06 21:37:43.000000000 -0400 ++++ ratpoison/src/actions.c 2014-02-13 00:34:10.992553710 -0500 +@@ -19,6 +19,7 @@ + */ + + #include <unistd.h> ++#include <stdlib.h> + #include <ctype.h> /* for isspace */ + #include <sys/wait.h> + #include <X11/keysym.h> +@@ -223,12 +223,12 @@ + add_command ("escape", cmd_escape, 1, 1, 1, + "Key: ", arg_KEY); + add_command ("exec", cmd_exec, 1, 1, 1, +- "/bin/sh -c ", arg_SHELLCMD); ++ "$SHELL -c ", arg_SHELLCMD); + add_command ("execa", cmd_execa, 1, 1, 1, +- "/bin/sh -c ", arg_SHELLCMD); ++ "$SHELL -c ", arg_SHELLCMD); + add_command ("execf", cmd_execf, 2, 2, 2, + "frame to execute in:", arg_FRAME, +- "/bin/sh -c ", arg_SHELLCMD); ++ "$SHELL -c ", arg_SHELLCMD); + add_command ("fdump", cmd_fdump, 1, 0, 0, + "", arg_NUMBER); + add_command ("focus", cmd_next_frame, 0, 0, 0); +@@ -359,7 +359,7 @@ + add_command ("unsetenv", cmd_unsetenv, 1, 1, 1, + "Variable: ", arg_STRING); + add_command ("verbexec", cmd_verbexec, 1, 1, 1, +- "/bin/sh -c ", arg_SHELLCMD); ++ "$SHELL -c ", arg_SHELLCMD); + add_command ("version", cmd_version, 0, 0, 0); + add_command ("vsplit", cmd_v_split, 1, 0, 0, + "Split: ", arg_STRING); +@@ -2627,6 +2627,9 @@ + pid = fork(); + if (pid == 0) + { ++ char *shell_path; ++ char *shell_name; ++ + /* Some process setup to make sure the spawned process runs + in its own session. */ + putenv(current_screen()->display_string); +@@ -2641,7 +2644,18 @@ + /* raw means don't run it through sh. */ + if (raw) + execl (cmd, cmd, NULL); +- execl("/bin/sh", "sh", "-c", cmd, NULL); ++ ++ shell_path = getenv ("SHELL"); ++ if (shell_path == NULL) ++ shell_path = "/bin/sh"; ++ ++ shell_name = strrchr (shell_path, '/'); ++ if (shell_name == NULL) ++ shell_name = shell_path; ++ else ++ shell_name++; ++ ++ execl(shell_path, shell_name, "-c", cmd, NULL); + _exit(EXIT_FAILURE); + } + +--- ratpoison/src/events.c.orig 2013-04-06 20:05:48.000000000 -0400 ++++ ratpoison/src/events.c 2014-02-13 00:34:39.327758789 -0500 +@@ -920,7 +920,7 @@ + { + /* Report any child that didn't return 0. */ + if (cur->status != 0) +- marked_message_printf (0,0, "/bin/sh -c \"%s\" finished (%d)", ++ marked_message_printf (0,0, "$SHELL -c \"%s\" finished (%d)", + cur->cmd, cur->status); + list_del (&cur->node); + free (cur->cmd); +--- ratpoison/src/messages.h.orig 2012-07-20 20:25:33.000000000 -0400 ++++ ratpoison/src/messages.h 2014-02-13 00:34:28.608398437 -0500 +@@ -41,7 +41,7 @@ + + #define MESSAGE_PROMPT_SWITCH_TO_WINDOW "Switch to window: " + #define MESSAGE_PROMPT_NEW_WINDOW_NAME "Set window's title to: " +-#define MESSAGE_PROMPT_SHELL_COMMAND "/bin/sh -c " ++#define MESSAGE_PROMPT_SHELL_COMMAND "$SHELL -c " + #define MESSAGE_PROMPT_COMMAND ":" + #define MESSAGE_PROMPT_SWITCH_WM "Switch to wm: " + #define MESSAGE_PROMPT_XTERM_COMMAND MESSAGE_PROMPT_SHELL_COMMAND TERM_PROG " -e " diff --git a/gnu/packages/patches/slim-config.patch b/gnu/packages/patches/slim-config.patch new file mode 100644 index 0000000000..5e6135d75c --- /dev/null +++ b/gnu/packages/patches/slim-config.patch @@ -0,0 +1,27 @@ +Allow the configuration file and theme directory to be specified at run time. +Patch by Eelco Dolstra, from Nixpkgs. + +--- slim-1.3.6/app.cpp 2013-10-02 00:38:05.000000000 +0200 ++++ slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200 +@@ -200,7 +200,9 @@ + + /* Read configuration and theme */ + cfg = new Cfg; +- cfg->readConf(CFGFILE); ++ char *cfgfile = getenv("SLIM_CFGFILE"); ++ if (!cfgfile) cfgfile = CFGFILE; ++ cfg->readConf(cfgfile); + string themebase = ""; + string themefile = ""; + string themedir = ""; +@@ -208,7 +210,9 @@ + if (testing) { + themeName = testtheme; + } else { +- themebase = string(THEMESDIR) + "/"; ++ char *themesdir = getenv("SLIM_THEMESDIR"); ++ if (!themesdir) themesdir = THEMESDIR; ++ themebase = string(themesdir) + "/"; + themeName = cfg->getOption("current_theme"); + string::size_type pos; + if ((pos = themeName.find(",")) != string::npos) { diff --git a/gnu/packages/patches/slim-session.patch b/gnu/packages/patches/slim-session.patch new file mode 100644 index 0000000000..b85d3f7dd0 --- /dev/null +++ b/gnu/packages/patches/slim-session.patch @@ -0,0 +1,17 @@ +Exit after the user's session has finished. This works around slim's broken +PAM session handling (see +http://developer.berlios.de/bugs/?func=detailbug&bug_id=19102&group_id=2663). + +Patch by Eelco Dolstra, from Nixpkgs. + +--- slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200 ++++ slim-1.3.6/app.cpp 2013-10-15 13:00:10.141210784 +0200 +@@ -816,7 +822,7 @@ + StopServer(); + RemoveLock(); + while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */ +- Run(); ++ exit(OK_EXIT); + } + + void App::KillAllClients(Bool top) { diff --git a/gnu/packages/patches/slim-sigusr1.patch b/gnu/packages/patches/slim-sigusr1.patch new file mode 100644 index 0000000000..344b02933e --- /dev/null +++ b/gnu/packages/patches/slim-sigusr1.patch @@ -0,0 +1,33 @@ +This patch fixes SLiM so it really waits for the X server to be ready +before attempting to connect to it. Indeed, the X server notices that +its parent process has a handler for SIGUSR1, and consequently sends it +SIGUSR1 when it's ready to accept connections. + +The problem was that SLiM doesn't pay attention to SIGUSR1. So in practice, +if X starts slowly, then SLiM gets ECONNREFUSED a couple of time on +/tmp/.X11-unix/X0, then goes on trying to connect to localhost:6000, +where nobody answers; eventually, it times out and tries again on +/tmp/.X11-unix/X0, and finally it shows up on the screen. + +Patch by L. Courtès. + +--- slim-1.3.6/app.cpp 2014-02-05 15:27:20.000000000 +0100 ++++ slim-1.3.6/app.cpp 2014-02-09 22:42:04.000000000 +0100 +@@ -119,7 +119,9 @@ void CatchSignal(int sig) { + exit(ERR_EXIT); + } + ++static volatile int got_sigusr1 = 0; + void User1Signal(int sig) { ++ got_sigusr1 = 1; + signal(sig, User1Signal); + } + +@@ -884,6 +886,7 @@ int App::WaitForServer() { + int ncycles = 120; + int cycles; + ++ while (!got_sigusr1); + for(cycles = 0; cycles < ncycles; cycles++) { + if((Dpy = XOpenDisplay(DisplayName))) { + XSetIOErrorHandler(xioerror); diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index b5070e7fda..44e3c14aa2 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; ;;; This file is part of GNU Guix. @@ -323,24 +323,28 @@ datetime module, available in Python 2.3+.") (define-public python2-pysqlite (package (name "python2-pysqlite") - (version "2.6.3") + (version "2.6.3a") ; see below (source (origin (method url-fetch) - (uri (string-append "http://pysqlite.googlecode.com/files/pysqlite-" - version ".tar.gz")) + ;; During the switch from code.google.com to pypi.python.org, the 2.6.3 + ;; tarball was modified, but the version number was kept: + ;; <https://lists.gnu.org/archive/html/guix-devel/2014-02/msg00077.html>. + ;; Here we want to refer to the pypi-hosted 2.6.3 tarball. + (uri (string-append + "https://pypi.python.org/packages/source/p/pysqlite/pysqlite-" + "2.6.3" ".tar.gz")) (sha256 (base32 - "0nsqqfp072rgqbls100rdvbzkjkin7li3kprhfxlfqvzf608hlqd")))) + "13djzgnbi71znjjyaw4nybg6smilgszcid646j5qav7mdchkb77y")))) (build-system python-build-system) (inputs `(("sqlite" ,sqlite))) (arguments `(#:python ,python-2 ; incompatible with Python 3 #:tests? #f)) ; no test target - (home-page "http://labix.org/python-dateutil") - (synopsis - "SQLite bindings for Python.") + (home-page "https://pypi.python.org/pypi/pysqlite") + (synopsis "SQLite bindings for Python") (description "Pysqlite provides SQLite bindings for Python that comply to the Database API 2.0T.") diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index 4212d74821..e0b9e4aeb1 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -73,6 +73,7 @@ (zero? (system* "./configure" (string-append "--cc=" (which "gcc")) + "--disable-debug-info" ; save build space (string-append "--prefix=" out) (string-append "--smbd=" samba "/sbin/smbd"))))) @@ -132,6 +133,9 @@ server and embedded PowerPC, and S390 guests.") (define-public qemu/smb-shares ;; A patched QEMU where `-net smb' yields two shares instead of one: one for ;; the store, and another one for exchanges with the host. + + ;; TODO: Use 9p/-virtfs instead of this SMB hack: + ;; <http://wiki.qemu.org/Documentation/9psetup>. (package (inherit qemu-headless) (name "qemu-with-multiple-smb-shares") (source (origin (inherit (package-source qemu-headless)) diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm index fb1bfd8516..aabd1d330c 100644 --- a/gnu/packages/ratpoison.scm +++ b/gnu/packages/ratpoison.scm @@ -21,6 +21,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:select (gpl2+)) + #:use-module (gnu packages) #:use-module (gnu packages xorg) #:use-module (gnu packages perl) #:use-module (gnu packages readline) @@ -37,7 +38,8 @@ version ".tar.xz")) (sha256 (base32 - "0v4mh8d3vsh5xbbycfdl3g8zfygi1rkslh1x7k5hi1d05bfq3cdr")))) + "0v4mh8d3vsh5xbbycfdl3g8zfygi1rkslh1x7k5hi1d05bfq3cdr")) + (patches (list (search-patch "ratpoison-shell.patch"))))) (build-system gnu-build-system) (inputs `(("libXi" ,libxi) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 4dcd46305d..3d9e3b54dc 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -116,14 +116,14 @@ features an integrated Emacs-like editor and a large runtime library.") (define-public bigloo (package (name "bigloo") - (version "4.0b") + (version "4.1a") (source (origin (method url-fetch) (uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo" version ".tar.gz")) (sha256 (base32 - "1fck2h48f0bvh8fl437cagmp0syfxy9lqacy1zwsis20fc76jvzi")) + "170q7nh08n4v20xl81fxb0xcdxphqqacfa643hsa8i2ar6pki04c")) (patches (list (search-patch "bigloo-gc-shebangs.patch"))))) (build-system gnu-build-system) (arguments @@ -163,6 +163,9 @@ features an integrated Emacs-like editor and a large runtime library.") (zero? (system* "./configure" (string-append "--prefix=" out) + ;; FIXME: Currently fails, see + ;; <http://article.gmane.org/gmane.lisp.scheme.bigloo/6126>. + ;; "--customgc=no" ; use our libgc (string-append"--mv=" (which "mv")) (string-append "--rm=" (which "rm")))))) (alist-cons-after diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 25ae1b0721..d86ecde38e 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -55,14 +55,21 @@ (base32 "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn")))) (build-system gnu-build-system) - (arguments '(#:tests? #f)) ; no check target + (arguments + '(;; Explicitly link against Xext because SDL tries to dlopen it and + ;; doesn't go very far otherwise (see + ;; <https://lists.gnu.org/archive/html/guix-devel/2013-11/msg00088.html> + ;; for details.) + #:configure-flags '("LDFLAGS=-lXext") + + #:tests? #f)) ; no check target (propagated-inputs ;; SDL headers include X11 headers. `(("libx11" ,libx11))) + (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libxrandr" ,libxrandr) ("mesa" ,mesa) ("alsa-lib" ,alsa-lib) - ("pkg-config" ,pkg-config) ("pulseaudio" ,pulseaudio))) (synopsis "Cross platform game development library") (description "Simple DirectMedia Layer is a cross-platform development diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm new file mode 100644 index 0000000000..282893d2e6 --- /dev/null +++ b/gnu/packages/search.scm @@ -0,0 +1,58 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Mark H Weaver <mhw@netris.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 search) + #:use-module ((guix licenses) + #:select (gpl2+ bsd-3 x11)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages compression) + #:use-module (gnu packages linux) + #:export (xapian)) + +(define-public xapian + (package + (name "xapian") + (version "1.2.17") + (source (origin + (method url-fetch) + (uri (string-append "http://oligarchy.co.uk/xapian/" version + "/xapian-core-" version ".tar.xz")) + (sha256 + (base32 "1pn65h06c23imck2pb42zhrrngch3clk39wl2bjwyqhfyfq4b7g7")))) + (build-system gnu-build-system) + (inputs `(("zlib" ,zlib) + ("util-linux" ,util-linux))) + (arguments + `(#:phases (alist-cons-after + 'unpack 'patch-remotetcp-harness + (lambda _ + (substitute* "tests/harness/backendmanager_remotetcp.cc" + (("/bin/sh") (which "bash")))) + %standard-phases))) + (synopsis "Search Engine Library") + (description + "Xapian is a highly adaptable toolkit which allows developers to easily +add advanced indexing and search facilities to their own applications. It +supports the Probabilistic Information Retrieval model and also supports a +rich set of boolean query operators.") + (home-page "http://xapian.org/") + (license (list gpl2+ bsd-3 x11)))) + +;;; search.scm ends here diff --git a/gnu/packages/shishi.scm b/gnu/packages/shishi.scm index 0523a4eef5..47e7802213 100644 --- a/gnu/packages/shishi.scm +++ b/gnu/packages/shishi.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,9 @@ #:use-module (gnu packages) #:use-module (gnu packages gnutls) #:use-module (gnu packages gnupg) + #:use-module (gnu packages libidn) + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages compression) #:use-module (guix packages) #:use-module (guix download) @@ -40,8 +44,11 @@ (base32 "032qf72cpjdfffq1yq54gz3ahgqf2ijca4vl31sfabmjzq9q370d")))) (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("gnutls" ,gnutls) + ("libidn" ,libidn) + ("linux-pam" ,linux-pam) ("zlib" ,zlib) ;; libgcrypt 1.6 fails because of the following test: ;; #include <gcrypt.h> diff --git a/gnu/packages/slim.scm b/gnu/packages/slim.scm index fd2c73c772..f25b070f3c 100644 --- a/gnu/packages/slim.scm +++ b/gnu/packages/slim.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Guy Grant <gzg@riseup.net> +;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +24,7 @@ #:use-module (guix download) #:use-module (guix build-system cmake) #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (gnu packages gl) #:use-module (gnu packages xorg) #:use-module (gnu packages libpng) @@ -34,13 +36,18 @@ (define-public slim (package (name "slim") - (version "1.3.3") + (version "1.3.6") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/project/slim.berlios/slim-" + ;; Used to be available from + ;; mirror://sourceforge/project/slim.berlios/. + (uri (string-append "http://download.berlios.de/slim/slim-" version ".tar.gz")) (sha256 - (base32 "1fdvipj3658s8dm78djmfr8xhg6l8rr7kc4qcb34bjrnkkclhln1")))) + (base32 "1pqhk22jb4aja4hkrm7rjgbgzjyh7i4zswdgf5nw862l2znzxpi1")) + (patches (map search-patch + (list "slim-config.patch" "slim-session.patch" + "slim-sigusr1.patch"))))) (build-system cmake-build-system) (inputs `(("linux-pam" ,linux-pam) ("libpng" ,libpng) @@ -62,12 +69,23 @@ (lambda _ (substitute* "CMakeLists.txt" (("/etc") - (string-append - (assoc-ref %outputs "out") "/etc")))) + (string-append (assoc-ref %outputs "out") "/etc")) + (("install.*systemd.*") + ;; The build system's logic here is: if "Linux", then + ;; "systemd". Strip that. + ""))) %standard-phases) - #:configure-flags '("-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no") + #:configure-flags '("-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no" + + ;; Don't build libslim.so, because then the build + ;; system is unable to set the right RUNPATH on the + ;; 'slim' binary. + "-DBUILD_SHARED_LIBS=OFF" + + ;; Leave a valid RUNPATH upon install. + "-DCMAKE_SKIP_BUILD_RPATH=ON") #:tests? #f)) - (home-page "http://www.slim.berlios.de/") + (home-page "http://slim.berlios.de/") (synopsis "Desktop-independent graphcal login manager for X11") (description "SLiM is a Desktop-independent graphical login manager for X11, derived diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 7589408e47..41ceeb6cef 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -120,14 +120,14 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "6.1p1") + (version "6.5p1") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-" version ".tar.gz")) (sha256 (base32 - "04f4l4vx6f964v5qjm03nhyixdc3llc90z6cj70r0bl5q3v5ghfi")))) + "09wh7mi65aahyxd2xvq1makckhd5laid8c0pb8njaidrbpamw6d1")))) (build-system gnu-build-system) (inputs `(("groff" ,groff) ("openssl" ,openssl) @@ -150,7 +150,7 @@ a server that supports the SSH-2 protocol.") (let ((check (assoc-ref %standard-phases 'check))) ;; remove tests that require the user sshd (substitute* "regress/Makefile" - (("t9 t-exec") "t9")) + (("t10 t-exec") "t10")) (apply check args))) (alist-replace 'install diff --git a/gnu/packages/stalonetray.scm b/gnu/packages/stalonetray.scm new file mode 100644 index 0000000000..5a53cd832e --- /dev/null +++ b/gnu/packages/stalonetray.scm @@ -0,0 +1,48 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Raimon Grau <raimonster@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 stalonetray) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:select (gpl2+)) + #:use-module (gnu packages xorg)) + +(define-public stalonetray + (package + (name "stalonetray") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/stalonetray/stalonetray-" + version "/stalonetray-" version ".tar.bz2")) + (sha256 + (base32 + "1wp8pnlv34w7xizj1vivnc3fkwqq4qgb9dbrsg15598iw85gi8ll")))) + (inputs `(("libx11" ,libx11))) + (build-system gnu-build-system) + (home-page "stalonetray") + (synopsis "Standalone freedesktop.org and KDE systray implementation") + (description + "Stalonetray is a stand-alone freedesktop.org and KDE system +tray (notification area) for X Window System/X11 (e.g. X.Org or XFree86). It +has full XEMBED support and minimal dependencies: an X11 lib only. Stalonetray +works with virtually any EWMH-compliant window manager.") + (license gpl2+))) diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index 7c753a7cf6..0f21ec3211 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -50,3 +50,17 @@ package includes both the tools necessary to produce Info documents from their source and the command-line Info reader. The emphasis of the language is on expressing the content semantically, avoiding physical markup commands.") (license gpl3+))) + +(define-public texinfo-4 + (package (inherit texinfo) + (version "4.13a") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/texinfo/texinfo-" + version + ".tar.lzma")) + (sha256 + (base32 + "1rf9ckpqwixj65bw469i634897xwlgkm5i9g2hv3avl6mv7b0a3d")))) + (inputs `(("ncurses" ,ncurses) ("xz" ,xz))))) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index adcd11f40e..772b2a3c17 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -31,14 +31,14 @@ (define-public tor (package (name "tor") - (version "0.2.4.19") + (version "0.2.4.20") (source (origin (method url-fetch) (uri (string-append "https://www.torproject.org/dist/tor-" version ".tar.gz")) (sha256 (base32 - "08g1g6wkvg1a5hpjbjzr31sabqp65h9hrkjar4lif5pmqdw898jk")))) + "17sd54pfz1w2x5bd0j83vac8d1lazy9wdm9liijqzyfbrd3igifc")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 6c17170eef..abcbfba88a 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -38,7 +38,8 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) - #:use-module (gnu packages xml)) + #:use-module (gnu packages xml) + #:use-module (gnu packages ncurses)) @@ -4377,7 +4378,10 @@ tracking.") ; the compiled keyboard maps go? (string-append "--with-xkb-bin-directory=" (assoc-ref %build-inputs "xkbcomp") - "/bin")) + "/bin") + + ;; For the log file, etc. + "--localstatedir=/var") #:phases (alist-replace 'configure @@ -4385,6 +4389,12 @@ tracking.") (let ((configure (assoc-ref %standard-phases 'configure))) (substitute* (find-files "." "\\.c$") (("/bin/sh") (which "sh"))) + + ;; Don't try to 'mkdir /var'. + (substitute* "hw/xfree86/Makefile.in" + (("mkdir(.*)logdir.*") + "true\n")) + (apply configure args))) %standard-phases))) (home-page "http://www.x.org/wiki/") @@ -4700,3 +4710,44 @@ icccm: Both client and window-manager helpers for ICCCM.") (synopsis "xorg implementation of the X Window System") (description "X.org provides an implementation of the X Window System") (license license:x11))) + +(define-public xterm + (package + (name "xterm") + (version "301") + (source (origin + (method url-fetch) + (uri ; XXX: constant URL! + "http://invisible-island.net/datafiles/release/xterm.tar.gz") + (sha256 + (base32 + "040rarvv18zg0lk7qy0m3n7gv10mh40jic708wvng01z4rlbpfhz")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--enable-wide-chars" "--enable-256-color" + "--enable-load-vt-fonts" "--enable-i18n" + "--enable-doublechars" "--enable-luit" + "--enable-mini-luit") + #:tests? #f)) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("luit" ,luit) + ("libXft" ,libxft) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("ncurses" ,ncurses) + ("libICE" ,libice) + ("libSM" ,libsm) + ("libX11" ,libx11) + ("libXext" ,libxext) + ("libXt" ,libxt) + ("xproto" ,xproto) + ("libXaw" ,libxaw))) + (home-page "http://invisible-island.net/xterm") + (synopsis "Terminal emulator for the X Window System") + (description + "The xterm program is a terminal emulator for the X Window System. It +provides DEC VT102/VT220 (VTxxx) and Tektronix 4014 compatible terminals for +programs that cannot use the window system directly.") + (license license:x11))) diff --git a/gnu/services.scm b/gnu/services.scm new file mode 100644 index 0000000000..eccde4e9a3 --- /dev/null +++ b/gnu/services.scm @@ -0,0 +1,62 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014 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 services) + #:use-module (guix records) + #:export (service? + service + service-documentation + service-provision + service-requirement + service-respawn? + service-start + service-stop + service-inputs + service-user-accounts + service-user-groups + service-pam-services)) + +;;; Commentary: +;;; +;;; System services as cajoled by dmd. +;;; +;;; Code: + +(define-record-type* <service> + service make-service + service? + (documentation service-documentation ; string + (default "[No documentation.]")) + (provision service-provision) ; list of symbols + (requirement service-requirement ; list of symbols + (default '())) + (respawn? service-respawn? ; Boolean + (default #t)) + (start service-start) ; expression + (stop service-stop ; expression + (default #f)) + (inputs service-inputs ; list of inputs + (default '())) + (user-accounts service-user-accounts ; list of <user-account> + (default '())) + (user-groups service-user-groups ; list of <user-groups> + (default '())) + (pam-services service-pam-services ; list of <pam-service> + (default '()))) + +;;; services.scm ends here. diff --git a/gnu/system/dmd.scm b/gnu/services/base.scm index 2143b00426..d6c1707c6a 100644 --- a/gnu/system/dmd.scm +++ b/gnu/services/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -16,75 +16,32 @@ ;;; 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 system dmd) - #:use-module (guix store) - #:use-module (guix packages) - #:use-module (guix derivations) - #:use-module (guix records) +(define-module (gnu services base) + #:use-module (gnu services) + #:use-module (gnu system shadow) ; 'user-account', etc. + #:use-module (gnu system linux) ; 'pam-service', etc. + #:use-module (gnu packages admin) #:use-module ((gnu packages base) #:select (glibc-final)) - #:use-module ((gnu packages admin) - #:select (mingetty inetutils shadow)) - #:use-module ((gnu packages package-management) - #:select (guix)) - #:use-module ((gnu packages linux) - #:select (net-tools)) - #:use-module (gnu system shadow) ; for user accounts/groups - #:use-module (gnu system linux) ; for PAM services - #:use-module (ice-9 match) - #:use-module (ice-9 format) + #:use-module (gnu packages package-management) + #:use-module (guix monads) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) - #:use-module (guix monads) - #:export (service? - service - service-provision - service-requirement - service-respawn? - service-start - service-stop - service-inputs - service-user-accounts - service-user-groups - service-pam-services - - host-name-service - syslog-service + #:use-module (ice-9 format) + #:export (host-name-service mingetty-service nscd-service + syslog-service guix-service - static-networking-service - - dmd-configuration-file)) + %base-services)) ;;; Commentary: ;;; -;;; System services as cajoled by dmd. +;;; Base system services---i.e., services that 99% of the users will want to +;;; use. ;;; ;;; Code: -(define-record-type* <service> - service make-service - service? - (documentation service-documentation ; string - (default "[No documentation.]")) - (provision service-provision) ; list of symbols - (requirement service-requirement ; list of symbols - (default '())) - (respawn? service-respawn? ; Boolean - (default #t)) - (start service-start) ; expression - (stop service-stop ; expression - (default #f)) - (inputs service-inputs ; list of inputs - (default '())) - (user-accounts service-user-accounts ; list of <user-account> - (default '())) - (user-groups service-user-groups ; list of <user-groups> - (default '())) - (pam-services service-pam-services ; list of <pam-service> - (default '()))) - (define (host-name-service name) "Return a service that sets the host name to NAME." (with-monad %store-monad @@ -217,100 +174,18 @@ BUILD-ACCOUNTS user accounts available under BUILD-USER-GID." (members (map user-account-name user-accounts))))))))) -(define* (static-networking-service interface ip - #:key - gateway - (name-servers '()) - (inetutils inetutils) - (net-tools net-tools)) - "Return a service that starts INTERFACE with address IP. If GATEWAY is -true, it must be a string specifying the default network gateway." - - ;; TODO: Eventually we should do this using Guile's networking procedures, - ;; like 'configure-qemu-networking' does, but the patch that does this is - ;; not yet in stock Guile. - (mlet %store-monad ((ifconfig (package-file inetutils "bin/ifconfig")) - (route (package-file net-tools "sbin/route"))) - (return - (service - (documentation - (string-append "Set up networking on the '" interface - "' interface using a static IP address.")) - (provision '(networking)) - (start `(lambda _ - ;; Return #t if successfully started. - (and (zero? (system* ,ifconfig ,interface ,ip "up")) - ,(if gateway - `(zero? (system* ,route "add" "-net" "default" - "gw" ,gateway)) - #t) - ,(if (pair? name-servers) - `(call-with-output-file "/etc/resolv.conf" - (lambda (port) - (display - "# Generated by 'static-networking-service'.\n" - port) - (for-each (lambda (server) - (format port "nameserver ~a~%" - server)) - ',name-servers))) - #t)))) - (stop `(lambda _ - ;; Return #f is successfully stopped. - (not (and (system* ,ifconfig ,interface "down") - (system* ,route "del" "-net" "default"))))) - (respawn? #f) - (inputs `(("inetutils" ,inetutils) - ,@(if gateway - `(("net-tools" ,net-tools)) - '()))))))) - - -(define (dmd-configuration-file services etc) - "Return the dmd configuration file for SERVICES, that initializes /etc from -ETC on startup." - (define config - `(begin - (use-modules (ice-9 ftw)) - - (register-services - ,@(map (match-lambda - (($ <service> documentation provision requirement - respawn? start stop) - `(make <service> - #:docstring ,documentation - #:provides ',provision - #:requires ',requirement - #:respawn? ,respawn? - #:start ,start - #:stop ,stop))) - services)) - - ;; /etc is a mixture of static and dynamic settings. Here is where we - ;; initialize it from the static part. - (format #t "populating /etc from ~a...~%" ,etc) - (let ((rm-f (lambda (f) - (false-if-exception (delete-file f))))) - (rm-f "/etc/static") - (symlink ,etc "/etc/static") - (for-each (lambda (file) - ;; TODO: Handle 'shadow' specially so that changed - ;; password aren't lost. - (let ((target (string-append "/etc/" file)) - (source (string-append "/etc/static/" file))) - (rm-f target) - (symlink source target))) - (scandir ,etc - (lambda (file) - (not (member file '("." "..")))))) - - ;; Prevent ETC from being GC'd. - (rm-f "/var/nix/gcroots/etc-directory") - (symlink ,etc "/var/nix/gcroots/etc-directory")) - - (format #t "starting services...~%") - (for-each start ',(append-map service-provision services)))) - - (text-file "dmd.conf" (object->string config))) - -;;; dmd.scm ends here +(define %base-services + ;; Convenience variable holding the basic services. + (let ((motd (text-file "motd" " +This is the GNU operating system, welcome!\n\n"))) + (list (mingetty-service "tty1" #:motd motd) + (mingetty-service "tty2" #:motd motd) + (mingetty-service "tty3" #:motd motd) + (mingetty-service "tty4" #:motd motd) + (mingetty-service "tty5" #:motd motd) + (mingetty-service "tty6" #:motd motd) + (syslog-service) + (guix-service) + (nscd-service)))) + +;;; base.scm ends here diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm new file mode 100644 index 0000000000..21719118eb --- /dev/null +++ b/gnu/services/dmd.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014 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 services dmd) + #:use-module (guix monads) + #:use-module (gnu services) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:export (dmd-configuration-file)) + +;;; Commentary: +;;; +;;; Instantiating system services as a dmd configuration file. +;;; +;;; Code: + +(define (dmd-configuration-file services etc) + "Return the dmd configuration file for SERVICES, that initializes /etc from +ETC (the name of a directory in the store) on startup." + (define config + `(begin + (use-modules (ice-9 ftw)) + + (register-services + ,@(map (lambda (service) + `(make <service> + #:docstring ',(service-documentation service) + #:provides ',(service-provision service) + #:requires ',(service-requirement service) + #:respawn? ',(service-respawn? service) + #:start ,(service-start service) + #:stop ,(service-stop service))) + services)) + + ;; /etc is a mixture of static and dynamic settings. Here is where we + ;; initialize it from the static part. + (format #t "populating /etc from ~a...~%" ,etc) + (let ((rm-f (lambda (f) + (false-if-exception (delete-file f))))) + (rm-f "/etc/static") + (symlink ,etc "/etc/static") + (for-each (lambda (file) + ;; TODO: Handle 'shadow' specially so that changed + ;; password aren't lost. + (let ((target (string-append "/etc/" file)) + (source (string-append "/etc/static/" file))) + (rm-f target) + (symlink source target))) + (scandir ,etc + (lambda (file) + (not (member file '("." "..")))))) + + ;; Prevent ETC from being GC'd. + (rm-f "/var/nix/gcroots/etc-directory") + (symlink ,etc "/var/nix/gcroots/etc-directory")) + + (format #t "starting services...~%") + (for-each start ',(append-map service-provision services)))) + + (text-file "dmd.conf" (object->string config))) + +;;; dmd.scm ends here diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm new file mode 100644 index 0000000000..317800db50 --- /dev/null +++ b/gnu/services/networking.scm @@ -0,0 +1,80 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014 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 services networking) + #:use-module (gnu services) + #:use-module (gnu packages admin) + #:use-module (gnu packages linux) + #:use-module (guix monads) + #:export (static-networking-service)) + +;;; Commentary: +;;; +;;; Networking services. +;;; +;;; Code: + +(define* (static-networking-service interface ip + #:key + gateway + (name-servers '()) + (inetutils inetutils) + (net-tools net-tools)) + "Return a service that starts INTERFACE with address IP. If GATEWAY is +true, it must be a string specifying the default network gateway." + + ;; TODO: Eventually we should do this using Guile's networking procedures, + ;; like 'configure-qemu-networking' does, but the patch that does this is + ;; not yet in stock Guile. + (mlet %store-monad ((ifconfig (package-file inetutils "bin/ifconfig")) + (route (package-file net-tools "sbin/route"))) + (return + (service + (documentation + (string-append "Set up networking on the '" interface + "' interface using a static IP address.")) + (provision '(networking)) + (start `(lambda _ + ;; Return #t if successfully started. + (and (zero? (system* ,ifconfig ,interface ,ip "up")) + ,(if gateway + `(zero? (system* ,route "add" "-net" "default" + "gw" ,gateway)) + #t) + ,(if (pair? name-servers) + `(call-with-output-file "/etc/resolv.conf" + (lambda (port) + (display + "# Generated by 'static-networking-service'.\n" + port) + (for-each (lambda (server) + (format port "nameserver ~a~%" + server)) + ',name-servers))) + #t)))) + (stop `(lambda _ + ;; Return #f is successfully stopped. + (not (and (system* ,ifconfig ,interface "down") + (system* ,route "del" "-net" "default"))))) + (respawn? #f) + (inputs `(("inetutils" ,inetutils) + ,@(if gateway + `(("net-tools" ,net-tools)) + '()))))))) + +;;; networking.scm ends here diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm new file mode 100644 index 0000000000..702be27714 --- /dev/null +++ b/gnu/services/xorg.scm @@ -0,0 +1,186 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014 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 services xorg) + #:use-module (gnu services) + #:use-module (gnu system linux) ; 'pam-service' + #:use-module ((gnu packages base) #:select (guile-final)) + #:use-module (gnu packages xorg) + #:use-module (gnu packages gl) + #:use-module (gnu packages slim) + #:use-module (gnu packages ratpoison) + #:use-module (gnu packages admin) + #:use-module (gnu packages bash) + #:use-module (guix monads) + #:use-module (guix derivations) + #:export (xorg-start-command + slim-service)) + +;;; Commentary: +;;; +;;; Services that relate to the X Window System. +;;; +;;; Code: + +(define* (xorg-start-command #:key + (guile guile-final) + (xorg-server xorg-server)) + "Return a derivation that builds a GUILE script to start the X server from +XORG-SERVER. Usually the X server is started by a login manager." + + (define (xserver.conf) + (text-file* "xserver.conf" " +Section \"Files\" + FontPath \"" font-adobe75dpi "/share/font/X11/75dpi\" + ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" + ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\" + ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\" + ModulePath \"" xorg-server "/lib/xorg/modules\" + ModulePath \"" xorg-server "/lib/xorg/modules/extensions\" + ModulePath \"" xorg-server "/lib/xorg/modules/multimedia\" +EndSection + +Section \"ServerFlags\" + Option \"AllowMouseOpenFail\" \"on"" +EndSection + +Section \"Monitor\" + Identifier \"Monitor[0]\" +EndSection + +Section \"InputClass\" + Identifier \"Generic keyboard\" + MatchIsKeyboard \"on\" + Option \"XkbRules\" \"base\" + Option \"XkbModel\" \"pc104\" +EndSection + +Section \"ServerLayout\" + Identifier \"Layout\" + Screen \"Screen-vesa\" +EndSection + +Section \"Device\" + Identifier \"Device-vesa\" + Driver \"vesa\" +EndSection + +Section \"Screen\" + Identifier \"Screen-vesa\" + Device \"Device-vesa\" +EndSection")) + + (mlet %store-monad ((guile-bin (package-file guile "bin/guile")) + (xorg-bin (package-file xorg-server "bin/X")) + (dri (package-file mesa "lib/dri")) + (xkbcomp-bin (package-file xkbcomp "bin")) + (xkb-dir (package-file xkeyboard-config + "share/X11/xkb")) + (config (xserver.conf))) + (define builder + ;; Write a small wrapper around the X server. + `(let ((out (assoc-ref %outputs "out"))) + (call-with-output-file out + (lambda (port) + (format port "#!~a --no-auto-compile~%!#~%" ,guile-bin) + (write '(begin + (setenv "XORG_DRI_DRIVER_PATH" ,dri) + (setenv "XKB_BINDIR" ,xkbcomp-bin) + + (apply execl + + ,xorg-bin "-ac" "-logverbose" "-verbose" + "-xkbdir" ,xkb-dir + "-config" ,(derivation->output-path config) + "-nolisten" "tcp" "-terminate" + + ;; Note: SLiM and other display managers add the + ;; '-auth' flag by themselves. + (cdr (command-line)))) + port))) + (chmod out #o555) + #t)) + + (mlet %store-monad ((inputs (lower-inputs + `(("xorg" ,xorg-server) + ("xkbcomp" ,xkbcomp) + ("xkeyboard-config" ,xkeyboard-config) + ("mesa" ,mesa) + ("guile" ,guile) + ("xorg.conf" ,config))))) + (derivation-expression "start-xorg" builder + #:inputs inputs)))) + +(define* (slim-service #:key (slim slim) + (allow-empty-passwords? #t) auto-login? + (default-user "") + (xauth xauth) (dmd dmd) (bash bash) + startx) + "Return a service that spawns the SLiM graphical login manager, which in +turn start the X display server with STARTX, a command as returned by +'xorg-start-command'. + +When ALLOW-EMPTY-PASSWORDS? is true, allow logins with an empty password. +When AUTO-LOGIN? is true, log in automatically as DEFAULT-USER." + (define (slim.cfg) + ;; TODO: Run "bash -login ~/.xinitrc %session". + (mlet %store-monad ((startx (or startx (xorg-start-command)))) + (text-file* "slim.cfg" " +default_path /run/current-system/bin +default_xserver " startx " +xserver_arguments :0 vt7 +xauth_path " xauth "/bin/xauth +authfile /var/run/slim.auth + +# The login command. '%session' is replaced by the chosen session name, one +# of the names specified in the 'sessions' setting: 'wmaker', 'xfce', etc. +login_cmd exec " ratpoison "/bin/ratpoison + +halt_cmd " dmd "/sbin/halt +reboot_cmd " dmd "/sbin/reboot +" (if auto-login? + (string-append "auto_login yes\ndefault_user " default-user) + "")))) + + (mlet %store-monad ((slim-bin (package-file slim "bin/slim")) + (bash-bin (package-file bash "bin/bash")) + (slim.cfg (slim.cfg))) + (return + (service + (documentation "Xorg display server") + (provision '(xorg-server)) + (requirement '(host-name)) + (start + ;; XXX: Work around the inability to specify env. vars. directly. + `(make-forkexec-constructor + ,bash-bin "-c" + ,(string-append "SLIM_CFGFILE=" (derivation->output-path slim.cfg) + " " slim-bin + " -nodaemon"))) + (stop `(make-kill-destructor)) + (inputs `(("slim" ,slim) + ("slim.cfg" ,slim.cfg) + ("bash" ,bash))) + (respawn? #t) + (pam-services + ;; Tell PAM about 'slim'. + (list (unix-pam-service + "slim" + #:allow-empty-passwords? allow-empty-passwords?))))))) + +;;; xorg.scm ends here diff --git a/gnu/system.scm b/gnu/system.scm index 1b5ce7afc5..96f721330f 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -22,15 +22,17 @@ #:use-module (guix records) #:use-module (guix packages) #:use-module (guix derivations) - #:use-module (gnu packages linux-initrd) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages admin) #:use-module (gnu packages package-management) - #:use-module (gnu system dmd) + #:use-module (gnu services) + #:use-module (gnu services dmd) + #:use-module (gnu services base) #:use-module (gnu system grub) #:use-module (gnu system shadow) #:use-module (gnu system linux) + #:use-module (gnu system linux-initrd) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -38,7 +40,18 @@ operating-system? operating-system-services operating-system-packages + operating-system-bootloader-entries + operating-system-host-name + operating-system-kernel + operating-system-initrd + operating-system-users + operating-system-groups + operating-system-packages + operating-system-timezone + operating-system-locale + operating-system-services + operating-system-profile-directory operating-system-derivation)) ;;; Commentary: @@ -58,8 +71,8 @@ (default grub)) (bootloader-entries operating-system-bootloader-entries ; list (default '())) - (initrd operating-system-initrd - (default gnu-system-initrd)) + (initrd operating-system-initrd ; monadic derivation + (default (gnu-system-initrd))) (host-name operating-system-host-name) ; string @@ -92,23 +105,7 @@ (locale operating-system-locale) ; string (services operating-system-services ; list of monadic services - (default - (let ((motd (text-file "motd" " -This is the GNU operating system, welcome!\n\n"))) - (list (mingetty-service "tty1" #:motd motd) - (mingetty-service "tty2" #:motd motd) - (mingetty-service "tty3" #:motd motd) - (mingetty-service "tty4" #:motd motd) - (mingetty-service "tty5" #:motd motd) - (mingetty-service "tty6" #:motd motd) - (syslog-service) - (guix-service) - (nscd-service) - - ;; QEMU networking settings. - (static-networking-service "eth0" "10.0.2.10" - #:name-servers '("10.0.2.3") - #:gateway "10.0.2.2")))))) + (default %base-services))) @@ -233,6 +230,11 @@ directories or regular files." (group (group-file groups)) (pam.d (pam-services->directory pam-services)) (login.defs (text-file "login.defs" "# Empty for now.\n")) + (shells (text-file "shells" ; used by xterm and others + "\ +/bin/sh +/run/current-system/bin/sh +/run/current-system/bin/bash\n")) (issue (text-file "issue" " This is an alpha preview of the GNU system. Welcome. @@ -243,40 +245,53 @@ GNU dmd (http://www.gnu.org/software/dmd/). You can log in as 'guest' or 'root' with no password. ")) - ;; Assume TZDATA is installed---e.g., as part of the system packages. - ;; Users can choose not to have it. - (tzdir (package-file tzdata "share/zoneinfo")) - ;; TODO: Generate bashrc from packages' search-paths. - (bashrc (text-file "bashrc" (string-append " + (bashrc (text-file* "bashrc" " export PS1='\\u@\\h\\$ ' export LC_ALL=\"" locale "\" export TZ=\"" timezone "\" -export TZDIR=\"" tzdir "\" +export TZDIR=\"" tzdata "/share/zoneinfo\" export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin export CPATH=$HOME/.guix-profile/include:" profile "/include export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib alias ls='ls -p --color' alias ll='ls -l' -"))) +")) + (tz-file (package-file tzdata + (string-append "share/zoneinfo/" timezone))) (files -> `(("services" ,services) ("protocols" ,protocols) ("rpc" ,rpc) ("pam.d" ,(derivation->output-path pam.d)) ("login.defs" ,login.defs) ("issue" ,issue) - ("profile" ,bashrc) + ("shells" ,shells) + ("profile" ,(derivation->output-path bashrc)) + ("localtime" ,tz-file) ("passwd" ,passwd) ("shadow" ,shadow) ("group" ,group)))) (file-union files #:inputs `(("net" ,net-base) - ("pam.d" ,pam.d)) + ("pam.d" ,pam.d) + ("bashrc" ,bashrc) + ("tzdata" ,tzdata)) #:name "etc"))) +(define (operating-system-profile-derivation os) + "Return a derivation that builds the default profile of OS." + ;; TODO: Replace with a real profile with a manifest. + (union (operating-system-packages os) + #:name "default-profile")) + +(define (operating-system-profile-directory os) + "Return the directory name of the default profile of OS." + (mlet %store-monad ((drv (operating-system-profile-derivation os))) + (return (derivation->output-path drv)))) + (define (operating-system-derivation os) "Return a derivation that builds OS." (mlet* %store-monad @@ -297,23 +312,20 @@ alias ll='ls -l' (password "") (uid 0) (gid 0) (comment "System administrator") - (home-directory "/")) + (home-directory "/root")) (append (operating-system-users os) (append-map service-user-accounts services)))) (groups -> (append (operating-system-groups os) (append-map service-user-groups services))) - (packages -> (operating-system-packages os)) - ;; TODO: Replace with a real profile with a manifest. - (profile-drv (union packages - #:name "default-profile")) + (profile-drv (operating-system-profile-derivation os)) (profile -> (derivation->output-path profile-drv)) (etc-drv (etc-directory #:accounts accounts #:groups groups #:pam-services pam-services #:locale (operating-system-locale os) #:timezone (operating-system-timezone os) - #:profile profile)) + #:profile profile-drv)) (etc -> (derivation->output-path etc-drv)) (dmd-conf (dmd-configuration-file services etc)) @@ -324,17 +336,18 @@ alias ll='ls -l' "--config" ,dmd-conf)))) (kernel -> (operating-system-kernel os)) (kernel-dir (package-file kernel)) - (initrd -> (operating-system-initrd os)) - (initrd-file (package-file initrd)) + (initrd (operating-system-initrd os)) + (initrd-file -> (string-append (derivation->output-path initrd) + "/initrd")) (entries -> (list (menu-entry (label (string-append "GNU system with " (package-full-name kernel) " (technology preview)")) (linux kernel) - (linux-arguments `("--root=/dev/vda1" + (linux-arguments `("--root=/dev/sda1" ,(string-append "--load=" boot))) - (initrd initrd)))) + (initrd initrd-file)))) (grub.cfg (grub-configuration-file entries)) (extras (links (delete-duplicates (append (append-map service-inputs services) diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index 86fa9b504d..5dc0b85ff2 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,7 +41,7 @@ (linux menu-entry-linux) (linux-arguments menu-entry-linux-arguments (default '())) - (initrd menu-entry-initrd)) + (initrd menu-entry-initrd)) ; file name of the initrd (define* (grub-configuration-file entries #:key (default-entry 1) (timeout 5) @@ -66,10 +66,7 @@ search.file ~a~%" (match-lambda (($ <menu-entry> label linux arguments initrd) (mlet %store-monad ((linux (package-file linux "bzImage" - #:system system)) - (initrd (package-file initrd "initrd" #:system system))) - ;; XXX: Assume that INITRD is a directory containing an 'initrd' file. (return (format #f "menuentry ~s { linux ~a ~a initrd ~a diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm new file mode 100644 index 0000000000..9520473d01 --- /dev/null +++ b/gnu/system/linux-initrd.scm @@ -0,0 +1,248 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014 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 system linux-initrd) + #:use-module (guix monads) + #:use-module (guix utils) + #:use-module ((guix store) + #:select (%store-prefix)) + #:use-module (gnu packages cpio) + #:use-module (gnu packages compression) + #:use-module (gnu packages linux) + #:use-module (gnu packages guile) + #:use-module ((gnu packages make-bootstrap) + #:select (%guile-static-stripped)) + #:use-module (ice-9 regex) + #:export (expression->initrd + qemu-initrd + gnu-system-initrd)) + + +;;; Commentary: +;;; +;;; Tools to build initial RAM disks (initrd's) for Linux-Libre, and in +;;; particular initrd's that run Guile. +;;; +;;; Code: + + +(define* (expression->initrd exp + #:key + (guile %guile-static-stripped) + (cpio cpio) + (gzip gzip) + (name "guile-initrd") + (system (%current-system)) + (modules '()) + (linux #f) + (linux-modules '())) + "Return a package that contains a Linux initrd (a gzipped cpio archive) +containing GUILE and that evaluates EXP upon booting. LINUX-MODULES is a list +of `.ko' file names to be copied from LINUX into the initrd. MODULES is a +list of Guile module names to be embedded in the initrd." + + ;; General Linux overview in `Documentation/early-userspace/README' and + ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. + + (define (string->regexp str) + ;; Return a regexp that matches STR exactly. + (string-append "^" (regexp-quote str) "$")) + + (define builder + `(begin + (use-modules (guix build utils) + (ice-9 pretty-print) + (ice-9 popen) + (ice-9 match) + (ice-9 ftw) + (srfi srfi-26) + (system base compile) + (rnrs bytevectors) + ((system foreign) #:select (sizeof))) + + (let ((guile (assoc-ref %build-inputs "guile")) + (cpio (string-append (assoc-ref %build-inputs "cpio") + "/bin/cpio")) + (gzip (string-append (assoc-ref %build-inputs "gzip") + "/bin/gzip")) + (modules (assoc-ref %build-inputs "modules")) + (gos (assoc-ref %build-inputs "modules/compiled")) + (scm-dir (string-append "share/guile/" (effective-version))) + (go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a" + (effective-version) + (if (eq? (native-endianness) (endianness little)) + "LE" + "BE") + (sizeof '*) + (effective-version))) + (out (assoc-ref %outputs "out"))) + (mkdir out) + (mkdir "contents") + (with-directory-excursion "contents" + (copy-recursively guile ".") + (call-with-output-file "init" + (lambda (p) + (format p "#!/bin/guile -ds~%!#~%" guile) + (pretty-print ',exp p))) + (chmod "init" #o555) + (chmod "bin/guile" #o555) + + ;; Copy Guile modules. + (chmod scm-dir #o777) + (copy-recursively modules scm-dir + #:follow-symlinks? #t) + (copy-recursively gos (string-append "lib/guile/" + (effective-version) "/ccache") + #:follow-symlinks? #t) + + ;; Compile `init'. + (mkdir-p go-dir) + (set! %load-path (cons modules %load-path)) + (set! %load-compiled-path (cons gos %load-compiled-path)) + (compile-file "init" + #:opts %auto-compilation-options + #:output-file (string-append go-dir "/init.go")) + + ;; Copy Linux modules. + (let* ((linux (assoc-ref %build-inputs "linux")) + (module-dir (and linux + (string-append linux "/lib/modules")))) + (mkdir "modules") + ,@(map (lambda (module) + `(match (find-files module-dir + ,(string->regexp module)) + ((file) + (format #t "copying '~a'...~%" file) + (copy-file file (string-append "modules/" + ,module))) + (() + (error "module not found" ,module module-dir)) + ((_ ...) + (error "several modules by that name" + ,module module-dir)))) + linux-modules)) + + ;; Reset the timestamps of all the files that will make it in the + ;; initrd. + (for-each (cut utime <> 0 0 0 0) + (find-files "." ".*")) + + (system* cpio "--version") + (let ((pipe (open-pipe* OPEN_WRITE cpio "-o" + "-O" (string-append out "/initrd") + "-H" "newc" "--null"))) + (define print0 + (let ((len (string-length "./"))) + (lambda (file) + (format pipe "~a\0" (string-drop file len))))) + + ;; Note: as per `ramfs-rootfs-initramfs.txt', always add + ;; directory entries before the files that are inside of it: "The + ;; Linux kernel cpio extractor won't create files in a directory + ;; that doesn't exist, so the directory entries must go before + ;; the files that go in those directories." + (file-system-fold (const #t) + (lambda (file stat result) ; leaf + (print0 file)) + (lambda (dir stat result) ; down + (unless (string=? dir ".") + (print0 dir))) + (const #f) ; up + (const #f) ; skip + (const #f) + #f + ".") + + (and (zero? (close-pipe pipe)) + (with-directory-excursion out + (and (zero? (system* gzip "--best" "initrd")) + (rename-file "initrd.gz" "initrd"))))))))) + + (mlet* %store-monad + ((source (imported-modules modules)) + (compiled (compiled-modules modules)) + (inputs (lower-inputs + `(("guile" ,guile) + ("cpio" ,cpio) + ("gzip" ,gzip) + ("modules" ,source) + ("modules/compiled" ,compiled) + ,@(if linux + `(("linux" ,linux)) + '()))))) + (derivation-expression name builder + #:modules '((guix build utils)) + #:inputs inputs))) + +(define* (qemu-initrd #:key + guile-modules-in-chroot? + volatile-root? + (mounts `((cifs "/store" ,(%store-prefix)) + (cifs "/xchg" "/xchg")))) + "Return a monadic derivation that builds an initrd for use in a QEMU guest +where the store is shared with the host. MOUNTS is a list of file systems to +be mounted atop the root file system, where each item has the form: + + (FILE-SYSTEM-TYPE SOURCE TARGET) + +When GUILE-MODULES-IN-CHROOT? is true, make core Guile modules available in +the new root. This is necessary is the file specified as '--load' needs +access to these modules (which is the case if it wants to even just print an +exception and backtrace!). + +When VOLATILE-ROOT? is true, the root file system is writable but any changes +to it are lost." + (define cifs-modules + ;; Modules needed to mount CIFS file systems. + '("md4.ko" "ecb.ko" "cifs.ko")) + + (define virtio-9p-modules + ;; Modules for the 9p paravirtualized file system. + '("9pnet.ko" "9p.ko" "9pnet_virtio.ko")) + + (define linux-modules + ;; Modules added to the initrd and loaded from the initrd. + `("virtio.ko" "virtio_ring.ko" "virtio_pci.ko" + "virtio_balloon.ko" "virtio_blk.ko" "virtio_net.ko" + ,@(if (assoc-ref mounts 'cifs) + cifs-modules + '()) + ,@(if (assoc-ref mounts '9p) + virtio-9p-modules + '()))) + + (expression->initrd + `(begin + (use-modules (guix build linux-initrd)) + + (boot-system #:mounts ',mounts + #:linux-modules ',linux-modules + #:qemu-guest-networking? #t + #:guile-modules-in-chroot? ',guile-modules-in-chroot? + #:volatile-root? ',volatile-root?)) + #:name "qemu-initrd" + #:modules '((guix build utils) + (guix build linux-initrd)) + #:linux linux-libre + #:linux-modules linux-modules)) + +(define (gnu-system-initrd) + "Initrd for the GNU system itself, with nothing QEMU-specific." + (qemu-initrd #:guile-modules-in-chroot? #f)) + +;;; linux-initrd.scm ends here diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index e75c09d859..b8b0274f1f 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,7 +35,6 @@ #:use-module (gnu packages zile) #:use-module (gnu packages grub) #:use-module (gnu packages linux) - #:use-module (gnu packages linux-initrd) #:use-module (gnu packages package-management) #:use-module ((gnu packages make-bootstrap) #:select (%guile-static-stripped)) @@ -43,9 +42,10 @@ #:use-module (gnu system shadow) #:use-module (gnu system linux) + #:use-module (gnu system linux-initrd) #:use-module (gnu system grub) - #:use-module (gnu system dmd) #:use-module (gnu system) + #:use-module (gnu services) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -53,7 +53,9 @@ #:export (expression->derivation-in-linux-vm qemu-image - system-qemu-image)) + system-qemu-image + system-qemu-image/shared-store + system-qemu-image/shared-store-script)) ;;; Commentary: @@ -67,7 +69,7 @@ (system (%current-system)) (inputs '()) (linux linux-libre) - (initrd qemu-initrd) + initrd (qemu qemu/smb-shares) (env-vars '()) (modules '()) @@ -78,10 +80,10 @@ (references-graphs #f) (disk-image-size (* 100 (expt 2 20)))) - "Evaluate EXP in a QEMU virtual machine running LINUX with INITRD. In the -virtual machine, EXP has access to all of INPUTS from the store; it should put -its output files in the `/xchg' directory, which is copied to the derivation's -output when the VM terminates. + "Evaluate EXP in a QEMU virtual machine running LINUX with INITRD (a +derivation). In the virtual machine, EXP has access to all of INPUTS from the +store; it should put its output files in the `/xchg' directory, which is +copied to the derivation's output when the VM terminates. When MAKE-DISK-IMAGE? is true, then create a QEMU disk image of DISK-IMAGE-SIZE bytes and return it. @@ -154,7 +156,7 @@ made available under the /xchg CIFS share." (#f '()))) (and (zero? - (system* qemu "-nographic" "-no-reboot" + (system* qemu "-enable-kvm" "-nographic" "-no-reboot" "-net" "nic,model=e1000" "-net" (string-append "user,smb=" (getcwd)) "-kernel" linux @@ -178,6 +180,9 @@ made available under the /xchg CIFS share." (user-builder (text-file "builder-in-linux-vm" (object->string exp*))) (coreutils -> (car (assoc-ref %final-inputs "coreutils"))) + (initrd (if initrd ; use the default initrd? + (return initrd) + (qemu-initrd #:guile-modules-in-chroot? #t))) (inputs (lower-inputs `(("qemu" ,qemu) ("linux" ,linux) ("initrd" ,initrd) @@ -185,6 +190,7 @@ made available under the /xchg CIFS share." ("builder" ,user-builder) ,@inputs)))) (derivation-expression name builder + ;; TODO: Require the "kvm" feature. #:system system #:inputs inputs #:env-vars env-vars @@ -290,18 +296,18 @@ such as /etc files." (assoc-ref %build-inputs "gawk") "/bin")) (display "creating partition table...\n") - (and (zero? (system* parted "/dev/vda" "mklabel" "msdos" + (and (zero? (system* parted "/dev/sda" "mklabel" "msdos" "mkpart" "primary" "ext2" "1MiB" ,(format #f "~aB" (- disk-image-size (* 5 (expt 2 20)))))) (begin (display "creating ext3 partition...\n") - (and (zero? (system* mkfs "-F" "/dev/vda1")) + (and (zero? (system* mkfs "-F" "/dev/sda1")) (let ((store (string-append "/fs" ,%store-directory))) (display "mounting partition...\n") (mkdir "/fs") - (mount "/dev/vda1" "/fs" "ext3") + (mount "/dev/sda1" "/fs" "ext3") (mkdir-p "/fs/boot/grub") (symlink grub.cfg "/fs/boot/grub/grub.cfg") @@ -319,8 +325,9 @@ such as /etc files." ;; Optionally, register the inputs in the image's store. (let* ((guix (assoc-ref %build-inputs "guix")) - (register (string-append guix - "/sbin/guix-register"))) + (register (and guix + (string-append guix + "/sbin/guix-register")))) ,@(if initialize-store? (match inputs-to-copy (((graph-files . _) ...) @@ -375,7 +382,7 @@ such as /etc files." (and (zero? (system* grub "--no-floppy" "--boot-directory" "/fs/boot" - "/dev/vda")) + "/dev/sda")) (zero? (system* umount "/fs")) (reboot)))))))) #:system system @@ -407,37 +414,52 @@ such as /etc files." ;;; Stand-alone VM image. ;;; -(define %demo-operating-system - (operating-system - (host-name "gnu") - (timezone "Europe/Paris") - (locale "en_US.UTF-8") - (users (list (user-account - (name "guest") - (password "") - (uid 1000) (gid 100) - (comment "Guest of GNU") - (home-directory "/home/guest")))) - (packages (list coreutils - bash - guile-2.0 - dmd - gcc-final - ld-wrapper ; must come before BINUTILS - binutils-final - glibc-final - inetutils - findutils - grep - sed - procps - psmisc - zile - less - tzdata - guix)))) - -(define* (system-qemu-image #:optional (os %demo-operating-system) +(define (operating-system-build-gid os) + "Return as a monadic value the group id for build users of OS, or #f." + (anym %store-monad + (lambda (service) + (and (equal? '(guix-daemon) + (service-provision service)) + (match (service-user-groups service) + ((group) + (user-group-id group))))) + (operating-system-services os))) + +(define (operating-system-default-contents os) + "Return a list of directives suitable for 'system-qemu-image' describing the +basic contents of the root file system of OS." + (define (user-directories user) + (let ((home (user-account-home-directory user)) + ;; XXX: Deal with automatically allocated ids. + (uid (or (user-account-uid user) 0)) + (gid (or (user-account-gid user) 0)) + (root (string-append "/var/nix/profiles/per-user/" + (user-account-name user)))) + `((directory ,root ,uid ,gid) + (directory ,home ,uid ,gid)))) + + (mlet* %store-monad ((os-drv (operating-system-derivation os)) + (os-dir -> (derivation->output-path os-drv)) + (build-gid (operating-system-build-gid os)) + (profile (operating-system-profile-directory os))) + (return `((directory "/nix/store" 0 ,(or build-gid 0)) + (directory "/etc") + (directory "/var/log") ; for dmd + (directory "/var/run/nscd") + (directory "/var/nix/gcroots") + ("/var/nix/gcroots/system" -> ,os-dir) + (directory "/run") + ("/run/current-system" -> ,profile) + (directory "/bin") + ("/bin/sh" -> "/run/current-system/bin/bash") + (directory "/tmp") + (directory "/var/nix/profiles/per-user/root" 0 0) + + (directory "/root" 0 0) ; an exception + ,@(append-map user-directories + (operating-system-users os)))))) + +(define* (system-qemu-image os #:key (disk-image-size (* 900 (expt 2 20)))) "Return the derivation of a QEMU image of DISK-IMAGE-SIZE bytes of the GNU system as described by OS." @@ -445,29 +467,78 @@ system as described by OS." ((os-drv (operating-system-derivation os)) (os-dir -> (derivation->output-path os-drv)) (grub.cfg -> (string-append os-dir "/grub.cfg")) - (build-user-gid (anym %store-monad ; XXX - (lambda (service) - (and (equal? '(guix-daemon) - (service-provision service)) - (match (service-user-groups service) - ((group) - (user-group-id group))))) - (operating-system-services os))) - (populate -> `((directory "/nix/store" 0 ,build-user-gid) - (directory "/etc") - (directory "/var/log") ; for dmd - (directory "/var/run/nscd") - (directory "/var/nix/gcroots") - ("/var/nix/gcroots/system" -> ,os-dir) - (directory "/tmp") - (directory "/var/nix/profiles/per-user/root" 0 0) - (directory "/var/nix/profiles/per-user/guest" - 1000 100) - (directory "/home/guest" 1000 100)))) + (populate (operating-system-default-contents os))) (qemu-image #:grub-configuration grub.cfg #:populate populate #:disk-image-size disk-image-size #:initialize-store? #t #:inputs-to-copy `(("system" ,os-drv))))) +(define* (system-qemu-image/shared-store + os + #:key (disk-image-size (* 15 (expt 2 20)))) + "Return a derivation that builds a QEMU image of OS that shares its store +with the host." + (mlet* %store-monad + ((os-drv (operating-system-derivation os)) + (os-dir -> (derivation->output-path os-drv)) + (grub.cfg -> (string-append os-dir "/grub.cfg")) + (populate (operating-system-default-contents os))) + ;; TODO: Initialize the database so Guix can be used in the guest. + (qemu-image #:grub-configuration grub.cfg + #:populate populate + #:disk-image-size disk-image-size))) + +(define* (system-qemu-image/shared-store-script + os + #:key + (qemu (package (inherit qemu) + ;; FIXME/TODO: Use 9p instead of this hack. + (source (package-source qemu/smb-shares)))) + (graphic? #t)) + "Return a derivation that builds a script to run a virtual machine image of +OS that shares its store with the host." + (let* ((initrd (qemu-initrd #:mounts `((cifs "/store" ,(%store-prefix))) + #:volatile-root? #t)) + (os (operating-system (inherit os) (initrd initrd)))) + (define builder + (mlet %store-monad ((image (system-qemu-image/shared-store os)) + (qemu (package-file qemu + "bin/qemu-system-x86_64")) + (bash (package-file bash "bin/sh")) + (kernel (package-file (operating-system-kernel os) + "bzImage")) + (initrd initrd) + (os-drv (operating-system-derivation os))) + (return `(let ((out (assoc-ref %outputs "out"))) + (call-with-output-file out + (lambda (port) + (display + (string-append "#!" ,bash " +# TODO: -virtfs local,path=XXX,security_model=none,mount_tag=store +exec " ,qemu " -enable-kvm -no-reboot -net nic,model=virtio \ + -net user,smb=$PWD \ + -kernel " ,kernel " -initrd " + ,(string-append (derivation->output-path initrd) "/initrd") " \ +-append \"" ,(if graphic? "" "console=ttyS0 ") +"--load=" ,(derivation->output-path os-drv) "/boot --root=/dev/vda1\" \ + -drive file=" ,(derivation->output-path image) + ",if=virtio,cache=writeback,werror=report,readonly\n") + port))) + (chmod out #o555) + #t)))) + + (mlet %store-monad ((image (system-qemu-image/shared-store os)) + (initrd initrd) + (qemu (package->derivation qemu)) + (bash (package->derivation bash)) + (os (operating-system-derivation os)) + (builder builder)) + (derivation-expression "run-vm.sh" builder + #:inputs `(("qemu" ,qemu) + ("image" ,image) + ("bash" ,bash) + ("initrd" ,initrd) + ("os" ,os)))))) + ;;; vm.scm ends here |