diff --git a/.dir-locals.el b/.dir-locals.el index 54d5bdaefc..0873c1d747 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -23,6 +23,7 @@ (eval . (put 'lambda* 'scheme-indent-function 1)) (eval . (put 'substitute* 'scheme-indent-function 1)) (eval . (put 'modify-phases 'scheme-indent-function 1)) + (eval . (put 'modify-services 'scheme-indent-function 1)) (eval . (put 'with-directory-excursion 'scheme-indent-function 1)) (eval . (put 'package 'scheme-indent-function 0)) (eval . (put 'origin 'scheme-indent-function 0)) diff --git a/.gitignore b/.gitignore index 6e8bfaca95..412d09ca11 100644 --- a/.gitignore +++ b/.gitignore @@ -125,6 +125,7 @@ GTAGS /doc/os-config-desktop.texi /doc/*.1 /etc/guix-daemon.service +/etc/guix-daemon.conf /doc/images/bootstrap-graph.pdf /doc/images/coreutils-bag-graph.png /doc/images/coreutils-graph.png diff --git a/CODE-OF-CONDUCT b/CODE-OF-CONDUCT new file mode 100644 index 0000000000..836f437f28 --- /dev/null +++ b/CODE-OF-CONDUCT @@ -0,0 +1,48 @@ +Contributor Code of Conduct + +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all +people who contribute through reporting issues, posting feature +requests, updating documentation, submitting pull requests or patches, +and other activities. + +We are committed to making participation in this project a +harassment-free experience for everyone, regardless of level of +experience, gender, gender identity and expression, sexual orientation, +disability, personal appearance, body size, race, ethnicity, age, +religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic +addresses, without explicit permission +* Other unethical or unprofessional conduct + +Project maintainers have the right and responsibility to remove, edit, +or reject comments, commits, code, wiki edits, issues, and other +contributions that are not aligned to this Code of Conduct, or to ban +temporarily or permanently any contributor for other behaviors that they +deem inappropriate, threatening, offensive, or harmful. + +By adopting this Code of Conduct, project maintainers commit themselves +to fairly and consistently applying these principles to every aspect of +managing this project. Project maintainers who do not follow or enforce +the Code of Conduct may be permanently removed from the project team. + +This Code of Conduct applies both within project spaces and in public +spaces when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may +be reported by contacting a project maintainer at guix-maintainers@gnu.org. +All complaints will be reviewed and investigated and will +result in a response that is deemed necessary and appropriate to the +circumstances. Maintainers are obligated to maintain confidentiality +with regard to the reporter of an incident. + +This Code of Conduct is adapted from the Contributor Covenant +(http://contributor-covenant.org), version 1.3.0, available at +http://contributor-covenant.org/version/1/3/0/ diff --git a/Makefile.am b/Makefile.am index 1427203fb2..760caed859 100644 --- a/Makefile.am +++ b/Makefile.am @@ -50,6 +50,8 @@ MODULES = \ guix/gnu-maintenance.scm \ guix/upstream.scm \ guix/licenses.scm \ + guix/graph.scm \ + guix/cve.scm \ guix/build-system.scm \ guix/build-system/cmake.scm \ guix/build-system/emacs.scm \ @@ -128,6 +130,8 @@ MODULES = \ guix/scripts/edit.scm \ guix/scripts/size.scm \ guix/scripts/graph.scm \ + guix/scripts/container.scm \ + guix/scripts/container/exec.scm \ guix.scm \ $(GNU_SYSTEM_MODULES) @@ -195,6 +199,7 @@ SCM_TESTS = \ tests/pk-crypto.scm \ tests/pki.scm \ tests/sets.scm \ + tests/gnu-maintenance.scm \ tests/substitute.scm \ tests/builders.scm \ tests/derivations.scm \ @@ -221,6 +226,7 @@ SCM_TESTS = \ tests/size.scm \ tests/graph.scm \ tests/challenge.scm \ + tests/cve.scm \ tests/file-systems.scm \ tests/services.scm \ tests/containers.scm @@ -253,6 +259,7 @@ SH_TESTS = \ tests/guix-archive.sh \ tests/guix-authenticate.sh \ tests/guix-environment.sh \ + tests/guix-environment-container.sh \ tests/guix-graph.sh \ tests/guix-lint.sh @@ -292,6 +299,7 @@ EXTRA_DIST = \ HACKING \ ROADMAP \ TODO \ + CODE-OF-CONDUCT \ .dir-locals.el \ build-aux/build-self.scm \ build-aux/hydra/gnu-system.scm \ @@ -308,6 +316,7 @@ EXTRA_DIST = \ tests/test.drv \ tests/signing-key.pub \ tests/signing-key.sec \ + tests/cve-sample.xml \ build-aux/config.rpath \ bootstrap \ release.nix \ @@ -336,6 +345,10 @@ AM_V_GUILEC = $(AM_V_GUILEC_$(V)) AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY)) AM_V_GUILEC_0 = @echo " GUILEC" $@; +# Flags passed to 'guild compile'. +GUILD_COMPILE_FLAGS = \ + -Wformat -Wunbound-variable -Warity-mismatch + # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling. Otherwise, if # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in # there that are newer than the local .scm files (for instance because the @@ -351,8 +364,7 @@ AM_V_GUILEC_0 = @echo " GUILEC" $@; LC_ALL=C \ $(top_builddir)/pre-inst-env \ $(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)" \ - -Wformat -Wunbound-variable -Warity-mismatch \ - --target="$(host)" \ + $(GUILD_COMPILE_FLAGS) --target="$(host)" \ -o "$@" "$<" SUFFIXES = .go diff --git a/NEWS b/NEWS index e33e2ac179..922265cffa 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,265 @@ Copyright © 2013, 2014, 2015 Ludovic Courtès Please send Guix bug reports to bug-guix@gnu.org. +* Changes in 0.9.0 (since 0.8.3) + +** Package management + +*** New ‘guix graph’ command, to draw package graphs +*** New ‘guix challenge’ command, to challenge the authenticity of binaries +*** ‘guix environment’ has a new ‘--container’ option +*** ‘guix substitute’ now honors all the specified substitute URLs +*** New ‘guix import cran’ command, to import R packages from CRAN +*** Package descriptions can now include Texinfo markup rendered on the fly +*** ‘guix package’ has a new ‘--install-from-file’ option +*** ‘guix package --search’ shows package outputs +*** ‘guix refresh’ can refresh selected non-GNU package definitions +*** The ‘--ad-hoc’ option of ‘guix environment’ is now positional +*** The ‘--exec’ option of ‘guix environment’ is deprecated; use ‘--’ instead +*** ‘guix build’ has a new ‘--file’ option +*** ‘guix build --log-file’ can now return URLs +*** ‘guix size’ now has a ‘--substitute-urls’ option and is much faster +*** New ‘guix lint’ checkers: ‘formatting’, ‘license’, ‘source-file-name’ +*** Download progress report has been improved +*** Emacs shell-mode completions for ‘guix’ commands updated +*** Emacs: New ‘M-x guix’ popup interface +*** Emacs: modes for viewing build logs (‘guix-build-log-mode’) + +** Distribution + +*** New extensible service composition API + +The operating system service API in (gnu services) has been completely +rewritten, significantly improving extensibility and modularity, while +providing a framework that makes it easy to reason about service composition. +Consequently, several sources of redundancy and confusion in +‘operating-system’ declarations have been eliminated. See “Service +Composition” in the manual. + +*** New ‘extension-graph’ and ‘dmd-graph’ sub-commands for ‘guix system’ +*** New ‘container’ sub-command for ‘guix system’ +*** New ‘guix container’ command, to deal with GuixSD containers +*** New ‘list-generations’ sub-command for ‘guix system’ +*** ‘operating-system’ has a new ‘locale-libcs’ field +*** New services: ‘nginx-service’, ‘udisks-service’, ‘guix-publish-service’ +*** ‘%desktop-services’ now includes Polkit, GeoClue, elogind, UDisks, and more +*** ‘dbus-daemon’ now has proper support for lazy service activation +*** ‘wicd-service’ automatically adds Wicd to the system profile +*** ‘slim-service’ automatically adds xterm to the system profile +*** hydra.gnu.org now provides substitutes for ‘armhf-linux’ +*** /run/systemd is mounted as tmpfs by default, for use by elogind +*** ‘glibc’ package no longer contains Bash in its bin/ directory +*** libc now looks for locale data in a versioned sub-directory +*** libc honors the new ‘GUIX_LOCPATH’ environment variable +*** Xfce now defaults to the GNOME icon theme +*** 543 new packages + +abduco, accountsservice, american-fuzzy-lop, ansible, arandr, attic, +autobuild, bash-minimal, bash-static, bio-blastxmlparser, bio-locus, +bioperl-minimal, bioruby, bitcoin-core, bspwm, byobu, cabal-install, cityhash, +clang-runtime, clang-runtime, cm, cmus, conky, coreutils-minimal, cpphs, +cvs-fast-export, d-feet, deeptools, diffoscope, dosbox, dvtm, emacs-butler, +emacs-dash, emacs-debbugs, emacs-deferred, emacs-f, emacs-flycheck, +emacs-let-alist, emacs-ob-ipython, emacs-s, emacs-typo, enblend-enfuse, +epiphany, esmtp, ethtool, evilwm, exfat-utils, express-beta-diversity, +extra-cmake-modules, extundelete, fastcap, fasthenry, figlet, file-roller, +flann, font-anonymous-pro, font-gnu-unifont, font-inconsolata, font-tex-gyre, +font-ubuntu, frescobaldi, fuse-exfat, gajim, gamine, gerbv, gexiv2, +ghc-adjunctions, ghc-aeson, ghc-alex, ghc-annotated-wl-pprint, +ghc-ansi-terminal, ghc-ansi-wl-pprint, ghc-appar, ghc-async, ghc-attoparsec, +ghc-auto-update, ghc-base-compat, ghc-base-orphans, ghc-base64-bytestring, +ghc-bifunctors, ghc-blaze-builder, ghc-blaze-html, ghc-blaze-markup, +ghc-byteorder, ghc-bytestring-builder, ghc-cereal, ghc-cgi, ghc-charset, +ghc-cheapskate, ghc-clock, ghc-cmdargs, ghc-comonad, ghc-contravariant, +ghc-cookie, ghc-css-text, ghc-data-default, ghc-data-default-class, +ghc-data-default-instances-base, ghc-data-default-instances-containers, +ghc-data-default-instances-dlist, ghc-data-default-instances-old-locale, +ghc-digest, ghc-distributive, ghc-dlist, ghc-doctest, ghc-easy-file, +ghc-exceptions, ghc-extensible-exceptions, ghc-extra, ghc-fast-logger, +ghc-fingertree, ghc-free, ghc-generic-deriving, ghc-gluraw, ghc-glut, +ghc-haddock, ghc-haddock-api, ghc-haddock-library, ghc-half, ghc-happy, +ghc-haskell-src, ghc-haskell-src-exts, ghc-hspec, ghc-hspec-core, +ghc-hspec-expectations, ghc-hspec-meta, ghc-html, ghc-http-types, ghc-iproute, +ghc-kan-extensions, ghc-lens, ghc-lifted-base, ghc-logict, ghc-mmorph, +ghc-monad-control, ghc-multipart, ghc-nats, ghc-objectname, ghc-old-locale, +ghc-old-time, ghc-opengl, ghc-openglraw, ghc-optparse-applicative, +ghc-parsers, ghc-pcre-light, ghc-polyparse, ghc-prelude-extras, +ghc-profunctors, ghc-quickcheck-instances, ghc-quickcheck-io, +ghc-quickcheck-unicode, ghc-reducers, ghc-reflection, ghc-regex-base, +ghc-regex-compat, ghc-regex-posix, ghc-regex-tdfa-rc, ghc-resourcet, ghc-safe, +ghc-scientific, ghc-sdl, ghc-sdl-image, ghc-sdl-mixer, ghc-semigroupoids, +ghc-semigroups, ghc-setenv, ghc-silently, ghc-simple-reflect, ghc-smallcheck, +ghc-statevar, ghc-streaming-commons, ghc-stringbuilder, ghc-stringsearch, +ghc-tagged, ghc-tagsoup, ghc-tasty, ghc-tasty-ant-xml, ghc-tasty-golden, +ghc-tasty-hunit, ghc-tasty-quickcheck, ghc-tasty-smallcheck, ghc-temporary, +ghc-temporary-rc, ghc-transformers-base, ghc-transformers-compat, +ghc-trifecta, ghc-unbounded-delays, ghc-uniplate, ghc-unix-compat, +ghc-unix-time, ghc-utf8-string, ghc-vault, ghc-vector-binary-instances, +ghc-void, ghc-wai, ghc-wai-extra, ghc-wai-logger, ghc-word8, ghc-x11, +ghc-x11-xft, ghc-xhtml, ghc-xml, ghc-xmonad-contrib, ghc-xss-sanitize, +ghc-zip-archive, glibc-hurd, glibc-hurd-headers, gmtp, graphios, gtk-doc, +guile-next, guile-present, guile-redis, guile-rsvg, guile-wisp, gusb, gvfs, +gzochi, haunt, hlint, hscolour, hspec-discover, hurd-minimal, i3-wm, i3status, +ibus-libpinyin, idris, ifstatus, keepassx, klick, kwindowsystem, lablgtk, +libatasmart, libchamplain, libchop, libconfuse, libcue, libesmtp, libev, +libfm, libfm-extra, libgee, libgudev, liblxqt, libndp, libpano13, libpinyin, +libraw, libusb-compat, libyajl, lxqt-common, lxqt-session, lxrandr, lxtask, +lxterminal, lz4, mafft, manaplus, mars, menu-cache, minixml, mosaik, +nestopia-ue, newt, non-sequencer, ntk, openimageio, opusfile, patches, pbzip2, +pcmanfm, pcre2, pd, pelican, perl-czplib, perl-date-manip, perl-finance-quote, +perl-html-element-extended, perl-html-tableextract, perl-pod-simple, physfs, +pidgin, pidgin-otr, pigz, po4a, poppler-qt4, pwgen, python-appdirs, +python-bandit, python-blinker, python-ccm, python-chardet, +python-cryptography, python-cryptography-vectors, python-debian, +python-debtcollector, python-ecdsa, python-file, python-fonttools, +python-gnupg, python-hacking, python-httplib2, python-idna, +python-ipython-genutils, python-iso8601, python-joblib, python-libarchive-c, +python-llfuse, python-ly, python-minimal, python-minimal, python-mistune, +python-monotonic, python-mox3, python-msgpack, python-nbxmpp, python-netaddr, +python-numexpr, python-os-client-config, python-os-testr, python-oslo.config, +python-oslo.context, python-oslo.i18n, python-oslo.log, +python-oslo.serialization, python-oslo.utils, python-oslosphinx, +python-oslotest, python-paramiko, python-passlib, python-pathpy, python-patsy, +python-pbr, python-pbr, python-pexpect, python-pickleshare, python-pip, +python-poppler-qt4, python-pretend, python-prettytable, python-ptyprocess, +python-py-bcrypt, python-pyasn1, python-pyopenssl, python-pytest-runner, +python-requests-mock, python-setuptools-scm, python-simplegeneric, +python-statsmodels, python-stevedore, python-tempest-lib, python-terminado, +python-tlsh, python-traitlets, python-webob, python-wrapt, python-xlrd, +python2-appdirs, python2-bandit, python2-blinker, python2-ccm, +python2-chardet, python2-cryptography, python2-cryptography-vectors, +python2-debian, python2-debtcollector, python2-ecdsa, python2-file, +python2-fonttools, python2-gnupg, python2-hacking, python2-httplib2, +python2-idna, python2-ipaddress, python2-ipython-genutils, python2-iso8601, +python2-joblib, python2-keyring, python2-libarchive-c, python2-llfuse, +python2-mistune, python2-monotonic, python2-mox3, python2-msgpack, +python2-nbxmpp, python2-netaddr, python2-notmuch, python2-numexpr, +python2-os-client-config, python2-os-testr, python2-oslo.config, +python2-oslo.context, python2-oslo.i18n, python2-oslo.log, +python2-oslo.serialization, python2-oslo.utils, python2-oslosphinx, +python2-oslotest, python2-paramiko, python2-passlib, python2-pathpy, +python2-patsy, python2-pbr, python2-pbr, python2-pexpect, python2-pickleshare, +python2-pip, python2-pretend, python2-prettytable, python2-ptyprocess, +python2-py-bcrypt, python2-pyasn1, python2-pycrypto, python2-pyopenssl, +python2-pytest-runner, python2-requests-mock, python2-setuptools-scm, +python2-simplegeneric, python2-statsmodels, python2-stevedore, +python2-tempest-lib, python2-terminado, python2-tlsh, python2-traitlets, +python2-webob, python2-wrapt, python2-xlrd, r-assertthat, r-bh, r-chron, +r-codetools, r-colorspace, r-crayon, r-data.table, r-dbi, r-dichromat, +r-digest, r-dplyr, r-evaluate, r-formatr, r-ggplot2, r-gtable, r-highr, +r-htmltools, r-htmlwidgets, r-httpuv, r-jsonlite, r-knitr, r-labeling, +r-lazyeval, r-magrittr, r-markdown, r-memoise, r-microbenchmark, r-mime, +r-munsell, r-plyr, r-proto, r-pryr, r-qtl, r-r6, r-rcolorbrewer, r-rcpp, +r-reshape2, r-scales, r-servr, r-stringi, r-stringr, r-testthat, r-yaml, rage, +raincat, redis, rest, rfkill, rpm, ruby-activesupport, ruby-atoulme-antwrap, +ruby-bio-logger, ruby-builder, ruby-byebug, ruby-coderay, ruby-cucumber-core, +ruby-diff-lcs, ruby-docile, ruby-ffi, ruby-formatador, ruby-gherkin3, +ruby-json, ruby-libxml, ruby-listen, ruby-log4r, ruby-lumberjack, +ruby-method-source, ruby-mini-portile, ruby-minitar, ruby-nenv, ruby-nokogiri, +ruby-notiffany, ruby-orderedhash, ruby-ox, ruby-permutation, ruby-pg, +ruby-pry, ruby-rack, ruby-rb-inotify, ruby-rjb, ruby-rubygems-tasks, +ruby-shellany, ruby-shindo, ruby-simplecov-html, ruby-thor, ruby-thread-safe, +ruby-tzinfo, ruby-xml-simple, ruby-yard, sassc, scmutils, seqmagick, shotwell, +shroud, simple-scan, squashfs-tools, sxhkd, tinc, udisks, unison, vsearch, +webkitgtk-gtk2, wesnoth, wpa-supplicant-minimal, xcb-util-cursor, xcompmgr, +xfce4-pulseaudio-plugin, xjackfreak, xlsfonts, xmonad, yapet, yelp, +yelp-tools, yelp-xsl, znc, zynaddsubfx + +*** 268 package updates + +abcde-2.7, arb-2.7.0, ardour-4.2, at-spi2-atk-2.18.1, at-spi2-core-2.18.1, +ath9k-htc-firmware-1.4.0, atk-2.18.0, atkmm-2.24.1, autogen-5.18.6, +avidemux-2.6.10, bedtools-2.24.0, binutils-2.25.1, +binutils-static-stripped-tarball-2.25.1, bison-3.0.4, bluez-5.35, +bundler-1.10.6, c-reduce-2.3.0, cairomm-1.12.0, calcurse-4.0.0, +calibre-2.41.0, camlp5-6.14, cgal-4.6.3, chess-6.2.2, clang-3.6.2, +claws-mail-3.13.0, cmake-3.3.2, complexity-1.3, conkeror-1.0pre1.20150730, +cpio-2.12, crossmap-0.2.1, csound-6.05, cups-2.1.0, cups-filters-1.0.75, +cups-minimal-2.1.0, curl-7.45.0, dbus-1.10.0, dbus-1.10.0.a, ddrescue-1.20, +dmd-0.2.01, docbook-xml-4.4, docbook-xml-4.5, dosfstools-3.0.28, +e2fsck-static-1.42.13, e2fsprogs-1.42.13, efl-1.15.2, eigen-3.2.6, +elementary-1.15.2, emotion-generic-players-1.15.0, enlightenment-0.19.12, +eudev-3.1.5, evas-generic-loaders-1.15.0, feh-2.14, ffmpeg-2.8, fish-2.2.0, +flint-2.5.2, fontconfig-2.11.94, freeglut-3.0.0, freeimage-3.17.0, +freeipmi-1.4.11, gcc-4.9.3, gcc-4.9.3, gcc-4.9.3, gcc-5.2.0, +gcc-toolchain-5.2.0, gcj-4.9.3, gdb-7.10, gdk-pixbuf-2.32.1, geiser-0.8.1, +gettext-0.19.6, ghc-7.10.2, ghc-hashable-1.2.3.3, ghc-http-4000.2.20, +ghc-mtl-2.2.1, ghc-network-2.6.2.1, ghc-network-uri-2.6.0.3, +ghc-primitive-0.6.1.0, ghc-quickcheck-2.8.1, ghc-syb-0.6, ghc-text-1.2.1.3, +ghc-vector-0.11.0.0, giflib-5.1.1, git-2.5.0, git-manpages-2.5.0, +git-modes-1.2.0, glib-2.46.1, glib-networking-2.46.1, glibc-2.22, +glibc-locales-2.22, glibc-stripped-tarball-2.22, glibc-utf8-locales-2.22, +glibmm-2.46.1, global-6.5.1, glpk-4.56, gnome-desktop-3.16.2, +gnome-themes-standard-3.16.2, gnu-pw-mgr-1.6, gnumach-headers-1.6, +gnupg-2.1.9, gnurl-7.45.0, gnutls-3.4.5, gobject-introspection-1.46.0, +gp2c-0.0.9pl3, graphite2-1.3.3, graphviz-2.38.0, +gsettings-desktop-schemas-3.18.0, gsl-2.0, gst-libav-1.6.1, +gst-plugins-base-1.6.1, gst-plugins-good-1.6.1, gst-plugins-ugly-1.6.1, +gstreamer-1.6.1, gtk+-3.18.2, gtkmm-3.18.0, guile-ssh-0.8.0, guitarix-0.33.0, +guix-0.8.3, guix-0.8.3.b485f75, harfbuzz-1.0.5, help2man-1.47.2, +hurd-headers-0.7, ibus-1.5.11, icecat-38.3.0-gnu1, icedtea6-1.13.8, +icedtea7-2.6.2, imagemagick-6.9.2-1, intltool-0.51.0, json-glib-1.0.4, +leptonica-1.72, less-481, libbluray-0.9.0, libcap-2.24, libdrm-2.4.65, +libdvdcss-1.3.99, libedit-20150325-3.1, libgcrypt-1.6.3, libgsf-1.14.34, +libidn-1.32, libinput-0.21.0, libmicrohttpd-0.9.45, libmtp-1.1.9, +libotr-4.1.0, libpcap-1.7.4, libpciaccess-0.13.4, libqtxdg-1.2.0, +librsvg-2.40.11, libsigc++-2.6.1, libsoup-2.52.1, libssh-0.6.5, libtiff-4.0.5, +libtorrent-0.13.6, libva-1.6.1, lilypond-2.19.27, links-2.12, +linux-libre-4.2.5, linux-pam-1.2.1, lirc-0.9.3, llvm-3.6.2, lua-5.2.3, +lzo-2.09, magit-2.3.0, mesa-11.0.3, mesa-headers-11.0.3, mig-1.6, +minetest-0.4.13, mosh-1.2.5, mpg123-1.22.4, mplayer-1.2, mpv-0.11.0, +mu-0.9.13, mutt-1.5.24, ncdu-1.11, ncmpcpp-0.6.7, ncurses-6.0, node-0.12.7, +notmuch-0.20.2, ntp-4.2.8p4, ocaml-4.02.3, offlineimap-6.5.7, openblas-0.2.15, +openjpeg-2.1.0, openldap-2.4.42, openssh-7.0p1, orc-0.4.24, pango-1.38.1, +pangomm-2.38.1, parallel-20151022, pavucontrol-3.0, +pbtranscript-tofu-2.2.3.8f5467fe6, pciutils-3.3.1, perf-4.2.5, +perl-xml-parser-2.44, pixman-0.32.8, poppler-0.37.0, powertop-2.7, +python-cffi-1.2.1, python-dateutil-2.2, python-fixtures-1.3.1, +python-ipython-3.2.1, python-pyflakes-0.9.2, python-pygobject-3.18.0, +python-pyqt-4.11.4, python-pyqt-5.5, python-requests-2.8.0, +python-scipy-0.16.0, python-setuptools-18.3.1, python-sip-4.16.9, +python-six-1.9.0, python2-cffi-1.2.1, python2-dateutil-2.2, +python2-fixtures-1.3.1, python2-ipython-3.2.1, python2-pygobject-3.18.0, +python2-pyqt-4.11.4, python2-pyqt-5.5, python2-requests-2.8.0, +python2-scipy-0.16.0, python2-setuptools-18.3.1, python2-sip-4.16.9, +python2-six-1.9.0, qemu-2.4.0.1, qemu-headless-2.4.0.1, qpdf-5.1.3, +qsynth-0.4.0, qt-5.5.1, r-3.2.2, racket-6.2.1, ratpoison-1.4.8, readline-6.3, +retroarch-1.2.2, ripperx-2.8.0, rtorrent-0.9.6, ruby-2.2.3, ruby-arel-6.0.3, +ruby-bacon-1.2.0, ruby-i18n-0.7.0, samtools-1.2, sfarklib-2.24, sfml-2.3.2, +shadow-4.2.1, sipwitch-1.9.14, sqlite-3.8.11.1, subversion-1.8.14, +synergy-1.7.4, tcl-8.6.4, tcpdump-4.7.4, teckit-2.5.4, terminology-0.9.1, +texlive-2015, texlive-bin-2015, texlive-texmf-2015, tiled-0.13.1, tk-8.6.4, +tmux-2.0, tor-0.2.6.10, ucommon-6.6.2, units-2.12, util-linux-2.27, +vala-0.30.0, valgrind-3.11.0, vlc-2.2.1, webkitgtk-2.8.5, weechat-1.3, +wine-1.7.52, wpa-supplicant-2.5, xapian-1.2.21, xterm-320, +youtube-dl-2015.11.01, zsh-5.1.1 + +** Programming interfaces + +*** Rewritten (gnu services) module; (gnu services …) modules adjusted +*** New Emacs development tools, see “Development” in the manual +*** (guix gexp) provides the declarative ‘computed-file’, ‘program-file’, etc. +*** New (guix upstream) module, for generalized upstream release tracking + +** Noteworthy bug fixes + +*** Passwords in /etc/shadow are SHA512-hashed (http://bugs.gnu.org/21318) +*** daemon: Require a signature for imports made by root + (http://bugs.gnu.org/21354) +*** emacs: Fix guix-guile-program default value (http://bugs.gnu.org/21127) +*** Compressed initrds no longer include timestamps +*** Partly fix handling of encrypted root partitions + (http://bugs.gnu.org/19190) +*** Python now includes tkinter (http://bugs.gnu.org/20889) +*** Memoize the results of ‘package-with-python2’ (http://bugs.gnu.org/21675) +*** Use the daemon's substitute URLs by default (http://bugs.gnu.org/20217) +*** ‘guix system --no-grub’ works correctly for ‘init’ and ‘reconfigure’ + (http://bugs.gnu.org/21068) + +** Native language support + +*** Updated translations: da + * Changes in 0.8.3 (since 0.8.2) ** Package management diff --git a/THANKS b/THANKS index eb6db7f37b..b0dd79382a 100644 --- a/THANKS +++ b/THANKS @@ -25,6 +25,7 @@ infrastructure help: Daniel Kochmański Matthew Lien Dave Love + Chris Marusich Niels Möller Cyprien Nicolas Yutaka Niibe @@ -39,6 +40,7 @@ infrastructure help: Thomas Schwinge Alexander Shendi Alen Skondro + Jan Synáček Matthias Wachs Christopher Allan Webber Philip Woods diff --git a/config-daemon.ac b/config-daemon.ac index 8c1c776133..c74ec94d31 100644 --- a/config-daemon.ac +++ b/config-daemon.ac @@ -14,14 +14,6 @@ if test "x$guix_build_daemon" = "xyes"; then AC_PROG_RANLIB AC_CONFIG_HEADER([nix/config.h]) - dnl Decompressors, for use by the substituter. - AC_PATH_PROG([GZIP], [gzip]) - AC_PATH_PROG([BZIP2], [bzip2]) - AC_PATH_PROG([XZ], [xz]) - AC_SUBST([GZIP]) - AC_SUBST([BZIP2]) - AC_SUBST([XZ]) - dnl Use 64-bit file system calls so that we can support files > 2 GiB. AC_SYS_LARGEFILE diff --git a/configure.ac b/configure.ac index 00e7c7b4bc..19efd08e64 100644 --- a/configure.ac +++ b/configure.ac @@ -90,6 +90,14 @@ GUIX_CHECK_LIBC_MOUNT AM_CONDITIONAL([BUILD_SYSCALLS_MODULE], [test "x$guix_cv_libc_has_mount" = "xyes"]) +dnl Decompressors, for use by the substituter and other modules. +AC_PATH_PROG([GZIP], [gzip]) +AC_PATH_PROG([BZIP2], [bzip2]) +AC_PATH_PROG([XZ], [xz]) +AC_SUBST([GZIP]) +AC_SUBST([BZIP2]) +AC_SUBST([XZ]) + AC_ARG_WITH([nix-prefix], [AS_HELP_STRING([--with-nix-prefix=DIR], [search for Nix in DIR (for testing purposes and '--disable-daemon' builds)])], diff --git a/daemon.am b/daemon.am index f2cb0a499e..ca272a9cb6 100644 --- a/daemon.am +++ b/daemon.am @@ -21,7 +21,7 @@ # BUILT_SOURCES += nix/libstore/schema.sql.hh -CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service +CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service etc/guix-daemon.conf noinst_LIBRARIES = libformat.a libutil.a libstore.a @@ -69,7 +69,8 @@ libutil_headers = \ nix/libutil/gcrypt-hash.hh \ nix/libutil/md5.h \ nix/libutil/sha1.h \ - nix/libutil/sha256.h + nix/libutil/sha256.h \ + nix/libutil/sha512.h libutil_a_CPPFLAGS = \ -I$(top_builddir)/nix \ @@ -191,11 +192,23 @@ etc/guix-daemon.service: etc/guix-daemon.service.in \ "$(srcdir)/etc/guix-daemon.service.in" > "$@.tmp" mv "$@.tmp" "$@" +# The '.conf' job for Upstart. +upstartjobdir = $(libdir)/upstart/system +nodist_upstartjob_DATA = etc/guix-daemon.conf + +etc/guix-daemon.conf: etc/guix-daemon.conf.in \ + $(top_builddir)/config.status + $(MKDIR_P) "`dirname "$@"`" + $(SED) -e 's|@''bindir''@|$(bindir)|' < \ + "$(srcdir)/etc/guix-daemon.conf.in" > "$@.tmp" + mv "$@.tmp" "$@" + EXTRA_DIST += \ nix/libstore/schema.sql \ nix/AUTHORS \ nix/COPYING \ - etc/guix-daemon.service.in + etc/guix-daemon.service.in \ + etc/guix-daemon.conf.in AM_TESTS_ENVIRONMENT += \ top_builddir="$(abs_top_builddir)" diff --git a/doc/contributing.texi b/doc/contributing.texi index 245ce9b1c4..54fb23a822 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -7,6 +7,14 @@ grow! Please get in touch with us on @email{guix-devel@@gnu.org} and reports, patches, and anything that may be helpful to the project. We particularly welcome help on packaging (@pxref{Packaging Guidelines}). +@cindex code of conduct, of contributors +@cindex contributor covenant +We want to provide a warm, friendly, and harassment-free environment, so +that anyone can contribute to the best of their abilities. To this end +our project uses a ``Contributor Covenant'', which was adapted from +@url{http://contributor-covenant.org/}. You can find a local version in +the @file{CODE-OF-CONDUCT} file in the source tree. + @menu * Building from Git:: The latest and greatest. * Running Guix Before It Is Installed:: Hacker tricks. @@ -27,33 +35,47 @@ the installation instructions (@pxref{Requirements}). @item @url{http://gnu.org/software/autoconf/, GNU Autoconf}; @item @url{http://gnu.org/software/automake/, GNU Automake}; @item @url{http://gnu.org/software/gettext/, GNU Gettext}; +@item @url{http://gnu.org/software/texinfo/, GNU Texinfo}; @item @url{http://www.graphviz.org/, Graphviz}; @item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}. @end itemize -Run @command{./bootstrap} to download the Nix daemon source code and to -generate the build system infrastructure using autoconf. It reports an -error if an inappropriate version of the above packages is being used. +The easiest way to set up a development environment for Guix is, of +course, by using Guix! The following command starts a new shell where +all the dependencies and appropriate environment variables are set up to +hack on Guix: -@noindent -If you get an error like this one: +@example +guix environment guix +@end example + +@xref{Invoking guix environment}, for more information on that command. +Extra dependencies can be added with @option{--ad-hoc}: + +@example +guix environment guix --ad-hoc help2man git strace +@end example + +Run @command{./bootstrap} to generate the build system infrastructure +using Autoconf and Automake. If you get an error like this one: @example configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES @end example +@noindent it probably means that Autoconf couldn’t find @file{pkg.m4}, which is -provided by @command{pkg-config}. Make sure that @file{pkg.m4} is -available. For instance, if you installed Automake in -@file{/usr/local}, it wouldn’t look for @file{.m4} files in -@file{/usr/share}. So you have to invoke the following command in that -case +provided by pkg-config. Make sure that @file{pkg.m4} is available. The +same holds for the @file{guile.m4} set of macros provided by Guile. For +instance, if you installed Automake in @file{/usr/local}, it wouldn’t +look for @file{.m4} files in @file{/usr/share}. In that case, you have +to invoke the following command: @example export ACLOCAL_PATH=/usr/share/aclocal @end example -See @pxref{Macro Search Path,,, automake, The GNU Automake Manual} for +@xref{Macro Search Path,,, automake, The GNU Automake Manual}, for more information. Then, run @command{./configure} as usual. @@ -86,11 +108,40 @@ Similarly, for a Guile session using the Guix modules: @example $ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))' + +;;; ("x86_64-linux") +@end example + +@noindent +@cindex REPL +@cindex read-eval-print loop +@dots{} and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile +Reference Manual}): + +@example +$ ./pre-inst-env guile +scheme@@(guile-user)> ,use(guix) +scheme@@(guile-user)> ,use(gnu) +scheme@@(guile-user)> (define snakes + (fold-packages + (lambda (package lst) + (if (string-prefix? "python" + (package-name package)) + (cons package lst) + lst)) + '())) +scheme@@(guile-user)> (length snakes) +$1 = 361 @end example The @command{pre-inst-env} script sets up all the environment variables necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}. +Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the +local source tree; it simply updates the @file{~/.config/guix/latest} +symlink (@pxref{Invoking guix pull}). Run @command{git pull} instead if +you want to upgrade your local source tree. + @node The Perfect Setup @section The Perfect Setup @@ -111,7 +162,8 @@ that it finds source files from your checkout: @lisp ;; @r{Assuming the Guix checkout is in ~/src/guix.} -(add-to-list 'geiser-guile-load-path "~/src/guix") +(with-eval-after-load 'geiser-guile + (add-to-list 'geiser-guile-load-path "~/src/guix")) @end lisp To actually edit the code, Emacs already has a neat Scheme mode. But in @@ -235,15 +287,31 @@ not affected by the change; @code{guix refresh --list-dependent @var{package}} will help you do that (@pxref{Invoking guix refresh}). @item +@cindex determinism, of build processes +@cindex reproducible builds, checking Check whether the package's build process is deterministic. This typically means checking whether an independent build of the package yields the exact same result that you obtained, bit for bit. -A simple way to do that is with @command{guix challenge} -(@pxref{Invoking guix challenge}). You may run it once the package has -been committed and built by @code{hydra.gnu.org} to check whether it -obtains the same result as you did. Better yet: Find another machine -that can build it and run @command{guix publish}. +A simple way to do that is by building the same package several times in +a row on your machine (@pxref{Invoking guix build}): + +@example +guix build --rounds=2 my-package +@end example + +This is enough to catch a class of common non-determinism issues, such +as timestamps or randomly-generated output in the build result. + +Another option is to use @command{guix challenge} (@pxref{Invoking guix +challenge}). You may run it once the package has been committed and +built by @code{hydra.gnu.org} to check whether it obtains the same +result as you did. Better yet: Find another machine that can build it +and run @command{guix publish}. Since the remote build machine is +likely different from yours, this can catch non-determinism issues +related to the hardware---e.g., use of different instruction set +extensions---or to the operating system kernel---e.g., reliance on +@code{uname} or @file{/proc} files. @end enumerate diff --git a/doc/emacs.texi b/doc/emacs.texi index 0e901e1f90..e4608f09ef 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -227,6 +227,8 @@ prefix argument is used. This has the same meaning as @code{--manifest} option (@pxref{Invoking guix package}). @item C-c C-z +@cindex REPL +@cindex read-eval-print loop Go to the Guix REPL (@pxref{The REPL,,, geiser, Geiser User Manual}). @item h @@ -644,12 +646,11 @@ Toggle (show/hide) the bodies of all build phases. @end table There is also @kbd{M-x guix-build-log-minor-mode} which also provides -the same highlighting (but not key bindings). And as it is a minor -mode, it can be enabled in any buffer. For example, if you are building -some package in a shell buffer (@pxref{Interactive Shell,,, emacs, The -GNU Emacs Manual}), you may enable @command{guix-build-log-minor-mode} -to make it more colorful. Guix build output is rather specific, so this -new highlighting shouldn't conflict with the existing one. +the same highlighting and the same key bindings as the major mode, but +prefixed with @kbd{C-c}. By default, this minor mode is enabled in +shell buffers (@pxref{Interactive Shell,,, emacs, The GNU Emacs +Manual}). If you don't like it, set +@code{guix-build-log-minor-mode-activate} to nil. @node Emacs Completions diff --git a/doc/guix.texi b/doc/guix.texi index 99c10d8dc7..4b06b32232 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -144,6 +144,7 @@ Utilities * Invoking guix environment:: Setting up development environments. * Invoking guix publish:: Sharing substitutes. * Invoking guix challenge:: Challenging substitute servers. +* Invoking guix container:: Process isolation. GNU Distribution @@ -233,7 +234,8 @@ software packages, etc. @cindex functional package management The term @dfn{functional} refers to a specific package management -discipline. In Guix, the package build and installation process is seen +discipline pioneered by Nix (@pxref{Acknowledgments}). +In Guix, the package build and installation process is seen as a function, in the mathematical sense. That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package. As a pure function, its result depends @@ -364,6 +366,10 @@ On hosts using the systemd init system, drop @file{~root/.guix-profile/lib/systemd/system/guix-daemon.service} in @file{/etc/systemd/system}. +Likewise, on hosts using the Upstart init system, drop +@file{~root/.guix-profile/lib/upstart/system/guix-daemon.conf} in +@file{/etc/init}. + @item Make the @command{guix} command available to other users on the machine, for instance with: @@ -552,7 +558,10 @@ parallel, as specified by the @option{--max-jobs} option following command@footnote{If your machine uses the systemd init system, dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} file in @file{/etc/systemd/system} will ensure that -@command{guix-daemon} is automatically started.}: +@command{guix-daemon} is automatically started. Similarly, if your +machine uses the Upstart init system, drop the +@file{@var{prefix}/lib/upstart/system/guix-daemon.conf} +file in @file{/etc/init}.}: @example # guix-daemon --build-users-group=guixbuild @@ -591,6 +600,14 @@ user @file{nobody}; a writable @file{/tmp} directory. @end itemize +You can influence the directory where the daemon stores build trees +@i{via} the @code{TMPDIR} environment variable. However, the build tree +within the chroot is always @file{/tmp/nix-build-@var{name}.drv-0}, +where @var{name} is the derivation name---e.g., @code{coreutils-8.24}. +This way, the value of @code{TMPDIR} does not leak inside build +environments, which avoids discrepancies in cases where build processes +capture the name of their build tree. + If you are installing Guix as an unprivileged user, it is still possible to run @command{guix-daemon} provided you pass @code{--disable-chroot}. However, build processes will not be isolated from one another, and not @@ -998,6 +1015,17 @@ to display fonts, you will have to install fonts with Guix as well. Essential font packages include @code{gs-fonts}, @code{font-dejavu}, and @code{font-gnu-freefont-ttf}. +To display text written in Chinese languages, Japanese, or Korean in +graphical applications, consider installing +@code{font-adobe-source-han-sans} or @code{font-wqy-zenhei}. The former +has multiple outputs, one per language family (@pxref{Packages with +Multiple Outputs}). For instance, the following command installs fonts +for Chinese languages: + +@example +guix package -i font-adobe-source-han-sans:cn +@end example + @c TODO What else? @c ********************************************************************* @@ -1345,6 +1373,20 @@ meaning that the returned environment variable definitions will either be exact settings, or prefixes or suffixes of the current value of these variables. When omitted, @var{kind} defaults to @code{exact}. +This option can also be used to compute the @emph{combined} search paths +of several profiles. Consider this example: + +@example +$ guix package -p foo -i guile +$ guix package -p bar -i guile-json +$ guix package -p foo -p bar --search-paths +@end example + +The last command above reports about the @code{GUILE_LOAD_PATH} +variable, even though, taken individually, neither @file{foo} nor +@file{bar} would lead to that recommendation. + + @item --profile=@var{profile} @itemx -p @var{profile} Use @var{profile} instead of the user's default profile. @@ -1604,7 +1646,10 @@ a diverse set of independent package builds, we can strengthen the integrity of our systems. The @command{guix challenge} command aims to help users assess substitute servers, and to assist developers in finding out about non-deterministic package builds (@pxref{Invoking guix -challenge}). +challenge}). Similarly, the @option{--check} option of @command{guix +build} allows users to check whether previously-installed substitutes +are genuine by rebuilding them locally (@pxref{build-check, +@command{guix build --check}}). In the future, we want Guix to have support to publish and retrieve binaries to/from other users, in a peer-to-peer fashion. If you would @@ -1812,7 +1857,9 @@ On completion, @command{guix package} will use packages and package versions from this just-retrieved copy of Guix. Not only that, but all the Guix commands and Scheme modules will also be taken from that latest version. New @command{guix} sub-commands added by the update also -become available. +become available@footnote{Under the hood, @command{guix pull} updates +the @file{~/.config/guix/latest} symbolic link to point to the latest +Guix, and the @command{guix} command loads code from there.}. The @command{guix pull} command is usually invoked with no arguments, but it supports the following options: @@ -3582,6 +3629,7 @@ programming interface of Guix in a convenient way. * Invoking guix environment:: Setting up development environments. * Invoking guix publish:: Sharing substitutes. * Invoking guix challenge:: Challenging substitute servers. +* Invoking guix container:: Process isolation. @end menu @node Invoking guix build @@ -3615,6 +3663,19 @@ The @var{options} may be zero or more of the following: @table @code +@item --file=@var{file} +@itemx -f @var{file} + +Build the package or derivation that the code within @var{file} +evaluates to. + +As an example, @var{file} might contain a package definition like this +(@pxref{Defining Packages}): + +@example +@verbatiminclude package-hello.scm +@end example + @item --expression=@var{expr} @itemx -e @var{expr} Build the package or derivation @var{expr} evaluates to. @@ -3736,6 +3797,19 @@ $ git clone git://git.sv.gnu.org/guix.git $ guix build guix --with-source=./guix @end example +@anchor{build-check} +@item --check +@cindex determinism, checking +@cindex reproducibility, checking +Rebuild @var{package-or-derivation}, which are already available in the +store, and raise an error if the build results are not bit-for-bit +identical. + +This mechanism allows you to check whether previously-installed +substitutes are genuine (@pxref{Substitutes}), or whether a package's +build result is deterministic. @xref{Invoking guix challenge}, for more +background information and tools. + @item --no-grafts Do not ``graft'' packages. In practice, this means that package updates available as grafts are not applied. @xref{Security Updates}, for more @@ -3826,6 +3900,20 @@ Do not use substitutes for build products. That is, always build things locally instead of allowing downloads of pre-built binaries (@pxref{Substitutes}). +@item --rounds=@var{n} +Build each derivation @var{n} times in a row, and raise an error if +consecutive build results are not bit-for-bit identical. + +This is a useful way to detect non-deterministic builds processes. +Non-deterministic build processes are a problem because they make it +practically impossible for users to @emph{verify} whether third-party +binaries are genuine. @xref{Invoking guix challenge}, for more. + +Note that, currently, the differing build results are not kept around, +so you will have to manually investigate in case of an error---e.g., by +stashing one of the build results with @code{guix archive --export}, +then rebuilding, and finally comparing the two results. + @item --no-build-hook Do not attempt to offload builds @i{via} the daemon's ``build hook'' (@pxref{Daemon Offload Setup}). That is, always build things locally @@ -3897,8 +3985,9 @@ guix edit gcc-4.8 vim @end example @noindent -launches the program specified in the @code{EDITOR} environment variable -to edit the recipe of GCC@tie{}4.8.4 and that of Vim. +launches the program specified in the @code{VISUAL} or in the +@code{EDITOR} environment variable to edit the recipe of GCC@tie{}4.8.4 +and that of Vim. If you are using Emacs, note that the Emacs user interface provides similar functionality in the ``package info'' and ``package list'' @@ -4112,6 +4201,15 @@ package definition. When importing a GNU package, the synopsis and descriptions are replaced by their canonical upstream variant. +Usually, you will first need to do: + +@example +export NIX_REMOTE=daemon +@end example + +@noindent +so that @command{nix-instantiate} does not try to open the Nix database. + As an example, the command below imports the package definition of LibreOffice (more precisely, it imports the definition of the package bound to the @code{libreoffice} top-level attribute): @@ -4233,6 +4331,19 @@ The following options are supported: @table @code +@item --expression=@var{expr} +@itemx -e @var{expr} +Consider the package @var{expr} evaluates to. + +This is useful to precisely refer to a package, as in this example: + +@example +guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)' +@end example + +This command lists the dependents of the ``final'' libc (essentially all +the packages.) + @item --update @itemx -u Update distribution source files (package recipes) in place. This is @@ -4263,23 +4374,27 @@ inconvenient. @item --type=@var{updater} @itemx -t @var{updater} -Select only packages handled by @var{updater}. Currently, @var{updater} -may be one of: +Select only packages handled by @var{updater} (may be a comma-separated +list of updaters). Currently, @var{updater} may be one of: @table @code @item gnu the updater for GNU packages; +@item gnome +the updater for GNOME packages; @item elpa the updater for @uref{http://elpa.gnu.org/, ELPA} packages; @item cran -the updater fro @uref{http://cran.r-project.org/, CRAN} packages. +the updater for @uref{http://cran.r-project.org/, CRAN} packages; +@item pypi +the updater for @uref{https://pypi.python.org, PyPI} packages. @end table For instance, the following commands only checks for updates of Emacs packages hosted at @code{elpa.gnu.org} and updates of CRAN packages: @example -$ guix refresh -t elpa -t cran +$ guix refresh --type=elpa,cran gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0 gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9 @end example @@ -4305,6 +4420,10 @@ be used when passing @command{guix refresh} one or more package names: @table @code +@item --list-updaters +@itemx -L +List available updaters and exit (see @option{--type} above.) + @item --list-dependent @itemx -l List top-level dependent packages that would need to be rebuilt as a @@ -4380,6 +4499,12 @@ invalid. Check that the source file name is meaningful, e.g. is not just a version number or ``git-checkout'', and should not have a @code{file-name} declared (@pxref{origin Reference}). +@item cve +Report known vulnerabilities found in the Common Vulnerabilities and +Exposures (CVE) database +@uref{https://nvd.nist.gov/download.cfm#CVE_FEED, published by the US +NIST}. + @item formatting Warn about obvious source code formatting issues: trailing white space, use of tabulations, etc. @@ -4559,6 +4684,9 @@ here, for conciseness. Similar to @code{bag-emerged}, but this time including all the bootstrap dependencies. +@item bag-with-origins +Similar to @code{bag}, but also showing origins and their dependencies. + @item derivations This is the most detailed representation: It shows the DAG of derivations (@pxref{Derivations}) and plain store items. Compared to @@ -4681,12 +4809,43 @@ NumPy: guix environment --ad-hoc python2-numpy python-2.7 -- python @end example +Furthermore, one might want the dependencies of a package and also some +additional packages that are not build-time or runtime dependencies, but +are useful when developing nonetheless. Because of this, the +@code{--ad-hoc} flag is positional. Packages appearing before +@code{--ad-hoc} are interpreted as packages whose dependencies will be +added to the environment. Packages appearing after are interpreted as +packages that will be added to the environment directly. For example, +the following command creates a Guix development environment that +additionally includes Git and strace: + +@example +guix environment guix --ad-hoc git strace +@end example + +Sometimes it is desirable to isolate the environment as much as +possible, for maximal purity and reproducibility. In particular, when +using Guix on a host distro that is not GuixSD, it is desirable to +prevent access to @file{/usr/bin} and other system-wide resources from +the development environment. For example, the following command spawns +a Guile REPL in a ``container'' where only the store and the current +working directory are mounted: + +@example +guix environment --ad-hoc --container guile -- guile +@end example + +@quotation Note +The @code{--container} option requires Linux-libre 3.19 or newer. +@end quotation + The available options are summarized below. @table @code @item --expression=@var{expr} @itemx -e @var{expr} -Create an environment for the package that @var{expr} evaluates to. +Create an environment for the package or list of packages that +@var{expr} evaluates to. For example, running: @@ -4697,10 +4856,18 @@ guix environment -e '(@@ (gnu packages maths) petsc-openmpi)' starts a shell with the environment for this specific variant of the PETSc package. +Running: + +@example +guix environment --ad-hoc -e '(@@ (gnu) %base-packages)' +@end example + +starts a shell with all the GuixSD base packages available. + @item --load=@var{file} @itemx -l @var{file} -Create an environment for the package that the code within @var{file} -evaluates to. +Create an environment for the package or list of packages that the code +within @var{file} evaluates to. As an example, @var{file} might contain a definition like this (@pxref{Defining Packages}): @@ -4729,6 +4896,12 @@ Note that this example implicitly asks for the default output of specific output---e.g., @code{glib:bin} asks for the @code{bin} output of @code{glib} (@pxref{Packages with Multiple Outputs}). +This option may be composed with the default behavior of @command{guix +environment}. Packages appearing before @code{--ad-hoc} are interpreted +as packages whose dependencies will be added to the environment, the +default behavior. Packages appearing after are interpreted as packages +that will be added to the environment directly. + @item --pure Unset existing environment variables when building the new environment. This has the effect of creating an environment in which search paths @@ -4741,6 +4914,49 @@ environment. @item --system=@var{system} @itemx -s @var{system} Attempt to build for @var{system}---e.g., @code{i686-linux}. + +@item --container +@itemx -C +@cindex container +Run @var{command} within an isolated container. The current working +directory outside the container is mapped inside the +container. Additionally, the spawned process runs as the current user +outside the container, but has root privileges in the context of the +container. + +@item --network +@itemx -N +For containers, share the network namespace with the host system. +Containers created without this flag only have access to the loopback +device. + +@item --expose=@var{source}[=@var{target}] +For containers, expose the file system @var{source} from the host system +as the read-only file system @var{target} within the container. If +@var{target} is not specified, @var{source} is used as the target mount +point in the container. + +The example below spawns a Guile REPL in a container in which the user's +home directory is accessible read-only via the @file{/exchange} +directory: + +@example +guix environment --container --expose=$HOME=/exchange guile -- guile +@end example + +@item --share=@var{source}[=@var{target}] +For containers, share the file system @var{source} from the host system +as the writable file system @var{target} within the container. If +@var{target} is not specified, @var{source} is used as the target mount +point in the container. + +The example below spawns a Guile REPL in a container in which the user's +home directory is accessible for both reading and writing via the +@file{/exchange} directory: + +@example +guix environment --container --share=$HOME=/exchange guile -- guile +@end example @end table It also supports all of the common build options that @command{guix @@ -4765,6 +4981,10 @@ their authenticity and integrity (@pxref{Substitutes}). Because readable by the system administrator, it must be started as root; the @code{--user} option makes it drop root privileges early on. +The signing key pair must be generated before @command{guix publish} is +launched, using @command{guix archive --generate-key} (@pxref{Invoking +guix archive}). + The general syntax is: @example @@ -4808,6 +5028,11 @@ Reference Manual}) on @var{port} (37146 by default). This is used primarily for debugging a running @command{guix publish} server. @end table +Enabling @command{guix publish} on a GuixSD system is a one-liner: just +add a call to @code{guix-publish-service} in the @code{services} field +of the @code{operating-system} declaration (@pxref{guix-publish-service, +@code{guix-publish-service}}). + @node Invoking guix challenge @section Invoking @command{guix challenge} @@ -4882,7 +5107,7 @@ these lines (@pxref{Invoking guix archive}): @example $ wget -q -O - http://hydra.gnu.org/nar/@dots{}-git-2.5.0 \ | guix archive -x /tmp/git -$ diff -ur /gnu/store/@dots{}-git.2.5.0 /tmp/git +$ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git @end example This command shows the difference between the files resulting from the @@ -4930,6 +5155,60 @@ URLs to compare to. @end table +@node Invoking guix container +@section Invoking @command{guix container} +@cindex container + +@quotation Note +As of version @value{VERSION}, this tool is experimental. The interface +is subject to radical change in the future. +@end quotation + +The purpose of @command{guix container} is to manipulate processes +running within an isolated environment, commonly known as a +``container'', typically created by the @command{guix environment} +(@pxref{Invoking guix environment}) and @command{guix system container} +(@pxref{Invoking guix system}) commands. + +The general syntax is: + +@example +guix container @var{action} @var{options}@dots{} +@end example + +@var{action} specifies the operation to perform with a container, and +@var{options} specifies the context-specific arguments for the action. + +The following actions are available: + +@table @code +@item exec +Execute a command within the context of a running container. + +The syntax is: + +@example +guix container exec @var{pid} @var{program} @var{arguments}@dots{} +@end example + +@var{pid} specifies the process ID of the running container. +@var{program} specifies an executable file name within the container's +root file system. @var{arguments} are the additional options that will +be passed to @var{program}. + +The following command launches an interactive login shell inside a +GuixSD container, started by @command{guix system container}, and whose +process ID is 9001: + +@example +guix container exec 9001 /run/current-system/profile/bin/bash --login +@end example + +Note that the @var{pid} cannot be the parent process of a container. It +must be the container's PID 1 or one of its child processes. + +@end table + @c ********************************************************************* @node GNU Distribution @chapter GNU Distribution @@ -5111,21 +5390,28 @@ Once you have successfully booted the image on the USB stick, you should end up with a root prompt. Several console TTYs are configured and can be used to run commands as root. TTY2 shows this documentation, browsable using the Info reader commands (@pxref{Help,,, info, Info: An -Introduction}). +Introduction}). The installation system runs the GPM mouse daemon, +which allows you to select text with the left mouse button and to paste +it with the middle button. To install the system, you would: @enumerate @item -Configure the network, by running @command{ifconfig eno1 up && dhclient -eno1} (to get an automatically assigned IP address from the wired +Configure the network, by running: + +@example +ifconfig eno1 up && dhclient eno1 +@end example + +to get an automatically assigned IP address from the wired network interface controller@footnote{ @c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20 The name @code{eno1} is for the first on-board Ethernet controller. The interface name for an Ethernet controller that is in the first slot of the first PCI bus, for instance, would be @code{enp1s0}. Use -@command{ifconfig -a} to list all the available network interfaces.}), +@command{ifconfig -a} to list all the available network interfaces.}, or using the @command{ifconfig} command. The system automatically loads drivers for your network interface @@ -5135,14 +5421,25 @@ Setting up network access is almost always a requirement because the image does not contain all the software and tools that may be needed. @item -Unless this has already been done, you must partition and format the -target partitions. +Unless this has already been done, you must partition, and then format +the target partition. Preferably, assign partitions a label so that you can easily and reliably refer to them in @code{file-system} declarations (@pxref{File Systems}). This is typically done using the @code{-L} option of @command{mkfs.ext4} and related commands. +@c FIXME: Uncomment this once GRUB fully supports encrypted roots. +@c A typical command sequence may be: +@c +@c @example +@c # fdisk /dev/sdX +@c @dots{} Create partitions etc.@dots{} +@c # cryptsetup luksFormat /dev/sdX1 +@c # cryptsetup open --type luks /dev/sdX1 my-partition +@c # mkfs.ext4 -L my-root /dev/mapper/my-partition +@c @end example + The installation image includes Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, Cryptsetup/LUKS for disk encryption, and e2fsprogs, the suite of tools to manipulate @@ -5283,24 +5580,68 @@ addition to the per-user profiles (@pxref{Invoking guix package}). The for basic user and administrator tasks---including the GNU Core Utilities, the GNU Networking Utilities, the GNU Zile lightweight text editor, @command{find}, @command{grep}, etc. The example above adds -Emacs to those, taken from the @code{(gnu packages emacs)} module +tcpdump to those, taken from the @code{(gnu packages admin)} module (@pxref{Package Modules}). +@findex specification->package +Referring to packages by variable name, like @var{tcpdump} above, has +the advantage of being unambiguous; it also allows typos and such to be +diagnosed right away as ``unbound variables''. The downside is that one +needs to know which module defines which package, and to augment the +@code{use-package-modules} line accordingly. To avoid that, one can use +the @code{specification->package} procedure of the @code{(gnu packages)} +module, which returns the best package for a given name or name and +version: + +@lisp +(use-modules (gnu packages)) + +(operating-system + ;; ... + (packages (append (map specification->package + '("tcpdump" "htop" "gnupg-2.0")) + %base-packages))) +@end lisp + @vindex %base-services The @code{services} field lists @dfn{system services} to be made available when the system starts (@pxref{Services}). The @code{operating-system} declaration above specifies that, in addition to the basic services, we want the @command{lshd} secure shell -daemon listening on port 2222, and allowing remote @code{root} logins -(@pxref{Invoking lshd,,, lsh, GNU lsh Manual}). Under the hood, +daemon listening on port 2222 (@pxref{Networking Services, +@code{lsh-service}}). Under the hood, @code{lsh-service} arranges so that @code{lshd} is started with the right command-line options, possibly with supporting configuration files -generated as needed (@pxref{Defining Services}). @xref{operating-system -Reference}, for details about the available @code{operating-system} -fields. +generated as needed (@pxref{Defining Services}). + +@cindex customization, of services +@findex modify-services +Occasionally, instead of using the base services as is, you will want to +customize them. For instance, to change the configuration of +@code{guix-daemon} and Mingetty (the console log-in), you may write the +following instead of @var{%base-services}: + +@lisp +(modify-services %base-services + (guix-service-type config => + (guix-configuration + (inherit config) + (use-substitutes? #f) + (extra-options '("--gc-keep-outputs")))) + (mingetty-service-type config => + (mingetty-configuration + (inherit config) + (motd (plain-file "motd" "Hi there!"))))) +@end lisp + +@noindent +The effect here is to change the options passed to @command{guix-daemon} +when it is started, as well as the ``message of the day'' that appears +when logging in at the console. @xref{Service Reference, +@code{modify-services}}, for more on that. The configuration for a typical ``desktop'' usage, with the X11 display -server, a desktop environment, network management, an SSH server, and +server, a desktop environment, network management, power management, and more, would look like this: @lisp @@ -5310,13 +5651,30 @@ more, would look like this: @xref{Desktop Services}, for the exact list of services provided by @var{%desktop-services}. @xref{X.509 Certificates}, for background information about the @code{nss-certs} package that is used here. +@xref{operating-system Reference}, for details about all the available +@code{operating-system} fields. Assuming the above snippet is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command instantiates that configuration, and makes it the default GRUB boot -entry (@pxref{Invoking guix system}). The normal way to change the -system's configuration is by updating this file and re-running the -@command{guix system} command. +entry (@pxref{Invoking guix system}). + +The normal way to change the system's configuration is by updating this +file and re-running @command{guix system reconfigure}. One should never +have to touch files in @command{/etc} or to run commands that modify the +system state such as @command{useradd} or @command{grub-install}. In +fact, you must avoid that since that would not only void your warranty +but also prevent you from rolling back to previous versions of your +system, should you ever need to. + +@cindex roll-back, of the operating system +Speaking of roll-back, each time you run @command{guix system +reconfigure}, a new @dfn{generation} of the system is created---without +modifying or deleting previous generations. Old system generations get +an entry in the GRUB boot menu, allowing you to boot them in case +something went wrong with the latest generation. Reassuring, no? The +@command{guix system list-generations} command lists the system +generations available on disk. At the Scheme level, the bulk of an @code{operating-system} declaration is instantiated with the following monadic procedure (@pxref{The Store @@ -5428,13 +5786,18 @@ Library Reference Manual}). @xref{Locales}, for more information. The list of locale definitions to be compiled and that may be used at run time. @xref{Locales}. +@item @code{locale-libcs} (default: @code{(list @var{glibc})}) +The list of GNU@tie{}libc packages whose locale data and tools are used +to build the locale definitions. @xref{Locales}, for compatibility +considerations that justify this option. + @item @code{name-service-switch} (default: @var{%default-nss}) Configuration of libc's name service switch (NSS)---a @code{} object. @xref{Name Service Switch}, for details. @item @code{services} (default: @var{%base-services}) -A list of monadic values denoting system services. @xref{Services}. +A list of service objects denoting system services. @xref{Services}. @item @code{pam-services} (default: @code{(base-pam-services)}) @cindex PAM @@ -5886,6 +6249,57 @@ instance it has @code{uk_UA.utf8} but @emph{not}, say, @code{uk_UA.UTF-8}. @end defvr +@subsubsection Locale Data Compatibility Considerations + +@cindex incompatibility, of locale data +@code{operating-system} declarations provide a @code{locale-libcs} field +to specify the GNU@tie{}libc packages that are used to compile locale +declarations (@pxref{operating-system Reference}). ``Why would I +care?'', you may ask. Well, it turns out that the binary format of +locale data is occasionally incompatible from one libc version to +another. + +@c See +@c and . +For instance, a program linked against libc version 2.21 is unable to +read locale data produced with libc 2.22; worse, that program +@emph{aborts} instead of simply ignoring the incompatible locale +data@footnote{Versions 2.23 and later of GNU@tie{}libc will simply skip +the incompatible locale data, which is already an improvement.}. +Similarly, a program linked against libc 2.22 can read most, but not +all, the locale data from libc 2.21 (specifically, @code{LC_COLLATE} +data is incompatible); thus calls to @code{setlocale} may fail, but +programs will not abort. + +The ``problem'' in GuixSD is that users have a lot of freedom: They can +choose whether and when to upgrade software in their profiles, and might +be using a libc version different from the one the system administrator +used to build the system-wide locale data. + +Fortunately, unprivileged users can also install their own locale data +and define @var{GUIX_LOCPATH} accordingly (@pxref{locales-and-locpath, +@code{GUIX_LOCPATH} and locale packages}). + +Still, it is best if the system-wide locale data at +@file{/run/current-system/locale} is built for all the libc versions +actually in use on the system, so that all the programs can access +it---this is especially crucial on a multi-user system. To do that, the +administrator can specify several libc packages in the +@code{locale-libcs} field of @code{operating-system}: + +@example +(use-package-modules base) + +(operating-system + ;; @dots{} + (locale-libcs (list glibc-2.21 (canonical-package glibc)))) +@end example + +This example would lead to a system containing locale definitions for +both libc 2.21 and the current version of libc in +@file{/run/current-system/locale}. + + @node Services @subsection Services @@ -5949,8 +6363,8 @@ services that one expects from the system. The services exported by this module are listed below. @defvr {Scheme Variable} %base-services -This variable contains a list of basic services@footnote{Technically, -this is a list of monadic services. @xref{The Store Monad}.} one would +This variable contains a list of basic services (@pxref{Service Types +and Services}, for more information on service objects) one would expect from the system: a login service (mingetty) on each tty, syslogd, libc's name service cache daemon (nscd), the udev device manager, and more. @@ -6130,6 +6544,9 @@ Whether to authorize the substitute key for @code{hydra.gnu.org} @item @code{use-substitutes?} (default: @code{#t}) Whether to use substitutes. +@item @code{substitute-urls} (default: @var{%default-substitute-urls}) +The list of URLs where to look for substitutes by default. + @item @code{extra-options} (default: @code{'()}) List of extra command-line options for @command{guix-daemon}. @@ -6154,6 +6571,27 @@ Return a service to load console keymap from @var{file} using @command{loadkeys} command. @end deffn +@deffn {Scheme Procedure} gpm-service-type [#:gpm @var{gpm}] @ + [#:options] +Run @var{gpm}, the general-purpose mouse daemon, with the given +command-line @var{options}. GPM allows users to use the mouse in the console, +notably to select, copy, and paste text. The default value of @var{options} +uses the @code{ps2} protocol, which works for both USB and PS/2 mice. + +This service is not part of @var{%base-services}. +@end deffn + +@anchor{guix-publish-service} +@deffn {Scheme Procedure} guix-publish-service [#:guix @var{guix}] @ + [#:port 80] [#:host "localhost"] +Return a service that runs @command{guix publish} listening on @var{host} +and @var{port} (@pxref{Invoking guix publish}). + +This assumes that @file{/etc/guix} already contains a signing key pair as +created by @command{guix archive --generate-key} (@pxref{Invoking guix +archive}). If that is not the case, the service will fail to start. +@end deffn + @node Networking Services @subsubsection Networking Services @@ -6175,9 +6613,15 @@ gateway. @end deffn @cindex wicd +@cindex network management @deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}] -Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a -network manager that aims to simplify wired and wireless networking. +Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network +management daemon that aims to simplify wired and wireless networking. + +This service adds the @var{wicd} package to the global profile, providing +several commands to interact with the daemon and configure networking: +@command{wicd-client}, a graphical user interface, and the @command{wicd-cli} +and @command{wicd-curses} user interfaces. @end deffn @deffn {Scheme Procedure} ntp-service [#:ntp @var{ntp}] @ @@ -6191,11 +6635,34 @@ keep the system clock synchronized with that of @var{servers}. List of host names used as the default NTP servers. @end defvr -@deffn {Scheme Procedure} tor-service [#:tor tor] -Return a service to run the @uref{https://torproject.org,Tor} daemon. +@deffn {Scheme Procedure} tor-service [@var{config-file}] [#:tor @var{tor}] +Return a service to run the @uref{https://torproject.org, Tor} anonymous +networking daemon. -The daemon runs with the default settings (in particular the default exit -policy) as the @code{tor} unprivileged user. +The daemon runs as the @code{tor} unprivileged user. It is passed +@var{config-file}, a file-like object, with an additional @code{User tor} line +and lines for hidden services added via @code{tor-hidden-service}. Run +@command{man tor} for information about the configuration file. +@end deffn + +@deffn {Scheme Procedure} tor-hidden-service @var{name} @var{mapping} +Define a new Tor @dfn{hidden service} called @var{name} and implementing +@var{mapping}. @var{mapping} is a list of port/host tuples, such as: + +@example + '((22 \"127.0.0.1:22\") + (80 \"127.0.0.1:8080\")) +@end example + +In this example, port 22 of the hidden service is mapped to local port 22, and +port 80 is mapped to local port 8080. + +This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where +the @file{hostname} file contains the @code{.onion} host name for the hidden +service. + +See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor +project's documentation} for more information. @end deffn @deffn {Scheme Procedure} bitlbee-service [#:bitlbee bitlbee] @ @@ -6291,7 +6758,9 @@ mDNS/DNS-SD responder that allows for service discovery and "zero-configuration" host name lookups (see @uref{http://avahi.org/}), and extends the name service cache daemon (nscd) so that it can resolve @code{.local} host names using -@uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. +@uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. Additionally, +add the @var{avahi} package to the system profile so that commands such as +@command{avahi-browse} are directly usable. If @var{host-name} is different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name. @@ -6379,6 +6848,19 @@ Last, @var{extra-config} is a list of strings or objects appended to the verbatim to the configuration file. @end deffn +@deffn {Scheme Procedure} screen-locker-service @var{package} [@var{name}] +Add @var{package}, a package for a screen-locker or screen-saver whose +command is @var{program}, to the set of setuid programs and add a PAM entry +for it. For example: + +@lisp +(screen-locker-service xlockmore "xlock") +@end lisp + +makes the good ol' XlockMore usable. +@end deffn + + @node Desktop Services @subsubsection Desktop Services @@ -6396,7 +6878,8 @@ This is a list of services that builds upon @var{%base-services} and adds or adjust services for a typical ``desktop'' setup. In particular, it adds a graphical login manager (@pxref{X Window, -@code{slim-service}}), a network management tool (@pxref{Networking +@code{slim-service}}), screen lockers, +a network management tool (@pxref{Networking Services, @code{wicd-service}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, an NTP client (@pxref{Networking @@ -6498,12 +6981,13 @@ their default values are: @deffn {Scheme Procedure} polkit-service @ [#:polkit @var{polkit}] -Return a service that runs the Polkit privilege manager. -@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit} allows -system administrators to grant access to privileged operations in a -structured way. For example, polkit rules can allow a logged-in user -whose session is active to shut down the machine, if there are no other -users active. +Return a service that runs the +@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege +management service}, which allows system administrators to grant access to +privileged operations in a structured way. By querying the Polkit service, a +privileged system component can know when it should grant additional +capabilities to ordinary users. For example, an ordinary user can be granted +the capability to suspend the system if the user is logged in locally. @end deffn @deffn {Scheme Procedure} upower-service [#:upower @var{upower}] @ @@ -6525,6 +7009,13 @@ levels, with the given configuration settings. It implements the GNOME. @end deffn +@deffn {Scheme Procedure} udisks-service [#:udisks @var{udisks}] +Return a service for @uref{http://udisks.freedesktop.org/docs/latest/, +UDisks}, a @dfn{disk management} daemon that provides user interfaces with +notifications and ways to mount/unmount disks. Programs that talk to UDisks +include the @command{udisksctl} command, part of UDisks, and GNOME Disks. +@end deffn + @deffn {Scheme Procedure} colord-service [#:colord @var{colord}] Return a service that runs @command{colord}, a system service with a D-Bus interface to manage the color profiles of input and output devices such as @@ -7022,7 +7513,7 @@ supported: @item reconfigure Build the operating system described in @var{file}, activate it, and switch to it@footnote{This action is usable only on systems already -running GNU.}. +running GuixSD.}. This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. @@ -7064,6 +7555,7 @@ This command also installs GRUB on the device specified in @item vm @cindex virtual machine @cindex VM +@anchor{guix system vm} Build a virtual machine that contain the operating system declared in @var{file}, and return a script to run that virtual machine (VM). Arguments given to the script are passed as is to QEMU. @@ -7112,6 +7604,31 @@ using the following command: # dd if=$(guix system disk-image my-os.scm) of=/dev/sdc @end example +@item container +Return a script to run the operating system declared in @var{file} +within a container. Containers are a set of lightweight isolation +mechanisms provided by the kernel Linux-libre. Containers are +substantially less resource-demanding than full virtual machines since +the kernel, shared objects, and other resources can be shared with the +host system; this also means they provide thinner isolation. + +Currently, the script must be run as root in order to support more than +a single user and group. The container shares its store with the host +system. + +As with the @code{vm} action (@pxref{guix system vm}), additional file +systems to be shared between the host and container can be specified +using the @option{--share} and @option{--expose} options: + +@example +guix system container my-config.scm \ + --expose=$HOME --share=$HOME/tmp=/exchange +@end example + +@quotation Note +This option requires Linux-libre 3.19 or newer. +@end quotation + @end table @var{options} can contain any of the common build options provided by @@ -7162,6 +7679,30 @@ KVM kernel module should be loaded, and the @file{/dev/kvm} device node must exist and be readable and writable by the user and by the daemon's build users. +Once you have built, configured, re-configured, and re-re-configured +your GuixSD installation, you may find it useful to list the operating +system generations available on disk---and that you can choose from the +GRUB boot menu: + +@table @code + +@item list-generations +List a summary of each generation of the operating system available on +disk, in a human-readable way. This is similar to the +@option{--list-generations} option of @command{guix package} +(@pxref{Invoking guix package}). + +Optionally, one can specify a pattern, with the same syntax that is used +in @command{guix package --list-generations}, to restrict the list of +generations displayed. For instance, the following command displays +generations up to 10-day old: + +@example +$ guix system list-generations 10d +@end example + +@end table + The @command{guix system} command has even more to offer! The following sub-commands allow you to visualize how your system services relate to each other: @@ -7243,8 +7784,11 @@ as arrows, a typical system might provide something like this: @image{images/service-graph,,5in,Typical service extension graph.} -At the bottom, we see the @dfn{boot service}, which produces the boot -script that is executed at boot time from the initial RAM disk. +@cindex system service +At the bottom, we see the @dfn{system service}, which produces the +directory containing everything to run and boot the system, as returned +by the @command{guix system build} command. @xref{Service Reference}, +to learn about the other service types shown here. @xref{system-extension-graph, the @command{guix system extension-graph} command}, for information on how to generate this representation for a particular operating system definition. @@ -7424,6 +7968,41 @@ Here is an example of how a service is created and manipulated: @result{} #t @end example +The @code{modify-services} form provides a handy way to change the +parameters of some of the services of a list such as +@var{%base-services} (@pxref{Base Services, @code{%base-services}}). Of +course, you could always use standard list combinators such as +@code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, +guile, GNU Guile Reference Manual}); @code{modify-services} simply +provides a more concise form for this common pattern. + +@deffn {Scheme Syntax} modify-services @var{services} @ + (@var{type} @var{variable} => @var{body}) @dots{} + +Modify the services listed in @var{services} according to the given +clauses. Each clause has the form: + +@example +(@var{type} @var{variable} => @var{body}) +@end example + +where @var{type} is a service type, such as @var{guix-service-type}, and +@var{variable} is an identifier that is bound within @var{body} to the +value of the service of that @var{type}. @xref{Using the Configuration +System}, for an example. + +This is a shorthand for: + +@example +(map (lambda (service) @dots{}) @var{services}) +@end example +@end deffn + +Next comes the programming interface for service types. This is +something you want to know when writing new service definitions, but not +necessarily when simply looking for ways to customize your +@code{operating-system} declaration. + @deftp {Data Type} service-type @cindex service type This is the representation of a @dfn{service type} (@pxref{Service Types @@ -7472,12 +8051,14 @@ Return true if @var{obj} is a service extension. At the core of the service abstraction lies the @code{fold-services} procedure, which is responsible for ``compiling'' a list of services -down to a single boot script. In essence, it propagates service -extensions down the service graph, updating each node parameters on the -way, until it reaches the root node. +down to a single directory that contains everything needed to boot and +run the system---the directory shown by the @command{guix system build} +command (@pxref{Invoking guix system}). In essence, it propagates +service extensions down the service graph, updating each node parameters +on the way, until it reaches the root node. @deffn {Scheme Procedure} fold-services @var{services} @ - [#:target-type @var{boot-service-type}] + [#:target-type @var{system-service-type}] Fold @var{services} by propagating their extensions down to the root of type @var{target-type}; return the root service adjusted accordingly. @end deffn @@ -7485,9 +8066,14 @@ type @var{target-type}; return the root service adjusted accordingly. Lastly, the @code{(gnu services)} module also defines several essential service types, some of which are listed below. +@defvr {Scheme Variable} system-service-type +This is the root of the service graph. It produces the system directory +as returned by the @command{guix system build} command. +@end defvr + @defvr {Scheme Variable} boot-service-type -The type of the ``boot service'', which is the root of the service -graph. +The type of the ``boot service'', which produces the @dfn{boot script}. +The boot script is what the initial RAM disk runs when booting. @end defvr @defvr {Scheme Variable} etc-service-type @@ -7508,6 +8094,12 @@ executable file names, passed as gexps, and adds them to the set of setuid-root programs on the system (@pxref{Setuid Programs}). @end defvr +@defvr {Scheme Variable} profile-service-type +Type of the service that populates the @dfn{system profile}---i.e., the +programs under @file{/run/current-system/profile}. Other services can +extend it by passing it lists of packages to add to the system profile. +@end defvr + @node dmd Services @subsubsection dmd Services @@ -7570,6 +8162,15 @@ deco doc @var{service-name} where @var{service-name} is one of the symbols in @var{provision} (@pxref{Invoking deco,,, dmd, GNU dmd Manual}). + +@item @code{modules} (default: @var{%default-modules}) +This is the list of modules that must be in scope when @code{start} and +@code{stop} are evaluated. + +@item @code{imported-modules} (default: @var{%default-imported-modules}) +This is the list of modules to import in the execution environment of +dmd. + @end table @end deftp @@ -8245,7 +8846,8 @@ reason. @node Acknowledgments @chapter Acknowledgments -Guix is based on the Nix package manager, which was designed and +Guix is based on the @uref{http://nixos.org/nix/, Nix package manager}, +which was designed and implemented by Eelco Dolstra, with contributions from other people (see the @file{nix/AUTHORS} file in Guix.) Nix pioneered functional package management, and promoted unprecedented features, such as transactional diff --git a/doc/images/service-graph.dot b/doc/images/service-graph.dot index 3397b878e9..b084005984 100644 --- a/doc/images/service-graph.dot +++ b/doc/images/service-graph.dot @@ -2,9 +2,11 @@ digraph "Service Type Dependencies" { dmd [shape = box, fontname = Helvetica]; pam [shape = box, fontname = Helvetica]; etc [shape = box, fontname = Helvetica]; + profile [shape = box, fontname = Helvetica]; accounts [shape = box, fontname = Helvetica]; activation [shape = box, fontname = Helvetica]; - boot [shape = house, fontname = Helvetica]; + boot [shape = box, fontname = Helvetica]; + system [shape = house, fontname = Helvetica]; lshd -> dmd; lshd -> pam; udev -> dmd; @@ -32,4 +34,7 @@ digraph "Service Type Dependencies" { guix -> dmd; guix -> activation; guix -> accounts; + boot -> system; + etc -> system; + profile -> system; } diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index e7c158bef4..82383e48ff 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -202,7 +202,7 @@ this address (it should be defined by ;; A mix of the code from `geiser-repl--start-repl' and ;; `geiser-repl--to-repl-buffer'. (let ((impl 'guile) - (geiser-guile-load-path (cons guix-load-path + (geiser-guile-load-path (cons (expand-file-name guix-load-path) geiser-guile-load-path)) (geiser-repl-startup-time guix-repl-startup-time)) (with-current-buffer buffer diff --git a/emacs/guix-base.el b/emacs/guix-base.el index e64e375e33..d9c70aae9e 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -186,6 +186,10 @@ For the meaning of location, see `guix-find-location'." "Return a list of names of available graph node types." (guix-eval-read (guix-make-guile-expression 'graph-type-names))) +(guix-memoized-defun guix-refresh-updater-names () + "Return a list of names of available refresh updater types." + (guix-eval-read (guix-make-guile-expression 'refresh-updater-names))) + (guix-memoized-defun guix-lint-checker-names () "Return a list of names of available lint checkers." (guix-eval-read (guix-make-guile-expression 'lint-checker-names))) @@ -1035,7 +1039,7 @@ Each element from GENERATIONS is a generation number." profile generation))) (guix-eval-in-repl (guix-make-guile-expression - 'switch-to-generation profile generation) + 'switch-to-generation* profile generation) operation-buffer))) (defun guix-package-source-path (package-id) @@ -1083,9 +1087,10 @@ FILE. With a prefix argument, also prompt for PROFILE." file profile))) (guix-eval-in-repl (guix-make-guile-expression - 'guix-package - (concat "--profile=" profile) - (concat "--manifest=" file)) + 'guix-command + "package" + (concat "--profile=" (expand-file-name profile)) + (concat "--manifest=" (expand-file-name file))) operation-buffer))) @@ -1181,10 +1186,11 @@ The function is called with a single argument - a command line string." (defun guix-pull (&optional verbose) "Run Guix pull operation. If VERBOSE is non-nil (with prefix argument), produce verbose output." - (interactive) + (interactive "P") (let ((args (and verbose '("--verbose")))) (guix-eval-in-repl - (apply #'guix-make-guile-expression 'guix-pull args) + (apply #'guix-make-guile-expression + 'guix-command "pull" args) nil 'pull))) (provide 'guix-base) diff --git a/emacs/guix-build-log.el b/emacs/guix-build-log.el index c0855b284c..e08a88f6cc 100644 --- a/emacs/guix-build-log.el +++ b/emacs/guix-build-log.el @@ -24,6 +24,8 @@ ;;; Code: +(require 'guix-utils) + (defgroup guix-build-log nil "Settings for `guix-build-log-mode'." :group 'guix) @@ -102,10 +104,13 @@ "Face for the number of seconds for a phase." :group 'guix-build-log-faces) -(defcustom guix-build-log-mode-hook - ;; Not using `compilation-minor-mode' because it rebinds some standard - ;; keys, including M-n/M-p. - '(compilation-shell-minor-mode view-mode) +(defcustom guix-build-log-minor-mode-activate t + "If non-nil, then `guix-build-log-minor-mode' is automatically +activated in `shell-mode' buffers." + :type 'boolean + :group 'guix-build-log) + +(defcustom guix-build-log-mode-hook '() "Hook run after `guix-build-log-mode' is entered." :type 'hook :group 'guix-build-log) @@ -178,9 +183,8 @@ STATE is a symbol denoting how a build phase was ended. It should be (3 'guix-build-log-phase-seconds prepend))) "A list of `font-lock-keywords' for `guix-build-log-mode'.") -(defvar guix-build-log-mode-map +(defvar guix-build-log-common-map (let ((map (make-sparse-keymap))) - (set-keymap-parent map special-mode-map) (define-key map (kbd "M-n") 'guix-build-log-next-phase) (define-key map (kbd "M-p") 'guix-build-log-previous-phase) (define-key map (kbd "TAB") 'guix-build-log-phase-toggle) @@ -188,8 +192,26 @@ STATE is a symbol denoting how a build phase was ended. It should be (define-key map (kbd "") 'guix-build-log-phase-toggle-all) (define-key map [(shift tab)] 'guix-build-log-phase-toggle-all) map) + "Parent keymap for 'build-log' buffers. +For `guix-build-log-mode' this map is used as is. +For `guix-build-log-minor-mode' this map is prefixed with 'C-c'.") + +(defvar guix-build-log-mode-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent + map (make-composed-keymap (list guix-build-log-common-map) + special-mode-map)) + (define-key map (kbd "c") 'compilation-shell-minor-mode) + (define-key map (kbd "v") 'view-mode) + map) "Keymap for `guix-build-log-mode' buffers.") +(defvar guix-build-log-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-c") guix-build-log-common-map) + map) + "Keymap for `guix-build-log-minor-mode' buffers.") + (defun guix-build-log-phase-start (&optional with-header?) "Return the start point of the current build phase. If WITH-HEADER? is non-nil, do not skip 'starting phase ...' header. @@ -319,9 +341,12 @@ When Guix Build Log minor mode is enabled, it highlights build log in the current buffer. This mode can be enabled programmatically using hooks: - (add-hook 'shell-mode-hook 'guix-build-log-minor-mode)" + (add-hook 'shell-mode-hook 'guix-build-log-minor-mode) + +\\{guix-build-log-minor-mode-map}" :init-value nil :lighter " Guix-Build-Log" + :keymap guix-build-log-minor-mode-map :group 'guix-build-log (if guix-build-log-minor-mode (font-lock-add-keywords nil guix-build-log-font-lock-keywords) @@ -329,6 +354,25 @@ programmatically using hooks: (when font-lock-mode (font-lock-fontify-buffer))) +;;;###autoload +(defun guix-build-log-minor-mode-activate-maybe () + "Activate `guix-build-log-minor-mode' depending on +`guix-build-log-minor-mode-activate' variable." + (when guix-build-log-minor-mode-activate + (guix-build-log-minor-mode))) + +(defun guix-build-log-find-file (file-or-url) + "Open FILE-OR-URL in `guix-build-log-mode'." + (guix-find-file-or-url file-or-url) + (guix-build-log-mode)) + +;;;###autoload +(add-to-list 'auto-mode-alist + ;; Regexp for log files (usually placed in /var/log/guix/...) + (cons (rx "/guix/drvs/" (= 2 alnum) "/" (= 30 alnum) + "-" (+ (any alnum "-+.")) ".drv" string-end) + 'guix-build-log-mode)) + (provide 'guix-build-log) ;;; guix-build-log.el ends here diff --git a/emacs/guix-command.el b/emacs/guix-command.el index 1a42594b68..ccd85d25b9 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -65,6 +65,7 @@ (require 'guix-help-vars) (require 'guix-read) (require 'guix-base) +(require 'guix-build-log) (require 'guix-guile) (require 'guix-external) @@ -131,7 +132,8 @@ to be modified." (guix-command-define-argument-improver guix-command-improve-action-argument - '(("graph" :char ?G) + '(("container" :char ?C) + ("graph" :char ?G) ("environment" :char ?E) ("publish" :char ?u) ("pull" :char ?P) @@ -173,7 +175,8 @@ to be modified." (defvar guix-command-improve-common-build-argument '(("--no-substitutes" :char ?s) ("--no-build-hook" :char ?h) - ("--max-silent-time" :char ?x))) + ("--max-silent-time" :char ?x) + ("--rounds" :char ?R :fun read-number))) (defun guix-command-improve-common-build-argument (argument) (guix-command-modify-argument-from-alist @@ -195,7 +198,11 @@ to be modified." (guix-command-define-argument-improver guix-command-improve-environment-argument - '(("--exec" :fun read-shell-command) + '(("--ad-hoc" + :name "--ad-hoc " :fun guix-read-package-names-string + :switch? nil :option? t) + ("--expose" :char ?E) + ("--share" :char ?S) ("--load" :fun guix-read-file-name))) (guix-command-define-argument-improver @@ -234,6 +241,7 @@ to be modified." :switch? nil :option? t) ("--install-from-file" :fun guix-read-file-name) ("--manifest" :fun guix-read-file-name) + ("--profile" :fun guix-read-file-name) ("--do-not-upgrade" :char ?U) ("--roll-back" :char ?R) ("--show" :char ?w :fun guix-read-package-name))) @@ -241,6 +249,7 @@ to be modified." (guix-command-define-argument-improver guix-command-improve-refresh-argument '(("--select" :fun guix-read-refresh-subset) + ("--type" :fun guix-read-refresh-updater-names-string) ("--key-server" :char ?S))) (guix-command-define-argument-improver @@ -364,11 +373,16 @@ to be modified." :name "-- " :char ?= :option? t args))) (let ((command (car commands))) (cond - ((member command '("archive" "build" "graph" "edit" - "environment" "lint" "refresh")) + ((member command + '("archive" "build" "challenge" "edit" + "graph" "lint" "refresh")) (argument :doc "Packages" :fun 'guix-read-package-names-string)) + ((equal commands '("container" "exec")) + (argument :doc "PID Command [Args...]")) ((string= command "download") (argument :doc "URL")) + ((string= command "environment") + (argument :doc "Command [Args...]" :fun 'read-shell-command)) ((string= command "gc") (argument :doc "Paths" :fun 'guix-read-file-name)) ((member command '("hash" "system")) @@ -382,10 +396,22 @@ to be modified." (string= command "import")) (argument :doc "Package name")))))) +(defvar guix-command-additional-arguments + `((("environment") + ,(guix-command-make-argument + :name "++packages " :char ?p :option? t + :doc "build inputs of the specified packages" + :fun 'guix-read-package-names-string))) + "Alist of guix commands and additional arguments for them. +These are 'fake' arguments that are not presented in 'guix' shell +commands.") + (defun guix-command-additional-arguments (&optional commands) "Return additional arguments for COMMANDS." (let ((rest-arg (guix-command-rest-argument commands))) - (and rest-arg (list rest-arg)))) + (append (guix-assoc-value guix-command-additional-arguments + commands) + (and rest-arg (list rest-arg))))) ;; Ideally only `guix-command-arguments' function should exist with the ;; contents of `guix-command-all-arguments', but we need to make a @@ -463,28 +489,113 @@ to be modified." "Return actions from ARGUMENTS." (cl-remove-if-not #'guix-command-argument-action? arguments)) -(defun guix-command-post-process-args (args) - "Adjust appropriately command line ARGS returned from popup command." - ;; XXX We need to split "--install foo bar" and similar strings into - ;; lists of strings. But some commands (e.g., 'guix hash') accept a - ;; file name as the 'rest' argument, and as file names may contain - ;; spaces, splitting by spaces will break such names. For example, the - ;; following argument: "-- /tmp/file with spaces" will be transformed - ;; into the following list: ("--" "/tmp/file" "with" "spaces") instead - ;; of the wished ("--" "/tmp/file with spaces"). - (let* (rest - (rx (rx string-start - (or "-- " "--install " "--remove "))) + +;;; Post processing popup arguments + +(defvar guix-command-post-processors + '(("environment" + guix-command-post-process-environment-packages + guix-command-post-process-environment-ad-hoc + guix-command-post-process-rest-multiple-leave) + ("hash" + guix-command-post-process-rest-single) + ("package" + guix-command-post-process-package-args) + ("system" + guix-command-post-process-rest-single)) + "Alist of guix commands and functions for post-processing +a list of arguments returned from popup interface. +Each function is called on the returned arguments in turn.") + +(defvar guix-command-rest-arg-regexp + (rx string-start "-- " (group (+ any))) + "Regexp to match a string with the 'rest' arguments.") + +(defun guix-command-replace-args (args predicate modifier) + "Replace arguments matching PREDICATE from ARGS. +Call MODIFIER on each argument matching PREDICATE and append the +returned list of strings to the end of ARGS. Remove the original +arguments." + (let* ((rest nil) (args (mapcar (lambda (arg) - (if (string-match-p rx arg) - (progn (push (split-string arg) rest) - nil) + (if (funcall predicate arg) + (progn + (push (funcall modifier arg) rest) + nil) arg)) args))) (if rest (apply #'append (delq nil args) rest) args))) +(cl-defun guix-command-post-process-matching-args (args regexp + &key group split?) + "Modify arguments from ARGS matching REGEXP by moving them to +the end of ARGS list. If SPLIT? is non-nil, split matching +arguments into multiple subarguments." + (guix-command-replace-args + args + (lambda (arg) + (string-match regexp arg)) + (lambda (arg) + (let ((val (match-string (or group 0) arg)) + (fun (if split? #'split-string #'list))) + (funcall fun val))))) + +(defun guix-command-post-process-rest-single (args) + "Modify ARGS by moving '-- ARG' argument to the end of ARGS list." + (guix-command-post-process-matching-args + args guix-command-rest-arg-regexp + :group 1)) + +(defun guix-command-post-process-rest-multiple (args) + "Modify ARGS by splitting '-- ARG ...' into multiple subarguments +and moving them to the end of ARGS list. +Remove '-- ' string." + (guix-command-post-process-matching-args + args guix-command-rest-arg-regexp + :group 1 + :split? t)) + +(defun guix-command-post-process-rest-multiple-leave (args) + "Modify ARGS by splitting '-- ARG ...' into multiple subarguments +and moving them to the end of ARGS list. +Leave '--' string as a separate argument." + (guix-command-post-process-matching-args + args guix-command-rest-arg-regexp + :split? t)) + +(defun guix-command-post-process-package-args (args) + "Adjust popup ARGS for 'guix package' command." + (guix-command-post-process-matching-args + args (rx string-start (or "--install " "--remove ") (+ any)) + :split? t)) + +(defun guix-command-post-process-environment-packages (args) + "Adjust popup ARGS for specified packages of 'guix environment' +command." + (guix-command-post-process-matching-args + args (rx string-start "++packages " (group (+ any))) + :group 1 + :split? t)) + +(defun guix-command-post-process-environment-ad-hoc (args) + "Adjust popup ARGS for '--ad-hoc' argument of 'guix environment' +command." + (guix-command-post-process-matching-args + args (rx string-start "--ad-hoc " (+ any)) + :split? t)) + +(defun guix-command-post-process-args (commands args) + "Adjust popup ARGS for guix COMMANDS." + (let* ((command (car commands)) + (processors + (append (guix-assoc-value guix-command-post-processors commands) + (guix-assoc-value guix-command-post-processors command)))) + (guix-modify args + (or processors + (list #'guix-command-post-process-rest-multiple))))) + ;;; 'Execute' actions @@ -583,8 +694,7 @@ open the log file(s)." (output (guix-command-output args)) (files (split-string output "\n" t))) (dolist (file files) - (guix-find-file-or-url file) - (guix-build-log-mode)))) + (guix-build-log-find-file file)))) (defun guix-run-view-graph (args) "Run 'guix ARGS ...' graph command, make the image and open it." @@ -640,7 +750,8 @@ EXECUTOR function is called with the current command line arguments." ,doc (interactive (,arguments-fun)) (,executor (append ',commands - (guix-command-post-process-args args)))))) + (guix-command-post-process-args + ',commands args)))))) (defun guix-command-generate-popup-actions (actions &optional commands) "Generate 'popup' commands from ACTIONS arguments for guix COMMANDS." diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el index 170ce1ad54..8eb030942c 100644 --- a/emacs/guix-devel.el +++ b/emacs/guix-devel.el @@ -198,6 +198,7 @@ to find 'modify-phases' keywords." "mbegin" "mlet" "mlet*" + "modify-services" "munless" "mwhen" "run-with-state" @@ -288,6 +289,7 @@ Each rule should have a form (SYMBOL VALUE). See `put' for details." (mlet 2) (mlet* 2) (modify-phases 1) + (modify-services 1) (munless 1) (mwhen 1) (operating-system 0) diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el index 0e3e8c211c..2f809ed16e 100644 --- a/emacs/guix-emacs.el +++ b/emacs/guix-emacs.el @@ -37,6 +37,11 @@ they are successfully installed." (defvar guix-emacs-autoloads nil "List of the last loaded Emacs autoloads.") +(defvar guix-emacs-autoloads-regexp + (rx (group (* any) "-autoloads") + ".el" (zero-or-one "c") string-end) + "Regexp to match Emacs 'autoloads' file.") + (defun guix-emacs-directory (&optional profile) "Return directory with Emacs packages installed in PROFILE. If PROFILE is nil, use `guix-user-profile'." @@ -44,8 +49,15 @@ If PROFILE is nil, use `guix-user-profile'." (or profile guix-user-profile))) (defun guix-emacs-find-autoloads-in-directory (directory) - "Return list of Emacs 'autoloads' files in DIRECTORY." - (directory-files directory 'full-name "-autoloads\\.el\\'" 'no-sort)) + "Return a list of Emacs 'autoloads' files in DIRECTORY. +The files in the list do not have extensions (.el, .elc)." + (cl-remove-duplicates + (delq nil + (mapcar (lambda (file) + (when (string-match guix-emacs-autoloads-regexp file) + (match-string 1 file))) + (directory-files directory 'full-name nil 'no-sort))) + :test #'string=)) (defun guix-emacs-subdirs (directory) "Return list of DIRECTORY subdirectories." @@ -74,29 +86,33 @@ Return nil if there are no emacs packages installed in PROFILE." nil))) ;;;###autoload -(defun guix-emacs-load-autoloads (&optional all) - "Load autoloads for Emacs packages installed in a user profile. -Add autoloads directories to `load-path'. -If ALL is nil, activate only those packages that were installed -after the last activation, otherwise activate all Emacs packages -installed in `guix-user-profile'." - (interactive "P") - (let* ((autoloads (guix-emacs-find-autoloads)) - (files (if all - autoloads - (cl-nset-difference autoloads guix-emacs-autoloads - :test #'string=)))) - (dolist (file files) - (cl-pushnew (file-name-directory file) load-path +(defun guix-emacs-load-autoloads (&optional profile) + "Load autoloads for Emacs packages installed in PROFILE. +If PROFILE is nil, use `guix-user-profile'. +Add autoloads directories to `load-path'." + (interactive (list (guix-profile-prompt))) + (let* ((autoloads (guix-emacs-find-autoloads profile)) + (new-autoloads (cl-nset-difference autoloads + guix-emacs-autoloads + :test #'string=))) + (dolist (file new-autoloads) + (cl-pushnew (directory-file-name (file-name-directory file)) + load-path :test #'string=) (load file 'noerror)) - (setq guix-emacs-autoloads autoloads))) + (setq guix-emacs-autoloads + (append new-autoloads guix-emacs-autoloads)))) (defun guix-emacs-load-autoloads-maybe () "Load autoloads for Emacs packages if needed. See `guix-emacs-activate-after-operation' for details." (and guix-emacs-activate-after-operation - (guix-emacs-load-autoloads))) + ;; FIXME Since a user can work with a non-current profile (using + ;; C-u before `guix-search-by-name' and other commands), emacs + ;; packages can be installed to another profile, and the + ;; following code will not work (i.e., the autoloads for this + ;; profile will not be loaded). + (guix-emacs-load-autoloads guix-current-profile))) (provide 'guix-emacs) diff --git a/emacs/guix-info.el b/emacs/guix-info.el index 260c7680f5..1c7e79b954 100644 --- a/emacs/guix-info.el +++ b/emacs/guix-info.el @@ -38,6 +38,12 @@ :group 'guix-info :group 'guix-faces) +(defface guix-info-heading + '((((type tty pc) (class color)) :weight bold) + (t :height 1.6 :weight bold :inherit variable-pitch)) + "Face for headings." + :group 'guix-info-faces) + (defface guix-info-param-title '((t :inherit font-lock-type-face)) "Face used for titles of parameters." @@ -374,7 +380,7 @@ If POS is nil, use the current point position." (interactive) (let ((button (button-at (or pos (point))))) (when button - (kill-new (button-label button))))) + (guix-copy-as-kill (button-label button))))) (defun guix-info-insert-action-button (label action &optional message &rest properties) @@ -416,8 +422,7 @@ See `insert-text-button' for the meaning of PROPERTIES." :required (id installed non-unique)) (defface guix-package-info-heading - '((((type tty pc) (class color)) :weight bold) - (t :height 1.6 :weight bold :inherit variable-pitch)) + '((t :inherit guix-info-heading)) "Face for package name and version headings." :group 'guix-package-info-faces) diff --git a/emacs/guix-init.el b/emacs/guix-init.el index 4b3d9c281c..1da607034f 100644 --- a/emacs/guix-init.el +++ b/emacs/guix-init.el @@ -12,8 +12,9 @@ avoid loading autoloads of Emacs packages installed in (add-to-list 'load-path (guix-emacs-directory)) (when guix-package-enable-at-startup - (guix-emacs-load-autoloads 'all)) + (guix-emacs-load-autoloads)) (add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe) +(add-hook 'shell-mode-hook 'guix-build-log-minor-mode-activate-maybe) (provide 'guix-init) diff --git a/emacs/guix-list.el b/emacs/guix-list.el index 87d214bb4d..560ae6a86f 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -45,6 +45,11 @@ "Face used for file paths." :group 'guix-list-faces) +(defface guix-list-time + '((t :inherit guix-info-time)) + "Face used for time stamps." + :group 'guix-list-faces) + (defcustom guix-list-describe-warning-count 10 "The maximum number of entries for describing without a warning. If a user wants to describe more than this number of marked @@ -201,7 +206,8 @@ VAL may be nil." (defun guix-list-get-time (seconds &optional _) "Return formatted time string from SECONDS." - (guix-get-time-string seconds)) + (guix-get-string (guix-get-time-string seconds) + 'guix-list-time)) (defun guix-list-get-file-path (path &optional _) "Return PATH button specification for `tabulated-list-entries'." diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index e29a0a0acc..7175b103da 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -905,7 +905,7 @@ OUTPUTS is a list of package outputs (may be an empty list)." "~a packages in profile~%" count) count) - (display-search-paths entries profile)))))))))) + (display-search-paths entries (list profile))))))))))) (define (delete-generations* profile generations) "Delete GENERATIONS from PROFILE. @@ -991,6 +991,11 @@ Return #t if the shell command was executed successfully." "Return a list of names of available graph node types." (map node-type-name %node-types)) +(define (refresh-updater-names) + "Return a list of names of available refresh updater types." + (map (@ (guix upstream) upstream-updater-name) + (@ (guix scripts refresh) %updaters))) + (define (lint-checker-names) "Return a list of names of available lint checkers." (map (lambda (checker) diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 4743be59bd..85b267a78d 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -128,6 +128,13 @@ subcommands, actions, etc. for this guix COMMAND." guix-help-parse-regexp-group "graph" "--list-types")) +(guix-memoized-defun guix-pcomplete-refresh-updaters () + "Return a list of all available refresh updater types." + (guix-pcomplete-run-guix-and-search + guix-help-parse-list-regexp + guix-help-parse-regexp-group + "refresh" "--list-updaters")) + ;;; Completing @@ -209,8 +216,8 @@ group - the argument.") "Complete argument for guix COMMAND." (cond ((member command - '("archive" "build" "graph" "edit" "environment" - "lint" "refresh" "size")) + '("archive" "build" "challenge" "edit" "environment" + "graph" "lint" "refresh" "size")) (while t (pcomplete-here (guix-pcomplete-all-packages)))) (t (pcomplete-here* (pcomplete-entries))))) @@ -287,9 +294,13 @@ INPUT is the current partially completed string." (option? "-u" "--user")) (complete* (pcmpl-unix-user-names))) - ((and (command? "refresh") - (option? "-s" "--select")) - (complete* guix-help-refresh-subsets)) + ((command? "refresh") + (cond + ((option? "-s" "--select") + (complete* guix-help-refresh-subsets)) + ((option? "-t" "--type") + (guix-pcomplete-complete-comma-args + (guix-pcomplete-refresh-updaters))))) ((and (command? "size") (option? "-m" "--map-file")) diff --git a/emacs/guix-read.el b/emacs/guix-read.el index 5a7201c3aa..e60af9c2f7 100644 --- a/emacs/guix-read.el +++ b/emacs/guix-read.el @@ -136,6 +136,12 @@ keywords are available: :single-reader guix-read-refresh-subset :single-prompt "Refresh subset: ") +(guix-define-readers + :completions-getter guix-refresh-updater-names + :multiple-reader guix-read-refresh-updater-names + :multiple-prompt "Refresh updater,s: " + :multiple-separator ",") + (guix-define-readers :completions-var guix-help-key-policies :single-reader guix-read-key-policy diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index d1f088b6a8..5f3f3ecc10 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -226,6 +226,17 @@ single argument." (while (re-search-forward ,regexp nil t) ,@body))) +(defun guix-modify (object modifiers) + "Apply MODIFIERS to OBJECT. +OBJECT is passed as an argument to the first function from +MODIFIERS list, the returned result is passed to the second +function from the list and so on. Return result of the last +modifier call." + (if (null modifiers) + object + (guix-modify (funcall (car modifiers) object) + (cdr modifiers)))) + ;;; Alist accessors diff --git a/etc/guix-daemon.conf.in b/etc/guix-daemon.conf.in new file mode 100644 index 0000000000..8f833cb693 --- /dev/null +++ b/etc/guix-daemon.conf.in @@ -0,0 +1,12 @@ +# This is a "job" for the Upstart init system to launch 'guix-daemon'. +# Drop it in /etc/init to have 'guix-daemon' automatically started. + +description "Build daemon for GNU Guix" + +start on runlevel [2345] + +stop on runlevel [016] + +task + +exec @bindir@/guix-daemon --build-users-group=guixbuild diff --git a/gnu-system.am b/gnu-system.am index 463f98c0e9..ef4db3c302 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -25,7 +25,6 @@ GNU_SYSTEM_MODULES = \ gnu.scm \ gnu/artwork.scm \ gnu/packages.scm \ - gnu/packages/aarddict.scm \ gnu/packages/abduco.scm \ gnu/packages/abiword.scm \ gnu/packages/acct.scm \ @@ -34,8 +33,10 @@ GNU_SYSTEM_MODULES = \ gnu/packages/adns.scm \ gnu/packages/algebra.scm \ gnu/packages/aidc.scm \ + gnu/packages/animation.scm \ gnu/packages/apl.scm \ gnu/packages/apr.scm \ + gnu/packages/aria2.scm \ gnu/packages/asciidoc.scm \ gnu/packages/aspell.scm \ gnu/packages/attr.scm \ @@ -79,9 +80,11 @@ GNU_SYSTEM_MODULES = \ gnu/packages/cyrus-sasl.scm \ gnu/packages/databases.scm \ gnu/packages/datamash.scm \ + gnu/packages/datastructures.scm \ gnu/packages/dc.scm \ gnu/packages/debug.scm \ gnu/packages/dejagnu.scm \ + gnu/packages/dico.scm \ gnu/packages/dictionaries.scm \ gnu/packages/disk.scm \ gnu/packages/djvu.scm \ @@ -121,7 +124,6 @@ GNU_SYSTEM_MODULES = \ gnu/packages/gcc.scm \ gnu/packages/gd.scm \ gnu/packages/gdb.scm \ - gnu/packages/gdbm.scm \ gnu/packages/geeqie.scm \ gnu/packages/gettext.scm \ gnu/packages/ghostscript.scm \ @@ -160,6 +162,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/image.scm \ gnu/packages/imagemagick.scm \ gnu/packages/indent.scm \ + gnu/packages/inklingreader.scm \ gnu/packages/inkscape.scm \ gnu/packages/irssi.scm \ gnu/packages/iso-codes.scm \ @@ -170,6 +173,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/kde.scm \ gnu/packages/kde-frameworks.scm \ gnu/packages/key-mon.scm \ + gnu/packages/kodi.scm \ gnu/packages/language.scm \ gnu/packages/less.scm \ gnu/packages/lesstif.scm \ @@ -243,6 +247,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/openstack.scm \ gnu/packages/orpheus.scm \ gnu/packages/ots.scm \ + gnu/packages/owncloud.scm \ gnu/packages/package-management.scm \ gnu/packages/parallel.scm \ gnu/packages/password-utils.scm \ @@ -266,6 +271,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/python.scm \ gnu/packages/qemu.scm \ gnu/packages/qt.scm \ + gnu/packages/ragel.scm \ gnu/packages/ratpoison.scm \ gnu/packages/rc.scm \ gnu/packages/rdesktop.scm \ @@ -280,8 +286,10 @@ GNU_SYSTEM_MODULES = \ gnu/packages/scanner.scm \ gnu/packages/scheme.scm \ gnu/packages/screen.scm \ + gnu/packages/scribus.scm \ gnu/packages/sdl.scm \ gnu/packages/search.scm \ + gnu/packages/serialization.scm \ gnu/packages/serveez.scm \ gnu/packages/shishi.scm \ gnu/packages/skarnet.scm \ @@ -301,6 +309,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/tcl.scm \ gnu/packages/tcsh.scm \ gnu/packages/telephony.scm \ + gnu/packages/terminals.scm \ gnu/packages/texinfo.scm \ gnu/packages/texlive.scm \ gnu/packages/textutils.scm \ @@ -361,11 +370,11 @@ GNU_SYSTEM_MODULES = \ gnu/system/file-systems.scm \ gnu/system/grub.scm \ gnu/system/install.scm \ - gnu/system/linux.scm \ gnu/system/linux-container.scm \ gnu/system/linux-initrd.scm \ gnu/system/locale.scm \ gnu/system/nss.scm \ + gnu/system/pam.scm \ gnu/system/shadow.scm \ gnu/system/vm.scm \ \ @@ -411,7 +420,9 @@ dist_patch_DATA = \ gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-loongson-workaround.patch \ gnu/packages/patches/bitlbee-configure-doc-fix.patch \ + gnu/packages/patches/bluez-tests.patch \ gnu/packages/patches/boost-mips-avoid-m32.patch \ + gnu/packages/patches/byobu-writable-status.patch \ gnu/packages/patches/calibre-drop-unrar.patch \ gnu/packages/patches/calibre-no-updates-dialog.patch \ gnu/packages/patches/cdparanoia-fpic.patch \ @@ -427,8 +438,10 @@ dist_patch_DATA = \ gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/clucene-contribs-lib.patch \ gnu/packages/patches/cursynth-wave-rand.patch \ - gnu/packages/patches/dbus-localstatedir.patch \ + gnu/packages/patches/dbus-helper-search-path.patch \ gnu/packages/patches/dealii-p4est-interface.patch \ + gnu/packages/patches/devil-fix-libpng.patch \ + gnu/packages/patches/dico-libtool-deterministic.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \ gnu/packages/patches/dfu-programmer-fix-libusb.patch \ gnu/packages/patches/doxygen-test.patch \ @@ -439,6 +452,7 @@ dist_patch_DATA = \ gnu/packages/patches/emacs-exec-path.patch \ gnu/packages/patches/emacs-source-date-epoch.patch \ gnu/packages/patches/eudev-rules-directory.patch \ + gnu/packages/patches/evilwm-lost-focus-bug.patch \ gnu/packages/patches/expat-CVE-2015-1283.patch \ gnu/packages/patches/fastcap-mulGlobal.patch \ gnu/packages/patches/fastcap-mulSetup.patch \ @@ -484,8 +498,6 @@ dist_patch_DATA = \ gnu/packages/patches/gobject-introspection-girepository.patch \ gnu/packages/patches/grub-gets-undeclared.patch \ gnu/packages/patches/grub-freetype.patch \ - gnu/packages/patches/gsl-poly-test-fix-pt1.patch \ - gnu/packages/patches/gsl-poly-test-fix-pt2.patch \ gnu/packages/patches/guile-1.8-cpp-4.5.patch \ gnu/packages/patches/guile-arm-fixes.patch \ gnu/packages/patches/guile-default-utf8.patch \ @@ -496,7 +508,6 @@ dist_patch_DATA = \ gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/hop-linker-flags.patch \ - gnu/packages/patches/hwloc-gather-topology-lstopo.patch \ gnu/packages/patches/hydra-automake-1.15.patch \ gnu/packages/patches/hydra-disable-darcs-test.patch \ gnu/packages/patches/icecat-avoid-bundled-includes.patch \ @@ -506,6 +517,7 @@ dist_patch_DATA = \ gnu/packages/patches/icu4c-CVE-2015-4760.patch \ gnu/packages/patches/imagemagick-test-segv.patch \ gnu/packages/patches/irrlicht-mesa-10.patch \ + gnu/packages/patches/jasper-CVE-2008-3522.patch \ gnu/packages/patches/jbig2dec-ignore-testtest.patch \ gnu/packages/patches/julia-0.3.10-fix-empty-array.patch \ gnu/packages/patches/kmod-module-directory.patch \ @@ -520,6 +532,7 @@ dist_patch_DATA = \ gnu/packages/patches/libarchive-mtree-filename-length-fix.patch \ gnu/packages/patches/libbonobo-activation-test-race.patch \ gnu/packages/patches/libcanberra-sound-theme-freedesktop.patch \ + gnu/packages/patches/libdrm-symbol-check.patch \ gnu/packages/patches/libevent-dns-tests.patch \ gnu/packages/patches/libmtp-devices.patch \ gnu/packages/patches/liboop-mips64-deplibs-fix.patch \ @@ -528,8 +541,11 @@ dist_patch_DATA = \ gnu/packages/patches/libmad-armv7-thumb-pt2.patch \ gnu/packages/patches/libmad-frame-length.patch \ gnu/packages/patches/libmad-mips-newgcc.patch \ + gnu/packages/patches/librsvg-tests.patch \ gnu/packages/patches/libtheora-config-guess.patch \ gnu/packages/patches/libtool-skip-tests2.patch \ + gnu/packages/patches/libsndfile-CVE-2014-9496.patch \ + gnu/packages/patches/libsndfile-CVE-2015-7805.patch \ gnu/packages/patches/libssh-CVE-2014-0017.patch \ gnu/packages/patches/libunwind-CVE-2015-3239.patch \ gnu/packages/patches/libwmf-CAN-2004-0941.patch \ @@ -544,11 +560,13 @@ dist_patch_DATA = \ gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch \ gnu/packages/patches/libwmf-CVE-2015-4695.patch \ gnu/packages/patches/libwmf-CVE-2015-4696.patch \ + gnu/packages/patches/libxslt-CVE-2015-7995.patch \ gnu/packages/patches/lirc-localstatedir.patch \ gnu/packages/patches/libpthread-glibc-preparation.patch \ gnu/packages/patches/lm-sensors-hwmon-attrs.patch \ gnu/packages/patches/lua-pkgconfig.patch \ gnu/packages/patches/lua51-liblua-so.patch \ + gnu/packages/patches/lua52-liblua-so.patch \ gnu/packages/patches/luajit-no_ldconfig.patch \ gnu/packages/patches/luajit-symlinks.patch \ gnu/packages/patches/luit-posix.patch \ @@ -556,16 +574,23 @@ dist_patch_DATA = \ gnu/packages/patches/make-impure-dirs.patch \ gnu/packages/patches/mars-install.patch \ gnu/packages/patches/mars-sfml-2.3.patch \ + gnu/packages/patches/matplotlib-setupext-tk.patch \ gnu/packages/patches/maxima-defsystem-mkdir.patch \ gnu/packages/patches/mc-fix-ncurses-build.patch \ gnu/packages/patches/mcron-install.patch \ gnu/packages/patches/mdadm-gcc-4.9-fix.patch \ gnu/packages/patches/mhash-keygen-test-segfault.patch \ - gnu/packages/patches/mit-krb5-init-fix.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2695-pt1.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2695-pt2.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2696.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2697.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2698-pt1.patch \ + gnu/packages/patches/mit-krb5-CVE-2015-2698-pt2.patch \ gnu/packages/patches/mpc123-initialize-ao.patch \ gnu/packages/patches/mplayer2-theora-fix.patch \ gnu/packages/patches/module-init-tools-moduledir.patch \ gnu/packages/patches/mumps-build-parallelism.patch \ + gnu/packages/patches/mupen64plus-ui-console-notice.patch \ gnu/packages/patches/mupdf-buildsystem-fix.patch \ gnu/packages/patches/mutt-store-references.patch \ gnu/packages/patches/net-tools-bitrot.patch \ @@ -601,8 +626,6 @@ dist_patch_DATA = \ gnu/packages/patches/plotutils-libpng-jmpbuf.patch \ gnu/packages/patches/polkit-drop-test.patch \ gnu/packages/patches/portaudio-audacity-compat.patch \ - gnu/packages/patches/preseq-1.0.2-install-to-PREFIX.patch \ - gnu/packages/patches/preseq-1.0.2-link-with-libbam.patch \ gnu/packages/patches/pt-scotch-build-parallelism.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pulseaudio-longer-test-timeout.patch \ @@ -610,20 +633,26 @@ dist_patch_DATA = \ gnu/packages/patches/pybugz-encode-error.patch \ gnu/packages/patches/pybugz-stty.patch \ gnu/packages/patches/pyqt-configure.patch \ + gnu/packages/patches/python-2-deterministic-build-info.patch \ gnu/packages/patches/python-2.7-search-paths.patch \ + gnu/packages/patches/python-2.7-source-date-epoch.patch \ + gnu/packages/patches/python-3-deterministic-build-info.patch \ gnu/packages/patches/python-3-search-paths.patch \ gnu/packages/patches/python-disable-ssl-test.patch \ gnu/packages/patches/python-fix-tests.patch \ gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ + gnu/packages/patches/python-configobj-setuptools.patch \ gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ gnu/packages/patches/qemu-CVE-2015-6855.patch \ gnu/packages/patches/qt4-ldflags.patch \ gnu/packages/patches/ratpoison-shell.patch \ gnu/packages/patches/readline-link-ncurses.patch \ gnu/packages/patches/ripperx-missing-file.patch \ + gnu/packages/patches/rsem-makefile.patch \ gnu/packages/patches/sed-hurd-path-max.patch \ gnu/packages/patches/scheme48-tests.patch \ gnu/packages/patches/scotch-test-threading.patch \ + gnu/packages/patches/scribus-qobject.patch \ gnu/packages/patches/sdl-libx11-1.6.patch \ gnu/packages/patches/serf-comment-style-fix.patch \ gnu/packages/patches/serf-deflate-buckets-test-fix.patch \ @@ -632,12 +661,17 @@ dist_patch_DATA = \ gnu/packages/patches/slim-sigusr1.patch \ gnu/packages/patches/soprano-find-clucene.patch \ gnu/packages/patches/superlu-dist-scotchmetis.patch \ + gnu/packages/patches/synfig-build-fix.patch \ gnu/packages/patches/tar-d_ino_in_dirent-fix.patch \ gnu/packages/patches/tar-skip-unreliable-tests.patch \ + gnu/packages/patches/tcl-mkindex-deterministic.patch \ gnu/packages/patches/tcsh-fix-autotest.patch \ gnu/packages/patches/texi2html-document-encoding.patch \ gnu/packages/patches/texi2html-i18n.patch \ gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \ + gnu/packages/patches/tinyxml-use-stl.patch \ + gnu/packages/patches/tk-find-library.patch \ + gnu/packages/patches/torsocks-dns-test.patch \ gnu/packages/patches/tvtime-gcc41.patch \ gnu/packages/patches/tvtime-pngoutput.patch \ gnu/packages/patches/tvtime-videodev2.patch \ @@ -662,12 +696,17 @@ dist_patch_DATA = \ gnu/packages/patches/vtk-mesa-10.patch \ gnu/packages/patches/w3m-fix-compile.patch \ gnu/packages/patches/webkitgtk-2.4-sql-init-string.patch \ + gnu/packages/patches/weechat-python.patch \ gnu/packages/patches/weex-vacopy.patch \ gnu/packages/patches/wicd-bitrate-none-fix.patch \ gnu/packages/patches/wicd-get-selected-profile-fix.patch \ gnu/packages/patches/wicd-template-instantiation.patch \ gnu/packages/patches/wicd-urwid-1.3.patch \ gnu/packages/patches/wmctrl-64-fix.patch \ + gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch \ + gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch \ + gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch \ + gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch \ gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \ gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \ gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \ @@ -688,6 +727,7 @@ dist_patch_DATA = \ gnu/packages/patches/xf86-video-trident-remove-mibstore.patch \ gnu/packages/patches/xf86-video-vmware-glibc-2.20.patch \ gnu/packages/patches/xfce4-panel-plugins.patch \ + gnu/packages/patches/xfce4-session-fix-xflock4.patch \ gnu/packages/patches/xfce4-settings-defaults.patch \ gnu/packages/patches/xmodmap-asprintf.patch \ gnu/packages/patches/zathura-plugindir-environment-variable.patch diff --git a/gnu.scm b/gnu.scm index e3147b39e3..f9a13246c3 100644 --- a/gnu.scm +++ b/gnu.scm @@ -34,7 +34,7 @@ '((gnu system) (gnu system file-systems) (gnu system grub) ; 'grub-configuration' - (gnu system linux) ; 'base-pam-services' + (gnu system pam) (gnu system shadow) ; 'user-account' (gnu system linux-initrd) (gnu system nss) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index e911494058..eb5dbf94a3 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -19,16 +19,36 @@ (define-module (gnu build linux-container) #:use-module (ice-9 format) #:use-module (ice-9 match) + #:use-module (ice-9 rdelim) #:use-module (srfi srfi-98) #:use-module (guix utils) #:use-module (guix build utils) #:use-module (guix build syscalls) #:use-module ((gnu build file-systems) #:select (mount-file-system)) - #:export (%namespaces + #:export (user-namespace-supported? + unprivileged-user-namespace-supported? + setgroups-supported? + %namespaces run-container call-with-container container-excursion)) +(define (user-namespace-supported?) + "Return #t if user namespaces are supported on this system." + (file-exists? "/proc/self/ns/user")) + +(define (unprivileged-user-namespace-supported?) + "Return #t if user namespaces can be created by unprivileged users." + (let ((userns-file "/proc/sys/kernel/unprivileged_userns_clone")) + (if (file-exists? userns-file) + (string=? "1" (call-with-input-file userns-file read-string)) + #t))) + +(define (setgroups-supported?) + "Return #t if the setgroups proc file, introduced in Linux-libre 3.19, +exists." + (file-exists? "/proc/self/setgroups")) + (define %namespaces '(mnt pid ipc uts user net)) @@ -165,7 +185,7 @@ host user identifiers to map into the user namespace." "Return the number suitable for the 'flags' argument of 'clone' that corresponds to the symbols in NAMESPACES." ;; Use the same flags as fork(3) in addition to the namespace flags. - (apply logior SIGCHLD CLONE_CHILD_CLEARTID CLONE_CHILD_SETTID + (apply logior SIGCHLD (map (match-lambda ('mnt CLONE_NEWNS) ('uts CLONE_NEWUTS) diff --git a/gnu/packages/aarddict.scm b/gnu/packages/aarddict.scm deleted file mode 100644 index 76c7aa4f33..0000000000 --- a/gnu/packages/aarddict.scm +++ /dev/null @@ -1,70 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Andreas Enge -;;; -;;; 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 . - -(define-module (gnu packages aarddict) - #:use-module ((guix licenses) #:select (gpl3)) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system python) - #:use-module (gnu packages python) - #:use-module (gnu packages qt)) - -(define-public aarddict - (package - (name "aarddict") - (version "0.9.3") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/aarddict/desktop/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "12h7m0z7nd7rg8avpi9syd265k0rhh4vbdh464nq0jzdg8m9p28c")))) - (build-system python-build-system) - (inputs - `(("python2-pyicu" ,python2-pyicu) - ("python2-pyqt-4" ,python2-pyqt-4) - ("python2-setuptools" ,python2-setuptools) - ("python2-simplejson" ,python2-simplejson) - ("python2-sip" ,python2-sip))) - (arguments - `(#:python ,python-2 ; incompatible with Python 3 - #:phases - (alist-cons-before - 'build 'configure - ;; Force data into the output instead of the python package. - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "setup.py" - (("sys.prefix") (string-append "'" out "'"))))) - %standard-phases))) - (home-page "http://aarddict.org/index.html") - (synopsis - "Dictionary program and offline Wikipedia reader") - (description - "Aard Dictionary is a free, fast, easy to use word lookup program that -looks up words fast even with huge dictionaries like English Wikipedia; -looks up words in multiple dictionaries in multiple languages without -switching; -works great as offline Wikipedia reader; -is keyboard navigation friendly; -has efficient, highly compressed dictionary data storage format with -ability to verify data integrity built-in.") - (license gpl3))) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 455f7ee2a4..5b9f5d1650 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -485,14 +485,14 @@ tools: server, client, and relay agent.") (define-public libpcap (package (name "libpcap") - (version "1.5.3") + (version "1.7.4") (source (origin (method url-fetch) (uri (string-append "http://www.tcpdump.org/release/libpcap-" version ".tar.gz")) (sha256 (base32 - "14wyjywrdi1ikaj6yc9c72m6m2r64z94lb0gm7k1a3q6q5cj3scs")))) + "1c28ykkizd7jqgzrfkg7ivqjlqs9p6lygp26bsw2i0z8hwhi3lvs")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ("flex" ,flex))) (arguments '(#:configure-flags '("--with-pcap=linux") @@ -510,14 +510,14 @@ network statistics collection, security monitoring, network debugging, etc.") (define-public tcpdump (package (name "tcpdump") - (version "4.5.1") + (version "4.7.4") (source (origin (method url-fetch) (uri (string-append "http://www.tcpdump.org/release/tcpdump-" version ".tar.gz")) (sha256 (base32 - "15hb7zkzd66nag102qbv100hcnf7frglbkylmr8adwr8f5jkkaql")))) + "1byr8w6grk08fsq0444jmcz9ar89lq9nf4mjq2cny0w9k8k21rbb")))) (build-system gnu-build-system) (inputs `(("libpcap" ,libpcap) ("openssl" ,openssl))) @@ -647,7 +647,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.8.10p3") + (version "1.8.15") (source (origin (method url-fetch) (uri @@ -657,22 +657,35 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf")))) + "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--with-logpath=/var/log/sudo.log" - "--with-rundir=/run/sudo" - "--with-vardir=/var/db/sudo" - "--with-iologdir=/var/log/sudo-io") + `(#:configure-flags + (list "--with-logpath=/var/log/sudo.log" + "--with-rundir=/run/sudo" + "--with-vardir=/var/db/sudo" + "--with-iologdir=/var/log/sudo-io" + + ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't + ;; provide it. + (string-append "CPPFLAGS=-D_PATH_MV='\"" + (assoc-ref %build-inputs "coreutils") + "/bin/mv\"'")) + + ;; Avoid non-determinism; see . + #:parallel-build? #f + #:phases (alist-cons-before 'configure 'pre-configure (lambda _ - (substitute* "configure" - ;; Refer to the right executables. - (("/usr/bin/mv") (which "mv")) - (("/usr/bin/sh") (which "sh"))) + (substitute* "src/sudo_usage.h.in" + ;; Do not capture 'configure' arguments since we would + ;; unduly retain references, and also because the + ;; CPPFLAGS above would close the string literal + ;; prematurely. + (("@CONFIGURE_ARGS@") "\"\"")) (substitute* (find-files "." "Makefile\\.in") - (("-O [[:graph:]]+ -G [[:graph:]]+") + (("-o [[:graph:]]+ -g [[:graph:]]+") ;; Allow installation as non-root. "") (("^install: (.*)install-sudoers(.*)" _ before after) @@ -716,7 +729,12 @@ commands and their arguments.") ".tar.gz")) (sha256 (base32 - "05mkp5bx1c3z7h5biddsv0p49gkrq9ksany3anp4wdiv92p5prfc")))) + "05mkp5bx1c3z7h5biddsv0p49gkrq9ksany3anp4wdiv92p5prfc")) + (patches + (map search-patch '("wpa-supplicant-CVE-2015-5310.patch" + "wpa-supplicant-CVE-2015-5314.patch" + "wpa-supplicant-CVE-2015-5315.patch" + "wpa-supplicant-CVE-2015-5316.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm index 02254c8547..3ef5d28fbb 100644 --- a/gnu/packages/aidc.scm +++ b/gnu/packages/aidc.scm @@ -33,9 +33,10 @@ (source (origin (method url-fetch) (uri (string-append "mirror://gnu/barcode/barcode-" - version ".tar.xz")) - (sha256 (base32 - "1indapql5fjz0bysyc88cmc54y8phqrbi7c76p71fgjp45jcyzp8")))) + version ".tar.xz")) + (sha256 + (base32 + "1indapql5fjz0bysyc88cmc54y8phqrbi7c76p71fgjp45jcyzp8")))) (build-system gnu-build-system) (synopsis "Convert text strings to printed bars in various standards") (description "GNU Barcode is a flexible tool to produce printed barcodes @@ -53,7 +54,7 @@ formats.") (method url-fetch) (uri (string-append "http://fukuchi.org/works/qrencode/qrencode-" version - ".tar.bz2")) + ".tar.bz2")) (sha256 (base32 "163sb580p570p27imc6jhkfdw15kzp8vy1jq92nip1rwa63i9myz")))) (build-system gnu-build-system) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 2f52f5545c..25e1af1750 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages readline) #:use-module (gnu packages flex) + #:use-module (gnu packages xorg) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) @@ -114,7 +115,7 @@ solve the shortest vector problem.") (define-public pari-gp (package (name "pari-gp") - (version "2.7.4") + (version "2.7.5") (source (origin (method url-fetch) (uri (string-append @@ -122,9 +123,10 @@ solve the shortest vector problem.") version ".tar.gz")) (sha256 (base32 - "0k1qqagfl6zn7gvwmsqffj6g9yrzqvszwh2mblhmxpjlw1pigfh8")))) + "0c8l83a0gjq73r9hndsrzkypwxvnnm4pxkkzbg6jm95m80nzwh11")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp) + ("libx11" ,libx11) ("perl" ,perl) ("readline" ,readline))) (arguments @@ -155,7 +157,7 @@ PARI is also available as a C library to allow for faster computations.") (define-public gp2c (package (name "gp2c") - (version "0.0.9pl3") + (version "0.0.9pl4") (source (origin (method url-fetch) (uri (string-append @@ -163,7 +165,7 @@ PARI is also available as a C library to allow for faster computations.") version ".tar.gz")) (sha256 (base32 - "0wbghihwlcx3w4j1la3bjf5gcrkk6lp9syw6iimqndq1f73ijlq3")))) + "079qq4yyxpc53a2kn08gg9pcfgdyffbl14c2hqsic11q8pnsr08z")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (inputs `(("pari-gp" ,pari-gp))) @@ -381,14 +383,15 @@ cosine/ sine transforms or DCT/DST).") (define-public eigen (package (name "eigen") - (version "3.2.6") + (version "3.2.7") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/eigen/eigen/get/" version ".tar.bz2")) (sha256 (base32 - "0gil5ksmgcg6v3nw0v613mvpzz4n33xhawqs8l7fj7rnlpwm4cwa")) + "0gigbjjdlw2q0gvcnyiwc6in314a647rkidk6977bwiwn88im3p5")) + (file-name (string-append name "-" version ".tar.bz2")) (modules '((guix build utils))) (snippet ;; There are 3 test failures in the "unsupported" directory, @@ -396,29 +399,28 @@ cosine/ sine transforms or DCT/DST).") ;; anyway, so just skip them. '(substitute* "CMakeLists.txt" (("add_subdirectory\\(unsupported\\)") - "# Do not build the tests for unsupported features.\n"))))) + "# Do not build the tests for unsupported features.\n") + ;; Work around + ;; . + (("\"include/eigen3\"") + "\"${CMAKE_INSTALL_PREFIX}/include/eigen3\""))))) (build-system cmake-build-system) (arguments '(;; Turn off debugging symbols to save space. #:build-type "Release" - ;; Use 'make check', as per - ;; . - #:test-target "check" + #:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + (let* ((cores (parallel-job-count)) + (dash-j (format #f "-j~a" cores))) + ;; First build the tests, in parallel. See + ;; . + (and (zero? (system* "make" "buildtests" dash-j)) - #:phases (alist-cons-before - 'check 'build-tests - (lambda _ - ;; First build the tests, in parallel. - ;; See . - (let* ((cores (parallel-job-count)) - (dash-j (format #f "-j~a" cores))) - ;; These variables are supposed to be honored. - (setenv "EIGEN_MAKE_ARGS" dash-j) - (setenv "EIGEN_CTEST_ARGS" dash-j) - - (zero? (system* "make" "buildtests" dash-j)))) - %standard-phases))) + ;; Then run 'CTest' with -V so we get more + ;; details upon failure. + (zero? (system* "ctest" "-V" dash-j))))))))) (home-page "http://eigen.tuxfamily.org") (synopsis "C++ template library for linear algebra") (description diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm new file mode 100644 index 0000000000..789bb6e6f2 --- /dev/null +++ b/gnu/packages/animation.scm @@ -0,0 +1,178 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages animation) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages boost) + #:use-module (gnu packages compression) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages graphics) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages video)) + +(define-public etl + (package + (name "etl") + (version "0.04.19") + (source (origin + (method url-fetch) + ;; Keep this synchronized with the synfig release version. + (uri (string-append "mirror://sourceforge/synfig/releases/" + "1.0.2/source/ETL-" version ".tar.gz")) + (sha256 + (base32 + "070c70slizrklq1gbgja8m49xfmq65wlcd6hz6418cpx0wd4r55s")))) + (build-system gnu-build-system) + (home-page "http://www.synfig.org") + (synopsis "Extended C++ template library") + (description + "ETL is a class and template library designed to add new datatypes and +functions which combine well with the existing types and functions from the +C++ @dfn{Standard Template Library} (STL).") + (license license:gpl3+))) + +(define-public synfig + (package + (name "synfig") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/synfig/releases/" + version "/source/synfig-" version + ".tar.gz")) + (sha256 + (base32 + "1d3z2r78j3rkff47q3wl0ami69y3l4nyi5r9zclymb8ar7mgkk9l")) + (patches (list (search-patch "synfig-build-fix.patch"))))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; The Boost library path is taken from the value of BOOST_LDFLAGS. + (list (string-append "BOOST_LDFLAGS=-L" + (assoc-ref %build-inputs "boost") + "/lib")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adapt-to-libxml++-changes + (lambda _ + (substitute* "configure" + (("libxml\\+\\+-2\\.6") "libxml++-3.0")) + (substitute* (append (find-files "src/modules/" "\\.cpp$") + (find-files "src/synfig/" "\\.(cpp|h)$")) + (("add_child\\(") "add_child_element(") + (("get_child_text\\(") "get_first_child_text(") + (("set_child_text\\(") "set_first_child_text(") + (("remove_child\\(") "remove_node(")) + (substitute* "src/modules/mod_svg/svg_parser.cpp" + (("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList")) + #t)) + (add-before 'configure 'set-flags + (lambda _ + ;; Compile with C++11, required by libsigc++. + (setenv "CXXFLAGS" "-D__STDC_CONSTANT_MACROS -std=gnu++11") + #t))))) + (inputs + `(("boost" ,boost) + ("ffmpeg" ,ffmpeg) + ("libdv" ,libdv) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libmng" ,libmng) + ("zlib" ,zlib))) + ;; synfig.pc lists the following as required: Magick++ freetype2 + ;; fontconfig OpenEXR ETL glibmm-2.4 giomm-2.4 libxml++-3.0 sigc++-2.0 + ;; cairo pango pangocairo mlt++ + (propagated-inputs + `(("cairo" ,cairo) + ("etl" ,etl) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glibmm" ,glibmm) + ("imagemagick" ,imagemagick) + ("libxml++" ,libxml++) + ("libsigc++" ,libsigc++) + ("mlt" ,mlt) + ("openexr" ,openexr) + ("pango" ,pango))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://www.synfig.org") + (synopsis "Vector-based 2D animation renderer") + (description + "Synfig is a vector-based 2D animation package. It is designed to be +capable of producing feature-film quality animation. It eliminates the need +for tweening, preventing the need to hand-draw each frame.") + (license license:gpl3+))) + +(define-public synfigstudio + (package + (name "synfigstudio") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/synfig/releases/" + version "/source/synfigstudio-" version + ".tar.gz")) + (sha256 + (base32 + "1xa74dlgkpjn0gzdcs0x25z7wg0806v2wygvvi73f7sn1fm88ig4")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "src/synfigapp/pluginmanager.cpp" + (("xmlpp::Node\\* n =") "const xmlpp::Node* n =") + (("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList")) + ;; Some files are ISO-8859-1 encoded. + (with-fluids ((%default-port-encoding #f)) + (substitute* (find-files "src/" "\\.(cpp|h)$") + (("#include ") + "#include ") + (("#include ") + "#include ") + (("#include ") + "#include "))) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "CXXFLAGS=-std=gnu++11"))) + (inputs + `(("gtkmm" ,gtkmm) + ("libsigc++" ,libsigc++) + ("synfig" ,synfig))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool))) + (home-page "http://www.synfig.org") + (synopsis "Vector-based 2D animation package (GUI)") + (description + "Synfig is a vector-based 2D animation package. It is designed to +be capable of producing feature-film quality animation. It eliminates the +need for tweening, preventing the need to hand-draw each frame. This package +contains the graphical user interface for synfig.") + (license license:gpl3+))) diff --git a/gnu/packages/aria2.scm b/gnu/packages/aria2.scm new file mode 100644 index 0000000000..707a3ce0e4 --- /dev/null +++ b/gnu/packages/aria2.scm @@ -0,0 +1,49 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages aria2) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix build-system gnu) + #:use-module (gnu packages pkg-config)) + +(define-public c-ares + (package + (name "c-ares") + (version "1.10.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://c-ares.haxx.se/download/" name "-" version + ".tar.gz")) + (sha256 + (base32 + "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://c-ares.haxx.se/") + (synopsis "C library for asynchronous DNS requests") + (description + "C-ares is a C library that performs DNS requests and name resolution +asynchronously. It is intended for applications which need to perform DNS +queries without blocking, or need to perform multiple DNS queries in parallel. +The primary examples of such applications are servers which communicate with +multiple clients and programs with graphical user interfaces.") + (license (license:x11-style "http://c-ares.haxx.se/license.html")))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index a35ef278ee..6a8347af05 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -42,6 +42,8 @@ #:use-module (gnu packages databases) #:use-module (gnu packages file) #:use-module (gnu packages flex) + #:use-module (gnu packages fltk) + #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) @@ -58,6 +60,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) + #:use-module (gnu packages webkit) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -128,7 +131,7 @@ Filter) modules follow the convention of 1V / Octave.") (native-inputs `(("pkg-config" ,pkg-config))) (home-page "http://aubio.org/") - (synopsis "A library for audio labelling") + (synopsis "Library for audio labelling") (description "aubio is a tool designed for the extraction of annotations from audio signals. Its features include segmenting a sound file before each of its @@ -152,13 +155,11 @@ streams from live audio.") libdir "/vamp" "\"]")))) #t)) -(define-public ardour-3 +(define-public ardour (package (name "ardour") - (version "3.5.403") + (version "4.4") (source (origin - ;; The project only provides tarballs upon individual request - ;; (or after payment) so we take the code from git. (method git-fetch) (uri (git-reference (url "git://git.ardour.org/ardour/ardour.git") @@ -171,14 +172,15 @@ streams from live audio.") "libs/ardour/revision.cc" (lambda (port) (format port "#include \"ardour/revision.h\" -namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }")))) +namespace ARDOUR { const char* revision = \"4.4-210-ga4daf93\" ; }")))) (sha256 (base32 - "01b0wxh0wlxjfz5j8gcwwqhxc6q2kn4njz2fcmzv9fr3xaya5dbp")) + "1gnrcnq2ksnh7fsa301v1c4p5dqrbqpjylf02rg3za3ab58wxi7l")) (file-name (string-append name "-" version)))) (build-system waf-build-system) (arguments - `(#:phases + `(#:configure-flags '("--cxx11") ; required by gtkmm + #:phases (modify-phases %standard-phases (add-after 'unpack 'set-rpath-in-LDFLAGS @@ -230,35 +232,6 @@ record, edit, mix and master audio and MIDI projects. It is targeted at audio engineers, musicians, soundtrack editors and composers.") (license license:gpl2+))) -(define-public ardour - (package (inherit ardour-3) - (name "ardour") - (version "4.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://git.ardour.org/ardour/ardour.git") - (commit version))) - (snippet - ;; Ardour expects this file to exist at build time. It can be - ;; created from a git checkout with: - ;; ./waf create_stored_revision - '(call-with-output-file - "libs/ardour/revision.cc" - (lambda (port) - (format port "#include \"ardour/revision.h\" -namespace ARDOUR { const char* revision = \"4.2\" ; }")))) - (sha256 - (base32 - "1j8zw0bvh16qwyy8qrqynpak9nghl9j3qhjjcdl7wh9raafjqc00")) - (file-name (string-append name "-" version)))) - (arguments - (substitute-keyword-arguments (package-arguments ardour-3) - ((#:phases phases) - `(modify-phases ,phases - (replace 'set-rpath-in-LDFLAGS - ,(ardour-rpath-phase (version-prefix version 1))))))))) - (define-public azr3 (package (name "azr3") @@ -301,9 +274,8 @@ plugins are provided.") (version "0.0.60") (source (origin (method url-fetch) - (uri (string-append - "mirror://sourceforge/calf/calf/" - version "/calf-" version ".tar.gz")) + (uri (string-append "http://calf-studio-gear.org/files/calf-" + version ".tar.gz")) (sha256 (base32 "019fwg00jv217a5r767z7szh7vdrarybac0pr2sk26xp81kibrx9")))) @@ -350,6 +322,12 @@ tools (analyzer, mono/stereo tools, crossovers).") (base32 "0a1sni6lr7qpwywpggbkp0ia3h9bwwgf9i87gsag8ra2h30v82hd")))) (build-system cmake-build-system) + (arguments + ;; Work around this error on x86_64 with libc 2.22+: + ;; libmvec.so.1: error adding symbols: DSO missing from command line + (if (string-prefix? "x86_64" (or (%current-target-system) (%current-system))) + '(#:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-lmvec")) + '())) (inputs `(("alsa-lib" ,alsa-lib) ("boost" ,boost) @@ -558,7 +536,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") (define-public guitarix (package (name "guitarix") - (version "0.33.0") + (version "0.34.0") (source (origin (method url-fetch) (uri (string-append @@ -566,7 +544,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") version ".tar.bz2")) (sha256 (base32 - "1w6dg2n0alfjsx1iy6s53783invygwxk11p1i65cc3nq3zlidcgx")))) + "0pamaq8iybsaglq6y1m1rlmz4wgbs2r6m24bj7x4fwg4grjvzjl8")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no "check" target @@ -574,7 +552,8 @@ patches that can be used with softsynths such as Timidity and WildMidi.") #:configure-flags (list ;; Add the output lib directory to the RUNPATH. - (string-append "--ldflags=-Wl,-rpath=" %output "/lib")))) + (string-append "--ldflags=-Wl,-rpath=" %output "/lib") + "--cxxflags=-std=c++11"))) (inputs `(("libsndfile" ,libsndfile) ("boost" ,boost) @@ -586,6 +565,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.") ("jack" ,jack-1) ("gtkmm" ,gtkmm-2) ("gtk+" ,gtk+-2) + ("webkitgtk/gtk+-2" ,webkitgtk/gtk+-2) ("fftwf" ,fftwf) ("lrdf" ,lrdf) ("zita-resampler" ,zita-resampler) @@ -611,6 +591,56 @@ from a simple noise gate to modulation effects like flanger, phaser or auto-wah.") (license license:gpl2+))) +(define-public rakarrack + (package + (name "rakarrack") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/" + "rakarrack-" version "/rakarrack-" + version ".tar.bz2")) + (sha256 + (base32 + "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* '("src/process.C" + "src/global.h") + (("#include +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,16 +31,15 @@ (define-public autogen (package (name "autogen") - (version "5.18.6") + (version "5.18.7") (source (origin (method url-fetch) - (uri (string-append "mirror://gnu/autogen/rel" - version "/autogen-" - version ".tar.xz")) + (uri (string-append "mirror://gnu/autogen" + "/autogen-" version ".tar.xz")) (sha256 (base32 - "0sfmmy19k9z0j3f738fyk6ljf6b66410cvd5zzyplxi2683j10qs")))) + "01d4m8ckww12sy50vgyxlnz83z9dxqpyqp153cscncc9w6jq19d7")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ;for doc generator mdoc ("pkg-config" ,pkg-config))) diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm index b6eef1a6ad..2d480192af 100644 --- a/gnu/packages/avahi.scm +++ b/gnu/packages/avahi.scm @@ -23,7 +23,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) - #:use-module (gnu packages gdbm) + #:use-module (gnu packages databases) #:use-module (gnu packages libdaemon) #:use-module (gnu packages pkg-config) #:use-module (gnu packages glib) diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm index d7ca1b1ace..d59816b6b8 100644 --- a/gnu/packages/avr.scm +++ b/gnu/packages/avr.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,12 +18,14 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages avr) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix download) #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (gnu packages) - #:use-module (gnu packages cross-base)) + #:use-module (gnu packages cross-base) + #:use-module (gnu packages vim) + #:use-module (gnu packages zip)) (define-public avr-libc (package @@ -48,4 +51,41 @@ (description "AVR Libc is a project whose goal is to provide a high quality C library for use with GCC on Atmel AVR microcontrollers.") - (license (non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt")))) + (license (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt")))) + +(define-public microscheme + (package + (name "microscheme") + (version "0.9.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/ryansuchocki/" + "microscheme/archive/v" version ".zip")) + (sha256 + (base32 + "0cmp1c6ilcib4w9ysqghav310g8jsq9gdfpfa9sd23wgl7mlncxf")) + (file-name (string-append name "-" version ".zip")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-build? #f ; fails to build otherwise + #:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (delete 'configure)) + #:make-flags + (list (string-append "PREFIX=" (assoc-ref %outputs "out"))))) + (native-inputs + `(("unzip" ,unzip) + ("vim" ,vim))) ; for xxd + (home-page "http://microscheme.org/") + (synopsis "Scheme subset for Atmel microcontrollers") + (description + "Microscheme, or @code{(ms)} for short, is a functional programming +language for the Arduino, and for Atmel 8-bit AVR microcontrollers in general. +Microscheme is a subset of Scheme, in the sense that every valid @code{(ms)} +program is also a valid Scheme program (with the exception of Arduino +hardware-specific primitives). The @code{(ms)} compiler performs function +inlining, and features an aggressive tree-shaker, eliminating unused top-level +definitions. Microscheme has a robust @dfn{Foreign Function Interface} (FFI) +meaning that C code may be invoked directly from (ms) programs.") + (license license:expat))) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 287438e035..aa8ccbce69 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -30,9 +30,12 @@ #:use-module (gnu packages acl) #:use-module (gnu packages base) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages dejagnu) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) + #:use-module (gnu packages gperf) + #:use-module (gnu packages guile) #:use-module (gnu packages linux) #:use-module (gnu packages mcrypt) #:use-module (gnu packages nettle) @@ -148,6 +151,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") (search-patch "libarchive-CVE-2013-0211.patch") (search-patch "libarchive-bsdtar-test.patch"))))) (build-system gnu-build-system) + ;; TODO: Add -L/path/to/nettle in libarchive.pc. (inputs `(("zlib" ,zlib) ("nettle" ,nettle) @@ -353,3 +357,44 @@ deduplication technique used makes Attic suitable for daily backups since only changes are stored.") (home-page "https://attic-backup.org/") (license license:bsd-3))) + +(define-public libchop + (package + (name "libchop") + (version "0.5.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/libchop/libchop-" + version ".tar.gz")) + (sha256 + (base32 + "0fpdyxww41ba52d98blvnf543xvirq1v9xz1i3x1gm9lzlzpmc2g")) + (patches + (list (search-patch "diffutils-gets-undeclared.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("guile" ,guile-2.0) + ("gperf" ,gperf) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.0) + ("util-linux" ,util-linux) + ("gnutls" ,gnutls) + ("tdb" ,tdb) + ("bdb" ,bdb) + ("gdbm" ,gdbm) + ("libgcrypt" ,libgcrypt) + ("lzo" ,lzo) + ("bzip2" ,bzip2) + ("zlib" ,zlib))) + (home-page "http://nongnu.org/libchop/") + (synopsis "Tools & library for data backup and distributed storage") + (description + "Libchop is a set of utilities and library for data backup and +distributed storage. Its main application is @command{chop-backup}, an +encrypted backup program that supports data integrity checks, versioning, +distribution among several sites, selective sharing of stored data, adaptive +compression, and more. The library itself implements storage techniques such +as content-addressable storage, content hash keys, Merkle trees, similarity +detection, and lossless compression.") + (license license:gpl3+))) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 179d535f20..fb3cbb4bc2 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -632,6 +632,21 @@ with the Linux kernel.") (license lgpl2.0+) (home-page "http://www.gnu.org/software/libc/"))) +(define-public glibc-2.21 + ;; The old libc, which we use mostly to build locale data in the old format + ;; (which the new libc can cope with.) + (package + (inherit glibc) + (version "2.21") + (source (origin + (inherit (package-source glibc)) + (uri (string-append "mirror://gnu/glibc/glibc-" + version ".tar.xz")) + (sha256 + (base32 + "1f135546j34s9bfkydmx2nhh9vwxlx60jldi80zmsnln6wj3dsxf")) + (patches (list (search-patch "glibc-ldd-x86_64.patch"))))))) + (define-public glibc-locales (package (inherit glibc) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index b2f23a8442..a2d76b9673 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -193,7 +193,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." ;; Bash is reportedly not parallel-safe. See, for instance, ;; and - ;; . + ;; . #:parallel-build? #f #:parallel-tests? #f @@ -296,8 +296,10 @@ without modification.") (completions (string-append out "/share/bash-completion" "/completions")) - (already (find-files (string-append util-linux - "/etc/bash_completion.d")))) + (already (find-files + (string-append + util-linux + "/etc/bash_completion.d")))) (with-directory-excursion completions (for-each (lambda (file) (when (file-exists? file) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 51e3df6d81..7c573e1626 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -44,6 +44,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages machine-learning) #:use-module (gnu packages maths) + #:use-module (gnu packages mpi) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -347,15 +348,14 @@ provide a coordinated and extensible framework to do computational biology.") (define-public python-biopython (package (name "python-biopython") - (version "1.65") + (version "1.66") (source (origin (method url-fetch) - (uri (string-append - "http://biopython.org/DIST/biopython-" - version ".tar.gz")) + ;; use PyPi rather than biopython.org to ease updating + (uri (pypi-uri "biopython" version)) (sha256 (base32 - "13m8s9jkrw40zvdp1rl709n6lmgdh4f52aann7gzr6sfp0fwhg26")))) + "1gdv92593klimg22icf5j9by7xiq86jnwzkpz4abaa05ylkdf6hp")))) (build-system python-build-system) (inputs `(("python-numpy" ,python-numpy))) @@ -524,6 +524,89 @@ confidence to have in an alignment.") license:lgpl2.0+ license:asl2.0)))) +(define-public bless + (package + (name "bless") + (version "1p02") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/bless-ec/bless.v" + version ".tgz")) + (sha256 + (base32 + "0rm0gw2s18dqwzzpl3c2x1z05ni2v0xz5dmfk3d33j6g4cgrlrdd")) + (modules '((guix build utils))) + (snippet + `(begin + ;; Remove bundled boost, pigz, zlib, and .git directory + ;; FIXME: also remove bundled sources for google-sparsehash, + ;; murmurhash3, kmc once packaged. + (delete-file-recursively "boost") + (delete-file-recursively "pigz") + (delete-file-recursively "zlib") + (delete-file-recursively ".git") + #t)))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;no "check" target + #:make-flags + (list (string-append "ZLIB=" + (assoc-ref %build-inputs "zlib") + "/lib/libz.a") + (string-append "LDFLAGS=" + (string-join '("-lboost_filesystem" + "-lboost_system" + "-lboost_iostreams" + "-lz" + "-fopenmp" + "-std=c++11")))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'do-not-build-bundled-pigz + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Makefile" + (("cd pigz/pigz-2.3.3; make") "")) + #t)) + (add-after 'unpack 'patch-paths-to-executables + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "parse_args.cpp" + (("kmc_binary = .*") + (string-append "kmc_binary = \"" + (assoc-ref outputs "out") + "/bin/kmc\";")) + (("pigz_binary = .*") + (string-append "pigz_binary = \"" + (assoc-ref inputs "pigz") + "/bin/pigz\";"))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) + (for-each (lambda (file) + (install-file file bin)) + '("bless" "kmc/bin/kmc")) + #t))) + (delete 'configure)))) + (native-inputs + `(("perl" ,perl))) + (inputs + `(("openmpi" ,openmpi) + ("boost" ,boost) + ("pigz" ,pigz) + ("zlib" ,zlib))) + (supported-systems '("x86_64-linux")) + (home-page "http://sourceforge.net/p/bless-ec/wiki/Home/") + (synopsis "Bloom-filter-based error correction tool for NGS reads") + (description + "@dfn{Bloom-filter-based error correction solution for high-throughput +sequencing reads} (BLESS) uses a single minimum-sized bloom filter is a +correction tool for genomic reads produced by @dfn{Next-generation +sequencing} (NGS). BLESS produces accurate correction results with much less +memory compared with previous solutions and is also able to tolerate a higher +false-positive rate. BLESS can extend reads like DNA assemblers to correct +errors at the end of reads.") + (license license:gpl3+))) + (define-public bowtie (package (name "bowtie") @@ -805,15 +888,16 @@ time.") (define-public crossmap (package (name "crossmap") - (version "0.1.6") + (version "0.2.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/crossmap/CrossMap-" version ".tar.gz")) (sha256 (base32 - "163hi5gjgij6cndxlvbkp5jjwr0k4wbm9im6d2210278q7k9kpnp")) - ;; patch has been sent upstream already + "07y179f63d7qnzdvkqcziwk9bs3k4zhp81q392fp1hwszjdvy22f")) + ;; This patch has been sent upstream already and is available + ;; for download from Sourceforge, but it has not been merged. (patches (list (search-patch "crossmap-allow-system-pysam.patch"))) (modules '((guix build utils))) @@ -1028,7 +1112,7 @@ data and settings.") ("perl" ,perl))) (native-inputs `(("unzip" ,unzip))) - (home-page "http://www.ncbi.nlm.nih.gov/books/NBK179288") + (home-page "http://www.ncbi.nlm.nih.gov/books/NBK179288/") (synopsis "Tools for accessing the NCBI's set of databases") (description "Entrez Direct (EDirect) is a method for accessing the National Center @@ -1089,6 +1173,51 @@ analysis (from RNA-Seq), transcription factor binding quantification in ChIP-Seq, and analysis of metagenomic data.") (license license:artistic2.0))) +(define-public express-beta-diversity + (package + (name "express-beta-diversity") + (version "1.0.7") + (source (origin + (method url-fetch) + (uri + (string-append + "https://github.com/dparks1134/ExpressBetaDiversity/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1djvdlmqvjf6h0zq7w36y8cl5cli6rgj86x65znl48agnwmzxfxr")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'enter-source (lambda _ (chdir "source") #t)) + (replace 'check + (lambda _ (zero? (system* "../bin/ExpressBetaDiversity" + "-u")))) + (add-after 'check 'exit-source (lambda _ (chdir "..") #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") + "/bin"))) + (mkdir-p bin) + (copy-file "scripts/convertToEBD.py" + (string-append bin "/convertToEBD.py")) + (copy-file "bin/ExpressBetaDiversity" + (string-append bin "/ExpressBetaDiversity")) + #t)))))) + (inputs + `(("python" ,python-2))) + (home-page "http://kiwi.cs.dal.ca/Software/ExpressBetaDiversity") + (synopsis "Taxon- and phylogenetic-based beta diversity measures") + (description + "Express Beta Diversity (EBD) calculates ecological beta diversity +(dissimilarity) measures between biological communities. EBD implements a +variety of diversity measures including those that make use of phylogenetic +similarity of community members.") + (license license:gpl3+))) + (define-public fasttree (package (name "fasttree") @@ -1328,6 +1457,9 @@ estimates transcript expression.") `(("perl" ,perl) ("python" ,python) ("zlib" ,zlib))) + ;; Non-portable SSE instructions are used so building fails on platforms + ;; other than x86_64. + (supported-systems '("x86_64-linux")) (home-page "http://ccb.jhu.edu/software/hisat/index.shtml") (synopsis "Hierarchical indexing for spliced alignment of transcripts") (description @@ -1382,9 +1514,11 @@ HMMs).") "1i85ppf2j2lj12m0x690qq5nn17xxk23pbbx2c83r8ayb5wngzwv")))) (build-system python-build-system) (arguments `(#:python ,python-2)) ; only Python 2 is supported - (inputs - `(("python-numpy" ,python2-numpy) - ("python-setuptools" ,python2-setuptools))) + ;; Numpy needs to be propagated when htseq is used as a Python library. + (propagated-inputs + `(("python-numpy" ,python2-numpy))) + (native-inputs + `(("python-setuptools" ,python2-setuptools))) (home-page "http://www-huber.embl.de/users/anders/HTSeq/") (synopsis "Analysing high-throughput sequencing data with Python") (description @@ -1838,19 +1972,25 @@ the phenotype as it models the data.") (license license:asl2.0))) (define-public pbtranscript-tofu - (let ((commit "c7bbd5472")) + (let ((commit "8f5467fe6")) (package (name "pbtranscript-tofu") - (version (string-append "0.4.1." commit)) + (version (string-append "2.2.3." commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/PacificBiosciences/cDNA_primer.git") (commit commit))) - (file-name (string-append name "-" version ".tar.gz")) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "148xkzi689c49g6fdhckp6mnmj2qhjdf1j4wifm6ja7ij95d7fxx")))) + "1lgnpi35ihay42qx0b6yl3kkgra723i413j33kvs0kvs61h82w0f")) + (modules '((guix build utils))) + (snippet + '(begin + ;; remove bundled Cython sources + (delete-file "pbtranscript-tofu/pbtranscript/Cython-0.20.1.tar.gz") + #t)))) (build-system python-build-system) (arguments `(#:python ,python-2 @@ -1860,34 +2000,29 @@ the phenotype as it models the data.") #:configure-flags '("--single-version-externally-managed" "--record=pbtranscript-tofu.txt") #:phases - (alist-cons-after - 'unpack 'enter-directory-and-clean-up - (lambda _ - (chdir "pbtranscript-tofu/pbtranscript/") - ;; Delete clutter - (delete-file-recursively "dist/") - (delete-file-recursively "build/") - (delete-file-recursively "setuptools_cython-0.2.1-py2.6.egg/") - (delete-file-recursively "pbtools.pbtranscript.egg-info") - (delete-file "Cython-0.20.1.tar.gz") - (delete-file "setuptools_cython-0.2.1-py2.7.egg") - (delete-file "setuptools_cython-0.2.1.tar.gz") - (delete-file "setup.cfg") - (for-each delete-file - (find-files "." "\\.so$")) - ;; files should be writable for install phase - (for-each (lambda (f) (chmod f #o755)) - (find-files "." "\\.py$"))) - %standard-phases))) + (modify-phases %standard-phases + (add-after 'unpack 'enter-directory + (lambda _ + (chdir "pbtranscript-tofu/pbtranscript/") + #t)) + ;; With setuptools version 18.0 and later this setup.py hack causes + ;; a build error, so we disable it. + (add-after 'enter-directory 'patch-setuppy + (lambda _ + (substitute* "setup.py" + (("if 'setuptools.extension' in sys.modules:") + "if False:")) + #t))))) (inputs - `(("python-cython" ,python2-cython) - ("python-numpy" ,python2-numpy) + `(("python-numpy" ,python2-numpy) ("python-bx-python" ,python2-bx-python) ("python-networkx" ,python2-networkx) ("python-scipy" ,python2-scipy) - ("python-pbcore" ,python2-pbcore))) + ("python-pbcore" ,python2-pbcore) + ("python-h5py" ,python2-h5py))) (native-inputs - `(("python-nose" ,python2-nose) + `(("python-cython" ,python2-cython) + ("python-nose" ,python2-nose) ("python-setuptools" ,python2-setuptools))) (home-page "https://github.com/PacificBiosciences/cDNA_primer") (synopsis "Analyze transcriptome data generated with the Iso-Seq protocol") @@ -2149,10 +2284,57 @@ viewer.") (string-append bin "/samtools"))))) (delete 'patch-tests))))))) +(define-public mosaik + (let ((commit "5c25216d")) + (package + (name "mosaik") + (version "2.2.30") + (source (origin + ;; There are no release tarballs nor tags. + (method git-fetch) + (uri (git-reference + (url "https://github.com/wanpinglee/MOSAIK.git") + (commit commit))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "17gj3s07cm77r41z92awh0bim7w7q7fbn0sf5nkqmcm1vw052qgw")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags (list "CC=gcc") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ (chdir "src") #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") + "/bin"))) + (mkdir-p bin) + (copy-recursively "../bin" bin) + #t)))))) + (inputs + `(("perl" ,perl) + ("zlib" ,zlib))) + (supported-systems '("x86_64-linux")) + (home-page "https://code.google.com/p/mosaik-aligner/") + (synopsis "Map nucleotide sequence reads to reference genomes") + (description + "MOSAIK is a program for mapping second and third-generation sequencing +reads to a reference genome. MOSAIK can align reads generated by all the +major sequencing technologies, including Illumina, Applied Biosystems SOLiD, +Roche 454, Ion Torrent and Pacific BioSciences SMRT.") + ;; MOSAIK is released under the GPLv2+ with the exception of third-party + ;; code released into the public domain: + ;; 1. fastlz by Ariya Hidayat - http://www.fastlz.org/ + ;; 2. MD5 implementation - RSA Data Security, RFC 1321 + (license (list license:gpl2+ license:public-domain))))) + (define-public ngs-sdk (package (name "ngs-sdk") - (version "1.1.1") + (version "1.2.2") (source (origin (method url-fetch) @@ -2162,7 +2344,7 @@ viewer.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1x58gpm574n0xmk2a98gmikbgycq78ia0bvnb42k5ck34fmd5v8y")))) + "0rvq61zfw2h9jcz6a33b9xrl20r7s5a9rldvv6rs2qy42khpmf5j")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported @@ -2206,26 +2388,8 @@ simultaneously.") (srfi srfi-26)) ,@(package-arguments ngs-sdk)) ((#:phases phases) - `(alist-cons-after - 'enter-dir 'fix-java-symlink-installation - (lambda _ - ;; Only replace the version suffix, not the version number in - ;; the directory name. Reported here: - ;; https://github.com/ncbi/ngs/pull/4 - (substitute* "Makefile.java" - (((string-append "\\$\\(subst " - "(\\$\\(VERSION[^\\)]*\\))," - "(\\$\\([^\\)]+\\))," - "(\\$\\([^\\)]+\\)|\\$\\@)" - "\\)") - _ pattern replacement target) - (string-append "$(patsubst " - "%" pattern "," - "%" replacement "," - target ")")))) - (alist-replace - 'enter-dir (lambda _ (chdir "ngs-java") #t) - ,phases)))))) + `(modify-phases ,phases + (replace 'enter-dir (lambda _ (chdir "ngs-java") #t))))))) (inputs `(("jdk" ,icedtea6 "jdk") ("ngs-sdk" ,ngs-sdk))) @@ -2234,7 +2398,7 @@ simultaneously.") (define-public ncbi-vdb (package (name "ncbi-vdb") - (version "2.4.5-5") + (version "2.5.4") (source (origin (method url-fetch) @@ -2244,7 +2408,7 @@ simultaneously.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1cj8nk6if8sqagv20vx36v566fdvhcaadf0x1ycnbgql6chbs6vy")))) + "1rcnyc4xkdfcjww2i0s0qrbapys0cxbjcx2sy3qkpslf9f400fgj")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported @@ -2254,20 +2418,6 @@ simultaneously.") 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - ;; Only replace the version suffix, not the version number in the - ;; directory name; fixed in commit 4dbba5c6a809 (no release yet). - (substitute* "setup/konfigure.perl" - (((string-append "\\$\\(subst " - "(\\$\\(VERSION[^\\)]*\\))," - "(\\$\\([^\\)]+\\))," - "(\\$\\([^\\)]+\\)|\\$\\@)" - "\\)") - _ pattern replacement target) - (string-append "$(patsubst " - "%" pattern "," - "%" replacement "," - target ")"))) - ;; Override include path for libmagic (substitute* "setup/package.prl" (("name => 'magic', Include => '/usr/include'") @@ -2383,49 +2533,95 @@ subsequent visualization, annotation and storage of results.") ;; LGPLv2.1+ (license (list license:gpl2 license:lgpl2.1+)))) +(define-public smithlab-cpp + (let ((revision "1") + (commit "728a097")) + (package + (name "smithlab-cpp") + (version (string-append "0." revision "." commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/smithlabcode/smithlab_cpp.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0d476lmj312xk77kr9fzrv7z1bv96yfyx0w7y62ycmnfbx32ll74")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:tests? #f ;no "check" target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-samtools-headers + (lambda _ + (substitute* '("SAM.cpp" + "SAM.hpp") + (("sam.h") "samtools/sam.h")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (include (string-append out "/include/smithlab-cpp"))) + (mkdir-p lib) + (mkdir-p include) + (for-each (cut install-file <> lib) + (find-files "." "\\.o$")) + (for-each (cut install-file <> include) + (find-files "." "\\.hpp$"))) + #t)) + (delete 'configure)))) + (inputs + `(("samtools" ,samtools-0.1) + ("zlib" ,zlib))) + (home-page "https://github.com/smithlabcode/smithlab_cpp") + (synopsis "C++ helper library for functions used in Smith lab projects") + (description + "Smithlab CPP is a C++ library that includes functions used in many of +the Smith lab bioinformatics projects, such as a wrapper around Samtools data +structures, classes for genomic regions, mapped sequencing reads, etc.") + (license license:gpl3+)))) + (define-public preseq (package (name "preseq") - (version "1.0.2") + (version "2.0") (source (origin (method url-fetch) - (uri - (string-append "http://smithlabresearch.org/downloads/preseq-" - version ".tar.bz2")) + (uri (string-append "https://github.com/smithlabcode/" + "preseq/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0r7sw07p6nv8ygvc17gd78lisbw5336v3vhs86b5wv8mw3pwqksc")) - (patches (list (search-patch "preseq-1.0.2-install-to-PREFIX.patch") - (search-patch "preseq-1.0.2-link-with-libbam.patch"))) + (base32 "08r684l50pnxjpvmhzjgqq56yv9rfw90k8vx0nsrnrzk8mf9hsdq")) (modules '((guix build utils))) (snippet ;; Remove bundled samtools. - '(delete-file-recursively "preseq-master/samtools")))) + '(delete-file-recursively "samtools")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target #:phases (modify-phases %standard-phases - (add-after - 'unpack 'enter-dir - (lambda _ - (chdir "preseq-master") - #t)) - (add-after - 'enter-dir 'use-samtools-headers - (lambda _ - (substitute* '("smithlab_cpp/SAM.cpp" - "smithlab_cpp/SAM.hpp") - (("sam.h") "samtools/sam.h")) - #t)) (delete 'configure)) - #:make-flags (list (string-append "PREFIX=" - (assoc-ref %outputs "out")) - (string-append "LIBBAM=" - (assoc-ref %build-inputs "samtools") - "/lib/libbam.a")))) + #:make-flags + (list (string-append "PREFIX=" + (assoc-ref %outputs "out")) + (string-append "LIBBAM=" + (assoc-ref %build-inputs "samtools") + "/lib/libbam.a") + (string-append "SMITHLAB_CPP=" + (assoc-ref %build-inputs "smithlab-cpp") + "/lib") + "PROGS=preseq" + "INCLUDEDIRS=$(SMITHLAB_CPP)/../include/smithlab-cpp $(SAMTOOLS_DIR)"))) (inputs `(("gsl" ,gsl) ("samtools" ,samtools-0.1) + ("smithlab-cpp" ,smithlab-cpp) ("zlib" ,zlib))) (home-page "http://smithlabresearch.org/software/preseq/") (synopsis "Program for analyzing library complexity") @@ -2442,7 +2638,7 @@ complexity samples.") (define-public sra-tools (package (name "sra-tools") - (version "2.4.5-5") + (version "2.5.4") (source (origin (method url-fetch) @@ -2452,7 +2648,7 @@ complexity samples.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "11nrnvz7a012f4iryf0wiwrid0h111grsfxbxa9j51h3f2xbvgns")))) + "1rxxc8a34g70jcaa2j8sys2x93amlbc24k7az39wldhkzgi96825")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported @@ -2595,6 +2791,43 @@ BioPython in a convenient way. Instead of having a big mess of scripts, there is one that takes arguments.") (license license:gpl3))) +(define-public snap-aligner + (package + (name "snap-aligner") + (version "1.0beta.18") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/amplab/snap/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1vnsjwv007k1fl1q7d681kbwn6bc66cgw6h16hym6gvyy71qv2ly")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'check (lambda _ (zero? (system* "./unit_tests")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (install-file "snap-aligner" bin) + (install-file "SNAPCommand" bin) + #t)))))) + (native-inputs + `(("zlib" ,zlib))) + (home-page "http://snap.cs.berkeley.edu/") + (synopsis "Short read DNA sequence aligner") + (description + "SNAP is a fast and accurate aligner for short DNA reads. It is +optimized for modern read lengths of 100 bases or higher, and takes advantage +of these reads to align data quickly through a hash-based indexing scheme.") + (license license:asl2.0))) + (define-public star (package (name "star") @@ -2657,7 +2890,24 @@ sequences.") (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target - #:make-flags '("-f" "Makefile.Linux") + ;; The CC and CCFLAGS variables are set to contain a lot of x86_64 + ;; optimizations by default, so we override these flags such that x86_64 + ;; flags are only added when the build target is an x86_64 system. + #:make-flags + (list (let ((system ,(or (%current-target-system) + (%current-system))) + (flags '("-ggdb" "-fomit-frame-pointer" + "-ffast-math" "-funroll-loops" + "-fmessage-length=0" + "-O9" "-Wall" "-DMAKE_FOR_EXON" + "-DMAKE_STANDALONE" + "-DSUBREAD_VERSION=\\\"${SUBREAD_VERSION}\\\"")) + (flags64 '("-mmmx" "-msse" "-msse2" "-msse3"))) + (if (string-prefix? "x86_64" system) + (string-append "CCFLAGS=" (string-join (append flags flags64))) + (string-append "CCFLAGS=" (string-join flags)))) + "-f" "Makefile.Linux" + "CC=gcc ${CCFLAGS}") #:phases (alist-cons-after 'unpack 'enter-dir diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm index 13630b39dc..e2d6cf8f9e 100644 --- a/gnu/packages/busybox.scm +++ b/gnu/packages/busybox.scm @@ -40,12 +40,12 @@ "12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf")))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:phases (alist-replace - 'configure + 'configure (lambda _ (zero? (system* "make" "defconfig"))) (alist-replace - 'check + 'check (lambda _ (substitute* '("testsuite/du/du-s-works" "testsuite/du/du-works") @@ -70,7 +70,7 @@ ;; So mark it with SKIP_KNOWN_BUGS like the others. ;; Presumably it wasn't known at the time of release ... ;; (It is strange that they release software which they know to have bugs) - (("testing \"grep -w \\^str doesn't match str not at the beginning\"") + (("testing \"grep -w \\^str doesn't match str not at the beginning\"") "test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\"")) ;; This test cannot possibly pass. @@ -79,7 +79,7 @@ (delete-file "testsuite/which/which-uses-default-path") (rmdir "testsuite/which") - (zero? (system* "make" + (zero? (system* "make" ;; "V=1" "SKIP_KNOWN_BUGS=1" "SKIP_INTERNET_TESTS=1" diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 62a6040280..fec1fc9632 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013, 2014 Andreas Enge ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -124,14 +126,14 @@ libcdio.") (define-public xorriso (package (name "xorriso") - (version "1.4.0") + (version "1.4.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/xorriso/xorriso-" version ".tar.gz")) (sha256 (base32 - "0mhfxn2idkrw1i65a5y4gnb1fig85zpnszb9ax7w4a2v062y1l8b")))) + "1cq4a0904lnz6nygbgarnlq49cz4qnfdyvz90s3nfk5as7gbwhr8")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) @@ -156,7 +158,8 @@ files.") (version "10.2") (source (origin (method url-fetch) - (uri (string-append "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-" + (uri (string-append "http://downloads.xiph.org/releases/" + "cdparanoia/cdparanoia-III-" version ".src.tgz")) (sha256 (base32 @@ -231,6 +234,25 @@ depend on the file system of the medium. The maximum error correction capacity is user-selectable.") (license gpl2+))) +(define-public libcue + (package + (name "libcue") + (version "1.4.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libcue/libcue-" + version ".tar.bz2")) + (sha256 + (base32 + "17kjd7rjz1bvfn44n3n2bjb7a1ywd0yc0g4sqp5ihf9b5bn7cwlb")))) + (build-system gnu-build-system) + (home-page "http://libcue.sourceforge.net/") + (synopsis "C library to parse cue sheets") + (description "Libcue is a C library to parse so-called @dfn{cue sheets} +which contain meta-data for CD/DVD tracks. It provides an API to manipulate +the data.") + (license gpl2+))) + (define-public cd-discid (package (name "cd-discid") diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 128f0370dd..2efce6fd87 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -36,15 +36,15 @@ (define-public cmake (package (name "cmake") - (version "3.3.1") + (version "3.3.2") (source (origin (method url-fetch) - (uri (string-append - "http://www.cmake.org/files/v" - (version-major+minor version) - "/cmake-" version ".tar.gz")) + (uri (string-append "https://www.cmake.org/files/v" + (version-major+minor version) + "/cmake-" version ".tar.gz")) (sha256 - (base32 "1mp32dqywk4dfw7zmpgp31axszv7h74yk69g273z21q7d8n04rfd")) + (base32 + "08pwy9ip9cgwgynhn5vrjw8drw29gijy1rmziq22n65zds6ifnp7")) (patches (list (search-patch "cmake-fix-tests.patch"))))) (build-system gnu-build-system) (arguments @@ -66,7 +66,8 @@ "Source/cmExecProgramCommand.cxx" "Utilities/cmbzip2/Makefile-libbz2_so" "Utilities/Release/release_cmake.cmake" - "Utilities/cmlibarchive/libarchive/archive_write_set_format_shar.c" + "Utilities/cmlibarchive/libarchive/\ +archive_write_set_format_shar.c" "Tests/CMakeLists.txt" "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") (("/bin/sh") (which "sh")))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index b561d4cf6d..41d9b0d8d7 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Leo Famulari ;;; Copyright © 2015 Jeff Mickey +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ (define-module (gnu packages compression) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -225,14 +227,46 @@ decompression.") "See LICENSE in the distribution.")) (home-page "http://www.bzip.org/")))) +(define-public pbzip2 + (package + (name "pbzip2") + (version "1.1.12") + (source (origin + (method url-fetch) + (uri (string-append "https://launchpad.net/pbzip2/" + (version-major+minor version) "/" version + "/+download/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1vk6065dv3a47p86vmp8hv3n1ygd9hraz0gq89gvzlx7lmcb6fsp")))) + (build-system gnu-build-system) + (inputs + `(("bzip2", bzip2))) + (arguments + `(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (delete 'configure)) + #:make-flags (list (string-append "PREFIX=" %output)))) + (home-page "http://compression.ca/pbzip2/") + (synopsis "Parallel bzip2 implementation") + (description + "Pbzip2 is a parallel implementation of the bzip2 block-sorting file +compressor that uses pthreads and achieves near-linear speedup on SMP machines. +The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything +compressed with pbzip2 can be decompressed with bzip2).") + (license (license:non-copyleft "file://COPYING" + "See COPYING in the distribution.")))) + (define-public xz (package (name "xz") (version "5.2.2") (source (origin (method url-fetch) - (uri (string-append "http://tukaani.org/xz/xz-" version - ".tar.gz")) + (uri (list (string-append "http://tukaani.org/xz/xz-" version + ".tar.gz") + (string-append "http://multiprecision.org/guix/xz-" + version ".tar.gz"))) (sha256 (base32 "18h2k4jndhzjs8ln3a54qdnfv59y6spxiwh9gpaqniph6iflvpvk")))) diff --git a/gnu/packages/conkeror.scm b/gnu/packages/conkeror.scm index 51bb1a260a..cfeb22e8c3 100644 --- a/gnu/packages/conkeror.scm +++ b/gnu/packages/conkeror.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Cyrill Schenkel -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,46 +28,42 @@ (define-public conkeror (package (name "conkeror") - (version "1.0pre1") + (version "1.0pre1.20150730") (source (origin (method url-fetch) (uri (string-append "http://repo.or.cz/w/conkeror.git/snapshot/" - "8a26fff5896a3360549e2adfbf06b1d57e909266" - ".tar.gz")) ; tag: debian-1.0--pre-1+git140616-1 + "a1f7e879b129df5cf14ea4ce80a9c1407380ed58" + ".tar.gz")) ; tag: debian-1.0--pre-1+git150730-1 (sha256 (base32 - "1cgjzi7g3g22zcx6bpfnid4i12sb45w6icmxdzjn8d3c0m8qsyp1")))) + "1q45hc30733gz3ca2ixvw0rzzcbi7rlay7gx7kvzjv17a030nyk0")))) (build-system gnu-build-system) (inputs `(("icecat" ,icecat))) (arguments `(#:tests? #f ;no tests - #:make-flags '("CC=gcc") + #:make-flags `("CC=gcc" + ,(string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases - (alist-delete - 'configure - (alist-replace - 'install - (lambda _ - (begin - (use-modules (guix build utils)) - (let* ((datadir (string-append %output "/share/conkeror")) - (bindir (string-append %output "/bin")) - (launcher (string-append bindir "/conkeror")) - (spawn (string-append bindir "/conkeror-spawn-helper"))) - (copy-recursively "." datadir) - (mkdir-p bindir) - (copy-file "conkeror-spawn-helper" spawn) - (call-with-output-file launcher - (lambda (p) - (format p "#!~a/bin/bash + (modify-phases %standard-phases + (delete 'configure) + (add-after + 'install 'install-app-launcher + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; This overwrites the installed launcher, which execs xulrunner, + ;; with one that execs 'icecat --app' + (let* ((out (assoc-ref outputs "out")) + (datadir (string-append out "/share/conkeror")) + (launcher (string-append out "/bin/conkeror"))) + (call-with-output-file launcher + (lambda (p) + (format p "#!~a/bin/bash exec ~a/bin/icecat --app ~a \"$@\"~%" - (assoc-ref %build-inputs "bash") ;implicit input - (assoc-ref %build-inputs "icecat") - (string-append datadir - "/application.ini")))) - (chmod launcher #o555)))) - %standard-phases)))) + (assoc-ref inputs "bash") ;implicit input + (assoc-ref inputs "icecat") + (string-append datadir + "/application.ini")))) + (chmod launcher #o555))))))) (synopsis "Keyboard focused web browser with Emacs look and feel") (description "Conkeror is a highly-programmable web browser based on Mozilla XULRunner which is the base of all Mozilla products including Firefox. @@ -80,7 +76,7 @@ services (Search, Gmail, Maps, Reader, etc.), Del.icio.us, Reddit, Last.fm and YouTube. For easier editing of form fields, it can spawn external editors.") (home-page "http://conkeror.org") ;; Conkeror is triple licensed. - (license (list license:gpl2 - license:lgpl2.1 - ;; MPL 1.1 -- this license is not GPL compatible - )))) + (license (list + ;; MPL 1.1 -- this license is not GPL compatible + license:gpl2 + license:lgpl2.1)))) diff --git a/gnu/packages/cook.scm b/gnu/packages/cook.scm index 4eb3096153..d0dd80dc40 100644 --- a/gnu/packages/cook.scm +++ b/gnu/packages/cook.scm @@ -35,17 +35,17 @@ (method url-fetch) (uri (string-append "http://miller.emu.id.au/pmiller/software/cook/cook-" version - ".tar.gz")) + ".tar.gz")) (sha256 (base32 "104saqnqql1l7zr2pm3f718fdky3ds8j07c6xvwrs1rfkhrw58yw")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; There are some nasty racy rules in the Makefile. - #:phases + #:phases (alist-cons-before 'configure 'pre-conf - (lambda _ + (lambda _ (substitute* (append '("common/env.c") (find-files "test" "\\.sh")) (("/bin/sh") (which "sh"))) @@ -57,7 +57,7 @@ ;; which plays havoc with this test, for which correct timestamps ;; are very important. Adding the U flag undoes the effect of ;; --enable-deterministic-archives and allows this test to work - ;; again. + ;; again. (substitute* "test/00/t0077a.sh" (("ar qc") "ar qcU")) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index d3dbd28aac..d4742ca0e4 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index f7c9f083b7..16140f0f9c 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Andreas Enge +;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2015 Tomáš Čech ;;; Copyright © 2015 Ludovic Courtès @@ -39,14 +39,14 @@ (define-public curl (package (name "curl") - (version "7.44.0") + (version "7.45.0") (source (origin (method url-fetch) (uri (string-append "http://curl.haxx.se/download/curl-" version ".tar.lzma")) (sha256 (base32 - "0gjnaav9vmwwwza451na1643br7i0kxgd4002pwqh3xk5ywvdap7")))) + "0bamqik0mi2rmai016iakwrwmsz0s5xad1ghkbwsd3zkv08rgkcn")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.2 MiB of man3 pages @@ -95,8 +95,8 @@ ;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)] ;; ;; 1510: output (log/stderr1510) FAILED: - ;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000 - ;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000 + ;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000 + ;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000 ;; @@ -1,5 +1,5 @@ ;; * Connection #0 to host server1.example.com left intact[LF] ;; * Connection #1 to host server2.example.com left intact[LF] diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm index cd0f1bb401..8f3e1a1b70 100644 --- a/gnu/packages/cyrus-sasl.scm +++ b/gnu/packages/cyrus-sasl.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Andreas Enge ;;; ;;; This file is part of GNU Guix. @@ -19,7 +19,7 @@ (define-module (gnu packages cyrus-sasl) #:use-module (gnu packages) - #:use-module (gnu packages gdbm) + #:use-module (gnu packages databases) #:use-module (gnu packages mit-krb5) #:use-module (gnu packages tls) #:use-module ((guix licenses) #:prefix license:) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 7e669d633e..f45e3a5f1b 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -55,6 +55,28 @@ #:use-module (srfi srfi-26) #:use-module (ice-9 match)) +(define-public gdbm + (package + (name "gdbm") + (version "1.11") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gdbm/gdbm-" + version ".tar.gz")) + (sha256 + (base32 + "1hz3jgh3pd4qzp6jy0l8pd8x01g9abw7csnrlnj1a2sxy122z4cd")))) + (arguments `(#:configure-flags '("--enable-libgdbm-compat"))) + (build-system gnu-build-system) + (home-page "http://www.gnu.org/software/gdbm/") + (synopsis + "Hash library of database functions compatible with traditional dbm") + (description + "GDBM is a library for manipulating hashed databases. It is used to +store key/value pairs in a file in a manner similar to the Unix dbm library +and provides interfaces to the traditional file format.") + (license gpl3+))) + (define-public bdb (package (name "bdb") @@ -602,6 +624,30 @@ columns, primary keys, unique constraints and relationships.") (description "") (license (package-license perl)))) +(define-public perl-dbd-mysql + (package + (name "perl-dbd-mysql") + (version "4.033") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/C/CA/CAPTTOFU/" + "DBD-mysql-" version ".tar.gz")) + (sha256 + (base32 + "0769xakykps0cx368g4vaips4w3bjk383rianiavq7sq6g6bp66c")))) + (build-system perl-build-system) + ;; Tests require running MySQL server + (arguments `(#:tests? #f)) + (propagated-inputs + `(("perl-dbi" ,perl-dbi) + ("mysql" ,mysql))) + (home-page "http://search.cpan.org/dist/DBD-mysql") + (synopsis "DBI MySQL interface") + (description "This package provides a MySQL driver for the Perl5 +@dfn{Database Interface} (DBI).") + (license (package-license perl)))) + (define-public perl-dbd-sqlite (package (name "perl-dbd-sqlite") diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm new file mode 100644 index 0000000000..361490000a --- /dev/null +++ b/gnu/packages/datastructures.scm @@ -0,0 +1,49 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages datastructures) + #:use-module (gnu packages) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu)) + +(define-public sparsehash + (package + (name "sparsehash") + (version "2.0.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/sparsehash/sparsehash/" + "archive/sparsehash-" version ".tar.gz")) + (sha256 + (base32 + "133szz0ldwch0kd91l0sa57qsnl020njn622szd9cxrjqyjqds85")))) + (build-system gnu-build-system) + (synopsis "Memory-efficient hashtable implementations") + (description + "This library contains several hash-map implementations, similar in API +to SGI's @code{hash_map} class, but with different performance +characteristics. @code{sparse_hash_map} uses very little space overhead, 1-2 +bits per entry. @code{dense_hash_map} is very fast, particulary on lookup. +@code{sparse_hash_set} and @code{dense_hash_set} are the set versions of these +routines. All these implementation use a hashtable with internal quadratic +probing. This method is space-efficient -- there is no pointer overhead -- +and time-efficient for good hash functions.") + (home-page "https://github.com/sparsehash/sparsehash") + (license license:bsd-3))) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index b098832681..dc94f97657 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -141,6 +141,24 @@ intended for use by people who discover and report bugs in compilers and other tools that process C/C++ code.") (license ncsa))) +(define qemu-2.3.0 + (package + (inherit qemu-minimal) + (version "2.3.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://wiki.qemu-project.org/download/qemu-" + version ".tar.bz2")) + (sha256 + (base32 + "120m53c3p28qxmfzllicjzr8syjv6v4d9rsyrgkp7gnmcgvvgfmn")))) + (arguments + ;; XXX: Disable tests because of GTester's rejection of duplicate test + ;; names, which wasn't addressed in this version of QEMU. + `(#:tests? #f + ,@(package-arguments qemu-minimal))))) + (define-public american-fuzzy-lop (let ((machine (match (or (%current-target-system) (%current-system)) @@ -164,11 +182,11 @@ tools that process C/C++ code.") (inputs `(("custom-qemu" ;; The afl-qemu tool builds qemu 2.3.0 with a few patches applied. - ,(package (inherit qemu-headless) + ,(package (inherit qemu-2.3.0) (name "afl-qemu") (inputs `(("afl-src" ,source) - ,@(package-inputs qemu-headless))) + ,@(package-inputs qemu-2.3.0))) ;; afl only supports using a single afl-qemu-trace executable, so ;; we only build qemu for the native target. (arguments @@ -176,7 +194,7 @@ tools that process C/C++ code.") (list (string-append "--target-list=" ,machine "-linux-user")) #:modules ((srfi srfi-1) ,@%gnu-build-system-modules) - ,@(substitute-keyword-arguments (package-arguments qemu-headless) + ,@(substitute-keyword-arguments (package-arguments qemu-2.3.0) ((#:phases qemu-phases) `(modify-phases ,qemu-phases (add-after diff --git a/gnu/packages/dico.scm b/gnu/packages/dico.scm new file mode 100644 index 0000000000..317eeeebea --- /dev/null +++ b/gnu/packages/dico.scm @@ -0,0 +1,80 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; 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 . + +(define-module (gnu packages dico) + #:use-module (guix packages) + #:use-module ((guix licenses) #:select (gpl3+)) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages readline) + #:use-module (gnu packages m4) + #:use-module (gnu packages guile) + #:use-module (gnu packages python) + #:use-module (gnu packages pcre) + #:use-module (gnu packages gsasl) + #:use-module (gnu packages autotools) + #:use-module (gnu packages compression) + #:use-module (gnu packages wordnet)) + +(define-public dico + (package + (name "dico") + (version "2.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/dico/dico-" + version ".tar.xz")) + (sha256 + (base32 + "04pjks075x20d19l623mj50bw64g8i41s63z4kzzqcbg9qg96x64")) + (patches (map search-patch + '("cpio-gets-undeclared.patch" + "dico-libtool-deterministic.patch"))))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags (list (string-append "--with-guile-site-dir=" %output + "/share/guile/site/2.0")) + #:make-flags '("V=1") + #:phases (modify-phases %standard-phases + (add-before 'check 'silence-guile + (lambda _ + ;; Guile is too talkative, which disturbs the test + ;; infrastructure. Gag it. + (setenv "GUILE_AUTO_COMPILE" "0") + (setenv "GUILE_WARN_DEPRECATED" "no") + #t))))) + (inputs + `(("m4" ,m4) ;used at run time + ("pcre" ,pcre) + ;; ("python" ,python-2) + ("guile" ,guile-2.0) + ("gsasl" ,gsasl) + ("readline" ,readline-6.2) + ("zlib" ,zlib) + ;; ("wordnet" ,wordnet) ;FIXME: link failure + ("libltdl" ,libltdl))) + (home-page "http://www.gnu.org/software/dico/") + (synopsis "Implementation of DICT server (RFC 2229)") + (description + "GNU Dico implements a flexible dictionary server and client according to +RFC 2229 (DICT Server). It is able to access any database available, +regardless of format, thanks to its modular structure. New modules may be +written in C, Guile or Python. Dico also includes a command-line client, +which may be used to query remote dictionary databases.") + (license gpl3+))) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 98b13ae110..9d3e2f9e32 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Nikita Karetnikov +;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -22,9 +23,10 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (gnu packages check) #:use-module (gnu packages gettext) #:use-module (gnu packages linux) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages guile) #:use-module ((gnu packages compression) @@ -33,39 +35,35 @@ (define-public parted (package (name "parted") - (version "3.1") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/parted/parted-" - version ".tar.xz")) - (sha256 - (base32 - "05fa4m1bky9d13hqv91jlnngzlyn7y4rnnyq6d86w0dg3vww372y")))) + (version "3.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/parted/parted-" + version ".tar.xz")) + (sha256 + (base32 + "1r3qpg3bhz37mgvp9chsaa3k0csby3vayfvz8ggsqz194af5i2w5")))) (build-system gnu-build-system) - (arguments `(#:configure-flags '("--disable-device-mapper") - #:phases (alist-cons-before - 'configure 'fix-mkswap - (lambda* (#:key inputs #:allow-other-keys) - (let ((util-linux (assoc-ref inputs - "util-linux"))) - (substitute* - "tests/t9050-partition-table-types.sh" - (("mkswap") - (string-append util-linux "/sbin/mkswap"))))) - %standard-phases))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after + 'unpack 'fix-locales-and-python + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "tests/t0251-gpt-unicode.sh" + (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales + (substitute* "tests/msdos-overlap" + (("/usr/bin/python") (which "python")))))))) (inputs - ;; XXX: add 'lvm2'. - `(("check" ,check) - - ;; With Readline 6.3, parted/ui.c fails to build because it uses the - ;; now undefined 'CPPFunction' type. - ("readline" ,readline-6.2) - + `(("lvm2" ,lvm2) + ("readline" ,readline) ("util-linux" ,util-linux))) (native-inputs - `(("gettext" ,gnu-gettext))) - (home-page "http://www.gnu.org/software/parted/") + `(("gettext" ,gnu-gettext) + ;; For the tests. + ("perl" ,perl) + ("python" ,python-2))) + (home-page "https://www.gnu.org/software/parted/") (synopsis "Disk partition editor") (description "GNU Parted is a package for creating and manipulating disk partition @@ -124,7 +122,7 @@ to recover data more efficiently by only reading the necessary blocks.") (define-public dosfstools (package (name "dosfstools") - (version "3.0.27") + (version "3.0.28") (source (origin (method url-fetch) @@ -133,7 +131,7 @@ to recover data more efficiently by only reading the necessary blocks.") name "-" version ".tar.xz")) (sha256 (base32 - "1a2qs5g2zqbk1gzaaf4v3fw3yny6jgbzddpgcamkp3fjifn8wxl5")))) + "1qkya6lald91c8nsf29jwnk0k5v42wlj24gacfdp3wpc8hq935gf")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "PREFIX=" %output) diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index 3ec0377f57..9f5fbf1d96 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -134,8 +134,9 @@ by no means limited to these applications.) This package provides XML DTDs.") (string-append xsl "/" name-version)) (substitute* (string-append xsl "/" name-version "/catalog.xml") - (("rewritePrefix=\"./") - (string-append "rewritePrefix=\"file://" xsl "/" name-version "/"))))) + (("rewritePrefix=\"./") + (string-append "rewritePrefix=\"file://" xsl "/" + name-version "/"))))) #:modules ((guix build utils)))) (native-inputs `(("bzip2" ,bzip2) ("tar" ,tar))) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 9751125113..947c7e282c 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -227,13 +227,14 @@ metadata.") (define-public paredit (package (name "paredit") - (version "23") + (version "24") (source (origin - (method url-fetch) - (uri (string-append "http://mumble.net/~campbell/emacs/paredit-" - version ".el")) - (sha256 - (base32 "1np882jzvxckljx3cjz4absyzmc5hw65cs21sjmbic82163m9lf8")))) + (method url-fetch) + (uri (string-append "http://mumble.net/~campbell/emacs/paredit-" + version ".el")) + (sha256 + (base32 + "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka")))) (build-system trivial-build-system) (inputs `(("emacs" ,emacs-no-x))) (arguments @@ -317,7 +318,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (define-public magit (package (name "magit") - (version "2.2.2") + (version "2.3.1") (source (origin (method url-fetch) (uri (string-append @@ -325,7 +326,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") version "/" name "-" version ".tar.gz")) (sha256 (base32 - "1imkj4prprnivhbpdn1mdpiryxkckzy5hbnqaahv7gixwac1irh8")))) + "1wnx034adkwhbsydd10il2099hpzz351kp39sri8s1yd43f795gf")))) (build-system gnu-build-system) (native-inputs `(("texinfo" ,texinfo) ("emacs" ,emacs-no-x))) @@ -373,7 +374,7 @@ operations.") (define-public magit-svn (package (name "magit-svn") - (version "2.1.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (string-append @@ -382,7 +383,7 @@ operations.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "09sz93g7x7g9q75jsw8bdh7yr4jr1igfb4fpg5i302a7l2ahxfr8")))) + "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz")))) (build-system trivial-build-system) (native-inputs `(("emacs" ,emacs-no-x) ("tar" ,tar) @@ -574,13 +575,14 @@ provides an optional IDE-like error list.") (define-public emacs-w3m (package (name "emacs-w3m") - (version "1.4.483+0.20120614") + (version "1.4.538+0.20141022") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_" version ".orig.tar.gz")) (sha256 - (base32 "0ms181gjavnfk79hhv5xl9llik4c6kj0w3c04kgyif8lcy2sxljx")))) + (base32 + "0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf))) (inputs `(("w3m" ,w3m) @@ -597,43 +599,46 @@ provides an optional IDE-like error list.") (list (string-append "--with-lispdir=" out "/share/emacs/site-lisp") (string-append "--with-icondir=" - out "/share/images/emacs-w3m"))) + out "/share/images/emacs-w3m") + ;; Leave .el files uncompressed, otherwise GC can't + ;; identify run-time dependencies. See + ;; + "--without-compress-install")) #:tests? #f ; no check target #:phases - (alist-cons-after - 'unpack 'autoconf - (lambda _ - (zero? (system* "autoconf"))) - (alist-cons-before - 'build 'patch-exec-paths - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (w3m (assoc-ref inputs "w3m")) - (imagemagick (assoc-ref inputs "imagemagick")) - (coreutils (assoc-ref inputs "coreutils"))) - (emacs-substitute-variables "w3m.el" - ("w3m-command" (string-append w3m "/bin/w3m")) - ("w3m-touch-command" (string-append coreutils "/bin/touch")) - ("w3m-image-viewer" (string-append imagemagick "/bin/display")) - ("w3m-icon-directory" (string-append out - "/share/images/emacs-w3m"))) - (emacs-substitute-variables "w3m-image.el" - ("w3m-imagick-convert-program" (string-append imagemagick - "/bin/convert")) - ("w3m-imagick-identify-program" (string-append imagemagick - "/bin/identify"))) - #t)) - (alist-replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (and (zero? (system* "make" "install" "install-icons")) - (with-directory-excursion - (string-append (assoc-ref outputs "out") - "/share/emacs/site-lisp") - (for-each delete-file '("ChangeLog" "ChangeLog.1")) - (symlink "w3m-load.el" "w3m-autoloads.el") - #t))) - %standard-phases))))) + (modify-phases %standard-phases + (add-after 'unpack 'autoconf + (lambda _ + (zero? (system* "autoconf")))) + (add-before 'build 'patch-exec-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (w3m (assoc-ref inputs "w3m")) + (imagemagick (assoc-ref inputs "imagemagick")) + (coreutils (assoc-ref inputs "coreutils"))) + (emacs-substitute-variables "w3m.el" + ("w3m-command" (string-append w3m "/bin/w3m")) + ("w3m-touch-command" + (string-append coreutils "/bin/touch")) + ("w3m-image-viewer" + (string-append imagemagick "/bin/display")) + ("w3m-icon-directory" + (string-append out "/share/images/emacs-w3m"))) + (emacs-substitute-variables "w3m-image.el" + ("w3m-imagick-convert-program" + (string-append imagemagick "/bin/convert")) + ("w3m-imagick-identify-program" + (string-append imagemagick "/bin/identify"))) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (and (zero? (system* "make" "install" "install-icons")) + (with-directory-excursion + (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp") + (for-each delete-file '("ChangeLog" "ChangeLog.1")) + (symlink "w3m-load.el" "w3m-autoloads.el") + #t))))))) (home-page "http://emacs-w3m.namazu.org/") (synopsis "Simple Web browser for Emacs based on w3m") (description @@ -912,7 +917,7 @@ single buffer.") (define-public emacs-pdf-tools (package (name "emacs-pdf-tools") - (version "0.60") + (version "0.70") (source (origin (method url-fetch) (uri (string-append @@ -921,7 +926,7 @@ single buffer.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1y8k5n2jbyaxby0j6f4m9xbm0ddpmbkrfj6rp6ll5sb97lcg3vrx")))) + "1m0api6wiawswyk46bdsyk6r5rg3b86a4paar6nassm6x6c6vr77")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; there are no tests @@ -981,7 +986,7 @@ and stored in memory.") (define-public emacs-dash (package (name "emacs-dash") - (version "2.11.0") + (version "2.12.1") (source (origin (method url-fetch) (uri (string-append @@ -990,7 +995,7 @@ and stored in memory.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1piwcwilkxcbjxx832mhb7q3pz1fgwp203r581bpqcw6kd5x726q")))) + "082jl7mp4x063bpj5ad2pc5125k0d6p7rb89gcj7ny3lma9h2ij1")))) (build-system emacs-build-system) (arguments `(#:phases @@ -1024,7 +1029,7 @@ and stored in memory.") (lambda _ (zero? (system* "./run-tests.sh"))))))) (home-page "https://github.com/magnars/s.el") - (synopsis "Emacs string manipulation library.") + (synopsis "Emacs string manipulation library") (description "This package provides an Emacs library for manipulating strings.") (license license:gpl3+))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 1c378f63a7..554399b049 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -140,7 +140,7 @@ plans and designs.") (home-page "http://geda-project.org/") (synopsis "Schematic capture, netlister, symbols, symbol checker, and utils") (description - "gaf stands for “gschem and friends”. It is a subset of the entire tool + "Gaf stands for “gschem and friends”. It is a subset of the entire tool suite grouped together under the gEDA name. gEDA/gaf is a collection of tools which currently includes: gschem, a schematic capture program; gnetlist, a netlist generation program; gsymcheck, a syntax checker for schematic symbols; diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 0a91995a0a..6224a2a527 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Tomáš Čech ;;; Copyright © 2015 Daniel Pimentel +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,7 +52,7 @@ (define-public efl (package (name "efl") - (version "1.15.2") + (version "1.16.0") (source (origin (method url-fetch) (uri (string-append @@ -59,7 +60,7 @@ version ".tar.xz")) (sha256 (base32 - "1962wqx7gdnpzvnkbighyn4hj5vw8l4c1d7xl5zilqjlyhcqywyx")))) + "08w3hrjyz1yjqjq77px86fljxxi5xz5yfy79qwssypafjvcvpzky")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -134,7 +135,7 @@ removable devices or support for multimedia.") (define-public elementary (package (name "elementary") - (version "1.15.2") + (version "1.16.0") (source (origin (method url-fetch) (uri @@ -142,7 +143,7 @@ removable devices or support for multimedia.") "elementary/elementary-" version ".tar.xz")) (sha256 (base32 - "0gqg98bglnl2jggdzxzrh9r7bv32i4sahspms0bihq8b45rk0g2j")))) + "1546b7pdpw6nx1hjxy674zr8dgpzwl7lq3hvnv4axkpd4zwkqgs8")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -159,7 +160,7 @@ full capabilities of EFL.") (define-public evas-generic-loaders (package (name "evas-generic-loaders") - (version "1.15.0") + (version "1.16.0") (source (origin (method url-fetch) (uri @@ -169,7 +170,7 @@ full capabilities of EFL.") version ".tar.xz")) (sha256 (base32 - "0zzx06j20x580xqnnsxp7gb7rv279zcgvdxfbhs905af9m6rwlqy")))) + "1il3i3rii6ddpj7cw2mdqnb0q2wmhwnvs6qi9janna1n5hhrqyfm")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -191,7 +192,7 @@ files in Evas (EFL canvas library).") (define-public emotion-generic-players (package (name "emotion-generic-players") - (version "1.15.0") + (version "1.16.0") (source (origin (method url-fetch) (uri @@ -200,7 +201,7 @@ files in Evas (EFL canvas library).") "-" version ".tar.xz")) (sha256 (base32 - "0pszwmcygxnv1sfx0m79md2jmi4sng8mdb1xcr6h2z5c8685wvcz")))) + "163ay26c6dx49m1am7vsxxn0gy877zhayxq0yxn9zkbq2srzvjym")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -270,16 +271,18 @@ Libraries with some extra bells and whistles.") (define-public enlightenment (package (name "enlightenment") - (version "0.19.12") + (version "0.20.0") (source (origin (method url-fetch) (uri (string-append "https://download.enlightenment.org/rel/apps/" name "/" name "-" version ".tar.xz")) (sha256 - (base32 - "098bdx9qmv1yqqwfydrzs7fvbnhsf3vaib9pmqsyg4ihgqrkrwjm")))) + (base32 + "0mwiim0nv640v3af7qxc5ajfk702qkl5c1cnqlhz6rqzr5yjapxv")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--enable-mount-eeze"))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 97f2975e51..271fb49dd7 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -38,6 +38,7 @@ (sha256 (base32 "16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23")) + (file-name (string-append name "-" version "-checkout")) (patches (list (search-patch "ath9k-htc-firmware-objcopy.patch"))))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/fish.scm b/gnu/packages/fish.scm index 94e418a8b1..6392efe308 100644 --- a/gnu/packages/fish.scm +++ b/gnu/packages/fish.scm @@ -20,6 +20,7 @@ #:use-module (guix licenses) #:use-module (gnu packages doxygen) #:use-module (gnu packages ncurses) + #:use-module (gnu packages python) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -45,7 +46,8 @@ (native-inputs `(("doxygen" ,doxygen))) (inputs - `(("ncurses" ,ncurses))) + `(("ncurses" ,ncurses) + ("python" ,python-wrapper))) ;for fish_config and manpage completions (arguments '(#:tests? #f ; no check target #:configure-flags '("--sysconfdir=/etc"))) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 4ce8addceb..cfdcac8f7f 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -390,17 +390,17 @@ for long (8 and more hours per day) work with computers.") (define-public font-adobe-source-han-sans (package (name "font-adobe-source-han-sans") - (version "1.001R") + (version "1.004") (source (origin (method url-fetch) (uri (string-append "https://github.com/adobe-fonts/source-han-sans/archive/" - version ".tar.gz")) - (file-name (string-append "source-han-sans-" version ".tar.gz")) + version "R.tar.gz")) + (file-name (string-append "source-han-sans-" version "R.tar.gz")) (sha256 (base32 - "0cwz3d8jancl0a7vbjxhnh1vgwsjba62lahfjya9yrjkp1ndxlap")))) - (outputs '("out" ; OpenType/CFF Collection (OTC), 119 MiB. + "1ssx0fw90sy6mj8fv8fv4dgzszpqwbmwpjnlx16g4pvaqzdmybbz")))) + (outputs '("out" ; OpenType/CFF Collection (OTC), 121 MiB. "cn" "jp" "kr" "tw")) ; Region-specific Subset OpenType/CFF. (build-system trivial-build-system) (arguments @@ -421,12 +421,13 @@ for long (8 and more hours per day) work with computers.") "/share/fonts/opentype"))))) (setenv "PATH" PATH) (system* tar "xvf" (assoc-ref %build-inputs "source")) - (chdir (string-append "source-han-sans-" ,version)) + (chdir (string-append "source-han-sans-" ,version "R")) (install-opentype-fonts "OTC" "out") (install-opentype-fonts "SubsetOTF/CN" "cn") (install-opentype-fonts "SubsetOTF/JP" "jp") (install-opentype-fonts "SubsetOTF/KR" "kr") - (install-opentype-fonts "SubsetOTF/TW" "tw"))))) + (install-opentype-fonts "SubsetOTF/TW" "tw") + (for-each delete-file (find-files %output "\\.zip$")))))) (native-inputs `(("gzip" ,gzip) ("tar" ,tar))) @@ -439,7 +440,7 @@ And in several OpenType/CFF-based deployment configurations to accommodate various system requirements or limitations. As the name suggests, Pan-CJK fonts are intended to support the characters necessary to render or display text in Simplified Chinese, Traditional Chinese, Japanese, and Korean.") - (license license:asl2.0))) + (license license:silofl1.1))) (define-public font-wqy-zenhei (package diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 3db8f9f11d..f31b905156 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -203,7 +203,7 @@ applications should be.") (define-public graphite2 (package (name "graphite2") - (version "1.3.1") + (version "1.3.3") (source (origin (method url-fetch) @@ -212,7 +212,7 @@ applications should be.") version ".tgz")) (sha256 (base32 - "0xvhmlyyxg2qmbwyl8k2f9w7mrbjyl59823pnjd8xmxpyl6976d5")))) + "1n22vvi4jl83m4sqhvd7v31bhyhyd8j6c3yjgh4zjfyrvid16jrg")))) (build-system cmake-build-system) (native-inputs `(("python" ,python-2) ; because of "import imap" in tests diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 0f836d3c01..3db7ff7835 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -157,7 +157,10 @@ the freedesktop.org XDG Base Directory specification.") (assoc-ref %build-inputs "libcap")) (string-append "--with-udevrulesdir=" (assoc-ref %outputs "out") - "/lib/udev/rules.d")) + "/lib/udev/rules.d") + ;; XXX: fail with: + ;; src/shared/clean-ipc.c:315: undefined reference to `mq_unlink' + "LDFLAGS=-lrt") #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent"))) (native-inputs `(("intltool" ,intltool) @@ -236,14 +239,14 @@ Python.") (define-public wayland (package (name "wayland") - (version "1.8.1") + (version "1.9.0") (source (origin (method url-fetch) (uri (string-append "http://wayland.freedesktop.org/releases/" name "-" version ".tar.xz")) (sha256 (base32 - "1j3gfzn8i0xhk3j34mwb2srrscjxfyi279jhyq80mz943j6r6z7i")))) + "1yhy62vkbq8j8c9zaa6yzvn75cd99kfa8n2zfdwl80x019r711ww")))) (build-system gnu-build-system) (native-inputs `(("doxygen" ,doxygen) @@ -340,12 +343,19 @@ Analysis and Reporting Technology) functionality.") `(("acl" ,acl) ("libatasmart" ,libatasmart) ("libgudev" ,libgudev) - ("polkit" ,polkit))) + ("polkit" ,polkit) + ("util-linux" ,util-linux))) + (outputs '("out" + "doc")) ;5 MiB of gtk-doc HTML (arguments `(#:tests? #f ; requiring system message dbus #:configure-flags (list "--disable-man" "--localstatedir=/var" + "--enable-fhs-media" ;mount devices in /media, not /run/media + (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/doc/udisks/html") (string-append "--with-udevdir=" %output "/lib/udev")) #:phases (modify-phases %standard-phases @@ -357,7 +367,18 @@ Analysis and Reporting Technology) functionality.") (("girdir = .*") "girdir = $(datadir)/gir-1.0\n") (("typelibsdir = .*") - "typelibsdir = $(libdir)/girepository-1.0\n"))))))) + "typelibsdir = $(libdir)/girepository-1.0\n")))) + (add-after 'install 'set-mount-file-name + (lambda* (#:key outputs inputs #:allow-other-keys) + ;; Tell 'udisksd' where to find the 'mount' command. + (let ((out (assoc-ref outputs "out")) + (utils (assoc-ref inputs "util-linux"))) + (wrap-program (string-append out "/libexec/udisks2/udisksd") + `("PATH" ":" prefix + (,(string-append utils "/bin") ;for 'mount' + "/run/current-system/profile/bin" + "/run/current-system/profile/sbin"))) + #t)))))) (home-page "http://www.freedesktop.org/wiki/Software/udisks/") (synopsis "Disk manager service") (description diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm index badecc60ba..6cbad6b1b6 100644 --- a/gnu/packages/freeipmi.scm +++ b/gnu/packages/freeipmi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,14 +28,14 @@ (define-public freeipmi (package (name "freeipmi") - (version "1.4.10") + (version "1.5.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/freeipmi/freeipmi-" version ".tar.gz")) (sha256 (base32 - "1l98l8g8lha85q1d288wr7dyx00x36smh9g5wza15n4wm35c9wqs")))) + "0lhjxlha4j5rx11d81y1rgp9j18rlpxsjc0flsmj6bm60awmm627")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) ("libgcrypt" ,libgcrypt))) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index fcebf2b548..1e3854aab1 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -48,7 +48,9 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages sdl) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages xiph)) + #:use-module (gnu packages xiph) + #:use-module (gnu packages lua) + #:use-module (gnu packages mp3)) (define-public bullet (package @@ -260,3 +262,35 @@ files can be accessed in the same way as you access files directly on a disk, and it makes it easy to ship a new archive that will override a previous archive on a per-file basis.") (license license:zlib))) + +(define-public love + (package + (name "love") + (version "0.9.2") + (source (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/rude/love/downloads/" + "love-" version "-linux-src.tar.gz")) + (sha256 + (base32 + "0wn1npr5gal5b1idh4a5fwc3f5c36lsbjd4r4d699rqlviid15d9")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("devil" ,devil) + ("freetype" ,freetype) + ("libmodplug" ,libmodplug) + ("libvorbis" ,libvorbis) + ("luajit" ,luajit) + ("mesa" ,mesa) + ("mpg123" ,mpg123) + ("openal" ,openal) + ("physfs" ,physfs) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (synopsis "2D game framework for Lua") + (description "LÖVE is a framework for making 2D games in the Lua +programming language.") + (home-page "https://love2d.org/") + (license license:zlib))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 3023794218..f7a7636a86 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1,17 +1,19 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 John Darrington -;;; Copyright © 2014 David Thompson +;;; Copyright © 2014, 2015 David Thompson ;;; Copyright © 2014, 2015 Eric Bavier ;;; Copyright © 2014 Cyrill Schenkel ;;; Copyright © 2014 Sylvain Beucler ;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Sou Bunnbu -;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe ;;; Copyright © 2015 Christopher Allan Webber ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Alex Kost +;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,7 +36,11 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix svn-download) #:use-module (gnu packages) + #:use-module (gnu packages algebra) + #:use-module (gnu packages autotools) + #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages admin) #:use-module (gnu packages audio) @@ -49,6 +55,7 @@ #:use-module (gnu packages guile) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libunwind) + #:use-module (gnu packages haskell) #:use-module (gnu packages mp3) #:use-module (gnu packages image) #:use-module (gnu packages ncurses) @@ -78,6 +85,7 @@ #:use-module (gnu packages fribidi) #:use-module (guix build-system trivial) #:use-module (guix build-system gnu) + #:use-module (guix build-system haskell) #:use-module (guix build-system cmake) #:use-module (guix build-system trivial)) @@ -151,8 +159,8 @@ scriptable with Guile.") (source (origin (method url-fetch) - (uri (string-append "http://abbaye-for-linux.googlecode.com/files/abbaye-for-linux-src-" - version ".tar.gz")) + (uri (string-append "http://abbaye-for-linux.googlecode.com/files/" + "abbaye-for-linux-src-" version ".tar.gz")) (sha256 (base32 "1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk")))) @@ -1048,6 +1056,48 @@ experience and advance levels, and are carried over from one scenario to the next campaign.") (license license:gpl2+))) +(define-public dosbox + (package + (name "dosbox") + (version "0.74.svn3947") + (source (origin + (method svn-fetch) + (uri (svn-reference + (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/") + (revision 3947))) + (file-name (string-append name "-" version "-checkout")) + ;; Use SVN head, since the last release (2010) is incompatible + ;; with GCC 4.8+ (see + ;; ). + (sha256 + (base32 + "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after + 'unpack 'autogen.sh + (lambda _ + (zero? (system* "sh" "autogen.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("sdl" ,sdl) + ("libpng" ,libpng) + ("zlib" ,zlib) + ("alsa-lib" ,alsa-lib) + ("glu" ,glu) + ("mesa" ,mesa))) + (home-page "http://www.dosbox.com") + (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound") + (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox +also emulates CPU:286/386 realmode/protected mode, Directory +FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a +SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with +older games.") + (license license:gpl2+))) + (define-public gamine (package (name "gamine") @@ -1094,10 +1144,43 @@ on the screen and keyboard to display letters.") ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3 (license license:gpl3))) +(define-public raincat + (package + (name "raincat") + (version "1.1.1.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/Raincat/Raincat-" + version + ".tar.gz")) + (sha256 + (base32 + "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8")))) + (build-system haskell-build-system) + (inputs + `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions) + ("ghc-mtl" ,ghc-mtl) + ("ghc-random" ,ghc-random) + ("ghc-glut" ,ghc-glut) + ("ghc-opengl" ,ghc-opengl) + ("ghc-sdl" ,ghc-sdl) + ("ghc-sdl-image" ,ghc-sdl-image) + ("ghc-sdl-mixer" ,ghc-sdl-mixer))) + (home-page "http://raincat.bysusanlin.com/") + (synopsis "Puzzle game with a cat in lead role") + (description "Project Raincat is a game developed by Carnegie Mellon +students through GCS during the Fall 2008 semester. Raincat features game +play inspired from classics Lemmings and The Incredible Machine. The project +proved to be an excellent learning experience for the programmers. Everything +is programmed in Haskell.") + (license license:bsd-3))) + (define-public manaplus (package (name "manaplus") - (version "1.5.9.26") + (version "1.5.12.5") (source (origin (method url-fetch) (uri (string-append @@ -1105,7 +1188,7 @@ on the screen and keyboard to display letters.") version "/manaplus-" version ".tar.xz")) (sha256 (base32 - "070ms1cv7q88284pqh66lfhacckgv7m9s8z9009k2laypibx7vs6")))) + "0kmd743q40v82221wj8b09n30lqiwl7096v3m7ki3ynsgszkm326")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -1132,3 +1215,641 @@ world}, @uref{http://evolonline.org, Evol Online} and ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA. ;; The rest is under GPL2+. (license (list license:gpl2+ license:zlib license:cc-by-sa4.0)))) + +(define-public mupen64plus-core + (package + (name "mupen64plus-core") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-core/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("freetype" ,freetype) + ("glu" ,glu) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "all" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + ;; As per the Makefile (in projects/unix/Makefile): + (supported-systems '("i686-linux" "x86_64-linux")) + (home-page "http://www.mupen64plus.org/") + (synopsis "Nintendo 64 emulator core library") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +core library.") + (license license:gpl2+))) + +(define-public mupen64plus-audio-sdl + (package + (name "mupen64plus-audio-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +SDL audio plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-input-sdl + (package + (name "mupen64plus-input-sdl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri")))) + (build-system gnu-build-system) + (native-inputs + `(("which" ,which))) + (inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +SDL input plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-hle + (package + (name "mupen64plus-rsp-hle") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +high-level emulation (HLE) RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-rsp-z64 + (package + (name "mupen64plus-rsp-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi")))) + (build-system gnu-build-system) + (inputs + `(("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Z64 RSP processor plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-arachnoid + (package + (name "mupen64plus-video-arachnoid") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Arachnoid video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64 + (package + (name "mupen64plus-video-glide64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix"))) + ;; XXX Should be unnecessary with the next release. + (add-before + 'build 'use-sdl2 + (lambda _ + (substitute* "Makefile" + (("SDL_CONFIG = (.*)sdl-config" all prefix) + (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Glide64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-glide64mk2 + (package + (name "mupen64plus-video-glide64mk2") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("boost" ,boost) + ("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Glide64MK2 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-rice + (package + (name "mupen64plus-video-rice") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-rice/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("libpng" ,libpng) + ("mesa" ,mesa) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Rice Video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Rice Video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-video-z64 + (package + (name "mupen64plus-video-z64") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-video-z64/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("glew" ,glew) + ("mupen64plus-core" ,mupen64plus-core) + ("sdl2" ,sdl2))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix"))) + ;; XXX Should be unnecessary with the next release. + (add-before + 'build 'use-sdl2 + (lambda _ + (substitute* "Makefile" + (("SDL_CONFIG = (.*)sdl-config" all prefix) + (string-append "SDL_CONFIG = " prefix "sdl2-config")))))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus Z64 video plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +Z64 video plugin.") + (license license:gpl2+))) + +(define-public mupen64plus-ui-console + (package + (name "mupen64plus-ui-console") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/mupen64plus/mupen64plus-ui-console/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2")) + (patches + (list (search-patch "mupen64plus-ui-console-notice.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("which" ,which))) + (inputs + `(("sdl2" ,sdl2))) + ;; Mupen64Plus supports a single data directory and a single plugin + ;; directory in its configuration, yet we need data and plugin files from + ;; a variety of packages. The best way to deal with this is to install + ;; all packages from which data and plugin files are needed into one's + ;; profile, and point the configuration there. Hence, propagate the most + ;; important packages here to save the user from the bother. The patch + ;; mupen64plus-ui-console-notice also gives users instructions on what + ;; they need to do in order to point the configuration to their profile. + (propagated-inputs + `(("mupen64plus-core" ,mupen64plus-core) + ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl) + ("mupen64plus-input-sdl" ,mupen64plus-input-sdl) + ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle) + ("mupen64plus-video-glide64" ,mupen64plus-video-glide64) + ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2) + ("mupen64plus-video-rice" ,mupen64plus-video-rice))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The mupen64plus build system has no configure phase. + (delete 'configure) + ;; Makefile is in a subdirectory. + (add-before + 'build 'cd-to-project-dir + (lambda _ + (chdir "projects/unix")))) + #:make-flags + (let ((out (assoc-ref %outputs "out")) + (m64p (assoc-ref %build-inputs "mupen64plus-core"))) + (list "all" + (string-append "PREFIX=" out) + (string-append "APIDIR=" m64p "/include/mupen64plus") + ;; Trailing slash matters here. + (string-append "COREDIR=" m64p "/lib/"))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://www.mupen64plus.org/") + (synopsis "Mupen64Plus SDL input plugin") + (description + "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator +which is capable of accurately playing many games. This package contains the +command line user interface. Installing this package is the easiest way +towards a working Mupen64Plus for casual users.") + (license license:gpl2+))) + +(define-public nestopia-ue + (package + (name "nestopia-ue") + (version "1.46.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/rdanbrook/nestopia/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "07h49xwvg61dx20rk5p4r3ax2ar5y0ppvm60cqwqljyi9rdfbh7p")) + (modules '((guix build utils))) + (snippet + '(begin + ;; We don't need libretro for the GNU/Linux build. + (delete-file-recursively "libretro") + ;; Use system zlib. + (delete-file-recursively "source/zlib") + (substitute* "source/core/NstZlib.cpp" + (("#include \"../zlib/zlib.h\"") "#include ")))))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ao" ,ao) + ("glu" ,glu) + ("gtk+" ,gtk+) + ("libarchive" ,libarchive) + ("mesa" ,mesa) + ("sdl2" ,sdl2) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; The Nestopia build system consists solely of a Makefile. + (delete 'configure) + ;; XXX Should be unnecessary with the next release. + (add-before + 'build 'patch-makefile + (lambda _ + (substitute* "Makefile" + (("@mkdir \\$@") "@mkdir -p $@") + (("CC =") "CC ?=") + (("CXX =") "CXX ?=") + (("PREFIX =") "PREFIX ?=") + (("^install:\n$") "install:\n\tmkdir -p $(BINDIR)\n")))) + (add-before + 'build 'remove-xdg-desktop-menu-call + (lambda _ + (substitute* "Makefile" + (("xdg-desktop-menu install .*") ""))))) + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out))) + ;; There are no tests. + #:tests? #f)) + (home-page "http://0ldsk00l.ca/nestopia/") + (synopsis "Nintendo Entertainment System (NES/Famicom) emulator") + (description + "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment +System (NES/Famicom) emulator Nestopia, with enhancements from members of the +emulation community. It provides highly accurate emulation.") + (license license:gpl2+))) + +(define-public emulation-station + (package + (name "emulation-station") + (version "2.0.1") + (source (origin + (method git-fetch) ; no tarball available + (uri (git-reference + (url "https://github.com/Aloshi/EmulationStation.git") + (commit "646bede"))) ; no version tag + (sha256 + (base32 + "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no tests + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("curl" ,curl) + ("eigin" ,eigen) + ("freeimage" ,freeimage) + ("freetype" ,freetype) + ("mesa" ,mesa) + ("sdl2" ,sdl2))) + (synopsis "Video game console emulator front-end") + (description "EmulationStation provides a graphical front-end to a large +number of video game console emulators. It features an interface that is +usable with any game controller that has at least 4 buttons, theming support, +and a game metadata scraper.") + (home-page "http://www.emulationstation.org") + (license license:expat))) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index d7ffc5c40f..178ea20420 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014 Ricardo Wurmus +;;; Copyright © 2014, 2015 Ricardo Wurmus ;;; Copyright © 2015 Andreas Enge ;;; ;;; This file is part of GNU Guix. @@ -27,6 +27,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages multiprecision) #:use-module (gnu packages texinfo) + #:use-module (gnu packages dejagnu) #:use-module (gnu packages doxygen) #:use-module (gnu packages xml) #:use-module (gnu packages docbook) @@ -436,6 +437,9 @@ using compilers other than GCC." (define-public gfortran (custom-gcc gcc "gfortran" '("fortran"))) +(define-public gfortran-5 + (custom-gcc gcc-5 "gfortran" '("fortran"))) + (define-public gccgo-4.8 (custom-gcc gcc-4.8 "gccgo" '("go") ;; Suppress the separate "lib" output, because otherwise the @@ -461,6 +465,9 @@ using compilers other than GCC." ("javac.in" ,javac.in) ("ecj-bootstrap" ,ecj-bootstrap) ,@(package-inputs gcc))) + (native-inputs + `(("dejagnu" ,dejagnu) + ,@(package-native-inputs gcc))) ;; Suppress the separate "lib" output, because otherwise the ;; "lib" and "out" outputs would refer to each other, creating ;; a cyclic dependency. @@ -472,7 +479,9 @@ using compilers other than GCC." (ice-9 regex) (srfi srfi-1) (srfi srfi-26)) - ,@(package-arguments gcc)) + #:test-target "check-target-libjava" + ,@(package-arguments gcc)) + ((#:tests? _) #t) ((#:configure-flags flags) `(let ((ecj (assoc-ref %build-inputs "ecj-bootstrap"))) `("--enable-java-home" diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index f17b398048..81d6a8950d 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,14 +37,14 @@ (define-public gdb (package (name "gdb") - (version "7.10") + (version "7.10.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.xz")) (sha256 (base32 - "1a08c9svaihqmz2mm44il1gwa810gmwkckns8b0y0v3qz52amgby")))) + "1mfnjcwnwm5cg4rc9pncs9v356a0bz6ymjyac56mbj6784yjzir5")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; FIXME "make check" fails on single-processor systems. diff --git a/gnu/packages/gdbm.scm b/gnu/packages/gdbm.scm deleted file mode 100644 index 62d02001c8..0000000000 --- a/gnu/packages/gdbm.scm +++ /dev/null @@ -1,46 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012 Ludovic Courtès -;;; -;;; 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 . - -(define-module (gnu packages gdbm) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu)) - -(define-public gdbm - (package - (name "gdbm") - (version "1.11") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gdbm/gdbm-" - version ".tar.gz")) - (sha256 - (base32 - "1hz3jgh3pd4qzp6jy0l8pd8x01g9abw7csnrlnj1a2sxy122z4cd")))) - (arguments `(#:configure-flags '("--enable-libgdbm-compat"))) - (build-system gnu-build-system) - (home-page "http://www.gnu.org/software/gdbm/") - (synopsis - "Hash library of database functions compatible with traditional dbm") - (description - "GDBM is a library for manipulating hashed databases. It is used to -store key/value pairs in a file in a manner similar to the Unix dbm library -and provides interfaces to the traditional file format.") - (license gpl3+))) diff --git a/gnu/packages/geeqie.scm b/gnu/packages/geeqie.scm index a192c4b009..9cc8f74255 100644 --- a/gnu/packages/geeqie.scm +++ b/gnu/packages/geeqie.scm @@ -53,7 +53,8 @@ and XMP metadata of images in various formats.") ;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the ;; 3-clause BSD license: . - ;; The core is GPLv2+: . + ;; The core is GPLv2+: + ;; . (license l:gpl2+))) (define-public geeqie diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 35c55dc2f9..ebf66d478e 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -68,7 +68,7 @@ provided as well as the framework to add new color models and data types.") (version "0.2.0") (source (origin (method url-fetch) - (uri (list (string-append "http://download.gimp.org/pub/gegl/" + (uri (list (string-append "http://download.gimp.org/pub/gegl/" (string-take version 3) "/" name "-" version ".tar.bz2"))) (sha256 diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index e8003f88a3..33312ba127 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -26,6 +26,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages autotools) @@ -48,14 +49,15 @@ (name "glu") (version "9.0.0") (source (origin - (method url-fetch) - (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-" - version ".tar.gz")) - (sha256 - (base32 "0r72yyhj09x3krn3kn629jqbwyq50ji8w5ri2pn6zwrk35m4g1s3")))) + (method url-fetch) + (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-" + version ".tar.gz")) + (sha256 + (base32 + "0r72yyhj09x3krn3kn629jqbwyq50ji8w5ri2pn6zwrk35m4g1s3")))) (build-system gnu-build-system) (propagated-inputs - `(("mesa" ,mesa))) ; according to glu.pc + `(("mesa" ,mesa))) ; according to glu.pc (home-page "http://www.opengl.org/archives/resources/faq/technical/glu.htm") (synopsis "Mesa OpenGL Utility library") (description @@ -74,21 +76,24 @@ as ASCII text.") (define-public freeglut (package (name "freeglut") - (version "2.8.1") + (version "3.0.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/project/freeglut/freeglut/" - version "/freeglut-" version ".tar.gz")) - (sha256 - (base32 "16lrxxxd9ps9l69y3zsw6iy0drwjsp6m26d1937xj71alqk6dr6x")))) - (build-system gnu-build-system) + (method url-fetch) + (uri (string-append + "mirror://sourceforge/project/freeglut/freeglut/" + version "/freeglut-" version ".tar.gz")) + (sha256 + (base32 + "18knkyczzwbmyg8hr4zh8a1i5ga01np2jzd1rwmsh7mh2n2vwhra")))) + (build-system cmake-build-system) + (arguments '(#:tests? #f)) ; no test target (inputs `(("mesa" ,mesa) - ("libx11" ,libx11) - ("libxi" ,libxi) - ("libxrandr" ,libxrandr) - ("libxxf86vm" ,libxxf86vm) - ("inputproto" ,inputproto) - ("xinput" ,xinput))) + ("libx11" ,libx11) + ("libxi" ,libxi) + ("libxrandr" ,libxrandr) + ("libxxf86vm" ,libxxf86vm) + ("inputproto" ,inputproto) + ("xinput" ,xinput))) (propagated-inputs ;; Headers from Mesa and GLU are needed. `(("glu" ,glu) @@ -114,17 +119,19 @@ the X-Consortium license.") (name "ftgl") (version "2.1.3-rc5") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/project/ftgl/FTGL%20Source/2.1.3~rc5/ftgl-" - version ".tar.gz")) - (sha256 - (base32 "0nsn4s6vnv5xcgxcw6q031amvh2zfj2smy1r5mbnjj2548hxcn2l")))) + (method url-fetch) + (uri (string-append + "mirror://sourceforge/project/ftgl/FTGL%20Source/2.1.3~rc5/" + "ftgl-" version ".tar.gz")) + (sha256 + (base32 + "0nsn4s6vnv5xcgxcw6q031amvh2zfj2smy1r5mbnjj2548hxcn2l")))) (build-system gnu-build-system) ;; The pkg-config file lists "freetype2" as Requires.private. (propagated-inputs `(("freetype" ,freetype))) (inputs `(("libx11" ,libx11) - ("mesa" ,mesa) - ("glu" ,glu))) + ("mesa" ,mesa) + ("glu" ,glu))) (home-page "http://ftgl.sourceforge.net") (synopsis "Font rendering library for OpenGL applications") (description @@ -185,7 +192,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "10.5.4") + (version "11.0.3") (source (origin (method url-fetch) @@ -193,7 +200,7 @@ also known as DXTn or DXTC) for Mesa.") version "/mesa-" version ".tar.xz")) (sha256 (base32 - "00v89jna7m6r2w1yrnx09isc97r2bd1hkn4jib445n1078zp47mm")))) + "1mikw0biw0wxq0fn3cp18bm6kjrkd66fy84774yc5b91rvp94adb")))) (build-system gnu-build-system) (propagated-inputs `(("glproto" ,glproto) @@ -257,12 +264,10 @@ also known as DXTn or DXTC) for Mesa.") "src/mesa/main/texcompress_s3tc.c") (("\"libtxc_dxtn\\.so") (string-append "\"" s2tc "/lib/libtxc_dxtn.so"))) - (substitute* "src/gallium/targets/egl-static/egl_st.c" - (("\"libglapi\"") - (string-append "\"" out "/lib/libglapi\""))) (substitute* "src/loader/loader.c" - (("dlopen\\(\"libudev\\.so") - (string-append "dlopen(\"" udev "/lib/libudev.so"))) + (("udev_handle = dlopen\\(name") + (string-append "udev_handle = dlopen(\"" + udev "/lib/libudev.so\""))) (substitute* "src/glx/dri_common.c" (("dlopen\\(\"libGL\\.so") (string-append "dlopen(\"" out "/lib/libGL.so"))) @@ -327,7 +332,12 @@ emulation to complete hardware acceleration for modern GPUs.") (native-inputs `(("pkg-config" ,pkg-config))) (arguments - '(#:phases + '(;; XXX: fails to build against latest mesa: + ;; eglut.c: error: 'EGL_SCREEN_BIT_MESA' undeclared + ;; + ;; + #:configure-flags '("--disable-egl") + #:phases (modify-phases %standard-phases (replace 'install diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 46a568631a..c5eea22845 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -57,36 +57,44 @@ (define dbus (package (name "dbus") - (version "1.8.16") + (version "1.10.0") (source (origin - (method url-fetch) - (uri - (string-append "http://dbus.freedesktop.org/releases/dbus/dbus-" - version ".tar.gz")) - (sha256 - (base32 - "01rba8mp8kqvmy6ibdmi806kjr3m14swnskqk02gyhykxxl54ybz")) - (patches (list (search-patch "dbus-localstatedir.patch"))))) + ;; TODO: Apply patch from DBUS/ACTIVATION below. + (method url-fetch) + (uri (string-append + "http://dbus.freedesktop.org/releases/dbus/dbus-" + version ".tar.gz")) + (sha256 + (base32 + "0jwj7wlrhq5y0fwfh8k2d9rgdpfax06lj8698g6iqbwrzd2rgyqx")))) (build-system gnu-build-system) (arguments - '(#:configure-flags (list ;; Install the system bus socket under /var. - "--localstatedir=/var" + '(#:configure-flags + (list + ;; Install the system bus socket under /var. + "--localstatedir=/var" - ;; XXX: Fix the following to allow system-wide - ;; config. - ;; "--sysconfdir=/etc" + ;; Install the session bus socket under /tmp. + "--with-session-socket-dir=/tmp" - "--with-session-socket-dir=/tmp") - #:phases (alist-cons-after - 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - ;; 'dbus-launch' bails out if the 'session.d' directory - ;; below is missing, so create it along with its companion. - (let ((out (assoc-ref outputs "out"))) - (mkdir (string-append out "/etc/dbus-1/session.d")) - (mkdir (string-append out "/etc/dbus-1/system.d")) - #t)) - %standard-phases))) + ;; Use /etc/dbus-1 for system-wide config. + ;; Look for configuration file under + ;; /etc/dbus-1. This is notably required by + ;; 'dbus-daemon-launch-helper', which looks for + ;; the 'system.conf' file in that place, + ;; regardless of what '--config-file' was + ;; passed to 'dbus-daemon' on the command line; + ;; see . + "--sysconfdir=/etc") + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda _ + ;; Don't try to create /var and /etc. + (system* "make" + "localstatedir=/tmp/dummy" + "sysconfdir=/tmp/dummy" + "install")))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -116,10 +124,21 @@ or through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories.") (license license:gpl2+))) ; or Academic Free License 2.1 +(define-public dbus/activation + ;; D-Bus with a patch to fix service activation. + ;; TODO: Merge with DBUS above. + (package + (inherit dbus) + (version (string-append (package-version dbus) ".a")) + (source (origin + (inherit (package-source dbus)) + (patches + (list (search-patch "dbus-helper-search-path.patch"))))))) + (define glib (package (name "glib") - (version "2.44.1") + (version "2.46.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" @@ -127,7 +146,7 @@ shared NFS home directories.") name "-" version ".tar.xz")) (sha256 (base32 - "01yabrfp64i11mrks3p1gcks99lw0zm7f5vhkc53sl4amyndw4c8")) + "1yzxr1ip3l0m9ydk5nq32piq70c9f17p5f0jyvlsghzbaawh67ss")) (patches (list (search-patch "glib-tests-homedir.patch") (search-patch "glib-tests-desktop.patch") (search-patch "glib-tests-prlimit.patch") @@ -169,7 +188,8 @@ shared NFS home directories.") ;; Disable a test that requires dbus. (substitute* "gio/tests/gdbus-serialization.c" - (("g_test_add_func \\(\"/gdbus/message-serialize/double-array\", test_double_array\\);" all) + (("g_test_add_func \ +\\(\"/gdbus/message-serialize/double-array\", test_double_array\\);" all) (string-append "/* " all " */")))) %standard-phases) @@ -207,14 +227,18 @@ dynamic loading, and an object system.") (define gobject-introspection (package (name "gobject-introspection") - (version "1.44.0") + (version "1.46.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" "gobject-introspection/" (version-major+minor version) "/gobject-introspection-" version ".tar.xz")) (sha256 - (base32 "1b972qg2yb51sdavfvb6kc19akwc15c1bwnbg81vadxamql2q33g")) + (base32 "0cs27r18fga44ypp8icy62fwx6nh70r1bvhi4lzfn4w85cybsn36")) + (modules '((guix build utils))) + (snippet + '(substitute* "tools/g-ir-tool-template.in" + (("#!/usr/bin/env @PYTHON@") "#!@PYTHON@"))) (patches (list (search-patch "gobject-introspection-cc.patch") (search-patch @@ -258,7 +282,7 @@ bindings to call into the C library.") (define intltool (package (name "intltool") - (version "0.50.2") + (version "0.51.0") (source (origin (method url-fetch) (uri (string-append "https://launchpad.net/intltool/trunk/" @@ -266,7 +290,7 @@ bindings to call into the C library.") version ".tar.gz")) (sha256 (base32 - "01j4yd7i84n9nk4ccs6yifg84pp68nr9by57jdbhj7dpdxf5rwk7")))) + "1karx4sb7bnm2j67q0q74hspkfn6lqprpy5r99vkn5bb36a4viv7")))) (build-system gnu-build-system) (inputs `(("file" ,file))) @@ -382,7 +406,7 @@ by GDBus included in Glib.") (define libsigc++ (package (name "libsigc++") - (version "2.4.1") + (version "2.6.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsigc++/" @@ -390,7 +414,7 @@ by GDBus included in Glib.") name "-" version ".tar.xz")) (sha256 (base32 - "1v0rvkzglzmf67y9nkcppwjwi68j1cy5yhldvcq7xrv8594l612l")))) + "06xyvxaaxh3nbpjg86gcq5zcc2qnpx354wcfrqlhbndkq5kj2vqq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("m4" ,m4))) @@ -409,7 +433,7 @@ has an ease of use unmatched by other C++ callback libraries.") (define glibmm (package (name "glibmm") - (version "2.44.0") + (version "2.46.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/glibmm/" @@ -417,7 +441,7 @@ has an ease of use unmatched by other C++ callback libraries.") "/glibmm-" version ".tar.xz")) (sha256 (base32 - "1a1fczy7hcpn24fglyn4i79f4yjc8s50is70q03mb294bm1c02hv")))) + "1an4v1yk06svlmcyp1psk2a3bsn29s1a4gdx0ai2w788q6bfaiwn")))) (build-system gnu-build-system) (arguments `(#:phases (alist-cons-before @@ -491,7 +515,7 @@ useful for C++.") (define-public python-pygobject (package (name "python-pygobject") - (version "3.16.1") + (version "3.18.0") (source (origin (method url-fetch) @@ -500,7 +524,7 @@ useful for C++.") "/pygobject-" version ".tar.xz")) (sha256 (base32 - "1hqyma73w0lnjcgx68kawhnq84aq92xlkdqphrlc2ppia38dm5kx")))) + "1jbd2m39vcjh5h3m33l0317ziq8dxfzi40r6hrfcs4rp5l8s2fqw")))) (build-system gnu-build-system) (native-inputs `(("which" ,which) @@ -551,18 +575,30 @@ useful for C++.") "telepathy-glib-" version ".tar.gz")) (sha256 (base32 - "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy")))) + "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy")) + (patches + (list + ;; Don't use the same test name for multiple tests. + ;; + (origin + (method url-fetch) + (uri "https://bugs.freedesktop.org/attachment.cgi?id=118608") + (file-name (string-append "telepathy-glib-duplicate-tests.patch")) + (sha256 + (base32 + "0z261fwrszxb28ccg3hsg9rizig4s84zvwmx6y31a4pyv7bvs5w3"))))))) (build-system gnu-build-system) (native-inputs `(("glib" ,glib "bin") ; uses glib-mkenums + ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config) - ("python" ,python-2))) - (inputs + ("python" ,python-2) + ("xsltproc" ,libxslt))) + (propagated-inputs + ;; There are all in the Requires.private field of telepathy-glib.pc. `(("dbus" ,dbus) ("dbus-glib" ,dbus-glib) - ("glib" ,glib) - ("gobject-introspection" ,gobject-introspection) - ("libxslt" ,libxslt))) + ("glib" ,glib))) (home-page "http://telepathy.freedesktop.org/wiki/") (synopsis "GLib Real-time communications framework over D-Bus") (description "Telepathy is a flexible, modular communications framework diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5440433402..c17dd19802 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2015 David Thompson +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,22 +36,27 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) #:use-module (gnu packages base) #:use-module (gnu packages bison) + #:use-module (gnu packages calendar) #:use-module (gnu packages cups) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages djvu) + #:use-module (gnu packages dns) #:use-module (gnu packages flex) #:use-module (gnu packages docbook) + #:use-module (gnu packages enchant) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) #:use-module (gnu packages gnuzilla) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) + #:use-module (gnu packages gperf) #:use-module (gnu packages guile) #:use-module (gnu packages pdf) #:use-module (gnu packages polkit) @@ -64,6 +70,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages m4) #:use-module (gnu packages image) + #:use-module (gnu packages networking) #:use-module (gnu packages perl) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) @@ -90,6 +97,7 @@ #:use-module (gnu packages video) #:use-module (gnu packages cdrom) #:use-module (gnu packages samba) + #:use-module (gnu packages readline) #:use-module (srfi srfi-1)) (define-public brasero @@ -104,7 +112,7 @@ (sha256 (base32 "09vi2hyhl0bz7imv3ky6h7x5m3d546n968wcghydwrkvwm9ylpls")))) - (build-system gnu-build-system) + (build-system glib-or-gtk-build-system) (arguments `(#:configure-flags (list (string-append "--with-girdir=" @@ -166,7 +174,7 @@ commonly used macros.") (define-public gnome-desktop (package (name "gnome-desktop") - (version "3.16.2") + (version "3.18.1") (source (origin (method url-fetch) @@ -175,18 +183,21 @@ commonly used macros.") name "-" version ".tar.xz")) (sha256 (base32 - "1l3v48i2w90i2cc056j4km9jb23axxgzpf5gl8xvv7gb8rmik3rs")))) + "0avpmyhzz5b3pyfpkp8iq5ym5r5w7zs3a396hqkdpdsiym0vrazc")))) (build-system gnu-build-system) (native-inputs - `(("itstool" ,itstool) + `(("gobject-introspection" ,gobject-introspection) + ("itstool" ,itstool) ("intltool" ,intltool) ("pkg-config" ,pkg-config) ("xmllint" ,libxml2))) + (propagated-inputs + ;; Required by gnome-desktop-3.0.pc. + `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+))) (inputs `(("gdk-pixbuf" ,gdk-pixbuf) ("glib" ,glib) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("gtk+" ,gtk+) ("iso-codes" ,iso-codes) ("libx11" ,libx11) ("libxext" ,libxext) @@ -240,7 +251,7 @@ and keep up to date translations of documentation.") (define-public gcr (package (name "gcr") - (version "3.16.0") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -248,7 +259,7 @@ and keep up to date translations of documentation.") name "-" version ".tar.xz")) (sha256 (base32 - "0xfhi0w358lvca1jjx24x2gm67mif33dsnmi9cv5i0f83ks8vzpc")))) + "006f6xbd3jppkf9avg83mpqdld5d0z6mr0sm81lql52mmyjnvlfl")))) (build-system gnu-build-system) (arguments '(#:tests? #f ;25 of 598 tests fail because /var/lib/dbus/machine-id does @@ -267,7 +278,9 @@ and keep up to date translations of documentation.") `(("python" ,python-2) ;for tests ("pkg-config" ,pkg-config) ("glib" ,glib "bin") - ("intltool" ,intltool))) + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("xsltproc" ,libxslt))) ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc (propagated-inputs `(("p11-kit" ,p11-kit) @@ -284,7 +297,7 @@ GNOME Desktop.") (define-public libgnome-keyring (package (name "libgnome-keyring") - (version "3.6.0") + (version "3.12.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -292,7 +305,7 @@ GNOME Desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "0c4qrjpmv1hqga3xv6wsq2z10x2n78qgw7q3k3s01y1pggxkgjkd")))) + "10vpjhgbjm7z2djy04qakd02qlzpd02xnbfjhk2aqwjzn3xpihf4")))) (build-system gnu-build-system) (inputs `(("libgcrypt" ,libgcrypt) @@ -382,7 +395,7 @@ forgotten when the session ends.") (define-public evince (package (name "evince") - (version "3.16.1") + (version "3.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -390,7 +403,7 @@ forgotten when the session ends.") name "-" version ".tar.xz")) (sha256 (base32 - "0c31pwfzfm5x036f018q31k33vl8xb96nbs0iiccsc1abc37bzq6")))) + "0cccmbvl1b6d2976642iyfr8g3r69zf3mzl2ln6vjvvdbrv26l3v")))) (build-system glib-or-gtk-build-system) (arguments `(#:configure-flags '("--disable-nautilus") @@ -446,7 +459,7 @@ on the GNOME Desktop with a single simple application.") (define-public gsettings-desktop-schemas (package (name "gsettings-desktop-schemas") - (version "3.16.0") + (version "3.18.0") (source (origin (method url-fetch) @@ -455,7 +468,7 @@ on the GNOME Desktop with a single simple application.") name "-" version ".tar.xz")) (sha256 (base32 - "02dp1hl38k16m9abydfca1n236mdazqdz0p3n92s7haf9mdqsf16")))) + "1szc857f46spdhrbnq9ci3kwfqg5vwpikbf0hprq6vd94rr369xs")))) (build-system gnu-build-system) (inputs `(("glib" ,glib))) @@ -669,7 +682,7 @@ some form of information without getting in the user's way.") (define-public libpeas (package (name "libpeas") - (version "1.12.1") + (version "1.16.0") (source (origin (method url-fetch) @@ -678,7 +691,7 @@ some form of information without getting in the user's way.") name "-" version ".tar.xz")) (sha256 (base32 - "1mjjjjwphc83bjznmbsm7x0jg7ql261nys6qnl7mi0nkr4qvw476")))) + "0kj5n5hz93xq7qdb2r7n86nibzwqjr88jxaih1fdbxv5rn7014xh")))) (build-system gnu-build-system) (inputs `(("atk" ,atk) @@ -732,14 +745,15 @@ API add-ons to make GTK+ widgets OpenGL-capable.") (define-public glade3 (package (name "glade") - (version "3.8.4") + (version "3.8.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "3-" version ".tar.xz")) (sha256 - (base32 "021xgq2l18w3rvwms9aq2idm0fk66vwb4f777gs0qh3ap5shgbn7")))) + (base32 + "0d97df5pfkrh5670a98r3d3w8zlbh1jcax6cvq6j6a20vzjgd9aq")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) @@ -821,7 +835,7 @@ dealing with different structured file formats.") (define-public librsvg (package (name "librsvg") - (version "2.40.10") + (version "2.40.11") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -829,7 +843,9 @@ dealing with different structured file formats.") name "-" version ".tar.xz")) (sha256 (base32 - "0y9lvnb9ij9mjg8cyp7xysi0c5ms5v4q1zrhx42b546f71s80p4n")))) + "00ifd9wjjjsw0ybk5j6qs4yyh66jj34hjmggy6dhrgfy8ksw06k1")) + (patches + (list (search-patch "librsvg-tests.patch"))))) (build-system gnu-build-system) (arguments `(#:phases @@ -919,23 +935,26 @@ functionality was designed to be as reusable and portable as possible.") (source (origin (method url-fetch) (uri (let ((upstream-name "ORBit2")) - (string-append "mirror://gnome/sources/" upstream-name "/" + (string-append "mirror://gnome/sources/" upstream-name "/" (version-major+minor version) "/" upstream-name "-" version ".tar.bz2"))) (sha256 - (base32 "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam")))) + (base32 + "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam")))) (build-system gnu-build-system) (arguments - ;; The programmer kindly gives us a hook to turn off deprecation warnings ... - `(#:configure-flags '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS") - ;; ... which they then completly ignore !! - #:phases - (alist-cons-before - 'configure 'ignore-deprecations - (lambda _ - (substitute* "linc2/src/Makefile.in" - (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))) - %standard-phases))) + `(#:configure-flags + ;; The programmer kindly gives us a hook to turn off deprecation + ;; warnings ... + '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS") + ;; ... which they then completly ignore !! + #:phases + (alist-cons-before + 'configure 'ignore-deprecations + (lambda _ + (substitute* "linc2/src/Makefile.in" + (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))) + %standard-phases))) (inputs `(("glib" ,glib) ("libidl" ,libidl))) (native-inputs @@ -944,9 +963,9 @@ functionality was designed to be as reusable and portable as possible.") (synopsis "CORBA 2.4-compliant Object Request Broker") (description "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb) featuring mature C, C++ and Python bindings.") - ;; Licence notice is unclear. The Web page simply say "GPL" without giving a version. - ;; SOME of the code files have licence notices for GPLv2+ - ;; The tarball contains files of the text of GPLv2 and LGPLv2 + ;; Licence notice is unclear. The Web page simply say "GPL" without giving + ;; a version. SOME of the code files have licence notices for GPLv2+. + ;; The tarball contains files of the text of GPLv2 and LGPLv2. (license license:gpl2+))) @@ -1003,9 +1022,9 @@ use in GNOME applications, built on top of CORBA.") (version "3.2.6") (source (origin (method url-fetch) - (uri - (let ((upstream-name "GConf")) - (string-append "mirror://gnome/sources/" upstream-name "/" + (uri + (let ((upstream-name "GConf")) + (string-append "mirror://gnome/sources/" upstream-name "/" (version-major+minor version) "/" upstream-name "-" version ".tar.xz"))) (sha256 @@ -1204,6 +1223,8 @@ creating interactive structured graphics.") (base32 "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("CXXFLAGS=-std=c++11"))) ; required by gtkmm (propagated-inputs `(("libgnomecanvas" ,libgnomecanvas))) (native-inputs `(("gtkmm-2" ,gtkmm-2) @@ -1437,14 +1458,14 @@ Hints specification (EWMH).") (define-public goffice (package (name "goffice") - (version "0.10.14") + (version "0.10.24") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 - (base32 "0kj0iwng6w4axm7yv2zy7myn5dhw5ilrlq2pzrjlm9i852ikqy60")))) + (base32 "0nmghi26dpjcw7knkviq031crhm0zjy4k650pv1jj3hb1fmhx9yd")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+) @@ -1494,7 +1515,7 @@ Hints specification (EWMH).") (define-public gnumeric (package (name "gnumeric") - (version "1.12.17") + (version "1.12.24") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1502,31 +1523,36 @@ Hints specification (EWMH).") name "-" version ".tar.xz")) (sha256 (base32 - "18bvc3phghr4p5440fp8hm6gvp53d3mqs9cyc637zpmk0b6bcp7c")))) + "0lcm8k0jb8rd5y4ii803f21nv8rx6gc3mmdlrj5h0rkkn9qm57f5")))) (build-system gnu-build-system) (arguments `(;; The gnumeric developers don't worry much about failing tests. ;; See https://bugzilla.gnome.org/show_bug.cgi?id=732387 #:tests? #f #:phases - (alist-cons-before - 'configure 'pre-conf - (lambda* (#:key outputs #:allow-other-keys) - ;; Make install tries to write into the directory of goffice - ;; I am informed that this only affects the possibility to embed a - ;; spreadsheet inside an Abiword document. So presumably when we - ;; package Abiword we'll have to refer it to this directory. - (substitute* "configure" - (("^GOFFICE_PLUGINS_DIR=.*") - (string-append "GOFFICE_PLUGINS_DIR=" - (assoc-ref outputs "out") "/goffice/plugins")))) - %standard-phases))) + (modify-phases %standard-phases + (add-before + 'configure 'pre-conf + (lambda* (#:key outputs #:allow-other-keys) + ;; Make install tries to write into the directory of goffice + ;; I am informed that this only affects the possibility to embed a + ;; spreadsheet inside an Abiword document. So presumably when we + ;; package Abiword we'll have to refer it to this directory. + (substitute* "configure" + (("^GOFFICE_PLUGINS_DIR=.*") + (string-append "GOFFICE_PLUGINS_DIR=" + (assoc-ref outputs "out") + "/goffice/plugins")))))))) (inputs `(("glib" ,glib) ("gtk+" ,gtk+) ("goffice" ,goffice) ("libgsf" ,libgsf) + ("librsvg" ,librsvg) ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("python" ,python-2) + ("python2-pygobject", python2-pygobject-2) ("zlib" ,zlib))) (native-inputs `(("intltool" ,intltool) @@ -1547,9 +1573,7 @@ engineering.") (define-public gnome-themes-standard (package (name "gnome-themes-standard") - ;; The version of this package should be the same as the version of - ;; gnome-desktop. - (version (package-version gnome-desktop)) + (version "3.18.0") (source (origin (method url-fetch) @@ -1558,7 +1582,7 @@ engineering.") version ".tar.xz")) (sha256 (base32 - "17sbcpc9df1cnz84g3npvh1na65mkxaygqcdma6wvda4knjpkssr")))) + "1jxss8kxszhf66vic9n1sagczm5amm0mgxpzyxyjna15q82fnip6")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+) @@ -1625,7 +1649,7 @@ passwords in the GNOME keyring.") (define-public vala (package (name "vala") - (version "0.28.0") + (version "0.30.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1633,14 +1657,16 @@ passwords in the GNOME keyring.") name "-" version ".tar.xz")) (sha256 (base32 - "0zwpzhkhfk3piya14m7p2hl2vaabahprphppfm46ci91z39kp7hd")))) + "1pyyhfw3zzbhxfscbn8xz70dg6vx0kh8gshzikpxczhg01xk7w31")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases - (add-before 'check 'set-cc + (add-before 'check 'pre-check (lambda _ (setenv "CC" "gcc") + ;; For missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") #t))))) (native-inputs `(("pkg-config" ,pkg-config) @@ -1663,7 +1689,7 @@ libraries written in C.") (define-public vte (package (name "vte") - (version "0.40.0") + (version "0.42.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1671,7 +1697,7 @@ libraries written in C.") name "-" version ".tar.xz")) (sha256 (base32 - "0lnq0bgkmsixjwmfacb2ch9qfjqjxa8zkk1hiv3l29kgca0n3nal")))) + "0d4xzjq6mxrlhnh4i12a1yy90n41m03z8wf8g6wh4hjgx7ly404y")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1692,6 +1718,27 @@ gnome-terminal, but can also be used to embed a console/terminal in games, editors, IDEs, etc.") (license license:lgpl2.1+))) +;; provides vte 2.90, required for some terminal emulators +;; tilda bug: https://github.com/lanoxx/tilda/issues/94 +;; pantheon-terminal bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788021 +;; roxterm bug: http://sourceforge.net/p/roxterm/bugs/107/ +;; pantheon-terminal, roxterm are not currently packaged +(define-public vte-0.36 + (package (inherit vte) + (name "vte") + (version "0.36.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1psfnqsmxx4qzc55qwvb8jai824ix4pqcdqhgxk0g2zh82bcxhn2")))) + (propagated-inputs + `(("gtk" ,gtk+) + ("ncurses" ,ncurses))))) + ;; stable version for gtk2, required by xfce4-terminal. (define-public vte/gtk+-2 (package (inherit vte) @@ -1771,7 +1818,7 @@ configuration storage systems.") (define-public json-glib (package (name "json-glib") - (version "1.0.2") + (version "1.0.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1779,7 +1826,14 @@ configuration storage systems.") name "-" version ".tar.xz")) (sha256 (base32 - "02k66lpc4cmgygj66n8zcy59bggy7yzm3v4hni9xqplgva9d2yw8")))) + "1k85vvb2prmk8aa8hmr2rp9rnbhffjgnmr18b13g24xxnqy5kww0")) + (modules '((guix build utils))) + (snippet + ;; Don't duplicate test names. + ;; . + '(substitute* "json-glib/tests/builder.c" + (("\"/builder/complex\", test_builder_empty") + "\"/builder/empty\", test_builder_empty"))))) (build-system gnu-build-system) (native-inputs `(("glib" ,glib "bin") ;for glib-mkenums and glib-genmarshal @@ -1871,7 +1925,7 @@ library.") (define-public glib-networking (package (name "glib-networking") - (version "2.44.0") + (version "2.46.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/glib-networking/" @@ -1879,7 +1933,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "0ij33bhvn7y5gagx4sbrw906dsjjjs9dllxn73pzv6x97c6k92lg")) + "1cchmi08jpjypgmm9i7xzh5qfg2q5k61kry9ns8mhw3z44a440ym")) (patches (list (search-patch "glib-networking-ssl-cert-file.patch"))))) (build-system gnu-build-system) @@ -1953,7 +2007,7 @@ libxml to ease remote use of the RESTful API.") (define-public libsoup (package (name "libsoup") - (version "2.50.0") + (version "2.52.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsoup/" @@ -1961,18 +2015,14 @@ libxml to ease remote use of the RESTful API.") name "-" version ".tar.xz")) (sha256 (base32 - "0yv61y5vfar1rfksa6f53zhfw9wcb39zjix8gqc1ff5gqid3c08y")))) + "0j6cnnpqqgnb9nj2r0j8j6898np4z503hrnpis7b4l5d8yhbq68f")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments `(#:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") - "/share/gtk-doc/html") - ;; To find GIO modules from glib-networking. - (string-append "GIO_EXTRA_MODULES=" - (assoc-ref %build-inputs "glib-networking") - "/lib/gio/modules")) + "/share/gtk-doc/html")) #:phases (modify-phases %standard-phases (add-before 'configure 'disable-unconnected-socket-test @@ -1990,13 +2040,22 @@ libxml to ease remote use of the RESTful API.") ;; The ca-certificates.crt is not available in the build ;; environment. (setenv "SSL_CERT_FILE" "/dev/null") - #t))))) + #t)) + (replace 'install + (lambda _ + (zero? + (system* "make" + ;; Install vala bindings into $out. + (string-append "vapidir=" %output + "/share/vala/vapi") + "install"))))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) ("python" ,python-wrapper) + ("vala" ,vala) ;; These are needed for the tests. ;; FIXME: Add PHP once available. ("curl" ,curl) @@ -2018,15 +2077,16 @@ and the GLib main loop, to integrate well with GNOME applications.") (define-public libsecret (package (name "libsecret") - (version "0.18") + (version "0.18.3") (source (origin (method url-fetch) (uri (string-append - "mirror://gnome/sources/libsecret/" version "/" + "mirror://gnome/sources/libsecret/" + (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 (base32 - "1qq29c01xxjyx5sl6y5h22w8r0ff4c73bph3gfx3h7mx5mvalwqc")))) + "1jc4pw6pb5igwasj0ms1zx80w63c11myziz3ydj0cr5lb861vgzj")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -2210,6 +2270,7 @@ keyboard shortcuts.") ("lcms" ,lcms))) (inputs `(("dbus-glib" ,dbus-glib) + ("libgudev" ,libgudev) ("libusb" ,libusb) ("sqlite" ,sqlite) ("polkit" ,polkit) @@ -2282,8 +2343,7 @@ permission from user.") (arguments `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't ;; work for the builder. Punt. - #:tests? #f - )) + #:tests? #f)) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums ("gobject-introspection" ,gobject-introspection) @@ -2306,14 +2366,14 @@ faster results and to avoid unnecessary server load.") (define-public upower (package (name "upower") - (version "0.99.2") + (version "0.99.3") (source (origin (method url-fetch) (uri (string-append "http://upower.freedesktop.org/releases/" name "-" version ".tar.xz")) (sha256 (base32 - "0vwlh20jmaf01m38kfn8yx2869a3clmkzlycrj99rf4nvwx4bp79")) + "0f6x9mi1jzgqdpycaikyhjljnw3aacsl3gxndyg0dfqkq6y9jwb9")) (patches (list (search-patch "upower-builddir.patch"))))) (build-system glib-or-gtk-build-system) (arguments @@ -2336,7 +2396,8 @@ faster results and to avoid unnecessary server load.") (substitute* "src/linux/integration-test" (("/usr/bin/python3") (which "python3")))))))) (native-inputs - `(("pkg-config" ,pkg-config) + `(("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) ("intltool" ,intltool) ("python" ,python))) (inputs @@ -2355,7 +2416,7 @@ service via the system message bus.") (define-public libgweather (package (name "libgweather") - (version "3.16.0") + (version "3.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2363,22 +2424,26 @@ service via the system message bus.") name "-" version ".tar.xz")) (sha256 (base32 - "0x1z6wv7hdw2ivlkifcbd940zyrnvqvc4zh2drgvd2r6jmd7bjza")))) + "1l3sra84k5dnavbdbjyf1ar84xmjszpnnldih6mf45kniwpjkcll")))) (build-system gnu-build-system) (arguments - `(;; The tests want to write to $HOME/.cache/geocode-glib, which doesn't - ;; work for the builder. Punt. - #:tests? #f - #:configure-flags - `(;; No introspection for now, as it wants to install to - ;; gobject-introspection's own directory and I don't know how to easily - ;; override this. - "--enable-introspection=no" - ,(string-append "--with-zoneinfo-dir=" - (assoc-ref %build-inputs "tzdata") - "/share/zoneinfo")))) + `(#:configure-flags + `(,(string-append "--with-zoneinfo-dir=" + (assoc-ref %build-inputs "tzdata") + "/share/zoneinfo")) + #:phases + (modify-phases %standard-phases + (add-before + 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "data/check-timezones.sh" + (("/usr/share/zoneinfo/zone.tab") + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo/zone.tab"))) + #t))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums + ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config) ("intltool" ,intltool))) (propagated-inputs @@ -2555,7 +2620,7 @@ throughout GNOME for API documentation).") (define-public cogl (package (name "cogl") - (version "1.20.0") + (version "1.22.0") (source (origin (method url-fetch) @@ -2564,7 +2629,7 @@ throughout GNOME for API documentation).") name "-" version ".tar.xz")) (sha256 (base32 - "0aqrj7gc0x7v536vdycgn2i23fj3nx3qwdd3mwgx7rr9b14kb7kj")))) + "14daxqrid5039xmq9yl4pk86awng1n9zgl6ysblhc4gw2ifzp7b8")))) (build-system gnu-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums @@ -2622,7 +2687,7 @@ without stepping on each others toes.") (define-public clutter (package (name "clutter") - (version "1.22.2") + (version "1.24.2") (source (origin (method url-fetch) @@ -2631,7 +2696,7 @@ without stepping on each others toes.") name "-" version ".tar.xz")) (sha256 (base32 - "1b0ikh9q3c3qnny3kbvhqih35449q8ajcbh7zkm8k3kykwfx4scf")))) + "0qyd0cw17wi8gl6y9z2j2lh2gwghxskfmsdvw4ayrgxwnj6cjccn")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;9 MiB of gtk-doc HTML pages @@ -3176,7 +3241,7 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") (define-public gvfs (package (name "gvfs") - (version "1.24.1") + (version "1.26.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3184,7 +3249,7 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") name "-" version ".tar.xz")) (sha256 (base32 - "1ygiknnd24qgzds8wif3jns981mqr65lgjlxs5pw65cl3376g0yk")))) + "064dsjrdjcbi38zl38jhh4r9jcpiygg7x4c8s6s2rb757l7nwnv9")))) (build-system gnu-build-system) (arguments '(#:tests? #f)) ; XXX: requiring `pidof' @@ -3199,6 +3264,7 @@ part of udev-extras, then udev, then systemd. It's now a project on its own.") ("docbook-xsl" ,docbook-xsl) ("dbus" ,dbus) ("fuse" ,fuse) + ("gcr" ,gcr) ("glib" ,glib) ("libarchive" ,libarchive) ("libbluray" ,libbluray) @@ -3262,7 +3328,7 @@ DAV, and others.") (and (zero? (system* "gtkdocize")) (zero? (system* "autoreconf" "-vif")))))))) (home-page "https://github/hughsie/libgusb") - (synopsis "A GLib binding for libusb1") + (synopsis "GLib binding for libusb1") (description "GUsb is a GObject wrapper for libusb1 that makes it easy to do asynchronous control, bulk and interrupt transfers with proper cancellation @@ -3659,3 +3725,537 @@ environment that allows users to view, unpack, and create compressed archives such as gzip tarballs.") (home-page "http://fileroller.sourceforge.net/") (license license:gpl2+))) + +(define-public gnome-session + (package + (name "gnome-session") + (version "3.18.1.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0icajbzqf5llvp5s8nafwkhwz6a6jmwn4hhs81bk0bpzawyq4zdk")))) + (build-system gnu-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("pkg-config" ,pkg-config) + ("intltool" ,intltool) + ("xsltproc" ,libxslt))) + (inputs + `(("gnome-desktop" ,gnome-desktop) + ("gtk+" ,gtk+) + ("json-glib" ,json-glib) + ("libsm" ,libsm) + ("libxcomposite" ,libxcomposite) + ("libxtst" ,libxtst) + ("mesa" ,mesa) + ("upower" ,upower) + ("xtrans" ,xtrans))) + (synopsis "Session manager for GNOME") + (description + "This package contains the GNOME session manager, as well as a +configuration program to choose applications starting on login.") + (home-page "https://wiki.gnome.org/Projects/SessionManagement") + (license license:gpl2+))) + +(define-public gjs + (package + (name "gjs") + (version "1.44.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "106fgpr4y99sj68l72pnfa2za11ps4bn6p9z28fr79j7mpv61jc8")) + (modules '((guix build utils))) + (snippet '(substitute* "test/run-with-dbus" + (("/bin/rm") "rm"))))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + 'check 'pre-check + (lambda _ + ;; For the missing /etc/machine-id. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-resources + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2) + ;; For testing + ("dbus-launch" ,dbus) + ("uuidgen" ,util-linux) + ("xvfb" ,xorg-server))) + (propagated-inputs + ;; These are all in the Requires.private field of gjs-1.0.pc. + `(("gobject-introspection" ,gobject-introspection) + ("mozjs" ,mozjs-24))) + (inputs + `(("gtk+" ,gtk+) + ("readline" ,readline))) + (synopsis "Javascript bindings for GNOME") + (home-page "http://live.gnome.org/Gjs") + (description + "Gjs is a javascript binding for GNOME. It's mainly based on spidermonkey +javascript engine and the GObject introspection framework.") + (license license:gpl2+))) + +(define-public gedit + (package + (name "gedit") + (version "3.18.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1kb3hglcppap7fdy7i7w2wk746kfz77jzs2lq6vrna8a3fqaxmas")))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after + 'install 'wrap-gedit + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gtksourceview (assoc-ref inputs "gtksourceview")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (wrap-program (string-append out "/bin/gedit") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) + ;; For language-specs. + `("XDG_DATA_DIRS" ":" prefix (,(string-append gtksourceview + "/share"))))) + #t))))) + (propagated-inputs + `(("dconf" ,dconf))) + (native-inputs + `(("intltool" ,intltool) + ("itstool", itstool) + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib) + ("gtk+" ,gtk+) + ("gtksourceview" ,gtksourceview) + ("libpeas" ,libpeas) + ("libxml2" ,libxml2) + ("enchant" ,enchant) + ("iso-codes" ,iso-codes) + ("python-pygobject" ,python-pygobject) + ("python" ,python) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("libx11" ,libx11) + ("vala" ,vala) + ("adwaita-icon-theme" ,adwaita-icon-theme) + ("libsoup" ,libsoup) + ("gnome-desktop" ,gnome-desktop))) + (home-page "https://wiki.gnome.org/Apps/Gedit") + (synopsis "GNOME text editor") + (description "While aiming at simplicity and ease of use, gedit is a +powerful general purpose text editor.") + (license license:gpl2+))) + +(define-public zenity + (package + (name "zenity") + (version "3.18.1.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "02m88dfm1rziqk2ywakwib06wl1rxangbzih6cp8wllbyl1plcg6")))) + (build-system gnu-build-system) + (native-inputs + `(("gettext" ,gnu-gettext) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config))) + (inputs + `(("libnotify" ,libnotify) + ("webkitgtk" ,webkitgtk))) + (synopsis "Display graphical dialog boxes from shell scripts") + (home-page "http://www.gnome.org") + (description + "Zenity is a rewrite of gdialog, the GNOME port of dialog which allows you +to display dialog boxes from the commandline and shell scripts.") + (license license:lgpl2.0+))) + +(define-public mutter + (package + (name "mutter") + (version "3.18.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1ab959z5fgi4rq0ifxdqvpdbv99a2b1lfgvj327s9crdvk4ygpjg")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + ;; XXX: build fails with [-Werror]: + ;; backends/meta-cursor-renderer.c:112:5: error: + ;; implicit declaration of function ?roundf? + '("--enable-compile-warnings=minimum"))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (propagated-inputs + ;; libmutter.pc refers to all these. + `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+) + ("clutter" ,clutter))) + (inputs + `(("gnome-desktop" ,gnome-desktop) + ("libcanberra-gtk" ,libcanberra) + ("libice" ,libice) + ("libsm" ,libsm) + ("libxkbcommon" ,libxkbcommon) + ("libxkbfile" ,libxkbfile) + ("mesa-headers" ,mesa-headers) + ("startup-notification" ,startup-notification) + ("upower-glib" ,upower) + ("xkeyboard-config" ,xkeyboard-config) + ("zenity" ,zenity))) + (synopsis "Window and compositing manager") + (home-page "http://www.gnome.org") + (description + "Mutter is a window and compositing manager that displays and manages your +desktop via OpenGL. Mutter combines a sophisticated display engine using the +Clutter toolkit with solid window-management logic inherited from the Metacity +window manager.") + (license license:gpl2+))) + +(define-public gnome-online-accounts + (package + (name "gnome-online-accounts") + (version "3.18.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1hn2fvkr1f4qh4gix03avnvk7pklvv5272ns8ws56v4kcq4nppkc")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) + (propagated-inputs + `(("glib" ,glib) ; required by goa-1.0.pc + ("gtk+" ,gtk+))) ; required by goa-backend-1.0.pc + (inputs + `(("docbook-xsl" ,docbook-xsl) + ("json-glib" ,json-glib) + ("libsecret" ,libsecret) + ("rest" ,rest) + ("telepathy-glib" ,telepathy-glib) + ("webkitgtk" ,webkitgtk))) + (synopsis "Single sign-on framework for GNOME") + (home-page "https://wiki.gnome.org/Projects/GnomeOnlineAccounts") + (description + "GNOME Online Accounts provides interfaces so that applications and +libraries in GNOME can access the user's online accounts. It has providers for +Google, ownCloud, Facebook, Flickr, Windows Live, Pocket, Foursquare, Microsoft +Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") + (license license:lgpl2.0+))) + +(define-public evolution-data-server + (package + (name "evolution-data-server") + (version "3.18.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "16yfd2a00xqxikyf6pi2awfd0qfq4hwdhfar88axrb4mycfgqhjr")))) + (build-system gnu-build-system) + (arguments + '(;; XXX: fails with: + ;; /Fixture/Calendar0: cleaning up pid xxxx + ;; t status: 139) + #:tests? #f + #:configure-flags + (let ((nss (assoc-ref %build-inputs "nss")) + (nspr (assoc-ref %build-inputs "nspr"))) + (list "--disable-uoa" ; disable Ubuntu Online Accounts support + "--disable-google" ; disable Google Contacts support + (string-append "--with-nspr-includes=" nspr "/include/nspr") + (string-append "--with-nss-includes=" nss "/include/nss") + (string-append "--with-nss-libs=" nss "/lib/nss"))) + #:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + (substitute* "tests/test-server-utils/e-test-server-utils.c" + (("/bin/rm") (which "rm"))) + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection) + ("gperf" ,gperf) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("python" ,python))) + (propagated-inputs + ;; These are all in the Requires field of .pc files. + `(("gtk+" ,gtk+) + ("libical" ,libical) + ("libsecret" ,libsecret) + ("libsoup" ,libsoup) + ("nss" ,nss) + ("sqlite" ,sqlite))) + (inputs + `(("bdb" ,bdb) + ("gcr" ,gcr) + ("gnome-online-accounts" ,gnome-online-accounts) + ("libgweather" ,libgweather))) + (synopsis "Store address books and calendars") + (home-page "https://wiki.gnome.org/Apps/Evolution") + (description + "This package provides a unified backend for programs that work with +contacts, tasks, and calendar information. It was originally developed for +Evolution (hence the name), but is now used by other packages as well.") + (license license:lgpl2.0))) + +(define-public caribou + (package + (name "caribou") + (version "0.4.19") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0i2s2xy9ami3wslam15cajhggpcsj4c70qm7qddcz52z9k0x02rg")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + 'build 'pre-build + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Use absolute shared library path in Caribou-1.0.typelib. + (substitute* "libcaribou/Makefile" + (("--shared-library=libcaribou.so") + (string-append "--shared-library=" + out "/lib/libcaribou.so"))) + #t))) + (add-after 'install 'wrap-programs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (python-path (getenv "PYTHONPATH")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (for-each + (lambda (prog) + (wrap-program prog + `("PYTHONPATH" ":" prefix (,python-path)) + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) + (list (string-append out "/bin/caribou-preferences") + (string-append out "/libexec/antler-keyboard")))) + #t))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("python" ,python-2) ; incompatible with Python 3 (print syntax) + ("vala" ,vala) + ("xsltproc" ,libxslt))) + (propagated-inputs + ;; caribou-1.0.pc refers to all these. + `(("libgee" ,libgee) + ("libxklavier" ,libxklavier) + ("libxtst" ,libxtst) + ("gtk+" ,gtk+))) + (inputs + `(("clutter" ,clutter) + ("dconf" ,dconf) + ("gtk+-2" ,gtk+-2) + ("python-pygobject" ,python2-pygobject))) + (synopsis "Text entry and UI navigation application") + (home-page "https://wiki.gnome.org/Projects/Caribou") + (description + "Caribou is an input assistive technology intended for switch and pointer +users.") + (license license:lgpl2.1))) + +(define %network-manager-glib-duplicate-test-patch + (origin + (method url-fetch) + (uri (string-append + "http://cgit.freedesktop.org/NetworkManager/NetworkManager/" + "patch/libnm-core/tests/test-general.c" + "?id=874f455d6d47c5a34ed9861a6710f4b78202e0d6")) + (file-name "network-manager-glib-duplicate-test.patch") + (sha256 + (base32 + "1v0vpxzf0p0b1y5lmq8w7rjndp216gr60nbf2dpdz5rgxx3p3ml6")))) + +(define-public network-manager + (package + (name "network-manager") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/NetworkManager/" + (version-major+minor version) "/" + "NetworkManager-" version ".tar.xz")) + (sha256 + (base32 + "1galh9j95yw33iv1jj8zz0h88ahx8gm5mqmam7zq9f730cj01siq")) + (patches (list %network-manager-glib-duplicate-test-patch)))) + (build-system gnu-build-system) + (outputs '("out" + "doc")) ; 8 MiB of gtk-doc HTML + (arguments + '(#:configure-flags + (let ((out (assoc-ref %outputs "out")) + (doc (assoc-ref %outputs "doc")) + (dhclient (string-append (assoc-ref %build-inputs "isc-dhcp") + "/sbin/dhclient"))) + (list "--with-crypto=gnutls" + "--disable-config-plugin-ibft" + "--sysconfdir=/etc" + "--localstatedir=/var" + (string-append "--with-udev-dir=" + out "/lib/udev") + (string-append "--with-dbus-sys-dir=" + out "/etc/dbus-1/system.d") + (string-append "--with-html-dir=" + doc "/share/gtk-doc/html") + (string-append "--with-dhclient=" dhclient))) + #:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + ;; For the missing /etc/machine-id. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)) + (replace 'install + (lambda _ + (zero? (system* "make" + "sysconfdir=/tmp" + "localstatedir=/tmp" + "install"))))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for gdbus-codegen + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ;; For testing. + ("python" ,python-wrapper) + ("python-dbus" ,python-dbus) + ("python-pygobject" ,python-pygobject))) + (inputs + `(("dbus-glib" ,dbus-glib) + ("dnsmasq" ,dnsmasq) + ("gnutls" ,gnutls) + ("iptables" ,iptables) + ("isc-dhcp" ,isc-dhcp) + ("libgcrypt" ,libgcrypt) + ("libgudev" ,libgudev) + ("libndp" ,libndp) + ("libnl" ,libnl) + ("libsoup" ,libsoup) + ("polkit" ,polkit) + ("ppp" ,ppp) + ("readline" ,readline) + ("util-linux" ,util-linux))) + (synopsis "Network connection manager") + (home-page "http://www.gnome.org/projects/NetworkManager/") + (description + "NetworkManager is a system network service that manages your network +devices and connections, attempting to keep active network connectivity when +available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE +devices, and provides VPN integration with a variety of different VPN +services.") + (license license:gpl2+))) + +(define-public network-manager-applet + (package + (name "network-manager-applet") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1yj0m6fb9v12d0di0rfmk3hx1vmygjkiff2c476rf792sbh56kax")))) + (build-system glib-or-gtk-build-system) + (arguments '(#:configure-flags '("--disable-migration"))) + (native-inputs + `(("intltool" ,intltool) + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config))) + (propagated-inputs + ;; libnm-gtk.pc refers to all these. + `(("dbus-glib" ,dbus-glib) + ("gtk+" ,gtk+) + ("network-manager" ,network-manager))) + (inputs + `(("iso-codes" ,iso-codes) + ("libgudev" ,libgudev) + ("libnotify" ,libnotify) + ("libsecret" ,libsecret))) + (synopsis "Applet for managing network connections") + (home-page "http://www.gnome.org/projects/NetworkManager/") + (description + "This package contains a systray applet for NetworkManager. It displays +the available networks and allows users to easily switch between them.") + (license license:gpl2+))) + +(define-public libxml++ + (package + (name "libxml++") + (version "2.91.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0h4h7hhh9lg8h34py116517m3wqbzhd5v63k1c6pp1p2a43s18fs")))) + (build-system gnu-build-system) + ;; libxml++-3.0.pc refers to all these. + (propagated-inputs + `(("libxml2" ,libxml2) + ("glibmm" ,glibmm))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config))) + (home-page "http://libxmlplusplus.sourceforge.net/") + (synopsis "C++ wrapper for XML parser library libxml2") + (description + "This package provides a C++ wrapper for the XML parser library +libxml2.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm index 42d19af8f4..e252f98f94 100644 --- a/gnu/packages/gnucash.scm +++ b/gnu/packages/gnucash.scm @@ -37,7 +37,7 @@ (define-public gnucash (package (name "gnucash") - (version "2.6.6") + (version "2.6.9") (source (origin (method url-fetch) @@ -45,7 +45,7 @@ version ".tar.bz2")) (sha256 (base32 - "103ir5qg6k8m2mmg9b99c3gn8myxh1gsqyr0mfhmrhqya68wfdr3")) + "0iw25l1kv60cg6fd2vg11mcvzmjqnc5p9lp3rjy06ghkjfrn3and")) (patches (list (search-patch "gnucash-price-quotes-perl.patch"))))) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 9b273ace7b..2a4c5cfeed 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2014 Sree Harsha Totakura ;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnupg) #:use-module (gnu packages groff) + #:use-module (gnu packages guile) #:use-module (gnu packages gstreamer) #:use-module (gnu packages libidn) #:use-module (gnu packages image) @@ -45,6 +47,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu)) (define-public libextractor @@ -111,14 +114,14 @@ tool to extract metadata from a file and print the results.") (define-public libmicrohttpd (package (name "libmicrohttpd") - (version "0.9.44") + (version "0.9.47") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-" version ".tar.gz")) (sha256 (base32 - "07j1p21rvbrrfpxngk8xswzkmjkh94bp1971xfjh1p0ja709qwzj")))) + "1335kznai5ih3kmavl1707sr4sakk0cc0srl5aax77x0a91spgcn")))) (build-system gnu-build-system) (inputs `(("curl" ,curl) @@ -250,3 +253,36 @@ applications. In particular, GNUnet now includes the GNU Name System, a privacy-preserving, decentralized public key infrastructure.") (license license:gpl3+) (home-page "https://gnunet.org/"))) + +(define-public guile-gnunet ;GSoC 2015! + (let ((commit "383eac2")) + (package + (name "guile-gnunet") + (version (string-append "0.0." commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.sv.gnu.org/guix/gnunet.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0k6mn28isjlxrnvbnblab3nh2xqx1b7san8k98kc35ap9lq0iz8w")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))))) + (native-inputs `(("pkg-config" ,pkg-config) + ("autoconf" ,(autoconf-wrapper)) + ("automake" ,automake))) + (inputs `(("guile" ,guile-2.0) + ("gnunet" ,gnunet))) + (synopsis "Guile bindings for GNUnet services") + (description + "This package provides Guile bindings to the client libraries of various +GNUnet services, including the @dfn{identity} and @dfn{file sharing} +services.") + (home-page "http://gnu.org/software/guix") + (license license:gpl3+)))) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 333e88362b..af01749545 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ (define-module (gnu packages gnupg) #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages adns) #:use-module (gnu packages curl) #:use-module (gnu packages openldap) #:use-module (gnu packages perl) @@ -31,6 +33,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages gtk) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages pkg-config) #:use-module (gnu packages ncurses) #:use-module (gnu packages tls) @@ -110,7 +113,7 @@ generation.") (define-public libassuan (package (name "libassuan") - (version "2.2.1") + (version "2.4.2") (source (origin (method url-fetch) @@ -118,7 +121,7 @@ generation.") version ".tar.bz2")) (sha256 (base32 - "1pp2kl5gc2vja41g3wk03h1hgh7gxy6pj354fb5n4lrlg6xqb4ll")))) + "086bbcdnvs48qq5g4iac7dpk76j0q3jrp16mchdvyx0b720xq1mv")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error" ,libgpg-error) ("pth" ,pth))) @@ -193,19 +196,20 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.1.9") + (version "2.1.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1dpp555glln6fldk72ad7lkrn8h3cr2bg714z5kfn2qrawx67dqw")))) + "1ybcsazjm21i2ys1wh49cz4azmqz7ghx5rb6hm4gm93i2zc5igck")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("bzip2" ,bzip2) + `(("adns" ,adns) + ("bzip2" ,bzip2) ("curl" ,curl) ("gnutls" ,gnutls) ("libassuan" ,libassuan) @@ -237,17 +241,18 @@ libskba (working with X.509 certificates and CMS data).") (define-public gnupg-2.0 (package (inherit gnupg) - (version "2.0.28") + (version "2.0.29") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "0k2k399fnhfhhr4dvm8d6vs4ihq6gg06191lzfwikzaqmgj2w2ff")))) + "1jaakn0mi6pi2b3g3imxj3qzxw2zg0ifxs30baq2b157dcw6pvb8")))) (native-inputs '()) (inputs - `(("bzip2" ,bzip2) + `(("adns" ,adns) + ("bzip2" ,bzip2) ("curl" ,curl) ("libassuan" ,libassuan) ("libgcrypt" ,libgcrypt) @@ -294,7 +299,7 @@ libskba (working with X.509 certificates and CMS data).") (define-public gpgme (package (name "gpgme") - (version "1.5.5") + (version "1.6.0") (source (origin (method url-fetch) @@ -302,7 +307,7 @@ libskba (working with X.509 certificates and CMS data).") ".tar.bz2")) (sha256 (base32 - "01y28fkq52wwf4p470wscaxd2vgzl615irmafx3mj3380x8ksg8b")))) + "17892sclz3yg45wbyqqrzzpq3l0icbnfl28f101b3062g8cy97dh")))) (build-system gnu-build-system) (propagated-inputs ;; Needs to be propagated because gpgme.h includes gpg-error.h. @@ -371,14 +376,15 @@ and signature functionality from Python programs.") (define-public pius (package (name "pius") - (version "2.1.1") + (version "2.2.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/pgpius/pius/" - version "/pius-" - version ".tar.bz2")) - (sha256 (base32 - "0ry3kc3x1qjmvb581ja2z2v32r1rl1g8rhfj7iqvs8nzq4ca512i")))) + (uri (string-append + "https://github.com/jaymzh/pius/releases/download/v" + version "/pius-" version ".tar.bz2")) + (sha256 + (base32 + "003dwpamq0c7w8q9zpgi4h03rs8rwjm0czkn9s60m91p6aql5f42")))) (build-system python-build-system) (inputs `(("perl" ,perl) ;for 'pius-party-worksheet' ("gpg" ,gnupg-2.0))) ;2.1 fails to talk to gpg-agent 2.0 @@ -393,7 +399,7 @@ and signature functionality from Python programs.") (let* ((gpg (string-append (assoc-ref inputs "gpg") "/bin/gpg2"))) (substitute* "libpius/constants.py" - (("/usr/bin/gpg") gpg)))))))) + (("/usr/bin/gpg2") gpg)))))))) (synopsis "Programs to simplify GnuPG key signing") (description "Pius (PGP Individual UID Signer) helps attendees of PGP keysigning @@ -510,18 +516,19 @@ including tools for signing keys, keyring analysis, and party preparation. (define-public pinentry (package (name "pinentry") - (version "0.9.5") + (version "0.9.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/pinentry/pinentry-" version ".tar.bz2")) (sha256 (base32 - "1338hj1h3sh34897120y30x12b64wyj3xjzzk5asm2hdzhxgsmva")))) + "0rhyw1vk28kgasjp22myf7m2q8kycw82d65pr9kgh93z17lj849a")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) ("libassuan" ,libassuan) + ("libsecret" ,libsecret "out") ("gtk+" ,gtk+-2) ("glib" ,glib))) (native-inputs diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 3e933e7ec5..6d134a89c7 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -92,10 +92,48 @@ in C/C++.") (license license:mpl2.0))) ; and others for some files +(define-public mozjs-24 + (package (inherit mozjs) + (name "mozjs") + (version "24.2.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/js/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6")))) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (chdir "js/src") + ;; configure fails if it is follwed by SHELL and CONFIG_SHELL + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (zero? (system* "./configure" + (string-append "--prefix=" out) + "--with-system-nspr" + "--enable-system-ffi" + "--enable-threadsafe")))))))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) + (propagated-inputs + `(("nspr" ,nspr))) ; in the Requires.private field of mozjs-24.pc + (inputs + `(("libffi" ,libffi) + ("zlib" ,zlib))))) + (define-public nspr (package (name "nspr") - (version "4.10.8") + (version "4.10.10") (source (origin (method url-fetch) (uri (string-append @@ -103,7 +141,7 @@ in C/C++.") version "/src/nspr-" version ".tar.gz")) (sha256 (base32 - "05aaakz24ba2hdzlqx8qamwrsp7gni1acms8mr6m432wa9yaazjh")))) + "01ria9wk6329hxqsy75p9dkxiqkq4nkz0jjzll7hslih3jbi8dil")))) (build-system gnu-build-system) (native-inputs `(("perl", perl))) @@ -129,18 +167,18 @@ in the Mozilla clients.") (define-public nss (package (name "nss") - (version "3.19.2") + (version "3.20.1") (source (origin (method url-fetch) (uri (let ((version-with-underscores (string-join (string-split version #\.) "_"))) (string-append - "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/" + "https://ftp.mozilla.org/pub/mozilla.org/security/nss/" "releases/NSS_" version-with-underscores "_RTM/src/" "nss-" version ".tar.gz"))) (sha256 (base32 - "1bn9wbf52z4423134hpkyvcxq1568fvzmkybv2d49n31iwz6c1hk")) + "15wcbqd2b911hxafbjfn63zd1gf2yxg0s5560hnhqmyrvw8qyg5d")) ;; Create nss.pc and nss-config. (patches (list (search-patch "nss-pkgconfig.patch"))))) (build-system gnu-build-system) @@ -228,7 +266,7 @@ standards.") (define-public icecat (package (name "icecat") - (version "38.3.0-gnu1") + (version "38.4.0-gnu1") (source (origin (method url-fetch) @@ -237,7 +275,7 @@ standards.") name "-" version ".tar.bz2")) (sha256 (base32 - "0vm6f7f1i5vkq2713mgzjdfnm8rpz9l0q8sv4s123vsam0j9gzh8")) + "0rcaa19rfgclwd2qvcz8798m57jjzra6kaxg5dniysajvx7qndfp")) (patches (map search-patch '("icecat-avoid-bundled-includes.patch" "icecat-freetype-2.6.patch"))) (modules '((guix build utils))) diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm index b1da394835..79fc2f0aca 100644 --- a/gnu/packages/grub.scm +++ b/gnu/packages/grub.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,8 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages linux) #:use-module (gnu packages qemu) + #:use-module (gnu packages man) + #:use-module (gnu packages texinfo) #:use-module (gnu packages ncurses) #:use-module (gnu packages cdrom) #:use-module (srfi srfi-1)) @@ -38,7 +41,7 @@ ;; and fixed at ;; . ;; Work around it by using an older QEMU. - (package (inherit qemu-headless) + (package (inherit qemu-minimal) (version "1.3.1") (source (origin (method url-fetch) @@ -52,7 +55,7 @@ ;; ERROR:tests/rtc-test.c:176:check_time: assertion failed (ABS(t - s) <= wiggle): (382597824 <= 2) ;; Simply disable the tests. (arguments `(#:tests? #f - ,@(package-arguments qemu))) + ,@(package-arguments qemu-minimal))) ;; The manual fails to build with Texinfo 5.x. (native-inputs (alist-delete "texinfo" (package-native-inputs qemu))))) @@ -84,30 +87,35 @@ (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-werror") - #:phases (alist-cons-before - 'patch-source-shebangs 'patch-stuff - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "grub-core/Makefile.in" - (("/bin/sh") (which "sh"))) + #:phases (modify-phases %standard-phases + (add-after + 'unpack 'patch-stuff + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "grub-core/Makefile.in" + (("/bin/sh") (which "sh"))) - ;; Make the font visible. - (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") - (system* "gunzip" "unifont.bdf.gz") + ;; Make the font visible. + (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") + (system* "gunzip" "unifont.bdf.gz") - ;; TODO: Re-enable this test when we have Parted. - (substitute* "tests/partmap_test.in" - (("set -e") "exit 77"))) - %standard-phases))) + ;; TODO: Re-enable this test when we have Parted. + (substitute* "tests/partmap_test.in" + (("set -e") "exit 77")) + + #t))))) (inputs `(;; ("lvm2" ,lvm2) ("gettext" ,gnu-gettext) ("freetype" ,freetype) ;; ("libusb" ,libusb) + ;; ("fuse" ,fuse) ("ncurses" ,ncurses))) (native-inputs `(("unifont" ,unifont) ("bison" ,bison) ("flex" ,flex) + ("texinfo" ,texinfo) + ("help2man" ,help2man) ;; Dependencies for the test suite. The "real" QEMU is needed here, ;; because several targets are used. diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 0ac9783550..1235b3185a 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -83,20 +83,20 @@ arrays of data.") (define-public gstreamer (package (name "gstreamer") - (version "1.4.5") + (version "1.6.1") (source (origin (method url-fetch) - (uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-" - version ".tar.xz")) + (uri (string-append + "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-" + version ".tar.xz")) (sha256 (base32 - "1bmhbhak6i5wmmb6w86jyyv8lax4gdq983la4lk4a0krz6kim020")))) + "172w1bpnkn6mm1wi37n03apdbb6cdkykhzjf1vfxchcd7hhkyflp")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments - `(#:make-flags '("CC=gcc") ; for g-ir-scanner. - #:configure-flags + `(#:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html")))) @@ -131,15 +131,15 @@ This package provides the core library and elements.") (define-public gst-plugins-base (package (name "gst-plugins-base") - (version "1.4.5") + (version "1.6.1") (source (origin (method url-fetch) - (uri (string-append "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-" - version ".tar.xz")) + (uri (string-append "http://gstreamer.freedesktop.org/src/" name "/" + name "-" version ".tar.xz")) (sha256 (base32 - "07ampnfa6p41s0lhia62l9h8bdx3c7vxvdz93pbx64m3wycq3gbp")))) + "18sbyjcp281zb3bsqji3pglsdsxi0s6ai7rx90sx8cpflkxdqcwm")))) (build-system gnu-build-system) (outputs '("out" "doc")) (propagated-inputs @@ -162,7 +162,8 @@ This package provides the core library and elements.") ("gobject-introspection" ,gobject-introspection) ("python-wrapper" ,python-wrapper))) (arguments - `(#:configure-flags + `(#:parallel-tests? #f ; 'pipelines/tcp' fails in parallel + #:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html")) @@ -171,9 +172,7 @@ This package provides the core library and elements.") 'configure 'patch (lambda _ (substitute* "tests/check/libs/pbutils.c" - (("/bin/sh") (which "sh"))) - ;; for g-ir-scanner. - (setenv "CC" "gcc")) + (("/bin/sh") (which "sh")))) %standard-phases))) (home-page "http://gstreamer.freedesktop.org/") (synopsis @@ -186,7 +185,7 @@ for the GStreamer multimedia library.") (define-public gst-plugins-good (package (name "gst-plugins-good") - (version "1.4.5") + (version "1.6.1") (source (origin (method url-fetch) @@ -195,7 +194,7 @@ for the GStreamer multimedia library.") version ".tar.xz")) (sha256 (base32 - "0hg6qzdpib9nwn3hdxv0d4rvivi1c4bmxsq2a9hqmamwyzrvbcbr")))) + "0darc3058kbnql3mnlpizl0sq0hhli7vkm0rpqb7nywz14abim46")))) (build-system gnu-build-system) (inputs `(("aalib" ,aalib) @@ -229,7 +228,7 @@ for the GStreamer multimedia library.") 'unpack 'disable-failing-rtprtx-tests (lambda _ ;; Disable rtprtx tests that frequently fail. - ;; XXX FIXME: Try removing this for version > 1.4.5. + ;; XXX FIXME: Try removing this for version > 1.6.1. (substitute* "tests/check/elements/rtprtx.c" (("tcase_add_test \\(tc_chain,\ (test_rtxsender_max_size_packets|test_rtxreceive_data_reconstruction)\\);" all) @@ -246,7 +245,7 @@ developers consider to have good quality code and correct functionality.") (define-public gst-plugins-ugly (package (name "gst-plugins-ugly") - (version "1.4.5") + (version "1.6.1") (source (origin (method url-fetch) @@ -254,7 +253,7 @@ developers consider to have good quality code and correct functionality.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0rwhljn3f8mp2pfchzfcx4pvps1546dndw9mr56lz50qyqffimaw")))) + "0mvasl1pwq70w2kmrkcrg77kggl5q7jqybi7fkvy3vr28c7gkhqc")))) (build-system gnu-build-system) (inputs `(("gst-plugins-base" ,gst-plugins-base) @@ -284,7 +283,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") (define-public gst-libav (package (name "gst-libav") - (version "1.4.5") + (version "1.6.1") (source (origin (method url-fetch) (uri (string-append @@ -292,7 +291,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") name "-" version ".tar.xz")) (sha256 (base32 - "1g7vg9amh3cc3nmc415h6g2rqxqi4wgwqi08hxfbpwq48ri64p30")))) + "1a9pc7zp5rg0cvpx8gqkr21w73i6p9xa505a34day9f8p3lfim94")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-system-libav") diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index a01e6d0dd3..c0c0794f4a 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Andy Wingo +;;; Copyright © 2015 David Hashe ;;; ;;; This file is part of GNU Guix. ;;; @@ -60,7 +61,7 @@ (define-public atk (package (name "atk") - (version "2.16.0") + (version "2.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -68,7 +69,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9")))) + "0ay9s137x49f0akx658p7kznz0rdapfrd8ym54q0hlgrggblhv6f")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -144,7 +145,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public harfbuzz (package (name "harfbuzz") - (version "1.0.3") + (version "1.0.5") (source (origin (method url-fetch) (uri (string-append "http://www.freedesktop.org/software/" @@ -152,7 +153,7 @@ affine transformation (scale, rotation, shear, etc.).") version ".tar.bz2")) (sha256 (base32 - "1xrxlrvgyr6mm9qjxmkif2kvcah082y94gf1vqi0f0bdl1g8gp7b")))) + "0h2l362qzkck5dnnj7zlz593hf1ni3k25dfaii9mbjwflp3d56ad")))) (build-system gnu-build-system) (outputs '("out" "bin")) ; 160K, only hb-view depend on cairo @@ -182,7 +183,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public pango (package (name "pango") - (version "1.36.8") + (version "1.38.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/pango/" @@ -190,7 +191,7 @@ affine transformation (scale, rotation, shear, etc.).") name "-" version ".tar.xz")) (sha256 (base32 - "01rdzjh68w8l5zn0648yibyarj8p6g7yfn59nw5awaz1i8dvbnqq")))) + "1dsf45m51i4rcyvh5wlxxrjfhvn5b67d5ckjc6vdcxbddjgmc80k")))) (build-system gnu-build-system) (propagated-inputs `(("cairo" ,cairo) @@ -253,8 +254,10 @@ functions which were removed.") (build-system waf-build-system) (arguments `(#:phases (alist-cons-before - 'configure 'set-ldflags + 'configure 'set-flags (lambda* (#:key outputs #:allow-other-keys) + ;; Compile with C++11, required by gtkmm. + (setenv "CXXFLAGS" "-std=c++11") ;; Allow 'bin/ganv_bench' to find libganv-1.so. (setenv "LDFLAGS" (string-append "-Wl,-rpath=" @@ -275,7 +278,7 @@ graph-like environments, e.g. modular synths or finite state machine diagrams.") (license license:gpl3+))) -(define-public gtksourceview +(define-public gtksourceview-2 (package (name "gtksourceview") (version "2.10.5") ; This is the last version which builds against gtk+2 @@ -290,7 +293,6 @@ diagrams.") (build-system gnu-build-system) (inputs `(("gtk" ,gtk+-2) - ("libxml2" ,libxml2) ;; These two are needed only to allow the tests to run successfully. ("xorg-server" ,xorg-server) ("shared-mime-info" ,shared-mime-info))) @@ -298,6 +300,9 @@ diagrams.") `(("intltool" ,intltool) ("glib" ,glib "bin") ; for glib-genmarshal, etc. ("pkg-config" ,pkg-config))) + (propagated-inputs + ;; As per the pkg-config file. + `(("libxml2" ,libxml2))) (arguments `(#:phases ;; Unfortunately, some of the tests in "make check" are highly dependent @@ -329,6 +334,54 @@ printing and other features typical of a source code editor.") (license license:lgpl2.0+) (home-page "https://developer.gnome.org/gtksourceview/"))) +(define-public gtksourceview + (package + (name "gtksourceview") + (version "3.18.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1rpdg8rcjlqv8yk13vsh5148mads0zbfih8cak3hm7wb0spmzsbv")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + (let ((xorg-server (assoc-ref inputs "xorg-server"))) + ;; Tests require a running X server. + (system (format #f "~a/bin/Xvfb :1 &" xorg-server)) + (setenv "DISPLAY" ":1") + ;; For the missing /etc/machine-id. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)))))) + (native-inputs + `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc. + ("intltool" ,intltool) + ("itstool", itstool) + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("vala" ,vala) + ;; For testing. + ("xorg-server" ,xorg-server) + ("shared-mime-info" ,shared-mime-info))) + (propagated-inputs + ;; gtksourceview-3.0.pc refers to all these. + `(("glib" ,glib) + ("gtk+" ,gtk+) + ("libxml2" ,libxml2))) + (home-page "https://wiki.gnome.org/Projects/GtkSourceView") + (synopsis "GNOME source code widget") + (description "GtkSourceView is a text widget that extends the standard +GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax +highlighting and other features typical of a source code editor.") + (license license:lgpl2.1+))) + (define-public gdk-pixbuf (package (name "gdk-pixbuf") @@ -381,7 +434,7 @@ in the GNOME project.") (define-public at-spi2-core (package (name "at-spi2-core") - (version "2.16.0") + (version "2.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -389,7 +442,7 @@ in the GNOME project.") name "-" version ".tar.xz")) (sha256 (base32 - "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw")))) + "1kq17w4fm51d49vzmglkxqdm6s0yvjvrpgw78r2hajf69jz5bmap")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -402,6 +455,8 @@ in the GNOME project.") (replace 'check ;; Run test-suite under a dbus session. (lambda _ + ;; Don't fail on missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") (zero? (system* "dbus-launch" "make" "check"))))))) (propagated-inputs ;; atspi-2.pc refers to all these. @@ -424,7 +479,7 @@ is part of the GNOME accessibility project.") (define-public at-spi2-atk (package (name "at-spi2-atk") - (version "2.16.0") + (version "2.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -432,7 +487,7 @@ is part of the GNOME accessibility project.") name "-" version ".tar.xz")) (sha256 (base32 - "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq")))) + "0bf1g5cj84rmx7p1q547vwbc0hlpcs2wrxnmv96lckfkhs9mzcf4")))) (build-system gnu-build-system) (arguments '(#:phases @@ -440,6 +495,7 @@ is part of the GNOME accessibility project.") (replace 'check ;; Run test-suite under a dbus session. (lambda _ + (setenv "DBUS_FATAL_WARNINGS" "0") (zero? (system* "dbus-launch" "make" "check"))))))) (propagated-inputs `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc @@ -514,7 +570,7 @@ application suites.") (define-public gtk+ (package (inherit gtk+-2) (name "gtk+") - (version "3.16.6") + (version "3.18.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -522,12 +578,13 @@ application suites.") name "-" version ".tar.xz")) (sha256 (base32 - "1gpzlnfrifc17yfk0zki6b2vmsfpf5cmrbh232s6iaan11np44jd")))) + "0lp1hn0qydxx03bianzzr0a4maqzsvylrkzr7c3p0050qihwbgjx")))) (propagated-inputs `(("at-spi2-atk" ,at-spi2-atk) ("atk" ,atk) ("gdk-pixbuf" ,gdk-pixbuf) ("libepoxy" ,libepoxy) + ("libxcursor" ,libxcursor) ("libxi" ,libxi) ("libxinerama" ,libxinerama) ("libxdamage" ,libxdamage) @@ -535,7 +592,13 @@ application suites.") (inputs `(("librsvg" ,librsvg) ;for gtk-encode-symbolic-svg ("libxml2" ,libxml2) - ("cups" ,cups))) ;for printing support + ;; XXX: colord depends on mozjs (through polkit), which fails on + ;; on non-intel systems now. + ;;("colord" ,colord) + ("cups" ,cups) ;for printing support + ;; XXX: rest depends on p11-kit, which fails on mips64el now. + ;;("rest" ,rest) + ("json-glib" ,json-glib))) (native-inputs `(("perl" ,perl) ("glib" ,glib "bin") @@ -731,14 +794,15 @@ documents.") (define-public cairomm (package (name "cairomm") - (version "1.11.2") + (version "1.12.0") (source (origin - (method url-fetch) - (uri (string-append "http://cairographics.org/releases/cairomm-" - version ".tar.gz")) - (sha256 - (base32 - "138052ybc58q5yl92m2p0br0k0a9g1pi9gfhmn4y220yih4pgxnc")))) + (method url-fetch) + (uri (string-append "mirror://gnome/sources/cairomm/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1rmgs6zjj2vaxh9hsa0944m23fdn1psycqh7bi984qd8jj1xljm5")))) (build-system gnu-build-system) (arguments ;; The examples lack -lcairo. @@ -759,7 +823,7 @@ library.") (define-public pangomm (package (name "pangomm") - (version "2.36.0") + (version "2.38.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -767,7 +831,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "1w11d05nkxglzg67rfa81vqghm75xhy6j396xmmp5mq8qx96knd8")))) + "12xwjvqfxhqblcv7641k0l6r8n3qifnrx8w9571izn1nbd81iyzg")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs @@ -785,7 +849,7 @@ library.") (define-public atkmm (package (name "atkmm") - (version "2.22.7") + (version "2.24.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -793,7 +857,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "06zrf2ymml2dzp53sss0d4ch4dk9v09jm8rglnrmwk4v81mq9gxz")))) + "08zd6s5c1q90wm8310mdrb5f2lj8v63wxihrybwyw13xlf6ivi16")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs @@ -808,7 +872,7 @@ toolkit.") (define-public gtkmm (package (name "gtkmm") - (version "3.16.0") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -816,9 +880,10 @@ toolkit.") name "-" version ".tar.xz")) (sha256 (base32 - "036xn22jkaf3akpid7w23b8vkqa3xxqz93mwacmyar5vw7slm3cv")))) + "0sxq700invkjpksn790gbnl8px8751kvgwn39663jx7dv89s37w2")))) (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs `(("pkg-config" ,pkg-config) + ("glib" ,glib "bin"))) ;for 'glib-compile-resources' (propagated-inputs `(("pangomm" ,pangomm) ("cairomm" ,cairomm) @@ -849,6 +914,9 @@ extensive documentation, including API reference and a tutorial.") (sha256 (base32 "1vpmjqv0aqb1ds0xi6nigxnhlr0c74090xzi15b92amlzkrjyfj4")))) + (arguments + '(#:configure-flags '("CPPFLAGS=-std=c++11"))) ; required by libsigc++ + (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs `(("pangomm" ,pangomm) ("cairomm" ,cairomm) @@ -1040,7 +1108,7 @@ information.") (home-page "http://www.gtk.org/gtk-doc/") (synopsis "Documentation generator from C source code") (description - "GTK-Doc generates API documentation from comments added to C code. It is + "GTK-Doc generates API documentation from comments added to C code. It is typically used to document the public API of GTK+ and GNOME libraries, but it can also be used to document application code.") (license license:gpl2+))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index e778bf0f6e..a4203f0f3b 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages flex) #:use-module (gnu packages libunistring) + #:use-module (gnu packages linux) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) #:use-module (gnu packages pkg-config) @@ -38,8 +39,12 @@ #:use-module (gnu packages base) #:use-module (gnu packages texinfo) #:use-module (gnu packages gettext) - #:use-module (gnu packages gdbm) + #:use-module (gnu packages databases) #:use-module (gnu packages python) + #:use-module (gnu packages gl) + #:use-module (gnu packages sdl) + #:use-module (gnu packages maths) + #:use-module (gnu packages image) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -189,40 +194,15 @@ without requiring the source code to be rewritten.") (define-public guile-next (package (inherit guile-2.0) (name "guile-next") - (version "20150815.00884bb") + (version "2.1.1") (source (origin - (method git-fetch) - (uri (git-reference - (url "git://git.sv.gnu.org/guile.git") - (commit "00884bb79fff41fdf5f22f24a74e366a94a14c9b"))) + (method url-fetch) + (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-" + version ".tar.xz")) (sha256 (base32 - "0qk8m9aq3i7pzw6npim58xmsvjqfz5kl1pkyb6b43awn2vydydi5")))) - - (arguments - (substitute-keyword-arguments `(;; Tests aren't passing for now. - ;; Obviously we should re-enable this! - #:tests? #f - ,@(package-arguments guile-2.0)) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'autogen - (lambda _ - (zero? (system* "sh" "autogen.sh")))) - (add-before 'autogen 'patch-/bin/sh - (lambda _ - (substitute* "build-aux/git-version-gen" - (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)))))) - (synopsis "Snapshot of what will become version 2.2 of GNU Guile") - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("flex" ,flex) - ("texinfo" ,texinfo) - ("gettext" ,gnu-gettext) - ,@(package-native-inputs guile-2.0))))) + "0nixmx7as79g8rr8bvznh59pwcc2jd22cfk17v309p57zp2c255r")))) + (synopsis "Snapshot of what will become version 2.2 of GNU Guile"))) (define-public guile-for-guile-emacs (package (inherit guile-next) @@ -235,13 +215,86 @@ without requiring the source code to be rewritten.") (commit "d8d9a8da05ec876acba81a559798eb5eeceb5a17"))) (sha256 (base32 - "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0")))))) + "00sprsshy16y8pxjy126hr2adqcvvzzz96hjyjwgg8swva1qh6b0")))) + (arguments + (substitute-keyword-arguments `(;; Tests aren't passing for now. + ;; Obviously we should re-enable this! + #:tests? #f + ,@(package-arguments guile-next)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'autogen + (lambda _ + (zero? (system* "sh" "autogen.sh")))) + (add-before 'autogen 'patch-/bin/sh + (lambda _ + (substitute* "build-aux/git-version-gen" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + #t)))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("flex" ,flex) + ("texinfo" ,texinfo) + ("gettext" ,gnu-gettext) + ,@(package-native-inputs guile-next))))) ;;; ;;; Extensions. ;;; +(define-public artanis + (package + (name "artanis") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (string-append "ftp://alpha.gnu.org/gnu/artanis/artanis-" + version ".tar.gz")) + (sha256 + (base32 + "1mc2zy6n9wnn4hzi3zp3jd6b5rlr0lv7fvh800xf4fyrxg0zia4g")))) + (build-system gnu-build-system) + ;; TODO: Add guile-dbi and guile-dbd optional dependencies. + (inputs `(("guile" ,guile-2.0))) + (native-inputs `(("bash" ,bash) ;for the `source' builtin + ("pkgconfig" ,pkg-config) + ("util-linux" ,util-linux))) ;for the `script' command + (arguments + '(#:make-flags + ;; TODO: The documentation must be built with the `docs' target. + (let* ((out (assoc-ref %outputs "out")) + (dir (string-append out "/share/guile/site/2.0"))) + ;; Don't use (%site-dir) for site paths. + (list (string-append "MOD_PATH=" dir) + (string-append "MOD_COMPILED_PATH=" dir))) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-before + 'install 'substitute-root-dir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" ;ignore the execution of bash.bashrc + ((" /etc/bash.bashrc") " /dev/null")) + (substitute* "Makefile" ;set the root of config files to OUT + ((" /etc") (string-append " " out "/etc"))) + (mkdir-p (string-append out "/bin")) ;for the `art' executable + #t)))))) + (synopsis "Web application framework written in Guile") + (description "GNU Artanis is a web application framework written in Guile +Scheme. A web application framework (WAF) is a software framework that is +designed to support the development of dynamic websites, web applications, web +services and web resources. The framework aims to alleviate the overhead +associated with common activities performed in web development. Artanis +provides several tools for web development: database access, templating +frameworks, session management, URL-remapping for RESTful, page caching, and +more.") + (home-page "https://www.gnu.org/software/artanis/") + (license (list gpl3+ lgpl3+)))) ;dual license + (define-public guile-reader (package (name "guile-reader") @@ -296,6 +349,10 @@ many readers as needed).") (string-append "--with-guilesitedir=" (assoc-ref %outputs "out") "/share/guile/site/2.0")) + + ;; Work around . + #:make-flags '("XFAIL_TESTS=curses_034_util.test") + #:phases (alist-cons-after 'install 'post-install (lambda* (#:key outputs #:allow-other-keys) @@ -412,6 +469,7 @@ http:://json.org specification. These are the main features: (uri (git-reference (url "https://github.com/ijp/minikanren.git") (commit "e844d85512f8c055d3f96143ee506007389a25e3"))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) @@ -478,6 +536,84 @@ slightly from miniKanren mainline. See http://minikanren.org/ for more on miniKanren generally.") (license expat))) +(define-public guile-irregex + (package + (name "guile-irregex") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (string-append + "http://synthcode.com/scheme/irregex/irregex-" + version + ".tar.gz")) + (sha256 + (base32 + "1b8jl7bycyl2ssp6sb1j24pp9hvqyxm85ki9bmwd50glyyjs5zay")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 match) + (guix build gnu-build-system)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (delete 'check) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let* ((out (assoc-ref outputs "out")) + (module-dir (string-append out "/share/guile/site/2.0")) + (source (assoc-ref inputs "source")) + (doc (string-append out "/share/doc/guile-irregex/")) + (guild (string-append (assoc-ref %build-inputs "guile") + "/bin/guild"))) + ;; Make installation directories. + (mkdir-p (string-append module-dir "/rx/source")) + (mkdir-p doc) + + ;; Compile .scm files and install. + (setenv "GUILE_AUTO_COMPILE" "0") + + (for-each (lambda (copy-info) + (match copy-info + ((src-file dest-file-basis) + (let* ((dest-file (string-append + module-dir dest-file-basis + ".scm")) + (go-file (string-append + module-dir dest-file-basis + ".go"))) + ;; Install source module. + (copy-file src-file + dest-file) + ;; Install compiled module. + (unless (zero? (system* guild "compile" + "-L" (getcwd) + "-o" go-file + src-file)) + (error (format #f "Failed to compile ~s to ~s!" + src-file dest-file))))))) + '(("irregex-guile.scm" "/rx/irregex") + ("irregex.scm" "/rx/source/irregex") + ;; Not really reachable via guile's packaging system, + ;; but nice to have around + ("irregex-utils.scm" "/rx/source/irregex-utils"))) + + ;; Also copy over the README. + (install-file "irregex.html" doc) + #t))))))) + (inputs + `(("guile" ,guile-2.0))) + (home-page "http://synthcode.com/scheme/irregex") + (synopsis "S-expression based regular expressions") + (description + "Irregex is an s-expression based alternative to your classic +string-based regular expressions. It implements SRFI 115 and is deeply +inspired by the SCSH regular expression system.") + (license bsd-3))) ;; There are two guile-gdbm packages, one using the FFI and one with ;; direct C bindings, hence the verbose name. @@ -491,6 +627,7 @@ See http://minikanren.org/ for more on miniKanren generally.") (uri (git-reference (url "https://github.com/ijp/guile-gdbm.git") (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246"))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "1j8wrsw7v9w6qkl47xz0rdikg50v16nn6kbs3lgzcymjzpa7babj")))) @@ -663,10 +800,45 @@ key-value cache and store.") (inputs `(("guile" ,guile-2.0) ("python" ,python))) - (synopsis "wisp is a whitespace to lisp syntax for Guile") - (description "wisp is a syntax for Guile which provides a Python-like + (synopsis "Whitespace to lisp syntax for Guile") + (description "Wisp is a syntax for Guile which provides a Python-like whitespace-significant language. It may be easier on the eyes for some users and in some situations.") (license gpl3+))) +(define-public guile-sly + (package + (name "guile-sly") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/sly/sly-" + version ".tar.gz")) + (sha256 + (base32 + "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "--with-libfreeimage-prefix=" + (assoc-ref %build-inputs "freeimage")) + (string-append "--with-libgslcblas-prefix=" + (assoc-ref %build-inputs "gsl"))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("guile" ,guile-2.0) + ("guile-sdl" ,guile-sdl) + ("guile-opengl" ,guile-opengl))) + (inputs + `(("gsl" ,gsl) + ("freeimage" ,freeimage) + ("mesa" ,mesa))) + (synopsis "2D/3D game engine for GNU Guile") + (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly +features a functional reactive programming interface and live coding +capabilities.") + (home-page "http://dthompson.us/pages/software/sly.html") + (license gpl3+))) + ;;; guile.scm ends here diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 652409b963..c0e968ba38 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -1,6 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Siniša Biđin +;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +21,10 @@ (define-module (gnu packages haskell) #:use-module (ice-9 regex) - #:use-module ((guix licenses) #:select (bsd-3 lgpl2.1)) + #:use-module ((guix licenses) #:select (bsd-3 + lgpl2.1 lgpl2.1+ gpl2+ gpl3+ + public-domain + expat)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -29,13 +34,20 @@ #:use-module (gnu packages perl) #:use-module (gnu packages compression) #:use-module (gnu packages elf) + #:use-module (gnu packages gl) + #:use-module (gnu packages sdl) #:use-module (gnu packages bootstrap) + #:use-module (gnu packages zip) + #:use-module (gnu packages gcc) #:use-module (gnu packages ghostscript) #:use-module (gnu packages libffi) #:use-module (gnu packages libedit) + #:use-module (gnu packages lua) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages python) + #:use-module (gnu packages pcre) + #:use-module ((gnu packages xml) #:select (libxml2)) #:use-module (gnu packages xorg)) (define ghc-bootstrap-x86_64-7.8.4 @@ -73,7 +85,7 @@ (define-public ghc (package (name "ghc") - (version "7.8.4") + (version "7.10.2") (source (origin (method url-fetch) @@ -81,7 +93,7 @@ version "/" name "-" version "-src.tar.xz")) (sha256 (base32 - "1i4254akbb4ym437rf469gc0m40bxm31blp6s1z1g15jmnacs6f3")))) + "1x8m4rp2v7ydnrz6z9g8x7z3x3d3pxhv2pixy7i7hkbqbdsp7kal")))) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux")) (outputs '("out" "doc")) @@ -98,7 +110,7 @@ version "/" name "-" version "-testsuite.tar.xz")) (sha256 (base32 - "0q95whf87y4mxjzwzy899g7z7l9pazq4si6iciyhxkcdhqq2ycyh")))))) + "0qp9da9ar87zbyn6wjgacd2ic1vgzbi3cklxnhsmjqyafv9qaj4b")))))) (native-inputs `(("perl" ,perl) ("python" ,python-2) ; for tests (fails with python-3) @@ -203,7 +215,7 @@ (string-append ghc-bootstrap-prefix "/lib/ghc-7.8.4/terminfo-0.4.0.0"))) (with-directory-excursion - (string-append ghc-bootstrap-path "/" ,name "-" ,version) + (string-append ghc-bootstrap-path "/ghc-7.8.4") (setenv "CONFIG_SHELL" (which "bash")) (setenv "LD_LIBRARY_PATH" gmp-lib) ;; The binaries have "/lib64/ld-linux-x86-64.so.2" hardcoded. @@ -231,7 +243,7 @@ 'configure 'install-bin (lambda* (#:key inputs outputs #:allow-other-keys) (with-directory-excursion - (string-append ghc-bootstrap-path "/" ,name "-" ,version) + (string-append ghc-bootstrap-path "/ghc-7.8.4") (zero? (system* "make" "install")))) %standard-phases))))))) (native-search-paths (list (search-path-specification @@ -247,6 +259,74 @@ interactive environment for the functional language Haskell.") (license bsd-3))) +(define-public ghc-hostname + (package + (name "ghc-hostname") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/hostname/" + "hostname-" version ".tar.gz")) + (sha256 + (base32 + "0p6gm4328946qxc295zb6vhwhf07l1fma82vd0siylnsnsqxlhwv")))) + (build-system haskell-build-system) + (home-page "https://hackage.haskell.org/package/hostname") + (synopsis "Hostname in Haskell") + (description "Network.HostName is a simple package providing a means to +determine the hostname.") + (license bsd-3))) + +(define-public ghc-libxml + (package + (name "ghc-libxml") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/libxml/" + "libxml-" version ".tar.gz")) + (sha256 + (base32 + "01zvk86kg726lf2vnlr7dxiz7g3xwi5a4ak9gcfbwyhynkzjmsfi")))) + (build-system haskell-build-system) + (inputs + `(("ghc-mtl" ,ghc-mtl) + ("libxml2" ,libxml2))) + (arguments + `(#:configure-flags + `(,(string-append "--extra-include-dirs=" + (assoc-ref %build-inputs "libxml2") + "/include/libxml2")))) + (home-page "http://hackage.haskell.org/package/libxml") + (synopsis "Haskell bindings to libxml2") + (description + "This library provides minimal Haskell binding to libxml2.") + (license bsd-3))) + +(define-public ghc-prelude-extras + (package + (name "ghc-prelude-extras") + (version "0.4.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/prelude-extras/prelude-extras-" + version + ".tar.gz")) + (sha256 + (base32 + "1q7mj9hysy747vimnlyrwsk1wb2axymxixa76fwcbcnmz3fi4llp")))) + (build-system haskell-build-system) + (home-page "http://github.com/ekmett/prelude-extras") + (synopsis "Higher order versions of Prelude classes") + (description "This library provides higher order versions of +@code{Prelude} classes to ease programming with polymorphic recursion and +reduce @code{UndecidableInstances}.") + (license bsd-3))) + (define-public ghc-data-default (package (name "ghc-data-default") @@ -367,6 +447,821 @@ package.") package.") (license bsd-3))) +(define-public ghc-haddock-library + (package + (name "ghc-haddock-library") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/haddock-library/haddock-library-" + version + ".tar.gz")) + (sha256 + (base32 + "0mhh2ppfhrvvi9485ipwbkv2fbgj35jvz3la02y3jlvg5ffs1c8g")))) + (build-system haskell-build-system) + (inputs + `(("ghc-base-compat" ,ghc-base-compat) + ("ghc-hspec" ,ghc-hspec) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://www.haskell.org/haddock/") + (synopsis + "Library exposing some functionality of Haddock") + (description + "Haddock is a documentation-generation tool for Haskell libraries. These +modules expose some functionality of it without pulling in the GHC dependency. +Please note that the API is likely to change so specify upper bounds in your +project if you can't release often. For interacting with Haddock itself, see +the ‘haddock’ package.") + (license bsd-3))) + +(define-public ghc-haddock-api + (package + (name "ghc-haddock-api") + (version "2.16.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/haddock-api/haddock-api-" + version + ".tar.gz")) + (sha256 + (base32 + "1spd5axg1pdjv4dkdb5gcwjsc8gg37qi4mr2k2db6ayywdkis1p2")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-paths" ,ghc-paths) + ("ghc-haddock-library" ,ghc-haddock-library))) + (home-page "http://www.haskell.org/haddock/") + (synopsis "API for documentation-generation tool Haddock") + (description "This package provides an API to Haddock, the +documentation-generation tool for Haskell libraries.") + (license bsd-3))) + +(define-public ghc-haddock + (package + (name "ghc-haddock") + (version "2.16.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/haddock/haddock-" + version + ".tar.gz")) + (sha256 + (base32 + "1mnnvc5jqp6n6rj7xw8wdm0z2xp9fndkz11c8p3vbljsrcqd3v26")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Tests break with GHC 7.10.2, fixed + ; upstream. See + ; + (inputs `(("ghc-haddock-api" ,ghc-haddock-api))) + (home-page "http://www.haskell.org/haddock/") + (synopsis + "Documentation-generation tool for Haskell libraries") + (description + "Haddock is a documentation-generation tool for Haskell libraries.") + (license bsd-3))) + +(define-public ghc-simple-reflect + (package + (name "ghc-simple-reflect") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/simple-reflect/simple-reflect-" + version + ".tar.gz")) + (sha256 + (base32 + "1dpcf6w3cf1sfl9bnlsx04x7aghw029glj5d05qzrsnms2rlw8iq")))) + (build-system haskell-build-system) + (home-page + "http://twanvl.nl/blog/haskell/simple-reflection-of-expressions") + (synopsis + "Simple reflection of expressions containing variables") + (description + "This package allows simple reflection of expressions containing +variables. Reflection here means that a Haskell expression is turned into a +string. The primary aim of this package is teaching and understanding; there +are no options for manipulating the reflected expressions beyond showing +them.") + (license bsd-3))) + +(define-public ghc-multipart + (package + (name "ghc-multipart") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/multipart/multipart-" + version + ".tar.gz")) + (sha256 + (base32 + "0g04jhyw1ib1s7c9bcldyyn4n90qd9x7dmvic4vgq57bgcqgnhz5")))) + (build-system haskell-build-system) + (inputs `(("ghc-parsec" ,ghc-parsec))) + (home-page + "http://www.github.com/silkapp/multipart") + (synopsis + "HTTP multipart library") + (description + "HTTP multipart split out of the cgi package, for Haskell.") + (license bsd-3))) + +(define-public ghc-html + (package + (name "ghc-html") + (version "1.0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/html/html-" + version + ".tar.gz")) + (sha256 + (base32 + "0q9hmfii62kc82ijlg238fxrzxhsivn42x5wd6ffcr9xldg4jd8c")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/html") + (synopsis "HTML combinator library") + (description + "This package contains a combinator library for constructing HTML +documents.") + (license bsd-3))) + +(define-public ghc-xhtml + (package + (name "ghc-xhtml") + (version "3000.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/xhtml/xhtml-" + version + ".tar.gz")) + (sha256 + (base32 + "1n6wgzxbj8xf0wf1il827qidphnffb5vzhwzqlxhh70c2y10f0ik")))) + (build-system haskell-build-system) + (home-page "https://github.com/haskell/xhtml") + (synopsis "XHTML combinator library") + (description + "This package provides combinators for producing XHTML 1.0, including the +Strict, Transitional and Frameset variants.") + (license bsd-3))) + +(define-public ghc-haskell-src + (package + (name "ghc-haskell-src") + (version "1.0.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/haskell-src/haskell-src-" + version + ".tar.gz")) + (sha256 + (base32 + "19lilhpwnjb7cks9fq1ipnc8f7dwxy0ri3dgjkdxs3i355byw99a")))) + (build-system haskell-build-system) + (inputs + `(("ghc-happy" ,ghc-happy) + ("ghc-syb" ,ghc-syb))) + (home-page + "http://hackage.haskell.org/package/haskell-src") + (synopsis + "Support for manipulating Haskell source code") + (description + "The 'haskell-src' package provides support for manipulating Haskell +source code. The package provides a lexer, parser and pretty-printer, and a +definition of a Haskell abstract syntax tree (AST). Common uses of this +package are to parse or generate Haskell 98 code.") + (license bsd-3))) + +(define-public ghc-alex + (package + (name "ghc-alex") + (version "3.1.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/alex/alex-" + version + ".tar.gz")) + (sha256 + (base32 + "17x13nbbr79xgdlzywjqw19vcl6iygjnssjnxnajgijkv764wknn")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Tests broken for GHC 7.10. Fixed + ; upstream, see + ; + (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://www.haskell.org/alex/") + (synopsis + "Tool for generating lexical analysers in Haskell") + (description + "Alex is a tool for generating lexical analysers in Haskell. It takes a +description of tokens based on regular expressions and generates a Haskell +module containing code for scanning text efficiently. It is similar to the +tool lex or flex for C/C++.") + (license bsd-3))) + +(define-public ghc-cgi + (package + (name "ghc-cgi") + (version "3001.2.2.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/cgi/cgi-" + version + ".tar.gz")) + (sha256 + (base32 + "0q1pxpa8gi42c0hsidcdkhk5xr5anfrvhqsn3iksr9c0rllhz193")))) + (build-system haskell-build-system) + (inputs + `(("ghc-parsec" ,ghc-parsec) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-old-time" ,ghc-old-time) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-multipart" ,ghc-multipart) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-network" ,ghc-network) + ("ghc-mtl" ,ghc-mtl))) + (home-page + "https://github.com/cheecheeo/haskell-cgi") + (synopsis "Library for writing CGI programs") + (description + "This is a Haskell library for writing CGI programs.") + (license bsd-3))) + +(define-public ghc-cmdargs + (package + (name "ghc-cmdargs") + (version "0.10.13") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/cmdargs/cmdargs-" + version + ".tar.gz")) + (sha256 + (base32 + "0vmz7f0ssrqlp6wzmc0mjqj4qczfgk58g0lr0yz7jamamlgpq4b6")))) + (build-system haskell-build-system) + (home-page + "http://community.haskell.org/~ndm/cmdargs/") + (synopsis "Command line argument processing") + (description + "This library provides an easy way to define command line parsers.") + (license bsd-3))) + +(define-public ghc-happy + (package + (name "ghc-happy") + (version "1.19.5") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/happy/happy-" + version + ".tar.gz")) + (sha256 + (base32 + "1nj353q4z1g186fpjzf0dnsg71qhxqpamx8jy89rjjvv3p0kmw32")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ;; cannot satisfy -package mtl. Possible Cabal + ;; issue. + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl))) + (home-page "https://hackage.haskell.org/package/happy") + (synopsis "Parser generator for Haskell") + (description "Happy is a parser generator for Haskell. Given a grammar +specification in BNF, Happy generates Haskell code to parse the grammar. +Happy works in a similar way to the yacc tool for C.") + (license bsd-3))) + +(define-public ghc-haskell-src-exts + (package + (name "ghc-haskell-src-exts") + (version "1.16.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/haskell-src-exts/haskell-src-exts-" + version + ".tar.gz")) + (sha256 + (base32 + "1h8gjw5g92rvvzadqzpscg73x7ajvs1wlphrh27afim3scdd8frz")))) + (build-system haskell-build-system) + (propagated-inputs + `(("cpphs" ,cpphs) + ("ghc-mtl" ,ghc-mtl) + ("ghc-happy" ,ghc-happy) + ("ghc-syb" ,ghc-syb))) + (native-inputs + `(("ghc-smallcheck" ,ghc-smallcheck) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck) + ("ghc-tasty-golden" ,ghc-tasty-golden))) + (home-page "https://github.com/haskell-suite/haskell-src-exts") + (synopsis "Library for manipulating Haskell source") + (description "Haskell-Source with Extensions (HSE, haskell-src-exts) is an +extension of the standard @code{haskell-src} package, and handles most +registered syntactic extensions to Haskell. All extensions implemented in GHC +are supported. Apart from these standard extensions, it also handles regular +patterns as per the HaRP extension as well as HSX-style embedded XML syntax.") + (license bsd-3))) + +(define-public hlint + (package + (name "hlint") + (version "1.9.21") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" name + "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "14v3rdjjlml9nimdk7d5dvir2bw78ai49yylvms9lnzmw29s3546")))) + (build-system haskell-build-system) + (inputs + `(("cpphs" ,cpphs) + ("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-haskell-src-exts" ,ghc-haskell-src-exts) + ("ghc-uniplate" ,ghc-uniplate) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-extra" ,ghc-extra) + ("hscolour" ,hscolour))) + (home-page "http://community.haskell.org/~ndm/hlint/") + (synopsis "Suggest improvements for Haskell source code") + (description "HLint reads Haskell programs and suggests changes that +hopefully make them easier to read. HLint also makes it easy to disable +unwanted suggestions, and to add your own custom suggestions.") + (license bsd-3))) + +(define-public ghc-resourcet + (package + (name "ghc-resourcet") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/resourcet/resourcet-" + version + ".tar.gz")) + (sha256 + (base32 + "0zhsaaa4n8ry76vjih519a8npm2hrzk10d5asrgllcwpzmifl41y")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-mtl" ,ghc-mtl) + ("ghc-mmorph" ,ghc-mmorph) + ("ghc-exceptions" ,ghc-exceptions))) + (inputs + `(("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-hspec" ,ghc-hspec))) + (home-page "http://github.com/snoyberg/conduit") + (synopsis "Deterministic allocation and freeing of scarce resources") + (description "ResourceT is a monad transformer which creates a region of +code where you can safely allocate resources.") + (license bsd-3))) + +(define-public ghc-xss-sanitize + (package + (name "ghc-xss-sanitize") + (version "0.3.5.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/xss-sanitize/xss-sanitize-" + version + ".tar.gz")) + (sha256 + (base32 + "1j2qrn2dbfx01m7zyk9ilgnp9zjwq9mk62b0rdal4zkg4vh212h0")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-tagsoup" ,ghc-tagsoup) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-css-text" ,ghc-css-text) + ("ghc-network-uri" ,ghc-network-uri))) + (inputs + `(("ghc-text" ,ghc-text) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-hspec" ,ghc-hspec) + ("ghc-hunit" ,ghc-hunit))) + (home-page "http://github.com/yesodweb/haskell-xss-sanitize") + (synopsis "Sanitize untrusted HTML to prevent XSS attacks") + (description "This library provides @code{sanitizeXSS}. Run untrusted +HTML through @code{Text.HTML.SanitizeXSS.sanitizeXSS} to prevent XSS +attacks.") + (license bsd-3))) + +(define-public ghc-objectname + (package + (name "ghc-objectname") + (version "1.1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/ObjectName/ObjectName-" + version + ".tar.gz")) + (sha256 + (base32 + "0kh5fb9ykag6rfsm3f0bx3w323s18w2cyry34w5xgli5ncqimadg")))) + (build-system haskell-build-system) + (home-page "https://hackage.haskell.org/package/ObjectName") + (synopsis "Helper library for Haskell OpenGL") + (description "This tiny package contains the class ObjectName, which +corresponds to the general notion of explicitly handled identifiers for API +objects, e.g. a texture object name in OpenGL or a buffer object name in +OpenAL.") + (license bsd-3))) + +(define-public ghc-sdl + (package + (name "ghc-sdl") + (version "0.6.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/SDL/SDL-" + version + ".tar.gz")) + (sha256 + (base32 + "1sa3zx3vrs1gbinxx33zwq0x2bsf3i964bff7419p7vzidn36k46")))) + (build-system haskell-build-system) + (inputs + `(("sdl" ,sdl))) + (home-page "https://hackage.haskell.org/package/SDL") + (synopsis "LibSDL for Haskell") + (description "Simple DirectMedia Layer (libSDL) is a cross-platform +multimedia library designed to provide low level access to audio, keyboard, +mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used +by MPEG playback software, emulators, and many popular games, including the +award winning Linux port of \"Civilization: Call To Power.\"") + (license bsd-3))) + +(define-public ghc-sdl-mixer + (package + (name "ghc-sdl-mixer") + (version "0.6.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/SDL-mixer/SDL-mixer-" + version + ".tar.gz")) + (sha256 + (base32 + "0md3238hx79mxb9a7l43kg3b3d28x4mqvj0hjsbsh15ajnvy9x2z")))) + (build-system haskell-build-system) + (arguments + `(#:configure-flags + (let* ((sdl-mixer (assoc-ref %build-inputs "sdl-mixer")) + (sdl-mixer-include (string-append sdl-mixer "/include/SDL"))) + (list (string-append "--extra-include-dirs=" sdl-mixer-include))))) + (propagated-inputs + `(("ghc-sdl" ,ghc-sdl))) + (inputs + `(("sdl-mixer" ,sdl-mixer))) + (home-page "http://hackage.haskell.org/package/SDL-mixer") + (synopsis "Haskell bindings to libSDL_mixer") + (description "SDL_mixer is a sample multi-channel audio mixer library. It +supports any number of simultaneously playing channels of 16 bit stereo audio, +plus a single channel of music, mixed by the popular MikMod MOD, Timidity +MIDI, Ogg Vorbis, and SMPEG MP3 libraries.") + (license bsd-3))) + +(define-public ghc-sdl-image + (package + (name "ghc-sdl-image") + (version "0.6.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/SDL-image/SDL-image-" + version + ".tar.gz")) + (sha256 + (base32 + "1m02q2426qp8m8pzz2jkk4srk2vb3j3ickiaga5jx9rkkhz732zq")))) + (build-system haskell-build-system) + (arguments + `(#:configure-flags + (let* ((sdl-image (assoc-ref %build-inputs "sdl-image")) + (sdl-image-include (string-append sdl-image "/include/SDL"))) + (list (string-append "--extra-include-dirs=" sdl-image-include))))) + (propagated-inputs + `(("ghc-sdl" ,ghc-sdl))) + (inputs + `(("sdl-image" ,sdl-image))) + (home-page "http://hackage.haskell.org/package/SDL-image") + (synopsis "Haskell bindings to libSDL_image") + (description "SDL_image is an image file loading library. It loads images +as SDL surfaces, and supports the following formats: BMP, GIF, JPEG, LBM, PCX, +PNG, PNM, TGA, TIFF, XCF, XPM, XV.") + (license bsd-3))) + +(define-public ghc-half + (package + (name "ghc-half") + (version "0.2.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/half/half-" + version + ".tar.gz")) + (sha256 + (base32 + "0zhwc6ps5w4ccnxl8sy623z4rjsafmnry69jpkw4hrbq11l402f1")))) + (build-system haskell-build-system) + (home-page "http://github.com/ekmett/half") + (synopsis "Half-precision floating-point computations") + (description "This library provides a half-precision floating-point +computation library for Haskell.") + (license bsd-3))) + +(define-public ghc-openglraw + (package + (name "ghc-openglraw") + (version "2.5.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/OpenGLRaw/OpenGLRaw-" + version + ".tar.gz")) + (sha256 + (base32 + "1kfq24mxg922ml3kkmym2qfpc56jbmrfbiix4rc2cxlwv05i191k")))) + (build-system haskell-build-system) + (inputs + `(("ghc-half" ,ghc-half) + ("glu" ,glu) + ("ghc-text" ,ghc-text))) + (home-page "http://www.haskell.org/haskellwiki/Opengl") + (synopsis "Raw Haskell bindings for the OpenGL graphics system") + (description "OpenGLRaw is a raw Haskell binding for the OpenGL 4.5 +graphics system and lots of OpenGL extensions. It is basically a 1:1 mapping +of OpenGL's C API, intended as a basis for a nicer interface. OpenGLRaw +offers access to all necessary functions, tokens and types plus a general +facility for loading extension entries. The module hierarchy closely mirrors +the naming structure of the OpenGL extensions, making it easy to find the +right module to import. All API entries are loaded dynamically, so no special +C header files are needed for building this package. If an API entry is not +found at runtime, a userError is thrown.") + (license bsd-3))) + +(define-public ghc-glut + (package + (name "ghc-glut") + (version "2.7.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/GLUT/GLUT-" + version + ".tar.gz")) + (sha256 + (base32 + "1qfilpc10jm47anan44c20y8mh76f2dv09m5d22gk0f7am7hg4k2")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-statevar" ,ghc-statevar) + ("ghc-openglraw" ,ghc-openglraw) + ("freeglut" ,freeglut))) + (inputs + `(("ghc-opengl" ,ghc-opengl))) + (home-page "http://www.haskell.org/haskellwiki/Opengl") + (synopsis "Haskell bindings for the OpenGL Utility Toolkit") + (description "This library provides Haskell bindings for the OpenGL +Utility Toolkit, a window system-independent toolkit for writing OpenGL +programs.") + (license bsd-3))) + +(define-public ghc-gluraw + (package + (name "ghc-gluraw") + (version "1.5.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/GLURaw/GLURaw-" + version + ".tar.gz")) + (sha256 + (base32 + "0gscd9lhp9mb10q8s716nx26m8qng9xbb4h6b3f48zzgkc1sy96x")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-openglraw" ,ghc-openglraw))) + (home-page "http://www.haskell.org/haskellwiki/Opengl") + (synopsis "Raw Haskell bindings GLU") + (description "GLURaw is a raw Haskell binding for the GLU 1.3 OpenGL +utility library. It is basically a 1:1 mapping of GLU's C API, intended as a +basis for a nicer interface.") + (license bsd-3))) + +(define-public ghc-opengl + (package + (name "ghc-opengl") + (version "2.12.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/OpenGL/OpenGL-" + version + ".tar.gz")) + (sha256 + (base32 + "1mcfb167jl75qc2hgylh83vf2jqizvyvkvhhb72adi2crc3zqz4b")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-text" ,ghc-text) + ("ghc-objectname" ,ghc-objectname) + ("ghc-gluraw" ,ghc-gluraw) + ("ghc-statevar" ,ghc-statevar) + ("ghc-openglraw" ,ghc-openglraw))) + (home-page "http://www.haskell.org/haskellwiki/Opengl") + (synopsis "Haskell bindings for the OpenGL graphics system") + (description "This package provides Haskell bindings for the OpenGL +graphics system (GL, version 4.5) and its accompanying utility library (GLU, +version 1.3).") + (license bsd-3))) + +(define-public ghc-streaming-commons + (package + (name "ghc-streaming-commons") + (version "0.1.14.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/streaming-commons/streaming-commons-" + version + ".tar.gz")) + (sha256 + (base32 + "12nw9bwvy6zrabkgvbp371klca3ds6qjlfncg1b8pbwx1y7m8c8h")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-random" ,ghc-random))) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-async" ,ghc-async) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-hspec" ,ghc-hspec) + ("ghc-stm" ,ghc-stm) + ("ghc-text" ,ghc-text) + ("ghc-network" ,ghc-network) + ("ghc-zlib" ,ghc-zlib))) + (home-page "https://hackage.haskell.org/package/streaming-commons") + (synopsis "Conduit and pipes needed by some streaming data libraries") + (description "Provides low-dependency functionality commonly needed by +various Haskell streaming data libraries, such as @code{conduit} and +@code{pipe}s.") + (license bsd-3))) + +(define-public cpphs + (package + (name "cpphs") + (version "1.19.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" name "/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1njpmxgpah5pcqppcl1cxb5xicf6xlqrd162qm12khp9hainlm72")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-polyparse" ,ghc-polyparse) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-old-time" ,ghc-old-time))) + (home-page "http://projects.haskell.org/cpphs/") + (synopsis "Liberalised re-implementation of cpp, the C pre-processor") + (description "Cpphs is a re-implementation of the C pre-processor that is +both more compatible with Haskell, and itself written in Haskell so that it +can be distributed with compilers. This version of the C pre-processor is +pretty-much feature-complete and compatible with traditional (K&R) +pre-processors. Additional features include: a plain-text mode; an option to +unlit literate code files; and an option to turn off macro-expansion.") + (license (list lgpl2.1+ gpl3+)))) + +(define-public ghc-reflection + (package + (name "ghc-reflection") + (version "2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/reflection/reflection-" + version + ".tar.gz")) + (sha256 + (base32 + "10w3m6v3g6am203wbrikdbp57x9vw6b4jsh7bxdzsss4nmpm81zg")))) + (build-system haskell-build-system) + (inputs `(("ghc-tagged" ,ghc-tagged))) + (home-page "http://github.com/ekmett/reflection") + (synopsis "Reify arbitrary terms into types that can be reflected back +into terms") + (description "This package addresses the 'configuration problem' which is +propogating configurations that are available at run-time, allowing multiple +configurations to coexist without resorting to mutable global variables or +@code{System.IO.Unsafe.unsafePerformIO}.") + (license bsd-3))) + +(define-public ghc-old-locale + (package + (name "ghc-old-locale") + (version "1.0.0.7") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/old-locale/old-locale-" + version + ".tar.gz")) + (sha256 + (base32 "0l3viphiszvz5wqzg7a45zp40grwlab941q5ay29iyw8p3v8pbyv")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/old-locale") + (synopsis "Adapt to locale conventions") + (description + "This package provides the ability to adapt to locale conventions such as +date and time formats.") + (license bsd-3))) + +(define-public ghc-old-time + (package + (name "ghc-old-time") + (version "1.1.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/old-time/old-time-" + version + ".tar.gz")) + (sha256 + (base32 + "1h9b26s3kfh2k0ih4383w90ibji6n0iwamxp6rfp2lbq1y5ibjqw")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-old-locale" ,ghc-old-locale))) + (home-page "http://hackage.haskell.org/package/old-time") + (synopsis "Time compatibility library for Haskell") + (description "Old-time is a package for backwards compatibility with the +old @code{time} library. For new projects, the newer +@uref{http://hackage.haskell.org/package/time, time library} is recommended.") + (license bsd-3))) + (define-public ghc-data-default-instances-old-locale (package (name "ghc-data-default-instances-old-locale") @@ -382,7 +1277,8 @@ package.") (base32 "00h81i5phib741yj517p8mbnc48myvfj8axzsw44k34m48lv1lv0")))) (build-system haskell-build-system) (propagated-inputs - `(("ghc-data-default-class" ,ghc-data-default-class))) + `(("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-old-locale" ,ghc-old-locale))) (home-page "http://hackage.haskell.org/package/data-default-instances-old-locale") (synopsis "Default instances for types in old-locale") @@ -393,7 +1289,7 @@ package.") (define-public ghc-dlist (package (name "ghc-dlist") - (version "0.7.1.1") + (version "0.7.1.2") (source (origin (method url-fetch) @@ -402,9 +1298,10 @@ package.") version ".tar.gz")) (sha256 - (base32 "1zayvxvkan2s2ixajdr3f5rn1gzhprzv6cww4cbpwjhzw0l7zc08")))) - (arguments `(#:tests? #f)) + (base32 "10rp96rryij7d8gz5kv8ygc6chm1624ck5mbnqs2a3fkdzqj2b9k")))) (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck))) (home-page "https://github.com/spl/dlist") (synopsis "Difference lists") (description @@ -436,7 +1333,7 @@ versions of GHC (i.e., < 6.10).") (define-public cabal-install (package (name "cabal-install") - (version "1.18.1.0") + (version "1.22.6.0") (source (origin (method url-fetch) @@ -445,7 +1342,7 @@ versions of GHC (i.e., < 6.10).") version ".tar.gz")) (sha256 - (base32 "1r1shhvnpgxf91rmbv3wa1rkd24plbgr6bpz3aj80ir0z3zbdayn")))) + (base32 "1d5h7h2wjwc2s3dvsvzjgmmfrfl2312ym2h6kyjgm9wnaqw9w8wx")))) (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. (build-system haskell-build-system) (propagated-inputs @@ -467,7 +1364,7 @@ installation of Haskell libraries and programs.") (define-public ghc-mtl (package (name "ghc-mtl") - (version "2.1.3.1") + (version "2.2.1") (outputs '("out" "doc")) (source (origin @@ -478,18 +1375,17 @@ installation of Haskell libraries and programs.") ".tar.gz")) (sha256 (base32 - "1xpn2wjmqbh2cg1yssc6749xpgcqlrrg4iilwqgkcjgvaxlpdbvp")))) + "1icdbj2rshzn0m1zz5wa7v3xvkf6qw811p4s7jgqwvx1ydwrvrfa")))) (build-system haskell-build-system) (home-page "http://github.com/ekmett/mtl") (synopsis "Monad classes, using functional dependencies") - (description - "Monad classes using functional dependencies, with instances -for various monad transformers, inspired by the paper -'Functional Programming with Overloading and Higher-Order Polymorphism', -by Mark P Jones, in 'Advanced School of Functional Programming', 1995 -http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") - (license bsd-3))) + (description "Monad classes using functional dependencies, with instances +for various monad transformers, inspired by the paper 'Functional Programming +with Overloading and Higher-Order Polymorphism', by Mark P Jones, in 'Advanced +School of Functional Programming', 1995. See +@uref{http://web.cecs.pdx.edu/~mpj/pubs/springschool.html, the paper}.") + (license bsd-3))) (define-public ghc-paths (package @@ -517,7 +1413,7 @@ http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") (define-public ghc-utf8-string (package (name "ghc-utf8-string") - (version "0.3.8") + (version "1.0.1.1") (source (origin (method url-fetch) @@ -526,16 +1422,37 @@ http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.") version ".tar.gz")) (sha256 - (base32 "1h29dn0scsfkhmkg14ywq9178lw40ah1r36w249zfzqr02y7qxc0")))) + (base32 "0h7imvxkahiy8pzr8cpsimifdfvv18lizrb33k6mnq70rcx9w2zv")))) (build-system haskell-build-system) (home-page "http://github.com/glguy/utf8-string/") (synopsis "Support for reading and writing UTF8 Strings") (description - "A UTF8 layer for Strings. The utf8-string package provides operations + "A UTF8 layer for Strings. The utf8-string package provides operations for encoding UTF8 strings to Word8 lists and back, and for reading and writing UTF8 without truncation.") (license bsd-3))) +(define-public ghc-setenv + (package + (name "ghc-setenv") + (version "0.1.1.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/setenv/setenv-" + version + ".tar.gz")) + (sha256 + (base32 + "0cnbgrvb9byyahb37zlqrj05rj25v190crgcw8wmlgf0mwwxyn73")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/setenv") + (synopsis "Library for setting environment variables") + (description "This package provides a Haskell library for setting +environment variables.") + (license expat))) + (define-public ghc-x11 (package (name "ghc-x11") @@ -547,12 +1464,6 @@ UTF8 without truncation.") "X11-" version ".tar.gz")) (sha256 (base32 "1kzjcynm3rr83ihqx2y2d852jc49da4p18gv6jzm7g87z22x85jj")))) - (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-sh - (lambda _ - (setenv "CONFIG_SHELL" "sh") - #t))))) (build-system haskell-build-system) (inputs `(("libx11" ,libx11) @@ -596,6 +1507,29 @@ bindings are a direct translation of the C bindings.") parts.") (license lgpl2.1))) +(define-public ghc-stringbuilder + (package + (name "ghc-stringbuilder") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/stringbuilder/stringbuilder-" + version + ".tar.gz")) + (sha256 + (base32 + "1ap95xphqnrhv64c2a137wqslkdmb2jjd9ldb17gs1pw48k8hrl9")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: circular dependencies with tests + ; enabled + (home-page "http://hackage.haskell.org/package/stringbuilder") + (synopsis "Writer monad for multi-line string literals") + (description "This package provides a writer monad for multi-line string +literals.") + (license expat))) + (define-public ghc-zlib (package (name "ghc-zlib") @@ -672,7 +1606,7 @@ access to the full zlib feature set.") (define-public ghc-text (package (name "ghc-text") - (version "1.2.0.4") + (version "1.2.1.3") (outputs '("out" "doc")) (source (origin @@ -683,7 +1617,7 @@ access to the full zlib feature set.") ".tar.gz")) (sha256 (base32 - "004p1c74crs8wmjafwsmw3mmycspq1j8fpm1lvfpq6acha7bnpc6")))) + "0gzqx5cpkdhshbz9xss51mpyq23pnf8dwjz4h3irbv2ryaa4qdlq")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. @@ -702,7 +1636,7 @@ in terms of large data quantities and high speed.") (define-public ghc-hashable (package (name "ghc-hashable") - (version "1.2.3.2") + (version "1.2.3.3") (outputs '("out" "doc")) (source (origin @@ -713,7 +1647,7 @@ in terms of large data quantities and high speed.") ".tar.gz")) (sha256 (base32 - "0h9295pv2sgbaqlwpwbx2bap6nngm0jcdhkqham1wpjwyxqgqrlc")))) + "0kp4aj0x1iicz9qirpqxxqd8x5g1njbapxk1d90n406w3xykz4pw")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. @@ -777,7 +1711,7 @@ library, including the ability to split random number generators.") (define-public ghc-primitive (package (name "ghc-primitive") - (version "0.5.4.0") + (version "0.6.1.0") (outputs '("out" "doc")) (source (origin @@ -788,7 +1722,7 @@ library, including the ability to split random number generators.") ".tar.gz")) (sha256 (base32 - "05gdgj383xdrdkhxh26imlvs8ji0z28ny38ms9snpvv5i8l2lg10")))) + "1j1q7l21rdm8kfs93vibr3xwkkhqis181w2k6klfhx5g5skiywwk")))) (build-system haskell-build-system) (home-page "https://github.com/haskell/primitive") @@ -797,6 +1731,98 @@ library, including the ability to split random number generators.") "This package provides various primitive memory-related operations.") (license bsd-3))) +(define-public ghc-test-framework + (package + (name "ghc-test-framework") + (version "0.8.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/test-framework/" + "test-framework-" version ".tar.gz")) + (sha256 + (base32 + "0wxjgdvb1c4ykazw774zlx86550848wbsvgjgcrdzcgbb9m650vq")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-libxml" ,ghc-libxml) + ("ghc-quickcheck" ,ghc-quickcheck))) + (propagated-inputs + `(("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) + ("ghc-hostname" ,ghc-hostname) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-random" ,ghc-random) + ("ghc-regex-posix" ,ghc-regex-posix) + ("ghc-xml" ,ghc-xml))) + (home-page "https://batterseapower.github.io/test-framework/") + (synopsis "Framework for running and organising tests") + (description + "This package allows tests such as QuickCheck properties and HUnit test +cases to be assembled into test groups, run in parallel (but reported in +deterministic order, to aid diff interpretation) and filtered and controlled +by command line options. All of this comes with colored test output, progress +reporting and test statistics output.") + (license bsd-3))) + +(define-public ghc-test-framework-hunit + (package + (name "ghc-test-framework-hunit") + (version "0.3.0.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "test-framework-hunit/test-framework-hunit-" + version ".tar.gz")) + (sha256 + (base32 + "1h0h55kf6ff25nbfx1mhliwyknc0glwv3zi78wpzllbjbs7gvyfk")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions) + ("ghc-hunit" ,ghc-hunit) + ("ghc-test-framework" ,ghc-test-framework))) + (home-page "https://batterseapower.github.io/test-framework/") + (synopsis "HUnit support for test-framework") + (description + "This package provides HUnit support for the test-framework package.") + (license bsd-3))) + +(define-public ghc-test-framework-quickcheck2 + (package + (name "ghc-test-framework-quickcheck2") + (version "0.3.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "test-framework-quickcheck2/" + "test-framework-quickcheck2-" version ".tar.gz")) + (sha256 + (base32 + "12p1zwrsz35r3j5gzbvixz9z1h5643rhihf5gqznmc991krwd5nc")) + (modules '((guix build utils))) + (snippet + ;; The Hackage page and the cabal file linked there for this package + ;; both list 2.9 as the upper version limit, but the source tarball + ;; specifies 2.8. Assume the Hackage page is correct. + '(substitute* "test-framework-quickcheck2.cabal" + (("QuickCheck >= 2.4 && < 2.8") "QuickCheck >= 2.4 && < 2.9"))))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-random" ,ghc-random) + ("ghc-test-framework" ,ghc-test-framework))) + (home-page "https://batterseapower.github.io/test-framework/") + (synopsis "QuickCheck2 support for test-framework") + (description + "This packages provides QuickCheck2 support for the test-framework +package.") + (license bsd-3))) + (define-public ghc-tf-random (package (name "ghc-tf-random") @@ -825,10 +1851,1047 @@ the paper \"Splittable Pseudorandom Number Generators Using Cryptographic Hashing\" by Claessen, Pałka for details and the rationale of the design.") (license bsd-3))) +(define-public ghc-transformers-base + (package + (name "ghc-transformers-base") + (version "0.4.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/transformers-base/transformers-base-" + version + ".tar.gz")) + (sha256 + (base32 + "11r3slgpgpra6zi2kjg3g60gvv17b1fh6qxipcpk8n86qx7lk8va")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-stm" ,ghc-stm))) + (inputs + `(("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page + "http://hackage.haskell.org/package/transformers-compat") + (synopsis + "Backported transformer library") + (description + "Backported versions of types that were added to transformers in +transformers 0.3 and 0.4 for users who need strict transformers 0.2 or 0.3 +compatibility to run on old versions of the platform.") + (license bsd-3))) + +(define-public ghc-transformers-compat + (package + (name "ghc-transformers-compat") + (version "0.4.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/transformers-compat" + "/transformers-compat-" version ".tar.gz")) + (sha256 + (base32 + "0lmg8ry6bgigb0v2lg0n74lxi8z5m85qq0qi4h1k9llyjb4in8ym")))) + (build-system haskell-build-system) + (home-page "http://github.com/ekmett/transformers-compat/") + (synopsis "Small compatibility shim between transformers 0.3 and 0.4") + (description "This package includes backported versions of types that were +added to transformers in transformers 0.3 and 0.4 for users who need strict +transformers 0.2 or 0.3 compatibility to run on old versions of the platform, +but also need those types.") + (license bsd-3))) + +(define-public ghc-unix-time + (package + (name "ghc-unix-time") + (version "0.3.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/unix-time/unix-time-" + version + ".tar.gz")) + (sha256 + (base32 + "0dyvyxwaffb94bgri1wc4b9wqaasy32pyjn0lww3dqblxv8fn5ax")))) + (build-system haskell-build-system) + (arguments + `(#:tests? #f)) ; FIXME: Test fails with "System.Time not found". This + ; is weird, that should be provided by GHC 7.10.2. + (propagated-inputs + `(("ghc-old-time" ,ghc-old-time) + ("ghc-old-locale" ,ghc-old-locale))) + (home-page "http://hackage.haskell.org/package/unix-time") + (synopsis "Unix time parser/formatter and utilities") + (description "This library provides fast parsing and formatting utilities +for Unix time in Haskell.") + (license bsd-3))) + +(define-public ghc-unix-compat + (package + (name "ghc-unix-compat") + (version "0.4.1.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/unix-compat/unix-compat-" + version + ".tar.gz")) + (sha256 + (base32 + "0jxk7j5pz2kgfpqr4hznndjg31pqj5xg2qfc5308fcn9xyg1myps")))) + (build-system haskell-build-system) + (home-page + "http://github.com/jystic/unix-compat") + (synopsis "Portable POSIX-compatibility layer") + (description + "This package provides portable implementations of parts of the unix +package. This package re-exports the unix package when available. When it +isn't available, portable implementations are used.") + (license bsd-3))) + +(define-public ghc-http-types + (package + (name "ghc-http-types") + (version "0.9") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/http-types/http-types-" + version + ".tar.gz")) + (sha256 + (base32 + "0ny15jgm5skhs2yx6snr13lrnw19hwjgfygrpsmhib8wqa8cz8cc")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Tests cannot find + ; Blaze.Bytestring.Builder, which should be + ; provided by ghc-blaze-builder. + (propagated-inputs + `(("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-blaze-builder" ,ghc-blaze-builder))) + (inputs + `(("ghc-text" ,ghc-text))) + (home-page "https://github.com/aristidb/http-types") + (synopsis "Generic HTTP types for Haskell") + (description "This package provides generic HTTP types for Haskell (for +both client and server code).") + (license bsd-3))) + +(define-public ghc-iproute + (package + (name "ghc-iproute") + (version "1.7.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/iproute/iproute-" + version + ".tar.gz")) + (sha256 + (base32 + "1ply0i110c2sppjbfyysgw48jfjnsbam5zwil8xws0hp20rh1pb5")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Tests cannot find System.ByteOrder, + ; exported by ghc-byteorder. Doctest issue. + (propagated-inputs + `(("ghc-appar" ,ghc-appar) + ("ghc-byteorder" ,ghc-byteorder))) + (inputs + `(("ghc-network" ,ghc-network) + ("ghc-safe" ,ghc-safe))) + (home-page "http://www.mew.org/~kazu/proj/iproute/") + (synopsis "IP routing table") + (description "IP Routing Table is a tree of IP ranges to search one of +them on the longest match base. It is a kind of TRIE with one way branching +removed. Both IPv4 and IPv6 are supported.") + (license bsd-3))) + +(define-public ghc-regex-base + (package + (name "ghc-regex-base") + (version "0.93.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/regex-base/regex-base-" + version + ".tar.gz")) + (sha256 + (base32 + "0y1j4h2pg12c853nzmczs263di7xkkmlnsq5dlp5wgbgl49mgp10")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl))) + (home-page + "http://sourceforge.net/projects/lazy-regex") + (synopsis "Replaces/Enhances Text.Regex") + (description "@code{Text.Regex.Base} provides the interface API for +regex-posix, regex-pcre, regex-parsec, regex-tdfa, regex-dfa.") + (license bsd-3))) + +(define-public ghc-regex-posix + (package + (name "ghc-regex-posix") + (version "0.95.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/regex-posix/regex-posix-" + version + ".tar.gz")) + (sha256 + (base32 + "0gkhzhj8nvfn1ija31c7xnl6p0gadwii9ihyp219ck2arlhrj0an")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-regex-base" ,ghc-regex-base))) + (home-page "http://sourceforge.net/projects/lazy-regex") + (synopsis "POSIX regular expressions for Haskell") + (description "This library provides the POSIX regex backend used by the +Haskell library @code{regex-base}.") + (license bsd-3))) + +(define-public ghc-regex-compat + (package + (name "ghc-regex-compat") + (version "0.95.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/regex-compat/regex-compat-" + version + ".tar.gz")) + (sha256 + (base32 + "0fwmima3f04p9y4h3c23493n1xj629ia2dxaisqm6rynljjv2z6m")))) + (build-system haskell-build-system) + (inputs + `(("ghc-regex-base" ,ghc-regex-base) + ("ghc-regex-posix" ,ghc-regex-posix))) + (home-page "http://sourceforge.net/projects/lazy-regex") + (synopsis "Replaces/Enhances Text.Regex") + (description "This library provides one module layer over +@code{regex-posix} to replace @code{Text.Regex}.") + (license bsd-3))) + +(define-public ghc-regex-tdfa-rc + (package + (name "ghc-regex-tdfa-rc") + (version "1.1.8.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/regex-tdfa-rc/regex-tdfa-rc-" + version + ".tar.gz")) + (sha256 + (base32 + "1vi11i23gkkjg6193ak90g55akj69bhahy542frkwb68haky4pp3")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-regex-base" ,ghc-regex-base) + ("ghc-parsec" ,ghc-parsec))) + (inputs + `(("ghc-mtl" ,ghc-mtl))) + (home-page + "http://hackage.haskell.org/package/regex-tdfa") + (synopsis "Tagged DFA regex engine for Haskell") + (description "A new all-Haskell \"tagged\" DFA regex engine, inspired by +@code{libtre} (fork by Roman Cheplyaka).") + (license bsd-3))) + +(define-public ghc-parsers + (package + (name "ghc-parsers") + (version "0.12.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/parsers/parsers-" + version + ".tar.gz")) + (sha256 + (base32 + "18wzmp8y3py4qa8hdsxqm0jfzmwy744dw7xa48r5s8ynhpimi462")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Test fails with "cannot satisfy + ; -package attoparsec-0.13.0.1" + (propagated-inputs + `(("ghc-base-orphans" ,ghc-base-orphans) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-parsec" ,ghc-parsec) + ("ghc-scientific" ,ghc-scientific) + ("ghc-charset" ,ghc-charset))) + (inputs + `(("ghc-text" ,ghc-text) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (home-page "http://github.com/ekmett/parsers/") + (synopsis "Parsing combinators") + (description "This library provides convenient combinators for working +with and building parsing combinator libraries. Given a few simple instances, +you get access to a large number of canned definitions. Instances exist for +the parsers provided by @code{parsec}, @code{attoparsec} and @code{base}'s +@code{Text.Read}.") + (license bsd-3))) + +(define-public ghc-trifecta + (package + (name "ghc-trifecta") + (version "1.5.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/trifecta/trifecta-" + version + ".tar.gz")) + (sha256 + (base32 + "0fjhnsbafl3yw34pyhcsvrqy6a2mnhyqys6gna3rrlygs8ck7hpb")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Test fails with "cannot satisfy + ; -package ansi-terminal-0.6.2.3" + (propagated-inputs + `(("ghc-charset" ,ghc-charset) + ("ghc-comonad" ,ghc-comonad) + ("ghc-lens" ,ghc-lens) + ("ghc-profunctors" ,ghc-profunctors) + ("ghc-reducers" ,ghc-reducers) + ("ghc-semigroups" ,ghc-semigroups))) + (inputs + `(("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-blaze-markup" ,ghc-blaze-markup) + ("ghc-fingertree" ,ghc-fingertree) + ("ghc-hashable" ,ghc-hashable) + ("ghc-mtl" ,ghc-mtl) + ("ghc-parsers" ,ghc-parsers) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-utf8-string" ,ghc-utf8-string))) + (home-page "http://github.com/ekmett/trifecta/") + (synopsis "Parser combinator library with convenient diagnostics") + (description "Trifecta is a modern parser combinator library for Haskell, +with slicing and Clang-style colored diagnostics.") + (license bsd-3))) + +(define-public ghc-attoparsec + (package + (name "ghc-attoparsec") + (version "0.13.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/attoparsec/attoparsec-" + version + ".tar.gz")) + (sha256 + (base32 + "0cprkr7bl4lrr80pz8mryb4rbfwdgpsrl7g0fbcaybhl8p5hm26f")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-scientific" ,ghc-scientific))) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-quickcheck-unicode" ,ghc-quickcheck-unicode) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) + ("ghc-text" ,ghc-text) + ("ghc-vector" ,ghc-vector))) + (home-page "https://github.com/bos/attoparsec") + (synopsis "Fast combinator parsing for bytestrings and text") + (description "This library provides a fast parser combinator library, +aimed particularly at dealing efficiently with network protocols and +complicated text/binary file formats.") + (license bsd-3))) + +(define-public ghc-css-text + (package + (name "ghc-css-text") + (version "0.1.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/css-text/css-text-" + version + ".tar.gz")) + (sha256 + (base32 + "1xi1n2f0g8y43p95lynhcg50wxbq7hqfzbfzm7fy8mn7gvd920nw")))) + (build-system haskell-build-system) + (inputs + `(("ghc-text" ,ghc-text) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-hspec" ,ghc-hspec) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://www.yesodweb.com/") + (synopsis "CSS parser and renderer") + (description "This package provides a CSS parser and renderer for +Haskell.") + (license bsd-3))) + +(define-public ghc-zip-archive + (package + (name "ghc-zip-archive") + (version "0.2.3.7") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/zip-archive/zip-archive-" + version + ".tar.gz")) + (sha256 + (base32 + "169nkxr5zlbymiz1ydlhlqr66vqiycmg85xh559phpkr64w3nqj1")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-old-time" ,ghc-old-time) + ("ghc-digest" ,ghc-digest))) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-mtl" ,ghc-mtl) + ("zip" ,zip) + ("ghc-text" ,ghc-text) + ("ghc-zlib" ,ghc-zlib))) + (home-page "https://hackage.haskell.org/package/zip-archive") + (synopsis "Zip archive library for Haskell") + (description "The zip-archive library provides functions for creating, +modifying, and extracting files from zip archives in Haskell.") + (license bsd-3))) + +(define-public ghc-distributive + (package + (name "ghc-distributive") + (version "0.4.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/distributive/distributive-" + version + ".tar.gz")) + (sha256 + (base32 + "0s2ln9jv7bh4ri2y31178pvjl8x6nik5d0klx7j2b77yjlsgblc2")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: fails with "cannot satisfy -package + ; tagged-0.8.1". Suspected Cabal issue. + (propagated-inputs + `(("ghc-tagged" ,ghc-tagged) + ("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page "http://github.com/ekmett/distributive/") + (synopsis "Distributive functors for Haskell") + (description "This package provides distributive functors for Haskell. +Dual to @code{Traversable}.") + (license bsd-3))) + +(define-public ghc-cereal + (package + (name "ghc-cereal") + (version "0.4.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/cereal/cereal-" + version + ".tar.gz")) + (sha256 + (base32 + "15rhfn9hrjm01ksh9xpz9syxsp9vkvpp6b736iqq38wv2wb7416z")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/cereal") + (synopsis "Binary serialization library") + (description "This package provides a binary serialization library, +similar to @code{binary}, that introduces an @code{isolate} primitive for +parser isolation, and labeled blocks for better error messages.") + (license bsd-3))) + +(define-public ghc-comonad + (package + (name "ghc-comonad") + (version "4.2.7.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/comonad/comonad-" + version + ".tar.gz")) + (sha256 + (base32 + "0arvbaxgkawzdp38hh53akkahjg2aa3kj2b4ns0ni8a5ylg2cqmp")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-distributive" ,ghc-distributive) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-contravariant" ,ghc-contravariant))) + (arguments `(#:tests? #f)) ; FIXME: Test fails with "cannot satisfy + ; -package contravariant-1.3.3" + (inputs + `(("ghc-semigroups" ,ghc-semigroups) + ("ghc-tagged" ,ghc-tagged) + ("ghc-contravariant" ,ghc-contravariant))) + (home-page "http://github.com/ekmett/comonad/") + (synopsis "Comonads for Haskell") + (description "This library provides @code{Comonad}s for Haskell.") + (license bsd-3))) + +(define-public hscolour + (package + (name "hscolour") + (version "1.23") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hscolour/hscolour-" + version + ".tar.gz")) + (sha256 + (base32 + "1c4i2zpami8g3w9949nm3f92g7xwh5c94vkx658zz7ihrjp7w5lp")))) + (build-system haskell-build-system) + (home-page "https://hackage.haskell.org/package/hscolour") + (synopsis "Script to colourise Haskell code") + (description "HSColour is a small Haskell script to colourise Haskell +code. It currently has six output formats: ANSI terminal codes (optionally +XTerm-256colour codes), HTML 3.2 with font tags, HTML 4.01 with CSS, HTML 4.01 +with CSS and mouseover annotations, XHTML 1.0 with inline CSS styling, LaTeX, +and mIRC chat codes.") + (license bsd-3))) + +(define-public ghc-polyparse + (package + (name "ghc-polyparse") + (version "1.11") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/polyparse/polyparse-" + version + ".tar.gz")) + (sha256 + (base32 + "1z417f80b0jm4dgv25fk408p3d9mmcd1dlbya3ry0zdx4md09vrh")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (home-page + "http://code.haskell.org/~malcolm/polyparse/") + (synopsis + "Alternative parser combinator libraries") + (description + "This package provides a variety of alternative parser combinator +libraries, including the original HuttonMeijer set. The Poly sets have +features like good error reporting, arbitrary token type, running state, lazy +parsing, and so on. Finally, Text.Parse is a proposed replacement for the +standard Read class, for better deserialisation of Haskell values from +Strings.") + (license lgpl2.1))) + +(define-public ghc-extra + (package + (name "ghc-extra") + (version "1.4.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/extra/extra-" + version + ".tar.gz")) + (sha256 + (base32 + "1h9hxkrqrqscx420yz1lmivbrhi6jc3a5ap61vkxd2mhdgark9hf")))) + (build-system haskell-build-system) + (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "https://github.com/ndmitchell/extra") + (synopsis "Extra Haskell functions") + (description "This library provides extra functions for the standard +Haskell libraries. Most functions are simple additions, filling out missing +functionality. A few functions are available in later versions of GHC, but +this package makes them available back to GHC 7.2.") + (license bsd-3))) + +(define-public ghc-profunctors + (package + (name "ghc-profunctors") + (version "5.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/profunctors/profunctors-" + version + ".tar.gz")) + (sha256 + (base32 + "0lw2ipacpnp9yqmi8zsp01pzpn5hwj8af3y0f3079mddrmw48gw7")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-distributive" ,ghc-distributive))) + (inputs + `(("ghc-comonad" ,ghc-comonad) + ("ghc-tagged" ,ghc-tagged))) + (home-page "http://github.com/ekmett/profunctors/") + (synopsis "Profunctors for Haskell") + (description "This library provides profunctors for Haskell.") + (license bsd-3))) + +(define-public ghc-reducers + (package + (name "ghc-reducers") + (version "3.12.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/reducers/reducers-" + version + ".tar.gz")) + (sha256 + (base32 + "0pkddg0s3cn759miq0nfrq7lnp3imk5sx784ihsilsbjh9kvffz4")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-semigroupoids" ,ghc-semigroupoids))) + (inputs + `(("ghc-fingertree" ,ghc-fingertree) + ("ghc-hashable" ,ghc-hashable) + ("ghc-text" ,ghc-text) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-semigroups" ,ghc-semigroups))) + (home-page "http://github.com/ekmett/reducers/") + (synopsis "Semigroups, specialized containers and a general map/reduce framework") + (description "This library provides various semigroups, specialized +containers and a general map/reduce framework for Haskell.") + (license bsd-3))) + +(define-public ghc-appar + (package + (name "ghc-appar") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/appar/appar-" + version + ".tar.gz")) + (sha256 + (base32 + "09jb9ij78fdkz2qk66rw99q19qnm504dpv0yq0pjsl6xwjmndsjq")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/appar") + (synopsis "Simple applicative parser") + (description "This package provides a simple applicative parser in Parsec +style.") + (license bsd-3))) + +(define-public ghc-safe + (package + (name "ghc-safe") + (version "0.3.9") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/safe/safe-" + version + ".tar.gz")) + (sha256 + (base32 + "1jdnp5zhvalf1xy8i872n29nljfjz6lnl9ghj80ffisrnnkrwcfh")))) + (build-system haskell-build-system) + (home-page "https://github.com/ndmitchell/safe#readme") + (synopsis "Library of safe (exception free) functions") + (description "This library provides wrappers around @code{Prelude} and +@code{Data.List} functions, such as @code{head} and @code{!!}, that can throw +exceptions.") + (license bsd-3))) + +(define-public ghc-generic-deriving + (package + (name "ghc-generic-deriving") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/generic-deriving/generic-deriving-" + version + ".tar.gz")) + (sha256 + (base32 + "1kc6lhdanls6kgpk8xv5xi14lz1sngcd8xn930hkf7ilq4kxkcr6")))) + (build-system haskell-build-system) + (home-page "https://hackage.haskell.org/package/generic-deriving") + (synopsis "Generalise the deriving mechanism to arbitrary classes") + (description "This package provides functionality for generalising the +deriving mechanism in Haskell to arbitrary classes.") + (license bsd-3))) + +(define-public ghc-pcre-light + (package + (name "ghc-pcre-light") + (version "0.4.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/pcre-light/pcre-light-" + version + ".tar.gz")) + (sha256 + (base32 + "0l1df2sk5qwf424bvb8mbdkr2xjg43fi92n5r22yd7vm1zz0jqvf")))) + (build-system haskell-build-system) + (inputs + `(("pcre" ,pcre))) + (home-page "https://github.com/Daniel-Diaz/pcre-light") + (synopsis "Haskell library for Perl 5 compatible regular expressions") + (description "This package provides a small, efficient, and portable regex +library for Perl 5 compatible regular expressions. The PCRE library is a set +of functions that implement regular expression pattern matching using the same +syntax and semantics as Perl 5.") + (license bsd-3))) + +(define-public ghc-logict + (package + (name "ghc-logict") + (version "0.6.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/logict/logict-" + version + ".tar.gz")) + (sha256 + (base32 + "07hnirv6snnym2r7iijlfz00b60jpy2856zvqxh989q0in7bd0hi")))) + (build-system haskell-build-system) + (inputs `(("ghc-mtl" ,ghc-mtl))) + (home-page "http://code.haskell.org/~dolio/") + (synopsis "Backtracking logic-programming monad") + (description "This library provides a continuation-based, backtracking, +logic programming monad. An adaptation of the two-continuation implementation +found in the paper \"Backtracking, Interleaving, and Terminating Monad +Transformers\" available @uref{http://okmij.org/ftp/papers/LogicT.pdf, +online}.") + (license bsd-3))) + +(define-public ghc-xml + (package + (name "ghc-xml") + (version "1.3.14") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/xml/xml-" + version + ".tar.gz")) + (sha256 + (base32 + "0g814lj7vaxvib2g3r734221k80k7ap9czv9hinifn8syals3l9j")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (home-page "http://code.galois.com") + (synopsis "Simple XML library for Haskell") + (description "This package provides a simple XML library for Haskell.") + (license bsd-3))) + +(define-public ghc-exceptions + (package + (name "ghc-exceptions") + (version "0.8.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/exceptions/exceptions-" + version + ".tar.gz")) + (sha256 + (base32 + "1x1bk1jf42k1gigiqqmkkh38z2ffhx8rsqiszdq3f94m2h6kw2h7")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Missing test-framework package. + (propagated-inputs + `(("ghc-stm" ,ghc-stm) + ("ghc-mtl" ,ghc-mtl) + ("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page "http://github.com/ekmett/exceptions/") + (synopsis "Extensible optionally-pure exceptions") + (description "This library provides extensible optionally-pure exceptions +for Haskell.") + (license bsd-3))) + +(define-public ghc-temporary + (package + (name "ghc-temporary") + (version "1.2.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/temporary/temporary-" + version + ".tar.gz")) + (sha256 + (base32 + "0is67bmsjmbbw6wymhis8wyq9gax3sszm573p5719fx2c9z9r24a")))) + (build-system haskell-build-system) + (propagated-inputs `(("ghc-exceptions" ,ghc-exceptions))) + (home-page "http://www.github.com/batterseapower/temporary") + (synopsis "Temporary file and directory support") + (description "The functions for creating temporary files and directories +in the Haskelll base library are quite limited. This library just repackages +the Cabal implementations of its own temporary file and folder functions so +that you can use them without linking against Cabal or depending on it being +installed.") + (license bsd-3))) + +(define-public ghc-temporary-rc + (package + (name "ghc-temporary-rc") + (version "1.2.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/temporary-rc/temporary-rc-" + version + ".tar.gz")) + (sha256 + (base32 + "1nqih0qks439k3pr5kmbbc8rjdw730slrxlflqb27fbxbzb8skqs")))) + (build-system haskell-build-system) + (propagated-inputs `(("ghc-exceptions" ,ghc-exceptions))) + (home-page + "http://www.github.com/feuerbach/temporary") + (synopsis + "Portable temporary file and directory support") + (description + "The functions for creating temporary files and directories in the base +library are quite limited. The unixutils package contains some good ones, but +they aren't portable to Windows. This library just repackages the Cabal +implementations of its own temporary file and folder functions so that you can +use them without linking against Cabal or depending on it being installed. +This is a better maintained fork of the \"temporary\" package.") + (license bsd-3))) + +(define-public ghc-smallcheck + (package + (name "ghc-smallcheck") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/smallcheck/smallcheck-" + version + ".tar.gz")) + (sha256 + (base32 + "1ygrabxh40bym3grnzqyfqn96lirnxspb8cmwkkr213239y605sd")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-logict" ,ghc-logict))) + (inputs + `(("ghc-mtl" ,ghc-mtl))) + (home-page + "https://github.com/feuerbach/smallcheck") + (synopsis "Property-based testing library") + (description "SmallCheck is a testing library that allows to verify +properties for all test cases up to some depth. The test cases are generated +automatically by SmallCheck.") + (license bsd-3))) + +(define-public ghc-tasty-ant-xml + (package + (name "ghc-tasty-ant-xml") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty-ant-xml/tasty-ant-xml-" + version + ".tar.gz")) + (sha256 + (base32 + "0pgz2lclg2hp72ykljcbxd88pjanfdfk8m5vb2qzcyjr85kwrhxv")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-generic-deriving" ,ghc-generic-deriving) + ("ghc-xml" ,ghc-xml))) + (inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-stm" ,ghc-stm) + ("ghc-tagged" ,ghc-tagged) + ("ghc-tasty" ,ghc-tasty))) + (home-page + "http://github.com/ocharles/tasty-ant-xml") + (synopsis + "Render tasty output to XML for Jenkins") + (description + "A tasty ingredient to output test results in XML, using the Ant +schema. This XML can be consumed by the Jenkins continuous integration +framework.") + (license bsd-3))) + +(define-public ghc-tasty-smallcheck + (package + (name "ghc-tasty-smallcheck") + (version "0.8.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty-smallcheck/tasty-smallcheck-" + version + ".tar.gz")) + (sha256 + (base32 + "0yckfbz8na8ccyw2911i3a4hd3fdncclk3ng5343hs5cylw6y4sm")))) + (build-system haskell-build-system) + (inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-smallcheck" ,ghc-smallcheck) + ("ghc-async" ,ghc-async) + ("ghc-tagged" ,ghc-tagged))) + (home-page "http://documentup.com/feuerbach/tasty") + (synopsis "SmallCheck support for the Tasty test framework") + (description "This package provides SmallCheck support for the Tasty +Haskell test framework.") + (license bsd-3))) + +(define-public ghc-silently + (package + (name "ghc-silently") + (version "1.2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/silently/silently-" + version + ".tar.gz")) + (sha256 + (base32 + "0f9qm3f7y0hpxn6mddhhg51mm1r134qkvd2kr8r6192ka1ijbxnf")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ;; circular dependency with nanospec + ;; (inputs + ;; `(("ghc-temporary" ,ghc-temporary))) + (home-page "https://github.com/hspec/silently") + (synopsis "Prevent writing to stdout") + (description "This package provides functions to prevent or capture +writing to stdout and other handles.") + (license bsd-3))) + +(define-public ghc-quickcheck-instances + (package + (name "ghc-quickcheck-instances") + (version "0.3.11") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" + "quickcheck-instances/quickcheck-instances-" + version ".tar.gz")) + (sha256 + (base32 + "041s6963czs1pz0fc9cx17lgd6p83czqy2nxji7bhxqxwl2j15h2")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-old-time" ,ghc-old-time) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (inputs + `(("ghc-hashable" ,ghc-hashable) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-text" ,ghc-text))) + (home-page + "https://github.com/aslatter/qc-instances") + (synopsis "Common quickcheck instances") + (description "This package provides QuickCheck instances for types +provided by the Haskell Platform.") + (license bsd-3))) + +(define-public ghc-quickcheck-unicode + (package + (name "ghc-quickcheck-unicode") + (version "1.0.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/quickcheck-unicode/quickcheck-unicode-" + version + ".tar.gz")) + (sha256 + (base32 + "1a8nl6x7l9b22yx61wm0bh2n1xzb1hd5i5zgg1w4fpaivjnrrhi4")))) + (build-system haskell-build-system) + (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) + (home-page + "https://github.com/bos/quickcheck-unicode") + (synopsis "Generator functions Unicode-related tests") + (description "This package provides generator and shrink functions for +testing Unicode-related software.") + (license bsd-3))) + +(define-public ghc-quickcheck-io + (package + (name "ghc-quickcheck-io") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/quickcheck-io/quickcheck-io-" + version + ".tar.gz")) + (sha256 + (base32 + "1kf1kfw9fsmly0rvzvdf6jvdw10qhkmikyj0wcwciw6wad95w9sh")))) + (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hunit" ,ghc-hunit))) + (home-page + "https://github.com/hspec/quickcheck-io#readme") + (synopsis "Use HUnit assertions as QuickCheck properties") + (description "This package provides an orphan instance that allows you to +use HUnit assertions as QuickCheck properties.") + (license expat))) + (define-public ghc-quickcheck (package (name "ghc-quickcheck") - (version "2.8") + (version "2.8.1") (outputs '("out" "doc")) (source (origin @@ -839,7 +2902,7 @@ Hashing\" by Claessen, Pałka for details and the rationale of the design.") ".tar.gz")) (sha256 (base32 - "04xs6mq22bcnkpi616qrbm7jlivh9csnhmvjgp1ifq52an1wr4rx")))) + "0fvnfl30fxmj5q920l13641ar896d53z0z6z66m7c1366lvalwvh")))) (build-system haskell-build-system) (arguments `(#:tests? #f ; FIXME: currently missing libraries used for tests. @@ -892,7 +2955,7 @@ to cases.") (define-public ghc-syb (package (name "ghc-syb") - (version "0.4.4") + (version "0.6") (outputs '("out" "doc")) (source (origin @@ -903,7 +2966,7 @@ to cases.") ".tar.gz")) (sha256 (base32 - "11sc9kmfvcn9bfxf227fgmny502z2h9xs3z0m9ak66lk0dw6f406")))) + "1p3cnqjm13677r4a966zffzhi9b3a321aln8zs8ckqj0d9z1z3d3")))) (build-system haskell-build-system) (inputs `(("ghc-hunit" ,ghc-hunit) @@ -911,43 +2974,12 @@ to cases.") (home-page "http://www.cs.uu.nl/wiki/GenericProgramming/SYB") (synopsis "Scrap Your Boilerplate") - (description - "This package contains the generics system described in the + (description "This package contains the generics system described in the /Scrap Your Boilerplate/ papers (see -). -It defines the 'Data' class of types permitting folding and unfolding -of constructor applications, instances of this class for primitive -types, and a variety of traversals.") - (license bsd-3))) - -(define-public ghc-containers - (package - (name "ghc-containers") - (version "0.5.6.3") - (outputs '("out" "doc")) - (source - (origin - (method url-fetch) - (uri (string-append - "http://hackage.haskell.org/package/containers/containers-" - version - ".tar.gz")) - (sha256 - (base32 - "1kcd55nl0vzi99i8sr8fmc5j25fv7m0a9hd3nihnq1pd64pfciqn")))) - (build-system haskell-build-system) - (inputs - `(("ghc-hunit" ,ghc-hunit) - ("ghc-quickcheck" ,ghc-quickcheck))) - (arguments - `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. - (home-page "http://hackage.haskell.org/package/containers") - (synopsis "Assorted concrete container types") - (description - "This package contains efficient general-purpose implementations of -various basic immutable container types. The declared cost of each operation -is either worst-case or amortized, but remains valid even if structures are -shared.") +@uref{http://www.cs.uu.nl/wiki/GenericProgramming/SYB, the website}). It +defines the 'Data' class of types permitting folding and unfolding of +constructor applications, instances of this class for primitive types, and a +variety of traversals.") (license bsd-3))) (define-public ghc-fgl @@ -976,6 +3008,44 @@ is an inductive definition of graphs in the style of algebraic data types that encourages inductive, recursive definitions of graph algorithms.") (license bsd-3))) +(define-public ghc-chasingbottoms + (package + (name "ghc-chasingbottoms") + (version "1.3.0.13") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/ChasingBottoms/" + "ChasingBottoms-" version ".tar.gz")) + (sha256 + (base32 + "1fb86jd6cdz4rx3fj3r9n8d60kx824ywwy7dw4qnrdran46ja3pl")) + (modules '((guix build utils))) + (snippet + ;; The Hackage page and the cabal file linked there for this package + ;; both list 0.7 as the upper version limit, but the source tarball + ;; specifies 0.6. Assume the Hackage page is correct. + '(substitute* "ChasingBottoms.cabal" + (("syb >= 0.1.0.2 && < 0.6") "syb >= 0.1.0.2 && < 0.7"))))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-random" ,ghc-random) + ("ghc-syb" ,ghc-syb))) + (home-page "http://hackage.haskell.org/package/ChasingBottoms") + (synopsis "Testing of partial and infinite values in Haskell") + (description + ;; FIXME: There should be a @comma{} in the uref text, but it is not + ;; rendered properly. + "This is a library for testing code involving bottoms or infinite values. +For the underlying theory and a larger example involving use of QuickCheck, +see the article +@uref{http://www.cse.chalmers.se/~nad/publications/danielsson-jansson-mpc2004.html, +\"Chasing Bottoms A Case Study in Program Verification in the Presence of +Partial and Infinite Values\"}.") + (license expat))) + (define-public ghc-unordered-containers (package (name "ghc-unordered-containers") @@ -985,20 +3055,21 @@ encourages inductive, recursive definitions of graph algorithms.") (origin (method url-fetch) (uri (string-append - "http://hackage.haskell.org/package/unordered-containers/unordered-containers-" - version - ".tar.gz")) + "http://hackage.haskell.org/package/unordered-containers" + "/unordered-containers-" version ".tar.gz")) (sha256 (base32 "06l1xv7vhpxly75saxdrbc6p2zlgz1az278arfkz4rgawfnphn3f")))) (build-system haskell-build-system) (inputs - `(("ghc-hunit" ,ghc-hunit) - ("ghc-quickcheck" ,ghc-quickcheck))) + `(("ghc-chasingbottoms" ,ghc-chasingbottoms) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2))) ;; these inputs are necessary to use this library (propagated-inputs `(("ghc-hashable" ,ghc-hashable))) - (arguments - `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. (home-page "https://github.com/tibbe/unordered-containers") (synopsis @@ -1009,6 +3080,103 @@ optimized for performance critical use, both in terms of large data quantities and high speed.") (license bsd-3))) +(define-public ghc-uniplate + (package + (name "ghc-uniplate") + (version "1.6.12") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/uniplate/uniplate-" + version + ".tar.gz")) + (sha256 + (base32 + "1dx8f9aw27fz8kw0ad1nm6355w5rdl7bjvb427v2bsgnng30pipw")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-syb" ,ghc-syb) + ("ghc-hashable" ,ghc-hashable) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (home-page "http://community.haskell.org/~ndm/uniplate/") + (synopsis "Simple, concise and fast generic operations") + (description "Uniplate is a library for writing simple and concise generic +operations. Uniplate has similar goals to the original Scrap Your Boilerplate +work, but is substantially simpler and faster.") + (license bsd-3))) + +(define-public ghc-base64-bytestring + (package + (name "ghc-base64-bytestring") + (version "1.0.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/base64-bytestring/base64-bytestring-" + version + ".tar.gz")) + (sha256 + (base32 + "0l1v4ddjdsgi9nqzyzcxxj76rwar3lzx8gmwf2r54bqan3san9db")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (home-page "https://github.com/bos/base64-bytestring") + (synopsis "Base64 encoding and decoding for ByteStrings") + (description "This library provides fast base64 encoding and decoding for +Haskell @code{ByteString}s.") + (license bsd-3))) + +(define-public ghc-annotated-wl-pprint + (package + (name "ghc-annotated-wl-pprint") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/annotated-wl-pprint" + "/annotated-wl-pprint-" version + ".tar.gz")) + (sha256 + (base32 + "061xfz6qany3wf95csl8dcik2pz22cn8iv1qchhm16isw5zjs9hc")))) + (build-system haskell-build-system) + (home-page + "https://github.com/david-christiansen/annotated-wl-pprint") + (synopsis + "The Wadler/Leijen Pretty Printer, with annotation support") + (description "This is a modified version of wl-pprint, which was based on +Wadler's paper \"A Prettier Printer\". This version allows the library user +to annotate the text with semantic information, which can later be rendered in +a variety of ways.") + (license bsd-3))) + +(define-public ghc-ansi-wl-pprint + (package + (name "ghc-ansi-wl-pprint") + (version "0.6.7.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/ansi-wl-pprint/ansi-wl-pprint-" + version + ".tar.gz")) + (sha256 + (base32 + "025pyphsjf0dnbrmj5nscbi6gzyigwgp3ifxb3psn7kji6mfr29p")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-ansi-terminal" ,ghc-ansi-terminal))) + (home-page "http://github.com/ekmett/ansi-wl-pprint") + (synopsis "Wadler/Leijen Pretty Printer for colored ANSI terminal output") + (description "This is a pretty printing library based on Wadler's paper +\"A Prettier Printer\". It has been enhanced with support for ANSI terminal +colored output using the ansi-terminal package.") + (license bsd-3))) + (define-public ghc-split (package (name "ghc-split") @@ -1023,15 +3191,22 @@ and high speed.") ".tar.gz")) (sha256 (base32 - "0xa3j0gwr6k5vizxybnzk5fgb3pppgspi6mysnp2gwjp2dbrxkzr")))) + "0xa3j0gwr6k5vizxybnzk5fgb3pppgspi6mysnp2gwjp2dbrxkzr")) + (modules '((guix build utils))) + (snippet + ;; The Cabal file on Hackage is updated, but the tar.gz does not + ;; include it. See + ;; . + '(substitute* "split.cabal" + (("base <4.8") "base <4.9"))))) (build-system haskell-build-system) (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) (home-page "http://hackage.haskell.org/package/split") - (synopsis - "Combinator library for splitting lists") - (description "A collection of various methods for splitting lists into -parts, akin to the 'split' function found in several mainstream languages.") + (synopsis "Combinator library for splitting lists") + (description "This package provides a collection of Haskell functions for +splitting lists into parts, akin to the @code{split} function found in several +mainstream languages.") (license bsd-3))) (define-public ghc-parsec @@ -1069,7 +3244,7 @@ is also parametric in the input stream type.") (define-public ghc-vector (package (name "ghc-vector") - (version "0.10.12.2") + (version "0.11.0.0") (outputs '("out" "doc")) (source (origin @@ -1080,7 +3255,7 @@ is also parametric in the input stream type.") ".tar.gz")) (sha256 (base32 - "01hc71k1z9m0g0dv4zsvq5d2dvbgyc5p01hryw5c53792yi2fm25")))) + "1r1jlksy7b0kb0fy00g64isk6nyd9wzzdq31gx5v1wn38knj0lqa")))) (build-system haskell-build-system) (inputs `(("ghc-quickcheck" ,ghc-quickcheck))) @@ -1088,17 +3263,46 @@ is also parametric in the input stream type.") (propagated-inputs `(("ghc-primitive" ,ghc-primitive))) (arguments - `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. (home-page "https://github.com/haskell/vector") (synopsis "Efficient Arrays") - (description "An efficient implementation of Int-indexed arrays (both -mutable and immutable), with a powerful loop optimisation framework.") - (license bsd-3))) + (description "This library provides an efficient implementation of +Int-indexed arrays (both mutable and immutable), with a powerful loop +optimisation framework.") + (license bsd-3))) + +(define-public ghc-vector-binary-instances + (package + (name "ghc-vector-binary-instances") + (version "0.2.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" + "vector-binary-instances/vector-binary-instances-" + version ".tar.gz")) + (sha256 + (base32 + "028rsf2w193rhs1gic5yvvrwidw9sblczcn10aw64npfc6502l4l")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-cereal" ,ghc-cereal))) + (inputs + `(("ghc-vector" ,ghc-vector))) + (home-page "https://github.com/bos/vector-binary-instances") + (synopsis "Instances of Data.Binary and Data.Serialize for vector") + (description "This library provides instances of @code{Binary} for the +types defined in the @code{vector} package, making it easy to serialize +vectors to and from disk. We use the generic interface to vectors, so all +vector types are supported. Specific instances are provided for unboxed, +boxed and storable vectors.") + (license bsd-3))) (define-public ghc-network (package (name "ghc-network") - (version "2.6.0.2") + (version "2.6.2.1") (outputs '("out" "doc")) (source (origin @@ -1109,16 +3313,12 @@ mutable and immutable), with a powerful loop optimisation framework.") ".tar.gz")) (sha256 (base32 - "12b7saam5ga6l4cplgkad49xa4vkynz2ri9jxidx1cxiqjcl0vc4")))) + "1yhvpd4wigz165jvyvw9zslx7lgqdj63jh3zv5s74b5ykdfa3zd3")))) (build-system haskell-build-system) (inputs `(("ghc-hunit" ,ghc-hunit))) (arguments - `(#:tests? #f ; FIXME: currently missing libraries used for tests. - #:phases - (modify-phases %standard-phases - (add-before 'configure 'set-sh - (lambda _ (setenv "CONFIG_SHELL" "sh")))))) + `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. (home-page "https://github.com/haskell/network") (synopsis "Low-level networking interface") (description @@ -1128,7 +3328,7 @@ mutable and immutable), with a powerful loop optimisation framework.") (define-public ghc-network-uri (package (name "ghc-network-uri") - (version "2.6.0.1") + (version "2.6.0.3") (outputs '("out" "doc")) (source (origin @@ -1139,7 +3339,7 @@ mutable and immutable), with a powerful loop optimisation framework.") ".tar.gz")) (sha256 (base32 - "09ymamb128jgqghpda4nixncr73all8qc6q53976aricm6a27p37")))) + "1pwbqb2rk4rnvllvdch42p5368xcvpkanp7bxckdhxya8zzwvhhg")))) (build-system haskell-build-system) (inputs `(("ghc-hunit" ,ghc-hunit) @@ -1156,10 +3356,32 @@ mutable and immutable), with a powerful loop optimisation framework.") package into this package.") (license bsd-3))) +(define-public ghc-ansi-terminal + (package + (name "ghc-ansi-terminal") + (version "0.6.2.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/ansi-terminal/ansi-terminal-" + version + ".tar.gz")) + (sha256 + (base32 + "0hpfw0k025y681m9ml1c712skrb1p4vh7z5x1f0ci9ww7ssjrh2d")))) + (build-system haskell-build-system) + (home-page "https://github.com/feuerbach/ansi-terminal") + (synopsis "ANSI terminal support for Haskell") + (description "This package provides ANSI terminal support for Haskell. It +allows cursor movement, screen clearing, color output showing or hiding the +cursor, and changing the title.") + (license bsd-3))) + (define-public ghc-http (package (name "ghc-http") - (version "4000.2.19") + (version "4000.2.20") (outputs '("out" "doc")) (source (origin @@ -1170,12 +3392,13 @@ package into this package.") ".tar.gz")) (sha256 (base32 - "1yzm8gimh8g0wwbixcbxg60v4l3vgi63w9v55ms0x9qnm6vrgysz")))) + "0nyqdxr5ls2dxkf4a1f3x15xzwdm46ppn99nkcbhswlr6s3cq1s4")))) (build-system haskell-build-system) (inputs `(("ghc-hunit" ,ghc-hunit))) (propagated-inputs - `(("ghc-parsec" ,ghc-parsec) + `(("ghc-old-time" ,ghc-old-time) + ("ghc-parsec" ,ghc-parsec) ("ghc-mtl" ,ghc-mtl) ("ghc-network" ,ghc-network) ("ghc-network-uri" ,ghc-network-uri))) @@ -1189,4 +3412,2898 @@ lets you set up HTTP connections, transmitting requests and processing the responses coming back.") (license bsd-3))) +(define-public ghc-hspec + (package + (name "ghc-hspec") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hspec/hspec-" + version + ".tar.gz")) + (sha256 + (base32 + "0zqisxznlbszivsgy3irvf566zhcr6ipqqj3x9i7pj5hy913jwqf")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-hspec-core" ,ghc-hspec-core) + ("hspec-discover" ,hspec-discover) + ("ghc-hspec-expectations" ,ghc-hspec-expectations) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hunit" ,ghc-hunit))) + (inputs + `(("ghc-stringbuilder" ,ghc-stringbuilder) + ("ghc-hspec-meta" ,ghc-hspec-meta))) + (home-page "http://hspec.github.io/") + (synopsis "Testing Framework for Haskell") + (description "This library provides the Hspec testing framework for +Haskell, inspired by the Ruby library RSpec.") + (license expat))) + +(define-public ghc-hspec-contrib + (package + (name "ghc-hspec-contrib") + (version "0.3.0") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "hspec-contrib/hspec-contrib-" + version ".tar.gz")) + (sha256 + (base32 + "006syw8xagfhsx06ws9ywig1qx5lk4cgl7sq6pbid1s64c72mxn4")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-hspec-core" ,ghc-hspec-core) + ("ghc-hunit" ,ghc-hunit) + ("ghc-hspec" ,ghc-hspec) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://hspec.github.io/") + (synopsis "Contributed functionality for Hspec") + (description + "This package provides contributed Hspec extensions.") + (license expat))) + +(define-public ghc-hspec-expectations + (package + (name "ghc-hspec-expectations") + (version "0.7.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hspec-expectations/hspec-expectations-" + version + ".tar.gz")) + (sha256 + (base32 + "1w56jiqfyl237sr207gh3b0l8sr9layy0mdsgd5wknzb49mif6ip")))) + (build-system haskell-build-system) + (inputs `(("ghc-hunit" ,ghc-hunit))) + (home-page "https://github.com/sol/hspec-expectations") + (synopsis "Catchy combinators for HUnit") + (description "This library provides catchy combinators for HUnit, see +@uref{https://github.com/sol/hspec-expectations#readme, the README}.") + (license expat))) + +(define-public hspec-discover + (package + (name "hspec-discover") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hspec-discover/hspec-discover-" + version + ".tar.gz")) + (sha256 + (base32 + "0w3awzbljf4hqhxrjrxqa1lfcclg92bhmq641gz2q80vycspapzx")))) + (build-system haskell-build-system) + (arguments `(#:haddock? #f)) ; Haddock phase fails because there are no + ; documentation files. + (inputs `(("ghc-hspec-meta" ,ghc-hspec-meta))) + (home-page "http://hspec.github.io/") + (synopsis "Automatically discover and run Hspec tests") + (description "hspec-discover is a tool which automatically discovers and +runs Hspec tests.") + (license expat))) + +(define-public ghc-hspec-core + (package + (name "ghc-hspec-core") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hspec-core/hspec-core-" + version + ".tar.gz")) + (sha256 + (base32 + "1wgd55k652jaf81nkvciyqi67ycj7zamr4nd9z1cqf8nr9fc3sa4")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (propagated-inputs + `(("ghc-setenv" ,ghc-setenv) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-async" ,ghc-async) + ("ghc-quickcheck-io" ,ghc-quickcheck-io))) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hspec-expectations" ,ghc-hspec-expectations) + ("ghc-silently" ,ghc-silently))) + (home-page "http://hspec.github.io/") + (synopsis "Testing framework for Haskell") + (description "This library exposes internal types and functions that can +be used to extend Hspec's functionality.") + (license expat))) + +(define-public ghc-hspec-meta + (package + (name "ghc-hspec-meta") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/hspec-meta/hspec-meta-" + version + ".tar.gz")) + (sha256 + (base32 + "1fmqmgrzp135cxhmxxbaswkk4bqbpgfml00cmcz0d39n11vzpa5z")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hunit" ,ghc-hunit) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-async" ,ghc-async) + ("ghc-hspec-expectations" ,ghc-hspec-expectations) + ("ghc-setenv" ,ghc-setenv) + ("ghc-random" ,ghc-random) + ("ghc-quickcheck-io" ,ghc-quickcheck-io))) + (home-page "http://hspec.github.io/") + (synopsis "Version of Hspec to test Hspec itself") + (description "This library provides a stable version of Hspec which is +used to test the in-development version of Hspec.") + (license expat))) + +(define-public ghc-vault + (package + (name "ghc-vault") + (version "0.3.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/vault/vault-" + version + ".tar.gz")) + (sha256 + (base32 + "0ah6qrg71krc87f4vjy4b4shdd0mgyil8fikb3j6fl4kfwlg67jn")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-hashable" ,ghc-hashable))) + (home-page + "https://github.com/HeinrichApfelmus/vault") + (synopsis "Persistent store for arbitrary values") + (description "This package provides vaults for Haskell. A vault is a +persistent store for values of arbitrary types. It's like having first-class +access to the storage space behind @code{IORefs}. The data structure is +analogous to a bank vault, where you can access different bank boxes with +different keys; hence the name. Also provided is a @code{locker} type, +representing a store for a single element.") + (license bsd-3))) + +(define-public ghc-mmorph + (package + (name "ghc-mmorph") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/mmorph/mmorph-" + version + ".tar.gz")) + (sha256 + (base32 + "0k5zlzmnixfwcjrqvhgi3i6xg532b0gsjvc39v5jigw69idndqr2")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/mmorph") + (synopsis "Monad morphisms") + (description + "This library provides monad morphism utilities, most commonly used for +manipulating monad transformer stacks.") + (license bsd-3))) + +(define-public ghc-monad-control + (package + (name "ghc-monad-control") + (version "1.0.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/monad-control" + "/monad-control-" version ".tar.gz")) + (sha256 + (base32 + "07pn1p4m80wdd7gw62s4yny8rbvm60ka1q8qx5y1plznd8sbg179")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-stm" ,ghc-stm) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page "https://github.com/basvandijk/monad-control") + (synopsis "Monad transformers to lift control operations like exception +catching") + (description "This package defines the type class @code{MonadBaseControl}, +a subset of @code{MonadBase} into which generic control operations such as +@code{catch} can be lifted from @code{IO} or any other base monad.") + (license bsd-3))) + +(define-public ghc-byteorder + (package + (name "ghc-byteorder") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/byteorder/byteorder-" + version + ".tar.gz")) + (sha256 + (base32 + "06995paxbxk8lldvarqpb3ygcjbg4v8dk4scib1rjzwlhssvn85x")))) + (build-system haskell-build-system) + (home-page + "http://community.haskell.org/~aslatter/code/byteorder") + (synopsis + "Exposes the native endianness of the system") + (description + "This package is for working with the native byte-ordering of the +system.") + (license bsd-3))) + +(define-public ghc-base-compat + (package + (name "ghc-base-compat") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/base-compat/base-compat-" + version + ".tar.gz")) + (sha256 + (base32 + "02m93hzgxg4bcnp7xcc2fdh2hrsc2h6fwl8hix5nx9k864kwf41q")))) + (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hspec" ,ghc-hspec))) + (home-page "https://hackage.haskell.org/package/base-compat") + (synopsis "Haskell compiler compatibility library") + (description "This library provides functions available in later versions +of base to a wider range of compilers, without requiring the use of CPP +pragmas in your code.") + (license bsd-3))) + +(define-public ghc-blaze-builder + (package + (name "ghc-blaze-builder") + (version "0.4.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/blaze-builder/blaze-builder-" + version + ".tar.gz")) + (sha256 + (base32 + "1id3w33x9f7q5m3xpggmvzw03bkp94bpfyz81625bldqgf3yqdn1")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Missing test libraries. + (propagated-inputs + `(("ghc-text" ,ghc-text) + ("ghc-utf8-string" ,ghc-utf8-string))) + (home-page "http://github.com/lpsmith/blaze-builder") + (synopsis "Efficient buffered output") + (description "This library provides an implementation of the older +@code{blaze-builder} interface in terms of the new builder that shipped with +@code{bytestring-0.10.4.0}. This implementation is mostly intended as a +bridge to the new builder, so that code that uses the old interface can +interoperate with code that uses the new implementation.") + (license bsd-3))) + +(define-public ghc-blaze-markup + (package + (name "ghc-blaze-markup") + (version "0.7.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/blaze-markup/blaze-markup-" + version + ".tar.gz")) + (sha256 + (base32 + "080vlhd8dwjxrma4bb524lh8gxs5lm3xh122icy6lnnyipla0s9y")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (propagated-inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-text" ,ghc-text))) + (home-page "http://jaspervdj.be/blaze") + (synopsis "Fast markup combinator library for Haskell") + (description "This library provides core modules of a markup combinator +library for Haskell.") + (license bsd-3))) + +(define-public ghc-blaze-html + (package + (name "ghc-blaze-html") + (version "0.8.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/blaze-html/blaze-html-" + version + ".tar.gz")) + (sha256 + (base32 + "1dnw50kh0s405cg9i2y4a8awanhj3bqzk21jwgfza65kcjby7lpq")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (propagated-inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-text" ,ghc-text) + ("ghc-blaze-markup" ,ghc-blaze-markup))) + (home-page "http://jaspervdj.be/blaze") + (synopsis "Fast HTML combinator library") + (description "This library provides HTML combinators for Haskell.") + (license bsd-3))) + +(define-public ghc-easy-file + (package + (name "ghc-easy-file") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/easy-file/easy-file-" + version + ".tar.gz")) + (sha256 + (base32 + "0v75081bx4qzlqy29hh639nzlr7dncwza3qxbzm9njc4jarf31pz")))) + (build-system haskell-build-system) + (home-page + "http://github.com/kazu-yamamoto/easy-file") + (synopsis "File handling library for Haskell") + (description "This library provides file handling utilities for Haskell.") + (license bsd-3))) + +(define-public ghc-async + (package + (name "ghc-async") + (version "2.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/async/async-" + version + ".tar.gz")) + (sha256 + (base32 + "0azx4qk65a9a2gvqsfmz3w89m6shzr2iz0i5lly2zvly4n2d6m6v")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit))) + (propagated-inputs + `(("ghc-stm" ,ghc-stm))) + (home-page "https://github.com/simonmar/async") + (synopsis "Library to run IO operations asynchronously") + (description "Async provides a library to run IO operations +asynchronously, and wait for their results. It is a higher-level interface +over threads in Haskell, in which @code{Async a} is a concurrent thread that +will eventually deliver a value of type @code{a}.") + (license bsd-3))) + +(define-public ghc-fingertree + (package + (name "ghc-fingertree") + (version "0.1.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/fingertree/fingertree-" + version + ".tar.gz")) + (sha256 + (base32 + "1w6x3kp3by5yjmam6wlrf9vap5l5rrqaip0djbrdp0fpf2imn30n")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (home-page "http://hackage.haskell.org/package/fingertree") + (synopsis "Generic finger-tree structure") + (description "This library provides finger trees, a general sequence +representation with arbitrary annotations, for use as a base for +implementations of various collection types. It includes examples, as +described in section 4 of Ralf Hinze and Ross Paterson, \"Finger trees: a +simple general-purpose data structure\".") + (license bsd-3))) + +(define-public ghc-optparse-applicative + (package + (name "ghc-optparse-applicative") + (version "0.11.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/optparse-applicative" + "/optparse-applicative-" version ".tar.gz")) + (sha256 + (base32 + "0ni52ii9555jngljvzxn1ngicr6i2w647ww3rzhdrmng04y95iii")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint))) + (home-page "https://github.com/pcapriotti/optparse-applicative") + (synopsis "Utilities and combinators for parsing command line options") + (description "This package provides utilities and combinators for parsing +command line options in Haskell.") + (license bsd-3))) + +(define-public ghc-base-orphans + (package + (name "ghc-base-orphans") + (version "0.4.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/base-orphans/base-orphans-" + version + ".tar.gz")) + (sha256 + (base32 + "0hhgpwjvx7jhvlhsygmmf0q5hv2ymijzz4bjilicw99bmv13qcpl")))) + (build-system haskell-build-system) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hspec" ,ghc-hspec))) + (home-page "https://hackage.haskell.org/package/base-orphans") + (synopsis "Orphan instances for backwards compatibility") + (description "This package defines orphan instances that mimic instances +available in later versions of base to a wider (older) range of compilers.") + (license bsd-3))) + +(define-public ghc-auto-update + (package + (name "ghc-auto-update") + (version "0.1.2.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/auto-update/auto-update-" + version + ".tar.gz")) + (sha256 + (base32 + "1ns4c5mqhnm7hsiqxf1ivjs5fflyq92b16ldzrcl0p85631h0c3v")))) + (build-system haskell-build-system) + (home-page "https://github.com/yesodweb/wai") + (synopsis "Efficiently run periodic, on-demand actions") + (description "This library provides mechanisms to efficiently run +periodic, on-demand actions in Haskell.") + (license expat))) + +(define-public ghc-tagged + (package + (name "ghc-tagged") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tagged/tagged-" + version + ".tar.gz")) + (sha256 + (base32 + "1hc2qzhhz5p1xd8k03sklrdnhcflkwhgpl82k6fam8yckww9ipav")))) + (build-system haskell-build-system) + (home-page "https://hackage.haskell.org/package/tagged") + (synopsis "Haskell phantom types to avoid passing dummy arguments") + (description "This library provides phantom types for Haskell 98, to avoid +having to unsafely pass dummy arguments.") + (license bsd-3))) + +(define-public ghc-unbounded-delays + (package + (name "ghc-unbounded-delays") + (version "0.1.0.9") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/unbounded-delays/unbounded-delays-" + version + ".tar.gz")) + (sha256 + (base32 + "1f4h87503m3smhip432q027wj3zih18pmz2rnafh60589ifcl420")))) + (build-system haskell-build-system) + (home-page "https://github.com/basvandijk/unbounded-delays") + (synopsis "Unbounded thread delays and timeouts") + (description "The @code{threadDelay} and @code{timeout} functions from the +Haskell base library use the bounded @code{Int} type for specifying the delay +or timeout period. This package provides alternative functions which use the +unbounded @code{Integer} type.") + (license bsd-3))) + +;; This package builds `clock` without tests, since the tests rely on tasty +;; and tasty-quickcheck, which in turn require clock to build. When tasty and +;; tasty-quickcheck are added, we will add ghc-clock with tests enabled. +(define ghc-clock-bootstrap + (package + (name "ghc-clock-bootstrap") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" + "clock/" + "clock-" version ".tar.gz")) + (sha256 + (base32 "1ncph7vi2q6ywwc8ysxl1ibw6i5dwfvln88ssfazk8jgpj4iyykw")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ;; Testing suite depends on tasty and + ;; tasty-quickcheck, which need clock to build. + (home-page "https://hackage.haskell.org/package/clock") + (synopsis "High-resolution clock for Haskell") + (description "A package for convenient access to high-resolution clock and +timer functions of different operating systems via a unified API.") + (license bsd-3))) + +(define-public ghc-clock + (package + (name "ghc-clock") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/" + "clock/" + "clock-" version ".tar.gz")) + (sha256 + (base32 "1ncph7vi2q6ywwc8ysxl1ibw6i5dwfvln88ssfazk8jgpj4iyykw")))) + (build-system haskell-build-system) + (inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (home-page "https://hackage.haskell.org/package/clock") + (synopsis "High-resolution clock for Haskell") + (description "A package for convenient access to high-resolution clock and +timer functions of different operating systems via a unified API.") + (license bsd-3))) + +(define-public ghc-charset + (package + (name "ghc-charset") + (version "0.3.7.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/charset/charset-" + version + ".tar.gz")) + (sha256 + (base32 + "1gn0m96qpjww8hpp2g1as5yy0wcwy4iq73h3kz6g0yxxhcl5sh9x")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-semigroups" ,ghc-semigroups))) + (inputs + `(("ghc-unordered-containers" ,ghc-unordered-containers))) + (home-page "http://github.com/ekmett/charset") + (synopsis "Fast unicode character sets for Haskell") + (description "This package provides fast unicode character sets for +Haskell, based on complemented PATRICIA tries.") + (license bsd-3))) + +(define-public ghc-bytestring-builder + (package + (name "ghc-bytestring-builder") + (version "0.10.6.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/bytestring-builder" + "/bytestring-builder-" version ".tar.gz")) + (sha256 + (base32 + "1mkg24zl0rapb3gqzkyj5ibp07wx3yzd72hmfczssl0is63rjhww")))) + (build-system haskell-build-system) + (arguments `(#:haddock? #f)) ; Package contains no documentation. + (home-page "http://hackage.haskell.org/package/bytestring-builder") + (synopsis "The new bytestring builder, packaged outside of GHC") + (description "This package provides the bytestring builder that is +debuting in bytestring-0.10.4.0, which should be shipping with GHC 7.8. +Compatibility package for older packages.") + (license bsd-3))) + +(define-public ghc-nats + (package + (name "ghc-nats") + (version "1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/nats/nats-" + version + ".tar.gz")) + (sha256 + (base32 + "0r6s8l4s0yq3x2crrkv0b8zac13magfasr9v8hnq6rn1icsfhic0")))) + (build-system haskell-build-system) + (arguments `(#:haddock? #f)) + (inputs + `(("ghc-hashable" ,ghc-hashable))) + (home-page "https://hackage.haskell.org/package/nats") + (synopsis "Natural numbers") + (description "This library provides the natural numbers for Haskell.") + (license bsd-3))) + +(define-public ghc-void + (package + (name "ghc-void") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/void/void-" + version + ".tar.gz")) + (sha256 + (base32 + "1x15x2axz84ndw2bf60vjqljhrb0w95lddaljsxrl0hcd29zvw69")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-semigroups" ,ghc-semigroups))) + (inputs + `(("ghc-hashable" ,ghc-hashable))) + (home-page "http://github.com/ekmett/void") + (synopsis + "Logically uninhabited data type") + (description + "A Haskell 98 logically uninhabited data type, used to indicate that a +given term should not exist.") + (license bsd-3))) + +(define-public ghc-kan-extensions + (package + (name "ghc-kan-extensions") + (version "4.2.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/kan-extensions/kan-extensions-" + version + ".tar.gz")) + (sha256 + (base32 + "0iywbadpy8s3isfzlx9dlz3apaywhqq4gdbxkwygksq8pzdhwkrk")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-adjunctions" ,ghc-adjunctions))) + (inputs + `(("ghc-comonad" ,ghc-comonad) + ("ghc-contravariant" ,ghc-contravariant) + ("ghc-distributive" ,ghc-distributive) + ("ghc-free" ,ghc-free) + ("ghc-mtl" ,ghc-mtl) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-tagged" ,ghc-tagged))) + (home-page "http://github.com/ekmett/kan-extensions/") + (synopsis "Kan extensions library") + (description "This library provides Kan extensions, Kan lifts, various +forms of the Yoneda lemma, and (co)density (co)monads for Haskell.") + (license bsd-3))) + +(define-public ghc-statevar + (package + (name "ghc-statevar") + (version "1.1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/StateVar/StateVar-" + version + ".tar.gz")) + (sha256 + (base32 + "1ap51cvwq61xckx5hw44l82ihbxvsq3263xr5hqg42c5qp67kbhf")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-stm" ,ghc-stm))) + (home-page "http://hackage.haskell.org/package/StateVar") + (synopsis "State variables for Haskell") + (description "This package provides state variables, which are references +in the @code{IO} monad, like @code{IORef}s or parts of the OpenGL state.") + (license bsd-3))) + +(define-public ghc-lens + (package + (name "ghc-lens") + (version "4.13") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/lens/lens-" + version + ".tar.gz")) + (sha256 + (base32 + "0g4g0xksrb2m8wgsmraaq8qnk1sssb42kr65fc7clgyid6zyfmim")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: doctest packagedb propagation problem. + (propagated-inputs + `(("ghc-base-orphans" ,ghc-base-orphans) + ("ghc-bifunctors" ,ghc-bifunctors) + ("ghc-distributive" ,ghc-distributive) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-free" ,ghc-free) + ("ghc-kan-extensions" ,ghc-kan-extensions) + ("ghc-parallel" ,ghc-parallel) + ("ghc-reflection" ,ghc-reflection) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-vector" ,ghc-vector))) + (inputs + `(("ghc-comonad" ,ghc-comonad) + ("ghc-contravariant" ,ghc-contravariant) + ("ghc-hashable" ,ghc-hashable) + ("ghc-mtl" ,ghc-mtl) + ("ghc-profunctors" ,ghc-profunctors) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-tagged" ,ghc-tagged) + ("ghc-text" ,ghc-text) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-void" ,ghc-void) + ("ghc-generic-deriving" ,ghc-generic-deriving) + ("ghc-nats" ,ghc-nats) + ("ghc-simple-reflect" ,ghc-simple-reflect) + ("hlint" ,hlint))) + (home-page "http://github.com/ekmett/lens/") + (synopsis "Lenses, Folds and Traversals") + (description "This library provides @code{Control.Lens}. The combinators +in @code{Control.Lens} provide a highly generic toolbox for composing families +of getters, folds, isomorphisms, traversals, setters and lenses and their +indexed variants.") + (license bsd-3))) + +(define-public ghc-tagsoup + (package + (name "ghc-tagsoup") + (version "0.13.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tagsoup/tagsoup-" + version + ".tar.gz")) + (sha256 + (base32 + "13b6zy6346r3cxhaivys84fnxarg8wbv7r2znazfjdkqil8n5a1j")))) + (build-system haskell-build-system) + (inputs `(("ghc-text" ,ghc-text))) + (home-page + "http://community.haskell.org/~ndm/tagsoup/") + (synopsis + "Parsing and extracting information from (possibly malformed) HTML/XML +documents") + (description + "TagSoup is a library for parsing HTML/XML. It supports the HTML 5 +specification, and can be used to parse either well-formed XML, or +unstructured and malformed HTML from the web. The library also provides +useful functions to extract information from an HTML document, making it ideal +for screen-scraping.") + (license bsd-3))) + +(define-public ghc-digest + (package + (name "ghc-digest") + (version "0.0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/digest/digest-" + version + ".tar.gz")) + (sha256 + (base32 + "04gy2zp8yzvv7j9bdfvmfzcz3sqyqa6rwslqcn4vyair2vmif5v4")))) + (build-system haskell-build-system) + (inputs + `(("zlib" ,zlib))) + (home-page + "http://hackage.haskell.org/package/digest") + (synopsis + "Various cryptographic hashes for bytestrings") + (description + "This package provides efficient cryptographic hash implementations for +strict and lazy bytestrings. For now, CRC32 and Adler32 are supported; they +are implemented as FFI bindings to efficient code from zlib.") + (license bsd-3))) + +(define-public ghc-cheapskate + (package + (name "ghc-cheapskate") + (version "0.1.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/cheapskate/cheapskate-" + version + ".tar.gz")) + (sha256 + (base32 + "0drx1hlqvdcrij4097q6bxhbfcqm73jsqv1wwhd3hsnjdmr46ch2")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-xss-sanitize" ,ghc-xss-sanitize) + ("ghc-data-default" ,ghc-data-default))) + (inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-text" ,ghc-text) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-syb" ,ghc-syb) + ("ghc-uniplate" ,ghc-uniplate) + ("ghc-aeson" ,ghc-aeson) + ("ghc-wai-extra" ,ghc-wai-extra) + ("ghc-wai" ,ghc-wai) + ("ghc-http-types" ,ghc-http-types))) + (home-page "http://github.com/jgm/cheapskate") + (synopsis "Experimental markdown processor") + (description "Cheapskate is an experimental Markdown processor in pure +Haskell. It aims to process Markdown efficiently and in the most forgiving +possible way. It is designed to deal with any input, including garbage, with +linear performance. Output is sanitized by default for protection against XSS +attacks.") + (license bsd-3))) + +(define-public ghc-bifunctors + (package + (name "ghc-bifunctors") + (version "5") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/bifunctors/bifunctors-" + version + ".tar.gz")) + (sha256 + (base32 + "13990xdgx0n23qgi18ghhmsywj5zkr0a5bim0g8a4nzi0cx95ps1")))) + (build-system haskell-build-system) + (inputs + `(("ghc-tagged" ,ghc-tagged) + ("ghc-semigroups" ,ghc-semigroups))) + (home-page "http://github.com/ekmett/bifunctors/") + (synopsis "Bifunctors for Haskell") + (description "This package provides bifunctors for Haskell.") + (license bsd-3))) + +(define-public ghc-semigroupoids + (package + (name "ghc-semigroupoids") + (version "5.0.0.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/semigroupoids/semigroupoids-" + version + ".tar.gz")) + (sha256 + (base32 + "1jf7jnfhdvl6p18wdr21yi2fim1xb8alcn6szhrdswj0dkilgq6d")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-base-orphans" ,ghc-base-orphans) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-bifunctors" ,ghc-bifunctors) + ("ghc-comonad" ,ghc-comonad) + ("ghc-contravariant" ,ghc-contravariant) + ("ghc-distributive" ,ghc-distributive))) + (arguments `(#:tests? #f)) ; FIXME: doctest packagedb propagation problem. + (inputs + `(("ghc-semigroups" ,ghc-semigroups) + ("ghc-tagged" ,ghc-tagged))) + (home-page "http://github.com/ekmett/semigroupoids") + (synopsis "Semigroupoids operations for Haskell") + (description "This library provides a wide array of (semi)groupoids and +operations for working with them. A @code{Semigroupoid} is a @code{Category} +without the requirement of identity arrows for every object in the category. +A @code{Category} is any @code{Semigroupoid} for which the Yoneda lemma holds. +Finally, to work with these weaker structures it is beneficial to have +containers that can provide stronger guarantees about their contents, so +versions of @code{Traversable} and @code{Foldable} that can be folded with +just a @code{Semigroup} are added.") + (license bsd-3))) + +(define-public ghc-contravariant + (package + (name "ghc-contravariant") + (version "1.3.3") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/contravariant/contravariant-" + version + ".tar.gz")) + (sha256 + (base32 + "184hcmhsznqrkmqlc1kza9pb5p591anva574ry8wrh81vqmhwfb5")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-void" ,ghc-void) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-statevar" ,ghc-statevar))) + (inputs + `(("ghc-semigroups" ,ghc-semigroups))) + (home-page + "http://github.com/ekmett/contravariant/") + (synopsis "Contravariant functors") + (description "Contravariant functors for Haskell.") + (license bsd-3))) + +(define-public ghc-semigroups + (package + (name "ghc-semigroups") + (version "0.17.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/semigroups/semigroups-" + version + ".tar.gz")) + (sha256 + (base32 + "0gvpfi7s6ys4qha3y9a1zl1a15gf9cgg33wjb94ghg82ivcxnc3r")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-nats" ,ghc-nats) + ("ghc-tagged" ,ghc-tagged) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (inputs + `(("ghc-text" ,ghc-text) + ("ghc-hashable" ,ghc-hashable))) + (home-page "http://github.com/ekmett/semigroups/") + (synopsis "Semigroup operations for Haskell") + (description "This package provides semigroups for Haskell. In +mathematics, a semigroup is an algebraic structure consisting of a set +together with an associative binary operation. A semigroup generalizes a +monoid in that there might not exist an identity element. It +also (originally) generalized a group (a monoid with all inverses) to a type +where every element did not have to have an inverse, thus the name +semigroup.") + (license bsd-3))) + +(define-public ghc-free + (package + (name "ghc-free") + (version "4.12.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/free/free-" + version + ".tar.gz")) + (sha256 + (base32 + "0sr8phvrb4ny8j1wzq55rdn8q4br23q4pw2j276npr844825jr9p")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-prelude-extras" ,ghc-prelude-extras) + ("ghc-profunctors" ,ghc-profunctors) + ("ghc-exceptions" ,ghc-exceptions))) + (inputs + `(("ghc-bifunctors" ,ghc-bifunctors) + ("ghc-comonad" ,ghc-comonad) + ("ghc-distributive" ,ghc-distributive) + ("ghc-mtl" ,ghc-mtl) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-semigroups" ,ghc-semigroups))) + (home-page "http://github.com/ekmett/free/") + (synopsis "Unrestricted monads for Haskell") + (description "This library provides free monads, which are useful for many +tree-like structures and domain specific languages. If @code{f} is a +@code{Functor} then the free @code{Monad} on @code{f} is the type of trees +whose nodes are labeled with the constructors of @code{f}. The word \"free\" +is used in the sense of \"unrestricted\" rather than \"zero-cost\": @code{Free +f} makes no constraining assumptions beyond those given by @code{f} and the +definition of @code{Monad}.") + (license bsd-3))) + +(define-public ghc-adjunctions + (package + (name "ghc-adjunctions") + (version "4.2.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/adjunctions/adjunctions-" + version + ".tar.gz")) + (sha256 + (base32 + "00p030iypjzjib8pxz1x6mxfi59wvyrwjj11zv9bh766dgkdbwjq")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-profunctors" ,ghc-profunctors))) + (inputs + `(("ghc-comonad" ,ghc-comonad) + ("ghc-contravariant" ,ghc-contravariant) + ("ghc-distributive" ,ghc-distributive) + ("ghc-free" ,ghc-free) + ("ghc-mtl" ,ghc-mtl) + ("ghc-tagged" ,ghc-tagged) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-void" ,ghc-void))) + (home-page "http://github.com/ekmett/adjunctions/") + (synopsis "Adjunctions and representable functors") + (description "This library provides adjunctions and representable functors +for Haskell.") + (license bsd-3))) + +(define-public ghc-fast-logger + (package + (name "ghc-fast-logger") + (version "2.4.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/fast-logger/fast-logger-" + version + ".tar.gz")) + (sha256 + (base32 + "0kjk1861qcls8m8y7i55msfpprws5wk6c5mxzi35g2qbl2sih4p5")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-bytestring-builder" ,ghc-bytestring-builder) + ("ghc-auto-update" ,ghc-auto-update))) + (inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-text" ,ghc-text))) + (home-page "https://hackage.haskell.org/package/fast-logger") + (synopsis "Fast logging system") + (description "This library provides a fast logging system for Haskell.") + (license bsd-3))) + +(define-public ghc-doctest + (package + (name "ghc-doctest") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/doctest/doctest-" + version + ".tar.gz")) + (sha256 + (base32 + "1jbyhzbi2hfrfg7vbkpj6vriaap8cn99nnmzwcfscwaijz09jyrm")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: missing test framework + (propagated-inputs + `(("ghc-syb" ,ghc-syb) + ("ghc-paths" ,ghc-paths))) + (inputs + `(("ghc-base-compat" ,ghc-base-compat) + ("ghc-hunit" ,ghc-hunit) + ("ghc-hspec" ,ghc-hspec) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-stringbuilder" ,ghc-stringbuilder) + ("ghc-silently" ,ghc-silently) + ("ghc-setenv" ,ghc-setenv))) + (home-page + "https://github.com/sol/doctest#readme") + (synopsis "Test interactive Haskell examples") + (description "The doctest program checks examples in source code comments. +It is modeled after doctest for Python, see +@uref{http://docs.python.org/library/doctest.html, the Doctest website}.") + (license expat))) + +(define-public ghc-lifted-base + (package + (name "ghc-lifted-base") + (version "0.2.3.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/lifted-base/lifted-base-" + version + ".tar.gz")) + (sha256 + (base32 + "1yz14a1rsgknwyl08n4kxrlc26hfwmb95a3c2drbnsgmhdyq7iap")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Missing testing libraries. + (propagated-inputs + `(("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-monad-control" ,ghc-monad-control))) + (inputs + `(("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-hunit" ,ghc-hunit))) + (home-page "https://github.com/basvandijk/lifted-base") + (synopsis "Lifted IO operations from the base library") + (description "Lifted-base exports IO operations from the @code{base} +library lifted to any instance of @code{MonadBase} or @code{MonadBaseControl}. +Note that not all modules from @code{base} are converted yet. The package +includes a copy of the @code{monad-peel} test suite written by Anders +Kaseorg.") + (license bsd-3))) + +(define-public ghc-word8 + (package + (name "ghc-word8") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/word8/word8-" + version + ".tar.gz")) + (sha256 + (base32 + "1pbn8ra3qhwvw07p375cdmp7jzlg07hgdcr4cpscz3h7b9sy7fiw")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "http://hackage.haskell.org/package/word8") + (synopsis "Word8 library for Haskell") + (description "Word8 library to be used with @code{Data.ByteString}.") + (license bsd-3))) + +(define-public ghc-stringsearch + (package + (name "ghc-stringsearch") + (version "0.3.6.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/stringsearch/stringsearch-" + version + ".tar.gz")) + (sha256 + (base32 + "0jpy9xjcjdbpi3wk6mg7xwd7wfi2mma70p97v1ij5i8bj9qijpr9")))) + (build-system haskell-build-system) + (home-page "https://bitbucket.org/dafis/stringsearch") + (synopsis "Fast searching, splitting and replacing of ByteStrings") + (description "This package provides several functions to quickly search +for substrings in strict or lazy @code{ByteStrings}. It also provides +functions for breaking or splitting on substrings and replacing all +occurrences of a substring (the first in case of overlaps) with another.") + (license bsd-3))) + +(define-public ghc-tasty-quickcheck + (package + (name "ghc-tasty-quickcheck") + (version "0.8.4") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty-quickcheck/" + "tasty-quickcheck-" version ".tar.gz")) + (sha256 + (base32 + "15rjxib5jmjq0hzj47x15kgp3awc73va4cy1pmpf7k3hvfv4qprn")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-quickcheck" ,ghc-quickcheck))) + (inputs + `(("ghc-tagged" ,ghc-tagged) + ("ghc-tasty" ,ghc-tasty) + ("ghc-random" ,ghc-random) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-pcre-light" ,ghc-pcre-light))) + (home-page "http://documentup.com/feuerbach/tasty") + (synopsis "QuickCheck support for the Tasty test framework") + (description "This package provides QuickCheck support for the Tasty +Haskell test framework.") + (license expat))) + +(define-public ghc-tasty-golden + (package + (name "ghc-tasty-golden") + (version "2.3.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty-golden/tasty-golden-" + version + ".tar.gz")) + (sha256 + (base32 + "0n7nll1sx75n3lffwhgnjrxdn0jz1g0921z9mj193fxqw0wz8axh")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-temporary" ,ghc-temporary))) + (inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-mtl" ,ghc-mtl) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-tagged" ,ghc-tagged) + ("ghc-async" ,ghc-async) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-temporary-rc" ,ghc-temporary-rc))) + (home-page + "https://github.com/feuerbach/tasty-golden") + (synopsis "Golden tests support for tasty") + (description + "This package provides support for 'golden testing'. A golden test is an +IO action that writes its result to a file. To pass the test, this output +file should be identical to the corresponding 'golden' file, which contains +the correct result for the test.") + (license expat))) + +(define-public ghc-tasty + (package + (name "ghc-tasty") + (version "0.11.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty/tasty-" + version + ".tar.gz")) + (sha256 + (base32 + "1chapivmmwsb1ghwagvdm80bfj3hdk75m94z4p212ng2i4ghpjkx")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-stm" ,ghc-stm) + ("ghc-mtl" ,ghc-mtl) + ("ghc-tagged" ,ghc-tagged) + ("ghc-regex-tdfa-rc" ,ghc-regex-tdfa-rc) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-unbounded-delays" ,ghc-unbounded-delays) + ("ghc-async" ,ghc-async) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-clock-bootstrap" ,ghc-clock-bootstrap))) + (home-page "http://documentup.com/feuerbach/tasty") + (synopsis "Modern and extensible testing framework") + (description "Tasty is a modern testing framework for Haskell. It lets +you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, +and any other types of tests into a single test suite.") + (license expat))) + +(define-public ghc-tasty-hunit + (package + (name "ghc-tasty-hunit") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/tasty-hunit/tasty-hunit-" + version + ".tar.gz")) + (sha256 + (base32 + "08qnxaw34wfnzi9irs1jd4d0zczqm3k5ffkd4zwhkz0dflmgq7mf")))) + (build-system haskell-build-system) + (inputs + `(("ghc-tasty" ,ghc-tasty))) + (home-page "http://documentup.com/feuerbach/tasty") + (synopsis "HUnit support for the Tasty test framework") + (description "This package provides HUnit support for the Tasty Haskell +test framework.") + (license expat))) + +(define-public ghc-cookie + (package + (name "ghc-cookie") + (version "0.4.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/cookie/cookie-" + version + ".tar.gz")) + (sha256 + (base32 + "0b6ym6fn29p5az4dwydy036lxj131kagrmgb93w4bbkqfkds8b9s")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-old-locale" ,ghc-old-locale))) + (inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-text" ,ghc-text) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (home-page "http://github.com/snoyberg/cookie") + (synopsis "HTTP cookie parsing and rendering") + (description "HTTP cookie parsing and rendering library for Haskell.") + (license bsd-3))) + +(define-public ghc-scientific + (package + (name "ghc-scientific") + (version "0.3.4.2") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/scientific/scientific-" + version + ".tar.gz")) + (sha256 + (base32 + "0mimdkva0cgzaychr6whv9if29z0r5wwhkss9bmd4rz8kq1kgngn")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-hashable" ,ghc-hashable) + ("ghc-vector" ,ghc-vector))) + (inputs + `(("ghc-text" ,ghc-text) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-ant-xml" ,ghc-tasty-ant-xml) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-smallcheck" ,ghc-smallcheck) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "https://github.com/basvandijk/scientific") + (synopsis "Numbers represented using scientific notation") + (description "This package provides @code{Data.Scientific}, which provides +the number type @code{Scientific}. Scientific numbers are arbitrary precision +and space efficient. They are represented using +@uref{http://en.wikipedia.org/wiki/Scientific_notation, scientific +notation}.") + (license bsd-3))) + +(define-public ghc-aeson + (package + (name "ghc-aeson") + (version "0.10.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/aeson/aeson-" + version + ".tar.gz")) + (sha256 + (base32 + "19kp33rfivr4d3myyr8xn803wd7p8x5nc4wb3qvlgjwgyqjaxvrz")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (propagated-inputs + `(("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-dlist" ,ghc-dlist) + ("ghc-mtl" ,ghc-mtl) + ("ghc-scientific" ,ghc-scientific) + ("ghc-syb" ,ghc-syb) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-vector" ,ghc-vector))) + (inputs + `(("ghc-hashable" ,ghc-hashable) + ("ghc-text" ,ghc-text) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "https://github.com/bos/aeson") + (synopsis "Fast JSON parsing and encoding") + (description "This package provides a JSON parsing and encoding library +for Haskell, optimized for ease of use and high performance. (A note on +naming: in Greek mythology, Aeson was the father of Jason.)") + (license bsd-3))) + +(define-public ghc-wai + (package + (name "ghc-wai") + (version "3.0.4.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/wai/wai-" + version + ".tar.gz")) + (sha256 + (base32 + "1551n0g0n22vml33v0jz5xgjcy6j79algvsdqg11a1z5ljjrjlqf")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-bytestring-builder" ,ghc-bytestring-builder) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-vault" ,ghc-vault) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-network" ,ghc-network))) + (inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hunit" ,ghc-hunit) + ("ghc-hspec" ,ghc-hspec) + ("ghc-text" ,ghc-text) + ("ghc-http-types" ,ghc-http-types))) + (home-page "https://hackage.haskell.org/package/wai") + (synopsis "Web application interface for Haskell") + (description "This package provides a Web Application Interface (WAI) +library for the Haskell language. It defines a common protocol for +communication between web applications and web servers.") + (license bsd-3))) + +(define-public ghc-wai-logger + (package + (name "ghc-wai-logger") + (version "2.2.4.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/wai-logger/wai-logger-" + version + ".tar.gz")) + (sha256 + (base32 + "1s6svvy3ci4j1dj1jaw8hg628miwj8f5gpy9n8d8hpsaxav6nzgk")))) + (build-system haskell-build-system) + (arguments `(#:tests? #f)) ; FIXME: Tests cannot find libraries exported + ; by propagated-inputs. + (propagated-inputs + `(("ghc-auto-update" ,ghc-auto-update) + ("ghc-byteorder" ,ghc-byteorder) + ("ghc-easy-file" ,ghc-easy-file) + ("ghc-unix-time" ,ghc-unix-time))) + (inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-fast-logger" ,ghc-fast-logger) + ("ghc-http-types" ,ghc-http-types) + ("ghc-network" ,ghc-network) + ("ghc-wai" ,ghc-wai))) + (home-page "http://hackage.haskell.org/package/wai-logger") + (synopsis "Logging system for WAI") + (description "This package provides the logging system for WAI.") + (license bsd-3))) + +(define-public ghc-wai-extra + (package + (name "ghc-wai-extra") + (version "3.0.11.1") + (source + (origin + (method url-fetch) + (uri (string-append + "http://hackage.haskell.org/package/wai-extra/wai-extra-" + version + ".tar.gz")) + (sha256 + (base32 + "1kr2s5qyx1dvnwr372h7pca4sgxjv0pdx96xkgsfi180h3mb0vq8")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-cookie" ,ghc-cookie) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-network" ,ghc-network) + ("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-streaming-commons" ,ghc-streaming-commons) + ("ghc-stringsearch" ,ghc-stringsearch) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-fast-logger" ,ghc-fast-logger) + ("ghc-wai-logger" ,ghc-wai-logger) + ("ghc-zlib" ,ghc-zlib) + ("ghc-word8" ,ghc-word8) + ("ghc-iproute" ,ghc-iproute) + ("ghc-void" ,ghc-void))) + (inputs + `(("ghc-wai" ,ghc-wai) + ("ghc-http-types" ,ghc-http-types) + ("ghc-text" ,ghc-text) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-vault" ,ghc-vault) + ("ghc-aeson" ,ghc-aeson) + ("ghc-hspec" ,ghc-hspec) + ("ghc-hunit" ,ghc-hunit))) + (home-page "http://github.com/yesodweb/wai") + (synopsis "Some basic WAI handlers and middleware") + (description "This library provides basic WAI handlers and middleware +functionality.") + (license expat))) + +(define-public ghc-deepseq-generics + (package + (name "ghc-deepseq-generics") + (version "0.1.1.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "deepseq-generics/deepseq-generics-" + version ".tar.gz")) + (sha256 + (base32 + "01pvigx8n9p8hwbzp2qiq6kzf7cxiam843jz2sjgliacmmp1v7l3")))) + (build-system haskell-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'relax-ghc-prim-dependency + (lambda _ + (substitute* "deepseq-generics.cabal" + (("< 0.4") "< 0.5")) + #t))))) + (native-inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit))) + (home-page "https://github.com/hvr/deepseq-generics") + (synopsis "Generic RNF implementation") + (description + "This package provides a @code{GHC.Generics}-based +@code{Control.DeepSeq.Generics.genericRnf} function which can be used for +providing an 'rnf' implementation.") + (license bsd-3))) + +(define-public ghc-pandoc-types + (package + (name "ghc-pandoc-types") + (version "1.12.4.7") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "pandoc-types/pandoc-types-" + version ".tar.gz")) + (sha256 + (base32 + "108n11kbdaj2ii3cyf0xczhsx90p1gjbxwqp1f0wyn2m3cls632n")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-syb" ,ghc-syb) + ("ghc-aeson" ,ghc-aeson) + ("ghc-deepseq-generics" ,ghc-deepseq-generics))) + (home-page "http://johnmacfarlane.net/pandoc") + (synopsis "Types for representing a structured document") + (description + "This module defines the @code{Pandoc} data structure, which is used by +pandoc to represent structured documents. It also provides functions for +building up, manipulating and serialising @code{Pandoc} structures.") + (license bsd-3))) + +(define-public ghc-texmath + (package + (name "ghc-texmath") + (version "0.8.4") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "texmath/texmath-" version ".tar.gz")) + (sha256 + (base32 + "15821jg64fbr4rwaglp5ksah6q8qqz1vkjxlqp6d3bbb1rj8v2ri")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-syb" ,ghc-syb) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-split" ,ghc-split) + ("ghc-temporary" ,ghc-temporary) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-xml" ,ghc-xml) + ("ghc-parsec" ,ghc-parsec) + ("ghc-mtl" ,ghc-mtl) + ("ghc-pandoc-types" ,ghc-pandoc-types))) + (home-page "http://github.com/jgm/texmath") + (synopsis "Conversion between formats used to represent mathematics") + (description + "The texmath library provides functions to read and write TeX math, +presentation MathML, and OMML (Office Math Markup Language, used in Microsoft +Office). Support is also included for converting math formats to pandoc's +native format (allowing conversion, via pandoc, to a variety of different +markup formats). The TeX reader supports basic LaTeX and AMS extensions, and +it can parse and apply LaTeX macros.") + (license gpl2+))) + +(define-public ghc-regex-pcre-builtin + (package + (name "ghc-regex-pcre-builtin") + (version "0.94.4.8.8.35") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "regex-pcre-builtin/regex-pcre-builtin-" + version ".tar.gz")) + (sha256 + (base32 + "0y7as9wqlkykpipka2cfdhmcnin345q01pp0wsva8fwmvsavdl8b")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-regex-base" ,ghc-regex-base))) + (home-page "http://hackage.haskell.org/package/regex-pcre") + (synopsis "Enhancement of the builtin Text.Regex library") + (description + "This package is an enhancement of the @code{Text.Regex} library, +providing the PCRE backend to accompany regex-base, with bundled code from +@url{http://www.pcre.org}.") + (license bsd-3))) + +(define-public ghc-diff + (package + (name "ghc-diff") + (version "0.3.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "Diff/Diff-" version ".tar.gz")) + (sha256 + (base32 + "13iqqmpadcm7fvqwbfrz94w030rvjh66w2bdls1253128ac2n0vz")))) + (build-system haskell-build-system) + (home-page "http://hub.darcs.net/sterlingclover/Diff") + (synopsis "O(ND) diff algorithm in Haskell") + (description + "This package provides an implementation of the standard diff algorithm, +and utilities for pretty printing.") + (license bsd-3))) + +(define-public ghc-highlighting-kate + (package + (name "ghc-highlighting-kate") + (version "0.6") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "highlighting-kate/highlighting-kate-" + version ".tar.gz")) + (sha256 + (base32 + "16334fbiyq6017zbgc59qc00h0bk24xh4dcrbqx63dvf72ac37dk")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-diff" ,ghc-diff) + ("ghc-regex-pcre-builtin" ,ghc-regex-pcre-builtin))) + (native-inputs + `(("ghc-parsec" ,ghc-parsec) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-mtl" ,ghc-mtl))) + (home-page "http://github.com/jgm/highlighting-kate") + (synopsis "Syntax highlighting library") + (description + "Highlighting-kate is a syntax highlighting library with support for +nearly one hundred languages. The syntax parsers are automatically generated +from @uref{http://kate-editor.org/, Kate syntax descriptions}, so any syntax +supported by Kate can be added. An (optional) command-line program is +provided, along with a utility for generating new parsers from Kate XML syntax +descriptions.") + (license gpl2+))) + +(define-public ghc-cmark + (package + (name "ghc-cmark") + (version "0.4.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "cmark/cmark-" version ".tar.gz")) + (sha256 + (base32 + "0c134qh65viaq4q6pv7bnnr5wchzivg94nv0dj8pc1326sx0dw12")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (native-inputs + `(("ghc-hunit" ,ghc-hunit))) + (home-page "https://github.com/jgm/commonmark-hs") + (synopsis "Fast, accurate CommonMark (Markdown) parser and renderer") + (description + "This package provides Haskell bindings for +@uref{https://github.com/jgm/cmark, libcmark}, the reference parser for +CommonMark, a fully specified variant of Markdown. It includes sources for +libcmark (0.21.0) and does not require prior installation of the C library.") + (license bsd-3))) + +(define-public ghc-executable-path + (package + (name "ghc-executable-path") + (version "0.0.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "executable-path/executable-path-" + version ".tar.gz")) + (sha256 + (base32 + "1jg58qf19qz93c60ryglcavwdcysz4fd4qn8kpw5im9w9kniawlc")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/executable-path") + (synopsis "Find out the full path of the executable") + (description + "The documentation of @code{System.Environment.getProgName} says that +\"However, this is hard-to-impossible to implement on some non-Unix OSes, so +instead, for maximum portability, we just return the leafname of the program +as invoked.\" This library tries to provide the missing path.") + (license public-domain))) + +(define-public ghc-enclosed-exceptions + (package + (name "ghc-enclosed-exceptions") + (version "1.0.1.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "enclosed-exceptions/enclosed-exceptions-" + version ".tar.gz")) + (sha256 + (base32 + "16ax1kqdsk4apg642qxkm2hf9vb5hzmkd14zmkxra8ssp8rn28z5")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-async" ,ghc-async) + ("ghc-transformers-base" ,ghc-transformers-base))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "https://github.com/jcristovao/enclosed-exceptions") + (synopsis "Catch all exceptions from within an enclosed computation") + (description + "This library implements a technique to catch all exceptions raised +within an enclosed computation, while remaining responsive to (external) +asynchronous exceptions.") + (license expat))) + +(define-public ghc-packedstring + (package + (name "ghc-packedstring") + (version "0.1.0.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "packedstring/packedstring-" + version ".tar.gz")) + (sha256 + (base32 + "1x78pzzdlnpcmh9p37rlf8m5cxf3yqm2alf3whl4zpr9w25r0qj8")))) + (build-system haskell-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'enable-extension + (lambda _ + ;; This package won't compile without the StandaloneDeriving + ;; extension. + (substitute* "packedstring.cabal" + (("CPP") "CPP, StandaloneDeriving")) + #t))))) + (home-page "http://hackage.haskell.org/package/packedstring") + (synopsis "Library for packed strings") + (description + "This deprecated library provides an implementation of packed strings.") + (license bsd-3))) + +(define-public ghc-th-lift + (package + (name "ghc-th-lift") + (version "0.7.5") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "th-lift/th-lift-" version ".tar.gz")) + (sha256 + (base32 + "13xdkk1chdghf059sfx8d3d8r0mj1dbzdi5kf2zf0mjmz3qq7m7k")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-packedstring" ,ghc-packedstring))) + (home-page "http://github.com/mboes/th-lift") + (synopsis "Derive Template Haskell's Lift class for datatypes") + (description + "This is a Haskell library to derive Template Haskell's Lift class for +datatypes.") + (license bsd-3))) + +(define-public ghc-th-expand-syns + (package + (name "ghc-th-expand-syns") + (version "0.3.0.6") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "th-expand-syns/th-expand-syns-" + version ".tar.gz")) + (sha256 + (base32 + "03qv93pyqk8all39knsf0mzmbfdck5x61kqnyn8rbisw5c1ymx6j")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-syb" ,ghc-syb))) + (home-page "http://hackage.haskell.org/package/th-expand-syns") + (synopsis "Expands type synonyms in Template Haskell ASTs") + (description + "This package enables users to expand type synonyms in Template Haskell +@dfn{abstract syntax trees} (ASTs).") + (license bsd-3))) + +(define-public ghc-th-reify-many + (package + (name "ghc-th-reify-many") + (version "0.1.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "th-reify-many/th-reify-many-" + version ".tar.gz")) + (sha256 + (base32 + "00hryljcs434wcv1vaamfdbjk857f46djxv7mlwplkl3zsmfhlfx")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-safe" ,ghc-safe) + ("ghc-th-expand-syns" ,ghc-th-expand-syns))) + (home-page "http://github.com/mgsloan/th-reify-many") + (synopsis "Recurseively reify template haskell datatype info") + (description + "th-reify-many provides functions for recursively reifying top level +declarations. The main intended use case is for enumerating the names of +datatypes reachable from an initial datatype, and passing these names to some +function which generates instances.") + (license bsd-3))) + +(define-public ghc-th-orphans + (package + (name "ghc-th-orphans") + (version "0.13.0") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "th-orphans/th-orphans-" version ".tar.gz")) + (sha256 + (base32 + "105y03bxh0a2r69l603i7md17gg1vxs1jj1n40pn5q486lmfxbmx")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-th-lift" ,ghc-th-lift) + ("ghc-th-reify-many" ,ghc-th-reify-many) + ("ghc-mtl" ,ghc-mtl) + ("ghc-generic-deriving" ,ghc-generic-deriving))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "http://hackage.haskell.org/package/th-orphans") + (synopsis "Orphan instances for TH datatypes") + (description + "This package provides orphan instances for Template Haskell datatypes. In particular, +instances for @code{Ord} and @code{Lift}, as well as a few missing @code{Show} +and @code{Eq} instances. These instances used to live in the haskell-src-meta +package, and that's where the version number started.") + (license bsd-3))) + +(define-public ghc-haskell-src-meta + (package + (name "ghc-haskell-src-meta") + (version "0.6.0.12") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "haskell-src-meta/haskell-src-meta-" + version ".tar.gz")) + (sha256 + (base32 + "1mzbfrfvl6pj8068w3m6alzry1403ir1gmz3czg66n5z198l4dql")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-haskell-src-exts" ,ghc-haskell-src-exts) + ("ghc-syb" ,ghc-syb) + ("ghc-th-orphans" ,ghc-th-orphans))) + (home-page "http://hackage.haskell.org/package/haskell-src-meta") + (synopsis "Parse source to template-haskell abstract syntax") + (description + "This package provides tools to parse Haskell sources to the +template-haskell abstract syntax.") + (license bsd-3))) + +(define-public ghc-aeson-qq + (package + (name "ghc-aeson-qq") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "aeson-qq/aeson-qq-" version ".tar.gz")) + (sha256 + (base32 + "1z8kh3qjc4khadz1ijdqm7fbk7dh17sisqhpwd3c9aibj2927k9d")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-base-compat" ,ghc-base-compat) + ("ghc-text" ,ghc-text) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) + ("ghc-aeson" ,ghc-aeson) + ("ghc-parsec" ,ghc-parsec) + ("ghc-haskell-src-meta" ,ghc-haskell-src-meta))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "http://github.com/zalora/aeson-qq") + (synopsis "JSON quasiquoter for Haskell") + (description + "aeson-qq provides a JSON quasiquoter for Haskell. This package exposes +the function @code{aesonQQ} that compile-time converts a string representation +of a JSON value into a @code{Data.Aeson.Value}.") + (license expat))) + +(define-public ghc-conduit + (package + (name "ghc-conduit") + (version "1.2.5.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "conduit/conduit-" version ".tar.gz")) + (sha256 + (base32 + "0aq6wswd5dkhdmy7sjhd99mldpq33dqpgbdcwpm94ahvckqxs7v5")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-exceptions" ,ghc-exceptions) + ("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-mmorph" ,ghc-mmorph) + ("ghc-mtl" ,ghc-mtl) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-void" ,ghc-void))) + (native-inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hspec" ,ghc-hspec) + ("ghc-safe" ,ghc-safe))) + (home-page "https://github.com/snoyberg/conduit") + (synopsis "Streaming data library ") + (description + "conduit is a solution to the streaming data problem, allowing for +production, transformation, and consumption of streams of data in constant +memory. It is an alternative to lazy I/O which guarantees deterministic +resource handling, and fits in the same general solution space as +enumerator/iteratee and pipes." ) + (license expat))) + +(define-public ghc-logging-facade + (package + (name "ghc-logging-facade") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "logging-facade/logging-facade-" + version ".tar.gz")) + (sha256 + (base32 + "0zhdbjyj0j9by19rma9alxysrxnnl3s4kks4zk4bx0dg5xa0264y")))) + (build-system haskell-build-system) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "http://hackage.haskell.org/package/logging-facade") + (synopsis "Simple logging abstraction that allows multiple back-ends") + (description + "This package provides a simple logging abstraction that allows multiple +back-ends.") + (license expat))) + +(define-public ghc-mockery + (package + (name "ghc-mockery") + (version "0.3.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "mockery/mockery-" version ".tar.gz")) + (sha256 + (base32 + "0m0lp2z63sgkylz5318j53r5hnrkp705qh7nqbb149ir4gy7g1bg")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-temporary" ,ghc-temporary) + ("ghc-logging-facade" ,ghc-logging-facade))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "http://hackage.haskell.org/package/mockery") + (synopsis "Support functions for automated testing") + (description + "The mockery package provides support functions for automated testing.") + (license expat))) + +(define-public ghc-yaml + (package + (name "ghc-yaml") + (version "0.8.15.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "yaml/yaml-" version ".tar.gz")) + (sha256 + (base32 + "0v6c435xmgm99zxb30pqr7lhkb2a56wxqp70g4hjz8p7rj0vichx")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-conduit" ,ghc-conduit) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-vector" ,ghc-vector) + ("ghc-text" ,ghc-text) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-scientific" ,ghc-scientific) + ("ghc-enclosed-exceptions" ,ghc-enclosed-exceptions) + ("ghc-aeson-qq" ,ghc-aeson-qq) + ("ghc-base-compat" ,ghc-base-compat))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-hunit" ,ghc-hunit) + ("ghc-mockery" ,ghc-mockery))) + (home-page "http://github.com/snoyberg/yaml/") + (synopsis "Parsing and rendering YAML documents") + (description + "This package provides a library to parse and render YAML documents.") + (license bsd-3))) + +(define-public ghc-filemanip + (package + (name "ghc-filemanip") + (version "0.3.6.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "filemanip/filemanip-" version ".tar.gz")) + (sha256 + (base32 + "0ilqr8jv41zxcj5qyicg29m8s30b9v70x6f9h2h2rw5ap8bxldl8")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-unix-compat" ,ghc-unix-compat))) + (home-page "https://github.com/bos/filemanip") + (synopsis "File and directory manipulation for Haskell") + (description + "This package provides a Haskell library for working with files and +directories. It includes code for pattern matching, finding files, modifying +file contents, and more.") + (license bsd-3))) + +(define-public ghc-mmap + (package + (name "ghc-mmap") + (version "0.5.9") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "mmap/mmap-" version ".tar.gz")) + (sha256 + (base32 + "1y5mk3yf4b8r6rzmlx1xqn4skaigrqnv08sqq0v7r3nbw42bpz2q")))) + (build-system haskell-build-system) + (home-page "http://hackage.haskell.org/package/mmap") + (synopsis "Memory mapped files for Haskell") + (description + "This library provides a wrapper to @code{mmap}, allowing files or +devices to be lazily loaded into memory as strict or lazy @code{ByteStrings}, +@code{ForeignPtrs} or plain @code{Ptrs}, using the virtual memory subsystem to +do on-demand loading.") + (license bsd-3))) + +(define-public ghc-juicypixels + (package + (name "ghc-juicypixels") + (version "3.2.6.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "JuicyPixels/JuicyPixels-" + version ".tar.gz")) + (sha256 + (base32 + "0hxa57cdknz86zywpjwfbdhac5lmk7j0wd5hy4mcnb8mw6r2m592")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-zlib" ,ghc-zlib) + ("ghc-vector" ,ghc-vector) + ("ghc-primitive" ,ghc-primitive) + ("ghc-mmap" ,ghc-mmap))) + (home-page "https://github.com/Twinside/Juicy.Pixels") + (synopsis "Picture loading and serialization library") + (description + "This library can load and store images in PNG, Bitmap, JPEG, Radiance, +TIFF and GIF formats.") + (license bsd-3))) + +(define-public ghc-sha + (package + (name "ghc-sha") + (version "1.6.4.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "SHA/SHA-" version ".tar.gz")) + (sha256 + (base32 + "134ajm87fm4lpsw86m9q8apv20dw4bpk46raa389zr6bcdpifw64")))) + (build-system haskell-build-system) + (native-inputs + `(("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2))) + (home-page "http://hackage.haskell.org/package/SHA") + (synopsis "SHA suite of message digest functions") + (description + "This library implements the SHA suite of message digest functions, +according to NIST FIPS 180-2 (with the SHA-224 addendum), as well as the +SHA-based HMAC routines. The functions have been tested against most of the +NIST and RFC test vectors for the various functions. While some attention has +been paid to performance, these do not presently reach the speed of well-tuned +libraries, like OpenSSL.") + (license bsd-3))) + +(define-public ghc-hslua + (package + (name "ghc-hslua") + (version "0.4.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "hslua/hslua-" version ".tar.gz")) + (sha256 + (base32 + "0gqp6qhp4v24kzv2j49kgk7bxqzw0w10x0zr0r2j9wkfavqb9wid")))) + (build-system haskell-build-system) + (arguments + `(#:configure-flags '("-fsystem-lua"))) + (inputs + `(("lua" ,lua-5.1))) + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-hspec-contrib" ,ghc-hspec-contrib) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-quickcheck-instances" ,ghc-quickcheck-instances))) + (home-page "http://hackage.haskell.org/package/hslua") + (synopsis "Lua language interpreter embedding in Haskell") + (description + "The Scripting.Lua module is a wrapper of the Lua language interpreter as +described in @url{http://www.lua.org/}.") + (license expat))) + +(define-public ghc-mime-types + (package + (name "ghc-mime-types") + (version "0.1.0.6") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "mime-types/mime-types-" + version ".tar.gz")) + (sha256 + (base32 + "090z3dp928243amnc6s8g10rk2h2bprk9y138q6wj3cpflzr72pw")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-text" ,ghc-text))) + (home-page "https://github.com/yesodweb/wai") + (synopsis "Basic MIME type handling types and functions") + (description + "This library provides basic MIME type handling types and functions.") + (license expat))) + +(define-public ghc-http-client + (package + (name "ghc-http-client") + (version "0.4.24") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "http-client/http-client-" + version ".tar.gz")) + (sha256 + (base32 + "0xz133kdfiyy2rm6z95bmvjj6y2540xzd86cfmdv9s6kz4p1ir4k")))) + (build-system haskell-build-system) + ;; Tests require access to the web. + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ghc-text" ,ghc-text) + ("ghc-http-types" ,ghc-http-types) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-network" ,ghc-network) + ("ghc-streaming-commons" ,ghc-streaming-commons) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-cookie" ,ghc-cookie) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-random" ,ghc-random) + ("ghc-mime-types" ,ghc-mime-types) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-zlib" ,ghc-zlib) + ("ghc-async" ,ghc-async))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "https://github.com/snoyberg/http-client") + (synopsis "HTTP client engine") + (description + "This package provides an HTTP client engine, intended as a base layer +for more user-friendly packages.") + (license expat))) + +(define-public ghc-byteable + (package + (name "ghc-byteable") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "byteable/byteable-" version ".tar.gz")) + (sha256 + (base32 + "1qizg0kxxjqnd3cbrjhhidk5pbbciz0pb3z5kzikjjxnnnhk8fr4")))) + (build-system haskell-build-system) + (home-page "http://github.com/vincenthz/hs-byteable") + (synopsis "Type class for sequence of bytes") + (description + "This package provides an abstract class to manipulate sequence of bytes. +The use case of this class is abstracting manipulation of types that are just +wrapping a bytestring with stronger and more meaniful name.") + (license bsd-3))) + +(define-public ghc-hourglass + (package + (name "ghc-hourglass") + (version "0.2.9") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "hourglass/hourglass-" version ".tar.gz")) + (sha256 + (base32 + "1xha17nwzxdjizbcp63d2142c6q051y77facs7xribgcl5iz2m4v")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-old-locale" ,ghc-old-locale))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/vincenthz/hs-hourglass") + (synopsis "Simple time-related library for Haskell") + (description + "This is a simple time library providing a simple but powerful and +performant API. The backbone of the library are the @code{Timeable} and +@code{Time} type classes. Each @code{Timeable} instances can be converted to +a type that has a @code{Time} instances, and thus are different +representations of current time.") + (license bsd-3))) + +(define-public ghc-pem + (package + (name "ghc-pem") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "pem/pem-" version ".tar.gz")) + (sha256 + (base32 + "162sk5sg22w21wqz5qv8kx6ibxp99v5p20g3nknhm1kddk3hha1p")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-base64-bytestring" ,ghc-base64-bytestring))) + (native-inputs + `(("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://github.com/vincenthz/hs-pem") + (synopsis "Privacy Enhanced Mail (PEM) format reader and writer") + (description + "This library provides readers and writers for the @dfn{Privacy Enhanced +Mail} (PEM) format.") + (license bsd-3))) + +(define-public ghc-asn1-types + (package + (name "ghc-asn1-types") + (version "0.3.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "asn1-types/asn1-types-" + version ".tar.gz")) + (sha256 + (base32 + "1iif9yrh4mmj249gyvam0zb2vb3jnlz777gahh2z9sx00dsx9rja")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-memory" ,ghc-memory) + ("ghc-hourglass" ,ghc-hourglass))) + (home-page "http://github.com/vincenthz/hs-asn1-types") + (synopsis "ASN.1 types for Haskell") + (description + "The package provides the standard types for dealing with the ASN.1 +format.") + (license bsd-3))) + +(define-public ghc-asn1-encoding + (package + (name "ghc-asn1-encoding") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "asn1-encoding/asn1-encoding-" + version ".tar.gz")) + (sha256 + (base32 + "01ki5msrpccgdbdiaaa5a9zw0icp1hki4hca8qx6hzlp0rcf1mwh")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-hourglass" ,ghc-hourglass) + ("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-text" ,ghc-text) + ("ghc-mtl" ,ghc-mtl))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (home-page "http://github.com/vincenthz/hs-asn1") + (synopsis "ASN1 data reader and writer in RAW, BER and DER forms") + (description + "This package provides a reader and writer for ASN1 data in raw form with +supports for high level forms of ASN1 (BER, and DER).") + (license bsd-3))) + +(define-public ghc-asn1-parse + (package + (name "ghc-asn1-parse") + (version "0.9.4") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "asn1-parse/asn1-parse-" + version ".tar.gz")) + (sha256 + (base32 + "025prsihk5g6rdv9xlfmj0zpa0wa3qjzj5i4ilzvg7f6f3sji8y6")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-asn1-encoding" ,ghc-asn1-encoding))) + (home-page "https://github.com/vincenthz/hs-asn1") + (synopsis "Simple monadic parser for ASN1 stream types") + (description + "This package provides a simple monadic parser for ASN1 stream types, +when ASN1 pattern matching is not convenient.") + (license bsd-3))) + +(define-public ghc-tasty-kat + (package + (name "ghc-tasty-kat") + (version "0.0.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "tasty-kat/tasty-kat-" version ".tar.gz")) + (sha256 + (base32 + "14yvlpli6cv6bn3kh8mlfp4x1l6ns4fvmfv6hmj75cvxyzq029d7")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-mtl" ,ghc-mtl) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/vincenthz/tasty-kat") + (synopsis "Known Answer Tests (KAT) framework for tasty") + (description + "This package provides a @dfn{Known Answer Tests} (KAT) framework for +tasty.") + (license expat))) + +(define-public ghc-cryptonite + (package + (name "ghc-cryptonite") + (version "0.9") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "cryptonite/cryptonite-" + version ".tar.gz")) + (sha256 + (base32 + "1h22x22lq2m8h456v5j50xm0l25bcm3h1pchsk83br909hjxql4z")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-memory" ,ghc-memory) + ("ghc-byteable" ,ghc-byteable))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-tasty-kat" ,ghc-tasty-kat))) + (home-page "https://github.com/haskell-crypto/cryptonite") + (synopsis "Cryptography primitives") + (description + "This package is a repository of cryptographic primitives for Haskell. +It supports a wide range of symmetric ciphers, cryptographic hash functions, +public key algorithms, key derivation numbers, cryptographic random number +generators, and more.") + (license bsd-3))) + +(define-public ghc-memory + (package + (name "ghc-memory") + (version "0.10") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "memory/memory-" version ".tar.gz")) + (sha256 + (base32 + "1xqs9zmjbjihb7gfbk25f2q00m2lsi4kc3jv672175ac8a36pgag")))) + (build-system haskell-build-system) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/vincenthz/hs-memory") + (synopsis "Memory abstractions for Haskell") + (description + "This package provides memory abstractions, such as chunk of memory, +polymorphic byte array management and manipulation functions. It contains a +polymorphic byte array abstraction and functions similar to strict ByteString, +different type of byte array abstraction, raw memory IO operations (memory +set, memory copy, ..) and more") + (license bsd-3))) + +(define-public ghc-x509 + (package + (name "ghc-x509") + (version "1.6.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "x509/x509-" version ".tar.gz")) + (sha256 + (base32 + "1pmsby29abn485fvnymsgipvb3p1ch9c591xj5ncszkf0ivjiiin")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-memory" ,ghc-memory) + ("ghc-mtl" ,ghc-mtl) + ("ghc-hourglass" ,ghc-hourglass) + ("ghc-pem" ,ghc-pem) + ("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-asn1-encoding" ,ghc-asn1-encoding) + ("ghc-asn1-parse" ,ghc-asn1-parse) + ("ghc-cryptonite" ,ghc-cryptonite))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (home-page "http://github.com/vincenthz/hs-certificate") + (synopsis "X509 reader and writer") + (description + "This library provides functions to read and write X509 certificates.") + (license bsd-3))) + +(define-public ghc-x509-store + (package + (name "ghc-x509-store") + (version "1.6.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "x509-store/x509-store-" + version ".tar.gz")) + (sha256 + (base32 + "01abx528i9f7djq2772xyna8x2mykrnwqkcfrapcx7z3bhprvml3")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-pem" ,ghc-pem) + ("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-asn1-encoding" ,ghc-asn1-encoding) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-x509" ,ghc-x509))) + (home-page "http://github.com/vincenthz/hs-certificate") + (synopsis "X.509 collection accessing and storing methods") + (description + "This package provides functions for accessing and storing X.509 +collections, certificates, revocation lists, and exception lists.") + (license bsd-3))) + +(define-public ghc-x509-validation + (package + (name "ghc-x509-validation") + (version "1.6.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "x509-validation/x509-validation-" + version ".tar.gz")) + (sha256 + (base32 + "1qr1v561hdlhjgqjv9pj9mbk0q1xf2mr1j67ghy93nlxxyzd7dw0")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-memory" ,ghc-memory) + ("ghc-byteable" ,ghc-byteable) + ("ghc-mtl" ,ghc-mtl) + ("ghc-hourglass" ,ghc-hourglass) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-pem" ,ghc-pem) + ("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-asn1-encoding" ,ghc-asn1-encoding) + ("ghc-x509" ,ghc-x509) + ("ghc-x509-store" ,ghc-x509-store) + ("ghc-cryptonite" ,ghc-cryptonite))) + (home-page "http://github.com/vincenthz/hs-certificate") + (synopsis "X.509 certificate and revocation list validation") + (description + "This package provides functions for X.509 certificate and revocation +list validation.") + (license bsd-3))) + +(define-public ghc-x509-system + (package + (name "ghc-x509-system") + (version "1.6.1") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "x509-system/x509-system-" + version ".tar.gz")) + (sha256 + (base32 + "10qf60d2f9jqwnbrhsb2cwpi86xg66m6dxndlxw967v1cdb3h6gf")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-pem" ,ghc-pem) + ("ghc-x509" ,ghc-x509) + ("ghc-x509-store" ,ghc-x509-store))) + (home-page "http://github.com/vincenthz/hs-certificate") + (synopsis "Handle system X.509 accessors and storage") + (description + "This package provides a library to handle system accessors and storage +for X.509 certificates.") + (license bsd-3))) + +(define-public ghc-tls + (package + (name "ghc-tls") + (version "1.3.3") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "tls/tls-" version ".tar.gz")) + (sha256 + (base32 + "096ay54bwy6qi9z8ypncww3ls853zj37yaficvcg7qcqj42zn0wz")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-mtl" ,ghc-mtl) + ("ghc-cereal" ,ghc-cereal) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-memory" ,ghc-memory) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-asn1-types" ,ghc-asn1-types) + ("ghc-asn1-encoding" ,ghc-asn1-encoding) + ("ghc-x509" ,ghc-x509) + ("ghc-x509-store" ,ghc-x509-store) + ("ghc-x509-validation" ,ghc-x509-validation) + ("ghc-async" ,ghc-async) + ("ghc-network" ,ghc-network) + ("ghc-hourglass" ,ghc-hourglass))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-quickcheck" ,ghc-quickcheck))) + (home-page "http://github.com/vincenthz/hs-tls") + (synopsis + "TLS/SSL protocol native implementation (Server and Client)") + (description + "Native Haskell TLS and SSL protocol implementation for server and client. +This provides a high-level implementation of a sensitive security protocol, +eliminating a common set of security issues through the use of the advanced +type system, high level constructions and common Haskell features. Currently +implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol, and support RSA and +Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many +extensions.") + (license bsd-3))) + +(define-public ghc-socks + (package + (name "ghc-socks") + (version "0.5.4") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "socks/socks-" version ".tar.gz")) + (sha256 + (base32 + "1nmldlwxqasmg359i2aa3a903gi3lmnlspvf12xk49jrg3mf3dg9")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-cereal" ,ghc-cereal) + ("ghc-network" ,ghc-network))) + (home-page "http://github.com/vincenthz/hs-socks") + (synopsis "SOCKS proxy (version 5) implementation.") + (description + "This library provides a SOCKS proxy (version 5) implementation.") + (license bsd-3))) + +(define-public ghc-connection + (package + (name "ghc-connection") + (version "0.2.5") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "connection/connection-" + version ".tar.gz")) + (sha256 + (base32 + "090il95jnm7ihwvcx3s9v6iwnp37nnsdx15q7722l845g51d95c8")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-byteable" ,ghc-byteable) + ("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-network" ,ghc-network) + ("ghc-tls" ,ghc-tls) + ("ghc-socks" ,ghc-socks) + ("ghc-x509" ,ghc-x509) + ("ghc-x509-store" ,ghc-x509-store) + ("ghc-x509-system" ,ghc-x509-system) + ("ghc-x509-validation" ,ghc-x509-validation))) + (home-page "http://github.com/vincenthz/hs-connection") + (synopsis "Simple and easy network connections API") + (description + "This package provides a simple network library for all your connection +needs. It provides a very simple API to create sockets to a destination with +the choice of SSL/TLS, and SOCKS.") + (license bsd-3))) + +(define-public ghc-http-client-tls + (package + (name "ghc-http-client-tls") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/" + "http-client-tls/http-client-tls-" + version ".tar.gz")) + (sha256 + (base32 + "0a01r05h5fxswyn6k6cgqgak4scqjan72hyy5wbdqzzhl4rmh7j5")))) + (build-system haskell-build-system) + ;; Tests require Internet access + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ghc-data-default-class" ,ghc-data-default-class) + ("ghc-http-client" ,ghc-http-client) + ("ghc-connection" ,ghc-connection) + ("ghc-network" ,ghc-network) + ("ghc-tls" ,ghc-tls) + ("ghc-http-types" ,ghc-http-types))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec))) + (home-page "https://github.com/snoyberg/http-client") + (synopsis "Backend for http-client using the TLS library") + (description + "This package provides a backend for the http-client package using the +connection and TLS libraries. It is intended for use by higher-level +libraries, such as http-conduit.") + (license expat))) + +(define-public ghc-pandoc + (package + (name "ghc-pandoc") + (version "1.15.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://hackage.haskell.org/package/pandoc/pandoc-" + version ".tar.gz")) + (sha256 + (base32 + "0nfzwsdvrvg9zypgyqk0246p10yzlpqsqnkds8yraqybbvkb1g30")))) + (build-system haskell-build-system) + (propagated-inputs + `(("ghc-syb" ,ghc-syb) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-parsec" ,ghc-parsec) + ("ghc-mtl" ,ghc-mtl) + ("ghc-text" ,ghc-text) + ("ghc-zip-archive" ,ghc-zip-archive) + ("ghc-http" ,ghc-http) + ("ghc-texmath" ,ghc-texmath) + ("ghc-xml" ,ghc-xml) + ("ghc-random" ,ghc-random) + ("ghc-extensible-exceptions" ,ghc-extensible-exceptions) + ("ghc-pandoc-types" ,ghc-pandoc-types) + ("ghc-aeson" ,ghc-aeson) + ("ghc-tagsoup" ,ghc-tagsoup) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-zlib" ,ghc-zlib) + ("ghc-highlighting-kate" ,ghc-highlighting-kate) + ("ghc-data-default" ,ghc-data-default) + ("ghc-temporary" ,ghc-temporary) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-blaze-markup" ,ghc-blaze-markup) + ("ghc-yaml" ,ghc-yaml) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) + ("ghc-hslua" ,ghc-hslua) + ("ghc-sha" ,ghc-sha) + ("ghc-haddock-library" ,ghc-haddock-library) + ("ghc-old-time" ,ghc-old-time) + ("ghc-deepseq-generics" ,ghc-deepseq-generics) + ("ghc-juicypixels" ,ghc-juicypixels) + ("ghc-filemanip" ,ghc-filemanip) + ("ghc-cmark" ,ghc-cmark) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-network" ,ghc-network) + ("ghc-http-client" ,ghc-http-client) + ("ghc-http-client-tls" ,ghc-http-client-tls) + ("ghc-http-types" ,ghc-http-types) + ("ghc-diff" ,ghc-diff) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-executable-path" ,ghc-executable-path))) + (native-inputs + `(("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-hunit" ,ghc-hunit))) + (home-page "http://pandoc.org") + (synopsis "Conversion between markup formats") + (description + "Pandoc is a Haskell library for converting from one markup format to +another, and a command-line tool that uses this library. It can read and +write Markdown and (subsets of) other formats, such as HTML, reStructuredText, +LaTeX, DocBook, and many more. + +Pandoc extends standard Markdown syntax with footnotes, embedded LaTeX, +definition lists, tables, and other features. A compatibility mode is +provided for those who need a drop-in replacement for Markdown.pl.") + (license gpl2+))) + +(define-public idris + (package + (name "idris") + (version "0.9.19.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/idris-" + version "/idris-" version ".tar.gz")) + (sha256 + (base32 + "10641svdsjlxbxmbvylpia04cz5nn9486lpiay8ibqcrc1792qgc")) + (modules '((guix build utils))) + (snippet + '(substitute* "idris.cabal" + ;; Package description file has a too-tight version restriction, + ;; rendering it incompatible with GHC 7.10.2. This is fixed + ;; upstream. See + ;; . + (("vector < 0.11") "vector < 0.12"))))) + (build-system haskell-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'configure 'patch-cc-command + (lambda _ + (setenv "CC" "gcc")))))) + (inputs + `(("gmp" ,gmp) + ("ncurses" ,ncurses) + ("ghc-annotated-wl-pprint" ,ghc-annotated-wl-pprint) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-blaze-markup" ,ghc-blaze-markup) + ("ghc-cheapskate" ,ghc-cheapskate) + ("ghc-fingertree" ,ghc-fingertree) + ("ghc-mtl" ,ghc-mtl) + ("ghc-network" ,ghc-network) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-parsers" ,ghc-parsers) + ("ghc-safe" ,ghc-safe) + ("ghc-split" ,ghc-split) + ("ghc-text" ,ghc-text) + ("ghc-trifecta" ,ghc-trifecta) + ("ghc-uniplate" ,ghc-uniplate) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-vector-binary-instances" ,ghc-vector-binary-instances) + ("ghc-vector" ,ghc-vector) + ("ghc-zip-archive" ,ghc-zip-archive) + ("ghc-zlib" ,ghc-zlib))) + (home-page "http://www.idris-lang.org") + (synopsis "General purpose language with full dependent types") + (description "Idris is a general purpose language with full dependent +types. It is compiled, with eager evaluation. Dependent types allow types to +be predicated on values, meaning that some aspects of a program's behaviour +can be specified precisely in the type. The language is closely related to +Epigram and Agda.") + (license bsd-3))) + ;;; haskell.scm ends here diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index 3867b4d7ec..ff29aee489 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -32,7 +32,7 @@ (define-public gnumach-headers (package (name "gnumach-headers") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) @@ -40,7 +40,7 @@ version ".tar.gz")) (sha256 (base32 - "0wsf57q4h6xl2jn28d423qx7zplmhpnf9ssm4f1c0sf8513xm81j")))) + "1m7xwsrv6x6gk9xi5phs104rdn9q3lr63p348vyv0dzd6r3zyncb")))) (build-system gnu-build-system) (arguments `(#:phases (alist-replace @@ -66,7 +66,7 @@ (define-public mig (package (name "mig") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) @@ -74,7 +74,7 @@ version ".tar.gz")) (sha256 (base32 - "13r1pg8icyc0pl082z7k36i440pr1f3nr7ahig3rrc0r7qndqmk9")))) + "1i9qd6j5g8wsv9k9n6vpdqflyw0284wyayb2s2h7pp4yyi2jsksk")))) (build-system gnu-build-system) ;; Flex is needed both at build and run time. (inputs `(("gnumach-headers" ,gnumach-headers) @@ -97,14 +97,14 @@ communication.") (define-public hurd-headers (package (name "hurd-headers") - (version "0.6") + (version "0.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hurd/hurd-" version ".tar.gz")) (sha256 (base32 - "059lbspbpcjpcq5jf98f47jw9sm0ngs3x6phxax53m3rwca1fk7y")))) + "1q2pyc16vb5plqi8hlwnnc9jk8zlifm91cavz6x7vhbwy0nh2yvh")))) (build-system gnu-build-system) (native-inputs `(;; Autoconf shouldn't be necessary but there seems to be a bug in the @@ -182,6 +182,6 @@ Library and other user programs.") (home-page "http://www.gnu.org/software/hurd/hurd.html") (synopsis "GNU Hurd libraries") (description - "This package provides libihash, needed to build the GNU C + "This package provides libihash, needed to build the GNU C Library for GNU/Hurd.") (license gpl2+))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 58338af5c6..f3f89f6be6 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014, 2015 Alex Kost ;;; Copyright © 2014 Ricardo Wurmus ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Amirouche Boubekki ;;; Copyright © 2014 John Darrington ;;; ;;; This file is part of GNU Guix. @@ -49,7 +50,7 @@ (define-public libpng (package (name "libpng") - (version "1.5.21") + (version "1.5.24") (source (origin (method url-fetch) @@ -60,7 +61,7 @@ "ftp://ftp.simplesystems.org/pub/libpng/png/src" "/libpng15/libpng-" version ".tar.xz"))) (sha256 - (base32 "19yvzw6sf9gf7v25ha9bla8bw1nijh82wj8ag6brjj3hpij1q5dm")))) + (base32 "1qhvfk1ypsaf6q6xkspyqqzmghpbahhq54ms8fa5ssqkyds38bmr")))) (build-system gnu-build-system) ;; libpng.la says "-lz", so propagate it. @@ -104,6 +105,29 @@ image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.") (sha256 (base32 "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0")))))) +(define-public jpegoptim + (package + (name "jpegoptim") + (version "1.4.3") + (source (origin + (method url-fetch) + (uri (string-append "http://www.kokkonen.net/tjko/src/jpegoptim-" + version ".tar.gz")) + (sha256 (base32 + "0k53q7dc8w5ashz8v261x2b5vvz7gdvg8w962rz9gjvkjbh4lg93")))) + (build-system gnu-build-system) + (inputs `(("libjpeg" ,libjpeg))) + (arguments + ;; no tests + '(#:tests? #f)) + (synopsis "Optimize JPEG images") + (description + "jpegoptim provides lossless optimization (based on optimizing +the Huffman tables) and \"lossy\" optimization based on setting +maximum quality factor.") + (license license:gpl2+) + (home-page "http://www.kokkonen.net/tjko/projects.html#jpegoptim"))) + (define-public libtiff (package (name "libtiff") @@ -184,14 +208,14 @@ the W3C's XML-based Scaleable Vector Graphic (SVG) format.") (define-public leptonica (package (name "leptonica") - (version "1.71") + (version "1.72") (source (origin (method url-fetch) (uri (string-append "http://www.leptonica.com/source/leptonica-" version ".tar.gz")) (sha256 - (base32 "0j5qgrff6im5n9waflbi7w643q1p6mahyf2z35gb4vj9h5p76pfc")) + (base32 "0mhzvqs0im04y1cpcc1yma70hgdac1frf33h73m9z3356bfymmbr")) (modules '((guix build utils))) ;; zlib and openjpg should be under Libs, not Libs.private. See: ;; https://code.google.com/p/tesseract-ocr/issues/detail?id=1436 @@ -216,7 +240,8 @@ the W3C's XML-based Scaleable Vector Graphic (SVG) format.") `(("openjpeg" ,openjpeg) ("zlib" ,zlib))) (arguments - '(#:phases + '(#:parallel-tests? #f ; XXX: cause fpix1_reg to fail + #:phases (modify-phases %standard-phases ;; Prevent make from trying to regenerate config.h.in. (add-after @@ -228,7 +253,15 @@ the W3C's XML-based Scaleable Vector Graphic (SVG) format.") (lambda _ (substitute* "prog/reg_wrapper.sh" ((" /bin/sh ") - (string-append " " (which "sh") " ")))))))) + (string-append " " (which "sh") " ")) + (("which gnuplot") (which "gnuplot"))))) + (add-before + 'check 'disable-failing-tests + ;; XXX: 2 of 9 tests from webpio_reg fails. + (lambda _ + (substitute* "prog/webpio_reg.c" + ((".*DoWebpTest2.* 90.*") "") + ((".*DoWebpTest2.* 100.*") ""))))))) (home-page "http://www.leptonica.com/") (synopsis "Library and tools for image processing and analysis") (description @@ -337,14 +370,14 @@ error-resilience, a Java-viewer for j2k-images, ...") (define-public giflib (package (name "giflib") - (version "4.2.3") + (version "5.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/giflib/giflib-" (first (string-split version #\.)) ".x/giflib-" version ".tar.bz2")) (sha256 - (base32 "0rmp7ipzk42r841bggd7bfqk4p8qsssbp4wcck4qnz7p4rkxbj0a")))) + (base32 "1z1gzq16sdya8xnl5qjc07634kkwj5m0n3bvvj4v9j11xfn1841r")))) (build-system gnu-build-system) (outputs '("bin" ; utility programs "out")) ; library @@ -618,3 +651,77 @@ channels.") (description "Libmng is the MNG (Multiple-image Network Graphics) reference library.") (license license:bsd-3))) + +(define-public devil + (package + (name "devil") + (version "1.7.8") + (source (origin + (method url-fetch) + (uri (string-append "http://downloads.sourceforge.net/openil/" + "DevIL-" version ".tar.gz")) + (sha256 + (base32 + "1zd850nn7nvkkhasrv7kn17kzgslr5ry933v6db62s4lr0zzlbv8")) + ;; Backported from upstream: + ;; https://github.com/DentonW/DevIL/commit/724194d7a9a91221a564579f64bdd6f0abd64219.patch + (patches (list (search-patch "devil-fix-libpng.patch"))) + (modules '((guix build utils))) + (snippet + ;; Fix old lcms include directives and lib flags. + '(substitute* '("configure" "src-IL/src/il_profiles.c") + (("-llcms") "-llcms2") + (("lcms/lcms\\.h") "lcms2/lcms2.h") + (("lcms\\.h") "lcms2.h"))))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--enable-ILUT=yes") ; build utility library + #:phases + (modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda* (#:key inputs #:allow-other-keys) + ;; Fix hard-coded /bin/bash reference. + (substitute* '("test/Makefile") + (("TESTS_ENVIRONMENT = /bin/bash") + (string-append "TESTS_ENVIRONMENT = " + (assoc-ref inputs "bash") + "/bin/bash"))) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("lcms" ,lcms) + ("libjpeg" ,libjpeg) + ("libmng" ,libmng) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("openexr" ,openexr) + ("zlib" ,zlib))) + (synopsis "Library for manipulating many image formats") + (description "Developer's Image Library (DevIL) is a library to develop +applications with support for many types of images. DevIL can load, save, +convert, manipulate, filter and display a wide variety of image formats.") + (home-page "http://openil.sourceforge.net") + (license license:lgpl2.1+))) + +(define-public jasper + (package + (name "jasper") + (version "1.900.1") + (source (origin + (method url-fetch) + (uri (string-append "https://www.ece.uvic.ca/~frodo/jasper" + "/software/jasper-" version ".zip")) + (sha256 + (base32 + "154l7zk7yh3v8l2l6zm5s2alvd2fzkp6c9i18iajfbna5af5m43b")) + (patches (list (search-patch "jasper-CVE-2008-3522.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("unzip" ,unzip))) + (synopsis "JPEG-2000 library") + (description "The JasPer Project is an initiative to provide a reference +implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e., +ISO/IEC 15444-1).") + (home-page "https://www.ece.uvic.ca/~frodo/jasper/") + (license (license:x11-style "file://LICENSE")))) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index f154e19d35..a68e9aa159 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Eric Bavier +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +23,8 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system perl) #:use-module (guix download) - #:use-module ((guix licenses) #:select (fsf-free)) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages compression) @@ -104,7 +106,7 @@ including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.") - (license (fsf-free "http://www.imagemagick.org/script/license.php")))) + (license (license:fsf-free "http://www.imagemagick.org/script/license.php")))) (define-public perl-image-magick (package @@ -149,3 +151,50 @@ Use it to create, edit, compose, or convert bitmap images from within a Perl script.") ;; See Magick.pm (license (package-license imagemagick)))) + +(define-public graphicsmagick + (package + (name "graphicsmagick") + (version "1.3.23") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.graphicsmagick.org/pub/" + "GraphicsMagick/" (version-major+minor version) + "/GraphicsMagick-" version ".tar.xz")) + (sha256 + (base32 + "03g6l2h8cmf231y1vma0z7x85070jm1ysgs9ppqcd3jj56jka9gx")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--with-frozenpaths" + "--enable-shared=yes" + "--with-x=yes" + (string-append "--with-gs-font-dir=" + (assoc-ref %build-inputs "gs-fonts") + "/share/fonts/type1/ghostscript")))) + (inputs + `(("graphviz" ,graphviz) + ("ghostscript" ,ghostscript) + ("gs-fonts" ,gs-fonts) + ("lcms" ,lcms) + ("libx11" ,libx11) + ("libxml2" ,libxml2) + ("libtiff" ,libtiff) + ("libpng" ,libpng) + ("libjpeg" ,libjpeg) + ("freetype" ,freetype) + ("bzip2" ,bzip2) + ("xz" ,xz) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (outputs '("out" ; 13 MiB + "doc")) ; ~7 MiB + (home-page "http://www.graphicsmagick.org") + (synopsis "Create, edit, compose, or convert bitmap images") + (description + "GraphicsMagick provides a comprehensive collection of utilities, +programming interfaces, and GUIs, to support file format conversion, image +processing, and 2D vector rendering.") + (license license:expat))) diff --git a/gnu/packages/inklingreader.scm b/gnu/packages/inklingreader.scm new file mode 100644 index 0000000000..6cdc4b3330 --- /dev/null +++ b/gnu/packages/inklingreader.scm @@ -0,0 +1,59 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Roel Janssen +;;; +;;; 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 . + +(define-module (gnu packages inklingreader) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages libusb) + #:use-module (gnu packages pkg-config)) + +(define-public inklingreader + (package + (name "inklingreader") + (version "0.8") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://alpha.gnu.org/gnu/inklingreader/inklingreader-" + version ".tar.gz")) + (sha256 + (base32 + "0ikg95mgwfqh0bq4dzvkfmdiycacqvv27g91hl6adwk5y3gzl96g")))) + (build-system gnu-build-system) + (inputs + `(("glib" ,glib) + ("cairo" ,cairo) + ("gtk+" ,gtk+) + ("librsvg" ,librsvg) + ("libusb" ,libusb))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://www.gnu.org/software/inklingreader/") + (synopsis "Wacom Inkling sketch format conversion and manipulation") + (description + "GNU InklingReader is a package to support the Wacom Inkling device, +including data conversion to various free formats, basic editing features, +and an Inkscape plugin.") + (license license:gpl3+))) diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index 76102fab05..b09e84ee08 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -74,7 +74,11 @@ ("perl" ,perl) ("pkg-config" ,pkg-config))) (arguments - `(#:phases (alist-cons-after + `(;; Add '-std=c++11', required by recent versions of GLibmm & co. + ;; Use '-g0' to reduce disk usage during the build. + #:configure-flags '("CXXFLAGS=-g0 -O2 -fopenmp -std=c++11") + + #:phases (alist-cons-after 'unpack 'fix-test-includes (lambda _ (substitute* "src/cxxtests.cpp" diff --git a/gnu/packages/irssi.scm b/gnu/packages/irssi.scm index c97fd07e05..44bc6bd3a2 100644 --- a/gnu/packages/irssi.scm +++ b/gnu/packages/irssi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,7 +18,7 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages irssi) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -25,19 +26,20 @@ #:use-module (gnu packages glib) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages tls)) (define-public irssi (package (name "irssi") - (version "0.8.15") + (version "0.8.17") (source (origin (method url-fetch) (uri (string-append "http://www.irssi.org/files/irssi-" version ".tar.bz2")) (sha256 (base32 - "19m0aah9bhc70dnhh7kpydbsz5n35l0l9knxav1df0sic3xicbf1")))) + "01v82q2pfiimx6lh271kdvgp8hl4pahc3srg04fqzxgdsb5015iw")))) (build-system gnu-build-system) (arguments `(#:phases @@ -54,7 +56,8 @@ %standard-phases))) (inputs `(("glib" ,glib) - ("ncurses" ,ncurses))) + ("ncurses" ,ncurses) + ("openssl" ,openssl))) (native-inputs `(("pkg-config" ,pkg-config) ("perl" ,perl))) @@ -63,4 +66,4 @@ (description "Irssi is a terminal based IRC client for UNIX systems. It also supports SILC and ICB protocols via plugins.") - (license gpl2+))) + (license license:gpl2+))) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 5fa546a98c..f00a3d720c 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -135,7 +135,7 @@ is implemented.") (define-public ant (package (name "ant") - (version "1.9.4") + (version "1.9.6") (source (origin (method url-fetch) (uri (string-append @@ -143,7 +143,7 @@ is implemented.") version "-src.tar.gz")) (sha256 (base32 - "09kf5s1ir0rdrclsy174bsvbdcbajza9fja490w4mmvcpkw3zpak")))) + "1396wflczyxjxl603dhxjvd559f289lha9y2f04f71c7hapjl3am")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -576,7 +576,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (license license:gpl2+))) (define-public icedtea7 - (let* ((version "2.6.1") + (let* ((version "2.6.2") (drop (lambda (name hash) (origin (method url-fetch) @@ -594,7 +594,7 @@ build process and its dependencies, whereas Make uses Makefile format.") version ".tar.xz")) (sha256 (base32 - "0s107vi1530a5dyxacysc4m64zshgg2d3xpndsc0ws99wz0zmr6c")) + "0xi0w8gpxx3r68hyi7fb991hxb3rqfp7895nfsl4wj3sa1f5ds5y")) (modules '((guix build utils))) (snippet '(substitute* "Makefile.in" @@ -728,24 +728,24 @@ build process and its dependencies, whereas Make uses Makefile format.") (native-inputs `(("openjdk-drop" ,(drop "openjdk" - "0gs6vbj5c09516r460r68i7vm652sb25h973kq9hfx749qbs0s01")) + "0jabxc8iw7ciz6f2qshcpla66qniy686vnxnfx3h2yw7syvas4a9")) ("corba-drop" ,(drop "corba" - "1y7nf6hqry1az28i3b6ln5cs82cww1jj4r61jk54ab8s2xydj0yd")) + "1bw22djg8mfqqn8kp8mpbj9vi4pl8dk67qwwrny67d0fvirixylj")) ("jaxp-drop" ,(drop "jaxp" - "1szs2w0p496k1qi3yl1fymj0g10lgq31am35zlalcz7pi4l4q360")) + "1h3g2dwbj8ihicl73qbr4cvvc3i5bs5ckrpja1nx6g5b56xa7kcl")) ("jaxws-drop" ,(drop "jaxws" - "17xfy9q2zdpap7m2prbf937x55jm3pwrqpp1fdlridraqrfzjprd")) + "1m1h7455qn4pdhb5yamdl9965iz9260lzwl3njcs35vi14v7fihl")) ("jdk-drop" ,(drop "jdk" - "0qskhwr4nml49zhbppnq8ldj0x001bl37mrcpxslbnsdw5skw258")) + "1wcaxf2chnlpk34q04c23im6z32dy8fr6f9giz3ih65nyvah3n3s")) ("langtools-drop" ,(drop "langtools" - "0hyxrrb0zrx1pq1s90bmim94hwfligr0ajzs1874da4gclbbvfbd")) + "0da3cmm8nwz7dk2sqnywvidaa0kjnyzzi33p2lkdi4415f8yhgx5")) ("hotspot-drop" ,(drop "hotspot" - "1cv8df2s89mnjzg4rja4i89d4fr8n0c3v5y2cqbww1ma1463n100")) + "0fn3cjhqsgbkfzychkvvw6whxil2n9dr6q0196ywxzkinny1hjcq")) ,@(fold alist-delete (package-native-inputs icedtea6) '("openjdk6-src"))))))) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm new file mode 100644 index 0000000000..f0c372bc29 --- /dev/null +++ b/gnu/packages/kodi.scm @@ -0,0 +1,223 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 . + +(define-module (gnu packages kodi) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages algebra) + #:use-module (gnu packages audio) + #:use-module (gnu packages autotools) + #:use-module (gnu packages avahi) + #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages cdrom) + #:use-module (gnu packages cmake) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages doxygen) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages fribidi) + #:use-module (gnu packages gettext) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gperf) + #:use-module (gnu packages gnunet) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages image) + #:use-module (gnu packages java) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) + #:use-module (gnu packages pcre) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages samba) + #:use-module (gnu packages sdl) + #:use-module (gnu packages ssh) + #:use-module (gnu packages swig) + #:use-module (gnu packages textutils) + #:use-module (gnu packages tls) + #:use-module (gnu packages video) + #:use-module (gnu packages web) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (gnu packages yasm) + #:use-module (gnu packages zip)) + +(define-public kodi + (package + (name "kodi") + (version "15.2") + (source (origin + (method url-fetch) + (uri (string-append "http://mirrors.kodi.tv/releases/source/" + version "-Isengard.tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "043i0f1crx9glwxil4xm45z5kxpkrx316gi4ir4d3rbd5safp2nx")) + (snippet + ;; Delete bundled ffmpeg. + ;; TODO: Delete every other bundled library. + '(begin + (use-modules (guix build utils)) + (delete-file-recursively "tools/depends/target/ffmpeg"))) + (modules '((guix build utils))))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--with-ffmpeg=shared") ; don't use bundled ffmpeg + #:phases + (modify-phases %standard-phases + ;; JsonSchemaBuilder is a small tool needed by the build system that + ;; comes bundled with the source. The build system tries to build it + ;; during the bootstrapping phase, which causes serious issues + ;; because there's no time for shebangs to be patched. So, we + ;; bootstrap it on our own instead. + (add-after 'unpack 'bootstrap-jsonschemabuilder + (lambda* (#:key inputs #:allow-other-keys) + (let ((dir "tools/depends/native/JsonSchemaBuilder/src")) + (with-directory-excursion dir + (zero? (system* "sh" "autogen.sh")))))) + ;; Now we can do the regular bootstrapping process, but only after + ;; the first round of shebang patching. We must repeat the patching + ;; after bootstrapping so that all of the files generated by the + ;; Autotools et al. are patched appropriately. + (add-after 'patch-source-shebangs 'bootstrap + (lambda* (#:key inputs #:allow-other-keys) + ;; We bootstrapped JsonSchemaBuilder in the previous phase, so we + ;; need to make sure it isn't done a second time. Otherwise, it + ;; would undo the shebang patching that we worked so hard for. + (substitute* '("tools/depends/native/JsonSchemaBuilder/Makefile") + (("\\./autogen\\.sh") "")) + ;; This essentially does what their 'bootstrap' script does, but + ;; additionally passes the correct CONFIG_SHELL. + (let ((bash (string-append (assoc-ref inputs "bash") "/bin/sh"))) + (define (run-make makefile) + (zero? (system* "make" "-f" makefile + "BOOTSTRAP_STANDALONE=1" + (string-append "CONFIG_SHELL=" bash)))) + (and (run-make "bootstrap.mk") + (run-make "codegenerator.mk"))))) + (add-after 'bootstrap 'patch-source-shebangs-again + (assoc-ref %standard-phases 'patch-source-shebangs)) + ;; 3 tests fail that appear harmless, so we disable them. + (add-before 'check 'disable-some-tests + (lambda _ + (substitute* '("xbmc/utils/test/TestSystemInfo.cpp") + (("TEST_F\\(TestSystemInfo, GetOsPrettyNameWithVersion\\)") + "TEST_F(TestSystemInfo, DISABLED_GetOsPrettyNameWithVersion)") + (("TEST_F\\(TestSystemInfo, GetOsName\\)") + "TEST_F(TestSystemInfo, DISABLED_GetOsName)") + (("TEST_F\\(TestSystemInfo, GetOsVersion\\)") + "TEST_F(TestSystemInfo, DISABLED_GetOsVersion)"))))))) + ;; TODO: Add dependencies for: + ;; - vdpau + ;; - nfs + ;; + ;; FIXME: libusb detection fails. + ;; + ;; FIXME: As you can see, we use a lot of external libraries, but it seems + ;; that a few bundled ones are still being used. + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("cmake" ,cmake) + ("doxygen" ,doxygen) + ("gawk" ,gawk) + ("gettext" ,gnu-gettext) + ("icedtea7" ,icedtea7) ; needed at build-time only, mandatory + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("swig" ,swig) + ("which" ,which) + ("yasm" ,yasm))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("avahi" ,avahi) + ("bluez" ,bluez) + ("boost" ,boost) + ("bzip2" ,bzip2) + ("curl" ,curl) + ("dbus" ,dbus) + ("enca" ,enca) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("flac" ,flac) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("fribidi" ,fribidi) + ("glew" ,glew) + ("gnutls" ,gnutls) + ("gperf" ,gperf) + ("jasper" ,jasper) + ("lame" ,lame) + ("libass" ,libass) + ("libbluray" ,libbluray) + ("libcap" ,libcap) + ("libcdio" ,libcdio) + ("libgcrypt" ,libgcrypt) + ("libjpeg" ,libjpeg) + ("libltdl" ,libltdl) + ("libmad" ,libmad) + ("libmicrohttpd" ,libmicrohttpd) + ("libmodplug" ,libmodplug) + ("libmpeg2" ,libmpeg2) + ("libogg" ,libogg) + ("libpng" ,libpng) + ("libsamplerate" ,libsamplerate) + ("libssh" ,libssh) + ("libtiff" ,libtiff) + ("libva" ,libva) + ("libvorbis" ,libvorbis) + ("libxml2" ,libxml2) + ("libxmu" ,libxmu) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("libxslt" ,libxslt) + ("libxt" ,libxt) + ("libyajl" ,libyajl) + ("lzo" ,lzo) + ("mesa-utils" ,mesa-utils) + ("mysql" ,mysql) + ("openssl" ,openssl) + ("pcre" ,pcre) + ("pulseaudio" ,pulseaudio) + ("python" ,python-2) + ("samba" ,samba) + ("sdl2" ,sdl2) + ("sqlite" ,sqlite) + ("taglib" ,taglib) + ("tinyxml" ,tinyxml) + ("unzip" ,unzip) + ("zip" ,zip) + ("zlib" ,zlib))) + (synopsis "Media center for home theater computers") + (description "Kodi is a media center application for playing videos, +music, games, etc. Kodi is highly customizable and features a theme and +plug-in system.") + (home-page "http://kodi.tv") + (license license:gpl2+))) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index da7e275e55..7496a6c8b9 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -676,7 +676,7 @@ and to return information on pronunciations, meanings and synonyms.") (define-public libreoffice (package (name "libreoffice") - (version "5.0.0.2") + (version "5.0.3.2") (source (origin (method url-fetch) @@ -685,7 +685,7 @@ and to return information on pronunciations, meanings and synonyms.") "http://download.documentfoundation.org/libreoffice/src/" (version-prefix version 3) "/libreoffice-" version ".tar.xz")) (sha256 (base32 - "0mzvxc4i5999xzmhgwrfvpvyx5772jylx5mary86drrld8klq7py")))) + "1gflcsnw7bx02jbb2x5darf56x0qgia03ylaycadk68ikibckybp")))) (build-system gnu-build-system) (native-inputs `(;; autoreconf is run by the LibreOffice build system, since after diff --git a/gnu/packages/links.scm b/gnu/packages/links.scm index 04abf06991..41fac8c305 100644 --- a/gnu/packages/links.scm +++ b/gnu/packages/links.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright 2014 John Darrington +;;; Copyright © 2014 John Darrington +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +24,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) #:use-module (gnu packages image) + #:use-module (gnu packages libevent) #:use-module (gnu packages tls) #:use-module (gnu packages xorg) #:use-module (guix download) @@ -31,21 +33,21 @@ (define-public links (package (name "links") - (version "2.8") + (version "2.12") (source (origin (method url-fetch) (uri (string-append "http://links.twibright.com/download/" name "-" version ".tar.bz2")) (sha256 - (base32 "15h07498z52jfdahzgvkphg1f7qvxnpbyfn2xmsls0d2dwwdll3r")))) + (base32 "0knq15yrp60s4jh92aacw8yfc2pcv3bqsw7dba7h5s6ivq8ihhcq")))) (build-system gnu-build-system) (arguments `(#:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) - ;; The tarball uses a very old version of autconf. It doesn't understand - ;; extra flags like `--enable-fast-install', so we need to - ;; invoke it with just what it understand. + ;; The tarball uses a very old version of autconf. It doesn't + ;; understand extra flags like `--enable-fast-install', so + ;; we need to invoke it with just what it understands. (let ((out (assoc-ref outputs "out"))) ;; 'configure' doesn't understand '--host'. ,@(if (%current-target-system) @@ -55,28 +57,25 @@ (zero? (system* "./configure" (string-append "--prefix=" out) - "--enable-graphics" - )))) + "--enable-graphics")))) %standard-phases))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("zlib" ,zlib) ("openssl" ,openssl) ("libjpeg" ,libjpeg) ("libtiff" ,libtiff) + ("libevent" ,libevent) ("libpng" ,libpng) ("libxt" ,libxt))) (synopsis "Text and graphics mode web browser") (description "Links is a graphics and text mode web browser, with many features including, tables, builtin image display, bookmarks, SSL and more.") (home-page "http://links.twibright.com") - ;; The distribution contains a copy of GPLv2 - ;; However, the copyright notices simply say: + ;; The distribution contains a copy of GPLv2 + ;; However, the copyright notices simply say: ;; "This file is a part of the Links program, released under GPL." ;; Therefore, under the provisions of Section 9, we can choose - ;; any version ever published by the FSF - ;; One file (https.c) contains an exception permitting - ;; linking of the program with openssl - (license license:gpl1+))) - - - + ;; any version ever published by the FSF. + ;; One file (https.c) contains an exception permitting + ;; linking of the program with openssl. + (license license:gpl1+))) diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf index 7b17f7b7c3..aae4dfe61c 100644 --- a/gnu/packages/linux-libre-i686.conf +++ b/gnu/packages/linux-libre-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.2.0-gnu Kernel Configuration +# Linux/x86 4.3.0-gnu Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -131,16 +131,17 @@ CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_NOCB_CPU is not set # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y @@ -206,7 +207,9 @@ CONFIG_BPF_SYSCALL=y CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_ADVISE_SYSCALLS=y +CONFIG_USERFAULTFD=y CONFIG_PCI_QUIRKS=y +CONFIG_MEMBARRIER=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y @@ -222,15 +225,17 @@ CONFIG_SLUB_DEBUG=y CONFIG_SLUB=y # CONFIG_SLOB is not set CONFIG_SLUB_CPU_PARTIAL=y -CONFIG_SYSTEM_TRUSTED_KEYRING=y +# CONFIG_SYSTEM_DATA_VERIFICATION is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y +CONFIG_KEXEC_CORE=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y CONFIG_OPROFILE_NMI_TIMER=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set CONFIG_OPTPROBES=y CONFIG_KPROBES_ON_FTRACE=y CONFIG_UPROBES=y @@ -297,6 +302,11 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +# CONFIG_MODULE_SIG_SHA512 is not set # CONFIG_MODULE_COMPRESS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_STOP_MACHINE=y @@ -389,7 +399,6 @@ CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_XEN=y CONFIG_XEN_DOM0=y CONFIG_XEN_PVHVM=y -CONFIG_XEN_MAX_DOMAIN_MEMORY=64 CONFIG_XEN_SAVE_RESTORE=y # CONFIG_XEN_DEBUG_FS is not set CONFIG_KVM_GUEST=y @@ -462,7 +471,8 @@ CONFIG_X86_MCE_AMD=y CONFIG_X86_MCE_THRESHOLD=y CONFIG_X86_MCE_INJECT=m CONFIG_X86_THERMAL_VECTOR=y -CONFIG_VM86=y +# CONFIG_X86_LEGACY_VM86 is not set +# CONFIG_VM86 is not set CONFIG_X86_16BIT=y CONFIG_X86_ESPFIX32=y # CONFIG_TOSHIBA is not set @@ -538,6 +548,9 @@ CONFIG_PGTABLE_MAPPING=y CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_IDLE_PAGE_TRACKING=y +CONFIG_FRAME_VECTOR=y +CONFIG_X86_PMEM_LEGACY_DEVICE=y CONFIG_X86_PMEM_LEGACY=y CONFIG_HIGHPTE=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y @@ -552,7 +565,7 @@ CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y -# CONFIG_X86_INTEL_MPX is not set +CONFIG_X86_INTEL_MPX=y CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_SECCOMP=y @@ -576,6 +589,7 @@ CONFIG_HOTPLUG_CPU=y # CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_COMPAT_VDSO is not set # CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y @@ -584,6 +598,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y # CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set CONFIG_HIBERNATE_CALLBACKS=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" @@ -617,6 +632,8 @@ CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_IPMI=m CONFIG_ACPI_HOTPLUG_CPU=y @@ -872,7 +889,6 @@ CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_GENEVE_CORE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m @@ -912,6 +928,7 @@ CONFIG_INET6_AH=m CONFIG_INET6_ESP=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET6_XFRM_MODE_TRANSPORT=m @@ -1133,6 +1150,7 @@ CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m @@ -1160,7 +1178,9 @@ CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m CONFIG_NF_TABLES_ARP=m +CONFIG_NF_DUP_IPV4=m CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m CONFIG_NF_REJECT_IPV4=m @@ -1203,6 +1223,8 @@ CONFIG_NF_CONNTRACK_IPV6=m CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NF_DUP_IPV6=m CONFIG_NF_REJECT_IPV6=m CONFIG_NF_LOG_IPV6=m CONFIG_NF_NAT_IPV6=m @@ -1433,6 +1455,7 @@ CONFIG_NETLINK_DIAG=m CONFIG_MPLS=y CONFIG_NET_MPLS_GSO=m CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m CONFIG_HSR=m # CONFIG_NET_SWITCHDEV is not set CONFIG_RPS=y @@ -1591,6 +1614,7 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m +CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_6LOWPAN=m # CONFIG_BT_SELFTEST is not set @@ -1602,6 +1626,7 @@ CONFIG_BT_DEBUGFS=y CONFIG_BT_INTEL=m CONFIG_BT_BCM=m CONFIG_BT_RTL=m +CONFIG_BT_QCA=m CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTUSB_BCM=y CONFIG_BT_HCIBTUSB_RTL=y @@ -1614,6 +1639,7 @@ CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIUART_3WIRE=y CONFIG_BT_HCIUART_INTEL=y CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_QCA=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m @@ -1712,8 +1738,12 @@ CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m CONFIG_NFC_ST_NCI=m CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m CONFIG_NFC_NXP_NCI=m CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_LWTUNNEL=y # # Device Drivers @@ -2073,6 +2103,7 @@ CONFIG_VMWARE_VMCI=m CONFIG_ECHO=m # CONFIG_CXL_BASE is not set # CONFIG_CXL_KERNEL_API is not set +# CONFIG_CXL_EEH is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -2213,6 +2244,7 @@ CONFIG_SCSI_PAS16=m CONFIG_SCSI_QLOGIC_FAS=m CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set @@ -2240,7 +2272,7 @@ CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m -CONFIG_SCSI_DH=m +CONFIG_SCSI_DH=y CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_HP_SW=m CONFIG_SCSI_DH_EMC=m @@ -2454,6 +2486,7 @@ CONFIG_TUN=y CONFIG_VETH=m CONFIG_VIRTIO_NET=y CONFIG_NLMON=m +CONFIG_NET_VRF=m CONFIG_SUNGEM_PHY=m CONFIG_ARCNET=m CONFIG_ARCNET_1201=m @@ -2560,9 +2593,10 @@ CONFIG_CNIC=m CONFIG_TIGON3=m CONFIG_BNX2X=m CONFIG_BNX2X_SRIOV=y +CONFIG_BNX2X_VXLAN=y CONFIG_NET_VENDOR_BROCADE=y CONFIG_BNA=m -CONFIG_NET_VENDOR_CAVIUM=m +CONFIG_NET_VENDOR_CAVIUM=y CONFIG_NET_VENDOR_CHELSIO=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y @@ -2614,13 +2648,11 @@ CONFIG_E1000=m CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGB_HWMON=y -CONFIG_IGB_DCA=y CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m CONFIG_IXGBE_VXLAN=y CONFIG_IXGBE_HWMON=y -CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y CONFIG_IXGBEVF=m CONFIG_I40E=m @@ -2648,6 +2680,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_MLX5_CORE=m CONFIG_MLX5_CORE_EN=y +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_PCI=m CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m CONFIG_KS8851=m @@ -2658,7 +2692,6 @@ CONFIG_ENC28J60=m # CONFIG_ENC28J60_WRITEVERIFY is not set CONFIG_NET_VENDOR_MYRI=y CONFIG_MYRI10GE=m -CONFIG_MYRI10GE_DCA=y CONFIG_FEALNX=m CONFIG_NET_VENDOR_NATSEMI=y CONFIG_NATSEMI=m @@ -2731,6 +2764,7 @@ CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m CONFIG_CASSINI=m CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y CONFIG_NET_VENDOR_TEHUTI=y CONFIG_TEHUTI=m CONFIG_NET_VENDOR_TI=y @@ -2759,6 +2793,7 @@ CONFIG_PHYLIB=y # # MII PHY device drivers # +CONFIG_AQUANTIA_PHY=m CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m CONFIG_MARVELL_PHY=m @@ -2767,6 +2802,7 @@ CONFIG_QSEMI_PHY=m CONFIG_LXT_PHY=m CONFIG_CICADA_PHY=m CONFIG_VITESSE_PHY=m +CONFIG_TERANETICS_PHY=m CONFIG_SMSC_PHY=m CONFIG_BROADCOM_PHY=m CONFIG_BCM7XXX_PHY=m @@ -2777,7 +2813,9 @@ CONFIG_NATIONAL_PHY=m CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MICREL_PHY=m +# CONFIG_DP83848_PHY is not set CONFIG_DP83867_PHY=m +CONFIG_MICROCHIP_PHY=m CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=m CONFIG_MDIO_GPIO=m @@ -2807,6 +2845,7 @@ CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_AX88179_178A=m @@ -2842,6 +2881,7 @@ CONFIG_USB_CDC_PHONET=m CONFIG_USB_IPHETH=m CONFIG_USB_SIERRA_NET=m CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m CONFIG_WLAN=y CONFIG_PCMCIA_RAYCS=m CONFIG_LIBERTAS_THINFIRM=m @@ -3123,6 +3163,7 @@ CONFIG_IEEE802154_ATUSB=m CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m +CONFIG_FUJITSU_ES=m CONFIG_HYPERV_NET=m CONFIG_ISDN=y CONFIG_ISDN_I4L=m @@ -3388,6 +3429,7 @@ CONFIG_TABLET_USB_HANWANG=m CONFIG_TABLET_USB_KBTAB=m CONFIG_TABLET_SERIAL_WACOM4=m CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_PROPERTIES=y CONFIG_TOUCHSCREEN_88PM860X=m CONFIG_TOUCHSCREEN_ADS7846=m CONFIG_TOUCHSCREEN_AD7877=m @@ -3479,7 +3521,6 @@ CONFIG_INPUT_BMA150=m CONFIG_INPUT_E3X0_BUTTON=m CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_MAX77693_HAPTIC=m -CONFIG_INPUT_MAX77843_HAPTIC=m CONFIG_INPUT_MAX8925_ONKEY=m CONFIG_INPUT_MAX8997_HAPTIC=m CONFIG_INPUT_MC13783_PWRBUTTON=m @@ -3722,6 +3763,7 @@ CONFIG_I2C_MUX_GPIO=m CONFIG_I2C_MUX_PCA9541=m CONFIG_I2C_MUX_PCA954x=m CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MUX_REG=m CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_SMBUS=m CONFIG_I2C_ALGOBIT=m @@ -3765,6 +3807,7 @@ CONFIG_I2C_DESIGNWARE_CORE=m CONFIG_I2C_DESIGNWARE_PLATFORM=m CONFIG_I2C_DESIGNWARE_PCI=m CONFIG_I2C_EG20T=m +CONFIG_I2C_EMEV2=m CONFIG_I2C_GPIO=m CONFIG_I2C_KEMPLD=m CONFIG_I2C_OCORES=m @@ -3958,6 +4001,7 @@ CONFIG_GPIO_RDC321X=m CONFIG_GPIO_MAX7301=m CONFIG_GPIO_MCP23S08=m CONFIG_GPIO_MC33880=m +CONFIG_GPIO_ZX=y # # USB GPIO expanders @@ -4156,6 +4200,7 @@ CONFIG_SENSORS_LM25066=m CONFIG_SENSORS_LTC2978=m CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX20751=m CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m CONFIG_SENSORS_TPS40422=m @@ -4232,10 +4277,7 @@ CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m CONFIG_INT340X_THERMAL=m CONFIG_ACPI_THERMAL_REL=m - -# -# Texas Instruments thermal drivers -# +CONFIG_INTEL_PCH_THERMAL=m CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -4247,6 +4289,7 @@ CONFIG_SOFT_WATCHDOG=m CONFIG_DA9052_WATCHDOG=m CONFIG_DA9055_WATCHDOG=m CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9062_WATCHDOG=m CONFIG_MENF21BMC_WATCHDOG=m CONFIG_WM831X_WATCHDOG=m CONFIG_WM8350_WATCHDOG=m @@ -4368,6 +4411,7 @@ CONFIG_PMIC_DA9052=y CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9062=m CONFIG_MFD_DA9063=y CONFIG_MFD_DA9150=m CONFIG_MFD_DLN2=m @@ -4380,6 +4424,9 @@ CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_LPC_ICH=m CONFIG_LPC_SCH=m CONFIG_INTEL_SOC_PMIC=y +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m CONFIG_MFD_INTEL_MSIC=y CONFIG_MFD_JANZ_CMODIO=m CONFIG_MFD_KEMPLD=m @@ -4448,6 +4495,7 @@ CONFIG_MFD_ARIZONA_SPI=m CONFIG_MFD_WM5102=y CONFIG_MFD_WM5110=y CONFIG_MFD_WM8997=y +CONFIG_MFD_WM8998=y CONFIG_MFD_WM8400=y CONFIG_MFD_WM831X=y CONFIG_MFD_WM831X_I2C=y @@ -4474,6 +4522,7 @@ CONFIG_REGULATOR_BCM590XX=m CONFIG_REGULATOR_DA903X=m CONFIG_REGULATOR_DA9052=m CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m CONFIG_REGULATOR_DA9063=m CONFIG_REGULATOR_DA9210=m CONFIG_REGULATOR_DA9211=m @@ -4498,10 +4547,10 @@ CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m CONFIG_REGULATOR_MAX77693=m -CONFIG_REGULATOR_MAX77843=m CONFIG_REGULATOR_MC13XXX_CORE=m CONFIG_REGULATOR_MC13783=m CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MT6311=m CONFIG_REGULATOR_MT6397=m CONFIG_REGULATOR_PALMAS=m CONFIG_REGULATOR_PCAP=m @@ -4772,13 +4821,8 @@ CONFIG_MEDIA_PCI_SUPPORT=y # Media capture support # CONFIG_VIDEO_MEYE=m - -# -# Media capture/analog TV support -# -CONFIG_VIDEO_IVTV=m -CONFIG_VIDEO_IVTV_ALSA=m -CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW68=m CONFIG_VIDEO_ZORAN=m CONFIG_VIDEO_ZORAN_DC30=m CONFIG_VIDEO_ZORAN_ZR36060=m @@ -4787,11 +4831,16 @@ CONFIG_VIDEO_ZORAN_DC10=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZORAN_LML33R10=m CONFIG_VIDEO_ZORAN_AVS6EYES=m + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_SOLO6X10=m -CONFIG_VIDEO_TW68=m CONFIG_VIDEO_DT3155=m # @@ -4843,6 +4892,7 @@ CONFIG_DVB_HOPPER=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_NETUP_UNIDVB=m CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_CAFE_CCIC=m CONFIG_VIDEO_VIA_CAMERA=m @@ -4855,6 +4905,7 @@ CONFIG_VIDEO_SH_VEU=m CONFIG_V4L_TEST_DRIVERS=y CONFIG_VIDEO_VIVID=m CONFIG_VIDEO_VIM2M=m +CONFIG_DVB_PLATFORM_DRIVERS=y # # Supported MMC/SDIO adapters @@ -5139,6 +5190,7 @@ CONFIG_DVB_AF9013=m CONFIG_DVB_EC100=m CONFIG_DVB_STV0367=m CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_RTL2832_SDR=m @@ -5193,6 +5245,7 @@ CONFIG_DVB_TUNER_DIB0090=m # SEC control devices for DVB-S # CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m CONFIG_DVB_LNBP21=m CONFIG_DVB_LNBP22=m CONFIG_DVB_ISL6405=m @@ -5206,6 +5259,8 @@ CONFIG_DVB_TDA665x=m CONFIG_DVB_IX2505V=m CONFIG_DVB_M88RS2000=m CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m # # Tools to develop new frontends @@ -5230,14 +5285,11 @@ CONFIG_INTEL_GTT=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_SWITCHEROO=y - -# -# Direct Rendering Manager -# CONFIG_DRM=m CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DRM_TTM=m @@ -5262,8 +5314,6 @@ CONFIG_NOUVEAU_DEBUG_DEFAULT=3 CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_I810=m CONFIG_DRM_I915=m -CONFIG_DRM_I915_KMS=y -CONFIG_DRM_I915_FBDEV=y # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m @@ -5288,6 +5338,11 @@ CONFIG_DRM_PANEL=y # # Display Panels # +CONFIG_DRM_BRIDGE=y + +# +# Display Interface Bridges +# # # Frame buffer Devices @@ -5406,6 +5461,7 @@ CONFIG_FB_AUO_K1900=m CONFIG_FB_AUO_K1901=m CONFIG_FB_HYPERV=m CONFIG_FB_SIMPLE=y +CONFIG_FB_SM712=m CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_L4F00242T03=m @@ -5430,6 +5486,7 @@ CONFIG_BACKLIGHT_DA903X=m CONFIG_BACKLIGHT_DA9052=m CONFIG_BACKLIGHT_MAX8925=m CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_PM8941_WLED=m CONFIG_BACKLIGHT_SAHARA=m CONFIG_BACKLIGHT_WM831X=m CONFIG_BACKLIGHT_ADP5520=m @@ -5724,7 +5781,6 @@ CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m -CONFIG_SND_SOC_QCOM=m CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m @@ -5751,8 +5807,10 @@ CONFIG_SND_SOC_CS4271_I2C=m CONFIG_SND_SOC_CS4271_SPI=m CONFIG_SND_SOC_CS42XX8=m CONFIG_SND_SOC_CS42XX8_I2C=m +CONFIG_SND_SOC_CS4349=m CONFIG_SND_SOC_HDMI_CODEC=m CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_GTM601=m CONFIG_SND_SOC_MAX98090=m CONFIG_SND_SOC_PCM1681=m CONFIG_SND_SOC_PCM1792A=m @@ -5780,6 +5838,7 @@ CONFIG_SND_SOC_SSM2602_I2C=m CONFIG_SND_SOC_SSM4567=m CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m CONFIG_SND_SOC_TAS571X=m @@ -5844,6 +5903,7 @@ CONFIG_HID_EMS_FF=m CONFIG_HID_ELECOM=m CONFIG_HID_ELO=m CONFIG_HID_EZKEY=m +CONFIG_HID_GEMBIRD=m CONFIG_HID_HOLTEK=m CONFIG_HOLTEK_FF=y CONFIG_HID_GT683R=m @@ -6032,6 +6092,10 @@ CONFIG_USB_MUSB_DUAL_ROLE=y # # Platform Glue Layer # + +# +# MUSB DMA mode +# CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m CONFIG_USB_DWC3_ULPI=y @@ -6043,11 +6107,6 @@ CONFIG_USB_DWC3_DUAL_ROLE=y # Platform Glue Driver Support # CONFIG_USB_DWC3_PCI=m - -# -# Debugging features -# -# CONFIG_USB_DWC3_DEBUG is not set CONFIG_USB_DWC2=y CONFIG_USB_DWC2_HOST=y @@ -6386,7 +6445,6 @@ CONFIG_LEDS_MENF21BMC=m # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) # CONFIG_LEDS_BLINKM=m -CONFIG_LEDS_PM8941_WLED=m # # LED Triggers @@ -6414,8 +6472,6 @@ CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=m # CONFIG_INFINIBAND_MTHCA_DEBUG is not set -CONFIG_INFINIBAND_AMSO1100=m -# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set CONFIG_INFINIBAND_CXGB3=m # CONFIG_INFINIBAND_CXGB3_DEBUG is not set CONFIG_INFINIBAND_CXGB4=m @@ -6438,7 +6494,6 @@ CONFIG_EDAC=y # CONFIG_EDAC_LEGACY_SYSFS is not set # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=m -CONFIG_EDAC_MCE_INJ=m CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_AMD64=m # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set @@ -6588,25 +6643,23 @@ CONFIG_DMADEVICES=y # # DMA Devices # -CONFIG_INTEL_IOATDMA=m +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +CONFIG_DMA_ACPI=y +CONFIG_IDMA64=m +CONFIG_PCH_DMA=m +CONFIG_TIMB_DMA=m CONFIG_DW_DMAC_CORE=m CONFIG_DW_DMAC=m CONFIG_DW_DMAC_PCI=m CONFIG_HSU_DMA=m CONFIG_HSU_DMA_PCI=m -CONFIG_TIMB_DMA=m -CONFIG_PCH_DMA=m -CONFIG_DMA_ENGINE=y -CONFIG_DMA_VIRTUAL_CHANNELS=m -CONFIG_DMA_ACPI=y # # DMA Clients # CONFIG_ASYNC_TX_DMA=y # CONFIG_DMATEST is not set -CONFIG_DMA_ENGINE_RAID=y -CONFIG_DCA=m CONFIG_AUXDISPLAY=y CONFIG_KS0108=m CONFIG_KS0108_PORT=0x378 @@ -6675,6 +6728,8 @@ CONFIG_XEN_ACPI_PROCESSOR=y CONFIG_XEN_HAVE_PVMMU=y CONFIG_XEN_AUTO_XLATE=y CONFIG_XEN_ACPI=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_HAVE_VPMU=y CONFIG_STAGING=y CONFIG_SLICOSS=m CONFIG_PRISM2_USB=m @@ -6933,7 +6988,6 @@ CONFIG_IIO_PERIODIC_RTC_TRIGGER=m CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set -CONFIG_FB_SM7XX=m CONFIG_FB_SM750=m CONFIG_FB_XGI=m CONFIG_FT1000=m @@ -6974,11 +7028,13 @@ CONFIG_LIRC_SERIAL=m CONFIG_LIRC_SERIAL_TRANSMITTER=y CONFIG_LIRC_SIR=m CONFIG_LIRC_ZILOG=m +CONFIG_STAGING_RDMA=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set # # Android # -CONFIG_USB_WPAN_HCD=m CONFIG_WIMAX_GDM72XX=m CONFIG_WIMAX_GDM72XX_QOS=y CONFIG_WIMAX_GDM72XX_K_MODE=y @@ -7028,11 +7084,21 @@ CONFIG_FB_TFT_SSD1351=m CONFIG_FB_TFT_ST7735R=m CONFIG_FB_TFT_TINYLCD=m CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m CONFIG_FB_TFT_UC1701=m CONFIG_FB_TFT_UPD161704=m CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_MOST=m +CONFIG_MOSTCORE=m +CONFIG_AIM_CDEV=m +CONFIG_AIM_NETWORK=m +CONFIG_AIM_SOUND=m +CONFIG_AIM_V4L2=m +CONFIG_HDM_DIM2=m +CONFIG_HDM_I2C=m +CONFIG_HDM_USB=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -7093,6 +7159,7 @@ CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=m CONFIG_PVPANIC=m CONFIG_INTEL_PMC_IPC=m +CONFIG_SURFACE_PRO3_BUTTON=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m @@ -7212,8 +7279,8 @@ CONFIG_IIO_ST_ACCEL_3AXIS=m CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m CONFIG_KXSD9=m -CONFIG_MMA8452=m CONFIG_KXCJK1013=m +CONFIG_MMA8452=m CONFIG_MMA9551_CORE=m CONFIG_MMA9551=m CONFIG_MMA9553=m @@ -7356,8 +7423,11 @@ CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m CONFIG_JSA1212=m +CONFIG_RPR0521=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m +CONFIG_OPT3001=m +CONFIG_PA12203001=m CONFIG_STK3310=m CONFIG_TCS3414=m CONFIG_TCS3472=m @@ -7444,6 +7514,7 @@ CONFIG_VME_USER=m CONFIG_VME_PIO2=m CONFIG_PWM=y CONFIG_PWM_SYSFS=y +CONFIG_PWM_CRC=y CONFIG_PWM_LP3943=m CONFIG_PWM_LPSS=m CONFIG_PWM_LPSS_PCI=m @@ -7476,7 +7547,12 @@ CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m CONFIG_MCB=m CONFIG_MCB_PCI=m + +# +# Performance monitor support +# CONFIG_RAS=y +CONFIG_AMD_MCE_INJ=m CONFIG_THUNDERBOLT=m # @@ -7486,8 +7562,10 @@ CONFIG_THUNDERBOLT=m CONFIG_LIBNVDIMM=y CONFIG_BLK_DEV_PMEM=m CONFIG_ND_BLK=m +CONFIG_ND_CLAIM=y CONFIG_ND_BTT=m CONFIG_BTT=y +CONFIG_NVMEM=m # # Firmware Drivers @@ -7522,7 +7600,7 @@ CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y -CONFIG_EXT4_USE_FOR_EXT23=y +CONFIG_EXT4_USE_FOR_EXT2=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_EXT4_ENCRYPTION=m @@ -7883,7 +7961,7 @@ CONFIG_DEBUG_KERNEL=y # # Memory Debugging # -# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_EXTENSION=y # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set @@ -7955,7 +8033,6 @@ CONFIG_DEBUG_BUGVERBOSE=y CONFIG_TORTURE_TEST=m # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set @@ -8038,6 +8115,7 @@ CONFIG_TEST_BPF=m CONFIG_TEST_FIRMWARE=m CONFIG_TEST_UDELAY=m CONFIG_MEMTEST=y +CONFIG_TEST_STATIC_KEYS=m # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB=y @@ -8118,7 +8196,6 @@ CONFIG_SECURITY_APPARMOR=y CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_YAMA=y -CONFIG_SECURITY_YAMA_STACKED=y CONFIG_INTEGRITY=y CONFIG_INTEGRITY_SIGNATURE=y CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y @@ -8145,7 +8222,6 @@ CONFIG_EVM_EXTRA_SMACK_XATTRS=y # CONFIG_DEFAULT_SECURITY_SMACK is not set # CONFIG_DEFAULT_SECURITY_TOMOYO is not set CONFIG_DEFAULT_SECURITY_APPARMOR=y -# CONFIG_DEFAULT_SECURITY_YAMA is not set # CONFIG_DEFAULT_SECURITY_DAC is not set CONFIG_DEFAULT_SECURITY="apparmor" CONFIG_XOR_BLOCKS=m @@ -8181,6 +8257,7 @@ CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_CRYPTD=m @@ -8305,12 +8382,20 @@ CONFIG_CRYPTO_DEV_CCP_DD=m CONFIG_CRYPTO_DEV_CCP_CRYPTO=m CONFIG_CRYPTO_DEV_QAT=m CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m CONFIG_ASYMMETRIC_KEY_TYPE=y CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_PUBLIC_KEY_ALGO_RSA=y CONFIG_X509_CERTIFICATE_PARSER=y -CONFIG_PKCS7_MESSAGE_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y CONFIG_PKCS7_TEST_KEY=m +CONFIG_SIGNED_PE_FILE_VERIFICATION=y + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_IRQFD=y @@ -8346,7 +8431,6 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IO=y -CONFIG_PERCPU_RWSEM=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_CRC_CCITT=m CONFIG_CRC16=y @@ -8399,6 +8483,7 @@ CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y CONFIG_INTERVAL_TREE=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y @@ -8412,7 +8497,6 @@ CONFIG_GLOB=y CONFIG_NLATTR=y CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y CONFIG_LRU_CACHE=m -CONFIG_AVERAGE=y CONFIG_CLZ_TAB=y CONFIG_CORDIC=m CONFIG_DDR=y @@ -8424,5 +8508,6 @@ CONFIG_FONT_SUPPORT=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y +# CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y -CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_MMIO_FLUSH=y diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf index e22b651f37..6c233c079a 100644 --- a/gnu/packages/linux-libre-x86_64.conf +++ b/gnu/packages/linux-libre-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.2.0-gnu Kernel Configuration +# Linux/x86 4.3.0-gnu Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -136,10 +136,6 @@ CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set -CONFIG_RCU_NOCB_CPU=y -# CONFIG_RCU_NOCB_CPU_NONE is not set -# CONFIG_RCU_NOCB_CPU_ZERO is not set -CONFIG_RCU_NOCB_CPU_ALL=y # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y # CONFIG_IKCONFIG is not set @@ -147,12 +143,14 @@ CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_SUPPORTS_INT128=y CONFIG_NUMA_BALANCING=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y @@ -218,7 +216,9 @@ CONFIG_BPF_SYSCALL=y CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_ADVISE_SYSCALLS=y +CONFIG_USERFAULTFD=y CONFIG_PCI_QUIRKS=y +CONFIG_MEMBARRIER=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y @@ -234,15 +234,17 @@ CONFIG_SLUB_DEBUG=y CONFIG_SLUB=y # CONFIG_SLOB is not set CONFIG_SLUB_CPU_PARTIAL=y -CONFIG_SYSTEM_TRUSTED_KEYRING=y +# CONFIG_SYSTEM_DATA_VERIFICATION is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y +CONFIG_KEXEC_CORE=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y CONFIG_OPROFILE_NMI_TIMER=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set CONFIG_OPTPROBES=y CONFIG_KPROBES_ON_FTRACE=y CONFIG_UPROBES=y @@ -313,6 +315,11 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +# CONFIG_MODULE_SIG_SHA512 is not set # CONFIG_MODULE_COMPRESS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_STOP_MACHINE=y @@ -404,7 +411,7 @@ CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_XEN=y CONFIG_XEN_DOM0=y CONFIG_XEN_PVHVM=y -CONFIG_XEN_MAX_DOMAIN_MEMORY=500 +CONFIG_XEN_512GB=y CONFIG_XEN_SAVE_RESTORE=y # CONFIG_XEN_DEBUG_FS is not set CONFIG_XEN_PVH=y @@ -453,6 +460,7 @@ CONFIG_X86_MCE_AMD=y CONFIG_X86_MCE_THRESHOLD=y CONFIG_X86_MCE_INJECT=m CONFIG_X86_THERMAL_VECTOR=y +# CONFIG_VM86 is not set CONFIG_X86_16BIT=y CONFIG_X86_ESPFIX64=y CONFIG_X86_VSYSCALL_EMULATION=y @@ -536,6 +544,9 @@ CONFIG_PGTABLE_MAPPING=y CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_IDLE_PAGE_TRACKING=y +CONFIG_FRAME_VECTOR=y +CONFIG_X86_PMEM_LEGACY_DEVICE=y CONFIG_X86_PMEM_LEGACY=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y @@ -548,7 +559,7 @@ CONFIG_X86_PAT=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y -# CONFIG_X86_INTEL_MPX is not set +CONFIG_X86_INTEL_MPX=y CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_MIXED=y @@ -562,6 +573,7 @@ CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_KEXEC_FILE=y CONFIG_KEXEC_VERIFY_SIG=y +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y CONFIG_CRASH_DUMP=y CONFIG_KEXEC_JUMP=y CONFIG_PHYSICAL_START=0x1000000 @@ -575,6 +587,7 @@ CONFIG_HOTPLUG_CPU=y # CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_COMPAT_VDSO is not set # CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y CONFIG_HAVE_LIVEPATCH=y CONFIG_LIVEPATCH=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y @@ -587,6 +600,7 @@ CONFIG_USE_PERCPU_NUMA_NODE_ID=y CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set CONFIG_HIBERNATE_CALLBACKS=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" @@ -620,6 +634,8 @@ CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_IPMI=m CONFIG_ACPI_HOTPLUG_CPU=y @@ -849,7 +865,6 @@ CONFIG_NET_IPVTI=m CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y -CONFIG_GENEVE_CORE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m @@ -889,6 +904,7 @@ CONFIG_INET6_AH=m CONFIG_INET6_ESP=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET6_XFRM_MODE_TRANSPORT=m @@ -1110,6 +1126,7 @@ CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m @@ -1137,7 +1154,9 @@ CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_TABLES_IPV4=m CONFIG_NFT_CHAIN_ROUTE_IPV4=m CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m CONFIG_NF_TABLES_ARP=m +CONFIG_NF_DUP_IPV4=m CONFIG_NF_LOG_ARP=m CONFIG_NF_LOG_IPV4=m CONFIG_NF_REJECT_IPV4=m @@ -1180,6 +1199,8 @@ CONFIG_NF_CONNTRACK_IPV6=m CONFIG_NF_TABLES_IPV6=m CONFIG_NFT_CHAIN_ROUTE_IPV6=m CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NF_DUP_IPV6=m CONFIG_NF_REJECT_IPV6=m CONFIG_NF_LOG_IPV6=m CONFIG_NF_NAT_IPV6=m @@ -1406,6 +1427,7 @@ CONFIG_NETLINK_DIAG=m CONFIG_MPLS=y CONFIG_NET_MPLS_GSO=m CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m CONFIG_HSR=m # CONFIG_NET_SWITCHDEV is not set CONFIG_RPS=y @@ -1558,6 +1580,7 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=m CONFIG_BT_HIDP=m +CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_6LOWPAN=m # CONFIG_BT_SELFTEST is not set @@ -1569,6 +1592,7 @@ CONFIG_BT_DEBUGFS=y CONFIG_BT_INTEL=m CONFIG_BT_BCM=m CONFIG_BT_RTL=m +CONFIG_BT_QCA=m CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTUSB_BCM=y CONFIG_BT_HCIBTUSB_RTL=y @@ -1581,6 +1605,7 @@ CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIUART_3WIRE=y CONFIG_BT_HCIUART_INTEL=y CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_QCA=y CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m @@ -1679,8 +1704,12 @@ CONFIG_NFC_ST21NFCA=m CONFIG_NFC_ST21NFCA_I2C=m CONFIG_NFC_ST_NCI=m CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m CONFIG_NFC_NXP_NCI=m CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_LWTUNNEL=y CONFIG_HAVE_BPF_JIT=y # @@ -2040,6 +2069,7 @@ CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 CONFIG_ECHO=m # CONFIG_CXL_BASE is not set # CONFIG_CXL_KERNEL_API is not set +# CONFIG_CXL_EEH is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -2168,6 +2198,7 @@ CONFIG_SCSI_IPR_TRACE=y CONFIG_SCSI_IPR_DUMP=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set @@ -2185,7 +2216,7 @@ CONFIG_PCMCIA_AHA152X=m CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m -CONFIG_SCSI_DH=m +CONFIG_SCSI_DH=y CONFIG_SCSI_DH_RDAC=m CONFIG_SCSI_DH_HP_SW=m CONFIG_SCSI_DH_EMC=m @@ -2391,6 +2422,7 @@ CONFIG_TUN=y CONFIG_VETH=m CONFIG_VIRTIO_NET=y CONFIG_NLMON=m +CONFIG_NET_VRF=m CONFIG_SUNGEM_PHY=m CONFIG_ARCNET=m CONFIG_ARCNET_1201=m @@ -2492,9 +2524,10 @@ CONFIG_CNIC=m CONFIG_TIGON3=m CONFIG_BNX2X=m CONFIG_BNX2X_SRIOV=y +CONFIG_BNX2X_VXLAN=y CONFIG_NET_VENDOR_BROCADE=y CONFIG_BNA=m -CONFIG_NET_VENDOR_CAVIUM=m +CONFIG_NET_VENDOR_CAVIUM=y CONFIG_THUNDER_NIC_PF=m CONFIG_THUNDER_NIC_VF=m CONFIG_THUNDER_NIC_BGX=m @@ -2581,6 +2614,8 @@ CONFIG_MLX4_CORE=m CONFIG_MLX4_DEBUG=y CONFIG_MLX5_CORE=m CONFIG_MLX5_CORE_EN=y +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_PCI=m CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m CONFIG_KS8851=m @@ -2659,6 +2694,7 @@ CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m CONFIG_CASSINI=m CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y CONFIG_NET_VENDOR_TEHUTI=y CONFIG_TEHUTI=m CONFIG_NET_VENDOR_TI=y @@ -2687,6 +2723,7 @@ CONFIG_PHYLIB=y # # MII PHY device drivers # +CONFIG_AQUANTIA_PHY=m CONFIG_AT803X_PHY=m CONFIG_AMD_PHY=m CONFIG_MARVELL_PHY=m @@ -2695,6 +2732,7 @@ CONFIG_QSEMI_PHY=m CONFIG_LXT_PHY=m CONFIG_CICADA_PHY=m CONFIG_VITESSE_PHY=m +CONFIG_TERANETICS_PHY=m CONFIG_SMSC_PHY=m CONFIG_BROADCOM_PHY=m CONFIG_BCM7XXX_PHY=m @@ -2705,10 +2743,13 @@ CONFIG_NATIONAL_PHY=m CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MICREL_PHY=m +# CONFIG_DP83848_PHY is not set CONFIG_DP83867_PHY=m +CONFIG_MICROCHIP_PHY=m CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=m CONFIG_MDIO_GPIO=m +CONFIG_MDIO_OCTEON=m CONFIG_MDIO_BCM_UNIMAC=m CONFIG_MICREL_KS8995MA=m CONFIG_PLIP=m @@ -2735,6 +2776,7 @@ CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m CONFIG_USB_RTL8150=m CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_AX88179_178A=m @@ -2770,6 +2812,7 @@ CONFIG_USB_CDC_PHONET=m CONFIG_USB_IPHETH=m CONFIG_USB_SIERRA_NET=m CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m CONFIG_WLAN=y CONFIG_PCMCIA_RAYCS=m CONFIG_LIBERTAS_THINFIRM=m @@ -3045,6 +3088,7 @@ CONFIG_IEEE802154_ATUSB=m CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m +CONFIG_FUJITSU_ES=m CONFIG_HYPERV_NET=m CONFIG_ISDN=y CONFIG_ISDN_I4L=m @@ -3291,6 +3335,7 @@ CONFIG_TABLET_USB_HANWANG=m CONFIG_TABLET_USB_KBTAB=m CONFIG_TABLET_SERIAL_WACOM4=m CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_PROPERTIES=y CONFIG_TOUCHSCREEN_88PM860X=m CONFIG_TOUCHSCREEN_ADS7846=m CONFIG_TOUCHSCREEN_AD7877=m @@ -3380,7 +3425,6 @@ CONFIG_INPUT_BMA150=m CONFIG_INPUT_E3X0_BUTTON=m CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_MAX77693_HAPTIC=m -CONFIG_INPUT_MAX77843_HAPTIC=m CONFIG_INPUT_MAX8925_ONKEY=m CONFIG_INPUT_MAX8997_HAPTIC=m CONFIG_INPUT_MC13783_PWRBUTTON=m @@ -3510,6 +3554,7 @@ CONFIG_SERIAL_8250_FINTEK=m CONFIG_SERIAL_KGDB_NMI=y CONFIG_SERIAL_MAX3100=m CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_UARTLITE=m CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_CONSOLE_POLL=y @@ -3608,6 +3653,7 @@ CONFIG_I2C_MUX_GPIO=m CONFIG_I2C_MUX_PCA9541=m CONFIG_I2C_MUX_PCA954x=m CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MUX_REG=m CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_SMBUS=m CONFIG_I2C_ALGOBIT=m @@ -3650,6 +3696,7 @@ CONFIG_I2C_CBUS_GPIO=m CONFIG_I2C_DESIGNWARE_CORE=m CONFIG_I2C_DESIGNWARE_PLATFORM=m CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_EMEV2=m CONFIG_I2C_GPIO=m CONFIG_I2C_KEMPLD=m CONFIG_I2C_OCORES=m @@ -3835,6 +3882,7 @@ CONFIG_GPIO_RDC321X=m CONFIG_GPIO_MAX7301=m CONFIG_GPIO_MCP23S08=m CONFIG_GPIO_MC33880=m +CONFIG_GPIO_ZX=y # # USB GPIO expanders @@ -4032,6 +4080,7 @@ CONFIG_SENSORS_LM25066=m CONFIG_SENSORS_LTC2978=m CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX20751=m CONFIG_SENSORS_MAX34440=m CONFIG_SENSORS_MAX8688=m CONFIG_SENSORS_TPS40422=m @@ -4108,10 +4157,7 @@ CONFIG_INTEL_SOC_DTS_IOSF_CORE=m CONFIG_INTEL_SOC_DTS_THERMAL=m CONFIG_INT340X_THERMAL=m CONFIG_ACPI_THERMAL_REL=m - -# -# Texas Instruments thermal drivers -# +CONFIG_INTEL_PCH_THERMAL=m CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -4123,6 +4169,7 @@ CONFIG_SOFT_WATCHDOG=m CONFIG_DA9052_WATCHDOG=m CONFIG_DA9055_WATCHDOG=m CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9062_WATCHDOG=m CONFIG_MENF21BMC_WATCHDOG=m CONFIG_WM831X_WATCHDOG=m CONFIG_WM8350_WATCHDOG=m @@ -4231,6 +4278,7 @@ CONFIG_PMIC_DA9052=y CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9052_I2C=y CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9062=m CONFIG_MFD_DA9063=y CONFIG_MFD_DA9150=m CONFIG_MFD_DLN2=m @@ -4243,6 +4291,9 @@ CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_LPC_ICH=m CONFIG_LPC_SCH=m CONFIG_INTEL_SOC_PMIC=y +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m CONFIG_MFD_JANZ_CMODIO=m CONFIG_MFD_KEMPLD=m CONFIG_MFD_88PM800=m @@ -4309,6 +4360,7 @@ CONFIG_MFD_ARIZONA_SPI=m CONFIG_MFD_WM5102=y CONFIG_MFD_WM5110=y CONFIG_MFD_WM8997=y +CONFIG_MFD_WM8998=y CONFIG_MFD_WM8400=y CONFIG_MFD_WM831X=y CONFIG_MFD_WM831X_I2C=y @@ -4335,6 +4387,7 @@ CONFIG_REGULATOR_BCM590XX=m CONFIG_REGULATOR_DA903X=m CONFIG_REGULATOR_DA9052=m CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m CONFIG_REGULATOR_DA9063=m CONFIG_REGULATOR_DA9210=m CONFIG_REGULATOR_DA9211=m @@ -4359,10 +4412,10 @@ CONFIG_REGULATOR_MAX8973=m CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m CONFIG_REGULATOR_MAX77693=m -CONFIG_REGULATOR_MAX77843=m CONFIG_REGULATOR_MC13XXX_CORE=m CONFIG_REGULATOR_MC13783=m CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MT6311=m CONFIG_REGULATOR_MT6397=m CONFIG_REGULATOR_PALMAS=m CONFIG_REGULATOR_PCAP=m @@ -4632,13 +4685,8 @@ CONFIG_MEDIA_PCI_SUPPORT=y # Media capture support # CONFIG_VIDEO_MEYE=m - -# -# Media capture/analog TV support -# -CONFIG_VIDEO_IVTV=m -CONFIG_VIDEO_IVTV_ALSA=m -CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW68=m CONFIG_VIDEO_ZORAN=m CONFIG_VIDEO_ZORAN_DC30=m CONFIG_VIDEO_ZORAN_ZR36060=m @@ -4647,11 +4695,16 @@ CONFIG_VIDEO_ZORAN_DC10=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZORAN_LML33R10=m CONFIG_VIDEO_ZORAN_AVS6EYES=m + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_SOLO6X10=m -CONFIG_VIDEO_TW68=m CONFIG_VIDEO_DT3155=m # @@ -4703,6 +4756,7 @@ CONFIG_DVB_HOPPER=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_NETUP_UNIDVB=m CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_CAFE_CCIC=m CONFIG_VIDEO_VIA_CAMERA=m @@ -4714,6 +4768,7 @@ CONFIG_VIDEO_SH_VEU=m CONFIG_V4L_TEST_DRIVERS=y CONFIG_VIDEO_VIVID=m CONFIG_VIDEO_VIM2M=m +CONFIG_DVB_PLATFORM_DRIVERS=y # # Supported MMC/SDIO adapters @@ -4982,6 +5037,7 @@ CONFIG_DVB_AF9013=m CONFIG_DVB_EC100=m CONFIG_DVB_STV0367=m CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_RTL2832_SDR=m @@ -5036,6 +5092,7 @@ CONFIG_DVB_TUNER_DIB0090=m # SEC control devices for DVB-S # CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m CONFIG_DVB_LNBP21=m CONFIG_DVB_LNBP22=m CONFIG_DVB_ISL6405=m @@ -5049,6 +5106,8 @@ CONFIG_DVB_TDA665x=m CONFIG_DVB_IX2505V=m CONFIG_DVB_M88RS2000=m CONFIG_DVB_AF9033=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ASCOT2E=m # # Tools to develop new frontends @@ -5067,14 +5126,11 @@ CONFIG_INTEL_GTT=y CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_SWITCHEROO=y - -# -# Direct Rendering Manager -# CONFIG_DRM=m CONFIG_DRM_MIPI_DSI=y CONFIG_DRM_KMS_HELPER=m CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DRM_TTM=m @@ -5099,8 +5155,6 @@ CONFIG_NOUVEAU_DEBUG_DEFAULT=3 CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_I810=m CONFIG_DRM_I915=m -CONFIG_DRM_I915_KMS=y -CONFIG_DRM_I915_FBDEV=y # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_MGA=m CONFIG_DRM_SIS=m @@ -5124,6 +5178,11 @@ CONFIG_DRM_PANEL=y # # Display Panels # +CONFIG_DRM_BRIDGE=y + +# +# Display Interface Bridges +# CONFIG_HSA_AMD=m # @@ -5237,6 +5296,7 @@ CONFIG_FB_AUO_K1900=m CONFIG_FB_AUO_K1901=m CONFIG_FB_HYPERV=m CONFIG_FB_SIMPLE=y +CONFIG_FB_SM712=m CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_L4F00242T03=m @@ -5261,6 +5321,7 @@ CONFIG_BACKLIGHT_DA903X=m CONFIG_BACKLIGHT_DA9052=m CONFIG_BACKLIGHT_MAX8925=m CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_PM8941_WLED=m CONFIG_BACKLIGHT_SAHARA=m CONFIG_BACKLIGHT_WM831X=m CONFIG_BACKLIGHT_ADP5520=m @@ -5511,7 +5572,6 @@ CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m -CONFIG_SND_SOC_QCOM=m CONFIG_SND_SOC_XTFPGA_I2S=m CONFIG_SND_SOC_I2C_AND_SPI=m @@ -5538,8 +5598,10 @@ CONFIG_SND_SOC_CS4271_I2C=m CONFIG_SND_SOC_CS4271_SPI=m CONFIG_SND_SOC_CS42XX8=m CONFIG_SND_SOC_CS42XX8_I2C=m +CONFIG_SND_SOC_CS4349=m CONFIG_SND_SOC_HDMI_CODEC=m CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_GTM601=m CONFIG_SND_SOC_MAX98090=m CONFIG_SND_SOC_PCM1681=m CONFIG_SND_SOC_PCM1792A=m @@ -5566,6 +5628,7 @@ CONFIG_SND_SOC_SSM2602_I2C=m CONFIG_SND_SOC_SSM4567=m CONFIG_SND_SOC_STA32X=m CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m CONFIG_SND_SOC_TAS2552=m CONFIG_SND_SOC_TAS5086=m CONFIG_SND_SOC_TAS571X=m @@ -5630,6 +5693,7 @@ CONFIG_HID_EMS_FF=m CONFIG_HID_ELECOM=m CONFIG_HID_ELO=m CONFIG_HID_EZKEY=m +CONFIG_HID_GEMBIRD=m CONFIG_HID_HOLTEK=m CONFIG_HOLTEK_FF=y CONFIG_HID_GT683R=m @@ -5818,6 +5882,10 @@ CONFIG_USB_MUSB_DUAL_ROLE=y # # Platform Glue Layer # + +# +# MUSB DMA mode +# CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_DWC3=m CONFIG_USB_DWC3_ULPI=y @@ -5829,11 +5897,6 @@ CONFIG_USB_DWC3_DUAL_ROLE=y # Platform Glue Driver Support # CONFIG_USB_DWC3_PCI=m - -# -# Debugging features -# -# CONFIG_USB_DWC3_DEBUG is not set CONFIG_USB_DWC2=y CONFIG_USB_DWC2_HOST=y @@ -6170,7 +6233,6 @@ CONFIG_LEDS_MENF21BMC=m # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) # CONFIG_LEDS_BLINKM=m -CONFIG_LEDS_PM8941_WLED=m # # LED Triggers @@ -6198,11 +6260,8 @@ CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=m # CONFIG_INFINIBAND_MTHCA_DEBUG is not set -CONFIG_INFINIBAND_IPATH=m CONFIG_INFINIBAND_QIB=m CONFIG_INFINIBAND_QIB_DCA=y -CONFIG_INFINIBAND_AMSO1100=m -# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set CONFIG_INFINIBAND_CXGB3=m # CONFIG_INFINIBAND_CXGB3_DEBUG is not set CONFIG_INFINIBAND_CXGB4=m @@ -6225,7 +6284,6 @@ CONFIG_EDAC=y # CONFIG_EDAC_LEGACY_SYSFS is not set # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=m -CONFIG_EDAC_MCE_INJ=m CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_AMD64=m # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set @@ -6370,16 +6428,17 @@ CONFIG_DMADEVICES=y # # DMA Devices # -CONFIG_INTEL_MIC_X100_DMA=m +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +CONFIG_DMA_ACPI=y +CONFIG_IDMA64=m CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_MIC_X100_DMA=m CONFIG_DW_DMAC_CORE=m CONFIG_DW_DMAC=m CONFIG_DW_DMAC_PCI=m CONFIG_HSU_DMA=m CONFIG_HSU_DMA_PCI=m -CONFIG_DMA_ENGINE=y -CONFIG_DMA_VIRTUAL_CHANNELS=m -CONFIG_DMA_ACPI=y # # DMA Clients @@ -6458,6 +6517,8 @@ CONFIG_XEN_HAVE_PVMMU=y CONFIG_XEN_EFI=y CONFIG_XEN_AUTO_XLATE=y CONFIG_XEN_ACPI=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_HAVE_VPMU=y CONFIG_STAGING=y CONFIG_SLICOSS=m CONFIG_PRISM2_USB=m @@ -6715,7 +6776,6 @@ CONFIG_IIO_PERIODIC_RTC_TRIGGER=m CONFIG_IIO_SIMPLE_DUMMY=m # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set -CONFIG_FB_SM7XX=m CONFIG_FB_SM750=m CONFIG_FB_XGI=m CONFIG_FT1000=m @@ -6752,11 +6812,19 @@ CONFIG_LIRC_SERIAL=m CONFIG_LIRC_SERIAL_TRANSMITTER=y CONFIG_LIRC_SIR=m CONFIG_LIRC_ZILOG=m +CONFIG_STAGING_RDMA=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_HFI1=m +# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set +CONFIG_HFI1_VERBS_31BIT_PSN=y +# CONFIG_SDMA_VERBOSITY is not set +# CONFIG_PRESCAN_RXQ is not set +CONFIG_INFINIBAND_IPATH=m # # Android # -CONFIG_USB_WPAN_HCD=m CONFIG_WIMAX_GDM72XX=m CONFIG_WIMAX_GDM72XX_QOS=y CONFIG_WIMAX_GDM72XX_K_MODE=y @@ -6810,11 +6878,21 @@ CONFIG_FB_TFT_SSD1351=m CONFIG_FB_TFT_ST7735R=m CONFIG_FB_TFT_TINYLCD=m CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m CONFIG_FB_TFT_UC1701=m CONFIG_FB_TFT_UPD161704=m CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_MOST=m +CONFIG_MOSTCORE=m +CONFIG_AIM_CDEV=m +CONFIG_AIM_NETWORK=m +CONFIG_AIM_SOUND=m +CONFIG_AIM_V4L2=m +CONFIG_HDM_DIM2=m +CONFIG_HDM_I2C=m +CONFIG_HDM_USB=m CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -6869,6 +6947,7 @@ CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=m CONFIG_PVPANIC=m CONFIG_INTEL_PMC_IPC=m +CONFIG_SURFACE_PRO3_BUTTON=m CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m @@ -6990,8 +7069,8 @@ CONFIG_IIO_ST_ACCEL_3AXIS=m CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m CONFIG_KXSD9=m -CONFIG_MMA8452=m CONFIG_KXCJK1013=m +CONFIG_MMA8452=m CONFIG_MMA9551_CORE=m CONFIG_MMA9551=m CONFIG_MMA9553=m @@ -7134,8 +7213,11 @@ CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m CONFIG_JSA1212=m +CONFIG_RPR0521=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m +CONFIG_OPT3001=m +CONFIG_PA12203001=m CONFIG_STK3310=m CONFIG_TCS3414=m CONFIG_TCS3472=m @@ -7223,6 +7305,7 @@ CONFIG_VME_USER=m CONFIG_VME_PIO2=m CONFIG_PWM=y CONFIG_PWM_SYSFS=y +CONFIG_PWM_CRC=y CONFIG_PWM_LP3943=m CONFIG_PWM_LPSS=m CONFIG_PWM_LPSS_PCI=m @@ -7255,7 +7338,12 @@ CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m CONFIG_MCB=m CONFIG_MCB_PCI=m + +# +# Performance monitor support +# CONFIG_RAS=y +CONFIG_AMD_MCE_INJ=m CONFIG_THUNDERBOLT=m # @@ -7265,8 +7353,10 @@ CONFIG_THUNDERBOLT=m CONFIG_LIBNVDIMM=y CONFIG_BLK_DEV_PMEM=m CONFIG_ND_BLK=m +CONFIG_ND_CLAIM=y CONFIG_ND_BTT=m CONFIG_BTT=y +CONFIG_NVMEM=m # # Firmware Drivers @@ -7301,7 +7391,7 @@ CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y -CONFIG_EXT4_USE_FOR_EXT23=y +CONFIG_EXT4_USE_FOR_EXT2=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_EXT4_ENCRYPTION=m @@ -7736,7 +7826,6 @@ CONFIG_DEBUG_BUGVERBOSE=y CONFIG_TORTURE_TEST=m # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set @@ -7820,6 +7909,7 @@ CONFIG_TEST_BPF=m CONFIG_TEST_FIRMWARE=m CONFIG_TEST_UDELAY=m CONFIG_MEMTEST=y +CONFIG_TEST_STATIC_KEYS=m # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB=y @@ -7901,7 +7991,6 @@ CONFIG_SECURITY_APPARMOR=y CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_YAMA=y -CONFIG_SECURITY_YAMA_STACKED=y CONFIG_INTEGRITY=y CONFIG_INTEGRITY_SIGNATURE=y CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y @@ -7928,7 +8017,6 @@ CONFIG_EVM_EXTRA_SMACK_XATTRS=y # CONFIG_DEFAULT_SECURITY_SMACK is not set # CONFIG_DEFAULT_SECURITY_TOMOYO is not set CONFIG_DEFAULT_SECURITY_APPARMOR=y -# CONFIG_DEFAULT_SECURITY_YAMA is not set # CONFIG_DEFAULT_SECURITY_DAC is not set CONFIG_DEFAULT_SECURITY="apparmor" CONFIG_XOR_BLOCKS=m @@ -7964,6 +8052,7 @@ CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_WORKQUEUE=y CONFIG_CRYPTO_CRYPTD=m @@ -8012,6 +8101,7 @@ CONFIG_CRYPTO_CRCT10DIF=y CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_POLY1305_X86_64=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m @@ -8057,6 +8147,7 @@ CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SALSA20=m CONFIG_CRYPTO_SALSA20_X86_64=m CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CHACHA20_X86_64=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m @@ -8104,12 +8195,20 @@ CONFIG_CRYPTO_DEV_CCP_DD=m CONFIG_CRYPTO_DEV_CCP_CRYPTO=m CONFIG_CRYPTO_DEV_QAT=m CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m CONFIG_ASYMMETRIC_KEY_TYPE=y CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y CONFIG_PUBLIC_KEY_ALGO_RSA=y CONFIG_X509_CERTIFICATE_PARSER=y -CONFIG_PKCS7_MESSAGE_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y CONFIG_PKCS7_TEST_KEY=m +CONFIG_SIGNED_PE_FILE_VERIFICATION=y + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_IRQFD=y @@ -8145,7 +8244,6 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IO=y -CONFIG_PERCPU_RWSEM=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y CONFIG_CRC_CCITT=m @@ -8198,6 +8296,7 @@ CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y CONFIG_INTERVAL_TREE=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y @@ -8211,7 +8310,6 @@ CONFIG_GLOB=y CONFIG_NLATTR=y CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y CONFIG_LRU_CACHE=m -CONFIG_AVERAGE=y CONFIG_CLZ_TAB=y CONFIG_CORDIC=m CONFIG_DDR=y @@ -8223,5 +8321,7 @@ CONFIG_FONT_SUPPORT=y # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y +# CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_MMIO_FLUSH=y diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 77cf865c54..08533742ff 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -23,7 +23,7 @@ (define-module (gnu packages linux) #:use-module ((guix licenses) - #:hide (zlib)) + #:hide (zlib openssl)) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -57,6 +57,7 @@ #:use-module (gnu packages asciidoc) #:use-module (gnu packages readline) #:use-module (gnu packages calendar) + #:use-module (gnu packages tls) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) @@ -210,7 +211,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." #f))) (define-public linux-libre - (let* ((version "4.2.3") + (let* ((version "4.3.2") (build-phase '(lambda* (#:key system inputs #:allow-other-keys #:rest args) ;; Apply the neat patch. @@ -220,6 +221,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (let ((arch (car (string-split system #\-)))) (setenv "ARCH" (cond ((string=? arch "i686") "i386") + ((string=? arch "mips64el") "mips") (else arch))) (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))) @@ -266,7 +268,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (for-each (lambda (file) (copy-file file (string-append out "/" (basename file)))) - (find-files "." "^(bzImage|System\\.map)$")) + (find-files "." "^(bzImage|vmlinuz|System\\.map)$")) (copy-file ".config" (string-append out "/config")) (zero? (system* "make" (string-append "DEPMOD=" mit "/sbin/depmod") @@ -283,10 +285,12 @@ for SYSTEM, or #f if there is no configuration for SYSTEM." (uri (linux-libre-urls version)) (sha256 (base32 - "1xpx32k6bzxqg5y8lyaana97jjcli00iyqklh5fdhirfvjb9dimd")))) + "0d87jbmplv36kxq40k44zh3sj82qp79lf8n4by7jb2wvyk06rvfg")))) (build-system gnu-build-system) + (supported-systems '("x86_64-linux" "i686-linux")) (native-inputs `(("perl" ,perl) ("bc" ,bc) + ("openssl" ,openssl) ("module-init-tools" ,module-init-tools) ("patch/freedo+gnu" ,%boot-logo-patch) @@ -445,8 +449,9 @@ providing the system administrator with some help in common tasks.") ("net-base" ,net-base))) ;for tests (home-page "https://www.kernel.org/pub/linux/utils/util-linux/") (synopsis "Collection of utilities for the Linux kernel") - (description - "Util-linux is a random collection of utilities for the Linux kernel.") + (description "Util-linux is a diverse collection of Linux kernel +utilities. It provides dmesg and includes tools for working with filesystems, +block devices, UUIDs, TTYs, and many other tools.") ;; Note that util-linux doesn't use the same license for all the ;; code. GPLv2+ is the default license for a code without an @@ -542,7 +547,7 @@ slabtop, and skill.") (arguments '(;; util-linux is not the preferred source for some of the libraries and ;; commands, so disable them (see, e.g., - ;; .) + ;; .) #:configure-flags '("--disable-libblkid" "--disable-libuuid" "--disable-uuidd" "--disable-fsck" @@ -1361,7 +1366,7 @@ file system is as easy as logging into the server with an SSH client.") (define-public numactl (package (name "numactl") - (version "2.0.9") + (version "2.0.11") (source (origin (method url-fetch) (uri (string-append @@ -1370,35 +1375,13 @@ file system is as easy as logging into the server with an SSH client.") ".tar.gz")) (sha256 (base32 - "073myxlyyhgxh1w3r757ajixb7s2k69czc3r0g12c3scq7k3784w")))) + "0qbqa9gac2vlahrngi553hws2mqgqdwv2lc69a3yx4gq6l90j325")))) (build-system gnu-build-system) (arguments - '(#:phases (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - ;; There's no 'configure' script, just a raw makefile. - (substitute* "Makefile" - (("^prefix := .*$") - (string-append "prefix := " (assoc-ref outputs "out") - "\n")) - (("^libdir := .*$") - ;; By default the thing tries to install under - ;; $prefix/lib64 when on a 64-bit platform. - (string-append "libdir := $(prefix)/lib\n")))) - %standard-phases) - - #:make-flags (list - ;; By default the thing tries to use 'cc'. - "CC=gcc" - - ;; Make sure programs have an RPATH so they can find - ;; libnuma.so. - (string-append "LDLIBS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib")) - - ;; There's a 'test' target, but it requires NUMA support in the kernel + '(;; There's a 'test' target, but it requires NUMA support in the kernel ;; to run, which we can't assume to have. #:tests? #f)) + (home-page "http://oss.sgi.com/projects/libnuma/") (synopsis "Tools for non-uniform memory access (NUMA) machines") (description @@ -1540,7 +1523,7 @@ from the module-init-tools project.") ;; The post-systemd fork, maintained by Gentoo. (package (name "eudev") - (version "2.1.1") + (version "3.1.5") (source (origin (method url-fetch) (uri (string-append @@ -1548,55 +1531,15 @@ from the module-init-tools project.") version ".tar.gz")) (sha256 (base32 - "0shf5vqiz9fdxl95aa1a8vh0xjxwim3psc39wr2xr8lnahf11vva")) - (patches (list (search-patch "eudev-rules-directory.patch"))) - (modules '((guix build utils))) - (snippet - ;; 'configure' checks uses as an indication of - ;; whether Linux headers are available, but it doesn't actually - ;; use it, and our 'linux-libre-headers' package doesn't - ;; provide it. So just remove that. - '(substitute* "configure" - (("linux/btrfs\\.h") - ""))))) + "0akg9gcc3c2p56xbhlvbybqavcprly5q0bvk655zwl6d62j8an7p")) + (patches (list (search-patch "eudev-rules-directory.patch"))))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) - ("gperf" ,gperf) - ("glib" ,glib "bin") ; glib-genmarshal, etc. - ("perl" ,perl) ; for the tests - ("python" ,python-2))) ; ditto + ("perl" ,perl) + ("gperf" ,gperf))) (inputs - `(("kmod" ,kmod) - ("pciutils" ,pciutils) - ("usbutils" ,usbutils) - ("util-linux" ,util-linux) - ("glib" ,glib) - ("gobject-introspection" ,gobject-introspection))) - (arguments - `(#:configure-flags (list "--enable-libkmod" - - (string-append - "--with-pci-ids-path=" - (assoc-ref %build-inputs "pciutils") - "/share/pci.ids.gz") - - "--with-firmware-path=/no/firmware" - - ;; Work around undefined reference to - ;; 'mq_getattr' in sc-daemon.c. - "LDFLAGS=-lrt") - #:phases - (alist-cons-before - 'build 'pre-build - ;; The program 'g-ir-scanner' (part of the package - ;; 'gobject-introspection'), to generate .gir files, makes some - ;; library pre-processing. During that phase it looks for the C - ;; compiler as either 'cc' or as defined by the environment variable - ;; 'CC' (with code in 'giscanner/dumper.py'). - (lambda* _ - (setenv "CC" "gcc")) - %standard-phases))) + `(("kmod" ,kmod))) (home-page "http://www.gentoo.org/proj/en/eudev/") (synopsis "Userspace device management") (description "Udev is a daemon which dynamically creates and removes @@ -2327,7 +2270,7 @@ applications.") (define-public bluez (package (name "bluez") - (version "5.30") + (version "5.35") (source (origin (method url-fetch) (uri (string-append @@ -2335,7 +2278,9 @@ applications.") version ".tar.xz")) (sha256 (base32 - "0b1qbnq1xzcdw5rajg9yyg31bf21jnff0n6gnf1snz89bbdllfhy")))) + "1qphz25hganfnd5ipfscbj7s70anv5favmwqmi9ig2saciaf1zhs")) + (patches + (list (search-patch "bluez-tests.patch"))))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -2418,3 +2363,46 @@ id=0B7CLI-REKbE3VTdaa0EzTkhYdU0") "This package provides a FUSE-based file system that provides read and write access to exFAT devices.") (license gpl2+))) + +(define-public gpm + (package + (name "gpm") + (version "1.20.7") + (source (origin + (method url-fetch) + (uri (string-append + "http://www.nico.schottelius.org/software/gpm/archives/gpm-" + version ".tar.bz2")) + (sha256 + (base32 + "13d426a8h403ckpc8zyf7s2p5rql0lqbg2bv0454x0pvgbfbf4gh")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + ;; The tarball was not generated with 'make dist' so we + ;; need to bootstrap things ourselves. + (and (zero? (system* "./autogen.sh")) + (begin + (patch-makefile-SHELL "Makefile.include.in") + #t))))) + + ;; Make sure programs find libgpm.so. + #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib")))) + (native-inputs + `(("texinfo" ,texinfo) + ("bison" ,bison) + ("flex" ,flex) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (home-page "http://www.nico.schottelius.org/software/gpm/") + (synopsis "Mouse support for the Linux console") + (description + "The GPM (general-purpose mouse) daemon is a mouse server for +applications running on the Linux console. It allows users to select items +and copy/paste text in the console and in xterm.") + (license gpl2+))) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 78ff83de15..726cfcd5cb 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -59,15 +59,16 @@ #:configure-flags '("--enable-ansi") ; required for use by the maxima package #:phases (alist-cons-before 'configure 'pre-conf - (lambda _ + (lambda _ ;; Patch bug when building readline support. This bug was ;; also observed by Debian ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741819 (substitute* "o/gcl_readline.d" - (("rl_attempted_completion_function = \\(CPPFunction \\*\\)rl_completion;") + (("rl_attempted_completion_function = \ +\\(CPPFunction \\*\\)rl_completion;") "rl_attempted_completion_function = rl_completion;")) - (substitute* - (append + (substitute* + (append '("pcl/impl/kcl/makefile.akcl" "add-defs" "unixport/makefile.dos" @@ -115,8 +116,7 @@ interface to the Tk widget system.") ("libgc" ,libgc) ("libffi" ,libffi))) (arguments - '(#:tests? #f - ;; During 'make check', ECL fails to initialize with "protocol not + '(;; During 'make check', ECL fails to initialize with "protocol not ;; supported", presumably because /etc/protocols is missing in the ;; build environment. See . ;; @@ -139,7 +139,7 @@ interface to the Tk widget system.") ;; (string-append ;; "ECL=" (assoc-ref outputs "out") "/bin/ecl")))) ;; rearranged-phases)) - )) + #:tests? #f)) (home-page "http://ecls.sourceforge.net/") (synopsis "Embeddable Common Lisp") (description "ECL is an implementation of the Common Lisp language as diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 18e0ca9c76..d5e5ed65ad 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -87,7 +87,10 @@ of programming tools as well as libraries with equivalent functionality.") functions for C and C++ programs. It also provides header files that allow C and C++ source code to interface with the \"sanitization\" passes of the clang compiler. In LLVM this library is called \"compiler-rt\".") - (license ncsa))) + (license ncsa) + + ;; doesn't list MIPS as supported. + (supported-systems (delete "mips64el-linux" %supported-systems)))) (define (clang-from-llvm llvm clang-runtime hash) (package diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 87f53d1637..d27c024cfb 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -37,7 +37,8 @@ version ".tar.gz")) (sha256 (base32 "0b8034v1s82n4dg5rzcn12067ha3nxaylp2vdp8gg08kjsbzphhk")) - (patches (list (search-patch "lua-pkgconfig.patch"))))) + (patches (list (search-patch "lua-pkgconfig.patch") + (search-patch "lua52-liblua-so.patch"))))) (build-system gnu-build-system) (inputs `(("readline", readline))) (arguments @@ -89,8 +90,8 @@ for configuration, scripting, and rapid prototyping.") version ".tar.gz")) (sha256 (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm")) - (patches (list (search-patch "luajit-symlinks.patch") - (search-patch "luajit-no_ldconfig.patch"))))) + (patches (list (search-patch "luajit-symlinks.patch") + (search-patch "luajit-no_ldconfig.patch"))))) (build-system gnu-build-system) (arguments '(#:tests? #f ;luajit is distributed without tests diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 467b44ce3d..bfa88ac964 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -278,6 +278,9 @@ sample proximities between pairs of cases.") ("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config))) + ;; Non-portable SSE instructions are used so building fails on platforms + ;; other than x86_64. + (supported-systems '("x86_64-linux")) (home-page "http://shogun-toolbox.org/") (synopsis "Machine learning toolbox") (description diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 25407b835a..bf28ec674e 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,13 +31,13 @@ #:use-module (gnu packages base) #:use-module (gnu packages backup) #:use-module (gnu packages bash) + #:use-module (gnu packages bison) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) #:use-module (gnu packages dejagnu) #:use-module (gnu packages emacs) #:use-module (gnu packages enchant) - #:use-module (gnu packages gdbm) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) @@ -44,11 +45,11 @@ #:use-module (gnu packages gsasl) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages flex) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libidn) #:use-module (gnu packages linux) #:use-module (gnu packages m4) - #:use-module (gnu packages databases) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -70,6 +71,7 @@ (expat . license:expat))) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -207,7 +209,7 @@ operating systems.") (define-public gmime (package (name "gmime") - (version "2.6.19") + (version "2.6.20") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gmime/" @@ -215,7 +217,7 @@ operating systems.") "/gmime-" version ".tar.xz")) (sha256 (base32 - "0jm1fgbjgh496rsc0il2y46qd4bqq2ln9168p4zzh68mk4ml1yxg")))) + "0rfzbgsh8ira5p76kdghygl5i3fvmmx4wbw5rp7f8ajc4vxp18g0")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -225,20 +227,21 @@ operating systems.") ("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". We use ISO-8859-1 here because test-iconv.c contains - ;; raw byte sequences in several different encodings. - (with-fluids ((%default-port-encoding #f)) - (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))) + (modify-phases %standard-phases + (add-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". We use ISO-8859-1 here because test-iconv.c contains + ;; raw byte sequences in several different encodings. + (with-fluids ((%default-port-encoding #f)) + (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)))))))))))) (home-page "http://spruce.sourceforge.net/gmime/") (synopsis "MIME message parser and creator library") (description @@ -306,6 +309,15 @@ can read the same mailbox from multiple computers. It supports IMAP as REMOTE repository and Maildir/IMAP as LOCAL repository.") (license gpl2+))) +(define %mu-gtester-patch + ;; Ensure tests have unique names, to placate GLib 2.6's gtester. + (origin + (method url-fetch) + (uri "https://github.com/djcb/mu/commit/b44039ed.patch") + (sha256 + (base32 + "165hryqqhx3wah8a4f5jaq465azx1pm9r4jid7880pys9gd88qlv")))) + (define-public mu (package (name "mu") @@ -317,7 +329,8 @@ repository and Maildir/IMAP as LOCAL repository.") (file-name (string-append "mu-" version ".tar.gz")) (sha256 (base32 - "0wj33pma8xgjvn2akk7khzbycwn4c9sshxvzdph9dnpy7gyqxj51")))) + "0wj33pma8xgjvn2akk7khzbycwn4c9sshxvzdph9dnpy7gyqxj51")) + (patches (list %mu-gtester-patch)))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -505,14 +518,14 @@ MailCore 2.") (define-public claws-mail (package (name "claws-mail") - (version "3.11.1") + (version "3.13.0") (source (origin (method url-fetch) (uri (string-append - "mirror://sourceforge/claws-mail/claws-mail-" version + "http://www.claws-mail.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "0cyixz1jgfpi8abh9fbb8ylx9mcvw4jqj81cms666wpqr6v828yp")))) + (base32 "0fpr9gdgrs5yggm61a6135ca06x0cflddsh8dwfqmpb3dj07cl1n")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("bogofilter" ,bogofilter) @@ -550,14 +563,14 @@ which can add many functionalities to the base client.") (define-public msmtp (package (name "msmtp") - (version "1.4.32") + (version "1.6.2") (source (origin (method url-fetch) (uri (string-append - "mirror://sourceforge/msmtp/msmtp-" version ".tar.bz2")) + "mirror://sourceforge/msmtp/msmtp-" version ".tar.xz")) (sha256 (base32 - "122z38pv4q03w3mbnhrhg4w85a51258sfdg2ips0b6cgwz3wbw1b")))) + "12c7ljahb06pgn8yvvw526xvr11vnr6d4nr0apylixddpxycsvig")))) (build-system gnu-build-system) (inputs `(("libidn" ,libidn) @@ -570,7 +583,7 @@ which can add many functionalities to the base client.") (arguments `(#:configure-flags (list "--with-libgsasl" "--with-libidn" - "--with-ssl=gnutls"))) + "--with-tls=gnutls"))) (synopsis "Simple and easy to use SMTP client with decent sendmail compatibility") (description @@ -667,7 +680,7 @@ facilities for checking incoming mail.") (define-public dovecot (package (name "dovecot") - (version "2.2.16") + (version "2.2.19") (source (origin (method url-fetch) @@ -675,7 +688,7 @@ facilities for checking incoming mail.") (version-major+minor version) "/" name "-" version ".tar.gz")) (sha256 (base32 - "1w6gg4h9mxg3i8faqpmgj19imzyy001b0v8ihch8ma3zl63i5kjn")))) + "17sf5aancad4pg1vx1606k99389wg76blpqzmnmxlz4hklzix7km")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -931,4 +944,66 @@ Email::Send library.") format and headers.") (license (package-license perl)))) +(define-public libesmtp + (package + (name "libesmtp") + (version "1.0.6") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.stafford.uklinux.net/libesmtp/libesmtp-" + version ".tar.bz2")) + (sha256 + (base32 + "02zbniyz7qys1jmx3ghx21kxmns1wc3hmv80gp7ag7yra9f1m9nh")))) + (build-system gnu-build-system) + (propagated-inputs + `(("openssl" ,openssl))) + (home-page "http://www.stafford.uklinux.net/libesmtp/") + (synopsis "Library for sending mail via remote hosts using SMTP") + (description "libESMTP is an SMTP client which manages posting (or +submission of) electronic mail via a preconfigured Mail Transport Agent (MTA). +It may be used as part of a Mail User Agent (MUA) or other program that must +be able to post electronic mail where mail functionality may not be that +program's primary purpose.") + (license (list lgpl2.1+ gpl2+)))) + +(define-public esmtp + (package + (name "esmtp") + (version "1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/andywingo/esmtp.git") + (commit "01bf9fc"))) + (sha256 + (base32 + "1ay282rrl92h0m0m8z5zzjnwiiagi7c78aq2qvhia5mw7prwfyw2")) + (file-name (string-append name "-" version "-checkout")))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before + 'configure 'autoconf + (lambda _ (zero? (system* "autoreconf" "-vfi"))))))) + (build-system gnu-build-system) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (inputs + `(("libesmtp" ,libesmtp))) + (home-page "http://sourceforge.net/projects/esmtp/") + (synopsis "Relay-only mail transfer agent (MTA)") + (description "Esmtp is a simple relay-only mail transfer agent built using +libESMTP. It sends e-mail via a remote SMTP server using credentials from the +user's @file{$HOME/.esmtprc} configuration file; see the @command{esmtprc} man +page for more on configuration. This package also provides minimal +compatibility shims for the @command{sendmail}, @command{mailq}, and +@command{newaliases} commands.") + (license gpl2+))) + ;;; mail.scm ends here diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index 46b7d8b9b0..b11c0d149c 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 David Thompson ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Alex Kost +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,9 +25,9 @@ #:use-module (guix download) #:use-module (guix packages) #:use-module (guix build-system gnu) + #:use-module (gnu packages databases) #:use-module (gnu packages flex) #:use-module (gnu packages gawk) - #:use-module (gnu packages gdbm) #:use-module (gnu packages groff) #:use-module (gnu packages less) #:use-module (gnu packages lynx) @@ -162,7 +163,7 @@ Linux kernel and C library interfaces employed by user-space programs.") (define-public help2man (package (name "help2man") - (version "1.47.2") + (version "1.47.3") (source (origin (method url-fetch) @@ -170,7 +171,7 @@ Linux kernel and C library interfaces employed by user-space programs.") version ".tar.xz")) (sha256 (base32 - "0z1zgw6k1fba59fii6ksfi1g2gci6i4ysa3kdfh3j475fdkn1if4")))) + "0miqq77ssk5rgsc9xlv7k5n2wk2c5wv2m1kh4zhbwrggfmjaycn2")))) (build-system gnu-build-system) (arguments `(;; There's no `check' target. #:tests? #f)) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 5fa37d1535..0c0f013ca4 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -149,7 +150,7 @@ semiconductors.") (define-public gsl (package (name "gsl") - (version "1.16") + (version "2.1") (source (origin (method url-fetch) @@ -157,24 +158,10 @@ semiconductors.") version ".tar.gz")) (sha256 (base32 - "0lrgipi0z6559jqh82yx8n4xgnxkhzj46v96dl77hahdp58jzg3k")) - (patches (map search-patch '("gsl-poly-test-fix-pt1.patch" - "gsl-poly-test-fix-pt2.patch"))))) + "0rhcia9jhr3p1f1wybwyllwqfs9bggz99i3mi5lpyqcpff1hdbar")))) (build-system gnu-build-system) (arguments - `(#:parallel-tests? #f - #:phases - (alist-replace - 'configure - (lambda* (#:key target system outputs #:allow-other-keys #:rest args) - (let ((configure (assoc-ref %standard-phases 'configure))) - ;; disable numerically unstable test on i686, see thread at - ;; http://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html - (if (string=? (or target system) "i686-linux") - (substitute* "ode-initval2/Makefile.in" - (("TESTS = \\$\\(check_PROGRAMS\\)") "TESTS ="))) - (apply configure args))) - %standard-phases))) + `(#:parallel-tests? #f)) (home-page "http://www.gnu.org/software/gsl/") (synopsis "Numerical library for C and C++") (description @@ -188,7 +175,7 @@ numbers.") (define-public glpk (package (name "glpk") - (version "4.56") + (version "4.57") (source (origin (method url-fetch) @@ -196,7 +183,7 @@ numbers.") version ".tar.gz")) (sha256 (base32 - "0syzix6qvpn0fzp08c84c8snansf1cam5vd0dk2w91mz2c85d18h")))) + "0p17jj1ixd2m9lnsvx8nywmfmnplfk5gvw25r1gy84qzrjkv48vk")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -234,7 +221,7 @@ LP/MIP solver is included in the package.") ("pango" ,pango) ("readline" ,readline) ("gtk" ,gtk+-2) - ("gtksourceview" ,gtksourceview) + ("gtksourceview" ,gtksourceview-2) ("zlib" ,zlib))) (native-inputs `(("glib" ,glib "bin") ;for glib-genmarshal @@ -350,22 +337,24 @@ singular value problems.") (define-public gnuplot (package (name "gnuplot") - (version "4.6.3") + (version "5.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/" - version "/gnuplot-" version ".tar.gz")) + version "/gnuplot-" version ".tar.gz")) (sha256 (base32 - "1xd7gqdhlk7k1p9yyqf9vkk811nadc7m4si0q3nb6cpv4pxglpyz")))) + "0irwig94w3f8bn4a444hrjnp7w55vqwv8gqj42jiwn6zf5z5bg3w")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) ("cairo" ,cairo) ("pango" ,pango) ("gd" ,gd))) - (native-inputs `(("texlive" ,texlive) - ("pkg-config" ,pkg-config))) + (native-inputs `(("pkg-config" ,pkg-config) + ;; Need 'tex', 'latex', 'pdflatex', 'kpsexand', and + ;; 'texhash' binaries. + ("texlive" ,texlive-bin))) (home-page "http://www.gnuplot.info") (synopsis "Command-line driven graphing utility") (description "Gnuplot is a portable command-line driven graphing @@ -376,7 +365,7 @@ 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")))) + "http://gnuplot.cvs.sourceforge.net/gnuplot/gnuplot/Copyright")))) (define-public hdf5 (package @@ -414,15 +403,15 @@ extremely large and complex data collections.") (define-public octave (package (name "octave") - (version "3.8.2") + (version "4.0.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/octave/octave-" - version ".tar.gz")) + version ".tar.gz")) (sha256 (base32 - "05slz8yx8k91fqlnfr1f0vni95iq9qmchz41c7nf4isn3b2fjn7j")))) + "101jr9yck798586jz4vkjcgk36zksmxf1pxrzvipgn2xgyay0zjc")))) (build-system gnu-build-system) (inputs `(("lapack" ,lapack) @@ -513,7 +502,7 @@ ASCII text files using Gmsh's own scripting language.") (define-public petsc (package (name "petsc") - (version "3.6.0") + (version "3.6.2") (source (origin (method url-fetch) @@ -521,7 +510,7 @@ ASCII text files using Gmsh's own scripting language.") (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/" "petsc-lite-" version ".tar.gz")) (sha256 - (base32 "0lzhk1flgszks1wlhz2b92rnlx5np7bgad8vqy9fcqziz5b4pr26")))) + (base32 "13h0m5f9xsdpps4lsp59iz2m7zkapwavq2zfkfvs3ab6sndla0l9")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2) @@ -638,7 +627,7 @@ scientific applications modeled by partial differential equations.") (define-public slepc (package (name "slepc") - (version "3.6.0") + (version "3.6.2") (source (origin (method url-fetch) @@ -646,7 +635,7 @@ scientific applications modeled by partial differential equations.") "filename=slepc-" version ".tar.gz")) (sha256 (base32 - "1ij8w864spzk4cq2mmkssqyj0mbckkkvxm0wpw9gywy2jgbj07jr")))) + "1pv5iqz2kc8sj49zsabyz4arnfpana8mjrhq31vzgk16xldk3d1a")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) @@ -659,7 +648,7 @@ scientific applications modeled by partial differential equations.") `(#:parallel-build? #f ;build is parallel by default #:configure-flags `(,(string-append "--with-arpack-dir=" - (assoc-ref %build-inputs "arpack"))) + (assoc-ref %build-inputs "arpack") "/lib")) #:phases (modify-phases %standard-phases (replace @@ -673,7 +662,7 @@ scientific applications modeled by partial differential equations.") (format #t "build directory: ~s~%" (getcwd)) (format #t "configure flags: ~s~%" flags) (setenv "SLEPC_DIR" (getcwd)) - (setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc")) + (setenv "PETSC_DIR" (assoc-ref inputs "petsc")) (zero? (apply system* "./configure" flags))))) (add-after 'install 'delete-doc @@ -738,7 +727,7 @@ arising after the discretization of partial differential equations.") (define-public mumps (package (name "mumps") - (version "5.0.0") + (version "5.0.1") (source (origin (method url-fetch) @@ -746,7 +735,7 @@ arising after the discretization of partial differential equations.") version ".tar.gz")) (sha256 (base32 - "0690yp73sqk8zn2jnrzdr5swnjdyd7j0774s4xamjjwcxarw87hr")) + "1820jfp3mbl7n85765v5mp6p0gzqpgr4d2lrnhwj4gl7cwp5ndah")) (patches (list (search-patch "mumps-build-parallelism.patch"))))) (build-system gnu-build-system) (inputs @@ -1461,7 +1450,7 @@ constant parts of it.") (define-public openblas (package (name "openblas") - (version "0.2.14") + (version "0.2.15") (source (origin (method url-fetch) @@ -1470,17 +1459,18 @@ constant parts of it.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0av3pd96j8rx5i65f652xv9wqfkaqn0w4ma1gvbyz73i6j2hi9db")))) + "1k5f6vjlk54qlplk5m7xkbaw6g2y7dl50lwwdv6xsbcsgsbxfcpy")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target - ;; DYNAMIC_ARCH is only supported on x86. When it is disabled, - ;; OpenBLAS will tune itself to the build host, so we need to disable - ;; substitutions. + ;; DYNAMIC_ARCH is only supported on x86. When it is disabled and no + ;; TARGET is specified, OpenBLAS will tune itself to the build host, so + ;; we need to disable substitutions. #:substitutable? ,(let ((system (or (%current-target-system) (%current-system)))) (or (string-prefix? "x86_64" system) - (string-prefix? "i686" system))) + (string-prefix? "i686" system) + (string-prefix? "mips" system))) #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "SHELL=bash" @@ -1491,10 +1481,16 @@ constant parts of it.") ;; Unfortunately, this is not supported on non-x86 architectures, ;; where it leads to failed builds. ,@(let ((system (or (%current-target-system) (%current-system)))) - (if (or (string-prefix? "x86_64" system) + (cond + ((or (string-prefix? "x86_64" system) (string-prefix? "i686" system)) - '("DYNAMIC_ARCH=1") - '()))) + '("DYNAMIC_ARCH=1")) + ;; On MIPS we force the "SICORTEX" TARGET, as for the other + ;; two available MIPS targets special extended instructions + ;; for Loongson cores are used. + ((string-prefix? "mips" system) + '("TARGET=SICORTEX")) + (else '())))) ;; no configure script #:phases (alist-delete 'configure %standard-phases))) (inputs @@ -1968,3 +1964,30 @@ algorithm and optimum parameters depending on the dataset. FLANN is written in C++ and contains bindings for C, Octave and Python.") (license (license:non-copyleft "file://COPYING" "See COPYING in the distribution.")))) + +(define-public wcalc + (package + (name "wcalc") + (version "2.5") + (source + (origin + (method url-fetch) + (uri + (string-append + "mirror://sourceforge/w-calc/wcalc-" version ".tar.bz2")) + (sha256 + (base32 + "1vi8dl6rccqiq1apmpwawyg2ywx6a1ic1d3cvkf2hlwk1z11fb0f")))) + (build-system gnu-build-system) + (inputs + `(("mpfr" ,mpfr) + ("readline" ,readline))) + (home-page "http://w-calc.sourceforge.net/index.php") + (synopsis "Flexible command-line scientific calculator") + (description "Wcalc is a very capable calculator. It has standard functions +(sin, asin, and sinh for example, in either radians or degrees), many +pre-defined constants (pi, e, c, etc.), support for using variables, \"active\" +variables, a command history, hex/octal/binary input and output, unit +conversions, embedded comments, and an expandable expression entry field. It +evaluates expressions using the standard order of operations.") + (license license:gpl2+))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 731acb54c6..140108987b 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -424,7 +425,7 @@ was initially a fork of xmpppy, but is using non-blocking sockets.") (define-public gajim (package (name "gajim") - (version "0.16.3") + (version "0.16.4") (source (origin (method url-fetch) (uri (string-append "https://gajim.org/downloads/" @@ -432,7 +433,7 @@ was initially a fork of xmpppy, but is using non-blocking sockets.") "/gajim-" version ".tar.bz2")) (sha256 (base32 - "05a59hf9wna6n9fi0a4bhz1hifqj21bwb4ff9rd0my23rdwmij51")))) + "0zyfs7q1qg8iqszr8l1gb18gqla6zrrfsgpmbxblpi9maqxas5i1")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/mit-krb5.scm b/gnu/packages/mit-krb5.scm index b79d4d34bc..16bef8d97d 100644 --- a/gnu/packages/mit-krb5.scm +++ b/gnu/packages/mit-krb5.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013 Andreas Enge +;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,59 +25,88 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu)) (define-public mit-krb5 (package (name "mit-krb5") - (version "1.11.3") + (version "1.13.2") (source (origin (method url-fetch) (uri (string-append "http://web.mit.edu/kerberos/www/dist/krb5/" - (string-copy version 0 (string-rindex version #\.)) + (version-major+minor version) "/krb5-" version "-signed.tar")) (sha256 (base32 - "1daiaxgkxcryqs37w28v4x1vajqmay4l144d1zd9c2d7jjxr9gcs")))) + "1qbdzyrws7d0q4filsibh28z54pd5l987jr0ygv43iq9085w6a75")))) (build-system gnu-build-system) (native-inputs - `(("patch/init-fix" ,(search-patch "mit-krb5-init-fix.patch")) - ("bison" ,bison) - ("perl" ,perl))) + `(("bison" ,bison) + ("perl" ,perl) + + ;; Include the patches as native-inputs. + ,@(map (lambda (label) + (let ((input-name (string-append "patch/" label)) + (file-name (string-append name "-" label ".patch"))) + `(,input-name ,(search-patch file-name)))) + '("CVE-2015-2695-pt1" + "CVE-2015-2695-pt2" + "CVE-2015-2696" + "CVE-2015-2697" + "CVE-2015-2698-pt1" + "CVE-2015-2698-pt2")))) (arguments - '(#:phases - (alist-replace - 'unpack - (lambda* (#:key source #:allow-other-keys) - (let ((inner - (substring source - (string-index-right source #\k) - (string-index-right source #\-)))) - (and (zero? (system* "tar" "xvf" source)) - (zero? (system* "tar" "xvf" (string-append inner ".tar.gz"))) - (chdir inner) - (chdir "src") - ;; XXX The current patch system does not support unusual - ;; source unpack methods, so we have to apply this patch in a - ;; non-standard way. - (zero? (system* "patch" "-p1" "--force" "-i" - (assoc-ref %build-inputs "patch/init-fix")))))) - (alist-replace - 'check - (lambda* (#:key inputs #:allow-other-keys #:rest args) - (let ((perl (assoc-ref inputs "perl")) - (check (assoc-ref %standard-phases 'check))) - (substitute* "plugins/kdb/db2/libdb2/test/run.test" - (("/bin/cat") (string-append perl "/bin/perl"))) - (substitute* "plugins/kdb/db2/libdb2/test/run.test" - (("D/bin/sh") (string-append "D" (which "bash")))) - (substitute* "plugins/kdb/db2/libdb2/test/run.test" - (("bindir=/bin/.") (string-append "bindir=" perl "/bin"))) - ;; use existing files and directories in test + `(#:modules ((ice-9 ftw) + (ice-9 match) + (srfi srfi-1) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (define (sub-directory? name) + (and (not (member name '("." ".."))) + (equal? (stat:type (stat name)) + 'directory))) + (and (zero? (system* "tar" "xvf" source)) + (match (find-files "." "\\.tar\\.gz$") + ((inner-tar-file) + (zero? (system* "tar" "xvf" inner-tar-file)))) + (match (scandir "." sub-directory?) + ((directory) + (chdir directory) + #t))))) + + (add-after 'unpack 'apply-patches + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((patches (filter (match-lambda + ((name . file) + (string-prefix? "patch/" name))) + (or native-inputs inputs)))) + (every (match-lambda + ((name . file) + (format (current-error-port) + "applying '~a'...~%" name) + (zero? (system* "patch" "-p1" "--force" "-i" file)))) + patches)))) + + (add-after 'apply-patches 'enter-source-directory + (lambda _ + (chdir "src") + #t)) + + (add-before 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + (let ((perl (assoc-ref inputs "perl"))) + (substitute* "plugins/kdb/db2/libdb2/test/run.test" + (("/bin/cat") (string-append perl "/bin/perl")) + (("D/bin/sh") (string-append "D" (which "bash"))) + (("bindir=/bin/.") (string-append "bindir=" perl "/bin")))) + + ;; avoid service names since /etc/services is unavailable (substitute* "tests/resolve/Makefile" (("-p telnet") "-p 23")) - ;; avoid service names since /etc/services is unavailable - (apply check args))) - %standard-phases)))) + #t))))) (synopsis "MIT Kerberos 5") (description "Massachusetts Institute of Technology implementation of Kerberos. diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index 4ce6917433..5dec2a8b3f 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -33,12 +33,14 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages xiph) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages linux) ;alsa-lib #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) #:use-module (guix build-system cmake)) (define-public libmad @@ -169,7 +171,8 @@ Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.") (source (origin (method url-fetch) (uri (string-append - "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-" + "http://ibiblio.org" + "/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-" version ".tgz")) (sha256 (base32 @@ -450,3 +453,32 @@ format.") "Mpc123 is a command-line player for files in the Musepack audio compression format (.mpc files).") (license license:gpl2+))) + +(define-public eyed3 + (package + (name "eyed3") + (version "0.7.8") + (source (origin + (method url-fetch) + (uri (string-append + "http://eyed3.nicfit.net/releases/eyeD3-" + version ".tar.gz")) + (sha256 + (base32 + "1nv7nhfn1d0qm7rgkzksbccgqisng8klf97np0nwaqwd5dbmdf86")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ("python2-nose" ,python2-nose) + ("python2-sphinx" ,python2-sphinx) + ("python2-coverage" ,python2-coverage))) + (synopsis "MP3 tag ID3 metadata editor") + (description "eyeD3 is a Python tool for working with audio files, +specifically mp3 files containing ID3 metadata (i.e. song info). It provides a +command-line tool (eyeD3) and a Python library (import eyed3) that can be used +to write your own applications or plugins that are callable from the +command-line tool.") + (home-page "http://eyed3.nicfit.net/") + (license license:gpl2+))) diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 8dba82d8fa..420291d7f0 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -40,7 +40,7 @@ (define-public hwloc (package (name "hwloc") - (version "1.10.1") + (version "1.11.1") (source (origin (method url-fetch) (uri (string-append "http://www.open-mpi.org/software/hwloc/v" @@ -48,9 +48,7 @@ "/downloads/hwloc-" version ".tar.bz2")) (sha256 (base32 - "0jji5rphy05s0lp6bknn8lxwixrq0hy5rjzsqvhjszbkl2li7kim")) - (patches (list - (search-patch "hwloc-gather-topology-lstopo.patch"))))) + "03vcr9f98z45xfkk34x376mfrwyi7ff4ay60gvn4v95sqihl0qa8")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) @@ -95,7 +93,7 @@ bind processes, and much more.") (define-public openmpi (package (name "openmpi") - (version "1.8.5") + (version "1.10.1") (source (origin (method url-fetch) @@ -104,7 +102,7 @@ bind processes, and much more.") "/downloads/openmpi-" version ".tar.bz2")) (sha256 (base32 - "1i7vjf599kl5lm8n4vnwq9q1d9scn4sdjh42kfq1i9yzxnlhdsjc")))) + "14p4px9a3qzjc22lnl6braxrcrmd9rgmy7fh4qpanawn2pgfq6br")))) (build-system gnu-build-system) (inputs `(("hwloc" ,hwloc) @@ -115,16 +113,12 @@ bind processes, and much more.") ("perl" ,perl))) (arguments `(#:configure-flags `("--enable-static" - "--enable-oshmem" - "--enable-event-thread-support" - "--enable-opal-multi-threads" - "--enable-orte-progress-threads" "--enable-mpi-thread-multiple" + "--enable-builtin-atomics" "--enable-mpi-ext=all" "--with-devel-headers" - "--enable-debug" "--enable-memchecker" ,(string-append "--with-valgrind=" (assoc-ref %build-inputs "valgrind")) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index a72f7543dd..a217a89a19 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2015 Paul van der Walt ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +34,7 @@ #:use-module (gnu packages base) ;libbdf #:use-module (gnu packages boost) #:use-module (gnu packages bison) + #:use-module (gnu packages cdrom) #:use-module (gnu packages code) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -55,6 +57,7 @@ #:use-module (gnu packages linux) ; for alsa-utils #:use-module (gnu packages man) #:use-module (gnu packages mp3) + #:use-module (gnu packages ncurses) #:use-module (gnu packages netpbm) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) @@ -67,6 +70,7 @@ #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) #:use-module (gnu packages texlive) + #:use-module (gnu packages video) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -74,6 +78,67 @@ #:use-module (gnu packages zip) #:use-module ((srfi srfi-1) #:select (last))) +(define-public cmus + (package + (name "cmus") + (version "2.7.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/" name "/" name "/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0raixgjavkm7hxppzsc5zqbfbh2bhjcmbiplhnsxsmyj8flafyc1")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; cmus does not include tests + #:phases + (modify-phases %standard-phases + (replace + 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + + ;; It's an idiosyncratic configure script that doesn't + ;; understand --prefix=..; it wants prefix=.. instead. + (zero? + (system* "./configure" + (string-append "prefix=" out))))))))) + ;; TODO: cmus optionally supports the following formats, which haven't yet + ;; been added to Guix: + ;; + ;; - Roar, libroar + ;; + ;; - DISCID_LIBS, apparently different from cd-discid which is included in + ;; Guix. See + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("ao" ,ao) + ("ffmpeg" ,ffmpeg) + ("flac" ,flac) + ("jack" ,jack-1) + ("libcddb" ,libcddb) + ("libcdio-paranoia" ,libcdio-paranoia) + ("libcue" ,libcue) + ("libmad" ,libmad) + ("libmodplug" ,libmodplug) + ("libmpcdec" ,libmpcdec) + ("libsamplerate" ,libsamplerate) + ("libvorbis" ,libvorbis) + ("ncurses" ,ncurses) + ("opusfile" ,opusfile) + ("pulseaudio" ,pulseaudio) + ("wavpack" ,wavpack))) + (home-page "https://cmus.github.io/") + (synopsis "Small console music player") + (description "Cmus is a small and fast console music player. It supports +many input formats and provides a customisable Vi-style user interface.") + (license license:gpl2+))) + (define-public hydrogen (package (name "hydrogen") @@ -281,6 +346,14 @@ Guile.") (%current-system)))) '("--disable-sse") '())) + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-flags + (lambda _ + ;; Compile with C++11, required by libsigc++. + (setenv "CXXFLAGS" "-std=c++11") + #t))) #:python ,python-2)) (inputs `(("jack" ,jack-1) @@ -701,7 +774,7 @@ browser.") (define-public zynaddsubfx (package (name "zynaddsubfx") - (version "2.5.1") + (version "2.5.2") (source (origin (method url-fetch) (uri (string-append @@ -709,8 +782,21 @@ browser.") version "/zynaddsubfx-" version ".tar.gz")) (sha256 (base32 - "01c4v5lbzard6y00cjq3b6a50cafqwfwibzng9gdsajczhnbkqz2")))) + "11yrady7xwfrzszkk2fvq81ymv99mq474h60qnirk27khdygk24m")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Move SSE compiler optimization flags from generic target to + ;; athlon64 and core2 targets, because otherwise the build would fail + ;; on non-Intel machines. + (add-after 'unpack 'remove-sse-flags-from-generic-target + (lambda _ + (substitute* "src/CMakeLists.txt" + (("-msse -msse2 -mfpmath=sse") "") + (("-march=(athlon64|core2)" flag) + (string-append flag " -msse -msse2 -mfpmath=sse"))) + #t))))) (inputs `(("liblo" ,liblo) ("ntk" ,ntk) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 2001fcc196..f58f3d9328 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,7 +28,7 @@ (define-public nano (package (name "nano") - (version "2.4.2") + (version "2.5.0") (source (origin (method url-fetch) @@ -35,7 +36,7 @@ version ".tar.gz")) (sha256 (base32 - "1fb5gzdm3jdx1f2vyanjvdmppaz082lf4kinyffnssgmzhc7zkf8")))) + "1vl9bim56k1b4zwc3icxp46w6pn6gb042j1h4jlz1jklxxpkwcpz")))) (build-system gnu-build-system) (inputs `(("gettext" ,gnu-gettext) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 2b0d442664..b7fbfc982d 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -110,3 +111,27 @@ implement user interfaces for command-line applications. The accompanying ncursesw library provides wide character support.") (license x11) (home-page "http://www.gnu.org/software/ncurses/")))) + +(define-public dialog + (package + (name "dialog") + (version "1.2-20150920") + (source (origin + (method url-fetch) + (uri (string-append + "http://invisible-mirror.net/archives/dialog/dialog-" + version ".tgz")) + (sha256 + (base32 + "01ccd585c241nkj02n0zdbx8jqhylgcfpcmmshynh0c7fv2ixrn4")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ; no test suite + (inputs + `(("ncurses" ,ncurses))) + (synopsis "Curses widgets") + (description "Dialog is a script-interpreter which provides a set of +curses widgets, such as dialog boxes.") + (home-page "http://invisible-island.net/dialog/dialog.html") + ;; Includes the gpl3 file "config.sub" from Automake. + (license (list lgpl2.1 gpl3)))) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index edb88bcfbc..bde1e1e197 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Cyrill Schenkel ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 David Thompson ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,18 +19,19 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages node) - #:use-module ((guix licenses) - #:select (expat)) - #:use-module (gnu packages) - #:use-module (gnu packages perl) - #:use-module (gnu packages python) - #:use-module (gnu packages gcc) - #:use-module (gnu packages linux) - #:use-module (gnu packages base) + #:use-module ((guix licenses) #:select (expat)) #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages gcc) + #:use-module (gnu packages libevent) + #:use-module (gnu packages linux) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages tls)) (define-public node (package @@ -42,38 +44,44 @@ (sha256 (base32 "17gk29zbw58l0sjjfw86acp39pkiblnq0gsq1jdrd70w0pgn8gdj")))) - (native-inputs `(("python" ,python-2) - ("perl" ,perl) - ("gcc" ,gcc-4.9) - ("util-linux" ,util-linux) - ("which" ,which))) (build-system gnu-build-system) (arguments - `(#:phases - (alist-replace - 'configure - ;; Node's configure script is actually a python script, so we can't - ;; run it with bash. - (lambda* (#:key outputs (configure-flags '()) inputs - #:allow-other-keys) - (let* ((prefix (assoc-ref outputs "out")) - (flags `(,(string-append "--prefix=" prefix) - ,@configure-flags))) - (format #t "build directory: ~s~%" (getcwd)) - (format #t "configure flags: ~s~%" flags) - ;; Node's configure script expects the CC environment variable to - ;; be set. - (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) - (zero? (apply system* - (string-append (assoc-ref inputs "python") - "/bin/python") - "./configure" flags)))) - %standard-phases))) + ;; TODO: Package http_parser and add --shared-http-parser. + '(#:configure-flags '("--shared-openssl" "--shared-zlib" "--shared-libuv") + #:phases + (modify-phases %standard-phases + (replace 'configure + ;; Node's configure script is actually a python script, so we can't + ;; run it with bash. + (lambda* (#:key outputs (configure-flags '()) inputs + #:allow-other-keys) + (let* ((prefix (assoc-ref outputs "out")) + (flags (cons (string-append "--prefix=" prefix) + configure-flags))) + (format #t "build directory: ~s~%" (getcwd)) + (format #t "configure flags: ~s~%" flags) + ;; Node's configure script expects the CC environment variable to + ;; be set. + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + (zero? (apply system* + (string-append (assoc-ref inputs "python") + "/bin/python") + "./configure" flags)))))))) + (native-inputs + `(("python" ,python-2) + ("perl" ,perl) + ("gcc" ,gcc-4.9) + ("util-linux" ,util-linux) + ("which" ,which))) + (inputs + `(("libuv" ,libuv) + ("openssl" ,openssl) + ("zlib" ,zlib))) (synopsis "Evented I/O for V8 JavaScript") (description "Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.") - (license expat) - (home-page "http://nodejs.org/"))) + (home-page "http://nodejs.org/") + (license expat))) diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index a53d98efdd..9e6db67e3e 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -35,7 +35,7 @@ (define-public ntp (package (name "ntp") - (version "4.2.8p3") + (version "4.2.8p4") (source (origin (method url-fetch) (uri (string-append @@ -44,7 +44,7 @@ "/ntp-" version ".tar.gz")) (sha256 (base32 - "13zkzcvjm5kbxl4xbcmaq07slplhmpkgahzcqnqlba3cxpra9341")) + "1fgxbhv0wyiivi6kh5zpzrd0yqmc48z7d3zmjspw9lj84mbn2s8d")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index fc45805958..7f80fc8a32 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2015 David Hashe ;;; ;;; This file is part of GNU Guix. ;;; @@ -453,13 +454,18 @@ provers.") ;; and gtk+-quartz-2.0 once available. (inputs `(("gtk+" ,gtk+-2) - ("gtksourceview" ,gtksourceview) + ("gtksourceview" ,gtksourceview-2) ("libgnomecanvas" ,libgnomecanvas) ("libgnomeui" ,libgnomeui) ("libglade" ,libglade) ("librsvg" ,librsvg))) (arguments `(#:tests? #f ; no check target + + ;; Occasionally we would get "Error: Unbound module GtkThread" when + ;; compiling 'gtkThInit.ml', with 'make -j'. So build sequentially. + #:parallel-build? #f + #:phases (modify-phases %standard-phases (replace 'install diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 4fd1c803ff..2578292fd0 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Cyril Roelandt +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -68,16 +69,14 @@ all the files it generates a report.") (define-public python-debtcollector (package (name "python-debtcollector") - (version "0.5.0") + (version "1.0.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/d/debtcollector/" - "debtcollector-" version ".tar.gz")) + (uri (pypi-uri "debtcollector" version)) (sha256 (base32 - "0amlcg5f98lk2mfzdg44slh1nsi2y4ds123g5d57376fjk2b3njd")))) + "0g4dfskaiy47rhsh4gh66l5vmdsrgq0qk68pl3ix1cj3ffvfndzv")))) (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six) @@ -100,20 +99,51 @@ manner.") (define-public python2-debtcollector (package-with-python2 python-debtcollector)) +(define-public python-hacking + (package + (name "python-hacking") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hacking" version)) + (sha256 + (base32 + "1a310k3dv04jg7zvmk37h2ql7y9kf4hvdxb74bjlwdxgmy6h4wap")))) + (build-system python-build-system) + (propagated-inputs + `(("python-flake8-2.2.4" ,python-flake8-2.2.4) + ("python-mccabe-0.2.1" ,python-mccabe-0.2.1) + ("python-pbr" ,python-pbr) + ("python-pep8-1.5.7" ,python-pep8-1.5.7) + ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1) + ("python-six" ,python-six))) + (inputs + `(("python-setuptools" ,python-setuptools) + ;; Tests + ("python-testscenarios" ,python-testscenarios))) + (home-page "http://github.com/openstack-dev/hacking") + (synopsis "OpenStack hacking guideline enforcement") + (description + "Python-hacking is a set of flake8 plugins that test and enforce the +@uref{http://docs.openstack.org/developer/hacking/, OpenStack style +guidelines}.") + (license asl2.0))) + +(define-public python2-hacking + (package-with-python2 python-hacking)) + (define-public python-mox3 (package (name "python-mox3") - (version "0.8.0") + (version "0.12.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/m/mox3/mox3-" - version - ".tar.gz")) + (uri (pypi-uri "mox3" version)) (sha256 (base32 - "1dwj9lkifdqvrcympqa47bj55l0n0j9jhzv2gj03h0dpzg6mgfkj")))) + "1pwz98q098cb8xxf8yryq21nvklc7hla880bsrq4y3j6bprw3iaj")))) (build-system python-build-system) (inputs `(("python-fixtures" ,python-fixtures) @@ -133,17 +163,14 @@ tested on Python version 3.2, 2.7 and 2.6.") (define-public python-os-client-config (package (name "python-os-client-config") - (version "1.4.0") + (version "1.12.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/o/os-client-config/os-client-config-" - version - ".tar.gz")) + (uri (pypi-uri "os-client-config" version)) (sha256 (base32 - "14png6ml3zbbilh8bihav24f8vig9lyijwynnjcvazdxxrzvwq9j")))) + "1vjn7667pswnmpqv6ngwyqm2xn46w90hi5b4pv2grwfz751cn1lf")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;; Circular dependency with python-oslotest @@ -172,10 +199,44 @@ tested on Python version 3.2, 2.7 and 2.6.") (define-public python2-mox3 (package-with-python2 python-mox3)) +(define-public python-os-testr + (package + (name "python-os-testr") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "os-testr" version)) + (sha256 + (base32 + "0474z0mxb7y3vfk4s097wf1mzji5d135vh27cvlh9q17rq3x9r3w")))) + (build-system python-build-system) + (arguments + ;; os-testr uses itself to run the tests. It seems like pbr writes the + ;; exectuable in the virtualenv when using tox. Not sure how to do this + ;; when building the package. Skip the tests for now. + `(#:tests? #f)) + (propagated-inputs + `(("python-pbr" ,python-pbr) + ("python-subunit" ,python-subunit) + ("python-testtools" ,python-testtools))) + (inputs + `(("python-babel" ,python-babel) + ("python-setuptools" ,python-setuptools))) + (home-page "http://www.openstack.org/") + (synopsis "Testr wrapper to provide functionality for OpenStack projects") + (description + "Os-testr provides developers with a testr wrapper and an output filter + for subunit.") + (license asl2.0))) + +(define-public python2-os-testr + (package-with-python2 python-os-testr)) + (define-public python-pbr (package (name "python-pbr") - (version "1.6.0") + (version "1.8.1") (source (origin (method url-fetch) @@ -185,7 +246,7 @@ tested on Python version 3.2, 2.7 and 2.6.") ".tar.gz")) (sha256 (base32 - "1lg1klrczvzfan89y3bl9ykrknl3nb01vvai37fkww24apzyibjf")))) + "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;; Most tests seem to use the Internet. @@ -217,16 +278,14 @@ and sensible default behaviors into your setuptools run.") (define-public python-requests-mock (package (name "python-requests-mock") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/r/requests-mock/" - "requests-mock-" version ".tar.gz")) + (uri (pypi-uri "requests-mock" version)) (sha256 (base32 - "0gmd88c224y53b1ai8cfsrcxm9kw3gdqzysclmnaqspg7zjhxwd1")))) + "0s6mrpiv2w0km39qvl1pq2d56xblnm57p369qdp5j1a55ncica7f")))) (build-system python-build-system) (propagated-inputs `(("python-requests" ,python-requests) @@ -248,17 +307,14 @@ portions of your testing code.") (define-public python-stevedore (package (name "python-stevedore") - (version "1.7.0") + (version "1.9.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/s/stevedore/stevedore-" - version - ".tar.gz")) + (uri (pypi-uri "stevedore" version)) (sha256 (base32 - "149pjc0c3z6khjisn4yil3f94qjnzwafz093wc8rrzbw828qdkv8")))) + "01pcrdqsb6ca7hmqwm11b3baj6ml8yz9pxawrgvxb3j9824906fc")))) (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six))) @@ -286,6 +342,51 @@ extensions.") (define-public python2-stevedore (package-with-python2 python-stevedore)) +(define-public python-tempest-lib + (package + (name "python-tempest-lib") + (version "0.11.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tempest-lib" version)) + (sha256 + (base32 + "1q4wpqcg0yv99mr5gc43wsfirlqdjz90npyghy3mn5f6lby2yikg")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + 'check 'pre-check + (lambda _ + (substitute* "tempest_lib/tests/cli/test_execute.py" + (("/bin/ls") (which "ls")))))))) + (propagated-inputs + `(("python-fixtures" ,python-fixtures) + ("python-httplib2" ,python-httplib2) + ("python-iso8601" ,python-iso8601) + ("python-jsonschema" ,python-jsonschema) + ("python-oslo.log" ,python-oslo.log) + ("python-paramiko" ,python-paramiko) + ("python-pbr" ,python-pbr) + ("python-six" ,python-six))) + (inputs + `(("python-babel" ,python-babel) + ("python-mock" ,python-mock) + ("python-os-testr" ,python-os-testr) + ("python-oslotest" ,python-oslotest) + ("python-setuptools" ,python-setuptools))) + (home-page "http://www.openstack.org/") + (synopsis "OpenStack functional testing library") + (description + "Tempest-lib is a functional testing library for OpenStack. It provides +common features used in Tempest.") + (license asl2.0))) + +(define-public python2-tempest-lib + (package-with-python2 python-tempest-lib)) + ;; Packages from the Oslo library (define-public python-oslo.config (package @@ -327,16 +428,14 @@ extensions.") (define-public python-oslo.context (package (name "python-oslo.context") - (version "0.6.0") + (version "1.0.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/o/oslo.context/" - "oslo.context-" version ".tar.gz")) + (uri (pypi-uri "oslo.context" version)) (sha256 (base32 - "16wr9qrkc3lb94ssb14qid4liza66x316fvzjw0izg67h1a0fm86")))) + "0kvha0rs9295njyl2z6n6zm5dapi5mrl5zwjm0m6ldqrvccyf8c3")))) (build-system python-build-system) (inputs `(("python-babel" ,python-babel) @@ -358,17 +457,14 @@ pipeline and used by various modules such as logging.") (define-public python-oslo.i18n (package (name "python-oslo.i18n") - (version "2.5.0") + (version "3.0.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/o/oslo.i18n/oslo.i18n-" - version - ".tar.gz")) + (uri (pypi-uri "oslo.i18n" version)) (sha256 (base32 - "1kg72mqldlri3x0bhxai7j979czrd7mf8s3iflvvv0x9kn9ah4cw")))) + "0bpb1c20sm8my650gl824nzaip83bfn8hr91s65k5ncmyh8hb6pl")))) (build-system python-build-system) (propagated-inputs `(("python-babel" ,python-babel) @@ -392,19 +488,58 @@ in an application or library.") (define-public python2-oslo.i18n (package-with-python2 python-oslo.i18n)) +(define-public python-oslo.log + (package + (name "python-oslo.log") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/o/oslo.log/oslo.log-" + version + ".tar.gz")) + (sha256 + (base32 + "1fhy6yvbd565nv4x4i3ppyrlbmz3yy9d0xsvw5nkqsa7g43nmf8z")))) + (build-system python-build-system) + (propagated-inputs + `(("python-debtcollector" ,python-debtcollector) + ("python-oslo.config" ,python-oslo.config) + ("python-oslo.context" ,python-oslo.context) + ("python-oslo.i18n" ,python-oslo.i18n) + ("python-oslo.utils" ,python-oslo.utils) + ("python-oslo.serialization" ,python-oslo.serialization) + ("python-six" ,python-six))) + (inputs + `(("python-babel" ,python-babel) + ("python-iso8601" ,python-iso8601) + ("python-mock" ,python-mock) + ("python-oslotest" ,python-oslotest) + ("python-pbr" ,python-pbr) + ("python-setuptools" ,python-setuptools))) + (home-page "http://launchpad.net/oslo") + (synopsis "Python logging library of the Oslo project") + (description + "The oslo.log (logging) configuration library provides standardized +configuration for all OpenStack projects. It also provides custom formatters, +handlers and support for context specific logging (like resource id’s etc).") + (license asl2.0))) + +(define-public python2-oslo.log + (package-with-python2 python-oslo.log)) + (define-public python-oslo.serialization (package (name "python-oslo.serialization") - (version "1.9.0") + (version "2.0.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/o/oslo.serialization/" - "oslo.serialization-" version ".tar.gz")) + (uri (pypi-uri "oslo.serialization" version)) (sha256 (base32 - "00qaxg155s61ylh4fqc7m5fh0gijf33khhai9xvcsc9k106i3c9c")))) + "1hnkc69sa4r1qhx6hdwlrk2ng7wypgwr063iq5r815a0bv0qr1ad")))) (build-system python-build-system) (propagated-inputs `(("python-iso8601" ,python-iso8601) @@ -431,6 +566,36 @@ in transmittable and storable formats, such as JSON and MessagePack.") (define-public python2-oslo.serialization (package-with-python2 python-oslo.serialization)) +(define-public python-oslosphinx + (package + (name "python-oslosphinx") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "oslosphinx" version)) + (sha256 + (base32 + "0zcshdc9s1f7hnvg0fm2ps5rak3dpnm8kqg4i21lknhmsvb7p5cb")))) + (build-system python-build-system) + (propagated-inputs + `(("python-requests" ,python-requests))) + (inputs + `(("python-pbr" ,python-pbr) + ("python-docutils" ,python-docutils) + ("python-hacking" ,python-hacking) + ("python-setuptools" ,python-setuptools) + ("python-sphinx" ,python-sphinx))) + (home-page "http://www.openstack.org/") + (synopsis "OpenStack sphinx extensions and theme") + (description + "This package provides themes and extensions for Sphinx documentation +from the OpenStack project.") + (license asl2.0))) + +(define-public python2-oslosphinx + (package-with-python2 python-oslosphinx)) + (define-public python-oslotest (package (name "python-oslotest") @@ -449,10 +614,10 @@ in transmittable and storable formats, such as JSON and MessagePack.") (propagated-inputs `(("python-fixtures" ,python-fixtures) ("python-mock" ,python-mock) + ("python-mox3" ,python-mox3) ("python-six" ,python-six))) (inputs `(("python-pbr" ,python-pbr) - ("python-mox3" ,python-mox3) ("python-os-client-config" ,python-os-client-config) ("python-setuptools" ,python-setuptools) ("python-subunit" ,python-subunit) @@ -472,17 +637,14 @@ and better support for mocking results.") (define-public python-oslo.utils (package (name "python-oslo.utils") - (version "2.5.0") + (version "3.0.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/o/oslo.utils/oslo.utils-" - version - ".tar.gz")) + (uri (pypi-uri "oslo.utils" version)) (sha256 (base32 - "11b073gblhzkxhi1j6sqk3apq2ll8xhi9h9g9kxzx9dycqdq0qp0")) + "1c4jrbvfs4hs37fics8frqlyhmsv7v92ncv2cpbm0av9x0ic6pnj")) (snippet '(begin ;; FIXME: setuptools fails to import this file during the test diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm new file mode 100644 index 0000000000..58c2a51ba8 --- /dev/null +++ b/gnu/packages/owncloud.scm @@ -0,0 +1,80 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages owncloud) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cmake) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages databases) + #:use-module (gnu packages linux) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages qt) + #:use-module (gnu packages ruby) + #:use-module (gnu packages tls)) + +(define-public owncloud-client + (package + (name "owncloud-client") + (version "2.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.owncloud.com/desktop/stable/" + "owncloudclient-" version ".tar.xz")) + (sha256 + (base32 "0a42nqx0gn10n7ikhxwif0lqddmb6gbvr45bqbbl30an9gixq598")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-rpath-dirs + (lambda _ + (substitute* '("src/libsync/CMakeLists.txt" + "csync/src/CMakeLists.txt") + ;; We store the libs in out/lib and not /usr/lib/appname, so we + ;; need the executable to point to the libraries in /lib and not + ;; in /lib/appname. + (("\\/\\$\\{APPLICATION_EXECUTABLE\\}") "")) + (substitute* '("src/cmd/CMakeLists.txt" + "src/crashreporter/CMakeLists.txt" + "src/gui/CMakeLists.txt") + ;; This has the same issue as the substitution above. + (("\\/\\$\\{APPLICATION_EXECUTABLE\\}\\\"") "\""))))))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs + `(("inotify-tools" ,inotify-tools) + ("openssl" ,openssl) + ("perl" ,perl) + ("python-wrapper" ,python-wrapper) + ("qt" ,qt) + ("qtkeychain" ,qtkeychain) + ("ruby" ,ruby) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (home-page "https://owncloud.org") + (synopsis "Folder synchronization with an ownCloud server") + (description "The ownCloudSync system lets you always have your latest +files wherever you are. Just specify one or more folders on the local machine +to and a server to synchronize to. You can configure more computers to +synchronize to the same server and any change to the files on one computer will +silently and reliably flow across to every other.") + (license license:gpl2+))) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 8fbe5b3064..917464543c 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -23,9 +23,12 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) - #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+)) + #:use-module (guix build-system python) + #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0)) #:use-module (gnu packages) #:use-module (gnu packages guile) + #:use-module (gnu packages file) + #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) #:use-module (gnu packages databases) @@ -34,12 +37,17 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages gettext) #:use-module (gnu packages texinfo) + #:use-module (gnu packages nettle) #:use-module (gnu packages perl) #:use-module (gnu packages curl) #:use-module (gnu packages web) #:use-module (gnu packages man) #:use-module (gnu packages emacs) #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages python) + #:use-module (gnu packages popt) + #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages cpio) #:use-module (gnu packages tls)) (define (boot-guile-uri arch) @@ -52,17 +60,17 @@ arch "-linux" "/20131110/guile-2.0.9.tar.xz"))) -(define-public guix-0.8.3 +(define-public guix-0.9.0 (package (name "guix") - (version "0.8.3") + (version "0.9.0") (source (origin (method url-fetch) (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" version ".tar.gz")) (sha256 (base32 - "14n0nkj0ckhdwhghx1pml99hbjr1xdkn8x145j0xp1357vqlisnz")))) + "0h573z2br0bf43sxyzia9xlm03n3y43zg1snds3c2piq2m6kabrn")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list @@ -74,6 +82,7 @@ (string-append "--with-libgcrypt-prefix=" (assoc-ref %build-inputs "libgcrypt"))) + #:parallel-tests? #f ;work around #:phases (modify-phases %standard-phases (add-before 'configure 'copy-bootstrap-guile @@ -109,7 +118,17 @@ (substitute* "tests/containers.scm" (("^\\(test-assert" all) (string-append "(test-skip 1)\n" all))) + (when (file-exists? "tests/guix-environment-container.sh") + (substitute* "tests/guix-environment-container.sh" + (("guix environment --version") + "exit 77\n"))) #t)) + (add-before 'check 'set-SHELL + (lambda _ + ;; 'guix environment' tests rely on 'SHELL' having a + ;; correct value, so set it. + (setenv "SHELL" (which "sh")) + #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) @@ -176,9 +195,9 @@ the Nix package manager.") ;; ;; Note: use a short commit id; when using the long one, the limit on socket ;; file names is exceeded while running the tests. - (let ((commit "abbe2c6")) - (package (inherit guix-0.8.3) - (version (string-append "0.8.3." commit)) + (let ((commit "5c36edc")) + (package (inherit guix-0.9.0) + (version (string-append "0.9.0." commit)) (source (origin (method git-fetch) (uri (git-reference @@ -186,10 +205,15 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "1zgjj5knpz3qbbqdjm4yh436bzfgasc6p0k3xnx58hfjd88mdsga")) + "008fv3yj1jkxxma9vp8wzmkk3m82kgchaj9y7lpcvkqzcdhz8h7p")) (file-name (string-append "guix-" version "-checkout")))) (arguments - (substitute-keyword-arguments (package-arguments guix-0.8.3) + (substitute-keyword-arguments (package-arguments guix-0.9.0) + ((#:configure-flags flags) + ;; Set 'DOT_USER_PROGRAM' to the empty string so we don't keep a + ;; reference to Graphviz, whose closure is pretty big (too big for + ;; the GuixSD installation image.) + `(cons "ac_cv_path_DOT_USER_PROGRAM=dot" ,flags)) ((#:phases phases) `(modify-phases ,phases (add-after @@ -208,35 +232,48 @@ the Nix package manager.") ("texinfo" ,texinfo) ("graphviz" ,graphviz) ("help2man" ,help2man) - ,@(package-native-inputs guix-0.8.3)))))) + ,@(package-native-inputs guix-0.9.0)))))) (define-public guix guix-devel) (define-public nix (package (name "nix") - (version "1.8") + (version "1.10") (source (origin (method url-fetch) (uri (string-append "http://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "077hircacgi9y4n6kf48qp4laz1h3ab6sif3rcci1jy13f05w2m3")))) + "1xhh7l1dqwn6i3m51xp8l0aa95da3823w4h8n8hfxlcxaixcl4jn")))) (build-system gnu-build-system) ;; XXX: Should we pass '--with-store-dir=/gnu/store'? But then we'd also ;; need '--localstatedir=/var'. But then! The thing would use /var/nix ;; instead of /var/guix. So in the end, we do nothing special. + (arguments + '(#:configure-flags + ;; Set the prefixes of Perl libraries to avoid propagation. + (let ((perl-libdir (lambda (p) + (string-append + (assoc-ref %build-inputs p) + "/lib/perl5/site_perl")))) + (list (string-append "--with-dbi=" + (perl-libdir "perl-dbi")) + (string-append "--with-dbd-sqlite=" + (perl-libdir "perl-dbd-sqlite")) + (string-append "--with-www-curl=" + (perl-libdir "perl-www-curl")))))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config))) (inputs `(("curl" ,curl) ("openssl" ,openssl) ("libgc" ,libgc) ("sqlite" ,sqlite) - ("bzip2" ,bzip2))) - (propagated-inputs `(("perl-www-curl" ,perl-www-curl) - ("perl-dbi" ,perl-dbi) - ("perl-dbd-sqlite" ,perl-dbd-sqlite))) + ("bzip2" ,bzip2) + ("perl-www-curl" ,perl-www-curl) + ("perl-dbi" ,perl-dbi) + ("perl-dbd-sqlite" ,perl-dbd-sqlite))) (home-page "http://nixos.org/nix/") (synopsis "The Nix package manager") (description @@ -251,21 +288,22 @@ sub-directory.") (define-public stow (package (name "stow") - (version "2.2.0") + (version "2.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/stow/stow-" version ".tar.gz")) (sha256 (base32 - "0arw1nsdlcvd7javkbk2bdvnc31d7dmb6fr25xyyi6ng76cxg2cb")))) + "1pvky9fayms4r6fhns8jd0vavszd7d979w62vfd5n88v614pdxz2")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (native-inputs `(("perl-test-simple" ,perl-test-simple) ("perl-test-output" ,perl-test-output) - ("perl-capture-tiny" ,perl-capture-tiny))) + ("perl-capture-tiny" ,perl-capture-tiny) + ("perl-io-stringy" ,perl-io-stringy))) (home-page "https://www.gnu.org/software/stow/") (synopsis "Managing installed software packages") (description @@ -275,3 +313,130 @@ typically used for managing software packages installed from source, by letting you install them apart in distinct directories and then create symlinks to the files in a common directory such as /usr/local.") (license gpl2+))) + +(define-public rpm + (package + (name "rpm") + (version "4.12.0") + (source (origin + (method url-fetch) + (uri (string-append "http://rpm.org/releases/rpm-4.12.x/rpm-" + version ".tar.bz2")) + (sha256 + (base32 + "18hk47hc755nslvb7xkq4jb095z7va0nlcyxdpxayc4lmb8mq3bp")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--with-external-db" ;use the system's bdb + "--enable-python" + "--without-lua") + #:phases (modify-phases %standard-phases + (add-before 'configure 'set-nspr-search-path + (lambda* (#:key inputs #:allow-other-keys) + ;; nspr.pc contains the right -I flag pointing to + ;; 'include/nspr', but unfortunately 'configure' doesn't + ;; use 'pkg-config'. Thus, augment CPATH. + ;; Likewise for NSS. + (let ((nspr (assoc-ref inputs "nspr")) + (nss (assoc-ref inputs "nss"))) + (setenv "CPATH" + (string-append (getenv "CPATH") ":" + nspr "/include/nspr:" + nss "/include/nss")) + (setenv "LIBRARY_PATH" + (string-append (getenv "LIBRARY_PATH") ":" + nss "/lib/nss")) + #t))) + (add-after 'install 'fix-rpm-symlinks + (lambda* (#:key outputs #:allow-other-keys) + ;; 'make install' gets these symlinks wrong. Fix them. + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (for-each (lambda (file) + (delete-file file) + (symlink "rpm" file)) + '("rpmquery" "rpmverify")) + #t))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("python" ,python-2) + ("xz" ,xz) + ("bdb" ,bdb) + ("popt" ,popt) + ("nss" ,nss) + ("nspr" ,nspr) + ("libarchive" ,libarchive) + ("nettle" ,nettle) ;XXX: actually a dependency of libarchive + ("file" ,file) + ("bzip2" ,bzip2) + ("zlib" ,zlib) + ("cpio" ,cpio))) + (home-page "http://www.rpm.org/") + (synopsis "The RPM Package Manager") + (description + "The RPM Package Manager (RPM) is a command-line driven package +management system capable of installing, uninstalling, verifying, querying, +and updating computer software packages. Each software package consists of an +archive of files along with information about the package like its version, a +description. There is also a library permitting developers to manage such +transactions from C or Python.") + + ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+. + (license gpl2+))) + +(define-public diffoscope + (package + (name "diffoscope") + (version "34") + (source (origin + (method git-fetch) + (uri (git-reference + (url + "https://anonscm.debian.org/cgit/reproducible/diffoscope.git") + (commit version))) + (sha256 + (base32 + "1g8b7bpkmns0355gkr3a244affwx4xzqwahwsl6ivw4z0qv7dih8")) + (file-name (string-append name "-" version "-checkout")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases (modify-phases %standard-phases + (add-before 'build 'disable-egg-zipping + (lambda _ + ;; Leave the .egg file uncompressed. + (let ((port (open-file "setup.cfg" "a"))) + (display "\n[easy_install]\nzip_ok = 0\n" + port) + (close-port port) + #t))) + (add-before 'build 'dependency-on-rpm + (lambda _ + (substitute* "setup.py" + ;; Somehow this requirement is reported as not met, + ;; even though rpm.py is in the search path. So + ;; delete it. + (("'rpm-python',") "")) + #t))) + ;; FIXME: Some obscure test failures. + #:tests? #f)) + (inputs `(("rpm" ,rpm) ;for rpm-python + ("python-file" ,python2-file) + ("python-debian" ,python2-debian) + ("python-libarchive-c" ,python2-libarchive-c) + ("python-tlsh" ,python2-tlsh) + + ;; Below are modules used for tests. + ("python-pytest" ,python2-pytest) + ("python-chardet" ,python2-chardet))) + (native-inputs `(("python-setuptools" ,python2-setuptools))) + (home-page "http://diffoscope.org/") + (synopsis "Compare files, archives, and directories in depth") + (description + "Diffoscope tries to get to the bottom of what makes files or directories +different. It recursively unpacks archives of many kinds and transforms +various binary formats into more human readable forms to compare them. It can +compare two tarballs, ISO images, or PDFs just as easily.") + (license gpl3+))) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 38ce709fe1..25e77d8023 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013,2014 Eric Bavier ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +29,7 @@ (define-public parallel (package (name "parallel") - (version "20150922") + (version "20151122") (source (origin (method url-fetch) @@ -36,7 +37,7 @@ version ".tar.bz2")) (sha256 (base32 - "05zf3jhjmswfr63lgxw8q26kysd72b8m0zy5jbc94r6appx8bd7j")))) + "0phn9dlkqlq3cq468ypxbbn78bsjcin743pyvf8ip4qg6jz662jm")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (home-page "http://www.gnu.org/software/parallel/") diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 921ade1030..1ca327b5c8 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Steve Sprang ;;; Copyright © 2015 Efraim Flashner +;;; Copyright © 2015 Aljosha Papsch ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,9 @@ #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) #:use-module (gnu packages guile) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages tls) #:use-module (gnu packages qt) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg)) @@ -53,15 +57,14 @@ human.") (define-public keepassx (package (name "keepassx") - (version "2.0-beta2") + (version "2.0") (source (origin (method url-fetch) - (uri (string-append "https://github.com/keepassx/keepassx/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (uri (string-append "https://www.keepassx.org/releases/" version + "/keepassx-" version ".tar.gz")) (sha256 - (base32 "0ljf9ws3wh62zd0gyb0vk2qw6pqsmxrlybrfs5mqahf44q92ca2q")))) + (base32 "1ri2r1sldc62hbg74m4pmci0nrjwvv38rqhyzhyjin247an0zd0f")))) (build-system cmake-build-system) (inputs `(("libgcrypt" ,libgcrypt) @@ -104,3 +107,31 @@ For copying and pasting secrets into web browsers and other graphical applications, there is xclip integration." ) (home-page "http://dthompson.us/pages/software/shroud.html") (license license:gpl3+))) + +(define-public yapet + (package + (name "yapet") + (version "1.0") + (source (origin + (method url-fetch) + (uri (string-append "http://www.guengel.ch/myapps/yapet/downloads/yapet-" + version + ".tar.bz2")) + (sha256 + (base32 + "0ydbnqw6icdh07pnv2w6dhvq501bdfvrklv4xmyr8znca9d753if")))) + (build-system gnu-build-system) + (inputs + `(("ncurses" ,ncurses) + ("openssl" ,openssl))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Yet Another Password Encryption Tool") + (description "YAPET is a text based password manager using the Blowfish +encryption algorithm. Because of its small footprint and very few library +dependencies, it is suited for installing on desktop and server systems alike. +The text based user interface allows you to run YAPET easily in a Secure Shell +session. Two companion utilities enable users to convert CSV files to YAPET +and vice versa.") + (home-page "http://www.guengel.ch/myapps/yapet/") + (license license:gpl3+))) diff --git a/gnu/packages/patches/bluez-tests.patch b/gnu/packages/patches/bluez-tests.patch new file mode 100644 index 0000000000..608ded9be2 --- /dev/null +++ b/gnu/packages/patches/bluez-tests.patch @@ -0,0 +1,25 @@ +From 484ad8c9263bb524051a999ce19a994960e69572 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= +Date: Fri, 23 Oct 2015 20:48:57 +0800 +Subject: [PATCH] unit/test-gobex-header: Fix duplicate test names + +--- + unit/test-gobex-header.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/unit/test-gobex-header.c b/unit/test-gobex-header.c +index 6f49312..8705892 100644 +--- a/unit/test-gobex-header.c ++++ b/unit/test-gobex-header.c +@@ -554,7 +554,7 @@ int main(int argc, char *argv[]) + test_header_encode_name_umlaut); + g_test_add_func("/gobex/test_header_encode_body", + test_header_encode_body); +- g_test_add_func("/gobex/test_header_encode_connid", ++ g_test_add_func("/gobex/test_header_encode_actionid", + test_header_encode_actionid); + g_test_add_func("/gobex/test_header_encode_apparam", + test_header_encode_apparam); +-- +2.5.0 + diff --git a/gnu/packages/patches/byobu-writable-status.patch b/gnu/packages/patches/byobu-writable-status.patch new file mode 100644 index 0000000000..2858280273 --- /dev/null +++ b/gnu/packages/patches/byobu-writable-status.patch @@ -0,0 +1,13 @@ +Skeleton status files are installed read-only. When copying to the config dir +upon initialization, make sure they end up writable. + +--- byobu-5.98/usr/bin/byobu-janitor.in ++++ byobu-5.98/usr/bin/byobu-janitor.in +@@ -82,6 +82,7 @@ + if [ ! -r "$BYOBU_CONFIG_DIR/$f" ]; then + # Copy from skeleton, if possible + cp -f "$BYOBU_PREFIX/share/$PKG/status/$f" "$BYOBU_CONFIG_DIR/$f" ++ chmod +w "$BYOBU_CONFIG_DIR/$f" + # Enable ec2_cost, if we're in ec2 and seeding a new setup + if metadata_available; then + $BYOBU_SED_INLINE -e "s/#ec2_cost/ec2_cost/g" "$($BYOBU_READLINK -f $BYOBU_CONFIG_DIR/$f)" diff --git a/gnu/packages/patches/dbus-helper-search-path.patch b/gnu/packages/patches/dbus-helper-search-path.patch new file mode 100644 index 0000000000..30c142312b --- /dev/null +++ b/gnu/packages/patches/dbus-helper-search-path.patch @@ -0,0 +1,18 @@ +The setuid helper of D-Bus is responsible for "service activation". +It looks for '.service' files in fixed locations, but the default locations +make no sense (see below), so replace them with /etc/dbus-1/system-services. + +--- dbus-1.10.0/dbus/dbus-sysdeps-util-unix.c 2015-10-22 00:07:03.829251854 +0200 ++++ dbus-1.10.0/dbus/dbus-sysdeps-util-unix.c 2015-10-22 00:07:14.893445175 +0200 +@@ -1410,10 +1410,7 @@ _dbus_get_standard_system_servicedirs (D + * be available. + */ + static const char standard_search_path[] = +- "/usr/local/share:" +- "/usr/share:" +- DBUS_DATADIR ":" +- "/lib"; ++ "/etc"; + DBusString servicedir_path; + + _dbus_string_init_const (&servicedir_path, standard_search_path); diff --git a/gnu/packages/patches/dbus-localstatedir.patch b/gnu/packages/patches/dbus-localstatedir.patch deleted file mode 100644 index 61bed91b5c..0000000000 --- a/gnu/packages/patches/dbus-localstatedir.patch +++ /dev/null @@ -1,30 +0,0 @@ -Do not try to create $localstatedir and $sysconfdir since we cannot do this -when they are /var and /etc. - ---- dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:13.000000000 +0200 -+++ dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:15.000000000 +0200 -@@ -1510,9 +1510,6 @@ clean-local: - /bin/rm *.bb *.bbg *.da *.gcov || true - - install-data-hook: -- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus -- $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d -- $(mkinstalldirs) $(DESTDIR)$(configdir)/session.d - $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services - $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/system-services - # Install dbus.socket as default implementation of a D-Bus stack. - ---- dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:31.000000000 +0200 -+++ dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:32.000000000 +0200 -@@ -757,11 +757,6 @@ uninstall-am: uninstall-binPROGRAMS - - - # create the /var/lib/dbus directory for dbus-uuidgen --install-data-local: -- $(MKDIR_P) $(DESTDIR)$(localstatedir)/lib/dbus -- --installcheck-local: -- test -d $(DESTDIR)$(localstatedir)/lib/dbus - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/gnu/packages/patches/devil-fix-libpng.patch b/gnu/packages/patches/devil-fix-libpng.patch new file mode 100644 index 0000000000..a8e90333a3 --- /dev/null +++ b/gnu/packages/patches/devil-fix-libpng.patch @@ -0,0 +1,36 @@ +From 724194d7a9a91221a564579f64bdd6f0abd64219 Mon Sep 17 00:00:00 2001 +From: Noah Mayr +Date: Sun, 1 Mar 2015 10:10:56 +0100 +Subject: [PATCH] Fixed deprecated libpng API usage. + +--- + src-IL/src/il_icon.c | 2 +- + src-IL/src/il_png.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src-IL/src/il_icon.c b/src-IL/src/il_icon.c +index 2ccb1a3..fd9475d 100644 +--- a/src-IL/src/il_icon.c ++++ b/src-IL/src/il_icon.c +@@ -525,7 +525,7 @@ ILboolean ico_readpng_get_image(ICOIMAGE *Icon, ILdouble display_exponent) + + // Expand low-bit-depth grayscale images to 8 bits + if (ico_color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { +- png_set_gray_1_2_4_to_8(ico_png_ptr); ++ png_set_expand_gray_1_2_4_to_8(ico_png_ptr); + } + + // Expand RGB images with transparency to full alpha channels +diff --git a/src-IL/src/il_png.c b/src-IL/src/il_png.c +index da9517d..2866508 100644 +--- a/src-IL/src/il_png.c ++++ b/src-IL/src/il_png.c +@@ -277,7 +277,7 @@ ILboolean readpng_get_image(ILdouble display_exponent) + + // Expand low-bit-depth grayscale images to 8 bits + if (png_color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { +- png_set_gray_1_2_4_to_8(png_ptr); ++ png_set_expand_gray_1_2_4_to_8(png_ptr); + } + + // Expand RGB images with transparency to full alpha channels diff --git a/gnu/packages/patches/dico-libtool-deterministic.patch b/gnu/packages/patches/dico-libtool-deterministic.patch new file mode 100644 index 0000000000..957fc79786 --- /dev/null +++ b/gnu/packages/patches/dico-libtool-deterministic.patch @@ -0,0 +1,15 @@ +Dico 2.2 uses an old Libtool (2.2.7a) that did not sort the output +of 'find', thereby leading to non-deterministic file name ordering +in the arguments passed to 'ar rcu' for libdico.a & co. + +--- dico-2.2/build-aux/ltmain.sh 1970-01-01 01:00:00.000000000 +0100 ++++ dico-2.2/build-aux/ltmain.sh 2015-11-25 09:39:30.826169050 +0100 +@@ -2926,7 +2926,7 @@ func_extract_archives () + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac +- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" diff --git a/gnu/packages/patches/eudev-rules-directory.patch b/gnu/packages/patches/eudev-rules-directory.patch index 9173e22f76..54fc01c6d5 100644 --- a/gnu/packages/patches/eudev-rules-directory.patch +++ b/gnu/packages/patches/eudev-rules-directory.patch @@ -4,9 +4,9 @@ The old udev 182 supported $UDEV_CONFIG_FILE, which in turn allowed the search path to be customized, but eudev no longer has this, hence this hack. ---- eudev-1.9/src/udev/udev-rules.c 2014-09-13 10:21:59.615980259 +0200 -+++ eudev-1.9/src/udev/udev-rules.c 2014-09-13 10:24:13.839976335 +0200 -@@ -46,15 +46,11 @@ +--- eudev-3.1.5/src/udev/udev-rules.c 2015-10-13 06:22:14.000000000 +0800 ++++ eudev-3.1.5/src/udev/udev-rules.c 2015-10-16 20:45:38.491934336 +0800 +@@ -47,15 +47,11 @@ }; }; @@ -14,23 +14,23 @@ this hack. +static const char* rules_dirs[] = { UDEV_CONF_DIR "/rules.d", UDEV_RULES_DIR, -- "/run/udev/rules.d", +- UDEV_ROOT_RUN "/udev/rules.d", UDEV_LIBEXEC_DIR "/rules.d", -#ifdef HAVE_SPLIT_USR - "/lib/udev/rules.d", - "/usr/lib/udev/rules.d", -#endif -+ NULL, /* placeholder for $EUDEV_RULES_DIRECTORY */ ++ NULL, /* placeholder for $EUDEV_RULES_DIRECTORY */ NULL}; struct udev_rules { -@@ -1637,6 +1633,9 @@ +@@ -1704,6 +1700,9 @@ udev_rules_check_timestamp(rules); -+ /* Allow the user to specify an additional rules directory. */ -+ rules_dirs[3] = getenv("EUDEV_RULES_DIRECTORY"); ++ /* Allow the user to specify an additional rules directory. */ ++ rules_dirs[3] = getenv("EUDEV_RULES_DIRECTORY"); + r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs); if (r < 0) { - log_error("failed to enumerate rules files: %s", strerror(-r)); + log_error_errno(r, "failed to enumerate rules files: %m"); diff --git a/gnu/packages/patches/evilwm-lost-focus-bug.patch b/gnu/packages/patches/evilwm-lost-focus-bug.patch new file mode 100644 index 0000000000..af24af8fe9 --- /dev/null +++ b/gnu/packages/patches/evilwm-lost-focus-bug.patch @@ -0,0 +1,18 @@ +evilwm may sometimes lose focus after closing a window. This means that +evilwm stops responding to keyboard shortcuts, and if no other window is open +which the mouse can be moved over to regain focus evilwm becomes unusable and +has to be restarted. + +Patch derived from discussion at +https://wiki.archlinux.org/index.php/Evilwm#Lost_focus_bug_fix + +--- evilwm-1.1.1/client.c ++++ evilwm-1.1.1/client.c +@@ -172,6 +172,7 @@ + * _NET_WM_STATE) */ + if (c->remove) { + LOG_DEBUG("setting WithdrawnState\n"); ++ XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); + set_wm_state(c, WithdrawnState); + ewmh_withdraw_client(c); + } else { diff --git a/gnu/packages/patches/glib-tests-desktop.patch b/gnu/packages/patches/glib-tests-desktop.patch index 61f48607f7..642234ebbc 100644 --- a/gnu/packages/patches/glib-tests-desktop.patch +++ b/gnu/packages/patches/glib-tests-desktop.patch @@ -56,11 +56,12 @@ database, the `update-desktop-database' program, which we don't provide. ----------------------------- The hunk below removes tests that depend on `gdbus-testserver.py', -because that script depends on python-gobject. +because that script depends on python-gobject. The second hunk +disables a test that expects /etc/machine-id in the build environment. ---- glib-2.39.1/gio/tests/Makefile.in 2014-01-20 00:18:16.000000000 +0100 -+++ glib-2.39.1/gio/tests/Makefile.in 2014-01-20 00:18:47.000000000 +0100 -@@ -171,20 +171,13 @@ check_PROGRAMS = $(am__EXEEXT_14) +--- glib-2.46.0/gio/tests/Makefile.in 2015-10-14 14:11:00.928809504 +0200 ++++ glib-2.46.0/gio/tests/Makefile.in 2015-10-14 14:12:13.157291092 +0200 +@@ -186,20 +186,13 @@ check_PROGRAMS = $(am__EXEEXT_16) @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-auth \ @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-bz627724 \ @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-close-pending \ @@ -79,7 +80,16 @@ because that script depends on python-gobject. @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen-old \ -@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-threading \ @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gmenumodel \ + @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gnotification \ @HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(NULL) +@@ -321,8 +314,7 @@ libresourceplugin_la_LINK = $(LIBTOOL) $ + am__EXEEXT_1 = + @OS_UNIX_TRUE@am__EXEEXT_2 = contenttype$(EXEEXT) file$(EXEEXT) \ + @OS_UNIX_TRUE@ gdbus-peer-object-manager$(EXEEXT) \ +-@OS_UNIX_TRUE@ gdbus-unix-addresses$(EXEEXT) \ + @OS_UNIX_TRUE@ live-g-file$(EXEEXT) socket-address$(EXEEXT) \ + @OS_UNIX_TRUE@ stream-rw_all$(EXEEXT) unix-fd$(EXEEXT) \ + @OS_UNIX_TRUE@ unix-streams$(EXEEXT) $(am__EXEEXT_1) \ The test below depends on the availability /etc/passwd to dbus-daemon. diff --git a/gnu/packages/patches/gsl-poly-test-fix-pt1.patch b/gnu/packages/patches/gsl-poly-test-fix-pt1.patch deleted file mode 100644 index 3d1ed4243c..0000000000 --- a/gnu/packages/patches/gsl-poly-test-fix-pt1.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 9cc12d0377dd634b1b97954d076b715f982853b7 Mon Sep 17 00:00:00 2001 -From: Patrick Alken -Date: Fri, 4 Apr 2014 13:36:16 -0600 -Subject: [PATCH] bug fix in sorting of complex numbers (bug #39055) - ---- - poly/test.c | 49 ++++++++++++++++++++++++++++++------------------- - 1 file changed, 30 insertions(+), 19 deletions(-) - -diff --git a/poly/test.c b/poly/test.c -index 9c147f6..d090802 100644 ---- a/poly/test.c -+++ b/poly/test.c -@@ -25,11 +25,21 @@ - #include - #include - -+/* sort by Re(z) then by Im(z) */ - static int - cmp_cplx(const double *a, const double *b) - { -- double t = (a[0] * a[0] + a[1] * a[1]) - (b[0] * b[0] + b[1] * b[1]); -- return t < 0.0 ? -1 : t > 0.0 ? 1 : 0; -+ double r = a[0] - b[0]; -+ -+ if (r == 0.0) -+ { -+ double t = a[1] - b[1]; -+ return t < 0.0 ? -1 : t > 0.0 ? 1 : 0; -+ } -+ else if (r < 0.0) -+ return -1; -+ else -+ return 1; - } - - int -@@ -534,25 +544,26 @@ main (void) - Problem reported by Munagala Ramanath (bug #39055) - */ - -- double a[16] = { 32, -48, -8, 28, -8, 16, -16, 12, -16, 6, 10, -17, 10, 2, -4, 1 }; -+ double a[16] = { 32, -48, -8, 28, -8, 16, -16, 12, -+ -16, 6, 10, -17, 10, 2, -4, 1 }; - double z[16*2]; - -- double expected[16*20] = { -- 1.0000000000000000, 0.00000000000000000, -- 1.0000000000000000, 0.00000000000000000, -- -1.0000000000000000, 0.00000000000000000, -- -0.65893856175240950, 0.83459757287426684, -- -0.65893856175240950, -0.83459757287426684, -- -0.070891117403341281, -1.1359249087587791, -- -0.070891117403341281, 1.1359249087587791, -- 1.1142366961812986, -0.48083981203389980, -- 1.1142366961812986, 0.48083981203389980, -- -1.3066982484920768, 0.00000000000000000, -- 0.57284747839410854, 1.1987808988289705, -- 0.57284747839410854, -1.1987808988289705, -- -1.6078107423472359, 0.00000000000000000, -- 2.0000000000000000, 0.00000000000000000, -- 2.0000000000000000, 0.00000000000000000 }; -+ double expected[16*2] = { -+ -1.6078107423472359, 0.00000000000000000, -+ -1.3066982484920768, 0.00000000000000000, -+ -1.0000000000000000, 0.00000000000000000, -+ -0.65893856175240950, -0.83459757287426684, -+ -0.65893856175240950, 0.83459757287426684, -+ -0.070891117403341281, -1.1359249087587791, -+ -0.070891117403341281, 1.1359249087587791, -+ 0.57284747839410854, -1.1987808988289705, -+ 0.57284747839410854, 1.1987808988289705, -+ 1.0000000000000000, 0.00000000000000000, -+ 1.0000000000000000, 0.00000000000000000, -+ 1.1142366961812986, -0.48083981203389980, -+ 1.1142366961812986, 0.48083981203389980, -+ 2.0000000000000000, 0.00000000000000000, -+ 2.0000000000000000, 0.00000000000000000 }; - - int i; - --- -2.4.3 - diff --git a/gnu/packages/patches/gsl-poly-test-fix-pt2.patch b/gnu/packages/patches/gsl-poly-test-fix-pt2.patch deleted file mode 100644 index 0e6fcf1a53..0000000000 --- a/gnu/packages/patches/gsl-poly-test-fix-pt2.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0466df8660a7b6ddf2e082a1ec38bc6ea25a3c5c Mon Sep 17 00:00:00 2001 -From: Patrick Alken -Date: Mon, 7 Apr 2014 10:59:58 -0600 -Subject: [PATCH] change error test for 15th degree polynomial (bug #39055) - ---- - poly/test.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/poly/test.c b/poly/test.c -index d090802..f6a7e3f 100644 ---- a/poly/test.c -+++ b/poly/test.c -@@ -579,8 +579,8 @@ main (void) - - for (i = 0; i<15; i++) - { -- gsl_test_abs (z[2*i], expected[2*i], 1e-7, "z%d.real, 15th-order polynomial", i); -- gsl_test_abs (z[2*i+1], expected[2*i+1], 1e-7, "z%d.imag, 15th-order polynomial", i); -+ gsl_test_rel (z[2*i], expected[2*i], 1e-7, "z%d.real, 15th-order polynomial", i); -+ gsl_test_rel (z[2*i+1], expected[2*i+1], 1e-7, "z%d.imag, 15th-order polynomial", i); - } - } - --- -2.4.3 - diff --git a/gnu/packages/patches/hwloc-gather-topology-lstopo.patch b/gnu/packages/patches/hwloc-gather-topology-lstopo.patch deleted file mode 100644 index 06f47aecaa..0000000000 --- a/gnu/packages/patches/hwloc-gather-topology-lstopo.patch +++ /dev/null @@ -1,13 +0,0 @@ -Derived from upstream commit 0a32f719c. - ---- hwloc-1.10.1/tests/linux/Makefile.in 2015-01-26 03:37:52.000000000 -0600 -+++ hwloc-1.10.1/tests/linux/Makefile.in 2015-06-15 11:21:49.824842511 -0500 -@@ -1633,7 +1633,7 @@ - - - install-exec-hook: -- $(SED) -e 's/HWLOC_top_builddir\/utils/bindir/' -e '/HWLOC_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-gather-topology > $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp $(DESTDIR)$(bindir)/hwloc-gather-topology -+ $(SED) -e 's/HWLOC_top_builddir\/utils\/lstopo/bindir/' -e '/HWLOC_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-gather-topology > $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp $(DESTDIR)$(bindir)/hwloc-gather-topology - chmod +x $(DESTDIR)$(bindir)/hwloc-gather-topology - - # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/gnu/packages/patches/jasper-CVE-2008-3522.patch b/gnu/packages/patches/jasper-CVE-2008-3522.patch new file mode 100644 index 0000000000..10cfec99a5 --- /dev/null +++ b/gnu/packages/patches/jasper-CVE-2008-3522.patch @@ -0,0 +1,14 @@ +Fix CVE-2008-3522 (buffer overflow in 'jas_stream_printf'). +Patch from . + +--- jasper-1.900.1/src/libjasper/base/jas_stream.c 2008-09-08 14:56:01.000000000 +0200 ++++ jasper-1.900.1/src/libjasper/base/jas_stream.c 2008-09-08 14:58:16.000000000 +0200 +@@ -553,7 +553,7 @@ int jas_stream_printf(jas_stream_t *stre + int ret; + + va_start(ap, fmt); +- ret = vsprintf(buf, fmt, ap); ++ ret = vsnprintf(buf, sizeof buf, fmt, ap); + jas_stream_puts(stream, buf); + va_end(ap); + return ret; diff --git a/gnu/packages/patches/libdrm-symbol-check.patch b/gnu/packages/patches/libdrm-symbol-check.patch new file mode 100644 index 0000000000..676024beb4 --- /dev/null +++ b/gnu/packages/patches/libdrm-symbol-check.patch @@ -0,0 +1,195 @@ +Augment the list of expected symbols to fix the symbol-check tests on +mips64el-linux and armhf-linux. + +--- libdrm-2.4.65/freedreno/freedreno-symbol-check.orig 2015-09-04 11:07:40.000000000 -0400 ++++ libdrm-2.4.65/freedreno/freedreno-symbol-check 2015-10-18 23:57:15.288416229 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.sources/LIBDRM_FREEDRENO_H_FILES + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_freedreno.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + fd_bo_cpu_fini + fd_bo_cpu_prep + fd_bo_del +--- libdrm-2.4.65/nouveau/nouveau-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/nouveau/nouveau-symbol-check 2015-10-18 23:55:26.078327118 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.sources/LIBDRM_NOUVEAU_H_FILES + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_nouveau.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + nouveau_bo_map + nouveau_bo_name_get + nouveau_bo_name_ref +--- libdrm-2.4.65/libkms/kms-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/libkms/kms-symbol-check 2015-10-18 23:46:10.683869471 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.sources/LIBKMS_H_FILES + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libkms.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + kms_bo_create + kms_bo_destroy + kms_bo_get_prop +--- libdrm-2.4.65/intel/intel-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/intel/intel-symbol-check 2015-10-18 23:55:53.309558508 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.sources/LIBDRM_INTEL_H_FILES + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_intel.so} | awk '{print $3}' | while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + drm_intel_bo_alloc + drm_intel_bo_alloc_for_render + drm_intel_bo_alloc_tiled +--- libdrm-2.4.65/amdgpu/amdgpu-symbol-check.orig 2015-08-17 10:08:11.000000000 -0400 ++++ libdrm-2.4.65/amdgpu/amdgpu-symbol-check 2015-10-18 23:56:10.606917723 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.am/libdrm_amdgpuinclude_HEADERS + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_amdgpu.so} | awk '{print $3}' | while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + amdgpu_bo_alloc + amdgpu_bo_cpu_map + amdgpu_bo_cpu_unmap +--- libdrm-2.4.65/exynos/exynos-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/exynos/exynos-symbol-check 2015-10-18 23:56:32.025486153 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.am/libdrm_exynos*_HEADERS + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_exynos.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + exynos_bo_create + exynos_bo_destroy + exynos_bo_from_name +--- libdrm-2.4.65/omap/omap-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/omap/omap-symbol-check 2015-10-18 23:56:44.834438626 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.am/libdrm_omap*HEADERS + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_omap.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + omap_bo_cpu_fini + omap_bo_cpu_prep + omap_bo_del +--- libdrm-2.4.65/tegra/tegra-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 ++++ libdrm-2.4.65/tegra/tegra-symbol-check 2015-10-18 23:57:00.756759698 -0400 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-# The following symbols (past the first five) are taken from the public headers. ++# The following symbols (past the first 12) are taken from the public headers. + # A list of the latter should be available Makefile.sources/LIBDRM_FREEDRENO_H_FILES + + FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '{print $3}'| while read func; do +@@ -10,6 +10,13 @@ + _end + _fini + _init ++_fbss ++_fdata ++_ftext ++__bss_start__ ++__bss_end__ ++_bss_end__ ++__end__ + drm_tegra_bo_get_flags + drm_tegra_bo_get_handle + drm_tegra_bo_get_tiling diff --git a/gnu/packages/patches/librsvg-tests.patch b/gnu/packages/patches/librsvg-tests.patch new file mode 100644 index 0000000000..dc5b94e185 --- /dev/null +++ b/gnu/packages/patches/librsvg-tests.patch @@ -0,0 +1,27 @@ +From e06fc71a57156123e4e50a39957100a651ab632b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= +Date: Sat, 17 Oct 2015 10:20:33 +0800 +Subject: [PATCH] tests/styles: Don't duplicate test names. + +--- + tests/styles.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/styles.c b/tests/styles.c +index d09b1f2..a938835 100644 +--- a/tests/styles.c ++++ b/tests/styles.c +@@ -97,8 +97,8 @@ static const FixtureData fixtures[] = + {"/styles/selectors/2 or more selectors (stroke)", "592207", "styles/bug592207.svg", "#target", "stroke", .expected.color = 0xff0000ff}, + {"/styles/svg-element-style", "615701", "styles/svg-class.svg", "#svg", "fill", .expected.color = 0xff0000ff}, + {"/styles/presentation attribute in svg element", "620693", "styles/bug620693.svg", "#svg", "stroke", .expected.color = 0xffff0000}, +- {"/styles/!important", "379629", "styles/bug379629.svg", "#base_shadow", "stroke", .expected.color = 0xffffc0cb /* pink */}, +- {"/styles/!important", "379629", "styles/bug379629.svg", "#base_shadow", "stroke-width", .expected.length = {POINTS_LENGTH(5.), 'i'}}, ++ {"/styles/!important/1", "379629", "styles/bug379629.svg", "#base_shadow", "stroke", .expected.color = 0xffffc0cb /* pink */}, ++ {"/styles/!important/2", "379629", "styles/bug379629.svg", "#base_shadow", "stroke-width", .expected.length = {POINTS_LENGTH(5.), 'i'}}, + {"/styles/!important/class", "614606", "styles/bug614606.svg", "#path6306", "fill", .expected.color = 0xffff0000 /* red */ }, + {"/styles/!important/element", "614606", "styles/bug614606.svg", "#path6308", "fill", .expected.color = 0xff000000}, + {"/styles/!important/#id prior than class", NULL, "styles/important.svg", "#red", "fill", .expected.color = 0xffff0000 }, +-- +2.5.0 + diff --git a/gnu/packages/patches/libsndfile-CVE-2014-9496.patch b/gnu/packages/patches/libsndfile-CVE-2014-9496.patch new file mode 100644 index 0000000000..87d42955fb --- /dev/null +++ b/gnu/packages/patches/libsndfile-CVE-2014-9496.patch @@ -0,0 +1,55 @@ +Copied from Fedora. + +http://pkgs.fedoraproject.org/cgit/libsndfile.git/plain/libsndfile-1.0.25-cve2014_9496.patch + +diff -up libsndfile-1.0.25/src/sd2.c.cve2014_9496 libsndfile-1.0.25/src/sd2.c +--- libsndfile-1.0.25/src/sd2.c.cve2014_9496 2011-01-19 11:10:36.000000000 +0100 ++++ libsndfile-1.0.25/src/sd2.c 2015-01-13 17:00:35.920285526 +0100 +@@ -395,6 +395,21 @@ read_marker (const unsigned char * data, + return 0x666 ; + } /* read_marker */ + ++static inline int ++read_rsrc_marker (const SD2_RSRC *prsrc, int offset) ++{ const unsigned char * data = prsrc->rsrc_data ; ++ ++ if (offset < 0 || offset + 3 >= prsrc->rsrc_len) ++ return 0 ; ++ ++ if (CPU_IS_BIG_ENDIAN) ++ return (((uint32_t) data [offset]) << 24) + (data [offset + 1] << 16) + (data [offset + 2] << 8) + data [offset + 3] ; ++ if (CPU_IS_LITTLE_ENDIAN) ++ return data [offset] + (data [offset + 1] << 8) + (data [offset + 2] << 16) + (((uint32_t) data [offset + 3]) << 24) ; ++ ++ return 0 ; ++} /* read_rsrc_marker */ ++ + static void + read_str (const unsigned char * data, int offset, char * buffer, int buffer_len) + { int k ; +@@ -496,6 +511,11 @@ sd2_parse_rsrc_fork (SF_PRIVATE *psf) + + rsrc.type_offset = rsrc.map_offset + 30 ; + ++ if (rsrc.map_offset + 28 > rsrc.rsrc_len) ++ { psf_log_printf (psf, "Bad map offset.\n") ; ++ goto parse_rsrc_fork_cleanup ; ++ } ; ++ + rsrc.type_count = read_short (rsrc.rsrc_data, rsrc.map_offset + 28) + 1 ; + if (rsrc.type_count < 1) + { psf_log_printf (psf, "Bad type count.\n") ; +@@ -512,7 +532,12 @@ sd2_parse_rsrc_fork (SF_PRIVATE *psf) + + rsrc.str_index = -1 ; + for (k = 0 ; k < rsrc.type_count ; k ++) +- { marker = read_marker (rsrc.rsrc_data, rsrc.type_offset + k * 8) ; ++ { if (rsrc.type_offset + k * 8 > rsrc.rsrc_len) ++ { psf_log_printf (psf, "Bad rsrc marker.\n") ; ++ goto parse_rsrc_fork_cleanup ; ++ } ; ++ ++ marker = read_rsrc_marker (&rsrc, rsrc.type_offset + k * 8) ; + + if (marker == STR_MARKER) + { rsrc.str_index = k ; diff --git a/gnu/packages/patches/libsndfile-CVE-2015-7805.patch b/gnu/packages/patches/libsndfile-CVE-2015-7805.patch new file mode 100644 index 0000000000..d617f81e5c --- /dev/null +++ b/gnu/packages/patches/libsndfile-CVE-2015-7805.patch @@ -0,0 +1,95 @@ +Slightly modified to apply cleanly to libsndfile-1.0.25. + +From d2a87385c1ca1d72918e9a2875d24f202a5093e8 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo +Date: Sat, 7 Feb 2015 15:45:10 +1100 +Subject: [PATCH] src/common.c : Fix a header parsing bug. + +When the file header is bigger that SF_HEADER_LEN, the code would seek +instead of reading causing file parse errors. + +The current header parsing and writing code *badly* needs a re-write. +--- + src/common.c | 27 +++++++++++---------------- + 1 file changed, 11 insertions(+), 16 deletions(-) + +diff --git a/src/common.c b/src/common.c +index dd4edb7..c6b88cc 100644 +--- a/src/common.c ++++ b/src/common.c +@@ -1,5 +1,5 @@ + /* +-** Copyright (C) 1999-2011 Erik de Castro Lopo ++** Copyright (C) 1999-2015 Erik de Castro Lopo + ** + ** This program is free software; you can redistribute it and/or modify + ** it under the terms of the GNU Lesser General Public License as published by +@@ -800,21 +800,16 @@ header_read (SF_PRIVATE *psf, void *ptr, int bytes) + { int count = 0 ; + + if (psf->headindex >= SIGNED_SIZEOF (psf->header)) +- { memset (ptr, 0, SIGNED_SIZEOF (psf->header) - psf->headindex) ; +- +- /* This is the best that we can do. */ +- psf_fseek (psf, bytes, SEEK_CUR) ; +- return bytes ; +- } ; ++ return psf_fread (ptr, 1, bytes, psf) ; + + if (psf->headindex + bytes > SIGNED_SIZEOF (psf->header)) + { int most ; + + most = SIGNED_SIZEOF (psf->header) - psf->headindex ; + psf_fread (psf->header + psf->headend, 1, most, psf) ; +- memset ((char *) ptr + most, 0, bytes - most) ; +- +- psf_fseek (psf, bytes - most, SEEK_CUR) ; ++ memcpy (ptr, psf->header + psf->headend, most) ; ++ psf->headend = psf->headindex += most ; ++ psf_fread ((char *) ptr + most, bytes - most, 1, psf) ; + return bytes ; + } ; + +@@ -822,7 +817,7 @@ header_read (SF_PRIVATE *psf, void *ptr, int bytes) + { count = psf_fread (psf->header + psf->headend, 1, bytes - (psf->headend - psf->headindex), psf) ; + if (count != bytes - (int) (psf->headend - psf->headindex)) + { psf_log_printf (psf, "Error : psf_fread returned short count.\n") ; +- return 0 ; ++ return count ; + } ; + psf->headend += count ; + } ; +@@ -836,7 +831,6 @@ header_read (SF_PRIVATE *psf, void *ptr, int bytes) + static void + header_seek (SF_PRIVATE *psf, sf_count_t position, int whence) + { +- + switch (whence) + { case SEEK_SET : + if (position > SIGNED_SIZEOF (psf->header)) +@@ -885,8 +879,7 @@ header_seek (SF_PRIVATE *psf, sf_count_t position, int whence) + + static int + header_gets (SF_PRIVATE *psf, char *ptr, int bufsize) +-{ +- int k ; ++{ int k ; + + for (k = 0 ; k < bufsize - 1 ; k++) + { if (psf->headindex < psf->headend) +@@ -1073,8 +1066,10 @@ psf_binheader_readf (SF_PRIVATE *psf, char const *format, ...) + case 'j' : + /* Get the seek position first. */ + count = va_arg (argptr, size_t) ; +- header_seek (psf, count, SEEK_CUR) ; +- byte_count += count ; ++ if (count) ++ { header_seek (psf, count, SEEK_CUR) ; ++ byte_count += count ; ++ } ; + break ; + + default : +-- +2.6.3 + diff --git a/gnu/packages/patches/libxslt-CVE-2015-7995.patch b/gnu/packages/patches/libxslt-CVE-2015-7995.patch new file mode 100644 index 0000000000..f291d5b387 --- /dev/null +++ b/gnu/packages/patches/libxslt-CVE-2015-7995.patch @@ -0,0 +1,29 @@ +From 7ca19df892ca22d9314e95d59ce2abdeff46b617 Mon Sep 17 00:00:00 2001 +From: Daniel Veillard +Date: Thu, 29 Oct 2015 19:33:23 +0800 +Subject: [PATCH] Fix for type confusion in preprocessing attributes + +CVE-2015-7995 http://www.openwall.com/lists/oss-security/2015/10/27/10 +We need to check that the parent node is an element before dereferencing +its namespace +--- + libxslt/preproc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/libxslt/preproc.c b/libxslt/preproc.c +index 0eb80a0..7f69325 100644 +--- a/libxslt/preproc.c ++++ b/libxslt/preproc.c +@@ -2249,7 +2249,8 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr inst) { + } else if (IS_XSLT_NAME(inst, "attribute")) { + xmlNodePtr parent = inst->parent; + +- if ((parent == NULL) || (parent->ns == NULL) || ++ if ((parent == NULL) || ++ (parent->type != XML_ELEMENT_NODE) || (parent->ns == NULL) || + ((parent->ns != inst->ns) && + (!xmlStrEqual(parent->ns->href, inst->ns->href))) || + (!xmlStrEqual(parent->name, BAD_CAST "attribute-set"))) { +-- +2.6.3 + diff --git a/gnu/packages/patches/lua52-liblua-so.patch b/gnu/packages/patches/lua52-liblua-so.patch new file mode 100644 index 0000000000..2e6b39ae79 --- /dev/null +++ b/gnu/packages/patches/lua52-liblua-so.patch @@ -0,0 +1,78 @@ +From 7a1b4e0829124976878ca2765a8e546667a92ceb Mon Sep 17 00:00:00 2001 +From: Leo Famulari +Date: Fri, 30 Oct 2015 19:11:31 -0400 +Subject: [PATCH] apply existing non-executable library patch and install + libraries as executable + +--- + Makefile | 6 +++--- + src/Makefile | 8 +++++++- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 1aea8e6..bfcfed9 100644 +--- a/Makefile ++++ b/Makefile +@@ -44,7 +44,7 @@ INTERPRETER= lua + COMPILER= luac + TO_BIN= $(INTERPRETER) $(COMPILER) + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp +-TO_LIB= liblua.a ++TO_LIB= liblua.a liblua.so liblua.so.${V} + TO_PC= lua-$(V).pc + TO_MAN= lua.1 luac.1 + +@@ -56,7 +56,7 @@ R= $V.3 + all: $(PLAT) + + $(PLATS): +- cd src && $(MAKE) $@ ++ cd src && $(MAKE) $@ V=$(V) R=$(R) + + clean: + cd src && $(MAKE) $@ +@@ -69,7 +69,7 @@ install: dummy $(TO_PC) + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_PC) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) +- cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) ++ cd src && $(INSTALL_EXEC) $(TO_LIB) $(INSTALL_LIB) + cd src && $(INSTALL_DATA) ../$(TO_PC) $(INSTALL_PC) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) + +diff --git a/src/Makefile b/src/Makefile +index 7b4b2b7..c86476e 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -29,6 +29,7 @@ MYOBJS= + PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \ + lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \ + ltm.o lundump.o lvm.o lzio.o +@@ -43,7 +44,7 @@ LUAC_T= luac + LUAC_O= luac.o + + ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) +-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO) + ALL_A= $(LUA_A) + + # Targets start here. +@@ -55,6 +56,11 @@ o: $(ALL_O) + + a: $(ALL_A) + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS) ++ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V) ++ ln -sf $(LUA_SO).$(R) $(LUA_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ +-- +2.6.1 + diff --git a/gnu/packages/patches/matplotlib-setupext-tk.patch b/gnu/packages/patches/matplotlib-setupext-tk.patch new file mode 100644 index 0000000000..37c3d686e0 --- /dev/null +++ b/gnu/packages/patches/matplotlib-setupext-tk.patch @@ -0,0 +1,34 @@ +Use 'pkg-config' instead of heuristics to find 'tk' flags. + +--- matplotlib-1.4.3/setupext.py.orig 2015-12-01 14:21:19.554417453 +0100 ++++ matplotlib-1.4.3/setupext.py 2015-12-02 10:39:47.282363530 +0100 +@@ -1457,7 +1457,7 @@ + p = subprocess.Popen( + '. %s ; eval echo ${%s}' % (file, varname), + shell=True, +- executable="/bin/sh", ++ executable="sh", + stdout=subprocess.PIPE) + result = p.communicate()[0] + return result.decode('ascii') +@@ -1601,8 +1601,19 @@ + # of distros. + + # Query Tcl/Tk system for library paths and version string ++ def getoutput(s): ++ ret = os.popen(s).read().strip() ++ return ret + try: +- tcl_lib_dir, tk_lib_dir, tk_ver = self.query_tcltk() ++ pkg_config_libs = getoutput('pkg-config --libs-only-L tk').split() ++ # drop '-L' part of strings ++ pkg_config_libs = [s[2:] for s in pkg_config_libs] ++ pkg_config_ver = getoutput('pkg-config --modversion tk') ++ tk_ver = re.match(r"(\d+.\d+)[\d.]*", pkg_config_ver).group(1) ++ tcl_lib_dir = next(s for s in pkg_config_libs ++ if re.match(r".*-tcl-.*", s)) + '/tcl' + tk_ver ++ tk_lib_dir = next(s for s in pkg_config_libs ++ if re.match(r".*-tk-.*", s)) + '/tk' + tk_ver + except: + tk_ver = '' + result = self.hardcoded_tcl_config() diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt1.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt1.patch new file mode 100644 index 0000000000..0f5603e228 --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt1.patch @@ -0,0 +1,569 @@ +Copied from Debian. + +From b813d5811432faed844a2dfd3daecde914978f2c Mon Sep 17 00:00:00 2001 +From: Nicolas Williams +Date: Mon, 14 Sep 2015 12:27:52 -0400 +Subject: Fix SPNEGO context aliasing bugs [CVE-2015-2695] + +The SPNEGO mechanism currently replaces its context handle with the +mechanism context handle upon establishment, under the assumption that +most GSS functions are only called after context establishment. This +assumption is incorrect, and can lead to aliasing violations for some +programs. Maintain the SPNEGO context structure after context +establishment and refer to it in all GSS methods. Add initiate and +opened flags to the SPNEGO context structure for use in +gss_inquire_context() prior to context establishment. + +CVE-2015-2695: + +In MIT krb5 1.5 and later, applications which call +gss_inquire_context() on a partially-established SPNEGO context can +cause the GSS-API library to read from a pointer using the wrong type, +generally causing a process crash. This bug may go unnoticed, because +the most common SPNEGO authentication scenario establishes the context +after just one call to gss_accept_sec_context(). Java server +applications using the native JGSS provider are vulnerable to this +bug. A carefully crafted SPNEGO packet might allow the +gss_inquire_context() call to succeed with attacker-determined +results, but applications should not make access control decisions +based on gss_inquire_context() results prior to context establishment. + + CVSSv2 Vector: AV:N/AC:M/Au:N/C:N/I:N/A:C/E:POC/RL:OF/RC:C + +[ghudson@mit.edu: several bugfixes, style changes, and edge-case +behavior changes; commit message and CVE description] + +ticket: 8244 +target_version: 1.14 +tags: pullup + +(cherry picked from commit b51b33f2bc5d1497ddf5bd107f791c101695000d) +Patch-Category: upstream +--- + src/lib/gssapi/spnego/gssapiP_spnego.h | 2 + + src/lib/gssapi/spnego/spnego_mech.c | 254 ++++++++++++++++++++++++--------- + 2 files changed, 192 insertions(+), 64 deletions(-) + +diff --git a/src/lib/gssapi/spnego/gssapiP_spnego.h b/src/lib/gssapi/spnego/gssapiP_spnego.h +index bc23f56..8e05736 100644 +--- a/src/lib/gssapi/spnego/gssapiP_spnego.h ++++ b/src/lib/gssapi/spnego/gssapiP_spnego.h +@@ -102,6 +102,8 @@ typedef struct { + int firstpass; + int mech_complete; + int nego_done; ++ int initiate; ++ int opened; + OM_uint32 ctx_flags; + gss_name_t internal_name; + gss_OID actual_mech; +diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c +index 6e39c37..a1072b0 100644 +--- a/src/lib/gssapi/spnego/spnego_mech.c ++++ b/src/lib/gssapi/spnego/spnego_mech.c +@@ -104,7 +104,7 @@ static OM_uint32 get_negotiable_mechs(OM_uint32 *, spnego_gss_cred_id_t, + gss_cred_usage_t, gss_OID_set *); + static void release_spnego_ctx(spnego_gss_ctx_id_t *); + static void check_spnego_options(spnego_gss_ctx_id_t); +-static spnego_gss_ctx_id_t create_spnego_ctx(void); ++static spnego_gss_ctx_id_t create_spnego_ctx(int); + static int put_mech_set(gss_OID_set mechSet, gss_buffer_t buf); + static int put_input_token(unsigned char **, gss_buffer_t, unsigned int); + static int put_mech_oid(unsigned char **, gss_OID_const, unsigned int); +@@ -442,7 +442,7 @@ check_spnego_options(spnego_gss_ctx_id_t spnego_ctx) + } + + static spnego_gss_ctx_id_t +-create_spnego_ctx(void) ++create_spnego_ctx(int initiate) + { + spnego_gss_ctx_id_t spnego_ctx = NULL; + spnego_ctx = (spnego_gss_ctx_id_t) +@@ -465,6 +465,8 @@ create_spnego_ctx(void) + spnego_ctx->mic_rcvd = 0; + spnego_ctx->mech_complete = 0; + spnego_ctx->nego_done = 0; ++ spnego_ctx->opened = 0; ++ spnego_ctx->initiate = initiate; + spnego_ctx->internal_name = GSS_C_NO_NAME; + spnego_ctx->actual_mech = GSS_C_NO_OID; + +@@ -630,7 +632,7 @@ init_ctx_new(OM_uint32 *minor_status, + OM_uint32 ret; + spnego_gss_ctx_id_t sc = NULL; + +- sc = create_spnego_ctx(); ++ sc = create_spnego_ctx(1); + if (sc == NULL) + return GSS_S_FAILURE; + +@@ -647,10 +649,7 @@ init_ctx_new(OM_uint32 *minor_status, + ret = GSS_S_FAILURE; + goto cleanup; + } +- /* +- * The actual context is not yet determined, set the output +- * context handle to refer to the spnego context itself. +- */ ++ + sc->ctx_handle = GSS_C_NO_CONTEXT; + *ctx = (gss_ctx_id_t)sc; + sc = NULL; +@@ -1091,16 +1090,11 @@ cleanup: + } + gss_release_buffer(&tmpmin, &mechtok_out); + if (ret == GSS_S_COMPLETE) { +- /* +- * Now, switch the output context to refer to the +- * negotiated mechanism's context. +- */ +- *context_handle = (gss_ctx_id_t)spnego_ctx->ctx_handle; ++ spnego_ctx->opened = 1; + if (actual_mech != NULL) + *actual_mech = spnego_ctx->actual_mech; + if (ret_flags != NULL) + *ret_flags = spnego_ctx->ctx_flags; +- release_spnego_ctx(&spnego_ctx); + } else if (ret != GSS_S_CONTINUE_NEEDED) { + if (spnego_ctx != NULL) { + gss_delete_sec_context(&tmpmin, +@@ -1344,7 +1338,7 @@ acc_ctx_hints(OM_uint32 *minor_status, + if (ret != GSS_S_COMPLETE) + goto cleanup; + +- sc = create_spnego_ctx(); ++ sc = create_spnego_ctx(0); + if (sc == NULL) { + ret = GSS_S_FAILURE; + goto cleanup; +@@ -1426,7 +1420,7 @@ acc_ctx_new(OM_uint32 *minor_status, + gss_release_buffer(&tmpmin, &sc->DER_mechTypes); + assert(mech_wanted != GSS_C_NO_OID); + } else +- sc = create_spnego_ctx(); ++ sc = create_spnego_ctx(0); + if (sc == NULL) { + ret = GSS_S_FAILURE; + *return_token = NO_TOKEN_SEND; +@@ -1809,13 +1803,12 @@ cleanup: + ret = GSS_S_FAILURE; + } + if (ret == GSS_S_COMPLETE) { +- *context_handle = (gss_ctx_id_t)sc->ctx_handle; ++ sc->opened = 1; + if (sc->internal_name != GSS_C_NO_NAME && + src_name != NULL) { + *src_name = sc->internal_name; + sc->internal_name = GSS_C_NO_NAME; + } +- release_spnego_ctx(&sc); + } else if (ret != GSS_S_CONTINUE_NEEDED) { + if (sc != NULL) { + gss_delete_sec_context(&tmpmin, &sc->ctx_handle, +@@ -2128,8 +2121,13 @@ spnego_gss_unwrap( + gss_qop_t *qop_state) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_unwrap(minor_status, +- context_handle, ++ sc->ctx_handle, + input_message_buffer, + output_message_buffer, + conf_state, +@@ -2149,8 +2147,13 @@ spnego_gss_wrap( + gss_buffer_t output_message_buffer) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_wrap(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_req_flag, + qop_req, + input_message_buffer, +@@ -2167,8 +2170,14 @@ spnego_gss_process_context_token( + const gss_buffer_t token_buffer) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ /* SPNEGO doesn't have its own context tokens. */ ++ if (!sc->opened) ++ return (GSS_S_DEFECTIVE_TOKEN); ++ + ret = gss_process_context_token(minor_status, +- context_handle, ++ sc->ctx_handle, + token_buffer); + + return (ret); +@@ -2192,19 +2201,9 @@ spnego_gss_delete_sec_context( + if (*ctx == NULL) + return (GSS_S_COMPLETE); + +- /* +- * If this is still an SPNEGO mech, release it locally. +- */ +- if ((*ctx)->magic_num == SPNEGO_MAGIC_ID) { +- (void) gss_delete_sec_context(minor_status, +- &(*ctx)->ctx_handle, +- output_token); +- (void) release_spnego_ctx(ctx); +- } else { +- ret = gss_delete_sec_context(minor_status, +- context_handle, +- output_token); +- } ++ (void) gss_delete_sec_context(minor_status, &(*ctx)->ctx_handle, ++ output_token); ++ (void) release_spnego_ctx(ctx); + + return (ret); + } +@@ -2216,8 +2215,13 @@ spnego_gss_context_time( + OM_uint32 *time_rec) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_context_time(minor_status, +- context_handle, ++ sc->ctx_handle, + time_rec); + return (ret); + } +@@ -2229,9 +2233,20 @@ spnego_gss_export_sec_context( + gss_buffer_t interprocess_token) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = *(spnego_gss_ctx_id_t *)context_handle; ++ ++ /* We don't currently support exporting partially established ++ * contexts. */ ++ if (!sc->opened) ++ return GSS_S_UNAVAILABLE; ++ + ret = gss_export_sec_context(minor_status, +- context_handle, ++ &sc->ctx_handle, + interprocess_token); ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) { ++ release_spnego_ctx(&sc); ++ *context_handle = GSS_C_NO_CONTEXT; ++ } + return (ret); + } + +@@ -2241,11 +2256,12 @@ spnego_gss_import_sec_context( + const gss_buffer_t interprocess_token, + gss_ctx_id_t *context_handle) + { +- OM_uint32 ret; +- ret = gss_import_sec_context(minor_status, +- interprocess_token, +- context_handle); +- return (ret); ++ /* ++ * Until we implement partial context exports, there are no SPNEGO ++ * exported context tokens, only tokens for underlying mechs. So just ++ * return an error for now. ++ */ ++ return GSS_S_UNAVAILABLE; + } + #endif /* LEAN_CLIENT */ + +@@ -2262,16 +2278,48 @@ spnego_gss_inquire_context( + int *opened) + { + OM_uint32 ret = GSS_S_COMPLETE; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (src_name != NULL) ++ *src_name = GSS_C_NO_NAME; ++ if (targ_name != NULL) ++ *targ_name = GSS_C_NO_NAME; ++ if (lifetime_rec != NULL) ++ *lifetime_rec = 0; ++ if (mech_type != NULL) ++ *mech_type = (gss_OID)gss_mech_spnego; ++ if (ctx_flags != NULL) ++ *ctx_flags = 0; ++ if (locally_initiated != NULL) ++ *locally_initiated = sc->initiate; ++ if (opened != NULL) ++ *opened = sc->opened; ++ ++ if (sc->ctx_handle != GSS_C_NO_CONTEXT) { ++ ret = gss_inquire_context(minor_status, sc->ctx_handle, ++ src_name, targ_name, lifetime_rec, ++ mech_type, ctx_flags, NULL, NULL); ++ } + +- ret = gss_inquire_context(minor_status, +- context_handle, +- src_name, +- targ_name, +- lifetime_rec, +- mech_type, +- ctx_flags, +- locally_initiated, +- opened); ++ if (!sc->opened) { ++ /* ++ * We are still doing SPNEGO negotiation, so report SPNEGO as ++ * the OID. After negotiation is complete we will report the ++ * underlying mechanism OID. ++ */ ++ if (mech_type != NULL) ++ *mech_type = (gss_OID)gss_mech_spnego; ++ ++ /* ++ * Remove flags we don't support with partially-established ++ * contexts. (Change this to keep GSS_C_TRANS_FLAG if we add ++ * support for exporting partial SPNEGO contexts.) ++ */ ++ if (ctx_flags != NULL) { ++ *ctx_flags &= ~GSS_C_PROT_READY_FLAG; ++ *ctx_flags &= ~GSS_C_TRANS_FLAG; ++ } ++ } + + return (ret); + } +@@ -2286,8 +2334,13 @@ spnego_gss_wrap_size_limit( + OM_uint32 *max_input_size) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_wrap_size_limit(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_req_flag, + qop_req, + req_output_size, +@@ -2304,8 +2357,13 @@ spnego_gss_get_mic( + gss_buffer_t message_token) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_get_mic(minor_status, +- context_handle, ++ sc->ctx_handle, + qop_req, + message_buffer, + message_token); +@@ -2321,8 +2379,13 @@ spnego_gss_verify_mic( + gss_qop_t *qop_state) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_verify_mic(minor_status, +- context_handle, ++ sc->ctx_handle, + msg_buffer, + token_buffer, + qop_state); +@@ -2337,8 +2400,14 @@ spnego_gss_inquire_sec_context_by_oid( + gss_buffer_set_t *data_set) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ /* There are no SPNEGO-specific OIDs for this function. */ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_UNAVAILABLE); ++ + ret = gss_inquire_sec_context_by_oid(minor_status, +- context_handle, ++ sc->ctx_handle, + desired_object, + data_set); + return (ret); +@@ -2407,8 +2476,15 @@ spnego_gss_set_sec_context_option( + const gss_buffer_t value) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)*context_handle; ++ ++ /* There are no SPNEGO-specific OIDs for this function, and we cannot ++ * construct an empty SPNEGO context with it. */ ++ if (sc == NULL || sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_UNAVAILABLE); ++ + ret = gss_set_sec_context_option(minor_status, +- context_handle, ++ &sc->ctx_handle, + desired_object, + value); + return (ret); +@@ -2425,8 +2501,13 @@ spnego_gss_wrap_aead(OM_uint32 *minor_status, + gss_buffer_t output_message_buffer) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_wrap_aead(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_req_flag, + qop_req, + input_assoc_buffer, +@@ -2447,8 +2528,13 @@ spnego_gss_unwrap_aead(OM_uint32 *minor_status, + gss_qop_t *qop_state) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_unwrap_aead(minor_status, +- context_handle, ++ sc->ctx_handle, + input_message_buffer, + input_assoc_buffer, + output_payload_buffer, +@@ -2467,8 +2553,13 @@ spnego_gss_wrap_iov(OM_uint32 *minor_status, + int iov_count) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_wrap_iov(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_req_flag, + qop_req, + conf_state, +@@ -2486,8 +2577,13 @@ spnego_gss_unwrap_iov(OM_uint32 *minor_status, + int iov_count) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_unwrap_iov(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_state, + qop_state, + iov, +@@ -2505,8 +2601,13 @@ spnego_gss_wrap_iov_length(OM_uint32 *minor_status, + int iov_count) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_wrap_iov_length(minor_status, +- context_handle, ++ sc->ctx_handle, + conf_req_flag, + qop_req, + conf_state, +@@ -2523,8 +2624,13 @@ spnego_gss_complete_auth_token( + gss_buffer_t input_message_buffer) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_UNAVAILABLE); ++ + ret = gss_complete_auth_token(minor_status, +- context_handle, ++ sc->ctx_handle, + input_message_buffer); + return (ret); + } +@@ -2776,8 +2882,13 @@ spnego_gss_pseudo_random(OM_uint32 *minor_status, + gss_buffer_t prf_out) + { + OM_uint32 ret; ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ + ret = gss_pseudo_random(minor_status, +- context, ++ sc->ctx_handle, + prf_key, + prf_in, + desired_output_len, +@@ -2918,7 +3029,12 @@ spnego_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, + gss_qop_t qop_req, gss_iov_buffer_desc *iov, + int iov_count) + { +- return gss_get_mic_iov(minor_status, context_handle, qop_req, iov, ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ ++ return gss_get_mic_iov(minor_status, sc->ctx_handle, qop_req, iov, + iov_count); + } + +@@ -2927,7 +3043,12 @@ spnego_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, + gss_qop_t *qop_state, gss_iov_buffer_desc *iov, + int iov_count) + { +- return gss_verify_mic_iov(minor_status, context_handle, qop_state, iov, ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ ++ return gss_verify_mic_iov(minor_status, sc->ctx_handle, qop_state, iov, + iov_count); + } + +@@ -2936,7 +3057,12 @@ spnego_gss_get_mic_iov_length(OM_uint32 *minor_status, + gss_ctx_id_t context_handle, gss_qop_t qop_req, + gss_iov_buffer_desc *iov, int iov_count) + { +- return gss_get_mic_iov_length(minor_status, context_handle, qop_req, iov, ++ spnego_gss_ctx_id_t sc = (spnego_gss_ctx_id_t)context_handle; ++ ++ if (sc->ctx_handle == GSS_C_NO_CONTEXT) ++ return (GSS_S_NO_CONTEXT); ++ ++ return gss_get_mic_iov_length(minor_status, sc->ctx_handle, qop_req, iov, + iov_count); + } + diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt2.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt2.patch new file mode 100644 index 0000000000..aa9fcfa0dd --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2695-pt2.patch @@ -0,0 +1,65 @@ +Copied from Debian. + +From 18c512ebdcc5cacc777e9dbcc6817f83c301ad93 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Wed, 4 Nov 2015 21:29:10 -0500 +Subject: Fix SPNEGO context import + +The patches for CVE-2015-2695 did not implement a SPNEGO +gss_import_sec_context() function, under the erroneous belief than an +exported SPNEGO context would be tagged with the underlying context +mechanism. Implement it now to allow SPNEGO contexts to be +successfully exported and imported after establishment. + +ticket: 8273 +(cherry picked from commit fbb565f913c52eba9bea82f1694aba7a8c90e93d) + +Patch-Category: upstream +--- + src/lib/gssapi/spnego/spnego_mech.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c +index a1072b0..02284a1 100644 +--- a/src/lib/gssapi/spnego/spnego_mech.c ++++ b/src/lib/gssapi/spnego/spnego_mech.c +@@ -2256,12 +2256,33 @@ spnego_gss_import_sec_context( + const gss_buffer_t interprocess_token, + gss_ctx_id_t *context_handle) + { +- /* +- * Until we implement partial context exports, there are no SPNEGO +- * exported context tokens, only tokens for underlying mechs. So just +- * return an error for now. +- */ +- return GSS_S_UNAVAILABLE; ++ OM_uint32 ret, tmpmin; ++ gss_ctx_id_t mctx; ++ spnego_gss_ctx_id_t sc; ++ int initiate, opened; ++ ++ ret = gss_import_sec_context(minor_status, interprocess_token, &mctx); ++ if (ret != GSS_S_COMPLETE) ++ return ret; ++ ++ ret = gss_inquire_context(&tmpmin, mctx, NULL, NULL, NULL, NULL, NULL, ++ &initiate, &opened); ++ if (ret != GSS_S_COMPLETE || !opened) { ++ /* We don't currently support importing partially established ++ * contexts. */ ++ (void) gss_delete_sec_context(&tmpmin, &mctx, GSS_C_NO_BUFFER); ++ return GSS_S_FAILURE; ++ } ++ ++ sc = create_spnego_ctx(initiate); ++ if (sc == NULL) { ++ (void) gss_delete_sec_context(&tmpmin, &mctx, GSS_C_NO_BUFFER); ++ return GSS_S_FAILURE; ++ } ++ sc->ctx_handle = mctx; ++ sc->opened = 1; ++ *context_handle = (gss_ctx_id_t)sc; ++ return GSS_S_COMPLETE; + } + #endif /* LEAN_CLIENT */ + diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2696.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2696.patch new file mode 100644 index 0000000000..7b4b1d71ab --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2696.patch @@ -0,0 +1,736 @@ +Copied from Debian. + +From ebea85358bc72ec20c53130d83acb93f95853b76 Mon Sep 17 00:00:00 2001 +From: Nicolas Williams +Date: Mon, 14 Sep 2015 12:28:36 -0400 +Subject: Fix IAKERB context aliasing bugs [CVE-2015-2696] + +The IAKERB mechanism currently replaces its context handle with the +krb5 mechanism handle upon establishment, under the assumption that +most GSS functions are only called after context establishment. This +assumption is incorrect, and can lead to aliasing violations for some +programs. Maintain the IAKERB context structure after context +establishment and add new IAKERB entry points to refer to it with that +type. Add initiate and established flags to the IAKERB context +structure for use in gss_inquire_context() prior to context +establishment. + +CVE-2015-2696: + +In MIT krb5 1.9 and later, applications which call +gss_inquire_context() on a partially-established IAKERB context can +cause the GSS-API library to read from a pointer using the wrong type, +generally causing a process crash. Java server applications using the +native JGSS provider are vulnerable to this bug. A carefully crafted +IAKERB packet might allow the gss_inquire_context() call to succeed +with attacker-determined results, but applications should not make +access control decisions based on gss_inquire_context() results prior +to context establishment. + + CVSSv2 Vector: AV:N/AC:M/Au:N/C:N/I:N/A:C/E:POC/RL:OF/RC:C + +[ghudson@mit.edu: several bugfixes, style changes, and edge-case +behavior changes; commit message and CVE description] + +ticket: 8244 +target_version: 1.14 +tags: pullup + +(cherry picked from commit e04f0283516e80d2f93366e0d479d13c9b5c8c2a) +Patch-Category: upstream +--- + src/lib/gssapi/krb5/gssapiP_krb5.h | 114 ++++++++++++ + src/lib/gssapi/krb5/gssapi_krb5.c | 105 +++++++++-- + src/lib/gssapi/krb5/iakerb.c | 351 +++++++++++++++++++++++++++++++++---- + 3 files changed, 529 insertions(+), 41 deletions(-) + +diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h +index a0e8625..05dc321 100644 +--- a/src/lib/gssapi/krb5/gssapiP_krb5.h ++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h +@@ -620,6 +620,21 @@ OM_uint32 KRB5_CALLCONV krb5_gss_accept_sec_context_ext + ); + #endif /* LEAN_CLIENT */ + ++OM_uint32 KRB5_CALLCONV krb5_gss_inquire_sec_context_by_oid ++(OM_uint32*, /* minor_status */ ++ const gss_ctx_id_t, ++ /* context_handle */ ++ const gss_OID, /* desired_object */ ++ gss_buffer_set_t* /* data_set */ ++); ++ ++OM_uint32 KRB5_CALLCONV krb5_gss_set_sec_context_option ++(OM_uint32*, /* minor_status */ ++ gss_ctx_id_t*, /* context_handle */ ++ const gss_OID, /* desired_object */ ++ const gss_buffer_t/* value */ ++); ++ + OM_uint32 KRB5_CALLCONV krb5_gss_process_context_token + (OM_uint32*, /* minor_status */ + gss_ctx_id_t, /* context_handle */ +@@ -1301,6 +1316,105 @@ OM_uint32 KRB5_CALLCONV + krb5_gss_import_cred(OM_uint32 *minor_status, gss_buffer_t token, + gss_cred_id_t *cred_handle); + ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_process_context_token(OM_uint32 *minor_status, ++ const gss_ctx_id_t context_handle, ++ const gss_buffer_t token_buffer); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_context_time(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ OM_uint32 *time_rec); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_inquire_context(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, gss_name_t *src_name, ++ gss_name_t *targ_name, OM_uint32 *lifetime_rec, ++ gss_OID *mech_type, OM_uint32 *ctx_flags, ++ int *locally_initiated, int *opened); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t qop_req, gss_buffer_t message_buffer, ++ gss_buffer_t message_token); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t qop_req, gss_iov_buffer_desc *iov, ++ int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic_iov_length(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, gss_qop_t qop_req, ++ gss_iov_buffer_desc *iov, int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_verify_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_buffer_t msg_buffer, gss_buffer_t token_buffer, ++ gss_qop_t *qop_state); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t *qop_state, gss_iov_buffer_desc *iov, ++ int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int conf_req_flag, gss_qop_t qop_req, ++ gss_buffer_t input_message_buffer, int *conf_state, ++ gss_buffer_t output_message_buffer); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int conf_req_flag, gss_qop_t qop_req, int *conf_state, ++ gss_iov_buffer_desc *iov, int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_iov_length(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, int conf_req_flag, ++ gss_qop_t qop_req, int *conf_state, ++ gss_iov_buffer_desc *iov, int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_buffer_t input_message_buffer, ++ gss_buffer_t output_message_buffer, int *conf_state, ++ gss_qop_t *qop_state); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_unwrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int *conf_state, gss_qop_t *qop_state, ++ gss_iov_buffer_desc *iov, int iov_count); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_size_limit(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, int conf_req_flag, ++ gss_qop_t qop_req, OM_uint32 req_output_size, ++ OM_uint32 *max_input_size); ++ ++#ifndef LEAN_CLIENT ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_export_sec_context(OM_uint32 *minor_status, ++ gss_ctx_id_t *context_handle, ++ gss_buffer_t interprocess_token); ++#endif /* LEAN_CLIENT */ ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_inquire_sec_context_by_oid(OM_uint32 *minor_status, ++ const gss_ctx_id_t context_handle, ++ const gss_OID desired_object, ++ gss_buffer_set_t *data_set); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_set_sec_context_option(OM_uint32 *minor_status, ++ gss_ctx_id_t *context_handle, ++ const gss_OID desired_object, ++ const gss_buffer_t value); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_pseudo_random(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int prf_key, const gss_buffer_t prf_in, ++ ssize_t desired_output_len, gss_buffer_t prf_out); ++ + /* Magic string to identify exported krb5 GSS credentials. Increment this if + * the format changes. */ + #define CRED_EXPORT_MAGIC "K5C1" +diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c +index 77b7fff..9a23656 100644 +--- a/src/lib/gssapi/krb5/gssapi_krb5.c ++++ b/src/lib/gssapi/krb5/gssapi_krb5.c +@@ -345,7 +345,7 @@ static struct { + } + }; + +-static OM_uint32 KRB5_CALLCONV ++OM_uint32 KRB5_CALLCONV + krb5_gss_inquire_sec_context_by_oid (OM_uint32 *minor_status, + const gss_ctx_id_t context_handle, + const gss_OID desired_object, +@@ -459,7 +459,7 @@ static struct { + }; + #endif + +-static OM_uint32 KRB5_CALLCONV ++OM_uint32 KRB5_CALLCONV + krb5_gss_set_sec_context_option (OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, + const gss_OID desired_object, +@@ -904,20 +904,103 @@ static struct gss_config krb5_mechanism = { + krb5_gss_get_mic_iov_length, + }; + ++/* Functions which use security contexts or acquire creds are IAKERB-specific; ++ * other functions can borrow from the krb5 mech. */ ++static struct gss_config iakerb_mechanism = { ++ { GSS_MECH_KRB5_OID_LENGTH, GSS_MECH_KRB5_OID }, ++ NULL, ++ iakerb_gss_acquire_cred, ++ krb5_gss_release_cred, ++ iakerb_gss_init_sec_context, ++#ifdef LEAN_CLIENT ++ NULL, ++#else ++ iakerb_gss_accept_sec_context, ++#endif ++ iakerb_gss_process_context_token, ++ iakerb_gss_delete_sec_context, ++ iakerb_gss_context_time, ++ iakerb_gss_get_mic, ++ iakerb_gss_verify_mic, ++#if defined(IOV_SHIM_EXERCISE_WRAP) || defined(IOV_SHIM_EXERCISE) ++ NULL, ++#else ++ iakerb_gss_wrap, ++#endif ++#if defined(IOV_SHIM_EXERCISE_UNWRAP) || defined(IOV_SHIM_EXERCISE) ++ NULL, ++#else ++ iakerb_gss_unwrap, ++#endif ++ krb5_gss_display_status, ++ krb5_gss_indicate_mechs, ++ krb5_gss_compare_name, ++ krb5_gss_display_name, ++ krb5_gss_import_name, ++ krb5_gss_release_name, ++ krb5_gss_inquire_cred, ++ NULL, /* add_cred */ ++#ifdef LEAN_CLIENT ++ NULL, ++ NULL, ++#else ++ iakerb_gss_export_sec_context, ++ NULL, ++#endif ++ krb5_gss_inquire_cred_by_mech, ++ krb5_gss_inquire_names_for_mech, ++ iakerb_gss_inquire_context, ++ krb5_gss_internal_release_oid, ++ iakerb_gss_wrap_size_limit, ++ krb5_gss_localname, ++ krb5_gss_authorize_localname, ++ krb5_gss_export_name, ++ krb5_gss_duplicate_name, ++ krb5_gss_store_cred, ++ iakerb_gss_inquire_sec_context_by_oid, ++ krb5_gss_inquire_cred_by_oid, ++ iakerb_gss_set_sec_context_option, ++ krb5_gssspi_set_cred_option, ++ krb5_gssspi_mech_invoke, ++ NULL, /* wrap_aead */ ++ NULL, /* unwrap_aead */ ++ iakerb_gss_wrap_iov, ++ iakerb_gss_unwrap_iov, ++ iakerb_gss_wrap_iov_length, ++ NULL, /* complete_auth_token */ ++ NULL, /* acquire_cred_impersonate_name */ ++ NULL, /* add_cred_impersonate_name */ ++ NULL, /* display_name_ext */ ++ krb5_gss_inquire_name, ++ krb5_gss_get_name_attribute, ++ krb5_gss_set_name_attribute, ++ krb5_gss_delete_name_attribute, ++ krb5_gss_export_name_composite, ++ krb5_gss_map_name_to_any, ++ krb5_gss_release_any_name_mapping, ++ iakerb_gss_pseudo_random, ++ NULL, /* set_neg_mechs */ ++ krb5_gss_inquire_saslname_for_mech, ++ krb5_gss_inquire_mech_for_saslname, ++ krb5_gss_inquire_attrs_for_mech, ++ krb5_gss_acquire_cred_from, ++ krb5_gss_store_cred_into, ++ iakerb_gss_acquire_cred_with_password, ++ krb5_gss_export_cred, ++ krb5_gss_import_cred, ++ NULL, /* import_sec_context_by_mech */ ++ NULL, /* import_name_by_mech */ ++ NULL, /* import_cred_by_mech */ ++ iakerb_gss_get_mic_iov, ++ iakerb_gss_verify_mic_iov, ++ iakerb_gss_get_mic_iov_length, ++}; ++ + #ifdef _GSS_STATIC_LINK + #include "mglueP.h" + static int gss_iakerbmechglue_init(void) + { + struct gss_mech_config mech_iakerb; +- struct gss_config iakerb_mechanism = krb5_mechanism; +- +- /* IAKERB mechanism mirrors krb5, but with different context SPIs */ +- iakerb_mechanism.gss_accept_sec_context = iakerb_gss_accept_sec_context; +- iakerb_mechanism.gss_init_sec_context = iakerb_gss_init_sec_context; +- iakerb_mechanism.gss_delete_sec_context = iakerb_gss_delete_sec_context; +- iakerb_mechanism.gss_acquire_cred = iakerb_gss_acquire_cred; +- iakerb_mechanism.gssspi_acquire_cred_with_password +- = iakerb_gss_acquire_cred_with_password; + + memset(&mech_iakerb, 0, sizeof(mech_iakerb)); + mech_iakerb.mech = &iakerb_mechanism; +diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c +index f30de32..4662bd9 100644 +--- a/src/lib/gssapi/krb5/iakerb.c ++++ b/src/lib/gssapi/krb5/iakerb.c +@@ -47,6 +47,8 @@ struct _iakerb_ctx_id_rec { + gss_ctx_id_t gssc; + krb5_data conv; /* conversation for checksumming */ + unsigned int count; /* number of round trips */ ++ int initiate; ++ int established; + krb5_get_init_creds_opt *gic_opts; + }; + +@@ -695,7 +697,7 @@ cleanup: + * Allocate and initialise an IAKERB context + */ + static krb5_error_code +-iakerb_alloc_context(iakerb_ctx_id_t *pctx) ++iakerb_alloc_context(iakerb_ctx_id_t *pctx, int initiate) + { + iakerb_ctx_id_t ctx; + krb5_error_code code; +@@ -709,6 +711,8 @@ iakerb_alloc_context(iakerb_ctx_id_t *pctx) + ctx->magic = KG_IAKERB_CONTEXT; + ctx->state = IAKERB_AS_REQ; + ctx->count = 0; ++ ctx->initiate = initiate; ++ ctx->established = 0; + + code = krb5_gss_init_context(&ctx->k5c); + if (code != 0) +@@ -732,7 +736,7 @@ iakerb_gss_delete_sec_context(OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, + gss_buffer_t output_token) + { +- OM_uint32 major_status = GSS_S_COMPLETE; ++ iakerb_ctx_id_t iakerb_ctx = (iakerb_ctx_id_t)*context_handle; + + if (output_token != GSS_C_NO_BUFFER) { + output_token->length = 0; +@@ -740,23 +744,10 @@ iakerb_gss_delete_sec_context(OM_uint32 *minor_status, + } + + *minor_status = 0; ++ *context_handle = GSS_C_NO_CONTEXT; ++ iakerb_release_context(iakerb_ctx); + +- if (*context_handle != GSS_C_NO_CONTEXT) { +- iakerb_ctx_id_t iakerb_ctx = (iakerb_ctx_id_t)*context_handle; +- +- if (iakerb_ctx->magic == KG_IAKERB_CONTEXT) { +- iakerb_release_context(iakerb_ctx); +- *context_handle = GSS_C_NO_CONTEXT; +- } else { +- assert(iakerb_ctx->magic == KG_CONTEXT); +- +- major_status = krb5_gss_delete_sec_context(minor_status, +- context_handle, +- output_token); +- } +- } +- +- return major_status; ++ return GSS_S_COMPLETE; + } + + static krb5_boolean +@@ -802,7 +793,7 @@ iakerb_gss_accept_sec_context(OM_uint32 *minor_status, + int initialContextToken = (*context_handle == GSS_C_NO_CONTEXT); + + if (initialContextToken) { +- code = iakerb_alloc_context(&ctx); ++ code = iakerb_alloc_context(&ctx, 0); + if (code != 0) + goto cleanup; + +@@ -854,11 +845,8 @@ iakerb_gss_accept_sec_context(OM_uint32 *minor_status, + time_rec, + delegated_cred_handle, + &exts); +- if (major_status == GSS_S_COMPLETE) { +- *context_handle = ctx->gssc; +- ctx->gssc = NULL; +- iakerb_release_context(ctx); +- } ++ if (major_status == GSS_S_COMPLETE) ++ ctx->established = 1; + if (mech_type != NULL) + *mech_type = (gss_OID)gss_mech_krb5; + } +@@ -897,7 +885,7 @@ iakerb_gss_init_sec_context(OM_uint32 *minor_status, + int initialContextToken = (*context_handle == GSS_C_NO_CONTEXT); + + if (initialContextToken) { +- code = iakerb_alloc_context(&ctx); ++ code = iakerb_alloc_context(&ctx, 1); + if (code != 0) { + *minor_status = code; + goto cleanup; +@@ -983,11 +971,8 @@ iakerb_gss_init_sec_context(OM_uint32 *minor_status, + ret_flags, + time_rec, + &exts); +- if (major_status == GSS_S_COMPLETE) { +- *context_handle = ctx->gssc; +- ctx->gssc = GSS_C_NO_CONTEXT; +- iakerb_release_context(ctx); +- } ++ if (major_status == GSS_S_COMPLETE) ++ ctx->established = 1; + if (actual_mech_type != NULL) + *actual_mech_type = (gss_OID)gss_mech_krb5; + } else { +@@ -1010,3 +995,309 @@ cleanup: + + return major_status; + } ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_unwrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_buffer_t input_message_buffer, ++ gss_buffer_t output_message_buffer, int *conf_state, ++ gss_qop_t *qop_state) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_unwrap(minor_status, ctx->gssc, input_message_buffer, ++ output_message_buffer, conf_state, qop_state); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int conf_req_flag, gss_qop_t qop_req, ++ gss_buffer_t input_message_buffer, int *conf_state, ++ gss_buffer_t output_message_buffer) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_wrap(minor_status, ctx->gssc, conf_req_flag, qop_req, ++ input_message_buffer, conf_state, ++ output_message_buffer); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_process_context_token(OM_uint32 *minor_status, ++ const gss_ctx_id_t context_handle, ++ const gss_buffer_t token_buffer) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_DEFECTIVE_TOKEN; ++ ++ return krb5_gss_process_context_token(minor_status, ctx->gssc, ++ token_buffer); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_context_time(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ OM_uint32 *time_rec) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_context_time(minor_status, ctx->gssc, time_rec); ++} ++ ++#ifndef LEAN_CLIENT ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_export_sec_context(OM_uint32 *minor_status, ++ gss_ctx_id_t *context_handle, ++ gss_buffer_t interprocess_token) ++{ ++ OM_uint32 maj; ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ /* We don't currently support exporting partially established contexts. */ ++ if (!ctx->established) ++ return GSS_S_UNAVAILABLE; ++ ++ maj = krb5_gss_export_sec_context(minor_status, &ctx->gssc, ++ interprocess_token); ++ if (ctx->gssc == GSS_C_NO_CONTEXT) { ++ iakerb_release_context(ctx); ++ *context_handle = GSS_C_NO_CONTEXT; ++ } ++ return maj; ++} ++ ++/* ++ * Until we implement partial context exports, there are no SPNEGO exported ++ * context tokens, only tokens for the underlying krb5 context. So we do not ++ * need to implement an iakerb_gss_import_sec_context() yet; it would be ++ * unreachable except via a manually constructed token. ++ */ ++ ++#endif /* LEAN_CLIENT */ ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_inquire_context(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, gss_name_t *src_name, ++ gss_name_t *targ_name, OM_uint32 *lifetime_rec, ++ gss_OID *mech_type, OM_uint32 *ctx_flags, ++ int *initiate, int *opened) ++{ ++ OM_uint32 ret; ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (src_name != NULL) ++ *src_name = GSS_C_NO_NAME; ++ if (targ_name != NULL) ++ *targ_name = GSS_C_NO_NAME; ++ if (lifetime_rec != NULL) ++ *lifetime_rec = 0; ++ if (mech_type != NULL) ++ *mech_type = (gss_OID)gss_mech_iakerb; ++ if (ctx_flags != NULL) ++ *ctx_flags = 0; ++ if (initiate != NULL) ++ *initiate = ctx->initiate; ++ if (opened != NULL) ++ *opened = ctx->established; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_COMPLETE; ++ ++ ret = krb5_gss_inquire_context(minor_status, ctx->gssc, src_name, ++ targ_name, lifetime_rec, mech_type, ++ ctx_flags, initiate, opened); ++ ++ if (!ctx->established) { ++ /* Report IAKERB as the mech OID until the context is established. */ ++ if (mech_type != NULL) ++ *mech_type = (gss_OID)gss_mech_iakerb; ++ ++ /* We don't support exporting partially-established contexts. */ ++ if (ctx_flags != NULL) ++ *ctx_flags &= ~GSS_C_TRANS_FLAG; ++ } ++ ++ return ret; ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_size_limit(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, int conf_req_flag, ++ gss_qop_t qop_req, OM_uint32 req_output_size, ++ OM_uint32 *max_input_size) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_wrap_size_limit(minor_status, ctx->gssc, conf_req_flag, ++ qop_req, req_output_size, max_input_size); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t qop_req, gss_buffer_t message_buffer, ++ gss_buffer_t message_token) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_get_mic(minor_status, ctx->gssc, qop_req, message_buffer, ++ message_token); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_verify_mic(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_buffer_t msg_buffer, gss_buffer_t token_buffer, ++ gss_qop_t *qop_state) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_verify_mic(minor_status, ctx->gssc, msg_buffer, ++ token_buffer, qop_state); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_inquire_sec_context_by_oid(OM_uint32 *minor_status, ++ const gss_ctx_id_t context_handle, ++ const gss_OID desired_object, ++ gss_buffer_set_t *data_set) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_UNAVAILABLE; ++ ++ return krb5_gss_inquire_sec_context_by_oid(minor_status, ctx->gssc, ++ desired_object, data_set); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_set_sec_context_option(OM_uint32 *minor_status, ++ gss_ctx_id_t *context_handle, ++ const gss_OID desired_object, ++ const gss_buffer_t value) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)*context_handle; ++ ++ if (ctx == NULL || ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_UNAVAILABLE; ++ ++ return krb5_gss_set_sec_context_option(minor_status, &ctx->gssc, ++ desired_object, value); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int conf_req_flag, gss_qop_t qop_req, int *conf_state, ++ gss_iov_buffer_desc *iov, int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_wrap_iov(minor_status, ctx->gssc, conf_req_flag, qop_req, ++ conf_state, iov, iov_count); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_unwrap_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int *conf_state, gss_qop_t *qop_state, ++ gss_iov_buffer_desc *iov, int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_unwrap_iov(minor_status, ctx->gssc, conf_state, qop_state, ++ iov, iov_count); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_wrap_iov_length(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, int conf_req_flag, ++ gss_qop_t qop_req, int *conf_state, ++ gss_iov_buffer_desc *iov, int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_wrap_iov_length(minor_status, ctx->gssc, conf_req_flag, ++ qop_req, conf_state, iov, iov_count); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_pseudo_random(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ int prf_key, const gss_buffer_t prf_in, ++ ssize_t desired_output_len, gss_buffer_t prf_out) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_pseudo_random(minor_status, ctx->gssc, prf_key, prf_in, ++ desired_output_len, prf_out); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t qop_req, gss_iov_buffer_desc *iov, ++ int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_get_mic_iov(minor_status, ctx->gssc, qop_req, iov, ++ iov_count); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle, ++ gss_qop_t *qop_state, gss_iov_buffer_desc *iov, ++ int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_verify_mic_iov(minor_status, ctx->gssc, qop_state, iov, ++ iov_count); ++} ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_get_mic_iov_length(OM_uint32 *minor_status, ++ gss_ctx_id_t context_handle, gss_qop_t qop_req, ++ gss_iov_buffer_desc *iov, int iov_count) ++{ ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ ++ if (ctx->gssc == GSS_C_NO_CONTEXT) ++ return GSS_S_NO_CONTEXT; ++ ++ return krb5_gss_get_mic_iov_length(minor_status, ctx->gssc, qop_req, iov, ++ iov_count); ++} diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2697.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2697.patch new file mode 100644 index 0000000000..f65ce39623 --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2697.patch @@ -0,0 +1,55 @@ +Copied from Debian. + +From fcafb522a0509bfd6f4f6b57e4a1e93c0092eeb0 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Fri, 25 Sep 2015 12:51:47 -0400 +Subject: Fix build_principal memory bug [CVE-2015-2697] + +In build_principal_va(), use k5memdup0() instead of strdup() to make a +copy of the realm, to ensure that we allocate the correct number of +bytes and do not read past the end of the input string. This bug +affects krb5_build_principal(), krb5_build_principal_va(), and +krb5_build_principal_alloc_va(). krb5_build_principal_ext() is not +affected. + +CVE-2015-2697: + +In MIT krb5 1.7 and later, an authenticated attacker may be able to +cause a KDC to crash using a TGS request with a large realm field +beginning with a null byte. If the KDC attempts to find a referral to +answer the request, it constructs a principal name for lookup using +krb5_build_principal() with the requested realm. Due to a bug in this +function, the null byte causes only one byte be allocated for the +realm field of the constructed principal, far less than its length. +Subsequent operations on the lookup principal may cause a read beyond +the end of the mapped memory region, causing the KDC process to crash. + +CVSSv2: AV:N/AC:L/Au:S/C:N/I:N/A:C/E:POC/RL:OF/RC:C + +ticket: 8252 (new) +target_version: 1.14 +tags: pullup + +(cherry picked from commit f0c094a1b745d91ef2f9a4eae2149aac026a5789) +Patch-Category: upstream +--- + src/lib/krb5/krb/bld_princ.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/lib/krb5/krb/bld_princ.c b/src/lib/krb5/krb/bld_princ.c +index ab6fed8..8604268 100644 +--- a/src/lib/krb5/krb/bld_princ.c ++++ b/src/lib/krb5/krb/bld_princ.c +@@ -40,10 +40,8 @@ build_principal_va(krb5_context context, krb5_principal princ, + data = malloc(size * sizeof(krb5_data)); + if (!data) { retval = ENOMEM; } + +- if (!retval) { +- r = strdup(realm); +- if (!r) { retval = ENOMEM; } +- } ++ if (!retval) ++ r = k5memdup0(realm, rlen, &retval); + + while (!retval && (component = va_arg(ap, char *))) { + if (count == size) { diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt1.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt1.patch new file mode 100644 index 0000000000..67545e4c16 --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt1.patch @@ -0,0 +1,43 @@ +Copied from Debian. + +From 1a8bdc6d81dcd7dd8a4d42e8de6d2cacf1dd4408 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Tue, 27 Oct 2015 00:44:24 -0400 +Subject: Fix two IAKERB comments + +The comment explaining why there is no iakerb_gss_import_sec_context() +erroneously referenced SPNEGO instead of IAKERB (noticed by Ben +Kaduk). The comment above iakerb_gss_delete_sec_context() is out of +date after the last commit. + +(cherry picked from commit 92d6dd045dfc06cc03d20b327a6ee7a71e6bc24d) + +Patch-Category: upstream +--- + src/lib/gssapi/krb5/iakerb.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c +index 4662bd9..e25862d 100644 +--- a/src/lib/gssapi/krb5/iakerb.c ++++ b/src/lib/gssapi/krb5/iakerb.c +@@ -727,10 +727,6 @@ cleanup: + return code; + } + +-/* +- * Delete an IAKERB context. This can also accept Kerberos context +- * handles. The heuristic is similar to SPNEGO's delete_sec_context. +- */ + OM_uint32 KRB5_CALLCONV + iakerb_gss_delete_sec_context(OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, +@@ -1077,7 +1073,7 @@ iakerb_gss_export_sec_context(OM_uint32 *minor_status, + } + + /* +- * Until we implement partial context exports, there are no SPNEGO exported ++ * Until we implement partial context exports, there are no IAKERB exported + * context tokens, only tokens for the underlying krb5 context. So we do not + * need to implement an iakerb_gss_import_sec_context() yet; it would be + * unreachable except via a manually constructed token. diff --git a/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt2.patch b/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt2.patch new file mode 100644 index 0000000000..8725cd4eed --- /dev/null +++ b/gnu/packages/patches/mit-krb5-CVE-2015-2698-pt2.patch @@ -0,0 +1,132 @@ +Copied from Debian. + +From 4b330d5be1f8048be4d079ac3cb38d60c0e99e69 Mon Sep 17 00:00:00 2001 +From: Greg Hudson +Date: Wed, 4 Nov 2015 21:28:28 -0500 +Subject: Fix IAKERB context export/import [CVE-2015-2698] + +The patches for CVE-2015-2696 contained a regression in the newly +added IAKERB iakerb_gss_export_sec_context() function, which could +cause it to corrupt memory. Fix the regression by properly +dereferencing the context_handle pointer before casting it. + +Also, the patches did not implement an IAKERB gss_import_sec_context() +function, under the erroneous belief than an exported IAKERB context +would be tagged as a krb5 context. Implement it now to allow IAKERB +contexts to be successfully exported and imported after establishment. + +CVE-2015-2698: + +In any MIT krb5 release with the patches for CVE-2015-2696 applied, an +application which calls gss_export_sec_context() may experience memory +corruption if the context was established using the IAKERB mechanism. +Historically, some vulnerabilities of this nature can be translated +into remote code execution, though the necessary exploits must be +tailored to the individual application and are usually quite +complicated. + + CVSSv2 Vector: AV:N/AC:H/Au:S/C:C/I:C/A:C/E:POC/RL:OF/RC:C + +ticket: 8273 (new) +target_version: 1.14 +tags: pullup + +(cherry picked from commit d8b31c874c7d1039be7649362ef11c89f4e14c27) + +Patch-Category: upstream +--- + src/lib/gssapi/krb5/gssapiP_krb5.h | 5 +++++ + src/lib/gssapi/krb5/gssapi_krb5.c | 2 +- + src/lib/gssapi/krb5/iakerb.c | 42 +++++++++++++++++++++++++++++++------- + 3 files changed, 41 insertions(+), 8 deletions(-) + +diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h +index 05dc321..ac53662 100644 +--- a/src/lib/gssapi/krb5/gssapiP_krb5.h ++++ b/src/lib/gssapi/krb5/gssapiP_krb5.h +@@ -1396,6 +1396,11 @@ OM_uint32 KRB5_CALLCONV + iakerb_gss_export_sec_context(OM_uint32 *minor_status, + gss_ctx_id_t *context_handle, + gss_buffer_t interprocess_token); ++ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_import_sec_context(OM_uint32 *minor_status, ++ const gss_buffer_t interprocess_token, ++ gss_ctx_id_t *context_handle); + #endif /* LEAN_CLIENT */ + + OM_uint32 KRB5_CALLCONV +diff --git a/src/lib/gssapi/krb5/gssapi_krb5.c b/src/lib/gssapi/krb5/gssapi_krb5.c +index 9a23656..d7ba279 100644 +--- a/src/lib/gssapi/krb5/gssapi_krb5.c ++++ b/src/lib/gssapi/krb5/gssapi_krb5.c +@@ -945,7 +945,7 @@ static struct gss_config iakerb_mechanism = { + NULL, + #else + iakerb_gss_export_sec_context, +- NULL, ++ iakerb_gss_import_sec_context, + #endif + krb5_gss_inquire_cred_by_mech, + krb5_gss_inquire_names_for_mech, +diff --git a/src/lib/gssapi/krb5/iakerb.c b/src/lib/gssapi/krb5/iakerb.c +index e25862d..32a341e 100644 +--- a/src/lib/gssapi/krb5/iakerb.c ++++ b/src/lib/gssapi/krb5/iakerb.c +@@ -1057,7 +1057,7 @@ iakerb_gss_export_sec_context(OM_uint32 *minor_status, + gss_buffer_t interprocess_token) + { + OM_uint32 maj; +- iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)context_handle; ++ iakerb_ctx_id_t ctx = (iakerb_ctx_id_t)*context_handle; + + /* We don't currently support exporting partially established contexts. */ + if (!ctx->established) +@@ -1072,13 +1072,41 @@ iakerb_gss_export_sec_context(OM_uint32 *minor_status, + return maj; + } + +-/* +- * Until we implement partial context exports, there are no IAKERB exported +- * context tokens, only tokens for the underlying krb5 context. So we do not +- * need to implement an iakerb_gss_import_sec_context() yet; it would be +- * unreachable except via a manually constructed token. +- */ ++OM_uint32 KRB5_CALLCONV ++iakerb_gss_import_sec_context(OM_uint32 *minor_status, ++ gss_buffer_t interprocess_token, ++ gss_ctx_id_t *context_handle) ++{ ++ OM_uint32 maj, tmpmin; ++ krb5_error_code code; ++ gss_ctx_id_t gssc; ++ krb5_gss_ctx_id_t kctx; ++ iakerb_ctx_id_t ctx; ++ ++ maj = krb5_gss_import_sec_context(minor_status, interprocess_token, &gssc); ++ if (maj != GSS_S_COMPLETE) ++ return maj; ++ kctx = (krb5_gss_ctx_id_t)gssc; ++ ++ if (!kctx->established) { ++ /* We don't currently support importing partially established ++ * contexts. */ ++ krb5_gss_delete_sec_context(&tmpmin, &gssc, GSS_C_NO_BUFFER); ++ return GSS_S_FAILURE; ++ } + ++ code = iakerb_alloc_context(&ctx, kctx->initiate); ++ if (code != 0) { ++ krb5_gss_delete_sec_context(&tmpmin, &gssc, GSS_C_NO_BUFFER); ++ *minor_status = code; ++ return GSS_S_FAILURE; ++ } ++ ++ ctx->gssc = gssc; ++ ctx->established = 1; ++ *context_handle = (gss_ctx_id_t)ctx; ++ return GSS_S_COMPLETE; ++} + #endif /* LEAN_CLIENT */ + + OM_uint32 KRB5_CALLCONV diff --git a/gnu/packages/patches/mit-krb5-init-fix.patch b/gnu/packages/patches/mit-krb5-init-fix.patch deleted file mode 100644 index 13e49c2789..0000000000 --- a/gnu/packages/patches/mit-krb5-init-fix.patch +++ /dev/null @@ -1,18 +0,0 @@ -Fix the early context initialization code to avoid assuming that -arguments will be evaluated from right to left. - -Patch by Mark H Weaver . - ---- src/lib/krb5/krb/t_cc_config.c.orig 2012-12-17 21:47:05.000000000 -0500 -+++ src/lib/krb5/krb/t_cc_config.c 2013-10-29 18:19:16.547994590 -0400 -@@ -117,8 +117,8 @@ - int c; - unsigned int i; - -- bail_on_err(context, "Error initializing Kerberos library", -- krb5_init_context(&context)); -+ ret = krb5_init_context(&context); -+ bail_on_err(context, "Error initializing Kerberos library", ret); - bail_on_err(context, "Error getting location of default ccache", - krb5_cc_default(context, &ccache)); - server = NULL; diff --git a/gnu/packages/patches/mupen64plus-ui-console-notice.patch b/gnu/packages/patches/mupen64plus-ui-console-notice.patch new file mode 100644 index 0000000000..1d0b4c46bb --- /dev/null +++ b/gnu/packages/patches/mupen64plus-ui-console-notice.patch @@ -0,0 +1,34 @@ +Mupen64Plus supports a single data directory and a single plugin directory in +its configuration, yet we need data and plugin files from a variety of +packages. The best way to deal with this is to install all packages from +which data and plugin files are needed into one's profile, and point the +configuration there. Hence, the ui-console package provides propagated inputs +for packages with the most important data and plugin files, and this patch +provides the user instructions on what needs to be done in order to have +Mupen64Plus find the relevant data and plugins. + +--- a/src/plugin.c ++++ b/src/plugin.c +@@ -122,6 +122,22 @@ m64p_error PluginSearchLoad(m64p_handle ConfigUI) + { + const char *plugindir = (*ConfigGetParamString)(ConfigUI, "PluginDir"); + lib_filelist = osal_library_search(plugindir); ++ /* Guix specific */ ++ if (lib_filelist == NULL) ++ { ++ DebugMessage(M64MSG_ERROR, "No plugins found in PluginDir path: %s", plugindir); ++ DebugMessage(M64MSG_ERROR, ++ "\n\n" ++ "*********************************\n" ++ "*** Notice for GNU Guix users ***\n" ++ "*********************************\n" ++ "\n" ++ "You might want to edit your mupen64plus.cfg (in $XDG_CONFIG_HOME by default)\n" ++ "and set SharedDataPath to /path/to/my_guix_profile/share/mupen64plus and\n" ++ "PluginDir to /path/to/my_guix_profile/lib/mupen64plus so that data and plugins\n" ++ "are found.\n" ++ "\n"); ++ } + } + + /* if still no plugins found, search some common system folders */ diff --git a/gnu/packages/patches/preseq-1.0.2-install-to-PREFIX.patch b/gnu/packages/patches/preseq-1.0.2-install-to-PREFIX.patch deleted file mode 100644 index f8318ae0f5..0000000000 --- a/gnu/packages/patches/preseq-1.0.2-install-to-PREFIX.patch +++ /dev/null @@ -1,37 +0,0 @@ -This patch has been submitted upstream: https://github.com/smithlabcode/preseq/pull/15 - -From 65387b0d766e6c06a15cf8d8f9183d9a4ba644bb Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Thu, 25 Jun 2015 15:01:53 +0200 -Subject: [PATCH] Install to PREFIX - ---- - Makefile | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 4d0367a..e334f2f 100644 ---- a/preseq-master/Makefile -+++ b/preseq-master/Makefile -@@ -22,6 +22,10 @@ ifndef ROOT - ROOT = $(shell pwd) - endif - -+ifndef PREFIX -+PREFIX = $(ROOT) -+endif -+ - ifndef SMITHLAB_CPP - SMITHLAB_CPP=$(ROOT)/smithlab_cpp/ - endif -@@ -91,8 +95,8 @@ endif - $(CXX) $(CXXFLAGS) -o $@ $^ $(INCLUDEARGS) $(LIBS) - - install: $(PROGS) -- @mkdir -p $(ROOT)/bin -- @install -m 755 $(PROGS) $(ROOT)/bin -+ @mkdir -p $(PREFIX)/bin -+ @install -m 755 $(PROGS) $(PREFIX)/bin - - clean: - @-rm -f $(PROGS) *.o *~ diff --git a/gnu/packages/patches/preseq-1.0.2-link-with-libbam.patch b/gnu/packages/patches/preseq-1.0.2-link-with-libbam.patch deleted file mode 100644 index 035a3b1fe4..0000000000 --- a/gnu/packages/patches/preseq-1.0.2-link-with-libbam.patch +++ /dev/null @@ -1,33 +0,0 @@ -This patch has been submitted upstream: https://github.com/smithlabcode/preseq/pull/15 - -From a937a54d56e8a6ff06237471e568154d1fa5f267 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Thu, 25 Jun 2015 15:02:35 +0200 -Subject: [PATCH] Link with libbam.a if provided via LIBBAM - ---- - Makefile | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/Makefile b/Makefile -index e334f2f..de310e4 100644 ---- a/preseq-master/Makefile -+++ b/preseq-master/Makefile -@@ -83,10 +83,17 @@ $(PROGS): $(addprefix $(SMITHLAB_CPP)/, \ - preseq: continued_fraction.o load_data_for_complexity.o moment_sequence.o - - ifdef SAMTOOLS_DIR -+ifdef LIBBAM -+LIBS += -pthread -+bam2mr preseq: $(addprefix $(SMITHLAB_CPP)/, SAM.o) \ -+ $(LIBBAM) -+else - bam2mr preseq: $(addprefix $(SMITHLAB_CPP)/, SAM.o) \ - $(addprefix $(SAMTOOLS_DIR)/, sam.o bam.o bam_import.o bam_pileup.o \ - faidx.o bam_aux.o kstring.o knetfile.o sam_header.o razf.o bgzf.o) - endif -+endif # SAMTOOLS_DIR -+ - - %.o: %.cpp %.hpp - $(CXX) $(CXXFLAGS) -c -o $@ $< $(INCLUDEARGS) diff --git a/gnu/packages/patches/python-2-deterministic-build-info.patch b/gnu/packages/patches/python-2-deterministic-build-info.patch new file mode 100644 index 0000000000..25a079fe90 --- /dev/null +++ b/gnu/packages/patches/python-2-deterministic-build-info.patch @@ -0,0 +1,17 @@ +Always provide the same date and time in 'Py_GetBuildInfo'. +This is the information shown at the REPL and in 'sys.version'. +We cannot pass it in CPPFLAGS due to whitespace in the DATE string. + +--- a/Modules/getbuildinfo.c ++++ b/Modules/getbuildinfo.c +@@ -4,6 +4,10 @@ + #include + #endif + ++/* Deterministic date and time. */ ++#define DATE "Jan 1 1970" ++#define TIME "00:00:01" ++ + #ifndef DATE + #ifdef __DATE__ + #define DATE __DATE__ diff --git a/gnu/packages/patches/python-2.7-source-date-epoch.patch b/gnu/packages/patches/python-2.7-source-date-epoch.patch new file mode 100644 index 0000000000..be1f8e010e --- /dev/null +++ b/gnu/packages/patches/python-2.7-source-date-epoch.patch @@ -0,0 +1,33 @@ +Honor the 'SOURCE_DATE_EPOCH' environment variable to allow for +determinitic builds. + +--- a/Lib/py_compile.py ++++ b/Lib/py_compile.py +@@ -105,7 +105,10 @@ def compile(file, cfile=None, dfile=None, doraise=False): + """ + with open(file, 'U') as f: + try: +- timestamp = long(os.fstat(f.fileno()).st_mtime) ++ if 'SOURCE_DATE_EPOCH' in os.environ: ++ timestamp = long(os.environ['SOURCE_DATE_EPOCH']) ++ else: ++ timestamp = long(os.fstat(f.fileno()).st_mtime) + except AttributeError: + timestamp = long(os.stat(file).st_mtime) + codestring = f.read() +diff --git a/Python/import.c b/Python/import.c +index e47ce63..7eecf9c 100644 +--- a/Python/import.c ++++ b/Python/import.c +@@ -945,6 +945,11 @@ write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat, t + /* Now write the true mtime (as a 32-bit field) */ + fseek(fp, 4L, 0); + assert(mtime <= 0xFFFFFFFF); ++ if (Py_GETENV("SOURCE_DATE_EPOCH") != NULL) { ++ const char *epoch = Py_GETENV("SOURCE_DATE_EPOCH"); ++ mtime = atoi(epoch); ++ } ++ + PyMarshal_WriteLongToFile((long)mtime, fp, Py_MARSHAL_VERSION); + fflush(fp); + fclose(fp); diff --git a/gnu/packages/patches/python-3-deterministic-build-info.patch b/gnu/packages/patches/python-3-deterministic-build-info.patch new file mode 100644 index 0000000000..22c372a0cf --- /dev/null +++ b/gnu/packages/patches/python-3-deterministic-build-info.patch @@ -0,0 +1,17 @@ +Always provide the same date and time in 'Py_GetBuildInfo'. +This is the information shown at the REPL and in 'sys.version'. +We cannot pass it in CPPFLAGS due to whitespace in the DATE string. + +--- Modules/getbuildinfo.c ++++ Modules/getbuildinfo.c +@@ -4,6 +4,10 @@ + #include + #endif + ++/* Deterministic date and time. */ ++#define DATE "Jan 1 1970" ++#define TIME "00:00:01" ++ + #ifndef DATE + #ifdef __DATE__ + #define DATE __DATE__ diff --git a/gnu/packages/patches/python-configobj-setuptools.patch b/gnu/packages/patches/python-configobj-setuptools.patch new file mode 100644 index 0000000000..3f207ffd74 --- /dev/null +++ b/gnu/packages/patches/python-configobj-setuptools.patch @@ -0,0 +1,30 @@ +From 16fbc38f13e435b4e3e1a37d706e64e05bad4691 Mon Sep 17 00:00:00 2001 +From: Leo Famulari +Date: Tue, 10 Nov 2015 23:09:24 -0500 +Subject: [PATCH] patch build to use setuptools + +--- + setup.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index c6d57a6..27bf260 100644 +--- a/setup.py ++++ b/setup.py +@@ -12,7 +12,12 @@ + # http://opensource.org/licenses/BSD-3-Clause + import os + import sys +-from distutils.core import setup ++ ++try: ++ from setuptools import setup ++except ImportError: ++ from distutils.core import setup ++ + # a simple import wouldn't work if we moved towards a package with __init__ + from _version import __version__ + +-- +2.6.2 + diff --git a/gnu/packages/patches/scribus-qobject.patch b/gnu/packages/patches/scribus-qobject.patch new file mode 100644 index 0000000000..91be932f1b --- /dev/null +++ b/gnu/packages/patches/scribus-qobject.patch @@ -0,0 +1,17 @@ +See upstream bug report: http://bugs.scribus.net/view.php?id=13102 + +scribus/sclayer.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/scribus/sclayer.cpp b/scribus/sclayer.cpp +index 502112b..4da7bd5 100644 +--- a/scribus/sclayer.cpp ++++ b/scribus/sclayer.cpp +@@ -9,6 +9,7 @@ for which a new license (GPL+exception) is in place. + + #include //necessary to avoid msvc warnings induced by SCRIBUS_API on ScLayers + early instanciation of templates + #include //necessary to avoid msvc warnings induced by SCRIBUS_API on ScLayers + early instanciation of templates ++#include + #include + + ScLayer::ScLayer(void) diff --git a/gnu/packages/patches/synfig-build-fix.patch b/gnu/packages/patches/synfig-build-fix.patch new file mode 100644 index 0000000000..3f6168e0fb --- /dev/null +++ b/gnu/packages/patches/synfig-build-fix.patch @@ -0,0 +1,61 @@ +Allow Synfig to build in C++11 mode. + +Taken from here: +https://projects.archlinux.org/svntogit/community.git/plain/trunk/build-fix.patch?h=packages/synfig + +diff -wbBur synfig-1.0-RC5/src/modules/mod_libavcodec/mptr.cpp synfig-1.0-RC5.my/src/modules/mod_libavcodec/mptr.cpp +--- synfig-1.0-RC5/src/modules/mod_libavcodec/mptr.cpp 2015-03-28 13:15:00.000000000 +0300 ++++ synfig-1.0-RC5.my/src/modules/mod_libavcodec/mptr.cpp 2015-04-28 16:56:11.568749053 +0300 +@@ -56,8 +56,8 @@ + /* === M E T H O D S ======================================================= */ + + +-Importer_LibAVCodec::Importer_LibAVCodec(const char *file): +- filename(file) ++Importer_LibAVCodec::Importer_LibAVCodec(const synfig::FileSystem::Identifier &identifier): ++ Importer(identifier) + { + } + +diff -wbBur synfig-1.0-RC5/src/modules/mod_libavcodec/mptr.h synfig-1.0-RC5.my/src/modules/mod_libavcodec/mptr.h +--- synfig-1.0-RC5/src/modules/mod_libavcodec/mptr.h 2015-03-28 13:15:00.000000000 +0300 ++++ synfig-1.0-RC5.my/src/modules/mod_libavcodec/mptr.h 2015-04-28 16:55:18.699192946 +0300 +@@ -46,7 +46,7 @@ + synfig::String filename; + + public: +- Importer_LibAVCodec(const char *filename); ++ Importer_LibAVCodec(const synfig::FileSystem::Identifier &identifier); + ~Importer_LibAVCodec(); + + virtual bool get_frame(synfig::Surface &surface, const synfig::RendDesc &renddesc, synfig::Time time, synfig::ProgressCallback *callback); +diff -wbBur synfig-1.0-RC5/src/modules/mod_libavcodec/trgt_av.cpp synfig-1.0-RC5.my/src/modules/mod_libavcodec/trgt_av.cpp +--- synfig-1.0-RC5/src/modules/mod_libavcodec/trgt_av.cpp 2015-03-28 13:15:00.000000000 +0300 ++++ synfig-1.0-RC5.my/src/modules/mod_libavcodec/trgt_av.cpp 2015-04-28 16:46:54.720091106 +0300 +@@ -121,14 +121,14 @@ + picture = avcodec_alloc_frame(); + if (!picture) + return NULL; +- size = avpicture_get_size(pix_fmt, width, height); ++ size = avpicture_get_size((::PixelFormat)pix_fmt, width, height); + picture_buf = (uint8_t *)malloc(size); + if (!picture_buf) { + av_free(picture); + return NULL; + } + avpicture_fill((AVPicture *)picture, picture_buf, +- pix_fmt, width, height); ++ (::PixelFormat)pix_fmt, width, height); + return picture; + } + +diff -wbBur synfig-1.0.2/src/synfig/time.cpp synfig-1.0.2.my/src/synfig/time.cpp +--- synfig-1.0.2/src/synfig/time.cpp 2015-07-09 10:33:03.000000000 +0300 ++++ synfig-1.0.2.my/src/synfig/time.cpp 2015-10-12 13:54:58.382313903 +0300 +@@ -319,5 +319,5 @@ + bool + Time::is_valid()const + { +- return !isnan(value_); ++ return !::isnan(value_); + } diff --git a/gnu/packages/patches/tcl-mkindex-deterministic.patch b/gnu/packages/patches/tcl-mkindex-deterministic.patch new file mode 100644 index 0000000000..2fcef6a4f7 --- /dev/null +++ b/gnu/packages/patches/tcl-mkindex-deterministic.patch @@ -0,0 +1,29 @@ +This patch ensures that the 'tclIndex' files generated by 'auto_mkindex' +are sorted in a deterministic fashion. + +Fixes a non-determinism issue reported +at . + +--- tcl8.6.4/library/auto.tcl 2015-02-26 17:57:28.000000000 +0100 ++++ tcl8.6.4/library/auto.tcl 2015-11-13 23:18:34.964831717 +0100 +@@ -207,6 +207,9 @@ proc auto_mkindex {dir args} { + set args *.tcl + } + ++ # Keep file names sorted in a determistic order. ++ set args [lsort -ascii $args] ++ + auto_mkindex_parser::init + foreach file [glob -- {*}$args] { + try { +@@ -241,6 +244,10 @@ proc auto_mkindex_old {dir args} { + if {![llength $args]} { + set args *.tcl + } ++ ++ # Keep file names sorted in a determistic order. ++ set args [lsort -ascii $args] ++ + foreach file [glob -- {*}$args] { + set f "" + set error [catch { diff --git a/gnu/packages/patches/tinyxml-use-stl.patch b/gnu/packages/patches/tinyxml-use-stl.patch new file mode 100644 index 0000000000..5d8aa899a9 --- /dev/null +++ b/gnu/packages/patches/tinyxml-use-stl.patch @@ -0,0 +1,41 @@ +From a53b6ee4519a7657164610ac14a82c57b1273bf6 Mon Sep 17 00:00:00 2001 +From: David Thompson +Date: Mon, 23 Nov 2015 06:54:36 -0500 +Subject: [PATCH] Use STL. + +Software that uses the shared library, such as Kodi, assume that TinyXML was +compiled with STL activated. + +--- + tinyxml.h | 2 ++ + xmltest.cpp | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/tinyxml.h b/tinyxml.h +index a3589e5..6cbfc7d 100644 +--- a/tinyxml.h ++++ b/tinyxml.h +@@ -43,6 +43,8 @@ distribution. + #define DEBUG + #endif + ++#define TIXML_USE_STL 1 ++ + #ifdef TIXML_USE_STL + #include + #include +diff --git a/xmltest.cpp b/xmltest.cpp +index 663c157..057dbfe 100644 +--- a/xmltest.cpp ++++ b/xmltest.cpp +@@ -2,6 +2,7 @@ + Test program for TinyXML. + */ + ++#define TIXML_USE_STL 1 + + #ifdef TIXML_USE_STL + #include +-- +2.5.0 + diff --git a/gnu/packages/patches/tk-find-library.patch b/gnu/packages/patches/tk-find-library.patch new file mode 100644 index 0000000000..70911bf0d2 --- /dev/null +++ b/gnu/packages/patches/tk-find-library.patch @@ -0,0 +1,29 @@ +This patch hard-codes the Tk library directory during package initialization. + +See . + +diff --git a/generic/tkWindow.c b/generic/tkWindow.c +index b5cbbab..96b5501 100644 +--- a/generic/tkWindow.c ++++ b/generic/tkWindow.c +@@ -988,6 +988,7 @@ TkCreateMainWindow( + + Tcl_SetVar2(interp, "tk_patchLevel", NULL, TK_PATCH_LEVEL, TCL_GLOBAL_ONLY); + Tcl_SetVar2(interp, "tk_version", NULL, TK_VERSION, TCL_GLOBAL_ONLY); ++ Tcl_SetVar2(interp, "tk_library", NULL, TK_LIBRARY, TCL_GLOBAL_ONLY); + + tsdPtr->numMainWindows++; + return tkwin; +diff --git a/unix/Makefile.in b/unix/Makefile.in +index f21fdbb..c61b0df 100644 +--- a/unix/Makefile.in ++++ b/unix/Makefile.in +@@ -1029,7 +1029,7 @@ tkVisual.o: $(GENERIC_DIR)/tkVisual.c + $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkVisual.c + + tkWindow.o: $(GENERIC_DIR)/tkWindow.c +- $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkWindow.c ++ $(CC) -c $(CC_SWITCHES) -DTK_LIBRARY=\"${TK_LIBRARY}\" $(GENERIC_DIR)/tkWindow.c + + tkButton.o: $(GENERIC_DIR)/tkButton.c + $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkButton.c diff --git a/gnu/packages/patches/torsocks-dns-test.patch b/gnu/packages/patches/torsocks-dns-test.patch new file mode 100644 index 0000000000..ba70ba5933 --- /dev/null +++ b/gnu/packages/patches/torsocks-dns-test.patch @@ -0,0 +1,18 @@ +Skip DNS tests that rely on the ability to look up arbitary +host names. + +--- torsocks/tests/test_dns.c 2015-11-10 18:30:53.955941984 +0100 ++++ torsocks/tests/test_dns.c 2015-11-10 18:31:02.199941892 +0100 +@@ -134,11 +134,8 @@ static void test_getaddrinfo(const struc + int main(int argc, char **argv) + { + /* Libtap call for the number of tests planned. */ +- plan_tests(NUM_TESTS); ++ plan_tests(1); + +- test_getaddrinfo(&tor_check); +- test_gethostbyname(&tor_dir_auth1); +- test_gethostbyaddr(&tor_dir_auth2); + test_getaddrinfo(&tor_localhost); + + return 0; diff --git a/gnu/packages/patches/weechat-python.patch b/gnu/packages/patches/weechat-python.patch new file mode 100644 index 0000000000..8182636ecb --- /dev/null +++ b/gnu/packages/patches/weechat-python.patch @@ -0,0 +1,40 @@ +Get Python LDFLAGS from 'pkg-config'. + +The other approach is more complex and gets it wrong: it returns +"-L/path/to/python/lib/python-2.7.10/lib/python2.7/config -lpython -lwhatever"; +since that config/ sub-directory contains libpython2.7.a, we end up +statically linking Python in Weechat's python.so, which we do not want. + +--- weechat-1.3/configure.ac 2015-08-16 08:27:07.000000000 +0200 ++++ weechat-1.3/configure.ac 2015-11-29 18:18:52.975197048 +0100 +@@ -535,29 +535,7 @@ if test "x$enable_python" = "xyes" ; the + if test -r "$PYTHON_INCLUDE/Python.h"; then + PYTHON_CFLAGS="-I$PYTHON_INCLUDE" + AC_MSG_RESULT(found) +- PYTHON_LIB=`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBPL'))"` +- PYTHON_LFLAGS="-lpython$PYTHON_VERSION "`$PYTHON -c "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_config_var('LIBS')+' '+distutils.sysconfig.get_config_var('SYSLIBS')+' '+distutils.sysconfig.get_config_var('LINKFORSHARED'))"` +- AC_MSG_CHECKING(for Python library) +- if test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.so"; then +- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" +- AC_MSG_RESULT(found) +- elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.a"; then +- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" +- AC_MSG_RESULT(found) +- elif test -r "$PYTHON_LIB/libpython$PYTHON_VERSION.dll.a"; then +- PYTHON_LFLAGS="-L$PYTHON_LIB $PYTHON_LFLAGS" +- AC_MSG_RESULT(found) +- elif test -r "$PYTHON_SYSPREFIX/lib/libpython$PYTHON_VERSION.so"; then +- PYTHON_LFLAGS="-L$PYTHON_SYSPREFIX/lib/ $PYTHON_LFLAGS" +- AC_MSG_RESULT(found) +- else +- AC_MSG_WARN([ +-*** Python library couldn't be found on your system. +-*** Try to install it with your software package manager. +-*** WeeChat will be built without Python support.]) +- enable_python="no" +- not_found="$not_found python" +- fi ++ PYTHON_LFLAGS=`pkg-config python2 --libs` + else + AC_MSG_WARN([ + *** Python header files couldn't be found on your system. diff --git a/gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch b/gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch new file mode 100644 index 0000000000..00e5b7c771 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch @@ -0,0 +1,32 @@ +From 6b12d93d2c7428a34bfd4b3813ba339ed57b698a Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 25 Oct 2015 15:45:50 +0200 +Subject: [PATCH] WNM: Ignore Key Data in WNM Sleep Mode Response frame if no + PMF in use + +WNM Sleep Mode Response frame is used to update GTK/IGTK only if PMF is +enabled. Verify that PMF is in use before using this field on station +side to avoid accepting unauthenticated key updates. (CVE-2015-5310) + +Signed-off-by: Jouni Malinen +--- + wpa_supplicant/wnm_sta.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c +index 954de67..7d79499 100644 +--- a/wpa_supplicant/wnm_sta.c ++++ b/wpa_supplicant/wnm_sta.c +@@ -187,6 +187,12 @@ static void wnm_sleep_mode_exit_success(struct wpa_supplicant *wpa_s, + end = ptr + key_len_total; + wpa_hexdump_key(MSG_DEBUG, "WNM: Key Data", ptr, key_len_total); + ++ if (key_len_total && !wpa_sm_pmf_enabled(wpa_s->wpa)) { ++ wpa_msg(wpa_s, MSG_INFO, ++ "WNM: Ignore Key Data in WNM-Sleep Mode Response - PMF not enabled"); ++ return; ++ } ++ + while (ptr + 1 < end) { + if (ptr + 2 + ptr[1] > end) { + wpa_printf(MSG_DEBUG, "WNM: Invalid Key Data element " diff --git a/gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch b/gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch new file mode 100644 index 0000000000..bfc4c74e95 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch @@ -0,0 +1,51 @@ +From bef802ece03f9ae9d52a21f0cf4f1bc2c5a1f8aa Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 1 Nov 2015 18:24:16 +0200 +Subject: [PATCH] EAP-pwd server: Fix last fragment length validation + +All but the last fragment had their length checked against the remaining +room in the reassembly buffer. This allowed a suitably constructed last +fragment frame to try to add extra data that would go beyond the buffer. +The length validation code in wpabuf_put_data() prevents an actual +buffer write overflow from occurring, but this results in process +termination. (CVE-2015-5314) + +Signed-off-by: Jouni Malinen +--- + src/eap_server/eap_server_pwd.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c +index cb83ff7..9f787ab 100644 +--- a/src/eap_server/eap_server_pwd.c ++++ b/src/eap_server/eap_server_pwd.c +@@ -970,7 +970,7 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, + /* + * the first and all intermediate fragments have the M bit set + */ +- if (EAP_PWD_GET_MORE_BIT(lm_exch)) { ++ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) { + if ((data->in_frag_pos + len) > wpabuf_size(data->inbuf)) { + wpa_printf(MSG_DEBUG, "EAP-pwd: Buffer overflow " + "attack detected! (%d+%d > %d)", +@@ -981,6 +981,8 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, + } + wpabuf_put_data(data->inbuf, pos, len); + data->in_frag_pos += len; ++ } ++ if (EAP_PWD_GET_MORE_BIT(lm_exch)) { + wpa_printf(MSG_DEBUG, "EAP-pwd: Got a %d byte fragment", + (int) len); + return; +@@ -990,8 +992,6 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, + * buffering fragments so that's how we know it's the last) + */ + if (data->in_frag_pos) { +- wpabuf_put_data(data->inbuf, pos, len); +- data->in_frag_pos += len; + pos = wpabuf_head_u8(data->inbuf); + len = data->in_frag_pos; + wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes", +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch b/gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch new file mode 100644 index 0000000000..82c26398b6 --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch @@ -0,0 +1,54 @@ +From 8057821706784608b828e769ccefbced95591e50 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 1 Nov 2015 18:18:17 +0200 +Subject: [PATCH] EAP-pwd peer: Fix last fragment length validation + +All but the last fragment had their length checked against the remaining +room in the reassembly buffer. This allowed a suitably constructed last +fragment frame to try to add extra data that would go beyond the buffer. +The length validation code in wpabuf_put_data() prevents an actual +buffer write overflow from occurring, but this results in process +termination. (CVE-2015-5315) + +Signed-off-by: Jouni Malinen +--- + src/eap_peer/eap_pwd.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c +index 1f78544..75ceef1 100644 +--- a/src/eap_peer/eap_pwd.c ++++ b/src/eap_peer/eap_pwd.c +@@ -903,7 +903,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, + /* + * buffer and ACK the fragment + */ +- if (EAP_PWD_GET_MORE_BIT(lm_exch)) { ++ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) { + data->in_frag_pos += len; + if (data->in_frag_pos > wpabuf_size(data->inbuf)) { + wpa_printf(MSG_INFO, "EAP-pwd: Buffer overflow attack " +@@ -916,7 +916,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, + return NULL; + } + wpabuf_put_data(data->inbuf, pos, len); +- ++ } ++ if (EAP_PWD_GET_MORE_BIT(lm_exch)) { + resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD, + EAP_PWD_HDR_SIZE, + EAP_CODE_RESPONSE, eap_get_id(reqData)); +@@ -930,10 +931,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, + * we're buffering and this is the last fragment + */ + if (data->in_frag_pos) { +- wpabuf_put_data(data->inbuf, pos, len); + wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes", + (int) len); +- data->in_frag_pos += len; + pos = wpabuf_head_u8(data->inbuf); + len = data->in_frag_pos; + } +-- +1.9.1 + diff --git a/gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch b/gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch new file mode 100644 index 0000000000..3088f6a6dc --- /dev/null +++ b/gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch @@ -0,0 +1,34 @@ +From 95577884ca4fa76be91344ff7a8d5d1e6dc3da61 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen +Date: Sun, 1 Nov 2015 19:35:44 +0200 +Subject: [PATCH] EAP-pwd peer: Fix error path for unexpected Confirm message + +If the Confirm message is received from the server before the Identity +exchange has been completed, the group has not yet been determined and +data->grp is NULL. The error path in eap_pwd_perform_confirm_exchange() +did not take this corner case into account and could end up +dereferencing a NULL pointer and terminating the process if invalid +message sequence is received. (CVE-2015-5316) + +Signed-off-by: Jouni Malinen +--- + src/eap_peer/eap_pwd.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c +index 75ceef1..892b590 100644 +--- a/src/eap_peer/eap_pwd.c ++++ b/src/eap_peer/eap_pwd.c +@@ -774,7 +774,8 @@ eap_pwd_perform_confirm_exchange(struct eap_sm *sm, struct eap_pwd_data *data, + wpabuf_put_data(data->outbuf, conf, SHA256_MAC_LEN); + + fin: +- bin_clear_free(cruft, BN_num_bytes(data->grp->prime)); ++ if (data->grp) ++ bin_clear_free(cruft, BN_num_bytes(data->grp->prime)); + BN_clear_free(x); + BN_clear_free(y); + if (data->outbuf == NULL) { +-- +1.9.1 + diff --git a/gnu/packages/patches/xfce4-session-fix-xflock4.patch b/gnu/packages/patches/xfce4-session-fix-xflock4.patch new file mode 100644 index 0000000000..74769e4257 --- /dev/null +++ b/gnu/packages/patches/xfce4-session-fix-xflock4.patch @@ -0,0 +1,31 @@ +From cbb9c769316b4d32956a2c78aa01a38b473f0cfc Mon Sep 17 00:00:00 2001 +From: David Thompson +Date: Fri, 30 Oct 2015 08:30:43 -0400 +Subject: [PATCH] xflock4: Do not override PATH with hardcoded value. + +The PATH "/bin:/usr/bin" may not be a valid search path on the user's +machine. The screen locking program may be in /usr/local/bin or +elsewhere. Distros that do not conform to the FHS, such as GuixSD and +NixOS, will not have their executables in either location. Thus, we +simply leave PATH alone. +--- + scripts/xflock4 | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/scripts/xflock4 b/scripts/xflock4 +index ec4d05d..e7981ac 100644 +--- a/scripts/xflock4 ++++ b/scripts/xflock4 +@@ -21,9 +21,6 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + # + +-PATH=/bin:/usr/bin +-export PATH +- + # Lock by xscreensaver or gnome-screensaver, if a respective daemon is running + for lock_cmd in \ + "xscreensaver-command -lock" \ +-- +2.5.0 + diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index d07e434190..5d6618a9ec 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,14 +29,18 @@ (define-public pcre (package (name "pcre") - (version "8.37") + (version "8.38") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/pcre/pcre/" - version "/pcre-" version ".tar.bz2")) + (uri (list + (string-append "ftp://ftp.csx.cam.ac.uk" + "/pub/software/programming/pcre/" + "pcre-" version ".tar.bz2") + (string-append "mirror://sourceforge/pcre/pcre/" + version "/pcre-" version ".tar.bz2"))) (sha256 (base32 - "17bqykp604p7376wj3q2nmjdhrb6v1ny8q08zdwi7qvc02l9wrsi")))) + "1pvra19ljkr5ky35y2iywjnsckrs9ch2anrf5b0dc91hw8v2vq5r")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) ("readline" ,readline) @@ -57,3 +62,37 @@ own native API, as well as a set of wrapper functions that correspond to the POSIX regular expression API.") (license license:bsd-3) (home-page "http://www.pcre.org/"))) + +(define-public pcre2 + (package + (name "pcre2") + (version "10.20") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/pcre/pcre2/" + version "/pcre2-" version ".tar.bz2")) + + (sha256 + (base32 + "0yj8mm9ll9zj3v47rvmmqmr1ybxk72rr2lym3rymdsf905qjhbik")))) + (build-system gnu-build-system) + (inputs `(("bzip2" ,bzip2) + ("readline" ,readline) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags '("--enable-unicode" + "--enable-pcregrep-libz" + "--enable-pcregrep-libbz2" + "--enable-pcretest-libreadline" + "--enable-unicode-properties" + "--enable-pcre2-16" + "--enable-pcre2-32" + "--enable-jit"))) + (synopsis "Perl Compatible Regular Expressions") + (description + "The PCRE library is a set of functions that implement regular expression +pattern matching using the same syntax and semantics as Perl 5. PCRE has its +own native API, as well as a set of wrapper functions that correspond to the +POSIX regular expression API.") + (license license:bsd-3) + (home-page "http://www.pcre.org/"))) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 03ed5113b1..4b30bf09d5 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -52,13 +52,13 @@ (define-public poppler (package (name "poppler") - (version "0.36.0") + (version "0.37.0") (source (origin (method url-fetch) (uri (string-append "http://poppler.freedesktop.org/poppler-" version ".tar.xz")) (sha256 (base32 - "13i440kv873wgmw50rs4d1v05cj0r7bqnghd70hp9vy44dxhdk4k")))) + "1vjvd0md8y37hlq3lsj0l01a3v3mzm572rzpn1311frvmrg9r7xq")))) (build-system gnu-build-system) ;; FIXME: more dependencies could be added ;; cairo output: no (requires cairo >= 1.10.0) @@ -68,7 +68,7 @@ ;; use libcurl: no (inputs `(("fontconfig" ,fontconfig) ("freetype" ,freetype) - ("libjpeg-8" ,libjpeg-8) + ("libjpeg" ,libjpeg) ("libpng" ,libpng) ("libtiff" ,libtiff) ("lcms" ,lcms) @@ -87,8 +87,7 @@ (arguments `(#:tests? #f ; no test data provided with the tarball #:configure-flags - '("--enable-libopenjpeg" - "--enable-xpdf-headers" ; to install header files + '("--enable-xpdf-headers" ; to install header files "--enable-zlib") #:phases (alist-cons-before diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 13db7b6e65..4cafb45d92 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -65,18 +65,16 @@ (substitute* "src/polkitbackend/polkitbackendjsauthority.c" (("systemd") "elogind")) - (substitute* "src/polkitagent/polkitagentsession.c" - (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") - "\"/run/setuid-programs/polkit-agent-helper-1\"")) + ;; GuixSD's polkit service stores actions under + ;; /etc/polkit-1/actions. (substitute* "src/polkitbackend/polkitbackendinteractiveauthority.c" (("PACKAGE_DATA_DIR \"/polkit-1/actions\"") - "\"/run/current-system/profile/share/polkit-1/actions\"")) - (substitute* "src/polkitbackend/polkitbackendjsauthority.c" - (("PACKAGE_SYSCONF_DIR \"/polkit-1/rules.d\"") - "\"/run/current-system/profile/etc/polkit-1/rules.d\"")) - (substitute* "src/polkitbackend/polkitbackendjsauthority.c" - (("PACKAGE_DATA_DIR \"/polkit-1/rules.d\"") - "\"/run/current-system/profile/share/polkit-1/rules.d\"")))))) + "PACKAGE_SYSCONF_DIR \"/polkit-1/actions\"")) + + ;; Set the setuid helper's real location. + (substitute* "src/polkitagent/polkitagentsession.c" + (("PACKAGE_PREFIX \"/lib/polkit-1/polkit-agent-helper-1\"") + "\"/run/setuid-programs/polkit-agent-helper-1\"")))))) (build-system gnu-build-system) (inputs `(("expat" ,expat) diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index 93055ecad3..fe976a92f4 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -27,7 +27,7 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) #:use-module (gnu packages check) - #:use-module (gnu packages gdbm) + #:use-module (gnu packages databases) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages libcanberra) @@ -50,7 +50,10 @@ version ".tar.gz")) (sha256 (base32 - "10j8mbb65xkyl0kfy0hpzpmrp0jkr12c7mfycqipxgka6ayns0ar")))) + "10j8mbb65xkyl0kfy0hpzpmrp0jkr12c7mfycqipxgka6ayns0ar")) + (patches + (map search-patch '("libsndfile-CVE-2014-9496.patch" + "libsndfile-CVE-2015-7805.patch"))))) (build-system gnu-build-system) (inputs `(("libvorbis" ,libvorbis) @@ -202,6 +205,8 @@ sound server.") (base32 "14486c6lmmirkhscbfygz114f6yzf97h35n3h3pdr27w4mdfmlmk")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("CXXFLAGS=-std=c++11"))) ; required by gtkmm (inputs `(("libcanberra" ,libcanberra) ("gtkmm" ,gtkmm) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index c972b62500..5880cac099 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -10,8 +10,12 @@ ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Christopher Allan Webber ;;; Copyright © 2015 Eric Dvorsak +;;; Copyright © 2015 David Thompson ;;; Copyright © 2015 Leo Famulari ;;; Copyright © 2015 Ben Woodcroft +;;; Copyright © 2015 Erik Edrosa +;;; Copyright © 2015 Efraim Flashner +;;; Copyright © 2015 Kyle Meyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,8 +43,8 @@ #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages databases) + #:use-module (gnu packages file) #:use-module (gnu packages fontutils) - #:use-module (gnu packages gdbm) #:use-module (gnu packages gcc) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) @@ -90,7 +94,12 @@ (sha256 (base32 "1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw")) - (patches (list (search-patch "python-2.7-search-paths.patch"))))) + (patches (map search-patch + '("python-2.7-search-paths.patch" + "python-2-deterministic-build-info.patch" + "python-2.7-source-date-epoch.patch"))))) + (outputs '("out" + "tk")) ;tkinter; adds 50 MiB to the closure (build-system gnu-build-system) (arguments `(#:tests? #f @@ -141,8 +150,8 @@ (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) - #:modules ((ice-9 ftw) - ,@%gnu-build-system-modules) + #:modules ((ice-9 ftw) (ice-9 match) + (guix build utils) (guix build gnu-build-system)) #:phases (modify-phases %standard-phases (add-before @@ -156,7 +165,28 @@ "Lib/distutils/tests/test_spawn.py" "Lib/test/test_subprocess.py")) (("/bin/sh") (which "sh"))) + + ;; Use zero as the timestamp in .pyc files so that builds are + ;; deterministic. TODO: Remove it when this variable is set in + ;; gnu-build-system.scm. + (setenv "SOURCE_DATE_EPOCH" "1") #t)) + (add-before 'configure 'do-not-record-configure-flags + (lambda* (#:key configure-flags #:allow-other-keys) + ;; Remove configure flags from the installed '_sysconfigdata.py' + ;; and 'Makefile' so we don't end up keeping references to the + ;; build tools. + ;; + ;; Preserve at least '--with-system-ffi' since otherwise the + ;; thing tries to build libffi, fails, and we end up with a + ;; Python that lacks ctypes. + (substitute* "configure" + (("^CONFIG_ARGS=.*$") + (format #f "CONFIG_ARGS='~a'\n" + (if (member "--with-system-ffi" configure-flags) + "--with-system-ffi" + "")))) + #t)) (add-before 'check 'pre-check (lambda _ @@ -174,7 +204,28 @@ (ftw "." (lambda (file stat flag) (utime file circa-1980 circa-1980) #t)) - #t)))))) + #t))) + (add-after 'install 'move-tk-inter + (lambda* (#:key outputs #:allow-other-keys) + ;; When Tkinter support is built move it to a separate output so + ;; that the main output doesn't contain a reference to Tcl/Tk. + (let ((out (assoc-ref outputs "out")) + (tk (assoc-ref outputs "tk"))) + (when tk + (match (find-files out "tkinter.*\\.so") + ((tkinter.so) + ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we + ;; want it under TK/lib/pythonX.Y/site-packages. + (let* ((len (string-length out)) + (target (string-append + tk "/" + (string-drop + (dirname (dirname tkinter.so)) + len) + "/site-packages"))) + (install-file tkinter.so target) + (delete-file tkinter.so))))) + #t)))))) (inputs `(("bzip2" ,bzip2) ("gdbm" ,gdbm) @@ -214,6 +265,7 @@ data types.") '("python-fix-tests.patch" ;; XXX Try removing this patch for python > 3.4.3 "python-disable-ssl-test.patch" + "python-3-deterministic-build-info.patch" "python-3-search-paths.patch"))) (patch-flags '("-p0")) (sha256 @@ -234,23 +286,21 @@ data types.") (define-public python2-minimal (package (inherit python-2) (name "python-minimal") + (outputs '("out")) (arguments (substitute-keyword-arguments (package-arguments python-2) - ((#:configure-flags _) - `(list "--enable-shared" - (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib"))))) + ((#:configure-flags cf) + `(append ,cf '("--without-system-ffi"))))) (inputs '()))) ;none of the optional dependencies (define-public python-minimal (package (inherit python) (name "python-minimal") + (outputs '("out")) (arguments (substitute-keyword-arguments (package-arguments python) - ((#:configure-flags _) - `(list "--enable-shared" - (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib"))))) + ((#:configure-flags cf) + `(append ,cf '("--without-system-ffi"))))) ;; OpenSSL is a mandatory dependency of Python 3.x, for urllib; ;; zlib is required by 'zipimport', used by pip. @@ -262,6 +312,7 @@ data types.") (name name) (source #f) (build-system trivial-build-system) + (outputs '("out")) (propagated-inputs `(("python" ,python))) (arguments `(#:modules ((guix build utils)) @@ -413,9 +464,10 @@ John the Ripper).") (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) + (propagated-inputs + `(("python-pycrypto" ,python-pycrypto))) (inputs - `(("python-ecdsa" ,python-ecdsa) - ("python-pycrypto" ,python-pycrypto))) + `(("python-ecdsa" ,python-ecdsa))) (home-page "http://www.paramiko.org/") (synopsis "SSHv2 protocol library") (description "Paramiko is a python implementation of the SSHv2 protocol, @@ -522,23 +574,22 @@ Cassandra cluster on localhost.") (define-public python-pytz (package (name "python-pytz") - (version "2013b") + (version "2015.7") (source (origin (method url-fetch) - (uri (string-append "https://launchpad.net/pytz/main/" version - "/+download/pytz-" version ".tar.bz2")) + (uri (pypi-uri "pytz" version)) (sha256 (base32 - "19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5")))) + "1spgdfp1ssya7v3kww7zp71xpj437skpqazcvqr3kr1p1brnw9lr")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; no test target - (home-page "https://launchpad.net/pytz") + (home-page "http://pythonhosted.org/pytz") (synopsis "Python timezone library") (description "This library allows accurate and cross platform timezone calculations using Python 2.4 or higher and provides access to the Olson timezone database.") - (license x11))) + (license license:expat))) (define-public python2-pytz (package-with-python2 python-pytz)) @@ -547,15 +598,14 @@ using Python 2.4 or higher and provides access to the Olson timezone database.") (define-public python-babel (package (name "python-babel") - (version "1.3") + (version "2.1.1") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/B/Babel/Babel-" - version ".tar.gz")) + (uri (pypi-uri "Babel" version)) (sha256 (base32 - "0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz")))) + "0j2jgfzj1a2m39pm2qc36fzr7a6p5ybwndi0xdzhi2p8zw7dbdkz")))) (build-system python-build-system) (inputs `(("python-pytz" ,python-pytz) @@ -776,7 +826,13 @@ etc.). The package is structured to make adding new modules easy.") (license public-domain))) (define-public python2-pycrypto - (package-with-python2 python-pycrypto)) + (let ((pycrypto (package-with-python2 python-pycrypto))) + (package (inherit pycrypto) + (inputs + `(("python" ,python-2) + ,@(alist-delete + "python" + (package-inputs pycrypto))))))) (define-public python-keyring (package @@ -819,20 +875,22 @@ password storage.") (license x11))) (define-public python2-keyring - (package-with-python2 python-keyring)) + (let ((keyring (package-with-python2 python-keyring))) + (package (inherit keyring) + (inputs + `(("python2-pycrypto" ,python2-pycrypto)))))) (define-public python-six (package (name "python-six") - (version "1.9.0") + (version "1.10.0") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/s/" - "six/six-" version ".tar.gz")) + (uri (pypi-uri "six" version)) (sha256 (base32 - "1mci5i8mjqmljmv33h0q3d4djc13zk1kfmb3fbvd3yy43x0m4h72")))) + "0snmb8xffb3vsma0z67i0h0w2g2dy0p3gsgh9gi4i0kgc5l8spqh")))) (build-system python-build-system) (inputs `(("python-setuptools" ,python-setuptools))) @@ -903,7 +961,7 @@ datetime module, available in Python 2.3+.") (define-public python-parsedatetime (package (name "python-parsedatetime") - (version "1.2") + (version "1.5") (source (origin (method url-fetch) @@ -911,11 +969,10 @@ datetime module, available in Python 2.3+.") "parsedatetime/parsedatetime-" version ".tar.gz")) (sha256 (base32 - "1zcj0pzxvpl4j2ma9awmpkfxldybi2kjaahjjpmgfbg5cxwcjsqv")))) + "1as0mm4ql3z0324nc9bys2s1ngh507i317p16b79rx86wlmvx9ix")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) - (arguments `(#:tests? #f)) ;no test target (home-page "http://github.com/bear/parsedatetime/") (synopsis "Parse human-readable date/time text") @@ -923,6 +980,9 @@ datetime module, available in Python 2.3+.") "Parse human-readable date/time text.") (license asl2.0))) +(define-public python2-parsedatetime + (package-with-python2 python-parsedatetime)) + (define-public python-pandas (package (name "python-pandas") @@ -959,7 +1019,12 @@ doing practical, real world data analysis in Python.") (license bsd-3))) (define-public python2-pandas - (package-with-python2 python-pandas)) + (let ((pandas (package-with-python2 python-pandas))) + (package (inherit pandas) + (propagated-inputs + `(("python2-numpy" ,python2-numpy) + ,@(alist-delete "python-numpy" + (package-propagated-inputs pandas))))))) (define-public python-tzlocal (package @@ -1501,7 +1566,7 @@ standard library.") (base32 "0wbs4i4x3x7klr3v35ss6p9mcqz883i1xgcpkhvl7n2lyv6yhpda")))) (inputs - `(("python2-setuptools" ,python-setuptools))) + `(("python2-setuptools" ,python2-setuptools))) (arguments `(#:python ,python-2 #:tests? #f)))) ; no setup.py test command @@ -1568,6 +1633,34 @@ and many external plugins.") (define-public python2-pytest (package-with-python2 python-pytest)) +(define-public python-pytest-cov + (package + (name "python-pytest-cov") + (version "2.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-cov" version)) + (sha256 + (base32 + "1lf9jsmhqk5nc4w3kzwglmdzjvmi7ajvrsnwv826j3bn0wzx8c92")))) + (build-system python-build-system) + (propagated-inputs + `(("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "https://github.com/pytest-dev/pytest-cov") + (synopsis "Pytest plugin for measuring coverage") + (description + "Pytest-cov produces coverage reports. It supports centralised testing and +distributed testing in both load and each modes. It also supports coverage +of subprocesses.") + (license license:expat))) + +(define-public python2-pytest-cov + (package-with-python2 python-pytest-cov)) + (define-public python-pytest-runner (package (name "python-pytest-runner") @@ -1595,6 +1688,7 @@ and many external plugins.") #t))))) (native-inputs `(("python-pytest" ,python-pytest) + ("python-setuptools" ,python-setuptools) ("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://bitbucket.org/pytest-dev/pytest-runner") (synopsis "Invoke py.test as a distutils command") @@ -2019,16 +2113,13 @@ files.") (define-public python-certifi (package (name "python-certifi") - (version "14.05.14") + (version "2015.11.20.1") (source (origin (method url-fetch) - (uri - (string-append - "https://pypi.python.org/packages/source/c/certifi/certifi-" - version ".tar.gz")) + (uri (pypi-uri "certifi" version)) (sha256 (base32 - "0s8vxzfz6s4m6fvxc7z25k9j35w0rh6jkw3wwcd1az1mssncn6qy")))) + "05lgwf9rz1kn465azy2bpb3zmpnsn9gkypbhnjlclchv98ssgc1h")))) (build-system python-build-system) (inputs `(("python-setuptools" ,python-setuptools))) @@ -2070,24 +2161,51 @@ with sensible defaults out of the box.") (define-public python2-click (package-with-python2 python-click)) +(define-public python-wheel + (package + (name "python-wheel") + (version "0.26.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "wheel" version)) + (sha256 + (base32 + "032k1ajijbqnv0z0k88bhf75mdimi18fcmm28mss90610lw3bbga")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-jsonschema" ,python-jsonschema) + ("python-pytest-cov" ,python-pytest-cov))) + (home-page "https://bitbucket.org/pypa/wheel/") + (synopsis "Built-package format for Python") + (description + "A wheel is a ZIP-format archive with a specially formatted filename and the +.whl extension. It is designed to contain all the files for a PEP 376 +compatible install in a way that is very close to the on-disk format.") + (license license:expat))) + +(define-public python2-wheel + (package-with-python2 python-wheel)) + (define-public python-requests (package (name "python-requests") - (version "2.4.0") + (version "2.8.1") (source (origin (method url-fetch) - (uri - (string-append - "https://pypi.python.org/packages/source/r/requests/requests-" - version ".tar.gz")) + (uri (pypi-uri "requests" version)) (sha256 (base32 - "0gknlfx1wakrrm1zi8gi03x2lzj4dsns0vjw0nsmgqvkphyf01vh")))) + "0ny2nr1sqr4hcn3903ghmh7w2yni8shlfv240a8c9p6wyidqvzl4")))) (build-system python-build-system) - (inputs - `(("python-setuptools" ,python-setuptools) - ("python-certifi" ,python-certifi))) - (arguments `(#:tests? #f)) ; no tests + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (propagated-inputs + `(("python-py" ,python-py) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-wheel" ,python-wheel))) (home-page "http://python-requests.org/") (synopsis "Python HTTP library") (description @@ -2155,19 +2273,18 @@ somewhat intelligeble.") (define-public python-pyjwt (package (name "python-pyjwt") - (version "0.2.1") + (version "1.4.0") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/P/PyJWT/PyJWT-" - version ".tar.gz")) + (uri (pypi-uri "PyJWT" version)) (sha256 (base32 - "1ahqblfy2sj3xz34wsa48cn9rp0dspzq56p54i5znmws3b8gml6g")))) + "1556v2jppd8mjkkj66pxb5rcazm35jq81r233mdl8hfmz9n3icp1")))) (build-system python-build-system) - (inputs - `(("python-setuptools" ,python-setuptools))) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-pytest-runner" ,python-pytest-runner))) (arguments '(#:tests? #f)) ; test suite doesn't work (home-page "http://github.com/progrium/pyjwt") @@ -2182,23 +2299,23 @@ somewhat intelligeble.") (define-public python-oauthlib (package (name "python-oauthlib") - (version "0.6.3") + (version "1.0.3") (source (origin (method url-fetch) - (uri - (string-append - "https://pypi.python.org/packages/source/o/oauthlib/oauthlib-" - version ".tar.gz")) + (uri (pypi-uri "oauthlib" version)) (sha256 (base32 - "1yaj3j64la4arwsbhbfmpnickzh3jpg9nlpyg409v8pp24isn48a")))) + "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg")))) (build-system python-build-system) - (inputs + (native-inputs `(("python-setuptools" ,python-setuptools) - ("python-pyjwt" ,python-pyjwt) - ("python-pycrypto" ,python-pycrypto) + ("python-coverage", python-coverage) ("python-nose" ,python-nose) ("python-mock" ,python-mock))) + (inputs + `(("python-blinker" ,python-blinker) + ("python-cryptography" ,python-cryptography) + ("python-pyjwt" ,python-pyjwt))) (home-page "https://github.com/idan/oauthlib") (synopsis "OAuth implementation for Python") (description @@ -2211,8 +2328,10 @@ OAuth request-signing logic.") (package (inherit base) (inputs - (append (package-inputs base) - `(("python2-unittest2" ,python2-unittest2))))))) + `(("python2-unittest2" ,python2-unittest2) + ("python2-cryptography" ,python2-cryptography) + ,@(alist-delete "python-cryptography" + (package-inputs base))))))) (define-public python-itsdangerous (package @@ -2351,6 +2470,29 @@ written in pure Python.") (define-public python2-jinja2 (package-with-python2 python-jinja2)) +(define-public python-pystache + (package + (name "python-pystache") + (version "0.5.4") + (source (origin + (method url-fetch) + (uri (pypi-uri "pystache" version)) + (sha256 + (base32 + "0nmqsfmiw4arjxqkmf9z66ml950pcdjk6aq4gin4sywmzdjw5fzp")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://defunkt.io/pystache/") + (synopsis "Python logic-less template engine") + (description + "Pystache is a Python implementation of the framework agnostic, +logic-free templating system Mustache.") + (license license:expat))) + +(define-public python2-pystache + (package-with-python2 python-pystache)) + (define-public python-joblib (package (name "python-joblib") @@ -2704,7 +2846,11 @@ mining and data analysis.") ,@(package-native-inputs scikit-image))) (propagated-inputs `(("python2-pytz" ,python2-pytz) - ,@(package-propagated-inputs scikit-image)))))) + ("python2-matplotlib" ,python2-matplotlib) + ("python2-numpy" ,python2-numpy) + ("python2-scipy" ,python2-scipy) + ,@(fold alist-delete (package-propagated-inputs scikit-image) + '("python-matplotlib" "python-numpy" "python-scipy"))))))) (define-public python-redis (package @@ -3060,10 +3206,47 @@ that client code uses to construct the grammar directly in Python code.") (define-public python2-numpydoc (package-with-python2 python-numpydoc)) +(define-public python-numexpr + (package + (name "python-numexpr") + (version "2.4.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/" + "n/numexpr/numexpr-" version ".tar.gz")) + (sha256 + (base32 + "0nsnff5312fm38w6dm34bw7ghfqqy8vl9gig0al963h4mz8zm8nz")))) + (build-system python-build-system) + (arguments `(#:tests? #f)) ; no tests included + (propagated-inputs + `(("python-numpy" ,python-numpy))) + (home-page "https://github.com/pydata/numexpr") + (synopsis "Fast numerical expression evaluator for NumPy") + (description + "Numexpr is a fast numerical expression evaluator for NumPy. With it, +expressions that operate on arrays are accelerated and use less memory than +doing the same calculation in Python. In addition, its multi-threaded +capabilities can make use of all your cores, which may accelerate +computations, most specially if they are not memory-bounded (e.g. those using +transcendental functions).") + (license license:expat))) + +(define-public python2-numexpr + (let ((numexpr (package-with-python2 python-numexpr))) + (package (inherit numexpr) + ;; Make sure to use special packages for Python 2 instead + ;; of those automatically rewritten by package-with-python2. + (propagated-inputs + `(("python2-numpy" ,python2-numpy) + ,@(alist-delete "python-numpy" + (package-propagated-inputs numexpr))))))) + (define-public python-matplotlib (package (name "python-matplotlib") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) @@ -3071,13 +3254,15 @@ that client code uses to construct the grammar directly in Python code.") "/matplotlib-" version ".tar.gz")) (sha256 (base32 - "0m6v9nwdldlwk22gcd339zg6mny5m301fxgks7z8sb8m9wawg8qp")))) + "1dn05cvd0g984lzhh72wa0z93psgwshbbg93fkab6slx5m3l95av")) + (patches (list (search-patch "matplotlib-setupext-tk.patch"))))) (build-system python-build-system) (outputs '("out" "doc")) (propagated-inputs ; the following packages are all needed at run time `(("python-pyparsing" ,python-pyparsing) ("python-pygobject" ,python-pygobject) ("gobject-introspection" ,gobject-introspection) + ("python-tkinter" ,python "tk") ;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated ;; from 'gtk+') provides the required 'typelib' files used by ;; 'gobject-introspection'. The location of these files is set with the @@ -3112,7 +3297,8 @@ that client code uses to construct the grammar directly in Python code.") ;; FIXME: Add backends when available. ;("python-wxpython" ,python-wxpython) ;("python-pyqt" ,python-pyqt) - )) + ("tcl" ,tcl) + ("tk" ,tk))) (native-inputs `(("pkg-config" ,pkg-config) ("texlive" ,texlive) @@ -3131,8 +3317,12 @@ that client code uses to construct the grammar directly in Python code.") (setenv "HOME" (getcwd)) (call-with-output-file "setup.cfg" (lambda (port) - (format port "[rc_options]~% -backend = GTK3Agg~%"))))) + (format port "[directories]~% +basedirlist = ~a,~a~% +[rc_options]~% +backend = TkAgg~%" + (assoc-ref inputs "tcl") + (assoc-ref inputs "tk")))))) (alist-cons-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) @@ -3150,13 +3340,23 @@ backend = GTK3Agg~%"))))) ;; The doc recommends to run the 'html' target twice. (system* "python" "make.py" "html") (system* "python" "make.py" "html") + (copy-recursively "build/html" html) (system* "python" "make.py" "latex") (system* "python" "make.py" "texinfo") + (symlink (string-append html "/_images") + (string-append info "/matplotlib-figures")) + (with-directory-excursion "build/texinfo" + (substitute* "matplotlib.texi" + (("@image\\{([^,]*)" all file) + (string-append "@image{matplotlib-figures/" file))) + (symlink (string-append html "/_images") + "./matplotlib-figures") + (system* "makeinfo" "--no-split" + "-o" "matplotlib.info" "matplotlib.texi")) (copy-file "build/texinfo/matplotlib.info" (string-append info "/matplotlib.info")) (copy-file "build/latex/Matplotlib.pdf" - (string-append doc "/Matplotlib.pdf")) - (copy-recursively "build/html" html)))) + (string-append doc "/Matplotlib.pdf"))))) %standard-phases)))) (home-page "http://matplotlib.org") (synopsis "2D plotting library for Python") @@ -3176,10 +3376,9 @@ toolkits.") (propagated-inputs `(("python2-pycairo" ,python2-pycairo) ("python2-pygobject-2" ,python2-pygobject-2) - ,@(alist-delete "python-pycairo" - (alist-delete "python-pygobject" - (package-propagated-inputs - matplotlib)))))))) + ("python2-tkinter" ,python-2 "tk") + ,@(fold alist-delete (package-propagated-inputs matplotlib) + '("python-pycairo" "python-pygobject" "python-tkinter"))))))) (define-public python2-pysnptools (package @@ -3456,7 +3655,7 @@ services for your Python modules and applications.") (define-public python-pillow (package (name "python-pillow") - (version "2.8.1") + (version "3.0.0") (source (origin (method url-fetch) @@ -3464,7 +3663,7 @@ services for your Python modules and applications.") "Pillow/Pillow-" version ".tar.gz")) (sha256 (base32 - "15n92axxph2s3kvg68bki9gv3nzwgq7130kp7wbblpi1l0cc2q47")))) + "1fsl6sywd4f4axvbpy5h5h26l6w8592j0f1wcnj1hmgy83svwl5d")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools) @@ -3833,20 +4032,19 @@ child application and control it as if a human were typing commands.") (define-public python-setuptools-scm (package (name "python-setuptools-scm") - (version "1.8.0") + (version "1.9.0") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/s/" - "setuptools_scm/setuptools_scm-" - version ".tar.bz2")) + (uri (pypi-uri "setuptools_scm" version)) (sha256 (base32 - "00p60v2yfqy1r58pjcx9wy6dvqd7wkpfs5z1dzwf7y75c1g3dgyx")))) + "0y24bl893zk6nrklbvdrlmpkalf214zjn6k1xrglljd29rrn4wxi")))) (build-system python-build-system) + (native-inputs `(("python-setuptools" ,python-setuptools))) (home-page "https://github.com/pypa/setuptools_scm/") (synopsis "Manage Python package versions in SCM metadata") (description - "setuptools_scm handles managing your Python package versions in + "Setuptools_scm handles managing your Python package versions in @dfn{software configuration management} (SCM) metadata instead of declaring them as the version argument or in a SCM managed file.") (license license:expat))) @@ -3869,7 +4067,8 @@ them as the version argument or in a SCM managed file.") (propagated-inputs `(("python-appdirs" ,python-appdirs))) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm) + `(("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm) ("python-pytest" ,python-pytest) ("python-pytest-runner" ,python-pytest-runner))) (home-page "http://github.com/jaraco/path.py") @@ -3896,6 +4095,8 @@ common operations on files to be invoked on those path objects directly.") (build-system python-build-system) (propagated-inputs `(("python-pathpy" ,python-pathpy))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) (home-page "https://github.com/vivainio/pickleshare") (synopsis "Tiny key value database with concurrency support") (description @@ -3924,7 +4125,8 @@ PickleShare.") (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw")))) (build-system python-build-system) (native-inputs - `(("unzip" ,unzip))) + `(("python-setuptools" ,python-setuptools) + ("unzip" ,unzip))) (home-page "http://cheeseshop.python.org/pypi/simplegeneric") (synopsis "Python module for simple generic functions") (description @@ -4018,7 +4220,7 @@ without using the configuration machinery.") `(("readline" ,readline) ("which" ,which) ("python-matplotlib" ,python-matplotlib) - ("python-numpy" ,python-numpy-bootstrap) + ("python-numpy" ,python-numpy) ("python-numpydoc" ,python-numpydoc) ("python-jinja2" ,python-jinja2) ("python-mistune" ,python-mistune) @@ -4108,8 +4310,9 @@ computing.") (inputs `(("python2-mock" ,python2-mock) ("python2-matplotlib" ,python2-matplotlib) - ,@(alist-delete "python-matplotlib" - (package-inputs ipython))))))) + ("python2-numpy" ,python2-numpy) + ,@(fold alist-delete (package-inputs ipython) + '("python-matplotlib" "python-numpy"))))))) (define-public python-isodate (package @@ -4211,6 +4414,17 @@ features useful for text console applications.") (sha256 (base32 "1py62qir966lvdkngg0v8k1khsqxwk5m4s8nflpk1agk5f5nqb71")))) (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before + 'check 'pre-check + (lambda _ + ;; XXX: For the missing '/etc/machine-id'. + (substitute* "test/run-test.sh" + (("DBUS_FATAL_WARNINGS=1") + "DBUS_FATAL_WARNINGS=0")) + #t))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -4542,7 +4756,9 @@ and statistical routines from scipy and statsmodels.") (package (inherit seaborn) (propagated-inputs `(("python2-pytz" ,python2-pytz) - ,@(package-propagated-inputs seaborn)))))) + ("python2-pandas" ,python2-pandas) + ("python2-matplotlib" ,python2-matplotlib) + ("python2-scipy" ,python2-scipy)))))) (define-public python-sympy (package @@ -4677,7 +4893,7 @@ It is written entirely in Python.") `(("python-certifi" ,python-certifi))) (native-inputs `(("python-setuptools" ,python-setuptools))) - (home-page "https://pypi.python.org/pypi/tornado/4.1") + (home-page "http://www.tornadoweb.org/") (synopsis "Python web framework and asynchronous networking library") (description "Tornado is a Python web framework and asynchronous networking library, @@ -4846,6 +5062,20 @@ complexity of Python source code.") (define-public python2-mccabe (package-with-python2 python-mccabe)) +(define-public python-mccabe-0.2.1 + (package (inherit python-mccabe) + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mccabe" version)) + (sha256 + (base32 + "0fi4a81kr5bcv5p4xgibqr595hyj5dafkqgsmfk96mfy8w71fajs")))))) + +(define-public python2-mccabe-0.2.1 + (package-with-python2 python-mccabe-0.2.1)) + ;; Flake8 2.4.1 requires an older version of pep8. ;; This should be removed ASAP. (define-public python-pep8-1.5.7 @@ -4916,6 +5146,29 @@ complexity of Python source code.") (define-public python2-flake8 (package-with-python2 python-flake8)) +;; This will only be needed by the python-hacking package and will not be +;; necessary once python-hacking > 0.10.2 is released. +(define-public python-flake8-2.2.4 + (package (inherit python-flake8) + (inputs + `(("python-setuptools" ,python-setuptools) + ("python-pep8" ,python-pep8-1.5.7) + ("python-pyflakes" ,python-pyflakes-0.8.1) + ("python-mccabe" ,python-mccabe-0.2.1) + ("python-mock" ,python-mock) + ("python-nose" ,python-nose))) + (version "2.2.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flake8" version)) + (sha256 + (base32 + "1r9wsry4va45h1rck5hxd3vzsg2q3y6lnl6pym1bxvz8ry19jwx8")))))) + +(define-public python2-flake8-2.2.4 + (package-with-python2 python-flake8-2.2.4)) + (define-public python-mistune (package (name "python-mistune") @@ -5464,7 +5717,7 @@ responses, rather than doing any computation.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) @@ -5473,7 +5726,7 @@ responses, rather than doing any computation.") version ".tar.gz")) (sha256 (base32 - "1i2chlyhlx4792di82fqzcy9wz0gnnc661bj46zr794ip4629sp4")))) + "0dx98kcypmarwwhi6rjwy30ridys2ja6mc6mjf0svd4nllkaljdq")))) (build-system python-build-system) (native-inputs `(("python-setuptools" ,python-setuptools))) @@ -5490,7 +5743,7 @@ responses, rather than doing any computation.") (define-public python-cryptography (package (name "python-cryptography") - (version "1.0.1") + (version "1.0.2") (source (origin (method url-fetch) @@ -5498,7 +5751,7 @@ responses, rather than doing any computation.") "cryptography/cryptography-" version ".tar.gz")) (sha256 (base32 - "1lxzvhlyl6h6nm77n34622rcj2cxnx220x9vgjlw76wjd8m0kqyg")))) + "1jmcidddbbgdavvnvjjc0pda4b9a5i9idsivchn69pqxx68x8k6n")))) (build-system python-build-system) (inputs `(("openssl" ,openssl))) @@ -5713,3 +5966,653 @@ Python's @code{ctypes} foreign function interface (FFI).") (define-public python2-libarchive-c (package-with-python2 python-libarchive-c)) + +(define-public python-file + (package + (inherit file) + (name "python-file") + (build-system python-build-system) + (arguments + '(#:tests? #f ;no tests + #:phases (modify-phases %standard-phases + (add-before 'build 'change-directory + (lambda _ + (chdir "python") + #t)) + (add-before 'build 'set-library-file-name + (lambda* (#:key inputs #:allow-other-keys) + (let ((file (assoc-ref inputs "file"))) + (substitute* "magic.py" + (("find_library\\('magic'\\)") + (string-append "'" file "/lib/libmagic.so'"))) + #t)))))) + (inputs `(("file" ,file))) + (self-native-input? #f) + (synopsis "Python bindings to the libmagic file type guesser"))) + +(define-public python2-file + (package-with-python2 python-file)) + +(define-public python-debian + (package + (name "python-debian") + (version "0.1.23") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/p/python-debian/python-debian-" + version ".tar.gz")) + (sha256 + (base32 + "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh")))) + (build-system python-build-system) + (inputs + `(("python-six" ,python-six))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://packages.debian.org/sid/python-debian") + (synopsis "Debian package related modules") + (description + ;; XXX: Use @enumerate instead of @itemize to work around + ;; . + "This package provides Python modules that abstract many formats of +Debian-related files, such as: + +@enumerate +@item Debtags information; +@item @file{debian/changelog} files; +@item packages files, pdiffs; +@item control files of single or multiple RFC822-style paragraphs---e.g. + @file{debian/control}, @file{.changes}, @file{.dsc}; +@item Raw @file{.deb} and @file{.ar} files, with (read-only) access to + contained files and meta-information. +@end enumerate\n") + + ;; Modules are either GPLv2+ or GPLv3+. + (license gpl3+))) + +(define-public python2-debian + (package-with-python2 python-debian)) + +(define-public python-chardet + (package + (name "python-chardet") + (version "2.3.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/c/chardet/chardet-" + version + ".tar.gz")) + (sha256 + (base32 + "1ak87ikcw34fivcgiz2xvi938dmclh078az65l9x3rmgljrkhgp5")))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "https://github.com/chardet/chardet") + (synopsis "Universal encoding detector for Python 2 and 3") + (description + "This package provides @code{chardet}, a Python module that can +automatically detect a wide range of file encodings.") + (license lgpl2.1+))) + +(define-public python2-chardet + (package-with-python2 python-chardet)) + +(define-public python-docopt + (package + (name "python-docopt") + (version "0.6.2") + (source + (origin + (method url-fetch) + ;; The release on PyPI does not include tests. + (uri (string-append + "https://github.com/docopt/docopt/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16bf890xbdz3m30rsv2qacklh2rdn1zrfspfnwzx9g7vwz8yw4r1")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-setuptools" ,python-setuptools))) + (arguments + `(#:phases (alist-replace + 'check + (lambda _ (zero? (system* "py.test"))) + %standard-phases))) + (home-page "http://docopt.org") + (synopsis "Command-line interface description language for Python") + (description "This library allows the user to define a command-line +interface from a program's help message rather than specifying it +programatically with command-line parsers like @code{getopt} and +@code{argparse}.") + (license license:expat))) + +(define-public python2-docopt + (package-with-python2 python-docopt)) + +(define-public python-zope-event + (package + (name "python-zope-event") + (version "4.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.event/zope.event-" version ".tar.gz")) + (sha256 + (base32 + "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw")))) + (build-system python-build-system) + (inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://pypi.python.org/pypi/zope.event") + (synopsis "Event publishing system for Python") + (description "Zope.event provides an event publishing API, intended for +use by applications which are unaware of any subscribers to their events. It +is a simple event-dispatching system on which more sophisticated event +dispatching systems can be built.") + (license zpl2.1))) + +(define-public python2-zope-event + (package-with-python2 python-zope-event)) + +(define-public python-zope-interface + (package + (name "python-zope-interface") + (version "4.1.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.interface/zope.interface-" version ".tar.gz")) + (sha256 + (base32 + "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if")))) + (build-system python-build-system) + (propagated-inputs + `(("python-zope-event" ,python-zope-event))) + (home-page "https://github.com/zopefoundation/zope.interface") + (synopsis "Python implementation of the \"design by contract\" +methodology") + (description "Zope.interface provides an implementation of \"object +interfaces\" for Python. Interfaces are a mechanism for labeling objects as +conforming to a given API or contract.") + (license zpl2.1))) + +(define-public python2-zope-interface + (package-with-python2 python-zope-interface)) + +(define-public python-zope-exceptions + (package + (name "python-zope-exceptions") + (version "4.0.8") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.exceptions/zope.exceptions-" + version ".tar.gz")) + (sha256 + (base32 + "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl")))) + (build-system python-build-system) + (arguments + '(#:tests? #f)) ; circular dependency with zope.testrunner + (propagated-inputs + `(("python-zope-interface" ,python-zope-interface))) + (home-page "http://cheeseshop.python.org/pypi/zope.exceptions") + (synopsis "Zope exceptions") + (description "Zope.exceptions provides general-purpose exception types +that have uses outside of the Zope framework.") + (license zpl2.1))) + +(define-public python2-zope-exceptions + (package-with-python2 python-zope-exceptions)) + +(define-public python-zope-testing + (package + (name "python-zope-testing") + (version "4.5.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.testing/zope.testing-" version ".tar.gz")) + (sha256 + (base32 + "1yvglxhzvhl45mndvn9gskx2ph30zz1bz7rrlyfs62fv2pvih90s")))) + (build-system python-build-system) + (native-inputs + `(("python-zope-exceptions" ,python-zope-exceptions))) + (propagated-inputs + `(("python-zope-interface" ,python-zope-interface))) + (home-page "http://pypi.python.org/pypi/zope.testing") + (synopsis "Zope testing helpers") + (description "Zope.testing provides a number of testing utilities for HTML +forms, HTTP servers, regular expressions, and more.") + (license zpl2.1))) + +(define-public python2-zope-testing + (package-with-python2 python-zope-testing)) + +(define-public python-zope-testrunner + (package + (name "python-zope-testrunner") + (version "4.4.9") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.testrunner/zope.testrunner-" + version ".zip")) + (sha256 + (base32 + "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1")))) + (build-system python-build-system) + (native-inputs + `(("python-six" ,python-six) + ("python-zope-exceptions" ,python-zope-exceptions) + ("python-zope-testing" ,python-zope-testing) + ("unzip" ,unzip))) + (propagated-inputs + `(("python-zope-interface" ,python-zope-interface))) + (home-page "http://pypi.python.org/pypi/zope.testrunner") + (synopsis "Zope testrunner script") + (description "Zope.testrunner provides a script for running Python +tests.") + (license zpl2.1))) + +(define-public python2-zope-testrunner + (let ((base (package-with-python2 python-zope-testrunner))) + (package + (inherit base) + (native-inputs + (append (package-native-inputs base) + `(("python2-subunit" ,python2-subunit) + ("python2-mimeparse" ,python2-mimeparse))))))) + +(define-public python-zope-i18nmessageid + (package + (name "python-zope-i18nmessageid") + (version "4.0.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/z" + "/zope.i18nmessageid/zope.i18nmessageid-" + version ".tar.gz")) + (sha256 + (base32 + "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml")))) + (build-system python-build-system) + (inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "http://pypi.python.org/pypi/zope.i18nmessageid") + (synopsis "Message identifiers for internationalization") + (description "Zope.i18nmessageid provides facilities for declaring +internationalized messages within program source text.") + (license zpl2.1))) + +(define-public python2-zope-i18nmessageid + (package-with-python2 python-zope-i18nmessageid)) + +(define-public python-zope-schema + (package + (name "python-zope-schema") + (version "4.4.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.schema/zope.schema-" version ".tar.gz")) + (sha256 + (base32 + "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank")))) + (build-system python-build-system) + (propagated-inputs + `(("python-zope-event" ,python-zope-event) + ("python-zope-interface" ,python-zope-interface))) + (native-inputs + `(("python-zope-testing" ,python-zope-testing))) + (home-page "http://pypi.python.org/pypi/zope.schema") + (synopsis "Zope data schemas") + (description "Zope.scheme provides extensions to zope.interface for +defining data schemas.") + (license zpl2.1))) + +(define-public python2-zope-schema + (package-with-python2 python-zope-schema)) + +(define-public python-zope-configuration + (package + (name "python-zope-configuration") + (version "4.0.3") + (source (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.configuration/zope.configuration-" + version ".tar.gz")) + (sha256 + (base32 + "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n")))) + (build-system python-build-system) + (propagated-inputs + `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid) + ("python-zope-schema" ,python-zope-schema))) + (home-page "http://pypi.python.org/pypi/zope.configuration") + (synopsis "Zope Configuration Markup Language") + (description "Zope.configuration implements ZCML, the Zope Configuration +Markup Language.") + (license zpl2.1))) + +(define-public python2-zope-configuration + (package-with-python2 python-zope-configuration)) + +(define-public python-zope-proxy + (package + (name "python-zope-proxy") + (version "4.1.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.proxy/zope.proxy-" version ".tar.gz")) + (sha256 + (base32 + "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4")))) + (build-system python-build-system) + (propagated-inputs + `(("python-zope-interface" ,python-zope-interface))) + (home-page "http://pypi.python.org/pypi/zope.proxy") + (synopsis "Generic, transparent proxies") + (description "Zope.proxy provides generic, transparent proxies for Python. +Proxies are special objects which serve as mostly-transparent wrappers around +another object, intervening in the apparent behavior of the wrapped object +only when necessary to apply the policy (e.g., access checking, location +brokering, etc.) for which the proxy is responsible.") + (license zpl2.1))) + +(define-public python2-zope-proxy + (package-with-python2 python-zope-proxy)) + +(define-public python-zope-location + (package + (name "python-zope-location") + (version "4.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.location/zope.location-" version ".tar.gz")) + (sha256 + (base32 + "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74")))) + (build-system python-build-system) + (native-inputs + `(("python-zope-proxy" ,python-zope-proxy) + ("python-zope-schema" ,python-zope-schema))) + (home-page "http://pypi.python.org/pypi/zope.location/") + (synopsis "Zope location library") + (description "Zope.location implements the concept of \"locations\" in +Zope3, which are are special objects that have a structural location.") + (license zpl2.1))) + +(define-public python2-zope-location + (package-with-python2 python-zope-location)) + +(define-public python-zope-security + (package + (name "python-zope-security") + (version "4.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.security/zope.security-" version ".tar.gz")) + (sha256 + (base32 + "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy")))) + (build-system python-build-system) + (propagated-inputs + `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid) + ("python-zope-component" ,python-zope-component) + ("python-zope-location" ,python-zope-location) + ("python-zope-proxy" ,python-zope-proxy) + ("python-zope-schema" ,python-zope-schema) + ("python-zope-testrunner" ,python-zope-testrunner) + ("python-zope-testing" ,python-zope-testing))) + (home-page "http://pypi.python.org/pypi/zope.security") + (synopsis "Zope security framework") + (description "Zope.security provides a generic mechanism to implement +security policies on Python objects.") + (license zpl2.1))) + +(define-public python2-zope-security + (let ((zope-security (package-with-python2 python-zope-security))) + (package (inherit zope-security) + (propagated-inputs + `(("python2-zope-testrunner" ,python2-zope-testrunner) + ,@(alist-delete + "python-zope-testrunner" + (package-propagated-inputs zope-security))))))) + +(define-public python-zope-component + (package + (name "python-zope-component") + (version "4.2.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/z" + "/zope.component/zope.component-" version ".tar.gz")) + (sha256 + (base32 + "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18")))) + (build-system python-build-system) + (arguments + ;; Skip tests due to circular dependency with python-zope-security. + '(#:tests? #f)) + (native-inputs + `(("python-zope-testing" ,python-zope-testing))) + (propagated-inputs + `(("python-zope-event" ,python-zope-event) + ("python-zope-interface" ,python-zope-interface) + ("python-zope-i18nmessageid" ,python-zope-i18nmessageid) + ("python-zope-configuration" ,python-zope-configuration))) + (home-page "https://github.com/zopefoundation/zope.component") + (synopsis "Zope Component Architecture") + (description "Zope.component represents the core of the Zope Component +Architecture. Together with the zope.interface package, it provides +facilities for defining, registering and looking up components.") + (license zpl2.1))) + +(define-public python2-zope-component + (package-with-python2 python-zope-component)) + +(define-public python2-pythondialog + (package + (name "python2-pythondialog") + (version "3.3.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/p/" + "python2-pythondialog/python2-pythondialog-" + version ".tar.gz")) + (sha256 + (base32 + "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-path + (lambda* (#:key inputs #:allow-other-keys) + (let* ((dialog (assoc-ref inputs "dialog"))) + ;; Since this library really wants to grovel the search path, we + ;; must hardcode dialog's store path into it. + (substitute* "dialog.py" + (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)") + (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\""))) + #t)))) + #:python ,python-2 + #:tests? #f)) ; no test suite + (propagated-inputs + `(("dialog" ,dialog))) + (home-page "http://pythondialog.sourceforge.net/") + (synopsis "Python interface to the UNIX dialog utility") + (description "A Python wrapper for the dialog utility. Its purpose is to +provide an easy to use, pythonic and comprehensive Python interface to dialog. +This allows one to make simple text-mode user interfaces on Unix-like systems") + (license lgpl2.1))) + +(define-public python-pyrfc3339 + (package + (name "python-pyrfc3339") + (version "0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/p/" + "pyRFC3339/pyRFC3339-" version ".tar.gz")) + (sha256 + (base32 + "1pp648xsjaw9h1xq2mgwzda5wis2ypjmzxlksc1a8grnrdmzy155")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pytz" ,python-pytz))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-setuptools" ,python-setuptools))) + (home-page "https://github.com/kurtraschke/pyRFC3339") + (synopsis "Python timestamp library") + (description "Python library for generating and parsing RFC 3339-compliant +timestamps.") + (license license:expat))) + +(define-public python2-pyrfc3339 + (package-with-python2 python-pyrfc3339)) + +(define-public python-werkzeug + (package + (name "python-werkzeug") + (version "0.11.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/W/Werkzeug" + "/Werkzeug-" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1gzwn1lkl90f3l1nzzxr7vjhm21qk8f837i8rvny5a209fcrhkzb")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "http://werkzeug.pocoo.org/") + (synopsis "Utilities for WSGI applications") + (description "One of the most advanced WSGI utility modules. It includes a +powerful debugger, full-featured request and response objects, HTTP utilities to +handle entity tags, cache control headers, HTTP dates, cookie handling, file +uploads, a powerful URL routing system and a bunch of community-contributed +addon modules.") + (license x11))) + +(define-public python2-werkzeug + (package-with-python2 python-werkzeug)) + +(define-public python-configobj + (package + (name "python-configobj") + (version "5.0.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/c/configobj/" + "configobj-" version ".tar.gz")) + (sha256 + (base32 + "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2")) + ;; Patch setup.py so it looks for python-setuptools, which is + ;; required to parse the keyword 'install_requires' in setup.py. + (patches (list (search-patch "python-configobj-setuptools.patch"))))) + (build-system python-build-system) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-six" ,python-six))) + (synopsis "Config file reading, writing and validation") + (description "ConfigObj is a simple but powerful config file reader and +writer: an ini file round tripper. Its main feature is that it is very easy to +use, with a straightforward programmer’s interface and a simple syntax for +config files.") + (home-page "https://github.com/DiffSK/configobj") + (license bsd-3))) + +(define-public python2-configobj + (package-with-python2 python-configobj)) + +(define-public python-configargparse + (package + (name "python-configargparse") + (version "0.10.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/C/ConfigArgParse/" + "ConfigArgParse-" version ".tar.gz")) + (sha256 + (base32 + "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v")))) + (build-system python-build-system) + (arguments + ;; FIXME: Bug in test suite filed upstream: + ;; https://github.com/bw2/ConfigArgParse/issues/32 + '(#:tests? #f)) + (synopsis "Replacement for argparse") + (description "A drop-in replacement for argparse that allows options to also +be set via config files and/or environment variables.") + (home-page "https://github.com/bw2/ConfigArgParse") + (license license:expat))) + +(define-public python2-configargparse + (package-with-python2 python-configargparse)) + +(define-public python-ndg-httpsclient + (package + (name "python-ndg-httpsclient") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/n/ndg-httpsclient/" + "ndg_httpsclient-" version ".tar.gz")) + (sha256 + (base32 + "0x32ibixm3vv5m9xfk83xsqm8xcqw4dd0khbh6qbri6rxgymbhg8")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pyopenssl" ,python-pyopenssl))) + (synopsis "HTTPS support for Python's httplib and urllib2") + (description "This is a HTTPS client implementation for httplib and urllib2 +based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation +over the default provided with Python and importantly enables full verification +of the SSL peer.") + (home-page "https://github.com/cedadev/ndg_httpsclient/") + (license bsd-3))) + +;; python2-openssl requires special care, so package-with-python2 is +;; insufficient. +(define-public python2-ndg-httpsclient + (package (inherit python-ndg-httpsclient) + (name "python2-ndg-httpsclient") + (arguments `(#:python ,python-2)) + (propagated-inputs + `(("python2-pyopenssl" ,python2-pyopenssl))))) diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index fc90346371..a6abb48913 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -38,12 +38,34 @@ #:use-module (gnu packages xdisorg) #:use-module (gnu packages gl) #:use-module (gnu packages sdl) - #:use-module (gnu packages perl)) + #:use-module (gnu packages perl) + #:use-module (srfi srfi-1)) -(define-public qemu-headless - ;; This is QEMU without GUI support. +(define (qemu-patch commit file-name sha256) + "Return an origin for COMMIT." + (origin + (method url-fetch) + (uri (string-append + "http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h=" + commit)) + (sha256 sha256) + (file-name file-name))) + +(define %glib-memory-vtable-patch + (qemu-patch "deb847bf" + "qemu-glib-memory-vtable.patch" + (base32 + "0afb7rvxy14104jxmhr7m02w5baiz0c7vhq3h642h09jgxrcmzzi"))) + +(define %glib-duplicate-test-patch + (qemu-patch "98cf48f6" + "qemu-glib-duplicate-test.patch" + (base32 + "1aicbplzdj5s5y13jmqyvfajay05x9dnkzd197waz8v6kha7d9d5"))) + +(define-public qemu (package - (name "qemu-headless") + (name "qemu") (version "2.4.0.1") (source (origin (method url-fetch) @@ -52,7 +74,12 @@ (sha256 (base32 "1nqv5p94zpnhcaqkifnn83ap7dd0qrb0qiicswbyhhby0f48pzpc")) - (patches (map search-patch '("qemu-CVE-2015-6855.patch"))))) + (patches (list (search-patch "qemu-CVE-2015-6855.patch") + + ;; These two patches allow QEMU's tests to run + ;; correctly with 'gtester' from the latest GLib. + %glib-memory-vtable-patch + %glib-duplicate-test-patch)))) (build-system gnu-build-system) (arguments '(#:phases (alist-replace @@ -96,7 +123,11 @@ %standard-phases)))) (inputs ; TODO: Add optional inputs. - `(;; ("libaio" ,libaio) + `(("sdl" ,sdl) + ("mesa" ,mesa) + ("libusb" ,libusb) ;USB pass-through support + + ;; ("libaio" ,libaio) ("glib" ,glib) ("ncurses" ,ncurses) ("libpng" ,libpng) @@ -116,7 +147,7 @@ ("texinfo" ,texinfo) ("perl" ,perl))) (home-page "http://www.qemu-project.org") - (synopsis "Machine emulator and virtualizer (without GUI)") + (synopsis "Machine emulator and virtualizer") (description "QEMU is a generic machine emulator and virtualizer. @@ -136,12 +167,17 @@ server and embedded PowerPC, and S390 guests.") ;; Several tests fail on MIPS; see . (supported-systems (delete "mips64el-linux" %supported-systems)))) -(define-public qemu - ;; QEMU with GUI support. - (package (inherit qemu-headless) - (name "qemu") - (synopsis "Machine emulator and virtualizer") - (inputs `(("sdl" ,sdl) - ("mesa" ,mesa) - ("libusb" ,libusb) ;USB pass-through support - ,@(package-inputs qemu-headless))))) +(define-public qemu-minimal + ;; QEMU without GUI support. + (package (inherit qemu) + (name "qemu-minimal") + (synopsis "Machine emulator and virtualizer (without GUI)") + (arguments + `(#:configure-flags + ;; Restrict to the targets supported by Guix. + '("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu") + ,@(package-arguments qemu))) + + ;; Remove dependencies on optional libraries, notably GUI libraries. + (inputs (fold alist-delete (package-inputs qemu) + '("sdl" "mesa" "libusb"))))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index ab390d37de..8f148c9e90 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,10 +20,11 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages qt) - #:use-module ((guix licenses) #:select (gpl2 gpl3 lgpl2.1 x11-style)) + #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 x11-style)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build utils) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (guix utils) @@ -95,7 +97,7 @@ X11 (yet).") (define-public qt (package (name "qt") - (version "5.5.0") + (version "5.5.1") (source (origin (method url-fetch) (uri @@ -107,7 +109,7 @@ X11 (yet).") version ".tar.xz")) (sha256 (base32 - "1by2l8wxbqwvs7anb5ggmqhn2cfmhyw3a23bp1yyd240rdpa38ky")) + "0615cn4n3n78v48lnmapqz2jizm2pzrjwvsjlnsf4awrsiiqw0kg")) (modules '((guix build utils))) (snippet '(begin @@ -518,3 +520,35 @@ contain over 620 classes.") ("qt" ,qt-4))) (inputs `(("python" ,python-2))))) + +(define-public qtkeychain + (package + (name "qtkeychain") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/frankosterfeld/qtkeychain/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "055mkd4pz6cyff4cw0784wjc1w92m8x223sxi96ph15fr3lplbg6")))) + (build-system cmake-build-system) + (inputs + `(("qt", qt))) + (arguments + `(#:tests? #f ; No tests included + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-qt-trans-dir + (lambda _ + (substitute* "CMakeLists.txt" + (("\\$\\{qt_translations_dir\\}") + "${CMAKE_INSTALL_PREFIX}/share/qt/translations"))))))) + (home-page "https://github.com/frankosterfeld/qtkeychain") + (synopsis "Qt API to store passwords") + (description + "QtKeychain is a Qt library to store passwords and other secret data +securely. It will not store any data unencrypted unless explicitly requested.") + (license bsd-3))) diff --git a/gnu/packages/ragel.scm b/gnu/packages/ragel.scm new file mode 100644 index 0000000000..6201482c9f --- /dev/null +++ b/gnu/packages/ragel.scm @@ -0,0 +1,49 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages ragel) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages)) + +(define-public ragel + (package + (name "ragel") + (version "6.9") + (source (origin + (method url-fetch) + (uri (string-append "http://www.colm.net/files/ragel/ragel-" + version ".tar.gz")) + (sha256 + (base32 + "02k6rwh8cr95f1p5sjjr3wa6dilg06572xz1v71dk8awmc7vw1vf")))) + (build-system gnu-build-system) + (home-page "http://www.colm.net/open-source/ragel/") + (synopsis "State machine compiler") + (description + "Ragel compiles executable finite state machines from regular languages. +Ragel targets C, C++, Obj-C, C#, D, Java, Go and Ruby. Ragel state machines +can not only recognize byte sequences as regular expression machines do, but +can also execute code at arbitrary points in the recognition of a regular +language. Code embedding is done using inline operators that do not disrupt +the regular language syntax.") + ;; GPLv2 (or later) with exception for generated code. + (license license:gpl2+))) + diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 701b7ee6ef..c51a5f08e2 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Pjotr Prins -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014, 2015 David Thompson ;;; Copyright © 2015 Ricardo Wurmus @@ -30,7 +30,6 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages java) #:use-module (gnu packages libffi) - #:use-module (gnu packages gdbm) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (guix packages) @@ -519,6 +518,59 @@ script.") (home-page "http://rubyforge.org/projects/antwrap/") (license license:expat))) +(define-public ruby-atoulme-saikuro + (package + (name "ruby-atoulme-saikuro") + (version "1.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "atoulme-Saikuro" version)) + (sha256 + (base32 + "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19")))) + (build-system ruby-build-system) + ;; FIXME: There are no unit tests. The tests are demonstrations of the + ;; "saikuro" tool. + (arguments `(#:tests? #f)) + (synopsis "Cyclomatic complexity analyzer") + (description "Saikuro is a Ruby cyclomatic complexity analyzer. When +given Ruby source code Saikuro will generate a report listing the cyclomatic +complexity of each method found. In addition, Saikuro counts the number of +lines per method and can generate a listing of the number of tokens on each +line of code.") + (home-page "http://www.github.com/atoulme/Saikuro") + ;; File headers contain the BSD-3 license and the README.rdoc says that + ;; "Saikuro uses the BSD license", but the LICENSE file contains the text + ;; of the Expat license. + (license license:bsd-3))) + +(define-public ruby-ci-reporter + (package + (name "ruby-ci-reporter") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ci_reporter" version)) + (sha256 + (base32 + "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "rspec")) + (propagated-inputs + `(("ruby-builder" ,ruby-builder))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (synopsis "Generate XML reports of runs test") + (description + "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows +you to generate XML reports of your test runs. The resulting files can be +read by a continuous integration system that understands Ant's JUnit report +format.") + (home-page "https://github.com/nicksieger/ci_reporter") + (license license:expat))) + (define-public ruby-orderedhash (package (name "ruby-orderedhash") @@ -650,6 +702,36 @@ and inspect the environment.") (home-page "https://github.com/e2/nenv") (license license:expat))) +(define-public ruby-permutation + (package + (name "ruby-permutation") + (version "0.1.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "permutation" version)) + (sha256 + (base32 + "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-rakefile + (lambda _ + (substitute* "Rakefile" + (("require 'rake/gempackagetask'") + "require 'rubygems/package_task'") + (("include Config") "")) + #t)) + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "test/test.rb"))))))) + (synopsis "Library to perform operations with sequence permutations") + (description "This package provides a Ruby library to perform different +operations with permutations of sequences, such as strings and arrays.") + (home-page "http://flori.github.io/permutation") + (license license:gpl2))) ; GPL 2 only + (define-public ruby-shellany (package (name "ruby-shellany") @@ -753,6 +835,103 @@ standard output stream.") (home-page "https://github.com/geemus/shindo") (license license:expat))) +(define-public ruby-rubygems-tasks + (package + (name "ruby-rubygems-tasks") + (version "0.2.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rubygems-tasks" version)) + (sha256 + (base32 + "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j")))) + (build-system ruby-build-system) + ;; Tests need Internet access. + (arguments `(#:tests? #f)) + (native-inputs + `(("ruby-rspec" ,ruby-rspec) + ("ruby-yard" ,ruby-yard))) + (synopsis "Rake tasks for managing and releasing Ruby Gems") + (description "Rubygems-task provides Rake tasks for managing and releasing +Ruby Gems.") + (home-page "https://github.com/postmodern/rubygems-tasks") + (license license:expat))) + +(define-public ruby-ffi + (package + (name "ruby-ffi") + (version "1.9.10") + (source (origin + (method url-fetch) + (uri (rubygems-uri "ffi" version)) + (sha256 + (base32 + "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj")))) + (build-system ruby-build-system) + ;; FIXME: Before running tests the build system attempts to build libffi + ;; from sources. + (arguments `(#:tests? #f)) + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-rspec" ,ruby-rspec) + ("ruby-rubygems-tasks" ,ruby-rubygems-tasks))) + (inputs + `(("libffi" ,libffi))) + (synopsis "Ruby foreign function interface library") + (description "Ruby-FFI is a Ruby extension for programmatically loading +dynamic libraries, binding functions within them, and calling those functions +from Ruby code. Moreover, a Ruby-FFI extension works without changes on Ruby +and JRuby.") + (home-page "http://wiki.github.com/ffi/ffi") + (license license:bsd-3))) + +(define-public ruby-simplecov-html + (package + (name "ruby-simplecov-html") + (version "0.10.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov-html" version)) + (sha256 + (base32 + "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ; there are no tests + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Default HTML formatter for SimpleCov code coverage tool") + (description "This package provides the default HTML formatter for +the SimpleCov code coverage tool for Ruby version 1.9 and above.") + (home-page "https://github.com/colszowka/simplecov-html") + (license license:expat))) + +(define-public ruby-simplecov + (package + (name "ruby-simplecov") + (version "0.10.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "simplecov" version)) + (sha256 + (base32 + "1q2iq2vgrdvvla5y907gkmqx6ry2qvnvc7a90hlcbwgp1w0sv6z4")))) + (build-system ruby-build-system) + ;; Simplecov depends on rubocop for code style checking at build time. + ;; Rubocop needs simplecov at build time. + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ruby-json" ,ruby-json) + ("ruby-docile" ,ruby-docile) + ("ruby-simplecov-html" ,ruby-simplecov-html))) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Code coverage framework for Ruby") + (description "SimpleCov is a code coverage framework for Ruby with a +powerful configuration library and automatic merging of coverage across test +suites.") + (home-page "http://github.com/colszowka/simplecov") + (license license:expat))) + (define-public ruby-useragent (package (name "ruby-useragent") @@ -848,6 +1027,392 @@ using Net::HTTP, supporting reconnection and retry according to RFC 2616.") (home-page "https://github.com/drbrain/net-http-persistent") (license license:expat))) +(define-public ruby-power-assert + (package + (name "ruby-power-assert") + (version "0.2.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "power_assert" version)) + (sha256 + (base32 + "0gbj379jhnff8rbb6m3kzdm282szjz1a021xzxa38d1bnswj2jx3")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Assert library with descriptive assertion messages") + (description "Power-assert is an assertion library providing descriptive +assertion messages for tests.") + (home-page "https://github.com/k-tsj/power_assert") + (license (list license:bsd-2 license:ruby)))) + +(define-public ruby-locale + (package + (name "ruby-locale") + (version "2.1.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "locale" version)) + (sha256 + (base32 + "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x")))) + (build-system ruby-build-system) + ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, + ;; which needs ruby-gettext, which needs ruby-locale. To break the + ;; dependency cycle we disable tests. + (arguments `(#:tests? #f)) + (native-inputs + `(("bundler" ,bundler) + ("ruby-yard" ,ruby-yard))) + (synopsis "Ruby library providing basic localization APIs") + (description + "Ruby-Locale is the pure ruby library which provides basic APIs for +localization.") + (home-page "https://github.com/ruby-gettext/locale") + (license (list license:lgpl3+ license:ruby)))) + +(define-public ruby-text + (package + (name "ruby-text") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "text" version)) + (sha256 + (base32 + "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg")))) + (build-system ruby-build-system) + (synopsis "Collection of text algorithms for Ruby") + (description + "This package provides a collection of text algorithms: Levenshtein, +Soundex, Metaphone, Double Metaphone, Porter Stemming.") + (home-page "http://github.com/threedaymonk/text") + (license license:expat))) + +(define-public ruby-gettext + (package + (name "ruby-gettext") + (version "3.1.7") + (source (origin + (method url-fetch) + (uri (rubygems-uri "gettext" version)) + (sha256 + (base32 + "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq")))) + (build-system ruby-build-system) + ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, + ;; which needs ruby-gettext. To break the dependency cycle we disable + ;; tests. + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ruby-locale" ,ruby-locale) + ("ruby-text" ,ruby-text))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-yard" ,ruby-yard))) + (synopsis "GNU gettext-like program for Ruby") + (description + "Gettext is a GNU gettext-like program for Ruby. The catalog +file (po-file) used is the same as that used by GNU gettext, allowing you to +use GNU gettext tools for maintenance.") + (home-page "http://ruby-gettext.github.com/") + (license (list license:lgpl3+ license:ruby)))) + +(define-public ruby-packnga + (package + (name "ruby-packnga") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "packnga" version)) + (sha256 + (base32 + "1i71yhvlkvi5fp3m8jl9317cnddkbnrcy0syrmiw4y1lrq0cbncj")))) + (build-system ruby-build-system) + ;; ruby-test-unit is required to run tests, but that needs ruby-packnga. + ;; To break the dependency cycle we disable tests. + (arguments `(#:tests? #f)) + (propagated-inputs + `(("ruby-gettext" ,ruby-gettext) + ("ruby-yard" ,ruby-yard))) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Utility library to package internationalized libraries") + (description + "Packnga is a library to translate to many languages using YARD.") + (home-page "http://ranguba.org/packnga/") + (license license:lgpl2.0+))) + +(define-public ruby-test-unit + (package + (name "ruby-test-unit") + (version "3.1.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "test-unit" version)) + (sha256 + (base32 + "0jxznjzwmrlp8wqjxsd06qbiddffn68pdhz6nrqpjbiln1z3af4w")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-power-assert" ,ruby-power-assert))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-packnga" ,ruby-packnga) + ("ruby-yard" ,ruby-yard))) + (synopsis "Unit testing framework for Ruby") + (description "@code{Test::Unit} is unit testing framework for Ruby, based +on xUnit principles. These were originally designed by Kent Beck, creator of +extreme programming software development methodology, for Smalltalk's SUnit. +It allows writing tests, checking results and automated testing in Ruby.") + (home-page "http://test-unit.github.io/") + (license (list license:psfl license:ruby)))) + +(define-public ruby-metaclass + (package + (name "ruby-metaclass") + (version "0.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "metaclass" version)) + (sha256 + (base32 + "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'add-test-unit-to-search-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("t\\.libs << \"test\"" line) + (string-append line "; t.libs << \"" + (assoc-ref inputs "ruby-test-unit") + "/lib/ruby/gems/2.2.0/gems/test-unit-" + ,(package-version ruby-test-unit) + "/lib\""))) + #t))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Ruby library adding metaclass method to all objects") + (description + "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby +objects.") + (home-page "http://github.com/floehopper/metaclass") + (license license:expat))) + +(define-public ruby-blankslate + (package + (name "ruby-blankslate") + (version "3.1.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "blankslate" version)) + (sha256 + (base32 + "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (zero? (system* "rspec" "spec/"))))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (synopsis "Abstract base class with no predefined methods") + (description + "BlankSlate provides an abstract base class with no predefined +methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful +as a base class when writing classes that depend upon +@code{method_missing} (e.g. dynamic proxies).") + (home-page "http://github.com/masover/blankslate") + (license license:expat))) + +(define-public ruby-instantiator + (package + (name "ruby-instantiator") + (version "0.0.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "instantiator" version)) + (sha256 + (base32 + "0mfmqhg9xrv9i8i1kmphf15ywddhivyh2z3ccl0xjw8qy54zr21i")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'add-test-unit-to-search-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("t\\.libs << \"test\"" line) + (string-append line "; t.libs << \"" + (assoc-ref inputs "ruby-test-unit") + "/lib/ruby/gems/2.2.0/gems/test-unit-" + ,(package-version ruby-test-unit) + "/lib\""))) + #t))))) + (propagated-inputs + `(("ruby-blankslate" ,ruby-blankslate))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Instantiate an arbitrary Ruby class") + (description + "Instantiator lets you instantiate an arbitrary Ruby class without +knowing anything about the constructor.") + (home-page "https://github.com/floehopper/instantiator") + (license license:expat))) + +(define-public ruby-introspection + (package + (name "ruby-introspection") + (version "0.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "introspection" version)) + (sha256 + (base32 + "0g1j71sqfxbqk32wj7d0bkd3dlayfqzprfq3dbr0rq107xbxjcrr")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'add-test-unit-to-search-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("t\\.libs << \"test\"" line) + (string-append line "; t.libs << \"" + (assoc-ref inputs "ruby-test-unit") + "/lib/ruby/gems/2.2.0/gems/test-unit-" + ,(package-version ruby-test-unit) + "/lib\""))) + #t))))) + (propagated-inputs + `(("ruby-instantiator" ,ruby-instantiator) + ("ruby-metaclass" ,ruby-metaclass))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-blankslate" ,ruby-blankslate) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Dynamic inspection of the method hierarchy on a Ruby object") + (description + "Introspection provides tools to inspect the hierarchy of method +definitions on a Ruby object.") + (home-page "https://github.com/floehopper/introspection") + (license license:expat))) + +(define-public ruby-redcarpet + (package + (name "ruby-redcarpet") + (version "3.3.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "redcarpet" version)) + (sha256 + (base32 + "14i3wypp97bpk20679d1csy88q4hsgfqbnqw6mryl77m2g0d09pk")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; The gem archive does not include the conformance tests. + (add-after 'unpack 'disable-conformance-tests + (lambda _ + (substitute* "Rakefile" + (("task :test => %w\\[test:unit test:conformance\\]") + "task :test => %w[test:unit]")) + #t))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit) + ("ruby-rake-compiler" ,ruby-rake-compiler))) + (synopsis "Extensible Markdown to (X)HTML converter") + (description + "Redcarpet is an extensible Ruby library for Markdown processing and +conversion to (X)HTML.") + (home-page "http://github.com/vmg/redcarpet") + (license license:expat))) + +(define-public ruby-mocha + (package + (name "ruby-mocha") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mocha" version)) + (sha256 + (base32 + "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'add-test-unit-to-search-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Rakefile" + (("t\\.libs << 'test'" line) + (string-append line "; t.libs << \"" + (assoc-ref inputs "ruby-test-unit") + "/lib/ruby/gems/2.2.0/gems/test-unit-" + ,(package-version ruby-test-unit) + "/lib\""))) + #t)) + (add-before 'check 'use-latest-redcarpet + (lambda _ + (substitute* "mocha.gemspec" + ((", \\[\"~> 1\"\\]") + ", [\">= 3\"]")) + #t)) + (add-before 'check 'hardcode-version + (lambda _ + ;; Mocha is undefined at build time + (substitute* "Rakefile" + (("#\\{Mocha::VERSION\\}") ,version)) + #t)) + (add-before 'check 'remove-failing-test + ;; FIXME: This test fails for reasons unrelated to Guix packaging. + (lambda _ + (delete-file "test/acceptance/stubbing_nil_test.rb") + #t))))) + (propagated-inputs + `(("ruby-metaclass" ,ruby-metaclass))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-yard" ,ruby-yard) + ("ruby-introspection" ,ruby-introspection) + ("ruby-test-unit" ,ruby-test-unit) + ("ruby-redcarpet" ,ruby-redcarpet))) + (synopsis "Mocking and stubbing library for Ruby") + (description + "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which +allows mocking and stubbing of methods on real (non-mock) classes.") + (home-page "http://gofreerange.com/mocha/docs") + (license license:expat))) + +(define-public ruby-net-ssh + (package + (name "ruby-net-ssh") + (version "3.0.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "net-ssh" version)) + (sha256 + (base32 + "1dzqkgwi9xm6mbfk1rkk17rzmz8m5xakqi21w1b97ybng6kkw0hf")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-mocha" ,ruby-mocha) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Ruby implementation of the SSH2 client protocol") + (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2 +client protocol. It allows you to write programs that invoke and interact +with processes on remote servers, via SSH2.") + (home-page "https://github.com/net-ssh/net-ssh") + (license license:expat))) + (define-public ruby-minitest (package (name "ruby-minitest") @@ -1211,6 +1776,122 @@ aware transformations between times in different time zones.") (home-page "http://tzinfo.github.io") (license license:expat))) +(define-public ruby-rb-inotify + (package + (name "ruby-rb-inotify") + (version "0.9.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rb-inotify" version)) + (sha256 + (base32 + "0kddx2ia0qylw3r52nhg83irkaclvrncgy2m1ywpbhlhsz1rymb9")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + ;; Building the gemspec with rake is not working here since it is + ;; generated with Jeweler. It is also unnecessary because the + ;; existing gemspec does not use any development tools to generate a + ;; list of files. + (replace 'build + (lambda _ + (zero? (system* "gem" "build" "rb-inotify.gemspec"))))))) + (propagated-inputs + `(("ruby-ffi" ,ruby-ffi))) + (native-inputs + `(("ruby-yard" ,ruby-yard))) + (synopsis "Ruby wrapper for Linux's inotify") + (description "rb-inotify is a simple wrapper over the @code{inotify} Linux +kernel subsystem for monitoring changes to files and directories.") + (home-page "https://github.com/nex3/rb-inotify") + (license license:expat))) + +(define-public ruby-pry-editline + (package + (name "ruby-pry-editline") + (version "1.1.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pry-editline" version)) + (sha256 + (base32 + "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)) ; no tests included + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Open the current REPL line in an editor") + (description + "This gem provides a plugin for the Ruby REPL to enable opening the +current line in an external editor.") + (home-page "https://github.com/tpope/pry-editline") + (license license:expat))) + +(define-public ruby-sdoc + (package + (name "ruby-sdoc") + (version "0.4.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sdoc" version)) + (sha256 + (base32 + "16xyfair1j4irfkd6sxvmdcak957z71lwkvhglrznfpkalfnqyqp")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'relax-minitest-requirement + (lambda _ + (substitute* "sdoc.gemspec" + ((", \\[\"~> 4\\.0\"\\]") + ", [\">= 4.0\"]")) + #t))))) + (propagated-inputs + `(("ruby-json" ,ruby-json))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest))) + (synopsis "Generate searchable RDoc documentation") + (description + "SDoc is an RDoc documentation generator to build searchable HTML +documentation for Ruby code.") + (home-page "http://github.com/voloko/sdoc") + (license license:expat))) + +(define-public ruby-tins + (package + (name "ruby-tins") + (version "1.7.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "tins" version)) + (sha256 + (base32 + "1060h8dgnjl9az0sv1b74yrni8d4mh3x858wq6yfbfdf5dxrfl0a")))) + (build-system ruby-build-system) + ;; This gem needs gem-hadar at development time, but gem-hadar needs tins + ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding + ;; the gemspec. + (arguments + `(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda _ + ;; "lib/spruz" is a symlink. Leaving it in the gemspec file + ;; causes an error. + (substitute* "tins.gemspec" + (("\"lib/spruz\", ") "")) + (zero? (system* "gem" "build" "tins.gemspec"))))))) + (synopsis "Assorted tools for Ruby") + (description "Tins is a Ruby library providing assorted tools.") + (home-page "https://github.com/flori/tins") + (license license:expat))) + (define-public ruby-json (package (name "ruby-json") @@ -1230,6 +1911,28 @@ a native C extension.") (home-page "http://json-jruby.rubyforge.org/") (license (list license:ruby license:gpl2)))) ; GPL2 only +(define-public ruby-listen + (package + (name "ruby-listen") + (version "3.0.3") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "listen" version)) + (sha256 + (base32 + "10lhshjklxlrkw7999j0xl6sdxd4x32kiy8rp88jwr68kis5vq2b")))) + (build-system ruby-build-system) + (arguments '(#:tests? #f)) ; no tests + (propagated-inputs + ;; FIXME: omitting "ruby-rb-fsevent" which is only for MacOS. + `(("ruby-rb-inotify" ,ruby-rb-inotify))) + (synopsis "Listen to file modifications") + (description "The Listen gem listens to file modifications and notifies +you about the changes.") + (home-page "https://github.com/guard/listen") + (license license:expat))) + (define-public ruby-activesupport (package (name "ruby-activesupport") @@ -1496,3 +2199,28 @@ that can be exported to a number of formats very easily, and also supports extending for custom Ruby constructs such as custom class level definitions.") (home-page "http://yardoc.org") (license license:expat))) + +(define-public ruby-eventmachine + (package + (name "ruby-eventmachine") + (version "1.0.8") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "eventmachine" version)) + (sha256 + (base32 + "1frvpk3p73xc64qkn0ymll3flvn4xcycq5yx8a43zd3gyzc1ifjp")))) + (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; test suite tries to connect to google.com + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler))) + (synopsis "Single-threaded network event framework for Ruby") + (description + "EventMachine implements a single-threaded engine for arbitrary network +communications. EventMachine wraps all interactions with sockets, allowing +programs to concentrate on the implementation of network protocols. It can be +used to create both network servers and clients.") + (home-page "http://rubyeventmachine.com") + (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index d7223bc0ba..484eafb647 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -23,6 +23,7 @@ #:use-module (guix build-system gnu) #:use-module (guix licenses) #:use-module (gnu packages acl) + #:use-module (gnu packages admin) #:use-module (gnu packages popt) #:use-module (gnu packages openldap) #:use-module (gnu packages readline) @@ -196,3 +197,42 @@ Desktops into Active Directory environments using the winbind daemon.") "Talloc is a hierarchical, reference counted memory pool system with destructors. It is the core memory allocator used in Samba.") (license gpl3+))) ;; The bundled "replace" library uses LGPL3. + +(define-public ppp + (package + (name "ppp") + (version "2.4.7") + (source (origin + (method url-fetch) + (uri (string-append "https://www.samba.org/ftp/ppp/ppp-" + version ".tar.gz")) + (sha256 + (base32 + "0c7vrjxl52pdwi4ckrvfjr08b31lfpgwf3pp0cqy76a77vfs7q02")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-Makefile + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc")) + (libpcap (assoc-ref inputs "libpcap"))) + (substitute* "pppd/Makefile.linux" + (("/usr/include/crypt\\.h") + (string-append libc "/include/crypt.h")) + (("/usr/include/pcap-bpf.h") + (string-append libpcap "/include/pcap-bpf.h"))))))))) + (inputs + `(("libpcap" ,libpcap))) + (synopsis "Implementation of the Point-to-Point Protocol") + (home-page "https://ppp.samba.org/") + (description + "The Point-to-Point Protocol (PPP) provides a standard way to establish +a network connection over a serial link. At present, this package supports IP +and IPV6 and the protocols layered above them, such as TCP and UDP.") + ;; pppd, pppstats and pppdump are under BSD-style notices. + ;; some of the pppd plugins are GPL'd. + ;; chat is public domain. + (license (list bsd-3 bsd-4 gpl2+ public-domain)))) diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm index e2cb62c62c..9b09b6171e 100644 --- a/gnu/packages/sawfish.scm +++ b/gnu/packages/sawfish.scm @@ -22,7 +22,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) - #:use-module (gnu packages gdbm) + #:use-module (gnu packages databases) #:use-module (gnu packages gettext) #:use-module (gnu packages gtk) #:use-module (gnu packages libffi) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 7465b1b58c..aea8b54433 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -334,7 +334,7 @@ implementation techniques and as an expository tool.") (define-public racket (package (name "racket") - (version "6.1.1") + (version "6.2.1") (source (origin (method url-fetch) (uri (list (string-append "http://mirror.racket-lang.org/installers/" @@ -344,7 +344,7 @@ implementation techniques and as an expository tool.") version "/racket/racket-" version "-src-unix.tgz"))) (sha256 (base32 - "0xfsfdqkngz0xw2lqmc7bsznwx25cw91l9fjhp7abrr05m96j0h9")))) + "0555j63k7fs10iv0icmivlxpzgp6s7gwcbfddmbwxlf2rk80qhq0")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm index 84cc8c9dc5..fa5235c115 100644 --- a/gnu/packages/screen.scm +++ b/gnu/packages/screen.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,8 @@ #:use-module (gnu packages) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages slang) #:use-module (gnu packages texinfo)) (define-public screen @@ -90,3 +93,53 @@ view to show two terminals at once.") allowing you to run a program in an environment that is protected from the controlling terminal and attach to it later.") (license gpl2+))) + +(define-public byobu + (package + (name "byobu") + (version "5.98") + (source + (origin + (method url-fetch) + (uri (string-append "https://launchpad.net/byobu/trunk/" + version "/+download/byobu_" + version ".orig.tar.gz")) + (sha256 + (base32 + "1s8nh4wbds1nh52i0d1hy1b308jjf4siwpq92lna1zh9ll4x71j5")) + (patches (list (search-patch "byobu-writable-status.patch"))))) + (build-system gnu-build-system) + (inputs + `(("python" ,python-wrapper) ;for config and session GUIs + ("python-newt" ,newt "python"))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + 'configure 'provide-locale + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc"))) ;implicit input + (substitute* "usr/bin/byobu.in" + (("locale") (string-append libc "/bin/locale")))))) + (add-after + 'install 'wrap-python-scripts + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((python (string-append (assoc-ref inputs "python") + "/bin/python")) + (out (assoc-ref outputs "out")) + (config (string-append out "/bin/byobu-config")) + (select (string-append out "/bin/byobu-select-session"))) + (wrap-program config + `("BYOBU_PYTHON" = (,python)) + `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))) + (wrap-program select + `("BYOBU_PYTHON" = (,python))) + #t)))))) + (home-page "http://byobu.co/index.html") + (synopsis "Text-based window manager and terminal multiplexer") + (description + "Byobu is a Japanese term for decorative, multi-panel screens that serve +as folding room dividers. The Byobu software includes an enhanced profile, +configuration utilities, and system status notifications for the GNU Screen +window manager as well as the Tmux terminal multiplexer.") + (license gpl3+))) diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm new file mode 100644 index 0000000000..864e5707d3 --- /dev/null +++ b/gnu/packages/scribus.scm @@ -0,0 +1,79 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages scribus) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cmake) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages cups) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages qt) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages xml)) + +(define-public scribus + (package + (name "scribus") + (version "1.5.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/scribus/scribus-devel/" + version "/scribus-" version ".tar.xz")) + (sha256 + (base32 + "0s4f9q2nyqrrv4wc1ddf2admkmf9m33wmwp73ba5b4vi29nydnx3")) + (patches (list (search-patch "scribus-qobject.patch"))))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; no test target + (inputs + `(("cairo" ,cairo) + ("cups" ,cups) + ("graphicsmagick" ,graphicsmagick) + ("lcms" ,lcms) + ("libjpeg" ,libjpeg) + ("libtiff" ,libtiff) + ("libxml2" ,libxml2) + ("python" ,python-2) + ("freetype" ,freetype) + ("qt" ,qt) + ("zlib" ,zlib))) + (native-inputs + `(("util-linux" ,util-linux) + ("pkg-config" ,pkg-config))) + (home-page "http://scribus.net") + (synopsis "Desktop publishing and page layout program") + (description + "Scribus is a @dfn{desktop publishing} (DTP) application and can be used +for many tasks; from brochure design to newspapers, magazines, newsletters and +posters to technical documentation. Scribus supports professional DTP +features, such as CMYK color and a color management system to soft proof +images for high quality color printing, flexible PDF creation options, +Encapsulated PostScript import/export and creation of four color separations, +import of EPS/PS and SVG as native vector graphics, Unicode text including +right to left scripts such as Arabic and Hebrew via freetype.") + (license license:gpl2+))) diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm new file mode 100644 index 0000000000..b03e27cb95 --- /dev/null +++ b/gnu/packages/serialization.scm @@ -0,0 +1,74 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages serialization) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system cmake) + #:use-module (gnu packages) + #:use-module (gnu packages doxygen)) + +(define-public cereal + (package + (name "cereal") + (version "1.1.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/USCiLab/cereal/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "13bvsfzvm7yyp97k20iznq2j14dj3qiczvpq7g8897njw46psq25")))) + (build-system cmake-build-system) + (arguments + `(;; The only included tests are portability tests requiring + ;; cross-compilation and boost. Since we are building cereal on more + ;; platforms anyway, there is no compelling reason to build the tests. + #:tests? #f + #:out-of-source? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (substitute* "doc/doxygen.in" + (("@CMAKE_CURRENT_SOURCE_DIR@") ".")) + (zero? (system* "doxygen" "doc/doxygen.in")))) + ;; There is no "install" target, so we have to provide our own + ;; "install" phase. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/cereal/docs")) + (include (string-append out "/include/cereal"))) + (mkdir-p doc) + (mkdir-p include) + (copy-recursively "include/cereal" include) + (copy-recursively "doc/html" doc)) + #t))))) + (native-inputs + `(("doxygen" ,doxygen))) + (home-page "http://uscilab.github.io/cereal/") + (synopsis "C++11 library for serialization") + (description + "Cereal is a header-only C++11 serialization library. Cereal takes +arbitrary data types and reversibly turns them into different representations, +such as compact binary encodings, XML, or JSON.") + (license license:bsd-3))) diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm index a00fa7b01e..24ec71ed3e 100644 --- a/gnu/packages/slang.scm +++ b/gnu/packages/slang.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,6 +21,7 @@ (define-module (gnu packages slang) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages readline) @@ -28,7 +30,8 @@ #:use-module (gnu packages fribidi) #:use-module (gnu packages compression) #:use-module (gnu packages image) - #:use-module (gnu packages pcre)) + #:use-module (gnu packages pcre) + #:use-module (gnu packages python)) (define-public slang (package @@ -85,15 +88,22 @@ slsh, which is part of the S-Lang distribution.") (base32 "07n9f2mqsjfj35wx5ldhvl9sqcjqpcl0g4fdd9mawmny9rihw6vp")))) (build-system gnu-build-system) + (outputs '("out" "python")) (inputs `(("slang" ,slang) ("popt" ,popt) + ("python" ,python) ("fribidi" ,fribidi))) (arguments `(#:tests? #f ; no test suite #:configure-flags ;; Set the correct RUNPATH in binaries. (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:make-flags + ;; configure does not allow us to override this variable from the + ;; command-line. Fortunately, the Makefile does, so provide it here. + (list (string-append "PYTHONVERS=python" + ,(version-major+minor (package-version python)))) #:phases (modify-phases %standard-phases (add-after @@ -101,7 +111,17 @@ slsh, which is part of the S-Lang distribution.") (lambda _ (substitute* "po/Makefile" (("/usr/bin/install") "install")) - #t))))) + #t)) + (add-after + 'install 'move-python + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (py (assoc-ref outputs "python")) + (ver ,(version-major+minor (package-version python)))) + (mkdir-p (string-append py "/lib")) + (rename-file (string-append out "/lib/python" ver) + (string-append py "/lib/python" ver)) + #t)))))) (home-page "https://fedorahosted.org/newt/") (synopsis "Not Erik's Windowing Toolkit - text mode windowing with slang") (description diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 7a62d0bdee..cb8570a74b 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Andreas Enge ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -110,7 +111,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "7.0p1") + (version "7.1p1") (source (origin (method url-fetch) (uri (let ((tail (string-append name "-" version ".tar.gz"))) @@ -121,7 +122,7 @@ a server that supports the SSH-2 protocol.") (string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/" tail)))) (sha256 (base32 - "1rc52jyc5v5b8j9kvasrnz9vnj9b0i7fw4nqac8wix0r794k4ngx")))) + "0a44mnr8bvw41zg83xh4sb55d8nds29j95gxvxk5qg863lnns2pw")))) (build-system gnu-build-system) (inputs `(("groff" ,groff) ("openssl" ,openssl) @@ -129,26 +130,35 @@ a server that supports the SSH-2 protocol.") (arguments `(#:test-target "tests" #:phases - (alist-cons-after - 'configure 'reset-/var/empty - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("PRIVSEP_PATH=/var/empty") - (string-append "PRIVSEP_PATH=" out "/var/empty"))))) - (alist-cons-before - 'check 'patch-tests - (lambda _ - ;; remove 't-exec' regress target which requires user 'sshd' - (substitute* "regress/Makefile" - (("^(REGRESS_TARGETS=.*) t-exec(.*)" all pre post) - (string-append pre post)))) - (alist-replace - 'install - (lambda* (#:key (make-flags '()) #:allow-other-keys) - ;; install without host keys and system configuration files - (zero? (apply system* "make" "install-nosysconf" make-flags))) - %standard-phases))))) + (modify-phases %standard-phases + (add-after 'configure 'reset-/var/empty + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("PRIVSEP_PATH=/var/empty") + (string-append "PRIVSEP_PATH=" out "/var/empty"))) + #t))) + (add-before 'check 'patch-tests + (lambda _ + ;; remove 't-exec' regress target which requires user 'sshd' + (substitute* "regress/Makefile" + (("^(REGRESS_TARGETS=.*) t-exec(.*)" all pre post) + (string-append pre post))) + #t)) + (replace 'install + (lambda* (#:key outputs (make-flags '()) #:allow-other-keys) + ;; install without host keys and system configuration files + (and (zero? (apply system* "make" "install-nosysconf" make-flags)) + (begin + (install-file "contrib/ssh-copy-id" + (string-append (assoc-ref outputs "out") + "/bin/")) + (chmod (string-append (assoc-ref outputs "out") + "/bin/ssh-copy-id") #o555) + (install-file "contrib/ssh-copy-id.1" + (string-append (assoc-ref outputs "out") + "/share/man/man1/")) + #t))))))) (synopsis "Client and server for the secure shell (ssh) protocol") (description "The SSH2 protocol implemented in OpenSSH is standardised by the @@ -184,6 +194,7 @@ Additionally, various channel-specific options can be negotiated.") (uri (git-reference (url "https://github.com/artyom-poptsov/libguile-ssh.git") (commit (string-append "v" version)))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "1ld2khzylaylhqfsfcvbxs95frvm8pkr7dq40ia1wwn9c349fcdv")))) @@ -325,7 +336,8 @@ especially over Wi-Fi, cellular, and long-distance links.") (source (origin (method url-fetch) (uri (string-append - "http://matt.ucc.asn.au/" name "/releases/" name "-" version ".tar.bz2")) + "http://matt.ucc.asn.au/" name "/releases/" + name "-" version ".tar.bz2")) (sha256 (base32 "1bjpbg2vi5f332q4bqxkidkjfxsqmnqvp4g1wyh8d99b8gg94nar")))) (build-system gnu-build-system) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index f854a44d96..0ffd4955bb 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -24,6 +24,7 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system r) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -35,11 +36,18 @@ #: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 ssh) #:use-module (gnu packages texlive) #:use-module (gnu packages texinfo) + #:use-module (gnu packages tls) #:use-module (gnu packages base) - #:use-module (gnu packages xorg)) + #:use-module (gnu packages web) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (gnu packages zip) + #:use-module (srfi srfi-1)) (define-public r (package @@ -913,9 +921,9 @@ database.") times.") (license license:gpl2))) -(define-public r-data.table +(define-public r-data-table (package - (name "r-data.table") + (name "r-data-table") (version "1.9.6") (source (origin (method url-fetch) @@ -929,7 +937,408 @@ times.") (home-page "https://github.com/Rdatatable/data.table/wiki") (synopsis "Enhanced version of data.frame R object") (description - "The R data.table package provides functions for fast aggregation of -large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of -columns by group, column listing and fast file reading.") + "The R package @code{data.table} is an extension of @code{data.frame} +providing functions for fast aggregation of large data (e.g. 100GB in RAM), +fast ordered joins, fast add/modify/delete of columns by group, column listing +and fast file reading.") + (license license:gpl3+))) + +(define-public python-patsy + (package + (name "python-patsy") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/" + "p/patsy/patsy-" version ".zip")) + (sha256 + (base32 + "1kbs996xc2haxalmhd19rr1wh5fa4gbbxf81czkf5w4kam7h7wz4")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check (lambda _ (zero? (system* "nosetests" "-v")))) + (add-after 'unpack 'prevent-generation-of-egg-archive + (lambda _ + (substitute* "setup.py" + (("from setuptools import setup") + "from distutils.core import setup")) + #t))))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy) + ("python-six" ,python-six))) + (native-inputs + `(("python-nose" ,python-nose) + ("unzip" ,unzip))) + (home-page "https://github.com/pydata/patsy") + (synopsis "Describe statistical models and build design matrices") + (description + "Patsy is a Python package for describing statistical models and for +building design matrices.") + ;; The majority of the code is distributed under BSD-2. The module + ;; patsy.compat contains code derived from the Python standard library, + ;; and is covered by the PSFL. + (license (list license:bsd-2 license:psfl)))) + +(define-public python2-patsy + (let ((patsy (package-with-python2 python-patsy))) + (package (inherit patsy) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs patsy))) + (propagated-inputs + `(("python2-numpy" ,python2-numpy) + ("python2-scipy" ,python2-scipy) + ,@(alist-delete "python-numpy" + (alist-delete "python-scipy" + (package-propagated-inputs patsy)))))))) + +(define-public python-statsmodels + (package + (name "python-statsmodels") + (version "0.6.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/" + "s/statsmodels/statsmodels-" version ".tar.gz")) + (sha256 + (base32 + "0xn67sqr0cc1lmlhzm71352hrb4hw7g318p5ff5q97pc98vl8kmy")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; tests must be run after installation + (delete 'check) + (add-after 'unpack 'set-matplotlib-backend-to-agg + (lambda _ + ;; Set the matplotlib backend to Agg to avoid problems using the + ;; GTK backend without a display. + (substitute* (find-files "statsmodels/graphics/tests" "\\.py") + (("import matplotlib\\.pyplot as plt" line) + (string-append "import matplotlib;matplotlib.use('Agg');" + line))) + #t)) + (add-after 'install 'check + (lambda _ + (with-directory-excursion "/tmp" + (zero? (system* "nosetests" + "--stop" + "-v" "statsmodels")))))))) + (propagated-inputs + `(("python-numpy" ,python-numpy) + ("python-scipy" ,python-scipy) + ("python-pandas" ,python-pandas) + ("python-patsy" ,python-patsy) + ("python-matplotlib" ,python-matplotlib))) + (native-inputs + `(("python-cython" ,python-cython) + ("python-nose" ,python-nose) + ("python-sphinx" ,python-sphinx))) + (home-page "http://statsmodels.sourceforge.net/") + (synopsis "Statistical modeling and econometrics in Python") + (description + "Statsmodels is a Python package that provides a complement to scipy for +statistical computations including descriptive statistics and estimation and +inference for statistical models.") + (license license:bsd-3))) + +(define-public python2-statsmodels + (let ((stats (package-with-python2 python-statsmodels))) + (package (inherit stats) + (propagated-inputs + `(("python2-numpy" ,python2-numpy) + ("python2-scipy" ,python2-scipy) + ("python2-pandas" ,python2-pandas) + ("python2-patsy" ,python2-patsy) + ("python2-matplotlib" ,python2-matplotlib))) + (native-inputs + `(("python2-setuptools" ,python2-setuptools) + ,@(package-native-inputs stats)))))) + +(define-public r-xml2 + (package + (name "r-xml2") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "xml2" version)) + (sha256 + (base32 + "0jjilz36h7vbdbkpvjnja1vgjf6d1imql3z4glqn2m2b74w5qm4c")))) + (build-system r-build-system) + (inputs + `(("libxml2" ,libxml2))) + (propagated-inputs + `(("r-rcpp" ,r-rcpp) + ("r-bh" ,r-bh))) + (home-page "https://github.com/hadley/xml2") + (synopsis "Parse XML with R") + (description + "This package provides a simple, consistent interface to working with XML +files in R. It is built on top of the libxml2 C library.") + (license license:gpl2+))) + +(define-public r-rversions + (package + (name "r-rversions") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (cran-uri "rversions" version)) + (sha256 + (base32 + "0xmi461g1rf5ngb7r1sri798jn6icld1xq25wj9jii2ca8j8xv68")))) + (build-system r-build-system) + (propagated-inputs + `(("r-curl" ,r-curl) + ("r-xml2" ,r-xml2))) + (home-page "https://github.com/metacran/rversions") + (synopsis "Query R versions, including 'r-release' and 'r-oldrel'") + (description + "This package provides functions to query the main R repository to find +the versions that @code{r-release} and @code{r-oldrel} refer to, and also all +previous R versions and their release dates.") + (license license:expat))) + +(define-public r-whisker + (package + (name "r-whisker") + (version "0.3-2") + (source (origin + (method url-fetch) + (uri (cran-uri "whisker" version)) + (sha256 + (base32 + "0z4cn115gxcl086d6bnqr8afi67b6a7xqg6ivmk3l4ng1x8kcj28")))) + (build-system r-build-system) + (home-page "http://github.com/edwindj/whisker") + (synopsis "Logicless mustache templating for R") + (description + "This package provides logicless templating, with a syntax that is not +limited to R.") + (license license:gpl3+))) + +(define-public r-brew + (package + (name "r-brew") + (version "1.0-6") + (source (origin + (method url-fetch) + (uri (cran-uri "brew" version)) + (sha256 + (base32 + "1vghazbcha8gvkwwcdagjvzx6yl8zm7kgr0i9wxr4jng06d1l3fp")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/brew") + (synopsis "Templating framework for report generation") + (description + "The brew package implements a templating framework for mixing text and R +code for report generation. The template syntax is similar to PHP, Ruby's erb +module, Java Server Pages, and Python's psp module.") + (license license:gpl2+))) + +(define-public r-roxygen2 + (package + (name "r-roxygen2") + (version "5.0.0") + (source (origin + (method url-fetch) + (uri (cran-uri "roxygen2" version)) + (sha256 + (base32 + "0xjdphjs7l1v71lylmqgp76cbcxzvm9z1a40jgkdwvz072nn08vr")))) + (build-system r-build-system) + (propagated-inputs + `(("r-brew" ,r-brew) + ("r-digest" ,r-digest) + ("r-rcpp" ,r-rcpp) + ("r-stringi" ,r-stringi) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/klutometis/roxygen") + (synopsis "In-source documentation system for R") + (description + "Roxygen2 is a Doxygen-like in-source documentation system for Rd, +collation, and NAMESPACE files.") + (license license:gpl2+))) + +(define-public r-httr + (package + (name "r-httr") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (cran-uri "httr" version)) + (sha256 + (base32 + "1yprw8p4g8026jhravgg1hdwj1g51cpdgycyr5a58jwm4i5f79cq")))) + (build-system r-build-system) + (propagated-inputs + `(("r-curl" ,r-curl) + ("r-digest" ,r-digest) + ("r-jsonlite" ,r-jsonlite) + ("r-mime" ,r-mime) + ("r-r6" ,r-r6) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/hadley/httr") + (synopsis "Tools for working with URLs and HTTP") + (description + "The aim of httr is to provide a wrapper for RCurl customised to the +demands of modern web APIs. It provides useful tools for working with HTTP +organised by HTTP verbs (@code{GET()}, @code{POST()}, etc). Configuration +functions make it easy to control additional request components.") + (license license:expat))) + +(define-public r-git2r + (package + (name "r-git2r") + (version "0.11.0") + (source (origin + (method url-fetch) + (uri (cran-uri "git2r" version)) + (sha256 + (base32 + "1h5ag8sm512jsn2sp4yhiqspc7hjq5y8z0kqz24sdznxa3b7rpn9")))) + (build-system r-build-system) + ;; This R package contains modified sources of libgit2. This modified + ;; version of libgit2 is built as the package is built. Hence libgit2 is + ;; not among the inputs of this package. + (inputs + `(("libssh2" ,libssh2) + ("openssl" ,openssl) + ("zlib" ,zlib))) + (home-page "https://github.com/ropensci/git2r") + (synopsis "Access Git repositories with R") + (description + "This package provides an R interface to the libgit2 library, which is a +pure C implementation of the Git core methods.") + ;; GPLv2 only with linking exception. + (license license:gpl2))) + +(define-public r-rstudioapi + (package + (name "r-rstudioapi") + (version "0.3.1") + (source (origin + (method url-fetch) + (uri (cran-uri "rstudioapi" version)) + (sha256 + (base32 + "0q7671d924nzqsqhs8d9p7l907bcam56wjwm7vvz44xgj0saj8bs")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/rstudioapi") + (synopsis "Safely access the RStudio API") + (description + "This package provides functions to access the RStudio API and provide +informative error messages when it's not available.") + (license license:expat))) + +(define-public r-devtools + (package + (name "r-devtools") + (version "1.9.1") + (source (origin + (method url-fetch) + (uri (cran-uri "devtools" version)) + (sha256 + (base32 + "10ycx3kkiz5x8nmgw31d9wa5hhlx2fhda2nqzxfrczqpz1jik6ci")))) + (build-system r-build-system) + (propagated-inputs + `(("r-curl" ,r-curl) + ("r-digest" ,r-digest) + ("r-evaluate" ,r-evaluate) + ("r-git2r" ,r-git2r) + ("r-httr" ,r-httr) + ("r-jsonlite" ,r-jsonlite) + ("r-memoise" ,r-memoise) + ("r-roxygen2" ,r-roxygen2) + ("r-rstudioapi" ,r-rstudioapi) + ("r-rversions" ,r-rversions) + ("r-whisker" ,r-whisker))) + (home-page "https://github.com/hadley/devtools") + (synopsis "Tools to make developing R packages easier") + (description "The devtools package is a collection of package development +tools to simplify the devolpment of R packages.") + (license license:gpl2+))) + +(define-public r-readr + (package + (name "r-readr") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (cran-uri "readr" version)) + (sha256 + (base32 + "156422xwvskynna5kjc8h1qqnn50kxgjrihl2h2b7vm9sxxdyr2m")))) + (build-system r-build-system) + (propagated-inputs + `(("r-curl" ,r-curl) + ("r-rcpp" ,r-rcpp) + ("r-bh" ,r-bh))) + (home-page "https://github.com/hadley/readr") + (synopsis "Read tabular data") + (description + "This package provides functions to read flat or tabular text files from +disk (or a connection).") + (license license:gpl2+))) + +(define-public r-plotrix + (package + (name "r-plotrix") + (version "3.6") + (source (origin + (method url-fetch) + (uri (cran-uri "plotrix" version)) + (sha256 + (base32 + "0zn6k8azh40v0lg7q9yd4sy30a26bcc0fjvndn4z7k36avlw4i25")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/plotrix") + (synopsis "Various plotting functions") + (description + "This package provides lots of plotting, various labeling, axis and color +scaling functions for R.") + (license license:gpl2+))) + +(define-public r-gridbase + (package + (name "r-gridbase") + (version "0.4-7") + (source (origin + (method url-fetch) + (uri (cran-uri "gridBase" version)) + (sha256 + (base32 + "09jzw4rzwf2y5lcz7b16mb68pn0fqigv34ff7lr6w3yi9k91i1xy")))) + (build-system r-build-system) + (home-page "http://cran.r-project.org/web/packages/gridBase") + (synopsis "Integration of base and grid graphics") + (description + "This package provides an integration of base and grid graphics for R.") + (license license:gpl2+))) + +(define-public r-lattice + (package + (name "r-lattice") + (version "0.20-33") + (source (origin + (method url-fetch) + (uri (cran-uri "lattice" version)) + (sha256 + (base32 + "0car12x5vl9k180i9pc86lq3cvwqakdpqn3lgdf98k9n2h52cilg")))) + (build-system r-build-system) + (home-page "http://lattice.r-forge.r-project.org/") + (synopsis "High-level data visualization system") + (description + "The lattice package provides a powerful and elegant high-level data +visualization system inspired by Trellis graphics, with an emphasis on +multivariate data. Lattice is sufficient for typical graphics needs, and is +also flexible enough to handle most nonstandard requirements.") (license license:gpl2+))) diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm index 905ef82af4..bc70eaf838 100644 --- a/gnu/packages/synergy.scm +++ b/gnu/packages/synergy.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2015 Eric Bavier ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,7 +32,7 @@ (define-public synergy (package (name "synergy") - (version "1.7.3") + (version "1.7.4") (source (origin (method url-fetch) @@ -41,7 +41,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "098y71fiw1n5i7g1p6vjfs5rz472j192p9izz2axxxhfvcyzrvx4")) + "1prb06dmi4bhfsraih4hzlsfiraiczgzhqy9gjsxygczif8w6p91")) (modules '((guix build utils))) (snippet ;; Remove ~14MB of unnecessary bundled source and binaries diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index 5b55cccbde..6f6838c039 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -35,14 +35,14 @@ (package (name "tcl") (version "8.6.4") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/tcl/Tcl/" - version "/tcl" version "-src.tar.gz")) - (sha256 - (base32 - "13cwa4bc85ylf5gfj9vk182lvgy60qni3f7gbxghq78wk16djvly")))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tcl/Tcl/" + version "/tcl" version "-src.tar.gz")) + (sha256 + (base32 + "13cwa4bc85ylf5gfj9vk182lvgy60qni3f7gbxghq78wk16djvly")) + (patches (list (search-patch "tcl-mkindex-deterministic.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (alist-cons-before @@ -140,7 +140,8 @@ X11 GUIs.") version "/tk" version "-src.tar.gz")) (sha256 (base32 - "1h96vp15zl5xz0d4qp6wjyrchqmrmdm3q5k22wkw9jaxbvw9vy88")))) + "1h96vp15zl5xz0d4qp6wjyrchqmrmdm3q5k22wkw9jaxbvw9vy88")) + (patches (list (search-patch "tk-find-library.patch"))))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 6f90843a18..5c61604191 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 John Darrington ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -59,20 +60,20 @@ reimplementation.") (define-public ucommon (package (name "ucommon") - (version "6.6.0") + (version "6.6.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/commoncpp/" name "-" version ".tar.gz")) (sha256 (base32 - "09y6rs51wl2851xp5zlxlqqb97xfi39v0yna3njb62swwr1n1ky1")))) + "16haqzq97axiyhgpca95rhr5y5s7fl8b65if5vil7v4lcqxp3hqn")))) (build-system gnu-build-system) (synopsis "Common C++ framework for threaded applications") (description "GNU uCommon C++ is meant as a very light-weight C++ library to facilitate using C++ design patterns even for very deeply embedded applications, such as for systems using uclibc along with posix threading support.") - (license gpl2+) ; plus runtime exception + (license gpl3+) (home-page "http://www.gnu.org/software/commoncpp"))) (define-public ccrtp @@ -145,13 +146,13 @@ multiplayer games.") (define-public sipwitch (package (name "sipwitch") - (version "1.9.10") + (version "1.9.14") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sipwitch/sipwitch-" version ".tar.gz")) (sha256 (base32 - "1ljvg66v1ms3zc81mbg4x5k0pjb2flx35h70msfiajidlcna5xhz")))) + "1mrzl5nakiz613v3ch27k5dj2ykm88dlcr22lqny6dnjyfa9n2ki")))) (build-system gnu-build-system) ;; The configure.ac uses pkg-config but in a kludgy way which breaks when ;; cross-compiling. Among other issues there the program name "pkg-config" diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm new file mode 100644 index 0000000000..153c51a346 --- /dev/null +++ b/gnu/packages/terminals.scm @@ -0,0 +1,69 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages terminals) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build utils) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages wm)) + +(define-public tilda + (package + (name "tilda") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/lanoxx/tilda/archive/" + "tilda-" version ".tar.gz")) + (sha256 + (base32 + "1bbn2fflngx0g18ssvnzgzprvn1w6wc2y03sqzjwvxds488lhndx")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'patch-source-shebangs 'autogen + (lambda _ ; Avoid running ./configure. + (substitute* "autogen.sh" + (("^.*\\$srcdir/configure.*") "")) + (zero? (system* "sh" "autogen.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gnu-gettext) + ("pkg-config" ,pkg-config))) + (inputs + `(("glib" ,glib "bin") + ("gtk+" ,gtk+) + ("libconfuse" ,libconfuse) + ("vte" ,vte))) + (synopsis "GTK+-based drop-down terminal") + (description "Tilda is a terminal emulator similar to normal terminals like +gnome-terminal (GNOME) or Konsole (KDE), with the difference that it drops down +from the edge of a screen when a certain configurable hotkey is pressed. This +is similar to the built-in consoles in some applications. Tilda is highly +configureable through a graphical wizard.") + (home-page "https://github.com/lanoxx/tilda") + (license license:gpl2+))) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 9f7cdddcad..537a840247 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Ben Woodcroft +;;; Copyright © 2015 Roel Janssen ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,7 +41,8 @@ (url "https://github.com/pinard/Recode.git") (commit "2d7092a9999194fc0e9449717a8048c8d8e26c18"))) (sha256 - (base32 "1wssv8z6g3ryrw33sksz4rjhlnhgvvdqszw1ggl4rcwks34n86zm")))) + (base32 "1wssv8z6g3ryrw33sksz4rjhlnhgvvdqszw1ggl4rcwks34n86zm")) + (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) (arguments @@ -74,7 +76,8 @@ handy front-end to the library.") (uri (string-append "https://github.com/nijel/enca/archive/" version ".tar.gz")) (sha256 - (base32 "1xik00x0yvhswsw2isnclabhv536xk1s42cf5z54gfbpbhc7ni8l")))) + (base32 "1xik00x0yvhswsw2isnclabhv536xk1s42cf5z54gfbpbhc7ni8l")) + (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (inputs `(("recode" ,recode))) @@ -177,3 +180,24 @@ the Hannon Lab.") "CityHash provides hash functions for strings. The functions mix the input bits thoroughly but are not suitable for cryptography.") (license license:expat)))) + +(define-public libconfig + (package + (name "libconfig") + (version "1.5") + (source (origin + (method url-fetch) + (uri (string-append "http://www.hyperrealm.com/libconfig/" + "libconfig-" version ".tar.gz")) + (sha256 + (base32 + "1xh3hzk63v4y8815lc5209m3s6ms2cpgw4h5hg462i4f1lwsl7g3")))) + (build-system gnu-build-system) + (home-page "http://www.hyperrealm.com/libconfig/") + (synopsis "C/C++ configuration file library") + (description + "Libconfig is a simple library for manipulating structured configuration +files. This file format is more compact and more readable than XML. And +unlike XML, it is type-aware, so it is not necessary to do string parsing in +application code.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 1a0eeb2708..e539686199 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -3,6 +3,8 @@ ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2013, 2015 Andreas Enge +;;; Copyright © 2015 David Thompson +;;; Copyright © 2015 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,14 +28,17 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) + #:use-module (guix build-system python) #:use-module (gnu packages compression) #:use-module (gnu packages) #:use-module (gnu packages guile) #:use-module (gnu packages libffi) #:use-module (gnu packages libidn) + #:use-module (gnu packages ncurses) #:use-module (gnu packages nettle) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages texinfo) #:use-module (gnu packages base)) @@ -187,14 +192,14 @@ required structures.") (define-public openssl (package (name "openssl") - (version "1.0.2d") + (version "1.0.2e") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version ".tar.gz")) (sha256 (base32 - "1j58r7rdj9fz2lanir8ajbx4bspb5jnm5ikl6dq8lql5fx43c737")) + "1zqb1rff1wikc62a7vj5qxd1k191m8qif5d05mwdxz2wnzywlg72")) (patches (map search-patch '("openssl-runpath.patch" "openssl-c-rehash.patch"))))) @@ -207,10 +212,11 @@ required structures.") #:phases (modify-phases %standard-phases (add-before - 'configure 'fix-man-dir + 'configure 'patch-Makefile.org (lambda* (#:key outputs #:allow-other-keys) ;; The default MANDIR is some unusual place. Fix that. (let ((out (assoc-ref outputs "out"))) + (patch-makefile-SHELL "Makefile.org") (substitute* "Makefile.org" (("^MANDIR[[:blank:]]*=.*$") (string-append "MANDIR = " out "/share/man\n"))) @@ -249,6 +255,27 @@ required structures.") (find-files (string-append out "/lib") "\\.so")) #t))) + (add-after + 'unpack 'fix-broken-symlinks + (lambda _ + ;; Repair the broken symlinks in the openssl-1.0.2e tarball. + (let* ((link-prefix "openssl-1.0.2e/") + (link-prefix-length (string-length link-prefix)) + (broken-links + (find-files "." (lambda (file stat) + (and (eq? 'symlink (stat:type stat)) + (string-prefix? link-prefix + (readlink file))))))) + (when (null? broken-links) + (error "The 'fix-broken-symlinks' phase is obsolete; remove it")) + (for-each (lambda (file) + (let* ((old-target (readlink file)) + (new-target (string-drop old-target + link-prefix-length))) + (delete-file file) + (symlink new-target file))) + broken-links) + #t))) (add-before 'patch-source-shebangs 'patch-tests (lambda* (#:key inputs native-inputs #:allow-other-keys) @@ -257,7 +284,8 @@ required structures.") (("/bin/sh") (string-append bash "/bin/bash")) (("/bin/rm") - "rm"))))) + "rm")) + #t))) (add-after 'install 'remove-miscellany (lambda* (#:key outputs #:allow-other-keys) @@ -320,6 +348,78 @@ security, and applying best practice development processes.") "file://COPYING" "See COPYING in the distribution."))))) +(define-public acme + (package + (name "acme") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/a/acme/acme-" + version ".tar.gz")) + (sha256 + (base32 + "0fj0m04zzdxx23vazl00ilqyl3jxqq9c9p4x61pfz1zps7nbzsy3")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) + ;; TODO: Add optional inputs for testing and building documentation. + (native-inputs + `(("python2-mock" ,python2-mock) + ("python2-setuptools" ,python2-setuptools))) + (propagated-inputs + `(("python2-ndg-httpsclient" ,python2-ndg-httpsclient) + ("python2-werkzeug" ,python2-werkzeug) + ("python2-six" ,python2-six) + ("python2-requests" ,python2-requests) + ("python2-pytz" ,python2-pytz) + ("python2-pyrfc3339" ,python2-pyrfc3339) + ("python2-pyasn1" ,python2-pyasn1) + ("python2-cryptography" ,python2-cryptography) + ("python2-pyopenssl" ,python2-pyopenssl))) + (home-page "https://github.com/letsencrypt/letsencrypt") + (synopsis "ACME protocol implementation in Python") + (description "ACME protocol implementation in Python") + (license license:asl2.0))) + +(define-public letsencrypt + (package + (name "letsencrypt") + (version "0.1.0") + (source (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/l/" + "letsencrypt/letsencrypt-" version ".tar.gz")) + (sha256 + (base32 + "1zb96xz32k6ai41h5m1l22qi47y71dq69dcmbz7vfm6jfrhjgxl1")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) + ;; TODO: Add optional inputs for testing building documentation. + (native-inputs + `(("python2-nose" ,python2-nose) + ("python2-mock" ,python2-mock))) + (propagated-inputs + `(("acme" ,acme) + ("python2-zope-interface" ,python2-zope-interface) + ("python2-pythondialog" ,python2-pythondialog) + ("python2-pyrfc3339" ,python2-pyrfc3339) + ("python2-pyopenssl" ,python2-pyopenssl) + ("python2-configobj" ,python2-configobj) + ("python2-configargparse" ,python2-configargparse) + ("python2-zope-component" ,python2-zope-component) + ("python2-parsedatetime" ,python2-parsedatetime) + ("python2-six" ,python2-six) + ("python2-psutil" ,python2-psutil) + ("python2-requests" ,python2-requests) + ("python2-pytz" ,python2-pytz))) + (synopsis "Let's Encrypt client") + (description "Tool to automatically receive and install X.509 certificates +to enable TLS on servers. The client will interoperate with the Let’s Encrypt CA which +will be issuing browser-trusted certificates for free.") + (home-page "https://letsencrypt.org/") + (license license:asl2.0))) + (define-public perl-net-ssleay (package (name "perl-net-ssleay") diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 3cf45a400e..e6e8876597 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -18,13 +18,16 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu packages tor) - #:use-module ((guix licenses) #:select (bsd-3 gpl2+)) + #:use-module ((guix licenses) #:select (bsd-3 gpl2+ gpl2)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (gnu packages) #:use-module (gnu packages libevent) #:use-module (gnu packages compression) #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) #:use-module (gnu packages python) #:use-module (gnu packages autotools) #:use-module (gnu packages tls) @@ -33,14 +36,14 @@ (define-public tor (package (name "tor") - (version "0.2.6.10") + (version "0.2.7.5") (source (origin (method url-fetch) (uri (string-append "https://www.torproject.org/dist/tor-" version ".tar.gz")) (sha256 (base32 - "13ab4bqz19980q4qgmbr7ar4r9y70bmsfbw66y9n31ivwkpw0hh5")))) + "0pxayvcab4cb107ynbpzx4g0qyr1mjfba2an76wdx6dxn56rwakx")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) ; for tests @@ -66,22 +69,36 @@ applications based on the TCP protocol.") (define-public torsocks (package (name "torsocks") - (version "1.2") + (version "2.0.0") (source (origin - (method url-fetch) - (uri (string-append "http://torsocks.googlecode.com/files/torsocks-" - version ".tar.gz")) - (sha256 - (base32 - "1m0is5q24sf7jjlkl0icfkdc0m53nbkg0q72s57p48yp4hv7v9dy")))) + (method git-fetch) + (uri (git-reference + (url "https://git.torproject.org/torsocks.git") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0an2q5ail9z414riyjbkjkm29504hy778j914baz2gn5hlv2cfak")) + (file-name (string-append name "-" version "-checkout")) + (patches (list (search-patch "torsocks-dns-test.patch"))))) (build-system gnu-build-system) - (home-page "http://code.google.com/p/torsocks/") + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + (system* "autoreconf" "-vfi")))))) + (native-inputs `(("autoconf" ,(autoconf-wrapper)) + ("automake" ,automake) + ("libtool" ,libtool) + ("perl-test-harness" ,perl-test-harness))) + (home-page "http://www.torproject.org/") (synopsis "Use socks-friendly applications with Tor") (description "Torsocks allows you to use most socks-friendly applications in a safe way with Tor. It ensures that DNS requests are handled safely and explicitly rejects UDP traffic from the application you're using.") - (license gpl2+))) + + ;; All the files explicitly say "version 2 only". + (license gpl2))) (define-public privoxy (package diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index b4c518acf7..6861e35bec 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -6,6 +6,8 @@ ;;; Copyright © 2015 Mathieu Lirzin ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2015 Efraim Flashner +;;; Copyright © 2015 Kyle Meyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +37,7 @@ #:use-module (guix build-system trivial) #:use-module (guix build utils) #:use-module (gnu packages apr) + #:use-module (gnu packages autotools) #:use-module (gnu packages asciidoc) #:use-module (gnu packages base) #:use-module (gnu packages bison) @@ -105,14 +108,14 @@ as well as the classic centralized workflow.") ;; Keep in sync with 'git-manpages'! (package (name "git") - (version "2.5.0") + (version "2.6.3") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "0p747j94kynrx71qaamc9i0dkq5vqpv66a47b68pmin1qsxb2nfc")))) + "18vxb5fmwmrps504m23a4xdl29m7ibca3hmz0mn9jc38sz9y95yn")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -279,7 +282,7 @@ everything from small to very large projects with speed and efficiency.") version ".tar.xz")) (sha256 (base32 - "1spnqxzl53ic7bv1x7c6lwscdh581scqm5zh98wfp4qn1ciafvhs")))) + "1d7jb4pyln0prgxpxkfiy2l6ragsjzsyqyxbssbchdvl145gj8xf")))) (build-system trivial-build-system) (arguments '(#:modules ((guix build utils)) @@ -672,7 +675,8 @@ machine.") (build-system gnu-build-system) (arguments ;; XXX: The test suite looks flawed, and the package is obsolete anyway. - '(#:tests? #f)) + '(#:tests? #f + #:configure-flags (list "--with-external-zlib"))) (inputs `(("zlib" ,zlib) ("nano" ,nano))) ; the default editor (home-page "http://cvs.nongnu.org") @@ -901,7 +905,7 @@ any project with more than one developer, is one of Aegis's major functions.") (define-public tig (package (name "tig") - (version "2.1") + (version "2.1.1") (source (origin (method url-fetch) (uri (string-append @@ -909,12 +913,13 @@ any project with more than one developer, is one of Aegis's major functions.") version ".tar.gz")) (sha256 (base32 - "1c1w6w39a1dwx4whrg0ga1mhrlz095hz875z7ajn6xgmhkv8fqih")))) + "0bw5wivswwh7vx897q8xc2cqgkqhdzk8gh6fnav2kf34sngigiah")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) (arguments - `(#:tests? #f)) ; no tests implemented + `(#:tests? #f)) ; tests require access to /dev/tty + ;;`(#:test-target "test")) (home-page "http://jonas.nitro.dk/tig/") (synopsis "Ncurses-based text user interface for Git") (description @@ -922,3 +927,59 @@ any project with more than one developer, is one of Aegis's major functions.") a history browser. It can also stage hunks for commit, or colorize the output of the 'git' command.") (license gpl2+))) + +(define-public findnewest + (package + (name "findnewest") + (version "0.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/0-wiz-0/findnewest/archive/findnewest-" + version ".tar.gz")) + (sha256 + (base32 + "0zlflad568y203yc5ynf1nxi2szn2pmbf1lvz6yk77kjyrpw7zxg")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'bootstrap + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake))) + (home-page "https://github.com/0-wiz-0/findnewest/releases") + (synopsis "Print the modification time of the latest file") + (description + "Recursively find the newest file in a file tree and print its +modification time.") + (license bsd-2))) + +(define-public myrepos + (package + (name "myrepos") + (version "1.20151022") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/joeyh/myrepos/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0c93lqsngpsxsca7nygk4qhidr40ijgih86q81x1mfcwbs0gbds8")))) + (build-system gnu-build-system) + (inputs + `(("perl" ,perl))) + (arguments + `(#:test-target "test" + #:phases (alist-delete 'configure %standard-phases) + #:make-flags (list (string-append "PREFIX=" %output)))) + (home-page "http://myrepos.branchable.com/") + (synopsis "Multiple repository management tool") + (description + "Myrepos provides the @code{mr} command, which maps an operation (e.g., +fetching updates) over a collection of version control repositories. It +supports a large number of version control systems: Git, Subversion, +Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") + (license gpl2+))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 013fef9742..76374e2ac6 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3,6 +3,9 @@ ;;; Copyright © 2014, 2015 David Thompson ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer +;;; Copyright © 2015 Efraim Flashner +;;; Copyright © 2015 Andy Patterson +;;; Copyright © 2015 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -222,7 +225,7 @@ H.264 (MPEG-4 AVC) video streams.") (define-public libass (package (name "libass") - (version "0.12.1") + (version "0.13.1") (source (origin (method url-fetch) (uri (string-append @@ -230,7 +233,7 @@ H.264 (MPEG-4 AVC) video streams.") version "/libass-" version ".tar.xz")) (sha256 (base32 - "1mwj2nk9g6cq6f8m1hf0ijg1299rghhy9naahqq43sc2whblb1l7")))) + "1rrz6is2blx8jqyydcz71y2f5f948blgx14jzi3an756fqc6p8sa")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -320,7 +323,7 @@ SMPTE 314M.") (define-public libva (package (name "libva") - (version "1.5.1") + (version "1.6.1") (source (origin (method url-fetch) @@ -328,7 +331,7 @@ SMPTE 314M.") "http://www.freedesktop.org/software/vaapi/releases/libva/libva-" version".tar.bz2")) (sha256 - (base32 "01d01mm9fgpwzqycmjjcj3in3vvzcibi3f64icsw2sksmmgb4495")))) + (base32 "0bjfb5s8dk3lql843l91ffxzlq47isqks5sj19cxh7j3nhzw58kz")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -370,18 +373,19 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (define-public ffmpeg (package (name "ffmpeg") - (version "2.8") + (version "2.8.3") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "10l1iwc01k1algk2v4vzsrahdvqjmjfi3qazm2cwism0d8hsfg4r")))) + "0jkhyv68aa7h3hf905ganwqbrflams3hs74in7ygxdfkcqw2xqhq")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) ("freetype" ,freetype) + ("gnutls" ,gnutls) ("opus" ,opus) ("ladspa" ,ladspa) ("lame" ,lame) @@ -411,6 +415,89 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") ("yasm" ,yasm))) (arguments `(#:test-target "fate" + #:configure-flags + ;; possible additional inputs: + ;; --enable-avisynth enable reading of AviSynth script + ;; files [no] + ;; --enable-frei0r enable frei0r video filtering + ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no] + ;; --enable-libcelt enable CELT decoding via libcelt [no] + ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 + ;; and libraw1394 [no] + ;; --enable-libfaac enable AAC encoding via libfaac [no] + ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] + ;; --enable-libflite enable flite (voice synthesis) support via + ;; libflite [no] + ;; --enable-libgme enable Game Music Emu via libgme [no] + ;; --enable-libgsm enable GSM de/encoding via libgsm [no] + ;; --enable-libiec61883 enable iec61883 via libiec61883 [no] + ;; --enable-libilbc enable iLBC de/encoding via libilbc [no] + ;; --enable-libmodplug enable ModPlug via libmodplug [no] + ;; --enable-libnut enable NUT (de)muxing via libnut, + ;; native (de)muxer exists [no] + ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via + ;; libopencore-amrnb [no] + ;; --enable-libopencore-amrwb enable AMR-WB decoding via + ;; libopencore-amrwb [no] + ;; --enable-libopencv enable video filtering via libopencv [no] + ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via + ;; OpenJPEG [no] + ;; --enable-librtmp enable RTMP[E] support via librtmp [no] + ;; --enable-libschroedinger enable Dirac de/encoding via + ;; libschroedinger [no] + ;; --enable-libshine enable fixed-point MP3 encoding via + ;; libshine [no] + ;; --enable-libssh enable SFTP protocol via libssh [no] + ;; (libssh2 does not work) + ;; --enable-libstagefright-h264 enable H.264 decoding via + ;; libstagefright [no] + ;; --enable-libutvideo enable Ut Video encoding and decoding via + ;; libutvideo [no] + ;; --enable-libv4l2 enable libv4l2/v4l-utils [no] + ;; --enable-libvidstab enable video stabilization using + ;; vid.stab [no] + ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] + ;; --enable-libvo-amrwbenc enable AMR-WB encoding via + ;; libvo-amrwbenc [no] + ;; --enable-libwavpack enable wavpack encoding via libwavpack [no] + ;; --enable-libxavs enable AVS encoding via xavs [no] + ;; --enable-libzmq enable message passing via libzmq [no] + ;; --enable-libzvbi enable teletext support via libzvbi [no] + ;; --enable-opencl enable OpenCL code + ;; --enable-x11grab enable X11 grabbing [no] + '("--enable-avresample" + "--enable-gpl" ; enable optional gpl licensed parts + "--enable-shared" + "--enable-fontconfig" + "--enable-gnutls" + "--enable-ladspa" + "--enable-libass" + "--enable-libbluray" + "--enable-libcaca" + "--enable-libcdio" + "--enable-libfreetype" + "--enable-libmp3lame" + "--enable-libopus" + "--enable-libpulse" + "--enable-libquvi" + "--enable-libsoxr" + "--enable-libspeex" + "--enable-libtheora" + "--enable-libtwolame" + "--enable-libvorbis" + "--enable-libvpx" + "--enable-libxvid" + "--enable-libx264" + "--enable-openal" + + "--enable-runtime-cpudetect" + + ;; Runtime cpu detection is not implemented on + ;; MIPS, so we disable some features. + "--disable-mips32r2" + "--disable-mipsdspr1" + "--disable-mipsdspr2" + "--disable-mipsfpu") #:phases (modify-phases %standard-phases (replace @@ -423,83 +510,13 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (("#! /bin/sh") (string-append "#!" (which "bash")))) (setenv "SHELL" (which "bash")) (setenv "CONFIG_SHELL" (which "bash")) - ;; possible additional inputs: - ;; --enable-avisynth enable reading of AviSynth script files [no] - ;; --enable-frei0r enable frei0r video filtering - ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no] - ;; --enable-libcelt enable CELT decoding via libcelt [no] - ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 - ;; and libraw1394 [no] - ;; --enable-libfaac enable AAC encoding via libfaac [no] - ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] - ;; --enable-libflite enable flite (voice synthesis) support via libflite [no] - ;; --enable-libgme enable Game Music Emu via libgme [no] - ;; --enable-libgsm enable GSM de/encoding via libgsm [no] - ;; --enable-libiec61883 enable iec61883 via libiec61883 [no] - ;; --enable-libilbc enable iLBC de/encoding via libilbc [no] - ;; --enable-libmodplug enable ModPlug via libmodplug [no] - ;; --enable-libnut enable NUT (de)muxing via libnut, - ;; native (de)muxer exists [no] - ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] - ;; --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] - ;; --enable-libopencv enable video filtering via libopencv [no] - ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] - ;; --enable-librtmp enable RTMP[E] support via librtmp [no] - ;; --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] - ;; --enable-libshine enable fixed-point MP3 encoding via libshine [no] - ;; --enable-libssh enable SFTP protocol via libssh [no] - ;; (libssh2 does not work) - ;; --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] - ;; --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] - ;; --enable-libv4l2 enable libv4l2/v4l-utils [no] - ;; --enable-libvidstab enable video stabilization using vid.stab [no] - ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] - ;; --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] - ;; --enable-libwavpack enable wavpack encoding via libwavpack [no] - ;; --enable-libxavs enable AVS encoding via xavs [no] - ;; --enable-libzmq enable message passing via libzmq [no] - ;; --enable-libzvbi enable teletext support via libzvbi [no] - ;; --enable-opencl enable OpenCL code - ;; --enable-x11grab enable X11 grabbing [no] - (zero? (system* - "./configure" - (string-append "--prefix=" out) - ;; Add $libdir to the RUNPATH of all the binaries. - (string-append "--extra-ldflags=-Wl,-rpath=" - %output "/lib") - "--enable-avresample" - "--enable-gpl" ; enable optional gpl licensed parts - "--enable-shared" - "--enable-fontconfig" - ;; "--enable-gnutls" ; causes test failures - "--enable-ladspa" - "--enable-libass" - "--enable-libbluray" - "--enable-libcaca" - "--enable-libcdio" - "--enable-libfreetype" - "--enable-libmp3lame" - "--enable-libopus" - "--enable-libpulse" - "--enable-libquvi" - "--enable-libsoxr" - "--enable-libspeex" - "--enable-libtheora" - "--enable-libtwolame" - "--enable-libvorbis" - "--enable-libvpx" - "--enable-libxvid" - "--enable-libx264" - "--enable-openal" - - "--enable-runtime-cpudetect" - - ;; Runtime cpu detection is not implemented on - ;; MIPS, so we disable some features. - "--disable-mips32r2" - "--disable-mipsdspr1" - "--disable-mipsdspr2" - "--disable-mipsfpu"))))) + (zero? (apply system* + "./configure" + (string-append "--prefix=" out) + ;; Add $libdir to the RUNPATH of all the binaries. + (string-append "--extra-ldflags=-Wl,-rpath=" + out "/lib") + configure-flags))))) (add-before 'check 'set-ld-library-path (lambda _ @@ -584,7 +601,7 @@ treaming protocols.") (define-public mplayer (package (name "mplayer") - (version "1.1.1") + (version "1.2") (source (origin (method url-fetch) (uri (string-append @@ -592,7 +609,7 @@ treaming protocols.") version ".tar.xz")) (sha256 (base32 - "0xlcg7rszrwmw29wqr0plsw5d1rq0hb7vjsq7bmmfsly2z1wg3yf")))) + "1dp2lbxyhgjr8sn91kf6xw3w6d7dsgq08v4dgrq20afz1bqzdrzz")))) (build-system gnu-build-system) ;; FIXME: Add additional inputs once available. (native-inputs @@ -601,8 +618,11 @@ treaming protocols.") `(("alsa-lib" ,alsa-lib) ("cdparanoia" ,cdparanoia) ("fontconfig" ,fontconfig) + ("ffmpeg", ffmpeg) ("freetype" ,freetype) ("lame" ,lame) + ("libdvdcss", libdvdcss) + ("libdvdnav", libdvdnav) ("libmpg123" ,mpg123) ; audio codec for MP3 ;; ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5 ("libjpeg" ,libjpeg) @@ -639,7 +659,7 @@ treaming protocols.") "./configure" (string-append "--extra-cflags=-I" libx11 "/include") ; to detect libx11 - "--disable-tremor-internal" ; forces external libvorbis + "--disable-ffmpeg_a" ; disables bundled ffmpeg (string-append "--prefix=" out) ;; Enable runtime cpu detection where supported, ;; and choose a suitable target. @@ -671,7 +691,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (define-public mpv (package (name "mpv") - (version "0.11.0") + (version "0.13.0") (source (origin (method url-fetch) (uri (string-append @@ -679,7 +699,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") ".tar.gz")) (sha256 (base32 - "1njvmqzj8akan5y485gx4blynwiy52adw7zbbnnnvd3dwis725d2")) + "1nqjd64p4pj1lks9n9s8y4zf4dp5bz8pyd0gsvviww7mv17p0whk")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs @@ -720,10 +740,10 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (method url-fetch) ;; Keep this in sync with the version in the bootstrap.py ;; script of the source tarball. - (uri "http://www.freehackers.org/~tnagy/release/waf-1.8.4") + (uri "http://www.freehackers.org/~tnagy/release/waf-1.8.12") (sha256 (base32 - "1a7skwgpl91adhcwlmdr76xzdpidh91hvcmj34zz6548bpx3a87h")))) + "12y9c352zwliw0zk9jm2lhynsjcf5jy0k1qch1c1av8hnbm2pgq1")))) ("youtube-dl" ,youtube-dl) ("zlib" ,zlib))) (arguments @@ -740,10 +760,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (substitute* "wscript" ;; XXX Remove this when our Samba package provides a .pc file. (("check_pkg_config\\('smbclient'\\)") - "check_cc(lib='smbclient')") - ;; XXX Remove this when our Lua package provides a .pc file. - (("check_lua") - "check_cc(lib='lua')"))))) + "check_cc(lib='smbclient')"))))) ;; No check function defined. #:tests? #f)) (home-page "http://mpv.io/") @@ -793,28 +810,28 @@ projects while introducing many more.") (define-public youtube-dl (package (name "youtube-dl") - (version "2015.10.16") + (version "2015.12.09") (source (origin (method url-fetch) - (uri (string-append "https://youtube-dl.org/downloads/" + (uri (string-append "http://youtube-dl.org/downloads/" version "/youtube-dl-" version ".tar.gz")) (sha256 (base32 - "001a4md0yl3zx129mksmwc85grss67r3c9rynvranf9vlpv202vn")))) + "11rzb30ik4all43r7bnsnm35mvs37y7xj3g9r7ig9jr7qlbhllwk")))) (build-system python-build-system) - (inputs `(("setuptools" ,python-setuptools))) + (native-inputs `(("python-setuptools" ,python-setuptools))) (home-page "http://youtube-dl.org") (synopsis "Download videos from YouTube.com and other sites") (description - "youtube-dl is a small command-line program to download videos from + "Youtube-dl is a small command-line program to download videos from YouTube.com and a few more sites.") (license license:public-domain))) (define-public libbluray (package (name "libbluray") - (version "0.9.0") + (version "0.9.2") (source (origin (method url-fetch) (uri (string-append "http://download.videolan.org/videolan/" @@ -822,7 +839,7 @@ YouTube.com and a few more sites.") name "-" version ".tar.bz2")) (sha256 (base32 - "0kb9znxk6610vi0fjhqxn4z5i98nvxlsz1f8dakj99rg42livdl4")))) + "1sp71j4agcsg17g6b85cqz78pn5vknl5pl39rvr6mkib5ps99jgg")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-bdjava"))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1083,15 +1100,16 @@ capabilities.") (define-public vapoursynth (package (name "vapoursynth") - (version "26") + (version "28") (source (origin (method url-fetch) (uri (string-append "https://github.com/vapoursynth/vapoursynth/archive/R" version ".tar.gz")) + (file-name (string-append name "-" version)) (sha256 (base32 - "1qbg5kg0kgrxldd0ckn1s7vy7vx2ig8nqzv6djp38fxccpzw3x9k")))) + "0pnrawcg1j65i46yim0z447lglq1af5zgx0lkqf1x5xl1bfwc0v7")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -1180,3 +1198,53 @@ and custom quantization matrices.") from various services and pipes them into a video playing application.") (home-page "http://livestreamer.io/") (license license:bsd-2))) + +(define-public mlt + (package + (name "mlt") + (version "0.9.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/mlt/mlt/mlt-" + version ".tar.gz")) + (sha256 + (base32 + "0rmrkj7z9g3nr4099f3ff0r14l3ixcfnlx2cdbkqa6pxin0pv9bz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags '("CC=gcc") + #:configure-flags + (list "--enable-gpl3" + "--enable-gpl") + #:phases + (modify-phases %standard-phases + (add-after + 'configure 'override-LDFLAGS + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "config.mak" + (("LDFLAGS\\+=") + (string-append "LDFLAGS+=-Wl,-rpath=" + (assoc-ref outputs "out") + "/lib "))) + #t))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("fftw" ,fftw) + ("libxml2" ,libxml2) + ("jack" ,jack-1) + ("ladspa" ,ladspa) + ("libsamplerate" ,libsamplerate) + ("sdl" ,sdl) + ("sox" ,sox))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://www.mltframework.org/") + (synopsis "Author, manage, and run multitrack audio/video compositions") + (description + "MLT is a multimedia framework, designed and developed for television +broadcasting. It provides a toolkit for broadcasters, video editors, media +players, transcoders, web streamers and many more types of applications. The +functionality of the system is provided via an assortment of ready to use +tools, XML authoring components, and an extensible plug-in based API.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 4d526fce0c..6c3329ffb6 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -235,8 +235,9 @@ data.") (version "0.12") (source (origin (method url-fetch) - (uri (string-append "https://s3.amazonaws.com/json-c_releases/releases/json-c-" - version ".tar.gz")) + (uri (string-append + "https://s3.amazonaws.com/json-c_releases/releases/json-c-" + version ".tar.gz")) (sha256 (base32 "0gwzic3ifg2d0w32ya3agpxh8i083cgvf7kmc51cnbgqnfr02300")) @@ -2977,3 +2978,28 @@ directory.") various contexts including the R console, R Markdown documents, and Shiny web applications.") (license l:expat))) + +(define-public r-curl + (package + (name "r-curl") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (cran-uri "curl" version)) + (sha256 + (base32 + "02p9s1jlk8dcbvn71ivn4xnrqh9dwqyhgn4s1fzcfmnmfxhl5gld")))) + (build-system r-build-system) + (inputs + `(("libcurl" ,curl))) + (home-page "https://github.com/jeroenooms/curl") + (synopsis "HTTP client for R") + (description + "The @code{curl()} and @code{curl_download()} functions provide highly +configurable drop-in replacements for base @code{url()} and +@code{download.file()} with better performance, support for encryption, gzip +compression, authentication, and other @code{libcurl} goodies. The core of +the package implements a framework for performing fully customized requests +where data can be processed either in memory, on disk, or streaming via the +callback or connection interfaces.") + (license l:expat))) diff --git a/gnu/packages/weechat.scm b/gnu/packages/weechat.scm index d88ad53166..2142f5638e 100644 --- a/gnu/packages/weechat.scm +++ b/gnu/packages/weechat.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright 2014 Kevin Lemonnier +;;; Copyright © 2014 Kevin Lemonnier +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,6 +20,7 @@ ;; TODO: Add ruby (define-module (gnu packages weechat) + #:use-module (gnu packages) #:use-module (gnu packages ncurses) #:use-module (gnu packages base) #:use-module (gnu packages gettext) @@ -47,11 +49,13 @@ (name "weechat") (version "1.3") (source (origin - (method url-fetch) - (uri (string-append "http://weechat.org/files/src/weechat-" + (method url-fetch) + (uri (string-append "http://weechat.org/files/src/weechat-" version ".tar.gz")) - (sha256 - (base32 "13b7dfs3sn71c51fi0bli5rzlsppil6gg1lzik3k8l43yhhqyv2w")))) + (sha256 + (base32 + "13b7dfs3sn71c51fi0bli5rzlsppil6gg1lzik3k8l43yhhqyv2w")) + (patches (list (search-patch "weechat-python.patch"))))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) ("pkg-config" ,pkg-config) @@ -75,20 +79,22 @@ ("python" ,python-2) ("perl" ,perl) ("tcl" ,tcl))) - (arguments `(#:configure-flags (list - (string-append - "--with-tclconfig=" - (assoc-ref %build-inputs "tcl") "/lib")) - #:phases (alist-cons-after - 'autogen 'fix-file - (lambda _ - (substitute* "configure" - (("/usr/bin/file") (which "file")))) - (alist-cons-before - 'configure 'autogen - (lambda _ - (zero? (system* "./autogen.sh"))) - %standard-phases)))) + (arguments + `(#:configure-flags (list (string-append + "--with-tclconfig=" + (assoc-ref %build-inputs "tcl") "/lib")) + #:phases (modify-phases %standard-phases + (add-before 'configure 'autogen + (lambda _ + (zero? (system* "./autogen.sh")))) + (add-before 'build 'set-python-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/plugins/python/weechat-python.c" + (("python2_bin = weechat_python_get_python2_bin.*;") + (string-append "python2_bin = strdup (\"" + (assoc-ref inputs "python") + "/bin/python\");\n"))) + #t))))) (synopsis "Extensible chat client") (description "WeeChat (Wee Enhanced Environment for Chat) is an Internet Relay Chat client, which is designed to be light and fast. diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index f4ccb66d91..d8a7bea48e 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -32,7 +32,7 @@ (define-public wget (package (name "wget") - (version "1.16.3") + (version "1.17.1") (source (origin (method url-fetch) @@ -40,7 +40,7 @@ version ".tar.xz")) (sha256 (base32 - "0dzv5xf9qxc2bp4cyifmaghh3h464wbm73xiwcrvckf1ynqbgxv7")))) + "1jcpvl5sxb2ag8yahpy370c5jlfb097a21k2mhsidh4wxdhrnmgy")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 7f614e18c8..1765c3a6b0 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Siniša Biđin ;;; Copyright © 2015 Eric Bavier ;;; Copyright © 2015 xd1le +;;; Copyright © 2015 Paul van der Walt ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ (define-module (gnu packages wm) #:use-module (guix licenses) #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (gnu packages linux) #:use-module (guix build-system gnu) #:use-module (guix build-system haskell) @@ -177,7 +179,7 @@ commands would.") ("pkg-config" ,pkg-config))) (home-page "http://i3wm.org/") (synopsis "Improved tiling window manager") - (description "i3 is a tiling window manager, completely written + (description "A tiling window manager, completely written from scratch. i3 is primarily targeted at advanced users and developers.") (license bsd-3))) @@ -190,10 +192,19 @@ developers.") (source (origin (method url-fetch) (uri (string-append "http://hackage.haskell.org/package/xmonad/" - "xmonad-" version ".tar.gz")) + name "-" version ".tar.gz")) (sha256 (base32 - "1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r")))) + "1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r")) + (modules '((guix build utils))) + (snippet + ;; Here we update the constraints on the utf8-string package in + ;; the Cabal file. We allow a newer version which is compatible + ;; with GHC 7.10.2. The same change is applied on Hackage. See + ;; . + '(substitute* "xmonad.cabal" + (("utf8-string >= 0.3 && < 0.4") + "utf8-string >= 0.3 && < 1.1"))))) (build-system haskell-build-system) (inputs `(("ghc-mtl" ,ghc-mtl) @@ -232,7 +243,7 @@ tiled on several screens.") (define-public ghc-xmonad-contrib (package (name "ghc-xmonad-contrib") - (version "0.11.3") + (version "0.11.4") (source (origin (method url-fetch) @@ -240,10 +251,11 @@ tiled on several screens.") "xmonad-contrib-" version ".tar.gz")) (sha256 (base32 - "14h9vr33yljymswj50wbimav263y9abdcgi07mvfis0zd08rxqxa")))) + "1g5cw9vvnfbiyi599fngk02zlmdhrf82x0bndhypkn6kybab6yd3")))) (build-system haskell-build-system) (propagated-inputs `(("ghc-mtl" ,ghc-mtl) + ("ghc-old-time" ,ghc-old-time) ("ghc-random" ,ghc-random) ("ghc-utf8-string" ,ghc-utf8-string) ("ghc-extensible-exceptions" ,ghc-extensible-exceptions) @@ -268,7 +280,8 @@ tiling window manager for X.") version ".tar.gz")) (sha256 (base32 - "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r")))) + "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r")) + (patches (map search-patch '("evilwm-lost-focus-bug.patch"))))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index f680d253c8..4b5308c665 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) ;for libgudev #:use-module (gnu packages perl) #:use-module (gnu packages python) #:use-module (gnu packages linux) @@ -199,7 +200,7 @@ rasterisation.") (define-public libdrm (package (name "libdrm") - (version "2.4.58") + (version "2.4.65") (source (origin (method url-fetch) @@ -209,7 +210,8 @@ rasterisation.") ".tar.bz2")) (sha256 (base32 - "1pb5lfb3kh36p9axq620daclq68rqb3mhzxpz0pb18y9p7kglmdi")))) + "1i4n7mz49l0j4kr0dg9n1j3hlc786ncqgj0v5fci1mz7pp40m5ki")) + (patches (list (search-patch "libdrm-symbol-check.patch"))))) (build-system gnu-build-system) (inputs `(("libpciaccess" ,libpciaccess) @@ -605,6 +607,7 @@ Escape key when Left Control is pressed and released on its own.") (inputs `(("glib" ,glib) ("gtk+" ,gtk+) + ("libgudev" ,libgudev) ("eudev" ,eudev) ("libxml2" ,libxml2))) (home-page "http://linuxwacom.sourceforge.net/") diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index e42c58050d..e213fb6067 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -35,6 +35,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages gnome) #:use-module (gnu packages pdf) + #:use-module (gnu packages polkit) #:use-module (gnu packages gstreamer) #:use-module (gnu packages linux) #:use-module (gnu packages photo) @@ -111,6 +112,8 @@ Xfce Desktop Environment.") ;; Run test-suite under a dbus session. (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service (string-append %output "/share")) + ;; For the missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0"); (zero? (system* "dbus-launch" "make" "check"))) (alist-delete 'check %standard-phases)))) (native-inputs @@ -421,7 +424,19 @@ your system in categories, so you can quickly find and launch them.") "/src/" name "-" version ".tar.bz2")) (sha256 (base32 - "01kvbd09c06j20n155hracsgrq06rlmfgdywffjsvlwpn19m9j38")))) + "01kvbd09c06j20n155hracsgrq06rlmfgdywffjsvlwpn19m9j38")) + (patches + ;; See: https://bugzilla.xfce.org/show_bug.cgi?id=12282 + (list (search-patch "xfce4-session-fix-xflock4.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "xfsm-shutdown-helper/main.c" + (("/sbin/shutdown -h now") "halt") + (("/sbin/shutdown -r now") "restart") + (("/usr/sbin/pm-suspend") "pm-suspend") + (("/usr/sbin/pm-hibernate") "pm-hibernate")) + #t)))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -431,6 +446,8 @@ your system in categories, so you can quickly find and launch them.") ("intltool" ,intltool))) (inputs `(("iceauth" ,iceauth) + ("upower" ,upower) + ("polkit" ,polkit) ("libsm" ,libsm) ("libwnck" ,libwnck-1) ("libxfce4ui" ,libxfce4ui))) diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm index c4db640d0f..3e4d6687ea 100644 --- a/gnu/packages/xiph.scm +++ b/gnu/packages/xiph.scm @@ -4,6 +4,8 @@ ;;; Copyright © 2013 David Thompson ;;; Copyright © 2014 Sree Harsha Totakura ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Paul van der Walt +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +48,7 @@ libkate vorbis-tools opus + opusfile opus-tools)) (define libogg @@ -163,9 +166,11 @@ stereo encoding, and voice activity detection.") ;; XXX: Should back-ends be pushed to different outputs? For instance, ;; "out" would include only the ALSA back-end, while "pulse" would ;; contain 'lib/ao/plugins-4/libpulse.*'. - (inputs `(("pkg-config" ,pkg-config) - ("alsa-lib" ,alsa-lib) - ("pulseaudio" ,pulseaudio))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("pulseaudio" ,pulseaudio))) + (native-inputs + `(("pkg-config" ,pkg-config))) (synopsis "Cross platform audio library") (description "Libao is a cross-platform audio library that allows programs to @@ -288,7 +293,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about (define opus (package (name "opus") - (version "1.1") + (version "1.1.1") (source (origin (method url-fetch) (uri (string-append @@ -296,7 +301,7 @@ ogginfo, to obtain information (tags, bitrate, length, etc.) about ".tar.gz")) (sha256 (base32 - "158xprn2086arvdib3vbbygz7z6jqkw2nci7nlywzzwallap0wmr")))) + "07iplfwim26b6k1bqjyciaqvihps9rk5gi8385axa83ppmbgz14v")))) (build-system gnu-build-system) (synopsis "Versatile audio codec") (description @@ -341,6 +346,34 @@ decoding .opus files.") (license license:bsd-3) (home-page "http://www.opus-codec.org"))) +(define opusfile + (package + (name "opusfile") + (version "0.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.xiph.org/releases/opus/opusfile-" version + ".tar.gz")) + (sha256 + (base32 + "19iys2kld75k0210b807i4illrdmj3cmmnrgxlc9y4vf6mxp2a14")))) + (build-system gnu-build-system) + (propagated-inputs + `(("opus" ,opus))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libogg" ,libogg) + ("openssl" ,openssl))) + (synopsis "Versatile audio codec") + (description + "The opusfile library provides seeking, decode, and playback of Opus +streams in the Ogg container (.opus files) including over http(s) on posix and +windows systems.") + (license license:bsd-3) + (home-page "http://www.opus-codec.org"))) + (define-public icecast (package (name "icecast") diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index d9c92d6d93..4e76cbc3c8 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Ricardo Wurmus ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,14 +64,14 @@ things the parser might find in the XML document (like start tags).") (define-public libxml2 (package (name "libxml2") - (version "2.9.2") + (version "2.9.3") (source (origin (method url-fetch) (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-" version ".tar.gz")) (sha256 (base32 - "1g6mf03xcabmk5ing1lwqmasr803616gb2xhn7pll10x2l5w6y2i")))) + "0bd17g6znn2r98gzpjppsqjg33iraky4px923j3k8kdl8qgy7sad")))) (build-system gnu-build-system) (home-page "http://www.xmlsoft.org/") (synopsis "C parser for XML") @@ -129,7 +130,8 @@ project (but it is usable outside of the Gnome platform).") version ".tar.gz")) (sha256 (base32 - "13029baw9kkyjgr7q3jccw2mz38amq7mmpr5p3bh775qawd1bisz")))) + "13029baw9kkyjgr7q3jccw2mz38amq7mmpr5p3bh775qawd1bisz")) + (patches (list (search-patch "libxslt-CVE-2015-7995.patch"))))) (build-system gnu-build-system) (home-page "http://xmlsoft.org/XSLT/index.html") (synopsis "C library for applying XSLT stylesheets to XML documents") @@ -410,7 +412,7 @@ parsing/saving.") (define-public xmlto (package (name "xmlto") - (version "0.0.25") + (version "0.0.28") (source (origin (method url-fetch) @@ -419,7 +421,7 @@ parsing/saving.") version ".tar.bz2")) (sha256 (base32 - "0dp5nxq491gymq806za0dk4hngfmq65ysrqbn0ypajqbbl6vf71n")))) + "0xhj8b2pwp4vhl9y16v3dpxpsakkflfamr191mprzsspg4xdyc0i")))) (build-system gnu-build-system) (arguments ;; Make sure the reference to util-linux's 'getopt' is kept in 'xmlto'. @@ -489,3 +491,72 @@ Libxml2).") UTF-8 and UTF-16 encoding.") ;; LGPL 2.0+ with additional exceptions for static linking (license license:lgpl2.0+))) + +;; TinyXML is an unmaintained piece of software, so the patches and build +;; system massaging have no upstream potential. +(define-public tinyxml + (package + (name "tinyxml") + (version "2.6.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tinyxml/tinyxml_" + (string-join (string-split version #\.) "_") + ".tar.gz")) + (sha256 + (base32 + "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m")) + (patches (list (search-patch "tinyxml-use-stl.patch"))))) + (build-system gnu-build-system) + ;; This library is missing *a lot* of the steps to make it usable, so we + ;; have to add them here, like every other distro must do. + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'build 'build-shared-library + (lambda _ + (zero? (system* "g++" "-Wall" "-O2" "-shared" "-fpic" + "tinyxml.cpp" "tinyxmlerror.cpp" + "tinyxmlparser.cpp" "tinystr.cpp" + "-o" "libtinyxml.so")))) + (replace 'check + (lambda _ (zero? (system "./xmltest")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (include (string-append out "/include")) + (lib (string-append out "/lib")) + (pkgconfig (string-append out "/lib/pkgconfig")) + (doc (string-append out "/share/doc"))) + ;; Install libs and headers. + (install-file "libtinyxml.so" lib) + (install-file "tinystr.h" include) + (install-file "tinyxml.h" include) + ;; Generate and install pkg-config file. + (mkdir-p pkgconfig) + ;; Software such as Kodi expect this file to be present, but + ;; it's not provided in the source code. + (call-with-output-file (string-append pkgconfig "/tinyxml.pc") + (lambda (port) + (format port "prefix=~a +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: TinyXML +Description: A simple, small, C++ XML parser +Version: ~a +Libs: -L${libdir} -ltinyxml +Cflags: -I${includedir} +" + out ,version))) + ;; Install docs. + (mkdir-p doc) + (copy-recursively "docs" (string-append doc "tinyxml")) + #t)))))) + (synopsis "Small XML parser for C++") + (description "TinyXML is a small and simple XML parsing library for the +C++ programming langauge.") + (home-page "http://www.grinninglizard.com/tinyxml/index.html") + (license license:zlib))) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index b39bbd436f..42422a3c56 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014, 2015 Eric Bavier ;;; Copyright © 2015 Ludovic Courtès ;;; Copyright © 2015 Eric Dvorsak +;;; Copyright © 2015 Cyrill Schenkel ;;; ;;; This file is part of GNU Guix. ;;; @@ -1128,7 +1129,7 @@ themselves.") (define-public libpciaccess (package (name "libpciaccess") - (version "0.13.2") + (version "0.13.4") (source (origin (method url-fetch) @@ -1138,7 +1139,7 @@ themselves.") ".tar.bz2")) (sha256 (base32 - "06fy43n3c450h7xqpn3094bnfn7ca1mrq3i856y8kyqa0lmqraxb")))) + "1krgryi9ngjr66242v0v5mczihgv0y7rrvx0563arr318mjn9y07")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) @@ -2709,8 +2710,8 @@ framebuffer device.") "19y13xl7yfrgyis92rmxi0ld95ajgr5il0n9j1dridwzw9aizz1q")) (patches (list (search-patch "xf86-video-geode-glibc-2.20.patch"))))) (build-system gnu-build-system) - (inputs `(("pkg-config" ,pkg-config) - ("xorg-server" ,xorg-server))) + (inputs `(("xorg-server" ,xorg-server))) + (native-inputs `(("pkg-config" ,pkg-config))) (supported-systems ;; This driver is only supported on i686 systems. (filter (lambda (system) (string-prefix? "i686-" system)) @@ -5439,3 +5440,44 @@ perl programs to display windows and graphics on X11 servers.") ;; of the extension modules in the directory Protocol/Ext: see those files ;; for details)." (license (package-license perl)))) + +(define-public xcompmgr + (package + (name "xcompmgr") + (version "1.1.7") + (source + (origin + ;; there's no current tarball + (method git-fetch) + (uri (git-reference + (url "http://anongit.freedesktop.org/git/xorg/app/xcompmgr.git") + (commit (string-append name "-" version)))) + (sha256 + (base32 + "04swkrm3gk689wrjc418bd3n25w8r20kg1xfbn5j8d7mx1r5gf16")) + (file-name (string-append name "-" version)))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + (setenv "NOCONFIGURE" "t") + (zero? (system* "sh" "autogen.sh"))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("libX11" ,libx11) + ("libXext" ,libxext) + ("libXcomposite" ,libxcomposite) + ("libXfixes" ,libxfixes) + ("libXdamage" ,libxdamage) + ("libXrender" ,libxrender))) + (synopsis "X Compositing manager using RENDER") + (description "xcompmgr is a sample compositing manager for X servers +supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE extensions. It enables +basic eye-candy effects.") + (home-page "http://cgit.freedesktop.org/xorg/app/xcompmgr/") + (license (license:x11-style + "http://cgit.freedesktop.org/xorg/app/xcompmgr/tree/COPYING")))) diff --git a/gnu/packages/zsh.scm b/gnu/packages/zsh.scm index 3d3d5889d9..c2f09226bd 100644 --- a/gnu/packages/zsh.scm +++ b/gnu/packages/zsh.scm @@ -29,13 +29,14 @@ (define-public zsh (package (name "zsh") - (version "5.0.7") + (version "5.1.1") (source (origin - (method url-fetch) - (uri (string-append "http://www.zsh.org/pub/zsh-" version - ".tar.gz")) - (sha256 - (base32 "06drwywxa0zm8mizk32wc6ijhpzlyy2mcmskj66bnyggg70s9w23")))) + (method url-fetch) + (uri (string-append "http://www.zsh.org/pub/zsh-" version + ".tar.gz")) + (sha256 + (base32 + "11shllzhq53fg8ngy3bgbmpf09fn2czifg7hsb41nxi3410mpvcl")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre") #:phases (alist-cons-before @@ -53,6 +54,7 @@ "Test/E01options.ztst" "Test/A05execution.ztst" "Test/A01grammar.ztst" + "Test/A06assign.ztst" "Test/B02typeset.ztst" "Completion/Unix/Command/_init_d" "Util/preconfig") diff --git a/gnu/services.scm b/gnu/services.scm index d0fe0ade17..0e1c74bda8 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -21,6 +21,7 @@ #:use-module (guix monads) #:use-module (guix store) #:use-module (guix records) + #:use-module (guix profiles) #:use-module (guix sets) #:use-module (guix ui) #:use-module (gnu packages base) @@ -48,6 +49,7 @@ service-kind service-parameters + modify-services service-back-edges fold-services @@ -59,12 +61,15 @@ ambiguous-target-service-error-service ambiguous-target-service-error-target-type + system-service-type boot-service-type activation-service-type activation-service->script + %linux-bare-metal-service etc-service-type etc-directory setuid-program-service-type + profile-service-type firmware-service-type %boot-service @@ -87,9 +92,10 @@ ;;; by providing one procedure to compose extensions, and one procedure to ;;; extend itself. ;;; -;;; A notable service type is BOOT-SERVICE-TYPE, which has a single instance, -;;; %BOOT-SERVICE. %BOOT-SERVICE constitutes the root of the service DAG. It -;;; produces the boot script that the initrd loads. +;;; A notable service type is SYSTEM-SERVICE-TYPE, which has a single +;;; instance, which is the root of the service DAG. Its value is the +;;; derivation that produces the 'system' directory as returned by +;;; 'operating-system-derivation'. ;;; ;;; The 'fold-services' procedure can be passed a list of procedures, which it ;;; "folds" by propagating extensions down the graph; it returns the root @@ -133,13 +139,73 @@ (parameters service-parameters)) +(define-syntax %modify-service + (syntax-rules (=>) + ((_ service) + service) + ((_ svc (kind param => exp ...) clauses ...) + (if (eq? (service-kind svc) kind) + (let ((param (service-parameters svc))) + (service (service-kind svc) + (begin exp ...))) + (%modify-service svc clauses ...))))) + +(define-syntax modify-services + (syntax-rules () + "Modify the services listed in SERVICES according to CLAUSES. Each clause +must have the form: + + (TYPE VARIABLE => BODY) + +where TYPE is a service type, such as 'guix-service-type', and VARIABLE is an +identifier that is bound within BODY to the value of the service of that +TYPE. Consider this example: + + (modify-services %base-services + (guix-service-type config => + (guix-configuration + (inherit config) + (use-substitutes? #f) + (extra-options '(\"--gc-keep-derivations\")))) + (mingetty-service-type config => + (mingetty-configuration + (inherit config) + (motd (plain-file \"motd\" \"Hi there!\"))))) + +It changes the configuration of the GUIX-SERVICE-TYPE instance, and that of +all the MINGETTY-SERVICE-TYPE instances. + +This is a shorthand for (map (lambda (svc) ...) %base-services)." + ((_ services clauses ...) + (map (lambda (service) + (%modify-service service clauses ...)) + services)))) ;;; ;;; Core services. ;;; -(define (compute-boot-script mexps) +(define (system-derivation mentries mextensions) + "Return as a monadic value the derivation of the 'system' directory +containing the given entries." + (mlet %store-monad ((entries mentries) + (extensions (sequence %store-monad mextensions))) + (lower-object + (file-union "system" + (append entries (concatenate extensions)))))) + +(define system-service-type + ;; This is the ultimate service type, the root of the service DAG. The + ;; service of this type is extended by monadic name/item pairs. These items + ;; end up in the "system directory" as returned by + ;; 'operating-system-derivation'. + (service-type (name 'system) + (extensions '()) + (compose identity) + (extend system-derivation))) + +(define (compute-boot-script _ mexps) (mlet %store-monad ((gexps (sequence %store-monad mexps))) (gexp->file "boot" #~(begin @@ -160,19 +226,25 @@ ;; Activate the system and spawn dmd. #$@gexps)))) -(define (second-argument a b) b) +(define (boot-script-entry mboot) + "Return, as a monadic value, an entry for the boot script in the system +directory." + (mlet %store-monad ((boot mboot)) + (return `(("boot" ,boot))))) (define boot-service-type ;; The service of this type is extended by being passed gexps as monadic ;; values. It aggregates them in a single script, as a monadic value, which ;; becomes its 'parameters'. It is the only service that extends nothing. (service-type (name 'boot) - (extensions '()) - (compose compute-boot-script) - (extend second-argument))) + (extensions + (list (service-extension system-service-type + boot-script-entry))) + (compose append) + (extend compute-boot-script))) (define %boot-service - ;; This is the ultimate service, the root of the service DAG. + ;; The service that produces the boot script. (service boot-service-type #t)) (define* (file-union name files) ;FIXME: Factorize. @@ -202,20 +274,6 @@ file." (union-build #$output '#$things)) #:modules '((guix build union)))))) -(define (modprobe-wrapper) - "Return a wrapper for the 'modprobe' command that knows where modules live. - -This wrapper is typically invoked by the Linux kernel ('call_modprobe', in -kernel/kmod.c), a situation where the 'LINUX_MODULE_DIRECTORY' environment -variable is not set---hence the need for this wrapper." - (let ((modprobe "/run/current-system/profile/bin/modprobe")) - (gexp->script "modprobe" - #~(begin - (setenv "LINUX_MODULE_DIRECTORY" - "/run/booted-system/kernel/lib/modules") - (apply execl #$modprobe - (cons #$modprobe (cdr (command-line)))))))) - (define* (activation-service->script service) "Return as a monadic value the activation script for SERVICE, a service of ACTIVATION-SCRIPT-TYPE." @@ -240,8 +298,7 @@ ACTIVATION-SCRIPT-TYPE." (mlet* %store-monad ((actions (service-activations)) (modules (imported-modules %modules)) - (compiled (compiled-modules %modules)) - (modprobe (modprobe-wrapper))) + (compiled (compiled-modules %modules))) (gexp->file "activate" #~(begin (eval-when (expand load eval) @@ -256,12 +313,6 @@ ACTIVATION-SCRIPT-TYPE." (activate-/bin/sh (string-append #$(canonical-package bash) "/bin/sh")) - ;; Tell the kernel to use our 'modprobe' command. - (activate-modprobe #$modprobe) - - ;; Let users debug their own processes! - (activate-ptrace-attach) - ;; Run the services' activation snippets. ;; TODO: Use 'load-compiled'. (for-each primitive-load '#$actions) @@ -274,6 +325,8 @@ ACTIVATION-SCRIPT-TYPE." (mlet %store-monad ((script (activation-script gexps))) (return #~(primitive-load #$script)))) +(define (second-argument a b) b) + (define activation-service-type (service-type (name 'activate) (extensions @@ -287,6 +340,41 @@ ACTIVATION-SCRIPT-TYPE." ;; receives. (service activation-service-type #t)) +(define %modprobe-wrapper + ;; Wrapper for the 'modprobe' command that knows where modules live. + ;; + ;; This wrapper is typically invoked by the Linux kernel ('call_modprobe', + ;; in kernel/kmod.c), a situation where the 'LINUX_MODULE_DIRECTORY' + ;; environment variable is not set---hence the need for this wrapper. + (let ((modprobe "/run/current-system/profile/bin/modprobe")) + (program-file "modprobe" + #~(begin + (setenv "LINUX_MODULE_DIRECTORY" + "/run/booted-system/kernel/lib/modules") + (apply execl #$modprobe + (cons #$modprobe (cdr (command-line)))))))) + +(define %linux-kernel-activation + ;; Activation of the Linux kernel running on the bare metal (as opposed to + ;; running in a container.) + #~(begin + ;; Tell the kernel to use our 'modprobe' command. + (activate-modprobe #$%modprobe-wrapper) + + ;; Let users debug their own processes! + (activate-ptrace-attach))) + +(define linux-bare-metal-service-type + (service-type (name 'linux-bare-metal) + (extensions + (list (service-extension activation-service-type + (const %linux-kernel-activation)))))) + +(define %linux-bare-metal-service + ;; The service that does things that are needed on the "bare metal", but not + ;; necessary or impossible in a container. + (service linux-bare-metal-service-type #f)) + (define (etc-directory service) "Return the directory for SERVICE, a service of type ETC-SERVICE-TYPE." (files->etc-directory (service-parameters service))) @@ -294,6 +382,12 @@ ACTIVATION-SCRIPT-TYPE." (define (files->etc-directory files) (file-union "etc" files)) +(define (etc-entry files) + "Return an entry for the /etc directory consisting of FILES in the system +directory." + (with-monad %store-monad + (return `(("etc" ,(files->etc-directory files)))))) + (define etc-service-type (service-type (name 'etc) (extensions @@ -302,7 +396,8 @@ ACTIVATION-SCRIPT-TYPE." (lambda (files) (let ((etc (files->etc-directory files))) - #~(activate-etc #$etc)))))) + #~(activate-etc #$etc)))) + (service-extension system-service-type etc-entry))) (compose concatenate) (extend append))) @@ -321,6 +416,23 @@ FILES must be a list of name/file-like object pairs." (compose concatenate) (extend append))) +(define (packages->profile-entry packages) + "Return a system entry for the profile containing PACKAGES." + (mlet %store-monad ((profile (profile-derivation + (manifest (map package->manifest-entry + (delete-duplicates packages eq?)))))) + (return `(("profile" ,profile))))) + +(define profile-service-type + ;; The service that populates the system's profile---i.e., + ;; /run/current-system/profile. It is extended by package lists. + (service-type (name 'profile) + (extensions + (list (service-extension system-service-type + packages->profile-entry))) + (compose concatenate) + (extend append))) + (define (firmware->activation-gexp firmware) "Return a gexp to make the packages listed in FIRMWARE loadable by the kernel." @@ -393,7 +505,8 @@ kernel." (lambda (node) (reverse (vhash-foldq* cons '() node edges))))) -(define* (fold-services services #:key (target-type boot-service-type)) +(define* (fold-services services + #:key (target-type system-service-type)) "Fold SERVICES by propagating their extensions down to the root of type TARGET-TYPE; return the root service adjusted accordingly." (define dependents diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm index 18131fe561..49a737f090 100644 --- a/gnu/services/avahi.scm +++ b/gnu/services/avahi.scm @@ -107,19 +107,24 @@ (stop #~(make-kill-destructor)))))) (define avahi-service-type - (service-type (name 'avahi) - (extensions - (list (service-extension dmd-root-service-type - avahi-dmd-service) - (service-extension dbus-root-service-type - (compose list - avahi-configuration-avahi)) - (service-extension account-service-type - (const %avahi-accounts)) - (service-extension activation-service-type - (const %avahi-activation)) - (service-extension nscd-service-type - (const (list nss-mdns))))))) + (let ((avahi-package (compose list avahi-configuration-avahi))) + (service-type (name 'avahi) + (extensions + (list (service-extension dmd-root-service-type + avahi-dmd-service) + (service-extension dbus-root-service-type + avahi-package) + (service-extension account-service-type + (const %avahi-accounts)) + (service-extension activation-service-type + (const %avahi-activation)) + (service-extension nscd-service-type + (const (list nss-mdns))) + + ;; Provide 'avahi-browse', 'avahi-resolve', etc. in + ;; the system profile. + (service-extension profile-service-type + avahi-package)))))) (define* (avahi-service #:key (avahi avahi) host-name @@ -132,7 +137,9 @@ mDNS/DNS-SD responder that allows for service discovery and \"zero-configuration\" host name lookups (see @uref{http://avahi.org/}), and extends the name service cache daemon (nscd) so that it can resolve @code{.local} host names using -@uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. +@uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. Additionally, +add the @var{avahi} package to the system profile so that commands such as +@command{avahi-browse} are directly usable. If @var{host-name} is different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name. diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 336cc4dec9..a86e8e04c7 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Alex Kost ;;; Copyright © 2015 Mark H Weaver +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,12 +24,12 @@ #:use-module (gnu services) #:use-module (gnu services dmd) #:use-module (gnu services networking) + #:use-module (gnu system pam) #:use-module (gnu system shadow) ; 'user-account', etc. - #:use-module (gnu system linux) ; 'pam-service', etc. #:use-module (gnu system file-systems) ; 'file-system', etc. #:use-module (gnu packages admin) #:use-module ((gnu packages linux) - #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda)) + #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm)) #:use-module ((gnu packages base) #:select (canonical-package glibc)) #:use-module (gnu packages package-management) @@ -48,15 +49,23 @@ device-mapping-service swap-service user-processes-service + session-environment-service + session-environment-service-type host-name-service console-keymap-service console-font-service + + udev-configuration + udev-configuration? + udev-configuration-rules udev-service-type udev-service + udev-rule mingetty-configuration mingetty-configuration? mingetty-service + mingetty-service-type %nscd-default-caches %nscd-default-configuration @@ -74,6 +83,13 @@ guix-configuration guix-configuration? guix-service + guix-service-type + guix-publish-configuration + guix-publish-configuration? + guix-publish-service + guix-publish-service-type + gpm-service-type + gpm-service %base-services)) @@ -142,6 +158,18 @@ FILE-SYSTEM." (symbol-append 'file-system- (string->symbol (file-system-mount-point file-system)))) +(define (mapped-device->dmd-service-name md) + "Return the symbol that denotes the dmd service of MD, a ." + (symbol-append 'device-mapping- + (string->symbol (mapped-device-target md)))) + +(define dependency->dmd-service-name + (match-lambda + ((? mapped-device? md) + (mapped-device->dmd-service-name md)) + ((? file-system? fs) + (file-system->dmd-service-name fs)))) + (define file-system-service-type ;; TODO(?): Make this an extensible service that takes objects ;; and returns a list of . @@ -158,7 +186,7 @@ FILE-SYSTEM." (dmd-service (provision (list (file-system->dmd-service-name file-system))) (requirement `(root-file-system - ,@(map file-system->dmd-service-name dependencies))) + ,@(map dependency->dmd-service-name dependencies))) (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args ;; FIXME: Use or factorize with 'mount-file-system'. @@ -198,7 +226,14 @@ FILE-SYSTEM." (chdir "/") (umount #$target) - #f))))))) + #f)) + + ;; We need an additional module. + (modules `(((gnu build file-systems) + #:select (check-file-system canonicalize-device-spec)) + ,@%default-modules)) + (imported-modules `((gnu build file-systems) + ,@%default-imported-modules))))))) (define* (file-system-service file-system) "Return a service that mounts @var{file-system}, a @code{} @@ -334,6 +369,39 @@ stopped before 'kill' is called." (service user-processes-service-type (list file-systems grace-delay))) + +;;; +;;; System-wide environment variables. +;;; + +(define (environment-variables->environment-file vars) + "Return a file for pam_env(8) that contains environment variables VARS." + (apply mixed-text-file "environment" + (append-map (match-lambda + ((key . value) + (list key "=" value "\n"))) + vars))) + +(define session-environment-service-type + (service-type + (name 'session-environment) + (extensions + (list (service-extension + etc-service-type + (lambda (vars) + (list `("environment" + ,(environment-variables->environment-file vars))))))) + (compose concatenate) + (extend append))) + +(define (session-environment-service vars) + "Return a service that builds the @file{/etc/environment}, which can be read +by PAM-aware applications to set environment variables for sessions. + +VARS should be an association list in which both the keys and the values are +strings or string-valued gexps." + (service session-environment-service-type vars)) + ;;; ;;; Console & co. @@ -691,6 +759,11 @@ If configuration file name @var{config-file} is not specified, use some reasonable default settings." (service syslog-service-type config-file)) + +;;; +;;; Guix services. +;;; + (define* (guix-build-accounts count #:key (group "guixbuild") (first-uid 30001) @@ -751,6 +824,8 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (default #t)) (use-substitutes? guix-configuration-use-substitutes? ;Boolean (default #t)) + (substitute-urls guix-configuration-substitute-urls ;list of strings + (default %default-substitute-urls)) (extra-options guix-configuration-extra-options ;list of strings (default '())) (lsof guix-configuration-lsof ; @@ -765,7 +840,8 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) "Return a for the Guix daemon service with CONFIG." (match config (($ guix build-group build-accounts authorize-key? - use-substitutes? extra-options lsof lsh) + use-substitutes? substitute-urls extra-options + lsof lsh) (list (dmd-service (documentation "Run the Guix daemon.") (provision '(guix-daemon)) @@ -777,6 +853,7 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) #$@(if use-substitutes? '() '("--no-substitutes")) + "--substitute-urls" #$(string-join substitute-urls) #$@extra-options) ;; Add 'lsof' (for the GC) and 'lsh' (for offloading) to the @@ -824,6 +901,58 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) @var{config}." (service guix-service-type config)) + +(define-record-type* + guix-publish-configuration make-guix-publish-configuration + guix-publish-configuration? + (guix guix-publish-configuration-guix ;package + (default guix)) + (port guix-publish-configuration-port ;number + (default 80)) + (host guix-publish-configuration-host ;string + (default "localhost"))) + +(define guix-publish-dmd-service + (match-lambda + (($ guix port host) + (list (dmd-service + (provision '(guix-publish)) + (requirement '(guix-daemon)) + (start #~(make-forkexec-constructor + (list (string-append #$guix "/bin/guix") + "publish" "-u" "guix-publish" + "-p" #$(number->string port) + (string-append "--listen=" #$host)))) + (stop #~(make-kill-destructor))))))) + +(define %guix-publish-accounts + (list (user-group (name "guix-publish") (system? #t)) + (user-account + (name "guix-publish") + (group "guix-publish") + (system? #t) + (comment "guix publish user") + (home-directory "/var/empty") + (shell #~(string-append #$shadow "/sbin/nologin"))))) + +(define guix-publish-service-type + (service-type (name 'guix-publish) + (extensions + (list (service-extension dmd-root-service-type + guix-publish-dmd-service) + (service-extension account-service-type + (const %guix-publish-accounts)))))) + +(define* (guix-publish-service #:key (guix guix) (port 80) (host "localhost")) + "Return a service that runs @command{guix publish} listening on @var{host} +and @var{port} (@pxref{Invoking guix publish}). + +This assumes that @file{/etc/guix} already contains a signing key pair as +created by @command{guix archive --generate-key} (@pxref{Invoking guix +archive}). If that is not the case, the service will fail to start." + (service guix-publish-service-type + (guix-publish-configuration (guix guix) (port port) (host host)))) + ;;; ;;; Udev. @@ -864,12 +993,9 @@ item of @var{packages}." #:modules '((guix build union) (guix build utils)))) -(define* (kvm-udev-rule) - "Return a directory with a udev rule that changes the group of -@file{/dev/kvm} to \"kvm\" and makes it #o660." - ;; Apparently QEMU-KVM used to ship this rule, but now we have to add it by - ;; ourselves. - (computed-file "kvm-udev-rules" +(define (udev-rule file-name contents) + "Return a directory with a udev rule file FILE-NAME containing CONTENTS." + (computed-file file-name #~(begin (use-modules (guix build utils)) @@ -878,20 +1004,26 @@ item of @var{packages}." (mkdir-p rules.d) (call-with-output-file - (string-append rules.d "/90-kvm.rules") + (string-append rules.d "/" #$file-name) (lambda (port) - ;; Build users are part of the "kvm" group, so we - ;; can fearlessly make /dev/kvm 660 (see - ;; , for background.) - (display "\ -KERNEL==\"kvm\", GROUP=\"kvm\", MODE=\"0660\"\n" port)))) + (display #$contents port)))) #:modules '((guix build utils)))) +(define kvm-udev-rule + ;; Return a directory with a udev rule that changes the group of /dev/kvm to + ;; "kvm" and makes it #o660. Apparently QEMU-KVM used to ship this rule, + ;; but now we have to add it by ourselves. + + ;; Build users are part of the "kvm" group, so we can fearlessly make + ;; /dev/kvm 660 (see , for background.) + (udev-rule "90-kvm.rules" + "KERNEL==\"kvm\", GROUP=\"kvm\", MODE=\"0660\"\n")) + (define udev-dmd-service ;; Return a for UDEV with RULES. (match-lambda (($ udev rules) - (let* ((rules (udev-rules-union (cons* udev (kvm-udev-rule) rules))) + (let* ((rules (udev-rules-union (cons* udev kvm-udev-rule rules))) (udev.conf (computed-file "udev.conf" #~(call-with-output-file #$output (lambda (port) @@ -1034,6 +1166,60 @@ gexp, to open it, and evaluate @var{close} to close it." "Return a service that uses @var{device} as a swap device." (service swap-service-type device)) + +(define-record-type* + gpm-configuration make-gpm-configuration gpm-configuration? + (gpm gpm-configuration-gpm) ;package + (options gpm-configuration-options)) ;list of strings + +(define gpm-dmd-service + (match-lambda + (($ gpm options) + (list (dmd-service + (requirement '(udev)) + (provision '(gpm)) + (start #~(lambda () + ;; 'gpm' runs in the background and sets a PID file. + ;; Note that it requires running as "root". + (false-if-exception (delete-file "/var/run/gpm.pid")) + (fork+exec-command (list (string-append #$gpm "/sbin/gpm") + #$@options)) + + ;; Wait for the PID file to appear; declare failure if + ;; it doesn't show up. + (let loop ((i 3)) + (or (file-exists? "/var/run/gpm.pid") + (if (zero? i) + #f + (begin + (sleep 1) + (loop (1- i)))))))) + + (stop #~(lambda (_) + ;; Return #f if successfully stopped. + (not (zero? (system* (string-append #$gpm "/sbin/gpm") + "-k")))))))))) + +(define gpm-service-type + (service-type (name 'gpm) + (extensions + (list (service-extension dmd-root-service-type + gpm-dmd-service))))) + +(define* (gpm-service #:key (gpm gpm) + (options '("-m" "/dev/input/mice" "-t" "ps2"))) + "Run @var{gpm}, the general-purpose mouse daemon, with the given +command-line @var{options}. GPM allows users to use the mouse in the console, +notably to select, copy, and paste text. The default value of @var{options} +uses the @code{ps2} protocol, which works for both USB and PS/2 mice. + +This service is not part of @var{%base-services}." + ;; To test in QEMU, use "-usbdevice mouse" and then, in the monitor, use + ;; "info mice" and "mouse_set X" to use the right mouse. + (service gpm-service-type + (gpm-configuration (gpm gpm) (options options)))) + + (define %base-services ;; Convenience variable holding the basic services. (let ((motd (plain-file "motd" " diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index e4ecd961c5..9b0d198683 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Sou Bunnbu ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,7 +21,7 @@ #:use-module (gnu services) #:use-module (gnu services dmd) #:use-module (gnu system shadow) - #:use-module (gnu packages glib) + #:use-module ((gnu packages glib) #:select (dbus/activation)) #:use-module (gnu packages admin) #:use-module (guix gexp) #:use-module (guix records) @@ -37,13 +38,38 @@ dbus-configuration make-dbus-configuration dbus-configuration? (dbus dbus-configuration-dbus ; - (default dbus)) + (default dbus/activation)) (services dbus-configuration-services ;list of (default '()))) -(define (dbus-configuration-directory dbus services) - "Return a configuration directory for @var{dbus} that includes the -@code{etc/dbus-1/system.d} directories of each package listed in +(define (system-service-directory services) + "Return the system service directory, containing @code{.service} files for +all the services that may be activated by the daemon." + (computed-file "dbus-system-services" + #~(begin + (use-modules (guix build utils) + (srfi srfi-1)) + + (define files + (append-map (lambda (service) + (find-files (string-append + service + "/share/dbus-1/system-services") + "\\.service$")) + (list #$@services))) + + (mkdir #$output) + (for-each (lambda (file) + (symlink file + (string-append #$output "/" + (basename file)))) + files) + #t) + #:modules '((guix build utils)))) + +(define (dbus-configuration-directory services) + "Return a directory contains the @code{system-local.conf} file for DBUS that +includes the @code{etc/dbus-1/system.d} directories of each package listed in @var{services}." (define build #~(begin @@ -53,24 +79,27 @@ (define (services->sxml services) ;; Return the SXML 'includedir' clauses for DIRS. `(busconfig + (servicehelper "/run/setuid-programs/dbus-daemon-launch-helper") + + ;; First, the '.service' files of services subject to activation. + ;; We use a fixed location under /etc because the setuid helper + ;; looks for them in that location and nowhere else. See + ;; . + (servicedir "/etc/dbus-1/system-services") + ,@(append-map (lambda (dir) `((includedir ,(string-append dir "/etc/dbus-1/system.d")) - (servicedir ;for '.service' files - ,(string-append dir "/share/dbus-1/services")) - (servicedir ;likewise, for auto-activation - ,(string-append - dir - "/share/dbus-1/system-services")))) + (servicedir ;for '.service' files + ,(string-append dir "/share/dbus-1/services")))) services))) (mkdir #$output) - (copy-file (string-append #$dbus "/etc/dbus-1/system.conf") - (string-append #$output "/system.conf")) - ;; The default 'system.conf' has an clause for - ;; 'system.d', so create it. - (mkdir (string-append #$output "/system.d")) + ;; Provide /etc/dbus-1/system-services, which is where the setuid + ;; helper looks for system service files. + (symlink #$(system-service-directory services) + (string-append #$output "/system-services")) ;; 'system-local.conf' is automatically included by the default ;; 'system.conf', so this is where we stuff our own things. @@ -81,6 +110,12 @@ (computed-file "dbus-configuration" build)) +(define (dbus-etc-files config) + "Return a list of FILES for @var{etc-service-type} to build the +@code{/etc/dbus-1} directory." + (list `("dbus-1" ,(dbus-configuration-directory + (dbus-configuration-services config))))) + (define %dbus-accounts ;; Accounts used by the system bus. (list (user-group (name "messagebus") (system? #t)) @@ -92,6 +127,12 @@ (home-directory "/var/run/dbus") (shell #~(string-append #$shadow "/sbin/nologin"))))) +(define dbus-setuid-programs + ;; Return the file name of the setuid program that we need. + (match-lambda + (($ dbus services) + (list #~(string-append #$dbus "/libexec/dbus-daemon-launch-helper"))))) + (define (dbus-activation config) "Return an activation gexp for D-Bus using @var{config}." #~(begin @@ -120,18 +161,15 @@ (define dbus-dmd-service (match-lambda - (($ dbus services) - (let ((conf (dbus-configuration-directory dbus services))) - (list (dmd-service - (documentation "Run the D-Bus system daemon.") - (provision '(dbus-system)) - (requirement '(user-processes)) - (start #~(make-forkexec-constructor - (list (string-append #$dbus "/bin/dbus-daemon") - "--nofork" - (string-append "--config-file=" #$conf - "/system.conf")))) - (stop #~(make-kill-destructor)))))))) + (($ dbus) + (list (dmd-service + (documentation "Run the D-Bus system daemon.") + (provision '(dbus-system)) + (requirement '(user-processes)) + (start #~(make-forkexec-constructor + (list (string-append #$dbus "/bin/dbus-daemon") + "--nofork" "--system"))) + (stop #~(make-kill-destructor))))))) (define dbus-root-service-type (service-type (name 'dbus) @@ -140,14 +178,15 @@ dbus-dmd-service) (service-extension activation-service-type dbus-activation) + (service-extension etc-service-type + dbus-etc-files) (service-extension account-service-type - (const %dbus-accounts)))) + (const %dbus-accounts)) + (service-extension setuid-program-service-type + dbus-setuid-programs))) ;; Extensions consist of lists of packages (representing D-Bus ;; services) that we just concatenate. - ;; - ;; FIXME: We need 'dbus-daemon-launch-helper' to be - ;; setuid-root for auto-activation to work. (compose concatenate) ;; The service's parameters field is extended by augmenting @@ -159,7 +198,7 @@ (append (dbus-configuration-services config) services))))))) -(define* (dbus-service #:key (dbus dbus) (services '())) +(define* (dbus-service #:key (dbus dbus/activation) (services '())) "Return a service that runs the \"system bus\", using @var{dbus}, with support for @var{services}. diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 69edc6d9bb..694a8eda7e 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -27,13 +27,15 @@ #:use-module (gnu services xorg) #:use-module (gnu services networking) #:use-module (gnu system shadow) - #:use-module (gnu system linux) ; unix-pam-service + #:use-module (gnu system pam) #:use-module (gnu packages glib) #:use-module (gnu packages admin) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gnome) #:use-module (gnu packages avahi) #:use-module (gnu packages polkit) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages suckless) #:use-module (guix records) #:use-module (guix packages) #:use-module (guix store) @@ -41,6 +43,7 @@ #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (upower-service + udisks-service colord-service geoclue-application %standard-geoclue-applications @@ -222,65 +225,6 @@ levels, with the given configuration settings. It implements the (critical-power-action critical-power-action)))) (service upower-service-type config))) - -;;; -;;; Colord D-Bus service. -;;; - -(define %colord-activation - #~(begin - (use-modules (guix build utils)) - (mkdir-p "/var/lib/colord") - (let ((user (getpwnam "colord"))) - (chown "/var/lib/colord" - (passwd:uid user) (passwd:gid user))))) - -(define %colord-accounts - (list (user-group (name "colord") (system? #t)) - (user-account - (name "colord") - (group "colord") - (system? #t) - (comment "colord daemon user") - (home-directory "/var/empty") - (shell #~(string-append #$shadow "/sbin/nologin"))))) - -(define (colord-dmd-service colord) - "Return a dmd service for COLORD." - ;; TODO: Remove when D-Bus activation works. - (list (dmd-service - (documentation "Run the colord color management service.") - (provision '(colord-daemon)) - (requirement '(dbus-system udev)) - (start #~(make-forkexec-constructor - (list (string-append #$colord "/libexec/colord")))) - (stop #~(make-kill-destructor))))) - -(define colord-service-type - (service-type (name 'colord) - (extensions - (list (service-extension account-service-type - (const %colord-accounts)) - (service-extension activation-service-type - (const %colord-activation)) - (service-extension dmd-root-service-type - colord-dmd-service) - - ;; Colord is a D-Bus service that dbus-daemon can - ;; activate. - (service-extension dbus-root-service-type list) - - ;; Colord provides "color device" rules for udev. - (service-extension udev-service-type list))))) - -(define* (colord-service #:key (colord colord)) - "Return a service that runs @command{colord}, a system service with a D-Bus -interface to manage the color profiles of input and output devices such as -screens and scanners. It is notably used by the GNOME Color Manager graphical -tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web -site} for more information." - (service colord-service-type colord)) - ;;; ;;; GeoClue D-Bus service. @@ -343,23 +287,6 @@ users are allowed." "GEOCLUE_CONFIG_FILE" (geoclue-configuration-file config)))) -(define (geoclue-dmd-service config) - "Return a GeoClue dmd service for CONFIG." - ;; TODO: Remove when D-Bus activation works. - (let ((geoclue (geoclue-configuration-geoclue config)) - (config (geoclue-configuration-file config))) - (list (dmd-service - (documentation "Run the GeoClue location service.") - (provision '(geoclue-daemon)) - (requirement '(dbus-system)) - - (start #~(make-forkexec-constructor - (list (string-append #$geoclue "/libexec/geoclue")) - #:user "geoclue" - #:environment-variables - (list (string-append "GEOCLUE_CONFIG_FILE=" #$config)))) - (stop #~(make-kill-destructor)))))) - (define %geoclue-accounts (list (user-group (name "geoclue") (system? #t)) (user-account @@ -375,8 +302,6 @@ users are allowed." (extensions (list (service-extension dbus-root-service-type geoclue-dbus-service) - (service-extension dmd-root-service-type - geoclue-dmd-service) (service-extension account-service-type (const %geoclue-accounts)))))) @@ -413,6 +338,14 @@ site} for more information." ;;; Polkit privilege management service. ;;; +(define-record-type* + polkit-configuration make-polkit-configuration + polkit-configuration? + (polkit polkit-configuration-polkit ; + (default polkit)) + (actions polkit-configuration-actions ;list of + (default '()))) + (define %polkit-accounts (list (user-group (name "polkitd") (system? #t)) (user-account @@ -424,23 +357,34 @@ site} for more information." (shell "/run/current-system/profile/sbin/nologin")))) (define %polkit-pam-services - (list (unix-pam-service "polkitd"))) + (list (unix-pam-service "polkit-1"))) -(define (polkit-dmd-service polkit) - "Return the for POLKIT." - ;; TODO: Remove when D-Bus activation works. - (list (dmd-service - (documentation "Run the polkit privilege management service.") - (provision '(polkit-daemon)) - (requirement '(dbus-system)) +(define (polkit-directory packages) + "Return a directory containing an @file{actions} and possibly a +@file{rules.d} sub-directory, for use as @file{/etc/polkit-1}." + (computed-file "etc-polkit-1" + #~(begin + (use-modules (guix build union) (srfi srfi-26)) - (start #~(make-forkexec-constructor - (list (string-append #$polkit "/lib/polkit-1/polkitd")))) - (stop #~(make-kill-destructor))))) + (union-build #$output + (map (cut string-append <> + "/share/polkit-1") + (list #$@packages)))) + #:modules '((guix build union)))) + +(define polkit-etc-files + (match-lambda + (($ polkit packages) + `(("polkit-1" ,(polkit-directory packages)))))) + +(define polkit-setuid-programs + (match-lambda + (($ polkit) + (list #~(string-append #$polkit + "/lib/polkit-1/polkit-agent-helper-1") + #~(string-append #$polkit "/bin/pkexec"))))) (define polkit-service-type - ;; TODO: Make it extensible so it can collect policy files from other - ;; services. (service-type (name 'polkit) (extensions (list (service-extension account-service-type @@ -448,17 +392,118 @@ site} for more information." (service-extension pam-root-service-type (const %polkit-pam-services)) (service-extension dbus-root-service-type - list) - (service-extension dmd-root-service-type - polkit-dmd-service))))) + (compose + list + polkit-configuration-polkit)) + (service-extension etc-service-type + polkit-etc-files) + (service-extension setuid-program-service-type + polkit-setuid-programs))) + + ;; Extensions are lists of packages that provide polkit rules + ;; or actions under share/polkit-1/{actions,rules.d}. + (compose concatenate) + (extend (lambda (config actions) + (polkit-configuration + (inherit config) + (actions + (append (polkit-configuration-actions config) + actions))))))) (define* (polkit-service #:key (polkit polkit)) - "Return a service that runs the @command{polkit} privilege management -service. By querying the @command{polkit} service, a privileged system -component can know when it should grant additional capabilities to ordinary -users. For example, an ordinary user can be granted the capability to suspend -the system if the user is logged in locally." - (service polkit-service-type polkit)) + "Return a service that runs the +@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege +management service}, which allows system administrators to grant access to +privileged operations in a structured way. By querying the Polkit service, a +privileged system component can know when it should grant additional +capabilities to ordinary users. For example, an ordinary user can be granted +the capability to suspend the system if the user is logged in locally." + (service polkit-service-type + (polkit-configuration (polkit polkit)))) + + +;;; +;;; Colord D-Bus service. +;;; + +(define %colord-activation + #~(begin + (use-modules (guix build utils)) + (mkdir-p "/var/lib/colord") + (let ((user (getpwnam "colord"))) + (chown "/var/lib/colord" + (passwd:uid user) (passwd:gid user))))) + +(define %colord-accounts + (list (user-group (name "colord") (system? #t)) + (user-account + (name "colord") + (group "colord") + (system? #t) + (comment "colord daemon user") + (home-directory "/var/empty") + (shell #~(string-append #$shadow "/sbin/nologin"))))) + +(define colord-service-type + (service-type (name 'colord) + (extensions + (list (service-extension account-service-type + (const %colord-accounts)) + (service-extension activation-service-type + (const %colord-activation)) + + ;; Colord is a D-Bus service that dbus-daemon can + ;; activate. + (service-extension dbus-root-service-type list) + + ;; Colord provides "color device" rules for udev. + (service-extension udev-service-type list) + + ;; It provides polkit "actions". + (service-extension polkit-service-type list))))) + +(define* (colord-service #:key (colord colord)) + "Return a service that runs @command{colord}, a system service with a D-Bus +interface to manage the color profiles of input and output devices such as +screens and scanners. It is notably used by the GNOME Color Manager graphical +tool. See @uref{http://www.freedesktop.org/software/colord/, the colord web +site} for more information." + (service colord-service-type colord)) + + +;;; +;;; UDisks. +;;; + +(define-record-type* + udisks-configuration make-udisks-configuration + udisks-configuration? + (udisks udisks-configuration-udisks + (default udisks))) + +(define udisks-service-type + (let ((udisks-package (lambda (config) + (list (udisks-configuration-udisks config))))) + (service-type (name 'udisks) + (extensions + (list (service-extension polkit-service-type + udisks-package) + (service-extension dbus-root-service-type + udisks-package) + (service-extension udev-service-type + udisks-package) + + ;; Profile 'udisksctl' & co. in the system profile. + (service-extension profile-service-type + udisks-package)))))) + +(define* (udisks-service #:key (udisks udisks)) + "Return a service for @uref{http://udisks.freedesktop.org/docs/latest/, +UDisks}, a @dfn{disk management} daemon that provides user interfaces with +notifications and ways to mount/unmount disks. Programs that talk to UDisks +include the @command{udisksctl} command, part of UDisks, and GNOME Disks." + (service udisks-service-type + (udisks-configuration (udisks udisks)))) ;;; @@ -601,6 +646,8 @@ the system if the user is logged in locally." (define (elogind-dmd-service config) "Return a dmd service for elogind, using @var{config}." + ;; TODO: We could probably rely on service activation but the '.service' + ;; file currently contains an erroneous 'Exec' line. (let ((config-file (elogind-configuration-file config)) (elogind (elogind-package config))) (list (dmd-service @@ -623,7 +670,9 @@ the system if the user is logged in locally." (compose list elogind-package)) (service-extension udev-service-type (compose list elogind-package)) - ;; TODO: Extend polkit(?) and PAM. + (service-extension polkit-service-type + (compose list elogind-package)) + ;; TODO: Extend PAM with pam_elogind.so. )))) (define* (elogind-service #:key (config (elogind-configuration))) @@ -643,9 +692,14 @@ when they log out." ;; List of services typically useful for a "desktop" use case. (cons* (slim-service) + ;; Screen lockers are a pretty useful thing and these are small. + (screen-locker-service slock) + (screen-locker-service xlockmore "xlock") + ;; The D-Bus clique. (avahi-service) (wicd-service) + (udisks-service) (upower-service) (colord-service) (geoclue-service) diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index e87b9e4415..545087acc9 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -45,6 +45,11 @@ dmd-service-start dmd-service-stop dmd-service-auto-start? + dmd-service-modules + dmd-service-imported-modules + + %default-imported-modules + %default-modules dmd-service-back-edges)) @@ -99,6 +104,18 @@ service that extends DMD-ROOT-SERVICE-TYPE and nothing else." (list (service-extension dmd-root-service-type (compose list proc)))))) +(define %default-imported-modules + ;; Default set of modules imported for a service's consumption. + '((guix build utils) + (guix build syscalls))) + +(define %default-modules + ;; Default set of modules visible in a service's file. + `((dmd service) + (oop goops) + (guix build utils) + (guix build syscalls))) + (define-record-type* dmd-service make-dmd-service dmd-service? @@ -113,64 +130,106 @@ service that extends DMD-ROOT-SERVICE-TYPE and nothing else." (stop dmd-service-stop ;g-expression (procedure) (default #~(const #f))) (auto-start? dmd-service-auto-start? ;Boolean - (default #t))) + (default #t)) + (modules dmd-service-modules ;list of module names + (default %default-modules)) + (imported-modules dmd-service-imported-modules ;list of module names + (default %default-imported-modules))) -(define (assert-no-duplicates services) - "Raise an error if SERVICES provide the same dmd service more than once. +(define (assert-valid-graph services) + "Raise an error if SERVICES does not define a valid dmd service graph, for +instance if a service requires a nonexistent service, or if more than one +service uses a given name. -This is a constraint that dmd's 'register-service' verifies but we'd better -verify it here statically than wait until PID 1 halts with an assertion +These are constraints that dmd's 'register-service' verifies but we'd better +verify them here statically than wait until PID 1 halts with an assertion failure." - (fold (lambda (service set) - (define (assert-unique symbol) - (when (set-contains? set symbol) - (raise (condition - (&message - (message - (format #f (_ "service '~a' provided more than once") - symbol))))))) + (define provisions + ;; The set of provisions (symbols). Bail out if a symbol is given more + ;; than once. + (fold (lambda (service set) + (define (assert-unique symbol) + (when (set-contains? set symbol) + (raise (condition + (&message + (message + (format #f (_ "service '~a' provided more than once") + symbol))))))) - (for-each assert-unique (dmd-service-provision service)) - (fold set-insert set (dmd-service-provision service))) - (setq) - services)) + (for-each assert-unique (dmd-service-provision service)) + (fold set-insert set (dmd-service-provision service))) + (setq 'dmd) + services)) + + (define (assert-satisfied-requirements service) + ;; Bail out if the requirements of SERVICE aren't satisfied. + (for-each (lambda (requirement) + (unless (set-contains? provisions requirement) + (raise (condition + (&message + (message + (format #f (_ "service '~a' requires '~a', \ +which is undefined") + (match (dmd-service-provision service) + ((head . _) head) + (_ service)) + requirement))))))) + (dmd-service-requirement service))) + + (for-each assert-satisfied-requirements services)) + +(define (dmd-service-file-name service) + "Return the file name where the initialization code for SERVICE is to be +stored." + (let ((provisions (string-join (map symbol->string + (dmd-service-provision service))))) + (string-append "dmd-" + (string-map (match-lambda + (#\/ #\-) + (chr chr)) + provisions) + ".scm"))) + +(define (dmd-service-file service) + "Return a file defining SERVICE." + (gexp->file (dmd-service-file-name service) + #~(begin + (use-modules #$@(dmd-service-modules service)) + + (make + #:docstring '#$(dmd-service-documentation service) + #:provides '#$(dmd-service-provision service) + #:requires '#$(dmd-service-requirement service) + #:respawn? '#$(dmd-service-respawn? service) + #:start #$(dmd-service-start service) + #:stop #$(dmd-service-stop service))))) (define (dmd-configuration-file services) "Return the dmd configuration file for SERVICES." (define modules - ;; Extra modules visible to dmd.conf. - '((guix build syscalls) - (gnu build file-systems) - (guix build utils))) + (delete-duplicates + (append-map dmd-service-imported-modules services))) - (assert-no-duplicates services) + (assert-valid-graph services) (mlet %store-monad ((modules (imported-modules modules)) - (compiled (compiled-modules modules))) + (compiled (compiled-modules modules)) + (files (mapm %store-monad dmd-service-file services))) (define config #~(begin (eval-when (expand load eval) (set! %load-path (cons #$modules %load-path)) (set! %load-compiled-path - (cons #$compiled %load-compiled-path))) + (cons #$compiled %load-compiled-path))) - (use-modules (ice-9 ftw) - (guix build syscalls) - (guix build utils) - ((gnu build file-systems) - #:select (check-file-system canonicalize-device-spec))) + (use-modules (system repl error-handling)) - (register-services - #$@(map (lambda (service) - #~(make - #:docstring '#$(dmd-service-documentation service) - #:provides '#$(dmd-service-provision service) - #:requires '#$(dmd-service-requirement service) - #:respawn? '#$(dmd-service-respawn? service) - #:start #$(dmd-service-start service) - #:stop #$(dmd-service-stop service))) - services)) + ;; Arrange to spawn a REPL if loading one of FILES fails. This is + ;; better than a kernel panic. + (call-with-error-handling + (lambda () + (apply register-services (map primitive-load '#$files)))) ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it. (setenv "PATH" "/run/current-system/profile/bin") diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 003d5a5010..ce21b1d9ff 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -22,15 +22,18 @@ #:use-module (gnu services dmd) #:use-module (gnu services dbus) #:use-module (gnu system shadow) - #:use-module (gnu system linux) ;PAM + #:use-module (gnu system pam) #:use-module (gnu packages admin) #:use-module (gnu packages linux) #:use-module (gnu packages tor) #:use-module (gnu packages messaging) #:use-module (gnu packages ntp) #:use-module (gnu packages wicd) + #:use-module (gnu packages gnome) #:use-module (guix gexp) #:use-module (guix records) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:export (%facebook-host-aliases @@ -38,9 +41,11 @@ dhcp-client-service %ntp-servers ntp-service + tor-hidden-service tor-service bitlbee-service - wicd-service)) + wicd-service + network-manager-service)) ;;; Commentary: ;;; @@ -305,6 +310,15 @@ keep the system clock synchronized with that of @var{servers}." ;;; Tor. ;;; +(define-record-type* + tor-configuration make-tor-configuration + tor-configuration? + (tor tor-configuration-tor + (default tor)) + (config-file tor-configuration-config-file) + (hidden-services tor-configuration-hidden-services + (default '()))) + (define %tor-accounts ;; User account and groups for Tor. (list (user-group (name "tor") (system? #t)) @@ -316,20 +330,93 @@ keep the system clock synchronized with that of @var{servers}." (home-directory "/var/empty") (shell #~(string-append #$shadow "/sbin/nologin"))))) -(define (tor-dmd-service tor) +(define-record-type + (hidden-service name mapping) + hidden-service? + (name hidden-service-name) ;string + (mapping hidden-service-mapping)) ;list of port/address tuples + +(define (tor-configuration->torrc config) + "Return a 'torrc' file for CONFIG." + (match config + (($ tor config-file services) + (computed-file + "torrc" + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + (call-with-output-file #$output + (lambda (port) + (display "\ +# The beginning was automatically added. +User tor +DataDirectory /var/lib/tor +Log notice syslog\n" port) + + (for-each (match-lambda + ((service (ports hosts) ...) + (format port "\ +HiddenServiceDir /var/lib/tor/hidden-services/~a~%" + service) + (for-each (lambda (tcp-port host) + (format port "\ +HiddenServicePort ~a ~a~%" + tcp-port host)) + ports hosts))) + '#$(map (match-lambda + (($ name mapping) + (cons name mapping))) + services)) + + ;; Append the user's config file. + (call-with-input-file #$config-file + (lambda (input) + (dump-port input port))) + #t))) + #:modules '((guix build utils)))))) + +(define (tor-dmd-service config) "Return a running TOR." - (let ((torrc (plain-file "torrc" "User tor\n"))) - (list (dmd-service - (provision '(tor)) + (match config + (($ tor) + (let ((torrc (tor-configuration->torrc config))) + (list (dmd-service + (provision '(tor)) - ;; Tor needs at least one network interface to be up, hence the - ;; dependency on 'loopback'. - (requirement '(user-processes loopback)) + ;; Tor needs at least one network interface to be up, hence the + ;; dependency on 'loopback'. + (requirement '(user-processes loopback syslogd)) - (start #~(make-forkexec-constructor - (list (string-append #$tor "/bin/tor") "-f" #$torrc))) - (stop #~(make-kill-destructor)) - (documentation "Run the Tor anonymous network overlay."))))) + (start #~(make-forkexec-constructor + (list (string-append #$tor "/bin/tor") "-f" #$torrc))) + (stop #~(make-kill-destructor)) + (documentation "Run the Tor anonymous network overlay."))))))) + +(define (tor-hidden-service-activation config) + "Return the activation gexp for SERVICES, a list of hidden services." + #~(begin + (use-modules (guix build utils)) + + (define %user + (getpw "tor")) + + (define (initialize service) + (let ((directory (string-append "/var/lib/tor/hidden-services/" + service))) + (mkdir-p directory) + (chown directory (passwd:uid %user) (passwd:gid %user)) + + ;; The daemon bails out if we give wider permissions. + (chmod directory #o700))) + + (mkdir-p "/var/lib/tor") + (chown "/var/lib/tor" (passwd:uid %user) (passwd:gid %user)) + (chmod "/var/lib/tor" #o700) + + (for-each initialize + '#$(map hidden-service-name + (tor-configuration-hidden-services config))))) (define tor-service-type (service-type (name 'tor) @@ -337,14 +424,59 @@ keep the system clock synchronized with that of @var{servers}." (list (service-extension dmd-root-service-type tor-dmd-service) (service-extension account-service-type - (const %tor-accounts)))))) + (const %tor-accounts)) + (service-extension activation-service-type + tor-hidden-service-activation))) -(define* (tor-service #:key (tor tor)) - "Return a service to run the @uref{https://torproject.org,Tor} daemon. + ;; This can be extended with hidden services. + (compose concatenate) + (extend (lambda (config services) + (tor-configuration + (inherit config) + (hidden-services + (append (tor-configuration-hidden-services config) + services))))))) -The daemon runs with the default settings (in particular the default exit -policy) as the @code{tor} unprivileged user." - (service tor-service-type tor)) +(define* (tor-service #:optional + (config-file (plain-file "empty" "")) + #:key (tor tor)) + "Return a service to run the @uref{https://torproject.org, Tor} anonymous +networking daemon. + +The daemon runs as the @code{tor} unprivileged user. It is passed +@var{config-file}, a file-like object, with an additional @code{User tor} line +and lines for hidden services added via @code{tor-hidden-service}. Run +@command{man tor} for information about the configuration file." + (service tor-service-type + (tor-configuration (tor tor) + (config-file config-file)))) + +(define tor-hidden-service-type + ;; A type that extends Tor with hidden services. + (service-type (name 'tor-hidden-service) + (extensions + (list (service-extension tor-service-type list))))) + +(define (tor-hidden-service name mapping) + "Define a new Tor @dfn{hidden service} called @var{name} and implementing +@var{mapping}. @var{mapping} is a list of port/host tuples, such as: + +@example + '((22 \"127.0.0.1:22\") + (80 \"127.0.0.1:8080\")) +@end example + +In this example, port 22 of the hidden service is mapped to local port 22, and +port 80 is mapped to local port 8080. + +This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where +the @file{hostname} file contains the @code{.onion} host name for the hidden +service. + +See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor +project's documentation} for more information." + (service tor-hidden-service-type + (hidden-service name mapping))) ;;; @@ -466,11 +598,58 @@ configuration file." (service-extension dbus-root-service-type list) (service-extension activation-service-type - (const %wicd-activation)))))) + (const %wicd-activation)) + + ;; Add Wicd to the global profile. + (service-extension profile-service-type list))))) (define* (wicd-service #:key (wicd wicd)) "Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network -manager that aims to simplify wired and wireless networking." +management daemon that aims to simplify wired and wireless networking. + +This service adds the @var{wicd} package to the global profile, providing +several commands to interact with the daemon and configure networking: +@command{wicd-client}, a graphical user interface, and the @command{wicd-cli} +and @command{wicd-curses} user interfaces." (service wicd-service-type wicd)) + +;;; +;;; NetworkManager +;;; + +(define %network-manager-activation + ;; Activation gexp for NetworkManager. + #~(begin + (use-modules (guix build utils)) + (mkdir-p "/etc/NetworkManager/system-connections"))) + +(define (network-manager-dmd-service network-manager) + "Return a dmd service for NETWORK-MANAGER." + (list (dmd-service + (documentation "Run the NetworkManager.") + (provision '(networking)) + (requirement '(user-processes dbus-system loopback)) + (start #~(make-forkexec-constructor + (list (string-append #$network-manager + "/sbin/NetworkManager") + "--no-daemon"))) + (stop #~(make-kill-destructor))))) + +(define network-manager-service-type + (service-type (name 'network-manager) + (extensions + (list (service-extension dmd-root-service-type + network-manager-dmd-service) + (service-extension dbus-root-service-type list) + (service-extension activation-service-type + (const %network-manager-activation)) + ;; Add network-manager to the system profile. + (service-extension profile-service-type list))))) + +(define* (network-manager-service #:key (network-manager network-manager)) + "Return a service that runs NetworkManager, a network connection manager +that attempting to keep active network connectivity when available." + (service network-manager-service-type network-manager)) + ;;; networking.scm ends here diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index d3a6cfb33a..4b0380e8fd 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -21,8 +21,9 @@ #:use-module (guix records) #:use-module (gnu services) #:use-module (gnu services dmd) - #:use-module (gnu system linux) ; 'pam-service' + #:use-module (gnu system pam) #:use-module (gnu packages lsh) + #:use-module (srfi srfi-26) #:export (lsh-service)) ;;; Commentary: @@ -142,8 +143,8 @@ "--tcpip-forward" "--no-tcpip-forward") (if (null? interfaces) '() - (list (string-append "--interfaces=" - (string-join interfaces ","))))))) + (map (cut string-append "--interface=" <>) + interfaces))))) (define requires (if (and daemonic? (lsh-configuration-syslog-output? config)) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 3a57891a96..7fea6829d5 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -21,7 +21,7 @@ #:use-module (gnu artwork) #:use-module (gnu services) #:use-module (gnu services dmd) - #:use-module (gnu system linux) ; 'pam-service' + #:use-module (gnu system pam) #:use-module ((gnu packages base) #:select (canonical-package)) #:use-module (gnu packages guile) #:use-module (gnu packages xorg) @@ -32,16 +32,23 @@ #:use-module (gnu packages bash) #:use-module (guix gexp) #:use-module (guix store) + #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix records) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:export (xorg-configuration-file xorg-start-command %default-slim-theme %default-slim-theme-name - slim-service)) + slim-configuration + slim-service-type + slim-service + + screen-locker-service-type + screen-locker-service)) ;;; Commentary: ;;; @@ -304,7 +311,12 @@ reboot_cmd " dmd "/sbin/reboot\n" (list (service-extension dmd-root-service-type slim-dmd-service) (service-extension pam-root-service-type - slim-pam-service))))) + slim-pam-service) + + ;; Unconditionally add xterm to the system profile, to + ;; avoid bad surprises. + (service-extension profile-service-type + (const (list xterm))))))) (define* (slim-service #:key (slim slim) (allow-empty-passwords? #t) auto-login? @@ -350,4 +362,52 @@ theme." (auto-login-session auto-login-session) (startx startx)))) + +;;; +;;; Screen lockers & co. +;;; + +(define-record-type + (screen-locker name program empty?) + screen-locker? + (name screen-locker-name) ;string + (program screen-locker-program) ;gexp + (empty? screen-locker-allows-empty-passwords?)) ;Boolean + +(define screen-locker-pam-services + (match-lambda + (($ name _ empty?) + (list (unix-pam-service name + #:allow-empty-passwords? empty?))))) + +(define screen-locker-setuid-programs + (compose list screen-locker-program)) + +(define screen-locker-service-type + (service-type (name 'screen-locker) + (extensions + (list (service-extension pam-root-service-type + screen-locker-pam-services) + (service-extension setuid-program-service-type + screen-locker-setuid-programs))))) + +(define* (screen-locker-service package + #:optional + (program (package-name package)) + #:key allow-empty-passwords?) + "Add @var{package}, a package for a screen-locker or screen-saver whose +command is @var{program}, to the set of setuid programs and add a PAM entry +for it. For example: + +@lisp +(screen-locker-service xlockmore \"xlock\") +@end lisp + +makes the good ol' XlockMore usable." + (service screen-locker-service-type + (screen-locker program + #~(string-append #$package + #$(string-append "/bin/" program)) + allow-empty-passwords?))) + ;;; xorg.scm ends here diff --git a/gnu/system.scm b/gnu/system.scm index aa768824d9..ff981d95a2 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -50,7 +50,7 @@ #:use-module (gnu system shadow) #:use-module (gnu system nss) #:use-module (gnu system locale) - #:use-module (gnu system linux) + #:use-module (gnu system pam) #:use-module (gnu system linux-initrd) #:use-module (gnu system file-systems) #:use-module (ice-9 match) @@ -76,6 +76,7 @@ operating-system-timezone operating-system-locale operating-system-locale-definitions + operating-system-locale-libcs operating-system-mapped-devices operating-system-file-systems operating-system-activation-script @@ -144,6 +145,8 @@ (default "en_US.utf8")) (locale-definitions operating-system-locale-definitions ; list of (default %default-locale-definitions)) + (locale-libcs operating-system-locale-libcs ; list of + (default %default-locale-libcs)) (name-service-switch operating-system-name-service-switch ; (default %default-nss)) @@ -195,19 +198,16 @@ as 'needed-for-boot'." (file-system-device fs))) (operating-system-mapped-devices os))) - (define (requirements fs) - ;; XXX: Fiddling with dmd service names is not nice. - (append (map (lambda (fs) - (symbol-append 'file-system- - (string->symbol - (file-system-mount-point fs)))) - (file-system-dependencies fs)) - (map (lambda (md) - (symbol-append 'device-mapping- - (string->symbol (mapped-device-target md)))) - (device-mappings fs)))) + (define (add-dependencies fs) + ;; Add the dependencies due to device mappings to FS. + (file-system + (inherit fs) + (dependencies + (delete-duplicates (append (device-mappings fs) + (file-system-dependencies fs)) + eq?)))) - (map file-system-service file-systems)) + (map (compose file-system-service add-dependencies) file-systems)) (define (mapped-device-user device file-systems) "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f." @@ -254,6 +254,21 @@ from the initrd." "Return the list of swap services for OS." (map swap-service (operating-system-swap-devices os))) +(define* (operating-system-directory-base-entries os #:key container?) + "Return the basic entries of the 'system' directory of OS for use as the +value of the SYSTEM-SERVICE-TYPE service." + (mlet %store-monad ((locale (operating-system-locale-directory os))) + (if container? + (return `(("locale" ,locale))) + (mlet %store-monad + ((kernel -> (operating-system-kernel os)) + (initrd (operating-system-initrd-file os)) + (params (operating-system-parameters-file os))) + (return `(("kernel" ,kernel) + ("parameters" ,params) + ("initrd" ,initrd) + ("locale" ,locale))))))) ;used by libc + (define* (essential-services os #:key container?) "Return the list of essential services for OS. These are special services that implement part of what's declared in OS are responsible for low-level @@ -269,8 +284,11 @@ a container or that of a \"bare metal\" system." (swaps (swap-services os)) (procs (user-processes-service (map service-parameters other-fs))) - (host-name (host-name-service (operating-system-host-name os)))) - (cons* %boot-service + (host-name (host-name-service (operating-system-host-name os))) + (entries (operating-system-directory-base-entries + os #:container? container?))) + (cons* (service system-service-type entries) + %boot-service ;; %DMD-ROOT-SERVICE must come first so that the gexp that execs ;; dmd comes last in the boot script (XXX). @@ -281,16 +299,21 @@ a container or that of a \"bare metal\" system." (operating-system-groups os)) (operating-system-skeletons os)) (operating-system-etc-service os) + (session-environment-service + (operating-system-environment-variables os)) host-name procs root-fs unmount (service setuid-program-service-type (operating-system-setuid-programs os)) + (service profile-service-type + (operating-system-packages os)) (append other-fs mappings swaps ;; Add the firmware service, unless we are building for a ;; container. (if container? '() - (list (service firmware-service-type + (list %linux-bare-metal-service + (service firmware-service-type (operating-system-firmware os)))))))) (define* (operating-system-services os #:key container?) @@ -382,38 +405,11 @@ settings for 'guix.el' to work out-of-the-box." (chdir #$output) (symlink #$(emacs-site-file) "site-start.el")))) -(define (user-shells os) - "Return the list of all the shells used by the accounts of OS. These may be -gexps or strings." - (map user-account-shell (operating-system-accounts os))) - -(define (shells-file shells) - "Return a file-like object that builds a shell list for use as /etc/shells -based on SHELLS. /etc/shells is used by xterm, polkit, and other programs." - (computed-file "shells" - #~(begin - (use-modules (srfi srfi-1)) - - (define shells - (delete-duplicates (list #$@shells))) - - (call-with-output-file #$output - (lambda (port) - (display "\ -/bin/sh -/run/current-system/profile/bin/sh -/run/current-system/profile/bin/bash\n" port) - (for-each (lambda (shell) - (display shell port) - (newline port)) - shells)))))) - (define* (operating-system-etc-service os) "Return a that builds containing the static part of the /etc directory." (let ((login.defs (plain-file "login.defs" "# Empty for now.\n")) - (shells (shells-file (user-shells os))) (emacs (emacs-site-directory)) (issue (plain-file "issue" (operating-system-issue os))) (nsswitch (plain-file "nsswitch.conf" @@ -423,18 +419,6 @@ directory." ;; Startup file for POSIX-compliant login shells, which set system-wide ;; environment variables. (profile (mixed-text-file "profile" "\ -export LANG=\"" (operating-system-locale os) "\" -export TZ=\"" (operating-system-timezone os) "\" -export TZDIR=\"" tzdata "/share/zoneinfo\" - -# Tell 'modprobe' & co. where to look for modules. -export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules - -# These variables are honored by OpenSSL (libssl) and Git. -export SSL_CERT_DIR=/etc/ssl/certs -export SSL_CERT_FILE=\"$SSL_CERT_DIR/ca-certificates.crt\" -export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\" - # Crucial variables that could be missing in the profiles' 'etc/profile' # because they would require combining both profiles. # FIXME: See . @@ -464,13 +448,6 @@ else export PATH=\"$HOME/.guix-profile/bin:$PATH\" fi -# Append the directory of 'site-start.el' to the search path. -export EMACSLOADPATH=:/etc/emacs - -# By default, applications that use D-Bus, such as Emacs, abort at startup -# when /etc/machine-id is missing. Make sure these warnings are non-fatal. -export DBUS_FATAL_WARNINGS=0 - # Allow Aspell to find dictionaries installed in the user profile. export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\" @@ -503,7 +480,6 @@ fi\n"))) ("login.defs" ,#~#$login.defs) ("issue" ,#~#$issue) ("nsswitch.conf" ,#~#$nsswitch) - ("shells" ,#~#$shells) ("profile" ,#~#$profile) ("bashrc" ,#~#$bashrc) ("hosts" ,#~#$(or (operating-system-hosts-file os) @@ -512,11 +488,6 @@ fi\n"))) #$(operating-system-timezone os))) ("sudoers" ,(operating-system-sudoers-file os)))))) -(define (operating-system-profile os) - "Return a derivation that builds the system profile of OS." - (profile-derivation (manifest (map package->manifest-entry - (operating-system-packages os))))) - (define %root-account ;; Default root account. (user-account @@ -573,6 +544,24 @@ use 'plain-file' instead~%") (fold-services (operating-system-services os) #:target-type etc-service-type))) +(define (operating-system-environment-variables os) + "Return the environment variables of OS for +@var{session-environment-service-type}, to be used in @file{/etc/environment}." + `(("LANG" . ,(operating-system-locale os)) + ("TZ" . ,(operating-system-timezone os)) + ("TZDIR" . ,#~(string-append #$tzdata "/share/zoneinfo")) + ;; Tell 'modprobe' & co. where to look for modules. + ("LINUX_MODULE_DIRECTORY" . "/run/booted-system/kernel/lib/modules") + ;; These variables are honored by OpenSSL (libssl) and Git. + ("SSL_CERT_DIR" . "/etc/ssl/certs") + ("SSL_CERT_FILE" . "/etc/ssl/certs/ca-certificates.crt") + ("GIT_SSL_CAINFO" . "/etc/ssl/certs/ca-certificates.crt") + ;; Append the directory of 'site-start.el' to the search path. + ("EMACSLOADPATH" . ":/etc/emacs") + ;; By default, applications that use D-Bus, such as Emacs, abort at startup + ;; when /etc/machine-id is missing. Make sure these warnings are non-fatal. + ("DBUS_FATAL_WARNINGS" . "0"))) + (define %setuid-programs ;; Default set of setuid-root programs. (let ((shadow (@ (gnu packages admin) shadow))) @@ -606,10 +595,27 @@ etc." we're running in the final root. When CONTAINER? is true, skip all hardware-related operations as necessary when booting a Linux container." (let* ((services (operating-system-services os #:container? container?)) - (boot (fold-services services))) + (boot (fold-services services #:target-type boot-service-type))) ;; BOOT is the script as a monadic value. (service-parameters boot))) +(define* (operating-system-derivation os #:key container?) + "Return a derivation that builds OS." + (let* ((services (operating-system-services os #:container? container?)) + (system (fold-services services))) + ;; SYSTEM contains the derivation as a monadic value. + (service-parameters system))) + +(define* (operating-system-profile os #:key container?) + "Return a derivation that builds the system profile of OS." + (mlet* %store-monad + ((services -> (operating-system-services os #:container? container?)) + (profile (fold-services services + #:target-type profile-service-type))) + (match profile + (("profile" profile) + (return profile))))) + (define (operating-system-root-file-system os) "Return the root file system of OS." (find (match-lambda @@ -645,7 +651,8 @@ listed in OS. The C library expects to find it under (raise (condition (&message (message "system locale lacks a definition"))))) - (locale-directory (operating-system-locale-definitions os))) + (locale-directory (operating-system-locale-definitions os) + #:libcs (operating-system-locale-libcs os))) (define (kernel->grub-label kernel) "Return a label for the GRUB menu entry that boots KERNEL." @@ -691,24 +698,4 @@ this file is the reconstruction of GRUB menu entries for old configurations." #$(operating-system-kernel-arguments os)) (initrd #$initrd))))) -(define (operating-system-derivation os) - "Return a derivation that builds OS." - (mlet* %store-monad - ((profile (operating-system-profile os)) - (etc -> (operating-system-etc-directory os)) - (boot (operating-system-boot-script os)) - (kernel -> (operating-system-kernel os)) - (initrd (operating-system-initrd-file os)) - (locale (operating-system-locale-directory os)) - (params (operating-system-parameters-file os))) - (lower-object - (file-union "system" - `(("boot" ,#~#$boot) - ("kernel" ,#~#$kernel) - ("parameters" ,#~#$params) - ("initrd" ,initrd) - ("profile" ,#~#$profile) - ("locale" ,#~#$locale) ;used by libc - ("etc" ,#~#$etc)))))) - ;;; system.scm ends here diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index 988b8f937f..ee660e0589 100644 --- a/gnu/system/examples/desktop.tmpl +++ b/gnu/system/examples/desktop.tmpl @@ -3,7 +3,7 @@ (use-modules (gnu) (gnu system nss)) (use-service-modules desktop) -(use-package-modules xfce ratpoison wicd avahi xorg certs) +(use-package-modules xfce ratpoison certs) (operating-system (host-name "antelope") @@ -32,7 +32,6 @@ ;; Add Xfce and Ratpoison; that allows us to choose ;; sessions using either of these at the log-in screen. (packages (cons* xfce ratpoison ;desktop environments - xterm wicd avahi ;useful tools nss-certs ;for HTTPS access %base-packages)) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 8155b273e3..0a4b385fe3 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -99,9 +99,8 @@ (default #t)) (create-mount-point? file-system-create-mount-point? ; Boolean (default #f)) - (dependencies file-system-dependencies ; list of strings (mount - ; points depended on) - (default '()))) + (dependencies file-system-dependencies ; list of + (default '()))) ; or (define-inlinable (file-system-needed-for-boot? fs) "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index e49b6dbe54..5b824820b1 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -30,6 +30,7 @@ #:autoload (gnu packages imagemagick) (imagemagick) #:autoload (gnu packages compression) (gzip) #:use-module (ice-9 match) + #:use-module (ice-9 regex) #:use-module (srfi srfi-1) #:export (grub-image grub-image? @@ -139,7 +140,7 @@ (system* (string-append #$imagemagick "/bin/convert") "-resize" #$size #$image #$output))))) -(define* (grub-background-image config #:key (width 640) (height 480)) +(define* (grub-background-image config #:key (width 1024) (height 768)) "Return the GRUB background image defined in CONFIG with a ratio of WIDTH/HEIGHT, or #f if none was found." (let* ((ratio (/ width height)) @@ -152,10 +153,26 @@ WIDTH/HEIGHT, or #f if none was found." (with-monad %store-monad (return #f))))) -(define (eye-candy config port) +(define (eye-candy config system port) "Return in %STORE-MONAD a gexp that writes to PORT (a port-valued gexp) the 'grub.cfg' part concerned with graphics mode, background images, colors, and all that." + (define setup-gfxterm-body + ;; Intel systems need to be switched into graphics mode, whereas most + ;; other modern architectures have no other mode and therefore don't need + ;; to be switched. + (if (string-match "^(x86_64|i[3-6]86)-" system) + " + # Leave 'gfxmode' to 'auto'. + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + insmod gfxterm + terminal_output gfxterm +" + "")) + (define (theme-colors type) (let* ((theme (grub-configuration-theme config)) (colors (type theme))) @@ -163,22 +180,15 @@ all that." (symbol->string (assoc-ref colors 'bg))))) (mlet* %store-monad ((image (grub-background-image config))) - (return (and image #~(format #$port " -function load_video { - insmod vbe - insmod vga - insmod video_bochs - insmod video_cirrus -} + (return (and image + #~(format #$port " +function setup_gfxterm {~a} # Set 'root' to the partition that contains /gnu/store. search --file --set ~a/share/grub/unicode.pf2 if loadfont ~a/share/grub/unicode.pf2; then - set gfxmode=640x480 - load_video - insmod gfxterm - terminal_output gfxterm + setup_gfxterm fi insmod png @@ -189,10 +199,11 @@ else set menu_color_normal=cyan/blue set menu_color_highlight=white/blue fi~%" - #$grub #$grub - #$image - #$(theme-colors grub-theme-color-normal) - #$(theme-colors grub-theme-color-highlight)))))) + #$setup-gfxterm-body + #$grub #$grub + #$image + #$(theme-colors grub-theme-color-normal) + #$(theme-colors grub-theme-color-highlight)))))) ;;; @@ -206,6 +217,11 @@ fi~%" "Return the GRUB configuration file corresponding to CONFIG, a object. OLD-ENTRIES is taken to be a list of menu entries corresponding to old generations of the system." + (define linux-image-name + (if (string-prefix? "mips" system) + "vmlinuz" + "bzImage")) + (define all-entries (append entries (grub-configuration-menu-entries config))) @@ -214,16 +230,17 @@ entries corresponding to old generations of the system." (($ label linux arguments initrd) #~(format port "menuentry ~s { # Set 'root' to the partition that contains the kernel. - search --file --set ~a/bzImage~% + search --file --set ~a/~a~% - linux ~a/bzImage ~a + linux ~a/~a ~a initrd ~a }~%" #$label - #$linux #$linux (string-join (list #$@arguments)) + #$linux #$linux-image-name + #$linux #$linux-image-name (string-join (list #$@arguments)) #$initrd)))) - (mlet %store-monad ((sugar (eye-candy config #~port))) + (mlet %store-monad ((sugar (eye-candy config system #~port))) (define builder #~(call-with-output-file #$output (lambda (port) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 93a6f18c49..887bceb155 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -306,6 +306,9 @@ You have been warned. Thanks for being so brave. (console-font-service "tty5") (console-font-service "tty6") + ;; To facilitate copy/paste. + (gpm-service) + ;; Since this is running on a USB stick with a unionfs as the root ;; file system, use an appropriate cache configuration. (nscd-service (nscd-configuration diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index fdf7460872..4f38c5cb0a 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm @@ -25,6 +25,7 @@ #:use-module (guix derivations) #:use-module (guix monads) #:use-module (gnu build linux-container) + #:use-module (gnu services) #:use-module (gnu system) #:use-module (gnu system file-systems) #:export (mapping->file-system @@ -46,19 +47,6 @@ (check? #f) (create-mount-point? #t))))) -(define (system-container os) - "Return a derivation that builds OS as a Linux container." - (mlet* %store-monad - ((profile (operating-system-profile os)) - (etc (operating-system-etc-directory os)) - (boot (operating-system-boot-script os #:container? #t)) - (locale (operating-system-locale-directory os))) - (file-union "system-container" - `(("boot" ,#~#$boot) - ("profile" ,#~#$profile) - ("locale" ,#~#$locale) - ("etc" ,#~#$etc))))) - (define (containerized-operating-system os mappings) "Return an operating system based on OS for use in a Linux container environment. MAPPINGS is a list of to realize in the @@ -93,7 +81,9 @@ that will be shared with the host system." (operating-system-file-systems os))) (specs (map file-system->spec file-systems))) - (mlet* %store-monad ((os-drv (system-container os))) + (mlet* %store-monad ((os-drv (operating-system-derivation + os + #:container? #t))) (define script #~(begin @@ -106,7 +96,12 @@ that will be shared with the host system." (setenv "TMPDIR" "/tmp") (setenv "GUIX_NEW_SYSTEM" #$os-drv) (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) - (primitive-load (string-append #$os-drv "/boot")))))) + (primitive-load (string-append #$os-drv "/boot"))) + ;; A range of 65536 uid/gids is used to cover 16 bits worth of + ;; users and groups, which is sufficient for most cases. + ;; + ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= + #:host-uids 65536))) (gexp->script "run-container" script #:modules '((ice-9 match) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 519373fe34..6130e020c8 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -178,11 +178,13 @@ loaded at boot time in the order in which they appear." (define linux-modules ;; Modules added to the initrd and loaded from the initrd. `("ahci" ;for SATA controllers - "pata_acpi" "pata_atiixp" ;for ATA controllers - "isci" ;for SAS controllers like Intel C602 "usb-storage" "uas" ;for the installation image etc. "usbkbd" "usbhid" ;USB keyboards, for debugging "dm-crypt" "xts" ;for encrypted root partitions + ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system)) + '("pata_acpi" "pata_atiixp" ;for ATA controllers + "isci") ;for SAS controllers like Intel C602 + '()) ,@(if (or virtio? qemu-networking?) virtio-modules '()) diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm index 010fb45272..e798827a01 100644 --- a/gnu/system/locale.scm +++ b/gnu/system/locale.scm @@ -18,11 +18,15 @@ (define-module (gnu system locale) #:use-module (guix gexp) + #:use-module (guix store) + #:use-module (guix monads) #:use-module (guix records) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (srfi srfi-26) + #:use-module (ice-9 match) #:export (locale-definition locale-definition? locale-definition-name @@ -31,6 +35,7 @@ locale-directory + %default-locale-libcs %default-locale-definitions)) ;;; Commentary: @@ -50,6 +55,15 @@ (define* (localedef-command locale #:key (libc (canonical-package glibc))) "Return a gexp that runs 'localedef' from LIBC to build LOCALE." + (define (maybe-version-directory) + ;; XXX: For libc prior to 2.22, GuixSD did not store locale data in a + ;; version-specific sub-directory. Check whether this is the case. + ;; TODO: Remove this hack once libc 2.21 is buried. + (let ((version (package-version libc))) + (if (version>=? version "2.22") + (list version "/") + '()))) + #~(begin (format #t "building locale '~a'...~%" #$(locale-definition-name locale)) @@ -58,20 +72,29 @@ "-i" #$(locale-definition-source locale) "-f" #$(locale-definition-charset locale) (string-append #$output "/" - #$(package-version libc) "/" + #$@(maybe-version-directory) #$(locale-definition-name locale)))))) -(define* (locale-directory locales - #:key (libc (canonical-package glibc))) +(define* (single-locale-directory locales + #:key (libc (canonical-package glibc))) "Return a directory containing all of LOCALES for LIBC compiled. Because locale data formats are incompatible when switching from one libc to another, locale data is put in a sub-directory named after the 'version' field of LIBC." + (define version + (package-version libc)) + (define build #~(begin (mkdir #$output) - (mkdir (string-append #$output "/" #$(package-version libc))) + + ;; XXX: For libcs < 2.22, locale data is stored in the top-level + ;; directory. + ;; TODO: Remove this hack once libc 2.21 is buried. + #$(if (version>=? version "2.22") + #~(mkdir (string-append #$output "/" #$version)) + #~(symlink "." (string-append #$output "/" #$version))) ;; 'localedef' executes 'gzip' to access compressed locale sources. (setenv "PATH" (string-append #$gzip "/bin")) @@ -80,9 +103,38 @@ of LIBC." (and #$@(map (cut localedef-command <> #:libc libc) locales))))) - (gexp->derivation "locale" build + (gexp->derivation (string-append "locale-" version) build #:local-build? #t)) +(define* (locale-directory locales + #:key (libcs %default-locale-libcs)) + "Return a locale directory containing all of LOCALES for each libc package +listed in LIBCS. + +It is useful to list more than one libc when willing to support +already-installed packages built against a different libc since the locale +data format changes between libc versions." + (match libcs + ((libc) + (single-locale-directory locales #:libc libc)) + ((libcs ..1) + (mlet %store-monad ((dirs (mapm %store-monad + (lambda (libc) + (single-locale-directory locales + #:libc libc)) + libcs))) + (gexp->derivation "locale-multiple-versions" + #~(begin + (use-modules (guix build union)) + (union-build #$output (list #$@dirs))) + #:modules '((guix build union)) + #:local-build? #t + #:substitutable? #f))))) + +(define %default-locale-libcs + ;; The libcs for which we build locales by default. + (list (canonical-package glibc))) + (define %default-locale-definitions ;; Arbitrary set of locales that are built by default. They are here mostly ;; to facilitate first-time use to some people, while others may have to add diff --git a/gnu/system/linux.scm b/gnu/system/pam.scm similarity index 95% rename from gnu/system/linux.scm rename to gnu/system/pam.scm index cd14bc97be..99d94a1a81 100644 --- a/gnu/system/linux.scm +++ b/gnu/system/pam.scm @@ -16,7 +16,7 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . -(define-module (gnu system linux) +(define-module (gnu system pam) #:use-module (guix records) #:use-module (guix derivations) #:use-module (guix gexp) @@ -36,8 +36,7 @@ ;;; Commentary: ;;; -;;; Configuration of Linux-related things, including pluggable authentication -;;; modules (PAM). +;;; Configuration of the pluggable authentication modules (PAM). ;;; ;;; Code: @@ -129,7 +128,10 @@ dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE." (define unix-pam-service (let ((unix (pam-entry (control "required") - (module "pam_unix.so")))) + (module "pam_unix.so"))) + (env (pam-entry ; to honor /etc/environment. + (control "required") + (module "pam_env.so")))) (lambda* (name #:key allow-empty-passwords? motd) "Return a standard Unix-style PAM service for NAME. When ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it @@ -151,13 +153,13 @@ should be a file-like object used as the message-of-the-day." ;; Store SHA-512 encrypted passwords in /etc/shadow. (arguments '("sha512" "shadow"))))) (session (if motd - (list unix + (list env unix (pam-entry (control "optional") (module "pam_motd.so") (arguments (list #~(string-append "motd=" #$motd))))) - (list unix)))))))) + (list env unix)))))))) (define (rootok-pam-service command) "Return a PAM service for COMMAND such that 'root' does not need to @@ -182,8 +184,7 @@ authenticate to run COMMAND." ;; These programs are setuid-root. (map (cut unix-pam-service <> #:allow-empty-passwords? allow-empty-passwords?) - '("su" "passwd" "sudo" - "xlock" "xscreensaver")) + '("su" "passwd" "sudo")) ;; These programs are not setuid-root, and we want root to be able ;; to run them without having to authenticate (notably because diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index 3f49c1fc9f..7f3a1dfac2 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -280,11 +280,33 @@ group." (activate-users+groups (list #$@user-specs) (list #$@group-specs)))) -(define (etc-skel arguments) +(define (shells-file shells) + "Return a file-like object that builds a shell list for use as /etc/shells +based on SHELLS. /etc/shells is used by xterm, polkit, and other programs." + (computed-file "shells" + #~(begin + (use-modules (srfi srfi-1)) + + (define shells + (delete-duplicates (list #$@shells))) + + (call-with-output-file #$output + (lambda (port) + (display "\ +/bin/sh +/run/current-system/profile/bin/sh +/run/current-system/profile/bin/bash\n" port) + (for-each (lambda (shell) + (display shell port) + (newline port)) + shells)))))) +(define (etc-files arguments) "Filter out among ARGUMENTS things corresponding to skeletons, and return the /etc/skel directory for those." - (let ((skels (filter pair? arguments))) - `(("skel" ,(skeleton-directory skels))))) + (let ((skels (filter pair? arguments)) + (users (filter user-account? arguments))) + `(("skel" ,(skeleton-directory skels)) + ("shells" ,(shells-file (map user-account-shell users)))))) (define account-service-type (service-type (name 'account) @@ -298,7 +320,7 @@ the /etc/skel directory for those." (list (service-extension activation-service-type account-activation) (service-extension etc-service-type - etc-skel))))) + etc-files))))) (define (account-service accounts+groups skeletons) "Return a that takes care of user accounts and user groups, with diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index dfb6996067..1492a0bb1c 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -43,7 +43,7 @@ #:use-module (gnu packages admin) #:use-module (gnu system shadow) - #:use-module (gnu system linux) + #:use-module (gnu system pam) #:use-module (gnu system linux-initrd) #:use-module (gnu system grub) #:use-module (gnu system file-systems) @@ -92,7 +92,7 @@ (system (%current-system)) (linux linux-libre) initrd - (qemu qemu-headless) + (qemu qemu-minimal) (env-vars '()) (modules '((gnu build vm) @@ -185,7 +185,7 @@ made available under the /xchg CIFS share." (define* (qemu-image #:key (name "qemu-image") (system (%current-system)) - (qemu qemu-headless) + (qemu qemu-minimal) (disk-image-size (* 100 (expt 2 20))) (disk-image-format "qcow2") (file-system-type "ext4") diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index aeb04c83a4..2532210a49 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -31,7 +31,8 @@ #:export (%python-build-system-modules package-with-python2 python-build - python-build-system)) + python-build-system + pypi-uri)) ;; Commentary: ;; @@ -40,6 +41,13 @@ ;; ;; Code: +(define (pypi-uri name version) + "Return a URI string for the Python package hosted on the Python Package +Index (PyPI) corresponding to NAME and VERSION." + (string-append "https://pypi.python.org/packages/source/" + (string-take name 1) "/" name "/" + name "-" version ".tar.gz")) + (define %python-build-system-modules ;; Build-side modules imported by default. `((guix build python-build-system) @@ -84,6 +92,7 @@ NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name." (if (eq? (package-build-system p) python-build-system) (package (inherit p) + (location (package-location p)) (name (let ((name (package-name p))) (string-append new-prefix (if (string-prefix? old-prefix name) diff --git a/guix/build/download.scm b/guix/build/download.scm index 240e79ee8d..8843804c40 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -20,6 +20,7 @@ (define-module (guix build download) #:use-module (web uri) + #:use-module (web http) #:use-module ((web client) #:hide (open-socket-for-uri)) #:use-module (web response) #:use-module (guix ftp-client) @@ -277,26 +278,65 @@ host name without trailing dot." (add-weak-reference record port) record))) -(define (open-socket-for-uri uri) - "Return an open port for URI. This variant works around - which affects Guile's 'open-socket-for-uri' up to -2.0.11 included." - (define rmem-max - ;; The maximum size for a receive buffer on Linux, see socket(7). - "/proc/sys/net/core/rmem_max") +(define (ensure-uri uri-or-string) ;XXX: copied from (web http) + (cond + ((string? uri-or-string) (string->uri uri-or-string)) + ((uri? uri-or-string) uri-or-string) + (else (error "Invalid URI" uri-or-string)))) - (define buffer-size - (if (file-exists? rmem-max) - (call-with-input-file rmem-max read) - 126976)) ;the default for Linux, per 'rmem_default' +(define current-http-proxy + ;; XXX: Add a dummy definition for Guile < 2.0.10; this is used in + ;; 'open-socket-for-uri'. + (or (and=> (module-variable (resolve-interface '(web client)) + 'current-http-proxy) + variable-ref) + (const #f))) - (let ((s ((@ (web client) open-socket-for-uri) uri))) - ;; Work around by restoring a decent - ;; buffer size. - (setsockopt s SOL_SOCKET SO_RCVBUF buffer-size) - s)) +(define* (open-socket-for-uri uri-or-string #:key timeout) + "Return an open input/output port for a connection to URI. When TIMEOUT is +not #f, it must be a (possibly inexact) number denoting the maximum duration +in seconds to wait for the connection to complete; passed TIMEOUT, an +ETIMEDOUT error is raised." + ;; Includes a fix for which affects Guile's + ;; 'open-socket-for-uri' up to 2.0.11 included, uses 'connect*' instead + ;; of 'connect', and uses AI_ADDRCONFIG. -(define (open-connection-for-uri uri) + (define http-proxy (current-http-proxy)) + (define uri (ensure-uri (or http-proxy uri-or-string))) + (define addresses + (let ((port (uri-port uri))) + (delete-duplicates + (getaddrinfo (uri-host uri) + (cond (port => number->string) + (else (symbol->string (uri-scheme uri)))) + (if (number? port) + (logior AI_ADDRCONFIG AI_NUMERICSERV) + AI_ADDRCONFIG)) + (lambda (ai1 ai2) + (equal? (addrinfo:addr ai1) (addrinfo:addr ai2)))))) + + (let loop ((addresses addresses)) + (let* ((ai (car addresses)) + (s (with-fluids ((%default-port-encoding #f)) + ;; Restrict ourselves to TCP. + (socket (addrinfo:fam ai) SOCK_STREAM IPPROTO_IP)))) + (catch 'system-error + (lambda () + (connect* s (addrinfo:addr ai) timeout) + + ;; Buffer input and output on this port. + (setvbuf s _IOFBF) + ;; If we're using a proxy, make a note of that. + (when http-proxy (set-http-proxy-port?! s #t)) + s) + (lambda args + ;; Connection failed, so try one of the other addresses. + (close s) + (if (null? (cdr addresses)) + (apply throw args) + (loop (cdr addresses)))))))) + +(define* (open-connection-for-uri uri #:key timeout) "Like 'open-socket-for-uri', but also handle HTTPS connections." (define https? (eq? 'https (uri-scheme uri))) @@ -319,7 +359,7 @@ host name without trailing dot." (thunk)) (thunk))))))) (with-https-proxy - (let ((s (open-socket-for-uri uri))) + (let ((s (open-socket-for-uri uri #:timeout timeout))) ;; Buffer input and output on this port. (setvbuf s _IOFBF %http-receive-buffer-size) diff --git a/guix/build/graft.scm b/guix/build/graft.scm index 55f0f9410d..0a9cd3260c 100644 --- a/guix/build/graft.scm +++ b/guix/build/graft.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,7 +21,7 @@ #:use-module (rnrs bytevectors) #:use-module (rnrs io ports) #:use-module (ice-9 match) - #:use-module (ice-9 ftw) + #:use-module (ice-9 threads) #:export (replace-store-references rewrite-directory)) @@ -93,38 +93,32 @@ file name pairs." (define (destination file) (string-append output (string-drop file prefix-len))) - (define (rewrite-leaf file stat result) - (case (stat:type stat) - ((symlink) - (let ((target (readlink file))) - (symlink (call-with-output-string - (lambda (output) - (replace-store-references (open-input-string target) - output mapping - store))) - (destination file)))) - ((regular) - (with-fluids ((%default-port-encoding #f)) - (call-with-input-file file - (lambda (input) - (call-with-output-file (destination file) - (lambda (output) - (replace-store-references input output mapping - store) - (chmod output (stat:perms stat)))))))) - (else - (error "unsupported file type" stat)))) + (define (rewrite-leaf file) + (let ((stat (lstat file)) + (dest (destination file))) + (mkdir-p (dirname dest)) + (case (stat:type stat) + ((symlink) + (let ((target (readlink file))) + (symlink (call-with-output-string + (lambda (output) + (replace-store-references (open-input-string target) + output mapping + store))) + dest))) + ((regular) + (with-fluids ((%default-port-encoding #f)) + (call-with-input-file file + (lambda (input) + (call-with-output-file dest + (lambda (output) + (replace-store-references input output mapping + store) + (chmod output (stat:perms stat)))))))) + (else + (error "unsupported file type" stat))))) - (file-system-fold (const #t) - rewrite-leaf - (lambda (directory stat result) ;down - (mkdir (destination directory))) - (const #t) ;up - (const #f) ;skip - (lambda (file stat errno result) ;error - (error "read error" file stat errno)) - #f - directory - lstat)) + (n-par-for-each (parallel-job-count) + rewrite-leaf (find-files directory))) ;;; graft.scm ends here diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm index 34e5247e07..8e2aee381d 100644 --- a/guix/build/haskell-build-system.scm +++ b/guix/build/haskell-build-system.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Eric Bavier +;;; Copyright © 2015 Paul van der Walt ;;; ;;; This file is part of GNU Guix. ;;; @@ -102,7 +103,17 @@ and parameters ~s~%" ;; Cabal errors if GHC_PACKAGE_PATH is set during 'configure', so unset ;; and restore it. (unsetenv "GHC_PACKAGE_PATH") + + ;; For packages where the Cabal build-type is set to "Configure", + ;; ./configure will be executed. In these cases, the following + ;; environment variable is needed to be able to find the shell executable. + ;; For other package types, the configure script isn't present. For more + ;; information, see the Build Information section of + ;; . + (when (file-exists? "configure") + (setenv "CONFIG_SHELL" "sh")) (run-setuphs "configure" params) + (setenv "GHC_PACKAGE_PATH" ghc-path))) (define* (build #:rest empty) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 1ae42c00b4..8025b7fec6 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -136,11 +136,18 @@ installed with setuptools." #t)) #t)) +(define* (set-SOURCE-DATE-EPOCH #:rest _) + "Set the 'SOURCE_DATE_EPOCH' environment variable." + ;; Use zero as the timestamp in .pyc files so that builds are deterministic. + ;; TODO: Remove it when this variable is set in GNU:%STANDARD-PHASES. + (setenv "SOURCE_DATE_EPOCH" "1")) + (define %standard-phases ;; 'configure' and 'build' phases are not needed. Everything is done during ;; 'install'. (modify-phases gnu:%standard-phases (add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980) + (add-after 'unpack 'set-SOURCE-DATE-EPOCH set-SOURCE-DATE-EPOCH) (delete 'configure) (replace 'install install) (replace 'check check) diff --git a/guix/cve.scm b/guix/cve.scm new file mode 100644 index 0000000000..a7b0bde6dc --- /dev/null +++ b/guix/cve.scm @@ -0,0 +1,177 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; 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 . + +(define-module (guix cve) + #:use-module (guix utils) + #:use-module (guix http-client) + #:use-module (sxml ssax) + #:use-module (web uri) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-19) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (ice-9 vlist) + #:export (vulnerability? + vulnerability-id + vulnerability-packages + + xml->vulnerabilities + current-vulnerabilities + vulnerabilities->lookup-proc)) + +;;; Commentary: +;;; +;;; This modules provides the tools to fetch, parse, and digest part of the +;;; Common Vulnerabilities and Exposures (CVE) feeds provided by the US NIST +;;; at . +;;; +;;; Code: + +(define-record-type + (vulnerability id packages) + vulnerability? + (id vulnerability-id) + (packages vulnerability-packages)) + +(define %cve-feed-uri + (string->uri + "https://nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-Modified.xml.gz")) + +(define %ttl + ;; According to , feeds are + ;; updated "approximately every two hours." + (* 3600 3)) + +(define (call-with-cve-port proc) + "Pass PROC an input port from which to read the CVE stream." + (let ((port (http-fetch/cached %cve-feed-uri #:ttl %ttl))) + (dynamic-wind + (const #t) + (lambda () + (call-with-decompressed-port 'gzip port + proc)) + (lambda () + (close-port port))))) + +(define %cpe-package-rx + ;; For applications: "cpe:/a:VENDOR:PACKAGE:VERSION". + (make-regexp "^cpe:/a:([^:]+):([^:]+):([^:]+)")) + +(define (cpe->package-name cpe) + "Converts the Common Platform Enumeration (CPE) string CPE to a package +name, in a very naive way. Return #f if CPE does not look like an application +CPE string." + (and=> (regexp-exec %cpe-package-rx (string-trim-both cpe)) + (lambda (matches) + (cons (match:substring matches 2) + (match:substring matches 3))))) + +(define %parse-vulnerability-feed + ;; Parse the XML vulnerability feed from + ;; and return a list of + ;; vulnerability objects. + (ssax:make-parser NEW-LEVEL-SEED + (lambda (elem-gi attributes namespaces expected-content + seed) + (match elem-gi + ((name-space . 'entry) + (cons (assoc-ref attributes 'id) seed)) + ((name-space . 'vulnerable-software-list) + (cons '() seed)) + ((name-space . 'product) + (cons 'product seed)) + (x seed))) + + FINISH-ELEMENT + (lambda (elem-gi attributes namespaces parent-seed + seed) + (match elem-gi + ((name-space . 'entry) + (match seed + (((? string? id) . rest) + ;; Some entries have no vulnerable-software-list. + rest) + ((products id . rest) + (match (filter-map cpe->package-name products) + (() + ;; No application among PRODUCTS. + rest) + (packages + (cons (vulnerability id (reverse packages)) + rest)))))) + (x + seed))) + + CHAR-DATA-HANDLER + (lambda (str _ seed) + (match seed + (('product software-list . rest) + ;; Add STR to the vulnerable software list this + ;; tag is part of. + (cons (cons str software-list) rest)) + (x x))))) + +(define (xml->vulnerabilities port) + "Read from PORT an XML feed of vulnerabilities and return a list of +vulnerability objects." + (reverse (%parse-vulnerability-feed port '()))) + +(define (current-vulnerabilities) + "Return the current list of Common Vulnerabilities and Exposures (CVE) as +published by the US NIST." + (call-with-cve-port + (lambda (port) + ;; XXX: The SSAX "error port" is used to send pointless warnings such as + ;; "warning: Skipping PI". Turn that off. + (parameterize ((current-ssax-error-port (%make-void-port "w"))) + (xml->vulnerabilities port))))) + +(define (vulnerabilities->lookup-proc vulnerabilities) + "Return a lookup procedure built from VULNERABILITIES that takes a package +name and optionally a version number. When the version is omitted, the lookup +procedure returns a list of version/vulnerability pairs; otherwise, it returns +a list of vulnerabilities affection the given package version." + (define table + ;; Map package names to lists of version/vulnerability pairs. + (fold (lambda (vuln table) + (match vuln + (($ id packages) + (fold (lambda (package table) + (match package + ((name . version) + (vhash-cons name (cons version vuln) + table)))) + table + packages)))) + vlist-null + vulnerabilities)) + + (lambda* (package #:optional version) + (vhash-fold* (if version + (lambda (pair result) + (match pair + ((v . vuln) + (if (string=? v version) + (cons vuln result) + result)))) + cons) + '() + package table))) + +;;; cve.scm ends here diff --git a/guix/derivations.scm b/guix/derivations.scm index 342a6c83f3..5db739a97d 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -239,7 +239,8 @@ result is the set of prerequisites of DRV not already in valid." (derivation-output-path (assoc-ref outputs sub-drv))) sub-drvs)))) -(define* (substitution-oracle store drv) +(define* (substitution-oracle store drv + #:key (mode (build-mode normal))) "Return a one-argument procedure that, when passed a store file name, returns #t if it's substitutable and #f otherwise. The returned procedure knows about all substitutes for all the derivations listed in DRV, *except* @@ -271,9 +272,12 @@ substituter many times." (let ((self (match (derivation->output-paths drv) (((names . paths) ...) paths)))) - (if (every valid? self) - result - (cons* self (dependencies drv) result)))) + (cond ((eqv? mode (build-mode check)) + (cons (dependencies drv) result)) + ((every valid? self) + result) + (else + (cons* self (dependencies drv) result))))) '() drv)))) (subst (list->set (substitutable-paths store paths)))) @@ -281,11 +285,13 @@ substituter many times." (define* (derivation-prerequisites-to-build store drv #:key + (mode (build-mode normal)) (outputs (derivation-output-names drv)) (substitutable? (substitution-oracle store - (list drv)))) + (list drv) + #:mode mode))) "Return two values: the list of derivation-inputs required to build the OUTPUTS of DRV and not already available in STORE, recursively, and the list of required store paths that can be substituted. SUBSTITUTABLE? must be a @@ -301,8 +307,11 @@ one-argument procedure similar to that returned by 'substitution-oracle'." ;; least one is missing, then everything must be rebuilt. (compose (cut every substitutable? <>) derivation-input-output-paths)) - (define (derivation-built? drv sub-drvs) - (every built? (derivation-output-paths drv sub-drvs))) + (define (derivation-built? drv* sub-drvs) + ;; In 'check' mode, assume that DRV is not built. + (and (not (and (eqv? mode (build-mode check)) + (eq? drv* drv))) + (every built? (derivation-output-paths drv* sub-drvs)))) (define (derivation-substitutable? drv sub-drvs) (and (substitutable-derivation? drv) @@ -963,13 +972,16 @@ recursively." ;;; Store compatibility layer. ;;; -(define (build-derivations store derivations) - "Build DERIVATIONS, a list of objects or .drv file names." +(define* (build-derivations store derivations + #:optional (mode (build-mode normal))) + "Build DERIVATIONS, a list of objects or .drv file names, using +the specified MODE." (build-things store (map (match-lambda ((? string? file) file) ((and drv ($ )) (derivation-file-name drv))) - derivations))) + derivations) + mode)) ;;; diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm index 37feb895a5..22d4c7dde2 100644 --- a/guix/ftp-client.scm +++ b/guix/ftp-client.scm @@ -30,6 +30,7 @@ #:export (ftp-connection? ftp-connection-addrinfo + connect* ftp-open ftp-close ftp-chdir @@ -82,42 +83,91 @@ ((331) (%ftp-command (string-append "PASS " pass) 230 port)) (else (throw 'ftp-error port command code message)))))) -(define* (ftp-open host #:optional (port 21)) +(define-syntax-rule (catch-EINPROGRESS body ...) + (catch 'system-error + (lambda () + body ...) + (lambda args + (unless (= (system-error-errno args) EINPROGRESS) + (apply throw args))))) + +;; XXX: For lack of a better place. +(define* (connect* s sockaddr #:optional timeout) + "When TIMEOUT is omitted or #f, this procedure is equivalent to 'connect'. +When TIMEOUT is a number, it is the (possibly inexact) maximum number of +seconds to wait for the connection to succeed." + (define (raise-error errno) + (throw 'system-error 'connect* "~A" + (list (strerror errno)) + (list errno))) + + (if timeout + (let ((flags (fcntl s F_GETFL))) + (fcntl s F_SETFL (logior flags O_NONBLOCK)) + (catch-EINPROGRESS (connect s sockaddr)) + (match (select '() (list s) (list s) timeout) + ((() () ()) + ;; Time is up! + (raise-error ETIMEDOUT)) + ((() (write) ()) + ;; Check for ECONNREFUSED and the likes. + (fcntl s F_SETFL flags) + (let ((errno (getsockopt s SOL_SOCKET SO_ERROR))) + (unless (zero? errno) + (raise-error errno)))) + ((() () (except)) + ;; Seems like this cannot really happen, but who knows. + (let ((errno (getsockopt s SOL_SOCKET SO_ERROR))) + (raise-error errno))))) + (connect s sockaddr))) + +(define* (ftp-open host #:optional (port "ftp") #:key timeout) "Open an FTP connection to HOST on PORT (a service-identifying string, -or a TCP port number), and return it." - ;; Use 21 as the default PORT instead of "ftp", to avoid depending on - ;; libc's NSS, which is not available during bootstrap. +or a TCP port number), and return it. + +When TIMEOUT is not #f, it must be a (possibly inexact) number denoting the +maximum duration in seconds to wait for the connection to complete; passed +TIMEOUT, an ETIMEDOUT error is raised." + ;; Using "ftp" for PORT instead of 21 allows 'getaddrinfo' to return only + ;; TCP/IP addresses (otherwise it would return SOCK_DGRAM and SOCK_RAW + ;; addresses as well.) With our bootstrap Guile, which includes a + ;; statically-linked NSS, resolving "ftp" works well, as long as + ;; /etc/services is available. (define addresses (getaddrinfo host (if (number? port) (number->string port) port) - (if (number? port) AI_NUMERICSERV 0))) + (if (number? port) + (logior AI_ADDRCONFIG AI_NUMERICSERV) + AI_ADDRCONFIG))) (let loop ((addresses addresses)) - (let* ((ai (car addresses)) - (s (socket (addrinfo:fam ai) (addrinfo:socktype ai) - (addrinfo:protocol ai)))) + (match addresses + ((ai rest ...) + (let ((s (socket (addrinfo:fam ai) + ;; TCP/IP only + SOCK_STREAM IPPROTO_IP))) - (catch 'system-error - (lambda () - (connect s (addrinfo:addr ai)) - (setvbuf s _IOLBF) - (let-values (((code message) (%ftp-listen s))) - (if (eqv? code 220) - (begin - ;;(%ftp-command "OPTS UTF8 ON" 200 s) - (%ftp-login "anonymous" "guix@example.com" s) - (%make-ftp-connection s ai)) - (begin - (close s) - (throw 'ftp-error s "log-in" code message))))) + (catch 'system-error + (lambda () + (connect* s (addrinfo:addr ai) timeout) + (setvbuf s _IOLBF) + (let-values (((code message) (%ftp-listen s))) + (if (eqv? code 220) + (begin + ;;(%ftp-command "OPTS UTF8 ON" 200 s) + (%ftp-login "anonymous" "guix@example.com" s) + (%make-ftp-connection s ai)) + (begin + (close s) + (throw 'ftp-error s "log-in" code message))))) - (lambda args - ;; Connection failed, so try one of the other addresses. - (close s) - (if (null? addresses) - (apply throw args) - (loop (cdr addresses)))))))) + (lambda args + ;; Connection failed, so try one of the other addresses. + (close s) + (if (null? rest) + (apply throw args) + (loop rest))))))))) (define (ftp-close conn) (close (ftp-connection-socket conn))) diff --git a/guix/gexp.scm b/guix/gexp.scm index 27bccc6206..14ced747b2 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -980,7 +980,8 @@ its search path." (call-with-output-file (ungexp output) (lambda (port) (write '(ungexp exp) port)))) - #:local-build? #t)) + #:local-build? #t + #:substitutable? #f)) (define* (text-file* name #:rest text) "Return as a monadic value a derivation that builds a text file containing @@ -992,7 +993,9 @@ resulting store file holds references to all these." (lambda (port) (display (string-append (ungexp-splicing text)) port))))) - (gexp->derivation name builder)) + (gexp->derivation name builder + #:local-build? #t + #:substitutable? #f)) (define* (mixed-text-file name #:rest text) "Return an object representing store file NAME containing TEXT. TEXT is a diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index 5af1b884ce..96fbfb76b4 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -50,12 +50,14 @@ find-packages gnu-package? + release-file? releases latest-release gnu-release-archive-types gnu-package-name->name+version - %gnu-updater)) + %gnu-updater + %gnome-updater)) ;;; Commentary: ;;; @@ -220,8 +222,10 @@ stored." ("mit-scheme" "ftp.gnu.org" "/gnu/mit-scheme/stable.pkg") ("icecat" "ftp.gnu.org" "/gnu/gnuzilla") ("source-highlight" "ftp.gnu.org" "/gnu/src-highlite") - ("glib" "ftp.gnome.org" "/pub/gnome/sources/glib") ("gnutls" "ftp.gnutls.org" "/gcrypt/gnutls") + + ;; FIXME: ftp.texmacs.org is currently outdated; texmacs.org refers to + ;; its own http URL instead. ("TeXmacs" "ftp.texmacs.org" "/TeXmacs/targz"))) (match (assoc project quirks) @@ -237,8 +241,10 @@ stored." (substring tarball 0 end))) (define %tarball-rx - ;; Note: .zip files are notably used for freefont-ttf. - (make-regexp "^(.+)-([0-9]|[^-])*(-src)?\\.(tar\\.|zip$)")) + ;; The .zip extensions is notably used for freefont-ttf. + ;; The "-src" pattern is for "TeXmacs-1.0.7.9-src.tar.gz". + ;; The "-gnu[0-9]" pattern is for "icecat-38.4.0-gnu1.tar.bz2". + (make-regexp "^([^.]+)-([0-9]|[^-])+(-(src|gnu[0-9]))?\\.(tar\\.|zip$)")) (define %alpha-tarball-rx (make-regexp "^.*-.*[0-9](-|~)?(alpha|beta|rc|cvs|svn|git)-?[0-9\\.]*\\.tar\\.")) @@ -250,7 +256,10 @@ true." (and=> (regexp-exec %tarball-rx file) (lambda (match) ;; Filter out unrelated files, like `guile-www-1.1.1'. - (equal? project (match:substring match 1)))) + ;; Case-insensitive for things like "TeXmacs" vs. "texmacs". + (and=> (match:substring match 1) + (lambda (name) + (string-ci=? name project))))) (not (regexp-exec %alpha-tarball-rx file)) (let ((s (sans-extension file))) (regexp-exec %package-name-rx s)))) @@ -308,10 +317,22 @@ pairs. Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\"). files) result)))))))) -(define* (latest-release project - #:key (ftp-open ftp-open) (ftp-close ftp-close)) - "Return (\"FOO-X.Y\" . \"/bar/foo\") or #f. Use FTP-OPEN and FTP-CLOSE to -open (resp. close) FTP connections; this can be useful to reuse connections." +(define* (latest-ftp-release project + #:key + (server "ftp.gnu.org") + (directory (string-append "/gnu/" project)) + (keep-file? (const #t)) + (file->signature (cut string-append <> ".sig")) + (ftp-open ftp-open) (ftp-close ftp-close)) + "Return an for the latest release of PROJECT on SERVER +under DIRECTORY, or #f. Use FTP-OPEN and FTP-CLOSE to open (resp. close) FTP +connections; this can be useful to reuse connections. + +KEEP-FILE? is a predicate to decide whether to enter a directory and to +consider a given file (source tarball) as a valid candidate based on its name. + +FILE->SIGNATURE must be a procedure; it is passed a source file URL and must +return the corresponding signature URL, or #f it signatures are unavailable." (define (latest a b) (if (version>? a b) a b)) @@ -326,74 +347,94 @@ open (resp. close) FTP connections; this can be useful to reuse connections." ;; Return #t for patch directory names such as 'bash-4.2-patches'. (cut string-suffix? "patches" <>)) - (let-values (((server directory) (ftp-server/directory project))) - (define conn (ftp-open server)) + (define conn (ftp-open server)) - (define (file->url file) - (string-append "ftp://" server directory "/" file)) + (define (file->url directory file) + (string-append "ftp://" server directory "/" file)) - (define (file->source file) - (let ((url (file->url file))) - (upstream-source - (package project) - (version (tarball->version file)) - (urls (list url)) - (signature-urls (list (string-append url ".sig")))))) + (define (file->source directory file) + (let ((url (file->url directory file))) + (upstream-source + (package project) + (version (tarball->version file)) + (urls (list url)) + (signature-urls (match (file->signature url) + (#f #f) + (sig (list sig))))))) - (let loop ((directory directory) - (result #f)) - (let* ((entries (ftp-list conn directory)) + (let loop ((directory directory) + (result #f)) + (let* ((entries (ftp-list conn directory)) - ;; Filter out sub-directories that do not contain digits---e.g., - ;; /gnuzilla/lang and /gnupg/patches. - (subdirs (filter-map (match-lambda - (((? patch-directory-name? dir) - 'directory . _) - #f) - (((? contains-digit? dir) 'directory . _) - dir) - (_ #f)) - entries)) + ;; Filter out sub-directories that do not contain digits---e.g., + ;; /gnuzilla/lang and /gnupg/patches. Filter out "w32" + ;; directories as found on ftp.gnutls.org. + (subdirs (filter-map (match-lambda + (((? patch-directory-name? dir) + 'directory . _) + #f) + (("w32" 'directory . _) + #f) + (((? contains-digit? dir) 'directory . _) + (and (keep-file? dir) dir)) + (_ #f)) + entries)) - ;; Whether or not SUBDIRS is empty, compute the latest releases - ;; for the current directory. This is necessary for packages - ;; such as 'sharutils' that have a sub-directory that contains - ;; only an older release. - (releases (filter-map (match-lambda - ((file 'file . _) - (and (release-file? project file) - (file->source file))) - (_ #f)) - entries))) + ;; Whether or not SUBDIRS is empty, compute the latest releases + ;; for the current directory. This is necessary for packages + ;; such as 'sharutils' that have a sub-directory that contains + ;; only an older release. + (releases (filter-map (match-lambda + ((file 'file . _) + (and (release-file? project file) + (keep-file? file) + (file->source directory file))) + (_ #f)) + entries))) - ;; Assume that SUBDIRS correspond to versions, and jump into the - ;; one with the highest version number. - (let* ((release (reduce latest-release #f - (coalesce-sources releases))) - (result (if (and result release) - (latest-release release result) - (or release result))) - (target (reduce latest #f subdirs))) - (if target - (loop (string-append directory "/" target) - result) - (begin - (ftp-close conn) - result))))))) + ;; Assume that SUBDIRS correspond to versions, and jump into the + ;; one with the highest version number. + (let* ((release (reduce latest-release #f + (coalesce-sources releases))) + (result (if (and result release) + (latest-release release result) + (or release result))) + (target (reduce latest #f subdirs))) + (if target + (loop (string-append directory "/" target) + result) + (begin + (ftp-close conn) + result)))))) -(define (latest-release* package) - "Like 'latest-release', but ignore FTP errors that might occur when PACKAGE -is not actually a GNU package, or not hosted on ftp.gnu.org, or not under that -name (this is the case for \"emacs-auctex\", for instance.)" +(define (latest-release package . rest) + "Return the for the latest version of PACKAGE or #f. +PACKAGE is the name of a GNU package. This procedure automatically uses the +right FTP server and directory for PACKAGE." + (let-values (((server directory) (ftp-server/directory package))) + (apply latest-ftp-release package + #:server server + #:directory directory + rest))) + +(define-syntax-rule (false-if-ftp-error exp) + "Return #f if an FTP error is raise while evaluating EXP; return the result +of EXP otherwise." (catch 'ftp-error (lambda () - (latest-release package)) + exp) (lambda (key port . rest) (if (ftp-connection? port) (ftp-close port) (close-port port)) #f))) +(define (latest-release* package) + "Like 'latest-release', but ignore FTP errors that might occur when PACKAGE +is not actually a GNU package, or not hosted on ftp.gnu.org, or not under that +name (this is the case for \"emacs-auctex\", for instance.)" + (false-if-ftp-error (latest-release package))) + (define %package-name-rx ;; Regexp for a package name, e.g., "foo-X.Y". Since TeXmacs uses ;; "TeXmacs-X.Y-src", the `-src' suffix is allowed. @@ -406,15 +447,79 @@ name (this is the case for \"emacs-auctex\", for instance.)" (values name+version #f) (values (match:substring match 1) (match:substring match 2))))) -(define (non-emacs-gnu-package? package) - "Return true if PACKAGE is a non-Emacs GNU package. This excludes AucTeX, -for instance, whose releases are now uploaded to elpa.gnu.org." +(define (pure-gnu-package? package) + "Return true if PACKAGE is a non-Emacs and non-GNOME GNU package. This +excludes AucTeX, for instance, whose releases are now uploaded to +elpa.gnu.org, and all the GNOME packages." (and (not (string-prefix? "emacs-" (package-name package))) + (not (gnome-package? package)) (gnu-package? package))) +(define (gnome-package? package) + "Return true if PACKAGE is a GNOME package, hosted on gnome.org." + (define gnome-uri? + (match-lambda + ((? string? uri) + (string-prefix? "mirror://gnome/" uri)) + (_ + #f))) + + (match (package-source package) + ((? origin? origin) + (match (origin-uri origin) + ((? gnome-uri?) #t) + (_ #f))) + (_ #f))) + +(define (latest-gnome-release package) + "Return the latest release of PACKAGE, the name of a GNOME package." + (define %not-dot + (char-set-complement (char-set #\.))) + + (define (even-minor-version? version) + (match (string-tokenize version %not-dot) + (((= string->number major) (= string->number minor) . rest) + (and minor (even? minor))) + (_ + #t))) ;cross fingers + + (define (even-numbered? file) + ;; Return true if FILE somehow denotes an even-numbered file name. The + ;; trick here is that we want this to match both directories such as + ;; "3.18.6" and actual file names such as "gtk+-3.18.6.tar.bz2". + (let-values (((name version) (package-name->name+version file))) + (even-minor-version? (or version name)))) + + (false-if-ftp-error + (latest-ftp-release package + #:server "ftp.gnome.org" + #:directory (string-append "/pub/gnome/sources/" + (match package + ("gconf" "GConf") + (x x))) + + + ;; explains + ;; that odd minor version numbers represent development + ;; releases, which we are usually not interested in. + #:keep-file? even-numbered? + + ;; ftp.gnome.org provides no signatures, only + ;; checksums. + #:file->signature (const #f)))) + (define %gnu-updater - (upstream-updater 'gnu - non-emacs-gnu-package? - latest-release*)) + (upstream-updater + (name 'gnu) + (description "Updater for GNU packages") + (pred pure-gnu-package?) + (latest latest-release*))) + +(define %gnome-updater + (upstream-updater + (name 'gnome) + (description "Updater for GNOME packages") + (pred gnome-package?) + (latest latest-gnome-release))) ;;; gnu-maintenance.scm ends here diff --git a/guix/graph.scm b/guix/graph.scm new file mode 100644 index 0000000000..a39208e7f9 --- /dev/null +++ b/guix/graph.scm @@ -0,0 +1,187 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; 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 . + +(define-module (guix graph) + #:use-module (guix store) + #:use-module (guix monads) + #:use-module (guix records) + #:use-module (guix sets) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match) + #:use-module (ice-9 vlist) + #:export (node-type + node-type? + node-type-identifier + node-type-label + node-type-edges + node-type-convert + node-type-name + node-type-description + + node-edges + node-back-edges + node-transitive-edges + + %graphviz-backend + graph-backend? + graph-backend + + export-graph)) + +;;; Commentary: +;;; +;;; This module provides an abstract way to represent graphs and to manipulate +;;; them. It comes with several such representations for packages, +;;; derivations, and store items. It also provides a generic interface for +;;; exporting graphs in an external format, including a Graphviz +;;; implementation thereof. +;;; +;;; Code: + + +;;; +;;; Node types. +;;; + +(define-record-type* node-type make-node-type + node-type? + (identifier node-type-identifier) ;node -> M identifier + (label node-type-label) ;node -> string + (edges node-type-edges) ;node -> M list of nodes + (convert node-type-convert ;package -> M list of nodes + (default (lift1 list %store-monad))) + (name node-type-name) ;string + (description node-type-description)) ;string + +(define (%node-edges type nodes cons-edge) + (with-monad %store-monad + (match type + (($ identifier label node-edges) + (define (add-edge node edges) + (>>= (node-edges node) + (lambda (nodes) + (return (fold (cut cons-edge node <> <>) + edges nodes))))) + + (mlet %store-monad ((edges (foldm %store-monad + add-edge vlist-null nodes))) + (return (lambda (node) + (reverse (vhash-foldq* cons '() node edges))))))))) + +(define (node-edges type nodes) + "Return, as a monadic value, a one-argument procedure that, given a node of TYPE, +returns its edges. NODES is taken to be the sinks of the global graph." + (%node-edges type nodes + (lambda (source target edges) + (vhash-consq source target edges)))) + +(define (node-back-edges type nodes) + "Return, as a monadic value, a one-argument procedure that, given a node of TYPE, +returns its back edges. NODES is taken to be the sinks of the global graph." + (%node-edges type nodes + (lambda (source target edges) + (vhash-consq target source edges)))) + +(define (node-transitive-edges nodes node-edges) + "Return the list of nodes directly or indirectly connected to NODES +according to the NODE-EDGES procedure. NODE-EDGES must be a one-argument +procedure that, given a node, returns its list of direct dependents; it is +typically returned by 'node-edges' or 'node-back-edges'." + (let loop ((nodes (append-map node-edges nodes)) + (result '()) + (visited (setq))) + (match nodes + (() + result) + ((head . tail) + (if (set-contains? visited head) + (loop tail result visited) + (let ((edges (node-edges head))) + (loop (append edges tail) + (cons head result) + (set-insert head visited)))))))) + + +;;; +;;; Graphviz export. +;;; + +(define-record-type + (graph-backend prologue epilogue node edge) + graph-backend? + (prologue graph-backend-prologue) + (epilogue graph-backend-epilogue) + (node graph-backend-node) + (edge graph-backend-edge)) + +(define (emit-prologue name port) + (format port "digraph \"Guix ~a\" {\n" + name)) +(define (emit-epilogue port) + (display "\n}\n" port)) +(define (emit-node id label port) + (format port " \"~a\" [label = \"~a\", shape = box, fontname = Helvetica];~%" + id label)) +(define (emit-edge id1 id2 port) + (format port " \"~a\" -> \"~a\" [color = red];~%" + id1 id2)) + +(define %graphviz-backend + (graph-backend emit-prologue emit-epilogue + emit-node emit-edge)) + +(define* (export-graph sinks port + #:key + reverse-edges? node-type + (backend %graphviz-backend)) + "Write to PORT the representation of the DAG with the given SINKS, using the +given BACKEND. Use NODE-TYPE to traverse the DAG. When REVERSE-EDGES? is +true, draw reverse arrows." + (match backend + (($ emit-prologue emit-epilogue emit-node emit-edge) + (emit-prologue (node-type-name node-type) port) + + (match node-type + (($ node-identifier node-label node-edges) + (let loop ((nodes sinks) + (visited (set))) + (match nodes + (() + (with-monad %store-monad + (emit-epilogue port) + (store-return #t))) + ((head . tail) + (mlet %store-monad ((id (node-identifier head))) + (if (set-contains? visited id) + (loop tail visited) + (mlet* %store-monad ((dependencies (node-edges head)) + (ids (mapm %store-monad + node-identifier + dependencies))) + (emit-node id (node-label head) port) + (for-each (lambda (dependency dependency-id) + (if reverse-edges? + (emit-edge dependency-id id port) + (emit-edge id dependency-id port))) + dependencies ids) + (loop (append dependencies tail) + (set-insert id visited))))))))))))) + +;;; graph.scm ends here diff --git a/guix/http-client.scm b/guix/http-client.scm index bee8cdc834..eb2c3f4d5f 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -35,7 +35,8 @@ #:use-module ((guix build utils) #:select (mkdir-p dump-port)) #:use-module ((guix build download) - #:select (open-socket-for-uri resolve-uri-reference)) + #:select (open-socket-for-uri + open-connection-for-uri resolve-uri-reference)) #:re-export (open-socket-for-uri) #:export (&http-get-error http-get-error? @@ -206,8 +207,10 @@ textual. Follow any HTTP redirection. When BUFFERED? is #f, return an unbuffered port, suitable for use in `filtered-port'. Raise an '&http-get-error' condition if downloading fails." - (let loop ((uri uri)) - (let ((port (or port (open-socket-for-uri uri)))) + (let loop ((uri (if (string? uri) + (string->uri uri) + uri))) + (let ((port (or port (open-connection-for-uri uri)))) (unless buffered? (setvbuf port _IONBF)) (let*-values (((resp data) diff --git a/guix/import/cabal.scm b/guix/import/cabal.scm index 45d644a2c7..c20e074e18 100644 --- a/guix/import/cabal.scm +++ b/guix/import/cabal.scm @@ -30,6 +30,7 @@ #:use-module (srfi srfi-9 gnu) #:use-module (system base lalr) #:use-module (rnrs enums) + #:use-module (guix utils) #:export (read-cabal eval-cabal @@ -138,7 +139,7 @@ to the stack." "Generate a parser for Cabal files." (lalr-parser ;; --- token definitions - (CCURLY VCCURLY OPAREN CPAREN TEST ID VERSION RELATION + (CCURLY VCCURLY OPAREN CPAREN TEST ID VERSION RELATION TRUE FALSE (right: IF FLAG EXEC TEST-SUITE SOURCE-REPO BENCHMARK LIB OCURLY) (left: OR) (left: PROPERTY AND) @@ -206,6 +207,8 @@ to the stack." (if-then (IF tests OCURLY exprs CCURLY) : `(if ,$2 ,$4 ()) (IF tests open exprs close) : `(if ,$2 ,$4 ())) (tests (TEST OPAREN ID CPAREN) : `(,$1 ,$3) + (TRUE) : 'true + (FALSE) : 'false (TEST OPAREN ID RELATION VERSION CPAREN) : `(,$1 ,(string-append $3 " " $4 " " $5)) (TEST OPAREN ID RELATION VERSION AND RELATION VERSION CPAREN) @@ -224,19 +227,24 @@ to the stack." "This function can be called when the next character on PORT is #\newline and returns the indentation of the line starting after the #\newline character. Discard (and consume) empty and comment lines." - (let ((initial-newline (string (read-char port)))) - (let loop ((char (peek-char port)) - (word "")) - (cond ((eqv? char #\newline) (read-char port) - (loop (peek-char port) "")) - ((or (eqv? char #\space) (eqv? char #\tab)) - (let ((c (read-char port))) - (loop (peek-char port) (string-append word (string c))))) - ((comment-line port char) (loop (peek-char port) "")) - (else - (let ((len (string-length word))) - (unread-string (string-append initial-newline word) port) - len)))))) + (if (eof-object? (peek-char port)) + ;; If the file is missing the #\newline on the last line, add it and act + ;; as if it were there. This is needed for proper operation of + ;; indentation based block recognition (based on ‘port-column’). + (begin (unread-char #\newline port) (read-char port) 0) + (let ((initial-newline (string (read-char port)))) + (let loop ((char (peek-char port)) + (word "")) + (cond ((eqv? char #\newline) (read-char port) + (loop (peek-char port) "")) + ((or (eqv? char #\space) (eqv? char #\tab)) + (let ((c (read-char port))) + (loop (peek-char port) (string-append word (string c))))) + ((comment-line port char) (loop (peek-char port) "")) + (else + (let ((len (string-length word))) + (unread-string (string-append initial-newline word) port) + len))))))) (define* (read-value port value min-indent #:optional (separator " ")) "The next character on PORT must be #\newline. Append to VALUE the @@ -325,7 +333,7 @@ matching a string against the created regexp." (make-regexp pat)))) (cut regexp-exec rx <>))) -(define is-property (make-rx-matcher "([a-z0-9-]+):[ \t]*(\\w?.*)$" +(define is-property (make-rx-matcher "([a-z0-9-]+)[ \t]*:[ \t]*(\\w?.*)$" regexp/icase)) (define is-flag (make-rx-matcher "^flag +([a-z0-9_-]+)" @@ -350,21 +358,32 @@ matching a string against the created regexp." (define (is-if s) (string-ci=? s "if")) +(define (is-true s) (string-ci=? s "true")) + +(define (is-false s) (string-ci=? s "false")) + (define (is-and s) (string=? s "&&")) (define (is-or s) (string=? s "||")) -(define (is-id s) +(define (is-id s port) (let ((cabal-reserved-words '("if" "else" "library" "flag" "executable" "test-suite" - "source-repository" "benchmark"))) + "source-repository" "benchmark")) + (spaces (read-while (cut char-set-contains? char-set:blank <>) port)) + (c (peek-char port))) + (unread-string spaces port) (and (every (cut string-ci<> s <>) cabal-reserved-words) - (not (char=? (last (string->list s)) #\:))))) + (and (not (char=? (last (string->list s)) #\:)) + (not (char=? #\: c)))))) (define (is-test s port) (let ((tests-rx (make-regexp "os|arch|flag|impl")) + (spaces (read-while (cut char-set-contains? char-set:blank <>) port)) (c (peek-char port))) - (and (regexp-exec tests-rx s) (char=? #\( c)))) + (if (and (regexp-exec tests-rx s) (char=? #\( c)) + #t + (begin (unread-string spaces port) #f)))) ;; Lexers for individual tokens. @@ -424,6 +443,10 @@ string with the read characters." (define (lex-if loc) (make-lexical-token 'IF loc #f)) +(define (lex-true loc) (make-lexical-token 'TRUE loc #t)) + +(define (lex-false loc) (make-lexical-token 'FALSE loc #f)) + (define (lex-and loc) (make-lexical-token 'AND loc #f)) (define (lex-or loc) (make-lexical-token 'OR loc #f)) @@ -486,12 +509,14 @@ location." (define (lex-word port loc) "Process tokens which can be recognized by reading the next word form PORT. LOC is the current port location." - (let* ((w (read-delimited " ()\t\n" port 'peek))) + (let* ((w (read-delimited " <>=()\t\n" port 'peek))) (cond ((is-if w) (lex-if loc)) ((is-test w port) (lex-test w loc)) + ((is-true w) (lex-true loc)) + ((is-false w) (lex-false loc)) ((is-and w) (lex-and loc)) ((is-or w) (lex-or loc)) - ((is-id w) (lex-id w loc)) + ((is-id w port) (lex-id w loc)) (else (unread-string w port) #f)))) (define (lex-line port loc) @@ -684,11 +709,18 @@ the ordering operation and the version." ((spec-name spec-op spec-ver) (comp-spec-name+op+version haskell))) (if (and spec-ver comp-ver) - (eval-string - (string-append "(string" spec-op " \"" comp-name "\"" - " \"" spec-name "-" spec-ver "\")")) + (cond + ((not (string= spec-name comp-name)) #f) + ((string= spec-op "==") (string= spec-ver comp-ver)) + ((string= spec-op ">=") (version>=? comp-ver spec-ver)) + ((string= spec-op ">") (version>? comp-ver spec-ver)) + ((string= spec-op "<=") (not (version>? comp-ver spec-ver))) + ((string= spec-op "<") (not (version>=? comp-ver spec-ver))) + (else + (raise (condition + (&message (message "Failed to evaluate 'impl' test.")))))) (string-match spec-name comp-name)))) - + (define (cabal-flags) (make-cabal-section cabal-sexp 'flag)) @@ -714,6 +746,8 @@ the ordering operation and the version." (('os name) (os name)) (('arch name) (arch name)) (('impl name) (impl name)) + ('true #t) + ('false #f) (('not name) (not (eval name))) ;; 'and' and 'or' aren't functions, thus we can't use apply (('and args ...) (fold (lambda (e s) (and e s)) #t (eval args))) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index 6284c9eef3..845ecb5832 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -20,26 +20,26 @@ (define-module (guix import cran) #:use-module (ice-9 match) #:use-module (ice-9 regex) + #:use-module ((ice-9 rdelim) #:select (read-string)) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) - #:use-module (sxml simple) - #:use-module (sxml match) - #:use-module (sxml xpath) #:use-module (guix http-client) #:use-module (guix hash) #:use-module (guix store) #:use-module (guix base32) #:use-module ((guix download) #:select (download-to-store)) #:use-module (guix import utils) + #:use-module ((guix build-system r) #:select (cran-uri)) #:use-module (guix upstream) #:use-module (guix packages) + #:use-module (gnu packages) #:export (cran->guix-package %cran-updater)) ;;; Commentary: ;;; ;;; Generate a package declaration template for the latest version of an R -;;; package on CRAN, using the HTML description downloaded from +;;; package on CRAN, using the DESCRIPTION file downloaded from ;;; cran.r-project.org. ;;; ;;; Code: @@ -51,16 +51,47 @@ ("Apache License 2.0" 'asl2.0) ("BSD_2_clause" 'bsd-2) ("BSD_3_clause" 'bsd-3) + ("GPL" (list 'gpl2+ 'gpl3+)) + ("GPL (>= 2)" 'gpl2+) + ("GPL (>= 3)" 'gpl3+) ("GPL-2" 'gpl2+) ("GPL-3" 'gpl3+) ("LGPL-2" 'lgpl2.0+) ("LGPL-2.1" 'lgpl2.1+) ("LGPL-3" 'lgpl3+) + ("LGPL (>= 2)" 'lgpl2.0+) + ("LGPL (>= 3)" 'lgpl3+) ("MIT" 'x11) + ("MIT + file LICENSE" 'x11) ((x) (string->license x)) ((lst ...) `(list ,@(map string->license lst))) (_ #f))) + +(define (description->alist description) + "Convert a DESCRIPTION string into an alist." + (let ((lines (string-split description #\newline)) + (parse (lambda (line acc) + (if (string-null? line) acc + ;; Keys usually start with a capital letter and end with + ;; ":". There are some exceptions, unfortunately (such + ;; as "biocViews"). There are no blanks in a key. + (if (string-match "^[A-Za-z][^ :]+:( |\n|$)" line) + ;; New key/value pair + (let* ((pos (string-index line #\:)) + (key (string-take line pos)) + (value (string-drop line (+ 1 pos)))) + (cons (cons key + (string-trim-both value)) + acc)) + ;; This is a continuation of the previous pair + (match-let ((((key . value) . rest) acc)) + (cons (cons key (string-join + (list value + (string-trim-both line)))) + rest))))))) + (fold parse '() lines))) + (define (format-inputs names) "Generate a sorted list of package inputs from a list of package NAMES." (map (lambda (name) @@ -76,125 +107,94 @@ package definition." ((package-inputs ...) `((,type (,'quasiquote ,(format-inputs package-inputs))))))) -(define (table-datum tree label) - "Extract the datum node following a LABEL in the sxml table TREE. Only the -first cell of a table row is considered a label cell." - ((node-pos 1) - ((sxpath `(xhtml:tr - (xhtml:td 1) ; only first cell can contain label - (equal? ,label) - ,(node-parent tree) ; go up to label cell - ,(node-parent tree) ; go up to matching row - (xhtml:td 2))) ; select second cell - tree))) - (define %cran-url "http://cran.r-project.org/web/packages/") (define (cran-fetch name) - "Return an sxml representation of the CRAN page for the R package NAME, -or #f on failure. NAME is case-sensitive." + "Return an alist of the contents of the DESCRIPTION file for the R package +NAME, or #f on failure. NAME is case-sensitive." ;; This API always returns the latest release of the module. - (let ((cran-url (string-append %cran-url name "/"))) - (false-if-exception - (xml->sxml (http-fetch cran-url) - #:trim-whitespace? #t - #:namespaces '((xhtml . "http://www.w3.org/1999/xhtml")) - #:default-entity-handler - (lambda (port name) - (case name - ((nbsp) " ") - ((ge) ">=") - ((gt) ">") - ((lt) "<") - (else - (format (current-warning-port) - "~a:~a:~a: undefined entitity: ~a\n" - cran-url (port-line port) (port-column port) - name) - (symbol->string name)))))))) + (let ((url (string-append %cran-url name "/DESCRIPTION"))) + (description->alist (read-string (http-fetch url))))) -(define (downloads->url downloads) - "Extract from DOWNLOADS, the downloads item of the CRAN sxml tree, the -download URL." - (string-append "mirror://cran/" - ;; Remove double dots, because we want an - ;; absolute path. - (regexp-substitute/global - #f "\\.\\./" - (string-join ((sxpath '((xhtml:a 1) @ href *text*)) - (table-datum downloads " Package source: "))) - 'pre 'post))) +(define (listify meta field) + "Look up FIELD in the alist META. If FIELD contains a comma-separated +string, turn it into a list and strip off parenthetic expressions. Return the +empty list when the FIELD cannot be found." + (let ((value (assoc-ref meta field))) + (if (not value) + '() + ;; Strip off parentheses + (let ((items (string-split (regexp-substitute/global + #f "( *\\([^\\)]+\\)) *" + value 'pre 'post) + #\,))) + ;; When there is whitespace inside of items it is probably because + ;; this was not an actual list to begin with. + (remove (cut string-any char-set:whitespace <>) + (map string-trim-both items)))))) -(define (nodes->text nodeset) - "Return the concatenation of the text nodes among NODESET." - (string-join ((sxpath '(// *text*)) nodeset) " ")) +(define (beautify-description description) + "Improve the package DESCRIPTION by turning a beginning sentence fragment +into a proper sentence and by using two spaces between sentences." + (let ((cleaned (if (string-prefix? "A " description) + (string-append "This package provides a" + (substring description 1)) + description))) + ;; Use double spacing between sentences + (regexp-substitute/global #f "\\. \\b" + cleaned 'pre ". " 'post))) -(define (cran-sxml->sexp sxml) - "Return the `package' s-expression for a CRAN package from the SXML -representation of the package page." +(define (description->package meta) + "Return the `package' s-expression for a CRAN package from the alist META, +which was derived from the R package's DESCRIPTION file." (define (guix-name name) (if (string-prefix? "r-" name) (string-downcase name) (string-append "r-" (string-downcase name)))) - (sxml-match-let* - (((*TOP* (xhtml:html - ,head - (xhtml:body - (xhtml:h2 ,name-and-synopsis) - (xhtml:p ,description) - ,summary - (xhtml:h4 "Downloads:") ,downloads - . ,rest))) - sxml)) - (let* ((name (match:prefix (string-match ": " name-and-synopsis))) - (synopsis (match:suffix (string-match ": " name-and-synopsis))) - (version (nodes->text (table-datum summary "Version:"))) - (license ((compose string->license nodes->text) - (table-datum summary "License:"))) - (home-page (nodes->text ((sxpath '((xhtml:a 1))) - (table-datum summary "URL:")))) - (source-url (downloads->url downloads)) - (tarball (with-store store (download-to-store store source-url))) - (sysdepends (map match:substring - (list-matches - "[^ ]+" - ;; Strip off comma and parenthetical - ;; expressions. - (regexp-substitute/global - #f "(,|\\([^\\)]+\\))" - (nodes->text (table-datum summary - "SystemRequirements:")) - 'pre 'post)))) - (imports (map guix-name - ((sxpath '(// xhtml:a *text*)) - (table-datum summary "Imports:"))))) - `(package - (name ,(guix-name name)) - (version ,version) - (source (origin - (method url-fetch) - (uri (cran-uri ,name version)) - (sha256 - (base32 - ,(bytevector->nix-base32-string (file-sha256 tarball)))))) - (build-system r-build-system) - ,@(maybe-inputs sysdepends) - ,@(maybe-inputs imports 'propagated-inputs) - (home-page ,(if (string-null? home-page) - (string-append %cran-url name) - home-page)) - (synopsis ,synopsis) - ;; Use double spacing - (description ,(regexp-substitute/global #f "\\. \\b" description - 'pre ". " 'post)) - (license ,license))))) + (let* ((name (assoc-ref meta "Package")) + (synopsis (assoc-ref meta "Title")) + (version (assoc-ref meta "Version")) + (license (string->license (assoc-ref meta "License"))) + ;; Some packages have multiple home pages. Some have none. + (home-page (match (listify meta "URL") + ((url rest ...) url) + (_ (string-append %cran-url name)))) + (source-url (match (cran-uri name version) + ((url rest ...) url) + (_ #f))) + (tarball (with-store store (download-to-store store source-url))) + (sysdepends (map string-downcase (listify meta "SystemRequirements"))) + (propagate (map guix-name (lset-union equal? + (listify meta "Imports") + (listify meta "LinkingTo") + (delete "R" + (listify meta "Depends")))))) + `(package + (name ,(guix-name name)) + (version ,version) + (source (origin + (method url-fetch) + (uri (cran-uri ,name version)) + (sha256 + (base32 + ,(bytevector->nix-base32-string (file-sha256 tarball)))))) + (properties ,`(,'quasiquote ((,'upstream-name . ,name)))) + (build-system r-build-system) + ,@(maybe-inputs sysdepends) + ,@(maybe-inputs propagate 'propagated-inputs) + (home-page ,(if (string-null? home-page) + (string-append %cran-url name) + home-page)) + (synopsis ,synopsis) + (description ,(beautify-description (assoc-ref meta "Description"))) + (license ,license)))) (define (cran->guix-package package-name) "Fetch the metadata for PACKAGE-NAME from cran.r-project.org, and return the `package' s-expression corresponding to that package, or #f on failure." (let ((module-meta (cran-fetch package-name))) - (and=> module-meta cran-sxml->sexp))) + (and=> module-meta description->package))) ;;; @@ -203,32 +203,33 @@ representation of the package page." (define (latest-release package) "Return an for the latest release of PACKAGE." - (define name - (if (string-prefix? "r-" package) - (string-drop package 2) - package)) - (define sxml - (cran-fetch name)) + (define (package->cran-name package) + (match (package-source package) + ((? origin? origin) + (match (origin-uri origin) + ((url rest ...) + (let ((end (string-rindex url #\_)) + (start (string-rindex url #\/))) + ;; The URL ends on + ;; (string-append "/" name "_" version ".tar.gz") + (substring url start end))) + (_ #f))) + (_ #f))) - (and sxml - (sxml-match-let* - (((*TOP* (xhtml:html - ,head - (xhtml:body - (xhtml:h2 ,name-and-synopsis) - (xhtml:p ,description) - ,summary - (xhtml:h4 "Downloads:") ,downloads - . ,rest))) - sxml)) - (let ((version (nodes->text (table-datum summary "Version:"))) - (url (downloads->url downloads))) - ;; CRAN does not provide signatures. - (upstream-source - (package package) - (version version) - (urls (list url))))))) + (define cran-name + (package->cran-name (specification->package package))) + + (define meta + (cran-fetch cran-name)) + + (and meta + (let ((version (assoc-ref meta "Version"))) + ;; CRAN does not provide signatures. + (upstream-source + (package package) + (version version) + (urls (cran-uri cran-name version)))))) (define (cran-package? package) "Return true if PACKAGE is an R package from CRAN." @@ -236,8 +237,10 @@ representation of the package page." (string-prefix? "r-" (package-name package))) (define %cran-updater - (upstream-updater 'cran - cran-package? - latest-release)) + (upstream-updater + (name 'cran) + (description "Updater for CRAN packages") + (pred cran-package?) + (latest latest-release))) ;;; cran.scm ends here diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index 37fc2b80fe..8c10668293 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -272,8 +272,10 @@ as \"debbugs\"." (define %elpa-updater ;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org ;; because for other repositories, we typically grab the source elsewhere. - (upstream-updater 'elpa - package-from-gnu.org? - latest-release)) + (upstream-updater + (name 'elpa) + (description "Updater for ELPA packages") + (pred package-from-gnu.org?) + (latest latest-release))) ;;; elpa.scm ends here diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index 7160fcf7ba..834f0ae5cf 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Ludovic Courtès +;;; Copyright © 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,11 +23,13 @@ #:use-module (guix store) #:use-module (guix hash) #:use-module (guix base32) + #:use-module (guix upstream) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) + #:use-module (web uri) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:export (gnu->guix-package)) @@ -47,7 +49,7 @@ (define (preferred-archive-type release) "Return the preferred type of archive for downloading RELEASE." - (find (cute member <> (gnu-release-archive-types release)) + (find (cute member <> (upstream-source-archive-types release)) '("xz" "lz" "bz2" "tbz2" "gz" "tgz" "Z"))) (define* (gnu-package->sexp package release @@ -60,21 +62,29 @@ (define url-base ;; XXX: We assume that RELEASE's directory starts with "/gnu". - (string-append "mirror:/" (gnu-release-directory release) + (string-append "mirror:/" + (match (upstream-source-urls release) + ((url rest ...) + (dirname (uri-path (string->uri url))))) "/" name "-")) (define archive-type (preferred-archive-type release)) + (define url + (find (cut string-suffix? archive-type <>) + (upstream-source-urls release))) + + (define sig-url + (find (cute string-suffix? (string-append archive-type ".sig") <>) + (upstream-source-signature-urls release))) + (let ((tarball (with-store store - (download-tarball store name - (gnu-release-directory release) - (gnu-release-version release) - #:archive-type archive-type + (download-tarball store url sig-url #:key-download key-download)))) `(package (name ,name) - (version ,(gnu-release-version release)) + (version ,(upstream-source-version release)) (source (origin (method url-fetch) (uri (string-append ,url-base version @@ -95,8 +105,8 @@ KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for details.)" (match (latest-release name) - ((? gnu-release? release) - (let ((version (gnu-release-version release))) + ((? upstream-source? release) + (let ((version (upstream-source-version release))) (match (find-packages (regexp-quote name)) ((info . _) (gnu-package->sexp info release #:key-download key-download)) diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm index b5574a8d9f..8725ffa0df 100644 --- a/guix/import/hackage.scm +++ b/guix/import/hackage.scm @@ -22,7 +22,8 @@ #:use-module (srfi srfi-11) #:use-module (srfi srfi-1) #:use-module ((guix download) #:select (download-to-store)) - #:use-module ((guix utils) #:select (package-name->name+version)) + #:use-module ((guix utils) #:select (package-name->name+version + canonical-newline-port)) #:use-module (guix import utils) #:use-module (guix import cabal) #:use-module (guix store) @@ -32,37 +33,35 @@ #:export (hackage->guix-package)) (define ghc-standard-libraries - ;; List of libraries distributed with ghc (7.8.4). We include GHC itself as + ;; List of libraries distributed with ghc (7.10.2). We include GHC itself as ;; some packages list it. - '("ghc" - "haskell98" - "hoopl" + '("array" "base" - "transformers" - "deepseq" - "array" + "bin-package-db" "binary" "bytestring" + "cabal" ;; in the output of `ghc-pkg list` Cabal is uppercased, but + ;; hackage-name->package-name takes this into account. "containers" - "time" - "cabal" - "bin-package-db" - "ghc-prim" - "integer-gmp" - "integer-simple" - "win32" - "template-haskell" - "process" - "haskeline" - "terminfo" + "deepseq" "directory" "filepath" - "old-locale" - "unix" - "old-time" + "ghc" + "ghc-prim" + "haskeline" + "hoopl" + "hpc" + "integer-gmp" "pretty" - "xhtml" - "hpc")) + "process" + "rts" + "template-haskell" + "terminfo" + "time" + "transformers" + "unix" + "win32" + "xhtml")) (define package-name-prefix "ghc-") @@ -86,7 +85,8 @@ version." (call-with-temporary-output-file (lambda (temp port) (and (url-fetch url temp) - (call-with-input-file temp read-cabal)))))) + (call-with-input-file temp + (compose read-cabal canonical-newline-port))))))) (define string->license ;; List of valid values from @@ -218,7 +218,7 @@ to the Cabal file format definition. The default value associated with the keys \"os\", \"arch\" and \"impl\" is \"linux\", \"x86_64\" and \"ghc\" respectively." (let ((cabal-meta (if port - (read-cabal port) + (read-cabal (canonical-newline-port port)) (hackage-fetch package-name)))) (and=> cabal-meta (compose (cut hackage-module->sexp <> #:include-test-dependencies? diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index d04a68524d..d54bb9fbba 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -1,5 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Cyril Roelandt +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,23 +26,41 @@ #:use-module ((ice-9 rdelim) #:select (read-line)) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (rnrs bytevectors) #:use-module (json) #:use-module (web uri) #:use-module (guix ui) #:use-module (guix utils) #:use-module (guix import utils) + #:use-module ((guix download) #:prefix download:) #:use-module (guix import json) #:use-module (guix packages) + #:use-module (guix upstream) #:use-module (guix licenses) #:use-module (guix build-system python) + #:use-module (gnu packages) #:use-module (gnu packages python) - #:export (pypi->guix-package)) + #:export (pypi->guix-package + %pypi-updater)) (define (pypi-fetch name) "Return an alist representation of the PyPI metadata for the package NAME, or #f on failure." - (json-fetch (string-append "https://pypi.python.org/pypi/" name "/json"))) + ;; XXX: We want to silence the download progress report, which is especially + ;; annoying for 'guix refresh', but we have to use a file port. + (call-with-output-file "/dev/null" + (lambda (null) + (with-error-to-port null + (lambda () + (json-fetch (string-append "https://pypi.python.org/pypi/" + name "/json"))))))) + +;; For packages found on PyPI that lack a source distribution. +(define-condition-type &missing-source-error &error + missing-source-error? + (package missing-source-error-package)) (define (latest-source-release pypi-package) "Return the latest source release for PYPI-PACKAGE." @@ -49,9 +69,8 @@ or #f on failure." (or (find (lambda (release) (string=? "sdist" (assoc-ref release "packagetype"))) releases) - (error "No source release found for pypi package: " - (assoc-ref* pypi-package "info" "name") - (assoc-ref* pypi-package "info" "version"))))) + (raise (condition (&missing-source-error + (package pypi-package))))))) (define (python->package-name name) "Given the NAME of a package on PyPI, return a Guix-compliant name for the @@ -60,6 +79,16 @@ package." (snake-case name) (string-append "python-" (snake-case name)))) +(define (guix-package->pypi-name package) + "Given a Python PACKAGE built from pypi.python.org, return the name of the +package on PyPI." + (let ((source-url (and=> (package-source package) origin-uri))) + ;; The URL has the form: + ;; 'https://pypi.python.org/packages/source/' + + ;; first letter of the package name + + ;; '/' + package name + '/' + ... + (substring source-url 42 (string-rindex source-url #\/)))) + (define (maybe-inputs package-inputs) "Given a list of PACKAGE-INPUTS, tries to generate the 'inputs' field of a package definition." @@ -165,7 +194,7 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (version ,version) (source (origin (method url-fetch) - (uri (string-append ,@(factorize-uri source-url version))) + (uri (pypi-uri ,name version)) (sha256 (base32 ,(guix-hash-url temp))))) @@ -181,12 +210,52 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." `package' s-expression corresponding to that package, or #f on failure." (let ((package (pypi-fetch package-name))) (and package - (let ((name (assoc-ref* package "info" "name")) - (version (assoc-ref* package "info" "version")) - (release (assoc-ref (latest-source-release package) "url")) - (synopsis (assoc-ref* package "info" "summary")) - (description (assoc-ref* package "info" "summary")) - (home-page (assoc-ref* package "info" "home_page")) - (license (string->license (assoc-ref* package "info" "license")))) - (make-pypi-sexp name version release home-page synopsis - description license))))) + (guard (c ((missing-source-error? c) + (let ((package (missing-source-error-package c))) + (leave (_ "no source release for pypi package ~a ~a~%") + (assoc-ref* package "info" "name") + (assoc-ref* package "info" "version"))))) + (let ((name (assoc-ref* package "info" "name")) + (version (assoc-ref* package "info" "version")) + (release (assoc-ref (latest-source-release package) "url")) + (synopsis (assoc-ref* package "info" "summary")) + (description (assoc-ref* package "info" "summary")) + (home-page (assoc-ref* package "info" "home_page")) + (license (string->license (assoc-ref* package "info" "license")))) + (make-pypi-sexp name version release home-page synopsis + description license)))))) + +(define (pypi-package? package) + "Return true if PACKAGE is a Python package from PyPI." + + (define (pypi-url? url) + (string-prefix? "https://pypi.python.org/" url)) + + (let ((source-url (and=> (package-source package) origin-uri)) + (fetch-method (and=> (package-source package) origin-method))) + (and (eq? fetch-method download:url-fetch) + (match source-url + ((? string?) + (pypi-url? source-url)) + ((source-url ...) + (any pypi-url? source-url)))))) + +(define (latest-release guix-package) + "Return an for the latest release of GUIX-PACKAGE." + (guard (c ((missing-source-error? c) #f)) + (let* ((pypi-name (guix-package->pypi-name + (specification->package guix-package))) + (metadata (pypi-fetch pypi-name)) + (version (assoc-ref* metadata "info" "version")) + (url (assoc-ref (latest-source-release metadata) "url"))) + (upstream-source + (package guix-package) + (version version) + (urls (list url)))))) + +(define %pypi-updater + (upstream-updater + (name 'pypi) + (description "Updater for PyPI packages") + (pred pypi-package?) + (latest latest-release))) diff --git a/guix/profiles.scm b/guix/profiles.scm index fac322bbab..c222f4115d 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -84,13 +84,17 @@ packages->manifest %default-profile-hooks profile-derivation + generation-number generation-numbers profile-generations relative-generation previous-generation-number generation-time - generation-file-name)) + generation-file-name + switch-to-generation + roll-back + delete-generation)) ;;; Commentary: ;;; @@ -654,7 +658,8 @@ creates the GTK+ 'icon-theme.cache' file for each theme." ;; Union all the icons. (mkdir-p (string-append #$output "/share")) - (union-build destdir icondirs) + (union-build destdir icondirs + #:log-port (%make-void-port "w")) ;; Update the 'icon-theme.cache' file for each icon theme. (for-each @@ -664,7 +669,7 @@ creates the GTK+ 'icon-theme.cache' file for each theme." ;; "abiword_48.png". Ignore these. (when (file-is-directory? dir) (ensure-writable-directory dir) - (system* update-icon-cache "-t" dir)))) + (system* update-icon-cache "-t" dir "--quiet")))) (scandir destdir (negate (cut member <> '("." "..")))))))) ;; Don't run the hook when there's nothing to do. @@ -844,4 +849,78 @@ case when generations have been deleted (there are \"holes\")." (make-time time-utc 0 (stat:ctime (stat (generation-file-name profile number))))) +(define (link-to-empty-profile store generation) + "Link GENERATION, a string, to the empty profile. An error is raised if +that fails." + (let* ((drv (run-with-store store + (profile-derivation (manifest '())))) + (prof (derivation->output-path drv "out"))) + (build-derivations store (list drv)) + (switch-symlinks generation prof))) + +(define (switch-to-generation profile number) + "Atomically switch PROFILE to the generation NUMBER. Return the number of +the generation that was current before switching." + (let ((current (generation-number profile)) + (generation (generation-file-name profile number))) + (cond ((not (file-exists? profile)) + (raise (condition (&profile-not-found-error + (profile profile))))) + ((not (file-exists? generation)) + (raise (condition (&missing-generation-error + (profile profile) + (generation number))))) + (else + (switch-symlinks profile generation) + current)))) + +(define (switch-to-previous-generation profile) + "Atomically switch PROFILE to the previous generation. Return the former +generation number and the current one." + (let ((previous (previous-generation-number profile))) + (values (switch-to-generation profile previous) + previous))) + +(define (roll-back store profile) + "Roll back to the previous generation of PROFILE. Return the number of the +generation that was current before switching and the new generation number." + (let* ((number (generation-number profile)) + (previous-number (previous-generation-number profile number)) + (previous-generation (generation-file-name profile previous-number))) + (cond ((not (file-exists? profile)) ;invalid profile + (raise (condition (&profile-not-found-error + (profile profile))))) + ((zero? number) ;empty profile + (values number number)) + ((or (zero? previous-number) ;going to emptiness + (not (file-exists? previous-generation))) + (link-to-empty-profile store previous-generation) + (switch-to-previous-generation profile)) + (else ;anything else + (switch-to-previous-generation profile))))) + +(define (delete-generation store profile number) + "Delete generation with NUMBER from PROFILE. Return the file name of the +generation that has been deleted, or #f if nothing was done (for instance +because the NUMBER is zero.)" + (define (delete-and-return) + (let ((generation (generation-file-name profile number))) + (delete-file generation) + generation)) + + (let* ((current-number (generation-number profile)) + (previous-number (previous-generation-number profile number)) + (previous-generation (generation-file-name profile previous-number))) + (cond ((zero? number) #f) ;do not delete generation 0 + ((and (= number current-number) + (not (file-exists? previous-generation))) + (link-to-empty-profile store previous-generation) + (switch-to-previous-generation profile) + (delete-and-return)) + ((= number current-number) + (roll-back store profile) + (delete-and-return)) + (else + (delete-and-return))))) + ;;; profiles.scm ends here diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index a357cf8aa4..8ecd9560ed 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -170,6 +170,8 @@ options handled by 'set-build-options-from-command-line', and listed in --timeout=SECONDS mark the build as failed after SECONDS of activity")) (display (_ " --verbosity=LEVEL use the given verbosity LEVEL")) + (display (_ " + --rounds=N build N times in a row to detect non-determinism")) (display (_ " -c, --cores=N allow the use of up to N CPU cores for the build")) (display (_ " @@ -181,12 +183,12 @@ options handled by 'set-build-options-from-command-line', and listed in ;; TODO: Add more options. (set-build-options store #:keep-failed? (assoc-ref opts 'keep-failed?) + #:rounds (assoc-ref opts 'rounds) #:build-cores (or (assoc-ref opts 'cores) 0) #:max-build-jobs (or (assoc-ref opts 'max-jobs) 1) #:fallback? (assoc-ref opts 'fallback?) #:use-substitutes? (assoc-ref opts 'substitutes?) - #:substitute-urls (or (assoc-ref opts 'substitute-urls) - %default-substitute-urls) + #:substitute-urls (assoc-ref opts 'substitute-urls) #:use-build-hook? (assoc-ref opts 'build-hook?) #:max-silent-time (assoc-ref opts 'max-silent-time) #:timeout (assoc-ref opts 'timeout) @@ -211,6 +213,12 @@ options handled by 'set-build-options-from-command-line', and listed in (apply values (alist-cons 'keep-failed? #t result) rest))) + (option '("rounds") #t #f + (lambda (opt name arg result . rest) + (apply values + (alist-cons 'rounds (string->number* arg) + result) + rest))) (option '("fallback") #f #f (lambda (opt name arg result . rest) (apply values @@ -277,6 +285,7 @@ options handled by 'set-build-options-from-command-line', and listed in (define %default-options ;; Alist of default option values. `((system . ,(%current-system)) + (build-mode . ,(build-mode normal)) (graft? . #t) (substitutes? . #t) (build-hook? . #t) @@ -290,6 +299,9 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (display (_ " -e, --expression=EXPR build the package or derivation EXPR evaluates to")) (display (_ " + -f, --file=FILE build the package or derivation that the code within + FILE evaluates to")) + (display (_ " -S, --source build the packages' source derivations")) (display (_ " --sources[=TYPE] build source derivations; TYPE may optionally be one @@ -305,6 +317,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) --no-grafts do not graft packages")) (display (_ " -d, --derivations return the derivation paths of the given packages")) + (display (_ " + --check rebuild items to check for non-determinism issues")) (display (_ " -r, --root=FILE make FILE a symlink to the result, and register it as a garbage collector root")) @@ -345,6 +359,12 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (leave (_ "invalid argument: '~a' option argument: ~a, ~ must be one of 'package', 'all', or 'transitive'~%") name arg))))) + (option '("check") #f #f + (lambda (opt name arg result . rest) + (apply values + (alist-cons 'build-mode (build-mode check) + result) + rest))) (option '(#\s "system") #t #f (lambda (opt name arg result) (alist-cons 'system arg @@ -359,6 +379,9 @@ must be one of 'package', 'all', or 'transitive'~%") (option '(#\e "expression") #t #f (lambda (opt name arg result) (alist-cons 'expression arg result))) + (option '(#\f "file") #t #f + (lambda (opt name arg result) + (alist-cons 'file arg result))) (option '(#\n "dry-run") #f #f (lambda (opt name arg result) (alist-cons 'dry-run? #t result))) @@ -378,9 +401,40 @@ must be one of 'package', 'all', or 'transitive'~%") %standard-build-options)) +(define (options->things-to-build opts) + "Read the arguments from OPTS and return a list of high-level objects to +build---packages, gexps, derivations, and so on." + (define ensure-list + (match-lambda + ((x ...) x) + (x (list x)))) + + (append-map (match-lambda + (('argument . (? string? spec)) + (cond ((derivation-path? spec) + (list (call-with-input-file spec read-derivation))) + ((store-path? spec) + ;; Nothing to do; maybe for --log-file. + '()) + (else + (list (specification->package spec))))) + (('file . file) + (ensure-list (load* file (make-user-module '())))) + (('expression . str) + (ensure-list (read/eval str))) + (('argument . (? derivation? drv)) + drv) + (('argument . (? derivation-path? drv)) + (list )) + (_ '())) + opts)) + (define (options->derivations store opts) "Given OPTS, the result of 'args-fold', return a list of derivations to build." + (define transform + (options->transformation opts)) + (define package->derivation (match (assoc-ref opts 'target) (#f package-derivation) @@ -388,101 +442,99 @@ build." (cut package-cross-derivation <> <> triplet <>)))) (define src (assoc-ref opts 'source)) - (define sys (assoc-ref opts 'system)) + (define system (assoc-ref opts 'system)) (define graft? (assoc-ref opts 'graft?)) (parameterize ((%graft? graft?)) - (let ((opts (options/with-source store - (options/resolve-packages store opts)))) - (concatenate - (filter-map (match-lambda - (('argument . (? package? p)) - (match src - (#f - (list (package->derivation store p sys))) - (#t - (let ((s (package-source p))) - (list (package-source-derivation store s)))) - (proc - (map (cut package-source-derivation store <>) - (proc p))))) - (('argument . (? derivation? drv)) - (list drv)) - (('argument . (? derivation-path? drv)) - (list (call-with-input-file drv read-derivation))) - (('argument . (? store-path?)) - ;; Nothing to do; maybe for --log-file. - #f) - (_ #f)) - opts))))) + (append-map (match-lambda + ((? package? p) + (match src + (#f + (list (package->derivation store p system))) + (#t + (let ((s (package-source p))) + (list (package-source-derivation store s)))) + (proc + (map (cut package-source-derivation store <>) + (proc p))))) + ((? derivation? drv) + (list drv)) + ((? procedure? proc) + (list (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (proc)) + #:system system))) + ((? gexp? gexp) + (list (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (gexp->derivation "gexp" gexp + #:system system)))))) + (transform store (options->things-to-build opts))))) -(define (options/resolve-packages store opts) - "Return OPTS with package specification strings replaced by actual -packages." - (define system - (or (assoc-ref opts 'system) (%current-system))) - - (map (match-lambda - (('argument . (? string? spec)) - (if (store-path? spec) - `(argument . ,spec) - `(argument . ,(specification->package spec)))) - (('expression . str) - (match (read/eval str) - ((? package? p) - `(argument . ,p)) - ((? procedure? proc) - (let ((drv (run-with-store store - (mbegin %store-monad - (set-guile-for-build (default-guile)) - (proc)) - #:system system))) - `(argument . ,drv))) - ((? gexp? gexp) - (let ((drv (run-with-store store - (mbegin %store-monad - (set-guile-for-build (default-guile)) - (gexp->derivation "gexp" gexp - #:system system))))) - `(argument . ,drv))))) - (opt opt)) - opts)) - -(define (options/with-source store opts) - "Process with 'with-source' options in OPTS, replacing the relevant package -arguments with packages that use the specified source." +(define (transform-package-source sources) + "Return a transformation procedure that uses replaces package sources with +the matching URIs given in SOURCES." (define new-sources - (filter-map (match-lambda - (('with-source . uri) - (cons (package-name->name+version (basename uri)) - uri)) - (_ #f)) - opts)) + (map (lambda (uri) + (cons (package-name->name+version (basename uri)) + uri)) + sources)) - (let loop ((opts opts) - (sources new-sources) - (result '())) - (match opts - (() - (unless (null? sources) - (warning (_ "sources do not match any package:~{ ~a~}~%") - (match sources - (((name . uri) ...) - uri)))) - (reverse result)) - ((('argument . (? package? p)) tail ...) - (let ((source (assoc-ref sources (package-name p)))) - (loop tail - (alist-delete (package-name p) sources) - (alist-cons 'argument - (if source - (package-with-source store p source) - p) - result)))) - ((('with-source . _) tail ...) - (loop tail sources result)) - ((head tail ...) - (loop tail sources (cons head result)))))) + (lambda (store packages) + (let loop ((packages packages) + (sources new-sources) + (result '())) + (match packages + (() + (unless (null? sources) + (warning (_ "sources do not match any package:~{ ~a~}~%") + (match sources + (((name . uri) ...) + uri)))) + (reverse result)) + (((? package? p) tail ...) + (let ((source (assoc-ref sources (package-name p)))) + (loop tail + (alist-delete (package-name p) sources) + (cons (if source + (package-with-source store p source) + p) + result)))) + ((thing tail ...) + (loop tail sources result)))))) + +(define %transformations + ;; Transformations that can be applied to things to build. The car is the + ;; key used in the option alist, and the cdr is the transformation + ;; procedure; it is called with two arguments: the store, and a list of + ;; things to build. + `((with-source . ,transform-package-source))) + +(define (options->transformation opts) + "Return a procedure that, when passed a list of things to build (packages, +derivations, etc.), applies the transformations specified by OPTS." + (apply compose + (map (match-lambda + ((key . transform) + (let ((args (filter-map (match-lambda + ((k . arg) + (and (eq? k key) arg))) + opts))) + (if (null? args) + (lambda (store things) things) + (transform args))))) + %transformations))) + +(define (show-build-log store file urls) + "Show the build log for FILE, falling back to remote logs from URLS if +needed." + (let ((log (or (log-file store file) + (log-url store file #:base-urls urls)))) + (if log + (format #t "~a~%" log) + (leave (_ "no build log for '~a'~%") file)))) ;;; @@ -497,47 +549,44 @@ arguments with packages that use the specified source." (let* ((opts (parse-command-line args %options (list %default-options))) (store (open-connection)) + (mode (assoc-ref opts 'build-mode)) (drv (options->derivations store opts)) (urls (map (cut string-append <> "/log") (if (assoc-ref opts 'substitutes?) (or (assoc-ref opts 'substitute-urls) + ;; XXX: This does not necessarily match the + ;; daemon's substitute URLs. %default-substitute-urls) '()))) + (items (filter-map (match-lambda + (('argument . (? store-path? file)) + file) + (_ #f)) + opts)) (roots (filter-map (match-lambda - (('gc-root . root) root) - (_ #f)) + (('gc-root . root) root) + (_ #f)) opts))) (set-build-options-from-command-line store opts) (unless (assoc-ref opts 'log-file?) (show-what-to-build store drv #:use-substitutes? (assoc-ref opts 'substitutes?) - #:dry-run? (assoc-ref opts 'dry-run?))) + #:dry-run? (assoc-ref opts 'dry-run?) + #:mode mode)) (cond ((assoc-ref opts 'log-file?) - (for-each (lambda (file) - (let ((log (or (log-file store file) - (log-url store file - #:base-urls urls)))) - (if log - (format #t "~a~%" log) - (leave (_ "no build log for '~a'~%") - file)))) + (for-each (cut show-build-log store <> urls) (delete-duplicates (append (map derivation-file-name drv) - (filter-map (match-lambda - (('argument - . (? store-path? file)) - file) - (_ #f)) - opts))))) + items)))) ((assoc-ref opts 'derivations-only?) (format #t "~{~a~%~}" (map derivation-file-name drv)) (for-each (cut register-root store <> <>) (map (compose list derivation-file-name) drv) roots)) ((not (assoc-ref opts 'dry-run?)) - (and (build-derivations store drv) + (and (build-derivations store drv mode) (for-each show-derivation-outputs drv) (for-each (cut register-root store <> <>) (map (lambda (drv) diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 19a9b061b8..4a0c865b07 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -125,10 +125,8 @@ taken since we do not import the archives." servers)) ;; No 'assert-valid-narinfo' on purpose. (narinfos -> (fold (lambda (narinfo vhash) - (if narinfo - (vhash-cons (narinfo-path narinfo) narinfo - vhash) - vhash)) + (vhash-cons (narinfo-path narinfo) narinfo + vhash)) vlist-null remote))) (return (filter-map (lambda (item local) diff --git a/guix/scripts/container.scm b/guix/scripts/container.scm new file mode 100644 index 0000000000..cd9f345b68 --- /dev/null +++ b/guix/scripts/container.scm @@ -0,0 +1,63 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 . + +(define-module (guix scripts container) + #:use-module (ice-9 match) + #:use-module (guix ui) + #:export (guix-container)) + +(define (show-help) + (display (_ "Usage: guix container ACTION ARGS... +Build and manipulate Linux containers.\n")) + (newline) + (display (_ "The valid values for ACTION are:\n")) + (newline) + (display (_ "\ + exec execute a command inside of an existing container\n")) + (newline) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %actions '("exec")) + +(define (resolve-action name) + (let ((module (resolve-interface + `(guix scripts container ,(string->symbol name)))) + (proc (string->symbol (string-append "guix-container-" name)))) + (module-ref module proc))) + +(define (guix-container . args) + (with-error-handling + (match args + (() + (format (current-error-port) + (_ "guix container: missing action~%"))) + ((or ("-h") ("--help")) + (show-help) + (exit 0)) + (("--version") + (show-version-and-exit "guix container")) + ((action args ...) + (if (member action %actions) + (apply (resolve-action action) args) + (format (current-error-port) + (_ "guix container: invalid action~%"))))))) diff --git a/guix/scripts/container/exec.scm b/guix/scripts/container/exec.scm new file mode 100644 index 0000000000..10e70568cc --- /dev/null +++ b/guix/scripts/container/exec.scm @@ -0,0 +1,94 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 David Thompson +;;; +;;; 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 . + +(define-module (guix scripts container exec) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-37) + #:use-module (guix scripts) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (gnu build linux-container) + #:export (guix-container-exec)) + +(define %options + (list (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix container exec"))))) + +(define (show-help) + (display (_ "Usage: guix container exec PID COMMAND [ARGS...] +Execute COMMMAND within the container process PID.\n")) + (newline) + (display (_ " + -h, --help display this help and exit")) + (display (_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define (partition-args args) + "Split ARGS into two lists; one containing the arguments for this program, +and the other containing arguments for the command to be executed." + (define (number-string? str) + (false-if-exception (string->number str))) + + (let loop ((a '()) + (b args)) + (match b + (() + (values (reverse a) '())) + (((? number-string? head) . tail) + (values (reverse (cons head a)) tail)) + ((head . tail) + (loop (cons head a) tail))))) + +(define (guix-container-exec . args) + (define (handle-argument arg result) + (if (assoc-ref result 'pid) + (leave (_ "~a: extraneous argument~%") arg) + (alist-cons 'pid (string->number* arg) result))) + + (with-error-handling + (let-values (((args command) (partition-args args))) + (let* ((opts (parse-command-line args %options '(()) + #:argument-handler + handle-argument)) + (pid (assoc-ref opts 'pid))) + + (unless pid + (leave (_ "no pid specified~%"))) + + (when (null? command) + (leave (_ "no command specified~%"))) + + (unless (file-exists? (string-append "/proc/" (number->string pid))) + (leave (_ "no such process ~d~%") pid)) + + (let ((result (container-excursion pid + (lambda () + (match command + ((program . program-args) + (apply execlp program program program-args))))))) + (unless (zero? result) + (leave (_ "exec failed with status ~d~%") result))))))) diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index 533970ffbb..6ebc14f573 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Ludovic Courtès +;;; Copyright © 2012, 2013, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -96,13 +96,17 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (lambda (opt name arg result) (leave (_ "~A: unrecognized option~%") name)) (lambda (arg result) + (when (assq 'argument result) + (leave (_ "~A: extraneous argument~%") arg)) + (alist-cons 'argument arg result)) %default-options)) (with-error-handling (let* ((opts (parse-options)) (store (open-connection)) - (arg (assq-ref opts 'argument)) + (arg (or (assq-ref opts 'argument) + (leave (_ "no download URI was specified~%")))) (uri (or (string->uri arg) (leave (_ "~a: failed to parse URI~%") arg))) diff --git a/guix/scripts/edit.scm b/guix/scripts/edit.scm index 30146af10b..ce3ac4146d 100644 --- a/guix/scripts/edit.scm +++ b/guix/scripts/edit.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ludovic Courtès +;;; Copyright © 2015 Mathieu Lirzin ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,7 +39,7 @@ (define (show-help) (display (_ "Usage: guix edit PACKAGE... -Start $EDITOR to edit the definitions of PACKAGE...\n")) +Start $VISUAL or $EDITOR to edit the definitions of PACKAGE...\n")) (newline) (display (_ " -h, --help display this help and exit")) @@ -48,7 +49,10 @@ Start $EDITOR to edit the definitions of PACKAGE...\n")) (show-bug-report-information)) (define %editor - (make-parameter (or (getenv "EDITOR") "emacsclient"))) + ;; XXX: It would be better to default to something more likely to be + ;; pre-installed on an average GNU system. Since Nano is not suited for + ;; editing Scheme, Emacs is used instead. + (make-parameter (or (getenv "VISUAL") (getenv "EDITOR") "emacs"))) (define (search-path* path file) "Like 'search-path' but exit if FILE is not found." @@ -59,6 +63,15 @@ Start $EDITOR to edit the definitions of PACKAGE...\n")) file path)) absolute-file-name)) +(define (package->location-specification package) + "Return the location specification for PACKAGE for a typical editor command +line." + (let ((loc (package-location package))) + (list (string-append "+" + (number->string + (location-line loc))) + (search-path* %load-path (location-file loc))))) + (define (guix-edit . args) (with-error-handling @@ -70,11 +83,15 @@ Start $EDITOR to edit the definitions of PACKAGE...\n")) (leave (_ "source location of package '~a' is unknown~%") (package-full-name package)))) packages) - (apply execlp (%editor) (%editor) - (append-map (lambda (package) - (let ((loc (package-location package))) - (list (string-append "+" - (number->string - (location-line loc))) - (search-path* %load-path (location-file loc))))) - packages))))) + + (catch 'system-error + (lambda () + (let ((file-names (append-map package->location-specification + packages))) + ;; Use `system' instead of `exec' in order to sanely handle + ;; possible command line arguments in %EDITOR. + (exit (system (string-join (cons (%editor) file-names)))))) + (lambda args + (let ((errno (system-error-errno args))) + (leave (_ "failed to launch '~a': ~a~%") + (%editor) (strerror errno)))))))) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 2408420e18..2cc5f366a7 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -25,13 +25,19 @@ #:use-module (guix profiles) #:use-module (guix search-paths) #:use-module (guix utils) + #:use-module (guix build utils) #:use-module (guix monads) #:use-module ((guix gexp) #:select (lower-inputs)) #:use-module (guix scripts) #:use-module (guix scripts build) + #:use-module (gnu build linux-container) + #:use-module (gnu system linux-container) + #:use-module (gnu system file-systems) #:use-module (gnu packages) + #:use-module (gnu packages bash) #:use-module (ice-9 format) #:use-module (ice-9 match) + #:use-module (ice-9 rdelim) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) @@ -60,6 +66,12 @@ OUTPUT) tuples." (define %default-shell (or (getenv "SHELL") "/bin/sh")) +(define %network-configuration-files + '("/etc/resolv.conf" + "/etc/nsswitch.conf" + "/etc/services" + "/etc/hosts")) + (define (purify-environment) "Unset almost all environment variables. A small number of variables such as 'HOME' and 'USER' are left untouched." @@ -124,6 +136,18 @@ COMMAND or an interactive shell in that environment.\n")) --search-paths display needed environment variable definitions")) (display (_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) + (display (_ " + -C, --container run command within an isolated container")) + (display (_ " + -N, --network allow containers to access the network")) + (display (_ " + --share=SPEC for containers, share writable host file system + according to SPEC")) + (display (_ " + --expose=SPEC for containers, expose read-only host file system + according to SPEC")) + (display (_ " + --bootstrap use bootstrap binaries to build the environment")) (newline) (show-build-options-help) (newline) @@ -136,12 +160,21 @@ COMMAND or an interactive shell in that environment.\n")) (define %default-options ;; Default to opening a new shell. - `((exec . (,%default-shell)) - (system . ,(%current-system)) + `((system . ,(%current-system)) (substitutes? . #t) (max-silent-time . 3600) (verbosity . 0))) +(define (tag-package-arg opts arg) + "Return a two-element list with the form (TAG ARG) that tags ARG with either +'ad-hoc' in OPTS has the 'ad-hoc?' key set to #t, or 'inputs' otherwise." + ;; Normally, the transitive inputs to a package are added to an environment, + ;; but the ad-hoc? flag changes the meaning of a package argument such that + ;; the package itself is added to the environment instead. + (if (assoc-ref opts 'ad-hoc?) + `(ad-hoc-package ,arg) + `(package ,arg))) + (define %options ;; Specification of the command-line options. (cons* (option '(#\h "help") #f #f @@ -162,10 +195,14 @@ COMMAND or an interactive shell in that environment.\n")) (alist-cons 'search-paths #t result))) (option '(#\l "load") #t #f (lambda (opt name arg result) - (alist-cons 'load arg result))) + (alist-cons 'load + (tag-package-arg result arg) + result))) (option '(#\e "expression") #t #f (lambda (opt name arg result) - (alist-cons 'expression arg result))) + (alist-cons 'expression + (tag-package-arg result arg) + result))) (option '("ad-hoc") #f #f (lambda (opt name arg result) (alist-cons 'ad-hoc? #t result))) @@ -176,6 +213,25 @@ COMMAND or an interactive shell in that environment.\n")) (lambda (opt name arg result) (alist-cons 'system arg (alist-delete 'system result eq?)))) + (option '(#\C "container") #f #f + (lambda (opt name arg result) + (alist-cons 'container? #t result))) + (option '(#\N "network") #f #f + (lambda (opt name arg result) + (alist-cons 'network? #t result))) + (option '("share") #t #f + (lambda (opt name arg result) + (alist-cons 'file-system-mapping + (specification->file-system-mapping arg #t) + result))) + (option '("expose") #t #f + (lambda (opt name arg result) + (alist-cons 'file-system-mapping + (specification->file-system-mapping arg #f) + result))) + (option '("bootstrap") #f #f + (lambda (opt name arg result) + (alist-cons 'bootstrap? #t result))) %standard-build-options)) (define (pick-all alist key) @@ -189,29 +245,40 @@ COMMAND or an interactive shell in that environment.\n")) (_ memo))) '() alist)) +(define (compact lst) + "Remove all #f elements from LST." + (filter identity lst)) + (define (options/resolve-packages opts) "Return OPTS with package specification strings replaced by actual packages." - (append-map (match-lambda - (('package . (? string? spec)) - (let-values (((package output) - (specification->package+output spec))) - `((package ,package ,output)))) - (('expression . str) - ;; Add all the outputs of the package STR evaluates to. - (match (read/eval str) - ((? package? package) - (map (lambda (output) - `(package ,package ,output)) - (package-outputs package))))) - (('load . file) - ;; Add all the outputs of the package defined in FILE. - (let ((package (load* file (make-user-module '())))) - (map (lambda (output) - `(package ,package ,output)) - (package-outputs package)))) - (opt (list opt))) - opts)) + (define (package->outputs package mode) + (map (lambda (output) + (list mode package output)) + (package-outputs package))) + + (define (packages->outputs packages mode) + (match packages + ((? package? package) + (package->outputs package mode)) + (((? package? packages) ...) + (append-map (cut package->outputs <> mode) packages)))) + + (compact + (append-map (match-lambda + (('package mode (? string? spec)) + (let-values (((package output) + (specification->package+output spec))) + (list (list mode package output)))) + (('expression mode str) + ;; Add all the outputs of the package STR evaluates to. + (packages->outputs (read/eval str) mode)) + (('load mode file) + ;; Add all the outputs of the package defined in FILE. + (let ((module (make-user-module '()))) + (packages->outputs (load* file module) mode))) + (_ '(#f))) + opts))) (define (build-inputs inputs opts) "Build the derivations in INPUTS, a list of (DERIVATION) or (DERIVATION @@ -227,14 +294,145 @@ OUTPUT) tuples, using the build options in OPTS." (if dry-run? (return #f) (mbegin %store-monad - (set-build-options-from-command-line* opts) (built-derivations derivations) (return derivations)))))))) +(define requisites* (store-lift requisites)) + +(define (inputs->requisites inputs) + "Convert INPUTS, a list of input tuples or store path strings, into a set of +requisite store items i.e. the union closure of all the inputs." + (define (input->requisites input) + (requisites* + (match input + ((drv output) + (derivation->output-path drv output)) + ((drv) + (derivation->output-path drv)) + ((? direct-store-path? path) + path)))) + + (mlet %store-monad ((reqs (sequence %store-monad + (map input->requisites inputs)))) + (return (delete-duplicates (concatenate reqs))))) + +(define (status->exit-code status) + "Compute the exit code made from STATUS, a value as returned by 'waitpid', +and suitable for 'exit'." + ;; See . + (or (status:exit-val status) + (logior #x80 (status:term-sig status)))) + +(define exit/status (compose exit status->exit-code)) +(define primitive-exit/status (compose primitive-exit status->exit-code)) + +(define (launch-environment command inputs paths pure?) + "Run COMMAND in a new environment containing INPUTS, using the native search +paths defined by the list PATHS. When PURE?, pre-existing environment +variables are cleared before setting the new ones." + (create-environment inputs paths pure?) + (apply system* command)) + +(define* (launch-environment/container #:key command bash user-mappings + inputs paths network?) + "Run COMMAND within a Linux container. The environment features INPUTS, a +list of derivations to be shared from the host system. Environment variables +are set according to PATHS, a list of native search paths. The global shell +is BASH, a file name for a GNU Bash binary in the store. When NETWORK?, +access to the host system network is permitted. USER-MAPPINGS, a list of file +system mappings, contains the user-specified host file systems to mount inside +the container." + (mlet %store-monad ((reqs (inputs->requisites + (cons (direct-store-path bash) inputs)))) + (return + (let* ((cwd (getcwd)) + ;; Bind-mount all requisite store items, user-specified mappings, + ;; /bin/sh, the current working directory, and possibly networking + ;; configuration files within the container. + (mappings + (append user-mappings + ;; Current working directory. + (list (file-system-mapping + (source cwd) + (target cwd) + (writable? #t))) + ;; When in Rome, do as Nix build.cc does: Automagically + ;; map common network configuration files. + (if network? + (filter-map (lambda (file) + (and (file-exists? file) + (file-system-mapping + (source file) + (target file) + (writable? #f)))) + %network-configuration-files) + '()) + ;; Mappings for the union closure of all inputs. + (map (lambda (dir) + (file-system-mapping + (source dir) + (target dir) + (writable? #f))) + reqs))) + (file-systems (append %container-file-systems + (map mapping->file-system mappings)))) + (exit/status + (call-with-container (map file-system->spec file-systems) + (lambda () + ;; Setup global shell. + (mkdir-p "/bin") + (symlink bash "/bin/sh") + + ;; Setup directory for temporary files. + (mkdir-p "/tmp") + (for-each (lambda (var) + (setenv var "/tmp")) + ;; The same variables as in Nix's 'build.cc'. + '("TMPDIR" "TEMPDIR" "TMP" "TEMP")) + + ;; From Nix build.cc: + ;; + ;; Set HOME to a non-existing path to prevent certain + ;; programs from using /etc/passwd (or NIS, or whatever) + ;; to locate the home directory (for example, wget looks + ;; for ~/.wgetrc). I.e., these tools use /etc/passwd if + ;; HOME is not set, but they will just assume that the + ;; settings file they are looking for does not exist if + ;; HOME is set but points to some non-existing path. + (setenv "HOME" "/homeless-shelter") + + ;; For convenience, start in the user's current working + ;; directory rather than the root directory. + (chdir cwd) + + (primitive-exit/status + ;; A container's environment is already purified, so no need to + ;; request it be purified again. + (launch-environment command inputs paths #f))) + #:namespaces (if network? + (delq 'net %namespaces) ; share host network + %namespaces))))))) + +(define (environment-bash container? bootstrap? system) + "Return a monadic value in the store monad for the version of GNU Bash +needed in the environment for SYSTEM, if any. If CONTAINER? is #f, return #f. +If CONTAINER? and BOOTSTRAP?, return the store path for the bootstrap Bash. +Otherwise, return the derivation for the Bash package." + (with-monad %store-monad + (cond + ((and container? (not bootstrap?)) + (package->derivation bash)) + ;; Use the bootstrap Bash instead. + ((and container? bootstrap?) + (interned-file + (search-bootstrap-binary "bash" system))) + (else + (return #f))))) + (define (parse-args args) "Parse the list of command line arguments ARGS." (define (handle-argument arg result) - (alist-cons 'package arg result)) + (alist-cons 'package (tag-package-arg result arg) result)) ;; The '--' token is used to separate the command to run from the rest of ;; the operands. @@ -245,55 +443,103 @@ OUTPUT) tuples, using the build options in OPTS." opts (alist-cons 'exec command opts))))) +(define (assert-container-features) + "Check if containers can be created and exit with an informative error +message if any test fails." + (unless (user-namespace-supported?) + (report-error (_ "cannot create container: user namespaces unavailable\n")) + (leave (_ "is your kernel version < 3.10?\n"))) + + (unless (unprivileged-user-namespace-supported?) + (report-error (_ "cannot create container: unprivileged user cannot create user namespaces\n")) + (leave (_ "please set /proc/sys/kernel/unprivileged_userns_clone to \"1\"\n"))) + + (unless (setgroups-supported?) + (report-error (_ "cannot create container: /proc/self/setgroups does not exist\n")) + (leave (_ "is your kernel version < 3.19?\n")))) + ;; Entry point. (define (guix-environment . args) (with-error-handling - (let* ((opts (parse-args args)) - (pure? (assoc-ref opts 'pure)) - (ad-hoc? (assoc-ref opts 'ad-hoc?)) - (command (assoc-ref opts 'exec)) - (packages (pick-all (options/resolve-packages opts) 'package)) - (inputs (if ad-hoc? - (append-map (match-lambda - ((package output) - (package+propagated-inputs package - output))) - packages) - (append-map (compose bag-transitive-inputs - package->bag - first) - packages))) - (paths (delete-duplicates - (cons $PATH - (append-map (match-lambda - ((label (? package? p) _ ...) - (package-native-search-paths p)) - (_ - '())) - inputs)) - eq?))) + (let* ((opts (parse-args args)) + (pure? (assoc-ref opts 'pure)) + (container? (assoc-ref opts 'container?)) + (network? (assoc-ref opts 'network?)) + (bootstrap? (assoc-ref opts 'bootstrap?)) + (system (assoc-ref opts 'system)) + (command (or (assoc-ref opts 'exec) + ;; Spawn a shell if the user didn't specify + ;; anything in particular. + (if container? + ;; The user's shell is likely not available + ;; within the container. + '("/bin/sh") + (list %default-shell)))) + (packages (options/resolve-packages opts)) + (mappings (pick-all opts 'file-system-mapping)) + (inputs (delete-duplicates + (append-map (match-lambda + (('ad-hoc-package package output) + (package+propagated-inputs package + output)) + (('package package output) + (bag-transitive-inputs + (package->bag package)))) + packages))) + (paths (delete-duplicates + (cons $PATH + (append-map (match-lambda + ((label (? package? p) _ ...) + (package-native-search-paths p)) + (_ + '())) + inputs)) + eq?))) + + (when container? (assert-container-features)) + (with-store store + (set-build-options-from-command-line store opts) (run-with-store store - (mlet %store-monad ((inputs (lower-inputs - (map (match-lambda + (mlet* %store-monad ((inputs (lower-inputs + (map (match-lambda ((label item) (list item)) ((label item output) (list item output))) - inputs) - #:system (assoc-ref opts 'system)))) + inputs) + #:system system)) + ;; Containers need a Bourne shell at /bin/sh. + (bash (environment-bash container? + bootstrap? + system))) (mbegin %store-monad - ;; First build INPUTS. This is necessary even for - ;; --search-paths. - (build-inputs inputs opts) - (cond ((assoc-ref opts 'dry-run?) - (return #t)) - ((assoc-ref opts 'search-paths) - (show-search-paths inputs paths pure?) - (return #t)) - (else - (create-environment inputs paths pure?) - (return - (exit - (status:exit-val - (apply system* command))))))))))))) + ;; First build the inputs. This is necessary even for + ;; --search-paths. Additionally, we might need to build bash + ;; for a container. + (build-inputs (if (derivation? bash) + `((,bash "out") ,@inputs) + inputs) + opts) + (cond + ((assoc-ref opts 'dry-run?) + (return #t)) + ((assoc-ref opts 'search-paths) + (show-search-paths inputs paths pure?) + (return #t)) + (container? + (let ((bash-binary + (if bootstrap? + bash + (string-append (derivation->output-path bash) + "/bin/sh")))) + (launch-environment/container #:command command + #:bash bash-binary + #:user-mappings mappings + #:inputs inputs + #:paths paths + #:network? network?))) + (else + (return + (exit/status + (launch-environment command inputs paths pure?)))))))))))) diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 89a68d51d0..fe1bb93f7f 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -182,6 +182,10 @@ Invoke the garbage collector.\n")) (('argument . arg) arg) (_ #f)) opts))) + (define (assert-no-extra-arguments) + (unless (null? paths) + (leave (_ "extraneous arguments: ~{~a ~}~%") paths))) + (define (list-relatives relatives) (for-each (compose (lambda (path) (for-each (cut simple-format #t "~a~%" <>) @@ -192,6 +196,7 @@ Invoke the garbage collector.\n")) (case (assoc-ref opts 'action) ((collect-garbage) + (assert-no-extra-arguments) (let ((min-freed (assoc-ref opts 'min-freed))) (if min-freed (collect-garbage store min-freed) @@ -205,8 +210,10 @@ Invoke the garbage collector.\n")) ((list-referrers) (list-relatives referrers)) ((optimize) + (assert-no-extra-arguments) (optimize-store store)) ((verify) + (assert-no-extra-arguments) (let ((options (assoc-ref opts 'verify-options))) (exit (verify-store store diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index 734a47719a..9255f0018a 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -18,6 +18,7 @@ (define-module (guix scripts graph) #:use-module (guix ui) + #:use-module (guix graph) #:use-module (guix scripts) #:use-module (guix utils) #:use-module (guix packages) @@ -28,51 +29,21 @@ #:use-module ((guix build-system gnu) #:select (standard-packages)) #:use-module (gnu packages) #:use-module (guix sets) - #:use-module (guix records) #:use-module (srfi srfi-1) - #:use-module (srfi srfi-9) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:export (%package-node-type %bag-node-type + %bag-with-origins-node-type %bag-emerged-node-type %derivation-node-type %reference-node-type %node-types - node-type - node-type? - node-type-identifier - node-type-label - node-type-edges - node-type-convert - node-type-name - node-type-description - - %graphviz-backend - graph-backend? - graph-backend - - export-graph - guix-graph)) - -;;; -;;; Node types. -;;; - -(define-record-type* node-type make-node-type - node-type? - (identifier node-type-identifier) ;node -> M identifier - (label node-type-label) ;node -> string - (edges node-type-edges) ;node -> M list of nodes - (convert node-type-convert ;package -> M list of nodes - (default (lift1 list %store-monad))) - (name node-type-name) ;string - (description node-type-description)) ;string - ;;; ;;; Package DAG. @@ -135,17 +106,23 @@ file name." low)))))) (define (bag-node-edges thing) - "Return the list of dependencies of THING, a package or origin, etc." - (if (package? thing) - (match (bag-direct-inputs (package->bag thing)) - (((labels things . outputs) ...) - (filter-map (match-lambda - ((? package? p) p) - ;; XXX: Here we choose to filter out origins, files, - ;; etc. Replace "#f" with "x" to reinstate them. - (x #f)) - things))) - '())) + "Return the list of dependencies of THING, a package or origin. +Dependencies may include packages, origin, and file names." + (cond ((package? thing) + (match (bag-direct-inputs (package->bag thing)) + (((labels things . outputs) ...) + things))) + ((origin? thing) + (cons (origin-patch-guile thing) + (if (or (pair? (origin-patches thing)) + (origin-snippet thing)) + (match (origin-patch-inputs thing) + (#f '()) + (((labels dependencies _ ...) ...) + (delete-duplicates dependencies eq?))) + '()))) + (else + '()))) (define %bag-node-type ;; Type for the traversal of package nodes via the "bag" representation, @@ -155,7 +132,22 @@ file name." (description "the DAG of packages, including implicit inputs") (identifier bag-node-identifier) (label node-full-name) - (edges (lift1 bag-node-edges %store-monad)))) + (edges (lift1 (compose (cut filter package? <>) bag-node-edges) + %store-monad)))) + +(define %bag-with-origins-node-type + (node-type + (name "bag-with-origins") + (description "the DAG of packages and origins, including implicit inputs") + (identifier bag-node-identifier) + (label node-full-name) + (edges (lift1 (lambda (thing) + (filter (match-lambda + ((? package?) #t) + ((? origin?) #t) + (_ #f)) + (bag-node-edges thing))) + %store-monad)))) (define standard-package-set (memoize @@ -270,6 +262,7 @@ substitutes." ;; List of all the node types. (list %package-node-type %bag-node-type + %bag-with-origins-node-type %bag-emerged-node-type %derivation-node-type %reference-node-type)) @@ -291,73 +284,6 @@ substitutes." (node-type-description type))) %node-types)) - -;;; -;;; Graphviz export. -;;; - -(define-record-type - (graph-backend prologue epilogue node edge) - graph-backend? - (prologue graph-backend-prologue) - (epilogue graph-backend-epilogue) - (node graph-backend-node) - (edge graph-backend-edge)) - -(define (emit-prologue name port) - (format port "digraph \"Guix ~a\" {\n" - name)) -(define (emit-epilogue port) - (display "\n}\n" port)) -(define (emit-node id label port) - (format port " \"~a\" [label = \"~a\", shape = box, fontname = Helvetica];~%" - id label)) -(define (emit-edge id1 id2 port) - (format port " \"~a\" -> \"~a\" [color = red];~%" - id1 id2)) - -(define %graphviz-backend - (graph-backend emit-prologue emit-epilogue - emit-node emit-edge)) - -(define* (export-graph sinks port - #:key - reverse-edges? - (node-type %package-node-type) - (backend %graphviz-backend)) - "Write to PORT the representation of the DAG with the given SINKS, using the -given BACKEND. Use NODE-TYPE to traverse the DAG. When REVERSE-EDGES? is -true, draw reverse arrows." - (match backend - (($ emit-prologue emit-epilogue emit-node emit-edge) - (emit-prologue (node-type-name node-type) port) - - (match node-type - (($ node-identifier node-label node-edges) - (let loop ((nodes sinks) - (visited (set))) - (match nodes - (() - (with-monad %store-monad - (emit-epilogue port) - (store-return #t))) - ((head . tail) - (mlet %store-monad ((id (node-identifier head))) - (if (set-contains? visited id) - (loop tail visited) - (mlet* %store-monad ((dependencies (node-edges head)) - (ids (mapm %store-monad - node-identifier - dependencies))) - (emit-node id (node-label head) port) - (for-each (lambda (dependency dependency-id) - (if reverse-edges? - (emit-edge dependency-id id port) - (emit-edge id dependency-id port))) - dependencies ids) - (loop (append dependencies tail) - (set-insert id visited))))))))))))) - ;;; ;;; Command-line options. diff --git a/guix/scripts/import/hackage.scm b/guix/scripts/import/hackage.scm index 8d31128c47..4e84278a78 100644 --- a/guix/scripts/import/hackage.scm +++ b/guix/scripts/import/hackage.scm @@ -19,6 +19,7 @@ (define-module (guix scripts import hackage) #:use-module (guix ui) #:use-module (guix utils) + #:use-module (guix packages) #:use-module (guix scripts) #:use-module (guix import hackage) #:use-module (guix scripts import) @@ -34,10 +35,13 @@ ;;; Command-line options. ;;; +(define ghc-default-version + (string-append "ghc-" (package-version (@ (gnu packages haskell) ghc)))) + (define %default-options - '((include-test-dependencies? . #t) + `((include-test-dependencies? . #t) (read-from-stdin? . #f) - ('cabal-environment . '()))) + (cabal-environment . ,`(("impl" . ,ghc-default-version))))) (define (show-help) (display (_ "Usage: guix import hackage PACKAGE-NAME @@ -55,7 +59,7 @@ version.\n")) (display (_ " -s, --stdin read from standard input")) (display (_ " - -t, --no-test-dependencies don't include test only dependencies")) + -t, --no-test-dependencies don't include test-only dependencies")) (display (_ " -V, --version display version information and exit")) (newline) @@ -134,9 +138,9 @@ from standard input~%"))))) ((package-name) (run-importer package-name opts (lambda () - (leave - (_ "failed to download cabal file for package '~a'~%")) - package-name))) + (leave (_ "failed to download cabal file \ +for package '~a'~%") + package-name)))) (() (leave (_ "too few arguments~%"))) ((many ...) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index b1707ade44..338c7e827d 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -32,6 +32,7 @@ #:use-module (guix scripts) #:use-module (guix gnu-maintenance) #:use-module (guix monads) + #:use-module (guix cve) #:use-module (gnu packages) #:use-module (ice-9 match) #:use-module (ice-9 regex) @@ -61,6 +62,7 @@ check-source check-source-file-name check-license + check-vulnerabilities check-formatting run-checkers @@ -266,10 +268,13 @@ the synopsis") (check-start-with-package-name synopsis) (check-synopsis-length synopsis)))) -(define (probe-uri uri) +(define* (probe-uri uri #:key timeout) "Probe URI, a URI object, and return two values: a symbol denoting the probing status, such as 'http-response' when we managed to get an HTTP -response from URI, and additional details, such as the actual HTTP response." +response from URI, and additional details, such as the actual HTTP response. + +TIMEOUT is the maximum number of seconds (possibly an inexact number) to wait +for connections to complete; when TIMEOUT is #f, wait as long as needed." (define headers '((User-Agent . "GNU Guile") (Accept . "*/*"))) @@ -280,7 +285,7 @@ response from URI, and additional details, such as the actual HTTP response." ((or 'http 'https) (catch #t (lambda () - (let ((port (open-connection-for-uri uri)) + (let ((port (open-connection-for-uri uri #:timeout timeout)) (request (build-request uri #:headers headers))) (define response (dynamic-wind @@ -313,7 +318,7 @@ response from URI, and additional details, such as the actual HTTP response." ('ftp (catch #t (lambda () - (let ((conn (ftp-open (uri-host uri) 21))) + (let ((conn (ftp-open (uri-host uri) #:timeout timeout))) (define response (dynamic-wind (const #f) @@ -338,7 +343,7 @@ response from URI, and additional details, such as the actual HTTP response." "Return #t if the given URI can be reached, otherwise return #f and emit a warning for PACKAGE mentionning the FIELD." (let-values (((status argument) - (probe-uri uri))) + (probe-uri uri #:timeout 3))) ;wait at most 3 seconds (case status ((http-response) (or (= 200 (response-code argument)) @@ -568,6 +573,53 @@ descriptions maintained upstream." (emit-warning package (_ "invalid license field") 'license)))) +(define (patch-file-name patch) + "Return the basename of PATCH's file name, or #f if the file name could not +be determined." + (match patch + ((? string?) + (basename patch)) + ((? origin?) + (and=> (origin-actual-file-name patch) basename)))) + +(define (package-name->cpe-name name) + "Do a basic conversion of NAME, a Guix package name, to the corresponding +Common Platform Enumeration (CPE) name." + (match name + ("icecat" "firefox") ;or "firefox_esr" + ;; TODO: Add more. + (_ name))) + +(define package-vulnerabilities + (let ((lookup (delay (vulnerabilities->lookup-proc + (current-vulnerabilities))))) + (lambda (package) + "Return a list of vulnerabilities affecting PACKAGE." + ((force lookup) + (package-name->cpe-name (package-name package)) + (package-version package))))) + +(define (check-vulnerabilities package) + "Check for known vulnerabilities for PACKAGE." + (match (package-vulnerabilities package) + (() + #t) + ((vulnerabilities ...) + (let* ((patches (filter-map patch-file-name + (or (and=> (package-source package) + origin-patches) + '()))) + (unpatched (remove (lambda (vuln) + (find (cute string-contains + <> (vulnerability-id vuln)) + patches)) + vulnerabilities))) + (unless (null? unpatched) + (emit-warning package + (format #f (_ "probably vulnerable to ~a") + (string-join (map vulnerability-id unpatched) + ", ")))))))) + ;;; ;;; Source code formatting. @@ -705,6 +757,11 @@ or a list thereof") (name 'synopsis) (description "Validate package synopses") (check check-synopsis-style)) + (lint-checker + (name 'cve) + (description "Check the Common Vulnerabilities and Exposures\ + (CVE) database") + (check check-vulnerabilities)) (lint-checker (name 'formatting) (description "Look for formatting issues in the source") diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index e0fe1ddb27..c62daee9a7 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -32,27 +32,21 @@ #:use-module (guix scripts) #:use-module (guix scripts build) #:use-module ((guix build utils) - #:select (directory-exists? mkdir-p search-path-as-list)) + #:select (directory-exists? mkdir-p)) #:use-module (ice-9 format) #:use-module (ice-9 match) - #:use-module (ice-9 regex) #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) - #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) #:use-module (gnu packages) - #:use-module (gnu packages base) - #:use-module (gnu packages guile) - #:use-module ((gnu packages bootstrap) #:select (%bootstrap-guile)) - #:export (switch-to-generation - switch-to-previous-generation - roll-back - delete-generation - delete-generations + #:autoload (gnu packages base) (canonical-package) + #:autoload (gnu packages guile) (guile-2.0) + #:autoload (gnu packages bootstrap) (%bootstrap-guile) + #:export (delete-generations display-search-paths guix-package)) @@ -100,149 +94,59 @@ indirectly, or PROFILE." %user-profile-directory profile)) -(define (link-to-empty-profile store generation) - "Link GENERATION, a string, to the empty profile." - (let* ((drv (run-with-store store - (profile-derivation (manifest '())))) - (prof (derivation->output-path drv "out"))) - (when (not (build-derivations store (list drv))) - (leave (_ "failed to build the empty profile~%"))) +(define (ensure-default-profile) + "Ensure the default profile symlink and directory exist and are writable." - (switch-symlinks generation prof))) + (define (rtfm) + (format (current-error-port) + (_ "Try \"info '(guix) Invoking guix package'\" for \ +more information.~%")) + (exit 1)) -(define (switch-to-generation profile number) - "Atomically switch PROFILE to the generation NUMBER." - (let ((current (generation-number profile)) - (generation (generation-file-name profile number))) - (cond ((not (file-exists? profile)) - (raise (condition (&profile-not-found-error - (profile profile))))) - ((not (file-exists? generation)) - (raise (condition (&missing-generation-error - (profile profile) - (generation number))))) - (else - (format #t (_ "switching from generation ~a to ~a~%") - current number) - (switch-symlinks profile generation))))) + ;; Create ~/.guix-profile if it doesn't exist yet. + (when (and %user-profile-directory + %current-profile + (not (false-if-exception + (lstat %user-profile-directory)))) + (symlink %current-profile %user-profile-directory)) -(define (switch-to-previous-generation profile) - "Atomically switch PROFILE to the previous generation." - (switch-to-generation profile - (previous-generation-number profile))) + (let ((s (stat %profile-directory #f))) + ;; Attempt to create /…/profiles/per-user/$USER if needed. + (unless (and s (eq? 'directory (stat:type s))) + (catch 'system-error + (lambda () + (mkdir-p %profile-directory)) + (lambda args + ;; Often, we cannot create %PROFILE-DIRECTORY because its + ;; parent directory is root-owned and we're running + ;; unprivileged. + (format (current-error-port) + (_ "error: while creating directory `~a': ~a~%") + %profile-directory + (strerror (system-error-errno args))) + (format (current-error-port) + (_ "Please create the `~a' directory, with you as the owner.~%") + %profile-directory) + (rtfm)))) -(define (roll-back store profile) - "Roll back to the previous generation of PROFILE." - (let* ((number (generation-number profile)) - (previous-number (previous-generation-number profile number)) - (previous-generation (generation-file-name profile previous-number))) - (cond ((not (file-exists? profile)) ; invalid profile - (raise (condition (&profile-not-found-error - (profile profile))))) - ((zero? number) ; empty profile - (format (current-error-port) - (_ "nothing to do: already at the empty profile~%"))) - ((or (zero? previous-number) ; going to emptiness - (not (file-exists? previous-generation))) - (link-to-empty-profile store previous-generation) - (switch-to-previous-generation profile)) - (else - (switch-to-previous-generation profile))))) ; anything else - -(define (delete-generation store profile number) - "Delete generation with NUMBER from PROFILE." - (define (display-and-delete) - (let ((generation (generation-file-name profile number))) - (format #t (_ "deleting ~a~%") generation) - (delete-file generation))) - - (let* ((current-number (generation-number profile)) - (previous-number (previous-generation-number profile number)) - (previous-generation (generation-file-name profile previous-number))) - (cond ((zero? number)) ; do not delete generation 0 - ((and (= number current-number) - (not (file-exists? previous-generation))) - (link-to-empty-profile store previous-generation) - (switch-to-previous-generation profile) - (display-and-delete)) - ((= number current-number) - (roll-back store profile) - (display-and-delete)) - (else - (display-and-delete))))) + ;; Bail out if it's not owned by the user. + (unless (or (not s) (= (stat:uid s) (getuid))) + (format (current-error-port) + (_ "error: directory `~a' is not owned by you~%") + %profile-directory) + (format (current-error-port) + (_ "Please change the owner of `~a' to user ~s.~%") + %profile-directory (or (getenv "USER") + (getenv "LOGNAME") + (getuid))) + (rtfm)))) (define (delete-generations store profile generations) "Delete GENERATIONS from PROFILE. GENERATIONS is a list of generation numbers." - (for-each (cut delete-generation store profile <>) + (for-each (cut delete-generation* store profile <>) generations)) -(define* (matching-generations str #:optional (profile %current-profile) - #:key (duration-relation <=)) - "Return the list of available generations matching a pattern in STR. See -'string->generations' and 'string->duration' for the list of valid patterns. -When STR is a duration pattern, return all the generations whose ctime has -DURATION-RELATION with the current time." - (define (valid-generations lst) - (define (valid-generation? n) - (any (cut = n <>) (generation-numbers profile))) - - (fold-right (lambda (x acc) - (if (valid-generation? x) - (cons x acc) - acc)) - '() - lst)) - - (define (filter-generations generations) - (match generations - (() '()) - (('>= n) - (drop-while (cut > n <>) - (generation-numbers profile))) - (('<= n) - (valid-generations (iota n 1))) - ((lst ..1) - (valid-generations lst)) - (_ #f))) - - (define (filter-by-duration duration) - (define (time-at-midnight time) - ;; Return TIME at midnight by setting nanoseconds, seconds, minutes, and - ;; hours to zeros. - (let ((d (time-utc->date time))) - (date->time-utc - (make-date 0 0 0 0 - (date-day d) (date-month d) - (date-year d) (date-zone-offset d))))) - - (define generation-ctime-alist - (map (lambda (number) - (cons number - (time-second - (time-at-midnight - (generation-time profile number))))) - (generation-numbers profile))) - - (match duration - (#f #f) - (res - (let ((s (time-second - (subtract-duration (time-at-midnight (current-time)) - duration)))) - (delete #f (map (lambda (x) - (and (duration-relation s (cdr x)) - (first x))) - generation-ctime-alist)))))) - - (cond ((string->generations str) - => - filter-generations) - ((string->duration str) - => - filter-by-duration) - (else #f))) - (define (delete-matching-generations store profile pattern) "Delete from PROFILE all the generations matching PATTERN. PATTERN must be a string denoting a set of generations: the empty list means \"all generations @@ -253,7 +157,7 @@ denote ranges as interpreted by 'matching-derivations'." (raise (condition (&profile-not-found-error (profile profile))))) ((string-null? pattern) - (delete-generations (%store) profile + (delete-generations store profile (delv current (profile-generations profile)))) ;; Do not delete the zeroth generation. ((equal? 0 (string->number pattern)) @@ -274,10 +178,53 @@ denote ranges as interpreted by 'matching-derivations'." (let ((numbers (delv current numbers))) (when (null-list? numbers) (leave (_ "no matching generation~%"))) - (delete-generations (%store) profile numbers)))) + (delete-generations store profile numbers)))) (else (leave (_ "invalid syntax: ~a~%") pattern))))) +(define* (build-and-use-profile store profile manifest + #:key + bootstrap? use-substitutes? + dry-run?) + "Build a new generation of PROFILE, a file name, using the packages +specified in MANIFEST, a manifest object." + (when (equal? profile %current-profile) + (ensure-default-profile)) + + (let* ((prof-drv (run-with-store store + (profile-derivation manifest + #:hooks (if bootstrap? + '() + %default-profile-hooks)))) + (prof (derivation->output-path prof-drv))) + (show-what-to-build store (list prof-drv) + #:use-substitutes? use-substitutes? + #:dry-run? dry-run?) + + (cond + (dry-run? #t) + ((and (file-exists? profile) + (and=> (readlink* profile) (cut string=? prof <>))) + (format (current-error-port) (_ "nothing to be done~%"))) + (else + (let* ((number (generation-number profile)) + + ;; Always use NUMBER + 1 for the new profile, possibly + ;; overwriting a "previous future generation". + (name (generation-file-name profile (+ 1 number)))) + (and (build-derivations store (list prof-drv)) + (let* ((entries (manifest-entries manifest)) + (count (length entries))) + (switch-symlinks name prof) + (switch-symlinks profile name) + (unless (string=? profile %current-profile) + (register-gc-root store name)) + (format #t (N_ "~a package in profile~%" + "~a packages in profile~%" + count) + count) + (display-search-paths entries (list profile))))))))) + ;;; ;;; Package specifications. @@ -327,11 +274,11 @@ an output path different than CURRENT-PATH." ;;; Search paths. ;;; -(define* (search-path-environment-variables entries profile +(define* (search-path-environment-variables entries profiles #:optional (getenv getenv) #:key (kind 'exact)) "Return environment variable definitions that may be needed for the use of -ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the +ENTRIES, a list of manifest entries, in PROFILES. Use GETENV to determine the current settings and report only settings not already effective. KIND must be one of 'exact, 'prefix, or 'suffix, depending on the kind of search path definition to be returned." @@ -346,15 +293,15 @@ path definition to be returned." (environment-variable-definition variable value #:separator sep #:kind kind)))) - (evaluate-search-paths search-paths (list profile) + (evaluate-search-paths search-paths profiles getenv)))) -(define* (display-search-paths entries profile +(define* (display-search-paths entries profiles #:key (kind 'exact)) "Display the search path environment variables that may need to be set for ENTRIES, a list of manifest entries, in the context of PROFILE." - (let* ((profile (user-friendly-profile profile)) - (settings (search-path-environment-variables entries profile + (let* ((profiles (map user-friendly-profile profiles)) + (settings (search-path-environment-variables entries profiles #:kind kind))) (unless (null? settings) (format #t (_ "The following environment variable definitions may be needed:~%")) @@ -367,8 +314,7 @@ ENTRIES, a list of manifest entries, in the context of PROFILE." (define %default-options ;; Alist of default option values. - `((profile . ,%current-profile) - (max-silent-time . 3600) + `((max-silent-time . 3600) (verbosity . 0) (substitutes? . #t))) @@ -527,7 +473,7 @@ kind of search path~%") (option '(#\p "profile") #t #f (lambda (opt name arg result arg-handler) (values (alist-cons 'profile (canonicalize-profile arg) - (alist-delete 'profile result)) + result) #f))) (option '(#\n "dry-run") #f #f (lambda (opt name arg result arg-handler) @@ -564,86 +510,75 @@ kind of search path~%") %standard-build-options)) +(define (options->upgrade-predicate opts) + "Return a predicate based on the upgrade/do-not-upgrade regexps in OPTS +that, given a package name, returns true if the package is a candidate for +upgrading, #f otherwise." + (define upgrade-regexps + (filter-map (match-lambda + (('upgrade . regexp) + (make-regexp* (or regexp ""))) + (_ #f)) + opts)) + + (define do-not-upgrade-regexps + (filter-map (match-lambda + (('do-not-upgrade . regexp) + (make-regexp* regexp)) + (_ #f)) + opts)) + + (lambda (name) + (and (any (cut regexp-exec <> name) upgrade-regexps) + (not (any (cut regexp-exec <> name) do-not-upgrade-regexps))))) + +(define (store-item->manifest-entry item) + "Return a manifest entry for ITEM, a \"/gnu/store/...\" file name." + (let-values (((name version) + (package-name->name+version (store-path-package-name item)))) + (manifest-entry + (name name) + (version version) + (output #f) + (item item)))) + (define (options->installable opts manifest) "Given MANIFEST, the current manifest, and OPTS, the result of 'args-fold', return the new list of manifest entries." (define (package->manifest-entry* package output) (check-package-freshness package) - ;; When given a package via `-e', install the first of its - ;; outputs (XXX). (package->manifest-entry package output)) - (define upgrade-regexps - (filter-map (match-lambda - (('upgrade . regexp) - (make-regexp (or regexp ""))) - (_ #f)) - opts)) - - (define do-not-upgrade-regexps - (filter-map (match-lambda - (('do-not-upgrade . regexp) - (make-regexp regexp)) - (_ #f)) - opts)) - - (define packages-to-upgrade - (match upgrade-regexps - (() - '()) - ((_ ...) - (filter-map (match-lambda - (($ name version output path _) - (and (any (cut regexp-exec <> name) - upgrade-regexps) - (not (any (cut regexp-exec <> name) - do-not-upgrade-regexps)) - (upgradeable? name version path) - (let ((output (or output "out"))) - (call-with-values - (lambda () - (specification->package+output name output)) - list)))) - (_ #f)) - (manifest-entries manifest))))) + (define upgrade? + (options->upgrade-predicate opts)) (define to-upgrade - (map (match-lambda - ((package output) - (package->manifest-entry* package output))) - packages-to-upgrade)) - - (define packages-to-install (filter-map (match-lambda - (('install . (? package? p)) - (list p "out")) - (('install . (? string? spec)) - (and (not (store-path? spec)) - (let-values (((package output) - (specification->package+output spec))) - (and package (list package output))))) - (_ #f)) - opts)) + (($ name version output path _) + (and (upgrade? name) + (upgradeable? name version path) + (let ((output (or output "out"))) + (call-with-values + (lambda () + (specification->package+output name output)) + package->manifest-entry*)))) + (_ #f)) + (manifest-entries manifest))) (define to-install - (append (map (match-lambda - ((package output) - (package->manifest-entry* package output))) - packages-to-install) - (filter-map (match-lambda - (('install . (? package?)) - #f) - (('install . (? store-path? path)) - (let-values (((name version) - (package-name->name+version - (store-path-package-name path)))) - (manifest-entry - (name name) - (version version) - (output #f) - (item path)))) - (_ #f)) - opts))) + (filter-map (match-lambda + (('install . (? package? p)) + ;; When given a package via `-e', install the first of its + ;; outputs (XXX). + (package->manifest-entry* p "out")) + (('install . (? string? spec)) + (if (store-path? spec) + (store-item->manifest-entry spec) + (let-values (((package output) + (specification->package+output spec))) + (package->manifest-entry* package output)))) + (_ #f)) + opts)) (append to-upgrade to-install)) @@ -678,33 +613,200 @@ doesn't need it." (add-indirect-root store absolute)) -(define (readlink* file) - "Call 'readlink' until the result is not a symlink." - (define %max-symlink-depth 50) + +;;; +;;; Queries and actions. +;;; - (let loop ((file file) - (depth 0)) - (define (absolute target) - (if (absolute-file-name? target) - target - (string-append (dirname file) "/" target))) +(define (process-query opts) + "Process any query specified by OPTS. Return #t when a query was actually +processed, #f otherwise." + (let* ((profiles (match (filter-map (match-lambda + (('profile . p) p) + (_ #f)) + opts) + (() (list %current-profile)) + (lst lst))) + (profile (match profiles + ((head tail ...) head)))) + (match (assoc-ref opts 'query) + (('list-generations pattern) + (define (list-generation number) + (unless (zero? number) + (display-generation profile number) + (display-profile-content profile number) + (newline))) - (if (>= depth %max-symlink-depth) - file - (call-with-values - (lambda () - (catch 'system-error - (lambda () - (values #t (readlink file))) - (lambda args - (let ((errno (system-error-errno args))) - (if (or (= errno EINVAL)) - (values #f file) - (apply throw args)))))) - (lambda (success? target) - (if success? - (loop (absolute target) (+ depth 1)) - file)))))) + (cond ((not (file-exists? profile)) ; XXX: race condition + (raise (condition (&profile-not-found-error + (profile profile))))) + ((string-null? pattern) + (for-each list-generation (profile-generations profile))) + ((matching-generations pattern profile) + => + (lambda (numbers) + (if (null-list? numbers) + (exit 1) + (leave-on-EPIPE + (for-each list-generation numbers))))) + (else + (leave (_ "invalid syntax: ~a~%") + pattern))) + #t) + + (('list-installed regexp) + (let* ((regexp (and regexp (make-regexp* regexp))) + (manifest (profile-manifest profile)) + (installed (manifest-entries manifest))) + (leave-on-EPIPE + (for-each (match-lambda + (($ name version output path _) + (when (or (not regexp) + (regexp-exec regexp name)) + (format #t "~a\t~a\t~a\t~a~%" + name (or version "?") output path)))) + + ;; Show most recently installed packages last. + (reverse installed))) + #t)) + + (('list-available regexp) + (let* ((regexp (and regexp (make-regexp* regexp))) + (available (fold-packages + (lambda (p r) + (let ((n (package-name p))) + (if (supported-package? p) + (if regexp + (if (regexp-exec regexp n) + (cons p r) + r) + (cons p r)) + r))) + '()))) + (leave-on-EPIPE + (for-each (lambda (p) + (format #t "~a\t~a\t~a\t~a~%" + (package-name p) + (package-version p) + (string-join (package-outputs p) ",") + (location->string (package-location p)))) + (sort available + (lambda (p1 p2) + (stringrecutils <> (current-output-port)) + (find-packages-by-description regexp))) + #t)) + + (('show requested-name) + (let-values (((name version) + (package-name->name+version requested-name))) + (leave-on-EPIPE + (for-each (cute package->recutils <> (current-output-port)) + (find-packages-by-name name version))) + #t)) + + (('search-paths kind) + (let* ((manifests (map profile-manifest profiles)) + (entries (append-map manifest-entries manifests)) + (profiles (map user-friendly-profile profiles)) + (settings (search-path-environment-variables entries profiles + (const #f) + #:kind kind))) + (format #t "~{~a~%~}" settings) + #t)) + + (_ #f)))) + + +(define* (roll-back-action store profile arg opts + #:key dry-run?) + "Roll back PROFILE to its previous generation." + (unless dry-run? + (roll-back* store profile))) + +(define* (switch-generation-action store profile spec opts + #:key dry-run?) + "Switch PROFILE to the generation specified by SPEC." + (unless dry-run? + (let* ((number (string->number spec)) + (number (and number + (case (string-ref spec 0) + ((#\+ #\-) + (relative-generation profile number)) + (else number))))) + (if number + (switch-to-generation* profile number) + (leave (_ "cannot switch to generation '~a'~%") spec))))) + +(define* (delete-generations-action store profile pattern opts + #:key dry-run?) + "Delete PROFILE's generations that match PATTERN." + (unless dry-run? + (delete-matching-generations store profile pattern))) + +(define* (manifest-action store profile file opts + #:key dry-run?) + "Change PROFILE to contain the packages specified in FILE." + (let* ((user-module (make-user-module '((guix profiles) (gnu)))) + (manifest (load* file user-module)) + (bootstrap? (assoc-ref opts 'bootstrap?)) + (substitutes? (assoc-ref opts 'substitutes?))) + (if dry-run? + (format #t (_ "would install new manifest from '~a' with ~d entries~%") + file (length (manifest-entries manifest))) + (format #t (_ "installing new manifest from '~a' with ~d entries~%") + file (length (manifest-entries manifest)))) + (build-and-use-profile store profile manifest + #:bootstrap? bootstrap? + #:use-substitutes? substitutes? + #:dry-run? dry-run?))) + +(define %actions + ;; List of actions that may be processed. The car of each pair is the + ;; action's symbol in the option list; the cdr is the action's procedure. + `((roll-back? . ,roll-back-action) + (switch-generation . ,switch-generation-action) + (delete-generations . ,delete-generations-action) + (manifest . ,manifest-action))) + +(define (process-actions store opts) + "Process any install/remove/upgrade action from OPTS." + + (define dry-run? (assoc-ref opts 'dry-run?)) + (define bootstrap? (assoc-ref opts 'bootstrap?)) + (define substitutes? (assoc-ref opts 'substitutes?)) + (define profile (or (assoc-ref opts 'profile) %current-profile)) + + ;; First, process roll-backs, generation removals, etc. + (for-each (match-lambda + ((key . arg) + (and=> (assoc-ref %actions key) + (lambda (proc) + (proc store profile arg opts + #:dry-run? dry-run?))))) + opts) + + ;; Then, process normal package installation/removal/upgrade. + (let* ((manifest (profile-manifest profile)) + (install (options->installable opts manifest)) + (remove (options->removable opts manifest)) + (transaction (manifest-transaction (install install) + (remove remove))) + (new (manifest-perform-transaction manifest transaction))) + + (unless (and (null? install) (null? remove)) + (show-manifest-transaction store manifest transaction + #:dry-run? dry-run?) + (build-and-use-profile store profile new + #:bootstrap? bootstrap? + #:use-substitutes? substitutes? + #:dry-run? dry-run?)))) ;;; @@ -718,278 +820,6 @@ doesn't need it." (arg-handler arg result) (leave (_ "~A: extraneous argument~%") arg))) - (define (ensure-default-profile) - ;; Ensure the default profile symlink and directory exist and are - ;; writable. - - (define (rtfm) - (format (current-error-port) - (_ "Try \"info '(guix) Invoking guix package'\" for \ -more information.~%")) - (exit 1)) - - ;; Create ~/.guix-profile if it doesn't exist yet. - (when (and %user-profile-directory - %current-profile - (not (false-if-exception - (lstat %user-profile-directory)))) - (symlink %current-profile %user-profile-directory)) - - (let ((s (stat %profile-directory #f))) - ;; Attempt to create /…/profiles/per-user/$USER if needed. - (unless (and s (eq? 'directory (stat:type s))) - (catch 'system-error - (lambda () - (mkdir-p %profile-directory)) - (lambda args - ;; Often, we cannot create %PROFILE-DIRECTORY because its - ;; parent directory is root-owned and we're running - ;; unprivileged. - (format (current-error-port) - (_ "error: while creating directory `~a': ~a~%") - %profile-directory - (strerror (system-error-errno args))) - (format (current-error-port) - (_ "Please create the `~a' directory, with you as the owner.~%") - %profile-directory) - (rtfm)))) - - ;; Bail out if it's not owned by the user. - (unless (or (not s) (= (stat:uid s) (getuid))) - (format (current-error-port) - (_ "error: directory `~a' is not owned by you~%") - %profile-directory) - (format (current-error-port) - (_ "Please change the owner of `~a' to user ~s.~%") - %profile-directory (or (getenv "USER") - (getenv "LOGNAME") - (getuid))) - (rtfm)))) - - (define (process-actions opts) - ;; Process any install/remove/upgrade action from OPTS. - - (define dry-run? (assoc-ref opts 'dry-run?)) - (define profile (assoc-ref opts 'profile)) - - (define (build-and-use-profile manifest) - (let* ((bootstrap? (assoc-ref opts 'bootstrap?))) - - (when (equal? profile %current-profile) - (ensure-default-profile)) - - (let* ((prof-drv (run-with-store (%store) - (profile-derivation - manifest - #:hooks (if bootstrap? - '() - %default-profile-hooks)))) - (prof (derivation->output-path prof-drv))) - (show-what-to-build (%store) (list prof-drv) - #:use-substitutes? - (assoc-ref opts 'substitutes?) - #:dry-run? dry-run?) - - (cond - (dry-run? #t) - ((and (file-exists? profile) - (and=> (readlink* profile) (cut string=? prof <>))) - (format (current-error-port) (_ "nothing to be done~%"))) - (else - (let* ((number (generation-number profile)) - - ;; Always use NUMBER + 1 for the new profile, - ;; possibly overwriting a "previous future - ;; generation". - (name (generation-file-name profile - (+ 1 number)))) - (and (build-derivations (%store) (list prof-drv)) - (let* ((entries (manifest-entries manifest)) - (count (length entries))) - (switch-symlinks name prof) - (switch-symlinks profile name) - (unless (string=? profile %current-profile) - (register-gc-root (%store) name)) - (format #t (N_ "~a package in profile~%" - "~a packages in profile~%" - count) - count) - (display-search-paths entries profile))))))))) - - ;; First roll back if asked to. - (cond ((and (assoc-ref opts 'roll-back?) - (not dry-run?)) - (roll-back (%store) profile) - (process-actions (alist-delete 'roll-back? opts))) - ((and (assoc-ref opts 'switch-generation) - (not dry-run?)) - (for-each - (match-lambda - (('switch-generation . pattern) - (let* ((number (string->number pattern)) - (number (and number - (case (string-ref pattern 0) - ((#\+ #\-) - (relative-generation profile number)) - (else number))))) - (if number - (switch-to-generation profile number) - (leave (_ "cannot switch to generation '~a'~%") - pattern))) - (process-actions (alist-delete 'switch-generation opts))) - (_ #f)) - opts)) - ((and (assoc-ref opts 'delete-generations) - (not dry-run?)) - (for-each - (match-lambda - (('delete-generations . pattern) - (delete-matching-generations (%store) profile pattern) - - (process-actions - (alist-delete 'delete-generations opts))) - (_ #f)) - opts)) - ((assoc-ref opts 'manifest) - (let* ((file-name (assoc-ref opts 'manifest)) - (user-module (make-user-module '((guix profiles) - (gnu)))) - (manifest (load* file-name user-module))) - (if (assoc-ref opts 'dry-run?) - (format #t (_ "would install new manifest from '~a' with ~d entries~%") - file-name (length (manifest-entries manifest))) - (format #t (_ "installing new manifest from '~a' with ~d entries~%") - file-name (length (manifest-entries manifest)))) - (build-and-use-profile manifest))) - (else - (let* ((manifest (profile-manifest profile)) - (install (options->installable opts manifest)) - (remove (options->removable opts manifest)) - (transaction (manifest-transaction (install install) - (remove remove))) - (new (manifest-perform-transaction - manifest transaction))) - - (unless (and (null? install) (null? remove)) - (show-manifest-transaction (%store) manifest transaction - #:dry-run? dry-run?) - (build-and-use-profile new)))))) - - (define (process-query opts) - ;; Process any query specified by OPTS. Return #t when a query was - ;; actually processed, #f otherwise. - (let ((profile (assoc-ref opts 'profile))) - (match (assoc-ref opts 'query) - (('list-generations pattern) - (define (list-generation number) - (unless (zero? number) - (let ((header (format #f (_ "Generation ~a\t~a") number - (date->string - (time-utc->date - (generation-time profile number)) - "~b ~d ~Y ~T"))) - (current (generation-number profile))) - (if (= number current) - (format #t (_ "~a\t(current)~%") header) - (format #t "~a~%" header))) - (for-each (match-lambda - (($ name version output location _) - (format #t " ~a\t~a\t~a\t~a~%" - name version output location))) - - ;; Show most recently installed packages last. - (reverse - (manifest-entries - (profile-manifest - (generation-file-name profile number))))) - (newline))) - - (cond ((not (file-exists? profile)) ; XXX: race condition - (raise (condition (&profile-not-found-error - (profile profile))))) - ((string-null? pattern) - (for-each list-generation (profile-generations profile))) - ((matching-generations pattern profile) - => - (lambda (numbers) - (if (null-list? numbers) - (exit 1) - (leave-on-EPIPE - (for-each list-generation numbers))))) - (else - (leave (_ "invalid syntax: ~a~%") - pattern))) - #t) - - (('list-installed regexp) - (let* ((regexp (and regexp (make-regexp regexp))) - (manifest (profile-manifest profile)) - (installed (manifest-entries manifest))) - (leave-on-EPIPE - (for-each (match-lambda - (($ name version output path _) - (when (or (not regexp) - (regexp-exec regexp name)) - (format #t "~a\t~a\t~a\t~a~%" - name (or version "?") output path)))) - - ;; Show most recently installed packages last. - (reverse installed))) - #t)) - - (('list-available regexp) - (let* ((regexp (and regexp (make-regexp regexp))) - (available (fold-packages - (lambda (p r) - (let ((n (package-name p))) - (if (supported-package? p) - (if regexp - (if (regexp-exec regexp n) - (cons p r) - r) - (cons p r)) - r))) - '()))) - (leave-on-EPIPE - (for-each (lambda (p) - (format #t "~a\t~a\t~a\t~a~%" - (package-name p) - (package-version p) - (string-join (package-outputs p) ",") - (location->string (package-location p)))) - (sort available - (lambda (p1 p2) - (stringrecutils <> (current-output-port)) - (find-packages-by-description regexp))) - #t)) - - (('show requested-name) - (let-values (((name version) - (package-name->name+version requested-name))) - (leave-on-EPIPE - (for-each (cute package->recutils <> (current-output-port)) - (find-packages-by-name name version))) - #t)) - - (('search-paths kind) - (let* ((manifest (profile-manifest profile)) - (entries (manifest-entries manifest)) - (profile (user-friendly-profile profile)) - (settings (search-path-environment-variables entries profile - (const #f) - #:kind kind))) - (format #t "~{~a~%~}" settings) - #t)) - - (_ #f)))) - (let ((opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument))) (with-error-handling @@ -1003,4 +833,4 @@ more information.~%")) (if (assoc-ref opts 'bootstrap?) %bootstrap-guile (canonical-package guile-2.0))))) - (process-actions opts))))))) + (process-actions (%store) opts))))))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 56ee9acb18..a4824e4fd7 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -18,6 +18,7 @@ (define-module (guix scripts pull) #:use-module (guix ui) + #:use-module (guix utils) #:use-module (guix scripts) #:use-module (guix store) #:use-module (guix config) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 6f7ca4a41b..a5834d12cc 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2015 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +27,11 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix upstream) - #:use-module ((guix gnu-maintenance) #:select (%gnu-updater)) + #:use-module (guix graph) + #:use-module (guix scripts graph) + #:use-module (guix monads) + #:use-module ((guix gnu-maintenance) + #:select (%gnu-updater %gnome-updater)) #:use-module (guix import elpa) #:use-module (guix import cran) #:use-module (guix gnupg) @@ -41,7 +46,8 @@ #:use-module (srfi srfi-26) #:use-module (srfi srfi-37) #:use-module (rnrs io ports) - #:export (guix-refresh)) + #:export (guix-refresh + %updaters)) ;;; @@ -68,7 +74,16 @@ arg))))) (option '(#\t "type") #t #f (lambda (opt name arg result) - (alist-cons 'updater (string->symbol arg) result))) + (let* ((not-comma (char-set-complement (char-set #\,))) + (names (map string->symbol + (string-tokenize arg not-comma)))) + (alist-cons 'updaters names result)))) + (option '(#\L "list-updaters") #f #f + (lambda args + (list-updaters-and-exit))) + (option '(#\e "expression") #t #f + (lambda (opt name arg result) + (alist-cons 'expression arg result))) (option '(#\l "list-dependent") #f #f (lambda (opt name arg result) (alist-cons 'list-dependent? #t result))) @@ -104,13 +119,18 @@ Update package definitions to match the latest upstream version. When PACKAGE... is given, update only the specified packages. Otherwise update all the packages of the distribution, or the subset thereof specified with `--select'.\n")) + (display (_ " + -e, --expression=EXPR consider the package EXPR evaluates to")) (display (_ " -u, --update update source files in place")) (display (_ " -s, --select=SUBSET select all the packages in SUBSET, one of `core' or `non-core'")) (display (_ " - -t, --type=UPDATER restrict to updates from UPDATER--e.g., 'gnu'")) + -t, --type=UPDATER,... restrict to updates from the specified updaters + (e.g., 'gnu')")) + (display (_ " + -L, --list-updaters list available updaters and exit")) (display (_ " -l, --list-dependent list top-level dependent packages that would need to be rebuilt as a result of upgrading PACKAGE...")) @@ -137,17 +157,62 @@ specified with `--select'.\n")) ;;; Updates. ;;; +(define-syntax maybe-updater + ;; Helper macro for 'list-updaters'. + (syntax-rules (=>) + ((_ ((module => updater) rest ...) result) + (maybe-updater (rest ...) + (let ((iface (false-if-exception + (resolve-interface 'module))) + (tail result)) + (if iface + (cons (module-ref iface 'updater) tail) + tail)))) + ((_ (updater rest ...) result) + (maybe-updater (rest ...) + (cons updater result))) + ((_ () result) + (reverse result)))) + +(define-syntax-rule (list-updaters updaters ...) + "Expand to '(list UPDATERS ...)' but only the subset of UPDATERS that are +either unconditional, or have their requirement met. + +A conditional updater has this form: + + ((SOME MODULE) => UPDATER) + +meaning that UPDATER is added to the list if and only if (SOME MODULE) could +be resolved at run time. + +This is a way to discard at macro expansion time updaters that depend on +unavailable optional dependencies such as Guile-JSON." + (maybe-updater (updaters ...) '())) + (define %updaters ;; List of "updaters" used by default. They are consulted in this order. - (list %gnu-updater - %elpa-updater - %cran-updater)) + (list-updaters %gnu-updater + %gnome-updater + %elpa-updater + %cran-updater + ((guix import pypi) => %pypi-updater))) (define (lookup-updater name) "Return the updater called NAME." - (find (lambda (updater) - (eq? name (upstream-updater-name updater))) - %updaters)) + (or (find (lambda (updater) + (eq? name (upstream-updater-name updater))) + %updaters) + (leave (_ "~a: no such updater~%") name))) + +(define (list-updaters-and-exit) + "Display available updaters and exit." + (format #t (_ "Available updaters:~%")) + (for-each (lambda (updater) + (format #t "- ~a: ~a~%" + (upstream-updater-name updater) + (_ (upstream-updater-description updater)))) + %updaters) + (exit 0)) (define* (update-package store package updaters #:key (key-download 'interactive)) @@ -175,6 +240,50 @@ values: 'interactive' (default), 'always', and 'never'." downloaded and authenticated; not updating~%") (package-name package) version))))) + +;;; +;;; Dependents. +;;; + +(define (all-packages) + "Return the list of all the distro's packages." + (fold-packages cons '())) + +(define (list-dependents packages) + "List all the things that would need to be rebuilt if PACKAGES are changed." + (with-store store + (run-with-store store + ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE + ;; because it includes implicit dependencies. + (mlet %store-monad ((edges (node-back-edges %bag-node-type + (all-packages)))) + (let* ((dependents (node-transitive-edges packages edges)) + (covering (filter (lambda (node) + (null? (edges node))) + dependents))) + (match dependents + (() + (format (current-output-port) + (N_ "No dependents other than itself: ~{~a~}~%" + "No dependents other than themselves: ~{~a~^ ~}~%" + (length packages)) + (map package-full-name packages))) + + ((x) + (format (current-output-port) + (_ "A single dependent package: ~a~%") + (package-full-name x))) + (lst + (format (current-output-port) + (N_ "Building the following package would ensure ~d \ +dependent packages are rebuilt: ~*~{~a~^ ~}~%" + "Building the following ~d packages would ensure ~d \ +dependent packages are rebuilt: ~{~a~^ ~}~%" + (length covering)) + (length covering) (length dependents) + (map package-full-name covering)))) + (return #t)))))) + ;;; ;;; Entry point. @@ -193,15 +302,15 @@ downloaded and authenticated; not updating~%") (define (options->updaters opts) ;; Return the list of updaters to use. (match (filter-map (match-lambda - (('updater . name) - (lookup-updater name)) + (('updaters . names) + (map lookup-updater names)) (_ #f)) opts) (() ;; Use the default updaters. %updaters) - (lst - lst))) + (lists + (concatenate lists)))) (define (keep-newest package lst) ;; If a newer version of PACKAGE is already in LST, return LST; otherwise @@ -248,6 +357,8 @@ update would trigger a complete rebuild." ;; Take either the specified version or the ;; latest one. (specification->package spec)) + (('expression . exp) + (read/eval-package-expression exp)) (_ #f)) opts) (() ; default to all packages @@ -265,25 +376,7 @@ update would trigger a complete rebuild." (with-error-handling (cond (list-dependent? - (let* ((rebuilds (map package-full-name - (package-covering-dependents packages))) - (total-dependents - (length (package-transitive-dependents packages)))) - (if (= total-dependents 0) - (format (current-output-port) - (N_ "No dependents other than itself: ~{~a~}~%" - "No dependents other than themselves: ~{~a~^ ~}~%" - (length packages)) - (map package-full-name packages)) - (format (current-output-port) - (N_ (N_ "A single dependent package: ~2*~{~a~}~%" - "Building the following package would ensure ~d \ -dependent packages are rebuilt; ~*~{~a~^ ~}~%" - total-dependents) - "Building the following ~d packages would ensure ~d \ -dependent packages are rebuilt: ~{~a~^ ~}~%" - (length rebuilds)) - (length rebuilds) total-dependents rebuilds)))) + (list-dependents packages)) (update? (let ((store (open-connection))) (parameterize ((%openpgp-key-server diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm index 44ff92655b..e999cce1fd 100644 --- a/guix/scripts/size.scm +++ b/guix/scripts/size.scm @@ -252,8 +252,7 @@ Report the size of PACKAGE and its dependencies.\n")) (show-version-and-exit "guix size"))))) (define %default-options - `((system . ,(%current-system)) - (substitute-urls . ,%default-substitute-urls))) + `((system . ,(%current-system)))) ;;; diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 8967fa062e..01cc3f129e 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -72,6 +72,7 @@ assert-valid-narinfo lookup-narinfos + lookup-narinfos/diverse read-narinfo write-narinfo guix-substitute)) @@ -474,12 +475,13 @@ may be #f, in which case it indicates that PATH is unavailable at CACHE-URL." ".narinfo"))) (build-request (string->uri url) #:method 'GET))) -(define (http-multiple-get base-url requests proc) +(define (http-multiple-get base-url proc seed requests) "Send all of REQUESTS to the server at BASE-URL. Call PROC for each -response, passing it the request object, the response, and a port from which -to read the response body. Return the list of results." +response, passing it the request object, the response, a port from which to +read the response body, and the previous result, starting with SEED, à la +'fold'. Return the final result." (let connect ((requests requests) - (result '())) + (result seed)) ;; (format (current-error-port) "connecting (~a requests left)..." ;; (length requests)) (let ((p (open-socket-for-uri base-url))) @@ -497,7 +499,7 @@ to read the response body. Return the list of results." ((head tail ...) (let* ((resp (read-response p)) (body (response-body-port resp)) - (result (cons (proc head resp body) result))) + (result (proc head resp body result))) ;; The server can choose to stop responding at any time, in which ;; case we have to try again. Check whether that is the case. ;; Note that even upon "Connection: close", we can read from BODY. @@ -536,7 +538,7 @@ if file doesn't exist, and the narinfo otherwise." url (* 100. (/ done (length paths)))) (set! done (+ 1 done))))) - (define (handle-narinfo-response request response port) + (define (handle-narinfo-response request response port result) (let ((len (response-content-length response))) ;; Make sure to read no more than LEN bytes since subsequent bytes may ;; belong to the next response. @@ -545,7 +547,7 @@ if file doesn't exist, and the narinfo otherwise." (let ((narinfo (read-narinfo port url #:size len))) (cache-narinfo! url (narinfo-path narinfo) narinfo) (update-progress!) - narinfo)) + (cons narinfo result))) ((404) ; failure (let* ((path (uri-path (request-uri request))) (hash-part (string-drop-right path 8))) ; drop ".narinfo" @@ -555,38 +557,45 @@ if file doesn't exist, and the narinfo otherwise." (cache-narinfo! url (find (cut string-contains <> hash-part) paths) #f) - (update-progress!)) - #f) + (update-progress!) + result)) (else ; transient failure (if len (get-bytevector-n port len) (read-to-eof port)) - #f)))) + result)))) + + (define (do-fetch uri) + (case (and=> uri uri-scheme) + ((http) + (let ((requests (map (cut narinfo-request url <>) paths))) + (update-progress!) + (let ((result (http-multiple-get url + handle-narinfo-response '() + requests))) + (newline (current-error-port)) + result))) + ((file #f) + (let* ((base (string-append (uri-path uri) "/")) + (files (map (compose (cut string-append base <> ".narinfo") + store-path-hash-part) + paths))) + (filter-map (cut narinfo-from-file <> url) files))) + (else + (leave (_ "~s: unsupported server URI scheme~%") + (if uri (uri-scheme uri) url))))) (define cache-info (download-cache-info url)) (and cache-info - (string=? (cache-info-store-directory cache-info) - (%store-prefix)) - (let ((uri (string->uri url))) - (case (and=> uri uri-scheme) - ((http) - (let ((requests (map (cut narinfo-request url <>) paths))) - (update-progress!) - (let ((result (http-multiple-get url requests - handle-narinfo-response))) - (newline (current-error-port)) - result))) - ((file #f) - (let* ((base (string-append (uri-path uri) "/")) - (files (map (compose (cut string-append base <> ".narinfo") - store-path-hash-part) - paths))) - (filter-map (cut narinfo-from-file <> url) files))) - (else - (leave (_ "~s: unsupported server URI scheme~%") - (if uri (uri-scheme uri) url))))))) + (if (string=? (cache-info-store-directory cache-info) + (%store-prefix)) + (do-fetch (string->uri url)) + (begin + (warning (_ "'~a' uses different store '~a'; ignoring it~%") + url (cache-info-store-directory cache-info)) + #f)))) (define (lookup-narinfos cache paths) "Return the narinfos for PATHS, invoking the server at CACHE when no @@ -596,7 +605,9 @@ information is available locally." (let-values (((valid? value) (cached-narinfo cache path))) (if valid? - (values (cons value cached) missing) + (if value + (values (cons value cached) missing) + (values cached missing)) (values cached (cons path missing))))) '() '() @@ -606,11 +617,32 @@ information is available locally." (let ((missing (fetch-narinfos cache missing))) (append cached (or missing '())))))) -(define (lookup-narinfo cache path) - "Return the narinfo for PATH in CACHE, or #f when no substitute for PATH was -found." - (match (lookup-narinfos cache (list path)) - ((answer) answer))) +(define (lookup-narinfos/diverse caches paths) + "Look up narinfos for PATHS on all of CACHES, a list of URLS, in that order. +That is, when a cache lacks a narinfo, look it up in the next cache, and so +on. Return a list of narinfos for PATHS or a subset thereof." + (let loop ((caches caches) + (paths paths) + (result '())) + (match paths + (() ;we're done + result) + (_ + (match caches + ((cache rest ...) + (let* ((narinfos (lookup-narinfos cache paths)) + (hits (map narinfo-path narinfos)) + (missing (lset-difference string=? paths hits))) ;XXX: perf + (loop rest missing (append narinfos result)))) + (() ;that's it + result)))))) + +(define (lookup-narinfo caches path) + "Return the narinfo for PATH in CACHES, or #f when no substitute for PATH +was found." + (match (lookup-narinfos/diverse caches (list path)) + ((answer) answer) + (_ #f))) (define (remove-expired-cached-narinfos directory) "Remove expired narinfo entries from DIRECTORY. The sole purpose of this @@ -752,34 +784,34 @@ expected by the daemon." (or (narinfo-size narinfo) 0))) (define* (process-query command - #:key cache-url acl) + #:key cache-urls acl) "Reply to COMMAND, a query as written by the daemon to this process's standard input. Use ACL as the access-control list against which to check authorized substitutes." (define (valid? obj) - (and (narinfo? obj) (valid-narinfo? obj acl))) + (valid-narinfo? obj acl)) (match (string-tokenize command) (("have" paths ..1) - ;; Return the subset of PATHS available in CACHE-URL. - (let ((substitutable (lookup-narinfos cache-url paths))) + ;; Return the subset of PATHS available in CACHE-URLS. + (let ((substitutable (lookup-narinfos/diverse cache-urls paths))) (for-each (lambda (narinfo) (format #t "~a~%" (narinfo-path narinfo))) (filter valid? substitutable)) (newline))) (("info" paths ..1) - ;; Reply info about PATHS if it's in CACHE-URL. - (let ((substitutable (lookup-narinfos cache-url paths))) + ;; Reply info about PATHS if it's in CACHE-URLS. + (let ((substitutable (lookup-narinfos/diverse cache-urls paths))) (for-each display-narinfo-data (filter valid? substitutable)) (newline))) (wtf (error "unknown `--query' command" wtf)))) (define* (process-substitution store-item destination - #:key cache-url acl) - "Substitute STORE-ITEM (a store file name) from CACHE-URL, and write it to + #:key cache-urls acl) + "Substitute STORE-ITEM (a store file name) from CACHE-URLS, and write it to DESTINATION as a nar file. Verify the substitute against ACL." - (let* ((narinfo (lookup-narinfo cache-url store-item)) + (let* ((narinfo (lookup-narinfo cache-urls store-item)) (uri (narinfo-uri narinfo))) ;; Make sure it is signed and everything. (assert-valid-narinfo narinfo acl) @@ -876,21 +908,16 @@ found." b first))) -(define %cache-url +(define %cache-urls (match (and=> (or* (find-daemon-option "untrusted-substitute-urls") ;client (find-daemon-option "substitute-urls")) ;admin string-tokenize) - ((url) - url) - ((head tail ..1) - ;; Currently we don't handle multiple substitute URLs. - (warning (_ "these substitute URLs will not be used:~{ ~a~}~%") - tail) - head) + ((urls ...) + urls) (#f ;; This can only happen when this script is not invoked by the ;; daemon. - "http://hydra.gnu.org"))) + '("http://hydra.gnu.org")))) (define (guix-substitute . args) "Implement the build daemon's substituter protocol." @@ -901,20 +928,8 @@ found." ;; Starting from commit 22144afa in Nix, we are allowed to bail out directly ;; when we know we cannot substitute, but we must emit a newline on stdout ;; when everything is alright. - (let ((uri (string->uri %cache-url))) - (case (uri-scheme uri) - ((http) - ;; Exit gracefully if there's no network access. - (let ((host (uri-host uri))) - (catch 'getaddrinfo-error - (lambda () - (getaddrinfo host)) - (lambda (key error) - (warning (_ "failed to look up host '~a' (~a), \ -substituter disabled~%") - host (gai-strerror error)) - (exit 0))))) - (else #t))) + (when (null? %cache-urls) + (exit 0)) ;; Say hello (see above.) (newline) @@ -929,13 +944,13 @@ substituter disabled~%") (or (eof-object? command) (begin (process-query command - #:cache-url %cache-url + #:cache-urls %cache-urls #:acl acl) (loop (read-line))))))) (("--substitute" store-path destination) ;; Download STORE-PATH and add store it as a Nar in file DESTINATION. (process-substitution store-path destination - #:cache-url %cache-url + #:cache-urls %cache-urls #:acl (current-acl))) (("--version") (show-version-and-exit "guix substitute")) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index b5da57a9ce..1407dc73fa 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -25,14 +25,17 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix monads) + #:use-module (guix records) #:use-module (guix profiles) #:use-module (guix scripts) #:use-module (guix scripts build) + #:use-module (guix graph) #:use-module (guix scripts graph) #:use-module (guix build utils) #:use-module (gnu build install) #:use-module (gnu system) #:use-module (gnu system file-systems) + #:use-module (gnu system linux-container) #:use-module (gnu system vm) #:use-module (gnu system grub) #:use-module (gnu services) @@ -41,6 +44,8 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:export (guix-system @@ -184,6 +189,39 @@ the ownership of '~a' may be incorrect!~%") (mwhen grub? (install-grub* grub.cfg device target))))) + +;;; +;;; Boot parameters +;;; + +(define-record-type* + boot-parameters make-boot-parameters boot-parameters? + (label boot-parameters-label) + (root-device boot-parameters-root-device) + (kernel boot-parameters-kernel) + (kernel-arguments boot-parameters-kernel-arguments)) + +(define (read-boot-parameters port) + "Read boot parameters from PORT and return the corresponding + object or #f if the format is unrecognized." + (match (read port) + (('boot-parameters ('version 0) + ('label label) ('root-device root) + ('kernel linux) + rest ...) + (boot-parameters + (label label) + (root-device root) + (kernel linux) + (kernel-arguments + (match (assq 'kernel-arguments rest) + ((_ args) args) + (#f '()))))) ;the old format + (x ;unsupported format + (warning (_ "unrecognized boot parameters for '~a'~%") + system) + #f))) + ;;; ;;; Reconfiguration. @@ -247,30 +285,22 @@ it atomically, and then run OS's activation script." "Return a list of 'menu-entry' for the generations of PROFILE." (define (system->grub-entry system number time) (unless-file-not-found - (call-with-input-file (string-append system "/parameters") - (lambda (port) - (match (read port) - (('boot-parameters ('version 0) - ('label label) ('root-device root) - ('kernel linux) - rest ...) - (menu-entry - (label (string-append label " (#" - (number->string number) ", " - (seconds->string time) ")")) - (linux linux) - (linux-arguments - (cons* (string-append "--root=" root) - #~(string-append "--system=" #$system) - #~(string-append "--load=" #$system "/boot") - (match (assq 'kernel-arguments rest) - ((_ args) args) - (#f '())))) ;old format - (initrd #~(string-append #$system "/initrd")))) - (_ ;unsupported format - (warning (_ "unrecognized boot parameters for '~a'~%") - system) - #f)))))) + (let ((file (string-append system "/parameters"))) + (match (call-with-input-file file read-boot-parameters) + (($ label root kernel kernel-arguments) + (menu-entry + (label (string-append label " (#" + (number->string number) ", " + (seconds->string time) ")")) + (linux kernel) + (linux-arguments + (cons* (string-append "--root=" root) + #~(string-append "--system=" #$system) + #~(string-append "--load=" #$system "/boot") + kernel-arguments)) + (initrd #~(string-append #$system "/initrd")))) + (#f ;invalid format + #f))))) (let* ((numbers (generation-numbers profile)) (systems (map (cut generation-file-name profile <>) @@ -325,6 +355,48 @@ list of services." (label dmd-service-node-label) (edges (lift1 (dmd-service-back-edges services) %store-monad)))) + +;;; +;;; Generations. +;;; + +(define* (display-system-generation number + #:optional (profile %system-profile)) + "Display a summary of system generation NUMBER in a human-readable format." + (unless (zero? number) + (let* ((generation (generation-file-name profile number)) + (param-file (string-append generation "/parameters")) + (params (call-with-input-file param-file read-boot-parameters))) + (display-generation profile number) + (format #t (_ " file name: ~a~%") generation) + (format #t (_ " canonical file name: ~a~%") (readlink* generation)) + (match params + (($ label root kernel) + ;; TRANSLATORS: Please preserve the two-space indentation. + (format #t (_ " label: ~a~%") label) + (format #t (_ " root device: ~a~%") root) + (format #t (_ " kernel: ~a~%") kernel)) + (_ + #f))))) + +(define* (list-generations pattern #:optional (profile %system-profile)) + "Display in a human-readable format all the system generations matching +PATTERN, a string. When PATTERN is #f, display all the system generations." + (cond ((not (file-exists? profile)) ; XXX: race condition + (raise (condition (&profile-not-found-error + (profile profile))))) + ((string-null? pattern) + (for-each display-system-generation (profile-generations profile))) + ((matching-generations pattern profile) + => + (lambda (numbers) + (if (null-list? numbers) + (exit 1) + (leave-on-EPIPE + (for-each display-system-generation numbers))))) + (else + (leave (_ "invalid syntax: ~a~%") pattern)))) + ;;; ;;; Action. @@ -336,6 +408,8 @@ list of services." (case action ((build init reconfigure) (operating-system-derivation os)) + ((container) + (container-script os #:mappings mappings)) ((vm-image) (system-qemu-image os #:disk-image-size image-size)) ((vm) @@ -368,12 +442,20 @@ building anything." #:full-boot? full-boot? #:mappings mappings)) (grub (package->derivation grub)) - (grub.cfg (operating-system-grub.cfg os - (if (eq? 'init action) - '() - (previous-grub-entries)))) - (drvs -> (if (and grub? (memq action '(init reconfigure))) - (list sys grub grub.cfg) + (grub.cfg (if (eq? 'container action) + (return #f) + (operating-system-grub.cfg os + (if (eq? 'init action) + '() + (previous-grub-entries))))) + + ;; For 'init' and 'reconfigure', always build GRUB.CFG, even if + ;; --no-grub is passed, because GRUB.CFG because we then use it as a GC + ;; root. See . + (drvs -> (if (memq action '(init reconfigure)) + (if grub? + (list sys grub.cfg grub) + (list sys grub.cfg)) (list sys))) (% (if derivations-only? (return (for-each (compose println derivation-file-name) @@ -416,10 +498,10 @@ building anything." (define (export-extension-graph os port) "Export the service extension graph of OS to PORT." (let* ((services (operating-system-services os)) - (boot (find (lambda (service) - (eq? (service-kind service) boot-service-type)) + (system (find (lambda (service) + (eq? (service-kind service) system-service-type)) services))) - (export-graph (list boot) (current-output-port) + (export-graph (list system) (current-output-port) #:node-type (service-node-type services) #:reverse-edges? #t))) @@ -442,15 +524,19 @@ building anything." ;;; (define (show-help) - (display (_ "Usage: guix system [OPTION] ACTION FILE + (display (_ "Usage: guix system [OPTION] ACTION [FILE] Build the operating system declared in FILE according to ACTION.\n")) (newline) (display (_ "The valid values for ACTION are:\n")) (newline) (display (_ "\ reconfigure switch to a new operating system configuration\n")) + (display (_ "\ + list-generations list the system generations\n")) (display (_ "\ build build the operating system without installing anything\n")) + (display (_ "\ + container build a container that shares the host's store\n")) (display (_ "\ vm build a virtual machine image that shares the host's store\n")) (display (_ "\ @@ -488,19 +574,6 @@ Build the operating system declared in FILE according to ACTION.\n")) (newline) (show-bug-report-information)) -(define (specification->file-system-mapping spec writable?) - "Read the SPEC and return the corresponding ." - (let ((index (string-index spec #\=))) - (if index - (file-system-mapping - (source (substring spec 0 index)) - (target (substring spec (+ 1 index))) - (writable? writable?)) - (file-system-mapping - (source spec) - (target spec) - (writable? writable?))))) - (define %options ;; Specifications of the command-line options. (cons* (option '(#\h "help") #f #f @@ -563,74 +636,30 @@ Build the operating system declared in FILE according to ACTION.\n")) ;;; Entry point. ;;; -(define (guix-system . args) - (define (parse-sub-command arg result) - ;; Parse sub-command ARG and augment RESULT accordingly. - (if (assoc-ref result 'action) - (alist-cons 'argument arg result) - (let ((action (string->symbol arg))) - (case action - ((build vm vm-image disk-image reconfigure init - extension-graph dmd-graph) - (alist-cons 'action action result)) - (else (leave (_ "~a: unknown action~%") action)))))) +(define (process-action action args opts) + "Process ACTION, a sub-command, with the arguments are listed in ARGS. +ACTION must be one of the sub-commands that takes an operating system +declaration as an argument (a file name.) OPTS is the raw alist of options +resulting from command-line parsing." + (let* ((file (match args + (() #f) + ((x . _) x))) + (system (assoc-ref opts 'system)) + (os (if file + (load* file %user-module + #:on-error (assoc-ref opts 'on-error)) + (leave (_ "no configuration file specified~%")))) - (define (match-pair car) - ;; Return a procedure that matches a pair with CAR. - (match-lambda - ((head . tail) - (and (eq? car head) tail)) - (_ #f))) + (dry? (assoc-ref opts 'dry-run?)) + (grub? (assoc-ref opts 'install-grub?)) + (target (match args + ((first second) second) + (_ #f))) + (device (and grub? + (grub-configuration-device + (operating-system-bootloader os))))) - (define (option-arguments opts) - ;; Extract the plain arguments from OPTS. - (let* ((args (reverse (filter-map (match-pair 'argument) opts))) - (count (length args)) - (action (assoc-ref opts 'action))) - (define (fail) - (leave (_ "wrong number of arguments for action '~a'~%") - action)) - - (unless action - (format (current-error-port) - (_ "guix system: missing command name~%")) - (format (current-error-port) - (_ "Try 'guix system --help' for more information.~%")) - (exit 1)) - - (case action - ((build vm vm-image disk-image reconfigure) - (unless (= count 1) - (fail))) - ((init) - (unless (= count 2) - (fail)))) - args)) - - (with-error-handling - (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler - parse-sub-command)) - (args (option-arguments opts)) - (file (first args)) - (action (assoc-ref opts 'action)) - (system (assoc-ref opts 'system)) - (os (if file - (load* file %user-module - #:on-error (assoc-ref opts 'on-error)) - (leave (_ "no configuration file specified~%")))) - - (dry? (assoc-ref opts 'dry-run?)) - (grub? (assoc-ref opts 'install-grub?)) - (target (match args - ((first second) second) - (_ #f))) - (device (and grub? - (grub-configuration-device - (operating-system-bootloader os)))) - - (store (open-connection))) + (with-store store (set-build-options-from-command-line store opts) (run-with-store store @@ -658,4 +687,71 @@ Build the operating system declared in FILE according to ACTION.\n")) #:target target #:device device)))) #:system system)))) +(define (process-command command args opts) + "Process COMMAND, one of the 'guix system' sub-commands. ARGS is its +argument list and OPTS is the option alist." + (case command + ((list-generations) + ;; List generations. No need to connect to the daemon, etc. + (let ((pattern (match args + (() "") + ((pattern) pattern) + (x (leave (_ "wrong number of arguments~%")))))) + (list-generations pattern))) + (else + (process-action command args opts)))) + +(define (guix-system . args) + (define (parse-sub-command arg result) + ;; Parse sub-command ARG and augment RESULT accordingly. + (if (assoc-ref result 'action) + (alist-cons 'argument arg result) + (let ((action (string->symbol arg))) + (case action + ((build container vm vm-image disk-image reconfigure init + extension-graph dmd-graph list-generations) + (alist-cons 'action action result)) + (else (leave (_ "~a: unknown action~%") action)))))) + + (define (match-pair car) + ;; Return a procedure that matches a pair with CAR. + (match-lambda + ((head . tail) + (and (eq? car head) tail)) + (_ #f))) + + (define (option-arguments opts) + ;; Extract the plain arguments from OPTS. + (let* ((args (reverse (filter-map (match-pair 'argument) opts))) + (count (length args)) + (action (assoc-ref opts 'action))) + (define (fail) + (leave (_ "wrong number of arguments for action '~a'~%") + action)) + + (unless action + (format (current-error-port) + (_ "guix system: missing command name~%")) + (format (current-error-port) + (_ "Try 'guix system --help' for more information.~%")) + (exit 1)) + + (case action + ((build container vm vm-image disk-image reconfigure) + (unless (= count 1) + (fail))) + ((init) + (unless (= count 2) + (fail)))) + args)) + + (with-error-handling + (let* ((opts (parse-command-line args %options + (list %default-options) + #:argument-handler + parse-sub-command)) + (args (option-arguments opts)) + (command (assoc-ref opts 'action))) + (process-command command args opts)))) + ;;; system.scm ends here diff --git a/guix/store.scm b/guix/store.scm index c4e3573711..3c4d1c0058 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -53,6 +53,7 @@ nix-protocol-error-status hash-algo + build-mode open-connection close-connection @@ -129,7 +130,7 @@ direct-store-path log-file)) -(define %protocol-version #x10c) +(define %protocol-version #x10f) (define %worker-magic-1 #x6e697863) ; "nixc" (define %worker-magic-2 #x6478696f) ; "dxio" @@ -188,6 +189,12 @@ (sha1 2) (sha256 3)) +(define-enumerate-type build-mode + ;; store-api.hh + (normal 0) + (repair 1) + (check 2)) + (define-enumerate-type gc-action ;; store-api.hh (return-live 0) @@ -328,11 +335,13 @@ (status nix-protocol-error-status)) (define* (open-connection #:optional (file (%daemon-socket-file)) - #:key (reserve-space? #t)) + #:key (reserve-space? #t) cpu-affinity) "Connect to the daemon over the Unix-domain socket at FILE. When -RESERVE-SPACE? is true, instruct it to reserve a little bit of extra -space on the file system so that the garbage collector can still -operate, should the disk become full. Return a server object." +RESERVE-SPACE? is true, instruct it to reserve a little bit of extra space on +the file system so that the garbage collector can still operate, should the +disk become full. When CPU-AFFINITY is true, it must be an integer +corresponding to an OS-level CPU number to which the daemon's worker process +for this connection will be pinned. Return a server object." (let ((s (with-fluids ((%default-port-encoding #f)) ;; This trick allows use of the `scm_c_read' optimization. (socket PF_UNIX SOCK_STREAM 0))) @@ -355,8 +364,12 @@ operate, should the disk become full. Return a server object." (protocol-major v)) (begin (write-int %protocol-version s) - (if (>= (protocol-minor v) 11) - (write-int (if reserve-space? 1 0) s)) + (when (>= (protocol-minor v) 14) + (write-int (if cpu-affinity 1 0) s) + (when cpu-affinity + (write-int cpu-affinity s))) + (when (>= (protocol-minor v) 11) + (write-int (if reserve-space? 1 0) s)) (let ((s (%make-nix-server s (protocol-major v) (protocol-minor v) @@ -491,6 +504,7 @@ encoding conversion errors." (define* (set-build-options server #:key keep-failed? keep-going? fallback? (verbosity 0) + rounds ;number of build rounds (max-build-jobs 1) timeout (max-silent-time 3600) @@ -501,11 +515,11 @@ encoding conversion errors." (build-cores (current-processor-count)) (use-substitutes? #t) - ;; Client-provided substitute URLs. For - ;; unprivileged clients, these are considered - ;; "untrusted"; for "trusted" users, they override - ;; the daemon's settings. - (substitute-urls %default-substitute-urls)) + ;; Client-provided substitute URLs. If it is #f, + ;; the daemon's settings are used. Otherwise, it + ;; overrides the daemons settings; see 'guix + ;; substitute'. + (substitute-urls #f)) ;; Must be called after `open-connection'. (define socket @@ -533,7 +547,14 @@ encoding conversion errors." (let ((pairs `(,@(if timeout `(("build-timeout" . ,(number->string timeout))) '()) - ("substitute-urls" . ,(string-join substitute-urls))))) + ,@(if substitute-urls + `(("substitute-urls" + . ,(string-join substitute-urls))) + '()) + ,@(if rounds + `(("build-repeat" + . ,(number->string (max 0 (1- rounds))))) + '())))) (send (string-pairs pairs)))) (let loop ((done? (process-stderr server))) (or done? (process-stderr server))))) @@ -628,12 +649,26 @@ bits are kept. HASH-ALGO must be a string such as \"sha256\"." (hash-set! cache args path) path)))))) -(define-operation (build-things (string-list things)) - "Build THINGS, a list of store items which may be either '.drv' files or +(define build-things + (let ((build (operation (build-things (string-list things) + (integer mode)) + "Do it!" + boolean)) + (build/old (operation (build-things (string-list things)) + "Do it!" + boolean))) + (lambda* (store things #:optional (mode (build-mode normal))) + "Build THINGS, a list of store items which may be either '.drv' files or outputs, and return when the worker is done building them. Elements of THINGS that are not derivations can only be substituted and not built locally. Return #t on success." - boolean) + (if (>= (nix-server-minor-version store) 15) + (build store things mode) + (if (= mode (build-mode normal)) + (build/old store things) + (raise (condition (&nix-protocol-error + (message "unsupported build mode") + (status 1))))))))) (define-operation (add-temp-root (store-path path)) "Make PATH a temporary root for the duration of the current session. diff --git a/guix/ui.scm b/guix/ui.scm index fb8121c213..35a6671a07 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -34,6 +34,7 @@ #:use-module (guix serialization) #:use-module ((guix build utils) #:select (mkdir-p)) #:use-module ((guix licenses) #:select (license? license-name)) + #:use-module (gnu system file-systems) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) @@ -60,6 +61,7 @@ warn-about-load-error show-version-and-exit show-bug-report-information + make-regexp* string->number* size->number show-derivation-outputs @@ -72,7 +74,6 @@ read/eval read/eval-package-expression location->string - switch-symlinks config-directory fill-paragraph texi->plain-text @@ -80,8 +81,15 @@ string->recutils package->recutils package-specification->name+version+output + specification->file-system-mapping string->generations string->duration + matching-generations + display-generation + display-profile-content + roll-back* + switch-to-generation* + delete-generation* run-guix-command run-guix program-name @@ -343,6 +351,16 @@ General help using GNU software: ")) (list (strerror (car errno)) target) (list errno))))))) +(define (make-regexp* regexp . flags) + "Like 'make-regexp' but error out if REGEXP is invalid, reporting the error +nicely." + (catch 'regular-expression-syntax + (lambda () + (apply make-regexp regexp flags)) + (lambda (key proc message . rest) + (leave (_ "'~a' is not a valid regular expression: ~a~%") + regexp message)))) + (define (string->number* str) "Like `string->number', but error out with an error message on failure." (or (string->number str) @@ -513,17 +531,18 @@ error." (derivation-outputs derivation)))) (define* (show-what-to-build store drv - #:key dry-run? (use-substitutes? #t)) + #:key dry-run? (use-substitutes? #t) + (mode (build-mode normal))) "Show what will or would (depending on DRY-RUN?) be built in realizing the -derivations listed in DRV. Return #t if there's something to build, #f -otherwise. When USE-SUBSTITUTES?, check and report what is prerequisites are -available for download." +derivations listed in DRV using MODE, a 'build-mode' value. Return #t if +there's something to build, #f otherwise. When USE-SUBSTITUTES?, check and +report what is prerequisites are available for download." (define substitutable? ;; Call 'substitutation-oracle' upfront so we don't end up launching the ;; substituter many times. This makes a big difference, especially when ;; DRV is a long list as is the case with 'guix environment'. (if use-substitutes? - (substitution-oracle store drv) + (substitution-oracle store drv #:mode mode) (const #f))) (define (built-or-substitutable? drv) @@ -537,6 +556,7 @@ available for download." (let-values (((b d) (derivation-prerequisites-to-build store drv + #:mode mode #:substitutable? substitutable?))) (values (append b build) (append d download)))) @@ -710,13 +730,6 @@ replacement if PORT is not Unicode-capable." (($ file line column) (format #f "~a:~a:~a" file line column)))) -(define (switch-symlinks link target) - "Atomically switch LINK, a symbolic link, to point to TARGET. Works -both when LINK already exists and when it does not." - (let ((pivot (string-append link ".new"))) - (symlink target pivot) - (rename-file pivot link))) - (define (config-directory) "Return the name of the configuration directory, after making sure that it exists. Honor the XDG specs, @@ -946,6 +959,119 @@ following patterns: \"1d\", \"1w\", \"1m\"." (hours->duration (* 24 30) match))) (else #f))) +(define* (matching-generations str profile + #:key (duration-relation <=)) + "Return the list of available generations matching a pattern in STR. See +'string->generations' and 'string->duration' for the list of valid patterns. +When STR is a duration pattern, return all the generations whose ctime has +DURATION-RELATION with the current time." + (define (valid-generations lst) + (define (valid-generation? n) + (any (cut = n <>) (generation-numbers profile))) + + (fold-right (lambda (x acc) + (if (valid-generation? x) + (cons x acc) + acc)) + '() + lst)) + + (define (filter-generations generations) + (match generations + (() '()) + (('>= n) + (drop-while (cut > n <>) + (generation-numbers profile))) + (('<= n) + (valid-generations (iota n 1))) + ((lst ..1) + (valid-generations lst)) + (_ #f))) + + (define (filter-by-duration duration) + (define (time-at-midnight time) + ;; Return TIME at midnight by setting nanoseconds, seconds, minutes, and + ;; hours to zeros. + (let ((d (time-utc->date time))) + (date->time-utc + (make-date 0 0 0 0 + (date-day d) (date-month d) + (date-year d) (date-zone-offset d))))) + + (define generation-ctime-alist + (map (lambda (number) + (cons number + (time-second + (time-at-midnight + (generation-time profile number))))) + (generation-numbers profile))) + + (match duration + (#f #f) + (res + (let ((s (time-second + (subtract-duration (time-at-midnight (current-time)) + duration)))) + (delete #f (map (lambda (x) + (and (duration-relation s (cdr x)) + (first x))) + generation-ctime-alist)))))) + + (cond ((string->generations str) + => + filter-generations) + ((string->duration str) + => + filter-by-duration) + (else #f))) + +(define (display-generation profile number) + "Display a one-line summary of generation NUMBER of PROFILE." + (unless (zero? number) + (let ((header (format #f (_ "Generation ~a\t~a") number + (date->string + (time-utc->date + (generation-time profile number)) + "~b ~d ~Y ~T"))) + (current (generation-number profile))) + (if (= number current) + (format #t (_ "~a\t(current)~%") header) + (format #t "~a~%" header))))) + +(define (display-profile-content profile number) + "Display the packages in PROFILE, generation NUMBER, in a human-readable +way." + (for-each (match-lambda + (($ name version output location _) + (format #t " ~a\t~a\t~a\t~a~%" + name version output location))) + + ;; Show most recently installed packages last. + (reverse + (manifest-entries + (profile-manifest (generation-file-name profile number)))))) + +(define (display-generation-change previous current) + (format #t (_ "switched from generation ~a to ~a~%") previous current)) + +(define (roll-back* store profile) + "Like 'roll-back', but display what is happening." + (call-with-values + (lambda () + (roll-back store profile)) + display-generation-change)) + +(define (switch-to-generation* profile number) + "Like 'switch-generation', but display what is happening." + (let ((previous (switch-to-generation profile number))) + (display-generation-change previous number))) + +(define (delete-generation* store profile generation) + "Like 'delete-generation', but display what is going on." + (format #t (_ "deleting ~a~%") + (generation-file-name profile generation)) + (delete-generation store profile generation)) + (define* (package-specification->name+version+output spec #:optional (output "out")) "Parse package specification SPEC and return three value: the specified @@ -966,6 +1092,23 @@ optionally contain a version number and an output name, as in these examples: (package-name->name+version name))) (values name version sub-drv))) +(define (specification->file-system-mapping spec writable?) + "Read the SPEC and return the corresponding . SPEC is +a string of the form \"SOURCE\" or \"SOURCE=TARGET\". The former specifies +that SOURCE from the host should be mounted at SOURCE in the other system. +The latter format specifies that SOURCE from the host should be mounted at +TARGET in the other system." + (let ((index (string-index spec #\=))) + (if index + (file-system-mapping + (source (substring spec 0 index)) + (target (substring spec (+ 1 index))) + (writable? writable?)) + (file-system-mapping + (source spec) + (target spec) + (writable? writable?))))) + ;;; ;;; Command-line option processing. @@ -1050,6 +1193,9 @@ and signal handling has already been set up." (format (current-error-port) (_ "guix: unrecognized option '~a'~%") o) (show-guix-usage)) + (("help" command) + (apply run-guix-command (string->symbol command) + '("--help"))) (("help" args ...) (show-guix-help)) ((command args ...) diff --git a/guix/upstream.scm b/guix/upstream.scm index 9300113ac6..c62667dd01 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2015 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,12 +40,14 @@ upstream-source-version upstream-source-urls upstream-source-signature-urls + upstream-source-archive-types coalesce-sources upstream-updater upstream-updater? upstream-updater-name + upstream-updater-description upstream-updater-predicate upstream-updater-latest @@ -95,8 +98,9 @@ correspond to the same version." (urls (append (upstream-source-urls release) (upstream-source-urls head))) (signature-urls - (append (upstream-source-signature-urls release) - (upstream-source-signature-urls head)))) + (let ((one (upstream-source-signature-urls release)) + (two (upstream-source-signature-urls release))) + (and one two (append one two))))) tail) (cons release result))) (() @@ -109,18 +113,19 @@ correspond to the same version." ;;; Auto-update. ;;; -(define-record-type - (upstream-updater name pred latest) +(define-record-type* + upstream-updater make-upstream-updater upstream-updater? - (name upstream-updater-name) - (pred upstream-updater-predicate) - (latest upstream-updater-latest)) + (name upstream-updater-name) + (description upstream-updater-description) + (pred upstream-updater-predicate) + (latest upstream-updater-latest)) (define (lookup-updater package updaters) "Return an updater among UPDATERS that matches PACKAGE, or #f if none of them matches." (any (match-lambda - (($ _ pred latest) + (($ _ _ pred latest) (and (pred package) latest))) updaters)) diff --git a/guix/utils.scm b/guix/utils.scm index 190b787185..7b589e68a8 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -29,7 +29,8 @@ #:use-module (srfi srfi-39) #:use-module (srfi srfi-60) #:use-module (rnrs bytevectors) - #:use-module ((rnrs io ports) #:select (put-bytevector)) + #:use-module (rnrs io ports) + #:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!)) #:use-module ((guix build utils) #:select (dump-port package-name->name+version)) #:use-module ((guix build syscalls) #:select (errno mkdtemp!)) @@ -74,6 +75,7 @@ arguments-from-environment-variable file-extension file-sans-extension + switch-symlinks call-with-temporary-output-file call-with-temporary-directory with-atomic-file-output @@ -82,13 +84,15 @@ fold-tree-leaves split cache-directory + readlink* filtered-port compressed-port decompressed-port call-with-decompressed-port compressed-output-port - call-with-compressed-output-port)) + call-with-compressed-output-port + canonical-newline-port)) ;;; @@ -556,6 +560,13 @@ minor version numbers from version-string." (substring file 0 dot) file))) +(define (switch-symlinks link target) + "Atomically switch LINK, a symbolic link, to point to TARGET. Works +both when LINK already exists and when it does not." + (let ((pivot (string-append link ".new"))) + (symlink target pivot) + (rename-file pivot link))) + (define* (string-replace-substring str substr replacement #:optional (start 0) @@ -710,6 +721,61 @@ elements after E." (and=> (getenv "HOME") (cut string-append <> "/.cache/guix")))) +(define (readlink* file) + "Call 'readlink' until the result is not a symlink." + (define %max-symlink-depth 50) + + (let loop ((file file) + (depth 0)) + (define (absolute target) + (if (absolute-file-name? target) + target + (string-append (dirname file) "/" target))) + + (if (>= depth %max-symlink-depth) + file + (call-with-values + (lambda () + (catch 'system-error + (lambda () + (values #t (readlink file))) + (lambda args + (let ((errno (system-error-errno args))) + (if (or (= errno EINVAL)) + (values #f file) + (apply throw args)))))) + (lambda (success? target) + (if success? + (loop (absolute target) (+ depth 1)) + file)))))) + +(define (canonical-newline-port port) + "Return an input port that wraps PORT such that all newlines consist + of a single carriage return." + (define (get-position) + (if (port-has-port-position? port) (port-position port) #f)) + (define (set-position! position) + (if (port-has-set-port-position!? port) + (set-port-position! position port) + #f)) + (define (close) (close-port port)) + (define (read! bv start n) + (let loop ((count 0) + (byte (get-u8 port))) + (cond ((eof-object? byte) count) + ((= count (- n 1)) + (bytevector-u8-set! bv (+ start count) byte) + n) + ;; XXX: consume all LFs even if not followed by CR. + ((eqv? byte (char->integer #\return)) (loop count (get-u8 port))) + (else + (bytevector-u8-set! bv (+ start count) byte) + (loop (+ count 1) (get-u8 port)))))) + (make-custom-binary-input-port "canonical-newline-port" + read! + get-position + set-position! + close)) ;;; ;;; Source location. diff --git a/m4/guix.m4 b/m4/guix.m4 index 842249a848..1e5985b30b 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -50,8 +50,13 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [ i*86) machine_name="i686";; amd64) - machine_name="x86_64";; - arm*) + machine_name="x86_64";; + arm|armv[[7-9]]*) + # Here we want to exclude CPUs such as "armv6l". On ARMv7 + # machines, we normally get "armv7l". However, in Guix, we + # configure with --build=arm-unknown-linux-gnueabihf, leading + # to just "arm", so we also have to allow it. + # # TODO: If not cross-compiling, add a sanity check to make # sure this build machine has the needed features to # support executables compiled using our armhf gcc, diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc index a9eedcef16..47c7f9728e 100644 --- a/nix/libstore/build.cc +++ b/nix/libstore/build.cc @@ -51,7 +51,7 @@ #include #endif -#define CHROOT_ENABLED HAVE_CHROOT && HAVE_UNSHARE && HAVE_SYS_MOUNT_H && defined(MS_BIND) && defined(MS_PRIVATE) && defined(CLONE_NEWNS) && defined(SYS_pivot_root) +#define CHROOT_ENABLED HAVE_CHROOT && HAVE_SYS_MOUNT_H && defined(MS_BIND) && defined(MS_PRIVATE) && defined(CLONE_NEWNS) && defined(SYS_pivot_root) #if CHROOT_ENABLED #include @@ -736,6 +736,9 @@ private: /* The temporary directory. */ Path tmpDir; + /* The path of the temporary directory in the sandbox. */ + Path tmpDirInSandbox; + /* File descriptor for the log file. */ FILE * fLogFile; BZFILE * bzLogFile; @@ -785,10 +788,16 @@ private: temporary paths. */ PathSet redirectedBadOutputs; - /* Set of inodes seen during calls to canonicalisePathMetaData() - for this build's outputs. This needs to be shared between - outputs to allow hard links between outputs. */ - InodesSeen inodesSeen; + /* The current round, if we're building multiple times. */ + unsigned int curRound = 1; + + unsigned int nrRounds; + + /* Path registration info from the previous round, if we're + building multiple times. Since this contains the hash, it + allows us to compare whether two rounds produced the same + result. */ + ValidPathInfos prevInfos; public: DerivationGoal(const Path & drvPath, const StringSet & wantedOutputs, Worker & worker, BuildMode buildMode = bmNormal); @@ -882,6 +891,10 @@ DerivationGoal::DerivationGoal(const Path & drvPath, const StringSet & wantedOut state = &DerivationGoal::init; name = (format("building of `%1%'") % drvPath).str(); trace("created"); + + /* Prevent the .chroot directory from being + garbage-collected. (See isActiveTempFile() in gc.cc.) */ + worker.store.addTempRoot(drvPath); } @@ -1190,8 +1203,12 @@ void DerivationGoal::inputsRealised() /* Is this a fixed-output derivation? */ fixedOutput = true; - foreach (DerivationOutputs::iterator, i, drv.outputs) - if (i->second.hash == "") fixedOutput = false; + for (auto & i : drv.outputs) + if (i.second.hash == "") fixedOutput = false; + + /* Don't repeat fixed-output derivations since they're already + verified by their output hash.*/ + nrRounds = fixedOutput ? 1 : settings.get("build-repeat", 0) + 1; /* Okay, try to build. Note that here we don't wait for a build slot to become available, since we don't need one if there is a @@ -1367,6 +1384,9 @@ void replaceValidPath(const Path & storePath, const Path tmpPath) } +MakeError(NotDeterministic, BuildError) + + void DerivationGoal::buildDone() { trace("build done"); @@ -1466,6 +1486,15 @@ void DerivationGoal::buildDone() deleteTmpDir(true); + /* Repeat the build if necessary. */ + if (curRound++ < nrRounds) { + outputLocks.unlock(); + buildUser.release(); + state = &DerivationGoal::tryToBuild; + worker.wakeUp(shared_from_this()); + return; + } + /* It is now safe to delete the lock files, since all future lockers will see that the output paths are valid; they will not create new lock files with the same names as the old @@ -1619,10 +1648,13 @@ int childEntry(void * arg) void DerivationGoal::startBuilder() { - startNest(nest, lvlInfo, format( - buildMode == bmRepair ? "repairing path(s) %1%" : - buildMode == bmCheck ? "checking path(s) %1%" : - "building path(s) %1%") % showPaths(missingPaths)); + auto f = format( + buildMode == bmRepair ? "repairing path(s) %1%" : + buildMode == bmCheck ? "checking path(s) %1%" : + nrRounds > 1 ? "building path(s) %1% (round %2%/%3%)" : + "building path(s) %1%"); + f.exceptions(boost::io::all_error_bits ^ boost::io::too_many_args_bit); + startNest(nest, lvlInfo, f % showPaths(missingPaths) % curRound % nrRounds); /* Right platform? */ if (!canBuildLocally(drv.platform)) { @@ -1633,7 +1665,10 @@ void DerivationGoal::startBuilder() % drv.platform % settings.thisSystem % drvPath); } + useChroot = settings.useChroot; + /* Construct the environment passed to the builder. */ + env.clear(); /* Most shells initialise PATH to some default (/bin:/usr/bin:...) when PATH is not set. We don't want this, so we fill it in with some dummy @@ -1664,20 +1699,25 @@ void DerivationGoal::startBuilder() /* Create a temporary directory where the build will take place. */ - tmpDir = createTempDir("", "nix-build-" + storePathToName(drvPath), false, false, 0700); + auto drvName = storePathToName(drvPath); + tmpDir = createTempDir("", "nix-build-" + drvName, false, false, 0700); + + /* In a sandbox, for determinism, always use the same temporary + directory. */ + tmpDirInSandbox = useChroot ? "/tmp/nix-build-" + drvName + "-0" : tmpDir; /* For convenience, set an environment pointing to the top build directory. */ - env["NIX_BUILD_TOP"] = tmpDir; + env["NIX_BUILD_TOP"] = tmpDirInSandbox; /* Also set TMPDIR and variants to point to this directory. */ - env["TMPDIR"] = env["TEMPDIR"] = env["TMP"] = env["TEMP"] = tmpDir; + env["TMPDIR"] = env["TEMPDIR"] = env["TMP"] = env["TEMP"] = tmpDirInSandbox; /* Explicitly set PWD to prevent problems with chroot builds. In particular, dietlibc cannot figure out the cwd because the inode of the current directory doesn't appear in .. (because getdents returns the inode of the mount point). */ - env["PWD"] = tmpDir; + env["PWD"] = tmpDirInSandbox; /* Compatibility hack with Nix <= 0.7: if this is a fixed-output derivation, tell the builder, so that for instance `fetchurl' @@ -1762,8 +1802,6 @@ void DerivationGoal::startBuilder() throw SysError(format("cannot change ownership of '%1%'") % tmpDir); } - useChroot = settings.useChroot; - if (useChroot) { #if CHROOT_ENABLED /* Create a temporary directory in which we set up the chroot @@ -1825,7 +1863,7 @@ void DerivationGoal::startBuilder() else dirsInChroot[string(i, 0, p)] = string(i, p + 1); } - dirsInChroot[tmpDir] = tmpDir; + dirsInChroot[tmpDirInSandbox] = tmpDir; /* Make the closure of the inputs available in the chroot, rather than the whole Nix store. This prevents any access @@ -1866,13 +1904,13 @@ void DerivationGoal::startBuilder() } } - /* If we're repairing or checking, it's possible that we're + /* If we're repairing, checking or rebuilding part of a + multiple-outputs derivation, it's possible that we're rebuilding a path that is in settings.dirsInChroot (typically the dependencies of /bin/sh). Throw them out. */ - if (buildMode != bmNormal) - foreach (DerivationOutputs::iterator, i, drv.outputs) - dirsInChroot.erase(i->second.path); + for (auto & i : drv.outputs) + dirsInChroot.erase(i.second.path); #else throw Error("chroot builds are not supported on this platform"); @@ -2143,7 +2181,7 @@ void DerivationGoal::runChild() } #endif - if (chdir(tmpDir.c_str()) == -1) + if (chdir(tmpDirInSandbox.c_str()) == -1) throw SysError(format("changing into `%1%'") % tmpDir); /* Close all other file descriptors. */ @@ -2263,6 +2301,11 @@ void DerivationGoal::registerOutputs() ValidPathInfos infos; + /* Set of inodes seen during calls to canonicalisePathMetaData() + for this build's outputs. This needs to be shared between + outputs to allow hard links between outputs. */ + InodesSeen inodesSeen; + /* Check whether the output paths were created, and grep each output path to determine what other paths it references. Also make all output paths read-only. */ @@ -2434,6 +2477,16 @@ void DerivationGoal::registerOutputs() if (buildMode == bmCheck) return; + if (curRound > 1 && prevInfos != infos) + throw NotDeterministic( + format("result of ‘%1%’ differs from previous round; rejecting as non-deterministic") + % drvPath); + + if (curRound < nrRounds) { + prevInfos = infos; + return; + } + /* Register each output path as valid, and register the sets of paths referenced by each of them. If there are cycles in the outputs, this will fail. */ diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc index 07f23d469c..84fc885eba 100644 --- a/nix/libstore/globals.cc +++ b/nix/libstore/globals.cc @@ -137,6 +137,13 @@ bool Settings::get(const string & name, bool def) return res; } +int Settings::get(const string & name, int def) +{ + int res = def; + _get(res, name); + return res; +} + void Settings::update() { diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh index c17e10d7c3..8c07e360f2 100644 --- a/nix/libstore/globals.hh +++ b/nix/libstore/globals.hh @@ -27,6 +27,8 @@ struct Settings { bool get(const string & name, bool def); + int get(const string & name, int def); + void update(); string pack(); diff --git a/nix/libstore/optimise-store.cc b/nix/libstore/optimise-store.cc index c62b8e451b..d7508b025e 100644 --- a/nix/libstore/optimise-store.cc +++ b/nix/libstore/optimise-store.cc @@ -120,7 +120,7 @@ void LocalStore::optimisePath_(OptimiseStats & stats, const Path & path, InodeHa return; } - /* This can still happen on top-level files */ + /* This can still happen on top-level files. */ if (st.st_nlink > 1 && inodeHash.count(st.st_ino)) { printMsg(lvlDebug, format("`%1%' is already linked, with %2% other file(s).") % path % (st.st_nlink - 2)); return; @@ -141,6 +141,7 @@ void LocalStore::optimisePath_(OptimiseStats & stats, const Path & path, InodeHa /* Check if this is a known hash. */ Path linkPath = linksDir + "/" + printHash32(hash); + retry: if (!pathExists(linkPath)) { /* Nope, create a hard link in the links directory. */ if (link(path.c_str(), linkPath.c_str()) == 0) { @@ -164,7 +165,13 @@ void LocalStore::optimisePath_(OptimiseStats & stats, const Path & path, InodeHa return; } - printMsg(lvlTalkative, format("linking `%1%' to `%2%'") % path % linkPath); + if (st.st_size != stLink.st_size) { + printMsg(lvlError, format("removing corrupted link ‘%1%’") % linkPath); + unlink(linkPath.c_str()); + goto retry; + } + + printMsg(lvlTalkative, format("linking ‘%1%’ to ‘%2%’") % path % linkPath); /* Make the containing directory writable, but only if it's not the store itself (we don't want or need to mess with its diff --git a/nix/libstore/remote-store.cc b/nix/libstore/remote-store.cc index 0539bbe127..324ef5eb30 100644 --- a/nix/libstore/remote-store.cc +++ b/nix/libstore/remote-store.cc @@ -462,11 +462,18 @@ Paths RemoteStore::importPaths(bool requireSignature, Source & source) void RemoteStore::buildPaths(const PathSet & drvPaths, BuildMode buildMode) { - if (buildMode != bmNormal) throw Error("repairing or checking is not supported when building through the Nix daemon"); openConnection(); writeInt(wopBuildPaths, to); - if (GET_PROTOCOL_MINOR(daemonVersion) >= 13) + if (GET_PROTOCOL_MINOR(daemonVersion) >= 13) { writeStrings(drvPaths, to); + if (GET_PROTOCOL_MINOR(daemonVersion) >= 15) { + writeInt(buildMode, to); + } + /* Old daemons did not take a 'buildMode' parameter, so we need to + validate it here on the client side. */ + else if (buildMode != bmNormal) throw Error("repairing or checking \ +is not supported when building through the Nix daemon"); + } else { /* For backwards compatibility with old daemons, strip output identifiers. */ diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh index 3764f3e542..9403cbee19 100644 --- a/nix/libstore/store-api.hh +++ b/nix/libstore/store-api.hh @@ -88,10 +88,17 @@ struct ValidPathInfo Path deriver; Hash hash; PathSet references; - time_t registrationTime; - unsigned long long narSize; // 0 = unknown + time_t registrationTime = 0; + unsigned long long narSize = 0; // 0 = unknown unsigned long long id; // internal use only - ValidPathInfo() : registrationTime(0), narSize(0) { } + + bool operator == (const ValidPathInfo & i) const + { + return + path == i.path + && hash == i.hash + && references == i.references; + } }; typedef list ValidPathInfos; diff --git a/nix/libstore/worker-protocol.hh b/nix/libstore/worker-protocol.hh index d037d7402e..7b7be4a8a0 100644 --- a/nix/libstore/worker-protocol.hh +++ b/nix/libstore/worker-protocol.hh @@ -6,7 +6,7 @@ namespace nix { #define WORKER_MAGIC_1 0x6e697863 #define WORKER_MAGIC_2 0x6478696f -#define PROTOCOL_VERSION 0x10e +#define PROTOCOL_VERSION 0x10f #define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00) #define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff) diff --git a/nix/libutil/archive.cc b/nix/libutil/archive.cc index 6856ea0f28..4e3d99356a 100644 --- a/nix/libutil/archive.cc +++ b/nix/libutil/archive.cc @@ -256,7 +256,7 @@ static void parse(ParseSink & sink, Source & source, const Path & path) if (i != names.end()) { printMsg(lvlDebug, format("case collision between `%1%' and `%2%'") % i->first % name); name += caseHackSuffix; - name += int2String(++i->second); + name += std::to_string(++i->second); } else names[name] = 0; } diff --git a/nix/libutil/hash.cc b/nix/libutil/hash.cc index 2da00a53de..ea69aa64f9 100644 --- a/nix/libutil/hash.cc +++ b/nix/libutil/hash.cc @@ -11,6 +11,7 @@ extern "C" { #include "md5.h" #include "sha1.h" #include "sha256.h" +#include "sha512.h" } #endif @@ -40,6 +41,7 @@ Hash::Hash(HashType type) if (type == htMD5) hashSize = md5HashSize; else if (type == htSHA1) hashSize = sha1HashSize; else if (type == htSHA256) hashSize = sha256HashSize; + else if (type == htSHA512) hashSize = sha512HashSize; else throw Error("unknown hash type"); assert(hashSize <= maxHashSize); memset(hash, 0, maxHashSize); @@ -199,6 +201,7 @@ struct Ctx MD5_CTX md5; SHA_CTX sha1; SHA256_CTX sha256; + SHA512_CTX sha512; }; @@ -207,6 +210,7 @@ static void start(HashType ht, Ctx & ctx) if (ht == htMD5) MD5_Init(&ctx.md5); else if (ht == htSHA1) SHA1_Init(&ctx.sha1); else if (ht == htSHA256) SHA256_Init(&ctx.sha256); + else if (ht == htSHA512) SHA512_Init(&ctx.sha512); } @@ -216,6 +220,7 @@ static void update(HashType ht, Ctx & ctx, if (ht == htMD5) MD5_Update(&ctx.md5, bytes, len); else if (ht == htSHA1) SHA1_Update(&ctx.sha1, bytes, len); else if (ht == htSHA256) SHA256_Update(&ctx.sha256, bytes, len); + else if (ht == htSHA512) SHA512_Update(&ctx.sha512, bytes, len); } @@ -224,6 +229,7 @@ static void finish(HashType ht, Ctx & ctx, unsigned char * hash) if (ht == htMD5) MD5_Final(hash, &ctx.md5); else if (ht == htSHA1) SHA1_Final(hash, &ctx.sha1); else if (ht == htSHA256) SHA256_Final(hash, &ctx.sha256); + else if (ht == htSHA512) SHA512_Final(hash, &ctx.sha512); } @@ -321,6 +327,7 @@ HashType parseHashType(const string & s) if (s == "md5") return htMD5; else if (s == "sha1") return htSHA1; else if (s == "sha256") return htSHA256; + else if (s == "sha512") return htSHA512; else return htUnknown; } @@ -330,6 +337,7 @@ string printHashType(HashType ht) if (ht == htMD5) return "md5"; else if (ht == htSHA1) return "sha1"; else if (ht == htSHA256) return "sha256"; + else if (ht == htSHA512) return "sha512"; else throw Error("cannot print unknown hash type"); } diff --git a/nix/libutil/hash.hh b/nix/libutil/hash.hh index 8f099c4f07..6b5e47cd8a 100644 --- a/nix/libutil/hash.hh +++ b/nix/libutil/hash.hh @@ -7,19 +7,20 @@ namespace nix { -typedef enum { htUnknown, htMD5, htSHA1, htSHA256 } HashType; +typedef enum { htUnknown, htMD5, htSHA1, htSHA256, htSHA512 } HashType; const int md5HashSize = 16; const int sha1HashSize = 20; const int sha256HashSize = 32; +const int sha512HashSize = 64; extern const string base32Chars; struct Hash { - static const unsigned int maxHashSize = 32; + static const unsigned int maxHashSize = 64; unsigned int hashSize; unsigned char hash[maxHashSize]; diff --git a/nix/libutil/sha512.h b/nix/libutil/sha512.h new file mode 100644 index 0000000000..d2abab4c5f --- /dev/null +++ b/nix/libutil/sha512.h @@ -0,0 +1,35 @@ +/* GNU Guix --- Functional package management for GNU + Copyright (C) 2012, 2015 Ludovic Courtès + + 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 . */ + +#include + +#define SHA512_CTX guix_hash_context + +static inline void +SHA512_Init (struct SHA512_CTX *ctx) +{ + guix_hash_init (ctx, GCRY_MD_SHA512); +} + +#define SHA512_Update guix_hash_update + +static inline void +SHA512_Final (void *resbuf, struct SHA512_CTX *ctx) +{ + guix_hash_final (resbuf, ctx, GCRY_MD_SHA512); +} diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index 14026ab829..c07754487e 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -433,7 +433,7 @@ Nest::~Nest() static string escVerbosity(Verbosity level) { - return int2String((int) level); + return std::to_string((int) level); } diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh index 24e16ba36a..e84d64d10a 100644 --- a/nix/libutil/util.hh +++ b/nix/libutil/util.hh @@ -153,8 +153,8 @@ void printMsg_(Verbosity level, const FormatOrString & fs); #define printMsg(level, f) \ do { \ - if (level <= verbosity) { \ - printMsg_(level, (f)); \ + if (level <= nix::verbosity) { \ + nix::printMsg_(level, (f)); \ } \ } while (0) @@ -337,13 +337,6 @@ template bool string2Int(const string & s, N & n) return str && str.get() == EOF; } -template string int2String(N n) -{ - std::ostringstream str; - str << n; - return str.str(); -} - /* Return true iff `s' ends in `suffix'. */ bool hasSuffix(const string & s, const string & suffix); diff --git a/nix/nix-daemon/nix-daemon.cc b/nix/nix-daemon/nix-daemon.cc index 10159db62e..35c284f7e1 100644 --- a/nix/nix-daemon/nix-daemon.cc +++ b/nix/nix-daemon/nix-daemon.cc @@ -441,8 +441,8 @@ static void performOp(bool trusted, unsigned int clientVersion, startWork(); TunnelSource source(from); - /* Unlike Nix, always require a signature, even for "trusted" - users. */ + /* Unlike Nix, always require a signature, even for "trusted" + users. */ Paths paths = store->importPaths(true, source); stopWork(); writeStrings(paths, to); @@ -451,8 +451,17 @@ static void performOp(bool trusted, unsigned int clientVersion, case wopBuildPaths: { PathSet drvs = readStorePaths(from); + BuildMode mode = bmNormal; + if (GET_PROTOCOL_MINOR(clientVersion) >= 15) { + mode = (BuildMode)readInt(from); + + /* Repairing is not atomic, so disallowed for "untrusted" + clients. */ + if (mode == bmRepair && !trusted) + throw Error("repairing is not supported when building through the Nix daemon"); + } startWork(); - store->buildPaths(drvs); + store->buildPaths(drvs, mode); stopWork(); writeInt(1, to); break; @@ -538,8 +547,8 @@ static void performOp(bool trusted, unsigned int clientVersion, settings.keepGoing = readInt(from) != 0; settings.set("build-fallback", readInt(from) ? "true" : "false"); verbosity = (Verbosity) readInt(from); - settings.set("build-max-jobs", int2String(readInt(from))); - settings.set("build-max-silent-time", int2String(readInt(from))); + settings.set("build-max-jobs", std::to_string(readInt(from))); + settings.set("build-max-silent-time", std::to_string(readInt(from))); if (GET_PROTOCOL_MINOR(clientVersion) >= 2) settings.useBuildHook = readInt(from) != 0; if (GET_PROTOCOL_MINOR(clientVersion) >= 4) { @@ -548,7 +557,7 @@ static void performOp(bool trusted, unsigned int clientVersion, settings.printBuildTrace = readInt(from) != 0; } if (GET_PROTOCOL_MINOR(clientVersion) >= 6) - settings.set("build-cores", int2String(readInt(from))); + settings.set("build-cores", std::to_string(readInt(from))); if (GET_PROTOCOL_MINOR(clientVersion) >= 10) settings.set("build-use-substitutes", readInt(from) ? "true" : "false"); if (GET_PROTOCOL_MINOR(clientVersion) >= 12) { @@ -556,7 +565,7 @@ static void performOp(bool trusted, unsigned int clientVersion, for (unsigned int i = 0; i < n; i++) { string name = readString(from); string value = readString(from); - if (name == "build-timeout" || name == "use-ssh-substituter") + if (name == "build-timeout" || name == "build-repeat" || name == "use-ssh-substituter") settings.set(name, value); else settings.set(trusted ? name : "untrusted-" + name, value); @@ -819,7 +828,7 @@ static void daemonLoop() /* Handle socket-based activation by systemd. */ if (getEnv("LISTEN_FDS") != "") { - if (getEnv("LISTEN_PID") != int2String(getpid()) || getEnv("LISTEN_FDS") != "1") + if (getEnv("LISTEN_PID") != std::to_string(getpid()) || getEnv("LISTEN_FDS") != "1") throw Error("unexpected systemd environment variables"); fdSocket = SD_LISTEN_FDS_START; } @@ -906,10 +915,10 @@ static void daemonLoop() clientPid = cred.pid; struct passwd * pw = getpwuid(cred.uid); - string user = pw ? pw->pw_name : int2String(cred.uid); + string user = pw ? pw->pw_name : std::to_string(cred.uid); struct group * gr = getgrgid(cred.gid); - string group = gr ? gr->gr_name : int2String(cred.gid); + string group = gr ? gr->gr_name : std::to_string(cred.gid); Strings trustedUsers = settings.get("trusted-users", Strings({"root"})); Strings allowedUsers = settings.get("allowed-users", Strings({"*"})); @@ -937,7 +946,7 @@ static void daemonLoop() /* For debugging, stuff the pid into argv[1]. */ if (clientPid != -1 && argvSaved[1]) { - string processName = int2String(clientPid); + string processName = std::to_string(clientPid); strncpy(argvSaved[1], processName.c_str(), strlen(argvSaved[1])); } diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS index b271fd3ad5..dbf5afe726 100644 --- a/po/guix/LINGUAS +++ b/po/guix/LINGUAS @@ -8,6 +8,7 @@ en@quot eo fr hu +pl pt_BR sr vi diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 0c4e4f8443..bf65416638 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -12,6 +12,7 @@ guix/scripts/package.scm guix/scripts/gc.scm guix/scripts/hash.scm guix/scripts/import.scm +guix/scripts/import/cran.scm guix/scripts/import/elpa.scm guix/scripts/pull.scm guix/scripts/substitute.scm @@ -23,6 +24,9 @@ guix/scripts/edit.scm guix/scripts/size.scm guix/scripts/graph.scm guix/scripts/challenge.scm +guix/gnu-maintenance.scm +guix/scripts/container.scm +guix/scripts/container/exec.scm guix/upstream.scm guix/ui.scm guix/http-client.scm diff --git a/po/guix/da.po b/po/guix/da.po index 2274ebff57..e9be5e985c 100644 --- a/po/guix/da.po +++ b/po/guix/da.po @@ -7,10 +7,10 @@ # msgid "" msgstr "" -"Project-Id-Version: guix 0.8.2\n" +"Project-Id-Version: guix 0.9.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2015-05-10 14:02+0200\n" -"PO-Revision-Date: 2015-05-14 19:30+01:00\n" +"POT-Creation-Date: 2015-10-28 16:31+0100\n" +"PO-Revision-Date: 2015-10-31 19:30+01:00\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: da\n" @@ -19,66 +19,124 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gnu/packages.scm:78 +#: gnu/packages.scm:80 #, scheme-format msgid "~a: patch not found" msgstr "~a: rettelse blev ikke fundet" -#: gnu/packages.scm:89 +#: gnu/packages.scm:91 #, scheme-format msgid "could not find bootstrap binary '~a' for system '~a'" msgstr "kunne ikke finde bootstraps binære »~a« for system »~a«" -#: gnu/packages.scm:141 +#: gnu/packages.scm:143 #, scheme-format msgid "cannot access `~a': ~a~%" msgstr "kan ikke tilgå »~a«: ~a~%" -#: gnu/packages.scm:382 +#: gnu/packages.scm:388 #, scheme-format msgid "looking for the latest release of GNU ~a..." msgstr "kigger efter den seneste udgivelse af GNU ~a..." -#: gnu/packages.scm:389 +#: gnu/packages.scm:395 #, scheme-format msgid "~a: note: using ~a but ~a is available upstream~%" msgstr "~a: bemærk: bruger ~a men ~a er tilgængelig opstrøm~%" -#: gnu/packages.scm:411 guix/scripts/package.scm:350 +#: gnu/packages.scm:417 gnu/packages.scm:452 #, scheme-format msgid "ambiguous package specification `~a'~%" msgstr "tvetydig pakkespecifikation »~a«~%" -#: gnu/packages.scm:412 guix/scripts/package.scm:352 +#: gnu/packages.scm:418 gnu/packages.scm:454 #, scheme-format msgid "choosing ~a from ~a~%" msgstr "vælger ~a fra ~a~%" -#: gnu/packages.scm:418 +#: gnu/packages.scm:424 #, scheme-format msgid "~A: package not found for version ~a~%" msgstr "~A: pakke ikke fundet for version ~a~%" -#: gnu/packages.scm:420 +#: gnu/packages.scm:426 #, scheme-format msgid "~A: unknown package~%" msgstr "~A: ukendt pakke~%" -#: gnu/system.scm:811 +#: gnu/packages.scm:442 +#, scheme-format +msgid "package `~a' lacks output `~a'~%" +msgstr "pakke »~a« mangler uddata »~a«~%" + +#: gnu/packages.scm:459 +#, scheme-format +msgid "~a: package not found~%" +msgstr "~a: pakken blev ikke fundet~%" + +#: gnu/services.scm:376 +#, scheme-format +msgid "no target of type '~a' for service ~s" +msgstr "intet mål af typen »~a« for tjeneste ~s" + +#: gnu/services.scm:387 gnu/services.scm:447 +#, scheme-format +msgid "more than one target service of type '~a'" +msgstr "mere end en måltjeneste af typen »~a«" + +#: gnu/services.scm:437 +#, scheme-format +msgid "service of type '~a' not found" +msgstr "tjenste af typen »~a« blev ikke fundet" + +#: gnu/system.scm:547 +#, scheme-format +msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%" +msgstr "brug af en streng for filen »~a« er forældet; brug »plain-file« i stedet~%" + +#: gnu/system.scm:563 +#, scheme-format +msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%" +msgstr "brug af en unik værdi for »~a« er forældet; brug »plain-file« i stedet~%" + +#: gnu/system.scm:646 msgid "system locale lacks a definition" msgstr "systemsprog mangler en definition" -#: gnu/services/dmd.scm:51 +#: gnu/services/dmd.scm:131 #, scheme-format msgid "service '~a' provided more than once" msgstr "tjeneste »~a« tilbudt mere end en gang" -#: guix/scripts/build.scm:65 +#: gnu/system/shadow.scm:213 +#, scheme-format +msgid "supplementary group '~a' of user '~a' is undeclared" +msgstr "supplerende gruppe »~a« for bruger »~a« er ikke deklæret" + +#: gnu/system/shadow.scm:223 +#, scheme-format +msgid "primary group '~a' of user '~a' is undeclared" +msgstr "primær gruppe »~a« for brugeren »~a« er ikke deklæret" + +#: guix/scripts.scm:52 +#, scheme-format +msgid "invalid argument: ~a~%" +msgstr "ugyldigt argument: ~a~%" + +#: guix/scripts.scm:78 guix/scripts/download.scm:97 guix/scripts/gc.scm:157 +#: guix/scripts/import/cran.scm:72 guix/scripts/import/elpa.scm:77 +#: guix/scripts/pull.scm:219 guix/scripts/lint.scm:792 +#: guix/scripts/publish.scm:355 +#, scheme-format +msgid "~A: unrecognized option~%" +msgstr "~A: ikke genkendt tilvalg~%" + +#: guix/scripts/build.scm:107 #, scheme-format msgid "failed to create GC root `~a': ~a~%" msgstr "kunne ikke oprette GC-root »~a«: ~a~%" -#: guix/scripts/build.scm:102 +#: guix/scripts/build.scm:151 msgid "" "\n" " -L, --load-path=DIR prepend DIR to the package module search path" @@ -86,7 +144,7 @@ msgstr "" "\n" " -L, --load-path=MAPPE foranstil MAPPE til pakkemodulets søgesti" -#: guix/scripts/build.scm:104 +#: guix/scripts/build.scm:153 msgid "" "\n" " -K, --keep-failed keep build tree of failed builds" @@ -94,7 +152,7 @@ msgstr "" "\n" " -K, --keep-failed bevar byggetræ for mislykkede bygninger" -#: guix/scripts/build.scm:106 +#: guix/scripts/build.scm:155 msgid "" "\n" " -n, --dry-run do not build the derivations" @@ -102,7 +160,7 @@ msgstr "" "\n" " -n, --dry-run byg ikke derivationerne" -#: guix/scripts/build.scm:108 +#: guix/scripts/build.scm:157 msgid "" "\n" " --fallback fall back to building when the substituter fails" @@ -110,7 +168,7 @@ msgstr "" "\n" " --fallback fald tilbage til bygning når erstatningen fejler" -#: guix/scripts/build.scm:110 +#: guix/scripts/build.scm:159 msgid "" "\n" " --no-substitutes build instead of resorting to pre-built substitutes" @@ -118,7 +176,17 @@ msgstr "" "\n" " --no-substitutes byg i stedet for en ny sortering af præbyggede substitutter" -#: guix/scripts/build.scm:112 +#: guix/scripts/build.scm:161 guix/scripts/size.scm:215 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" fetch substitute from URLS if they are authorized" +msgstr "" +"\n" +" --substitute-urls=ADRESSER\n" +" hent substitut fra ADRESSER hvis de er godkendt" + +#: guix/scripts/build.scm:164 msgid "" "\n" " --no-build-hook do not attempt to offload builds via the build hook" @@ -126,7 +194,7 @@ msgstr "" "\n" " --no-build-hook forsøg ikke at aflaste bygninger via byggekrogen" -#: guix/scripts/build.scm:114 +#: guix/scripts/build.scm:166 msgid "" "\n" " --max-silent-time=SECONDS\n" @@ -136,7 +204,7 @@ msgstr "" " --max-silent-time=SEKUNDER\n" " marker bygningen som mislykket efter SEKUNDER af stilhed" -#: guix/scripts/build.scm:117 +#: guix/scripts/build.scm:169 msgid "" "\n" " --timeout=SECONDS mark the build as failed after SECONDS of activity" @@ -144,7 +212,7 @@ msgstr "" "\n" " --timeout=SEKUNDER marker bygningen som mislykket efter SEKUNDER af aktivitet" -#: guix/scripts/build.scm:119 +#: guix/scripts/build.scm:171 msgid "" "\n" " --verbosity=LEVEL use the given verbosity LEVEL" @@ -152,7 +220,7 @@ msgstr "" "\n" " --verbosity=NIVEAU brug det angivne uddybnings-NIVEAU" -#: guix/scripts/build.scm:121 +#: guix/scripts/build.scm:173 msgid "" "\n" " -c, --cores=N allow the use of up to N CPU cores for the build" @@ -160,7 +228,7 @@ msgstr "" "\n" " -c, --cores=N tillad brugen af op til N CPU-kerner til bygningen" -#: guix/scripts/build.scm:123 +#: guix/scripts/build.scm:175 msgid "" "\n" " -M, --max-jobs=N allow at most N build jobs" @@ -168,12 +236,12 @@ msgstr "" "\n" " -M, --max-jobs=N tillad højest N-byggejob" -#: guix/scripts/build.scm:198 guix/scripts/build.scm:205 +#: guix/scripts/build.scm:261 guix/scripts/build.scm:268 #, scheme-format msgid "not a number: '~a' option argument: ~a~%" msgstr "ikke et nummer: »~a« tilvalgsparameter: ~a~%" -#: guix/scripts/build.scm:224 +#: guix/scripts/build.scm:287 msgid "" "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" @@ -181,7 +249,7 @@ msgstr "" "Brug: guix build [TILVALG]... PAKKE-ELLER-AFLEDNING...\n" "Byg den angivne PAKKE-ELLER-AFLEDNING og returner deres uddatastier.\n" -#: guix/scripts/build.scm:226 +#: guix/scripts/build.scm:289 msgid "" "\n" " -e, --expression=EXPR build the package or derivation EXPR evaluates to" @@ -190,7 +258,17 @@ msgstr "" " -e, --expression=UDTRYK\n" " byg pakken eller derivationen UDTRYK evaluerer til" -#: guix/scripts/build.scm:228 +#: guix/scripts/build.scm:291 +msgid "" +"\n" +" -f, --file=FILE build the package or derivation that the code within\n" +" FILE evaluates to" +msgstr "" +"\n" +" -f, --file=FIL byg pakken eller derivationen som koden i FIL evaluerer\n" +" til" + +#: guix/scripts/build.scm:294 msgid "" "\n" " -S, --source build the packages' source derivations" @@ -198,7 +276,7 @@ msgstr "" "\n" " -S, --source byg pakkernes kildederivationer" -#: guix/scripts/build.scm:230 +#: guix/scripts/build.scm:296 msgid "" "\n" " --sources[=TYPE] build source derivations; TYPE may optionally be one\n" @@ -208,7 +286,7 @@ msgstr "" " --sources[=TYPE] bygningskildeafledninger; TYPE kan valgfrit være\n" " »package«, »all« (standard) eller »transitive«" -#: guix/scripts/build.scm:233 +#: guix/scripts/build.scm:299 msgid "" "\n" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" @@ -216,7 +294,7 @@ msgstr "" "\n" " -s, --system=SYSTEM forsøger at bygge for SYSTEM--f.eks., »i686-linux«" -#: guix/scripts/build.scm:235 +#: guix/scripts/build.scm:301 msgid "" "\n" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" @@ -224,7 +302,7 @@ msgstr "" "\n" " --target=TRIPLET krydsbyg for TRIPLET--f.eks., »armel-linux-gnu«" -#: guix/scripts/build.scm:237 +#: guix/scripts/build.scm:303 msgid "" "\n" " --with-source=SOURCE\n" @@ -234,7 +312,7 @@ msgstr "" " --with-source=KILDE\n" " brug KILDE når den tilsvarende pakke bygges" -#: guix/scripts/build.scm:240 +#: guix/scripts/build.scm:306 msgid "" "\n" " --no-grafts do not graft packages" @@ -242,7 +320,7 @@ msgstr "" "\n" " --no-grafts pod ikke pakker" -#: guix/scripts/build.scm:242 +#: guix/scripts/build.scm:308 msgid "" "\n" " -d, --derivations return the derivation paths of the given packages" @@ -250,7 +328,7 @@ msgstr "" "\n" " -d, --derivations returner de afledte stier for de givne pakker" -#: guix/scripts/build.scm:244 +#: guix/scripts/build.scm:310 msgid "" "\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n" @@ -260,7 +338,7 @@ msgstr "" " -r, --root=FIL gør FIL til en symbolsk henvisning for resultatet, og\n" " registrer den som en affaldsindsamlerroot" -#: guix/scripts/build.scm:247 +#: guix/scripts/build.scm:313 msgid "" "\n" " --log-file return the log file names for the given derivations" @@ -268,12 +346,14 @@ msgstr "" "\n" " --log-file returner logfilnavnen for de givne afledninger" -#: guix/scripts/build.scm:252 guix/scripts/download.scm:53 -#: guix/scripts/package.scm:464 guix/scripts/gc.scm:58 -#: guix/scripts/hash.scm:55 guix/scripts/import.scm:90 -#: guix/scripts/pull.scm:81 guix/scripts/substitute.scm:682 -#: guix/scripts/system.scm:400 guix/scripts/lint.scm:534 -#: guix/scripts/publish.scm:56 +#: guix/scripts/build.scm:318 guix/scripts/download.scm:54 +#: guix/scripts/package.scm:292 guix/scripts/gc.scm:70 +#: guix/scripts/hash.scm:56 guix/scripts/import.scm:91 +#: guix/scripts/import/cran.scm:44 guix/scripts/pull.scm:83 +#: guix/scripts/substitute.scm:752 guix/scripts/system.scm:556 +#: guix/scripts/lint.scm:741 guix/scripts/publish.scm:63 +#: guix/scripts/edit.scm:43 guix/scripts/size.scm:223 +#: guix/scripts/graph.scm:398 guix/scripts/challenge.scm:181 msgid "" "\n" " -h, --help display this help and exit" @@ -281,12 +361,14 @@ msgstr "" "\n" " -h, --help vis denne hjælpetekst og afslut" -#: guix/scripts/build.scm:254 guix/scripts/download.scm:55 -#: guix/scripts/package.scm:466 guix/scripts/gc.scm:60 -#: guix/scripts/hash.scm:57 guix/scripts/import.scm:92 -#: guix/scripts/pull.scm:83 guix/scripts/substitute.scm:684 -#: guix/scripts/system.scm:402 guix/scripts/lint.scm:538 -#: guix/scripts/publish.scm:58 +#: guix/scripts/build.scm:320 guix/scripts/download.scm:56 +#: guix/scripts/package.scm:294 guix/scripts/gc.scm:72 +#: guix/scripts/hash.scm:58 guix/scripts/import.scm:93 +#: guix/scripts/import/cran.scm:46 guix/scripts/pull.scm:85 +#: guix/scripts/substitute.scm:754 guix/scripts/system.scm:558 +#: guix/scripts/lint.scm:745 guix/scripts/publish.scm:65 +#: guix/scripts/edit.scm:45 guix/scripts/size.scm:225 +#: guix/scripts/graph.scm:400 guix/scripts/challenge.scm:183 msgid "" "\n" " -V, --version display version information and exit" @@ -294,7 +376,7 @@ msgstr "" "\n" " -V, --version vis versioninformation og afslut" -#: guix/scripts/build.scm:281 +#: guix/scripts/build.scm:347 #, scheme-format msgid "" "invalid argument: '~a' option argument: ~a, ~\n" @@ -303,17 +385,17 @@ msgstr "" "ugyldigt argument: »~a« tilvalgsargumentet: ~a, ~\n" "skal være »package«, »all« eller »transitive«~%" -#: guix/scripts/build.scm:404 +#: guix/scripts/build.scm:478 #, scheme-format msgid "sources do not match any package:~{ ~a~}~%" msgstr "kilder matcher ikke nogen pakke:~{ ~a~}~%" -#: guix/scripts/build.scm:453 +#: guix/scripts/build.scm:536 #, scheme-format msgid "no build log for '~a'~%" msgstr "ingen byggelog for »~a«~%" -#: guix/scripts/download.scm:44 +#: guix/scripts/download.scm:45 msgid "" "Usage: guix download [OPTION] URL\n" "Download the file at URL, add it to the store, and print its store path\n" @@ -329,7 +411,7 @@ msgstr "" "Understøttede formater: »nix-base32« (standard), »base32«, og »base16«\n" "(»hex« og »hexadecimal« kan også bruges).\n" -#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50 +#: guix/scripts/download.scm:51 guix/scripts/hash.scm:51 msgid "" "\n" " -f, --format=FMT write the hash in the given format" @@ -337,95 +419,61 @@ msgstr "" "\n" " -f, --format=FMT skriv hashen i det givne format" -#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75 +#: guix/scripts/download.scm:74 guix/scripts/hash.scm:76 #, scheme-format msgid "unsupported hash format: ~a~%" msgstr "ikke understøttet hash-format: ~a~%" -#: guix/scripts/download.scm:96 guix/scripts/gc.scm:122 -#: guix/scripts/pull.scm:217 guix/scripts/lint.scm:585 -#: guix/scripts/publish.scm:233 guix/ui.scm:829 -#, scheme-format -msgid "~A: unrecognized option~%" -msgstr "~A: ikke genkendt tilvalg~%" - -#: guix/scripts/download.scm:106 +#: guix/scripts/download.scm:107 #, scheme-format msgid "~a: failed to parse URI~%" msgstr "~a: kunne ikke fortolke URI~%" -#: guix/scripts/download.scm:117 +#: guix/scripts/download.scm:118 #, scheme-format msgid "~a: download failed~%" msgstr "~a: overførsel mislykkede~%" -#: guix/scripts/package.scm:108 -#, scheme-format -msgid "failed to build the empty profile~%" -msgstr "kunne ikke bygge den tomme profil~%" - -#: guix/scripts/package.scm:124 -#, scheme-format -msgid "switching from generation ~a to ~a~%" -msgstr "skifter fra generation ~a til ~a~%" - -#: guix/scripts/package.scm:143 -#, scheme-format -msgid "nothing to do: already at the empty profile~%" -msgstr "intet at udføre: allerede en tom profil~%" - -#: guix/scripts/package.scm:155 -#, scheme-format -msgid "deleting ~a~%" -msgstr "sletter ~a~%" - -#: guix/scripts/package.scm:268 +#: guix/scripts/package.scm:128 #, scheme-format msgid "not removing generation ~a, which is current~%" msgstr "fjerner ikke generation ~a, som er nuværende~%" -#: guix/scripts/package.scm:275 +#: guix/scripts/package.scm:135 #, scheme-format msgid "no matching generation~%" msgstr "ingen matchende generation~%" -#: guix/scripts/package.scm:278 guix/scripts/package.scm:917 +#: guix/scripts/package.scm:138 guix/scripts/package.scm:734 +#: guix/scripts/system.scm:396 #, scheme-format msgid "invalid syntax: ~a~%" msgstr "ugyldig syntaks: ~a~%" -#: guix/scripts/package.scm:340 -#, scheme-format -msgid "package `~a' lacks output `~a'~%" -msgstr "pakke »~a« mangler uddata »~a«~%" - -#: guix/scripts/package.scm:357 -#, scheme-format -msgid "~a: package not found~%" -msgstr "~a: pakken blev ikke fundet~%" - -#: guix/scripts/package.scm:401 +#: guix/scripts/package.scm:219 #, scheme-format msgid "The following environment variable definitions may be needed:~%" msgstr "De følgende miljøvariabeldefinitioner kan være krævet:~%" -#: guix/scripts/package.scm:417 +#: guix/scripts/package.scm:235 msgid "" -"Usage: guix package [OPTION]... PACKAGES...\n" -"Install, remove, or upgrade PACKAGES in a single transaction.\n" +"Usage: guix package [OPTION]...\n" +"Install, remove, or upgrade packages in a single transaction.\n" msgstr "" -"Brug: guix-pakke [TILVALG]... PAKKER...\n" -"Installer, fjern eller opgrader PAKKER i en enkel transaktion.\n" +"Brug: guix-pakke [TILVALG] ... \n" +"Installer, fjern eller opgrader pakker i en enkel transaktion.\n" -#: guix/scripts/package.scm:419 +#: guix/scripts/package.scm:237 msgid "" "\n" -" -i, --install=PACKAGE install PACKAGE" +" -i, --install PACKAGE ...\n" +" install PACKAGEs" msgstr "" "\n" -" -i, --install=PAKKE installer PAKKE" +" -i, --install PAKKE ...\n" +" installer PAKKER" -#: guix/scripts/package.scm:421 +#: guix/scripts/package.scm:240 msgid "" "\n" " -e, --install-from-expression=EXP\n" @@ -435,15 +483,29 @@ msgstr "" " -e, --install-from-expression=UDTRYK\n" " installer pakken UDTRYK evaluerer til" -#: guix/scripts/package.scm:424 +#: guix/scripts/package.scm:243 msgid "" "\n" -" -r, --remove=PACKAGE remove PACKAGE" +" -f, --install-from-file=FILE\n" +" install the package that the code within FILE\n" +" evaluates to" msgstr "" "\n" -" -r, --remove=PAKKE fjern PAKKE" +" -f, --install-from-file=FIL\n" +" installer pakken som koden i FIL evaluerer\n" +" til" -#: guix/scripts/package.scm:426 +#: guix/scripts/package.scm:247 +msgid "" +"\n" +" -r, --remove PACKAGE ...\n" +" remove PACKAGEs" +msgstr "" +"\n" +" -r, --remove PAKKE ...\n" +" fjern PAKKER" + +#: guix/scripts/package.scm:250 msgid "" "\n" " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" @@ -453,7 +515,17 @@ msgstr "" " opgrader alle de installerede pakker der matcher\n" " REGUDTRYK" -#: guix/scripts/package.scm:428 +#: guix/scripts/package.scm:252 +msgid "" +"\n" +" -m, --manifest=FILE create a new profile generation with the manifest\n" +" from FILE" +msgstr "" +"\n" +" -m, --manifest=FIL opret en ny profiloprettelse med manifestet fra\n" +" FIL" + +#: guix/scripts/package.scm:255 msgid "" "\n" " --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP" @@ -461,7 +533,7 @@ msgstr "" "\n" " --do-not--upgrade[=REGUDTRYK] opgrader ikke pakker der matcher REGUDTRYK" -#: guix/scripts/package.scm:430 +#: guix/scripts/package.scm:257 msgid "" "\n" " --roll-back roll back to the previous generation" @@ -469,15 +541,17 @@ msgstr "" "\n" " --roll-back rul tilbage til den forrige generation" -#: guix/scripts/package.scm:432 +#: guix/scripts/package.scm:259 msgid "" "\n" -" --search-paths display needed environment variable definitions" +" --search-paths[=KIND]\n" +" display needed environment variable definitions" msgstr "" "\n" -" --search-paths vis krævede miljøvariabeldefinitioner" +" --search-paths[=KIND]\n" +" vis krævede miljøvariabeldefinitioner" -#: guix/scripts/package.scm:434 +#: guix/scripts/package.scm:262 msgid "" "\n" " -l, --list-generations[=PATTERN]\n" @@ -487,7 +561,7 @@ msgstr "" " -l, --list-generations[=MØNSTER]\n" " vis generationer der matcher MØNSTER" -#: guix/scripts/package.scm:437 +#: guix/scripts/package.scm:265 msgid "" "\n" " -d, --delete-generations[=PATTERN]\n" @@ -497,7 +571,7 @@ msgstr "" " -d, --delete-generations[=MØNSTER]\n" " slet generationer der matcher MØNSTER" -#: guix/scripts/package.scm:440 +#: guix/scripts/package.scm:268 msgid "" "\n" " -S, --switch-generation=PATTERN\n" @@ -507,7 +581,7 @@ msgstr "" " -S, --switch-generation=MØNSTER\n" " skift til et generationsmatchende MØNSTER" -#: guix/scripts/package.scm:443 +#: guix/scripts/package.scm:271 msgid "" "\n" " -p, --profile=PROFILE use PROFILE instead of the user's default profile" @@ -515,7 +589,7 @@ msgstr "" "\n" " -p, --profile=PROFIL brug PROFIL i stedet for brugerens standardprofil" -#: guix/scripts/package.scm:446 +#: guix/scripts/package.scm:274 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the profile" @@ -523,7 +597,7 @@ msgstr "" "\n" " --bootstrap brug bootstrap Guile til at bygge profilen" -#: guix/scripts/package.scm:448 guix/scripts/pull.scm:74 +#: guix/scripts/package.scm:276 guix/scripts/pull.scm:76 msgid "" "\n" " --verbose produce verbose output" @@ -531,7 +605,7 @@ msgstr "" "\n" " --verbose lav uddybende uddata" -#: guix/scripts/package.scm:451 +#: guix/scripts/package.scm:279 msgid "" "\n" " -s, --search=REGEXP search in synopsis and description using REGEXP" @@ -539,7 +613,7 @@ msgstr "" "\n" " -s, --search=REGUDTRYK søg i synopsis og beskrivelse via REGUDTRYK" -#: guix/scripts/package.scm:453 +#: guix/scripts/package.scm:281 msgid "" "\n" " -I, --list-installed[=REGEXP]\n" @@ -549,7 +623,7 @@ msgstr "" " -I, --list-installed[=REGUDTRYK]\n" " vis installerede pakker der matcher REGUDTRYK" -#: guix/scripts/package.scm:456 +#: guix/scripts/package.scm:284 msgid "" "\n" " -A, --list-available[=REGEXP]\n" @@ -559,72 +633,77 @@ msgstr "" " -A, --list-available[=REGUDTRYK]\n" " vis tilgængelige pakker der matcher REGUDTRYK" -#: guix/scripts/package.scm:459 +#: guix/scripts/package.scm:287 msgid "" "\n" -" --show=PACKAGE show details about PACKAGE" +" --show=PACKAGE show details about PACKAGE" msgstr "" "\n" -" --show=PACKAGE vis detaljer om PAKKE" +" --show=PACKAGE vis detaljer om PAKKE" -#: guix/scripts/package.scm:730 +#: guix/scripts/package.scm:380 +#, scheme-format +msgid "~a: unsupported kind of search path~%" +msgstr "~a: ikke understøttet type af søgesti%" + +#: guix/scripts/package.scm:550 guix/scripts/publish.scm:357 #, scheme-format msgid "~A: extraneous argument~%" msgstr "~A: uvedkommende argument~%" -#: guix/scripts/package.scm:738 +#: guix/scripts/package.scm:558 #, scheme-format msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" -msgstr "Prøv »info '(guix) Invoking guix package« for yderligere information.~%" +msgstr "Prøv »info '(guix) Invoking guix package'« for yderligere information.~%" -#: guix/scripts/package.scm:760 +#: guix/scripts/package.scm:580 #, scheme-format msgid "error: while creating directory `~a': ~a~%" msgstr "fejl: under oprettelse af mappe »~a«: ~a~%" -#: guix/scripts/package.scm:764 +#: guix/scripts/package.scm:584 #, scheme-format msgid "Please create the `~a' directory, with you as the owner.~%" msgstr "Opret venligst mappen »~a«, med dig som ejer.~%" -#: guix/scripts/package.scm:771 +#: guix/scripts/package.scm:591 #, scheme-format msgid "error: directory `~a' is not owned by you~%" msgstr "fejl: mappen »~a« er ikke ejet af dig~%" -#: guix/scripts/package.scm:774 +#: guix/scripts/package.scm:594 #, scheme-format msgid "Please change the owner of `~a' to user ~s.~%" msgstr "Ændr venligst ejeren af »~a« til brugeren ~s.~%" -#: guix/scripts/package.scm:804 -#, scheme-format -msgid "cannot switch to generation '~a'~%" -msgstr "kan ikke skifte til generation »~a«~%" - -#: guix/scripts/package.scm:852 +#: guix/scripts/package.scm:628 #, scheme-format msgid "nothing to be done~%" msgstr "intet at udføre~%" -#: guix/scripts/package.scm:868 +#: guix/scripts/package.scm:644 #, scheme-format msgid "~a package in profile~%" msgid_plural "~a packages in profile~%" msgstr[0] "~a pakke i profil~%" msgstr[1] "~a pakker i profil~%" -#: guix/scripts/package.scm:883 +#: guix/scripts/package.scm:668 #, scheme-format -msgid "Generation ~a\t~a" -msgstr "Generation ~a\t~a" +msgid "cannot switch to generation '~a'~%" +msgstr "kan ikke skifte til generation »~a«~%" -#: guix/scripts/package.scm:890 +#: guix/scripts/package.scm:690 #, scheme-format -msgid "~a\t(current)~%" -msgstr "~a\t(nuværende)~%" +msgid "would install new manifest from '~a' with ~d entries~%" +msgstr "vil installere nyt manifest fra »~a« med ~d poster~%" -#: guix/scripts/gc.scm:39 +#: guix/scripts/package.scm:692 +#, scheme-format +msgid "installing new manifest from '~a' with ~d entries~%" +msgstr "installerer nyt manifest fra »~a« med ~d poster~%" + +#: guix/scripts/gc.scm:40 msgid "" "Usage: guix gc [OPTION]... PATHS...\n" "Invoke the garbage collector.\n" @@ -632,7 +711,7 @@ msgstr "" "Brug: guix gc [TILVALG]... STIER...\n" "Start affaldsindsamleren.\n" -#: guix/scripts/gc.scm:41 +#: guix/scripts/gc.scm:42 msgid "" "\n" " -C, --collect-garbage[=MIN]\n" @@ -642,7 +721,7 @@ msgstr "" " -C, --collect-garbage[=MIN]\n" " saml mindst MIN byte affald" -#: guix/scripts/gc.scm:44 +#: guix/scripts/gc.scm:45 msgid "" "\n" " -d, --delete attempt to delete PATHS" @@ -650,7 +729,15 @@ msgstr "" "\n" " -d, --delete forsøg at slette STIER" -#: guix/scripts/gc.scm:46 +#: guix/scripts/gc.scm:47 +msgid "" +"\n" +" --optimize optimize the store by deduplicating identical files" +msgstr "" +"\n" +" --optimize optimer lageret ved at fjerne identiske filer" + +#: guix/scripts/gc.scm:49 msgid "" "\n" " --list-dead list dead paths" @@ -658,7 +745,7 @@ msgstr "" "\n" " --list-dead vis døde stier" -#: guix/scripts/gc.scm:48 +#: guix/scripts/gc.scm:51 msgid "" "\n" " --list-live list live paths" @@ -666,7 +753,7 @@ msgstr "" "\n" " --list-live vis live stier" -#: guix/scripts/gc.scm:51 +#: guix/scripts/gc.scm:54 msgid "" "\n" " --references list the references of PATHS" @@ -674,7 +761,7 @@ msgstr "" "\n" " --references vis referencerne for STIER" -#: guix/scripts/gc.scm:53 +#: guix/scripts/gc.scm:56 msgid "" "\n" " -R, --requisites list the requisites of PATHS" @@ -682,7 +769,7 @@ msgstr "" "\n" " -R, --requisites vis rekvisitter for STIER" -#: guix/scripts/gc.scm:55 +#: guix/scripts/gc.scm:58 msgid "" "\n" " --referrers list the referrers of PATHS" @@ -690,12 +777,40 @@ msgstr "" "\n" " --referrers vis henvisninger for STIER" -#: guix/scripts/gc.scm:84 +#: guix/scripts/gc.scm:61 +msgid "" +"\n" +" --verify[=OPTS] verify the integrity of the store; OPTS is a\n" +" comma-separated combination of 'repair' and\n" +" 'contents'" +msgstr "" +"\n" +" --verify[=OPTS] verificer integriteten for lageret; OPTS er en\n" +" kommaadskilt kombination af »repair« og \n" +" »contents«" + +#: guix/scripts/gc.scm:65 +msgid "" +"\n" +" --list-failures list cached build failures" +msgstr "" +"\n" +" --list-failures vis mellemlagrede byggefejl" + +#: guix/scripts/gc.scm:67 +msgid "" +"\n" +" --clear-failures remove PATHS from the set of cached failures" +msgstr "" +"\n" +" --clear-failures fjern STIER fra sættet med mellemlagrede fejl" + +#: guix/scripts/gc.scm:96 #, scheme-format msgid "invalid amount of storage: ~a~%" msgstr "ugyldig lagermængde: ~a~%" -#: guix/scripts/hash.scm:45 +#: guix/scripts/hash.scm:46 msgid "" "Usage: guix hash [OPTION] FILE\n" "Return the cryptographic hash of FILE.\n" @@ -709,7 +824,7 @@ msgstr "" "Understøttede formater: »nix-base32« (standard), »base32« og »base16« (»hex«\n" "og »hexadecimal« kan også bruges).\n" -#: guix/scripts/hash.scm:52 +#: guix/scripts/hash.scm:53 msgid "" "\n" " -r, --recursive compute the hash on FILE recursively" @@ -717,17 +832,17 @@ msgstr "" "\n" " -r, --recursive beregn hashen på FIL rekursivt" -#: guix/scripts/hash.scm:103 +#: guix/scripts/hash.scm:104 #, scheme-format msgid "unrecognized option: ~a~%" msgstr "tilvalg blev ikke genkendt: ~a~%" -#: guix/scripts/hash.scm:134 guix/ui.scm:318 +#: guix/scripts/hash.scm:135 guix/ui.scm:458 #, scheme-format msgid "~a~%" msgstr "~a~%" -#: guix/scripts/hash.scm:137 +#: guix/scripts/hash.scm:138 guix/scripts/system.scm:685 #, scheme-format msgid "wrong number of arguments~%" msgstr "forkert antal argumenter~%" @@ -744,17 +859,77 @@ msgstr "" msgid "IMPORTER must be one of the importers listed below:\n" msgstr "IMPORTER skal være en af importørerne vist nedenfor:\n" -#: guix/scripts/import.scm:101 +#: guix/scripts/import.scm:102 #, scheme-format msgid "guix import: missing importer name~%" msgstr "guix import: mangler importørnavn~%" -#: guix/scripts/import.scm:112 +#: guix/scripts/import.scm:113 #, scheme-format msgid "guix import: invalid importer~%" msgstr "guix import: ugyldig importør~%" -#: guix/scripts/pull.scm:72 +#: guix/scripts/import/cran.scm:42 +msgid "" +"Usage: guix import cran PACKAGE-NAME\n" +"Import and convert the CRAN package for PACKAGE-NAME.\n" +msgstr "" +"Usage: guix import cran PAKKENAVN\n" +"Importer og konverter pakken CRAN for PAKKENAVN.\n" + +#: guix/scripts/import/cran.scm:87 +#, scheme-format +msgid "failed to download description for package '~a'~%" +msgstr "kunne ikke hente beskrivelse for pakke »~a«:~%" + +#: guix/scripts/import/cran.scm:91 guix/scripts/import/elpa.scm:95 +#, scheme-format +msgid "too few arguments~%" +msgstr "for få argumenter~%" + +#: guix/scripts/import/cran.scm:93 guix/scripts/import/elpa.scm:97 +#, scheme-format +msgid "too many arguments~%" +msgstr "for mange argumenter~%" + +#: guix/scripts/import/elpa.scm:41 +msgid "" +"Usage: guix import elpa PACKAGE-NAME\n" +"Import the latest package named PACKAGE-NAME from an ELPA repository.\n" +msgstr "" +"Brug: guix import elpa PAKKENAVN\n" +"Importer den seneste pakke navngivet PAKKENAVN fra et ELPA-arkiv.\n" + +#: guix/scripts/import/elpa.scm:43 +msgid "" +"\n" +" -a, --archive=ARCHIVE specify the archive repository" +msgstr "" +"\n" +" -a, --archive=ARKIV specificer arkivet" + +#: guix/scripts/import/elpa.scm:45 +msgid "" +"\n" +" -h, --help display this help and exit" +msgstr "" +"\n" +" -h, --help vis denne hjælpetekst og afslut" + +#: guix/scripts/import/elpa.scm:47 +msgid "" +"\n" +" -V, --version display version information and exit" +msgstr "" +"\n" +" -V, --version vis versioninformation og afslut" + +#: guix/scripts/import/elpa.scm:92 +#, scheme-format +msgid "failed to download package '~a'~%" +msgstr "kunne ikke hente pakken »~a«:~%" + +#: guix/scripts/pull.scm:74 msgid "" "Usage: guix pull [OPTION]...\n" "Download and deploy the latest version of Guix.\n" @@ -762,7 +937,7 @@ msgstr "" "Brug: guix pull [TILVALG]...\n" "Hent og udrul den seneste version af Guix.\n" -#: guix/scripts/pull.scm:76 +#: guix/scripts/pull.scm:78 msgid "" "\n" " --url=URL download the Guix tarball from URL" @@ -770,7 +945,7 @@ msgstr "" "\n" " --url=URL hent Guix-tarball'en fra ADRESSE" -#: guix/scripts/pull.scm:78 +#: guix/scripts/pull.scm:80 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the new Guix" @@ -778,128 +953,123 @@ msgstr "" "\n" " --bootstrap brug bootstrap Guile til at bygge den nye Guix" -#: guix/scripts/pull.scm:132 +#: guix/scripts/pull.scm:134 msgid "tarball did not produce a single source directory" msgstr "tarball fremstillede ikke en enkel kildemappe" -#: guix/scripts/pull.scm:150 +#: guix/scripts/pull.scm:152 #, scheme-format msgid "unpacking '~a'...~%" msgstr "udpakker »~a«...~%" -#: guix/scripts/pull.scm:159 +#: guix/scripts/pull.scm:161 msgid "failed to unpack source code" msgstr "kunne ikke udpakke kildekode" -#: guix/scripts/pull.scm:202 +#: guix/scripts/pull.scm:204 msgid "Guix already up to date\n" msgstr "Guix er allerede opdateret\n" -#: guix/scripts/pull.scm:207 +#: guix/scripts/pull.scm:209 #, scheme-format msgid "updated ~a successfully deployed under `~a'~%" msgstr "opdaterede ~a der med succes blev udrullet undet »~a«~%" -#: guix/scripts/pull.scm:210 +#: guix/scripts/pull.scm:212 #, scheme-format msgid "failed to update Guix, check the build log~%" msgstr "kunne ikke opdatere Guix, kontroller byggeloggen~%" -#: guix/scripts/pull.scm:219 +#: guix/scripts/pull.scm:221 #, scheme-format msgid "~A: unexpected argument~%" msgstr "~A: uventet argument~%" -#: guix/scripts/pull.scm:228 +#: guix/scripts/pull.scm:230 msgid "failed to download up-to-date source, exiting\n" msgstr "kunne ikke hente opdateret kilde, afslutter\n" -#: guix/scripts/substitute.scm:81 +#: guix/scripts/substitute.scm:103 #, scheme-format msgid "authentication and authorization of substitutes disabled!~%" msgstr "godkendelse og autorisation af substitutter er deaktiveret!~%" -#: guix/scripts/substitute.scm:157 +#: guix/scripts/substitute.scm:179 #, scheme-format msgid "download from '~a' failed: ~a, ~s~%" msgstr "hent fra »~a« mislykkedes: ~a, ~s~%" -#: guix/scripts/substitute.scm:169 +#: guix/scripts/substitute.scm:191 #, scheme-format msgid "while fetching ~a: server is somewhat slow~%" msgstr "under overførsel af ~a: server er noget langsom~%" -#: guix/scripts/substitute.scm:171 +#: guix/scripts/substitute.scm:193 #, scheme-format msgid "try `--no-substitutes' if the problem persists~%" msgstr "prøv »--no-substitutes« hvis problemet fortsætter~%" -#: guix/scripts/substitute.scm:214 -#, scheme-format -msgid "updating list of substitutes from '~a'...\r" -msgstr "opdaterer liste af substitutter fra »~a«...\r" - -#: guix/scripts/substitute.scm:246 +#: guix/scripts/substitute.scm:266 #, scheme-format msgid "signature version must be a number: ~s~%" msgstr "signaturversion skal være et nummer: ~s~%" -#: guix/scripts/substitute.scm:250 +#: guix/scripts/substitute.scm:270 #, scheme-format msgid "unsupported signature version: ~a~%" msgstr "signaturversion er ikke understøttet: ~a~%" -#: guix/scripts/substitute.scm:258 +#: guix/scripts/substitute.scm:278 #, scheme-format msgid "signature is not a valid s-expression: ~s~%" msgstr "signatur er ikke et gyldigt s-udtryk: ~s~%" -#: guix/scripts/substitute.scm:262 +#: guix/scripts/substitute.scm:282 #, scheme-format msgid "invalid format of the signature field: ~a~%" msgstr "ugyldigt format for signaturfeltet: ~a~%" -#: guix/scripts/substitute.scm:297 +#: guix/scripts/substitute.scm:317 #, scheme-format msgid "invalid signature for '~a'~%" msgstr "ugyldig signatur for »~a«~%" -#: guix/scripts/substitute.scm:299 +#: guix/scripts/substitute.scm:319 #, scheme-format msgid "hash mismatch for '~a'~%" msgstr "hash mismatch for »~a«~%" -#: guix/scripts/substitute.scm:301 +#: guix/scripts/substitute.scm:321 #, scheme-format msgid "'~a' is signed with an unauthorized key~%" msgstr "»~a« er underskrevet med en uautoriseret nøgle~%" -#: guix/scripts/substitute.scm:303 +#: guix/scripts/substitute.scm:323 #, scheme-format msgid "signature on '~a' is corrupt~%" msgstr "signatur på »~a« er ødelagt~%" -#: guix/scripts/substitute.scm:341 +#: guix/scripts/substitute.scm:361 #, scheme-format msgid "substitute at '~a' lacks a signature~%" msgstr "substitut på »~a« mangler en signatur~%" -#: guix/scripts/substitute.scm:504 +#: guix/scripts/substitute.scm:537 #, scheme-format msgid "updating list of substitutes from '~a'... ~5,1f%" msgstr "opdaterer liste af substitutter fra »~a«... ~5,1f%" -#: guix/scripts/substitute.scm:552 +#: guix/scripts/substitute.scm:591 #, scheme-format msgid "~s: unsupported server URI scheme~%" msgstr "~s: ikke understøttet server-URI-skema~%" -#: guix/scripts/substitute.scm:663 +#: guix/scripts/substitute.scm:733 #, scheme-format msgid "host name lookup error: ~a~%" msgstr "opslagsfejl for værtsnavn: ~a~%" -#: guix/scripts/substitute.scm:672 +#: guix/scripts/substitute.scm:742 msgid "" "Usage: guix substitute [OPTION]...\n" "Internal tool to substitute a pre-built binary to a local build.\n" @@ -907,7 +1077,7 @@ msgstr "" "Brug: guix substitute [TILVALG] ...\n" "Internt værktøj til at erstatte en præbygget binær fil med en lokal bygning.\n" -#: guix/scripts/substitute.scm:674 +#: guix/scripts/substitute.scm:744 msgid "" "\n" " --query report on the availability of substitutes for the\n" @@ -917,7 +1087,7 @@ msgstr "" " --query rapport om tilgængeligheden for substitutter for\n" " lagerfilnavnene sendt til standardind" -#: guix/scripts/substitute.scm:677 +#: guix/scripts/substitute.scm:747 msgid "" "\n" " --substitute STORE-FILE DESTINATION\n" @@ -929,21 +1099,11 @@ msgstr "" " hent LAGER-FIL og lagr den som en Nar i filen\n" " DESTINATION" -#: guix/scripts/substitute.scm:712 +#: guix/scripts/substitute.scm:872 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" msgstr "ACL for arkivimporter ser ikke ud til at være initialiseret, substitutter kan være utilgængelige\n" -#: guix/scripts/substitute.scm:750 -#, scheme-format -msgid "these substitute URLs will not be used:~{ ~a~}~%" -msgstr "disse substitutadresser vil ikke blive brugt:~{ ~a~}~%" - -#: guix/scripts/substitute.scm:776 -#, scheme-format -msgid "failed to look up host '~a' (~a), substituter disabled~%" -msgstr "kunne ikke slå vært op »~a« (~a), substitutter deaktiveret~%" - -#: guix/scripts/substitute.scm:883 +#: guix/scripts/substitute.scm:954 #, scheme-format msgid "~a: unrecognized options~%" msgstr "~a: ikke genkendte tilvalg~%" @@ -982,12 +1142,12 @@ msgstr "" msgid "wrong arguments" msgstr "forkerte argumenter" -#: guix/scripts/system.scm:106 +#: guix/scripts/system.scm:105 #, scheme-format msgid "failed to register '~a' under '~a'~%" msgstr "kunne ikke registrere »~a« under »~a«~%" -#: guix/scripts/system.scm:138 +#: guix/scripts/system.scm:137 #, scheme-format msgid "failed to install GRUB on device '~a'~%" msgstr "kunne ikke installere GRUB på enhed »~a«~%" @@ -997,58 +1157,127 @@ msgstr "kunne ikke installere GRUB på enhed »~a«~%" msgid "initializing the current root file system~%" msgstr "initialiserer det nuværende root-filsystem~%" -#: guix/scripts/system.scm:209 +#: guix/scripts/system.scm:169 #, scheme-format -msgid "activating system...~%" -msgstr "aktiverer system ...~%" +msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%" +msgstr "kører ikke som »root«, så ejerskabet af »~a« kan være forkert!~%" -#: guix/scripts/system.scm:259 +#: guix/scripts/system.scm:219 #, scheme-format msgid "unrecognized boot parameters for '~a'~%" msgstr "ikke genkendte opstartsparametre for »~a«~%" -#: guix/scripts/system.scm:355 +#: guix/scripts/system.scm:254 +#, scheme-format +msgid "activating system...~%" +msgstr "aktiverer system ...~%" + +#: guix/scripts/system.scm:338 +msgid "the DAG of services" +msgstr "DAG'en for tjenester" + +#: guix/scripts/system.scm:351 +msgid "the dependency graph of dmd services" +msgstr "afhængighedsgrafen for dmd-tjenester" + +#: guix/scripts/system.scm:369 +#, scheme-format +msgid " file name: ~a~%" +msgstr " filnavn: ~a~%" + +#: guix/scripts/system.scm:370 +#, scheme-format +msgid " canonical file name: ~a~%" +msgstr " kanonisk filnavn: ~a~%" + +#. TRANSLATORS: Please preserve the two-space indentation. +#: guix/scripts/system.scm:374 +#, scheme-format +msgid " label: ~a~%" +msgstr " etikelt: ~a~%" + +#: guix/scripts/system.scm:375 +#, scheme-format +msgid " root device: ~a~%" +msgstr " root-enhed: ~a~%" + +#: guix/scripts/system.scm:376 +#, scheme-format +msgid " kernel: ~a~%" +msgstr " kerne: ~a~%" + +#: guix/scripts/system.scm:476 #, scheme-format msgid "initializing operating system under '~a'...~%" msgstr "initialiserer operativsystem under »~a«...~%" -#: guix/scripts/system.scm:371 +#: guix/scripts/system.scm:515 msgid "" -"Usage: guix system [OPTION] ACTION FILE\n" +"Usage: guix system [OPTION] ACTION [FILE]\n" "Build the operating system declared in FILE according to ACTION.\n" msgstr "" -"Brug: guix system [TILVALG] HANDLING FIL\n" +"Brug: guix system [TILVALG] HANDLING [FIL]\n" "Byg operativsystemet deklæret i FIL jævnfør HANDLING.\n" -#: guix/scripts/system.scm:374 +#: guix/scripts/system.scm:518 msgid "The valid values for ACTION are:\n" msgstr "De gyldige værdier for HANDLING er:\n" -#: guix/scripts/system.scm:375 -msgid " - 'reconfigure', switch to a new operating system configuration\n" -msgstr " - »reconfigure«, skift til en ny operativsystemkonfiguration\n" +#: guix/scripts/system.scm:520 +msgid " reconfigure switch to a new operating system configuration\n" +msgstr " reconfigure skift til en ny operativsystemkonfiguration\n" -#: guix/scripts/system.scm:377 -msgid " - 'build', build the operating system without installing anything\n" -msgstr " - »build«, byg operativsystemet uden at installere noget\n" +#: guix/scripts/system.scm:522 +msgid " list-generations list the system generations\n" +msgstr " list-generations viser systemoprettelserne\n" -#: guix/scripts/system.scm:379 -msgid " - 'vm', build a virtual machine image that shares the host's store\n" -msgstr " - »vm«, byg et virtuelt maskinaftryk som deler værtens lager\n" +#: guix/scripts/system.scm:524 +msgid " build build the operating system without installing anything\n" +msgstr " build byg operativsystemet uden at installere noget\n" -#: guix/scripts/system.scm:381 -msgid " - 'vm-image', build a freestanding virtual machine image\n" -msgstr " - »vm-image«, byg et fritstående virtuelt maskinaftryk\n" +#: guix/scripts/system.scm:526 +msgid " vm build a virtual machine image that shares the host's store\n" +msgstr " vm byg et virtuelt maskinaftryk som deler værtens lager\n" -#: guix/scripts/system.scm:383 -msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" -msgstr " - »disk-image«, byg et diskaftryk, egnet for et USB-drev\n" +#: guix/scripts/system.scm:528 +msgid " vm-image build a freestanding virtual machine image\n" +msgstr " vm-image byg et fritstående virtuelt maskinaftryk\n" -#: guix/scripts/system.scm:385 -msgid " - 'init', initialize a root file system to run GNU.\n" -msgstr " - »init«, initialiser et rootfilsystem til at køre GNU.\n" +#: guix/scripts/system.scm:530 +msgid " disk-image build a disk image, suitable for a USB stick\n" +msgstr " disk-image byg et diskaftryk, egnet for et USB-drev\n" -#: guix/scripts/system.scm:389 +#: guix/scripts/system.scm:532 +msgid " init initialize a root file system to run GNU\n" +msgstr " init initialiser et rootfilsystem til at køre GNU.\n" + +#: guix/scripts/system.scm:534 +msgid " extension-graph emit the service extension graph in Dot format\n" +msgstr " extension-graph udsend tjenesteudvidelsesgrafen i Dot-format\n" + +#: guix/scripts/system.scm:536 +msgid " dmd-graph emit the graph of dmd services in Dot format\n" +msgstr " dmd-graph udsend grafen for dmd-tjenester i Dot-format\n" + +#: guix/scripts/system.scm:540 +msgid "" +"\n" +" -d, --derivation return the derivation of the given system" +msgstr "" +"\n" +" -d, --derivation returner de afledte stier for det givne system" + +#: guix/scripts/system.scm:542 +msgid "" +"\n" +" --on-error=STRATEGY\n" +" apply STRATEGY when an error occurs while reading FILE" +msgstr "" +"\n" +" --on-error=STRATEGI\n" +" brug STRATEGI når den opstår en fejl under læsning af FIL" + +#: guix/scripts/system.scm:545 msgid "" "\n" " --image-size=SIZE for 'vm-image', produce an image of SIZE" @@ -1056,7 +1285,7 @@ msgstr "" "\n" " --image-size=STR for »vm-image«, lav et aftryk af STR" -#: guix/scripts/system.scm:391 +#: guix/scripts/system.scm:547 msgid "" "\n" " --no-grub for 'init', do not install GRUB" @@ -1064,7 +1293,7 @@ msgstr "" "\n" " --no-grub for »init«, installer ikke GRUB" -#: guix/scripts/system.scm:393 +#: guix/scripts/system.scm:549 msgid "" "\n" " --share=SPEC for 'vm', share host file system according to SPEC" @@ -1072,7 +1301,7 @@ msgstr "" "\n" " --share=SPEC for »vm«, del værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:395 +#: guix/scripts/system.scm:551 msgid "" "\n" " --expose=SPEC for 'vm', expose host file system according to SPEC" @@ -1080,7 +1309,7 @@ msgstr "" "\n" " --expose=SPEC for »vm«, fremvis værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:397 +#: guix/scripts/system.scm:553 msgid "" "\n" " --full-boot for 'vm', make a full boot sequence" @@ -1088,36 +1317,50 @@ msgstr "" "\n" " --full-boot for »vm«, lav en fuld opstartssekvens" -#: guix/scripts/system.scm:484 -#, scheme-format -msgid "~a: unknown action~%" -msgstr "~a: ukendt handling~%" - -#: guix/scripts/system.scm:499 -#, scheme-format -msgid "wrong number of arguments for action '~a'~%" -msgstr "forkert antal argumenter for handling »~a«~%" - -#: guix/scripts/system.scm:522 +#: guix/scripts/system.scm:637 #, scheme-format msgid "no configuration file specified~%" msgstr "ingen konfigurationsfil angivet~%" -#: guix/scripts/lint.scm:90 +#: guix/scripts/system.scm:700 +#, scheme-format +msgid "~a: unknown action~%" +msgstr "~a: ukendt handling~%" + +#: guix/scripts/system.scm:715 +#, scheme-format +msgid "wrong number of arguments for action '~a'~%" +msgstr "forkert antal argumenter for handling »~a«~%" + +#: guix/scripts/system.scm:720 +#, scheme-format +msgid "guix system: missing command name~%" +msgstr "guix system: mangler kommandonavn~%" + +#: guix/scripts/system.scm:722 +#, scheme-format +msgid "Try 'guix system --help' for more information.~%" +msgstr "Prøv »guix system --help« for yderligere information.~%" + +#: guix/scripts/lint.scm:124 #, scheme-format msgid "Available checkers:~%" msgstr "Tilgængelige kontrolprogrammer:~%" -#: guix/scripts/lint.scm:110 +#: guix/scripts/lint.scm:144 msgid "description should not be empty" msgstr "beskrivelse skal være udfyldt" -#: guix/scripts/lint.scm:117 +#: guix/scripts/lint.scm:154 +msgid "Texinfo markup in description is invalid" +msgstr "Texinfo-opmærkning i beskrivelse er ugyldig" + +#: guix/scripts/lint.scm:162 msgid "description should start with an upper-case letter or digit" msgstr "beskrivelse skal starte med et stort bogstav eller et tal" # arg, hvad foregår der her -#: guix/scripts/lint.scm:133 +#: guix/scripts/lint.scm:178 #, scheme-format msgid "" "sentences in description should be followed ~\n" @@ -1126,133 +1369,181 @@ msgstr "" "sætninger i beskrivelsen skal efterfølges ~\n" "af to mellemrum; mulig infraction~p ved ~{~a~^, ~}" -#: guix/scripts/lint.scm:154 +#: guix/scripts/lint.scm:202 msgid "pkg-config should probably be a native input" msgstr "pkg-config skal sandsynligvis være standarddata" -#: guix/scripts/lint.scm:169 +#: guix/scripts/lint.scm:217 msgid "synopsis should not be empty" msgstr "synopsis skal være udfyldt" -#: guix/scripts/lint.scm:177 +#: guix/scripts/lint.scm:225 msgid "no period allowed at the end of the synopsis" msgstr "ingen periode er tilladt i slutningen af synopsen" -#: guix/scripts/lint.scm:189 +#: guix/scripts/lint.scm:237 msgid "no article allowed at the beginning of the synopsis" msgstr "ingen artikel er tilladt i begyndelsen af synopsen" -#: guix/scripts/lint.scm:196 +#: guix/scripts/lint.scm:244 msgid "synopsis should be less than 80 characters long" msgstr "synopsis skal være mindre end 80 tegn lang" -#: guix/scripts/lint.scm:202 +#: guix/scripts/lint.scm:250 msgid "synopsis should start with an upper-case letter or digit" msgstr "synopsis skal starte med et stort bogstav eller et tal" -#: guix/scripts/lint.scm:209 +#: guix/scripts/lint.scm:257 msgid "synopsis should not start with the package name" msgstr "synopsis skal ikke starte med pakkenavnet" -#: guix/scripts/lint.scm:299 guix/scripts/lint.scm:310 +#: guix/scripts/lint.scm:348 guix/scripts/lint.scm:360 #, scheme-format msgid "URI ~a not reachable: ~a (~s)" msgstr "URI ~a kan ikke nås: ~a (~s)" -#: guix/scripts/lint.scm:316 +#: guix/scripts/lint.scm:367 #, scheme-format msgid "URI ~a domain not found: ~a" msgstr "URI ~a domæne blev ikke fundet: ~a" -#: guix/scripts/lint.scm:324 +#: guix/scripts/lint.scm:375 #, scheme-format msgid "URI ~a unreachable: ~a" msgstr "URI ~a kan ikke nås: ~a" -#: guix/scripts/lint.scm:350 +#: guix/scripts/lint.scm:401 msgid "invalid value for home page" msgstr "ugyldig værdi for hjemmeside" -#: guix/scripts/lint.scm:353 +#: guix/scripts/lint.scm:404 #, scheme-format msgid "invalid home page URL: ~s" msgstr "ugyldig hjemmesideadresse: ~s" -#: guix/scripts/lint.scm:378 +#: guix/scripts/lint.scm:429 msgid "file names of patches should start with the package name" msgstr "filnavn for rettelser skal starte med pakkenavnet" -#: guix/scripts/lint.scm:416 +#: guix/scripts/lint.scm:467 #, scheme-format msgid "~a: ~a: proposed synopsis: ~s~%" msgstr "~a: ~a: foreslået synopsis: ~s~%" -#: guix/scripts/lint.scm:428 +#: guix/scripts/lint.scm:479 #, scheme-format msgid "~a: ~a: proposed description:~% \"~a\"~%" msgstr "~a: ~a: foreslået beskrivelse:~% »~a«~%" -#: guix/scripts/lint.scm:453 guix/scripts/lint.scm:457 +#: guix/scripts/lint.scm:516 +msgid "all the source URIs are unreachable:" +msgstr "alle kilde-URI'erne kan ikke nås:" + +#: guix/scripts/lint.scm:539 +msgid "the source file name should contain the package name" +msgstr "kildefilnavnet skal indeholde pakkenavnet" + +#: guix/scripts/lint.scm:548 guix/scripts/lint.scm:552 #, scheme-format msgid "failed to create derivation: ~a" msgstr "kunne ikke oprette afledning: ~a" -#: guix/scripts/lint.scm:463 +#: guix/scripts/lint.scm:558 #, scheme-format msgid "failed to create derivation: ~s~%" msgstr "kunne ikke oprette afledning: ~s~%" -#: guix/scripts/lint.scm:476 +#: guix/scripts/lint.scm:568 +msgid "invalid license field" +msgstr "ugyldigt licensfelt" + +#: guix/scripts/lint.scm:582 +#, scheme-format +msgid "tabulation on line ~a, column ~a" +msgstr "tabulering på linje ~a, kolonne ~a" + +#: guix/scripts/lint.scm:591 +#, scheme-format +msgid "trailing white space on line ~a" +msgstr "efterstillet mellemrum på linje ~a" + +#: guix/scripts/lint.scm:601 +#, scheme-format +msgid "line ~a is way too long (~a characters)" +msgstr "linjen ~a er alt for lang (~a tegn)" + +#: guix/scripts/lint.scm:612 +#, scheme-format +msgid "line ~a: parentheses feel lonely, move to the previous or next line" +msgstr "linjen ~a: parenteser er ensomme, flyt til den forrige eller næste linje" + +#: guix/scripts/lint.scm:667 msgid "Validate package descriptions" msgstr "Valider pakkebeskrivelser" -#: guix/scripts/lint.scm:480 +#: guix/scripts/lint.scm:671 msgid "Validate synopsis & description of GNU packages" msgstr "Valider synopsis og beskrivelse for GNU-pakker" -#: guix/scripts/lint.scm:484 +#: guix/scripts/lint.scm:675 msgid "Identify inputs that should be native inputs" msgstr "Identificer inddata som skal være standarddata" -#: guix/scripts/lint.scm:488 +#: guix/scripts/lint.scm:679 msgid "Validate file names and availability of patches" msgstr "Valider filnavne og tilgængelighed for rettelser" -#: guix/scripts/lint.scm:492 +#: guix/scripts/lint.scm:683 msgid "Validate home-page URLs" msgstr "Valider hjemmesiders adresser" -#: guix/scripts/lint.scm:496 +#. TRANSLATORS: is the name of a data type and must not be +#. translated. +#: guix/scripts/lint.scm:689 +msgid "Make sure the 'license' field is a or a list thereof" +msgstr "Sikr at feltet »license« er en eller en liste deraf" + +#: guix/scripts/lint.scm:694 msgid "Validate source URLs" msgstr "Valider kildeadresser" -#: guix/scripts/lint.scm:500 +#: guix/scripts/lint.scm:698 +msgid "Validate file names of sources" +msgstr "Valider filnavne for kilder" + +#: guix/scripts/lint.scm:702 msgid "Report failure to compile a package to a derivation" msgstr "Rapporter mislykket kompilering af en pakke til en afledning" -#: guix/scripts/lint.scm:504 +#: guix/scripts/lint.scm:706 msgid "Validate package synopses" msgstr "Valider pakkesynopser" -#: guix/scripts/lint.scm:529 +#: guix/scripts/lint.scm:710 +msgid "Look for formatting issues in the source" +msgstr "Kig efter formateringsproblemstillinger i kilden" + +#: guix/scripts/lint.scm:735 msgid "" "Usage: guix lint [OPTION]... [PACKAGE]...\n" -"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n" +"Run a set of checkers on the specified package; if none is specified,\n" +"run the checkers on all packages.\n" msgstr "" "Brug: guix lint [TILVALG]... [PAKKE]...\n" -"Kør et sæt af kontroller på den specificerede pakke; hvis ingen er specificeret, så kør kontrollerne på alle pakker.\n" +"Kør et sæt af kontroller på den specificerede pakke; hvis ingen er specificeret,\n" +"så kør kontrollerne på alle pakker.\n" -#: guix/scripts/lint.scm:531 +#: guix/scripts/lint.scm:738 msgid "" "\n" " -c, --checkers=CHECKER1,CHECKER2...\n" -" only run the specificed checkers" +" only run the specified checkers" msgstr "" "\n" " -c, --checkers=KONTROL1,KONTROL2...\n" " kør kun de specificerede kontroller" -#: guix/scripts/lint.scm:536 +#: guix/scripts/lint.scm:743 msgid "" "\n" " -l, --list-checkers display the list of available lint checkers" @@ -1260,12 +1551,12 @@ msgstr "" "\n" " -l, --list-checkers vis listen med tilgængelige lint-kontroller" -#: guix/scripts/lint.scm:556 +#: guix/scripts/lint.scm:763 #, scheme-format msgid "~a: invalid checker~%" msgstr "~a: ugyldig kontrol~%" -#: guix/scripts/publish.scm:49 +#: guix/scripts/publish.scm:52 #, scheme-format msgid "" "Usage: guix publish [OPTION]...\n" @@ -1274,7 +1565,7 @@ msgstr "" "Brug: guix publish [TILVALG] ...\n" "Udgiv ~a over HTTP.\n" -#: guix/scripts/publish.scm:51 +#: guix/scripts/publish.scm:54 msgid "" "\n" " -p, --port=PORT listen on PORT" @@ -1282,7 +1573,23 @@ msgstr "" "\n" " -p, --port=PORT lyt på PORT" -#: guix/scripts/publish.scm:53 +#: guix/scripts/publish.scm:56 +msgid "" +"\n" +" --listen=HOST listen on the network interface for HOST" +msgstr "" +"\n" +" --listen=VÆRT lyt på netværksgrænsefladen efter VÆRT" + +#: guix/scripts/publish.scm:58 +msgid "" +"\n" +" -u, --user=USER change privileges to USER as soon as possible" +msgstr "" +"\n" +" -u, --user=BRUGER ændr privilegier for BRUGER så snart som muligt" + +#: guix/scripts/publish.scm:60 msgid "" "\n" " -r, --repl[=PORT] spawn REPL server on PORT" @@ -1290,62 +1597,294 @@ msgstr "" "\n" " -r, --repl[=PORT] udsend REPL-server on PORT" -#: guix/scripts/publish.scm:235 +#: guix/scripts/publish.scm:76 #, scheme-format -msgid "~A: extraneuous argument~%" -msgstr "~A: uvedkommende argument~%" +msgid "lookup of host '~a' failed: ~a~%" +msgstr "opslag efter værten »~a« mislykkedes: ~a~%" -#: guix/scripts/publish.scm:239 +#: guix/scripts/publish.scm:100 #, scheme-format -msgid "publishing ~a on port ~d~%" -msgstr "udgiver ~a på port ~d~%" +msgid "lookup of host '~a' returned nothing" +msgstr "opslag efter værten »~a« returnerede intet" -#: guix/gnu-maintenance.scm:447 +#: guix/scripts/publish.scm:343 +#, scheme-format +msgid "user '~a' not found: ~a~%" +msgstr "brugeren »~a« blev ikke fundet: ~a~%" + +#: guix/scripts/publish.scm:378 +#, scheme-format +msgid "server running as root; consider using the '--user' option!~%" +msgstr "server kører som root; overvej at bruge tilvalget »--user«!~%" + +#: guix/scripts/publish.scm:380 +#, scheme-format +msgid "publishing ~a on ~a, port ~d~%" +msgstr "udgiver ~a på ~a, port ~d~%" + +#: guix/scripts/edit.scm:40 +msgid "" +"Usage: guix edit PACKAGE...\n" +"Start $EDITOR to edit the definitions of PACKAGE...\n" +msgstr "" +"Brug: guix edit PAKKE...\n" +"Start $EDITOR for at redigere definitionerne for PAKKE...\n" + +#: guix/scripts/edit.scm:58 +#, scheme-format +msgid "file '~a' not found in search path ~s~%" +msgstr "filen »~a« blev ikke fundet i søgestien ~s~%" + +#: guix/scripts/edit.scm:70 +#, scheme-format +msgid "source location of package '~a' is unknown~%" +msgstr "kildeplacering for pakken »~a« er ukendt~%" + +#: guix/scripts/size.scm:75 +#, scheme-format +msgid "no available substitute information for '~a'~%" +msgstr "ingen tilgængelig substitutinformation for »~a«~%" + +#: guix/scripts/size.scm:83 +msgid "store item" +msgstr "lagerpost" + +#: guix/scripts/size.scm:83 +msgid "total" +msgstr "i alt" + +#: guix/scripts/size.scm:83 +msgid "self" +msgstr "selv" + +#. TRANSLATORS: This is the title of a graph, meaning that the graph +#. represents a profile of the store (the "store" being the place where +#. packages are stored.) +#: guix/scripts/size.scm:204 +msgid "store profile" +msgstr "lagerprofil" + +#: guix/scripts/size.scm:213 +msgid "" +"Usage: guix size [OPTION]... PACKAGE\n" +"Report the size of PACKAGE and its dependencies.\n" +msgstr "" +"Brug: guix size [TILVALG]... PAKKE\n" +"Rapporter størrelsen for PAKKE og dens afhængigheder.\n" + +#: guix/scripts/size.scm:218 +msgid "" +"\n" +" -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"" +msgstr "" +"\n" +" -s, --system=SYSTEM overvej pakker for SYSTEM--f.eks., »i686-linux«" + +#: guix/scripts/size.scm:220 +msgid "" +"\n" +" -m, --map-file=FILE write to FILE a graphical map of disk usage" +msgstr "" +"\n" +" -m, --map-file=FIL skriv til FIL et grafisk kort over diskforbrug" + +#: guix/scripts/size.scm:274 +msgid "missing store item argument\n" +msgstr "manglende lagerpostargument\n" + +#: guix/scripts/size.scm:292 +msgid "too many arguments\n" +msgstr "for mange argumenter\n" + +#: guix/scripts/graph.scm:105 +msgid "the DAG of packages, excluding implicit inputs" +msgstr "DAG'en for pakker, ekskluderende implicitte inddata" + +#: guix/scripts/graph.scm:155 +msgid "the DAG of packages, including implicit inputs" +msgstr "DAG'en for pakker, inkluderende implicitte inddata" + +#: guix/scripts/graph.scm:179 +msgid "same as 'bag', but without the bootstrap nodes" +msgstr "samme som »bag«m uden bootstrap-knuder" + +#: guix/scripts/graph.scm:222 +msgid "the DAG of derivations" +msgstr "DAG'en for afledninger" + +#: guix/scripts/graph.scm:246 +#, scheme-format +msgid "references for '~a' are not known~%" +msgstr "referencer for »~a« er ikke kendt~%" + +#: guix/scripts/graph.scm:253 +msgid "the DAG of run-time dependencies (store references)" +msgstr "DAG'en for kørselstidsafhængigheder (lagerreferencer)" + +#: guix/scripts/graph.scm:282 +#, scheme-format +msgid "~a: unknown node type~%" +msgstr "~a: ukendt knudetype~%" + +#: guix/scripts/graph.scm:286 +msgid "The available node types are:\n" +msgstr "De gyldige knudetyper er:\n" + +#. TRANSLATORS: Here 'dot' is the name of a program; it must not be +#. translated. +#: guix/scripts/graph.scm:389 +msgid "" +"Usage: guix graph PACKAGE...\n" +"Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n" +msgstr "" +"Brug: guix graph PAKKE...\n" +"Udsend en Graphviz-repræsentation (dot) af afhængighederne for PAKKE...\n" + +#: guix/scripts/graph.scm:391 +msgid "" +"\n" +" -t, --type=TYPE represent nodes of the given TYPE" +msgstr "" +"\n" +" -t, --type=TYPE repræsenter knuder for den givne TYPE" + +#: guix/scripts/graph.scm:393 +msgid "" +"\n" +" --list-types list the available graph types" +msgstr "" +"\n" +" --list-types vis de tilgængelige graftyper" + +#: guix/scripts/graph.scm:395 +msgid "" +"\n" +" -e, --expression=EXPR consider the package EXPR evaluates to" +msgstr "" +"\n" +" -e, --expression=UDTRYK overvej pakken UDTRYK evaluerer til" + +#: guix/scripts/challenge.scm:104 +#, scheme-format +msgid "~a: no substitute at '~a'~%" +msgstr "~a: ingen substitut på »~a«~%" + +#: guix/scripts/challenge.scm:120 +#, scheme-format +msgid "no substitutes for '~a'~%" +msgstr "ingen substitutter for »~a«~%" + +#: guix/scripts/challenge.scm:137 guix/scripts/challenge.scm:157 +#, scheme-format +msgid "no local build for '~a'~%" +msgstr "ingen lokal bygning for »~a«~%" + +#: guix/scripts/challenge.scm:154 +#, scheme-format +msgid "~a contents differ:~%" +msgstr "~a indhold er forskelligt:~%" + +#: guix/scripts/challenge.scm:156 +#, scheme-format +msgid " local hash: ~a~%" +msgstr " lokal hash: ~a~%" + +#: guix/scripts/challenge.scm:161 +#, scheme-format +msgid " ~50a: ~a~%" +msgstr " ~50a: ~a~%" + +#: guix/scripts/challenge.scm:165 +#, scheme-format +msgid " ~50a: unavailable~%" +msgstr " ~50a: utilgængelig~%" + +#: guix/scripts/challenge.scm:175 +msgid "" +"Usage: guix challenge [PACKAGE...]\n" +"Challenge the substitutes for PACKAGE... provided by one or more servers.\n" +msgstr "" +"Brug: guix challenge [PAKKE...]\n" +"Ændr substitutterne for PAKKE... tilbudt af en eller flere servere.\n" + +#: guix/scripts/challenge.scm:177 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" compare build results with those at URLS" +msgstr "" +"\n" +" --substitute-urls=ADRESSER\n" +" sammenlign byggeresultater med dem på ADRESSER" + +#: guix/gnu-maintenance.scm:418 +msgid "Updater for GNU packages" +msgstr "Opdater for GNU-pakker" + +#: guix/upstream.scm:156 #, scheme-format msgid "signature verification failed for `~a'~%" msgstr "signaturverifikation mislykkedes for »~a«~%" -#: guix/gnu-maintenance.scm:449 +#: guix/upstream.scm:158 #, scheme-format msgid "(could be because the public key is not in your keyring)~%" msgstr "(kunne være fordi den offentlige nøgle ikke er i din nøglering)~%" -#: guix/gnu-maintenance.scm:524 +#: guix/upstream.scm:190 +msgid "gz" +msgstr "gz" + +#: guix/upstream.scm:253 #, scheme-format msgid "~a: could not locate source file" msgstr "~a: kunne ikke lokalisere kildefil" -#: guix/gnu-maintenance.scm:529 +#: guix/upstream.scm:258 #, scheme-format msgid "~a: ~a: no `version' field in source; skipping~%" msgstr "~a: ~a: intet »versionsfelt« i kilde; udelader~%" -#: guix/ui.scm:142 guix/ui.scm:159 +#: guix/ui.scm:234 +msgid "entering debugger; type ',bt' for a backtrace\n" +msgstr "går i fejlsøger; tast »,bt« for en tilbagesporing\n" + +#: guix/ui.scm:250 guix/ui.scm:267 #, scheme-format msgid "failed to load '~a': ~a~%" msgstr "kunne ikke indlæse »~a«: ~a~%" -#: guix/ui.scm:145 +#: guix/ui.scm:253 #, scheme-format msgid "~a: error: ~a~%" msgstr "~a: fejl: ~a~%" -#: guix/ui.scm:149 guix/ui.scm:165 +#: guix/ui.scm:256 guix/ui.scm:510 +#, scheme-format +msgid "exception thrown: ~s~%" +msgstr "undtagelse smidt: ~s~%" + +#: guix/ui.scm:258 guix/ui.scm:276 #, scheme-format msgid "failed to load '~a':~%" msgstr "kunne ikke indlæse »~a«:~%" -#: guix/ui.scm:162 +#: guix/ui.scm:270 #, scheme-format msgid "~a: warning: ~a~%" msgstr "~a: advarsel: ~a~%" -#: guix/ui.scm:174 +#: guix/ui.scm:273 +#, scheme-format +msgid "failed to load '~a': exception thrown: ~s~%" +msgstr "kunne ikke indlæse »~a«: undtagelse smidt: ~s~%" + +#: guix/ui.scm:285 #, scheme-format msgid "failed to install locale: ~a~%" msgstr "kunne ikke installere sprog: ~a~%" -#: guix/ui.scm:193 +#: guix/ui.scm:304 msgid "" "Copyright (C) 2015 the Guix authors\n" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1357,7 +1896,7 @@ msgstr "" "Dette er et frit program; du kan frit ændre og videredistribuere programmet.\n" "Der er INGEN GARANTI, inden for lovens rammer.\n" -#: guix/ui.scm:201 +#: guix/ui.scm:312 #, scheme-format msgid "" "\n" @@ -1366,7 +1905,7 @@ msgstr "" "\n" "Rapporter fejl til: ~a." -#: guix/ui.scm:203 +#: guix/ui.scm:314 #, scheme-format msgid "" "\n" @@ -1375,7 +1914,7 @@ msgstr "" "\n" "~a hjemmeside: <~a>" -#: guix/ui.scm:205 +#: guix/ui.scm:316 msgid "" "\n" "General help using GNU software: " @@ -1383,194 +1922,219 @@ msgstr "" "\n" "Generel hjælp til brugen af GNU-programmer: " -#: guix/ui.scm:227 +#: guix/ui.scm:361 +#, scheme-format +msgid "'~a' is not a valid regular expression: ~a~%" +msgstr "»~a« er ikke et gyldigt regulært udtryk: ~a~%" + +#: guix/ui.scm:367 #, scheme-format msgid "~a: invalid number~%" msgstr "~a: ugyldigt nummer~%" -#: guix/ui.scm:244 +#: guix/ui.scm:384 #, scheme-format msgid "invalid number: ~a~%" msgstr "ugyldigt nummer: ~a~%" -#: guix/ui.scm:267 +#: guix/ui.scm:407 #, scheme-format msgid "unknown unit: ~a~%" msgstr "ukendt enhed: ~a~%" -#: guix/ui.scm:278 +#: guix/ui.scm:418 #, scheme-format msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" msgstr "~a:~a:~a: pakken »~a« har ugyldige inddata: ~s~%" -#: guix/ui.scm:285 +#: guix/ui.scm:425 #, scheme-format msgid "~a: ~a: build system `~a' does not support cross builds~%" msgstr "~a: ~a: byggesystem »~a« understøtter ikke krydsbygninger~%" -#: guix/ui.scm:290 +#: guix/ui.scm:430 #, scheme-format msgid "profile '~a' does not exist~%" msgstr "profilen »~a« findes ikke~%" -#: guix/ui.scm:293 +#: guix/ui.scm:433 #, scheme-format msgid "generation ~a of profile '~a' does not exist~%" msgstr "oprettelse ~a af profilen »~a« findes ikke~%" -#: guix/ui.scm:300 +#: guix/ui.scm:440 #, scheme-format msgid "corrupt input while restoring '~a' from ~s~%" msgstr "ødelagte inddata under gendannelse af »~a« fra ~s~%" -#: guix/ui.scm:302 +#: guix/ui.scm:442 #, scheme-format msgid "corrupt input while restoring archive from ~s~%" msgstr "ødelagte inddata under gendannelse af arkiv fra ~s~%" -#: guix/ui.scm:305 +#: guix/ui.scm:445 #, scheme-format msgid "failed to connect to `~a': ~a~%" msgstr "kunne ikke forbinde til »~a«: ~a~%" -#: guix/ui.scm:310 +#: guix/ui.scm:450 #, scheme-format msgid "build failed: ~a~%" msgstr "bygning mislykkedes: ~a~%" -#: guix/ui.scm:313 +#: guix/ui.scm:453 #, scheme-format msgid "reference to invalid output '~a' of derivation '~a'~%" msgstr "reference til ugyldige uddata »~a« for afledning »~a«~%" -#: guix/ui.scm:324 +#: guix/ui.scm:464 #, scheme-format msgid "~a: ~a~%" msgstr "~a: ~a~%" -#: guix/ui.scm:343 +#: guix/ui.scm:499 #, scheme-format msgid "failed to read expression ~s: ~s~%" msgstr "kunne ikke læse udtryk ~s: ~s~%" -#: guix/ui.scm:349 +#: guix/ui.scm:505 #, scheme-format -msgid "failed to evaluate expression `~a': ~s~%" -msgstr "kunne ikke evaluere udtryk »~a«: ~s~%" +msgid "failed to evaluate expression '~a':~%" +msgstr "kunne ikke evaluere udtryk »~a«:~%" -#: guix/ui.scm:358 +#: guix/ui.scm:508 +#, scheme-format +msgid "syntax error: ~a~%" +msgstr "syntaksfejl: ~a~%" + +#: guix/ui.scm:522 #, scheme-format msgid "expression ~s does not evaluate to a package~%" msgstr "udtryk ~s evaluerer ikke til en pakke~%" -#: guix/ui.scm:410 +#: guix/ui.scm:582 #, scheme-format msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende afledning ville blive bygget:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende afledninger ville blive bygget:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:415 +#: guix/ui.scm:587 #, scheme-format msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende fil ville blive hentet:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende filer ville blive hentet:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:421 +#: guix/ui.scm:593 #, scheme-format msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende afledning vil blive bygget:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende afledninger vil blive bygget:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:426 +#: guix/ui.scm:598 #, scheme-format msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Den følgende fil vil blive hentet:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende filer vil blive hentet:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:478 +#: guix/ui.scm:653 #, scheme-format msgid "The following package would be removed:~%~{~a~%~}~%" msgid_plural "The following packages would be removed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive fjernet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive fjernet:~%~{~a~%~}~%" -#: guix/ui.scm:483 +#: guix/ui.scm:658 #, scheme-format msgid "The following package will be removed:~%~{~a~%~}~%" msgid_plural "The following packages will be removed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive fjernet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive fjernet:~%~{~a~%~}~%" -#: guix/ui.scm:496 +#: guix/ui.scm:671 #, scheme-format msgid "The following package would be downgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive nedgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive nedgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:501 +#: guix/ui.scm:676 #, scheme-format msgid "The following package will be downgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive nedgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive nedgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:514 +#: guix/ui.scm:689 #, scheme-format msgid "The following package would be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive opgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive opgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:519 +#: guix/ui.scm:694 #, scheme-format msgid "The following package will be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive opgraderet:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive opgraderet:~%~{~a~%~}~%" -#: guix/ui.scm:530 +#: guix/ui.scm:705 #, scheme-format msgid "The following package would be installed:~%~{~a~%~}~%" msgid_plural "The following packages would be installed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke ville blive installeret:~%~{~a~%~}~%" msgstr[1] "De følgende pakker ville blive installeret:~%~{~a~%~}~%" -#: guix/ui.scm:535 +#: guix/ui.scm:710 #, scheme-format msgid "The following package will be installed:~%~{~a~%~}~%" msgid_plural "The following packages will be installed:~%~{~a~%~}~%" msgstr[0] "Den følgende pakke vil blive installeret:~%~{~a~%~}~%" msgstr[1] "De følgende pakker vil blive installeret:~%~{~a~%~}~%" -#: guix/ui.scm:552 +#: guix/ui.scm:727 msgid "" msgstr "" -#: guix/ui.scm:578 +#: guix/ui.scm:746 #, scheme-format msgid "failed to create configuration directory `~a': ~a~%" msgstr "kunne ikke oprette konfiguratinsmappe »~a«: ~a~%" -#: guix/ui.scm:680 guix/ui.scm:694 +#: guix/ui.scm:865 guix/ui.scm:879 msgid "unknown" msgstr "ukendt" -#: guix/ui.scm:803 +#: guix/ui.scm:1029 #, scheme-format -msgid "invalid argument: ~a~%" -msgstr "ugyldigt argument: ~a~%" +msgid "Generation ~a\t~a" +msgstr "Generation ~a\t~a" -#: guix/ui.scm:842 +#: guix/ui.scm:1036 +#, scheme-format +msgid "~a\t(current)~%" +msgstr "~a\t(nuværende)~%" + +#: guix/ui.scm:1053 +#, scheme-format +msgid "switched from generation ~a to ~a~%" +msgstr "skiftede fra generation ~a til ~a~%" + +#: guix/ui.scm:1069 +#, scheme-format +msgid "deleting ~a~%" +msgstr "sletter ~a~%" + +#: guix/ui.scm:1117 #, scheme-format msgid "Try `guix --help' for more information.~%" msgstr "Prøv »guix --help« for yderligere information.~%" -#: guix/ui.scm:869 +#: guix/ui.scm:1144 msgid "" "Usage: guix COMMAND ARGS...\n" "Run COMMAND with ARGS.\n" @@ -1578,31 +2142,31 @@ msgstr "" "Brug: guix KOMMANDO ARG...\n" "Kør KOMMANDO med ARG.\n" -#: guix/ui.scm:872 +#: guix/ui.scm:1147 msgid "COMMAND must be one of the sub-commands listed below:\n" msgstr "KOMMANDO skal være en af underkommandoerne vist nedenfor:\n" -#: guix/ui.scm:892 +#: guix/ui.scm:1167 #, scheme-format msgid "guix: ~a: command not found~%" msgstr "guix: ~a: kommando blev ikke fundet~%" -#: guix/ui.scm:910 +#: guix/ui.scm:1184 #, scheme-format msgid "guix: missing command name~%" msgstr "guix: mangler kommandonavn~%" -#: guix/ui.scm:918 +#: guix/ui.scm:1192 #, scheme-format msgid "guix: unrecognized option '~a'~%" msgstr "guix: ikke genkendt tilvalg »~a«~%" -#: guix/http-client.scm:211 +#: guix/http-client.scm:228 #, scheme-format msgid "following redirection to `~a'...~%" msgstr "følger omdirigering til »~a«...~%" -#: guix/http-client.scm:220 +#: guix/http-client.scm:237 msgid "download failed" msgstr "overførsel mislykkedes" @@ -1648,20 +2212,121 @@ msgstr "importeret fil mangler en signatur" msgid "invalid inter-file archive mark" msgstr "ugyldig arkivmærke for mellemfil" -#~ msgid "Downloading, please wait...~%" -#~ msgstr "Henter, vent venligst ...~%" +#: nix/nix-daemon/guix-daemon.cc:61 +msgid "guix-daemon -- perform derivation builds and store accesses" +msgstr "guix-daemon - udfør afledningsbygninger og lageradgange" -#~ msgid "(Please consider upgrading Guile to get proper progress report.)~%" -#~ msgstr "(Overvej venligst at opgradere Guile for at få korrekt statusrapport.)~%" +#: nix/nix-daemon/guix-daemon.cc:63 +msgid "This program is a daemon meant to run in the background. It serves requests sent over a Unix-domain socket. It accesses the store, and builds derivations on behalf of its clients." +msgstr "Dette program er en ædmon lavet til at køre i baggrunden. Den betjener forespørgsler sendt over en Unix-domænesokkel. Den tilgår lageret, og bgyger afledninger på vegne af dens klienter." -#~ msgid "failed to open operating system file '~a': ~a~%" -#~ msgstr "kunne ikke åbne operativsystemfil »~a«: ~a~%" +#: nix/nix-daemon/guix-daemon.cc:86 +msgid "SYSTEM" +msgstr "SYSTEM" -#~ msgid "failed to load operating system file '~a':~%" -#~ msgstr "kunne ikke indlæse operativsystemfil »~a«:~%" +#: nix/nix-daemon/guix-daemon.cc:87 +msgid "assume SYSTEM as the current system type" +msgstr "antag SYSTEM som den nuværende systemtype" -#~ msgid "using Guile ~a, which does not support ~s encoding~%" -#~ msgstr "bruger Guile ~a, som ikke understøtter ~s-kodning~%" +#: nix/nix-daemon/guix-daemon.cc:88 nix/nix-daemon/guix-daemon.cc:91 +msgid "N" +msgstr "N" -#~ msgid "download failed; use a newer Guile~%" -#~ msgstr "overførsel mislykkedes; brug en nyere Guile~%" +#: nix/nix-daemon/guix-daemon.cc:89 +msgid "use N CPU cores to build each derivation; 0 means as many as available" +msgstr "brug N CPU-kerner til at bygge hver afledning; 0 betyder så mange som er tilgængelige" + +#: nix/nix-daemon/guix-daemon.cc:92 +msgid "allow at most N build jobs" +msgstr "tillad højest N-byggejob" + +#: nix/nix-daemon/guix-daemon.cc:94 +msgid "disable chroot builds" +msgstr "deaktiver chroot-bygninger" + +#: nix/nix-daemon/guix-daemon.cc:95 +msgid "DIR" +msgstr "MAPPE" + +#: nix/nix-daemon/guix-daemon.cc:96 +msgid "add DIR to the build chroot" +msgstr "tilføj MAPPE til byggechrooten" + +#: nix/nix-daemon/guix-daemon.cc:97 +msgid "GROUP" +msgstr "GRUPPE" + +#: nix/nix-daemon/guix-daemon.cc:98 +msgid "perform builds as a user of GROUP" +msgstr "udfør bygninger som en bruger i GRUPPE" + +#: nix/nix-daemon/guix-daemon.cc:100 +msgid "do not use substitutes" +msgstr "brug ikke substitutter" + +#: nix/nix-daemon/guix-daemon.cc:101 +msgid "URLS" +msgstr "ADRESSER" + +#: nix/nix-daemon/guix-daemon.cc:102 +msgid "use URLS as the default list of substitute providers" +msgstr "brug ADRESSER som standardlisten for substitutleverandører" + +#: nix/nix-daemon/guix-daemon.cc:104 +msgid "do not use the 'build hook'" +msgstr "brug ikke »build hook«" + +#: nix/nix-daemon/guix-daemon.cc:106 +msgid "cache build failures" +msgstr "mellemlagerbyggefejl" + +#: nix/nix-daemon/guix-daemon.cc:108 +msgid "do not keep build logs" +msgstr "bevar ikke byggelogge" + +#: nix/nix-daemon/guix-daemon.cc:110 +msgid "disable compression of the build logs" +msgstr "deaktiver komprimering af byggelogge" + +#: nix/nix-daemon/guix-daemon.cc:115 +msgid "disable automatic file \"deduplication\" in the store" +msgstr "deaktiver automatisk »fildeduplikation« i lageret" + +#: nix/nix-daemon/guix-daemon.cc:125 +msgid "impersonate Linux 2.6" +msgstr "udgiv Linux 2.6" + +#: nix/nix-daemon/guix-daemon.cc:129 +msgid "tell whether the GC must keep outputs of live derivations" +msgstr "fortæl om GC'en skal bevare uddata for live afledninger" + +#: nix/nix-daemon/guix-daemon.cc:132 +msgid "tell whether the GC must keep derivations corresponding to live outputs" +msgstr "fortæl om GC'en skal bevare afledninger svarende til live uddata" + +#: nix/nix-daemon/guix-daemon.cc:135 +msgid "SOCKET" +msgstr "SOKKEL" + +#: nix/nix-daemon/guix-daemon.cc:136 +msgid "listen for connections on SOCKET" +msgstr "lyt efter forbindelser på SOKKEL" + +#: nix/nix-daemon/guix-daemon.cc:138 +msgid "produce debugging output" +msgstr "lav fejlsøgningsinformation" + +#: nix/nix-daemon/guix-daemon.cc:205 nix/nix-daemon/guix-daemon.cc:381 +#, c-format +msgid "error: %s\n" +msgstr "fejl: %s\n" + +#: nix/nix-daemon/guix-daemon.cc:266 +#, c-format +msgid "error: libgcrypt version mismatch\n" +msgstr "fejl: forskellige versioner af libgcrypt\n" + +#: nix/nix-daemon/guix-daemon.cc:357 +#, c-format +msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" +msgstr "advarsel: dæmon kører som root, så brug af »--build-users-group« anbefales\n" diff --git a/po/guix/de.po b/po/guix/de.po index 4a3c90e4cf..1e3105236e 100644 --- a/po/guix/de.po +++ b/po/guix/de.po @@ -1,14 +1,14 @@ # German translation of guix. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. -# Mario Blättermann , 2014. +# Mario Blättermann , 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: guix 0.8\n" +"Project-Id-Version: guix 0.9.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2014-11-09 22:32+0100\n" -"PO-Revision-Date: 2014-11-10 20:50+0100\n" +"POT-Creation-Date: 2015-10-28 16:31+0100\n" +"PO-Revision-Date: 2015-11-29 16:01+0100\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "Language: de\n" @@ -16,181 +16,294 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.5\n" -#: gnu/packages.scm:120 +#: gnu/packages.scm:80 +#, scheme-format +msgid "~a: patch not found" +msgstr "~a: Patch nicht gefunden" + +#: gnu/packages.scm:91 +#, scheme-format +msgid "could not find bootstrap binary '~a' for system '~a'" +msgstr "" + +#: gnu/packages.scm:143 #, scheme-format msgid "cannot access `~a': ~a~%" msgstr "Zugriff auf »~a« nicht möglich: ~a~%" -#: gnu/packages.scm:350 +#: gnu/packages.scm:388 #, scheme-format msgid "looking for the latest release of GNU ~a..." msgstr "Nach der letzten Veröffentlichung von GNU ~a wird gesucht …" -#: gnu/packages.scm:354 +#: gnu/packages.scm:395 #, scheme-format msgid "~a: note: using ~a but ~a is available upstream~%" msgstr "" -#: gnu/packages.scm:376 guix/scripts/package.scm:305 +#: gnu/packages.scm:417 gnu/packages.scm:452 #, scheme-format msgid "ambiguous package specification `~a'~%" msgstr "Nicht eindeutige Paketangabe »~a«~%" -#: gnu/packages.scm:377 guix/scripts/package.scm:307 +#: gnu/packages.scm:418 gnu/packages.scm:454 #, scheme-format msgid "choosing ~a from ~a~%" msgstr "" -#: gnu/packages.scm:383 +#: gnu/packages.scm:424 #, scheme-format msgid "~A: package not found for version ~a~%" msgstr "~A: Paket nicht gefunden für Version ~a~%" -#: gnu/packages.scm:385 +#: gnu/packages.scm:426 #, scheme-format msgid "~A: unknown package~%" msgstr "~A: unbekanntes Paket~%" -#: guix/scripts/build.scm:65 +#: gnu/packages.scm:442 +#, scheme-format +msgid "package `~a' lacks output `~a'~%" +msgstr "" + +#: gnu/packages.scm:459 +#, scheme-format +msgid "~a: package not found~%" +msgstr "~a: Paket nicht gefunden~%" + +#: gnu/services.scm:376 +#, scheme-format +msgid "no target of type '~a' for service ~s" +msgstr "" + +#: gnu/services.scm:387 gnu/services.scm:447 +#, scheme-format +msgid "more than one target service of type '~a'" +msgstr "" + +#: gnu/services.scm:437 +#, scheme-format +msgid "service of type '~a' not found" +msgstr "Dienst des Typs »~a« wurde nicht gefunden" + +#: gnu/system.scm:547 +#, scheme-format +msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%" +msgstr "" + +#: gnu/system.scm:563 +#, scheme-format +msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%" +msgstr "" + +#: gnu/system.scm:646 +msgid "system locale lacks a definition" +msgstr "" + +#: gnu/services/dmd.scm:131 +#, scheme-format +msgid "service '~a' provided more than once" +msgstr "" + +#: gnu/system/shadow.scm:213 +#, scheme-format +msgid "supplementary group '~a' of user '~a' is undeclared" +msgstr "" + +#: gnu/system/shadow.scm:223 +#, scheme-format +msgid "primary group '~a' of user '~a' is undeclared" +msgstr "" + +#: guix/scripts.scm:52 +#, scheme-format +msgid "invalid argument: ~a~%" +msgstr "Ungültiges Argument: ~a~%" + +#: guix/scripts.scm:78 guix/scripts/download.scm:97 guix/scripts/gc.scm:157 +#: guix/scripts/import/cran.scm:72 guix/scripts/import/elpa.scm:77 +#: guix/scripts/pull.scm:219 guix/scripts/lint.scm:792 +#: guix/scripts/publish.scm:355 +#, scheme-format +msgid "~A: unrecognized option~%" +msgstr "~A: nicht erkannte Option~%" + +#: guix/scripts/build.scm:107 #, scheme-format msgid "failed to create GC root `~a': ~a~%" msgstr "" -#: guix/scripts/build.scm:102 +#: guix/scripts/build.scm:151 msgid "" "\n" " -L, --load-path=DIR prepend DIR to the package module search path" msgstr "" -#: guix/scripts/build.scm:104 +#: guix/scripts/build.scm:153 msgid "" "\n" " -K, --keep-failed keep build tree of failed builds" msgstr "" -#: guix/scripts/build.scm:106 +#: guix/scripts/build.scm:155 msgid "" "\n" " -n, --dry-run do not build the derivations" msgstr "" +"\n" +" -n, --dry-run die Ableitungen nicht erstellen" -#: guix/scripts/build.scm:108 +#: guix/scripts/build.scm:157 msgid "" "\n" " --fallback fall back to building when the substituter fails" msgstr "" -#: guix/scripts/build.scm:110 +#: guix/scripts/build.scm:159 msgid "" "\n" " --no-substitutes build instead of resorting to pre-built substitutes" msgstr "" -#: guix/scripts/build.scm:112 +#: guix/scripts/build.scm:161 guix/scripts/size.scm:215 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" fetch substitute from URLS if they are authorized" +msgstr "" + +#: guix/scripts/build.scm:164 msgid "" "\n" " --no-build-hook do not attempt to offload builds via the build hook" msgstr "" -#: guix/scripts/build.scm:114 +#: guix/scripts/build.scm:166 msgid "" "\n" " --max-silent-time=SECONDS\n" " mark the build as failed after SECONDS of silence" msgstr "" -#: guix/scripts/build.scm:117 +#: guix/scripts/build.scm:169 msgid "" "\n" " --timeout=SECONDS mark the build as failed after SECONDS of activity" msgstr "" -#: guix/scripts/build.scm:119 +#: guix/scripts/build.scm:171 msgid "" "\n" " --verbosity=LEVEL use the given verbosity LEVEL" msgstr "" +"\n" +" --verbosity=STUFE die angegebene Ausführlichkeitsstufe verwenden" -#: guix/scripts/build.scm:121 +#: guix/scripts/build.scm:173 msgid "" "\n" " -c, --cores=N allow the use of up to N CPU cores for the build" msgstr "" +"\n" +" -c, --cores=N bis zu N Prozessorkerne für die Erstellung nutzen" -#: guix/scripts/build.scm:195 +#: guix/scripts/build.scm:175 +msgid "" +"\n" +" -M, --max-jobs=N allow at most N build jobs" +msgstr "" + +#: guix/scripts/build.scm:261 guix/scripts/build.scm:268 #, scheme-format -msgid "~a: not a number~%" -msgstr "~a: keine Zahl~%" +msgid "not a number: '~a' option argument: ~a~%" +msgstr "" -#: guix/scripts/build.scm:213 +#: guix/scripts/build.scm:287 msgid "" "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" msgstr "" -#: guix/scripts/build.scm:215 +#: guix/scripts/build.scm:289 msgid "" "\n" " -e, --expression=EXPR build the package or derivation EXPR evaluates to" msgstr "" -#: guix/scripts/build.scm:217 +#: guix/scripts/build.scm:291 +msgid "" +"\n" +" -f, --file=FILE build the package or derivation that the code within\n" +" FILE evaluates to" +msgstr "" + +#: guix/scripts/build.scm:294 msgid "" "\n" " -S, --source build the packages' source derivations" msgstr "" -#: guix/scripts/build.scm:219 +#: guix/scripts/build.scm:296 +msgid "" +"\n" +" --sources[=TYPE] build source derivations; TYPE may optionally be one\n" +" of \"package\", \"all\" (default), or \"transitive\"" +msgstr "" + +#: guix/scripts/build.scm:299 msgid "" "\n" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" msgstr "" -#: guix/scripts/build.scm:221 +#: guix/scripts/build.scm:301 msgid "" "\n" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" msgstr "" -#: guix/scripts/build.scm:223 +#: guix/scripts/build.scm:303 msgid "" "\n" " --with-source=SOURCE\n" " use SOURCE when building the corresponding package" msgstr "" -#: guix/scripts/build.scm:226 +#: guix/scripts/build.scm:306 msgid "" "\n" " --no-grafts do not graft packages" msgstr "" -#: guix/scripts/build.scm:228 +#: guix/scripts/build.scm:308 msgid "" "\n" " -d, --derivations return the derivation paths of the given packages" msgstr "" -#: guix/scripts/build.scm:230 +#: guix/scripts/build.scm:310 msgid "" "\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n" " as a garbage collector root" msgstr "" -#: guix/scripts/build.scm:233 +#: guix/scripts/build.scm:313 msgid "" "\n" " --log-file return the log file names for the given derivations" msgstr "" -#: guix/scripts/build.scm:238 guix/scripts/download.scm:53 -#: guix/scripts/package.scm:451 guix/scripts/gc.scm:58 -#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81 -#: guix/scripts/substitute-binary.scm:560 guix/scripts/system.scm:371 -#: guix/scripts/lint.scm:262 +#: guix/scripts/build.scm:318 guix/scripts/download.scm:54 +#: guix/scripts/package.scm:292 guix/scripts/gc.scm:70 +#: guix/scripts/hash.scm:56 guix/scripts/import.scm:91 +#: guix/scripts/import/cran.scm:44 guix/scripts/pull.scm:83 +#: guix/scripts/substitute.scm:752 guix/scripts/system.scm:556 +#: guix/scripts/lint.scm:741 guix/scripts/publish.scm:63 +#: guix/scripts/edit.scm:43 guix/scripts/size.scm:223 +#: guix/scripts/graph.scm:398 guix/scripts/challenge.scm:181 msgid "" "\n" " -h, --help display this help and exit" @@ -198,11 +311,14 @@ msgstr "" "\n" " -h, --help diese Hilfe anzeigen und beenden" -#: guix/scripts/build.scm:240 guix/scripts/download.scm:55 -#: guix/scripts/package.scm:453 guix/scripts/gc.scm:60 -#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83 -#: guix/scripts/substitute-binary.scm:562 guix/scripts/system.scm:373 -#: guix/scripts/lint.scm:266 +#: guix/scripts/build.scm:320 guix/scripts/download.scm:56 +#: guix/scripts/package.scm:294 guix/scripts/gc.scm:72 +#: guix/scripts/hash.scm:58 guix/scripts/import.scm:93 +#: guix/scripts/import/cran.scm:46 guix/scripts/pull.scm:85 +#: guix/scripts/substitute.scm:754 guix/scripts/system.scm:558 +#: guix/scripts/lint.scm:745 guix/scripts/publish.scm:65 +#: guix/scripts/edit.scm:45 guix/scripts/size.scm:225 +#: guix/scripts/graph.scm:400 guix/scripts/challenge.scm:183 msgid "" "\n" " -V, --version display version information and exit" @@ -210,25 +326,24 @@ msgstr "" "\n" " -V, --version Versionsinformation anzeigen und beenden" -#: guix/scripts/build.scm:366 +#: guix/scripts/build.scm:347 +#, scheme-format +msgid "" +"invalid argument: '~a' option argument: ~a, ~\n" +"must be one of 'package', 'all', or 'transitive'~%" +msgstr "" + +#: guix/scripts/build.scm:478 #, scheme-format msgid "sources do not match any package:~{ ~a~}~%" msgstr "" -#: guix/scripts/build.scm:395 guix/scripts/download.scm:96 -#: guix/scripts/package.scm:673 guix/scripts/gc.scm:122 -#: guix/scripts/pull.scm:213 guix/scripts/system.scm:426 -#: guix/scripts/lint.scm:313 -#, scheme-format -msgid "~A: unrecognized option~%" -msgstr "~A: nicht erkannte Option~%" - -#: guix/scripts/build.scm:423 +#: guix/scripts/build.scm:536 #, scheme-format msgid "no build log for '~a'~%" msgstr "Kein Erstellungsprotokoll für »~a«~%" -#: guix/scripts/download.scm:44 +#: guix/scripts/download.scm:45 msgid "" "Usage: guix download [OPTION] URL\n" "Download the file at URL, add it to the store, and print its store path\n" @@ -238,7 +353,7 @@ msgid "" "('hex' and 'hexadecimal' can be used as well).\n" msgstr "" -#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50 +#: guix/scripts/download.scm:51 guix/scripts/hash.scm:51 msgid "" "\n" " -f, --format=FMT write the hash in the given format" @@ -246,142 +361,153 @@ msgstr "" "\n" " -f, --format=FORMAT die Prüfsumme im angegebenen Format schreiben" -#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75 +#: guix/scripts/download.scm:74 guix/scripts/hash.scm:76 #, scheme-format msgid "unsupported hash format: ~a~%" msgstr "Nicht unterstütztes Prüfsummenformat: ~a~%" -#: guix/scripts/download.scm:106 +#: guix/scripts/download.scm:107 #, scheme-format msgid "~a: failed to parse URI~%" msgstr "~a: URI~% konnte nicht verarbeitet werden" -#: guix/scripts/download.scm:117 +#: guix/scripts/download.scm:118 #, scheme-format msgid "~a: download failed~%" msgstr "~a: Herunterladen fehlgeschlagen~%" -#: guix/scripts/package.scm:97 +#: guix/scripts/package.scm:128 #, scheme-format -msgid "failed to build the empty profile~%" -msgstr "Leeres Profil konnte nicht erstellt werden~%" - -#: guix/scripts/package.scm:113 -#, scheme-format -msgid "switching from generation ~a to ~a~%" +msgid "not removing generation ~a, which is current~%" msgstr "" -#: guix/scripts/package.scm:132 +#: guix/scripts/package.scm:135 #, scheme-format -msgid "nothing to do: already at the empty profile~%" -msgstr "Nichts zu tun: bereits im leeren Profil~%" +msgid "no matching generation~%" +msgstr "Keine passende Generation%" -#: guix/scripts/package.scm:144 +#: guix/scripts/package.scm:138 guix/scripts/package.scm:734 +#: guix/scripts/system.scm:396 #, scheme-format -msgid "deleting ~a~%" -msgstr "~a wird gelöscht~%" +msgid "invalid syntax: ~a~%" +msgstr "Unzulässige Syntax: ~a~%" -#: guix/scripts/package.scm:295 -#, scheme-format -msgid "package `~a' lacks output `~a'~%" -msgstr "" - -#: guix/scripts/package.scm:312 -#, scheme-format -msgid "~a: package not found~%" -msgstr "~a: Paket nicht gefunden~%" - -#: guix/scripts/package.scm:390 +#: guix/scripts/package.scm:219 #, scheme-format msgid "The following environment variable definitions may be needed:~%" msgstr "Die Definition folgender Umgebungsvariablen könnte nötig sein:~%" -#: guix/scripts/package.scm:406 +#: guix/scripts/package.scm:235 msgid "" -"Usage: guix package [OPTION]... PACKAGES...\n" -"Install, remove, or upgrade PACKAGES in a single transaction.\n" +"Usage: guix package [OPTION]...\n" +"Install, remove, or upgrade packages in a single transaction.\n" msgstr "" -"Aufruf: guix package [OPTION] … PAKETE …\n" +"Aufruf: guix package [OPTION]...\n" "Pakete in einer einzigen Transaktion installieren,\n" "entfernen oder aktualisieren.\n" -#: guix/scripts/package.scm:408 +#: guix/scripts/package.scm:237 msgid "" "\n" -" -i, --install=PACKAGE install PACKAGE" +" -i, --install PACKAGE ...\n" +" install PACKAGEs" msgstr "" "\n" -" -i, --install=PAKET PAKET installieren" +" -i, --install=PAKET PAKET oder PAKETE installieren" -#: guix/scripts/package.scm:410 +#: guix/scripts/package.scm:240 msgid "" "\n" " -e, --install-from-expression=EXP\n" " install the package EXP evaluates to" msgstr "" -#: guix/scripts/package.scm:413 +#: guix/scripts/package.scm:243 msgid "" "\n" -" -r, --remove=PACKAGE remove PACKAGE" +" -f, --install-from-file=FILE\n" +" install the package that the code within FILE\n" +" evaluates to" +msgstr "" + +#: guix/scripts/package.scm:247 +msgid "" +"\n" +" -r, --remove PACKAGE ...\n" +" remove PACKAGEs" msgstr "" "\n" -" -r, --remove=PAKET PAKET entfernen" +" -r, --remove=PAKET PAKET oder PAKETE entfernen" -#: guix/scripts/package.scm:415 +#: guix/scripts/package.scm:250 msgid "" "\n" " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" msgstr "" -#: guix/scripts/package.scm:417 +#: guix/scripts/package.scm:252 +msgid "" +"\n" +" -m, --manifest=FILE create a new profile generation with the manifest\n" +" from FILE" +msgstr "" + +#: guix/scripts/package.scm:255 +msgid "" +"\n" +" --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP" +msgstr "" + +#: guix/scripts/package.scm:257 msgid "" "\n" " --roll-back roll back to the previous generation" msgstr "" -#: guix/scripts/package.scm:419 +#: guix/scripts/package.scm:259 msgid "" "\n" -" --search-paths display needed environment variable definitions" +" --search-paths[=KIND]\n" +" display needed environment variable definitions" msgstr "" "\n" -" --search-paths benötigte Definitionen von Umgebungsvariablen anzeigen" +" --search-paths[=ART]\n" +" benötigte Definitionen von Umgebungsvariablen anzeigen" -#: guix/scripts/package.scm:421 +#: guix/scripts/package.scm:262 msgid "" "\n" " -l, --list-generations[=PATTERN]\n" " list generations matching PATTERN" msgstr "" -#: guix/scripts/package.scm:424 +#: guix/scripts/package.scm:265 msgid "" "\n" " -d, --delete-generations[=PATTERN]\n" " delete generations matching PATTERN" msgstr "" -#: guix/scripts/package.scm:427 +#: guix/scripts/package.scm:268 msgid "" "\n" " -S, --switch-generation=PATTERN\n" " switch to a generation matching PATTERN" msgstr "" -#: guix/scripts/package.scm:430 +#: guix/scripts/package.scm:271 msgid "" "\n" " -p, --profile=PROFILE use PROFILE instead of the user's default profile" msgstr "" -#: guix/scripts/package.scm:433 +#: guix/scripts/package.scm:274 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the profile" msgstr "" -#: guix/scripts/package.scm:435 guix/scripts/pull.scm:74 +#: guix/scripts/package.scm:276 guix/scripts/pull.scm:76 msgid "" "\n" " --verbose produce verbose output" @@ -389,97 +515,97 @@ msgstr "" "\n" " --verbose ausführliche Ausgaben anzeigen" -#: guix/scripts/package.scm:438 +#: guix/scripts/package.scm:279 msgid "" "\n" " -s, --search=REGEXP search in synopsis and description using REGEXP" msgstr "" -#: guix/scripts/package.scm:440 +#: guix/scripts/package.scm:281 msgid "" "\n" " -I, --list-installed[=REGEXP]\n" " list installed packages matching REGEXP" msgstr "" -#: guix/scripts/package.scm:443 +#: guix/scripts/package.scm:284 msgid "" "\n" " -A, --list-available[=REGEXP]\n" " list available packages matching REGEXP" msgstr "" -#: guix/scripts/package.scm:446 +#: guix/scripts/package.scm:287 msgid "" "\n" -" --show=PACKAGE show details about PACKAGE" +" --show=PACKAGE show details about PACKAGE" msgstr "" "\n" -" --show=PAKET Details zu PAKET anzeigen" +" --show=PAKET Details zu PAKET anzeigen" -#: guix/scripts/package.scm:677 +#: guix/scripts/package.scm:380 +#, scheme-format +msgid "~a: unsupported kind of search path~%" +msgstr "" + +#: guix/scripts/package.scm:550 guix/scripts/publish.scm:357 #, scheme-format msgid "~A: extraneous argument~%" msgstr "" -#: guix/scripts/package.scm:687 +#: guix/scripts/package.scm:558 #, scheme-format msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" msgstr "" -#: guix/scripts/package.scm:709 +#: guix/scripts/package.scm:580 #, scheme-format msgid "error: while creating directory `~a': ~a~%" msgstr "Fehler beim Anlegen des Verzeichnisses »~a«: ~a~%" -#: guix/scripts/package.scm:713 +#: guix/scripts/package.scm:584 #, scheme-format msgid "Please create the `~a' directory, with you as the owner.~%" msgstr "Bitte legen Sie das Verzeichnis »~a« mit Ihnen als Eigentümer an.~%" -#: guix/scripts/package.scm:720 +#: guix/scripts/package.scm:591 #, scheme-format msgid "error: directory `~a' is not owned by you~%" msgstr "Fehler: Das Verzeichnis »~a« gehört Ihnen nicht~%" -#: guix/scripts/package.scm:723 +#: guix/scripts/package.scm:594 #, scheme-format msgid "Please change the owner of `~a' to user ~s.~%" msgstr "Bitte ändern Sie den Eigentümer von »~a« in Benutzer ~s.~%" -#: guix/scripts/package.scm:756 -#, scheme-format -msgid "cannot switch to generation '~a'~%" -msgstr "Zu Generation »~a« kann nicht gewechselt werden~%" - -#: guix/scripts/package.scm:788 guix/scripts/package.scm:889 -#, scheme-format -msgid "invalid syntax: ~a~%" -msgstr "Unzulässige Syntax: ~a~%" - -#: guix/scripts/package.scm:825 +#: guix/scripts/package.scm:628 #, scheme-format msgid "nothing to be done~%" msgstr "Nichts zu tun~%" -#: guix/scripts/package.scm:840 +#: guix/scripts/package.scm:644 #, scheme-format msgid "~a package in profile~%" msgid_plural "~a packages in profile~%" msgstr[0] "~a Paket im Profil~%" msgstr[1] "~a Pakete im Profil~%" -#: guix/scripts/package.scm:855 +#: guix/scripts/package.scm:668 #, scheme-format -msgid "Generation ~a\t~a" -msgstr "Generation ~a\t~a" +msgid "cannot switch to generation '~a'~%" +msgstr "Zu Generation »~a« kann nicht gewechselt werden~%" -#: guix/scripts/package.scm:862 +#: guix/scripts/package.scm:690 #, scheme-format -msgid "~a\t(current)~%" -msgstr "~a\t(aktuell)~%" +msgid "would install new manifest from '~a' with ~d entries~%" +msgstr "" -#: guix/scripts/gc.scm:39 +#: guix/scripts/package.scm:692 +#, scheme-format +msgid "installing new manifest from '~a' with ~d entries~%" +msgstr "" + +#: guix/scripts/gc.scm:40 msgid "" "Usage: guix gc [OPTION]... PATHS...\n" "Invoke the garbage collector.\n" @@ -487,14 +613,14 @@ msgstr "" "Aufruf: guix gc [OPTION] … PFADE …\n" "Ruft den Müllsammler auf.\n" -#: guix/scripts/gc.scm:41 +#: guix/scripts/gc.scm:42 msgid "" "\n" " -C, --collect-garbage[=MIN]\n" " collect at least MIN bytes of garbage" msgstr "" -#: guix/scripts/gc.scm:44 +#: guix/scripts/gc.scm:45 msgid "" "\n" " -d, --delete attempt to delete PATHS" @@ -502,42 +628,68 @@ msgstr "" "\n" " -d, --delete versuchen, PFADE zu löschen" -#: guix/scripts/gc.scm:46 +#: guix/scripts/gc.scm:47 +msgid "" +"\n" +" --optimize optimize the store by deduplicating identical files" +msgstr "" + +#: guix/scripts/gc.scm:49 msgid "" "\n" " --list-dead list dead paths" msgstr "" -#: guix/scripts/gc.scm:48 +#: guix/scripts/gc.scm:51 msgid "" "\n" " --list-live list live paths" msgstr "" -#: guix/scripts/gc.scm:51 +#: guix/scripts/gc.scm:54 msgid "" "\n" " --references list the references of PATHS" msgstr "" -#: guix/scripts/gc.scm:53 +#: guix/scripts/gc.scm:56 msgid "" "\n" " -R, --requisites list the requisites of PATHS" msgstr "" -#: guix/scripts/gc.scm:55 +#: guix/scripts/gc.scm:58 msgid "" "\n" " --referrers list the referrers of PATHS" msgstr "" -#: guix/scripts/gc.scm:84 +#: guix/scripts/gc.scm:61 +msgid "" +"\n" +" --verify[=OPTS] verify the integrity of the store; OPTS is a\n" +" comma-separated combination of 'repair' and\n" +" 'contents'" +msgstr "" + +#: guix/scripts/gc.scm:65 +msgid "" +"\n" +" --list-failures list cached build failures" +msgstr "" + +#: guix/scripts/gc.scm:67 +msgid "" +"\n" +" --clear-failures remove PATHS from the set of cached failures" +msgstr "" + +#: guix/scripts/gc.scm:96 #, scheme-format msgid "invalid amount of storage: ~a~%" msgstr "Ungültiger Speicher-Wert: ~a~%" -#: guix/scripts/hash.scm:45 +#: guix/scripts/hash.scm:46 msgid "" "Usage: guix hash [OPTION] FILE\n" "Return the cryptographic hash of FILE.\n" @@ -546,7 +698,7 @@ msgid "" "and 'hexadecimal' can be used as well).\n" msgstr "" -#: guix/scripts/hash.scm:52 +#: guix/scripts/hash.scm:53 msgid "" "\n" " -r, --recursive compute the hash on FILE recursively" @@ -554,169 +706,245 @@ msgstr "" "\n" " -r, --recursive errechnet die Prüfsumme der DATEI rekursiv" -#: guix/scripts/hash.scm:103 +#: guix/scripts/hash.scm:104 #, scheme-format msgid "unrecognized option: ~a~%" msgstr "Nicht erkannte Option: ~a~%" -#: guix/scripts/hash.scm:134 guix/ui.scm:252 +#: guix/scripts/hash.scm:135 guix/ui.scm:458 #, scheme-format msgid "~a~%" msgstr "~a~%" -#: guix/scripts/hash.scm:137 +#: guix/scripts/hash.scm:138 guix/scripts/system.scm:685 #, scheme-format msgid "wrong number of arguments~%" msgstr "Falsche Argumentanzahl~%" -#: guix/scripts/pull.scm:72 +#: guix/scripts/import.scm:85 +msgid "" +"Usage: guix import IMPORTER ARGS ...\n" +"Run IMPORTER with ARGS.\n" +msgstr "" +"Aufruf: guix import IMPORTER ARGUMENTE ...\n" +"IMPORTER mit ARGUMENTEN ausführen.\n" + +#: guix/scripts/import.scm:88 +msgid "IMPORTER must be one of the importers listed below:\n" +msgstr "IMPORTER muss einer der unten aufgelisteten Importer sein:\n" + +#: guix/scripts/import.scm:102 +#, scheme-format +msgid "guix import: missing importer name~%" +msgstr "guix import: Importer-Name fehlt~%" + +#: guix/scripts/import.scm:113 +#, scheme-format +msgid "guix import: invalid importer~%" +msgstr "" + +#: guix/scripts/import/cran.scm:42 +msgid "" +"Usage: guix import cran PACKAGE-NAME\n" +"Import and convert the CRAN package for PACKAGE-NAME.\n" +msgstr "" + +#: guix/scripts/import/cran.scm:87 +#, scheme-format +msgid "failed to download description for package '~a'~%" +msgstr "Beschreibung für Paket »~a« konnte nicht geladen werden~%" + +#: guix/scripts/import/cran.scm:91 guix/scripts/import/elpa.scm:95 +#, scheme-format +msgid "too few arguments~%" +msgstr "Zu wenige Argumente~%" + +#: guix/scripts/import/cran.scm:93 guix/scripts/import/elpa.scm:97 +#, scheme-format +msgid "too many arguments~%" +msgstr "Zu viele Argumente~%" + +#: guix/scripts/import/elpa.scm:41 +msgid "" +"Usage: guix import elpa PACKAGE-NAME\n" +"Import the latest package named PACKAGE-NAME from an ELPA repository.\n" +msgstr "" + +#: guix/scripts/import/elpa.scm:43 +msgid "" +"\n" +" -a, --archive=ARCHIVE specify the archive repository" +msgstr "" + +#: guix/scripts/import/elpa.scm:45 +msgid "" +"\n" +" -h, --help display this help and exit" +msgstr "" +"\n" +" -h, --help diese Hilfe anzeigen und beenden" + +#: guix/scripts/import/elpa.scm:47 +msgid "" +"\n" +" -V, --version display version information and exit" +msgstr "" +"\n" +" -V, --version Versionsinformation anzeigen und beenden" + +#: guix/scripts/import/elpa.scm:92 +#, scheme-format +msgid "failed to download package '~a'~%" +msgstr "Paket »~a« konnte nicht heruntergeladen werden~%" + +#: guix/scripts/pull.scm:74 msgid "" "Usage: guix pull [OPTION]...\n" "Download and deploy the latest version of Guix.\n" msgstr "" -#: guix/scripts/pull.scm:76 +#: guix/scripts/pull.scm:78 msgid "" "\n" " --url=URL download the Guix tarball from URL" msgstr "" -#: guix/scripts/pull.scm:78 +#: guix/scripts/pull.scm:80 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the new Guix" msgstr "" -#: guix/scripts/pull.scm:132 +#: guix/scripts/pull.scm:134 msgid "tarball did not produce a single source directory" msgstr "Entpacken des Tar-Archiv erzeugte kein einzelnes Quellverzeichnis" -#: guix/scripts/pull.scm:150 +#: guix/scripts/pull.scm:152 #, scheme-format msgid "unpacking '~a'...~%" msgstr "»~a« wird entpackt …~%" -#: guix/scripts/pull.scm:159 +#: guix/scripts/pull.scm:161 msgid "failed to unpack source code" msgstr "Quellcode konnte nicht entpackt werden" -#: guix/scripts/pull.scm:200 +#: guix/scripts/pull.scm:204 +msgid "Guix already up to date\n" +msgstr "Guix ist bereits aktuell\n" + +#: guix/scripts/pull.scm:209 #, scheme-format msgid "updated ~a successfully deployed under `~a'~%" msgstr "" -#: guix/scripts/pull.scm:203 +#: guix/scripts/pull.scm:212 #, scheme-format msgid "failed to update Guix, check the build log~%" msgstr "Guix konnte nicht aktualisiert werden, schauen Sie in das Build-Protokoll~%" -#: guix/scripts/pull.scm:205 -msgid "Guix already up to date\n" -msgstr "Guix ist bereits aktuell\n" - -#: guix/scripts/pull.scm:215 +#: guix/scripts/pull.scm:221 #, scheme-format msgid "~A: unexpected argument~%" msgstr "~A: unerwartetes Argument~%" -#: guix/scripts/pull.scm:224 +#: guix/scripts/pull.scm:230 msgid "failed to download up-to-date source, exiting\n" msgstr "Aktueller Quellcode konnte nicht heruntergeladen werden, Abbruch\n" -#: guix/scripts/substitute-binary.scm:80 +#: guix/scripts/substitute.scm:103 #, scheme-format msgid "authentication and authorization of substitutes disabled!~%" msgstr "" -#: guix/scripts/substitute-binary.scm:163 +#: guix/scripts/substitute.scm:179 #, scheme-format msgid "download from '~a' failed: ~a, ~s~%" msgstr "Herunterladen von »~a« ist fehlgeschlagen: ~a, ~s~%" -#: guix/scripts/substitute-binary.scm:178 +#: guix/scripts/substitute.scm:191 #, scheme-format -msgid "while fetching ~a: server is unresponsive~%" -msgstr "Beim Holen von ~a: Server antwortet nicht~%" +msgid "while fetching ~a: server is somewhat slow~%" +msgstr "Beim Holen von ~a: Server ist etwas langsam~%" -#: guix/scripts/substitute-binary.scm:180 +#: guix/scripts/substitute.scm:193 #, scheme-format msgid "try `--no-substitutes' if the problem persists~%" msgstr "Versuchen Sie »--no-substitutes«, falls das Problem weiter besteht~%" -#: guix/scripts/substitute-binary.scm:244 +#: guix/scripts/substitute.scm:266 #, scheme-format -msgid "signature version must be a number: ~a~%" -msgstr "Signaturversion muss eine Zahl sein: ~a~%" +msgid "signature version must be a number: ~s~%" +msgstr "Signaturversion muss eine Zahl sein: ~s~%" -#: guix/scripts/substitute-binary.scm:248 +#: guix/scripts/substitute.scm:270 #, scheme-format msgid "unsupported signature version: ~a~%" msgstr "Signaturversion wird nicht unterstützt: ~a~%" -#: guix/scripts/substitute-binary.scm:256 +#: guix/scripts/substitute.scm:278 #, scheme-format msgid "signature is not a valid s-expression: ~s~%" msgstr "" -#: guix/scripts/substitute-binary.scm:260 +#: guix/scripts/substitute.scm:282 #, scheme-format msgid "invalid format of the signature field: ~a~%" msgstr "Unzulässiges Format des Signaturfeldes: ~a~%" -#: guix/scripts/substitute-binary.scm:295 +#: guix/scripts/substitute.scm:317 #, scheme-format msgid "invalid signature for '~a'~%" msgstr "Ungültige Signatur für »~a«~%" -#: guix/scripts/substitute-binary.scm:297 +#: guix/scripts/substitute.scm:319 #, scheme-format msgid "hash mismatch for '~a'~%" msgstr "Prüfsummenfehler für »~a«~%" -#: guix/scripts/substitute-binary.scm:299 +#: guix/scripts/substitute.scm:321 #, scheme-format msgid "'~a' is signed with an unauthorized key~%" msgstr "" -#: guix/scripts/substitute-binary.scm:301 +#: guix/scripts/substitute.scm:323 #, scheme-format msgid "signature on '~a' is corrupt~%" msgstr "Signature von »~a« ist beschädigt~%" -#: guix/scripts/substitute-binary.scm:338 +#: guix/scripts/substitute.scm:361 #, scheme-format msgid "substitute at '~a' lacks a signature~%" msgstr "" -#: guix/scripts/substitute-binary.scm:526 +#: guix/scripts/substitute.scm:537 #, scheme-format -msgid "Downloading, please wait...~%" -msgstr "Wird heruntergeladen, bitte warten …~%" - -#: guix/scripts/substitute-binary.scm:528 -#, scheme-format -msgid "(Please consider upgrading Guile to get proper progress report.)~%" +msgid "updating list of substitutes from '~a'... ~5,1f%" msgstr "" -#: guix/scripts/substitute-binary.scm:541 +#: guix/scripts/substitute.scm:591 +#, scheme-format +msgid "~s: unsupported server URI scheme~%" +msgstr "" + +#: guix/scripts/substitute.scm:733 #, scheme-format msgid "host name lookup error: ~a~%" msgstr "Fehler beim Nachschlagen des Rechnernamens: ~a~%" -#: guix/scripts/substitute-binary.scm:550 +#: guix/scripts/substitute.scm:742 msgid "" -"Usage: guix substitute-binary [OPTION]...\n" +"Usage: guix substitute [OPTION]...\n" "Internal tool to substitute a pre-built binary to a local build.\n" msgstr "" -#: guix/scripts/substitute-binary.scm:552 +#: guix/scripts/substitute.scm:744 msgid "" "\n" " --query report on the availability of substitutes for the\n" " store file names passed on the standard input" msgstr "" -#: guix/scripts/substitute-binary.scm:555 +#: guix/scripts/substitute.scm:747 msgid "" "\n" " --substitute STORE-FILE DESTINATION\n" @@ -724,21 +952,11 @@ msgid "" " DESTINATION" msgstr "" -#: guix/scripts/substitute-binary.scm:600 +#: guix/scripts/substitute.scm:872 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" msgstr "" -#: guix/scripts/substitute-binary.scm:634 -#, scheme-format -msgid "these substitute URLs will not be used:~{ ~a~}~%" -msgstr "" - -#: guix/scripts/substitute-binary.scm:660 -#, scheme-format -msgid "failed to look up host '~a' (~a), substituter disabled~%" -msgstr "" - -#: guix/scripts/substitute-binary.scm:767 +#: guix/scripts/substitute.scm:954 #, scheme-format msgid "~a: unrecognized options~%" msgstr "~a: nicht erkannte Optionen~%" @@ -763,7 +981,7 @@ msgstr "Fehler: nicht autorisierter öffentlicher Schlüssel: ~a~%" msgid "error: corrupt signature data: ~a~%" msgstr "Fehler: Signaturdaten beschädigt: ~a~%" -#: guix/scripts/authenticate.scm:126 +#: guix/scripts/authenticate.scm:120 msgid "" "Usage: guix authenticate OPTION...\n" "Sign or verify the signature on the given file. This tool is meant to\n" @@ -773,94 +991,143 @@ msgstr "" "Angegebene Datei signieren oder die Signatur überprüfen. Dieses Werkzeug\n" "ist dafür bestimmt, intern von »guix-daemon« aufgerufen zu werden.\n" -#: guix/scripts/authenticate.scm:132 +#: guix/scripts/authenticate.scm:126 msgid "wrong arguments" msgstr "Falsche Argumente" -#: guix/scripts/system.scm:74 -#, scheme-format -msgid "failed to open operating system file '~a': ~a~%" -msgstr "Betriebssystemdatei »~a« konnte nicht geöffnet werden: ~a~%" - -#: guix/scripts/system.scm:78 guix/ui.scm:258 -#, scheme-format -msgid "~a: ~a~%" -msgstr "~a: ~a~%" - -#: guix/scripts/system.scm:81 -#, scheme-format -msgid "failed to load operating system file '~a': ~s~%" -msgstr "Betriebssystemdatei »~a« konnte nicht geladen werden: ~s~%" - -#: guix/scripts/system.scm:116 +#: guix/scripts/system.scm:105 #, scheme-format msgid "failed to register '~a' under '~a'~%" msgstr "»~a« konnte nicht unter »~a« registriert werden~%" -#: guix/scripts/system.scm:144 -#, scheme-format -msgid "initializing the current root file system~%" -msgstr "Aktuelles Wurzeldateisystem wird initialisiert~%" - -#: guix/scripts/system.scm:162 guix/scripts/system.scm:325 +#: guix/scripts/system.scm:137 #, scheme-format msgid "failed to install GRUB on device '~a'~%" msgstr "GRUB konnte nicht auf Gerät »~a« installiert werden~%" -#: guix/scripts/system.scm:197 +#: guix/scripts/system.scm:155 #, scheme-format -msgid "activating system...~%" -msgstr "System wird aktiviert …~%" +msgid "initializing the current root file system~%" +msgstr "Aktuelles Wurzeldateisystem wird initialisiert~%" -#: guix/scripts/system.scm:239 +#: guix/scripts/system.scm:169 +#, scheme-format +msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%" +msgstr "" + +#: guix/scripts/system.scm:219 #, scheme-format msgid "unrecognized boot parameters for '~a'~%" msgstr "Nicht erkannte Startparameter für »~a«~%" -#: guix/scripts/system.scm:330 +#: guix/scripts/system.scm:254 +#, scheme-format +msgid "activating system...~%" +msgstr "System wird aktiviert …~%" + +#: guix/scripts/system.scm:338 +msgid "the DAG of services" +msgstr "" + +#: guix/scripts/system.scm:351 +msgid "the dependency graph of dmd services" +msgstr "" + +#: guix/scripts/system.scm:369 +#, scheme-format +msgid " file name: ~a~%" +msgstr " Dateiname: ~a~%" + +#: guix/scripts/system.scm:370 +#, scheme-format +msgid " canonical file name: ~a~%" +msgstr "" + +#. TRANSLATORS: Please preserve the two-space indentation. +#: guix/scripts/system.scm:374 +#, scheme-format +msgid " label: ~a~%" +msgstr " Label: ~a~%" + +#: guix/scripts/system.scm:375 +#, scheme-format +msgid " root device: ~a~%" +msgstr " Root-Gerät: ~a~%" + +#: guix/scripts/system.scm:376 +#, scheme-format +msgid " kernel: ~a~%" +msgstr " Kernel: ~a~%" + +#: guix/scripts/system.scm:476 #, scheme-format msgid "initializing operating system under '~a'...~%" msgstr "Betriebssystem unter »~a« wird initialisiert …~%" -#: guix/scripts/system.scm:346 +#: guix/scripts/system.scm:515 msgid "" -"Usage: guix system [OPTION] ACTION FILE\n" +"Usage: guix system [OPTION] ACTION [FILE]\n" "Build the operating system declared in FILE according to ACTION.\n" msgstr "" -"Aufruf: guix system [OPTION] AKTION DATEI\n" +"Aufruf: guix system [OPTION] AKTION [DATEI]\n" "Das in DATEI deklarierte Betriebssystem entsprechend der AKTION erstellen.\n" -#: guix/scripts/system.scm:349 +#: guix/scripts/system.scm:518 msgid "The valid values for ACTION are:\n" msgstr "Die gültigen Werte für AKTION sind:\n" -#: guix/scripts/system.scm:350 -msgid " - 'reconfigure', switch to a new operating system configuration\n" -msgstr " - »reconfigure«, zur neuen Betriebssystemkonfiguration wechseln\n" +#: guix/scripts/system.scm:520 +msgid " reconfigure switch to a new operating system configuration\n" +msgstr " reconfigure zur neuen Betriebssystemkonfiguration wechseln\n" -#: guix/scripts/system.scm:352 -msgid " - 'build', build the operating system without installing anything\n" -msgstr " - »build«, das Betriebssystem erstellen, ohne etwas zu installieren\n" - -#: guix/scripts/system.scm:354 -msgid " - 'vm', build a virtual machine image that shares the host's store\n" +#: guix/scripts/system.scm:522 +msgid " list-generations list the system generations\n" msgstr "" -" - »vm«, ein Image für eine virtuelle Maschine erstellen, das den\n" -" Speicher des Rechners nutzt\n" -#: guix/scripts/system.scm:356 -msgid " - 'vm-image', build a freestanding virtual machine image\n" -msgstr " - »vm-image«, ein unabhängiges Image für eine virtuelle Maschine erstellen\n" +#: guix/scripts/system.scm:524 +msgid " build build the operating system without installing anything\n" +msgstr " build das Betriebssystem erstellen, ohne etwas zu installieren\n" -#: guix/scripts/system.scm:358 -msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" -msgstr " - »disk-image«, ein Disk-Image für einen USB-Stick erstellen\n" +#: guix/scripts/system.scm:526 +msgid " vm build a virtual machine image that shares the host's store\n" +msgstr "" +" vm ein Image für eine virtuelle Maschine erstellen, das den\n" +" Speicher des Rechners nutzt\n" -#: guix/scripts/system.scm:360 -msgid " - 'init', initialize a root file system to run GNU.\n" -msgstr " - »init«, ein Wurzeldateisystem initialisieren, um GNU auszuführen.\n" +#: guix/scripts/system.scm:528 +msgid " vm-image build a freestanding virtual machine image\n" +msgstr " vm-image ein unabhängiges Image für eine virtuelle Maschine erstellen\n" -#: guix/scripts/system.scm:364 +#: guix/scripts/system.scm:530 +msgid " disk-image build a disk image, suitable for a USB stick\n" +msgstr " disk-image ein Disk-Image für einen USB-Stick erstellen\n" + +#: guix/scripts/system.scm:532 +msgid " init initialize a root file system to run GNU\n" +msgstr " init ein Wurzeldateisystem initialisieren, um GNU auszuführen.\n" + +#: guix/scripts/system.scm:534 +msgid " extension-graph emit the service extension graph in Dot format\n" +msgstr "" + +#: guix/scripts/system.scm:536 +msgid " dmd-graph emit the graph of dmd services in Dot format\n" +msgstr "" + +#: guix/scripts/system.scm:540 +msgid "" +"\n" +" -d, --derivation return the derivation of the given system" +msgstr "" + +#: guix/scripts/system.scm:542 +msgid "" +"\n" +" --on-error=STRATEGY\n" +" apply STRATEGY when an error occurs while reading FILE" +msgstr "" + +#: guix/scripts/system.scm:545 msgid "" "\n" " --image-size=SIZE for 'vm-image', produce an image of SIZE" @@ -868,7 +1135,7 @@ msgstr "" "\n" " --image-size=GRÖSSE für »vm-image«, ein Image der GRÖSSE erstellen" -#: guix/scripts/system.scm:366 +#: guix/scripts/system.scm:547 msgid "" "\n" " --no-grub for 'init', do not install GRUB" @@ -876,7 +1143,19 @@ msgstr "" "\n" " --no-grub für »init«, GRUB nicht installieren" -#: guix/scripts/system.scm:368 +#: guix/scripts/system.scm:549 +msgid "" +"\n" +" --share=SPEC for 'vm', share host file system according to SPEC" +msgstr "" + +#: guix/scripts/system.scm:551 +msgid "" +"\n" +" --expose=SPEC for 'vm', expose host file system according to SPEC" +msgstr "" + +#: guix/scripts/system.scm:553 msgid "" "\n" " --full-boot for 'vm', make a full boot sequence" @@ -884,112 +1163,564 @@ msgstr "" "\n" " --full-boot für »vm«, vollständige Boot-Sequenz" -#: guix/scripts/system.scm:434 -#, scheme-format -msgid "~a: unknown action~%" -msgstr "~a: unbekannte Aktion~%" - -#: guix/scripts/system.scm:451 -#, scheme-format -msgid "wrong number of arguments for action '~a'~%" -msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%" - -#: guix/scripts/system.scm:471 +#: guix/scripts/system.scm:637 #, scheme-format msgid "no configuration file specified~%" msgstr "Keine Konfigurationsdatei angegeben~%" -#: guix/scripts/lint.scm:51 +#: guix/scripts/system.scm:700 #, scheme-format -msgid "~a: ~a: ~a~%" -msgstr "~a: ~a: ~a~%" +msgid "~a: unknown action~%" +msgstr "~a: unbekannte Aktion~%" -#: guix/scripts/lint.scm:72 +#: guix/scripts/system.scm:715 +#, scheme-format +msgid "wrong number of arguments for action '~a'~%" +msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%" + +#: guix/scripts/system.scm:720 +#, scheme-format +msgid "guix system: missing command name~%" +msgstr "guix system: Befehlsname fehlt~%" + +#: guix/scripts/system.scm:722 +#, scheme-format +msgid "Try 'guix system --help' for more information.~%" +msgstr "Rufen Sie »guix system --help« auf, um weitere Informationen zu erhalten.~%" + +#: guix/scripts/lint.scm:124 #, scheme-format msgid "Available checkers:~%" msgstr "Verfügbare Prüfer:~%" -#: guix/scripts/lint.scm:226 +#: guix/scripts/lint.scm:144 +msgid "description should not be empty" +msgstr "" + +#: guix/scripts/lint.scm:154 +msgid "Texinfo markup in description is invalid" +msgstr "" + +#: guix/scripts/lint.scm:162 +msgid "description should start with an upper-case letter or digit" +msgstr "" + +#: guix/scripts/lint.scm:178 +#, scheme-format +msgid "" +"sentences in description should be followed ~\n" +"by two spaces; possible infraction~p at ~{~a~^, ~}" +msgstr "" + +#: guix/scripts/lint.scm:202 +msgid "pkg-config should probably be a native input" +msgstr "" + +#: guix/scripts/lint.scm:217 +msgid "synopsis should not be empty" +msgstr "" + +#: guix/scripts/lint.scm:225 +msgid "no period allowed at the end of the synopsis" +msgstr "Am Ende der Zusammenfassung darf kein Punkt gesetzt werden" + +#: guix/scripts/lint.scm:237 +msgid "no article allowed at the beginning of the synopsis" +msgstr "Am Beginn der Zusammenfassung darf kein Punkt stehen" + +#: guix/scripts/lint.scm:244 +msgid "synopsis should be less than 80 characters long" +msgstr "Zusammenfassung sollte nicht länger als 80 Zeichen sein" + +#: guix/scripts/lint.scm:250 +msgid "synopsis should start with an upper-case letter or digit" +msgstr "Zusammenfassung sollte mit einem Großbuchstaben oder einer Zahl beginnen" + +#: guix/scripts/lint.scm:257 +msgid "synopsis should not start with the package name" +msgstr "Zusammenfassung sollte nicht mit dem Paketnamen beginnen" + +#: guix/scripts/lint.scm:348 guix/scripts/lint.scm:360 +#, scheme-format +msgid "URI ~a not reachable: ~a (~s)" +msgstr "" + +#: guix/scripts/lint.scm:367 +#, scheme-format +msgid "URI ~a domain not found: ~a" +msgstr "URI-Domain ~a nicht gefunden: ~a" + +#: guix/scripts/lint.scm:375 +#, scheme-format +msgid "URI ~a unreachable: ~a" +msgstr "URI ~a ist nicht erreichbar: ~a" + +#: guix/scripts/lint.scm:401 +msgid "invalid value for home page" +msgstr "Ungültiger Wert für Homepage" + +#: guix/scripts/lint.scm:404 +#, scheme-format +msgid "invalid home page URL: ~s" +msgstr "Ungültige URL für Homepage: ~s" + +#: guix/scripts/lint.scm:429 +msgid "file names of patches should start with the package name" +msgstr "Dateinamen oder Patches sollten mit dem Paketnamen beginnen" + +#: guix/scripts/lint.scm:467 +#, scheme-format +msgid "~a: ~a: proposed synopsis: ~s~%" +msgstr "~a: ~a: vorgeschlagene Zusammenfassung: ~s~%" + +#: guix/scripts/lint.scm:479 +#, scheme-format +msgid "~a: ~a: proposed description:~% \"~a\"~%" +msgstr "~a: ~a: vorgeschlagene Beschreibung:~% \"~a\"~%" + +#: guix/scripts/lint.scm:516 +msgid "all the source URIs are unreachable:" +msgstr "Alle Quell-URIs sind nicht erreichbar:" + +#: guix/scripts/lint.scm:539 +msgid "the source file name should contain the package name" +msgstr "Der Name der Quelldatei sollte den Paketnamen enthalten" + +#: guix/scripts/lint.scm:548 guix/scripts/lint.scm:552 +#, scheme-format +msgid "failed to create derivation: ~a" +msgstr "Ableitung konnte nicht erstellt werden: ~a" + +#: guix/scripts/lint.scm:558 +#, scheme-format +msgid "failed to create derivation: ~s~%" +msgstr "Ableitung konnte nicht erstellt werden: ~s~%" + +#: guix/scripts/lint.scm:568 +msgid "invalid license field" +msgstr "Ungültiges Lizenz-Feld" + +#: guix/scripts/lint.scm:582 +#, scheme-format +msgid "tabulation on line ~a, column ~a" +msgstr "Tabulator in Zeile ~a, Spalte ~a" + +#: guix/scripts/lint.scm:591 +#, scheme-format +msgid "trailing white space on line ~a" +msgstr "Führende Leerzeichen in Zeile ~a" + +#: guix/scripts/lint.scm:601 +#, scheme-format +msgid "line ~a is way too long (~a characters)" +msgstr "Zeile ~a ist viel zu lang (~a Zeichen)" + +#: guix/scripts/lint.scm:612 +#, scheme-format +msgid "line ~a: parentheses feel lonely, move to the previous or next line" +msgstr "" + +#: guix/scripts/lint.scm:667 msgid "Validate package descriptions" msgstr "Paketbeschreibungen überprüfen" -#: guix/scripts/lint.scm:230 +#: guix/scripts/lint.scm:671 +msgid "Validate synopsis & description of GNU packages" +msgstr "GNU-Paketzusammenfassung und -beschreibungen überprüfen" + +#: guix/scripts/lint.scm:675 msgid "Identify inputs that should be native inputs" msgstr "Eingaben prüfen, die native Eingaben sein sollten" -#: guix/scripts/lint.scm:234 -msgid "Validate filenames of patches" -msgstr "Dateinamen der Patches überprüfen" +#: guix/scripts/lint.scm:679 +msgid "Validate file names and availability of patches" +msgstr "Dateinamen und Verfügbarkeit der Patches überprüfen" -#: guix/scripts/lint.scm:238 -msgid "Validate package synopsis" -msgstr "Paketzusammenfassungen überprüfen" +#: guix/scripts/lint.scm:683 +msgid "Validate home-page URLs" +msgstr "Homepage-URLs überprüfen" -#: guix/scripts/lint.scm:257 -msgid "" -"Usage: guix lint [OPTION]... [PACKAGE]...\n" -"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n" +#. TRANSLATORS: is the name of a data type and must not be +#. translated. +#: guix/scripts/lint.scm:689 +msgid "Make sure the 'license' field is a or a list thereof" msgstr "" -#: guix/scripts/lint.scm:259 +#: guix/scripts/lint.scm:694 +msgid "Validate source URLs" +msgstr "Quell-URLs überprüfen" + +#: guix/scripts/lint.scm:698 +msgid "Validate file names of sources" +msgstr "Dateinamen der Quellen überprüfen" + +#: guix/scripts/lint.scm:702 +msgid "Report failure to compile a package to a derivation" +msgstr "" + +#: guix/scripts/lint.scm:706 +msgid "Validate package synopses" +msgstr "Paketzusammenfassungen überprüfen" + +#: guix/scripts/lint.scm:710 +msgid "Look for formatting issues in the source" +msgstr "Nach Formatierungsfehlern in der Quelle schauen" + +#: guix/scripts/lint.scm:735 +msgid "" +"Usage: guix lint [OPTION]... [PACKAGE]...\n" +"Run a set of checkers on the specified package; if none is specified,\n" +"run the checkers on all packages.\n" +msgstr "" +"Aufruf: guix lint [OPTION]... [PAKET]...\n" +"Eine Reihe von Überprüfungen auf das angegebene Paket anwenden.\n" +"Falls keine angegeben sind, werden alle verfügbaren Überprüfungen\n" +"mit allen Paketen ausgeführt.\n" + +#: guix/scripts/lint.scm:738 msgid "" "\n" " -c, --checkers=CHECKER1,CHECKER2...\n" -" only run the specificed checkers" +" only run the specified checkers" msgstr "" "\n" " -c, --checkers=PRÜFER1,PRÜFER2 …\n" " nur die angegebenen Prüfer aufrufen" -#: guix/scripts/lint.scm:264 +#: guix/scripts/lint.scm:743 msgid "" "\n" " -l, --list-checkers display the list of available lint checkers" msgstr "" +"\n" +" -l, --list-checkers Liste der verfügbaren Überprüfungen anzeigen" -#: guix/scripts/lint.scm:283 +#: guix/scripts/lint.scm:763 #, scheme-format -msgid "~a: invalid checker" -msgstr "~a: unzulässiger Prüfer" +msgid "~a: invalid checker~%" +msgstr "~a: unzulässiger Prüfer~%" -#: guix/gnu-maintenance.scm:373 +#: guix/scripts/publish.scm:52 +#, scheme-format +msgid "" +"Usage: guix publish [OPTION]...\n" +"Publish ~a over HTTP.\n" +msgstr "" +"Aufruf: guix publish [OPTION]...\n" +"~a über HTTP bereitstellen.\n" + +#: guix/scripts/publish.scm:54 +msgid "" +"\n" +" -p, --port=PORT listen on PORT" +msgstr "" +"\n" +" -p, --port=PORT an PORT lauschen" + +#: guix/scripts/publish.scm:56 +msgid "" +"\n" +" --listen=HOST listen on the network interface for HOST" +msgstr "" + +#: guix/scripts/publish.scm:58 +msgid "" +"\n" +" -u, --user=USER change privileges to USER as soon as possible" +msgstr "" + +#: guix/scripts/publish.scm:60 +msgid "" +"\n" +" -r, --repl[=PORT] spawn REPL server on PORT" +msgstr "" + +#: guix/scripts/publish.scm:76 +#, scheme-format +msgid "lookup of host '~a' failed: ~a~%" +msgstr "Suche nach Host »~a« ist fehlgeschlagen: ~a~%" + +#: guix/scripts/publish.scm:100 +#, scheme-format +msgid "lookup of host '~a' returned nothing" +msgstr "Suche nach Host »~a« lieferte kein Ergebnis" + +#: guix/scripts/publish.scm:343 +#, scheme-format +msgid "user '~a' not found: ~a~%" +msgstr "Benutzer »~a« nicht gefunden: ~a~%" + +#: guix/scripts/publish.scm:378 +#, scheme-format +msgid "server running as root; consider using the '--user' option!~%" +msgstr "" + +#: guix/scripts/publish.scm:380 +#, scheme-format +msgid "publishing ~a on ~a, port ~d~%" +msgstr "~a wird auf ~a bereitgestellt, Port ~d~%" + +#: guix/scripts/edit.scm:40 +msgid "" +"Usage: guix edit PACKAGE...\n" +"Start $EDITOR to edit the definitions of PACKAGE...\n" +msgstr "" + +#: guix/scripts/edit.scm:58 +#, scheme-format +msgid "file '~a' not found in search path ~s~%" +msgstr "Datei »~a« im Suchpfad ~s nicht gefunden~%" + +#: guix/scripts/edit.scm:70 +#, scheme-format +msgid "source location of package '~a' is unknown~%" +msgstr "Quellort des Pakets »~a« ist unbekannt~%" + +#: guix/scripts/size.scm:75 +#, scheme-format +msgid "no available substitute information for '~a'~%" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "store item" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "total" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "self" +msgstr "" + +#. TRANSLATORS: This is the title of a graph, meaning that the graph +#. represents a profile of the store (the "store" being the place where +#. packages are stored.) +#: guix/scripts/size.scm:204 +msgid "store profile" +msgstr "" + +#: guix/scripts/size.scm:213 +msgid "" +"Usage: guix size [OPTION]... PACKAGE\n" +"Report the size of PACKAGE and its dependencies.\n" +msgstr "" +"Aufruf: guix size [OPTION] … PAKET …\n" +"Größe des PAKETs und seiner Abhängigkeiten ermitteln.\n" + +#: guix/scripts/size.scm:218 +msgid "" +"\n" +" -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"" +msgstr "" + +#: guix/scripts/size.scm:220 +msgid "" +"\n" +" -m, --map-file=FILE write to FILE a graphical map of disk usage" +msgstr "" +"\n" +" -m, --map-file=DATEI eine grafische Darstellung des Plattenplatzverbrauchs\n" +" in DATEI schreiben" + +#: guix/scripts/size.scm:274 +msgid "missing store item argument\n" +msgstr "" + +#: guix/scripts/size.scm:292 +msgid "too many arguments\n" +msgstr "Zu wenige Argumente\n" + +#: guix/scripts/graph.scm:105 +msgid "the DAG of packages, excluding implicit inputs" +msgstr "" + +#: guix/scripts/graph.scm:155 +msgid "the DAG of packages, including implicit inputs" +msgstr "" + +#: guix/scripts/graph.scm:179 +msgid "same as 'bag', but without the bootstrap nodes" +msgstr "" + +#: guix/scripts/graph.scm:222 +msgid "the DAG of derivations" +msgstr "" + +#: guix/scripts/graph.scm:246 +#, scheme-format +msgid "references for '~a' are not known~%" +msgstr "" + +#: guix/scripts/graph.scm:253 +msgid "the DAG of run-time dependencies (store references)" +msgstr "" + +#: guix/scripts/graph.scm:282 +#, scheme-format +msgid "~a: unknown node type~%" +msgstr "~a: unbekannter Node-Typ~%" + +#: guix/scripts/graph.scm:286 +msgid "The available node types are:\n" +msgstr "Die gültigen Node-Typen sind:\n" + +#. TRANSLATORS: Here 'dot' is the name of a program; it must not be +#. translated. +#: guix/scripts/graph.scm:389 +msgid "" +"Usage: guix graph PACKAGE...\n" +"Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n" +msgstr "" + +#: guix/scripts/graph.scm:391 +msgid "" +"\n" +" -t, --type=TYPE represent nodes of the given TYPE" +msgstr "" + +#: guix/scripts/graph.scm:393 +msgid "" +"\n" +" --list-types list the available graph types" +msgstr "" +"\n" +" --list-types verfügbare Diagrammtypen auflisten" + +#: guix/scripts/graph.scm:395 +msgid "" +"\n" +" -e, --expression=EXPR consider the package EXPR evaluates to" +msgstr "" + +#: guix/scripts/challenge.scm:104 +#, scheme-format +msgid "~a: no substitute at '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:120 +#, scheme-format +msgid "no substitutes for '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:137 guix/scripts/challenge.scm:157 +#, scheme-format +msgid "no local build for '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:154 +#, scheme-format +msgid "~a contents differ:~%" +msgstr "" + +#: guix/scripts/challenge.scm:156 +#, scheme-format +msgid " local hash: ~a~%" +msgstr " lokale Prüfsumme: ~a~%" + +#: guix/scripts/challenge.scm:161 +#, scheme-format +msgid " ~50a: ~a~%" +msgstr " ~50a: ~a~%" + +#: guix/scripts/challenge.scm:165 +#, scheme-format +msgid " ~50a: unavailable~%" +msgstr " ~50a: nicht verfügbar~%" + +#: guix/scripts/challenge.scm:175 +msgid "" +"Usage: guix challenge [PACKAGE...]\n" +"Challenge the substitutes for PACKAGE... provided by one or more servers.\n" +msgstr "" + +#: guix/scripts/challenge.scm:177 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" compare build results with those at URLS" +msgstr "" + +#: guix/gnu-maintenance.scm:418 +msgid "Updater for GNU packages" +msgstr "Aktualisierungswerkzeug für GNU-Pakete" + +#: guix/upstream.scm:156 #, scheme-format msgid "signature verification failed for `~a'~%" msgstr "Verifizierung der Signatur fehlgeschlagen für »~a«~%" -#: guix/gnu-maintenance.scm:375 +#: guix/upstream.scm:158 #, scheme-format msgid "(could be because the public key is not in your keyring)~%" msgstr "(vielleicht befindet sich Ihr öffentlicher Schlüssel nicht im Schlüsselbund)~%" -#: guix/gnu-maintenance.scm:450 +#: guix/upstream.scm:190 +msgid "gz" +msgstr "gz" + +#: guix/upstream.scm:253 #, scheme-format msgid "~a: could not locate source file" msgstr "~a: Quelldatei konnte nicht gefunden werden" -#: guix/gnu-maintenance.scm:455 +#: guix/upstream.scm:258 #, scheme-format msgid "~a: ~a: no `version' field in source; skipping~%" msgstr "~a: ~a: kein »version«-Feld in der Quelle; wird übersprungen~%" -#: guix/ui.scm:135 +#: guix/ui.scm:234 +msgid "entering debugger; type ',bt' for a backtrace\n" +msgstr "" + +#: guix/ui.scm:250 guix/ui.scm:267 +#, scheme-format +msgid "failed to load '~a': ~a~%" +msgstr "»~a« konnte nicht geladen werden: ~a~%" + +#: guix/ui.scm:253 +#, scheme-format +msgid "~a: error: ~a~%" +msgstr "~a: Fehler: ~a~%" + +#: guix/ui.scm:256 guix/ui.scm:510 +#, scheme-format +msgid "exception thrown: ~s~%" +msgstr "" + +#: guix/ui.scm:258 guix/ui.scm:276 +#, scheme-format +msgid "failed to load '~a':~%" +msgstr "»~a« konnte nicht geladen werden:~%" + +#: guix/ui.scm:270 +#, scheme-format +msgid "~a: warning: ~a~%" +msgstr "~a: Warnung: ~a~%" + +#: guix/ui.scm:273 +#, scheme-format +msgid "failed to load '~a': exception thrown: ~s~%" +msgstr "" + +#: guix/ui.scm:285 #, scheme-format msgid "failed to install locale: ~a~%" msgstr "Locale konnte nicht installiert werden: ~a~%" -#: guix/ui.scm:154 +#: guix/ui.scm:304 msgid "" -"Copyright (C) 2014 the Guix authors\n" +"Copyright (C) 2015 the Guix authors\n" "License GPLv3+: GNU GPL version 3 or later \n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"Copyright (C) 2014 Die Guix-Autoren\n" +"Copyright (C) 2015 Die Guix-Autoren\n" "Lizenz GPLv3+: GNU GPL Version 3 oder neuer \n" "Dies ist freie Software: Sie können Sie ändern und weitergeben.\n" "Es gibt keine Garantie, soweit gesetzlich zulässig.\n" -#: guix/ui.scm:162 +#: guix/ui.scm:312 #, scheme-format msgid "" "\n" @@ -998,7 +1729,7 @@ msgstr "" "\n" "Melden Sie Fehler an: ~a." -#: guix/ui.scm:164 +#: guix/ui.scm:314 #, scheme-format msgid "" "\n" @@ -1007,7 +1738,7 @@ msgstr "" "\n" "~a Homepage: <~a>" -#: guix/ui.scm:166 +#: guix/ui.scm:316 msgid "" "\n" "General help using GNU software: " @@ -1015,160 +1746,219 @@ msgstr "" "\n" "Allgemeine Hilfe zu GNU-Software: " -#: guix/ui.scm:173 +#: guix/ui.scm:361 +#, scheme-format +msgid "'~a' is not a valid regular expression: ~a~%" +msgstr "»~a« ist kein gültiger regulärer Ausdruck: ~a~%" + +#: guix/ui.scm:367 #, scheme-format msgid "~a: invalid number~%" msgstr "~a: ungültige Zahl~%" -#: guix/ui.scm:190 +#: guix/ui.scm:384 #, scheme-format msgid "invalid number: ~a~%" msgstr "Ungültige Zahl: ~a~%" -#: guix/ui.scm:213 +#: guix/ui.scm:407 #, scheme-format msgid "unknown unit: ~a~%" msgstr "Unbekannte Einheit: ~a~%" -#: guix/ui.scm:224 +#: guix/ui.scm:418 #, scheme-format msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" msgstr "" -#: guix/ui.scm:231 +#: guix/ui.scm:425 #, scheme-format msgid "~a: ~a: build system `~a' does not support cross builds~%" msgstr "" -#: guix/ui.scm:236 +#: guix/ui.scm:430 #, scheme-format msgid "profile '~a' does not exist~%" msgstr "Profil »~a« existiert nicht~%" -#: guix/ui.scm:239 +#: guix/ui.scm:433 #, scheme-format msgid "generation ~a of profile '~a' does not exist~%" msgstr "Generation ~a des Profils »~a« existiert nicht~%" -#: guix/ui.scm:243 +#: guix/ui.scm:440 +#, scheme-format +msgid "corrupt input while restoring '~a' from ~s~%" +msgstr "Beschädigte Eingabe, während »~a« aus »~s« wiederhergestellt wurde~%" + +#: guix/ui.scm:442 +#, scheme-format +msgid "corrupt input while restoring archive from ~s~%" +msgstr "Beschädigte Eingabe, während das Archiv aus »~s« wiederhergestellt wurde~%" + +#: guix/ui.scm:445 #, scheme-format msgid "failed to connect to `~a': ~a~%" msgstr "Verbindung zu »~a« fehlgeschlagen: ~a~%" -#: guix/ui.scm:248 +#: guix/ui.scm:450 #, scheme-format msgid "build failed: ~a~%" msgstr "Erstellung fehlgeschlagen: ~a~%" -#: guix/ui.scm:277 +#: guix/ui.scm:453 +#, scheme-format +msgid "reference to invalid output '~a' of derivation '~a'~%" +msgstr "" + +#: guix/ui.scm:464 +#, scheme-format +msgid "~a: ~a~%" +msgstr "~a: ~a~%" + +#: guix/ui.scm:499 #, scheme-format msgid "failed to read expression ~s: ~s~%" msgstr "Ausdruck ~s konnte nicht gelesen werden: ~s~%" -#: guix/ui.scm:283 +#: guix/ui.scm:505 #, scheme-format -msgid "failed to evaluate expression `~a': ~s~%" -msgstr "Ausdruck »~a« kann nicht ausgewertet werden: ~s~%" +msgid "failed to evaluate expression '~a':~%" +msgstr "Ausdruck »~a« kann nicht ausgewertet werden:~%" -#: guix/ui.scm:292 +#: guix/ui.scm:508 +#, scheme-format +msgid "syntax error: ~a~%" +msgstr "Syntaxfehler: ~a~%" + +#: guix/ui.scm:522 #, scheme-format msgid "expression ~s does not evaluate to a package~%" -msgstr "" +msgstr "Ausdruck ~s ergibt kein Paket~%" -#: guix/ui.scm:339 +#: guix/ui.scm:582 #, scheme-format msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" msgstr[0] "" msgstr[1] "" -#: guix/ui.scm:344 +#: guix/ui.scm:587 #, scheme-format msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "" msgstr[1] "" -#: guix/ui.scm:350 +#: guix/ui.scm:593 #, scheme-format msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" msgstr[0] "" msgstr[1] "" -#: guix/ui.scm:355 +#: guix/ui.scm:598 #, scheme-format msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Die folgende Datei wird heruntergeladen:~%~{ ~a~%~}~;~]" msgstr[1] "~:[Die folgenden Dateien werden heruntergeladen:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:407 +#: guix/ui.scm:653 #, scheme-format msgid "The following package would be removed:~%~{~a~%~}~%" msgid_plural "The following packages would be removed:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket würde entfernt werden:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete würden entfernt werden:~%~{~a~%~}~%" -#: guix/ui.scm:412 +#: guix/ui.scm:658 #, scheme-format msgid "The following package will be removed:~%~{~a~%~}~%" msgid_plural "The following packages will be removed:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket würde entfernt werden:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete würden entfernt werden:~%~{~a~%~}~%" -#: guix/ui.scm:425 +#: guix/ui.scm:671 +#, scheme-format +msgid "The following package would be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%" +msgstr[0] "Die Version des folgenden Pakets würde heruntergestuft werden:~%~{~a~%~}~%" +msgstr[1] "Die Version der folgenden Pakete würde heruntergestuft werden:~%~{~a~%~}~%" + +#: guix/ui.scm:676 +#, scheme-format +msgid "The following package will be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%" +msgstr[0] "Die Version des folgenden Pakets wird heruntergestuft:~%~{~a~%~}~%" +msgstr[1] "Die Version der folgenden Pakete wird heruntergestuft:~%~{~a~%~}~%" + +#: guix/ui.scm:689 #, scheme-format msgid "The following package would be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket würde aktualisiert werden:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete würden aktualisiert werden:~%~{~a~%~}~%" -#: guix/ui.scm:430 +#: guix/ui.scm:694 #, scheme-format msgid "The following package will be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket wird aktualisiert:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete werden aktualisiert:~%~{~a~%~}~%" -#: guix/ui.scm:441 +#: guix/ui.scm:705 #, scheme-format msgid "The following package would be installed:~%~{~a~%~}~%" msgid_plural "The following packages would be installed:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket würde installiert werden:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete würden installiert werden:~%~{~a~%~}~%" -#: guix/ui.scm:446 +#: guix/ui.scm:710 #, scheme-format msgid "The following package will be installed:~%~{~a~%~}~%" msgid_plural "The following packages will be installed:~%~{~a~%~}~%" msgstr[0] "Das folgende Paket wird installiert:~%~{~a~%~}~%" msgstr[1] "Die folgenden Pakete werden installiert:~%~{~a~%~}~%" -#: guix/ui.scm:463 +#: guix/ui.scm:727 msgid "" msgstr "" -#: guix/ui.scm:489 +#: guix/ui.scm:746 #, scheme-format msgid "failed to create configuration directory `~a': ~a~%" msgstr "Konfigurationsverzeichnis »~a« konnte nicht angelegt werden: ~a~%" -#: guix/ui.scm:589 guix/ui.scm:603 +#: guix/ui.scm:865 guix/ui.scm:879 msgid "unknown" msgstr "unbekannt" -#: guix/ui.scm:712 +#: guix/ui.scm:1029 #, scheme-format -msgid "invalid argument: ~a~%" -msgstr "Ungültiges Argument: ~a~%" +msgid "Generation ~a\t~a" +msgstr "Generation ~a\t~a" -#: guix/ui.scm:717 +#: guix/ui.scm:1036 +#, scheme-format +msgid "~a\t(current)~%" +msgstr "~a\t(aktuell)~%" + +#: guix/ui.scm:1053 +#, scheme-format +msgid "switched from generation ~a to ~a~%" +msgstr "Von Generation »~a« zu »~a« gewechselt~%" + +#: guix/ui.scm:1069 +#, scheme-format +msgid "deleting ~a~%" +msgstr "~a wird gelöscht~%" + +#: guix/ui.scm:1117 #, scheme-format msgid "Try `guix --help' for more information.~%" msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%" -#: guix/ui.scm:747 +#: guix/ui.scm:1144 msgid "" "Usage: guix COMMAND ARGS...\n" "Run COMMAND with ARGS.\n" @@ -1176,41 +1966,31 @@ msgstr "" "Aufruf: guix BEFEHL ARGUMENTE …\n" "BEFEHL mit ARGUMENTEN ausführen.\n" -#: guix/ui.scm:750 +#: guix/ui.scm:1147 msgid "COMMAND must be one of the sub-commands listed below:\n" msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n" -#: guix/ui.scm:770 +#: guix/ui.scm:1167 #, scheme-format msgid "guix: ~a: command not found~%" msgstr "guix: ~a: Befehl nicht gefunden~%" -#: guix/ui.scm:788 +#: guix/ui.scm:1184 #, scheme-format msgid "guix: missing command name~%" msgstr "guix: Befehlsname fehlt~%" -#: guix/ui.scm:796 +#: guix/ui.scm:1192 #, scheme-format msgid "guix: unrecognized option '~a'~%" msgstr "guix: nicht erkannte Option »~a«~%" -#: guix/http-client.scm:217 -#, scheme-format -msgid "using Guile ~a, which does not support ~s encoding~%" -msgstr "Guile ~a wird verwendet, welches die Zeichenkodierung ~s nicht unterstützt~%" - -#: guix/http-client.scm:220 -#, scheme-format -msgid "download failed; use a newer Guile~%" -msgstr "Herunterladen fehlgeschlagen, verwenden Sie ein neueres Guile~%" - -#: guix/http-client.scm:232 +#: guix/http-client.scm:228 #, scheme-format msgid "following redirection to `~a'...~%" msgstr "Weiterleitung zu »~a« wird gefolgt …~%" -#: guix/http-client.scm:241 +#: guix/http-client.scm:237 msgid "download failed" msgstr "Herunterladen fehlgeschlagen" @@ -1243,18 +2023,134 @@ msgstr "" msgid "importing file or directory '~a'...~%" msgstr "Datei oder Verzeichnis »~a« wird importiert …~%" -#: guix/nar.scm:220 +#: guix/nar.scm:222 #, scheme-format msgid "found valid signature for '~a'~%" msgstr "Gültige Signatur für »~a« gefunden~%" -#: guix/nar.scm:227 +#: guix/nar.scm:229 msgid "imported file lacks a signature" msgstr "Der importierten Datei fehlt eine Signatur" -#: guix/nar.scm:266 +#: guix/nar.scm:268 msgid "invalid inter-file archive mark" msgstr "" -#~ msgid "unsupported file type" -#~ msgstr "Nicht unterstützter Dateityp" +#: nix/nix-daemon/guix-daemon.cc:61 +msgid "guix-daemon -- perform derivation builds and store accesses" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:63 +msgid "This program is a daemon meant to run in the background. It serves requests sent over a Unix-domain socket. It accesses the store, and builds derivations on behalf of its clients." +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:86 +msgid "SYSTEM" +msgstr "SYSTEM" + +#: nix/nix-daemon/guix-daemon.cc:87 +msgid "assume SYSTEM as the current system type" +msgstr "SYSTEM als aktuellen Systemtyp annehmen" + +#: nix/nix-daemon/guix-daemon.cc:88 nix/nix-daemon/guix-daemon.cc:91 +msgid "N" +msgstr "N" + +#: nix/nix-daemon/guix-daemon.cc:89 +msgid "use N CPU cores to build each derivation; 0 means as many as available" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:92 +msgid "allow at most N build jobs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:94 +msgid "disable chroot builds" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:95 +msgid "DIR" +msgstr "VERZ" + +#: nix/nix-daemon/guix-daemon.cc:96 +msgid "add DIR to the build chroot" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:97 +msgid "GROUP" +msgstr "GRUPPE" + +#: nix/nix-daemon/guix-daemon.cc:98 +msgid "perform builds as a user of GROUP" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:100 +msgid "do not use substitutes" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:101 +msgid "URLS" +msgstr "URLS" + +#: nix/nix-daemon/guix-daemon.cc:102 +msgid "use URLS as the default list of substitute providers" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:104 +msgid "do not use the 'build hook'" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:106 +msgid "cache build failures" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:108 +msgid "do not keep build logs" +msgstr "Erstellungsprotokolle nicht behalten" + +#: nix/nix-daemon/guix-daemon.cc:110 +msgid "disable compression of the build logs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:115 +msgid "disable automatic file \"deduplication\" in the store" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:125 +msgid "impersonate Linux 2.6" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:129 +msgid "tell whether the GC must keep outputs of live derivations" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:132 +msgid "tell whether the GC must keep derivations corresponding to live outputs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:135 +msgid "SOCKET" +msgstr "SOCKET" + +#: nix/nix-daemon/guix-daemon.cc:136 +msgid "listen for connections on SOCKET" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:138 +msgid "produce debugging output" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:205 nix/nix-daemon/guix-daemon.cc:381 +#, c-format +msgid "error: %s\n" +msgstr "Fehler: %s\n" + +#: nix/nix-daemon/guix-daemon.cc:266 +#, c-format +msgid "error: libgcrypt version mismatch\n" +msgstr "Fehler: libgcrypt-Version passt nicht\n" + +#: nix/nix-daemon/guix-daemon.cc:357 +#, c-format +msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" +msgstr "" diff --git a/po/guix/pl.po b/po/guix/pl.po new file mode 100644 index 0000000000..71c7fc3c00 --- /dev/null +++ b/po/guix/pl.po @@ -0,0 +1,2088 @@ +# GNU Guix package manager. +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the guix package. +# Daniel Koć , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: guix 0.9.0\n" +"Report-Msgid-Bugs-To: ludo@gnu.org\n" +"POT-Creation-Date: 2015-10-28 16:31+0100\n" +"PO-Revision-Date: 2015-12-05 18:58+0100\n" +"Last-Translator: Daniel Koć \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 1.8.4\n" + +#: gnu/packages.scm:80 +#, scheme-format +msgid "~a: patch not found" +msgstr "" + +#: gnu/packages.scm:91 +#, scheme-format +msgid "could not find bootstrap binary '~a' for system '~a'" +msgstr "" + +#: gnu/packages.scm:143 +#, scheme-format +msgid "cannot access `~a': ~a~%" +msgstr "" + +#: gnu/packages.scm:388 +#, scheme-format +msgid "looking for the latest release of GNU ~a..." +msgstr "" + +#: gnu/packages.scm:395 +#, scheme-format +msgid "~a: note: using ~a but ~a is available upstream~%" +msgstr "" + +#: gnu/packages.scm:417 gnu/packages.scm:452 +#, scheme-format +msgid "ambiguous package specification `~a'~%" +msgstr "" + +#: gnu/packages.scm:418 gnu/packages.scm:454 +#, scheme-format +msgid "choosing ~a from ~a~%" +msgstr "" + +#: gnu/packages.scm:424 +#, scheme-format +msgid "~A: package not found for version ~a~%" +msgstr "" + +#: gnu/packages.scm:426 +#, scheme-format +msgid "~A: unknown package~%" +msgstr "" + +#: gnu/packages.scm:442 +#, scheme-format +msgid "package `~a' lacks output `~a'~%" +msgstr "" + +#: gnu/packages.scm:459 +#, scheme-format +msgid "~a: package not found~%" +msgstr "" + +#: gnu/services.scm:376 +#, scheme-format +msgid "no target of type '~a' for service ~s" +msgstr "" + +#: gnu/services.scm:387 gnu/services.scm:447 +#, scheme-format +msgid "more than one target service of type '~a'" +msgstr "" + +#: gnu/services.scm:437 +#, scheme-format +msgid "service of type '~a' not found" +msgstr "" + +#: gnu/system.scm:547 +#, scheme-format +msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%" +msgstr "" + +#: gnu/system.scm:563 +#, scheme-format +msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%" +msgstr "" + +#: gnu/system.scm:646 +msgid "system locale lacks a definition" +msgstr "" + +#: gnu/services/dmd.scm:131 +#, scheme-format +msgid "service '~a' provided more than once" +msgstr "" + +#: gnu/system/shadow.scm:213 +#, scheme-format +msgid "supplementary group '~a' of user '~a' is undeclared" +msgstr "" + +#: gnu/system/shadow.scm:223 +#, scheme-format +msgid "primary group '~a' of user '~a' is undeclared" +msgstr "" + +#: guix/scripts.scm:52 +#, scheme-format +msgid "invalid argument: ~a~%" +msgstr "" + +#: guix/scripts.scm:78 guix/scripts/download.scm:97 guix/scripts/gc.scm:157 +#: guix/scripts/import/cran.scm:72 guix/scripts/import/elpa.scm:77 +#: guix/scripts/pull.scm:219 guix/scripts/lint.scm:792 +#: guix/scripts/publish.scm:355 +#, scheme-format +msgid "~A: unrecognized option~%" +msgstr "" + +#: guix/scripts/build.scm:107 +#, scheme-format +msgid "failed to create GC root `~a': ~a~%" +msgstr "" + +#: guix/scripts/build.scm:151 +msgid "" +"\n" +" -L, --load-path=DIR prepend DIR to the package module search path" +msgstr "" + +#: guix/scripts/build.scm:153 +msgid "" +"\n" +" -K, --keep-failed keep build tree of failed builds" +msgstr "" + +#: guix/scripts/build.scm:155 +msgid "" +"\n" +" -n, --dry-run do not build the derivations" +msgstr "" + +#: guix/scripts/build.scm:157 +msgid "" +"\n" +" --fallback fall back to building when the substituter fails" +msgstr "" + +#: guix/scripts/build.scm:159 +msgid "" +"\n" +" --no-substitutes build instead of resorting to pre-built substitutes" +msgstr "" + +#: guix/scripts/build.scm:161 guix/scripts/size.scm:215 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" fetch substitute from URLS if they are authorized" +msgstr "" + +#: guix/scripts/build.scm:164 +msgid "" +"\n" +" --no-build-hook do not attempt to offload builds via the build hook" +msgstr "" + +#: guix/scripts/build.scm:166 +msgid "" +"\n" +" --max-silent-time=SECONDS\n" +" mark the build as failed after SECONDS of silence" +msgstr "" + +#: guix/scripts/build.scm:169 +msgid "" +"\n" +" --timeout=SECONDS mark the build as failed after SECONDS of activity" +msgstr "" + +#: guix/scripts/build.scm:171 +msgid "" +"\n" +" --verbosity=LEVEL use the given verbosity LEVEL" +msgstr "" + +#: guix/scripts/build.scm:173 +msgid "" +"\n" +" -c, --cores=N allow the use of up to N CPU cores for the build" +msgstr "" + +#: guix/scripts/build.scm:175 +msgid "" +"\n" +" -M, --max-jobs=N allow at most N build jobs" +msgstr "" + +#: guix/scripts/build.scm:261 guix/scripts/build.scm:268 +#, scheme-format +msgid "not a number: '~a' option argument: ~a~%" +msgstr "" + +#: guix/scripts/build.scm:287 +msgid "" +"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" +"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" +msgstr "" + +#: guix/scripts/build.scm:289 +msgid "" +"\n" +" -e, --expression=EXPR build the package or derivation EXPR evaluates to" +msgstr "" + +#: guix/scripts/build.scm:291 +msgid "" +"\n" +" -f, --file=FILE build the package or derivation that the code within\n" +" FILE evaluates to" +msgstr "" + +#: guix/scripts/build.scm:294 +msgid "" +"\n" +" -S, --source build the packages' source derivations" +msgstr "" + +#: guix/scripts/build.scm:296 +msgid "" +"\n" +" --sources[=TYPE] build source derivations; TYPE may optionally be one\n" +" of \"package\", \"all\" (default), or \"transitive\"" +msgstr "" + +#: guix/scripts/build.scm:299 +msgid "" +"\n" +" -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" +msgstr "" + +#: guix/scripts/build.scm:301 +msgid "" +"\n" +" --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" +msgstr "" + +#: guix/scripts/build.scm:303 +msgid "" +"\n" +" --with-source=SOURCE\n" +" use SOURCE when building the corresponding package" +msgstr "" + +#: guix/scripts/build.scm:306 +msgid "" +"\n" +" --no-grafts do not graft packages" +msgstr "" + +#: guix/scripts/build.scm:308 +msgid "" +"\n" +" -d, --derivations return the derivation paths of the given packages" +msgstr "" + +#: guix/scripts/build.scm:310 +msgid "" +"\n" +" -r, --root=FILE make FILE a symlink to the result, and register it\n" +" as a garbage collector root" +msgstr "" + +#: guix/scripts/build.scm:313 +msgid "" +"\n" +" --log-file return the log file names for the given derivations" +msgstr "" + +#: guix/scripts/build.scm:318 guix/scripts/download.scm:54 +#: guix/scripts/package.scm:292 guix/scripts/gc.scm:70 +#: guix/scripts/hash.scm:56 guix/scripts/import.scm:91 +#: guix/scripts/import/cran.scm:44 guix/scripts/pull.scm:83 +#: guix/scripts/substitute.scm:752 guix/scripts/system.scm:556 +#: guix/scripts/lint.scm:741 guix/scripts/publish.scm:63 +#: guix/scripts/edit.scm:43 guix/scripts/size.scm:223 +#: guix/scripts/graph.scm:398 guix/scripts/challenge.scm:181 +msgid "" +"\n" +" -h, --help display this help and exit" +msgstr "" + +#: guix/scripts/build.scm:320 guix/scripts/download.scm:56 +#: guix/scripts/package.scm:294 guix/scripts/gc.scm:72 +#: guix/scripts/hash.scm:58 guix/scripts/import.scm:93 +#: guix/scripts/import/cran.scm:46 guix/scripts/pull.scm:85 +#: guix/scripts/substitute.scm:754 guix/scripts/system.scm:558 +#: guix/scripts/lint.scm:745 guix/scripts/publish.scm:65 +#: guix/scripts/edit.scm:45 guix/scripts/size.scm:225 +#: guix/scripts/graph.scm:400 guix/scripts/challenge.scm:183 +msgid "" +"\n" +" -V, --version display version information and exit" +msgstr "" + +#: guix/scripts/build.scm:347 +#, scheme-format +msgid "" +"invalid argument: '~a' option argument: ~a, ~\n" +"must be one of 'package', 'all', or 'transitive'~%" +msgstr "" + +#: guix/scripts/build.scm:478 +#, scheme-format +msgid "sources do not match any package:~{ ~a~}~%" +msgstr "" + +#: guix/scripts/build.scm:536 +#, scheme-format +msgid "no build log for '~a'~%" +msgstr "" + +#: guix/scripts/download.scm:45 +msgid "" +"Usage: guix download [OPTION] URL\n" +"Download the file at URL, add it to the store, and print its store path\n" +"and the hash of its contents.\n" +"\n" +"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n" +"('hex' and 'hexadecimal' can be used as well).\n" +msgstr "" + +#: guix/scripts/download.scm:51 guix/scripts/hash.scm:51 +msgid "" +"\n" +" -f, --format=FMT write the hash in the given format" +msgstr "" + +#: guix/scripts/download.scm:74 guix/scripts/hash.scm:76 +#, scheme-format +msgid "unsupported hash format: ~a~%" +msgstr "" + +#: guix/scripts/download.scm:107 +#, scheme-format +msgid "~a: failed to parse URI~%" +msgstr "" + +#: guix/scripts/download.scm:118 +#, scheme-format +msgid "~a: download failed~%" +msgstr "" + +#: guix/scripts/package.scm:128 +#, scheme-format +msgid "not removing generation ~a, which is current~%" +msgstr "" + +#: guix/scripts/package.scm:135 +#, scheme-format +msgid "no matching generation~%" +msgstr "" + +#: guix/scripts/package.scm:138 guix/scripts/package.scm:734 +#: guix/scripts/system.scm:396 +#, scheme-format +msgid "invalid syntax: ~a~%" +msgstr "" + +#: guix/scripts/package.scm:219 +#, scheme-format +msgid "The following environment variable definitions may be needed:~%" +msgstr "" + +#: guix/scripts/package.scm:235 +msgid "" +"Usage: guix package [OPTION]...\n" +"Install, remove, or upgrade packages in a single transaction.\n" +msgstr "" + +#: guix/scripts/package.scm:237 +msgid "" +"\n" +" -i, --install PACKAGE ...\n" +" install PACKAGEs" +msgstr "" + +#: guix/scripts/package.scm:240 +msgid "" +"\n" +" -e, --install-from-expression=EXP\n" +" install the package EXP evaluates to" +msgstr "" + +#: guix/scripts/package.scm:243 +msgid "" +"\n" +" -f, --install-from-file=FILE\n" +" install the package that the code within FILE\n" +" evaluates to" +msgstr "" + +#: guix/scripts/package.scm:247 +msgid "" +"\n" +" -r, --remove PACKAGE ...\n" +" remove PACKAGEs" +msgstr "" + +#: guix/scripts/package.scm:250 +msgid "" +"\n" +" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" +msgstr "" + +#: guix/scripts/package.scm:252 +msgid "" +"\n" +" -m, --manifest=FILE create a new profile generation with the manifest\n" +" from FILE" +msgstr "" + +#: guix/scripts/package.scm:255 +msgid "" +"\n" +" --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP" +msgstr "" + +#: guix/scripts/package.scm:257 +msgid "" +"\n" +" --roll-back roll back to the previous generation" +msgstr "" + +#: guix/scripts/package.scm:259 +msgid "" +"\n" +" --search-paths[=KIND]\n" +" display needed environment variable definitions" +msgstr "" + +#: guix/scripts/package.scm:262 +msgid "" +"\n" +" -l, --list-generations[=PATTERN]\n" +" list generations matching PATTERN" +msgstr "" + +#: guix/scripts/package.scm:265 +msgid "" +"\n" +" -d, --delete-generations[=PATTERN]\n" +" delete generations matching PATTERN" +msgstr "" + +#: guix/scripts/package.scm:268 +msgid "" +"\n" +" -S, --switch-generation=PATTERN\n" +" switch to a generation matching PATTERN" +msgstr "" + +#: guix/scripts/package.scm:271 +msgid "" +"\n" +" -p, --profile=PROFILE use PROFILE instead of the user's default profile" +msgstr "" + +#: guix/scripts/package.scm:274 +msgid "" +"\n" +" --bootstrap use the bootstrap Guile to build the profile" +msgstr "" + +#: guix/scripts/package.scm:276 guix/scripts/pull.scm:76 +msgid "" +"\n" +" --verbose produce verbose output" +msgstr "" + +#: guix/scripts/package.scm:279 +msgid "" +"\n" +" -s, --search=REGEXP search in synopsis and description using REGEXP" +msgstr "" + +#: guix/scripts/package.scm:281 +msgid "" +"\n" +" -I, --list-installed[=REGEXP]\n" +" list installed packages matching REGEXP" +msgstr "" + +#: guix/scripts/package.scm:284 +msgid "" +"\n" +" -A, --list-available[=REGEXP]\n" +" list available packages matching REGEXP" +msgstr "" + +#: guix/scripts/package.scm:287 +msgid "" +"\n" +" --show=PACKAGE show details about PACKAGE" +msgstr "" + +#: guix/scripts/package.scm:380 +#, scheme-format +msgid "~a: unsupported kind of search path~%" +msgstr "" + +#: guix/scripts/package.scm:550 guix/scripts/publish.scm:357 +#, scheme-format +msgid "~A: extraneous argument~%" +msgstr "" + +#: guix/scripts/package.scm:558 +#, scheme-format +msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" +msgstr "" + +#: guix/scripts/package.scm:580 +#, scheme-format +msgid "error: while creating directory `~a': ~a~%" +msgstr "" + +#: guix/scripts/package.scm:584 +#, scheme-format +msgid "Please create the `~a' directory, with you as the owner.~%" +msgstr "" + +#: guix/scripts/package.scm:591 +#, scheme-format +msgid "error: directory `~a' is not owned by you~%" +msgstr "" + +#: guix/scripts/package.scm:594 +#, scheme-format +msgid "Please change the owner of `~a' to user ~s.~%" +msgstr "" + +#: guix/scripts/package.scm:628 +#, scheme-format +msgid "nothing to be done~%" +msgstr "" + +#: guix/scripts/package.scm:644 +#, scheme-format +msgid "~a package in profile~%" +msgid_plural "~a packages in profile~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/scripts/package.scm:668 +#, scheme-format +msgid "cannot switch to generation '~a'~%" +msgstr "" + +#: guix/scripts/package.scm:690 +#, scheme-format +msgid "would install new manifest from '~a' with ~d entries~%" +msgstr "" + +#: guix/scripts/package.scm:692 +#, scheme-format +msgid "installing new manifest from '~a' with ~d entries~%" +msgstr "" + +#: guix/scripts/gc.scm:40 +msgid "" +"Usage: guix gc [OPTION]... PATHS...\n" +"Invoke the garbage collector.\n" +msgstr "" + +#: guix/scripts/gc.scm:42 +msgid "" +"\n" +" -C, --collect-garbage[=MIN]\n" +" collect at least MIN bytes of garbage" +msgstr "" + +#: guix/scripts/gc.scm:45 +msgid "" +"\n" +" -d, --delete attempt to delete PATHS" +msgstr "" + +#: guix/scripts/gc.scm:47 +msgid "" +"\n" +" --optimize optimize the store by deduplicating identical files" +msgstr "" + +#: guix/scripts/gc.scm:49 +msgid "" +"\n" +" --list-dead list dead paths" +msgstr "" + +#: guix/scripts/gc.scm:51 +msgid "" +"\n" +" --list-live list live paths" +msgstr "" + +#: guix/scripts/gc.scm:54 +msgid "" +"\n" +" --references list the references of PATHS" +msgstr "" + +#: guix/scripts/gc.scm:56 +msgid "" +"\n" +" -R, --requisites list the requisites of PATHS" +msgstr "" + +#: guix/scripts/gc.scm:58 +msgid "" +"\n" +" --referrers list the referrers of PATHS" +msgstr "" + +#: guix/scripts/gc.scm:61 +msgid "" +"\n" +" --verify[=OPTS] verify the integrity of the store; OPTS is a\n" +" comma-separated combination of 'repair' and\n" +" 'contents'" +msgstr "" + +#: guix/scripts/gc.scm:65 +msgid "" +"\n" +" --list-failures list cached build failures" +msgstr "" + +#: guix/scripts/gc.scm:67 +msgid "" +"\n" +" --clear-failures remove PATHS from the set of cached failures" +msgstr "" + +#: guix/scripts/gc.scm:96 +#, scheme-format +msgid "invalid amount of storage: ~a~%" +msgstr "" + +#: guix/scripts/hash.scm:46 +msgid "" +"Usage: guix hash [OPTION] FILE\n" +"Return the cryptographic hash of FILE.\n" +"\n" +"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n" +"and 'hexadecimal' can be used as well).\n" +msgstr "" + +#: guix/scripts/hash.scm:53 +msgid "" +"\n" +" -r, --recursive compute the hash on FILE recursively" +msgstr "" + +#: guix/scripts/hash.scm:104 +#, scheme-format +msgid "unrecognized option: ~a~%" +msgstr "" + +#: guix/scripts/hash.scm:135 guix/ui.scm:458 +#, scheme-format +msgid "~a~%" +msgstr "" + +#: guix/scripts/hash.scm:138 guix/scripts/system.scm:685 +#, scheme-format +msgid "wrong number of arguments~%" +msgstr "" + +#: guix/scripts/import.scm:85 +msgid "" +"Usage: guix import IMPORTER ARGS ...\n" +"Run IMPORTER with ARGS.\n" +msgstr "" + +#: guix/scripts/import.scm:88 +msgid "IMPORTER must be one of the importers listed below:\n" +msgstr "" + +#: guix/scripts/import.scm:102 +#, scheme-format +msgid "guix import: missing importer name~%" +msgstr "" + +#: guix/scripts/import.scm:113 +#, scheme-format +msgid "guix import: invalid importer~%" +msgstr "" + +#: guix/scripts/import/cran.scm:42 +msgid "" +"Usage: guix import cran PACKAGE-NAME\n" +"Import and convert the CRAN package for PACKAGE-NAME.\n" +msgstr "" + +#: guix/scripts/import/cran.scm:87 +#, scheme-format +msgid "failed to download description for package '~a'~%" +msgstr "" + +#: guix/scripts/import/cran.scm:91 guix/scripts/import/elpa.scm:95 +#, scheme-format +msgid "too few arguments~%" +msgstr "" + +#: guix/scripts/import/cran.scm:93 guix/scripts/import/elpa.scm:97 +#, scheme-format +msgid "too many arguments~%" +msgstr "" + +#: guix/scripts/import/elpa.scm:41 +msgid "" +"Usage: guix import elpa PACKAGE-NAME\n" +"Import the latest package named PACKAGE-NAME from an ELPA repository.\n" +msgstr "" + +#: guix/scripts/import/elpa.scm:43 +msgid "" +"\n" +" -a, --archive=ARCHIVE specify the archive repository" +msgstr "" + +#: guix/scripts/import/elpa.scm:45 +msgid "" +"\n" +" -h, --help display this help and exit" +msgstr "" + +#: guix/scripts/import/elpa.scm:47 +msgid "" +"\n" +" -V, --version display version information and exit" +msgstr "" + +#: guix/scripts/import/elpa.scm:92 +#, scheme-format +msgid "failed to download package '~a'~%" +msgstr "" + +#: guix/scripts/pull.scm:74 +msgid "" +"Usage: guix pull [OPTION]...\n" +"Download and deploy the latest version of Guix.\n" +msgstr "" + +#: guix/scripts/pull.scm:78 +msgid "" +"\n" +" --url=URL download the Guix tarball from URL" +msgstr "" + +#: guix/scripts/pull.scm:80 +msgid "" +"\n" +" --bootstrap use the bootstrap Guile to build the new Guix" +msgstr "" + +#: guix/scripts/pull.scm:134 +msgid "tarball did not produce a single source directory" +msgstr "" + +#: guix/scripts/pull.scm:152 +#, scheme-format +msgid "unpacking '~a'...~%" +msgstr "" + +#: guix/scripts/pull.scm:161 +msgid "failed to unpack source code" +msgstr "" + +#: guix/scripts/pull.scm:204 +msgid "Guix already up to date\n" +msgstr "" + +#: guix/scripts/pull.scm:209 +#, scheme-format +msgid "updated ~a successfully deployed under `~a'~%" +msgstr "" + +#: guix/scripts/pull.scm:212 +#, scheme-format +msgid "failed to update Guix, check the build log~%" +msgstr "" + +#: guix/scripts/pull.scm:221 +#, scheme-format +msgid "~A: unexpected argument~%" +msgstr "" + +#: guix/scripts/pull.scm:230 +msgid "failed to download up-to-date source, exiting\n" +msgstr "" + +#: guix/scripts/substitute.scm:103 +#, scheme-format +msgid "authentication and authorization of substitutes disabled!~%" +msgstr "" + +#: guix/scripts/substitute.scm:179 +#, scheme-format +msgid "download from '~a' failed: ~a, ~s~%" +msgstr "" + +#: guix/scripts/substitute.scm:191 +#, scheme-format +msgid "while fetching ~a: server is somewhat slow~%" +msgstr "" + +#: guix/scripts/substitute.scm:193 +#, scheme-format +msgid "try `--no-substitutes' if the problem persists~%" +msgstr "" + +#: guix/scripts/substitute.scm:266 +#, scheme-format +msgid "signature version must be a number: ~s~%" +msgstr "" + +#: guix/scripts/substitute.scm:270 +#, scheme-format +msgid "unsupported signature version: ~a~%" +msgstr "" + +#: guix/scripts/substitute.scm:278 +#, scheme-format +msgid "signature is not a valid s-expression: ~s~%" +msgstr "" + +#: guix/scripts/substitute.scm:282 +#, scheme-format +msgid "invalid format of the signature field: ~a~%" +msgstr "" + +#: guix/scripts/substitute.scm:317 +#, scheme-format +msgid "invalid signature for '~a'~%" +msgstr "" + +#: guix/scripts/substitute.scm:319 +#, scheme-format +msgid "hash mismatch for '~a'~%" +msgstr "" + +#: guix/scripts/substitute.scm:321 +#, scheme-format +msgid "'~a' is signed with an unauthorized key~%" +msgstr "" + +#: guix/scripts/substitute.scm:323 +#, scheme-format +msgid "signature on '~a' is corrupt~%" +msgstr "" + +#: guix/scripts/substitute.scm:361 +#, scheme-format +msgid "substitute at '~a' lacks a signature~%" +msgstr "" + +#: guix/scripts/substitute.scm:537 +#, scheme-format +msgid "updating list of substitutes from '~a'... ~5,1f%" +msgstr "" + +#: guix/scripts/substitute.scm:591 +#, scheme-format +msgid "~s: unsupported server URI scheme~%" +msgstr "" + +#: guix/scripts/substitute.scm:733 +#, scheme-format +msgid "host name lookup error: ~a~%" +msgstr "" + +#: guix/scripts/substitute.scm:742 +msgid "" +"Usage: guix substitute [OPTION]...\n" +"Internal tool to substitute a pre-built binary to a local build.\n" +msgstr "" + +#: guix/scripts/substitute.scm:744 +msgid "" +"\n" +" --query report on the availability of substitutes for the\n" +" store file names passed on the standard input" +msgstr "" + +#: guix/scripts/substitute.scm:747 +msgid "" +"\n" +" --substitute STORE-FILE DESTINATION\n" +" download STORE-FILE and store it as a Nar in file\n" +" DESTINATION" +msgstr "" + +#: guix/scripts/substitute.scm:872 +msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" +msgstr "" + +#: guix/scripts/substitute.scm:954 +#, scheme-format +msgid "~a: unrecognized options~%" +msgstr "" + +#: guix/scripts/authenticate.scm:58 +#, scheme-format +msgid "cannot find public key for secret key '~a'~%" +msgstr "" + +#: guix/scripts/authenticate.scm:78 +#, scheme-format +msgid "error: invalid signature: ~a~%" +msgstr "" + +#: guix/scripts/authenticate.scm:80 +#, scheme-format +msgid "error: unauthorized public key: ~a~%" +msgstr "" + +#: guix/scripts/authenticate.scm:82 +#, scheme-format +msgid "error: corrupt signature data: ~a~%" +msgstr "" + +#: guix/scripts/authenticate.scm:120 +msgid "" +"Usage: guix authenticate OPTION...\n" +"Sign or verify the signature on the given file. This tool is meant to\n" +"be used internally by 'guix-daemon'.\n" +msgstr "" + +#: guix/scripts/authenticate.scm:126 +msgid "wrong arguments" +msgstr "" + +#: guix/scripts/system.scm:105 +#, scheme-format +msgid "failed to register '~a' under '~a'~%" +msgstr "" + +#: guix/scripts/system.scm:137 +#, scheme-format +msgid "failed to install GRUB on device '~a'~%" +msgstr "" + +#: guix/scripts/system.scm:155 +#, scheme-format +msgid "initializing the current root file system~%" +msgstr "" + +#: guix/scripts/system.scm:169 +#, scheme-format +msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%" +msgstr "" + +#: guix/scripts/system.scm:219 +#, scheme-format +msgid "unrecognized boot parameters for '~a'~%" +msgstr "" + +#: guix/scripts/system.scm:254 +#, scheme-format +msgid "activating system...~%" +msgstr "" + +#: guix/scripts/system.scm:338 +msgid "the DAG of services" +msgstr "" + +#: guix/scripts/system.scm:351 +msgid "the dependency graph of dmd services" +msgstr "" + +#: guix/scripts/system.scm:369 +#, scheme-format +msgid " file name: ~a~%" +msgstr "" + +#: guix/scripts/system.scm:370 +#, scheme-format +msgid " canonical file name: ~a~%" +msgstr "" + +#. TRANSLATORS: Please preserve the two-space indentation. +#: guix/scripts/system.scm:374 +#, scheme-format +msgid " label: ~a~%" +msgstr "" + +#: guix/scripts/system.scm:375 +#, scheme-format +msgid " root device: ~a~%" +msgstr "" + +#: guix/scripts/system.scm:376 +#, scheme-format +msgid " kernel: ~a~%" +msgstr "" + +#: guix/scripts/system.scm:476 +#, scheme-format +msgid "initializing operating system under '~a'...~%" +msgstr "" + +#: guix/scripts/system.scm:515 +msgid "" +"Usage: guix system [OPTION] ACTION [FILE]\n" +"Build the operating system declared in FILE according to ACTION.\n" +msgstr "" + +#: guix/scripts/system.scm:518 +msgid "The valid values for ACTION are:\n" +msgstr "" + +#: guix/scripts/system.scm:520 +msgid " reconfigure switch to a new operating system configuration\n" +msgstr "" + +#: guix/scripts/system.scm:522 +msgid " list-generations list the system generations\n" +msgstr "" + +#: guix/scripts/system.scm:524 +msgid " build build the operating system without installing anything\n" +msgstr "" + +#: guix/scripts/system.scm:526 +msgid " vm build a virtual machine image that shares the host's store\n" +msgstr "" + +#: guix/scripts/system.scm:528 +msgid " vm-image build a freestanding virtual machine image\n" +msgstr "" + +#: guix/scripts/system.scm:530 +msgid " disk-image build a disk image, suitable for a USB stick\n" +msgstr "" + +#: guix/scripts/system.scm:532 +msgid " init initialize a root file system to run GNU\n" +msgstr "" + +#: guix/scripts/system.scm:534 +msgid " extension-graph emit the service extension graph in Dot format\n" +msgstr "" + +#: guix/scripts/system.scm:536 +msgid " dmd-graph emit the graph of dmd services in Dot format\n" +msgstr "" + +#: guix/scripts/system.scm:540 +msgid "" +"\n" +" -d, --derivation return the derivation of the given system" +msgstr "" + +#: guix/scripts/system.scm:542 +msgid "" +"\n" +" --on-error=STRATEGY\n" +" apply STRATEGY when an error occurs while reading FILE" +msgstr "" + +#: guix/scripts/system.scm:545 +msgid "" +"\n" +" --image-size=SIZE for 'vm-image', produce an image of SIZE" +msgstr "" + +#: guix/scripts/system.scm:547 +msgid "" +"\n" +" --no-grub for 'init', do not install GRUB" +msgstr "" + +#: guix/scripts/system.scm:549 +msgid "" +"\n" +" --share=SPEC for 'vm', share host file system according to SPEC" +msgstr "" + +#: guix/scripts/system.scm:551 +msgid "" +"\n" +" --expose=SPEC for 'vm', expose host file system according to SPEC" +msgstr "" + +#: guix/scripts/system.scm:553 +msgid "" +"\n" +" --full-boot for 'vm', make a full boot sequence" +msgstr "" + +#: guix/scripts/system.scm:637 +#, scheme-format +msgid "no configuration file specified~%" +msgstr "" + +#: guix/scripts/system.scm:700 +#, scheme-format +msgid "~a: unknown action~%" +msgstr "" + +#: guix/scripts/system.scm:715 +#, scheme-format +msgid "wrong number of arguments for action '~a'~%" +msgstr "" + +#: guix/scripts/system.scm:720 +#, scheme-format +msgid "guix system: missing command name~%" +msgstr "" + +#: guix/scripts/system.scm:722 +#, scheme-format +msgid "Try 'guix system --help' for more information.~%" +msgstr "Wpisz 'guix system --help' aby uzyskać więcej informacji.~%" + +#: guix/scripts/lint.scm:124 +#, scheme-format +msgid "Available checkers:~%" +msgstr "" + +#: guix/scripts/lint.scm:144 +msgid "description should not be empty" +msgstr "" + +#: guix/scripts/lint.scm:154 +msgid "Texinfo markup in description is invalid" +msgstr "" + +#: guix/scripts/lint.scm:162 +msgid "description should start with an upper-case letter or digit" +msgstr "" + +#: guix/scripts/lint.scm:178 +#, scheme-format +msgid "" +"sentences in description should be followed ~\n" +"by two spaces; possible infraction~p at ~{~a~^, ~}" +msgstr "" + +#: guix/scripts/lint.scm:202 +msgid "pkg-config should probably be a native input" +msgstr "" + +#: guix/scripts/lint.scm:217 +msgid "synopsis should not be empty" +msgstr "" + +#: guix/scripts/lint.scm:225 +msgid "no period allowed at the end of the synopsis" +msgstr "" + +#: guix/scripts/lint.scm:237 +msgid "no article allowed at the beginning of the synopsis" +msgstr "" + +#: guix/scripts/lint.scm:244 +msgid "synopsis should be less than 80 characters long" +msgstr "" + +#: guix/scripts/lint.scm:250 +msgid "synopsis should start with an upper-case letter or digit" +msgstr "" + +#: guix/scripts/lint.scm:257 +msgid "synopsis should not start with the package name" +msgstr "" + +#: guix/scripts/lint.scm:348 guix/scripts/lint.scm:360 +#, scheme-format +msgid "URI ~a not reachable: ~a (~s)" +msgstr "" + +#: guix/scripts/lint.scm:367 +#, scheme-format +msgid "URI ~a domain not found: ~a" +msgstr "" + +#: guix/scripts/lint.scm:375 +#, scheme-format +msgid "URI ~a unreachable: ~a" +msgstr "" + +#: guix/scripts/lint.scm:401 +msgid "invalid value for home page" +msgstr "" + +#: guix/scripts/lint.scm:404 +#, scheme-format +msgid "invalid home page URL: ~s" +msgstr "" + +#: guix/scripts/lint.scm:429 +msgid "file names of patches should start with the package name" +msgstr "" + +#: guix/scripts/lint.scm:467 +#, scheme-format +msgid "~a: ~a: proposed synopsis: ~s~%" +msgstr "" + +#: guix/scripts/lint.scm:479 +#, scheme-format +msgid "~a: ~a: proposed description:~% \"~a\"~%" +msgstr "" + +#: guix/scripts/lint.scm:516 +msgid "all the source URIs are unreachable:" +msgstr "" + +#: guix/scripts/lint.scm:539 +msgid "the source file name should contain the package name" +msgstr "" + +#: guix/scripts/lint.scm:548 guix/scripts/lint.scm:552 +#, scheme-format +msgid "failed to create derivation: ~a" +msgstr "" + +#: guix/scripts/lint.scm:558 +#, scheme-format +msgid "failed to create derivation: ~s~%" +msgstr "" + +#: guix/scripts/lint.scm:568 +msgid "invalid license field" +msgstr "" + +#: guix/scripts/lint.scm:582 +#, scheme-format +msgid "tabulation on line ~a, column ~a" +msgstr "" + +#: guix/scripts/lint.scm:591 +#, scheme-format +msgid "trailing white space on line ~a" +msgstr "" + +#: guix/scripts/lint.scm:601 +#, scheme-format +msgid "line ~a is way too long (~a characters)" +msgstr "" + +#: guix/scripts/lint.scm:612 +#, scheme-format +msgid "line ~a: parentheses feel lonely, move to the previous or next line" +msgstr "" + +#: guix/scripts/lint.scm:667 +msgid "Validate package descriptions" +msgstr "" + +#: guix/scripts/lint.scm:671 +msgid "Validate synopsis & description of GNU packages" +msgstr "" + +#: guix/scripts/lint.scm:675 +msgid "Identify inputs that should be native inputs" +msgstr "" + +#: guix/scripts/lint.scm:679 +msgid "Validate file names and availability of patches" +msgstr "" + +#: guix/scripts/lint.scm:683 +msgid "Validate home-page URLs" +msgstr "" + +#. TRANSLATORS: is the name of a data type and must not be +#. translated. +#: guix/scripts/lint.scm:689 +msgid "Make sure the 'license' field is a or a list thereof" +msgstr "" + +#: guix/scripts/lint.scm:694 +msgid "Validate source URLs" +msgstr "" + +#: guix/scripts/lint.scm:698 +msgid "Validate file names of sources" +msgstr "" + +#: guix/scripts/lint.scm:702 +msgid "Report failure to compile a package to a derivation" +msgstr "" + +#: guix/scripts/lint.scm:706 +msgid "Validate package synopses" +msgstr "" + +#: guix/scripts/lint.scm:710 +msgid "Look for formatting issues in the source" +msgstr "" + +#: guix/scripts/lint.scm:735 +msgid "" +"Usage: guix lint [OPTION]... [PACKAGE]...\n" +"Run a set of checkers on the specified package; if none is specified,\n" +"run the checkers on all packages.\n" +msgstr "" + +#: guix/scripts/lint.scm:738 +msgid "" +"\n" +" -c, --checkers=CHECKER1,CHECKER2...\n" +" only run the specified checkers" +msgstr "" + +#: guix/scripts/lint.scm:743 +msgid "" +"\n" +" -l, --list-checkers display the list of available lint checkers" +msgstr "" + +#: guix/scripts/lint.scm:763 +#, scheme-format +msgid "~a: invalid checker~%" +msgstr "" + +#: guix/scripts/publish.scm:52 +#, scheme-format +msgid "" +"Usage: guix publish [OPTION]...\n" +"Publish ~a over HTTP.\n" +msgstr "" + +#: guix/scripts/publish.scm:54 +msgid "" +"\n" +" -p, --port=PORT listen on PORT" +msgstr "" + +#: guix/scripts/publish.scm:56 +msgid "" +"\n" +" --listen=HOST listen on the network interface for HOST" +msgstr "" + +#: guix/scripts/publish.scm:58 +msgid "" +"\n" +" -u, --user=USER change privileges to USER as soon as possible" +msgstr "" + +#: guix/scripts/publish.scm:60 +msgid "" +"\n" +" -r, --repl[=PORT] spawn REPL server on PORT" +msgstr "" + +#: guix/scripts/publish.scm:76 +#, scheme-format +msgid "lookup of host '~a' failed: ~a~%" +msgstr "" + +#: guix/scripts/publish.scm:100 +#, scheme-format +msgid "lookup of host '~a' returned nothing" +msgstr "" + +#: guix/scripts/publish.scm:343 +#, scheme-format +msgid "user '~a' not found: ~a~%" +msgstr "" + +#: guix/scripts/publish.scm:378 +#, scheme-format +msgid "server running as root; consider using the '--user' option!~%" +msgstr "" + +#: guix/scripts/publish.scm:380 +#, scheme-format +msgid "publishing ~a on ~a, port ~d~%" +msgstr "" + +#: guix/scripts/edit.scm:40 +msgid "" +"Usage: guix edit PACKAGE...\n" +"Start $EDITOR to edit the definitions of PACKAGE...\n" +msgstr "" + +#: guix/scripts/edit.scm:58 +#, scheme-format +msgid "file '~a' not found in search path ~s~%" +msgstr "" + +#: guix/scripts/edit.scm:70 +#, scheme-format +msgid "source location of package '~a' is unknown~%" +msgstr "" + +#: guix/scripts/size.scm:75 +#, scheme-format +msgid "no available substitute information for '~a'~%" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "store item" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "total" +msgstr "" + +#: guix/scripts/size.scm:83 +msgid "self" +msgstr "" + +#. TRANSLATORS: This is the title of a graph, meaning that the graph +#. represents a profile of the store (the "store" being the place where +#. packages are stored.) +#: guix/scripts/size.scm:204 +msgid "store profile" +msgstr "" + +#: guix/scripts/size.scm:213 +msgid "" +"Usage: guix size [OPTION]... PACKAGE\n" +"Report the size of PACKAGE and its dependencies.\n" +msgstr "" + +#: guix/scripts/size.scm:218 +msgid "" +"\n" +" -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"" +msgstr "" + +#: guix/scripts/size.scm:220 +msgid "" +"\n" +" -m, --map-file=FILE write to FILE a graphical map of disk usage" +msgstr "" + +#: guix/scripts/size.scm:274 +msgid "missing store item argument\n" +msgstr "" + +#: guix/scripts/size.scm:292 +msgid "too many arguments\n" +msgstr "" + +#: guix/scripts/graph.scm:105 +msgid "the DAG of packages, excluding implicit inputs" +msgstr "" + +#: guix/scripts/graph.scm:155 +msgid "the DAG of packages, including implicit inputs" +msgstr "" + +#: guix/scripts/graph.scm:179 +msgid "same as 'bag', but without the bootstrap nodes" +msgstr "" + +#: guix/scripts/graph.scm:222 +msgid "the DAG of derivations" +msgstr "" + +#: guix/scripts/graph.scm:246 +#, scheme-format +msgid "references for '~a' are not known~%" +msgstr "" + +#: guix/scripts/graph.scm:253 +msgid "the DAG of run-time dependencies (store references)" +msgstr "" + +#: guix/scripts/graph.scm:282 +#, scheme-format +msgid "~a: unknown node type~%" +msgstr "" + +#: guix/scripts/graph.scm:286 +msgid "The available node types are:\n" +msgstr "" + +#. TRANSLATORS: Here 'dot' is the name of a program; it must not be +#. translated. +#: guix/scripts/graph.scm:389 +msgid "" +"Usage: guix graph PACKAGE...\n" +"Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n" +msgstr "" + +#: guix/scripts/graph.scm:391 +msgid "" +"\n" +" -t, --type=TYPE represent nodes of the given TYPE" +msgstr "" + +#: guix/scripts/graph.scm:393 +msgid "" +"\n" +" --list-types list the available graph types" +msgstr "" + +#: guix/scripts/graph.scm:395 +msgid "" +"\n" +" -e, --expression=EXPR consider the package EXPR evaluates to" +msgstr "" + +#: guix/scripts/challenge.scm:104 +#, scheme-format +msgid "~a: no substitute at '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:120 +#, scheme-format +msgid "no substitutes for '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:137 guix/scripts/challenge.scm:157 +#, scheme-format +msgid "no local build for '~a'~%" +msgstr "" + +#: guix/scripts/challenge.scm:154 +#, scheme-format +msgid "~a contents differ:~%" +msgstr "" + +#: guix/scripts/challenge.scm:156 +#, scheme-format +msgid " local hash: ~a~%" +msgstr "" + +#: guix/scripts/challenge.scm:161 +#, scheme-format +msgid " ~50a: ~a~%" +msgstr "" + +#: guix/scripts/challenge.scm:165 +#, scheme-format +msgid " ~50a: unavailable~%" +msgstr "" + +#: guix/scripts/challenge.scm:175 +msgid "" +"Usage: guix challenge [PACKAGE...]\n" +"Challenge the substitutes for PACKAGE... provided by one or more servers.\n" +msgstr "" + +#: guix/scripts/challenge.scm:177 +msgid "" +"\n" +" --substitute-urls=URLS\n" +" compare build results with those at URLS" +msgstr "" + +#: guix/gnu-maintenance.scm:418 +msgid "Updater for GNU packages" +msgstr "" + +#: guix/upstream.scm:156 +#, scheme-format +msgid "signature verification failed for `~a'~%" +msgstr "" + +#: guix/upstream.scm:158 +#, scheme-format +msgid "(could be because the public key is not in your keyring)~%" +msgstr "" + +#: guix/upstream.scm:190 +msgid "gz" +msgstr "" + +#: guix/upstream.scm:253 +#, scheme-format +msgid "~a: could not locate source file" +msgstr "" + +#: guix/upstream.scm:258 +#, scheme-format +msgid "~a: ~a: no `version' field in source; skipping~%" +msgstr "" + +#: guix/ui.scm:234 +msgid "entering debugger; type ',bt' for a backtrace\n" +msgstr "" + +#: guix/ui.scm:250 guix/ui.scm:267 +#, scheme-format +msgid "failed to load '~a': ~a~%" +msgstr "" + +#: guix/ui.scm:253 +#, scheme-format +msgid "~a: error: ~a~%" +msgstr "" + +#: guix/ui.scm:256 guix/ui.scm:510 +#, scheme-format +msgid "exception thrown: ~s~%" +msgstr "" + +#: guix/ui.scm:258 guix/ui.scm:276 +#, scheme-format +msgid "failed to load '~a':~%" +msgstr "" + +#: guix/ui.scm:270 +#, scheme-format +msgid "~a: warning: ~a~%" +msgstr "~a: ostrzeżenie: ~a~%" + +#: guix/ui.scm:273 +#, scheme-format +msgid "failed to load '~a': exception thrown: ~s~%" +msgstr "" + +#: guix/ui.scm:285 +#, scheme-format +msgid "failed to install locale: ~a~%" +msgstr "instalacja tłumaczeń nie powiodła się: ~a~%" + +#: guix/ui.scm:304 +msgid "" +"Copyright (C) 2015 the Guix authors\n" +"License GPLv3+: GNU GPL version 3 or later \n" +"This is free software: you are free to change and redistribute it.\n" +"There is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" + +#: guix/ui.scm:312 +#, scheme-format +msgid "" +"\n" +"Report bugs to: ~a." +msgstr "" + +#: guix/ui.scm:314 +#, scheme-format +msgid "" +"\n" +"~a home page: <~a>" +msgstr "" + +#: guix/ui.scm:316 +msgid "" +"\n" +"General help using GNU software: " +msgstr "" + +#: guix/ui.scm:361 +#, scheme-format +msgid "'~a' is not a valid regular expression: ~a~%" +msgstr "" + +#: guix/ui.scm:367 +#, scheme-format +msgid "~a: invalid number~%" +msgstr "" + +#: guix/ui.scm:384 +#, scheme-format +msgid "invalid number: ~a~%" +msgstr "" + +#: guix/ui.scm:407 +#, scheme-format +msgid "unknown unit: ~a~%" +msgstr "" + +#: guix/ui.scm:418 +#, scheme-format +msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" +msgstr "" + +#: guix/ui.scm:425 +#, scheme-format +msgid "~a: ~a: build system `~a' does not support cross builds~%" +msgstr "" + +#: guix/ui.scm:430 +#, scheme-format +msgid "profile '~a' does not exist~%" +msgstr "" + +#: guix/ui.scm:433 +#, scheme-format +msgid "generation ~a of profile '~a' does not exist~%" +msgstr "" + +#: guix/ui.scm:440 +#, scheme-format +msgid "corrupt input while restoring '~a' from ~s~%" +msgstr "" + +#: guix/ui.scm:442 +#, scheme-format +msgid "corrupt input while restoring archive from ~s~%" +msgstr "" + +#: guix/ui.scm:445 +#, scheme-format +msgid "failed to connect to `~a': ~a~%" +msgstr "" + +#: guix/ui.scm:450 +#, scheme-format +msgid "build failed: ~a~%" +msgstr "" + +#: guix/ui.scm:453 +#, scheme-format +msgid "reference to invalid output '~a' of derivation '~a'~%" +msgstr "" + +#: guix/ui.scm:464 +#, scheme-format +msgid "~a: ~a~%" +msgstr "" + +#: guix/ui.scm:499 +#, scheme-format +msgid "failed to read expression ~s: ~s~%" +msgstr "" + +#: guix/ui.scm:505 +#, scheme-format +msgid "failed to evaluate expression '~a':~%" +msgstr "" + +#: guix/ui.scm:508 +#, scheme-format +msgid "syntax error: ~a~%" +msgstr "" + +#: guix/ui.scm:522 +#, scheme-format +msgid "expression ~s does not evaluate to a package~%" +msgstr "" + +#: guix/ui.scm:582 +#, scheme-format +msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:587 +#, scheme-format +msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:593 +#, scheme-format +msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:598 +#, scheme-format +msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" +msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:653 +#, scheme-format +msgid "The following package would be removed:~%~{~a~%~}~%" +msgid_plural "The following packages would be removed:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:658 +#, scheme-format +msgid "The following package will be removed:~%~{~a~%~}~%" +msgid_plural "The following packages will be removed:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:671 +#, scheme-format +msgid "The following package would be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:676 +#, scheme-format +msgid "The following package will be downgraded:~%~{~a~%~}~%" +msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:689 +#, scheme-format +msgid "The following package would be upgraded:~%~{~a~%~}~%" +msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:694 +#, scheme-format +msgid "The following package will be upgraded:~%~{~a~%~}~%" +msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:705 +#, scheme-format +msgid "The following package would be installed:~%~{~a~%~}~%" +msgid_plural "The following packages would be installed:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:710 +#, scheme-format +msgid "The following package will be installed:~%~{~a~%~}~%" +msgid_plural "The following packages will be installed:~%~{~a~%~}~%" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: guix/ui.scm:727 +msgid "" +msgstr "" + +#: guix/ui.scm:746 +#, scheme-format +msgid "failed to create configuration directory `~a': ~a~%" +msgstr "" + +#: guix/ui.scm:865 guix/ui.scm:879 +msgid "unknown" +msgstr "" + +#: guix/ui.scm:1029 +#, scheme-format +msgid "Generation ~a\t~a" +msgstr "" + +#: guix/ui.scm:1036 +#, scheme-format +msgid "~a\t(current)~%" +msgstr "" + +#: guix/ui.scm:1053 +#, scheme-format +msgid "switched from generation ~a to ~a~%" +msgstr "" + +#: guix/ui.scm:1069 +#, scheme-format +msgid "deleting ~a~%" +msgstr "" + +#: guix/ui.scm:1117 +#, scheme-format +msgid "Try `guix --help' for more information.~%" +msgstr "" + +#: guix/ui.scm:1144 +msgid "" +"Usage: guix COMMAND ARGS...\n" +"Run COMMAND with ARGS.\n" +msgstr "" +"Użycie: guix POLECENIE ARGUMENTY...\n" +"Podaj POLECENIE i jego ARGUMENTY.\n" + +#: guix/ui.scm:1147 +msgid "COMMAND must be one of the sub-commands listed below:\n" +msgstr "" + +#: guix/ui.scm:1167 +#, scheme-format +msgid "guix: ~a: command not found~%" +msgstr "" + +#: guix/ui.scm:1184 +#, scheme-format +msgid "guix: missing command name~%" +msgstr "guix: brakująca nazwa polecenia~%" + +#: guix/ui.scm:1192 +#, scheme-format +msgid "guix: unrecognized option '~a'~%" +msgstr "" + +#: guix/http-client.scm:228 +#, scheme-format +msgid "following redirection to `~a'...~%" +msgstr "" + +#: guix/http-client.scm:237 +msgid "download failed" +msgstr "" + +#: guix/nar.scm:155 +msgid "signature is not a valid s-expression" +msgstr "" + +#: guix/nar.scm:164 +msgid "invalid signature" +msgstr "" + +#: guix/nar.scm:168 +msgid "invalid hash" +msgstr "" + +#: guix/nar.scm:176 +msgid "unauthorized public key" +msgstr "" + +#: guix/nar.scm:181 +msgid "corrupt signature data" +msgstr "" + +#: guix/nar.scm:201 +msgid "corrupt file set archive" +msgstr "" + +#: guix/nar.scm:211 +#, scheme-format +msgid "importing file or directory '~a'...~%" +msgstr "" + +#: guix/nar.scm:222 +#, scheme-format +msgid "found valid signature for '~a'~%" +msgstr "" + +#: guix/nar.scm:229 +msgid "imported file lacks a signature" +msgstr "" + +#: guix/nar.scm:268 +msgid "invalid inter-file archive mark" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:61 +msgid "guix-daemon -- perform derivation builds and store accesses" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:63 +msgid "This program is a daemon meant to run in the background. It serves requests sent over a Unix-domain socket. It accesses the store, and builds derivations on behalf of its clients." +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:86 +msgid "SYSTEM" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:87 +msgid "assume SYSTEM as the current system type" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:88 nix/nix-daemon/guix-daemon.cc:91 +msgid "N" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:89 +msgid "use N CPU cores to build each derivation; 0 means as many as available" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:92 +msgid "allow at most N build jobs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:94 +msgid "disable chroot builds" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:95 +msgid "DIR" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:96 +msgid "add DIR to the build chroot" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:97 +msgid "GROUP" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:98 +msgid "perform builds as a user of GROUP" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:100 +msgid "do not use substitutes" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:101 +msgid "URLS" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:102 +msgid "use URLS as the default list of substitute providers" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:104 +msgid "do not use the 'build hook'" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:106 +msgid "cache build failures" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:108 +msgid "do not keep build logs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:110 +msgid "disable compression of the build logs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:115 +msgid "disable automatic file \"deduplication\" in the store" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:125 +msgid "impersonate Linux 2.6" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:129 +msgid "tell whether the GC must keep outputs of live derivations" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:132 +msgid "tell whether the GC must keep derivations corresponding to live outputs" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:135 +msgid "SOCKET" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:136 +msgid "listen for connections on SOCKET" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:138 +msgid "produce debugging output" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:205 nix/nix-daemon/guix-daemon.cc:381 +#, c-format +msgid "error: %s\n" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:266 +#, c-format +msgid "error: libgcrypt version mismatch\n" +msgstr "" + +#: nix/nix-daemon/guix-daemon.cc:357 +#, c-format +msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" +msgstr "" diff --git a/po/packages/LINGUAS b/po/packages/LINGUAS index 19a3bbf515..ff6709ba4d 100644 --- a/po/packages/LINGUAS +++ b/po/packages/LINGUAS @@ -1,11 +1,13 @@ # Set of available languages. +da de en@boldquot en@quot eo fr hu +pl pt_BR sr vi diff --git a/po/packages/da.po b/po/packages/da.po new file mode 100644 index 0000000000..66c2e7cc7e --- /dev/null +++ b/po/packages/da.po @@ -0,0 +1,10112 @@ +# Danish translation guix-packages. +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the guix package. +# Joe Hansen , 2015. +# +#: gnu/packages/databases.scm:598 +msgid "" +msgstr "" +"Project-Id-Version: guix-packages 0.9.0\n" +"Report-Msgid-Bugs-To: ludo@gnu.org\n" +"POT-Creation-Date: 2015-10-28 16:31+0100\n" +"PO-Revision-Date: 2015-10-31 19:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: gnu/packages/abiword.scm:101 +msgid "Word processing program" +msgstr "Tekstbehandlingsprogram" + +#. TRANSLATORS: Dear translator, We would like to inform you that package +#. descriptions may occasionally include Texinfo markup. Texinfo markup +#. looks like "@code{rm -rf}", "@emph{important}", etc. When translating, +#. please leave markup as is. +#: gnu/packages/abiword.scm:110 +msgid "" +"AbiWord is a word processing program. It is rapidly\n" +"becoming a state of the art word processor, with lots of features useful for\n" +"your daily work, personal needs, or for just some good old typing fun." +msgstr "" +"AbiWord er et tekstbehandlingsprogram. Det bliver med stor hastighed\n" +"en vigtig komponent indenfor tekstbehandling, med en masse funktioner, \n" +"som kan bruges i dit daglige arbejde, personlige behov, eller bare\n" +"god gammeldags skrivning." + +#: gnu/packages/aspell.scm:43 gnu/packages/libreoffice.scm:611 +msgid "Spell checker" +msgstr "Stavekontrol" + +#: gnu/packages/aspell.scm:45 +msgid "" +"Aspell is a spell-checker which can be used either as a library or as\n" +"a standalone program. Notable features of Aspell include its full support of\n" +"documents written in the UTF-8 encoding and its ability to use multiple\n" +"dictionaries, including personal ones." +msgstr "" +"Aspell er en stavekontrol, som kan bruges enten som et bibliotek eller\n" +"som et uafhængigt program. Vigtige funktioner i Aspell inkluderer dets\n" +"fulde understøttelse af dokumenter skrivet i UTF-8-kodning og dets evne\n" +"til at bruge flere ordbøger, inklusive personlige." + +#: gnu/packages/aspell.scm:85 +msgid "This package provides a dictionary for the GNU Aspell spell checker." +msgstr "Denne pakke tilbyder en ordbog for stavekontrollen GNU Aspell." + +#: gnu/packages/audio.scm:92 +msgid "Realtime modular synthesizer and effect processor" +msgstr "" + +#: gnu/packages/audio.scm:94 +msgid "" +"AlsaModularSynth is a digital implementation of a classical analog\n" +"modular synthesizer system. It uses virtual control voltages to control the\n" +"parameters of the modules. The control voltages which control the frequency\n" +"e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled\n" +"Filter) modules follow the convention of 1V / Octave." +msgstr "" + +#: gnu/packages/audio.scm:131 +msgid "A library for audio labelling" +msgstr "" + +#: gnu/packages/audio.scm:133 +msgid "" +"aubio is a tool designed for the extraction of annotations from audio\n" +"signals. Its features include segmenting a sound file before each of its\n" +"attacks, performing pitch detection, tapping the beat and producing MIDI\n" +"streams from live audio." +msgstr "" + +#: gnu/packages/audio.scm:226 +msgid "Digital audio workstation" +msgstr "" + +#: gnu/packages/audio.scm:228 +msgid "" +"Ardour is a multi-channel digital audio workstation, allowing users to\n" +"record, edit, mix and master audio and MIDI projects. It is targeted at audio\n" +"engineers, musicians, soundtrack editors and composers." +msgstr "" + +#: gnu/packages/audio.scm:289 +msgid "Tonewheel organ synthesizer" +msgstr "" + +#: gnu/packages/audio.scm:291 +msgid "" +"AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ\n" +"with drawbars, distortion and rotating speakers. The organ has three\n" +"sections, two polyphonic sections with nine drawbars each and one monophonic\n" +"bass section with five drawbars. A standalone JACK application and LV2\n" +"plugins are provided." +msgstr "" + +#: gnu/packages/audio.scm:329 +msgid "Audio plug-in pack for LV2 and JACK environments" +msgstr "" + +#: gnu/packages/audio.scm:331 +msgid "" +"Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.\n" +"The suite contains lots of effects (delay, modulation, signal processing,\n" +"filters, equalizers, dynamics, distortion and mastering effects),\n" +"instruments (SF2 player, organ simulator and a monophonic synthesizer) and\n" +"tools (analyzer, mono/stereo tools, crossovers)." +msgstr "" + +#: gnu/packages/audio.scm:367 +msgid "Sound and music computing system" +msgstr "" + +#: gnu/packages/audio.scm:369 +msgid "" +"Csound is a user-programmable and user-extensible sound processing\n" +"language and software synthesizer." +msgstr "" + +#: gnu/packages/audio.scm:412 gnu/packages/audio.scm:1900 +msgid "C++ wrapper around the ALSA API" +msgstr "" + +#: gnu/packages/audio.scm:414 +msgid "" +"clalsadrv is a C++ wrapper around the ALSA API simplifying access to\n" +"ALSA PCM devices." +msgstr "" + +#: gnu/packages/audio.scm:449 +msgid "SoundFont synthesizer" +msgstr "" + +#: gnu/packages/audio.scm:451 +msgid "" +"FluidSynth is a real-time software synthesizer based on the SoundFont 2\n" +"specifications. FluidSynth reads and handles MIDI events from the MIDI input\n" +"device. It is the software analogue of a MIDI synthesizer. FluidSynth can\n" +"also play midifiles using a Soundfont." +msgstr "" + +#: gnu/packages/audio.scm:483 +msgid "MPEG-4 and MPEG-2 AAC decoder" +msgstr "" + +#: gnu/packages/audio.scm:485 +msgid "" +"FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,\n" +"PS, and DAB+." +msgstr "" + +#: gnu/packages/audio.scm:514 +msgid "Signal processing language" +msgstr "" + +#: gnu/packages/audio.scm:516 +msgid "Faust is a programming language for realtime audio signal processing." +msgstr "" + +#: gnu/packages/audio.scm:551 +msgid "GUS compatible patches for MIDI players" +msgstr "" + +#: gnu/packages/audio.scm:553 +msgid "" +"FreePats is a project to create a free and open set of GUS compatible\n" +"patches that can be used with softsynths such as Timidity and WildMidi." +msgstr "" + +#: gnu/packages/audio.scm:604 +msgid "Virtual guitar amplifier" +msgstr "" + +#: gnu/packages/audio.scm:605 +msgid "" +"Guitarix is a virtual guitar amplifier running JACK.\n" +"Guitarix takes the signal from your guitar as a mono-signal from your sound\n" +"card. The input is processed by a main amp and a rack-section. Both can be\n" +"routed separately and deliver a processed stereo-signal via JACK. You may\n" +"fill the rack with effects from more than 25 built-in modules including stuff\n" +"from a simple noise gate to modulation effects like flanger, phaser or\n" +"auto-wah." +msgstr "" + +#: gnu/packages/audio.scm:647 +msgid "LV2 convolution reverb" +msgstr "" + +#: gnu/packages/audio.scm:649 +msgid "" +"IR is a low-latency, real-time, high performance signal convolver\n" +"especially for creating reverb effects. It supports impulse responses with 1,\n" +"2 or 4 channels, in any soundfile format supported by libsndfile." +msgstr "" + +#: gnu/packages/audio.scm:679 +msgid "JACK audio connection kit" +msgstr "" + +#: gnu/packages/audio.scm:681 +msgid "" +"JACK is a low-latency audio server. It can connect a number of\n" +"different applications to an audio device, as well as allowing them to share\n" +"audio between themselves. JACK is different from other audio server efforts\n" +"in that it has been designed from the ground up to be suitable for\n" +"professional audio work. This means that it focuses on two key areas:\n" +"synchronous execution of all clients, and low latency operation." +msgstr "" + +#: gnu/packages/audio.scm:760 +msgid "Simple LV2 host for JACK" +msgstr "" + +#: gnu/packages/audio.scm:762 +msgid "" +"Jalv is a simple but fully featured LV2 host for JACK. It runs LV2\n" +"plugins and exposes their ports as JACK ports, essentially making any LV2\n" +"plugin function as a JACK application." +msgstr "" + +#: gnu/packages/audio.scm:798 +msgid "Linux Audio Developer's Simple Plugin API (LADSPA)" +msgstr "" + +#: gnu/packages/audio.scm:800 +msgid "" +"LADSPA is a standard that allows software audio processors and effects\n" +"to be plugged into a wide range of audio synthesis and recording packages." +msgstr "" + +#: gnu/packages/audio.scm:836 +msgid "Audio application session manager" +msgstr "" + +#: gnu/packages/audio.scm:838 +msgid "" +"LASH is a session management system for audio applications. It allows\n" +"you to save and restore audio sessions consisting of multiple interconneced\n" +"applications, restoring program state (i.e. loaded patches) and the\n" +"connections between them." +msgstr "" + +#: gnu/packages/audio.scm:859 +msgid "Bauer stereophonic-to-binaural DSP" +msgstr "" + +#: gnu/packages/audio.scm:861 +msgid "" +"The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is\n" +"designed to improve headphone listening of stereo audio records. Recommended\n" +"for headphone prolonged listening to disable superstereo fatigue without\n" +"essential distortions." +msgstr "" + +#: gnu/packages/audio.scm:886 +msgid "Implementation of the Open Sound Control protocol" +msgstr "" + +#: gnu/packages/audio.scm:888 +msgid "" +"liblo is a lightweight library that provides an easy to use\n" +"implementation of the Open Sound Control (OSC) protocol." +msgstr "" + +#: gnu/packages/audio.scm:925 +msgid "Library to simplify use of LV2 plugins in applications" +msgstr "" + +#: gnu/packages/audio.scm:927 +msgid "" +"Lilv is a C library to make the use of LV2 plugins as simple as possible\n" +"for applications. Lilv is the successor to SLV2, rewritten to be\n" +"significantly faster and have minimal dependencies." +msgstr "" + +#: gnu/packages/audio.scm:954 +msgid "LV2 audio plugin specification" +msgstr "" + +#: gnu/packages/audio.scm:956 +msgid "" +"LV2 is an open specification for audio plugins and host applications.\n" +"At its core, LV2 is a simple stable interface, accompanied by extensions which\n" +"add functionality to support the needs of increasingly powerful audio\n" +"software." +msgstr "" + +#: gnu/packages/audio.scm:991 +msgid "LV2 port of the mda Piano plugin" +msgstr "" + +#: gnu/packages/audio.scm:992 +msgid "An LV2 port of the mda Piano VSTi." +msgstr "" + +#: gnu/packages/audio.scm:1005 +msgid "LV2 port of the mda EPiano plugin" +msgstr "" + +#: gnu/packages/audio.scm:1006 +msgid "An LV2 port of the mda EPiano VSTi." +msgstr "" + +#: gnu/packages/audio.scm:1035 +msgid "C++ libraries for LV2 plugins" +msgstr "" + +#: gnu/packages/audio.scm:1037 +msgid "" +"The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and\n" +"extensions into easy to use C++ classes. It is the successor of\n" +"lv2-c++-tools." +msgstr "" + +#: gnu/packages/audio.scm:1078 +msgid "3D audio API" +msgstr "" + +#: gnu/packages/audio.scm:1080 +msgid "" +"OpenAL provides capabilities for playing audio in a virtual 3D\n" +"environment. Distance attenuation, doppler shift, and directional sound\n" +"emitters are among the features handled by the API. More advanced effects,\n" +"including air absorption, occlusion, and environmental reverb, are available\n" +"through the EFX extension. It also facilitates streaming audio, multi-channel\n" +"buffers, and audio capture." +msgstr "" + +#: gnu/packages/audio.scm:1114 +msgid "Modular patch bay for audio and MIDI systems" +msgstr "" + +#: gnu/packages/audio.scm:1116 +msgid "" +"Patchage is a modular patch bay for audio and MIDI systems based on JACK\n" +"and ALSA." +msgstr "" + +#: gnu/packages/audio.scm:1141 +msgid "Real-time audio utility library" +msgstr "" + +#: gnu/packages/audio.scm:1143 +msgid "" +"Raul (Real-time Audio Utility Library) is a C++ utility library primarily\n" +"aimed at audio/musical applications." +msgstr "" + +#: gnu/packages/audio.scm:1169 +msgid "Audio time-stretching and pitch-shifting library" +msgstr "" + +#: gnu/packages/audio.scm:1171 +msgid "" +"Rubber Band is a library and utility program that permits changing the\n" +"tempo and pitch of an audio recording independently of one another." +msgstr "" + +#: gnu/packages/audio.scm:1219 +msgid "Cross-platform MIDI library for C++" +msgstr "" + +#: gnu/packages/audio.scm:1221 +msgid "" +"RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific\n" +"classes) that provide a common cross-platform API for realtime MIDI\n" +"input/output." +msgstr "" + +#: gnu/packages/audio.scm:1247 +msgid "Library for serialising LV2 atoms to/from RDF" +msgstr "" + +#: gnu/packages/audio.scm:1249 +msgid "" +"Sratom is a library for serialising LV2 atoms to/from RDF, particularly\n" +"the Turtle syntax." +msgstr "" + +#: gnu/packages/audio.scm:1274 +msgid "Library for loading and wrapping LV2 plugin UIs" +msgstr "" + +#: gnu/packages/audio.scm:1276 +msgid "" +"Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.\n" +"\n" +"Suil makes it possible to load a UI of a toolkit in a host using another\n" +"toolkit. The API is designed such that hosts do not need to explicitly\n" +"support specific toolkits – if Suil supports a particular toolkit, then UIs in\n" +"that toolkit will work in all hosts that use Suil automatically.\n" +"\n" +"Suil currently supports every combination of Gtk 2, Qt 4, and X11." +msgstr "" + +#: gnu/packages/audio.scm:1333 +msgid "Software synthesizer for playing MIDI files" +msgstr "" + +#: gnu/packages/audio.scm:1335 +msgid "" +"TiMidity++ is a software synthesizer. It can play MIDI files by\n" +"converting them into PCM waveform data; give it a MIDI data along with digital\n" +"instrument data files, then it synthesizes them in real-time, and plays. It\n" +"can not only play sounds, but also can save the generated waveforms into hard\n" +"disks as various audio file formats." +msgstr "" + +#: gnu/packages/audio.scm:1374 +msgid "Modular and extensible audio processing system" +msgstr "" + +#: gnu/packages/audio.scm:1376 +msgid "" +"Vamp is an audio processing plugin system for plugins that extract\n" +"descriptive information from audio data — typically referred to as audio\n" +"analysis plugins or audio feature extraction plugins." +msgstr "" + +#: gnu/packages/audio.scm:1415 +msgid "Library for time stretching and pitch scaling of audio" +msgstr "" + +#: gnu/packages/audio.scm:1417 +msgid "" +"SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time\n" +"stretching and pitch scaling of audio. This package contains the library." +msgstr "" + +#: gnu/packages/audio.scm:1440 +msgid "Hybrid lossless audio codec" +msgstr "" + +#: gnu/packages/audio.scm:1442 +msgid "" +"WavPack is an audio compression format with lossless, lossy and hybrid\n" +"compression modes. This package contains command-line programs and library to\n" +"encode and decode wavpack files." +msgstr "" + +#: gnu/packages/audio.scm:1461 +msgid "Mod file playing library" +msgstr "" + +#: gnu/packages/audio.scm:1463 +msgid "" +"Libmodplug renders mod music files as raw audio data, for playing or\n" +"conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are\n" +"supported. Optional features include high-quality resampling, bass expansion,\n" +"surround and reverb." +msgstr "" + +#: gnu/packages/audio.scm:1482 +msgid "Module player library" +msgstr "" + +#: gnu/packages/audio.scm:1484 +msgid "" +"Libxmp is a library that renders module files to PCM data. It supports\n" +"over 90 mainstream and obscure module formats including Protracker (MOD),\n" +"Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT)." +msgstr "" + +#: gnu/packages/audio.scm:1507 +msgid "Extended module player" +msgstr "" + +#: gnu/packages/audio.scm:1509 +msgid "" +"Xmp is a portable module player that plays over 90 mainstream and\n" +"obscure module formats, including Protracker MOD, Fasttracker II XM, Scream\n" +"Tracker 3 S3M and Impulse Tracker IT files." +msgstr "" + +#: gnu/packages/audio.scm:1541 +msgid "Audio processing library for changing tempo, pitch and playback rate" +msgstr "" + +#: gnu/packages/audio.scm:1543 +msgid "" +"SoundTouch is an audio processing library for changing the tempo, pitch\n" +"and playback rates of audio streams or audio files. It is intended for\n" +"application developers writing sound processing tools that require tempo/pitch\n" +"control functionality, or just for playing around with the sound effects." +msgstr "" + +#: gnu/packages/audio.scm:1580 +msgid "Sound processing utility" +msgstr "" + +#: gnu/packages/audio.scm:1582 +msgid "" +"SoX (Sound eXchange) is a command line utility that can convert\n" +"various formats of computer audio files to other formats. It can also\n" +"apply various effects to these sound files, and, as an added bonus, SoX\n" +"can play and record audio files." +msgstr "" + +#: gnu/packages/audio.scm:1605 +msgid "One-dimensional sample-rate conversion library" +msgstr "" + +#: gnu/packages/audio.scm:1607 +msgid "" +"The SoX Resampler library (libsoxr) performs one-dimensional sample-rate\n" +"conversion. It may be used, for example, to resample PCM-encoded audio." +msgstr "" + +#: gnu/packages/audio.scm:1629 +msgid "MPEG Audio Layer 2 (MP2) encoder" +msgstr "" + +#: gnu/packages/audio.scm:1631 +msgid "" +"TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on\n" +"tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and\n" +"portions of LAME." +msgstr "" + +#: gnu/packages/audio.scm:1671 +msgid "Audio I/O library" +msgstr "" + +#: gnu/packages/audio.scm:1673 +msgid "" +"PortAudio is a portable C/C++ audio I/O library providing a simple API\n" +"to record and/or play sound using a callback function or a blocking read/write\n" +"interface." +msgstr "" + +#: gnu/packages/audio.scm:1696 +msgid "Graphical user interface for FluidSynth" +msgstr "" + +#: gnu/packages/audio.scm:1698 +msgid "" +"Qsynth is a GUI front-end application for the FluidSynth SoundFont\n" +"synthesizer written in C++." +msgstr "" + +#: gnu/packages/audio.scm:1736 +msgid "Networked audio system" +msgstr "" + +#: gnu/packages/audio.scm:1738 +msgid "" +"RSound allows you to send audio from an application and transfer it\n" +"directly to a different computer on your LAN network. It is an audio daemon\n" +"with a much different focus than most other audio daemons." +msgstr "" + +#: gnu/packages/audio.scm:1769 +msgid "JACK audio frequency analyzer and display" +msgstr "" + +#: gnu/packages/audio.scm:1771 +msgid "" +"XJackFreak is an audio analysis and equalizing tool for the Jack Audio\n" +"Connection Kit. It can display the FFT of any input, modify it and output the\n" +"result." +msgstr "" + +#: gnu/packages/audio.scm:1812 +msgid "Fast, partitioned convolution engine library" +msgstr "" + +#: gnu/packages/audio.scm:1814 +msgid "" +"Zita convolver is a C++ library providing a real-time convolution\n" +"engine." +msgstr "" + +#: gnu/packages/audio.scm:1854 +msgid "C++ library for resampling audio signals" +msgstr "" + +#: gnu/packages/audio.scm:1856 +msgid "" +"Libzita-resampler is a C++ library for resampling audio signals. It is\n" +"designed to be used within a real-time processing context, to be fast, and to\n" +"provide high-quality sample rate conversion." +msgstr "" + +#: gnu/packages/audio.scm:1902 +msgid "" +"Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy\n" +"access to ALSA PCM devices, taking care of the many functions required to\n" +"open, initialise and use a hw: device in mmap mode, and providing floating\n" +"point audio data." +msgstr "" + +#: gnu/packages/backup.scm:89 +msgid "Encrypted backup using rsync algorithm" +msgstr "Krypteret sikkerhedskopiering via brug af rsync-algoritmen" + +#: gnu/packages/backup.scm:91 +msgid "" +"Duplicity backs up directories by producing encrypted tar-format volumes\n" +"and uploading them to a remote or local file server. Because duplicity uses\n" +"librsync, the incremental archives are space efficient and only record the\n" +"parts of files that have changed since the last backup. Because duplicity\n" +"uses GnuPG to encrypt and/or sign these archives, they will be safe from\n" +"spying and/or modification by the server." +msgstr "" +"Duplicity laver sikkerhedskopier af mapper ved at fremstille krypterede\n" +"arkiver i tar-format og overføre dem til en ekstern eller en lokal filserver.\n" +"Da Duplicity bruger librsync, er de trinvist opbyggede arkiver pladseffektive\n" +"og indeholder kun dele af filerne som har ændret sig siden sidste \n" +"sikkerhedskopiering. Da Duplicity bruger GnuPG til at kryptere og/eller\n" +"underskrive disse arkiver, så vil de være sikret mod spionage og/eller\n" +"ændring af serveren." + +#: gnu/packages/backup.scm:125 +msgid "Simple incremental backup tool" +msgstr "Simpelt værktøj til trinvis sikkerhedskopiering" + +#: gnu/packages/backup.scm:127 +msgid "" +"Hdup2 is a backup utility, its aim is to make backup really simple. The\n" +"backup scheduling is done by means of a cron job. It supports an\n" +"include/exclude mechanism, remote backups, encrypted backups and split\n" +"backups (called chunks) to allow easy burning to CD/DVD." +msgstr "" +"Hdup2 er et redskab til sikkerhedskopiering, dets formål er at gøre\n" +"sikkerhedskopiering meget simpel. Planlægningen udføres af et cronjob.\n" +"Der understøttes en inkluder/ekskluder mekanisme, eksterne\n" +"sikkerhedskopier, krypterede sikkerhedskopier og opdelte sikkerhedskopier\n" +"(kaldt klumper) så der nemt kan brændes til cd/dvd." + +#: gnu/packages/backup.scm:181 +msgid "Multi-format archive and compression library" +msgstr "Arkiv- og komprimeringsbibliotek for flere formater" + +#: gnu/packages/backup.scm:183 +msgid "" +"Libarchive provides a flexible interface for reading and writing\n" +"archives in various formats such as tar and cpio. Libarchive also supports\n" +"reading and writing archives compressed using various compression filters such\n" +"as gzip and bzip2. The library is inherently stream-oriented; readers\n" +"serially iterate through the archive, writers serially add things to the\n" +"archive. In particular, note that there is currently no built-in support for\n" +"random access nor for in-place modification." +msgstr "" +"Libarchive tilbyder en fleksibel grænseflade for læsning og skrivning\n" +"af arkiver i forskellige formater såsom tar og cpio. Libarchive understøtter\n" +"også læsning og skrivning af arkiver komprimeret via diverse komprimeringsfiltre såsom\n" +"gzip og bzip2, Biblioteket er indbygget strømorienteret; læsere løber\n" +"serielt igennem arkiver, skrivere tilføjer serielt ting til arkivet.\n" +"Bemærk venligst at der i øjeblikket ikke er indbygget understøttelse\n" +"for vilkårlig vilkårlig adgang eller for direkte modifikation i arkivet." + +#: gnu/packages/backup.scm:246 +msgid "Provide a list of files to backup" +msgstr "Tilbyder en liste af filer til sikkerhedskopiering" + +#: gnu/packages/backup.scm:248 +msgid "" +"Rdup is a utility inspired by rsync and the plan9 way of doing backups.\n" +"Rdup itself does not backup anything, it only print a list of absolute\n" +"file names to standard output. Auxiliary scripts are needed that act on this\n" +"list and implement the backup strategy." +msgstr "" +"Rdup er et redskab inspireret af måden som rsync og plan9 udfører\n" +"sikkerhedskopier. Rdup laver ikke selv nogle sikkerhedskopier, programmet\n" +"udskriver kun en liste over absolutte filnavne til standardud. Andre\n" +"skripter er krævet til for det videre arbejde med denne liste og\n" +"implementering af sikkerhedskopistrategien." + +#: gnu/packages/backup.scm:278 +msgid "Tar-compatible archiver" +msgstr "Tar-kompatibelt arkivprogram" + +#: gnu/packages/backup.scm:280 +msgid "" +"Btar is a tar-compatible archiver which allows arbitrary compression and\n" +"ciphering, redundancy, differential backup, indexed extraction, multicore\n" +"compression, input and output serialisation, and tolerance to partial archive\n" +"errors." +msgstr "" +"Btar er et tar-kompatibelt arkivprogram, som tillader arbitrær komprimering\n" +"og krypteringsalgoritmer, redundans, differentil sikkerhedskopiering, \n" +"indekseret udtrækning, komprimering med flere kerner, inddata- og uddata-\n" +"serialisering, og tolerance for delvise arkivfejl." + +#: gnu/packages/backup.scm:308 +msgid "Local/remote mirroring+incremental backup" +msgstr "Lokal/ekstern spejlning+trinvis sikkerhedskopiering" + +#: gnu/packages/backup.scm:310 +msgid "" +"Rdiff-backup backs up one directory to another, possibly over a network.\n" +"The target directory ends up a copy of the source directory, but extra reverse\n" +"diffs are stored in a special subdirectory of that target directory, so you\n" +"can still recover files lost some time ago. The idea is to combine the best\n" +"features of a mirror and an incremental backup. Rdiff-backup also preserves\n" +"subdirectories, hard links, dev files, permissions, uid/gid ownership,\n" +"modification times, extended attributes, acls, and resource forks. Also,\n" +"rdiff-backup can operate in a bandwidth efficient manner over a pipe, like\n" +"rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up\n" +"to a remote location, and only the differences will be transmitted. Finally,\n" +"rdiff-backup is easy to use and settings have sensible defaults." +msgstr "" +"Rdiff-backup laver sikkerhedskopiering af en mappe til en anden, eventuelt\n" +"over et netværk. Målmappen slutter som en kopi af kildemappen, men ekstra\n" +"tilbageføringsforskelsfiler lagres i en speciel undermappe af den\n" +"målmappe, så du kan stadig gendanne filer mistet for noget tid siden.\n" +"Ideen er at kombinere de bedste funktioner i et spejl og en trinvis\n" +"sikkerhedskopiering. Rdiff-backup bevarer også undermapper, hårde\n" +"henvisninger, udviklingsfiler, tilladelser, uid/gid ejerskab, \n" +"ændringstidspunkt, udvidede attributter, acl'er og ressourceforgreninger.\n" +"Rdiff-backup kan også fungere på en effektiv måde i forhold til båndbredde\n" +"over en datakanal, såsom rsync. Du kan derfor bruge rdiff-backup og ssh til\n" +"sikkert at lave sikkerhedskopiering af en harddisk op til en ekstern\n" +"placering og kun forskellene vil blive overført. Endelig er rdiff-backup\n" +"nem at bruge og startopsætningen er lavet med fornuftige standarder." + +#: gnu/packages/backup.scm:349 +msgid "Deduplicating backup program" +msgstr "" + +#: gnu/packages/backup.scm:350 +msgid "" +"Attic is a deduplicating backup program. The main goal of\n" +"Attic is to provide an efficient and secure way to backup data. The data\n" +"deduplication technique used makes Attic suitable for daily backups since only\n" +"changes are stored." +msgstr "" + +#: gnu/packages/base.scm:65 +msgid "Hello, GNU world: An example GNU package" +msgstr "Hej, GNU-verden: Et eksempel på en GNU-pakke" + +#: gnu/packages/base.scm:67 +msgid "" +"GNU Hello prints the message \"Hello, world!\" and then exits. It\n" +"serves as an example of standard GNU coding practices. As such, it supports\n" +"command-line arguments, multiple languages, and so on." +msgstr "" +"GNU Hello udskriver beskeden »Hej verden!« og stopper så. Det\n" +"fungerer som et eksempel på gængse GNU-kodningspraksisser. Som\n" +"sådan understøtter programmer parametre på kommandolinjen, flere\n" +"sprog og så videre." + +#: gnu/packages/base.scm:86 +msgid "Print lines matching a pattern" +msgstr "Udskriv linjer der matcher et mønster" + +#: gnu/packages/base.scm:88 +msgid "" +"grep is a tool for finding text inside files. Text is found by\n" +"matching a pattern provided by the user in one or many files. The pattern\n" +"may be provided as a basic or extended regular expression, or as fixed\n" +"strings. By default, the matching text is simply printed to the screen,\n" +"however the output can be greatly customized to include, for example, line\n" +"numbers. GNU grep offers many extensions over the standard utility,\n" +"including, for example, recursive directory searching." +msgstr "" +"Grep er et værktøj til at finde tekst inden i filer. Tekst findes\n" +"af et matchende mønster tilbudt af brugeren i en eller flere filer.\n" +"Mønsteret kan stadig tilbydes som et grundlæggende elelr udvidet\n" +"regulært udtryk, eller som faste strenge. Som standard bliver den\n" +"matchende tekst skrevet til skærmen, resultatet kan dog tilpasses\n" +"på mange områder, for eksempel for inkludering af linjeantal. GNU\n" +"grep tilbyder mange udvidelser i forhold til standardredskabet,\n" +"inklusiv rekursiv mappesøgning." + +#: gnu/packages/base.scm:111 +msgid "Stream editor" +msgstr "Strømredigeringsprogram" + +#: gnu/packages/base.scm:126 +msgid "" +"Sed is a non-interactive, text stream editor. It receives a text\n" +"input from a file or from standard input and it then applies a series of text\n" +"editing commands to the stream and prints its output to standard output. It\n" +"is often used for substituting text patterns in a stream. The GNU\n" +"implementation offers several extensions over the standard utility." +msgstr "" +"Sed er et ikkeinteraktivt redigeringsprogram for tekststrømme. Det\n" +"modtager en tekst fra en fil eller fra standardind og anvender så en serie af tekstredigeringskommandoer til strømmen og udskriver\n" +"resultatet til standardud. Det bruges ofte til søg og erstat af\n" +"tekstmønster i en strøm. GNU-implementeringen tilbyder flere\n" +"udvidelser i forhold til standardredskabet." + +#: gnu/packages/base.scm:149 +msgid "Managing tar archives" +msgstr "Håndtering af tar-arkiver" + +#: gnu/packages/base.scm:151 +msgid "" +"Tar provides the ability to create tar archives, as well as the\n" +"ability to extract, update or list files in an existing archive. It is\n" +"useful for combining many files into one larger file, while maintaining\n" +"directory structure and file information such as permissions and\n" +"creation/modification dates. GNU tar offers many extensions over the\n" +"standard utility." +msgstr "" +"Tar tilbyder evnen til at oprette tar-arkiver, samt muligheden\n" +"for at udtrække, opdatere eller vise filer i et eksisterende arkiv.\n" +"Det er nyttigt for kombinering af mange filer til en større fil, mens\n" +"mappestruktur og filinformation såsom rettigheder og oprettelse/ændrings-\n" +"datoer bevares. GNU tar tilbyder mange udvidelser over standardredskabet." + +#: gnu/packages/base.scm:174 +msgid "Apply differences to originals, with optional backups" +msgstr "Anvend forskelle på originaler, med valgfri sikkerhedskopiering" + +#: gnu/packages/base.scm:176 +msgid "" +"Patch is a program that applies changes to files based on differences\n" +"laid out as by the program \"diff\". The changes may be applied to one or more\n" +"files depending on the contents of the diff file. It accepts several\n" +"different diff formats. It may also be used to revert previously applied\n" +"differences." +msgstr "" +"Patch er et program, som udfører ændringer på filer baseret på forskelle\n" +"skabt af programmet »diff«. Ændringerne kan anvendes på en eller flere\n" +"filer afhængig af indholder for diff-filen. Programmet accepterer flere\n" +"forskellige diff-formater. Det kan også bruges til at tilbageføre\n" +"tidligere anvendte forskelle." + +#: gnu/packages/base.scm:196 +msgid "Comparing and merging files" +msgstr "Sammenligning og sammenføjning af filer" + +#: gnu/packages/base.scm:198 +msgid "" +"GNU Diffutils is a package containing tools for finding the\n" +"differences between files. The \"diff\" command is used to show how two files\n" +"differ, while \"cmp\" shows the offsets and line numbers where they differ.\n" +"\"diff3\" allows you to compare three files. Finally, \"sdiff\" offers an\n" +"interactive means to merge two files." +msgstr "" +"GNU Diffutils er en pakke, der indeholder værktøjer til at finde\n" +"forskellene mellem filer. Kommandoen »diff« bruges til at vise hvordan to\n" +"filer er forskellige, mens »cmp« viser forskydningen og linjeantallet, hvor\n" +"de er forskellige. »diff3« giver dig mulighed for at sammenligne tre filer.\n" +"Endelig tilbyder »sdiff« en interaktiv måde at sammenføje to filer." + +#: gnu/packages/base.scm:231 +msgid "Operating on files matching given criteria" +msgstr "Operation på filer der matcher angivne kriterier" + +#: gnu/packages/base.scm:233 +msgid "" +"Findutils supplies the basic file directory searching utilities of the\n" +"GNU system. It consists of two primary searching utilities: \"find\"\n" +"recursively searches for files in a directory according to given criteria and\n" +"\"locate\" lists files in a database that match a query. Two auxiliary tools\n" +"are included: \"updatedb\" updates the file name database and \"xargs\" may be\n" +"used to apply commands with arbitrarily long arguments." +msgstr "" +"Findutils indeholder de grundlæggende søgeredskaber til filmapper for\n" +"GNU-systemet. Det består af to primære søgeredskaber: »find« søger\n" +"rekursivt efter filre i en mappe jævnfør angivne kriterier og\n" +"»locate« viser filer i en database som matcher en forespørgsel. To\n" +"ekstra værktøjer er inkluderet: »updatedb« opdaterer filnavnsdatabasen\n" +"og »xargs« kan bruges til at anvende kommandoer med arbitrært lange argumenter." + +#: gnu/packages/base.scm:297 +msgid "Core GNU utilities (file, text, shell)" +msgstr "Core GNU-redskaber (file, text, shell)" + +#: gnu/packages/base.scm:299 +msgid "" +"GNU Coreutils includes all of the basic command-line tools that are\n" +"expected in a POSIX system. These provide the basic file, shell and text\n" +"manipulation functions of the GNU system. Most of these tools offer extended\n" +"functionality beyond that which is outlined in the POSIX standard." +msgstr "" +"GNU Coreutils inkluderer alle de grundlæggende kommandolinjeværktøjer,\n" +"som kan forventes i et POSIX-system. Disse tilbyder de grundlæggende\n" +"manipuleringsfunktioner for fil, skal og tekst i GNU-systemet. De fleste\n" +"af disse værktøjer tilbyder udvidet funktionalitet udover det skitseret\n" +"i POSIX-standarden." + +#: gnu/packages/base.scm:341 +msgid "Remake files automatically" +msgstr "Gendan filer automatisk" + +#: gnu/packages/base.scm:343 +msgid "" +"Make is a program that is used to control the production of\n" +"executables or other files from their source files. The process is\n" +"controlled from a Makefile, in which the developer specifies how each file is\n" +"generated from its source. It has powerful dependency resolution and the\n" +"ability to determine when files have to be regenerated after their sources\n" +"change. GNU make offers many powerful extensions over the standard utility." +msgstr "" +"Make er et program, som bruges til at kontrollere produktionen af\n" +"kørbare filer eller andre filer fra deres kildefiler. Processen er\n" +"kontrolleret fra en Makefile, hvori udvikleren specificerer hvordan\n" +"hver fil oprettes fra dets kilde. Programmet har funktionsrige\n" +"afhængighedsopløsning og evnen til at afgøre hvornår filer skal\n" +"gendannes efter at deres kilder har ændret sig. GNU make tilbyder\n" +"mange funktionsrige udvidelser der ligger udover standardredskabet." + +#: gnu/packages/base.scm:388 +msgid "Binary utilities: bfd gas gprof ld" +msgstr "Binære redskaber: bfd gas gprof ld" + +#: gnu/packages/base.scm:390 +msgid "" +"GNU Binutils is a collection of tools for working with binary files.\n" +"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler.\n" +"Other tools include programs to display binary profiling information, list\n" +"the strings in a binary file, and utilities for working with archives. The\n" +"\"bfd\" library for working with executable and object formats is also\n" +"included." +msgstr "" + +#: gnu/packages/base.scm:455 +msgid "The linker wrapper" +msgstr "" + +#: gnu/packages/base.scm:457 +msgid "" +"The linker wrapper (or 'ld-wrapper') wraps the linker to add any\n" +"missing '-rpath' flags, and to detect any misuse of libraries outside of the\n" +"store." +msgstr "" + +#: gnu/packages/base.scm:625 +msgid "The GNU C Library" +msgstr "" + +#: gnu/packages/base.scm:627 +msgid "" +"Any Unix-like operating system needs a C library: the library which\n" +"defines the \"system calls\" and other basic facilities such as open, malloc,\n" +"printf, exit...\n" +"\n" +"The GNU C library is used as the C library in the GNU system and most systems\n" +"with the Linux kernel." +msgstr "" + +#: gnu/packages/base.scm:643 +msgid "All the locales supported by the GNU C Library" +msgstr "" + +#: gnu/packages/base.scm:645 +msgid "" +"This package provides all the locales supported by the GNU C Library,\n" +"more than 400 in total. To use them set the 'LOCPATH' environment variable to\n" +"the 'share/locale' sub-directory of this package." +msgstr "" + +#: gnu/packages/base.scm:713 +msgid "Small sample of UTF-8 locales" +msgstr "" + +#: gnu/packages/base.scm:715 +msgid "" +"This package provides a small sample of UTF-8 locales mostly useful in\n" +"test environments." +msgstr "" + +#: gnu/packages/base.scm:733 +msgid "Find full path of shell commands" +msgstr "" + +#: gnu/packages/base.scm:735 +msgid "" +"The which program finds the location of executables in PATH, with a\n" +"variety of options. It is an alternative to the shell \"type\" built-in\n" +"command." +msgstr "" + +#: gnu/packages/base.scm:805 +msgid "The GNU C Library (GNU Hurd variant)" +msgstr "" + +#: gnu/packages/base.scm:907 +msgid "Database of current and historical time zones" +msgstr "" + +#: gnu/packages/base.scm:908 +msgid "" +"The Time Zone Database (often called tz or zoneinfo)\n" +"contains code and data that represent the history of local time for many\n" +"representative locations around the globe. It is updated periodically to\n" +"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n" +"and daylight-saving rules." +msgstr "" + +#: gnu/packages/bittorrent.scm:82 +msgid "Fast and easy BitTorrent client" +msgstr "" + +#: gnu/packages/bittorrent.scm:84 +msgid "" +"Transmission is a BitTorrent client that comes with graphical,\n" +"textual, and Web user interfaces. Transmission also has a daemon for\n" +"unattended operations. It supports local peer discovery, full encryption,\n" +"DHT, µTP, PEX and Magnet Links." +msgstr "" + +#: gnu/packages/bittorrent.scm:116 +msgid "BitTorrent library of rtorrent" +msgstr "" + +#: gnu/packages/bittorrent.scm:118 +msgid "" +"LibTorrent is a BitTorrent library used by and developed in parallel\n" +"with the BitTorrent client rtorrent. It is written in C++ with emphasis on\n" +"speed and efficiency." +msgstr "" + +#: gnu/packages/bittorrent.scm:145 +msgid "BitTorrent client with ncurses interface" +msgstr "" + +#: gnu/packages/bittorrent.scm:147 +msgid "" +"rTorrent is a BitTorrent client with an ncurses interface. It supports\n" +"full encryption, DHT, PEX, and Magnet Links. It can also be controlled via\n" +"XML-RPC over SCGI." +msgstr "" + +#: gnu/packages/certs.scm:65 +msgid "Python script to extract .pem data from certificate collection" +msgstr "" + +#: gnu/packages/certs.scm:67 +msgid "" +"certdata2pem.py is a Python script to transform X.509 certificate\n" +"\"source code\" as contained, for example, in the Mozilla sources, into\n" +".pem formatted certificates." +msgstr "" + +#: gnu/packages/certs.scm:124 +msgid "CA certificates from Mozilla" +msgstr "" + +#: gnu/packages/certs.scm:126 +msgid "" +"This package provides certificates for Certification Authorities (CA)\n" +"taken from the NSS package and thus ultimately from the Mozilla project." +msgstr "" + +#: gnu/packages/compression.scm:72 +msgid "Compression library" +msgstr "" + +#: gnu/packages/compression.scm:74 +msgid "" +"zlib is designed to be a free, general-purpose, legally unencumbered --\n" +"that is, not covered by any patents -- lossless data-compression library for\n" +"use on virtually any computer hardware and operating system. The zlib data\n" +"format is itself portable across platforms. Unlike the LZW compression method\n" +"used in Unix compress(1) and in the GIF image format, the compression method\n" +"currently used in zlib essentially never expands the data. (LZW can double or\n" +"triple the file size in extreme cases.) zlib's memory footprint is also\n" +"independent of the input data and can be reduced, if necessary, at some cost\n" +"in compression." +msgstr "" + +#: gnu/packages/compression.scm:99 +msgid "Replacement for Sun's 'jar' utility" +msgstr "" + +#: gnu/packages/compression.scm:101 +msgid "" +"FastJar is an attempt to create a much faster replacement for Sun's 'jar'\n" +"utility. Instead of being written in Java, FastJar is written in C." +msgstr "" + +#: gnu/packages/compression.scm:119 +msgid "C library for manipulating POSIX tar files" +msgstr "" + +#: gnu/packages/compression.scm:121 +msgid "" +"libtar is a C library for manipulating POSIX tar files. It handles\n" +"adding and extracting files to/from a tar archive." +msgstr "" + +#: gnu/packages/compression.scm:138 +msgid "General file (de)compression (using lzw)" +msgstr "" + +#: gnu/packages/compression.scm:143 +msgid "" +"GNU Gzip provides data compression and decompression utilities; the\n" +"typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single\n" +"file; as a result, it is often used in conjunction with \"tar\", resulting in\n" +"\".tar.gz\" or \".tgz\", etc." +msgstr "" + +#: gnu/packages/compression.scm:219 +msgid "High-quality data compression program" +msgstr "" + +#: gnu/packages/compression.scm:221 +msgid "" +"bzip2 is a freely available, patent free (see below), high-quality data\n" +"compressor. It typically compresses files to within 10% to 15% of the best\n" +"available techniques (the PPM family of statistical compressors), whilst\n" +"being around twice as fast at compression and six times faster at\n" +"decompression." +msgstr "" + +#: gnu/packages/compression.scm:251 +msgid "Parallel bzip2 implementation" +msgstr "" + +#: gnu/packages/compression.scm:253 +msgid "" +"Pbzip2 is a parallel implementation of the bzip2 block-sorting file\n" +"compressor that uses pthreads and achieves near-linear speedup on SMP machines.\n" +"The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything\n" +"compressed with pbzip2 can be decompressed with bzip2)." +msgstr "" + +#: gnu/packages/compression.scm:272 +msgid "General-purpose data compression" +msgstr "" + +#: gnu/packages/compression.scm:274 +msgid "" +"XZ Utils is free general-purpose data compression software with high\n" +"compression ratio. XZ Utils were written for POSIX-like systems, but also\n" +"work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.\n" +"\n" +"The core of the XZ Utils compression code is based on LZMA SDK, but it has\n" +"been modified quite a lot to be suitable for XZ Utils. The primary\n" +"compression algorithm is currently LZMA2, which is used inside the .xz\n" +"container format. With typical files, XZ Utils create 30 % smaller output\n" +"than gzip and 15 % smaller output than bzip2." +msgstr "" + +#: gnu/packages/compression.scm:302 +msgid "Data compression library suitable for real-time data de-/compression" +msgstr "" + +#: gnu/packages/compression.scm:304 +msgid "" +"LZO is a data compression library which is suitable for data\n" +"de-/compression in real-time. This means it favours speed over\n" +"compression ratio.\n" +"\n" +"LZO is written in ANSI C. Both the source code and the compressed data\n" +"format are designed to be portable across platforms." +msgstr "" + +#: gnu/packages/compression.scm:327 +msgid "Compress or expand files" +msgstr "" + +#: gnu/packages/compression.scm:329 +msgid "" +"Lzop is a file compressor which is very similar to gzip. Lzop uses the\n" +"LZO data compression library for compression services, and its main advantages\n" +"over gzip are much higher compression and decompression speed (at the cost of\n" +"some compression ratio)." +msgstr "" + +#: gnu/packages/compression.scm:348 +msgid "Lossless data compressor based on the LZMA algorithm" +msgstr "" + +#: gnu/packages/compression.scm:350 +msgid "" +"Lzip is a lossless data compressor with a user interface similar to the\n" +"one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses\n" +"more than bzip2, which makes it well suited for software distribution and data\n" +"archiving. Lzip is a clean implementation of the LZMA algorithm." +msgstr "" + +#: gnu/packages/compression.scm:382 +msgid "Archives in shell scripts, uuencode/uudecode" +msgstr "" + +#: gnu/packages/compression.scm:384 +msgid "" +"GNU sharutils is a package for creating and manipulating shell\n" +"archives that can be readily emailed. A shell archive is a file that can be\n" +"processed by a Bourne-type shell to unpack the original collection of files.\n" +"This package is mostly for compatibility and historical interest." +msgstr "" + +#: gnu/packages/compression.scm:415 +msgid "Library for SoundFont decompression" +msgstr "" + +#: gnu/packages/compression.scm:417 +msgid "" +"SfArkLib is a C++ library for decompressing SoundFont files compressed\n" +"with the sfArk algorithm." +msgstr "" + +#: gnu/packages/compression.scm:449 +msgid "Basic sfArk decompressor" +msgstr "" + +#: gnu/packages/compression.scm:450 +msgid "" +"SfArk extractor converts SoundFonts in the compressed legacy\n" +"sfArk file format to the uncompressed sf2 format." +msgstr "" + +#: gnu/packages/compression.scm:467 +msgid "Compression tools for some formats used by Microsoft" +msgstr "" + +#: gnu/packages/compression.scm:469 +msgid "" +"The purpose of libmspack is to provide both compression and\n" +"decompression of some loosely related file formats used by Microsoft." +msgstr "" + +#: gnu/packages/compression.scm:488 +msgid "Low-level interface to bzip2 compression library" +msgstr "" + +#: gnu/packages/compression.scm:489 +msgid "" +"This module provides a Perl interface to the bzip2\n" +"compression library." +msgstr "" + +#: gnu/packages/compression.scm:523 +msgid "Low-level interface to zlib compression library" +msgstr "" + +#: gnu/packages/compression.scm:524 +msgid "" +"This module provides a Perl interface to the zlib\n" +"compression library." +msgstr "" + +#: gnu/packages/compression.scm:545 +msgid "IO Interface to compressed files/buffers" +msgstr "" + +#: gnu/packages/compression.scm:546 +msgid "" +"IO-Compress provides a Perl interface to allow reading and\n" +"writing of compressed data created with the zlib and bzip2 libraries." +msgstr "" + +#: gnu/packages/compression.scm:572 +msgid "Compression algorithm focused on speed" +msgstr "" + +#: gnu/packages/compression.scm:573 +msgid "" +"LZ4 is a lossless compression algorithm, providing\n" +"compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an\n" +"extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).\n" +"A high compression derivative, called LZ4_HC, is also provided. It trades CPU\n" +"time for compression ratio." +msgstr "" + +#: gnu/packages/compression.scm:613 +msgid "Tools to create and extract squashfs filesystems" +msgstr "" + +#: gnu/packages/compression.scm:615 +msgid "" +"Squashfs is a highly compressed read-only filesystem for Linux. It uses\n" +"zlib to compress files, inodes, and directories. All blocks are packed to\n" +"minimize the data overhead, and block sizes of between 4K and 1M are supported.\n" +"It is intended to be used for archival use, for live CDs, and for embedded\n" +"systems where low overhead is needed. This package allows you to create and\n" +"extract such filesystems." +msgstr "" + +#: gnu/packages/compression.scm:652 +msgid "Parallel implementation of gzip" +msgstr "" + +#: gnu/packages/compression.scm:654 +msgid "" +"This package provides a parallel implementation of gzip that exploits\n" +"multiple processors and multiple cores when compressing data." +msgstr "" + +#: gnu/packages/databases.scm:97 +msgid "Berkeley database" +msgstr "" + +#: gnu/packages/databases.scm:99 +msgid "" +"Berkeley DB is an embeddable database allowing developers the choice of\n" +"SQL, Key/Value, XML/XQuery or Java Object storage for their data model." +msgstr "" + +#: gnu/packages/databases.scm:173 +msgid "Fast, easy to use, and popular database" +msgstr "" + +#: gnu/packages/databases.scm:175 +msgid "" +"MySQL is a fast, reliable, and easy to use relational database\n" +"management system that supports the standardized Structured Query\n" +"Language." +msgstr "" + +#: gnu/packages/databases.scm:242 +msgid "SQL database server" +msgstr "" + +#: gnu/packages/databases.scm:244 +msgid "" +"MariaDB is a multi-user and multi-threaded SQL database server, designed\n" +"as a drop-in replacement of MySQL." +msgstr "" + +#: gnu/packages/databases.scm:264 +msgid "Powerful object-relational database system" +msgstr "" + +#: gnu/packages/databases.scm:266 +msgid "" +"PostgreSQL is a powerful object-relational database system. It is fully\n" +"ACID compliant, has full support for foreign keys, joins, views, triggers, and\n" +"stored procedures (in multiple languages). It includes most SQL:2008 data\n" +"types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and\n" +"TIMESTAMP. It also supports storage of binary large objects, including\n" +"pictures, sounds, or video." +msgstr "" + +#: gnu/packages/databases.scm:302 +msgid "Manipulate plain text files as databases" +msgstr "" + +#: gnu/packages/databases.scm:304 +msgid "" +"GNU Recutils is a set of tools and libraries for creating and\n" +"manipulating text-based, human-editable databases. Despite being text-based,\n" +"databases created with Recutils carry all of the expected features such as\n" +"unique fields, primary keys, time stamps and more. Many different field\n" +"types are supported, as is encryption." +msgstr "" + +#: gnu/packages/databases.scm:356 +msgid "The SQLite database management system" +msgstr "" + +#: gnu/packages/databases.scm:358 +msgid "" +"SQLite is a software library that implements a self-contained, serverless,\n" +"zero-configuration, transactional SQL database engine. SQLite is the most\n" +"widely deployed SQL database engine in the world. The source code for SQLite\n" +"is in the public domain." +msgstr "" + +#: gnu/packages/databases.scm:393 +msgid "Trivial database" +msgstr "" + +#: gnu/packages/databases.scm:395 +msgid "" +"TDB is a Trivial Database. In concept, it is very much like GDBM,\n" +"and BSD's DB except that it allows multiple simultaneous writers and uses\n" +"locking internally to keep writers from trampling on each other. TDB is also\n" +"extremely small." +msgstr "" + +#: gnu/packages/databases.scm:414 +msgid "Database independent interface for Perl" +msgstr "" + +#: gnu/packages/databases.scm:415 +msgid "This package provides an database interface for Perl." +msgstr "" + +#: gnu/packages/databases.scm:462 +msgid "Extensible and flexible object <-> relational mapper" +msgstr "" + +#: gnu/packages/databases.scm:463 +msgid "" +"An SQL to OO mapper with an object API inspired by\n" +"Class::DBI (with a compatibility layer as a springboard for porting) and a\n" +"resultset API that allows abstract encapsulation of database operations. It\n" +"aims to make representing queries in your code as perl-ish as possible while\n" +"still providing access to as many of the capabilities of the database as\n" +"possible, including retrieving related records from multiple tables in a\n" +"single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",\n" +"\"ORDER BY\" and \"HAVING\" support." +msgstr "" + +#: gnu/packages/databases.scm:493 +msgid "Cursor with built-in caching support" +msgstr "" + +#: gnu/packages/databases.scm:494 +msgid "" +"DBIx::Class::Cursor::Cached provides a cursor class with\n" +"built-in caching support." +msgstr "" + +#: gnu/packages/databases.scm:514 +msgid "Introspect many-to-many relationships" +msgstr "" + +#: gnu/packages/databases.scm:515 +msgid "" +"Because the many-to-many relationships are not real\n" +"relationships, they can not be introspected with DBIx::Class. Many-to-many\n" +"relationships are actually just a collection of convenience methods installed\n" +"to bridge two relationships. This DBIx::Class component can be used to store\n" +"all relevant information about these non-relationships so they can later be\n" +"introspected and examined." +msgstr "" + +#: gnu/packages/databases.scm:572 +msgid "Create a DBIx::Class::Schema based on a database" +msgstr "" + +#: gnu/packages/databases.scm:573 +msgid "" +"DBIx::Class::Schema::Loader automates the definition of a\n" +"DBIx::Class::Schema by scanning database table definitions and setting up the\n" +"columns, primary keys, unique constraints and relationships." +msgstr "" + +#: gnu/packages/databases.scm:597 +msgid "DBI PostgreSQL interface" +msgstr "" + +#: gnu/packages/databases.scm:616 +msgid "SQlite interface for Perl" +msgstr "" + +#: gnu/packages/databases.scm:617 +msgid "" +"DBD::SQLite is a Perl DBI driver for SQLite, that includes\n" +"the entire thing in the distribution. So in order to get a fast transaction\n" +"capable RDBMS working for your Perl project you simply have to install this\n" +"module, and nothing else." +msgstr "" + +#: gnu/packages/databases.scm:647 +msgid "Generate SQL from Perl data structures" +msgstr "" + +#: gnu/packages/databases.scm:648 +msgid "" +"This module was inspired by the excellent DBIx::Abstract.\n" +"While based on the concepts used by DBIx::Abstract, the concepts used have\n" +"been modified to make the SQL easier to generate from Perl data structures.\n" +"The underlying idea is for this module to do what you mean, based on the data\n" +"structures you provide it, so that you don't have to modify your code every\n" +"time your data changes." +msgstr "" + +#: gnu/packages/databases.scm:677 +msgid "Split SQL code into atomic statements" +msgstr "" + +#: gnu/packages/databases.scm:678 +msgid "" +"This module tries to split any SQL code, even including\n" +"non-standard extensions, into the atomic statements it is composed of." +msgstr "" + +#: gnu/packages/databases.scm:696 +msgid "SQL tokenizer" +msgstr "" + +#: gnu/packages/databases.scm:697 +msgid "" +"SQL::Tokenizer is a tokenizer for SQL queries. It does not\n" +"claim to be a parser or query verifier. It just creates sane tokens from a\n" +"valid SQL query." +msgstr "" + +#: gnu/packages/databases.scm:714 +msgid "Data source abstraction library" +msgstr "" + +#: gnu/packages/databases.scm:715 +msgid "" +"Unixodbc is a library providing an API with which to access\n" +"data sources. Data sources include SQL Servers and any software with an ODBC\n" +"Driver." +msgstr "" + +#: gnu/packages/databases.scm:739 +msgid "In-memory key/value and document store" +msgstr "" + +#: gnu/packages/databases.scm:741 +msgid "" +"UnQLite is an in-process software library which implements a\n" +"self-contained, serverless, zero-configuration, transactional NoSQL\n" +"database engine. UnQLite is a document store database similar to\n" +"MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store\n" +"similar to BerkeleyDB, LevelDB, etc." +msgstr "" + +#: gnu/packages/databases.scm:768 +msgid "Key-value cache and store" +msgstr "" + +#: gnu/packages/databases.scm:769 +msgid "" +"Redis is an advanced key-value cache and store. Redis\n" +"supports many data structures including strings, hashes, lists, sets, sorted\n" +"sets, bitmaps and hyperloglogs." +msgstr "" + +#: gnu/packages/debug.scm:74 +msgid "Heuristical file minimizer" +msgstr "" + +#: gnu/packages/debug.scm:76 +msgid "" +"Delta assists you in minimizing \"interesting\" files subject to a test\n" +"of their interestingness. A common such situation is when attempting to\n" +"isolate a small failure-inducing substring of a large input that causes your\n" +"program to exhibit a bug." +msgstr "" + +#: gnu/packages/debug.scm:135 +msgid "Reducer for interesting code" +msgstr "" + +#: gnu/packages/debug.scm:137 +msgid "" +"C-Reduce is a tool that takes a large C or C++ program that has a\n" +"property of interest (such as triggering a compiler bug) and automatically\n" +"produces a much smaller C/C++ program that has the same property. It is\n" +"intended for use by people who discover and report bugs in compilers and other\n" +"tools that process C/C++ code." +msgstr "" + +#: gnu/packages/debug.scm:229 +msgid "Security-oriented fuzzer" +msgstr "" + +#: gnu/packages/debug.scm:231 +msgid "" +"American fuzzy lop is a security-oriented fuzzer that employs a novel\n" +"type of compile-time instrumentation and genetic algorithms to automatically\n" +"discover clean, interesting test cases that trigger new internal states in the\n" +"targeted binary. This substantially improves the functional coverage for the\n" +"fuzzed code. The compact synthesized corpora produced by the tool are also\n" +"useful for seeding other, more labor- or resource-intensive testing regimes\n" +"down the road." +msgstr "" + +#: gnu/packages/dejagnu.scm:78 +msgid "GNU software testing framework" +msgstr "" + +#: gnu/packages/dejagnu.scm:80 +msgid "" +"DejaGnu is a framework for testing software. In effect, it serves as\n" +"a front-end for all tests written for a program. Thus, each program can have\n" +"multiple test suites, which are then all managed by a single harness." +msgstr "" + +#: gnu/packages/feh.scm:53 +msgid "Fast and light imlib2-based image viewer" +msgstr "" + +#: gnu/packages/feh.scm:55 +msgid "" +"feh is an X11 image viewer aimed mostly at console users.\n" +"Unlike most other viewers, it does not have a fancy GUI, but simply\n" +"displays images. It can also be used to set the desktop wallpaper.\n" +"It is controlled via commandline arguments and configurable key/mouse\n" +"actions." +msgstr "" + +#: gnu/packages/games.scm:113 +msgid "Backgammon game" +msgstr "" + +#: gnu/packages/games.scm:114 +msgid "" +"The GNU backgammon application can be used for playing, analyzing and\n" +"teaching the game. It has an advanced evaluation engine based on artificial\n" +"neural networks suitable for both beginners and advanced players. In\n" +"addition to a command-line interface, it also features an attractive, 3D\n" +"representation of the playing board." +msgstr "" + +#: gnu/packages/games.scm:143 +msgid "3d Rubik's cube game" +msgstr "" + +#: gnu/packages/games.scm:145 +msgid "" +"GNUbik is a puzzle game in which you must manipulate a cube to make\n" +"each of its faces have a uniform color. The game is customizable, allowing\n" +"you to set the size of the cube (the default is 3x3) or to change the colors.\n" +"You may even apply photos to the faces instead of colors. The game is\n" +"scriptable with Guile." +msgstr "" + +#: gnu/packages/games.scm:195 +msgid "GNU/Linux port of the indie game \"l'Abbaye des Morts\"" +msgstr "" + +#: gnu/packages/games.scm:196 +msgid "" +"L'Abbaye des Morts is a 2D platform game set in 13th century\n" +"France. The Cathars, who preach about good Christian beliefs, were being\n" +"expelled by the Catholic Church out of the Languedoc region in France. One of\n" +"them, called Jean Raymond, found an old church in which to hide, not knowing\n" +"that beneath its ruins lay buried an ancient evil." +msgstr "" + +#: gnu/packages/games.scm:239 +msgid "Lemmings clone" +msgstr "" + +#: gnu/packages/games.scm:241 +msgid "" +"Pingus is a free Lemmings-like puzzle game in which the player takes\n" +"command of a bunch of small animals and has to guide them through levels.\n" +"Since the animals walk on their own, the player can only influence them by\n" +"giving them commands, like build a bridge, dig a hole, or redirect all animals\n" +"in the other direction. Multiple such commands are necessary to reach the\n" +"level's exit. The game is presented in a 2D side view." +msgstr "" + +#: gnu/packages/games.scm:263 +msgid "Convert English text to humorous dialects" +msgstr "" + +#: gnu/packages/games.scm:264 +msgid "" +"The GNU Talk Filters are programs that convert English text\n" +"into stereotyped or otherwise humorous dialects. The filters are provided as\n" +"a C library, so they can easily be integrated into other programs." +msgstr "" + +#: gnu/packages/games.scm:296 +msgid "Simulate the display from \"The Matrix\"" +msgstr "" + +#: gnu/packages/games.scm:297 +msgid "" +"CMatrix simulates the display from \"The Matrix\" and is\n" +"based on the screensaver from the movie's website. It works with terminal\n" +"settings up to 132x300 and can scroll lines all at the same rate or\n" +"asynchronously and at a user-defined speed." +msgstr "" + +#: gnu/packages/games.scm:317 +msgid "Full chess implementation" +msgstr "" + +#: gnu/packages/games.scm:318 +msgid "" +"GNU Chess is a chess engine. It allows you to compete\n" +"against the computer in a game of chess, either through the default terminal\n" +"interface or via an external visual interface such as GNU XBoard." +msgstr "" + +#: gnu/packages/games.scm:346 +msgid "Twisted adventures of young pig farmer Dink Smallwood" +msgstr "" + +#: gnu/packages/games.scm:348 +msgid "" +"GNU FreeDink is a free and portable re-implementation of the engine\n" +"for the role-playing game Dink Smallwood. It supports not only the original\n" +"game data files but it also supports user-produced game mods or \"D-Mods\".\n" +"To that extent, it also includes a front-end for managing all of your D-Mods." +msgstr "" + +#: gnu/packages/games.scm:370 +msgid "Game data for GNU Freedink" +msgstr "" + +#: gnu/packages/games.scm:372 +msgid "This package contains the game data of GNU Freedink." +msgstr "" + +#: gnu/packages/games.scm:424 +msgid "Graphical user interface for chess programs" +msgstr "" + +#: gnu/packages/games.scm:425 +msgid "" +"GNU XBoard is a graphical board for all varieties of chess,\n" +"including international chess, xiangqi (Chinese chess), shogi (Japanese chess)\n" +"and Makruk. Several lesser-known variants are also supported. It presents a\n" +"fully interactive graphical interface and it can load and save games in the\n" +"Portable Game Notation." +msgstr "" + +#: gnu/packages/games.scm:478 +msgid "Ball and paddle game" +msgstr "" + +#: gnu/packages/games.scm:479 +msgid "" +"XBoing is a blockout type game where you have a paddle which\n" +"you control to bounce a ball around the game zone destroying blocks with a\n" +"proton ball. Each block carries a different point value. The more blocks you\n" +"destroy, the better your score. The person with the highest score wins." +msgstr "" + +#: gnu/packages/games.scm:511 +msgid "Typing tutor" +msgstr "" + +#: gnu/packages/games.scm:513 +msgid "" +"GNU Typist is a universal typing tutor. It can be used to learn and\n" +"practice touch-typing. Several tutorials are included; in addition to\n" +"tutorials for the standard QWERTY layout, there are also tutorials for the\n" +"alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials\n" +"are primarily in English, however some in other languages are provided." +msgstr "" + +#: gnu/packages/games.scm:566 +msgid "3D game engine written in C++" +msgstr "" + +#: gnu/packages/games.scm:568 +msgid "" +"The Irrlicht Engine is a high performance realtime 3D engine written in\n" +"C++. Features include an OpenGL renderer, extensible materials, scene graph\n" +"management, character animation, particle and other special effects, support\n" +"for common mesh file formats, and collision detection." +msgstr "" + +#: gnu/packages/games.scm:620 +msgid "2D space shooter" +msgstr "" + +#: gnu/packages/games.scm:622 +msgid "" +"M.A.R.S. is a 2D space shooter with pretty visual effects and\n" +"attractive physics. Players can battle each other or computer controlled\n" +"enemies in different game modes such as space ball, death match, team death\n" +"match, cannon keep, and grave-itation pit." +msgstr "" + +#: gnu/packages/games.scm:663 +msgid "Main game data for the Minetest game engine" +msgstr "" + +#: gnu/packages/games.scm:665 +msgid "Game data for the Minetest infinite-world block sandox game." +msgstr "" + +#: gnu/packages/games.scm:717 +msgid "Infinite-world block sandbox game" +msgstr "" + +#: gnu/packages/games.scm:719 +msgid "" +"Minetest is a sandbox construction game. Players can create and destroy\n" +"various types of blocks in a three-dimensional open world. This allows\n" +"forming structures in every possible creation, on multiplayer servers or as a\n" +"single player. Mods and texture packs allow players to personalize the game\n" +"in different ways." +msgstr "" + +#: gnu/packages/games.scm:758 +msgid "Curses Implementation of the Glk API" +msgstr "" + +#: gnu/packages/games.scm:760 +msgid "" +"Glk defines a portable API for applications with text UIs. It was\n" +"primarily designed for interactive fiction, but it should be suitable for many\n" +"interactive text utilities, particularly those based on a command line.\n" +"This is an implementation of the Glk library which runs in a terminal window,\n" +"using the curses.h library for screen control." +msgstr "" + +#: gnu/packages/games.scm:797 +msgid "Interpreter for Glulx VM" +msgstr "" + +#: gnu/packages/games.scm:799 +msgid "" +"Glulx is a 32-bit portable virtual machine intended for writing and\n" +"playing interactive fiction. It was designed by Andrew Plotkin to relieve\n" +"some of the restrictions in the venerable Z-machine format. This is the\n" +"reference interpreter, using Glk API." +msgstr "" + +#: gnu/packages/games.scm:835 +msgid "Z-machine interpreter" +msgstr "" + +#: gnu/packages/games.scm:837 +msgid "" +"Fizmo is a console-based Z-machine interpreter. It is used to play\n" +"interactive fiction, also known as text adventures, which were implemented\n" +"either by Infocom or created using the Inform compiler." +msgstr "" + +#: gnu/packages/games.scm:887 +msgid "Reference frontend for the libretro API" +msgstr "" + +#: gnu/packages/games.scm:889 +msgid "" +"Libretro is a simple but powerful development interface that allows for\n" +"the easy creation of emulators, games and multimedia applications that can plug\n" +"straight into any libretro-compatible frontend. RetroArch is the official\n" +"reference frontend for the libretro API, currently used by most as a modular\n" +"multi-system game/emulator system." +msgstr "" + +#: gnu/packages/games.scm:909 +msgid "Play the game of Go" +msgstr "" + +#: gnu/packages/games.scm:911 +msgid "" +"GNU Go is a program that plays the game of Go, in which players\n" +"place stones on a grid to form territory or capture other stones. While\n" +"it can be played directly from the terminal, rendered in ASCII characters,\n" +"it is also possible to play GNU Go with 3rd party graphical interfaces or\n" +"even in Emacs. It supports the standard game storage format (SGF, Smart\n" +"Game Format) and inter-process communication format (GMP, Go Modem\n" +"Protocol)." +msgstr "" + +#: gnu/packages/games.scm:961 +msgid "High speed arctic racing game based on Tux Racer" +msgstr "" + +#: gnu/packages/games.scm:963 +msgid "" +"Extreme Tux Racer, or etracer as it is called for short, is\n" +"a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the\n" +"game is to slide down a snow- and ice-covered mountain as quickly as possible,\n" +"avoiding the trees and rocks that will slow you down.\n" +"\n" +"Collect herrings and other goodies while sliding down the hill, but avoid fish\n" +"bones.\n" +"\n" +"This game is based on the GPL version of the famous game TuxRacer." +msgstr "" + +#: gnu/packages/games.scm:1001 +msgid "Game of jumping to the next floor, trying not to fall" +msgstr "" + +#: gnu/packages/games.scm:1003 +msgid "" +"GNUjump is a simple, yet addictive game in which you must jump from\n" +"platform to platform to avoid falling, while the platforms drop at faster rates\n" +"the higher you go. The game features multiplayer, unlimited FPS, smooth floor\n" +"falling, themeable graphics and sounds, and replays." +msgstr "" + +#: gnu/packages/games.scm:1044 +msgid "Turn-based strategy game" +msgstr "" + +#: gnu/packages/games.scm:1046 +msgid "" +"The Battle for Wesnoth is a fantasy, turn based tactical strategy game,\n" +"with several single player campaigns, and multiplayer games (both networked and\n" +"local).\n" +"\n" +"Battle for control on a range of maps, using variety of units which have\n" +"advantages and disadvantages against different types of attacks. Units gain\n" +"experience and advance levels, and are carried over from one scenario to the\n" +"next campaign." +msgstr "" + +#: gnu/packages/games.scm:1090 +msgid "x86 emulator with CGA/EGA/VGA/etc. graphics and sound" +msgstr "" + +#: gnu/packages/games.scm:1091 +msgid "" +"DOSBox is a DOS-emulator that uses the SDL library. DOSBox\n" +"also emulates CPU:286/386 realmode/protected mode, Directory\n" +"FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a\n" +"SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with\n" +"older games." +msgstr "" + +#: gnu/packages/games.scm:1136 +msgid "Mouse and keyboard discovery for children" +msgstr "" + +#: gnu/packages/games.scm:1138 +msgid "" +"Gamine is a game designed for young children who are learning to use the\n" +"mouse and keyboard. The child uses the mouse to draw colored dots and lines\n" +"on the screen and keyboard to display letters." +msgstr "" + +#: gnu/packages/games.scm:1169 +msgid "Puzzle game with a cat in lead role" +msgstr "" + +#: gnu/packages/games.scm:1170 +msgid "" +"Project Raincat is a game developed by Carnegie Mellon\n" +"students through GCS during the Fall 2008 semester. Raincat features game\n" +"play inspired from classics Lemmings and The Incredible Machine. The project\n" +"proved to be an excellent learning experience for the programmers. Everything\n" +"is programmed in Haskell." +msgstr "" + +#: gnu/packages/games.scm:1205 +msgid "Client for 'The Mana World' and similar games" +msgstr "" + +#: gnu/packages/games.scm:1207 +msgid "" +"ManaPlus is a 2D MMORPG client for game servers. It is the only\n" +"fully supported client for @uref{http://www.themanaworld.org, The mana\n" +"world}, @uref{http://evolonline.org, Evol Online} and\n" +"@uref{http://landoffire.org, Land of fire}." +msgstr "" + +#: gnu/packages/gcc.scm:303 +msgid "GNU Compiler Collection" +msgstr "" + +#: gnu/packages/gcc.scm:305 +msgid "" +"GCC is the GNU Compiler Collection. It provides compiler front-ends\n" +"for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and\n" +"Go. It also includes runtime support libraries for these languages." +msgstr "" + +#: gnu/packages/gcc.scm:370 +msgid "GNU C++ standard library" +msgstr "" + +#: gnu/packages/gcc.scm:405 +msgid "Collection of subroutines used by various GNU programs" +msgstr "" + +#: gnu/packages/gcc.scm:561 +msgid "GNU libstdc++ documentation" +msgstr "" + +#: gnu/packages/gcc.scm:629 +msgid "Manipulating sets and relations of integer points bounded by linear constraints" +msgstr "" + +#: gnu/packages/gcc.scm:632 +msgid "" +"isl is a library for manipulating sets and relations of integer points\n" +"bounded by linear constraints. Supported operations on sets include\n" +"intersection, union, set difference, emptiness check, convex hull, (integer)\n" +"affine hull, integer projection, computing the lexicographic minimum using\n" +"parametric integer programming, coalescing and parametric vertex\n" +"enumeration. It also includes an ILP solver based on generalized basis\n" +"reduction, transitive closures on maps (which may encode infinite graphs),\n" +"dependence analysis and bounds on piecewise step-polynomials." +msgstr "" + +#: gnu/packages/gcc.scm:664 +msgid "Library to generate code for scanning Z-polyhedra" +msgstr "" + +#: gnu/packages/gcc.scm:666 +msgid "" +"CLooG is a free software library to generate code for scanning\n" +"Z-polyhedra. That is, it finds a code (e.g., in C, FORTRAN...) that\n" +"reaches each integral point of one or more parameterized polyhedra.\n" +"CLooG has been originally written to solve the code generation problem\n" +"for optimizing compilers based on the polytope model. Nevertheless it\n" +"is used now in various area e.g., to build control automata for\n" +"high-level synthesis or to find the best polynomial approximation of a\n" +"function. CLooG may help in any situation where scanning polyhedra\n" +"matters. While the user has full control on generated code quality,\n" +"CLooG is designed to avoid control overhead and to produce a very\n" +"effective code." +msgstr "" + +#: gnu/packages/gcc.scm:721 +msgid "Reference manual for the C programming language" +msgstr "" + +#: gnu/packages/gcc.scm:723 +msgid "" +"This is a reference manual for the C programming language, as\n" +"implemented by the GNU C Compiler (gcc). As a reference, it is not intended\n" +"to be a tutorial of the language. Rather, it outlines all of the constructs\n" +"of the language. Library functions are not included." +msgstr "" + +#: gnu/packages/geeqie.scm:48 +msgid "Library and command-line utility to manage image metadata" +msgstr "" + +#: gnu/packages/geeqie.scm:50 +msgid "" +"Exiv2 is a C++ library and a command line utility to manage image\n" +"metadata. It provides fast and easy read and write access to the Exif, IPTC\n" +"and XMP metadata of images in various formats." +msgstr "" + +#: gnu/packages/geeqie.scm:81 +msgid "Lightweight GTK+ based image viewer" +msgstr "" + +#: gnu/packages/geeqie.scm:83 +msgid "" +"Geeqie is a lightweight GTK+ based image viewer for Unix like operating\n" +"systems. It features: EXIF, IPTC and XMP metadata browsing and editing\n" +"interoperability; easy integration with other software; geeqie works on files\n" +"and directories, there is no need to import images; fast preview for many raw\n" +"image formats; tools for image comparison, sorting and managing photo\n" +"collection. Geeqie was initially based on GQview." +msgstr "" + +#: gnu/packages/gettext.scm:91 +msgid "Tools and documentation for translation" +msgstr "" + +#: gnu/packages/gettext.scm:93 +msgid "" +"GNU Gettext is a package providing a framework for translating the\n" +"textual output of programs into multiple languages. It provides translators\n" +"with the means to create message catalogs, as well as an Emacs mode to work\n" +"with them, and a runtime library to load translated messages from the\n" +"catalogs. Nearly all GNU packages use Gettext." +msgstr "" + +#: gnu/packages/gettext.scm:149 +msgid "Scripts to ease maintenance of translations" +msgstr "" + +#: gnu/packages/gettext.scm:151 +msgid "" +"The po4a (PO for anything) project goal is to ease translations (and\n" +"more interestingly, the maintenance of translations) using gettext tools on\n" +"areas where they were not expected like documentation." +msgstr "" + +#: gnu/packages/gimp.scm:54 +msgid "Image pixel format conversion library" +msgstr "" + +#: gnu/packages/gimp.scm:56 +msgid "" +"Babl is a dynamic, any to any, pixel format translation library.\n" +"It allows converting between different methods of storing pixels known as\n" +"pixel formats that have with different bitdepths and other data\n" +"representations, color models and component permutations.\n" +"\n" +"A vocabulary to formulate new pixel formats from existing primitives is\n" +"provided as well as the framework to add new color models and data types." +msgstr "" + +#: gnu/packages/gimp.scm:111 +msgid "Graph based image processing framework" +msgstr "" + +#: gnu/packages/gimp.scm:112 +msgid "" +"GEGL (Generic Graphics Library) provides infrastructure to\n" +"do demand based cached non destructive image editing on larger than RAM\n" +"buffers." +msgstr "" + +#: gnu/packages/gimp.scm:148 +msgid "GNU Image Manipulation Program" +msgstr "" + +#: gnu/packages/gimp.scm:150 +msgid "" +"GIMP is an application for image manipulation tasks such as photo\n" +"retouching, composition and authoring. It supports all common image formats\n" +"as well as specialized ones. It features a highly customizable interface\n" +"that is extensible via a plugin system." +msgstr "" + +#: gnu/packages/gnome.scm:138 +msgid "CD/DVD burning tool for Gnome" +msgstr "" + +#: gnu/packages/gnome.scm:139 +msgid "" +"Brasero is an application to burn CD/DVD for the Gnome\n" +"Desktop. It is designed to be as simple as possible and has some unique\n" +"features to enable users to create their discs easily and quickly." +msgstr "" + +#: gnu/packages/gnome.scm:159 +msgid "Bootstrap GNOME modules built from Git" +msgstr "" + +#: gnu/packages/gnome.scm:160 +msgid "" +"gnome-common contains various files needed to bootstrap\n" +"GNOME modules built from Git. It contains a common \"autogen.sh\" script that\n" +"can be used to configure a source directory checked out from Git and some\n" +"commonly used macros." +msgstr "" + +#: gnu/packages/gnome.scm:198 +msgid "Libgnome-desktop, gnome-about, and desktop-wide documents" +msgstr "" + +#: gnu/packages/gnome.scm:200 +msgid "" +"The libgnome-desktop library provides API shared by several applications\n" +"on the desktop, but that cannot live in the platform for various reasons.\n" +"There is no API or ABI guarantee, although we are doing our best to provide\n" +"stability. Documentation for the API is available with gtk-doc.\n" +"\n" +"The gnome-about program helps find which version of GNOME is installed." +msgstr "" + +#: gnu/packages/gnome.scm:233 +msgid "Documentation utilities for the Gnome project" +msgstr "" + +#: gnu/packages/gnome.scm:235 +msgid "" +"Gnome-doc-utils is a collection of documentation utilities for the\n" +"Gnome project. It includes xml2po tool which makes it easier to translate\n" +"and keep up to date translations of documentation." +msgstr "" + +#: gnu/packages/gnome.scm:277 +msgid "Libraries for displaying certificates and accessing key stores" +msgstr "" + +#: gnu/packages/gnome.scm:279 +msgid "" +"The GCR package contains libraries used for displaying certificates and\n" +"accessing key stores. It also provides the viewer for crypto files on the\n" +"GNOME Desktop." +msgstr "" + +#: gnu/packages/gnome.scm:308 +msgid "Accessing passwords from the GNOME keyring" +msgstr "" + +#: gnu/packages/gnome.scm:310 +msgid "Client library to access passwords from the GNOME keyring." +msgstr "" + +#: gnu/packages/gnome.scm:371 +msgid "Daemon to store passwords and encryption keys" +msgstr "" + +#: gnu/packages/gnome.scm:373 +msgid "" +"gnome-keyring is a program that keeps passwords and other secrets for\n" +"users. It is run as a daemon in the session, similar to ssh-agent, and other\n" +"applications locate it via an environment variable or D-Bus.\n" +"\n" +"The program can manage several keyrings, each with its own master password,\n" +"and there is also a session keyring which is never stored to disk, but\n" +"forgotten when the session ends." +msgstr "" + +#: gnu/packages/gnome.scm:438 +msgid "GNOME's document viewer" +msgstr "" + +#: gnu/packages/gnome.scm:440 +msgid "" +"Evince is a document viewer for multiple document formats. It\n" +"currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal\n" +"of Evince is to replace the multiple document viewers that exist\n" +"on the GNOME Desktop with a single simple application." +msgstr "" + +#: gnu/packages/gnome.scm:469 +msgid "GNOME settings for various desktop components" +msgstr "" + +#: gnu/packages/gnome.scm:471 +msgid "" +"Gsettings-desktop-schemas contains a collection of GSettings schemas\n" +"for settings shared by various components of the GNOME desktop." +msgstr "" + +#: gnu/packages/gnome.scm:505 +msgid "Utility to implement the Freedesktop Icon Naming Specification" +msgstr "" + +#: gnu/packages/gnome.scm:507 +msgid "" +"To help with the transition to the Freedesktop Icon Naming\n" +"Specification, the icon naming utility maps the icon names used by the\n" +"GNOME and KDE desktops to the icon names proposed in the specification." +msgstr "" + +#: gnu/packages/gnome.scm:529 +msgid "Utilities for working with desktop entries" +msgstr "" + +#: gnu/packages/gnome.scm:531 +msgid "" +"This package contains a few command line utilities for working with\n" +"desktop entries:\n" +"\n" +"desktop-file-validate: validates a desktop file and prints warnings/errors\n" +" about desktop entry specification violations.\n" +"\n" +"desktop-file-install: installs a desktop file to the applications directory,\n" +" optionally munging it a bit in transit.\n" +"\n" +"update-desktop-database: updates the database containing a cache of MIME types\n" +" handled by desktop files." +msgstr "" + +#: gnu/packages/gnome.scm:565 +msgid "GNOME icon theme" +msgstr "" + +#: gnu/packages/gnome.scm:567 +msgid "Icons for the GNOME desktop." +msgstr "" + +#: gnu/packages/gnome.scm:606 +msgid "Database of common MIME types" +msgstr "" + +#: gnu/packages/gnome.scm:608 +msgid "" +"The shared-mime-info package contains the core database of common types\n" +"and the update-mime-database command used to extend it. It requires glib2 to\n" +"be installed for building the update command. Additionally, it uses intltool\n" +"for translations, though this is only a dependency for the maintainers. This\n" +"database is translated at Transifex." +msgstr "" + +#: gnu/packages/gnome.scm:632 +msgid "Freedesktop icon theme" +msgstr "" + +#: gnu/packages/gnome.scm:634 +msgid "Freedesktop icon theme." +msgstr "" + +#: gnu/packages/gnome.scm:661 +msgid "GNOME desktop notification library" +msgstr "" + +#: gnu/packages/gnome.scm:663 +msgid "" +"Libnotify is a library that sends desktop notifications to a\n" +"notification daemon, as defined in the Desktop Notifications spec. These\n" +"notifications can be used to inform the user about an event or display\n" +"some form of information without getting in the user's way." +msgstr "" + +#: gnu/packages/gnome.scm:695 +msgid "GObject plugin system" +msgstr "" + +#: gnu/packages/gnome.scm:697 +msgid "" +"Libpeas is a gobject-based plugins engine, and is targetted at giving\n" +"every application the chance to assume its own extensibility. It also has a\n" +"set of features including, but not limited to: multiple extension points; on\n" +"demand (lazy) programming language support for C, Python and JS; simplicity of\n" +"the API." +msgstr "" + +#: gnu/packages/gnome.scm:726 +msgid "OpenGL extension to GTK+" +msgstr "" + +#: gnu/packages/gnome.scm:727 +msgid "" +"GtkGLExt is an OpenGL extension to GTK+. It provides\n" +"additional GDK objects which support OpenGL rendering in GTK+ and GtkWidget\n" +"API add-ons to make GTK+ widgets OpenGL-capable." +msgstr "" + +#: gnu/packages/gnome.scm:752 +msgid "GTK+ rapid application development tool" +msgstr "" + +#: gnu/packages/gnome.scm:753 +msgid "" +"Glade is a rapid application development (RAD) tool to\n" +"enable quick & easy development of user interfaces for the GTK+ toolkit and\n" +"the GNOME desktop environment." +msgstr "" + +#: gnu/packages/gnome.scm:778 +msgid "CSS2 parsing and manipulation library" +msgstr "" + +#: gnu/packages/gnome.scm:780 +msgid "" +"Libcroco is a standalone CSS2 parsing and manipulation library.\n" +"The parser provides a low level event driven SAC-like API and a CSS object\n" +"model like API. Libcroco provides a CSS2 selection engine and an experimental\n" +"XML/CSS rendering engine." +msgstr "" + +#: gnu/packages/gnome.scm:813 +msgid "GNOME's Structured File Library" +msgstr "" + +#: gnu/packages/gnome.scm:815 +msgid "" +"Libgsf aims to provide an efficient extensible I/O abstraction for\n" +"dealing with different structured file formats." +msgstr "" + +#: gnu/packages/gnome.scm:880 +msgid "Render SVG files using Cairo" +msgstr "" + +#: gnu/packages/gnome.scm:882 +msgid "" +"Librsvg is a C library to render SVG files using the Cairo 2D graphics\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:906 +msgid "Create trees of CORBA Interface Definition Language files" +msgstr "" + +#: gnu/packages/gnome.scm:907 +msgid "" +"Libidl is a library for creating trees of CORBA Interface\n" +"Definition Language (idl) files, which is a specification for defining\n" +"portable interfaces. libidl was initially written for orbit (the orb from the\n" +"GNOME project, and the primary means of libidl distribution). However, the\n" +"functionality was designed to be as reusable and portable as possible." +msgstr "" + +#: gnu/packages/gnome.scm:944 +msgid "CORBA 2.4-compliant Object Request Broker" +msgstr "" + +#: gnu/packages/gnome.scm:945 +msgid "" +"ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)\n" +"featuring mature C, C++ and Python bindings." +msgstr "" + +#: gnu/packages/gnome.scm:991 +msgid "Framework for creating reusable components for use in GNOME applications" +msgstr "" + +#: gnu/packages/gnome.scm:992 +msgid "" +"Bonobo is a framework for creating reusable components for\n" +"use in GNOME applications, built on top of CORBA." +msgstr "" + +#: gnu/packages/gnome.scm:1023 +msgid "Store application preferences" +msgstr "" + +#: gnu/packages/gnome.scm:1024 +msgid "" +"Gconf is a system for storing application preferences. It\n" +"is intended for user preferences; not arbitrary data storage." +msgstr "" + +#: gnu/packages/gnome.scm:1046 +msgid "Base MIME and Application database for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:1047 +msgid "" +"GNOME Mime Data is a module which contains the base MIME\n" +"and Application database for GNOME. The data stored by this module is\n" +"designed to be accessed through the MIME functions in GnomeVFS." +msgstr "" + +#: gnu/packages/gnome.scm:1091 +msgid "Access files and folders in GNOME applications" +msgstr "" + +#: gnu/packages/gnome.scm:1093 +msgid "" +"GnomeVFS is the core library used to access files and folders in GNOME\n" +"applications. It provides a file system abstraction which allows applications\n" +"to access local and remote files with a single consistent API." +msgstr "" + +#: gnu/packages/gnome.scm:1137 +msgid "Useful routines for building applications" +msgstr "" + +#: gnu/packages/gnome.scm:1138 +msgid "" +"The libgnome library provides a number of useful routines\n" +"for building modern applications, including session management, activation of\n" +"files and URIs, and displaying help." +msgstr "" + +#: gnu/packages/gnome.scm:1161 +msgid "2D drawing library" +msgstr "" + +#: gnu/packages/gnome.scm:1162 +msgid "" +"Libart is a 2D drawing library intended as a\n" +"high-quality vector-based 2D library with antialiasing and alpha composition." +msgstr "" + +#: gnu/packages/gnome.scm:1189 +msgid "Flexible widget for creating interactive structured graphics" +msgstr "" + +#: gnu/packages/gnome.scm:1190 +msgid "" +"The GnomeCanvas widget provides a flexible widget for\n" +"creating interactive structured graphics." +msgstr "" + +#: gnu/packages/gnome.scm:1212 +msgid "C++ bindings to the GNOME Canvas library" +msgstr "" + +#: gnu/packages/gnome.scm:1213 +msgid "C++ bindings to the GNOME Canvas library." +msgstr "" + +#: gnu/packages/gnome.scm:1244 +msgid "Additional widgets for applications" +msgstr "" + +#: gnu/packages/gnome.scm:1245 +msgid "" +"The libgnomeui library provides additional widgets for\n" +"applications. Many of the widgets from libgnomeui have already been\n" +"ported to GTK+." +msgstr "" + +#: gnu/packages/gnome.scm:1271 +msgid "Load glade interfaces and access the glade built widgets" +msgstr "" + +#: gnu/packages/gnome.scm:1272 +msgid "" +"Libglade is a library that provides interfaces for loading\n" +"graphical interfaces described in glade files and for accessing the\n" +"widgets built in the loading process." +msgstr "" + +#: gnu/packages/gnome.scm:1309 gnu/packages/gnome.scm:1341 +msgid "Printing framework for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:1311 +msgid "" +"GNOME-print was a printing framework for GNOME. It has been deprecated\n" +"since ca. 2006, when GTK+ itself incorporated printing support." +msgstr "" + +#: gnu/packages/gnome.scm:1386 +msgid "Some user interface controls using Bonobo" +msgstr "" + +#: gnu/packages/gnome.scm:1387 +msgid "" +"The Bonobo UI library provides a number of user interface\n" +"controls using the Bonobo component framework." +msgstr "" + +#: gnu/packages/gnome.scm:1411 +msgid "Window Navigator Construction Kit" +msgstr "" + +#: gnu/packages/gnome.scm:1413 +msgid "" +"Libwnck is the Window Navigator Construction Kit, a library for use in\n" +"writing pagers, tasklists, and more generally applications that are dealing\n" +"with window management. It tries hard to respect the Extended Window Manager\n" +"Hints specification (EWMH)." +msgstr "" + +#: gnu/packages/gnome.scm:1460 +msgid "Document-centric objects and utilities" +msgstr "" + +#: gnu/packages/gnome.scm:1461 +msgid "A GLib/GTK+ set of document-centric objects and utilities." +msgstr "" + +#: gnu/packages/gnome.scm:1536 +msgid "Spreadsheet application" +msgstr "" + +#: gnu/packages/gnome.scm:1538 +msgid "" +"GNUmeric is a GNU spreadsheet application, running under GNOME. It is\n" +"interoperable with other spreadsheet applications. It has a vast array of\n" +"features beyond typical spreadsheet functionality, such as support for linear\n" +"and non-linear solvers, statistical analysis, and telecommunication\n" +"engineering." +msgstr "" + +#: gnu/packages/gnome.scm:1586 +msgid "Default GNOME 3 themes" +msgstr "" + +#: gnu/packages/gnome.scm:1588 +msgid "The default GNOME 3 themes (Adwaita and some accessibility themes)." +msgstr "" + +#: gnu/packages/gnome.scm:1619 +msgid "Manage encryption keys and passwords in the GNOME keyring" +msgstr "" + +#: gnu/packages/gnome.scm:1621 +msgid "" +"Seahorse is a GNOME application for managing encryption keys and\n" +"passwords in the GNOME keyring." +msgstr "" + +#: gnu/packages/gnome.scm:1655 gnu/packages/gnome.scm:1791 +msgid "Compiler for the GObject type system" +msgstr "" + +#: gnu/packages/gnome.scm:1657 +msgid "" +"Vala is a programming language that aims to bring modern programming\n" +"language features to GNOME developers without imposing any additional runtime\n" +"requirements and without using a different ABI compared to applications and\n" +"libraries written in C." +msgstr "" + +#: gnu/packages/gnome.scm:1687 +msgid "Virtual Terminal Emulator" +msgstr "" + +#: gnu/packages/gnome.scm:1689 +msgid "" +"VTE is a library (libvte) implementing a terminal emulator widget for\n" +"GTK+, and a minimal sample application (vte) using that. Vte is mainly used in\n" +"gnome-terminal, but can also be used to embed a console/terminal in games,\n" +"editors, IDEs, etc." +msgstr "" + +#: gnu/packages/gnome.scm:1765 +msgid "Low-level GNOME configuration system" +msgstr "" + +#: gnu/packages/gnome.scm:1766 +msgid "" +"Dconf is a low-level configuration system. Its main purpose\n" +"is to provide a backend to GSettings on platforms that don't already have\n" +"configuration storage systems." +msgstr "" + +#: gnu/packages/gnome.scm:1793 +msgid "" +"JSON-GLib is a C library based on GLib providing serialization and\n" +"deserialization support for the JavaScript Object Notation (JSON) format\n" +"described by RFC 4627. It provides parser and generator GObject classes and\n" +"various wrappers for the complex data types employed by JSON, such as arrays\n" +"and objects." +msgstr "" + +#: gnu/packages/gnome.scm:1832 +msgid "High-level API for X Keyboard Extension" +msgstr "" + +#: gnu/packages/gnome.scm:1834 +msgid "" +"LibXklavier is a library providing high-level API for X Keyboard\n" +"Extension known as XKB. This library is intended to support XFree86 and other\n" +"commercial X servers. It is useful for creating XKB-related software (layout\n" +"indicators etc)." +msgstr "" + +#: gnu/packages/gnome.scm:1862 +msgid "Python bindings to librsvg" +msgstr "" + +#: gnu/packages/gnome.scm:1864 +msgid "" +"This packages provides Python bindings to librsvg, the SVG rendering\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:1913 +msgid "Network-related GIO modules" +msgstr "" + +#: gnu/packages/gnome.scm:1915 +msgid "" +"This package contains various network related extensions for the GIO\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:1946 +msgid "RESTful web api query library" +msgstr "" + +#: gnu/packages/gnome.scm:1948 +msgid "" +"This library was designed to make it easier to access web services that\n" +"claim to be \"RESTful\". It includes convenience wrappers for libsoup and\n" +"libxml to ease remote use of the RESTful API." +msgstr "" + +#: gnu/packages/gnome.scm:2012 +msgid "GLib-based HTTP Library" +msgstr "" + +#: gnu/packages/gnome.scm:2014 +msgid "" +"LibSoup is an HTTP client/server library for GNOME. It uses GObjects\n" +"and the GLib main loop, to integrate well with GNOME applications." +msgstr "" + +#: gnu/packages/gnome.scm:2059 +msgid "GObject bindings for \"Secret Service\" API" +msgstr "" + +#: gnu/packages/gnome.scm:2061 +msgid "" +"Libsecret is a GObject based library for storing and retrieving passwords\n" +"and other secrets. It communicates with the \"Secret Service\" using DBus." +msgstr "" + +#: gnu/packages/gnome.scm:2105 +msgid "Minesweeper game" +msgstr "" + +#: gnu/packages/gnome.scm:2107 +msgid "" +"Mines (previously gnomine) is a puzzle game where you locate mines\n" +"floating in an ocean using only your brain and a little bit of luck." +msgstr "" + +#: gnu/packages/gnome.scm:2151 +msgid "Terminal emulator" +msgstr "" + +#: gnu/packages/gnome.scm:2153 +msgid "" +"GNOME Terminal is a terminal emulator application for accessing a\n" +"UNIX shell environment which can be used to run programs available on\n" +"your system.\n" +"\n" +"It supports several profiles, multiple tabs and implements several\n" +"keyboard shortcuts." +msgstr "" + +#: gnu/packages/gnome.scm:2218 +msgid "Color management service" +msgstr "" + +#: gnu/packages/gnome.scm:2219 +msgid "" +"Colord is a system service that makes it easy to manage,\n" +"install and generate color profiles to accurately color manage input and\n" +"output devices." +msgstr "" + +#: gnu/packages/gnome.scm:2261 +msgid "Geolocation service" +msgstr "" + +#: gnu/packages/gnome.scm:2262 +msgid "" +"Geoclue is a D-Bus service that provides location\n" +"information. The primary goal of the Geoclue project is to make creating\n" +"location-aware applications as simple as possible, while the secondary goal is\n" +"to ensure that no application can access location information without explicit\n" +"permission from user." +msgstr "" + +#: gnu/packages/gnome.scm:2298 +msgid "Geocoding and reverse-geocoding library" +msgstr "" + +#: gnu/packages/gnome.scm:2300 +msgid "" +"geocode-glib is a convenience library for geocoding (finding longitude,\n" +"and latitude from an address) and reverse geocoding (finding an address from\n" +"coordinates) using the Nominatim service. geocode-glib caches requests for\n" +"faster results and to avoid unnecessary server load." +msgstr "" + +#: gnu/packages/gnome.scm:2347 +msgid "System daemon for managing power devices" +msgstr "" + +#: gnu/packages/gnome.scm:2349 +msgid "" +"UPower is an abstraction for enumerating power devices,\n" +"listening to device events and querying history and statistics. Any\n" +"application or service on the system can access the org.freedesktop.UPower\n" +"service via the system message bus." +msgstr "" + +#: gnu/packages/gnome.scm:2395 +msgid "Location, time zone, and weather library for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2397 +msgid "" +"libgweather is a library to access weather information from online\n" +"services for numerous locations." +msgstr "" + +#: gnu/packages/gnome.scm:2449 +msgid "GNOME settings daemon" +msgstr "" + +#: gnu/packages/gnome.scm:2451 +msgid "" +"This package contains the daemon responsible for setting the various\n" +"parameters of a GNOME session and the applications that run under it. It\n" +"handles settings such keyboard layout, shortcuts, and accessibility, clipboard\n" +"settings, themes, mouse settings, and startup of other daemons." +msgstr "" + +#: gnu/packages/gnome.scm:2487 +msgid "Library to parse and save media playlists for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2488 +msgid "" +"Totem-pl-parser is a GObjects-based library to parse and save\n" +"playlists in a variety of formats." +msgstr "" + +#: gnu/packages/gnome.scm:2522 +msgid "Solitaire card games" +msgstr "" + +#: gnu/packages/gnome.scm:2524 +msgid "" +"Aisleriot (also known as Solitaire or sol) is a collection of card games\n" +"which are easy to play with the aid of a mouse." +msgstr "" + +#: gnu/packages/gnome.scm:2548 +msgid "API documentation browser for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2550 +msgid "" +"Devhelp is an API documentation browser for GTK+ and GNOME. It works\n" +"natively with GTK-Doc (the API reference system developed for GTK+ and used\n" +"throughout GNOME for API documentation)." +msgstr "" + +#: gnu/packages/gnome.scm:2611 +msgid "Object oriented GL/GLES Abstraction/Utility Layer" +msgstr "" + +#: gnu/packages/gnome.scm:2613 +msgid "" +"Cogl is a small library for using 3D graphics hardware to draw pretty\n" +"pictures. The API departs from the flat state machine style of OpenGL and is\n" +"designed to make it easy to write orthogonal components that can render\n" +"without stepping on each others toes." +msgstr "" + +#: gnu/packages/gnome.scm:2668 +msgid "Open GL based interactive canvas library" +msgstr "" + +#: gnu/packages/gnome.scm:2670 gnu/packages/gnome.scm:2698 +msgid "" +"Clutter is an Open GL based interactive canvas library, designed for\n" +"creating fast, mainly 2D single window applications such as media box UIs,\n" +"presentations, kiosk style applications and so on." +msgstr "" + +#: gnu/packages/gnome.scm:2696 +msgid "Open GL based interactive canvas library GTK+ widget" +msgstr "" + +#: gnu/packages/gnome.scm:2726 +msgid "Integration library for using GStreamer with Clutter" +msgstr "" + +#: gnu/packages/gnome.scm:2728 +msgid "" +"Clutter-Gst is an integration library for using GStreamer with Clutter.\n" +"It provides a GStreamer sink to upload frames to GL and an actor that\n" +"implements the ClutterGstPlayer interface using playbin. Clutter is an Open\n" +"GL based interactive canvas library." +msgstr "" + +#: gnu/packages/gnome.scm:2758 +msgid "C library providing a ClutterActor to display maps" +msgstr "" + +#: gnu/packages/gnome.scm:2760 +msgid "" +"libchamplain is a C library providing a ClutterActor to display maps.\n" +"It also provides a Gtk+ widget to display maps in Gtk+ applications. Python\n" +"and Perl bindings are also available. It supports numerous free map sources\n" +"such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free." +msgstr "" + +#: gnu/packages/gnome.scm:2791 +msgid "Object mapper from GObjects to SQLite" +msgstr "" + +#: gnu/packages/gnome.scm:2793 +msgid "" +"Gom provides an object mapper from GObjects to SQLite. It helps you\n" +"write applications that need to store structured data as well as make complex\n" +"queries upon that data." +msgstr "" + +#: gnu/packages/gnome.scm:2821 +msgid "Sliding block puzzles" +msgstr "" + +#: gnu/packages/gnome.scm:2823 +msgid "" +"GNOME Klotski is a set of block sliding puzzles. The objective is to move\n" +"the patterned block to the area bordered by green markers. To do so, you will\n" +"need to slide other blocks out of the way. Complete each puzzle in as few moves\n" +"as possible!" +msgstr "" + +#: gnu/packages/gnome.scm:2874 +msgid "Framework for discovering and browsing media" +msgstr "" + +#: gnu/packages/gnome.scm:2876 gnu/packages/gnome.scm:2928 +msgid "" +"Grilo is a framework focused on making media discovery and browsing easy\n" +"for application developers." +msgstr "" + +#: gnu/packages/gnome.scm:2926 +msgid "Plugins for the Grilo media discovery library" +msgstr "" + +#: gnu/packages/gnome.scm:3003 +msgid "Simple media player for GNOME based on GStreamer" +msgstr "" + +#: gnu/packages/gnome.scm:3004 +msgid "" +"Totem is a simple yet featureful media player for GNOME\n" +"which can read a large number of file formats." +msgstr "" + +#: gnu/packages/gnome.scm:3093 +msgid "Music player for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:3094 +msgid "" +"Rhythmbox is a music playing application for GNOME. It\n" +"supports playlists, song ratings, and any codecs installed through gstreamer." +msgstr "" + +#: gnu/packages/gnome.scm:3144 +msgid "GNOME image viewer" +msgstr "" + +#: gnu/packages/gnome.scm:3145 +msgid "" +"Eye of GNOME is the GNOME image viewer. It\n" +"supports image conversion, rotation, and slideshows." +msgstr "" + +#: gnu/packages/gnome.scm:3170 +msgid "GObject bindings for libudev" +msgstr "" + +#: gnu/packages/gnome.scm:3172 +msgid "" +"This library provides GObject bindings for libudev. It was originally\n" +"part of udev-extras, then udev, then systemd. It's now a project on its own." +msgstr "" + +#: gnu/packages/gnome.scm:3217 +msgid "Userspace virtual filesystem for GIO" +msgstr "" + +#: gnu/packages/gnome.scm:3219 +msgid "" +"GVFS is a userspace virtual filesystem designed to work with the I/O\n" +"abstraction of GIO. It contains a GIO module that seamlessly adds GVFS support\n" +"to all applications using the GIO API. It also supports exposing the GVFS\n" +"mounts to non-GIO applications using FUSE.\n" +"\n" +"GVFS comes with a set of backends, including trash support, SFTP, SMB, HTTP,\n" +"DAV, and others." +msgstr "" + +#: gnu/packages/gnome.scm:3265 +msgid "A GLib binding for libusb1" +msgstr "" + +#: gnu/packages/gnome.scm:3267 +msgid "" +"GUsb is a GObject wrapper for libusb1 that makes it easy to do\n" +"asynchronous control, bulk and interrupt transfers with proper cancellation\n" +"and integration into a mainloop. This makes it easy to integrate low level\n" +"USB transfers with your high-level application or system daemon." +msgstr "" + +#: gnu/packages/gnome.scm:3304 +msgid "Document and image scanner" +msgstr "" + +#: gnu/packages/gnome.scm:3305 +msgid "" +"Simple Scan is an easy-to-use application, designed to let\n" +"users connect their scanner and quickly have the image/document in an\n" +"appropriate format. Simple Scan is basically a frontend for SANE - which is\n" +"the same backend as XSANE uses. This means that all existing scanners will\n" +"work and the interface is well tested." +msgstr "" + +#: gnu/packages/gnome.scm:3354 +msgid "GNOME web browser" +msgstr "" + +#: gnu/packages/gnome.scm:3356 +msgid "" +"Epiphany is a GNOME web browser targeted at non-technical users. Its\n" +"principles are simplicity and standards compliance." +msgstr "" + +#: gnu/packages/gnome.scm:3412 +msgid "D-Bus debugger" +msgstr "" + +#: gnu/packages/gnome.scm:3414 +msgid "" +"D-Feet is a D-Bus debugger, which can be used to inspect D-Bus interfaces\n" +"of running programs and invoke methods on those interfaces." +msgstr "" + +#: gnu/packages/gnome.scm:3436 +msgid "XSL stylesheets for Yelp" +msgstr "" + +#: gnu/packages/gnome.scm:3438 +msgid "" +"Yelp-xsl contains XSL stylesheets that are used by the yelp help browser\n" +"to format Docbook and Mallard documents." +msgstr "" + +#: gnu/packages/gnome.scm:3470 +msgid "GNOME help browser" +msgstr "" + +#: gnu/packages/gnome.scm:3472 +msgid "" +"Yelp is the help viewer in Gnome. It natively views Mallard, DocBook,\n" +"man, info, and HTML documents. It can locate documents according to the\n" +"freedesktop.org help system specification." +msgstr "" + +#: gnu/packages/gnome.scm:3500 +msgid "Yelp documentation tools" +msgstr "" + +#: gnu/packages/gnome.scm:3502 +msgid "" +"Yelp-tools is a collection of scripts and build utilities to help create,\n" +"manage, and publish documentation for Yelp and the web. Most of the heavy\n" +"lifting is done by packages like yelp-xsl and itstool. This package just\n" +"wraps things up in a developer-friendly way." +msgstr "" + +#: gnu/packages/gnome.scm:3539 +msgid "GObject collection library" +msgstr "" + +#: gnu/packages/gnome.scm:3541 +msgid "" +"Libgee is a utility library providing GObject-based interfaces and\n" +"classes for commonly used data structures." +msgstr "" + +#: gnu/packages/gnome.scm:3568 +msgid "GObject wrapper around the Exiv2 photo metadata library" +msgstr "" + +#: gnu/packages/gnome.scm:3570 +msgid "" +"Gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It\n" +"allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP\n" +"metadata in photo and video files of various formats." +msgstr "" + +#: gnu/packages/gnome.scm:3622 +msgid "Photo manager for GNOME 3" +msgstr "" + +#: gnu/packages/gnome.scm:3624 +msgid "" +"Shotwell is a digital photo manager designed for the GNOME desktop\n" +"environment. It allows you to import photos from disk or camera, organize\n" +"them by keywords and events, view them in full-window or fullscreen mode, and\n" +"share them with others via social networking and more." +msgstr "" + +#: gnu/packages/gnome.scm:3656 +msgid "Graphical archive manager for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:3657 +msgid "" +"File Roller is an archive manager for the GNOME desktop\n" +"environment that allows users to view, unpack, and create compressed archives\n" +"such as gzip tarballs." +msgstr "" + +#: gnu/packages/gnuzilla.scm:90 +msgid "Mozilla javascript engine" +msgstr "" + +#: gnu/packages/gnuzilla.scm:91 +msgid "" +"SpiderMonkey is Mozilla's JavaScript engine written\n" +"in C/C++." +msgstr "" + +#: gnu/packages/gnuzilla.scm:123 +msgid "Netscape API for system level and libc-like functions" +msgstr "" + +#: gnu/packages/gnuzilla.scm:124 +msgid "" +"Netscape Portable Runtime (NSPR) provides a\n" +"platform-neutral API for system level and libc-like functions. It is used\n" +"in the Mozilla clients." +msgstr "" + +#: gnu/packages/gnuzilla.scm:219 +msgid "Network Security Services" +msgstr "" + +#: gnu/packages/gnuzilla.scm:221 +msgid "" +"Network Security Services (NSS) is a set of libraries designed to support\n" +"cross-platform development of security-enabled client and server applications.\n" +"Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,\n" +"PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security\n" +"standards." +msgstr "" + +#: gnu/packages/gnuzilla.scm:453 +msgid "Entirely free browser derived from Mozilla Firefox" +msgstr "" + +#: gnu/packages/gnuzilla.scm:455 +msgid "" +"IceCat is the GNU version of the Firefox browser. It is entirely free\n" +"software, which does not recommend non-free plugins and addons. It also\n" +"features built-in privacy-protecting features." +msgstr "" + +#: gnu/packages/gtk.scm:84 +msgid "GNOME accessibility toolkit" +msgstr "" + +#: gnu/packages/gtk.scm:86 +msgid "" +"ATK provides the set of accessibility interfaces that are implemented\n" +"by other toolkits and applications. Using the ATK interfaces, accessibility\n" +"tools have full access to view and control running applications." +msgstr "" + +#: gnu/packages/gtk.scm:125 +msgid "2D graphics library" +msgstr "" + +#: gnu/packages/gtk.scm:127 +msgid "" +"Cairo is a 2D graphics library with support for multiple output devices.\n" +"Currently supported output targets include the X Window System (via both\n" +"Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file\n" +"output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.\n" +"\n" +"Cairo is designed to produce consistent output on all output media while\n" +"taking advantage of display hardware acceleration when available\n" +"eg. through the X Render Extension).\n" +"\n" +"The cairo API provides operations similar to the drawing operators of\n" +"PostScript and PDF. Operations in cairo including stroking and filling cubic\n" +"Bézier splines, transforming and compositing translucent images, and\n" +"antialiased text rendering. All drawing operations can be transformed by any\n" +"affine transformation (scale, rotation, shear, etc.)." +msgstr "" + +#: gnu/packages/gtk.scm:175 +msgid "OpenType text shaping engine" +msgstr "" + +#: gnu/packages/gtk.scm:177 +msgid "HarfBuzz is an OpenType text shaping engine." +msgstr "" + +#: gnu/packages/gtk.scm:208 +msgid "GNOME text and font handling library" +msgstr "" + +#: gnu/packages/gtk.scm:210 +msgid "" +"Pango is the core text and font handling library used in GNOME\n" +"applications. It has extensive support for the different writing systems\n" +"used throughout the world." +msgstr "" + +#: gnu/packages/gtk.scm:236 +msgid "Obsolete pango functions" +msgstr "" + +#: gnu/packages/gtk.scm:237 +msgid "" +"Pangox was a X backend to pango. It is now obsolete and no\n" +"longer provided by recent pango releases. pangox-compat provides the\n" +"functions which were removed." +msgstr "" + +#: gnu/packages/gtk.scm:271 +msgid "GTK+ widget for interactive graph-like environments" +msgstr "" + +#: gnu/packages/gtk.scm:273 +msgid "" +"Ganv is an interactive GTK+ widget for interactive “boxes and lines” or\n" +"graph-like environments, e.g. modular synths or finite state machine\n" +"diagrams." +msgstr "" + +#: gnu/packages/gtk.scm:323 +msgid "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget" +msgstr "" + +#: gnu/packages/gtk.scm:325 +msgid "" +"GtkSourceView is a portable C library that extends the standard GTK+\n" +"framework for multiline text editing with support for configurable syntax\n" +"highlighting, unlimited undo/redo, search and replace, a completion framework,\n" +"printing and other features typical of a source code editor." +msgstr "" + +#: gnu/packages/gtk.scm:374 +msgid "GNOME image loading and manipulation library" +msgstr "" + +#: gnu/packages/gtk.scm:376 +msgid "" +"GdkPixbuf is a library for image loading and manipulation developed\n" +"in the GNOME project." +msgstr "" + +#: gnu/packages/gtk.scm:417 +msgid "Assistive Technology Service Provider Interface, core components" +msgstr "" + +#: gnu/packages/gtk.scm:419 +msgid "" +"The Assistive Technology Service Provider Interface, core components,\n" +"is part of the GNOME accessibility project." +msgstr "" + +#: gnu/packages/gtk.scm:451 +msgid "Assistive Technology Service Provider Interface, ATK bindings" +msgstr "" + +#: gnu/packages/gtk.scm:453 +msgid "" +"The Assistive Technology Service Provider Interface\n" +"is part of the GNOME accessibility project." +msgstr "" + +#: gnu/packages/gtk.scm:505 +msgid "Cross-platform toolkit for creating graphical user interfaces" +msgstr "" + +#: gnu/packages/gtk.scm:507 +msgid "" +"GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating\n" +"graphical user interfaces. Offering a complete set of widgets, GTK+ is\n" +"suitable for projects ranging from small one-off tools to complete\n" +"application suites." +msgstr "" + +#: gnu/packages/gtk.scm:630 +msgid "Cairo bindings for GNU Guile" +msgstr "" + +#: gnu/packages/gtk.scm:632 +msgid "" +"Guile-Cairo wraps the Cairo graphics library for Guile Scheme.\n" +"Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API\n" +"stable, providing a firm base on which to do graphics work. Finally, and\n" +"importantly, it is pleasant to use. You get a powerful and well-maintained\n" +"graphics library with all of the benefits of Scheme: memory management,\n" +"exceptions, macros, and a dynamic programming environment." +msgstr "" + +#: gnu/packages/gtk.scm:672 +msgid "Render SVG images using Cairo from Guile" +msgstr "" + +#: gnu/packages/gtk.scm:674 +msgid "" +"Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG\n" +"images onto Cairo surfaces." +msgstr "" + +#: gnu/packages/gtk.scm:718 +msgid "Create SVG or PDF presentations in Guile" +msgstr "" + +#: gnu/packages/gtk.scm:720 +msgid "" +"Guile-Present defines a declarative vocabulary for presentations,\n" +"together with tools to render presentation documents as SVG or PDF.\n" +"Guile-Present can be used to make presentations programmatically, but also\n" +"includes a tools to generate PDF presentations out of Org mode and Texinfo\n" +"documents." +msgstr "" + +#: gnu/packages/gtk.scm:753 +msgid "C++ bindings to the Cairo 2D graphics library" +msgstr "" + +#: gnu/packages/gtk.scm:755 +msgid "" +"Cairomm provides a C++ programming interface to the Cairo 2D graphics\n" +"library." +msgstr "" + +#: gnu/packages/gtk.scm:779 +msgid "C++ interface to the Pango text rendering library" +msgstr "" + +#: gnu/packages/gtk.scm:781 +msgid "" +"Pangomm provides a C++ programming interface to the Pango text rendering\n" +"library." +msgstr "" + +#: gnu/packages/gtk.scm:802 +msgid "C++ interface to the ATK accessibility library" +msgstr "" + +#: gnu/packages/gtk.scm:804 +msgid "" +"ATKmm provides a C++ programming interface to the ATK accessibility\n" +"toolkit." +msgstr "" + +#: gnu/packages/gtk.scm:830 +msgid "C++ interface to the GTK+ graphical user interface library" +msgstr "" + +#: gnu/packages/gtk.scm:832 +msgid "" +"gtkmm is the official C++ interface for the popular GUI library GTK+.\n" +"Highlights include typesafe callbacks, and a comprehensive set of widgets that\n" +"are easily extensible via inheritance. You can create user interfaces either\n" +"in code or with the Glade User Interface designer, using libglademm. There's\n" +"extensive documentation, including API reference and a tutorial." +msgstr "" + +#: gnu/packages/gtk.scm:888 +msgid "Python bindings for cairo" +msgstr "" + +#: gnu/packages/gtk.scm:890 +msgid "Pycairo is a set of Python bindings for the Cairo graphics library." +msgstr "" + +#: gnu/packages/gtk.scm:964 +msgid "Python bindings for GTK+" +msgstr "" + +#: gnu/packages/gtk.scm:966 +msgid "" +"PyGTK allows you to write full featured GTK programs in Python. It is\n" +"targetted at GTK 2.x, and can be used in conjunction with gnome-python to\n" +"write GNOME applications." +msgstr "" + +#: gnu/packages/gtk.scm:997 +msgid "Library for minimalistic gtk+3 user interfaces" +msgstr "" + +#: gnu/packages/gtk.scm:998 +msgid "" +"Girara is a library that implements a user interface that\n" +"focuses on simplicity and minimalism. Currently based on GTK+, a\n" +"cross-platform widget toolkit, it provides an interface that focuses on three\n" +"main components: a so-called view widget that represents the actual\n" +"application, an input bar that is used to execute commands of the\n" +"application and the status bar which provides the user with current\n" +"information." +msgstr "" + +#: gnu/packages/gtk.scm:1041 +msgid "Documentation generator from C source code" +msgstr "" + +#: gnu/packages/gtk.scm:1043 +msgid "" +"GTK-Doc generates API documentation from comments added to C code. It is\n" +"typically used to document the public API of GTK+ and GNOME libraries, but it\n" +"can also be used to document application code." +msgstr "" + +#: gnu/packages/guile.scm:107 gnu/packages/guile.scm:174 +msgid "Scheme implementation intended especially for extensions" +msgstr "" + +#: gnu/packages/guile.scm:109 gnu/packages/guile.scm:176 +msgid "" +"Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n" +"official extension language of the GNU system. It is an implementation of\n" +"the Scheme language which can be easily embedded in other applications to\n" +"provide a convenient means of extending the functionality of the application\n" +"without requiring the source code to be rewritten." +msgstr "" + +#: gnu/packages/guile.scm:217 +msgid "Snapshot of what will become version 2.2 of GNU Guile" +msgstr "" + +#: gnu/packages/guile.scm:264 +msgid "Framework for building readers for GNU Guile" +msgstr "" + +#: gnu/packages/guile.scm:266 +msgid "" +"Guile-Reader is a simple framework for building readers for GNU Guile.\n" +"\n" +"The idea is to make it easy to build procedures that extend Guile’s read\n" +"procedure. Readers supporting various syntax variants can easily be written,\n" +"possibly by re-using existing “token readers” of a standard Scheme\n" +"readers. For example, it is used to implement Skribilo’s R5RS-derived\n" +"document syntax.\n" +"\n" +"Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n" +"hopefully more powerful and flexible (for instance, one may instantiate as\n" +"many readers as needed)." +msgstr "" + +#: gnu/packages/guile.scm:311 +msgid "Guile bindings to ncurses" +msgstr "" + +#: gnu/packages/guile.scm:313 +msgid "" +"guile-ncurses provides Guile language bindings for the ncurses\n" +"library." +msgstr "" + +#: gnu/packages/guile.scm:333 +msgid "Run jobs at scheduled times" +msgstr "" + +#: gnu/packages/guile.scm:335 +msgid "" +"GNU Mcron is a complete replacement for Vixie cron. It is used to run\n" +"tasks on a schedule, such as every hour or every Monday. Mcron is written in\n" +"Guile, so its configuration can be written in Scheme; the original cron\n" +"format is also supported." +msgstr "" + +#: gnu/packages/guile.scm:363 +msgid "Collection of useful Guile Scheme modules" +msgstr "" + +#: gnu/packages/guile.scm:365 +msgid "" +"Guile-Lib is intended as an accumulation place for pure-scheme Guile\n" +"modules, allowing for people to cooperate integrating their generic Guile\n" +"modules into a coherent library. Think \"a down-scaled, limited-scope CPAN\n" +"for Guile\"." +msgstr "" + +#: gnu/packages/guile.scm:396 +msgid "JSON module for Guile" +msgstr "" + +#: gnu/packages/guile.scm:398 +msgid "" +"Guile-json supports parsing and building JSON documents according to the\n" +"http:://json.org specification. These are the main features:\n" +"- Strictly complies to http://json.org specification.\n" +"- Build JSON documents programmatically via macros.\n" +"- Unicode support for strings.\n" +"- Allows JSON pretty printing." +msgstr "" + +#: gnu/packages/guile.scm:468 +msgid "MiniKanren declarative logic system, packaged for Guile" +msgstr "" + +#: gnu/packages/guile.scm:470 +msgid "" +"MiniKanren is a relational programming extension to the Scheme\n" +"programming Language, written as a smaller version of Kanren suitable for\n" +"pedagogical purposes. It is featured in the book, The Reasoned Schemer,\n" +"written by Dan Friedman, William Byrd, and Oleg Kiselyov.\n" +"\n" +"This is Ian Price's r6rs packaged version of miniKanren, which deviates\n" +"slightly from miniKanren mainline.\n" +"\n" +"See http://minikanren.org/ for more on miniKanren generally." +msgstr "" + +#: gnu/packages/guile.scm:540 +msgid "Guile bindings to the GDBM library via Guile's FFI" +msgstr "" + +#: gnu/packages/guile.scm:542 +msgid "" +"Guile bindings to the GDBM key-value storage system, using\n" +"Guile's foreign function interface." +msgstr "" + +#: gnu/packages/guile.scm:560 +msgid "Functional static site generator" +msgstr "" + +#: gnu/packages/guile.scm:561 +msgid "" +"Haunt is a static site generator written in Guile\n" +"Scheme. Haunt features a functional build system and an extensible\n" +"interface for reading articles in any format." +msgstr "" + +#: gnu/packages/guile.scm:591 +msgid "Redis client library for Guile" +msgstr "" + +#: gnu/packages/guile.scm:592 +msgid "" +"Guile-redis provides a Scheme interface to the Redis\n" +"key-value cache and store." +msgstr "" + +#: gnu/packages/guile.scm:666 +msgid "wisp is a whitespace to lisp syntax for Guile" +msgstr "" + +#: gnu/packages/guile.scm:667 +msgid "" +"wisp is a syntax for Guile which provides a Python-like\n" +"whitespace-significant language. It may be easier on the eyes for some\n" +"users and in some situations." +msgstr "" + +#: gnu/packages/imagemagick.scm:99 +msgid "Create, edit, compose, or convert bitmap images" +msgstr "" + +#: gnu/packages/imagemagick.scm:101 +msgid "" +"ImageMagick® is a software suite to create, edit, compose, or convert\n" +"bitmap images. It can read and write images in a variety of formats (over 100)\n" +"including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,\n" +"and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and\n" +"transform images, adjust image colors, apply various special effects, or draw\n" +"text, lines, polygons, ellipses and Bézier curves." +msgstr "" + +#: gnu/packages/imagemagick.scm:145 +msgid "Perl interface to ImageMagick" +msgstr "" + +#: gnu/packages/imagemagick.scm:146 +msgid "" +"This Perl extension allows the reading, manipulation and\n" +"writing of a large number of image file formats using the ImageMagick library.\n" +"Use it to create, edit, compose, or convert bitmap images from within a Perl\n" +"script." +msgstr "" + +#: gnu/packages/image.scm:69 +msgid "Library for handling PNG files" +msgstr "" + +#: gnu/packages/image.scm:71 +msgid "" +"Libpng is the official PNG (Portable Network Graphics) reference\n" +"library. It supports almost all PNG features and is extensible." +msgstr "" + +#: gnu/packages/image.scm:87 +msgid "Library for handling JPEG files" +msgstr "" + +#: gnu/packages/image.scm:89 +msgid "" +"Libjpeg implements JPEG image encoding, decoding, and transcoding.\n" +"JPEG is a standardized compression method for full-color and gray-scale\n" +"images.\n" +"The included programs provide conversion between the JPEG format and\n" +"image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats." +msgstr "" + +#: gnu/packages/image.scm:128 +msgid "Library for handling TIFF files" +msgstr "" + +#: gnu/packages/image.scm:130 +msgid "" +"Libtiff provides support for the Tag Image File Format (TIFF), a format\n" +"used for storing image data.\n" +"Included are a library, libtiff, for reading and writing TIFF and a small\n" +"collection of tools for doing simple manipulations of TIFF images." +msgstr "" + +#: gnu/packages/image.scm:173 +msgid "Library for reading images in the Microsoft WMF format" +msgstr "" + +#: gnu/packages/image.scm:175 +msgid "" +"libwmf is a library for reading vector images in Microsoft's native\n" +"Windows Metafile Format (WMF) and for either (a) displaying them in, e.g., an X\n" +"window; or (b) converting them to more standard/free file formats such as, e.g.,\n" +"the W3C's XML-based Scaleable Vector Graphic (SVG) format." +msgstr "" + +#: gnu/packages/image.scm:233 +msgid "Library and tools for image processing and analysis" +msgstr "" + +#: gnu/packages/image.scm:235 +msgid "" +"Leptonica is a C library and set of command-line tools for efficient\n" +"image processing and image analysis operations. It supports rasterop, affine\n" +"transformations, binary and grayscale morphology, rank order, and convolution,\n" +"seedfill and connected components, image transformations combining changes in\n" +"scale and pixel depth, and pixelwise masking, blending, enhancement, and\n" +"arithmetic ops." +msgstr "" + +#: gnu/packages/image.scm:258 +msgid "Decoder of the JBIG2 image compression format" +msgstr "" + +#: gnu/packages/image.scm:260 +msgid "" +"JBIG2 is designed for lossy or lossless encoding of 'bilevel' (1-bit\n" +"monochrome) images at moderately high resolution, and in particular scanned\n" +"paper documents. In this domain it is very efficient, offering compression\n" +"ratios on the order of 100:1.\n" +"\n" +"This is a decoder only implementation, and currently is in the alpha\n" +"stage, meaning it doesn't completely work yet. However, it is\n" +"maintaining parity with available encoders, so it is useful for real\n" +"work." +msgstr "" + +#: gnu/packages/image.scm:295 +msgid "JPEG 2000 codec" +msgstr "" + +#: gnu/packages/image.scm:297 +msgid "" +"The OpenJPEG library is a JPEG 2000 codec written in C. It has\n" +"been developed in order to promote the use of JPEG 2000, the new\n" +"still-image compression standard from the Joint Photographic Experts\n" +"Group (JPEG).\n" +"\n" +"In addition to the basic codec, various other features are under\n" +"development, among them the JP2 and MJ2 (Motion JPEG 2000) file formats,\n" +"an indexing tool useful for the JPIP protocol, JPWL-tools for\n" +"error-resilience, a Java-viewer for j2k-images, ..." +msgstr "" + +#: gnu/packages/image.scm:376 +msgid "Tools and library for working with GIF images" +msgstr "" + +#: gnu/packages/image.scm:378 +msgid "" +"GIFLIB is a library for reading and writing GIF images. It is API and\n" +"ABI compatible with libungif which was in wide use while the LZW compression\n" +"algorithm was patented. Tools are also included to convert, manipulate,\n" +"compose, and analyze GIF images." +msgstr "" + +#: gnu/packages/image.scm:399 +msgid "GIF decompression library" +msgstr "GIF-dekomprimeringsbibliotek" + +#: gnu/packages/image.scm:401 +msgid "libungif is the old GIF decompression library by the GIFLIB project." +msgstr "libungif er det gamle GIF-dekomprimeringsbibliotek af GIFLIB-projektet." + +#: gnu/packages/image.scm:430 +msgid "Loading, saving, rendering and manipulating image files" +msgstr "Indlæs, gem, optegn og manipuler billedfiler" + +#: gnu/packages/image.scm:432 +msgid "" +"Imlib2 is a library that does image file loading and saving as well as\n" +"rendering, manipulation, arbitrary polygon support, etc.\n" +"\n" +"It does ALL of these operations FAST. Imlib2 also tries to be highly\n" +"intelligent about doing them, so writing naive programs can be done easily,\n" +"without sacrificing speed.\n" +"\n" +"This is a complete rewrite over the Imlib 1.x series. The architecture is\n" +"more modular, simple, and flexible." +msgstr "" + +#: gnu/packages/image.scm:460 +msgid "Wrapper library for imlib2" +msgstr "" + +#: gnu/packages/image.scm:462 +msgid "" +"Giblib is a simple library which wraps imlib2's context API, avoiding\n" +"all the context_get/set calls, adds fontstyles to the truetype renderer and\n" +"supplies a generic doubly-linked list and some string functions." +msgstr "" + +#: gnu/packages/image.scm:502 +msgid "Library for handling popular graphics image formats" +msgstr "" + +#: gnu/packages/image.scm:504 +msgid "" +"FreeImage is a library for developers who would like to support popular\n" +"graphics image formats like PNG, BMP, JPEG, TIFF and others." +msgstr "" + +#: gnu/packages/image.scm:554 +msgid "Computer vision library" +msgstr "" + +#: gnu/packages/image.scm:556 +msgid "" +"VIGRA stands for Vision with Generic Algorithms. It is an image\n" +"processing and analysis library that puts its main emphasis on customizable\n" +"algorithms and data structures. It is particularly strong for\n" +"multi-dimensional image processing." +msgstr "" + +#: gnu/packages/image.scm:587 +msgid "Lossless and lossy image compression" +msgstr "" + +#: gnu/packages/image.scm:589 +msgid "" +"WebP is a new image format that provides lossless and lossy compression\n" +"for images. WebP lossless images are 26% smaller in size compared to\n" +"PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at\n" +"equivalent SSIM index. WebP supports lossless transparency (also known as\n" +"alpha channel) with just 22% additional bytes. Transparency is also supported\n" +"with lossy compression and typically provides 3x smaller file sizes compared\n" +"to PNG when lossy compression is acceptable for the red/green/blue color\n" +"channels." +msgstr "" + +#: gnu/packages/image.scm:617 +msgid "Library for handling MNG files" +msgstr "" + +#: gnu/packages/image.scm:619 +msgid "Libmng is the MNG (Multiple-image Network Graphics) reference library." +msgstr "" + +#: gnu/packages/inkscape.scm:84 +msgid "Vector graphics editor" +msgstr "" + +#: gnu/packages/inkscape.scm:85 +msgid "" +"Inkscape is a vector graphics editor. What sets Inkscape\n" +"apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,\n" +"as the native format." +msgstr "" + +#: gnu/packages/jemalloc.scm:47 +msgid "General-purpose scalable concurrent malloc implementation" +msgstr "" + +#: gnu/packages/jemalloc.scm:49 +msgid "" +"This library providing a malloc(3) implementation that emphasizes\n" +"fragmentation avoidance and scalable concurrency support." +msgstr "" + +#: gnu/packages/key-mon.scm:65 +msgid "Show keyboard and mouse status" +msgstr "" + +#: gnu/packages/key-mon.scm:67 +msgid "" +"The key-mon utility displays the current keyboard and mouse status.\n" +"This is useful for teaching and screencasts." +msgstr "" + +#: gnu/packages/less.scm:41 +msgid "Paginator for terminals" +msgstr "" + +#: gnu/packages/less.scm:43 +msgid "" +"GNU less is a pager, a program that allows you to view large amounts\n" +"of text in page-sized chunks. Unlike traditional pagers, it allows both\n" +"backwards and forwards movement through the document. It also does not have\n" +"to read the entire input file before starting, so it starts faster than most\n" +"text editors." +msgstr "" + +#: gnu/packages/lesstif.scm:47 +msgid "Clone of the Motif toolkit for the X window system" +msgstr "" + +#: gnu/packages/lesstif.scm:48 +msgid "Clone of the Motif toolkit for the X window system." +msgstr "" + +#: gnu/packages/libreoffice.scm:85 +msgid "General purpose formula parser and interpreter" +msgstr "" + +#: gnu/packages/libreoffice.scm:86 +msgid "" +"Ixion is a library for calculating the results of formula\n" +"expressions stored in multiple named targets, or \"cells\". The cells can\n" +"be referenced from each other, and the library takes care of resolving\n" +"their dependencies automatically upon calculation." +msgstr "" + +#: gnu/packages/libreoffice.scm:111 +msgid "File import filter library for spreadsheet documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:112 +msgid "" +"Orcus is a library that provides a collection of standalone\n" +"file processing filters. It is currently focused on providing filters for\n" +"spreadsheet documents. The library includes import filters for\n" +"Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet,\n" +"Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for\n" +"CSV, CSS and XML." +msgstr "" + +#: gnu/packages/libreoffice.scm:143 +msgid "Document importer for office suites" +msgstr "" + +#: gnu/packages/libreoffice.scm:144 +msgid "" +"Librevenge is a base library for writing document import\n" +"filters. It has interfaces for text documents, vector graphics,\n" +"spreadsheets and presentations." +msgstr "" + +#: gnu/packages/libreoffice.scm:169 +msgid "Library for importing WordPerfect documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:170 +msgid "" +"Libwpd is a C++ library designed to help process\n" +"WordPerfect documents. It is most commonly used to import such documents\n" +"into other word processors." +msgstr "" + +#: gnu/packages/libreoffice.scm:202 +msgid "Library for import of reflowable e-book formats" +msgstr "" + +#: gnu/packages/libreoffice.scm:203 +msgid "" +"Libe-book is a library and a set of tools for reading and\n" +"converting various reflowable e-book formats. Currently supported are:\n" +"Broad Band eBook, eReader .pdb, FictionBook v. 2 (including zipped files),\n" +"PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled\n" +"cellphones), TCR (simple compressed text format), TealDoc, zTXT,\n" +"ZVR (simple compressed text format)." +msgstr "" + +#: gnu/packages/libreoffice.scm:232 +msgid "Library and tools for the WordPerfect Graphics format" +msgstr "" + +#: gnu/packages/libreoffice.scm:233 +msgid "" +"The libwpg project provides a library and tools for\n" +"working with graphics in the WPG (WordPerfect Graphics) format." +msgstr "" + +#: gnu/packages/libreoffice.scm:273 +msgid "CMIS client library" +msgstr "" + +#: gnu/packages/libreoffice.scm:274 +msgid "" +"LibCMIS is a C++ client library for the CMIS interface. It\n" +"allows C++ applications to connect to any ECM behaving as a CMIS server such\n" +"as Alfresco or Nuxeo." +msgstr "" + +#: gnu/packages/libreoffice.scm:305 +msgid "Library for parsing the AbiWord format" +msgstr "" + +#: gnu/packages/libreoffice.scm:306 +msgid "" +"Libabw is a library that parses the file format of\n" +"AbiWord documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:336 +msgid "Library for parsing the CorelDRAW format" +msgstr "" + +#: gnu/packages/libreoffice.scm:337 +msgid "" +"Libcdr is a library that parses the file format of\n" +"CorelDRAW documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:366 +msgid "Library for parsing the Apple Keynote format" +msgstr "" + +#: gnu/packages/libreoffice.scm:367 +msgid "" +"Libetonyek is a library that parses the file format of\n" +"Apple Keynote documents. It currently supports Keynote versions 2 to 5." +msgstr "" + +#: gnu/packages/libreoffice.scm:384 +msgid "Text Categorization library" +msgstr "" + +#: gnu/packages/libreoffice.scm:385 +msgid "" +"Libexttextcat is an N-Gram-Based Text Categorization\n" +"library primarily intended for language guessing." +msgstr "" + +#: gnu/packages/libreoffice.scm:411 +msgid "Library for parsing the FreeHand format" +msgstr "" + +#: gnu/packages/libreoffice.scm:412 +msgid "" +"Libfreehand is a library that parses the file format of\n" +"Aldus/Macromedia/Adobe FreeHand documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:438 +msgid "Library for parsing the Microsoft Publisher format" +msgstr "" + +#: gnu/packages/libreoffice.scm:439 +msgid "" +"Libmspub is a library that parses the file format of\n" +"Microsoft Publisher documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:467 +msgid "Library for parsing the PageMaker format" +msgstr "" + +#: gnu/packages/libreoffice.scm:468 +msgid "" +"Libpagemaker is a library that parses the file format of\n" +"Aldus/Adobe PageMaker documents. Currently it only understands documents\n" +"created by PageMaker version 6.x and 7." +msgstr "" + +#: gnu/packages/libreoffice.scm:503 +msgid "Library for parsing the Microsoft Visio format" +msgstr "" + +#: gnu/packages/libreoffice.scm:504 +msgid "" +"Libvisio is a library that parses the file format of\n" +"Microsoft Visio documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:532 +msgid "ODF (Open Document Format) library" +msgstr "" + +#: gnu/packages/libreoffice.scm:533 +msgid "" +"Libodfgen is a library for generating documents in the\n" +"Open Document Format (ODF). It provides generator implementations for all\n" +"document interfaces supported by librevenge:\n" +"text documents, vector drawings, presentations and spreadsheets." +msgstr "" + +#: gnu/packages/libreoffice.scm:563 +msgid "Import library for some old Macintosh text documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:564 +msgid "" +"Libmwaw contains some import filters for old Macintosh\n" +"text documents (MacWrite, ClarisWorks, ... ) and for some graphics and\n" +"spreadsheet documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:593 +msgid "Import library for Microsoft Works text documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:594 +msgid "" +"Libwps is a library for importing files in the Microsoft\n" +"Works word processor file format." +msgstr "" + +#: gnu/packages/libreoffice.scm:612 +msgid "" +"Hunspell is a spell checker and morphological analyzer\n" +"library and program designed for languages with rich morphology and complex\n" +"word compounding or character encoding." +msgstr "" + +#: gnu/packages/libreoffice.scm:633 +msgid "Hyphenation library" +msgstr "" + +#: gnu/packages/libreoffice.scm:634 +msgid "" +"Hyphen is a hyphenation library using TeX hyphenation\n" +"patterns, which are pre-processed by a perl script." +msgstr "" + +#: gnu/packages/libreoffice.scm:657 +msgid "Thesaurus" +msgstr "" + +#: gnu/packages/libreoffice.scm:658 +msgid "" +"MyThes is a simple thesaurus that uses a structured text\n" +"data file and an index file with binary search to look up words and phrases\n" +"and to return information on pronunciations, meanings and synonyms." +msgstr "" + +#: gnu/packages/libreoffice.scm:822 +msgid "Office suite" +msgstr "" + +#: gnu/packages/libreoffice.scm:823 +msgid "" +"LibreOffice is a comprehensive office suite. It contains\n" +"a number of components: Writer, a word processor; Calc, a spreadsheet\n" +"application; Impress, a presentation engine; Draw, a drawing and\n" +"flowcharting application; Base, a database and database frontend;\n" +"Math for editing mathematics." +msgstr "" + +#: gnu/packages/linux.scm:149 +msgid "GNU Linux-Libre kernel headers" +msgstr "" + +#: gnu/packages/linux.scm:150 +msgid "Headers of the Linux-Libre kernel." +msgstr "" + +#: gnu/packages/linux.scm:181 +msgid "Tools for loading and managing Linux kernel modules" +msgstr "" + +#: gnu/packages/linux.scm:183 +msgid "" +"Tools for loading and managing Linux kernel modules, such as `modprobe',\n" +"`insmod', `lsmod', and more." +msgstr "" + +#: gnu/packages/linux.scm:311 +msgid "100% free redistribution of a cleaned Linux kernel" +msgstr "" + +#: gnu/packages/linux.scm:313 +msgid "" +"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.\n" +"It has been modified to remove all non-free binary blobs." +msgstr "" + +#: gnu/packages/linux.scm:356 +msgid "Pluggable authentication modules for Linux" +msgstr "" + +#: gnu/packages/linux.scm:358 +msgid "" +"A *Free* project to implement OSF's RFC 86.0.\n" +"Pluggable authentication modules are small shared object files that can\n" +"be used through the PAM API to perform tasks, like authenticating a user\n" +"at login. Local and dynamic reconfiguration are its key features." +msgstr "" + +#: gnu/packages/linux.scm:385 +msgid "Small utilities that use the proc filesystem" +msgstr "" + +#: gnu/packages/linux.scm:387 +msgid "" +"This PSmisc package is a set of some small useful utilities that\n" +"use the proc filesystem. We're not about changing the world, but\n" +"providing the system administrator with some help in common tasks." +msgstr "" + +#: gnu/packages/linux.scm:449 +msgid "Collection of utilities for the Linux kernel" +msgstr "" + +#: gnu/packages/linux.scm:451 +msgid "Util-linux is a random collection of utilities for the Linux kernel." +msgstr "" + +#: gnu/packages/linux.scm:518 +msgid "Utilities that give information about processes" +msgstr "" + +#: gnu/packages/linux.scm:520 +msgid "" +"Procps is the package that has a bunch of small useful utilities\n" +"that give information about processes using the Linux /proc file system.\n" +"The package includes the programs ps, top, vmstat, w, kill, free,\n" +"slabtop, and skill." +msgstr "" + +#: gnu/packages/linux.scm:545 +msgid "Tools for working with USB devices, such as lsusb" +msgstr "" + +#: gnu/packages/linux.scm:547 +msgid "Tools for working with USB devices, such as lsusb." +msgstr "" + +#: gnu/packages/linux.scm:621 +msgid "Creating and checking ext2/ext3/ext4 file systems" +msgstr "" + +#: gnu/packages/linux.scm:623 +msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems." +msgstr "" + +#: gnu/packages/linux.scm:665 +msgid "Statically-linked fsck.* commands from e2fsprogs" +msgstr "" + +#: gnu/packages/linux.scm:667 +msgid "" +"This package provides statically-linked command of fsck.ext[234] taken\n" +"from the e2fsprogs package. It is meant to be used in initrds." +msgstr "" + +#: gnu/packages/linux.scm:686 +msgid "Recover deleted files from ext2/3/4 partitions" +msgstr "" + +#: gnu/packages/linux.scm:688 +msgid "" +"Extundelete is a set of tools that can recover deleted files from an\n" +"ext3 or ext4 partition." +msgstr "" + +#: gnu/packages/linux.scm:720 +msgid "Zero non-allocated regions in ext2/ext3/ext4 file systems" +msgstr "" + +#: gnu/packages/linux.scm:722 +msgid "" +"The zerofree command scans the free blocks in an ext2 file system and\n" +"fills any non-zero blocks with zeroes. This is a useful way to make disk\n" +"images more compressible." +msgstr "" + +#: gnu/packages/linux.scm:741 +msgid "System call tracer for Linux" +msgstr "" + +#: gnu/packages/linux.scm:743 +msgid "" +"strace is a system call tracer, i.e. a debugging tool which prints out a\n" +"trace of all the system calls made by a another process/program." +msgstr "" + +#: gnu/packages/linux.scm:764 +msgid "Library call tracer for Linux" +msgstr "" + +#: gnu/packages/linux.scm:766 +msgid "" +"ltrace intercepts and records dynamic library calls which are called by\n" +"an executed process and the signals received by that process. It can also\n" +"intercept and print the system calls executed by the program." +msgstr "" + +#: gnu/packages/linux.scm:786 +msgid "The Advanced Linux Sound Architecture libraries" +msgstr "" + +#: gnu/packages/linux.scm:788 gnu/packages/linux.scm:830 +msgid "" +"The Advanced Linux Sound Architecture (ALSA) provides audio and\n" +"MIDI functionality to the Linux-based operating system." +msgstr "" + +#: gnu/packages/linux.scm:828 +msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)" +msgstr "" + +#: gnu/packages/linux.scm:855 +msgid "Program to configure the Linux IP packet filtering rules" +msgstr "" + +#: gnu/packages/linux.scm:857 +msgid "" +"iptables is the userspace command line program used to configure the\n" +"Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards\n" +"system administrators. Since Network Address Translation is also configured\n" +"from the packet filter ruleset, iptables is used for this, too. The iptables\n" +"package also includes ip6tables. ip6tables is used for configuring the IPv6\n" +"packet filter." +msgstr "" + +#: gnu/packages/linux.scm:905 +msgid "Utilities for controlling TCP/IP networking and traffic in Linux" +msgstr "" + +#: gnu/packages/linux.scm:907 +msgid "" +"Iproute2 is a collection of utilities for controlling TCP/IP\n" +"networking and traffic with the Linux kernel.\n" +"\n" +"Most network configuration manuals still refer to ifconfig and route as the\n" +"primary network configuration tools, but ifconfig is known to behave\n" +"inadequately in modern network environments. They should be deprecated, but\n" +"most distros still include them. Most network configuration systems make use\n" +"of ifconfig and thus provide a limited feature set. The /etc/net project aims\n" +"to support most modern network technologies, as it doesn't use ifconfig and\n" +"allows a system administrator to make use of all iproute2 features, including\n" +"traffic control.\n" +"\n" +"iproute2 is usually shipped in a package called iproute or iproute2 and\n" +"consists of several tools, of which the most important are ip and tc. ip\n" +"controls IPv4 and IPv6 configuration and tc stands for traffic control. Both\n" +"tools print detailed usage messages and are accompanied by a set of\n" +"manpages." +msgstr "" + +#: gnu/packages/linux.scm:1015 +msgid "Tools for controlling the network subsystem in Linux" +msgstr "" + +#: gnu/packages/linux.scm:1017 +msgid "" +"This package includes the important tools for controlling the network\n" +"subsystem of the Linux kernel. This includes arp, hostname, ifconfig,\n" +"netstat, rarp and route. Additionally, this package contains utilities\n" +"relating to particular network hardware types (plipconfig, slattach) and\n" +"advanced aspects of IP configuration (iptunnel, ipmaddr)." +msgstr "" + +#: gnu/packages/linux.scm:1054 +msgid "Library for working with POSIX capabilities" +msgstr "" + +#: gnu/packages/linux.scm:1056 +msgid "" +"Libcap2 provides a programming interface to POSIX capabilities on\n" +"Linux-based operating systems." +msgstr "" + +#: gnu/packages/linux.scm:1099 +msgid "Manipulate Ethernet bridges" +msgstr "" + +#: gnu/packages/linux.scm:1101 +msgid "" +"Utilities for Linux's Ethernet bridging facilities. A bridge is a way\n" +"to connect two Ethernet segments together in a protocol independent way.\n" +"Packets are forwarded based on Ethernet address, rather than IP address (like\n" +"a router). Since forwarding is done at Layer 2, all protocols can go\n" +"transparently through a bridge." +msgstr "" + +#: gnu/packages/linux.scm:1123 +msgid "NetLink protocol library suite" +msgstr "" + +#: gnu/packages/linux.scm:1125 +msgid "" +"The libnl suite is a collection of libraries providing APIs to netlink\n" +"protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarily\n" +"between the kernel and user space processes. It was designed to be a more\n" +"flexible successor to ioctl to provide mainly networking related kernel\n" +"configuration and monitoring interfaces." +msgstr "" + +#: gnu/packages/linux.scm:1155 +msgid "Tool for configuring wireless devices" +msgstr "" + +#: gnu/packages/linux.scm:1157 +msgid "" +"iw is a new nl80211 based CLI configuration utility for wireless\n" +"devices. It replaces 'iwconfig', which is deprecated." +msgstr "" + +#: gnu/packages/linux.scm:1183 +msgid "Analyze power consumption on Intel-based laptops" +msgstr "" + +#: gnu/packages/linux.scm:1185 +msgid "" +"PowerTOP is a Linux tool to diagnose issues with power consumption and\n" +"power management. In addition to being a diagnostic tool, PowerTOP also has\n" +"an interactive mode where the user can experiment various power management\n" +"settings for cases where the operating system has not enabled these\n" +"settings." +msgstr "" + +#: gnu/packages/linux.scm:1207 +msgid "Audio mixer for X and the console" +msgstr "" + +#: gnu/packages/linux.scm:1209 +msgid "" +"Aumix adjusts an audio mixer from X, the console, a terminal,\n" +"the command line or a script." +msgstr "" + +#: gnu/packages/linux.scm:1233 +msgid "Displays the IO activity of running processes" +msgstr "" + +#: gnu/packages/linux.scm:1235 +msgid "" +"Iotop is a Python program with a top like user interface to show the\n" +"processes currently causing I/O." +msgstr "" + +#: gnu/packages/linux.scm:1287 +msgid "Support file systems implemented in user space" +msgstr "" + +#: gnu/packages/linux.scm:1289 +msgid "" +"As a consequence of its monolithic design, file system code for Linux\n" +"normally goes into the kernel itself---which is not only a robustness issue,\n" +"but also an impediment to system extensibility. FUSE, for \"file systems in\n" +"user space\", is a kernel module and user-space library that tries to address\n" +"part of this problem by allowing users to run file system implementations as\n" +"user-space processes." +msgstr "" + +#: gnu/packages/linux.scm:1314 +msgid "User-space union file system" +msgstr "" + +#: gnu/packages/linux.scm:1316 +msgid "" +"UnionFS-FUSE is a flexible union file system implementation in user\n" +"space, using the FUSE library. Mounting a union file system allows you to\n" +"\"aggregate\" the contents of several directories into a single mount point.\n" +"UnionFS-FUSE additionally supports copy-on-write." +msgstr "" + +#: gnu/packages/linux.scm:1341 +msgid "User-space union file system (statically linked)" +msgstr "" + +#: gnu/packages/linux.scm:1383 +msgid "Mount remote file systems over SSH" +msgstr "" + +#: gnu/packages/linux.scm:1385 +msgid "" +"This is a file system client based on the SSH File Transfer Protocol.\n" +"Since most SSH servers already support this protocol it is very easy to set\n" +"up: on the server side there's nothing to do; on the client side mounting the\n" +"file system is as easy as logging into the server with an SSH client." +msgstr "" + +#: gnu/packages/linux.scm:1433 +msgid "Tools for non-uniform memory access (NUMA) machines" +msgstr "" + +#: gnu/packages/linux.scm:1435 +msgid "" +"NUMA stands for Non-Uniform Memory Access, in other words a system whose\n" +"memory is not all in one place. The numactl program allows you to run your\n" +"application program on specific CPU's and memory nodes. It does this by\n" +"supplying a NUMA memory policy to the operating system before running your\n" +"program.\n" +"\n" +"The package contains other commands, such as numademo, numastat and memhog.\n" +"The numademo command provides a quick overview of NUMA performance on your\n" +"system." +msgstr "" + +#: gnu/packages/linux.scm:1498 +msgid "Linux keyboard utilities and keyboard maps" +msgstr "" + +#: gnu/packages/linux.scm:1500 +msgid "" +"This package contains keytable files and keyboard utilities compatible\n" +"for systems using the Linux kernel. This includes commands such as\n" +"'loadkeys', 'setfont', 'kbdinfo', and 'chvt'." +msgstr "" + +#: gnu/packages/linux.scm:1519 +msgid "Monitor file accesses" +msgstr "" + +#: gnu/packages/linux.scm:1521 +msgid "" +"The inotify-tools packages provides a C library and command-line tools\n" +"to use Linux' inotify mechanism, which allows file accesses to be monitored." +msgstr "" + +#: gnu/packages/linux.scm:1559 +msgid "Kernel module tools" +msgstr "" + +#: gnu/packages/linux.scm:1560 +msgid "" +"Kmod is a set of tools to handle common tasks with Linux\n" +"kernel modules like insert, remove, list, check properties, resolve\n" +"dependencies and aliases.\n" +"\n" +"These tools are designed on top of libkmod, a library that is shipped with\n" +"kmod. The aim is to be compatible with tools, configurations and indices\n" +"from the module-init-tools project." +msgstr "" + +#: gnu/packages/linux.scm:1631 +msgid "Userspace device management" +msgstr "" + +#: gnu/packages/linux.scm:1632 +msgid "" +"Udev is a daemon which dynamically creates and removes\n" +"device nodes from /dev/, handles hotplug events and loads drivers at boot\n" +"time." +msgstr "" + +#: gnu/packages/linux.scm:1692 +msgid "Logical volume management for Linux" +msgstr "" + +#: gnu/packages/linux.scm:1694 +msgid "" +"LVM2 is the logical volume management tool set for Linux-based systems.\n" +"This package includes the user-space libraries and tools, including the device\n" +"mapper. Kernel components are part of Linux-libre." +msgstr "" + +#: gnu/packages/linux.scm:1730 +msgid "Tools for manipulating Linux Wireless Extensions" +msgstr "" + +#: gnu/packages/linux.scm:1731 +msgid "" +"Wireless Tools are used to manipulate the now-deprecated\n" +"Linux Wireless Extensions; consider using 'iw' instead. The Wireless\n" +"Extension was an interface allowing you to set Wireless LAN specific\n" +"parameters and get the specific stats. It is deprecated in favor the nl80211\n" +"interface." +msgstr "" + +#: gnu/packages/linux.scm:1803 +msgid "Central regulatory domain agent (CRDA) for WiFi" +msgstr "" + +#: gnu/packages/linux.scm:1805 +msgid "" +"The Central Regulatory Domain Agent (CRDA) acts as the udev helper for\n" +"communication between the kernel Linux and user space for regulatory\n" +"compliance." +msgstr "" + +#: gnu/packages/linux.scm:1841 +msgid "Wireless regulatory database" +msgstr "" + +#: gnu/packages/linux.scm:1843 +msgid "" +"This package contains the wireless regulatory database Central\n" +"Regulatory Database Agent (CRDA) daemon. The database contains information on\n" +"country-specific regulations for the wireless spectrum." +msgstr "" + +#: gnu/packages/linux.scm:1914 +msgid "Utilities to read temperature/voltage/fan sensors" +msgstr "" + +#: gnu/packages/linux.scm:1916 +msgid "" +"Lm-sensors is a hardware health monitoring package for Linux. It allows\n" +"you to access information from temperature, voltage, and fan speed sensors.\n" +"It works with most newer systems." +msgstr "" + +#: gnu/packages/linux.scm:1943 +msgid "I2C tools for Linux" +msgstr "" + +#: gnu/packages/linux.scm:1945 +msgid "" +"The i2c-tools package contains a heterogeneous set of I2C tools for\n" +"Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,\n" +"EEPROM decoding scripts, EEPROM programming tools, and a python module for\n" +"SMBus access." +msgstr "" + +#: gnu/packages/linux.scm:1981 +msgid "Hardware health information viewer" +msgstr "" + +#: gnu/packages/linux.scm:1983 +msgid "" +"Xsensors reads data from the libsensors library regarding hardware\n" +"health such as temperature, voltage and fan speed and displays the information\n" +"in a digital read-out." +msgstr "" + +#: gnu/packages/linux.scm:2031 +msgid "Linux profiling with performance counters" +msgstr "" + +#: gnu/packages/linux.scm:2033 +msgid "" +"perf is a tool suite for profiling using hardware performance counters,\n" +"with support in the Linux kernel. perf can instrument CPU performance\n" +"counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable\n" +"of lightweight profiling. This package contains the user-land tools and in\n" +"particular the 'perf' command." +msgstr "" + +#: gnu/packages/linux.scm:2056 +msgid "Simple tool for creating Linux namespace containers" +msgstr "" + +#: gnu/packages/linux.scm:2057 +msgid "" +"pflask is a simple tool for creating Linux namespace\n" +"containers. It can be used for running a command or even booting an OS inside\n" +"an isolated container, created with the help of Linux namespaces. It is\n" +"similar in functionality to chroot, although pflask provides better isolation\n" +"thanks to the use of namespaces." +msgstr "" + +#: gnu/packages/linux.scm:2084 +msgid "Tune hard disk parameters for high performance" +msgstr "" + +#: gnu/packages/linux.scm:2086 +msgid "" +"Get/set device parameters for Linux SATA/IDE drives. It's primary use\n" +"is for enabling irq-unmasking and IDE multiple-mode." +msgstr "" + +#: gnu/packages/linux.scm:2109 +msgid "Tool for enabling and disabling wireless devices" +msgstr "" + +#: gnu/packages/linux.scm:2111 +msgid "" +"rfkill is a simple tool for accessing the rfkill device interface,\n" +"which is used to enable and disable wireless networking devices, typically\n" +"WLAN, Bluetooth and mobile broadband." +msgstr "" + +#: gnu/packages/linux.scm:2130 +msgid "Daemon for delivering ACPI events to user-space programs" +msgstr "" + +#: gnu/packages/linux.scm:2132 +msgid "" +"acpid is designed to notify user-space programs of Advanced\n" +"Configuration and Power Interface (ACPI) events. acpid should be started\n" +"during the system boot, and will run as a background process. When an ACPI\n" +"event is received from the kernel, acpid will examine the list of rules\n" +"specified in /etc/acpi/events and execute the rules that match the event." +msgstr "" + +#: gnu/packages/linux.scm:2154 +msgid "System utilities based on Linux sysfs" +msgstr "" + +#: gnu/packages/linux.scm:2156 +msgid "" +"These are a set of utilities built upon sysfs, a virtual filesystem in\n" +"Linux kernel versions 2.5+ that exposes a system's device tree. The package\n" +"also contains the libsysfs library." +msgstr "" + +#: gnu/packages/linux.scm:2185 +msgid "System utilities based on Linux sysfs (version 1.x)" +msgstr "" + +#: gnu/packages/linux.scm:2208 +msgid "Utilities to get and set CPU frequency on Linux" +msgstr "" + +#: gnu/packages/linux.scm:2210 +msgid "" +"The cpufrequtils suite contains utilities to retrieve CPU frequency\n" +"information, and set the CPU frequency if supported, using the cpufreq\n" +"capabilities of the Linux kernel." +msgstr "" + +#: gnu/packages/linux.scm:2229 +msgid "Interface library for the Linux IEEE1394 drivers" +msgstr "" + +#: gnu/packages/linux.scm:2231 +msgid "" +"Libraw1394 is the only supported interface to the kernel side raw1394 of\n" +"the Linux IEEE-1394 subsystem, which provides direct access to the connected\n" +"1394 buses to user space. Through libraw1394/raw1394, applications can directly\n" +"send to and receive from other nodes without requiring a kernel driver for the\n" +"protocol in question." +msgstr "" + +#: gnu/packages/linux.scm:2255 +msgid "AV/C protocol library for IEEE 1394" +msgstr "" + +#: gnu/packages/linux.scm:2257 +msgid "" +"Libavc1394 is a programming interface to the AV/C specification from\n" +"the 1394 Trade Association. AV/C stands for Audio/Video Control." +msgstr "" + +#: gnu/packages/linux.scm:2279 +msgid "Isochronous streaming media library for IEEE 1394" +msgstr "" + +#: gnu/packages/linux.scm:2281 +msgid "" +"The libiec61883 library provides a higher level API for streaming DV,\n" +"MPEG-2 and audio over Linux IEEE 1394." +msgstr "" + +#: gnu/packages/linux.scm:2321 +msgid "Tool for managing Linux Software RAID arrays" +msgstr "" + +#: gnu/packages/linux.scm:2323 +msgid "" +"mdadm is a tool for managing Linux Software RAID arrays. It can create,\n" +"assemble, report on, and monitor arrays. It can also move spares between raid\n" +"arrays when needed." +msgstr "" + +#: gnu/packages/linux.scm:2350 +msgid "Linux-native asynchronous I/O access library" +msgstr "" + +#: gnu/packages/linux.scm:2352 +msgid "" +"This library enables userspace to use Linux kernel asynchronous I/O\n" +"system calls, important for the performance of databases and other advanced\n" +"applications." +msgstr "" + +#: gnu/packages/linux.scm:2388 +msgid "Linux Bluetooth protocol stack" +msgstr "" + +#: gnu/packages/linux.scm:2390 +msgid "" +"BlueZ provides support for the core Bluetooth layers and protocols. It\n" +"is flexible, efficient and uses a modular implementation." +msgstr "" + +#: gnu/packages/linux.scm:2446 +msgid "Mount exFAT file systems" +msgstr "" + +#: gnu/packages/linux.scm:2448 +msgid "" +"This package provides a FUSE-based file system that provides read and\n" +"write access to exFAT devices." +msgstr "" + +#: gnu/packages/lout.scm:109 +msgid "Document layout system" +msgstr "" + +#: gnu/packages/lout.scm:111 +msgid "" +"The Lout document formatting system reads a high-level description of\n" +"a document similar in style to LaTeX and produces a PostScript or plain text\n" +"output file.\n" +"\n" +"Lout offers an unprecedented range of advanced features, including optimal\n" +"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n" +"inclusion and generation, equation formatting, tables, diagrams, rotation and\n" +"scaling, sorted indexes, bibliographic databases, running headers and\n" +"odd-even pages, automatic cross referencing, multilingual documents including\n" +"hyphenation (most European languages are supported), formatting of computer\n" +"programs, and much more, all ready to use. Furthermore, Lout is easily\n" +"extended with definitions which are very much easier to write than troff of\n" +"TeX macros because Lout is a high-level, purely functional language, the\n" +"outcome of an eight-year research project that went back to the\n" +"beginning." +msgstr "" + +#: gnu/packages/messaging.scm:76 +msgid "Off-the-Record (OTR) Messaging Library and Toolkit" +msgstr "" + +#: gnu/packages/messaging.scm:78 +msgid "" +"OTR allows you to have private conversations over instant messaging by\n" +"providing: (1) Encryption: No one else can read your instant messages. (2)\n" +"Authentication: You are assured the correspondent is who you think it is. (3)\n" +"Deniability: The messages you send do not have digital signatures that are\n" +"checkable by a third party. Anyone can forge messages after a conversation to\n" +"make them look like they came from you. However, during a conversation, your\n" +"correspondent is assured the messages he sees are authentic and\n" +"unmodified. (4) Perfect forward secrecy: If you lose control of your private\n" +"keys, no previous conversation is compromised." +msgstr "" + +#: gnu/packages/messaging.scm:134 +msgid "IRC to instant messaging gateway" +msgstr "" + +#: gnu/packages/messaging.scm:135 +msgid "" +"BitlBee brings IM (instant messaging) to IRC clients, for\n" +"people who have an IRC client running all the time and don't want to run an\n" +"additional IM client. BitlBee currently supports XMPP/Jabber (including\n" +"Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter\n" +"microblogging network (plus all other Twitter API compatible services like\n" +"identi.ca and status.net)." +msgstr "" + +#: gnu/packages/messaging.scm:168 +msgid "Graphical IRC Client" +msgstr "" + +#: gnu/packages/messaging.scm:170 +msgid "" +"HexChat lets you connect to multiple IRC networks at once. The main window\n" +"shows the list of currently connected networks and their channels, the current\n" +"conversation and the list of users. It uses colors to differentiate between\n" +"users and to highlight messages. It checks spelling using available\n" +"dictionaries. HexChat can be extended with multiple addons." +msgstr "" + +#: gnu/packages/messaging.scm:236 +msgid "Lightweight Internet Relay Chat server for small networks" +msgstr "" + +#: gnu/packages/messaging.scm:238 +msgid "" +"ngIRCd is a lightweight Internet Relay Chat server for small or private\n" +"networks. It is easy to configure, can cope with dynamic IP addresses, and\n" +"supports IPv6, SSL-protected connections as well as PAM for authentication." +msgstr "" + +#: gnu/packages/messaging.scm:309 +msgid "Graphical multi-protocol instant messaging client" +msgstr "" + +#: gnu/packages/messaging.scm:311 +msgid "" +"Pidgin is a modular instant messaging client that supports many popular\n" +"chat protocols." +msgstr "" + +#: gnu/packages/messaging.scm:349 +msgid "Off-the-Record Messaging plugin for Pidgin" +msgstr "" + +#: gnu/packages/messaging.scm:351 +msgid "" +"Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant\n" +"messaging client. OTR (Off-the-Record) Messaging allows you to have private\n" +"conversations over instant messaging by providing: (1) Encryption: No one else\n" +"can read your instant messages. (2) Authentication: You are assured the\n" +"correspondent is who you think it is. (3) Deniability: The messages you send\n" +"do not have digital signatures that are checkable by a third party. Anyone\n" +"can forge messages after a conversation to make them look like they came from\n" +"you. However, during a conversation, your correspondent is assured the\n" +"messages he sees are authentic and unmodified. (4) Perfect forward secrecy:\n" +"If you lose control of your private keys, no previous conversation is\n" +"compromised." +msgstr "" + +#: gnu/packages/messaging.scm:391 +msgid "IRC network bouncer" +msgstr "" + +#: gnu/packages/messaging.scm:392 +msgid "" +"ZNC is an IRC network bouncer or BNC. It can detach the\n" +"client from the actual IRC server, and also from selected channels. Multiple\n" +"clients from different locations can connect to a single ZNC account\n" +"simultaneously and therefore appear under the same nickname on IRC." +msgstr "" + +#: gnu/packages/messaging.scm:414 +msgid "Non-blocking Jabber/XMPP module" +msgstr "" + +#: gnu/packages/messaging.scm:416 +msgid "" +"The goal of this python library is to provide a way for Python\n" +"applications to use Jabber/XMPP networks in a non-blocking way. This library\n" +"was initially a fork of xmpppy, but is using non-blocking sockets." +msgstr "" + +#: gnu/packages/messaging.scm:466 +msgid "Jabber (XMPP) client" +msgstr "" + +#: gnu/packages/messaging.scm:467 +msgid "" +"Gajim is a feature-rich and easy to use Jabber/XMPP client.\n" +"Among its features are: a tabbed chat window and single window modes; support\n" +"for group chat (with Multi-User Chat protocol), invitation, chat to group chat\n" +"transformation; audio and video conferences; file transfer; TLS, GPG and\n" +"end-to-end encryption support; XML console." +msgstr "" + +#: gnu/packages/mpd.scm:63 +msgid "Music Player Daemon client library" +msgstr "" + +#: gnu/packages/mpd.scm:64 +msgid "" +"A stable, documented, asynchronous API library for\n" +"interfacing MPD in the C, C++ & Objective C languages." +msgstr "" + +#: gnu/packages/mpd.scm:124 +msgid "Music Player Daemon" +msgstr "" + +#: gnu/packages/mpd.scm:125 +msgid "" +"Music Player Daemon (MPD) is a flexible, powerful,\n" +"server-side application for playing music. Through plugins and libraries it\n" +"can play a variety of sound files while being controlled by its network\n" +"protocol." +msgstr "" + +#: gnu/packages/mpd.scm:148 +msgid "Music Player Daemon client" +msgstr "" + +#: gnu/packages/mpd.scm:149 +msgid "" +"MPC is a minimalist command line interface to MPD, the music\n" +"player daemon." +msgstr "" + +#: gnu/packages/mpd.scm:172 +msgid "Curses Music Player Daemon client" +msgstr "" + +#: gnu/packages/mpd.scm:173 +msgid "" +"ncmpc is a fully featured MPD client, which runs in a\n" +"terminal using ncurses." +msgstr "" + +#: gnu/packages/mpd.scm:211 +msgid "Featureful ncurses based MPD client inspired by ncmpc" +msgstr "" + +#: gnu/packages/mpd.scm:212 +msgid "" +"Ncmpcpp is an mpd client with a UI very similar to ncmpc,\n" +"but it provides new useful features such as support for regular expressions\n" +"for library searches, extended song format, items filtering, the ability to\n" +"sort playlists, and a local filesystem browser." +msgstr "" + +#: gnu/packages/mpd.scm:235 +msgid "MPD client for track scrobbling" +msgstr "" + +#: gnu/packages/mpd.scm:236 +msgid "" +"mpdscribble is a Music Player Daemon client which submits\n" +"information about tracks being played to a scrobbler, such as Libre.FM." +msgstr "" + +#: gnu/packages/netpbm.scm:146 +msgid "Toolkit for manipulation of images" +msgstr "" + +#: gnu/packages/netpbm.scm:148 +msgid "" +"Netpbm is a toolkit for the manipulation of graphic images, including\n" +"the conversion of images between a variety of different formats.\n" +"There are over 300 separate tools in the package including converters for\n" +"about 100 graphics formats." +msgstr "" + +#: gnu/packages/nettle.scm:50 +msgid "C library for low-level cryptographic functionality" +msgstr "" + +#: gnu/packages/nettle.scm:52 +msgid "" +"GNU Nettle is a low-level cryptographic library. It is designed to\n" +"fit in easily in almost any context. It can be easily included in\n" +"cryptographic toolkits for object-oriented languages or in applications\n" +"themselves." +msgstr "" + +#: gnu/packages/networking.scm:52 +msgid "Teredo IPv6 tunneling software" +msgstr "" + +#: gnu/packages/networking.scm:54 +msgid "" +"Miredo is an implementation (client, relay, server) of the Teredo\n" +"specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts\n" +"residing in IPv4-only networks, even when they are behind a NAT device." +msgstr "" + +#: gnu/packages/networking.scm:76 +msgid "Open bidirectional communication channels from the command line" +msgstr "" + +#: gnu/packages/networking.scm:78 +msgid "" +"socat is a relay for bidirectional data transfer between two independent\n" +"data channels---files, pipes, devices, sockets, etc. It can create\n" +"\"listening\" sockets, named pipes, and pseudo terminals.\n" +"\n" +"socat can be used, for instance, as TCP port forwarder, as a shell interface\n" +"to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial\n" +"line, to logically connect serial lines on different computers, or to\n" +"establish a relatively secure environment (su and chroot) for running client\n" +"or server shell scripts with network connections." +msgstr "" + +#: gnu/packages/networking.scm:102 +msgid "Library for message-based applications" +msgstr "" + +#: gnu/packages/networking.scm:104 +msgid "" +"The 0MQ lightweight messaging kernel is a library which extends the\n" +"standard socket interfaces with features traditionally provided by specialized\n" +"messaging middle-ware products. 0MQ sockets provide an abstraction of\n" +"asynchronous message queues, multiple messaging patterns, message\n" +"filtering (subscriptions), seamless access to multiple transport protocols and\n" +"more." +msgstr "" + +#: gnu/packages/networking.scm:125 +msgid "Library for Neighbor Discovery Protocol" +msgstr "" + +#: gnu/packages/networking.scm:127 +msgid "" +"libndp contains a library which provides a wrapper for IPv6 Neighbor\n" +"Discovery Protocol. It also provides a tool named ndptool for sending and\n" +"receiving NDP messages." +msgstr "" + +#: gnu/packages/networking.scm:145 +msgid "Display or change Ethernet device settings" +msgstr "" + +#: gnu/packages/networking.scm:147 +msgid "" +"ethtool can be used to query and change settings such as speed,\n" +"auto-negotiation and checksum offload on many network devices, especially\n" +"Ethernet devices." +msgstr "" + +#: gnu/packages/networking.scm:183 +msgid "Text based network interface status monitor" +msgstr "" + +#: gnu/packages/networking.scm:185 +msgid "" +"IFStatus is a simple, easy-to-use program for displaying commonly\n" +"needed/wanted real-time traffic statistics of multiple network\n" +"interfaces, with a simple and efficient view on the command line. It is\n" +"intended as a substitute for the PPPStatus and EthStatus projects." +msgstr "" + +#: gnu/packages/pdf.scm:102 +msgid "PDF rendering library" +msgstr "" + +#: gnu/packages/pdf.scm:104 +msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base." +msgstr "" + +#: gnu/packages/pdf.scm:113 +msgid "Qt4 frontend for the Poppler PDF rendering library" +msgstr "" + +#: gnu/packages/pdf.scm:146 +msgid "Python bindings for Poppler-Qt4" +msgstr "" + +#: gnu/packages/pdf.scm:148 +msgid "" +"This package provides Python bindings for the Qt4 interface of the\n" +"Poppler PDF rendering library." +msgstr "" + +#: gnu/packages/pdf.scm:195 +msgid "Viewer for PDF files based on the Motif toolkit" +msgstr "" + +#: gnu/packages/pdf.scm:197 +msgid "Xpdf is a viewer for Portable Document Format (PDF) files." +msgstr "" + +#: gnu/packages/pdf.scm:227 +msgid "Comic book support for zathura (libarchive backend)" +msgstr "" + +#: gnu/packages/pdf.scm:228 +msgid "" +"The zathura-cb plugin adds comic book support to zathura\n" +"using libarchive." +msgstr "" + +#: gnu/packages/pdf.scm:258 +msgid "PS support for zathura (libspectre backend)" +msgstr "" + +#: gnu/packages/pdf.scm:259 +msgid "" +"The zathura-ps plugin adds PS support to zathura\n" +"using libspectre." +msgstr "" + +#: gnu/packages/pdf.scm:290 +msgid "DjVu support for zathura (DjVuLibre backend)" +msgstr "" + +#: gnu/packages/pdf.scm:291 +msgid "" +"The zathura-djvu plugin adds DjVu support to zathura\n" +"using the DjVuLibre library." +msgstr "" + +#: gnu/packages/pdf.scm:323 +msgid "PDF support for zathura (poppler backend)" +msgstr "" + +#: gnu/packages/pdf.scm:324 +msgid "" +"The zathura-pdf-poppler plugin adds PDF support to zathura\n" +"by using the poppler rendering engine." +msgstr "" + +#: gnu/packages/pdf.scm:362 +msgid "Lightweight keyboard-driven PDF viewer" +msgstr "" + +#: gnu/packages/pdf.scm:363 +msgid "" +"Zathura is a customizable document viewer. It provides a\n" +"minimalistic interface and an interface that mainly focuses on keyboard\n" +"interaction." +msgstr "" + +#: gnu/packages/pdf.scm:402 +msgid "Tools to work with the PDF file format" +msgstr "" + +#: gnu/packages/pdf.scm:404 +msgid "" +"PoDoFo is a C++ library and set of command-line tools to work with the\n" +"PDF file format. It can parse PDF files and load them into memory, and makes\n" +"it easy to modify them and write the changes to disk. It is primarily useful\n" +"for applications that wish to do lower level manipulation of PDF, such as\n" +"extracting content or merging files." +msgstr "" + +#: gnu/packages/pdf.scm:465 +msgid "Lightweight PDF viewer and toolkit" +msgstr "" + +#: gnu/packages/pdf.scm:467 +msgid "" +"MuPDF is a C library that implements a PDF and XPS parsing and\n" +"rendering engine. It is used primarily to render pages into bitmaps,\n" +"but also provides support for other operations such as searching and\n" +"listing the table of contents and hyperlinks.\n" +"\n" +"The library ships with a rudimentary X11 viewer, and a set of command\n" +"line tools for batch rendering (pdfdraw), rewriting files (pdfclean),\n" +"and examining the file structure (pdfshow)." +msgstr "" + +#: gnu/packages/pdf.scm:507 +msgid "Command-line tools and library for transforming PDF files" +msgstr "" + +#: gnu/packages/pdf.scm:509 +msgid "" +"QPDF is a command-line program that does structural, content-preserving\n" +"transformations on PDF files. It could have been called something like\n" +"pdf-to-pdf. It includes support for merging and splitting PDFs and to\n" +"manipulate the list of pages in a PDF file. It is not a PDF viewer or a\n" +"program capable of converting PDF into other formats." +msgstr "" + +#: gnu/packages/pdf.scm:539 +msgid "Notetaking using a stylus" +msgstr "" + +#: gnu/packages/pdf.scm:541 +msgid "" +"Xournal is an application for notetaking, sketching, keeping a journal\n" +"using a stylus." +msgstr "" + +#: gnu/packages/pem.scm:41 +msgid "Personal expenses manager" +msgstr "" + +#: gnu/packages/pem.scm:43 +msgid "" +"GNU Pem is a simple tool for tracking personal income and\n" +"expenses. It operates from the command line and it stores its data\n" +"in a basic text format in your home directory. It can easily print\n" +"reports of your spending on different expenses via a basic search\n" +"feature." +msgstr "" + +#: gnu/packages/perl.scm:100 +msgid "Implementation of the Perl programming language" +msgstr "" + +#: gnu/packages/perl.scm:102 +msgid "" +"Perl 5 is a highly capable, feature-rich programming language with over\n" +"24 years of development." +msgstr "" + +#: gnu/packages/perl.scm:121 +msgid "Module for merging hierarchies using the C3 algorithm" +msgstr "" + +#: gnu/packages/perl.scm:122 +msgid "" +"This module implements the C3 algorithm, which aims to\n" +"provide a sane method resolution order under multiple inheritance." +msgstr "" + +#: gnu/packages/perl.scm:140 +msgid "Compute differences between two files or lists" +msgstr "" + +#: gnu/packages/perl.scm:141 +msgid "" +"This is a module for computing the difference between two\n" +"files, two strings, or any other two lists of things. It uses an intelligent\n" +"algorithm similar to (or identical to) the one used by the Unix \"diff\"\n" +"program. It is guaranteed to find the *smallest possible* set of\n" +"differences." +msgstr "" + +#: gnu/packages/perl.scm:162 +msgid "Use shorter versions of class names" +msgstr "" + +#: gnu/packages/perl.scm:163 +msgid "" +"The alias module loads the class you specify and exports\n" +"into your namespace a subroutine that returns the class name. You can\n" +"explicitly alias the class to another name or, if you prefer, you can do so\n" +"implicitly." +msgstr "" + +#: gnu/packages/perl.scm:185 +msgid "Configuration files and command line parsing" +msgstr "" + +#: gnu/packages/perl.scm:186 +msgid "" +"AppConfig is a bundle of Perl5 modules for reading\n" +"configuration files and parsing command line arguments." +msgstr "" + +#: gnu/packages/perl.scm:204 +msgid "Perl API to zip files" +msgstr "" + +#: gnu/packages/perl.scm:205 gnu/packages/zip.scm:168 +msgid "" +"The Archive::Zip module allows a Perl program to create,\n" +"manipulate, read, and write Zip archive files." +msgstr "" + +#: gnu/packages/perl.scm:224 gnu/packages/perl.scm:3966 +msgid "Establish an ISA relationship with base classes at compile time" +msgstr "" + +#: gnu/packages/perl.scm:225 +msgid "" +"Allows you to both load one or more modules, while setting\n" +"up inheritance from those modules at the same time. Unless you are using the\n" +"fields pragma, consider this module discouraged in favor of the lighter-weight\n" +"parent." +msgstr "" + +#: gnu/packages/perl.scm:250 +msgid "Execute code after a scope finished compilation" +msgstr "" + +#: gnu/packages/perl.scm:251 +msgid "" +"This module allows you to execute code when perl finished\n" +"compiling the surrounding scope." +msgstr "" + +#: gnu/packages/perl.scm:269 +msgid "Benchmarking with statistical confidence" +msgstr "" + +#: gnu/packages/perl.scm:271 +msgid "" +"The Benchmark::Timer class allows you to time portions of code\n" +"conveniently, as well as benchmark code by allowing timings of repeated\n" +"trials. It is perfect for when you need more precise information about the\n" +"running time of portions of your code than the Benchmark module will give you,\n" +"but don't want to go all out and profile your code." +msgstr "" + +#: gnu/packages/perl.scm:296 +msgid "Bit vector library" +msgstr "" + +#: gnu/packages/perl.scm:297 +msgid "" +"Bit::Vector is an efficient C library which allows you to\n" +"handle bit vectors, sets (of integers), \"big integer arithmetic\" and boolean\n" +"matrices, all of arbitrary sizes. The package also includes an\n" +"object-oriented Perl module for accessing the C library from Perl, and\n" +"optionally features overloaded operators for maximum ease of use. The C\n" +"library can nevertheless be used stand-alone, without Perl." +msgstr "" + +#: gnu/packages/perl.scm:319 +msgid "Boolean support for Perl" +msgstr "" + +#: gnu/packages/perl.scm:320 +msgid "" +"This module provides basic Boolean support, by defining two\n" +"special objects: true and false." +msgstr "" + +#: gnu/packages/perl.scm:341 +msgid "Cache interface for Perl" +msgstr "" + +#: gnu/packages/perl.scm:342 +msgid "" +"The Cache modules are designed to assist a developer in\n" +"persisting data for a specified period of time. Often these modules are used\n" +"in web applications to store data locally to save repeated and redundant\n" +"expensive calls to remote machines or databases. People have also been known\n" +"to use Cache::Cache for its straightforward interface in sharing data between\n" +"runs of an application or invocations of a CGI-style script or simply as an\n" +"easy to use abstraction of the filesystem or shared memory." +msgstr "" + +#: gnu/packages/perl.scm:365 +msgid "Shared memory interprocess cache via mmap" +msgstr "" + +#: gnu/packages/perl.scm:366 +msgid "" +"A shared memory cache through an mmap'ed file. It's core is\n" +"written in C for performance. It uses fcntl locking to ensure multiple\n" +"processes can safely access the cache at the same time. It uses a basic LRU\n" +"algorithm to keep the most used entries in the cache." +msgstr "" + +#: gnu/packages/perl.scm:387 +msgid "Capture STDOUT and STDERR from Perl, XS or external programs" +msgstr "" + +#: gnu/packages/perl.scm:389 +msgid "" +"Capture::Tiny provides a simple, portable way to capture almost anything\n" +"sent to STDOUT or STDERR, regardless of whether it comes from Perl, from XS\n" +"code or from an external program. Optionally, output can be teed so that it\n" +"is captured while being passed through to the original file handles." +msgstr "" + +#: gnu/packages/perl.scm:409 +msgid "Executable comments for Perl" +msgstr "" + +#: gnu/packages/perl.scm:410 +msgid "" +"Carp::Assert is intended for a purpose like the ANSI C\n" +"library assert.h." +msgstr "" + +#: gnu/packages/perl.scm:432 +msgid "Convenience wrappers around Carp::Assert" +msgstr "" + +#: gnu/packages/perl.scm:433 +msgid "" +"Carp::Assert::More is a set of handy assertion functions for\n" +"Perl." +msgstr "" + +#: gnu/packages/perl.scm:453 +msgid "Report errors from a \"clan\" of modules" +msgstr "" + +#: gnu/packages/perl.scm:454 +msgid "" +"This module allows errors from a clan (or family) of modules\n" +"to appear to originate from the caller of the clan. This is necessary in\n" +"cases where the clan modules are not classes derived from each other, and thus\n" +"the Carp.pm module doesn't help." +msgstr "" + +#: gnu/packages/perl.scm:478 +msgid "Automated accessor generation" +msgstr "" + +#: gnu/packages/perl.scm:479 +msgid "" +"This module automagically generates accessors/mutators for\n" +"your class." +msgstr "" + +#: gnu/packages/perl.scm:499 +msgid "Faster, but less expandable, chained accessors" +msgstr "" + +#: gnu/packages/perl.scm:500 +msgid "" +"A chained accessor is one that always returns the object\n" +"when called with parameters (to set), and the value of the field when called\n" +"with no arguments. This module subclasses Class::Accessor in order to provide\n" +"the same mk_accessors interface." +msgstr "" + +#: gnu/packages/perl.scm:526 +msgid "Build groups of accessors" +msgstr "" + +#: gnu/packages/perl.scm:527 +msgid "" +"This class lets you build groups of accessors that will call\n" +"different getters and setters." +msgstr "" + +#: gnu/packages/perl.scm:547 +msgid "Pragma to use the C3 method resolution order algorithm" +msgstr "" + +#: gnu/packages/perl.scm:548 +msgid "" +"This is pragma to change Perl 5's standard method resolution\n" +"order from depth-first left-to-right (a.k.a - pre-order) to the more\n" +"sophisticated C3 method resolution order." +msgstr "" + +#: gnu/packages/perl.scm:572 +msgid "Drop-in replacement for NEXT" +msgstr "" + +#: gnu/packages/perl.scm:573 +msgid "" +"This module is intended as a drop-in replacement for NEXT,\n" +"supporting the same interface, but using Class::C3 to do the hard work." +msgstr "" + +#: gnu/packages/perl.scm:597 +msgid "Load mix-ins or components to your C3-based class" +msgstr "" + +#: gnu/packages/perl.scm:598 +msgid "" +"This module will inject base classes to your module using\n" +"the Class::C3 method resolution order." +msgstr "" + +#: gnu/packages/perl.scm:616 +msgid "Inheritable, overridable class data" +msgstr "" + +#: gnu/packages/perl.scm:617 +msgid "" +"Class::Data::Inheritable is for creating accessor/mutators\n" +"to class data. That is, if you want to store something about your class as a\n" +"whole (instead of about a single object). This data is then inherited by your\n" +"subclasses and can be overridden." +msgstr "" + +#: gnu/packages/perl.scm:638 +msgid "Class for easy date and time manipulation" +msgstr "" + +#: gnu/packages/perl.scm:639 +msgid "" +"This module provides a general-purpose date and datetime\n" +"type for perl." +msgstr "" + +#: gnu/packages/perl.scm:657 +msgid "Utility methods for factory classes" +msgstr "" + +#: gnu/packages/perl.scm:658 +msgid "This module exports methods useful for factory classes." +msgstr "" + +#: gnu/packages/perl.scm:675 +msgid "Get information about a class and its structure" +msgstr "" + +#: gnu/packages/perl.scm:676 +msgid "" +"Class::Inspector allows you to get information about a\n" +"loaded class." +msgstr "" + +#: gnu/packages/perl.scm:704 +msgid "Working (require \"Class::Name\") and more" +msgstr "" + +#: gnu/packages/perl.scm:705 +msgid "" +"\"require EXPR\" only accepts Class/Name.pm style module\n" +"names, not Class::Name. For that, this module provides \"load_class\n" +"'Class::Name'\"." +msgstr "" + +#: gnu/packages/perl.scm:728 +msgid "XS implementation of parts of Class::Load" +msgstr "" + +#: gnu/packages/perl.scm:729 +msgid "" +"This module provides an XS implementation for portions of\n" +"Class::Load." +msgstr "" + +#: gnu/packages/perl.scm:748 +msgid "Create generic methods for OO Perl" +msgstr "" + +#: gnu/packages/perl.scm:749 +msgid "" +"This module solves the problem of having to continually\n" +"write accessor methods for your objects that perform standard tasks." +msgstr "" + +#: gnu/packages/perl.scm:770 +msgid "Moose-like method modifiers" +msgstr "" + +#: gnu/packages/perl.scm:771 +msgid "" +"Class::Method::Modifiers provides three modifiers: 'before',\n" +"'around', and 'after'. 'before' and 'after' are run just before and after the\n" +"method they modify, but can not really affect that original method. 'around'\n" +"is run in place of the original method, with a hook to easily call that\n" +"original method." +msgstr "" + +#: gnu/packages/perl.scm:792 +msgid "Implementation of a singleton class for Perl" +msgstr "" + +#: gnu/packages/perl.scm:793 +msgid "" +"This module implements a Singleton class from which other\n" +"classes can be derived. By itself, the Class::Singleton module does very\n" +"little other than manage the instantiation of a single object." +msgstr "" + +#: gnu/packages/perl.scm:812 +msgid "Minimalist class construction" +msgstr "" + +#: gnu/packages/perl.scm:813 +msgid "" +"This module offers a minimalist class construction kit. It\n" +"uses no non-core modules for any recent Perl." +msgstr "" + +#: gnu/packages/perl.scm:833 +msgid "Unload a class" +msgstr "" + +#: gnu/packages/perl.scm:834 +msgid "" +"Class:Unload unloads a given class by clearing out its\n" +"symbol table and removing it from %INC." +msgstr "" + +#: gnu/packages/perl.scm:852 +msgid "Generate fast XS accessors without runtime compilation" +msgstr "" + +#: gnu/packages/perl.scm:853 +msgid "" +"Class::XSAccessor implements fast read, write, and\n" +"read/write accessors in XS. Additionally, it can provide predicates such as\n" +"\"has_foo()\" for testing whether the attribute \"foo\" is defined in the\n" +"object. It only works with objects that are implemented as ordinary hashes.\n" +"Class::XSAccessor::Array implements the same interface for objects that use\n" +"arrays for their internal representation." +msgstr "" + +#: gnu/packages/perl.scm:873 +msgid "Recursively copy Perl datatypes" +msgstr "" + +#: gnu/packages/perl.scm:875 +msgid "" +"This module provides a clone() method which makes recursive copies of\n" +"nested hash, array, scalar and reference types, including tied variables and\n" +"objects." +msgstr "" + +#: gnu/packages/perl.scm:896 +msgid "Sane defaults for Perl programs" +msgstr "" + +#: gnu/packages/perl.scm:897 +msgid "" +"This module implements some sane defaults for Perl programs,\n" +"as defined by two typical specimens of Perl coders." +msgstr "" + +#: gnu/packages/perl.scm:915 +msgid "Load configuration from different file formats" +msgstr "" + +#: gnu/packages/perl.scm:916 +msgid "" +"Config::Any provides a facility for Perl applications and\n" +"libraries to load configuration data from multiple different file formats. It\n" +"supports XML, YAML, JSON, Apache-style configuration, and Perl code." +msgstr "" + +#: gnu/packages/perl.scm:937 +msgid "Module to implement some AutoConf macros in Perl" +msgstr "" + +#: gnu/packages/perl.scm:938 +msgid "" +"Config::AutoConf is intended to provide the same\n" +"opportunities to Perl developers as GNU Autoconf does for Shell developers." +msgstr "" + +#: gnu/packages/perl.scm:956 +msgid "Generic Config Module" +msgstr "" + +#: gnu/packages/perl.scm:957 +msgid "" +"This module opens a config file and parses its contents for\n" +"you. The format of config files supported by Config::General is inspired by\n" +"the well known Apache config format and is 100% compatible with Apache\n" +"configs, but you can also just use simple name/value pairs in your config\n" +"files. In addition to the capabilities of an Apache config file it supports\n" +"some enhancements such as here-documents, C-style comments, and multiline\n" +"options." +msgstr "" + +#: gnu/packages/perl.scm:983 +msgid "Preserve context during subroutine call" +msgstr "" + +#: gnu/packages/perl.scm:984 +msgid "" +"This module runs code after a subroutine call, preserving\n" +"the context the subroutine would have seen if it were the last statement in\n" +"the caller." +msgstr "" + +#: gnu/packages/perl.scm:1005 +msgid "Verify requirements in a CPAN::Meta object" +msgstr "" + +#: gnu/packages/perl.scm:1006 +msgid "" +"This module verifies if requirements described in a\n" +"CPAN::Meta object are present." +msgstr "" + +#: gnu/packages/perl.scm:1026 +msgid "JSON::XS for Cpanel" +msgstr "" + +#: gnu/packages/perl.scm:1027 gnu/packages/perl.scm:2769 +msgid "" +"This module converts Perl data structures to JSON and vice\n" +"versa." +msgstr "" + +#: gnu/packages/perl.scm:1045 +msgid "Random password generator" +msgstr "" + +#: gnu/packages/perl.scm:1046 +msgid "" +"Crypt::RandPasswd provides three functions that can be used\n" +"to generate random passwords, constructed from words, letters, or characters.\n" +"This code is a Perl implementation of the Automated Password Generator\n" +"standard, like the program described in \"A Random Word Generator For\n" +"Pronounceable Passwords\". This code is a re-engineering of the program\n" +"contained in Appendix A of FIPS Publication 181, \"Standard for Automated\n" +"Password Generator\"." +msgstr "" + +#: gnu/packages/perl.scm:1089 +msgid "Library for genomic analysis" +msgstr "" + +#: gnu/packages/perl.scm:1090 +msgid "" +"Chaolin Zhang's Perl Library (czplib) contains assorted\n" +"functions and data structures for processing and analysing genomic and\n" +"bioinformatics data." +msgstr "" + +#: gnu/packages/perl.scm:1109 +msgid "Pretty printing of data structures" +msgstr "" + +#: gnu/packages/perl.scm:1110 +msgid "" +"This module provide functions that takes a list of values as\n" +"their argument and produces a string as its result. The string contains Perl\n" +"code that, when \"eval\"ed, produces a deep copy of the original arguments." +msgstr "" + +#: gnu/packages/perl.scm:1129 +msgid "Concise data dumper" +msgstr "" + +#: gnu/packages/perl.scm:1130 +msgid "" +"Data::Dumper::Concise provides a dumper with Less\n" +"indentation and newlines plus sub deparsing." +msgstr "" + +#: gnu/packages/perl.scm:1152 +msgid "Parse and validate simple name/value option pairs" +msgstr "" + +#: gnu/packages/perl.scm:1154 +msgid "Data::OptList provides a simple syntax for name/value option pairs." +msgstr "" + +#: gnu/packages/perl.scm:1175 +msgid "Help when paging through sets of results" +msgstr "" + +#: gnu/packages/perl.scm:1176 +msgid "" +"When searching through large amounts of data, it is often\n" +"the case that a result set is returned that is larger than we want to display\n" +"on one page. This results in wanting to page through various pages of data.\n" +"The maths behind this is unfortunately fiddly, hence this module." +msgstr "" + +#: gnu/packages/perl.scm:1198 +msgid "Structured tags datastructures" +msgstr "" + +#: gnu/packages/perl.scm:1200 +msgid "" +"This module is for manipulating data as hierarchical tag/value\n" +"pairs (Structured TAGs or Simple Tree AGgregates). These datastructures can\n" +"be represented as nested arrays, which have the advantage of being native to\n" +"Perl." +msgstr "" + +#: gnu/packages/perl.scm:1227 +msgid "N at a time iteration API" +msgstr "" + +#: gnu/packages/perl.scm:1228 +msgid "" +"This module tries to find middle ground between one at a\n" +"time and all at once processing of data sets. The purpose of this module is\n" +"to avoid the overhead of implementing an iterative api when this isn't\n" +"necessary, without breaking forward compatibility in case that becomes\n" +"necessary later on." +msgstr "" + +#: gnu/packages/perl.scm:1253 +msgid "Dynamic generation of nested combinations of variants" +msgstr "" + +#: gnu/packages/perl.scm:1254 +msgid "" +"Data::Tumbler - Dynamic generation of nested combinations of\n" +"variants." +msgstr "" + +#: gnu/packages/perl.scm:1280 +msgid "Visitor style traversal of Perl data structures" +msgstr "" + +#: gnu/packages/perl.scm:1281 +msgid "" +"This module is a simple visitor implementation for Perl\n" +"values. It has a main dispatcher method, visit, which takes a single perl\n" +"value and then calls the methods appropriate for that value. It can\n" +"recursively map (cloning as necessary) or just traverse most structures, with\n" +"support for per-object behavior, circular structures, visiting tied\n" +"structures, and all ref types (hashes, arrays, scalars, code, globs)." +msgstr "" + +#: gnu/packages/perl.scm:1306 +msgid "Gregorian calendar date calculations" +msgstr "" + +#: gnu/packages/perl.scm:1307 +msgid "" +"This package consists of a Perl module for date calculations\n" +"based on the Gregorian calendar, thereby complying with all relevant norms and\n" +"standards: ISO/R 2015-1971, DIN 1355 and, to some extent, ISO 8601 (where\n" +"applicable)." +msgstr "" + +#: gnu/packages/perl.scm:1331 +msgid "XS wrapper for Date::Calc" +msgstr "" + +#: gnu/packages/perl.scm:1332 +msgid "" +"Date::Calc::XS is an XS wrapper and C library plug-in for\n" +"Date::Calc." +msgstr "" + +#: gnu/packages/perl.scm:1355 +msgid "Date manipulation routines" +msgstr "" + +#: gnu/packages/perl.scm:1356 +msgid "" +"Date::Manip is a series of modules for common date/time\n" +"operations, such as comparing two times, determining a date a given amount of\n" +"time from another, or parsing international times." +msgstr "" + +#: gnu/packages/perl.scm:1383 +msgid "Date and time object for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1384 +msgid "" +"DateTime is a class for the representation of date/time\n" +"combinations. It represents the Gregorian calendar, extended backwards in\n" +"time before its creation (in 1582)." +msgstr "" + +#: gnu/packages/perl.scm:1407 +msgid "DateTime set objects" +msgstr "" + +#: gnu/packages/perl.scm:1408 +msgid "" +"The DateTime::Set module provides a date/time sets\n" +"implementation. It allows, for example, the generation of groups of dates,\n" +"like \"every wednesday\", and then find all the dates matching that pattern,\n" +"within a time range." +msgstr "" + +#: gnu/packages/perl.scm:1431 +msgid "DateTime rfc2445 recurrences" +msgstr "" + +#: gnu/packages/perl.scm:1432 +msgid "" +"This module provides convenience methods that let you easily\n" +"create DateTime::Set objects for RFC 2445 style recurrences." +msgstr "" + +#: gnu/packages/perl.scm:1453 +msgid "DateTime::Set extension for basic recurrences" +msgstr "" + +#: gnu/packages/perl.scm:1454 +msgid "" +"This module provides convenience methods that let you easily\n" +"create DateTime::Set objects for various recurrences, such as \"once a month\"\n" +"or \"every day\". You can also create more complicated recurrences, such as\n" +"\"every Monday, Wednesday and Thursday at 10:00 AM and 2:00 PM\"." +msgstr "" + +#: gnu/packages/perl.scm:1479 +msgid "Create DateTime parser classes and objects" +msgstr "" + +#: gnu/packages/perl.scm:1480 +msgid "" +"DateTime::Format::Builder creates DateTime parsers. Many\n" +"string formats of dates and times are simple and just require a basic regular\n" +"expression to extract the relevant information. Builder provides a simple way\n" +"to do this without writing reams of structural code." +msgstr "" + +#: gnu/packages/perl.scm:1506 +msgid "Parse data/time strings" +msgstr "" + +#: gnu/packages/perl.scm:1507 +msgid "" +"DateTime::Format::Flexible attempts to take any string you\n" +"give it and parse it into a DateTime object." +msgstr "" + +#: gnu/packages/perl.scm:1531 +msgid "Parse and format iCal datetime and duration strings" +msgstr "" + +#: gnu/packages/perl.scm:1532 +msgid "" +"This module understands the ICal date/time and duration\n" +"formats, as defined in RFC 2445. It can be used to parse these formats in\n" +"order to create the appropriate objects." +msgstr "" + +#: gnu/packages/perl.scm:1563 +msgid "Machine-readable date/time with natural parsing" +msgstr "" + +#: gnu/packages/perl.scm:1564 +msgid "" +"DateTime::Format::Natural takes a string with a human\n" +"readable date/time and creates a machine readable one by applying natural\n" +"parsing logic." +msgstr "" + +#: gnu/packages/perl.scm:1588 +msgid "Parse and format strp and strf time patterns" +msgstr "" + +#: gnu/packages/perl.scm:1589 +msgid "" +"This module implements most of `strptime(3)`, the POSIX\n" +"function that is the reverse of `strftime(3)`, for `DateTime`. While\n" +"`strftime` takes a `DateTime` and a pattern and returns a string, `strptime`\n" +"takes a string and a pattern and returns the `DateTime` object associated." +msgstr "" + +#: gnu/packages/perl.scm:1612 +msgid "Localization support for DateTime.pm" +msgstr "" + +#: gnu/packages/perl.scm:1613 +msgid "" +"The DateTime::Locale modules provide localization data for\n" +"the DateTime.pm class." +msgstr "" + +#: gnu/packages/perl.scm:1640 +msgid "Time zone object for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1641 +msgid "" +"This class is the base class for all time zone objects. A\n" +"time zone is represented internally as a set of observances, each of which\n" +"describes the offset from GMT for a given time period. Note that without the\n" +"DateTime module, this module does not do much. It's primary interface is\n" +"through a DateTime object, and most users will not need to directly use\n" +"DateTime::TimeZone methods." +msgstr "" + +#: gnu/packages/perl.scm:1671 +msgid "Parse date/time strings" +msgstr "" + +#: gnu/packages/perl.scm:1672 +msgid "" +"DateTimeX::Easy uses a variety of DateTime::Format packages\n" +"to create DateTime objects, with some custom tweaks to smooth out the rough\n" +"edges (mainly concerning timezone detection and selection)." +msgstr "" + +#: gnu/packages/perl.scm:1693 +msgid "Meatier version of caller" +msgstr "" + +#: gnu/packages/perl.scm:1694 +msgid "Devel::Caller provides meatier version of caller." +msgstr "" + +#: gnu/packages/perl.scm:1711 +msgid "Check that a command is available" +msgstr "" + +#: gnu/packages/perl.scm:1712 +msgid "" +"Devel::CheckBin is a perl module that checks whether a\n" +"particular command is available." +msgstr "" + +#: gnu/packages/perl.scm:1732 +msgid "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls" +msgstr "" + +#: gnu/packages/perl.scm:1733 +msgid "" +"Devel::GlobalDestruction provides a function returning the\n" +"equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls." +msgstr "" + +#: gnu/packages/perl.scm:1753 +msgid "Alias lexical variables" +msgstr "" + +#: gnu/packages/perl.scm:1754 +msgid "" +"Devel::LexAlias provides the ability to alias a lexical\n" +"variable in a subroutines scope to one of your choosing." +msgstr "" + +#: gnu/packages/perl.scm:1776 +msgid "Introspect overloaded operators" +msgstr "" + +#: gnu/packages/perl.scm:1777 +msgid "" +"Devel::OverloadInfo returns information about overloaded\n" +"operators for a given class (or object), including where in the inheritance\n" +"hierarchy the overloads are declared and where the code implementing it is." +msgstr "" + +#: gnu/packages/perl.scm:1804 +msgid "Partial dumping of data structures" +msgstr "" + +#: gnu/packages/perl.scm:1805 +msgid "" +"This module is a data dumper optimized for logging of\n" +"arbitrary parameters." +msgstr "" + +#: gnu/packages/perl.scm:1823 +msgid "Object representing a stack trace" +msgstr "" + +#: gnu/packages/perl.scm:1824 +msgid "" +"The Devel::StackTrace module contains two classes,\n" +"Devel::StackTrace and Devel::StackTrace::Frame. These objects encapsulate the\n" +"information that can be retrieved via Perl's caller() function, as well as\n" +"providing a simple interface to this data." +msgstr "" + +#: gnu/packages/perl.scm:1846 +msgid "Displays stack trace in HTML" +msgstr "" + +#: gnu/packages/perl.scm:1847 +msgid "" +"Devel::StackTrace::AsHTML adds as_html method to\n" +"Devel::StackTrace which displays the stack trace in beautiful HTML, with code\n" +"snippet context and function parameters. If you call it on an instance of\n" +"Devel::StackTrace::WithLexicals, you even get to see the lexical variables of\n" +"each stack frame." +msgstr "" + +#: gnu/packages/perl.scm:1868 +msgid "Dump symbol names or the symbol table" +msgstr "" + +#: gnu/packages/perl.scm:1869 +msgid "Devel::Symdump provides access to the perl symbol table." +msgstr "" + +#: gnu/packages/perl.scm:1886 +msgid "Keyed-Hashing for Message Authentication" +msgstr "" + +#: gnu/packages/perl.scm:1887 +msgid "" +"The Digest::HMAC module follows the common Digest::\n" +"interface for the RFC 2104 HMAC mechanism." +msgstr "" + +#: gnu/packages/perl.scm:1903 +msgid "Perl implementation of the SHA-1 message digest algorithm" +msgstr "" + +#: gnu/packages/perl.scm:1905 +msgid "" +"This package provides 'Digest::SHA1', an implementation of the NIST\n" +"SHA-1 message digest algorithm for use by Perl programs." +msgstr "" + +#: gnu/packages/perl.scm:1927 +msgid "Declare version conflicts for your dist" +msgstr "" + +#: gnu/packages/perl.scm:1928 +msgid "" +"This module allows you to specify conflicting versions of\n" +"modules separately and deal with them after the module is done installing." +msgstr "" + +#: gnu/packages/perl.scm:1945 +msgid "OO-ish Error/Exception handling for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1946 +msgid "" +"The Error package provides two interfaces. Firstly Error\n" +"provides a procedural interface to exception handling. Secondly Error is a\n" +"base class for errors/exceptions that can either be thrown, for subsequent\n" +"catch, or can simply be recorded." +msgstr "" + +#: gnu/packages/perl.scm:1971 +msgid "Safely and cleanly create closures via string eval" +msgstr "" + +#: gnu/packages/perl.scm:1972 +msgid "" +"String eval is often used for dynamic code generation. For\n" +"instance, Moose uses it heavily, to generate inlined versions of accessors and\n" +"constructors, which speeds code up at runtime by a significant amount. String\n" +"eval is not without its issues however - it's difficult to control the scope\n" +"it's used in (which determines which variables are in scope inside the eval),\n" +"and it's easy to miss compilation errors, since eval catches them and sticks\n" +"them in $@@ instead. This module attempts to solve these problems. It\n" +"provides an eval_closure function, which evals a string in a clean\n" +"environment, other than a fixed list of specified variables. Compilation\n" +"errors are rethrown automatically." +msgstr "" + +#: gnu/packages/perl.scm:2001 +msgid "Allows you to declare real exception classes in Perl" +msgstr "" + +#: gnu/packages/perl.scm:2002 +msgid "" +"Exception::Class allows you to declare exception hierarchies\n" +"in your modules in a \"Java-esque\" manner." +msgstr "" + +#: gnu/packages/perl.scm:2018 +msgid "Lightweight exporting of functions and variables" +msgstr "" + +#: gnu/packages/perl.scm:2020 +msgid "" +"Exporter::Lite is an alternative to Exporter, intended to provide a\n" +"lightweight subset of the most commonly-used functionality. It supports\n" +"import(), @@EXPORT and @@EXPORT_OK and not a whole lot else." +msgstr "" + +#: gnu/packages/perl.scm:2041 +msgid "Exporter with the features of Sub::Exporter but only core dependencies" +msgstr "" + +#: gnu/packages/perl.scm:2042 +msgid "" +"Exporter::Tiny supports many of Sub::Exporter's\n" +"external-facing features including renaming imported functions with the `-as`,\n" +"`-prefix` and `-suffix` options; explicit destinations with the `into` option;\n" +"and alternative installers with the `installler` option. But it's written in\n" +"only about 40% as many lines of code and with zero non-core dependencies." +msgstr "" + +#: gnu/packages/perl.scm:2065 +msgid "Build.PL install path logic made easy" +msgstr "" + +#: gnu/packages/perl.scm:2066 +msgid "" +"This module tries to make install path resolution as easy as\n" +"possible." +msgstr "" + +#: gnu/packages/perl.scm:2084 +msgid "Wrapper for perl's configuration" +msgstr "" + +#: gnu/packages/perl.scm:2085 +msgid "" +"ExtUtils::Config is an abstraction around the %Config hash.\n" +"By itself it is not a particularly interesting module by any measure, however\n" +"it ties together a family of modern toolchain modules." +msgstr "" + +#: gnu/packages/perl.scm:2104 +msgid "Various portability utilities for module builders" +msgstr "" + +#: gnu/packages/perl.scm:2105 +msgid "" +"This module provides various portable helper functions for\n" +"module building modules." +msgstr "" + +#: gnu/packages/perl.scm:2133 +msgid "Watch for changes to files" +msgstr "" + +#: gnu/packages/perl.scm:2134 +msgid "" +"This module provides a class to monitor a directory for\n" +"changes made to any file." +msgstr "" + +#: gnu/packages/perl.scm:2152 +msgid "Recursively copy files and directories" +msgstr "" + +#: gnu/packages/perl.scm:2153 +msgid "" +"This module has 3 functions: one to copy files only, one to\n" +"copy directories only, and one to do either depending on the argument's\n" +"type." +msgstr "" + +#: gnu/packages/perl.scm:2175 +msgid "Alternative interface to File::Find" +msgstr "" + +#: gnu/packages/perl.scm:2176 +msgid "" +"File::Find::Rule is a friendlier interface to File::Find.\n" +"It allows you to build rules which specify the desired files and\n" +"directories." +msgstr "" + +#: gnu/packages/perl.scm:2199 +msgid "Common rules for searching for Perl things" +msgstr "" + +#: gnu/packages/perl.scm:2200 +msgid "" +"File::Find::Rule::Perl provides methods for finding various\n" +"types Perl-related files, or replicating search queries run on a distribution\n" +"in various parts of the CPAN ecosystem." +msgstr "" + +#: gnu/packages/perl.scm:2223 +msgid "Find your home and other directories on any platform" +msgstr "" + +#: gnu/packages/perl.scm:2224 +msgid "" +"File::HomeDir is a module for locating the directories that\n" +"are \"owned\" by a user (typically your user) and to solve the various issues\n" +"that arise trying to find them consistently across a wide variety of\n" +"platforms." +msgstr "" + +#: gnu/packages/perl.scm:2251 +msgid "" +"Perl extension for crawling directory trees and compiling\n" +"lists of files" +msgstr "" + +#: gnu/packages/perl.scm:2254 +msgid "" +"The File::List module crawls the directory tree starting at the\n" +"provided base directory and can return files (and/or directories if desired)\n" +"matching a regular expression." +msgstr "" + +#: gnu/packages/perl.scm:2273 +msgid "Remove files and directories in Perl" +msgstr "" + +#: gnu/packages/perl.scm:2274 +msgid "" +"File::Remove::remove removes files and directories. It acts\n" +"like /bin/rm, for the most part. Although \"unlink\" can be given a list of\n" +"files, it will not remove directories; this module remedies that. It also\n" +"accepts wildcards, * and ?, as arguments for file names." +msgstr "" + +#: gnu/packages/perl.scm:2298 +msgid "Locate per-dist and per-module shared files" +msgstr "" + +#: gnu/packages/perl.scm:2299 +msgid "" +"The intent of File::ShareDir is to provide a companion to\n" +"Class::Inspector and File::HomeDir. Quite often you want or need your Perl\n" +"module to have access to a large amount of read-only data that is stored on\n" +"the file-system at run-time. Once the files have been installed to the\n" +"correct directory, you can use File::ShareDir to find your files again after\n" +"the installation." +msgstr "" + +#: gnu/packages/perl.scm:2321 +msgid "Install shared files" +msgstr "" + +#: gnu/packages/perl.scm:2322 +msgid "" +"File::ShareDir::Install allows you to install read-only data\n" +"files from a distribution. It is a companion module to File::ShareDir, which\n" +"allows you to locate these files after installation." +msgstr "" + +#: gnu/packages/perl.scm:2341 +msgid "Reading/Writing/Modifying of complete files" +msgstr "" + +#: gnu/packages/perl.scm:2342 +msgid "" +"File::Slurp provides subroutines to read or write entire\n" +"files with a simple call. It also has a subroutine for reading the list of\n" +"file names in a directory." +msgstr "" + +#: gnu/packages/perl.scm:2363 +msgid "Return name and handle of a temporary file safely" +msgstr "" + +#: gnu/packages/perl.scm:2364 +msgid "" +"File::Temp can be used to create and open temporary files in\n" +"a safe way." +msgstr "" + +#: gnu/packages/perl.scm:2381 +msgid "Portable implementation of the `which' utility" +msgstr "" + +#: gnu/packages/perl.scm:2383 +msgid "" +"File::Which was created to be able to get the paths to executable\n" +"programs on systems under which the `which' program wasn't implemented in the\n" +"shell." +msgstr "" + +#: gnu/packages/perl.scm:2410 +msgid "Getopt::Long, but simpler and more powerful" +msgstr "" + +#: gnu/packages/perl.scm:2411 +msgid "" +"Getopt::Long::Descriptive is yet another Getopt library.\n" +"It's built atop Getopt::Long, and gets a lot of its features, but tries to\n" +"avoid making you think about its huge array of options. It also provides\n" +"usage (help) messages, data validation, and a few other useful features." +msgstr "" + +#: gnu/packages/perl.scm:2429 +msgid "Table-driven argument parsing for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2431 +msgid "" +"Getopt::Tabular is a Perl 5 module for table-driven argument parsing,\n" +"vaguely inspired by John Ousterhout's Tk_ParseArgv." +msgstr "" + +#: gnu/packages/perl.scm:2451 +msgid "Merge arbitrarily deep hashes into a single hash" +msgstr "" + +#: gnu/packages/perl.scm:2452 +msgid "" +"Hash::Merge merges two arbitrarily deep hashes into a single\n" +"hash. That is, at any level, it will add non-conflicting key-value pairs from\n" +"one hash to the other, and follows a set of specific rules when there are key\n" +"value conflicts. The hash is followed recursively, so that deeply nested\n" +"hashes that are at the same level will be merged when the parent hashes are\n" +"merged." +msgstr "" + +#: gnu/packages/perl.scm:2474 +msgid "Store multiple values per key" +msgstr "" + +#: gnu/packages/perl.scm:2475 +msgid "" +"Hash::MultiValue is an object (and a plain hash reference)\n" +"that may contain multiple values per key, inspired by MultiDict of WebOb." +msgstr "" + +#: gnu/packages/perl.scm:2495 +msgid "Import packages into other packages" +msgstr "" + +#: gnu/packages/perl.scm:2496 +msgid "" +"Writing exporters is a pain. Some use Exporter, some use\n" +"Sub::Exporter, some use Moose::Exporter, some use Exporter::Declare ... and\n" +"some things are pragmas. Exporting on someone else's behalf is harder. The\n" +"exporters don't provide a consistent API for this, and pragmas need to have\n" +"their import method called directly, since they effect the current unit of\n" +"compilation. Import::Into provides global methods to make this painless." +msgstr "" + +#: gnu/packages/perl.scm:2518 +msgid "Use modules in inc/ if newer than installed" +msgstr "" + +#: gnu/packages/perl.scm:2519 +msgid "" +"The inc::latest module helps bootstrap configure-time\n" +"dependencies for CPAN distributions. These dependencies get bundled into the\n" +"inc directory within a distribution and are used by Makefile.PL or Build.PL." +msgstr "" + +#: gnu/packages/perl.scm:2538 +msgid "Utilities for interactive I/O" +msgstr "" + +#: gnu/packages/perl.scm:2539 +msgid "" +"This module provides three utility subroutines that make it\n" +"easier to develop interactive applications: is_interactive(), interactive(),\n" +"and busy()." +msgstr "" + +#: gnu/packages/perl.scm:2558 +msgid "Emulate file interface for in-core strings" +msgstr "" + +#: gnu/packages/perl.scm:2559 +msgid "" +"IO::String is an IO::File (and IO::Handle) compatible class\n" +"that reads or writes data from in-core strings." +msgstr "" + +#: gnu/packages/perl.scm:2577 +msgid "IO:: interface for reading/writing an array of lines" +msgstr "" + +#: gnu/packages/perl.scm:2578 +msgid "" +"This toolkit primarily provides modules for performing both\n" +"traditional and object-oriented i/o) on things *other* than normal\n" +"filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines." +msgstr "" + +#: gnu/packages/perl.scm:2596 +msgid "Perl interface to pseudo ttys" +msgstr "" + +#: gnu/packages/perl.scm:2598 +msgid "" +"This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to\n" +"pseudo ttys." +msgstr "" + +#: gnu/packages/perl.scm:2626 +msgid "Run system() and background procs w/ piping, redirs, ptys" +msgstr "" + +#: gnu/packages/perl.scm:2627 +msgid "" +"IPC::Run allows you run and interact with child processes\n" +"using files, pipes, and pseudo-ttys. Both system()-style and scripted usages\n" +"are supported and may be mixed. Likewise, functional and OO API styles are\n" +"both supported and may be mixed." +msgstr "" + +#: gnu/packages/perl.scm:2645 +msgid "Run a subprocess with input/output redirection" +msgstr "" + +#: gnu/packages/perl.scm:2647 +msgid "" +"The IPC::Run3 module allows you to run a subprocess and redirect stdin,\n" +"stdout, and/or stderr to files and perl data structures. It aims to satisfy\n" +"99% of the need for using system, qx, and open3 with a simple, extremely\n" +"Perlish API and none of the bloat and rarely used features of IPC::Run." +msgstr "" + +#: gnu/packages/perl.scm:2671 +msgid "Lightweight interface to shared memory" +msgstr "" + +#: gnu/packages/perl.scm:2672 +msgid "" +"IPC::ShareLite provides a simple interface to shared memory,\n" +"allowing data to be efficiently communicated between processes." +msgstr "" + +#: gnu/packages/perl.scm:2692 +msgid "JSON encoder/decoder for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2693 +msgid "" +"This module converts Perl data structures to JSON and vice\n" +"versa using either JSON::XS or JSON::PP." +msgstr "" + +#: gnu/packages/perl.scm:2718 +msgid "Wrapper for Perl JSON classes" +msgstr "" + +#: gnu/packages/perl.scm:2720 +msgid "" +"This module tries to provide a coherent API to bring together the\n" +"various JSON modules currently on CPAN. This module will allow you to code to\n" +"any JSON API and have it work regardless of which JSON module is actually\n" +"installed." +msgstr "" + +#: gnu/packages/perl.scm:2744 +msgid "Cpanel::JSON::XS with fallback" +msgstr "" + +#: gnu/packages/perl.scm:2745 +msgid "" +"This module first checks to see if either Cpanel::JSON::XS\n" +"or JSON::XS is already loaded, in which case it uses that module. Otherwise\n" +"it tries to load Cpanel::JSON::XS, then JSON::XS, then JSON::PP in order, and\n" +"either uses the first module it finds or throws an error." +msgstr "" + +#: gnu/packages/perl.scm:2768 +msgid "JSON serialising/deserialising for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2792 +msgid "Combination of List::Util and List::MoreUtils" +msgstr "" + +#: gnu/packages/perl.scm:2793 +msgid "" +"This module exports all of the functions that either\n" +"List::Util or List::MoreUtils defines, with preference to List::Util." +msgstr "" + +#: gnu/packages/perl.scm:2817 +msgid "Provide the stuff missing in List::Util" +msgstr "" + +#: gnu/packages/perl.scm:2818 +msgid "" +"List::MoreUtils provides some trivial but commonly needed\n" +"functionality on lists which is not going to go into List::Util." +msgstr "" + +#: gnu/packages/perl.scm:2836 +msgid "Expiry plug-in for Memoize that adds LRU cache expiration" +msgstr "" + +#: gnu/packages/perl.scm:2837 +msgid "" +"This module implements an expiry policy for Memoize that\n" +"follows LRU semantics, that is, the last n results, where n is specified as\n" +"the argument to the CACHESIZE parameter, will be cached." +msgstr "" + +#: gnu/packages/perl.scm:2856 +msgid "Definition of MIME types" +msgstr "" + +#: gnu/packages/perl.scm:2857 +msgid "" +"This module provides a list of known mime-types, combined\n" +"from various sources. For instance, it contains all IANA types and the\n" +"knowledge of Apache." +msgstr "" + +#: gnu/packages/perl.scm:2886 +msgid "Tiny replacement for Module::Build" +msgstr "" + +#: gnu/packages/perl.scm:2887 +msgid "" +"Many Perl distributions use a Build.PL file instead of a\n" +"Makefile.PL file to drive distribution configuration, build, test and\n" +"installation. Traditionally, Build.PL uses Module::Build as the underlying\n" +"build system. This module provides a simple, lightweight, drop-in\n" +"replacement. Whereas Module::Build has over 6,700 lines of code; this module\n" +"has less than 120, yet supports the features needed by most distributions." +msgstr "" + +#: gnu/packages/perl.scm:2909 +msgid "Find and use installed modules in a (sub)category" +msgstr "" + +#: gnu/packages/perl.scm:2910 +msgid "" +"Module::Find lets you find and use modules in categories.\n" +"This can be useful for auto-detecting driver or plugin modules. You can\n" +"differentiate between looking in the category itself or in all\n" +"subcategories." +msgstr "" + +#: gnu/packages/perl.scm:2936 +msgid "Loads alternate underlying implementations for a module" +msgstr "" + +#: gnu/packages/perl.scm:2937 +msgid "" +"This module abstracts out the process of choosing one of\n" +"several underlying implementations for a module. This can be used to provide\n" +"XS and pure Perl implementations of a module, or it could be used to load an\n" +"implementation for a given OS or any other case of needing to provide multiple\n" +"implementations." +msgstr "" + +#: gnu/packages/perl.scm:2975 +msgid "Standalone, extensible Perl module installer" +msgstr "" + +#: gnu/packages/perl.scm:2976 +msgid "" +"Module::Install is a package for writing installers for\n" +"CPAN (or CPAN-like) distributions that are clean, simple, minimalist, act in a\n" +"strictly correct manner with ExtUtils::MakeMaker, and will run on any Perl\n" +"installation version 5.005 or newer." +msgstr "" + +#: gnu/packages/perl.scm:2996 +msgid "Perl runtime module handling" +msgstr "" + +#: gnu/packages/perl.scm:2997 +msgid "" +"The functions exported by this module deal with runtime\n" +"handling of Perl modules, which are normally handled at compile time." +msgstr "" + +#: gnu/packages/perl.scm:3018 +msgid "Provide information on conflicts for Module::Runtime" +msgstr "" + +#: gnu/packages/perl.scm:3019 +msgid "" +"This module provides conflicts checking for Module::Runtime,\n" +"which had a recent release that broke some versions of Moose. It is called\n" +"from Moose::Conflicts and moose-outdated." +msgstr "" + +#: gnu/packages/perl.scm:3040 +msgid "Recursively scan Perl code for dependencies" +msgstr "" + +#: gnu/packages/perl.scm:3041 +msgid "" +"Module::ScanDeps is a module to recursively scan Perl\n" +"programs for dependencies." +msgstr "" + +#: gnu/packages/perl.scm:3061 +msgid "Module name tools and transformations" +msgstr "" + +#: gnu/packages/perl.scm:3062 +msgid "" +"This module provides a few useful functions for manipulating\n" +"module names. Its main aim is to centralise some of the functions commonly\n" +"used by modules that manipulate other modules in some way, like converting\n" +"module names to relative paths." +msgstr "" + +#: gnu/packages/perl.scm:3092 +msgid "Minimalist Object Orientation (with Moose compatibility)" +msgstr "" + +#: gnu/packages/perl.scm:3093 +msgid "" +"Moo is an extremely light-weight Object Orientation system.\n" +"It allows one to concisely define objects and roles with a convenient syntax\n" +"that avoids the details of Perl's object system. Moo contains a subset of\n" +"Moose and is optimised for rapid startup." +msgstr "" + +#: gnu/packages/perl.scm:3169 +msgid "Postmodern object system for Perl 5" +msgstr "" + +#: gnu/packages/perl.scm:3171 +msgid "" +"Moose is a complete object system for Perl 5. It provides keywords for\n" +"attribute declaration, object construction, inheritance, and maybe more. With\n" +"Moose, you define your class declaratively, without needing to know about\n" +"blessed hashrefs, accessor methods, and so on. You can concentrate on the\n" +"logical structure of your classes, focusing on \"what\" rather than \"how\".\n" +"A class definition with Moose reads like a list of very concise English\n" +"sentences." +msgstr "" + +#: gnu/packages/perl.scm:3199 +msgid "Emulate Class::Accessor::Fast behavior using Moose attributes" +msgstr "" + +#: gnu/packages/perl.scm:3200 +msgid "" +"This module attempts to emulate the behavior of\n" +"Class::Accessor::Fast as accurately as possible using the Moose attribute\n" +"system. The public API of Class::Accessor::Fast is wholly supported, but the\n" +"private methods are not." +msgstr "" + +#: gnu/packages/perl.scm:3231 +msgid "Moose role for processing command line options" +msgstr "" + +#: gnu/packages/perl.scm:3232 +msgid "" +"This is a Moose role which provides an alternate constructor\n" +"for creating objects using parameters passed in from the command line." +msgstr "" + +#: gnu/packages/perl.scm:3253 +msgid "Mark overload code symbols as methods" +msgstr "" + +#: gnu/packages/perl.scm:3254 +msgid "" +"MooseX::MarkAsMethods allows one to easily mark certain\n" +"functions as Moose methods. This will allow other packages such as\n" +"namespace::autoclean to operate without blowing away your overloads. After\n" +"using MooseX::MarkAsMethods your overloads will be recognized by Class::MOP as\n" +"being methods, and class extension as well as composition from roles with\n" +"overloads will \"just work\"." +msgstr "" + +#: gnu/packages/perl.scm:3284 +msgid "Code attribute introspection" +msgstr "" + +#: gnu/packages/perl.scm:3285 +msgid "" +"This module allows code attributes of methods to be\n" +"introspected using Moose meta method objects." +msgstr "" + +#: gnu/packages/perl.scm:3311 +msgid "Subclassing of non-Moose classes" +msgstr "" + +#: gnu/packages/perl.scm:3312 +msgid "" +"MooseX::NonMoose allows for easily subclassing non-Moose\n" +"classes with Moose, taking care of the details connected with doing this, such\n" +"as setting up proper inheritance from Moose::Object and installing (and\n" +"inlining, at make_immutable time) a constructor that makes sure things like\n" +"BUILD methods are called. It tries to be as non-intrusive as possible." +msgstr "" + +#: gnu/packages/perl.scm:3341 +msgid "Extension of Params::Validate using Moose's types" +msgstr "" + +#: gnu/packages/perl.scm:3342 +msgid "" +"This module fills a gap in Moose by adding method parameter\n" +"validation to Moose." +msgstr "" + +#: gnu/packages/perl.scm:3363 +msgid "Apply roles to a related Perl class" +msgstr "" + +#: gnu/packages/perl.scm:3364 +msgid "" +"This module applies roles to make a subclass instead of\n" +"manually setting up a subclass." +msgstr "" + +#: gnu/packages/perl.scm:3390 +msgid "Moose roles with composition parameters" +msgstr "" + +#: gnu/packages/perl.scm:3391 +msgid "" +"Because Moose roles serve many different masters, they\n" +"usually provide only the least common denominator of functionality. To\n" +"empower roles further, more configurability than -alias and -excludes is\n" +"required. Perhaps your role needs to know which method to call when it is\n" +"done processing, or what default value to use for its url attribute.\n" +"Parameterized roles offer a solution to these (and other) kinds of problems." +msgstr "" + +#: gnu/packages/perl.scm:3417 +msgid "Roles which support overloading" +msgstr "" + +#: gnu/packages/perl.scm:3418 +msgid "" +"MooseX::Role::WithOverloading allows you to write a\n" +"Moose::Role which defines overloaded operators and allows those overload\n" +"methods to be composed into the classes/roles/instances it's compiled to,\n" +"where plain Moose::Roles would lose the overloading." +msgstr "" + +#: gnu/packages/perl.scm:3440 +msgid "Name your accessors foo() and set_foo()" +msgstr "" + +#: gnu/packages/perl.scm:3441 +msgid "" +"This module does not provide any methods. Simply loading it\n" +"changes the default naming policy for the loading class so that accessors are\n" +"separated into get and set methods. The get methods have the same name as the\n" +"accessor, while set methods are prefixed with \"_set_\"." +msgstr "" + +#: gnu/packages/perl.scm:3467 +msgid "Strict object constructors for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3468 +msgid "" +"Simply loading this module makes your constructors\n" +"\"strict\". If your constructor is called with an attribute init argument\n" +"that your class does not declare, then it calls Moose->throw_error()." +msgstr "" + +#: gnu/packages/perl.scm:3496 +msgid "Trait loading and resolution for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3497 +msgid "" +"Adds support on top of MooseX::Traits for class precedence\n" +"search for traits and some extra attributes." +msgstr "" + +#: gnu/packages/perl.scm:3522 +msgid "Organise your Moose types in libraries" +msgstr "" + +#: gnu/packages/perl.scm:3523 +msgid "" +"This package lets you declare types using short names, but\n" +"behind the scenes it namespaces all your type declarations, effectively\n" +"prevent name clashes between packages." +msgstr "" + +#: gnu/packages/perl.scm:3554 +msgid "DateTime related constraints and coercions for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3555 +msgid "" +"This module packages several Moose::Util::TypeConstraints\n" +"with coercions, designed to work with the DateTime suite of objects." +msgstr "" + +#: gnu/packages/perl.scm:3587 +msgid "Extensions to MooseX::Types::DateTime" +msgstr "" + +#: gnu/packages/perl.scm:3588 +msgid "" +"This module builds on MooseX::Types::DateTime to add\n" +"additional custom types and coercions. Since it builds on an existing type,\n" +"all coercions and constraints are inherited." +msgstr "" + +#: gnu/packages/perl.scm:3617 +msgid "ClassName type constraints for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3618 +msgid "" +"MooseX::Types::LoadableClass provides a ClassName type\n" +"constraint with coercion to load the class." +msgstr "" + +#: gnu/packages/perl.scm:3642 +msgid "Moosish types and type builder" +msgstr "" + +#: gnu/packages/perl.scm:3643 +msgid "" +"MooX::Types::MooseLike provides a possibility to build your\n" +"own set of Moose-like types. These custom types can then be used to describe\n" +"fields in Moo-based classes." +msgstr "" + +#: gnu/packages/perl.scm:3662 +msgid "MRO interface compatibility for Perls < 5.9.5" +msgstr "" + +#: gnu/packages/perl.scm:3663 +msgid "" +"The \"mro\" namespace provides several utilities for dealing\n" +"with method resolution order and method caching in general in Perl 5.9.5 and\n" +"higher. This module provides those interfaces for earlier versions of\n" +"Perl (back to 5.6.0)." +msgstr "" + +#: gnu/packages/perl.scm:3689 +msgid "Keep imports out of your namespace" +msgstr "" + +#: gnu/packages/perl.scm:3690 +msgid "" +"The namespace::autoclean pragma will remove all imported\n" +"symbols at the end of the current package's compile cycle. Functions called\n" +"in the package itself will still be bound by their name, but they won't show\n" +"up as methods on your class or instances. It is very similar to\n" +"namespace::clean, except it will clean all imported functions, no matter if\n" +"you imported them before or after you used the pragma. It will also not touch\n" +"anything that looks like a method." +msgstr "" + +#: gnu/packages/perl.scm:3716 +msgid "Keep imports and functions out of your namespace" +msgstr "" + +#: gnu/packages/perl.scm:3717 +msgid "" +"The namespace::clean pragma will remove all previously\n" +"declared or imported symbols at the end of the current package's compile\n" +"cycle. Functions called in the package itself will still be bound by their\n" +"name, but they won't show up as methods on your class or instances." +msgstr "" + +#: gnu/packages/perl.scm:3737 +msgid "Numeric comparisons" +msgstr "" + +#: gnu/packages/perl.scm:3738 +msgid "" +"Number::Compare compiles a simple comparison to an anonymous\n" +"subroutine, which you can call with a value to be tested against." +msgstr "" + +#: gnu/packages/perl.scm:3756 +msgid "Generate cryptographic signatures for objects" +msgstr "" + +#: gnu/packages/perl.scm:3757 +msgid "" +"Object::Signature is an abstract base class that you can\n" +"inherit from in order to allow your objects to generate unique cryptographic\n" +"signatures." +msgstr "" + +#: gnu/packages/perl.scm:3779 +msgid "Anonymous packages" +msgstr "" + +#: gnu/packages/perl.scm:3780 +msgid "" +"This module allows for anonymous packages that are\n" +"independent of the main namespace and only available through an object\n" +"instance, not by name." +msgstr "" + +#: gnu/packages/perl.scm:3808 +msgid "Manage deprecation warnings for your distribution" +msgstr "" + +#: gnu/packages/perl.scm:3809 +msgid "" +"This module allows you to manage a set of deprecations for\n" +"one or more modules." +msgstr "" + +#: gnu/packages/perl.scm:3836 +msgid "Routines for manipulating stashes" +msgstr "" + +#: gnu/packages/perl.scm:3837 +msgid "" +"Manipulating stashes (Perl's symbol tables) is occasionally\n" +"necessary, but incredibly messy, and easy to get wrong. This module hides all\n" +"of that behind a simple API." +msgstr "" + +#: gnu/packages/perl.scm:3860 +msgid "Faster implementation of the Package::Stash API" +msgstr "" + +#: gnu/packages/perl.scm:3861 +msgid "" +"This is a backend for Package::Stash, which provides the\n" +"functionality in a way that's less buggy and much faster. It will be used by\n" +"default if it's installed, and should be preferred in all environments with a\n" +"compiler." +msgstr "" + +#: gnu/packages/perl.scm:3881 +msgid "Play with other peoples' lexical variables" +msgstr "" + +#: gnu/packages/perl.scm:3882 +msgid "" +"PadWalker is a module which allows you to inspect (and even\n" +"change) lexical variables in any subroutine which called you. It will only\n" +"show those variables which are in scope at the point of the call. PadWalker\n" +"is particularly useful for debugging." +msgstr "" + +#: gnu/packages/perl.scm:3903 +msgid "Simple, compact and correct param-checking functions" +msgstr "" + +#: gnu/packages/perl.scm:3905 +msgid "" +"Params::Util provides a basic set of importable functions that makes\n" +"checking parameters easier." +msgstr "" + +#: gnu/packages/perl.scm:3928 +msgid "Validate method/function parameters" +msgstr "" + +#: gnu/packages/perl.scm:3929 +msgid "" +"The Params::Validate module allows you to validate method or\n" +"function call parameters to an arbitrary level of specificity." +msgstr "" + +#: gnu/packages/perl.scm:3947 +msgid "Create and manipulate PAR distributions" +msgstr "" + +#: gnu/packages/perl.scm:3948 +msgid "" +"PAR::Dist is a toolkit to create and manipulate PAR\n" +"distributions." +msgstr "" + +#: gnu/packages/perl.scm:3967 +msgid "" +"Allows you to both load one or more modules, while setting\n" +"up inheritance from those modules at the same time." +msgstr "" + +#: gnu/packages/perl.scm:3985 +msgid "Path specification manipulation" +msgstr "" + +#: gnu/packages/perl.scm:3986 +msgid "" +"Path::Class is a module for manipulation of file and\n" +"directory specifications in a cross-platform manner." +msgstr "" + +#: gnu/packages/perl.scm:4006 +msgid "Check for comprehensive documentation of a module" +msgstr "" + +#: gnu/packages/perl.scm:4007 +msgid "" +"This module provides a mechanism for determining if the pod\n" +"for a given module is comprehensive." +msgstr "" + +#: gnu/packages/perl.scm:4024 +msgid "Parsing library for text in Pod format" +msgstr "" + +#: gnu/packages/perl.scm:4025 +msgid "" +"Pod::Simple is a Perl library for parsing text in\n" +"the Pod (plain old documentation) markup language that is typically\n" +"used for writing documentation for Perl and for Perl modules." +msgstr "" + +#: gnu/packages/perl.scm:4045 +msgid "GNU C library compatible strftime for loggers and servers" +msgstr "" + +#: gnu/packages/perl.scm:4046 +msgid "" +"POSIX::strftime::Compiler provides GNU C library compatible\n" +"strftime(3). But this module is not affected by the system locale. This\n" +"feature is useful when you want to write loggers, servers, and portable\n" +"applications." +msgstr "" + +#: gnu/packages/perl.scm:4064 +msgid "Information about the currently running perl" +msgstr "" + +#: gnu/packages/perl.scm:4066 +msgid "" +"Probe::Perl provides methods for obtaining information about the\n" +"currently running perl interpreter. It originally began life as code in the\n" +"Module::Build project, but has been externalized here for general use." +msgstr "" + +#: gnu/packages/perl.scm:4087 +msgid "Create read-only scalars, arrays, hashes" +msgstr "" + +#: gnu/packages/perl.scm:4088 +msgid "" +"This module provides a facility for creating non-modifiable\n" +"variables in Perl. This is useful for configuration files, headers, etc. It\n" +"can also be useful as a development and debugging tool for catching updates to\n" +"variables that should not be changed." +msgstr "" + +#: gnu/packages/perl.scm:4106 +msgid "Provide commonly requested regular expressions" +msgstr "" + +#: gnu/packages/perl.scm:4108 +msgid "" +"This module exports a single hash (`%RE') that stores or generates\n" +"commonly needed regular expressions. Patterns currently provided include:\n" +"balanced parentheses and brackets, delimited text (with escapes), integers and\n" +"floating-point numbers in any base (up to 36), comments in 44 languages,\n" +"offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip\n" +"codes." +msgstr "" + +#: gnu/packages/perl.scm:4138 +msgid "Roles, as a slice of Moose" +msgstr "" + +#: gnu/packages/perl.scm:4139 +msgid "Role::Tiny is a minimalist role composition tool." +msgstr "" + +#: gnu/packages/perl.scm:4156 +msgid "Call isa, can, does, and DOES safely" +msgstr "" + +#: gnu/packages/perl.scm:4157 +msgid "" +"This module allows you to call isa, can, does, and DOES\n" +"safely on things that may not be objects." +msgstr "" + +#: gnu/packages/perl.scm:4175 +msgid "Lexically-scoped resource management" +msgstr "" + +#: gnu/packages/perl.scm:4176 +msgid "" +"This module provides a convenient way to perform cleanup or\n" +"other forms of resource management at the end of a scope. It is particularly\n" +"useful when dealing with exceptions: the Scope::Guard constructor takes a\n" +"reference to a subroutine that is guaranteed to be called even if the thread\n" +"of execution is aborted prematurely. This effectively allows lexically-scoped\n" +"\"promises\" to be made that are automatically honoured by perl's garbage\n" +"collector." +msgstr "" + +#: gnu/packages/perl.scm:4199 +msgid "Infinite sets" +msgstr "" + +#: gnu/packages/perl.scm:4200 +msgid "Set::Infinite is a set theory module for infinite sets." +msgstr "" + +#: gnu/packages/perl.scm:4220 +msgid "Unordered collections of Perl Objects" +msgstr "" + +#: gnu/packages/perl.scm:4221 +msgid "" +"Set::Object provides efficient sets, unordered collections\n" +"of Perl objects without duplicates for scalars and references." +msgstr "" + +#: gnu/packages/perl.scm:4239 +msgid "Set operations for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4240 +msgid "" +"The first priority of Set::Scalar is to be a convenient\n" +"interface to sets (as in: unordered collections of Perl scalars). While not\n" +"designed to be slow or big, neither has it been designed to be fast or\n" +"compact." +msgstr "" + +#: gnu/packages/perl.scm:4260 +msgid "Spiffy Perl Interface Framework For You" +msgstr "" + +#: gnu/packages/perl.scm:4261 +msgid "" +"Spiffy is a framework and methodology for doing object\n" +"oriented (OO) programming in Perl. Spiffy combines the best parts of\n" +"Exporter.pm, base.pm, mixin.pm and SUPER.pm into one magic foundation class.\n" +"It attempts to fix all the nits and warts of traditional Perl OO, in a clean,\n" +"straightforward and (perhaps someday) standard way. Spiffy borrows ideas from\n" +"other OO languages like Python, Ruby, Java and Perl 6." +msgstr "" + +#: gnu/packages/perl.scm:4283 +msgid "Temporary buffer to save bytes" +msgstr "" + +#: gnu/packages/perl.scm:4284 +msgid "" +"Stream::Buffered is a buffer class to store arbitrary length\n" +"of byte strings and then get a seekable filehandle once everything is\n" +"buffered. It uses PerlIO and/or temporary file to save the buffer depending\n" +"on the length of the size." +msgstr "" + +#: gnu/packages/perl.scm:4304 +msgid "Turn on strict and make all warnings fatal" +msgstr "" + +#: gnu/packages/perl.scm:4305 +msgid "" +"Strictures turns on strict and make all warnings fatal when\n" +"run from within a source-controlled directory." +msgstr "" + +#: gnu/packages/perl.scm:4323 +msgid "Camelcase and de-camelcase" +msgstr "" + +#: gnu/packages/perl.scm:4324 +msgid "" +"This module may be used to convert from under_score text to\n" +"CamelCase and back again." +msgstr "" + +#: gnu/packages/perl.scm:4344 +msgid "Rewrite strings based on a set of known prefixes" +msgstr "" + +#: gnu/packages/perl.scm:4345 +msgid "" +"This module allows you to rewrite strings based on a set of\n" +"known prefixes." +msgstr "" + +#: gnu/packages/perl.scm:4367 +msgid "Sophisticated exporter for custom-built routines" +msgstr "" + +#: gnu/packages/perl.scm:4369 +msgid "" +"Sub::Exporter provides a sophisticated alternative to Exporter.pm for\n" +"custom-built routines." +msgstr "" + +#: gnu/packages/perl.scm:4388 +msgid "Only use Sub::Exporter if you need it" +msgstr "" + +#: gnu/packages/perl.scm:4389 +msgid "" +"Sub::Exporter is an incredibly powerful module, but with\n" +"that power comes great responsibility, as well as some runtime penalties.\n" +"This module is a \"Sub::Exporter\" wrapper that will let your users just use\n" +"Exporter if all they are doing is picking exports, but use \"Sub::Exporter\"\n" +"if your users try to use \"Sub::Exporter\"'s more advanced features, like\n" +"renaming exports, if they try to use them." +msgstr "" + +#: gnu/packages/perl.scm:4411 +msgid "Retrieve names of code references" +msgstr "" + +#: gnu/packages/perl.scm:4412 +msgid "" +"Sub::Identify allows you to retrieve the real name of code\n" +"references." +msgstr "" + +#: gnu/packages/perl.scm:4431 +msgid "Install subroutines into packages easily" +msgstr "" + +#: gnu/packages/perl.scm:4433 +msgid "" +"Sub::Install makes it easy to install subroutines into packages without\n" +"the unsightly mess of C or typeglobs lying about where just anyone\n" +"can see them." +msgstr "" + +#: gnu/packages/perl.scm:4454 +msgid "(Re)name a sub" +msgstr "" + +#: gnu/packages/perl.scm:4455 +msgid "" +"Assigns a new name to referenced sub. If package\n" +"specification is omitted in the name, then the current package is used. The\n" +"return value is the sub." +msgstr "" + +#: gnu/packages/perl.scm:4474 +msgid "Apparently run a function in a higher stack frame" +msgstr "" + +#: gnu/packages/perl.scm:4475 +msgid "" +"Like Tcl's uplevel() function, but not quite so dangerous.\n" +"The idea is just to fool caller(). All the really naughty bits of Tcl's\n" +"uplevel() are avoided." +msgstr "" + +#: gnu/packages/perl.scm:4494 +msgid "Perl extension for generating SVG documents" +msgstr "" + +#: gnu/packages/perl.scm:4495 +msgid "" +"SVG is a Perl module which generates a nested data structure\n" +"containing the DOM representation of an SVG (Scalable Vector Graphics) image.\n" +"Using SVG, you can generate SVG objects, embed other SVG instances into it,\n" +"access the DOM object, create and access Javascript, and generate SMIL\n" +"animation content." +msgstr "" + +#: gnu/packages/perl.scm:4514 +msgid "Perl extension for getting CPU information" +msgstr "" + +#: gnu/packages/perl.scm:4516 +msgid "" +"In responce to a post on perlmonks.org, a module for counting the number\n" +"of CPU's on a system. Support has now also been added for type of CPU and\n" +"clock speed." +msgstr "" + +#: gnu/packages/perl.scm:4538 +msgid "Get full hostname in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4539 +msgid "" +"Sys::Hostname::Long tries very hard to get the full hostname\n" +"of a system." +msgstr "" + +#: gnu/packages/perl.scm:4557 +msgid "Ensure that a platform has weaken support" +msgstr "" + +#: gnu/packages/perl.scm:4558 +msgid "" +"One recurring problem in modules that use Scalar::Util's\n" +"weaken function is that it is not present in the pure-perl variant. If\n" +"Scalar::Util is not available at all, it will issue a normal dependency on the\n" +"module. However, if Scalar::Util is relatively new ( it is >= 1.19 ) and the\n" +"module does not have weaken, the install will bail out altogether with a long\n" +"error encouraging the user to seek support." +msgstr "" + +#: gnu/packages/perl.scm:4583 +msgid "Template processing system for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4584 +msgid "" +"The Template Toolkit is a collection of modules which\n" +"implement an extensible template processing system. It was originally\n" +"designed and remains primarily useful for generating dynamic web content, but\n" +"it can be used equally well for processing any other kind of text based\n" +"documents: HTML, XML, POD, PostScript, LaTeX, and so on." +msgstr "" + +#: gnu/packages/perl.scm:4607 +msgid "Profiling for Template Toolkit" +msgstr "" + +#: gnu/packages/perl.scm:4608 +msgid "" +"Template::Timer provides inline profiling of the template\n" +"processing in Perl code." +msgstr "" + +#: gnu/packages/perl.scm:4626 +msgid "Detect encoding of the current terminal" +msgstr "" + +#: gnu/packages/perl.scm:4627 +msgid "" +"Term::Encoding is a simple module to detect the encoding of\n" +"the current terminal expects in various ways." +msgstr "" + +#: gnu/packages/perl.scm:4651 +msgid "Progress meter on a standard terminal" +msgstr "" + +#: gnu/packages/perl.scm:4652 +msgid "" +"Term::ProgressBar provides a simple progress bar on the\n" +"terminal, to let the user know that something is happening, roughly how much\n" +"stuff has been done, and maybe an estimate at how long remains." +msgstr "" + +#: gnu/packages/perl.scm:4675 +msgid "Progress meter if run interactively" +msgstr "" + +#: gnu/packages/perl.scm:4676 +msgid "" +"Term::ProgressBar is a wonderful module for showing progress\n" +"bars on the terminal. This module acts very much like that module when it is\n" +"run interactively. However, when it is not run interactively (for example, as\n" +"a cron job) then it does not show the progress bar." +msgstr "" + +#: gnu/packages/perl.scm:4698 +msgid "Simple progress bars" +msgstr "" + +#: gnu/packages/perl.scm:4699 +msgid "" +"Term::ProgressBar::Simple tells you how much work has been\n" +"done, how much is left to do, and estimate how long it will take." +msgstr "" + +#: gnu/packages/perl.scm:4717 +msgid "Simple terminal control" +msgstr "Simpel terminalkontrol" + +#: gnu/packages/perl.scm:4718 +msgid "" +"This module, ReadKey, provides ioctl control for terminals\n" +"so the input modes can be changed (thus allowing reads of a single character\n" +"at a time), and also provides non-blocking reads of stdin, as well as several\n" +"other terminal related features, including retrieval/modification of the\n" +"screen size, and retrieval/modification of the control characters." +msgstr "" + +#: gnu/packages/perl.scm:4745 +msgid "Data-driven testing framework for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4746 +msgid "" +"Test::Base gives a way to trivially write your own test\n" +"framework base class. It concentrates on offering reusable data driven\n" +"patterns, so that you can write tests with a minimum of code." +msgstr "" + +#: gnu/packages/perl.scm:4777 +msgid "Check for uncleaned imports" +msgstr "" + +#: gnu/packages/perl.scm:4778 +msgid "" +"This module lets you check your module's namespaces for\n" +"imported functions you might have forgotten to remove with\n" +"namespace::autoclean or namespace::clean and are therefore available to be\n" +"called as methods, which usually isn't want you want." +msgstr "" + +#: gnu/packages/perl.scm:4798 +msgid "Flexible deep comparison for the Test::Builder framework" +msgstr "" + +#: gnu/packages/perl.scm:4800 +msgid "" +"Test::Deep compares two structures by going through each level, ensuring\n" +"that the values match, that arrays and hashes have the same elements and that\n" +"references are blessed into the correct class. It also handles circular data\n" +"structures without getting caught in an infinite loop." +msgstr "" + +#: gnu/packages/perl.scm:4825 +msgid "Test strings and data structures and show differences" +msgstr "" + +#: gnu/packages/perl.scm:4826 +msgid "" +"This module exports three test functions and four diff-style\n" +"functions." +msgstr "" + +#: gnu/packages/perl.scm:4847 +msgid "Perl extension for maintaining test directories" +msgstr "" + +#: gnu/packages/perl.scm:4848 +msgid "" +"Testing code can involve making sure that files are created\n" +"and deleted as expected. Doing this manually can be error prone, as it's easy\n" +"to forget a file, or miss that some unexpected file was added. This module\n" +"simplifies maintaining test directories by tracking their status as they are\n" +"modified or tested with this API, making it simple to test both individual\n" +"files, as well as to verify that there are no missing or unknown files." +msgstr "" + +#: gnu/packages/perl.scm:4874 +msgid "Test exception based code" +msgstr "" + +#: gnu/packages/perl.scm:4875 +msgid "" +"This module provides a few convenience methods for testing\n" +"exception based code. It is built with Test::Builder and plays happily with\n" +"Test::More and friends." +msgstr "" + +#: gnu/packages/perl.scm:4895 +msgid "Simple helpers for testing code with exceptions" +msgstr "" + +#: gnu/packages/perl.scm:4896 +msgid "" +"Test::Fatal is an alternative to the popular\n" +"Test::Exception. It does much less, but should allow greater flexibility in\n" +"testing exception-throwing code with about the same amount of typing." +msgstr "" + +#: gnu/packages/perl.scm:4926 +msgid "Run Perl standard test scripts with statistics" +msgstr "" + +#: gnu/packages/perl.scm:4927 +msgid "" +"Simple test harness which allows tests to be run and results\n" +"automatically aggregated and output to STDOUT." +msgstr "" + +#: gnu/packages/perl.scm:4945 +msgid "Traces memory leaks in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4946 +msgid "" +"Test::LeakTrace provides several functions that trace memory\n" +"leaks. This module scans arenas, the memory allocation system, so it can\n" +"detect any leaked SVs in given blocks." +msgstr "" + +#: gnu/packages/perl.scm:4965 +msgid "Tests strings for equality, with more helpful failures" +msgstr "" + +#: gnu/packages/perl.scm:4966 +msgid "" +"This module provides some drop-in replacements for the\n" +"string comparison functions of Test::More, but which are more suitable when\n" +"you test against long strings." +msgstr "" + +#: gnu/packages/perl.scm:4993 +msgid "Emulate troublesome interfaces in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4994 +msgid "" +"Test::MockObject allows you to create objects that conform\n" +"to particular interfaces with very little code. You don't have to reimplement\n" +"the behavior, just the input and the output." +msgstr "" + +#: gnu/packages/perl.scm:5013 +msgid "Replaces actual time with simulated time" +msgstr "" + +#: gnu/packages/perl.scm:5014 +msgid "" +"This module was created to enable test suites to test code\n" +"at specific points in time. Specifically it overrides localtime, gmtime and\n" +"time at compile time and then relies on the user supplying a mock time via\n" +"set_relative_time, set_absolute_time or set_fixed_time to alter future calls\n" +"to gmtime,time or localtime." +msgstr "" + +#: gnu/packages/perl.scm:5041 +msgid "Most commonly needed test functions and features" +msgstr "" + +#: gnu/packages/perl.scm:5042 +msgid "" +"This module provides the most commonly used testing\n" +"functions, along with automatically turning on strict and warning and gives a\n" +"bit more fine-grained control over test suites." +msgstr "" + +#: gnu/packages/perl.scm:5060 +msgid "Ensure no warnings are produced while testing" +msgstr "" + +#: gnu/packages/perl.scm:5062 +msgid "" +"This modules causes any warnings during testing to be captured and\n" +"stored. It automatically adds an extra test that will run when your script\n" +"ends to check that there were no warnings. If there were any warnings, the\n" +"test will fail and output diagnostics of where, when and what the warning was,\n" +"including a stack trace of what was going on when it occurred." +msgstr "" + +#: gnu/packages/perl.scm:5087 +msgid "Utilities to test STDOUT and STDERR messages" +msgstr "" + +#: gnu/packages/perl.scm:5089 +msgid "" +"Test::Output provides a simple interface for testing output sent to\n" +"STDOUT or STDERR. A number of different utilities are included to try and be\n" +"as flexible as possible to the tester." +msgstr "" + +#: gnu/packages/perl.scm:5110 +msgid "Check for POD errors in files" +msgstr "" + +#: gnu/packages/perl.scm:5111 +msgid "" +"Check POD files for errors or warnings in a test file, using\n" +"Pod::Simple to do the heavy lifting." +msgstr "" + +#: gnu/packages/perl.scm:5131 +msgid "Check for pod coverage" +msgstr "" + +#: gnu/packages/perl.scm:5132 +msgid "" +"This module adds a test to your Perl distribution which\n" +"checks for pod coverage of all appropriate files." +msgstr "" + +#: gnu/packages/perl.scm:5150 +msgid "Checks to see if the module can be loaded" +msgstr "" + +#: gnu/packages/perl.scm:5151 +msgid "" +"Test::Requires checks to see if the module can be loaded.\n" +"If this fails, then rather than failing tests this skips all tests." +msgstr "" + +#: gnu/packages/perl.scm:5170 +msgid "Basic cross-platform tests for scripts" +msgstr "" + +#: gnu/packages/perl.scm:5172 +msgid "" +"The intent of the Test::Script module is to provide a series of basic\n" +"tests for 80% of the testing you will need to do for scripts in the script (or\n" +"bin as is also commonly used) paths of your Perl distribution." +msgstr "" + +#: gnu/packages/perl.scm:5195 +msgid "Fork test in Perl" +msgstr "" + +#: gnu/packages/perl.scm:5196 +msgid "" +"Test::SharedFork is a utility module for Test::Builder. It\n" +"makes fork(2) safe to use in test cases." +msgstr "" + +#: gnu/packages/perl.scm:5212 +msgid "Basic utilities for writing tests" +msgstr "" + +#: gnu/packages/perl.scm:5214 +msgid "Test::Simple contains basic utilities for writing tests." +msgstr "" + +#: gnu/packages/perl.scm:5231 +msgid "Simplify running Test::Builder tests" +msgstr "" + +#: gnu/packages/perl.scm:5233 +msgid "" +"Test::Tester allows testing of test modules based on Test::Builder with\n" +"a minimum of effort." +msgstr "" + +#: gnu/packages/perl.scm:5257 +msgid "Trap exit codes, exceptions, output, etc." +msgstr "" + +#: gnu/packages/perl.scm:5258 +msgid "" +"This module is primarily (but not exclusively) for use in\n" +"test scripts: A block eval configurable and extensible but by default trapping\n" +"STDOUT, STDERR, warnings, exceptions, would-be exit codes, and return values\n" +"from boxed blocks of test code." +msgstr "" + +#: gnu/packages/perl.scm:5278 +msgid "UTF-8 testing in Perl" +msgstr "" + +#: gnu/packages/perl.scm:5279 +msgid "" +"This module is a collection of tests useful for dealing with\n" +"UTF-8 strings in Perl. This module has two types of tests: The validity tests\n" +"check if a string is valid and not corrupt, whereas the characteristics tests\n" +"will check that string has a given set of characteristics." +msgstr "" + +#: gnu/packages/perl.scm:5301 +msgid "Perl extension to test methods for warnings" +msgstr "" + +#: gnu/packages/perl.scm:5302 +msgid "" +"This module provides a few convenience methods for testing\n" +"warning based code." +msgstr "" + +#: gnu/packages/perl.scm:5320 +msgid "Test for warnings and the lack of them" +msgstr "" + +#: gnu/packages/perl.scm:5321 +msgid "" +"This module is intended to be used as a drop-in replacement\n" +"for Test::NoWarnings. It also adds an extra test, but runs this test before\n" +"done_testing calculates the test count, rather than after. It does this by\n" +"hooking into done_testing as well as via an END block. You can declare a\n" +"plan, or not, and things will still Just Work." +msgstr "" + +#: gnu/packages/perl.scm:5342 +msgid "Test fallback behaviour in absence of modules" +msgstr "" + +#: gnu/packages/perl.scm:5343 +msgid "" +"This module allows you to deliberately hide modules from a\n" +"program even though they are installed. This is mostly useful for testing\n" +"modules that have a fallback when a certain dependency module is not\n" +"installed." +msgstr "" + +#: gnu/packages/perl.scm:5369 +msgid "Dynamic generation of tests" +msgstr "" + +#: gnu/packages/perl.scm:5370 +msgid "" +"The Test::WriteVariants module provides for the dynamic\n" +"generation of tests in nested combinations of contexts." +msgstr "" + +#: gnu/packages/perl.scm:5390 +msgid "Testing module for YAML implementations" +msgstr "" + +#: gnu/packages/perl.scm:5391 +msgid "" +"Test::YAML is a subclass of Test::Base with YAML specific\n" +"support." +msgstr "" + +#: gnu/packages/perl.scm:5409 +msgid "Align text" +msgstr "" + +#: gnu/packages/perl.scm:5410 +msgid "" +"Text::Aligner exports a single function, align(), which is\n" +"used to justify strings to various alignment styles." +msgstr "" + +#: gnu/packages/perl.scm:5428 +msgid "Extract delimited text sequences from strings" +msgstr "" + +#: gnu/packages/perl.scm:5429 +msgid "" +"The Text::Balanced module can be used to extract delimited\n" +"text sequences from strings." +msgstr "" + +#: gnu/packages/perl.scm:5447 +msgid "Manipulate comma-separated values" +msgstr "" + +#: gnu/packages/perl.scm:5448 +msgid "" +"Text::CSV provides facilities for the composition and\n" +"decomposition of comma-separated values. An instance of the Text::CSV class\n" +"can combine fields into a CSV string and parse a CSV string into fields." +msgstr "" + +#: gnu/packages/perl.scm:5469 +msgid "Perform diffs on files and record sets" +msgstr "" + +#: gnu/packages/perl.scm:5470 +msgid "" +"Text::Diff provides a basic set of services akin to the GNU\n" +"diff utility. It is not anywhere near as feature complete as GNU diff, but it\n" +"is better integrated with Perl and available on all platforms. It is often\n" +"faster than shelling out to a system's diff executable for small files, and\n" +"generally slower on larger files." +msgstr "" + +#: gnu/packages/perl.scm:5491 +msgid "Match globbing patterns against text" +msgstr "" + +#: gnu/packages/perl.scm:5492 +msgid "" +"Text::Glob implements glob(3) style matching that can be\n" +"used to match against text, rather than fetching names from a filesystem. If\n" +"you want to do full file globbing use the File::Glob module instead." +msgstr "" + +#: gnu/packages/perl.scm:5511 +msgid "Simple ASCII tables" +msgstr "" + +#: gnu/packages/perl.scm:5512 +msgid "Text::SimpleTable draws simple ASCII tables." +msgstr "" + +#: gnu/packages/perl.scm:5531 +msgid "Organize Data in Tables" +msgstr "" + +#: gnu/packages/perl.scm:5532 +msgid "Text::Table renders plaintext tables." +msgstr "" + +#: gnu/packages/perl.scm:5549 +msgid "Provide plain ASCII transliterations of Unicode text" +msgstr "" + +#: gnu/packages/perl.scm:5550 +msgid "" +"Text::Unidecode provides a function, unidecode(...) that\n" +"takes Unicode data and tries to represent it in US-ASCII characters (i.e., the\n" +"universally displayable characters between 0x00 and 0x7F). The representation\n" +"is almost always an attempt at transliteration-- i.e., conveying, in Roman\n" +"letters, the pronunciation expressed by the text in some other writing\n" +"system." +msgstr "" + +#: gnu/packages/perl.scm:5578 +msgid "Role for classes that can be thrown" +msgstr "" + +#: gnu/packages/perl.scm:5579 +msgid "" +"Throwable is a role for classes that are meant to be thrown\n" +"as exceptions to standard program flow." +msgstr "" + +#: gnu/packages/perl.scm:5597 +msgid "Ordered associative arrays for Perl" +msgstr "" + +#: gnu/packages/perl.scm:5598 +msgid "" +"This Perl module implements Perl hashes that preserve the\n" +"order in which the hash elements were added. The order is not affected when\n" +"values corresponding to existing keys in the IxHash are changed. The elements\n" +"can also be set to any arbitrary supplied order. The familiar perl array\n" +"operations can also be performed on the IxHash." +msgstr "" + +#: gnu/packages/perl.scm:5621 +msgid "Tie to an existing Perl object" +msgstr "" + +#: gnu/packages/perl.scm:5622 +msgid "" +"This class provides a tie constructor that returns the\n" +"object it was given as it's first argument. This way side effects of calling\n" +"$object->TIEHASH are avoided." +msgstr "" + +#: gnu/packages/perl.scm:5644 +msgid "English expression of durations" +msgstr "" + +#: gnu/packages/perl.scm:5645 +msgid "" +"This module provides functions for expressing durations in\n" +"rounded or exact terms." +msgstr "" + +#: gnu/packages/perl.scm:5667 +msgid "Parse time duration strings" +msgstr "" + +#: gnu/packages/perl.scm:5668 +msgid "" +"Time::Duration::Parse is a module to parse human readable\n" +"duration strings like \"2 minutes\" and \"3 seconds\" to seconds." +msgstr "" + +#: gnu/packages/perl.scm:5686 +msgid "Efficiently compute time from local and GMT time" +msgstr "" + +#: gnu/packages/perl.scm:5687 +msgid "" +"This module provides functions that are the inverse of\n" +"built-in perl functions localtime() and gmtime(). They accept a date as a\n" +"six-element array, and return the corresponding time(2) value in seconds since\n" +"the system epoch." +msgstr "" + +#: gnu/packages/perl.scm:5707 +msgid "Date parsing/formatting subroutines" +msgstr "" + +#: gnu/packages/perl.scm:5708 +msgid "" +"This module provides routines for parsing date string into\n" +"time values and formatting dates into ASCII strings." +msgstr "" + +#: gnu/packages/perl.scm:5728 +msgid "Shift and scale time" +msgstr "" + +#: gnu/packages/perl.scm:5729 +msgid "" +"This module allows you to speed up your sleep(), alarm(),\n" +"and time() calls." +msgstr "" + +#: gnu/packages/perl.scm:5752 +msgid "Simple tree object" +msgstr "" + +#: gnu/packages/perl.scm:5753 +msgid "" +"This module in a fully object-oriented implementation of a\n" +"simple n-ary tree." +msgstr "" + +#: gnu/packages/perl.scm:5776 +msgid "Factory object for dispensing Visitor objects" +msgstr "" + +#: gnu/packages/perl.scm:5777 +msgid "" +"This module is a factory for dispensing\n" +"Tree::Simple::Visitor::* objects." +msgstr "" + +#: gnu/packages/perl.scm:5795 +msgid "Minimal try/catch with proper preservation of $@" +msgstr "" + +#: gnu/packages/perl.scm:5796 +msgid "" +"This module provides bare bones try/catch/finally statements\n" +"that are designed to minimize common mistakes with eval blocks, and nothing\n" +"else." +msgstr "" + +#: gnu/packages/perl.scm:5817 +msgid "Data types for common serialisation formats" +msgstr "" + +#: gnu/packages/perl.scm:5818 +msgid "" +"This module provides some extra datatypes that are used by\n" +"common serialisation formats such as JSON or CBOR." +msgstr "" + +#: gnu/packages/perl.scm:5836 +msgid "UNIVERSAL::can() reimplementation" +msgstr "" + +#: gnu/packages/perl.scm:5837 +msgid "" +"This module attempts to work around people calling\n" +"UNIVERSAL::can() as a function, which it is not." +msgstr "" + +#: gnu/packages/perl.scm:5857 +msgid "UNIVERSAL::isa() reimplementation" +msgstr "" + +#: gnu/packages/perl.scm:5858 +msgid "" +"This module attempts to recover from people calling\n" +"UNIVERSAL::isa as a function." +msgstr "" + +#: gnu/packages/perl.scm:5876 +msgid "Associate user-defined magic to variables from Perl" +msgstr "" + +#: gnu/packages/perl.scm:5877 +msgid "" +"Magic is Perl's way of enhancing variables. This mechanism\n" +"lets the user add extra data to any variable and hook syntactical\n" +"operations (such as access, assignment or destruction) that can be applied to\n" +"it. With this module, you can add your own magic to any variable without\n" +"having to write a single line of XS." +msgstr "" + +#: gnu/packages/perl.scm:5900 +msgid "YAML for Perl" +msgstr "" + +#: gnu/packages/perl.scm:5901 +msgid "" +"The YAML.pm module implements a YAML Loader and Dumper based\n" +"on the YAML 1.0 specification." +msgstr "" + +#: gnu/packages/perl.scm:5924 +msgid "Read/Write YAML files" +msgstr "" + +#: gnu/packages/perl.scm:5925 +msgid "" +"YAML::Tiny is a perl class for reading and writing\n" +"YAML-style files, written with as little code as possible, reducing load time\n" +"and memory overhead." +msgstr "" + +#: gnu/packages/perl.scm:5952 +msgid "Distribution metadata for a CPAN dist" +msgstr "" + +#: gnu/packages/perl.scm:5953 +msgid "" +"Software distributions released to the CPAN include a\n" +"META.json or, for older distributions, META.yml, which describes the\n" +"distribution, its contents, and the requirements for building and installing\n" +"the distribution. The data structure stored in the META.json file is\n" +"described in CPAN::Meta::Spec. CPAN::Meta provides a simple class to\n" +"represent this distribution metadata (or distmeta), along with some helpful\n" +"methods for interrogating that data." +msgstr "" + +#: gnu/packages/perl.scm:5976 +msgid "Set of version requirements for a CPAN dist" +msgstr "" + +#: gnu/packages/perl.scm:5977 +msgid "" +"A CPAN::Meta::Requirements object models a set of version\n" +"constraints like those specified in the META.yml or META.json files in CPAN\n" +"distributions, and as defined by CPAN::Meta::Spec. It can be built up by\n" +"adding more and more constraints, and will reduce them to the simplest\n" +"representation." +msgstr "" + +#: gnu/packages/perl.scm:6000 +msgid "Read and write a subset of YAML for CPAN Meta files" +msgstr "" + +#: gnu/packages/perl.scm:6001 +msgid "" +"This module implements a subset of the YAML specification\n" +"for use in reading and writing CPAN metadata files like META.yml and\n" +"MYMETA.yml." +msgstr "" + +#: gnu/packages/perl.scm:6022 +msgid "Build and install Perl modules" +msgstr "" + +#: gnu/packages/perl.scm:6023 +msgid "" +"\"Module::Build\" is a system for building, testing, and\n" +"installing Perl modules. It is meant to be an alternative to\n" +"\"ExtUtils::MakeMaker\". Developers may alter the behavior of the module\n" +"through subclassing in a much more straightforward way than with\n" +"\"MakeMaker\". It also does not require a \"make\" on your system - most of\n" +"the \"Module::Build\" code is pure-perl and written in a cross-platform way." +msgstr "" + +#: gnu/packages/perl.scm:6047 +msgid "Parse META.yml and META.json CPAN metadata files" +msgstr "" + +#: gnu/packages/perl.scm:6048 +msgid "" +"Parse::CPAN::Meta is a parser for META.json and META.yml\n" +"files, using JSON::PP and/or CPAN::Meta::YAML." +msgstr "" + +#: gnu/packages/perl.scm:6066 +msgid "Common Scalar and List utility subroutines" +msgstr "" + +#: gnu/packages/perl.scm:6067 +msgid "" +"This package contains a selection of subroutines that people\n" +"have expressed would be nice to have in the perl core, but the usage would not\n" +"really be high enough to warrant the use of a keyword, and the size so small\n" +"such that being individual extensions would be wasteful." +msgstr "" + +#: gnu/packages/photo.scm:61 +msgid "Raw image decoder" +msgstr "" + +#: gnu/packages/photo.scm:63 +msgid "" +"LibRaw is a library for reading RAW files obtained from digital photo\n" +"cameras (CRW/CR2, NEF, RAF, DNG, and others)." +msgstr "" + +#: gnu/packages/photo.scm:80 +msgid "Read and manipulate EXIF data in digital photographs" +msgstr "" + +#: gnu/packages/photo.scm:82 +msgid "" +"The libexif C library allows applications to read, edit, and save EXIF\n" +"data as produced by digital cameras." +msgstr "" + +#: gnu/packages/photo.scm:107 +msgid "Accessing digital cameras" +msgstr "" + +#: gnu/packages/photo.scm:109 +msgid "" +"This is the library backend for gphoto2. It contains the code for PTP,\n" +"MTP, and other vendor specific protocols for controlling and transferring data\n" +"from digital cameras." +msgstr "" + +#: gnu/packages/photo.scm:150 +msgid "Command-line tools to access digital cameras" +msgstr "" + +#: gnu/packages/photo.scm:152 +msgid "" +"Gphoto2 is a set of command line utilities for manipulating a large\n" +"number of different digital cameras. Through libgphoto2, it supports PTP,\n" +"MTP, and much more." +msgstr "" + +#: gnu/packages/photo.scm:186 +msgid "Program and Perl library to manipulate EXIF tags" +msgstr "" + +#: gnu/packages/photo.scm:188 +msgid "" +"This package provides the 'exiftool' command and the 'Image::ExifTool'\n" +"Perl library to manipulate EXIF tags of digital images." +msgstr "" + +#: gnu/packages/photo.scm:211 +msgid "Library for panoramic images" +msgstr "" + +#: gnu/packages/photo.scm:213 +msgid "" +"The libpano13 package contains the backend library written by the\n" +"Panorama Tools project for building panoramic images from a set of\n" +"overlapping images, as well as some command line tools." +msgstr "" + +#: gnu/packages/photo.scm:255 +msgid "Tools for combining and blending images" +msgstr "" + +#: gnu/packages/photo.scm:257 +msgid "" +"Enblend blends away the seams in a panoramic image mosaic using a\n" +"multi-resolution spline. Enfuse merges different exposures of the same\n" +"scene to produce an image that looks much like a tone-mapped image." +msgstr "" + +#: gnu/packages/qemu.scm:119 +msgid "Machine emulator and virtualizer (without GUI)" +msgstr "" + +#: gnu/packages/qemu.scm:121 +msgid "" +"QEMU is a generic machine emulator and virtualizer.\n" +"\n" +"When used as a machine emulator, QEMU can run OSes and programs made for one\n" +"machine (e.g. an ARM board) on a different machine---e.g., your own PC. By\n" +"using dynamic translation, it achieves very good performance.\n" +"\n" +"When used as a virtualizer, QEMU achieves near native performances by\n" +"executing the guest code directly on the host CPU. QEMU supports\n" +"virtualization when executing under the Xen hypervisor or using\n" +"the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,\n" +"server and embedded PowerPC, and S390 guests." +msgstr "" + +#: gnu/packages/qemu.scm:143 +msgid "Machine emulator and virtualizer" +msgstr "" + +#: gnu/packages/ratpoison.scm:85 +msgid "Simple mouse-free tiling window manager" +msgstr "" + +#: gnu/packages/ratpoison.scm:87 +msgid "" +"Ratpoison is a simple window manager with no fat library\n" +"dependencies, no fancy graphics, no window decorations, and no\n" +"rodent dependence. It is largely modelled after GNU Screen which\n" +"has done wonders in the virtual terminal market.\n" +"\n" +"The screen can be split into non-overlapping frames. All windows\n" +"are kept maximized inside their frames to take full advantage of\n" +"your precious screen real estate.\n" +"\n" +"All interaction with the window manager is done through keystrokes.\n" +"Ratpoison has a prefix map to minimize the key clobbering that\n" +"cripples Emacs and other quality pieces of software." +msgstr "" + +#: gnu/packages/readline.scm:68 +msgid "Edit command lines while typing, with history support" +msgstr "" + +#: gnu/packages/readline.scm:70 +msgid "" +"The GNU readline library allows users to edit command lines as they\n" +"are typed in. It can maintain a searchable history of previously entered\n" +"commands, letting you easily recall, edit and re-enter past commands. It\n" +"features both Emacs-like and vi-like keybindings, making its usage\n" +"comfortable for anyone." +msgstr "" + +#: gnu/packages/scanner.scm:70 +msgid "Raster image scanner library and drivers" +msgstr "" + +#: gnu/packages/scanner.scm:71 +msgid "" +"SANE stands for \"Scanner Access Now Easy\" and is an API\n" +"proving access to any raster image scanner hardware (flatbed scanner,\n" +"hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The\n" +"package contains the library and drivers." +msgstr "" + +#: gnu/packages/scheme.scm:132 +msgid "A Scheme implementation with integrated editor and debugger" +msgstr "" + +#: gnu/packages/scheme.scm:134 +msgid "" +"GNU/MIT Scheme is an implementation of the Scheme programming\n" +"language. It provides an interpreter, a compiler and a debugger. It also\n" +"features an integrated Emacs-like editor and a large runtime library." +msgstr "" + +#: gnu/packages/scheme.scm:217 +msgid "Efficient Scheme compiler" +msgstr "" + +#: gnu/packages/scheme.scm:219 +msgid "" +"Bigloo is a Scheme implementation devoted to one goal: enabling\n" +"Scheme based programming style where C(++) is usually\n" +"required. Bigloo attempts to make Scheme practical by offering\n" +"features usually presented by traditional programming languages\n" +"but not offered by Scheme and functional programming. Bigloo\n" +"compiles Scheme modules. It delivers small and fast stand alone\n" +"binary executables. Bigloo enables full connections between\n" +"Scheme and C programs and between Scheme and Java programs." +msgstr "" + +#: gnu/packages/scheme.scm:262 +msgid "Multi-tier programming language for the Web 2.0" +msgstr "" + +#: gnu/packages/scheme.scm:264 +msgid "" +"HOP is a multi-tier programming language for the Web 2.0 and the\n" +"so-called diffuse Web. It is designed for programming interactive web\n" +"applications in many fields such as multimedia (web galleries, music players,\n" +"...), ubiquitous and house automation (SmartPhones, personal appliance),\n" +"mashups, office (web agendas, mail clients, ...), etc." +msgstr "" + +#: gnu/packages/scheme.scm:304 +msgid "R5RS Scheme implementation that compiles native code via C" +msgstr "" + +#: gnu/packages/scheme.scm:306 +msgid "" +"CHICKEN is a compiler for the Scheme programming language. CHICKEN\n" +"produces portable and efficient C, supports almost all of the R5RS Scheme\n" +"language standard, and includes many enhancements and extensions." +msgstr "" + +#: gnu/packages/scheme.scm:325 +msgid "Scheme implementation using a bytecode interpreter" +msgstr "" + +#: gnu/packages/scheme.scm:327 +msgid "" +"Scheme 48 is an implementation of Scheme based on a byte-code\n" +"interpreter and is designed to be used as a testbed for experiments in\n" +"implementation techniques and as an expository tool." +msgstr "" + +#: gnu/packages/scheme.scm:403 +msgid "Implementation of Scheme and related languages" +msgstr "" + +#: gnu/packages/scheme.scm:405 +msgid "" +"Racket is an implementation of the Scheme programming language (R5RS and\n" +"R6RS) and related languages, such as Typed Racket. It features a compiler and\n" +"a virtual machine with just-in-time native compilation, as well as a large set\n" +"of libraries." +msgstr "" + +#: gnu/packages/scheme.scm:443 +msgid "Efficient Scheme interpreter and compiler" +msgstr "" + +#: gnu/packages/scheme.scm:445 +msgid "" +"Gambit consists of two main programs: gsi, the Gambit Scheme\n" +"interpreter, and gsc, the Gambit Scheme compiler. The interpreter contains\n" +"the complete execution and debugging environment. The compiler is the\n" +"interpreter extended with the capability of generating executable files. The\n" +"compiler can produce standalone executables or compiled modules which can be\n" +"loaded at run time. Interpreted code and compiled code can be freely\n" +"mixed." +msgstr "" + +#: gnu/packages/scheme.scm:482 +msgid "Small embeddable Scheme implementation" +msgstr "" + +#: gnu/packages/scheme.scm:484 +msgid "" +"Chibi-Scheme is a very small library with no external dependencies\n" +"intended for use as an extension and scripting language in C programs. In\n" +"addition to support for lightweight VM-based threads, each VM itself runs in\n" +"an isolated heap allowing multiple VMs to run simultaneously in different OS\n" +"threads." +msgstr "" + +#: gnu/packages/scheme.scm:660 +msgid "Scmutils library for MIT Scheme" +msgstr "" + +#: gnu/packages/scheme.scm:661 +msgid "" +"The Scmutils system is an integrated library of\n" +"procedures, embedded in the programming language Scheme, and intended to\n" +"support teaching and research in mathematical physics and electrical\n" +"engineering." +msgstr "" + +#: gnu/packages/search.scm:52 +msgid "Search Engine Library" +msgstr "" + +#: gnu/packages/search.scm:54 +msgid "" +"Xapian is a highly adaptable toolkit which allows developers to easily\n" +"add advanced indexing and search facilities to their own applications. It\n" +"supports the Probabilistic Information Retrieval model and also supports a\n" +"rich set of boolean query operators." +msgstr "" + +#: gnu/packages/search.scm:97 +msgid "Tool for Obsessive Compulsive Classifiers" +msgstr "" + +#: gnu/packages/search.scm:99 +msgid "" +"libtocc is the engine of the Tocc project, a tag-based file management\n" +"system. The goal of Tocc is to provide a better system for classifying files\n" +"that is more flexible than classic file systems that are based on a tree of\n" +"files and directories." +msgstr "" + +#: gnu/packages/search.scm:121 +msgid "Command-line interface to libtocc" +msgstr "" + +#: gnu/packages/search.scm:123 +msgid "" +"Tocc is a tag-based file management system. This package contains the\n" +"command line tool for interacting with libtocc." +msgstr "" + +#: gnu/packages/search.scm:141 +msgid "Finding text and HTML files that match boolean expressions" +msgstr "" + +#: gnu/packages/search.scm:143 +msgid "" +"GNU Bool is a utility to perform text searches on files using Boolean\n" +"expressions. For example, a search for \"hello AND world\" would return a\n" +"file containing the phrase \"Hello, world!\". It supports both AND and OR\n" +"statements, as well as the NEAR statement to search for the occurrence of\n" +"words in close proximity to each other. It handles context gracefully,\n" +"accounting for new lines and paragraph changes. It also has robust support\n" +"for parsing HTML files." +msgstr "" + +#: gnu/packages/serveez.scm:51 +msgid "Framework for implementing IP-based servers" +msgstr "" + +#: gnu/packages/serveez.scm:53 +msgid "" +"GNU Serveez is a server framework providing the routines necessary to\n" +"easily implement IP-based servers in your application. It\n" +"demonstrates aspects of network programming in a portable manner,\n" +"making it convenient for both simplifying the process of adding a\n" +"server to your application or for learning about how network services\n" +"work. Several example servers are provided already, such as an HTTP\n" +"server and an IRC server." +msgstr "" + +#: gnu/packages/telephony.scm:50 +msgid "(u)Common C++ framework for threaded applications" +msgstr "" + +#: gnu/packages/telephony.scm:51 +msgid "" +"GNU Common C++ is an portable, optimized class framework for\n" +"threaded applications, supporting concurrent synchronization, inter-process\n" +"communications via sockets, and various methods for data handling, such as\n" +"serialization and XML parsing. It includes the uCommon C++ library, a smaller\n" +"reimplementation." +msgstr "" + +#: gnu/packages/telephony.scm:70 +msgid "Common C++ framework for threaded applications" +msgstr "" + +#: gnu/packages/telephony.scm:71 +msgid "" +"GNU uCommon C++ is meant as a very light-weight C++ library\n" +"to facilitate using C++ design patterns even for very deeply embedded\n" +"applications, such as for systems using uclibc along with posix threading\n" +"support." +msgstr "" + +#: gnu/packages/telephony.scm:92 +msgid "Implementation of RTP (real-time transport protocol)" +msgstr "" + +#: gnu/packages/telephony.scm:93 +msgid "" +"GNU ccRTP is an implementation of RTP, the real-time transport\n" +"protocol from the IETF. It is suitable both for high capacity servers and\n" +"personal client applications. It is flexible in its design, allowing it to\n" +"function as a framework for the framework, rather than just being a\n" +"packet-manipulation library." +msgstr "" + +#: gnu/packages/telephony.scm:113 +msgid "Library implementing SIP (RFC-3261)" +msgstr "" + +#: gnu/packages/telephony.scm:114 +msgid "" +"GNU oSIP is an implementation of the SIP protocol. It is\n" +"used to provide multimedia and telecom software developers with an interface\n" +"to initiate and control SIP sessions." +msgstr "" + +#: gnu/packages/telephony.scm:134 +msgid "Sip abstraction library" +msgstr "" + +#: gnu/packages/telephony.scm:135 +msgid "" +"EXosip is a library that hides the complexity of using the\n" +"SIP protocol for multimedia session establishment. This protocol is mainly to\n" +"be used by VoIP telephony applications (endpoints or conference server) but\n" +"might be also useful for any application that wish to establish sessions like\n" +"multiplayer games." +msgstr "" + +#: gnu/packages/telephony.scm:178 +msgid "Secure peer-to-peer VoIP server for the SIP protocol" +msgstr "" + +#: gnu/packages/telephony.scm:179 +msgid "" +"GNU SIP Witch is a peer-to-peer Voice-over-IP server that\n" +"uses the SIP protocol. Calls can be made from behind NAT firewalls and\n" +"without the need for a service provider. Its peer-to-peer design ensures that\n" +"there is no central point for media intercept or capture and thus it can be\n" +"used to construct a secure telephone system that operates over the public\n" +"internet." +msgstr "" + +#: gnu/packages/telephony.scm:204 +msgid "Secure RTP (SRTP) Reference Implementation" +msgstr "" + +#: gnu/packages/telephony.scm:205 +msgid "" +"This package provides an implementation of the Secure\n" +"Real-time Transport Protocol (SRTP), the Universal Security Transform (UST),\n" +"and a supporting cryptographic kernel." +msgstr "" + +#: gnu/packages/texinfo.scm:56 +msgid "The GNU documentation format" +msgstr "" + +#: gnu/packages/texinfo.scm:58 +msgid "" +"Texinfo is the official documentation format of the GNU project. It\n" +"uses a single source file using explicit commands to produce a final document\n" +"in any of several supported output formats, such as HTML or PDF. This\n" +"package includes both the tools necessary to produce Info documents from\n" +"their source and the command-line Info reader. The emphasis of the language\n" +"is on expressing the content semantically, avoiding physical markup commands." +msgstr "" + +#: gnu/packages/texinfo.scm:116 +msgid "Convert Texinfo to HTML" +msgstr "" + +#: gnu/packages/texinfo.scm:118 +msgid "" +"Texi2HTML is a Perl script which converts Texinfo source files to HTML\n" +"output. It now supports many advanced features, such as internationalization\n" +"and extremely configurable output formats.\n" +"\n" +"Development of Texi2HTML moved to the GNU Texinfo repository in 2010, since it\n" +"was meant to replace the makeinfo implementation in GNU Texinfo. The route\n" +"forward for authors is, in most cases, to alter manuals and build processes as\n" +"necessary to use the new features of the makeinfo/texi2any implementation of\n" +"GNU Texinfo. The Texi2HTML maintainers (one of whom is the principal author\n" +"of the GNU Texinfo implementation) do not intend to make further releases of\n" +"Texi2HTML." +msgstr "" + +#: gnu/packages/texlive.scm:156 gnu/packages/texlive.scm:216 +#: gnu/packages/texlive.scm:274 +msgid "TeX Live, a package of the TeX typesetting system" +msgstr "" + +#: gnu/packages/texlive.scm:158 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the binaries." +msgstr "" + +#: gnu/packages/texlive.scm:218 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the complete tree of texmf-dist data." +msgstr "" + +#: gnu/packages/texlive.scm:276 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the complete TeX Live distribution." +msgstr "" + +#: gnu/packages/texlive.scm:305 +msgid "Wrapper for LaTeX and friends" +msgstr "" + +#: gnu/packages/texlive.scm:307 +msgid "" +"Rubber is a program whose purpose is to handle all tasks related to the\n" +"compilation of LaTeX documents. This includes compiling the document itself,\n" +"of course, enough times so that all references are defined, and running BibTeX\n" +"to manage bibliographic references. Automatic execution of dvips to produce\n" +"PostScript documents is also included, as well as usage of pdfLaTeX to produce\n" +"PDF documents." +msgstr "" + +#: gnu/packages/textutils.scm:58 +msgid "Text encoding converter" +msgstr "" + +#: gnu/packages/textutils.scm:59 +msgid "" +"The Recode library converts files between character sets and\n" +"usages. It recognises or produces over 200 different character sets (or about\n" +"300 if combined with an iconv library) and transliterates files between almost\n" +"any pair. When exact transliteration are not possible, it gets rid of\n" +"offending characters or falls back on approximations. The recode program is a\n" +"handy front-end to the library." +msgstr "" + +#: gnu/packages/textutils.scm:86 +msgid "Text encoding detection tool" +msgstr "" + +#: gnu/packages/textutils.scm:87 +msgid "" +"Enca (Extremely Naive Charset Analyser) consists of libenca,\n" +"an encoding detection library, and enca, a command line frontend, integrating\n" +"libenca and several charset conversion libraries and tools." +msgstr "" + +#: gnu/packages/textutils.scm:122 +msgid "C library for processing UTF-8 Unicode data" +msgstr "" + +#: gnu/packages/textutils.scm:123 +msgid "" +"utf8proc is a small C library that provides Unicode\n" +"normalization, case-folding, and other operations for data in the UTF-8\n" +"encoding, supporting Unicode version 7.0." +msgstr "" + +#: gnu/packages/textutils.scm:152 +msgid "Gordon's text utils library" +msgstr "" + +#: gnu/packages/textutils.scm:154 +msgid "" +"libgtextutils is a text utilities library used by the fastx toolkit from\n" +"the Hannon Lab." +msgstr "" + +#: gnu/packages/textutils.scm:175 +msgid "C++ hash functions for strings" +msgstr "" + +#: gnu/packages/textutils.scm:177 +msgid "" +"CityHash provides hash functions for strings. The functions mix the\n" +"input bits thoroughly but are not suitable for cryptography." +msgstr "" + +#: gnu/packages/version-control.scm:97 +msgid "Version control system supporting both distributed and centralized workflows" +msgstr "" + +#: gnu/packages/version-control.scm:99 +msgid "" +"GNU Bazaar is a version control system that allows you to record\n" +"changes to project files over time. It supports both a distributed workflow\n" +"as well as the classic centralized workflow." +msgstr "" + +#: gnu/packages/version-control.scm:258 +msgid "Distributed version control system" +msgstr "" + +#: gnu/packages/version-control.scm:260 +msgid "" +"Git is a free distributed version control system designed to handle\n" +"everything from small to very large projects with speed and efficiency." +msgstr "" + +#: gnu/packages/version-control.scm:305 +msgid "Man pages of the Git version control system" +msgstr "" + +#: gnu/packages/version-control.scm:307 +msgid "" +"This package provides the man pages of the Git version control system.\n" +"This is the documentation displayed when using the '--help' option of a 'git'\n" +"command." +msgstr "" + +#: gnu/packages/version-control.scm:344 +msgid "Command-line flags library for shell scripts" +msgstr "" + +#: gnu/packages/version-control.scm:346 +msgid "" +"Shell Flags (shFlags) is a library written to greatly simplify the\n" +"handling of command-line flags in Bourne based Unix shell scripts (bash, dash,\n" +"ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the\n" +"different versions of getopt on various OSes make writing portable shell\n" +"scripts difficult. shFlags instead provides an API that doesn't change across\n" +"shell and OS versions so the script writer can be confident that the script\n" +"will work." +msgstr "" + +#: gnu/packages/version-control.scm:389 +msgid "Git extensions for Vincent Driessen's branching model" +msgstr "" + +#: gnu/packages/version-control.scm:391 +msgid "" +"Vincent Driessen's branching model is a git branching and release\n" +"management strategy that helps developers keep track of features, hotfixes,\n" +"and releases in bigger software projects. The git-flow library of git\n" +"subcommands helps automate some parts of the flow to make working with it a\n" +"lot easier." +msgstr "" + +#: gnu/packages/version-control.scm:426 +msgid "Run a command over a sequence of commits" +msgstr "" + +#: gnu/packages/version-control.scm:428 +msgid "" +"git-test-sequence is similar to an automated git bisect except it’s\n" +"linear. It will test every change between two points in the DAG. It will\n" +"also walk each side of a merge and test those changes individually." +msgstr "" + +#: gnu/packages/version-control.scm:486 +msgid "Git access control layer" +msgstr "" + +#: gnu/packages/version-control.scm:488 +msgid "" +"Gitolite is an access control layer on top of Git, providing fine access\n" +"control to Git repositories." +msgstr "" + +#: gnu/packages/version-control.scm:512 +msgid "Decentralized version control system" +msgstr "" + +#: gnu/packages/version-control.scm:514 +msgid "" +"Mercurial is a free, distributed source control management tool.\n" +"It efficiently handles projects of any size\n" +"and offers an easy and intuitive interface." +msgstr "" + +#: gnu/packages/version-control.scm:548 +msgid "HTTP and WebDAV client library" +msgstr "" + +#: gnu/packages/version-control.scm:549 +msgid "" +"Neon is an HTTP and WebDAV client library, with a\n" +"C interface. Features:\n" +"High-level wrappers for common HTTP and WebDAV operations (GET, MOVE,\n" +"DELETE, etc.);\n" +"low-level interface to the HTTP request/response engine, allowing the use\n" +"of arbitrary HTTP methods, headers, etc.;\n" +"authentication support including Basic and Digest support, along with\n" +"GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32;\n" +"SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for\n" +"verifying server certificates, handling client certificates, and examining\n" +"certificate properties, smartcard-based client certificates are also\n" +"supported via a PKCS#11 wrapper interface;\n" +"abstract interface to parsing XML using libxml2 or expat, and wrappers for\n" +"simplifying handling XML HTTP response bodies;\n" +"WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify\n" +"property manipulation." +msgstr "" + +#: gnu/packages/version-control.scm:628 +msgid "Revision control system" +msgstr "" + +#: gnu/packages/version-control.scm:630 +msgid "" +"Subversion exists to be universally recognized and adopted as a\n" +"centralized version control system characterized by its\n" +"reliability as a safe haven for valuable data; the simplicity of its model and\n" +"usage; and its ability to support the needs of a wide variety of users and\n" +"projects, from individuals to large-scale enterprise operations." +msgstr "" + +#: gnu/packages/version-control.scm:651 +msgid "Per-file local revision control system" +msgstr "" + +#: gnu/packages/version-control.scm:653 +msgid "" +"RCS is the original Revision Control System. It works on a\n" +"file-by-file basis, in contrast to subsequent version control systems such as\n" +"CVS, Subversion, and Git. This can make it suitable for system\n" +"administration files, for example, which are often inherently local to one\n" +"machine." +msgstr "" + +#: gnu/packages/version-control.scm:679 +msgid "Historical centralized version control system" +msgstr "" + +#: gnu/packages/version-control.scm:681 +msgid "" +"CVS is a version control system, an important component of Source\n" +"Configuration Management (SCM). Using it, you can record the history of\n" +"sources files, and documents. It fills a similar role to the free software\n" +"RCS, PRCS, and Aegis packages." +msgstr "" + +#: gnu/packages/version-control.scm:714 +msgid "Export an RCS or CVS history as a fast-import stream" +msgstr "" + +#: gnu/packages/version-control.scm:715 +msgid "" +"This program analyzes a collection of RCS files in a CVS\n" +"repository (or outside of one) and, when possible, emits an equivalent history\n" +"in the form of a fast-import stream. Not all possible histories can be\n" +"rendered this way; the program tries to emit useful warnings when it can't.\n" +"\n" +"The program can also produce a visualization of the resulting commit directed\n" +"acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org,\n" +"Graphviz}. The package also includes @command{cvssync}, a tool for mirroring\n" +"masters from remote CVS hosts." +msgstr "" + +#: gnu/packages/version-control.scm:742 +msgid "Version-control-agnostic ChangeLog diff and commit tool" +msgstr "" + +#: gnu/packages/version-control.scm:744 +msgid "" +"The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\".\n" +"vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and\n" +"using version control at the same time, for example by printing a reminder\n" +"when a file change has been described in the ChangeLog but the file has not\n" +"been added to the VC. vc-chlog scans changed files and generates\n" +"standards-compliant ChangeLog entries based on the changes that it detects." +msgstr "" + +#: gnu/packages/version-control.scm:766 +msgid "Make histograms from the output of 'diff'" +msgstr "" + +#: gnu/packages/version-control.scm:768 +msgid "" +"Diffstat reads the output of 'diff' and displays a histogram of the\n" +"insertions, deletions, and modifications per-file. It is useful for reviewing\n" +"large, complex patch files." +msgstr "" + +#: gnu/packages/version-control.scm:809 +msgid "File-based version control like SCCS" +msgstr "" + +#: gnu/packages/version-control.scm:810 +msgid "" +"GNU CSSC provides a replacement for the legacy Unix source\n" +"code control system SCCS. This allows old code still under that system to be\n" +"accessed and migrated on modern systems." +msgstr "" + +#: gnu/packages/version-control.scm:891 +msgid "Project change supervisor" +msgstr "" + +#: gnu/packages/version-control.scm:892 +msgid "" +"Aegis is a project change supervisor, and performs some of\n" +"the Software Configuration Management needed in a CASE environment. Aegis\n" +"provides a framework within which a team of developers may work on many\n" +"changes to a program independently, and Aegis coordinates integrating these\n" +"changes back into the master source of the program, with as little disruption\n" +"as possible. Resolution of contention for source files, a major headache for\n" +"any project with more than one developer, is one of Aegis's major functions." +msgstr "" + +#: gnu/packages/version-control.scm:919 +msgid "Ncurses-based text user interface for Git" +msgstr "" + +#: gnu/packages/version-control.scm:921 +msgid "" +"Tig is an ncurses text user interface for Git, primarily intended as\n" +"a history browser. It can also stage hunks for commit, or colorize the\n" +"output of the 'git' command." +msgstr "" + +#: gnu/packages/webkit.scm:121 +msgid "Web content engine for GTK+" +msgstr "" + +#: gnu/packages/webkit.scm:123 +msgid "" +"WebKitGTK+ is a full-featured port of the WebKit rendering engine,\n" +"suitable for projects requiring any kind of web integration, from hybrid\n" +"HTML/CSS applications to full-fledged web browsers." +msgstr "" + +#: gnu/packages/web.scm:88 +msgid "Featureful HTTP server" +msgstr "" + +#: gnu/packages/web.scm:90 +msgid "" +"The Apache HTTP Server Project is a collaborative software development\n" +"effort aimed at creating a robust, commercial-grade, featureful, and\n" +"freely-available source code implementation of an HTTP (Web) server. The\n" +"project is jointly managed by a group of volunteers located around the world,\n" +"using the Internet and the Web to communicate, plan, and develop the server\n" +"and its related documentation." +msgstr "" + +#: gnu/packages/web.scm:168 +msgid "HTTP and reverse proxy server" +msgstr "" + +#: gnu/packages/web.scm:170 +msgid "" +"Nginx (\"engine X\") is a high-performance web and reverse proxy server\n" +"created by Igor Sysoev. It can be used both as a standalone web server\n" +"and as a proxy to reduce the load on back-end HTTP or mail servers." +msgstr "" + +#: gnu/packages/web.scm:206 +msgid "PSGI/Plack web server" +msgstr "" + +#: gnu/packages/web.scm:207 +msgid "" +"Starman is a PSGI perl web server that has unique features\n" +"such as high performance, preforking, signal support, superdaemon awareness,\n" +"and UNIX socket support." +msgstr "" + +#: gnu/packages/web.scm:226 +msgid "JSON C library" +msgstr "" + +#: gnu/packages/web.scm:228 +msgid "" +"Jansson is a C library for encoding, decoding and manipulating JSON\n" +"data." +msgstr "" + +#: gnu/packages/web.scm:259 +msgid "JSON implementation in C" +msgstr "" + +#: gnu/packages/web.scm:261 +msgid "" +"JSON-C implements a reference counting object model that allows you to\n" +"easily construct JSON objects in C, output them as JSON formatted strings and\n" +"parse JSON formatted strings back into the C representation of JSON objects." +msgstr "" + +#: gnu/packages/web.scm:287 +msgid "JSON parser/generator for C++ with both SAX/DOM style API" +msgstr "" + +#: gnu/packages/web.scm:289 +msgid "" +"RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM\n" +"style API." +msgstr "" + +#: gnu/packages/web.scm:307 +msgid "C library for parsing JSON" +msgstr "" + +#: gnu/packages/web.scm:309 +msgid "" +"Yet Another JSON Library (YAJL) is a small event-driven (SAX-style) JSON\n" +"parser written in ANSI C and a small validating JSON generator." +msgstr "" + +#: gnu/packages/web.scm:339 +msgid "WebSockets library written in C" +msgstr "" + +#: gnu/packages/web.scm:341 +msgid "" +"Libwebsockets is a library that allows C programs to establish client\n" +"and server WebSockets connections---a protocol layered above HTTP that allows\n" +"for efficient socket-like bidirectional reliable communication channels." +msgstr "" + +#: gnu/packages/web.scm:376 +msgid "C library for the Publix Suffix List" +msgstr "" + +#: gnu/packages/web.scm:378 +msgid "" +"A \"public suffix\" is a domain name under which Internet users can\n" +"directly register own names.\n" +"\n" +"Browsers and other web clients can use it to avoid privacy-leaking\n" +"\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain\n" +"highlighting parts of the domain in a user interface, and sorting domain lists\n" +"by site.\n" +"\n" +"Libpsl has built-in PSL data for fast access, allows to load PSL data from\n" +"files, checks if a given domain is a public suffix, provides immediate cookie\n" +"domain verification, finds the longest public part of a given domain, finds\n" +"the shortest private part of a given domain, works with international\n" +"domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008\n" +"UTS#46." +msgstr "" + +#: gnu/packages/web.scm:424 +msgid "HTML validator and tidier" +msgstr "" + +#: gnu/packages/web.scm:425 +msgid "" +"HTML Tidy is a command-line tool and C library that can be\n" +"used to validate and fix HTML data." +msgstr "" + +#: gnu/packages/web.scm:465 +msgid "Light-weight HTTP/HTTPS proxy daemon" +msgstr "" + +#: gnu/packages/web.scm:466 +msgid "" +"Tinyproxy is a light-weight HTTP/HTTPS proxy\n" +"daemon. Designed from the ground up to be fast and yet small, it is an ideal\n" +"solution for use cases such as embedded deployments where a full featured HTTP\n" +"proxy is required, but the system resources for a larger proxy are\n" +"unavailable." +msgstr "" + +#: gnu/packages/web.scm:499 +msgid "Small caching web proxy" +msgstr "" + +#: gnu/packages/web.scm:501 +msgid "" +"Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy\n" +"server). It was primarily designed to be used by one person or a small group\n" +"of people." +msgstr "" + +#: gnu/packages/web.scm:521 +msgid "YAML 1.1 parser and emitter written in C" +msgstr "" + +#: gnu/packages/web.scm:523 +msgid "LibYAML is a YAML 1.1 parser and emitter written in C." +msgstr "" + +#: gnu/packages/web.scm:539 gnu/packages/web.scm:572 gnu/packages/web.scm:594 +msgid "Media stream URL parser" +msgstr "" + +#: gnu/packages/web.scm:540 +msgid "" +"This package contains support scripts called by libquvi to\n" +"parse media stream properties." +msgstr "" + +#: gnu/packages/web.scm:573 +msgid "" +"libquvi is a library with a C API for parsing media stream\n" +"URLs and extracting their actual media files." +msgstr "" + +#: gnu/packages/web.scm:595 +msgid "" +"quvi is a command-line-tool suite to extract media files\n" +"from streaming URLs. It is a command-line wrapper for the libquvi library." +msgstr "" + +#: gnu/packages/web.scm:658 +msgid "High-performance asynchronous HTTP client library" +msgstr "" + +#: gnu/packages/web.scm:660 +msgid "" +"serf is a C-based HTTP client library built upon the Apache Portable\n" +"Runtime (APR) library. It multiplexes connections, running the read/write\n" +"communication asynchronously. Memory copies and transformations are kept to a\n" +"minimum to provide high performance operation." +msgstr "" + +#: gnu/packages/web.scm:715 +msgid "CSS pre-processor" +msgstr "" + +#: gnu/packages/web.scm:716 +msgid "" +"SassC is a compiler written in C for the CSS pre-processor\n" +"language known as SASS." +msgstr "" + +#: gnu/packages/web.scm:744 +msgid "Compile a log format string to perl-code" +msgstr "" + +#: gnu/packages/web.scm:745 +msgid "" +"This module provides methods to compile a log format string\n" +"to perl-code, for faster generation of access_log lines." +msgstr "" + +#: gnu/packages/web.scm:766 +msgid "SASL authentication framework" +msgstr "" + +#: gnu/packages/web.scm:767 +msgid "Authen::SASL provides an SASL authentication framework." +msgstr "" + +#: gnu/packages/web.scm:791 +msgid "Sensible default Catalyst action" +msgstr "" + +#: gnu/packages/web.scm:792 +msgid "" +"This Catalyst action implements a sensible default end\n" +"action, which will forward to the first available view." +msgstr "" + +#: gnu/packages/web.scm:820 +msgid "Automated REST Method Dispatching" +msgstr "" + +#: gnu/packages/web.scm:821 +msgid "" +"This Action handles doing automatic method dispatching for\n" +"REST requests. It takes a normal Catalyst action, and changes the dispatch to\n" +"append an underscore and method name. First it will try dispatching to an\n" +"action with the generated name, and failing that it will try to dispatch to a\n" +"regular method." +msgstr "" + +#: gnu/packages/web.scm:857 +msgid "Storage class for Catalyst authentication using DBIx::Class" +msgstr "" + +#: gnu/packages/web.scm:858 +msgid "" +"The Catalyst::Authentication::Store::DBIx::Class class\n" +"provides access to authentication information stored in a database via\n" +"DBIx::Class." +msgstr "" + +#: gnu/packages/web.scm:882 +msgid "Create only one instance of Moose component per context" +msgstr "" + +#: gnu/packages/web.scm:883 +msgid "" +"Catalyst::Component::InstancePerContext returns a new\n" +"instance of a component on each request." +msgstr "" + +#: gnu/packages/web.scm:920 +msgid "Catalyst Development Tools" +msgstr "" + +#: gnu/packages/web.scm:921 +msgid "" +"The Catalyst-Devel distribution includes a variety of\n" +"modules useful for the development of Catalyst applications, but not required\n" +"to run them. Catalyst-Devel includes the Catalyst::Helper system, which\n" +"autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install\n" +"extension for Catalyst; and requirements for a variety of development-related\n" +"modules." +msgstr "" + +#: gnu/packages/web.scm:950 +msgid "Regex DispatchType for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:951 +msgid "" +"Dispatch type managing path-matching behaviour using\n" +"regexes. Regex dispatch types have been deprecated and removed from Catalyst\n" +"core. It is recommend that you use Chained methods or other techniques\n" +"instead. As part of the refactoring, the dispatch priority of Regex vs Regexp\n" +"vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by\n" +"when the dispatch type is first seen in your application." +msgstr "" + +#: gnu/packages/web.scm:999 +msgid "DBIx::Class::Schema Model Class" +msgstr "" + +#: gnu/packages/web.scm:1000 +msgid "" +"This is a Catalyst Model for DBIx::Class::Schema-based\n" +"Models." +msgstr "" + +#: gnu/packages/web.scm:1024 +msgid "Request logging from within Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1025 +msgid "" +"This Catalyst plugin enables you to create \"access logs\"\n" +"from within a Catalyst application instead of requiring a webserver to do it\n" +"for you. It will work even with Catalyst debug logging turned off." +msgstr "" + +#: gnu/packages/web.scm:1057 +msgid "Infrastructure plugin for the Catalyst authentication framework" +msgstr "" + +#: gnu/packages/web.scm:1058 +msgid "" +"The authentication plugin provides generic user support for\n" +"Catalyst apps. It is the basis for both authentication (checking the user is\n" +"who they claim to be), and authorization (allowing the user to do what the\n" +"system authorises them to do)." +msgstr "" + +#: gnu/packages/web.scm:1088 +msgid "Role-based authorization for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1089 +msgid "" +"Catalyst::Plugin::Authorization::Roles provides role-based\n" +"authorization for Catalyst based on Catalyst::Plugin::Authentication." +msgstr "" + +#: gnu/packages/web.scm:1112 +msgid "Captchas for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1113 +msgid "" +"This plugin creates and validates Captcha images for\n" +"Catalyst." +msgstr "" + +#: gnu/packages/web.scm:1139 +msgid "Load config files of various types" +msgstr "" + +#: gnu/packages/web.scm:1140 +msgid "" +"This module will attempt to load find and load configuration\n" +"files of various types. Currently it supports YAML, JSON, XML, INI and Perl\n" +"formats." +msgstr "" + +#: gnu/packages/web.scm:1170 +msgid "Catalyst generic session plugin" +msgstr "" + +#: gnu/packages/web.scm:1171 +msgid "" +"This plugin links the two pieces required for session\n" +"management in web applications together: the state, and the store." +msgstr "" + +#: gnu/packages/web.scm:1197 +msgid "Maintain session IDs using cookies" +msgstr "" + +#: gnu/packages/web.scm:1198 +msgid "" +"In order for Catalyst::Plugin::Session to work, the session\n" +"ID needs to be stored on the client, and the session data needs to be stored\n" +"on the server. This plugin stores the session ID on the client using the\n" +"cookie mechanism." +msgstr "" + +#: gnu/packages/web.scm:1228 +msgid "FastMmap session storage backend" +msgstr "" + +#: gnu/packages/web.scm:1229 +msgid "" +"Catalyst::Plugin::Session::Store::FastMmap is a fast session\n" +"storage plugin for Catalyst that uses an mmap'ed file to act as a shared\n" +"memory interprocess cache. It is based on Cache::FastMmap." +msgstr "" + +#: gnu/packages/web.scm:1252 +msgid "Stack trace on the Catalyst debug screen" +msgstr "" + +#: gnu/packages/web.scm:1253 +msgid "" +"This plugin enhances the standard Catalyst debug screen by\n" +"including a stack trace of your application up to the point where the error\n" +"occurred. Each stack frame is displayed along with the package name, line\n" +"number, file name, and code context surrounding the line number." +msgstr "" + +#: gnu/packages/web.scm:1279 +msgid "Simple serving of static pages" +msgstr "" + +#: gnu/packages/web.scm:1280 +msgid "" +"The Static::Simple plugin is designed to make serving static\n" +"content in your application during development quick and easy, without\n" +"requiring a single line of code from you. This plugin detects static files by\n" +"looking at the file extension in the URL (such as .css or .png or .js). The\n" +"plugin uses the lightweight MIME::Types module to map file extensions to\n" +"IANA-registered MIME types, and will serve your static files with the correct\n" +"MIME type directly to the browser, without being processed through Catalyst." +msgstr "" + +#: gnu/packages/web.scm:1346 +msgid "The Catalyst Framework Runtime" +msgstr "" + +#: gnu/packages/web.scm:1347 +msgid "" +"Catalyst is a modern framework for making web applications.\n" +"It is designed to make it easy to manage the various tasks you need to do to\n" +"run an application on the web, either by doing them itself, or by letting you\n" +"\"plug in\" existing Perl modules that do what you need." +msgstr "" + +#: gnu/packages/web.scm:1377 +msgid "Replace request base with value passed by HTTP proxy" +msgstr "" + +#: gnu/packages/web.scm:1378 +msgid "" +"This module is a Moose::Role which allows you more\n" +"flexibility in your application's deployment configurations when deployed\n" +"behind a proxy. Using this module, the request base ($c->req->base) is\n" +"replaced with the contents of the X-Request-Base header." +msgstr "" + +#: gnu/packages/web.scm:1404 +msgid "Download data in many formats" +msgstr "" + +#: gnu/packages/web.scm:1405 +msgid "" +"The purpose of this module is to provide a method for\n" +"downloading data into many supportable formats. For example, downloading a\n" +"table based report in a variety of formats (CSV, HTML, etc.)." +msgstr "" + +#: gnu/packages/web.scm:1430 +msgid "Catalyst JSON view" +msgstr "" + +#: gnu/packages/web.scm:1431 +msgid "" +"Catalyst::View::JSON is a Catalyst View handler that returns\n" +"stash data in JSON format." +msgstr "" + +#: gnu/packages/web.scm:1456 +msgid "Template View Class" +msgstr "" + +#: gnu/packages/web.scm:1457 +msgid "" +"This module is a Catalyst view class for the Template\n" +"Toolkit." +msgstr "" + +#: gnu/packages/web.scm:1486 +msgid "Trait Loading and Resolution for Catalyst Components" +msgstr "" + +#: gnu/packages/web.scm:1487 +msgid "" +"Adds a \"COMPONENT\" in Catalyst::Component method to your\n" +"Catalyst component base class that reads the optional \"traits\" parameter\n" +"from app and component config and instantiates the component subclass with\n" +"those traits using \"new_with_traits\" in MooseX::Traits from\n" +"MooseX::Traits::Pluggable." +msgstr "" + +#: gnu/packages/web.scm:1512 +msgid "Apply roles to Catalyst classes" +msgstr "" + +#: gnu/packages/web.scm:1513 +msgid "" +"CatalystX::RoleApplicator applies roles to Catalyst\n" +"application classes." +msgstr "" + +#: gnu/packages/web.scm:1539 +msgid "Catalyst development server with Starman" +msgstr "" + +#: gnu/packages/web.scm:1540 +msgid "" +"This module provides a Catalyst extension to replace the\n" +"development server with Starman." +msgstr "" + +#: gnu/packages/web.scm:1560 +msgid "CGI interface that is CGI.pm compliant" +msgstr "" + +#: gnu/packages/web.scm:1561 +msgid "" +"CGI::Simple provides a relatively lightweight drop in\n" +"replacement for CGI.pm. It shares an identical OO interface to CGI.pm for\n" +"parameter parsing, file upload, cookie handling and header generation." +msgstr "" + +#: gnu/packages/web.scm:1582 +msgid "Build structures from CGI data" +msgstr "" + +#: gnu/packages/web.scm:1583 +msgid "" +"This is a module for building structured data from CGI\n" +"inputs, in a manner reminiscent of how PHP does." +msgstr "" + +#: gnu/packages/web.scm:1604 +msgid "Date conversion routines" +msgstr "" + +#: gnu/packages/web.scm:1605 +msgid "" +"This module provides functions that deal with the date\n" +"formats used by the HTTP protocol." +msgstr "" + +#: gnu/packages/web.scm:1625 +msgid "MD5 sums for files and urls" +msgstr "" + +#: gnu/packages/web.scm:1626 +msgid "" +"Digest::MD5::File is a Perl extension for getting MD5 sums\n" +"for files and urls." +msgstr "" + +#: gnu/packages/web.scm:1644 +msgid "Perl locale encoding determination" +msgstr "" + +#: gnu/packages/web.scm:1646 +msgid "" +"The POSIX locale system is used to specify both the language\n" +"conventions requested by the user and the preferred character set to\n" +"consume and output. The Encode::Locale module looks up the charset and\n" +"encoding (called a CODESET in the locale jargon) and arranges for the\n" +"Encode module to know this encoding under the name \"locale\". It means\n" +"bytes obtained from the environment can be converted to Unicode strings\n" +"by calling Encode::encode(locale => $bytes) and converted back again\n" +"with Encode::decode(locale => $string)." +msgstr "" + +#: gnu/packages/web.scm:1672 +msgid "Perl directory listing parser" +msgstr "" + +#: gnu/packages/web.scm:1674 +msgid "" +"The File::Listing module exports a single function called parse_dir(),\n" +"which can be used to parse directory listings." +msgstr "" + +#: gnu/packages/web.scm:1705 +msgid "Stock and mutual fund quotes" +msgstr "" + +#: gnu/packages/web.scm:1707 +msgid "" +"Finance::Quote gets stock quotes from various internet sources, including\n" +"Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange." +msgstr "" + +#: gnu/packages/web.scm:1729 +msgid "Perl extension providing access to the GSSAPIv2 library" +msgstr "" + +#: gnu/packages/web.scm:1730 +msgid "" +"This is a Perl extension for using GSSAPI C bindings as\n" +"described in RFC 2744." +msgstr "" + +#: gnu/packages/web.scm:1750 +msgid "Manipulate tables of HTML::Element" +msgstr "" + +#: gnu/packages/web.scm:1752 +msgid "" +"HTML::Element::Extended is a Perl extension for manipulating a table\n" +"composed of HTML::Element style components." +msgstr "" + +#: gnu/packages/web.scm:1776 +msgid "Perl class representing an HTML form element" +msgstr "" + +#: gnu/packages/web.scm:1777 +msgid "" +"Objects of the HTML::Form class represents a single HTML\n" +"
...
instance." +msgstr "" + +#: gnu/packages/web.scm:1799 +msgid "Check for HTML errors in a string or file" +msgstr "" + +#: gnu/packages/web.scm:1800 +msgid "" +"HTML::Lint is a pure-Perl HTML parser and checker for\n" +"syntactic legitmacy." +msgstr "" + +#: gnu/packages/web.scm:1821 +msgid "Extract contents from HTML tables" +msgstr "" + +#: gnu/packages/web.scm:1823 +msgid "" +"HTML::TableExtract is a Perl module for extracting the content contained\n" +"in tables within an HTML document, either as text or encoded element trees." +msgstr "" + +#: gnu/packages/web.scm:1847 +msgid "Work with HTML in a DOM-like tree structure" +msgstr "" + +#: gnu/packages/web.scm:1848 +msgid "" +"This distribution contains a suite of modules for\n" +"representing, creating, and extracting information from HTML syntax trees." +msgstr "" + +#: gnu/packages/web.scm:1868 +msgid "Perl HTML parser class" +msgstr "" + +#: gnu/packages/web.scm:1870 +msgid "" +"Objects of the HTML::Parser class will recognize markup and separate\n" +"it from plain text (alias data content) in HTML documents. As different\n" +"kinds of markup and text are recognized, the corresponding event handlers\n" +"are invoked." +msgstr "" + +#: gnu/packages/web.scm:1890 +msgid "Perl data tables useful in parsing HTML" +msgstr "" + +#: gnu/packages/web.scm:1892 +msgid "" +"The HTML::Tagset module contains several data tables useful in various\n" +"kinds of HTML parsing operations." +msgstr "" + +#: gnu/packages/web.scm:1915 +msgid "HTTP Body Parser" +msgstr "" + +#: gnu/packages/web.scm:1916 +msgid "" +"HTTP::Body parses chunks of HTTP POST data and supports\n" +"application/octet-stream, application/json, application/x-www-form-urlencoded,\n" +"and multipart/form-data." +msgstr "" + +#: gnu/packages/web.scm:1942 +msgid "Minimalist HTTP user agent cookie jar" +msgstr "" + +#: gnu/packages/web.scm:1943 +msgid "" +"This module implements a minimalist HTTP user agent cookie\n" +"jar in conformance with RFC 6265 ." +msgstr "" + +#: gnu/packages/web.scm:1963 +msgid "Perl HTTP cookie jars" +msgstr "" + +#: gnu/packages/web.scm:1965 +msgid "" +"The HTTP::Cookies class is for objects that represent a cookie jar,\n" +"that is, a database of all the HTTP cookies that a given LWP::UserAgent\n" +"object knows about." +msgstr "" + +#: gnu/packages/web.scm:1987 +msgid "Perl simple http server class" +msgstr "" + +#: gnu/packages/web.scm:1989 +msgid "" +"Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen\n" +"on a socket for incoming requests. The HTTP::Daemon is a subclass of\n" +"IO::Socket::INET, so you can perform socket operations directly on it too." +msgstr "" + +#: gnu/packages/web.scm:2008 +msgid "Perl date conversion routines" +msgstr "" + +#: gnu/packages/web.scm:2010 +msgid "" +"The HTTP::Date module provides functions that deal with date formats\n" +"used by the HTTP protocol (and then some more)." +msgstr "" + +#: gnu/packages/web.scm:2033 +msgid "Perl HTTP style message" +msgstr "" + +#: gnu/packages/web.scm:2035 +msgid "An HTTP::Message object contains some headers and a content body." +msgstr "" + +#: gnu/packages/web.scm:2054 +msgid "Perl http content negotiation" +msgstr "" + +#: gnu/packages/web.scm:2056 +msgid "" +"The HTTP::Negotiate module provides a complete implementation of the\n" +"HTTP content negotiation algorithm specified in\n" +"draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for\n" +"the selection of a preferred content representation based upon attributes\n" +"of the negotiable variants and the value of the various Accept* header\n" +"fields in the request." +msgstr "" + +#: gnu/packages/web.scm:2081 +msgid "Parse HTTP/1.1 requests" +msgstr "" + +#: gnu/packages/web.scm:2082 +msgid "" +"This is an HTTP request parser. It takes chunks of text as\n" +"received and returns a 'hint' as to what is required, or returns the\n" +"HTTP::Request when a complete request has been read. HTTP/1.1 chunking is\n" +"supported." +msgstr "" + +#: gnu/packages/web.scm:2102 +msgid "Fast HTTP request parser" +msgstr "" + +#: gnu/packages/web.scm:2103 +msgid "" +"HTTP::Parser::XS is a fast, primitive HTTP request/response\n" +"parser." +msgstr "" + +#: gnu/packages/web.scm:2124 +msgid "Set up a CGI environment from an HTTP::Request" +msgstr "" + +#: gnu/packages/web.scm:2125 +msgid "" +"This module provides a convenient way to set up a CGI\n" +"environment from an HTTP::Request." +msgstr "" + +#: gnu/packages/web.scm:2147 +msgid "Lightweight HTTP server" +msgstr "" + +#: gnu/packages/web.scm:2148 +msgid "" +"HTTP::Server::Simple is a simple standalone HTTP daemon with\n" +"no non-core module dependencies. It can be used for building a standalone\n" +"http-based UI to your existing tools." +msgstr "" + +#: gnu/packages/web.scm:2172 +msgid "HTTP/1.1 client" +msgstr "" + +#: gnu/packages/web.scm:2173 +msgid "" +"This is a very simple HTTP/1.1 client, designed for doing\n" +"simple requests without the overhead of a large framework like LWP::UserAgent.\n" +"It supports proxies and redirection. It also correctly resumes after EINTR." +msgstr "" + +#: gnu/packages/web.scm:2192 +msgid "Perl module to open an HTML file with automatic charset detection" +msgstr "" + +#: gnu/packages/web.scm:2194 +msgid "" +"IO::HTML provides an easy way to open a file containing HTML while\n" +"automatically determining its encoding. It uses the HTML5 encoding sniffing\n" +"algorithm specified in section 8.2.2.1 of the draft standard." +msgstr "" + +#: gnu/packages/web.scm:2213 +msgid "Family-neutral IP socket supporting both IPv4 and IPv6" +msgstr "" + +#: gnu/packages/web.scm:2214 +msgid "" +"This module provides a protocol-independent way to use IPv4\n" +"and IPv6 sockets, intended as a replacement for IO::Socket::INET." +msgstr "" + +#: gnu/packages/web.scm:2231 +msgid "Nearly transparent SSL encapsulation for IO::Socket::INET" +msgstr "" + +#: gnu/packages/web.scm:2233 +msgid "" +"IO::Socket::SSL makes using SSL/TLS much easier by wrapping the\n" +"necessary functionality into the familiar IO::Socket interface and providing\n" +"secure defaults whenever possible. This way existing applications can be made\n" +"SSL-aware without much effort, at least if you do blocking I/O and don't use\n" +"select or poll." +msgstr "" + +#: gnu/packages/web.scm:2264 +msgid "Perl modules for the WWW" +msgstr "" + +#: gnu/packages/web.scm:2266 +msgid "" +"The libwww-perl collection is a set of Perl modules which provides a\n" +"simple and consistent application programming interface to the\n" +"World-Wide Web. The main focus of the library is to provide classes\n" +"and functions that allow you to write WWW clients. The library also\n" +"contains modules that are of more general use and even classes that\n" +"help you implement simple HTTP servers." +msgstr "" + +#: gnu/packages/web.scm:2288 +msgid "Perl module to guess the media type for a file or a URL" +msgstr "" + +#: gnu/packages/web.scm:2290 +#, scheme-format +msgid "" +"The LWP::MediaTypes module provides functions for handling media (also\n" +"known as MIME) types and encodings. The mapping from file extensions to\n" +"media types is defined by the media.types file. If the ~/.media.types file\n" +"exists it is used instead." +msgstr "" + +#: gnu/packages/web.scm:2316 +msgid "HTTPS support for LWP::UserAgent" +msgstr "" + +#: gnu/packages/web.scm:2317 +msgid "" +"The LWP::Protocol::https module provides support for using\n" +"https schemed URLs with LWP." +msgstr "" + +#: gnu/packages/web.scm:2337 +msgid "Virtual browser that retries errors" +msgstr "" + +#: gnu/packages/web.scm:2338 +msgid "" +"LWP::UserAgent::Determined works just like LWP::UserAgent,\n" +"except that when you use it to get a web page but run into a\n" +"possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds\n" +"and retry a few times." +msgstr "" + +#: gnu/packages/web.scm:2383 +msgid "Perl interface to Amazon S3" +msgstr "" + +#: gnu/packages/web.scm:2384 +msgid "This module provides a Perlish interface to Amazon S3." +msgstr "" + +#: gnu/packages/web.scm:2404 +msgid "Perl low-level HTTP connection (client)" +msgstr "" + +#: gnu/packages/web.scm:2406 +msgid "" +"The Net::HTTP class is a low-level HTTP client. An instance of the\n" +"Net::HTTP class represents a connection to an HTTP server. The HTTP protocol\n" +"is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and\n" +"HTTP/1.1." +msgstr "" + +#: gnu/packages/web.scm:2426 +msgid "Extensible Perl server engine" +msgstr "" + +#: gnu/packages/web.scm:2427 +msgid "" +"Net::Server is an extensible, generic Perl server engine.\n" +"It attempts to be a generic server as in Net::Daemon and NetServer::Generic.\n" +"It includes with it the ability to run as an inetd\n" +"process (Net::Server::INET), a single connection server (Net::Server or\n" +"Net::Server::Single), a forking server (Net::Server::Fork), a preforking\n" +"server which maintains a constant number of preforked\n" +"children (Net::Server::PreForkSimple), or as a managed preforking server which\n" +"maintains the number of children based on server load (Net::Server::PreFork).\n" +"In all but the inetd type, the server provides the ability to connect to one\n" +"or to multiple server ports." +msgstr "" + +#: gnu/packages/web.scm:2455 +msgid "SSL support for Net::SMTP" +msgstr "" + +#: gnu/packages/web.scm:2456 +msgid "SSL support for Net::SMTP." +msgstr "" + +#: gnu/packages/web.scm:2490 +msgid "Perl Superglue for Web frameworks and servers (PSGI toolkit)" +msgstr "" + +#: gnu/packages/web.scm:2491 +msgid "" +"Plack is a set of tools for using the PSGI stack. It\n" +"contains middleware components, a reference server, and utilities for Web\n" +"application frameworks. Plack is like Ruby's Rack or Python's Paste for\n" +"WSGI." +msgstr "" + +#: gnu/packages/web.scm:2517 +msgid "Plack::Middleware which sets body for redirect response" +msgstr "" + +#: gnu/packages/web.scm:2518 +msgid "" +"This module sets the body in redirect response, if it's not\n" +"already set." +msgstr "" + +#: gnu/packages/web.scm:2539 +msgid "Override REST methods to Plack apps via POST" +msgstr "" + +#: gnu/packages/web.scm:2540 +msgid "" +"This middleware allows for POST requests that pretend to be\n" +"something else: by adding either a header named X-HTTP-Method-Override to the\n" +"request, or a query parameter named x-tunneled-method to the URI, the client\n" +"can say what method it actually meant." +msgstr "" + +#: gnu/packages/web.scm:2564 +msgid "Plack::Middleware which removes body for HTTP response" +msgstr "" + +#: gnu/packages/web.scm:2565 +msgid "" +"This module removes the body in an HTTP response if it's not\n" +"required." +msgstr "" + +#: gnu/packages/web.scm:2586 +msgid "Supports app to run as a reverse proxy backend" +msgstr "" + +#: gnu/packages/web.scm:2587 +msgid "" +"Plack::Middleware::ReverseProxy resets some HTTP headers,\n" +"which are changed by reverse-proxy. You can specify the reverse proxy address\n" +"and stop fake requests using 'enable_if' directive in your app.psgi." +msgstr "" + +#: gnu/packages/web.scm:2608 +msgid "Run HTTP tests on external live servers" +msgstr "" + +#: gnu/packages/web.scm:2609 +msgid "" +"This module allows your to run your Plack::Test tests\n" +"against an external server instead of just against a local application through\n" +"either mocked HTTP or a locally spawned server." +msgstr "" + +#: gnu/packages/web.scm:2631 +msgid "Testing TCP programs" +msgstr "Testning af TCP-programmer" + +#: gnu/packages/web.scm:2632 +msgid "Test::TCP is test utilities for TCP/IP programs." +msgstr "Test::TCP er testredskaber for TCP/IP-programmer." + +#: gnu/packages/web.scm:2660 +msgid "Testing-specific WWW::Mechanize subclass" +msgstr "" + +#: gnu/packages/web.scm:2661 +msgid "" +"Test::WWW::Mechanize is a subclass of the Perl module\n" +"WWW::Mechanize that incorporates features for web application testing." +msgstr "" + +#: gnu/packages/web.scm:2694 +msgid "Test::WWW::Mechanize for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:2695 +msgid "" +"The Test::WWW::Mechanize::Catalyst module meshes the\n" +"Test::WWW:Mechanize module and the Catalyst web application framework to allow\n" +"testing of Catalyst applications without needing to start up a web server." +msgstr "" + +#: gnu/packages/web.scm:2719 +msgid "Test PSGI programs using WWW::Mechanize" +msgstr "" + +#: gnu/packages/web.scm:2720 +msgid "" +"PSGI is a specification to decouple web server environments\n" +"from web application framework code. Test::WWW::Mechanize is a subclass of\n" +"WWW::Mechanize that incorporates features for web application testing. The\n" +"Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI\n" +"applications." +msgstr "" + +#: gnu/packages/web.scm:2740 +msgid "Perl Uniform Resource Identifiers (absolute and relative)" +msgstr "" + +#: gnu/packages/web.scm:2742 +msgid "" +"The URI module implements the URI class. Objects of this class\n" +"represent \"Uniform Resource Identifier references\" as specified in RFC 2396\n" +"and updated by RFC 2732." +msgstr "" + +#: gnu/packages/web.scm:2763 +msgid "Find URIs in arbitrary text" +msgstr "" + +#: gnu/packages/web.scm:2764 +msgid "" +"This module finds URIs and URLs (according to what URI.pm\n" +"considers a URI) in plain text. It only finds URIs which include a\n" +"scheme (http:// or the like), for something a bit less strict, consider\n" +"URI::Find::Schemeless. For a command-line interface, urifind is provided." +msgstr "" + +#: gnu/packages/web.scm:2786 +msgid "WebSocket support for URI package" +msgstr "" + +#: gnu/packages/web.scm:2787 +msgid "" +"With this module, the URI package provides the same set of\n" +"methods for WebSocket URIs as it does for HTTP URIs." +msgstr "" + +#: gnu/packages/web.scm:2807 +msgid "Perl extension interface for libcurl" +msgstr "" + +#: gnu/packages/web.scm:2809 +msgid "" +"This is a Perl extension interface for the libcurl file downloading\n" +"library." +msgstr "" + +#: gnu/packages/web.scm:2836 +msgid "Web browsing in a Perl object" +msgstr "" + +#: gnu/packages/web.scm:2837 +msgid "" +"WWW::Mechanize is a Perl module for stateful programmatic\n" +"web browsing, used for automating interaction with websites." +msgstr "" + +#: gnu/packages/web.scm:2857 +msgid "Perl database of robots.txt-derived permissions" +msgstr "" + +#: gnu/packages/web.scm:2859 +msgid "" +"The WWW::RobotRules module parses /robots.txt files as specified in\n" +"\"A Standard for Robot Exclusion\", at\n" +". Webmasters can use the\n" +"/robots.txt file to forbid conforming robots from accessing parts of\n" +"their web site." +msgstr "" + +#: gnu/packages/web.scm:2879 +msgid "HTTP and WebSocket server library for R" +msgstr "" + +#: gnu/packages/web.scm:2881 +msgid "" +"The httpuv package provides low-level socket and protocol support for\n" +"handling HTTP and WebSocket requests directly from within R. It is primarily\n" +"intended as a building block for other packages, rather than making it\n" +"particularly easy to create complete web applications using httpuv alone." +msgstr "" + +#: gnu/packages/web.scm:2902 +msgid "Robust, high performance JSON parser and generator for R" +msgstr "" + +#: gnu/packages/web.scm:2904 +msgid "" +"The jsonlite package provides a fast JSON parser and generator optimized\n" +"for statistical data and the web. It offers flexible, robust, high\n" +"performance tools for working with JSON in R and is particularly powerful for\n" +"building pipelines and interacting with a web API. In addition to converting\n" +"JSON data from/to R objects, jsonlite contains functions to stream, validate,\n" +"and prettify JSON data. The unit tests included with the package verify that\n" +"all edge cases are encoded and decoded consistently for use with dynamic data\n" +"in systems and applications." +msgstr "" + +#: gnu/packages/web.scm:2932 +msgid "Simple HTTP server to serve static files or dynamic documents" +msgstr "" + +#: gnu/packages/web.scm:2934 +msgid "" +"Servr provides an HTTP server in R to serve static files, or dynamic\n" +"documents that can be converted to HTML files (e.g., R Markdown) under a given\n" +"directory." +msgstr "" + +#: gnu/packages/web.scm:2953 +msgid "R tools for HTML" +msgstr "" + +#: gnu/packages/web.scm:2955 +msgid "This package provides tools for HTML generation and output in R." +msgstr "" + +#: gnu/packages/web.scm:2974 +msgid "HTML Widgets for R" +msgstr "" + +#: gnu/packages/web.scm:2976 +msgid "" +"HTML widgets is a framework for creating HTML widgets that render in\n" +"various contexts including the R console, R Markdown documents, and Shiny web\n" +"applications." +msgstr "" + +#: gnu/packages/weechat.scm:92 +msgid "Extensible chat client" +msgstr "" + +#: gnu/packages/weechat.scm:93 +msgid "" +"WeeChat (Wee Enhanced Environment for Chat) is an\n" +"Internet Relay Chat client, which is designed to be light and fast.\n" +"The client uses a curses frontend, and there are remote interfaces\n" +"for Web, Qt, Android and Emacs. In WeeChat everything can be done\n" +"with a keyboard, though it also supports mouse. It is customizable\n" +"and extensible with plugins and scripts." +msgstr "" + +#: gnu/packages/wordnet.scm:79 +msgid "Lexical database for the English language" +msgstr "" + +#: gnu/packages/wordnet.scm:81 +msgid "" +"WordNet® is a large lexical database of English. Nouns, verbs,\n" +"adjectives and adverbs are grouped into sets of cognitive synonyms (synsets),\n" +"each expressing a distinct concept. Synsets are interlinked by means of\n" +"conceptual-semantic and lexical relations. The resulting network of\n" +"meaningfully related words and concepts can be navigated with the browser.\n" +"WordNet is also freely and publicly available for download. WordNet's\n" +"structure makes it a useful tool for computational linguistics and natural\n" +"language processing." +msgstr "" + +#: gnu/packages/xiph.scm:65 +msgid "Library for manipulating the ogg multimedia format" +msgstr "" + +#: gnu/packages/xiph.scm:67 +msgid "" +"The libogg library allows to manipulate the ogg multimedia container\n" +"format, which encapsulates raw compressed data and allows the interleaving of\n" +"audio and video data. In addition to encapsulation and interleaving of\n" +"multiple data streams, ogg provides packet framing, error detection, and\n" +"periodic timestamps for seeking." +msgstr "" + +#: gnu/packages/xiph.scm:91 +msgid "Library implementing the vorbis audio format" +msgstr "" + +#: gnu/packages/xiph.scm:93 +msgid "" +"The libvorbis library implements the ogg vorbis audio format,\n" +"a fully open, non-proprietary, patent-and-royalty-free, general-purpose\n" +"compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit,\n" +"polyphonic) audio and music at fixed and variable bitrates from 16 to\n" +"128 kbps/channel." +msgstr "" + +#: gnu/packages/xiph.scm:118 +msgid "Library implementing the Theora video format" +msgstr "" + +#: gnu/packages/xiph.scm:120 +msgid "" +"The libtheora library implements the ogg theora video format,\n" +"a fully open, non-proprietary, patent-and-royalty-free, general-purpose\n" +"compressed video format." +msgstr "" + +#: gnu/packages/xiph.scm:141 +msgid "Library for patent-free audio compression format" +msgstr "" + +#: gnu/packages/xiph.scm:143 +msgid "" +"GNU Speex is a patent-free audio compression codec specially designed\n" +"for speech. It is well-adapted to internet applications, such as VoIP. It\n" +"features compression of different bands in the same bitstream, intensity\n" +"stereo encoding, and voice activity detection." +msgstr "" + +#: gnu/packages/xiph.scm:171 +msgid "Cross platform audio library" +msgstr "" + +#: gnu/packages/xiph.scm:173 +msgid "" +"Libao is a cross-platform audio library that allows programs to\n" +"output audio using a simple API on a wide variety of platforms.\n" +"It currently supports:\n" +"Null output (handy for testing without a sound device),\n" +"WAV files,\n" +"AU files,\n" +"RAW files,\n" +"OSS (Open Sound System, used on Linux and FreeBSD),\n" +"ALSA (Advanced Linux Sound Architecture),\n" +"aRts (Analog RealTime Synth, used by KDE),\n" +"PulseAudio (next generation GNOME sound server),\n" +"esd (EsounD or Enlightened Sound Daemon),\n" +"Mac OS X,\n" +"Windows (98 and later),\n" +"AIX,\n" +"Sun/NetBSD/OpenBSD,\n" +"IRIX,\n" +"NAS (Network Audio Server),\n" +"RoarAudio (Modern, multi-OS, networked Sound System),\n" +"OpenBSD's sndio." +msgstr "" + +#: gnu/packages/xiph.scm:212 +msgid "Free lossless audio codec" +msgstr "" + +#: gnu/packages/xiph.scm:214 +msgid "" +"FLAC stands for Free Lossless Audio Codec, an audio format that is lossless,\n" +"meaning that audio is compressed in FLAC without any loss in quality." +msgstr "" + +#: gnu/packages/xiph.scm:240 +msgid "Karaoke and text codec for embedding in ogg" +msgstr "" + +#: gnu/packages/xiph.scm:242 +msgid "" +"Kate is an overlay codec, originally designed for karaoke and text,\n" +"that can be multiplixed in Ogg. Text and images can be carried by a Kate\n" +"stream, and animated. Most of the time, this would be multiplexed with\n" +"audio/video to carry subtitles, song lyrics (with or without karaoke data),\n" +"etc., but doesn't have to be.\n" +"\n" +"Series of curves (splines, segments, etc.) may be attached to various\n" +"properties (text position, font size, etc.) to create animated overlays.\n" +"This allows scrolling or fading text to be defined. This can even be used\n" +"to draw arbitrary shapes, so hand drawing can also be represented by a\n" +"Kate stream." +msgstr "" + +#: gnu/packages/xiph.scm:276 +msgid "Ogg vorbis tools" +msgstr "" + +#: gnu/packages/xiph.scm:278 +msgid "" +"Ogg vorbis is a non-proprietary, patent-and-royalty-free,\n" +"general-purpose compressed audio format.\n" +"\n" +"The package vorbis-tools contains\n" +"ogg123, an ogg vorbis command line audio player;\n" +"oggenc, the ogg vorbis encoder;\n" +"oggdec, a simple, portable command line decoder (to wav and raw);\n" +"ogginfo, to obtain information (tags, bitrate, length, etc.) about\n" +" an ogg vorbis file." +msgstr "" + +#: gnu/packages/xiph.scm:303 gnu/packages/xiph.scm:366 +msgid "Versatile audio codec" +msgstr "" + +#: gnu/packages/xiph.scm:305 +msgid "" +"Opus is a totally open, royalty-free, highly versatile audio codec. Opus\n" +"is unmatched for interactive speech and music transmission over the Internet,\n" +"but is also intended for storage and streaming applications. It is\n" +"standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which\n" +"incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec." +msgstr "" + +#: gnu/packages/xiph.scm:339 +msgid "Command line utilities to encode, inspect, and decode .opus files" +msgstr "" + +#: gnu/packages/xiph.scm:340 +msgid "" +"Opus is a royalty-free, highly versatile audio codec.\n" +"Opus-tools provide command line utilities for creating, inspecting and\n" +"decoding .opus files." +msgstr "" + +#: gnu/packages/xiph.scm:368 +msgid "" +"The opusfile library provides seeking, decode, and playback of Opus\n" +"streams in the Ogg container (.opus files) including over http(s) on posix and\n" +"windows systems." +msgstr "" + +#: gnu/packages/xiph.scm:398 +msgid "Streaming media server" +msgstr "Strøm-medieserver" + +#: gnu/packages/xiph.scm:399 +msgid "" +"Icecast is a streaming media server which currently supports\n" +"Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams. It can be used to\n" +"create an Internet radio station or a privately running jukebox and many\n" +"things in between." +msgstr "" + +#: gnu/packages/xiph.scm:427 +msgid "Audio streaming library for icecast encoders" +msgstr "" + +#: gnu/packages/xiph.scm:429 +msgid "" +"Libshout is a library for communicating with and sending data to an\n" +"icecast server. It handles the socket connection, the timing of the data,\n" +"and prevents bad data from getting to the icecast server." +msgstr "" + +#: gnu/packages/zip.scm:57 +msgid "Compression and file packing utility" +msgstr "" + +#: gnu/packages/zip.scm:59 +msgid "" +"Zip is a compression and file packaging/archive utility. Zip is useful\n" +"for packaging a set of files for distribution, for archiving files, and for\n" +"saving disk space by temporarily compressing unused files or directories.\n" +"Zip puts one or more compressed files into a single ZIP archive, along with\n" +"information about the files (name, path, date, time of last modification,\n" +"protection, and check information to verify file integrity). An entire\n" +"directory structure can be packed into a ZIP archive with a single command.\n" +"\n" +"Zip has one compression method (deflation) and can also store files without\n" +"compression. Zip automatically chooses the better of the two for each file.\n" +"Compression ratios of 2:1 to 3:1 are common for text files." +msgstr "" + +#: gnu/packages/zip.scm:111 +msgid "Decompression and file extraction utility" +msgstr "" + +#: gnu/packages/zip.scm:113 +msgid "" +"UnZip is an extraction utility for archives compressed in .zip format,\n" +"also called \"zipfiles\".\n" +"\n" +"UnZip lists, tests, or extracts files from a .zip archive. The default\n" +"behaviour (with no options) is to extract into the current directory, and\n" +"subdirectories below it, all files from the specified zipfile. UnZip\n" +"recreates the stored directory structure by default." +msgstr "" + +#: gnu/packages/zip.scm:147 +msgid "Library for accessing zip files" +msgstr "" + +#: gnu/packages/zip.scm:149 +msgid "ZZipLib is a library based on zlib for accessing zip files." +msgstr "" + +#: gnu/packages/zip.scm:167 +msgid "Provides an interface to ZIP archive files" +msgstr "" + +#: gnu/packages/zsh.scm:65 +msgid "Powerful shell for interactive use and scripting" +msgstr "" + +#: gnu/packages/zsh.scm:66 +msgid "" +"The Z shell (zsh) is a Unix shell that can be used\n" +"as an interactive login shell and as a powerful command interpreter\n" +"for shell scripting. Zsh can be thought of as an extended Bourne shell\n" +"with a large number of improvements, including some features of bash,\n" +"ksh, and tcsh." +msgstr "" diff --git a/po/packages/pl.po b/po/packages/pl.po new file mode 100644 index 0000000000..d9f78ca9eb --- /dev/null +++ b/po/packages/pl.po @@ -0,0 +1,10013 @@ +# GNU Guix package manager application database. +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the guix package. +# Daniel Koć , 2015. +# +#: gnu/packages/databases.scm:598 +msgid "" +msgstr "" +"Project-Id-Version: guix-packages 0.9.0\n" +"Report-Msgid-Bugs-To: ludo@gnu.org\n" +"POT-Creation-Date: 2015-10-28 16:31+0100\n" +"PO-Revision-Date: 2015-12-05 21:46+0100\n" +"Last-Translator: Daniel Koć \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" + +#: gnu/packages/abiword.scm:101 +msgid "Word processing program" +msgstr "Edytor tekstu" + +#. TRANSLATORS: Dear translator, We would like to inform you that package +#. descriptions may occasionally include Texinfo markup. Texinfo markup +#. looks like "@code{rm -rf}", "@emph{important}", etc. When translating, +#. please leave markup as is. +#: gnu/packages/abiword.scm:110 +msgid "" +"AbiWord is a word processing program. It is rapidly\n" +"becoming a state of the art word processor, with lots of features useful for\n" +"your daily work, personal needs, or for just some good old typing fun." +msgstr "" + +#: gnu/packages/aspell.scm:43 gnu/packages/libreoffice.scm:611 +msgid "Spell checker" +msgstr "Korekta pisowni" + +#: gnu/packages/aspell.scm:45 +msgid "" +"Aspell is a spell-checker which can be used either as a library or as\n" +"a standalone program. Notable features of Aspell include its full support of\n" +"documents written in the UTF-8 encoding and its ability to use multiple\n" +"dictionaries, including personal ones." +msgstr "" + +#: gnu/packages/aspell.scm:85 +msgid "This package provides a dictionary for the GNU Aspell spell checker." +msgstr "" + +#: gnu/packages/audio.scm:92 +msgid "Realtime modular synthesizer and effect processor" +msgstr "" + +#: gnu/packages/audio.scm:94 +msgid "" +"AlsaModularSynth is a digital implementation of a classical analog\n" +"modular synthesizer system. It uses virtual control voltages to control the\n" +"parameters of the modules. The control voltages which control the frequency\n" +"e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled\n" +"Filter) modules follow the convention of 1V / Octave." +msgstr "" + +#: gnu/packages/audio.scm:131 +msgid "A library for audio labelling" +msgstr "" + +#: gnu/packages/audio.scm:133 +msgid "" +"aubio is a tool designed for the extraction of annotations from audio\n" +"signals. Its features include segmenting a sound file before each of its\n" +"attacks, performing pitch detection, tapping the beat and producing MIDI\n" +"streams from live audio." +msgstr "" + +#: gnu/packages/audio.scm:226 +msgid "Digital audio workstation" +msgstr "Cyfrowa stacja dźwiękowa" + +#: gnu/packages/audio.scm:228 +msgid "" +"Ardour is a multi-channel digital audio workstation, allowing users to\n" +"record, edit, mix and master audio and MIDI projects. It is targeted at audio\n" +"engineers, musicians, soundtrack editors and composers." +msgstr "" + +#: gnu/packages/audio.scm:289 +msgid "Tonewheel organ synthesizer" +msgstr "" + +#: gnu/packages/audio.scm:291 +msgid "" +"AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ\n" +"with drawbars, distortion and rotating speakers. The organ has three\n" +"sections, two polyphonic sections with nine drawbars each and one monophonic\n" +"bass section with five drawbars. A standalone JACK application and LV2\n" +"plugins are provided." +msgstr "" + +#: gnu/packages/audio.scm:329 +msgid "Audio plug-in pack for LV2 and JACK environments" +msgstr "" + +#: gnu/packages/audio.scm:331 +msgid "" +"Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.\n" +"The suite contains lots of effects (delay, modulation, signal processing,\n" +"filters, equalizers, dynamics, distortion and mastering effects),\n" +"instruments (SF2 player, organ simulator and a monophonic synthesizer) and\n" +"tools (analyzer, mono/stereo tools, crossovers)." +msgstr "" + +#: gnu/packages/audio.scm:367 +msgid "Sound and music computing system" +msgstr "" + +#: gnu/packages/audio.scm:369 +msgid "" +"Csound is a user-programmable and user-extensible sound processing\n" +"language and software synthesizer." +msgstr "" + +#: gnu/packages/audio.scm:412 gnu/packages/audio.scm:1900 +msgid "C++ wrapper around the ALSA API" +msgstr "" + +#: gnu/packages/audio.scm:414 +msgid "" +"clalsadrv is a C++ wrapper around the ALSA API simplifying access to\n" +"ALSA PCM devices." +msgstr "" + +#: gnu/packages/audio.scm:449 +msgid "SoundFont synthesizer" +msgstr "" + +#: gnu/packages/audio.scm:451 +msgid "" +"FluidSynth is a real-time software synthesizer based on the SoundFont 2\n" +"specifications. FluidSynth reads and handles MIDI events from the MIDI input\n" +"device. It is the software analogue of a MIDI synthesizer. FluidSynth can\n" +"also play midifiles using a Soundfont." +msgstr "" + +#: gnu/packages/audio.scm:483 +msgid "MPEG-4 and MPEG-2 AAC decoder" +msgstr "" + +#: gnu/packages/audio.scm:485 +msgid "" +"FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,\n" +"PS, and DAB+." +msgstr "" + +#: gnu/packages/audio.scm:514 +msgid "Signal processing language" +msgstr "Język przetwarzania sygnałów" + +#: gnu/packages/audio.scm:516 +msgid "Faust is a programming language for realtime audio signal processing." +msgstr "" + +#: gnu/packages/audio.scm:551 +msgid "GUS compatible patches for MIDI players" +msgstr "" + +#: gnu/packages/audio.scm:553 +msgid "" +"FreePats is a project to create a free and open set of GUS compatible\n" +"patches that can be used with softsynths such as Timidity and WildMidi." +msgstr "" + +#: gnu/packages/audio.scm:604 +msgid "Virtual guitar amplifier" +msgstr "" + +#: gnu/packages/audio.scm:605 +msgid "" +"Guitarix is a virtual guitar amplifier running JACK.\n" +"Guitarix takes the signal from your guitar as a mono-signal from your sound\n" +"card. The input is processed by a main amp and a rack-section. Both can be\n" +"routed separately and deliver a processed stereo-signal via JACK. You may\n" +"fill the rack with effects from more than 25 built-in modules including stuff\n" +"from a simple noise gate to modulation effects like flanger, phaser or\n" +"auto-wah." +msgstr "" + +#: gnu/packages/audio.scm:647 +msgid "LV2 convolution reverb" +msgstr "" + +#: gnu/packages/audio.scm:649 +msgid "" +"IR is a low-latency, real-time, high performance signal convolver\n" +"especially for creating reverb effects. It supports impulse responses with 1,\n" +"2 or 4 channels, in any soundfile format supported by libsndfile." +msgstr "" + +#: gnu/packages/audio.scm:679 +msgid "JACK audio connection kit" +msgstr "" + +#: gnu/packages/audio.scm:681 +msgid "" +"JACK is a low-latency audio server. It can connect a number of\n" +"different applications to an audio device, as well as allowing them to share\n" +"audio between themselves. JACK is different from other audio server efforts\n" +"in that it has been designed from the ground up to be suitable for\n" +"professional audio work. This means that it focuses on two key areas:\n" +"synchronous execution of all clients, and low latency operation." +msgstr "" + +#: gnu/packages/audio.scm:760 +msgid "Simple LV2 host for JACK" +msgstr "" + +#: gnu/packages/audio.scm:762 +msgid "" +"Jalv is a simple but fully featured LV2 host for JACK. It runs LV2\n" +"plugins and exposes their ports as JACK ports, essentially making any LV2\n" +"plugin function as a JACK application." +msgstr "" + +#: gnu/packages/audio.scm:798 +msgid "Linux Audio Developer's Simple Plugin API (LADSPA)" +msgstr "" + +#: gnu/packages/audio.scm:800 +msgid "" +"LADSPA is a standard that allows software audio processors and effects\n" +"to be plugged into a wide range of audio synthesis and recording packages." +msgstr "" + +#: gnu/packages/audio.scm:836 +msgid "Audio application session manager" +msgstr "" + +#: gnu/packages/audio.scm:838 +msgid "" +"LASH is a session management system for audio applications. It allows\n" +"you to save and restore audio sessions consisting of multiple interconneced\n" +"applications, restoring program state (i.e. loaded patches) and the\n" +"connections between them." +msgstr "" + +#: gnu/packages/audio.scm:859 +msgid "Bauer stereophonic-to-binaural DSP" +msgstr "" + +#: gnu/packages/audio.scm:861 +msgid "" +"The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is\n" +"designed to improve headphone listening of stereo audio records. Recommended\n" +"for headphone prolonged listening to disable superstereo fatigue without\n" +"essential distortions." +msgstr "" + +#: gnu/packages/audio.scm:886 +msgid "Implementation of the Open Sound Control protocol" +msgstr "" + +#: gnu/packages/audio.scm:888 +msgid "" +"liblo is a lightweight library that provides an easy to use\n" +"implementation of the Open Sound Control (OSC) protocol." +msgstr "" + +#: gnu/packages/audio.scm:925 +msgid "Library to simplify use of LV2 plugins in applications" +msgstr "" + +#: gnu/packages/audio.scm:927 +msgid "" +"Lilv is a C library to make the use of LV2 plugins as simple as possible\n" +"for applications. Lilv is the successor to SLV2, rewritten to be\n" +"significantly faster and have minimal dependencies." +msgstr "" + +#: gnu/packages/audio.scm:954 +msgid "LV2 audio plugin specification" +msgstr "" + +#: gnu/packages/audio.scm:956 +msgid "" +"LV2 is an open specification for audio plugins and host applications.\n" +"At its core, LV2 is a simple stable interface, accompanied by extensions which\n" +"add functionality to support the needs of increasingly powerful audio\n" +"software." +msgstr "" + +#: gnu/packages/audio.scm:991 +msgid "LV2 port of the mda Piano plugin" +msgstr "" + +#: gnu/packages/audio.scm:992 +msgid "An LV2 port of the mda Piano VSTi." +msgstr "" + +#: gnu/packages/audio.scm:1005 +msgid "LV2 port of the mda EPiano plugin" +msgstr "" + +#: gnu/packages/audio.scm:1006 +msgid "An LV2 port of the mda EPiano VSTi." +msgstr "" + +#: gnu/packages/audio.scm:1035 +msgid "C++ libraries for LV2 plugins" +msgstr "" + +#: gnu/packages/audio.scm:1037 +msgid "" +"The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and\n" +"extensions into easy to use C++ classes. It is the successor of\n" +"lv2-c++-tools." +msgstr "" + +#: gnu/packages/audio.scm:1078 +msgid "3D audio API" +msgstr "" + +#: gnu/packages/audio.scm:1080 +msgid "" +"OpenAL provides capabilities for playing audio in a virtual 3D\n" +"environment. Distance attenuation, doppler shift, and directional sound\n" +"emitters are among the features handled by the API. More advanced effects,\n" +"including air absorption, occlusion, and environmental reverb, are available\n" +"through the EFX extension. It also facilitates streaming audio, multi-channel\n" +"buffers, and audio capture." +msgstr "" + +#: gnu/packages/audio.scm:1114 +msgid "Modular patch bay for audio and MIDI systems" +msgstr "" + +#: gnu/packages/audio.scm:1116 +msgid "" +"Patchage is a modular patch bay for audio and MIDI systems based on JACK\n" +"and ALSA." +msgstr "" + +#: gnu/packages/audio.scm:1141 +msgid "Real-time audio utility library" +msgstr "" + +#: gnu/packages/audio.scm:1143 +msgid "" +"Raul (Real-time Audio Utility Library) is a C++ utility library primarily\n" +"aimed at audio/musical applications." +msgstr "" + +#: gnu/packages/audio.scm:1169 +msgid "Audio time-stretching and pitch-shifting library" +msgstr "" + +#: gnu/packages/audio.scm:1171 +msgid "" +"Rubber Band is a library and utility program that permits changing the\n" +"tempo and pitch of an audio recording independently of one another." +msgstr "" + +#: gnu/packages/audio.scm:1219 +msgid "Cross-platform MIDI library for C++" +msgstr "" + +#: gnu/packages/audio.scm:1221 +msgid "" +"RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific\n" +"classes) that provide a common cross-platform API for realtime MIDI\n" +"input/output." +msgstr "" + +#: gnu/packages/audio.scm:1247 +msgid "Library for serialising LV2 atoms to/from RDF" +msgstr "" + +#: gnu/packages/audio.scm:1249 +msgid "" +"Sratom is a library for serialising LV2 atoms to/from RDF, particularly\n" +"the Turtle syntax." +msgstr "" + +#: gnu/packages/audio.scm:1274 +msgid "Library for loading and wrapping LV2 plugin UIs" +msgstr "" + +#: gnu/packages/audio.scm:1276 +msgid "" +"Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.\n" +"\n" +"Suil makes it possible to load a UI of a toolkit in a host using another\n" +"toolkit. The API is designed such that hosts do not need to explicitly\n" +"support specific toolkits – if Suil supports a particular toolkit, then UIs in\n" +"that toolkit will work in all hosts that use Suil automatically.\n" +"\n" +"Suil currently supports every combination of Gtk 2, Qt 4, and X11." +msgstr "" + +#: gnu/packages/audio.scm:1333 +msgid "Software synthesizer for playing MIDI files" +msgstr "" + +#: gnu/packages/audio.scm:1335 +msgid "" +"TiMidity++ is a software synthesizer. It can play MIDI files by\n" +"converting them into PCM waveform data; give it a MIDI data along with digital\n" +"instrument data files, then it synthesizes them in real-time, and plays. It\n" +"can not only play sounds, but also can save the generated waveforms into hard\n" +"disks as various audio file formats." +msgstr "" + +#: gnu/packages/audio.scm:1374 +msgid "Modular and extensible audio processing system" +msgstr "" + +#: gnu/packages/audio.scm:1376 +msgid "" +"Vamp is an audio processing plugin system for plugins that extract\n" +"descriptive information from audio data — typically referred to as audio\n" +"analysis plugins or audio feature extraction plugins." +msgstr "" + +#: gnu/packages/audio.scm:1415 +msgid "Library for time stretching and pitch scaling of audio" +msgstr "" + +#: gnu/packages/audio.scm:1417 +msgid "" +"SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time\n" +"stretching and pitch scaling of audio. This package contains the library." +msgstr "" + +#: gnu/packages/audio.scm:1440 +msgid "Hybrid lossless audio codec" +msgstr "" + +#: gnu/packages/audio.scm:1442 +msgid "" +"WavPack is an audio compression format with lossless, lossy and hybrid\n" +"compression modes. This package contains command-line programs and library to\n" +"encode and decode wavpack files." +msgstr "" + +#: gnu/packages/audio.scm:1461 +msgid "Mod file playing library" +msgstr "" + +#: gnu/packages/audio.scm:1463 +msgid "" +"Libmodplug renders mod music files as raw audio data, for playing or\n" +"conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are\n" +"supported. Optional features include high-quality resampling, bass expansion,\n" +"surround and reverb." +msgstr "" + +#: gnu/packages/audio.scm:1482 +msgid "Module player library" +msgstr "" + +#: gnu/packages/audio.scm:1484 +msgid "" +"Libxmp is a library that renders module files to PCM data. It supports\n" +"over 90 mainstream and obscure module formats including Protracker (MOD),\n" +"Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT)." +msgstr "" + +#: gnu/packages/audio.scm:1507 +msgid "Extended module player" +msgstr "" + +#: gnu/packages/audio.scm:1509 +msgid "" +"Xmp is a portable module player that plays over 90 mainstream and\n" +"obscure module formats, including Protracker MOD, Fasttracker II XM, Scream\n" +"Tracker 3 S3M and Impulse Tracker IT files." +msgstr "" + +#: gnu/packages/audio.scm:1541 +msgid "Audio processing library for changing tempo, pitch and playback rate" +msgstr "" + +#: gnu/packages/audio.scm:1543 +msgid "" +"SoundTouch is an audio processing library for changing the tempo, pitch\n" +"and playback rates of audio streams or audio files. It is intended for\n" +"application developers writing sound processing tools that require tempo/pitch\n" +"control functionality, or just for playing around with the sound effects." +msgstr "" + +#: gnu/packages/audio.scm:1580 +msgid "Sound processing utility" +msgstr "" + +#: gnu/packages/audio.scm:1582 +msgid "" +"SoX (Sound eXchange) is a command line utility that can convert\n" +"various formats of computer audio files to other formats. It can also\n" +"apply various effects to these sound files, and, as an added bonus, SoX\n" +"can play and record audio files." +msgstr "" + +#: gnu/packages/audio.scm:1605 +msgid "One-dimensional sample-rate conversion library" +msgstr "" + +#: gnu/packages/audio.scm:1607 +msgid "" +"The SoX Resampler library (libsoxr) performs one-dimensional sample-rate\n" +"conversion. It may be used, for example, to resample PCM-encoded audio." +msgstr "" + +#: gnu/packages/audio.scm:1629 +msgid "MPEG Audio Layer 2 (MP2) encoder" +msgstr "" + +#: gnu/packages/audio.scm:1631 +msgid "" +"TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on\n" +"tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and\n" +"portions of LAME." +msgstr "" + +#: gnu/packages/audio.scm:1671 +msgid "Audio I/O library" +msgstr "" + +#: gnu/packages/audio.scm:1673 +msgid "" +"PortAudio is a portable C/C++ audio I/O library providing a simple API\n" +"to record and/or play sound using a callback function or a blocking read/write\n" +"interface." +msgstr "" + +#: gnu/packages/audio.scm:1696 +msgid "Graphical user interface for FluidSynth" +msgstr "" + +#: gnu/packages/audio.scm:1698 +msgid "" +"Qsynth is a GUI front-end application for the FluidSynth SoundFont\n" +"synthesizer written in C++." +msgstr "" + +#: gnu/packages/audio.scm:1736 +msgid "Networked audio system" +msgstr "" + +#: gnu/packages/audio.scm:1738 +msgid "" +"RSound allows you to send audio from an application and transfer it\n" +"directly to a different computer on your LAN network. It is an audio daemon\n" +"with a much different focus than most other audio daemons." +msgstr "" + +#: gnu/packages/audio.scm:1769 +msgid "JACK audio frequency analyzer and display" +msgstr "" + +#: gnu/packages/audio.scm:1771 +msgid "" +"XJackFreak is an audio analysis and equalizing tool for the Jack Audio\n" +"Connection Kit. It can display the FFT of any input, modify it and output the\n" +"result." +msgstr "" + +#: gnu/packages/audio.scm:1812 +msgid "Fast, partitioned convolution engine library" +msgstr "" + +#: gnu/packages/audio.scm:1814 +msgid "" +"Zita convolver is a C++ library providing a real-time convolution\n" +"engine." +msgstr "" + +#: gnu/packages/audio.scm:1854 +msgid "C++ library for resampling audio signals" +msgstr "" + +#: gnu/packages/audio.scm:1856 +msgid "" +"Libzita-resampler is a C++ library for resampling audio signals. It is\n" +"designed to be used within a real-time processing context, to be fast, and to\n" +"provide high-quality sample rate conversion." +msgstr "" + +#: gnu/packages/audio.scm:1902 +msgid "" +"Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy\n" +"access to ALSA PCM devices, taking care of the many functions required to\n" +"open, initialise and use a hw: device in mmap mode, and providing floating\n" +"point audio data." +msgstr "" + +#: gnu/packages/backup.scm:89 +msgid "Encrypted backup using rsync algorithm" +msgstr "" + +#: gnu/packages/backup.scm:91 +msgid "" +"Duplicity backs up directories by producing encrypted tar-format volumes\n" +"and uploading them to a remote or local file server. Because duplicity uses\n" +"librsync, the incremental archives are space efficient and only record the\n" +"parts of files that have changed since the last backup. Because duplicity\n" +"uses GnuPG to encrypt and/or sign these archives, they will be safe from\n" +"spying and/or modification by the server." +msgstr "" + +#: gnu/packages/backup.scm:125 +msgid "Simple incremental backup tool" +msgstr "" + +#: gnu/packages/backup.scm:127 +msgid "" +"Hdup2 is a backup utility, its aim is to make backup really simple. The\n" +"backup scheduling is done by means of a cron job. It supports an\n" +"include/exclude mechanism, remote backups, encrypted backups and split\n" +"backups (called chunks) to allow easy burning to CD/DVD." +msgstr "" + +#: gnu/packages/backup.scm:181 +msgid "Multi-format archive and compression library" +msgstr "" + +#: gnu/packages/backup.scm:183 +msgid "" +"Libarchive provides a flexible interface for reading and writing\n" +"archives in various formats such as tar and cpio. Libarchive also supports\n" +"reading and writing archives compressed using various compression filters such\n" +"as gzip and bzip2. The library is inherently stream-oriented; readers\n" +"serially iterate through the archive, writers serially add things to the\n" +"archive. In particular, note that there is currently no built-in support for\n" +"random access nor for in-place modification." +msgstr "" + +#: gnu/packages/backup.scm:246 +msgid "Provide a list of files to backup" +msgstr "" + +#: gnu/packages/backup.scm:248 +msgid "" +"Rdup is a utility inspired by rsync and the plan9 way of doing backups.\n" +"Rdup itself does not backup anything, it only print a list of absolute\n" +"file names to standard output. Auxiliary scripts are needed that act on this\n" +"list and implement the backup strategy." +msgstr "" + +#: gnu/packages/backup.scm:278 +msgid "Tar-compatible archiver" +msgstr "" + +#: gnu/packages/backup.scm:280 +msgid "" +"Btar is a tar-compatible archiver which allows arbitrary compression and\n" +"ciphering, redundancy, differential backup, indexed extraction, multicore\n" +"compression, input and output serialisation, and tolerance to partial archive\n" +"errors." +msgstr "" + +#: gnu/packages/backup.scm:308 +msgid "Local/remote mirroring+incremental backup" +msgstr "" + +#: gnu/packages/backup.scm:310 +msgid "" +"Rdiff-backup backs up one directory to another, possibly over a network.\n" +"The target directory ends up a copy of the source directory, but extra reverse\n" +"diffs are stored in a special subdirectory of that target directory, so you\n" +"can still recover files lost some time ago. The idea is to combine the best\n" +"features of a mirror and an incremental backup. Rdiff-backup also preserves\n" +"subdirectories, hard links, dev files, permissions, uid/gid ownership,\n" +"modification times, extended attributes, acls, and resource forks. Also,\n" +"rdiff-backup can operate in a bandwidth efficient manner over a pipe, like\n" +"rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up\n" +"to a remote location, and only the differences will be transmitted. Finally,\n" +"rdiff-backup is easy to use and settings have sensible defaults." +msgstr "" + +#: gnu/packages/backup.scm:349 +msgid "Deduplicating backup program" +msgstr "" + +#: gnu/packages/backup.scm:350 +msgid "" +"Attic is a deduplicating backup program. The main goal of\n" +"Attic is to provide an efficient and secure way to backup data. The data\n" +"deduplication technique used makes Attic suitable for daily backups since only\n" +"changes are stored." +msgstr "" + +#: gnu/packages/base.scm:65 +msgid "Hello, GNU world: An example GNU package" +msgstr "" + +#: gnu/packages/base.scm:67 +msgid "" +"GNU Hello prints the message \"Hello, world!\" and then exits. It\n" +"serves as an example of standard GNU coding practices. As such, it supports\n" +"command-line arguments, multiple languages, and so on." +msgstr "" + +#: gnu/packages/base.scm:86 +msgid "Print lines matching a pattern" +msgstr "" + +#: gnu/packages/base.scm:88 +msgid "" +"grep is a tool for finding text inside files. Text is found by\n" +"matching a pattern provided by the user in one or many files. The pattern\n" +"may be provided as a basic or extended regular expression, or as fixed\n" +"strings. By default, the matching text is simply printed to the screen,\n" +"however the output can be greatly customized to include, for example, line\n" +"numbers. GNU grep offers many extensions over the standard utility,\n" +"including, for example, recursive directory searching." +msgstr "" + +#: gnu/packages/base.scm:111 +msgid "Stream editor" +msgstr "Edytor ciągów" + +#: gnu/packages/base.scm:126 +msgid "" +"Sed is a non-interactive, text stream editor. It receives a text\n" +"input from a file or from standard input and it then applies a series of text\n" +"editing commands to the stream and prints its output to standard output. It\n" +"is often used for substituting text patterns in a stream. The GNU\n" +"implementation offers several extensions over the standard utility." +msgstr "" + +#: gnu/packages/base.scm:149 +msgid "Managing tar archives" +msgstr "" + +#: gnu/packages/base.scm:151 +msgid "" +"Tar provides the ability to create tar archives, as well as the\n" +"ability to extract, update or list files in an existing archive. It is\n" +"useful for combining many files into one larger file, while maintaining\n" +"directory structure and file information such as permissions and\n" +"creation/modification dates. GNU tar offers many extensions over the\n" +"standard utility." +msgstr "" + +#: gnu/packages/base.scm:174 +msgid "Apply differences to originals, with optional backups" +msgstr "" + +#: gnu/packages/base.scm:176 +msgid "" +"Patch is a program that applies changes to files based on differences\n" +"laid out as by the program \"diff\". The changes may be applied to one or more\n" +"files depending on the contents of the diff file. It accepts several\n" +"different diff formats. It may also be used to revert previously applied\n" +"differences." +msgstr "" + +#: gnu/packages/base.scm:196 +msgid "Comparing and merging files" +msgstr "" + +#: gnu/packages/base.scm:198 +msgid "" +"GNU Diffutils is a package containing tools for finding the\n" +"differences between files. The \"diff\" command is used to show how two files\n" +"differ, while \"cmp\" shows the offsets and line numbers where they differ.\n" +"\"diff3\" allows you to compare three files. Finally, \"sdiff\" offers an\n" +"interactive means to merge two files." +msgstr "" + +#: gnu/packages/base.scm:231 +msgid "Operating on files matching given criteria" +msgstr "" + +#: gnu/packages/base.scm:233 +msgid "" +"Findutils supplies the basic file directory searching utilities of the\n" +"GNU system. It consists of two primary searching utilities: \"find\"\n" +"recursively searches for files in a directory according to given criteria and\n" +"\"locate\" lists files in a database that match a query. Two auxiliary tools\n" +"are included: \"updatedb\" updates the file name database and \"xargs\" may be\n" +"used to apply commands with arbitrarily long arguments." +msgstr "" + +#: gnu/packages/base.scm:297 +msgid "Core GNU utilities (file, text, shell)" +msgstr "Podstawowe narzędzia GNU (file, text, shell)" + +#: gnu/packages/base.scm:299 +msgid "" +"GNU Coreutils includes all of the basic command-line tools that are\n" +"expected in a POSIX system. These provide the basic file, shell and text\n" +"manipulation functions of the GNU system. Most of these tools offer extended\n" +"functionality beyond that which is outlined in the POSIX standard." +msgstr "" + +#: gnu/packages/base.scm:341 +msgid "Remake files automatically" +msgstr "" + +#: gnu/packages/base.scm:343 +msgid "" +"Make is a program that is used to control the production of\n" +"executables or other files from their source files. The process is\n" +"controlled from a Makefile, in which the developer specifies how each file is\n" +"generated from its source. It has powerful dependency resolution and the\n" +"ability to determine when files have to be regenerated after their sources\n" +"change. GNU make offers many powerful extensions over the standard utility." +msgstr "" + +#: gnu/packages/base.scm:388 +msgid "Binary utilities: bfd gas gprof ld" +msgstr "" + +#: gnu/packages/base.scm:390 +msgid "" +"GNU Binutils is a collection of tools for working with binary files.\n" +"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler.\n" +"Other tools include programs to display binary profiling information, list\n" +"the strings in a binary file, and utilities for working with archives. The\n" +"\"bfd\" library for working with executable and object formats is also\n" +"included." +msgstr "" + +#: gnu/packages/base.scm:455 +msgid "The linker wrapper" +msgstr "" + +#: gnu/packages/base.scm:457 +msgid "" +"The linker wrapper (or 'ld-wrapper') wraps the linker to add any\n" +"missing '-rpath' flags, and to detect any misuse of libraries outside of the\n" +"store." +msgstr "" + +#: gnu/packages/base.scm:625 +msgid "The GNU C Library" +msgstr "" + +#: gnu/packages/base.scm:627 +msgid "" +"Any Unix-like operating system needs a C library: the library which\n" +"defines the \"system calls\" and other basic facilities such as open, malloc,\n" +"printf, exit...\n" +"\n" +"The GNU C library is used as the C library in the GNU system and most systems\n" +"with the Linux kernel." +msgstr "" + +#: gnu/packages/base.scm:643 +msgid "All the locales supported by the GNU C Library" +msgstr "" + +#: gnu/packages/base.scm:645 +msgid "" +"This package provides all the locales supported by the GNU C Library,\n" +"more than 400 in total. To use them set the 'LOCPATH' environment variable to\n" +"the 'share/locale' sub-directory of this package." +msgstr "" + +#: gnu/packages/base.scm:713 +msgid "Small sample of UTF-8 locales" +msgstr "" + +#: gnu/packages/base.scm:715 +msgid "" +"This package provides a small sample of UTF-8 locales mostly useful in\n" +"test environments." +msgstr "" + +#: gnu/packages/base.scm:733 +msgid "Find full path of shell commands" +msgstr "" + +#: gnu/packages/base.scm:735 +msgid "" +"The which program finds the location of executables in PATH, with a\n" +"variety of options. It is an alternative to the shell \"type\" built-in\n" +"command." +msgstr "" + +#: gnu/packages/base.scm:805 +msgid "The GNU C Library (GNU Hurd variant)" +msgstr "" + +#: gnu/packages/base.scm:907 +msgid "Database of current and historical time zones" +msgstr "" + +#: gnu/packages/base.scm:908 +msgid "" +"The Time Zone Database (often called tz or zoneinfo)\n" +"contains code and data that represent the history of local time for many\n" +"representative locations around the globe. It is updated periodically to\n" +"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n" +"and daylight-saving rules." +msgstr "" + +#: gnu/packages/bittorrent.scm:82 +msgid "Fast and easy BitTorrent client" +msgstr "" + +#: gnu/packages/bittorrent.scm:84 +msgid "" +"Transmission is a BitTorrent client that comes with graphical,\n" +"textual, and Web user interfaces. Transmission also has a daemon for\n" +"unattended operations. It supports local peer discovery, full encryption,\n" +"DHT, µTP, PEX and Magnet Links." +msgstr "" + +#: gnu/packages/bittorrent.scm:116 +msgid "BitTorrent library of rtorrent" +msgstr "" + +#: gnu/packages/bittorrent.scm:118 +msgid "" +"LibTorrent is a BitTorrent library used by and developed in parallel\n" +"with the BitTorrent client rtorrent. It is written in C++ with emphasis on\n" +"speed and efficiency." +msgstr "" + +#: gnu/packages/bittorrent.scm:145 +msgid "BitTorrent client with ncurses interface" +msgstr "" + +#: gnu/packages/bittorrent.scm:147 +msgid "" +"rTorrent is a BitTorrent client with an ncurses interface. It supports\n" +"full encryption, DHT, PEX, and Magnet Links. It can also be controlled via\n" +"XML-RPC over SCGI." +msgstr "" + +#: gnu/packages/certs.scm:65 +msgid "Python script to extract .pem data from certificate collection" +msgstr "" + +#: gnu/packages/certs.scm:67 +msgid "" +"certdata2pem.py is a Python script to transform X.509 certificate\n" +"\"source code\" as contained, for example, in the Mozilla sources, into\n" +".pem formatted certificates." +msgstr "" + +#: gnu/packages/certs.scm:124 +msgid "CA certificates from Mozilla" +msgstr "" + +#: gnu/packages/certs.scm:126 +msgid "" +"This package provides certificates for Certification Authorities (CA)\n" +"taken from the NSS package and thus ultimately from the Mozilla project." +msgstr "" + +#: gnu/packages/compression.scm:72 +msgid "Compression library" +msgstr "Biblioteka kompresji" + +#: gnu/packages/compression.scm:74 +msgid "" +"zlib is designed to be a free, general-purpose, legally unencumbered --\n" +"that is, not covered by any patents -- lossless data-compression library for\n" +"use on virtually any computer hardware and operating system. The zlib data\n" +"format is itself portable across platforms. Unlike the LZW compression method\n" +"used in Unix compress(1) and in the GIF image format, the compression method\n" +"currently used in zlib essentially never expands the data. (LZW can double or\n" +"triple the file size in extreme cases.) zlib's memory footprint is also\n" +"independent of the input data and can be reduced, if necessary, at some cost\n" +"in compression." +msgstr "" + +#: gnu/packages/compression.scm:99 +msgid "Replacement for Sun's 'jar' utility" +msgstr "" + +#: gnu/packages/compression.scm:101 +msgid "" +"FastJar is an attempt to create a much faster replacement for Sun's 'jar'\n" +"utility. Instead of being written in Java, FastJar is written in C." +msgstr "" + +#: gnu/packages/compression.scm:119 +msgid "C library for manipulating POSIX tar files" +msgstr "" + +#: gnu/packages/compression.scm:121 +msgid "" +"libtar is a C library for manipulating POSIX tar files. It handles\n" +"adding and extracting files to/from a tar archive." +msgstr "" + +#: gnu/packages/compression.scm:138 +msgid "General file (de)compression (using lzw)" +msgstr "" + +#: gnu/packages/compression.scm:143 +msgid "" +"GNU Gzip provides data compression and decompression utilities; the\n" +"typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single\n" +"file; as a result, it is often used in conjunction with \"tar\", resulting in\n" +"\".tar.gz\" or \".tgz\", etc." +msgstr "" + +#: gnu/packages/compression.scm:219 +msgid "High-quality data compression program" +msgstr "" + +#: gnu/packages/compression.scm:221 +msgid "" +"bzip2 is a freely available, patent free (see below), high-quality data\n" +"compressor. It typically compresses files to within 10% to 15% of the best\n" +"available techniques (the PPM family of statistical compressors), whilst\n" +"being around twice as fast at compression and six times faster at\n" +"decompression." +msgstr "" + +#: gnu/packages/compression.scm:251 +msgid "Parallel bzip2 implementation" +msgstr "Równoległa implementacja bzip2" + +#: gnu/packages/compression.scm:253 +msgid "" +"Pbzip2 is a parallel implementation of the bzip2 block-sorting file\n" +"compressor that uses pthreads and achieves near-linear speedup on SMP machines.\n" +"The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything\n" +"compressed with pbzip2 can be decompressed with bzip2)." +msgstr "" + +#: gnu/packages/compression.scm:272 +msgid "General-purpose data compression" +msgstr "" + +#: gnu/packages/compression.scm:274 +msgid "" +"XZ Utils is free general-purpose data compression software with high\n" +"compression ratio. XZ Utils were written for POSIX-like systems, but also\n" +"work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils.\n" +"\n" +"The core of the XZ Utils compression code is based on LZMA SDK, but it has\n" +"been modified quite a lot to be suitable for XZ Utils. The primary\n" +"compression algorithm is currently LZMA2, which is used inside the .xz\n" +"container format. With typical files, XZ Utils create 30 % smaller output\n" +"than gzip and 15 % smaller output than bzip2." +msgstr "" + +#: gnu/packages/compression.scm:302 +msgid "Data compression library suitable for real-time data de-/compression" +msgstr "" + +#: gnu/packages/compression.scm:304 +msgid "" +"LZO is a data compression library which is suitable for data\n" +"de-/compression in real-time. This means it favours speed over\n" +"compression ratio.\n" +"\n" +"LZO is written in ANSI C. Both the source code and the compressed data\n" +"format are designed to be portable across platforms." +msgstr "" + +#: gnu/packages/compression.scm:327 +msgid "Compress or expand files" +msgstr "" + +#: gnu/packages/compression.scm:329 +msgid "" +"Lzop is a file compressor which is very similar to gzip. Lzop uses the\n" +"LZO data compression library for compression services, and its main advantages\n" +"over gzip are much higher compression and decompression speed (at the cost of\n" +"some compression ratio)." +msgstr "" + +#: gnu/packages/compression.scm:348 +msgid "Lossless data compressor based on the LZMA algorithm" +msgstr "" + +#: gnu/packages/compression.scm:350 +msgid "" +"Lzip is a lossless data compressor with a user interface similar to the\n" +"one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses\n" +"more than bzip2, which makes it well suited for software distribution and data\n" +"archiving. Lzip is a clean implementation of the LZMA algorithm." +msgstr "" + +#: gnu/packages/compression.scm:382 +msgid "Archives in shell scripts, uuencode/uudecode" +msgstr "" + +#: gnu/packages/compression.scm:384 +msgid "" +"GNU sharutils is a package for creating and manipulating shell\n" +"archives that can be readily emailed. A shell archive is a file that can be\n" +"processed by a Bourne-type shell to unpack the original collection of files.\n" +"This package is mostly for compatibility and historical interest." +msgstr "" + +#: gnu/packages/compression.scm:415 +msgid "Library for SoundFont decompression" +msgstr "" + +#: gnu/packages/compression.scm:417 +msgid "" +"SfArkLib is a C++ library for decompressing SoundFont files compressed\n" +"with the sfArk algorithm." +msgstr "" + +#: gnu/packages/compression.scm:449 +msgid "Basic sfArk decompressor" +msgstr "" + +#: gnu/packages/compression.scm:450 +msgid "" +"SfArk extractor converts SoundFonts in the compressed legacy\n" +"sfArk file format to the uncompressed sf2 format." +msgstr "" + +#: gnu/packages/compression.scm:467 +msgid "Compression tools for some formats used by Microsoft" +msgstr "" + +#: gnu/packages/compression.scm:469 +msgid "" +"The purpose of libmspack is to provide both compression and\n" +"decompression of some loosely related file formats used by Microsoft." +msgstr "" + +#: gnu/packages/compression.scm:488 +msgid "Low-level interface to bzip2 compression library" +msgstr "" + +#: gnu/packages/compression.scm:489 +msgid "" +"This module provides a Perl interface to the bzip2\n" +"compression library." +msgstr "" + +#: gnu/packages/compression.scm:523 +msgid "Low-level interface to zlib compression library" +msgstr "" + +#: gnu/packages/compression.scm:524 +msgid "" +"This module provides a Perl interface to the zlib\n" +"compression library." +msgstr "" + +#: gnu/packages/compression.scm:545 +msgid "IO Interface to compressed files/buffers" +msgstr "" + +#: gnu/packages/compression.scm:546 +msgid "" +"IO-Compress provides a Perl interface to allow reading and\n" +"writing of compressed data created with the zlib and bzip2 libraries." +msgstr "" + +#: gnu/packages/compression.scm:572 +msgid "Compression algorithm focused on speed" +msgstr "" + +#: gnu/packages/compression.scm:573 +msgid "" +"LZ4 is a lossless compression algorithm, providing\n" +"compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an\n" +"extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).\n" +"A high compression derivative, called LZ4_HC, is also provided. It trades CPU\n" +"time for compression ratio." +msgstr "" + +#: gnu/packages/compression.scm:613 +msgid "Tools to create and extract squashfs filesystems" +msgstr "" + +#: gnu/packages/compression.scm:615 +msgid "" +"Squashfs is a highly compressed read-only filesystem for Linux. It uses\n" +"zlib to compress files, inodes, and directories. All blocks are packed to\n" +"minimize the data overhead, and block sizes of between 4K and 1M are supported.\n" +"It is intended to be used for archival use, for live CDs, and for embedded\n" +"systems where low overhead is needed. This package allows you to create and\n" +"extract such filesystems." +msgstr "" + +#: gnu/packages/compression.scm:652 +msgid "Parallel implementation of gzip" +msgstr "" + +#: gnu/packages/compression.scm:654 +msgid "" +"This package provides a parallel implementation of gzip that exploits\n" +"multiple processors and multiple cores when compressing data." +msgstr "" + +#: gnu/packages/databases.scm:97 +msgid "Berkeley database" +msgstr "Baza danych Berkeley" + +#: gnu/packages/databases.scm:99 +msgid "" +"Berkeley DB is an embeddable database allowing developers the choice of\n" +"SQL, Key/Value, XML/XQuery or Java Object storage for their data model." +msgstr "" + +#: gnu/packages/databases.scm:173 +msgid "Fast, easy to use, and popular database" +msgstr "" + +#: gnu/packages/databases.scm:175 +msgid "" +"MySQL is a fast, reliable, and easy to use relational database\n" +"management system that supports the standardized Structured Query\n" +"Language." +msgstr "" + +#: gnu/packages/databases.scm:242 +msgid "SQL database server" +msgstr "" + +#: gnu/packages/databases.scm:244 +msgid "" +"MariaDB is a multi-user and multi-threaded SQL database server, designed\n" +"as a drop-in replacement of MySQL." +msgstr "" + +#: gnu/packages/databases.scm:264 +msgid "Powerful object-relational database system" +msgstr "" + +#: gnu/packages/databases.scm:266 +msgid "" +"PostgreSQL is a powerful object-relational database system. It is fully\n" +"ACID compliant, has full support for foreign keys, joins, views, triggers, and\n" +"stored procedures (in multiple languages). It includes most SQL:2008 data\n" +"types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and\n" +"TIMESTAMP. It also supports storage of binary large objects, including\n" +"pictures, sounds, or video." +msgstr "" + +#: gnu/packages/databases.scm:302 +msgid "Manipulate plain text files as databases" +msgstr "" + +#: gnu/packages/databases.scm:304 +msgid "" +"GNU Recutils is a set of tools and libraries for creating and\n" +"manipulating text-based, human-editable databases. Despite being text-based,\n" +"databases created with Recutils carry all of the expected features such as\n" +"unique fields, primary keys, time stamps and more. Many different field\n" +"types are supported, as is encryption." +msgstr "" + +#: gnu/packages/databases.scm:356 +msgid "The SQLite database management system" +msgstr "" + +#: gnu/packages/databases.scm:358 +msgid "" +"SQLite is a software library that implements a self-contained, serverless,\n" +"zero-configuration, transactional SQL database engine. SQLite is the most\n" +"widely deployed SQL database engine in the world. The source code for SQLite\n" +"is in the public domain." +msgstr "" + +#: gnu/packages/databases.scm:393 +msgid "Trivial database" +msgstr "Baza danych Trivial" + +#: gnu/packages/databases.scm:395 +msgid "" +"TDB is a Trivial Database. In concept, it is very much like GDBM,\n" +"and BSD's DB except that it allows multiple simultaneous writers and uses\n" +"locking internally to keep writers from trampling on each other. TDB is also\n" +"extremely small." +msgstr "" + +#: gnu/packages/databases.scm:414 +msgid "Database independent interface for Perl" +msgstr "" + +#: gnu/packages/databases.scm:415 +msgid "This package provides an database interface for Perl." +msgstr "" + +#: gnu/packages/databases.scm:462 +msgid "Extensible and flexible object <-> relational mapper" +msgstr "" + +#: gnu/packages/databases.scm:463 +msgid "" +"An SQL to OO mapper with an object API inspired by\n" +"Class::DBI (with a compatibility layer as a springboard for porting) and a\n" +"resultset API that allows abstract encapsulation of database operations. It\n" +"aims to make representing queries in your code as perl-ish as possible while\n" +"still providing access to as many of the capabilities of the database as\n" +"possible, including retrieving related records from multiple tables in a\n" +"single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",\n" +"\"ORDER BY\" and \"HAVING\" support." +msgstr "" + +#: gnu/packages/databases.scm:493 +msgid "Cursor with built-in caching support" +msgstr "" + +#: gnu/packages/databases.scm:494 +msgid "" +"DBIx::Class::Cursor::Cached provides a cursor class with\n" +"built-in caching support." +msgstr "" + +#: gnu/packages/databases.scm:514 +msgid "Introspect many-to-many relationships" +msgstr "" + +#: gnu/packages/databases.scm:515 +msgid "" +"Because the many-to-many relationships are not real\n" +"relationships, they can not be introspected with DBIx::Class. Many-to-many\n" +"relationships are actually just a collection of convenience methods installed\n" +"to bridge two relationships. This DBIx::Class component can be used to store\n" +"all relevant information about these non-relationships so they can later be\n" +"introspected and examined." +msgstr "" + +#: gnu/packages/databases.scm:572 +msgid "Create a DBIx::Class::Schema based on a database" +msgstr "" + +#: gnu/packages/databases.scm:573 +msgid "" +"DBIx::Class::Schema::Loader automates the definition of a\n" +"DBIx::Class::Schema by scanning database table definitions and setting up the\n" +"columns, primary keys, unique constraints and relationships." +msgstr "" + +#: gnu/packages/databases.scm:597 +msgid "DBI PostgreSQL interface" +msgstr "" + +#: gnu/packages/databases.scm:616 +msgid "SQlite interface for Perl" +msgstr "" + +#: gnu/packages/databases.scm:617 +msgid "" +"DBD::SQLite is a Perl DBI driver for SQLite, that includes\n" +"the entire thing in the distribution. So in order to get a fast transaction\n" +"capable RDBMS working for your Perl project you simply have to install this\n" +"module, and nothing else." +msgstr "" + +#: gnu/packages/databases.scm:647 +msgid "Generate SQL from Perl data structures" +msgstr "" + +#: gnu/packages/databases.scm:648 +msgid "" +"This module was inspired by the excellent DBIx::Abstract.\n" +"While based on the concepts used by DBIx::Abstract, the concepts used have\n" +"been modified to make the SQL easier to generate from Perl data structures.\n" +"The underlying idea is for this module to do what you mean, based on the data\n" +"structures you provide it, so that you don't have to modify your code every\n" +"time your data changes." +msgstr "" + +#: gnu/packages/databases.scm:677 +msgid "Split SQL code into atomic statements" +msgstr "" + +#: gnu/packages/databases.scm:678 +msgid "" +"This module tries to split any SQL code, even including\n" +"non-standard extensions, into the atomic statements it is composed of." +msgstr "" + +#: gnu/packages/databases.scm:696 +msgid "SQL tokenizer" +msgstr "" + +#: gnu/packages/databases.scm:697 +msgid "" +"SQL::Tokenizer is a tokenizer for SQL queries. It does not\n" +"claim to be a parser or query verifier. It just creates sane tokens from a\n" +"valid SQL query." +msgstr "" + +#: gnu/packages/databases.scm:714 +msgid "Data source abstraction library" +msgstr "" + +#: gnu/packages/databases.scm:715 +msgid "" +"Unixodbc is a library providing an API with which to access\n" +"data sources. Data sources include SQL Servers and any software with an ODBC\n" +"Driver." +msgstr "" + +#: gnu/packages/databases.scm:739 +msgid "In-memory key/value and document store" +msgstr "" + +#: gnu/packages/databases.scm:741 +msgid "" +"UnQLite is an in-process software library which implements a\n" +"self-contained, serverless, zero-configuration, transactional NoSQL\n" +"database engine. UnQLite is a document store database similar to\n" +"MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store\n" +"similar to BerkeleyDB, LevelDB, etc." +msgstr "" + +#: gnu/packages/databases.scm:768 +msgid "Key-value cache and store" +msgstr "" + +#: gnu/packages/databases.scm:769 +msgid "" +"Redis is an advanced key-value cache and store. Redis\n" +"supports many data structures including strings, hashes, lists, sets, sorted\n" +"sets, bitmaps and hyperloglogs." +msgstr "" + +#: gnu/packages/debug.scm:74 +msgid "Heuristical file minimizer" +msgstr "" + +#: gnu/packages/debug.scm:76 +msgid "" +"Delta assists you in minimizing \"interesting\" files subject to a test\n" +"of their interestingness. A common such situation is when attempting to\n" +"isolate a small failure-inducing substring of a large input that causes your\n" +"program to exhibit a bug." +msgstr "" + +#: gnu/packages/debug.scm:135 +msgid "Reducer for interesting code" +msgstr "" + +#: gnu/packages/debug.scm:137 +msgid "" +"C-Reduce is a tool that takes a large C or C++ program that has a\n" +"property of interest (such as triggering a compiler bug) and automatically\n" +"produces a much smaller C/C++ program that has the same property. It is\n" +"intended for use by people who discover and report bugs in compilers and other\n" +"tools that process C/C++ code." +msgstr "" + +#: gnu/packages/debug.scm:229 +msgid "Security-oriented fuzzer" +msgstr "" + +#: gnu/packages/debug.scm:231 +msgid "" +"American fuzzy lop is a security-oriented fuzzer that employs a novel\n" +"type of compile-time instrumentation and genetic algorithms to automatically\n" +"discover clean, interesting test cases that trigger new internal states in the\n" +"targeted binary. This substantially improves the functional coverage for the\n" +"fuzzed code. The compact synthesized corpora produced by the tool are also\n" +"useful for seeding other, more labor- or resource-intensive testing regimes\n" +"down the road." +msgstr "" + +#: gnu/packages/dejagnu.scm:78 +msgid "GNU software testing framework" +msgstr "" + +#: gnu/packages/dejagnu.scm:80 +msgid "" +"DejaGnu is a framework for testing software. In effect, it serves as\n" +"a front-end for all tests written for a program. Thus, each program can have\n" +"multiple test suites, which are then all managed by a single harness." +msgstr "" + +#: gnu/packages/feh.scm:53 +msgid "Fast and light imlib2-based image viewer" +msgstr "" + +#: gnu/packages/feh.scm:55 +msgid "" +"feh is an X11 image viewer aimed mostly at console users.\n" +"Unlike most other viewers, it does not have a fancy GUI, but simply\n" +"displays images. It can also be used to set the desktop wallpaper.\n" +"It is controlled via commandline arguments and configurable key/mouse\n" +"actions." +msgstr "" + +#: gnu/packages/games.scm:113 +msgid "Backgammon game" +msgstr "" + +#: gnu/packages/games.scm:114 +msgid "" +"The GNU backgammon application can be used for playing, analyzing and\n" +"teaching the game. It has an advanced evaluation engine based on artificial\n" +"neural networks suitable for both beginners and advanced players. In\n" +"addition to a command-line interface, it also features an attractive, 3D\n" +"representation of the playing board." +msgstr "" + +#: gnu/packages/games.scm:143 +msgid "3d Rubik's cube game" +msgstr "Trójwymiarowa kostka Rubika" + +#: gnu/packages/games.scm:145 +msgid "" +"GNUbik is a puzzle game in which you must manipulate a cube to make\n" +"each of its faces have a uniform color. The game is customizable, allowing\n" +"you to set the size of the cube (the default is 3x3) or to change the colors.\n" +"You may even apply photos to the faces instead of colors. The game is\n" +"scriptable with Guile." +msgstr "" + +#: gnu/packages/games.scm:195 +msgid "GNU/Linux port of the indie game \"l'Abbaye des Morts\"" +msgstr "" + +#: gnu/packages/games.scm:196 +msgid "" +"L'Abbaye des Morts is a 2D platform game set in 13th century\n" +"France. The Cathars, who preach about good Christian beliefs, were being\n" +"expelled by the Catholic Church out of the Languedoc region in France. One of\n" +"them, called Jean Raymond, found an old church in which to hide, not knowing\n" +"that beneath its ruins lay buried an ancient evil." +msgstr "" + +#: gnu/packages/games.scm:239 +msgid "Lemmings clone" +msgstr "Klon Lemingów" + +#: gnu/packages/games.scm:241 +msgid "" +"Pingus is a free Lemmings-like puzzle game in which the player takes\n" +"command of a bunch of small animals and has to guide them through levels.\n" +"Since the animals walk on their own, the player can only influence them by\n" +"giving them commands, like build a bridge, dig a hole, or redirect all animals\n" +"in the other direction. Multiple such commands are necessary to reach the\n" +"level's exit. The game is presented in a 2D side view." +msgstr "" + +#: gnu/packages/games.scm:263 +msgid "Convert English text to humorous dialects" +msgstr "" + +#: gnu/packages/games.scm:264 +msgid "" +"The GNU Talk Filters are programs that convert English text\n" +"into stereotyped or otherwise humorous dialects. The filters are provided as\n" +"a C library, so they can easily be integrated into other programs." +msgstr "" + +#: gnu/packages/games.scm:296 +msgid "Simulate the display from \"The Matrix\"" +msgstr "" + +#: gnu/packages/games.scm:297 +msgid "" +"CMatrix simulates the display from \"The Matrix\" and is\n" +"based on the screensaver from the movie's website. It works with terminal\n" +"settings up to 132x300 and can scroll lines all at the same rate or\n" +"asynchronously and at a user-defined speed." +msgstr "" + +#: gnu/packages/games.scm:317 +msgid "Full chess implementation" +msgstr "Pełna implementacja programu szachowego" + +#: gnu/packages/games.scm:318 +msgid "" +"GNU Chess is a chess engine. It allows you to compete\n" +"against the computer in a game of chess, either through the default terminal\n" +"interface or via an external visual interface such as GNU XBoard." +msgstr "" + +#: gnu/packages/games.scm:346 +msgid "Twisted adventures of young pig farmer Dink Smallwood" +msgstr "" + +#: gnu/packages/games.scm:348 +msgid "" +"GNU FreeDink is a free and portable re-implementation of the engine\n" +"for the role-playing game Dink Smallwood. It supports not only the original\n" +"game data files but it also supports user-produced game mods or \"D-Mods\".\n" +"To that extent, it also includes a front-end for managing all of your D-Mods." +msgstr "" + +#: gnu/packages/games.scm:370 +msgid "Game data for GNU Freedink" +msgstr "" + +#: gnu/packages/games.scm:372 +msgid "This package contains the game data of GNU Freedink." +msgstr "" + +#: gnu/packages/games.scm:424 +msgid "Graphical user interface for chess programs" +msgstr "" + +#: gnu/packages/games.scm:425 +msgid "" +"GNU XBoard is a graphical board for all varieties of chess,\n" +"including international chess, xiangqi (Chinese chess), shogi (Japanese chess)\n" +"and Makruk. Several lesser-known variants are also supported. It presents a\n" +"fully interactive graphical interface and it can load and save games in the\n" +"Portable Game Notation." +msgstr "" + +#: gnu/packages/games.scm:478 +msgid "Ball and paddle game" +msgstr "" + +#: gnu/packages/games.scm:479 +msgid "" +"XBoing is a blockout type game where you have a paddle which\n" +"you control to bounce a ball around the game zone destroying blocks with a\n" +"proton ball. Each block carries a different point value. The more blocks you\n" +"destroy, the better your score. The person with the highest score wins." +msgstr "" + +#: gnu/packages/games.scm:511 +msgid "Typing tutor" +msgstr "Nauka pisania" + +#: gnu/packages/games.scm:513 +msgid "" +"GNU Typist is a universal typing tutor. It can be used to learn and\n" +"practice touch-typing. Several tutorials are included; in addition to\n" +"tutorials for the standard QWERTY layout, there are also tutorials for the\n" +"alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials\n" +"are primarily in English, however some in other languages are provided." +msgstr "" + +#: gnu/packages/games.scm:566 +msgid "3D game engine written in C++" +msgstr "" + +#: gnu/packages/games.scm:568 +msgid "" +"The Irrlicht Engine is a high performance realtime 3D engine written in\n" +"C++. Features include an OpenGL renderer, extensible materials, scene graph\n" +"management, character animation, particle and other special effects, support\n" +"for common mesh file formats, and collision detection." +msgstr "" + +#: gnu/packages/games.scm:620 +msgid "2D space shooter" +msgstr "" + +#: gnu/packages/games.scm:622 +msgid "" +"M.A.R.S. is a 2D space shooter with pretty visual effects and\n" +"attractive physics. Players can battle each other or computer controlled\n" +"enemies in different game modes such as space ball, death match, team death\n" +"match, cannon keep, and grave-itation pit." +msgstr "" + +#: gnu/packages/games.scm:663 +msgid "Main game data for the Minetest game engine" +msgstr "" + +#: gnu/packages/games.scm:665 +msgid "Game data for the Minetest infinite-world block sandox game." +msgstr "" + +#: gnu/packages/games.scm:717 +msgid "Infinite-world block sandbox game" +msgstr "" + +#: gnu/packages/games.scm:719 +msgid "" +"Minetest is a sandbox construction game. Players can create and destroy\n" +"various types of blocks in a three-dimensional open world. This allows\n" +"forming structures in every possible creation, on multiplayer servers or as a\n" +"single player. Mods and texture packs allow players to personalize the game\n" +"in different ways." +msgstr "" + +#: gnu/packages/games.scm:758 +msgid "Curses Implementation of the Glk API" +msgstr "" + +#: gnu/packages/games.scm:760 +msgid "" +"Glk defines a portable API for applications with text UIs. It was\n" +"primarily designed for interactive fiction, but it should be suitable for many\n" +"interactive text utilities, particularly those based on a command line.\n" +"This is an implementation of the Glk library which runs in a terminal window,\n" +"using the curses.h library for screen control." +msgstr "" + +#: gnu/packages/games.scm:797 +msgid "Interpreter for Glulx VM" +msgstr "" + +#: gnu/packages/games.scm:799 +msgid "" +"Glulx is a 32-bit portable virtual machine intended for writing and\n" +"playing interactive fiction. It was designed by Andrew Plotkin to relieve\n" +"some of the restrictions in the venerable Z-machine format. This is the\n" +"reference interpreter, using Glk API." +msgstr "" + +#: gnu/packages/games.scm:835 +msgid "Z-machine interpreter" +msgstr "" + +#: gnu/packages/games.scm:837 +msgid "" +"Fizmo is a console-based Z-machine interpreter. It is used to play\n" +"interactive fiction, also known as text adventures, which were implemented\n" +"either by Infocom or created using the Inform compiler." +msgstr "" + +#: gnu/packages/games.scm:887 +msgid "Reference frontend for the libretro API" +msgstr "" + +#: gnu/packages/games.scm:889 +msgid "" +"Libretro is a simple but powerful development interface that allows for\n" +"the easy creation of emulators, games and multimedia applications that can plug\n" +"straight into any libretro-compatible frontend. RetroArch is the official\n" +"reference frontend for the libretro API, currently used by most as a modular\n" +"multi-system game/emulator system." +msgstr "" + +#: gnu/packages/games.scm:909 +msgid "Play the game of Go" +msgstr "Gra w Go" + +#: gnu/packages/games.scm:911 +msgid "" +"GNU Go is a program that plays the game of Go, in which players\n" +"place stones on a grid to form territory or capture other stones. While\n" +"it can be played directly from the terminal, rendered in ASCII characters,\n" +"it is also possible to play GNU Go with 3rd party graphical interfaces or\n" +"even in Emacs. It supports the standard game storage format (SGF, Smart\n" +"Game Format) and inter-process communication format (GMP, Go Modem\n" +"Protocol)." +msgstr "" + +#: gnu/packages/games.scm:961 +msgid "High speed arctic racing game based on Tux Racer" +msgstr "" + +#: gnu/packages/games.scm:963 +msgid "" +"Extreme Tux Racer, or etracer as it is called for short, is\n" +"a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the\n" +"game is to slide down a snow- and ice-covered mountain as quickly as possible,\n" +"avoiding the trees and rocks that will slow you down.\n" +"\n" +"Collect herrings and other goodies while sliding down the hill, but avoid fish\n" +"bones.\n" +"\n" +"This game is based on the GPL version of the famous game TuxRacer." +msgstr "" + +#: gnu/packages/games.scm:1001 +msgid "Game of jumping to the next floor, trying not to fall" +msgstr "" + +#: gnu/packages/games.scm:1003 +msgid "" +"GNUjump is a simple, yet addictive game in which you must jump from\n" +"platform to platform to avoid falling, while the platforms drop at faster rates\n" +"the higher you go. The game features multiplayer, unlimited FPS, smooth floor\n" +"falling, themeable graphics and sounds, and replays." +msgstr "" + +#: gnu/packages/games.scm:1044 +msgid "Turn-based strategy game" +msgstr "" + +#: gnu/packages/games.scm:1046 +msgid "" +"The Battle for Wesnoth is a fantasy, turn based tactical strategy game,\n" +"with several single player campaigns, and multiplayer games (both networked and\n" +"local).\n" +"\n" +"Battle for control on a range of maps, using variety of units which have\n" +"advantages and disadvantages against different types of attacks. Units gain\n" +"experience and advance levels, and are carried over from one scenario to the\n" +"next campaign." +msgstr "" + +#: gnu/packages/games.scm:1090 +msgid "x86 emulator with CGA/EGA/VGA/etc. graphics and sound" +msgstr "" + +#: gnu/packages/games.scm:1091 +msgid "" +"DOSBox is a DOS-emulator that uses the SDL library. DOSBox\n" +"also emulates CPU:286/386 realmode/protected mode, Directory\n" +"FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a\n" +"SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with\n" +"older games." +msgstr "" + +#: gnu/packages/games.scm:1136 +msgid "Mouse and keyboard discovery for children" +msgstr "" + +#: gnu/packages/games.scm:1138 +msgid "" +"Gamine is a game designed for young children who are learning to use the\n" +"mouse and keyboard. The child uses the mouse to draw colored dots and lines\n" +"on the screen and keyboard to display letters." +msgstr "" + +#: gnu/packages/games.scm:1169 +msgid "Puzzle game with a cat in lead role" +msgstr "" + +#: gnu/packages/games.scm:1170 +msgid "" +"Project Raincat is a game developed by Carnegie Mellon\n" +"students through GCS during the Fall 2008 semester. Raincat features game\n" +"play inspired from classics Lemmings and The Incredible Machine. The project\n" +"proved to be an excellent learning experience for the programmers. Everything\n" +"is programmed in Haskell." +msgstr "" + +#: gnu/packages/games.scm:1205 +msgid "Client for 'The Mana World' and similar games" +msgstr "" + +#: gnu/packages/games.scm:1207 +msgid "" +"ManaPlus is a 2D MMORPG client for game servers. It is the only\n" +"fully supported client for @uref{http://www.themanaworld.org, The mana\n" +"world}, @uref{http://evolonline.org, Evol Online} and\n" +"@uref{http://landoffire.org, Land of fire}." +msgstr "" + +#: gnu/packages/gcc.scm:303 +msgid "GNU Compiler Collection" +msgstr "Kolekcja kompilatorów GNU" + +#: gnu/packages/gcc.scm:305 +msgid "" +"GCC is the GNU Compiler Collection. It provides compiler front-ends\n" +"for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and\n" +"Go. It also includes runtime support libraries for these languages." +msgstr "" + +#: gnu/packages/gcc.scm:370 +msgid "GNU C++ standard library" +msgstr "Standardowa biblioteka GNU C++" + +#: gnu/packages/gcc.scm:405 +msgid "Collection of subroutines used by various GNU programs" +msgstr "" + +#: gnu/packages/gcc.scm:561 +msgid "GNU libstdc++ documentation" +msgstr "" + +#: gnu/packages/gcc.scm:629 +msgid "Manipulating sets and relations of integer points bounded by linear constraints" +msgstr "" + +#: gnu/packages/gcc.scm:632 +msgid "" +"isl is a library for manipulating sets and relations of integer points\n" +"bounded by linear constraints. Supported operations on sets include\n" +"intersection, union, set difference, emptiness check, convex hull, (integer)\n" +"affine hull, integer projection, computing the lexicographic minimum using\n" +"parametric integer programming, coalescing and parametric vertex\n" +"enumeration. It also includes an ILP solver based on generalized basis\n" +"reduction, transitive closures on maps (which may encode infinite graphs),\n" +"dependence analysis and bounds on piecewise step-polynomials." +msgstr "" + +#: gnu/packages/gcc.scm:664 +msgid "Library to generate code for scanning Z-polyhedra" +msgstr "" + +#: gnu/packages/gcc.scm:666 +msgid "" +"CLooG is a free software library to generate code for scanning\n" +"Z-polyhedra. That is, it finds a code (e.g., in C, FORTRAN...) that\n" +"reaches each integral point of one or more parameterized polyhedra.\n" +"CLooG has been originally written to solve the code generation problem\n" +"for optimizing compilers based on the polytope model. Nevertheless it\n" +"is used now in various area e.g., to build control automata for\n" +"high-level synthesis or to find the best polynomial approximation of a\n" +"function. CLooG may help in any situation where scanning polyhedra\n" +"matters. While the user has full control on generated code quality,\n" +"CLooG is designed to avoid control overhead and to produce a very\n" +"effective code." +msgstr "" + +#: gnu/packages/gcc.scm:721 +msgid "Reference manual for the C programming language" +msgstr "" + +#: gnu/packages/gcc.scm:723 +msgid "" +"This is a reference manual for the C programming language, as\n" +"implemented by the GNU C Compiler (gcc). As a reference, it is not intended\n" +"to be a tutorial of the language. Rather, it outlines all of the constructs\n" +"of the language. Library functions are not included." +msgstr "" + +#: gnu/packages/geeqie.scm:48 +msgid "Library and command-line utility to manage image metadata" +msgstr "" + +#: gnu/packages/geeqie.scm:50 +msgid "" +"Exiv2 is a C++ library and a command line utility to manage image\n" +"metadata. It provides fast and easy read and write access to the Exif, IPTC\n" +"and XMP metadata of images in various formats." +msgstr "" + +#: gnu/packages/geeqie.scm:81 +msgid "Lightweight GTK+ based image viewer" +msgstr "" + +#: gnu/packages/geeqie.scm:83 +msgid "" +"Geeqie is a lightweight GTK+ based image viewer for Unix like operating\n" +"systems. It features: EXIF, IPTC and XMP metadata browsing and editing\n" +"interoperability; easy integration with other software; geeqie works on files\n" +"and directories, there is no need to import images; fast preview for many raw\n" +"image formats; tools for image comparison, sorting and managing photo\n" +"collection. Geeqie was initially based on GQview." +msgstr "" + +#: gnu/packages/gettext.scm:91 +msgid "Tools and documentation for translation" +msgstr "" + +#: gnu/packages/gettext.scm:93 +msgid "" +"GNU Gettext is a package providing a framework for translating the\n" +"textual output of programs into multiple languages. It provides translators\n" +"with the means to create message catalogs, as well as an Emacs mode to work\n" +"with them, and a runtime library to load translated messages from the\n" +"catalogs. Nearly all GNU packages use Gettext." +msgstr "" + +#: gnu/packages/gettext.scm:149 +msgid "Scripts to ease maintenance of translations" +msgstr "" + +#: gnu/packages/gettext.scm:151 +msgid "" +"The po4a (PO for anything) project goal is to ease translations (and\n" +"more interestingly, the maintenance of translations) using gettext tools on\n" +"areas where they were not expected like documentation." +msgstr "" + +#: gnu/packages/gimp.scm:54 +msgid "Image pixel format conversion library" +msgstr "" + +#: gnu/packages/gimp.scm:56 +msgid "" +"Babl is a dynamic, any to any, pixel format translation library.\n" +"It allows converting between different methods of storing pixels known as\n" +"pixel formats that have with different bitdepths and other data\n" +"representations, color models and component permutations.\n" +"\n" +"A vocabulary to formulate new pixel formats from existing primitives is\n" +"provided as well as the framework to add new color models and data types." +msgstr "" + +#: gnu/packages/gimp.scm:111 +msgid "Graph based image processing framework" +msgstr "" + +#: gnu/packages/gimp.scm:112 +msgid "" +"GEGL (Generic Graphics Library) provides infrastructure to\n" +"do demand based cached non destructive image editing on larger than RAM\n" +"buffers." +msgstr "" + +#: gnu/packages/gimp.scm:148 +msgid "GNU Image Manipulation Program" +msgstr "" + +#: gnu/packages/gimp.scm:150 +msgid "" +"GIMP is an application for image manipulation tasks such as photo\n" +"retouching, composition and authoring. It supports all common image formats\n" +"as well as specialized ones. It features a highly customizable interface\n" +"that is extensible via a plugin system." +msgstr "" + +#: gnu/packages/gnome.scm:138 +msgid "CD/DVD burning tool for Gnome" +msgstr "Narzędzie do wypalania płyt CD/DVD pod GNOME" + +#: gnu/packages/gnome.scm:139 +msgid "" +"Brasero is an application to burn CD/DVD for the Gnome\n" +"Desktop. It is designed to be as simple as possible and has some unique\n" +"features to enable users to create their discs easily and quickly." +msgstr "" + +#: gnu/packages/gnome.scm:159 +msgid "Bootstrap GNOME modules built from Git" +msgstr "" + +#: gnu/packages/gnome.scm:160 +msgid "" +"gnome-common contains various files needed to bootstrap\n" +"GNOME modules built from Git. It contains a common \"autogen.sh\" script that\n" +"can be used to configure a source directory checked out from Git and some\n" +"commonly used macros." +msgstr "" + +#: gnu/packages/gnome.scm:198 +msgid "Libgnome-desktop, gnome-about, and desktop-wide documents" +msgstr "" + +#: gnu/packages/gnome.scm:200 +msgid "" +"The libgnome-desktop library provides API shared by several applications\n" +"on the desktop, but that cannot live in the platform for various reasons.\n" +"There is no API or ABI guarantee, although we are doing our best to provide\n" +"stability. Documentation for the API is available with gtk-doc.\n" +"\n" +"The gnome-about program helps find which version of GNOME is installed." +msgstr "" + +#: gnu/packages/gnome.scm:233 +msgid "Documentation utilities for the Gnome project" +msgstr "" + +#: gnu/packages/gnome.scm:235 +msgid "" +"Gnome-doc-utils is a collection of documentation utilities for the\n" +"Gnome project. It includes xml2po tool which makes it easier to translate\n" +"and keep up to date translations of documentation." +msgstr "" + +#: gnu/packages/gnome.scm:277 +msgid "Libraries for displaying certificates and accessing key stores" +msgstr "" + +#: gnu/packages/gnome.scm:279 +msgid "" +"The GCR package contains libraries used for displaying certificates and\n" +"accessing key stores. It also provides the viewer for crypto files on the\n" +"GNOME Desktop." +msgstr "" + +#: gnu/packages/gnome.scm:308 +msgid "Accessing passwords from the GNOME keyring" +msgstr "" + +#: gnu/packages/gnome.scm:310 +msgid "Client library to access passwords from the GNOME keyring." +msgstr "" + +#: gnu/packages/gnome.scm:371 +msgid "Daemon to store passwords and encryption keys" +msgstr "" + +#: gnu/packages/gnome.scm:373 +msgid "" +"gnome-keyring is a program that keeps passwords and other secrets for\n" +"users. It is run as a daemon in the session, similar to ssh-agent, and other\n" +"applications locate it via an environment variable or D-Bus.\n" +"\n" +"The program can manage several keyrings, each with its own master password,\n" +"and there is also a session keyring which is never stored to disk, but\n" +"forgotten when the session ends." +msgstr "" + +#: gnu/packages/gnome.scm:438 +msgid "GNOME's document viewer" +msgstr "Przeglądarka dokumentów GNOME" + +#: gnu/packages/gnome.scm:440 +msgid "" +"Evince is a document viewer for multiple document formats. It\n" +"currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal\n" +"of Evince is to replace the multiple document viewers that exist\n" +"on the GNOME Desktop with a single simple application." +msgstr "" + +#: gnu/packages/gnome.scm:469 +msgid "GNOME settings for various desktop components" +msgstr "" + +#: gnu/packages/gnome.scm:471 +msgid "" +"Gsettings-desktop-schemas contains a collection of GSettings schemas\n" +"for settings shared by various components of the GNOME desktop." +msgstr "" + +#: gnu/packages/gnome.scm:505 +msgid "Utility to implement the Freedesktop Icon Naming Specification" +msgstr "" + +#: gnu/packages/gnome.scm:507 +msgid "" +"To help with the transition to the Freedesktop Icon Naming\n" +"Specification, the icon naming utility maps the icon names used by the\n" +"GNOME and KDE desktops to the icon names proposed in the specification." +msgstr "" + +#: gnu/packages/gnome.scm:529 +msgid "Utilities for working with desktop entries" +msgstr "" + +#: gnu/packages/gnome.scm:531 +msgid "" +"This package contains a few command line utilities for working with\n" +"desktop entries:\n" +"\n" +"desktop-file-validate: validates a desktop file and prints warnings/errors\n" +" about desktop entry specification violations.\n" +"\n" +"desktop-file-install: installs a desktop file to the applications directory,\n" +" optionally munging it a bit in transit.\n" +"\n" +"update-desktop-database: updates the database containing a cache of MIME types\n" +" handled by desktop files." +msgstr "" + +#: gnu/packages/gnome.scm:565 +msgid "GNOME icon theme" +msgstr "Motyw ikon GNOME" + +#: gnu/packages/gnome.scm:567 +msgid "Icons for the GNOME desktop." +msgstr "Ikony dla środowiska GNOME" + +#: gnu/packages/gnome.scm:606 +msgid "Database of common MIME types" +msgstr "" + +#: gnu/packages/gnome.scm:608 +msgid "" +"The shared-mime-info package contains the core database of common types\n" +"and the update-mime-database command used to extend it. It requires glib2 to\n" +"be installed for building the update command. Additionally, it uses intltool\n" +"for translations, though this is only a dependency for the maintainers. This\n" +"database is translated at Transifex." +msgstr "" + +#: gnu/packages/gnome.scm:632 +msgid "Freedesktop icon theme" +msgstr "Motyw ikon Freedesktop" + +#: gnu/packages/gnome.scm:634 +msgid "Freedesktop icon theme." +msgstr "Motyw ikon Freedesktop" + +#: gnu/packages/gnome.scm:661 +msgid "GNOME desktop notification library" +msgstr "" + +#: gnu/packages/gnome.scm:663 +msgid "" +"Libnotify is a library that sends desktop notifications to a\n" +"notification daemon, as defined in the Desktop Notifications spec. These\n" +"notifications can be used to inform the user about an event or display\n" +"some form of information without getting in the user's way." +msgstr "" + +#: gnu/packages/gnome.scm:695 +msgid "GObject plugin system" +msgstr "" + +#: gnu/packages/gnome.scm:697 +msgid "" +"Libpeas is a gobject-based plugins engine, and is targetted at giving\n" +"every application the chance to assume its own extensibility. It also has a\n" +"set of features including, but not limited to: multiple extension points; on\n" +"demand (lazy) programming language support for C, Python and JS; simplicity of\n" +"the API." +msgstr "" + +#: gnu/packages/gnome.scm:726 +msgid "OpenGL extension to GTK+" +msgstr "" + +#: gnu/packages/gnome.scm:727 +msgid "" +"GtkGLExt is an OpenGL extension to GTK+. It provides\n" +"additional GDK objects which support OpenGL rendering in GTK+ and GtkWidget\n" +"API add-ons to make GTK+ widgets OpenGL-capable." +msgstr "" + +#: gnu/packages/gnome.scm:752 +msgid "GTK+ rapid application development tool" +msgstr "" + +#: gnu/packages/gnome.scm:753 +msgid "" +"Glade is a rapid application development (RAD) tool to\n" +"enable quick & easy development of user interfaces for the GTK+ toolkit and\n" +"the GNOME desktop environment." +msgstr "" + +#: gnu/packages/gnome.scm:778 +msgid "CSS2 parsing and manipulation library" +msgstr "" + +#: gnu/packages/gnome.scm:780 +msgid "" +"Libcroco is a standalone CSS2 parsing and manipulation library.\n" +"The parser provides a low level event driven SAC-like API and a CSS object\n" +"model like API. Libcroco provides a CSS2 selection engine and an experimental\n" +"XML/CSS rendering engine." +msgstr "" + +#: gnu/packages/gnome.scm:813 +msgid "GNOME's Structured File Library" +msgstr "" + +#: gnu/packages/gnome.scm:815 +msgid "" +"Libgsf aims to provide an efficient extensible I/O abstraction for\n" +"dealing with different structured file formats." +msgstr "" + +#: gnu/packages/gnome.scm:880 +msgid "Render SVG files using Cairo" +msgstr "" + +#: gnu/packages/gnome.scm:882 +msgid "" +"Librsvg is a C library to render SVG files using the Cairo 2D graphics\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:906 +msgid "Create trees of CORBA Interface Definition Language files" +msgstr "" + +#: gnu/packages/gnome.scm:907 +msgid "" +"Libidl is a library for creating trees of CORBA Interface\n" +"Definition Language (idl) files, which is a specification for defining\n" +"portable interfaces. libidl was initially written for orbit (the orb from the\n" +"GNOME project, and the primary means of libidl distribution). However, the\n" +"functionality was designed to be as reusable and portable as possible." +msgstr "" + +#: gnu/packages/gnome.scm:944 +msgid "CORBA 2.4-compliant Object Request Broker" +msgstr "" + +#: gnu/packages/gnome.scm:945 +msgid "" +"ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)\n" +"featuring mature C, C++ and Python bindings." +msgstr "" + +#: gnu/packages/gnome.scm:991 +msgid "Framework for creating reusable components for use in GNOME applications" +msgstr "" + +#: gnu/packages/gnome.scm:992 +msgid "" +"Bonobo is a framework for creating reusable components for\n" +"use in GNOME applications, built on top of CORBA." +msgstr "" + +#: gnu/packages/gnome.scm:1023 +msgid "Store application preferences" +msgstr "" + +#: gnu/packages/gnome.scm:1024 +msgid "" +"Gconf is a system for storing application preferences. It\n" +"is intended for user preferences; not arbitrary data storage." +msgstr "" + +#: gnu/packages/gnome.scm:1046 +msgid "Base MIME and Application database for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:1047 +msgid "" +"GNOME Mime Data is a module which contains the base MIME\n" +"and Application database for GNOME. The data stored by this module is\n" +"designed to be accessed through the MIME functions in GnomeVFS." +msgstr "" + +#: gnu/packages/gnome.scm:1091 +msgid "Access files and folders in GNOME applications" +msgstr "" + +#: gnu/packages/gnome.scm:1093 +msgid "" +"GnomeVFS is the core library used to access files and folders in GNOME\n" +"applications. It provides a file system abstraction which allows applications\n" +"to access local and remote files with a single consistent API." +msgstr "" + +#: gnu/packages/gnome.scm:1137 +msgid "Useful routines for building applications" +msgstr "" + +#: gnu/packages/gnome.scm:1138 +msgid "" +"The libgnome library provides a number of useful routines\n" +"for building modern applications, including session management, activation of\n" +"files and URIs, and displaying help." +msgstr "" + +#: gnu/packages/gnome.scm:1161 +msgid "2D drawing library" +msgstr "" + +#: gnu/packages/gnome.scm:1162 +msgid "" +"Libart is a 2D drawing library intended as a\n" +"high-quality vector-based 2D library with antialiasing and alpha composition." +msgstr "" + +#: gnu/packages/gnome.scm:1189 +msgid "Flexible widget for creating interactive structured graphics" +msgstr "" + +#: gnu/packages/gnome.scm:1190 +msgid "" +"The GnomeCanvas widget provides a flexible widget for\n" +"creating interactive structured graphics." +msgstr "" + +#: gnu/packages/gnome.scm:1212 +msgid "C++ bindings to the GNOME Canvas library" +msgstr "" + +#: gnu/packages/gnome.scm:1213 +msgid "C++ bindings to the GNOME Canvas library." +msgstr "" + +#: gnu/packages/gnome.scm:1244 +msgid "Additional widgets for applications" +msgstr "" + +#: gnu/packages/gnome.scm:1245 +msgid "" +"The libgnomeui library provides additional widgets for\n" +"applications. Many of the widgets from libgnomeui have already been\n" +"ported to GTK+." +msgstr "" + +#: gnu/packages/gnome.scm:1271 +msgid "Load glade interfaces and access the glade built widgets" +msgstr "" + +#: gnu/packages/gnome.scm:1272 +msgid "" +"Libglade is a library that provides interfaces for loading\n" +"graphical interfaces described in glade files and for accessing the\n" +"widgets built in the loading process." +msgstr "" + +#: gnu/packages/gnome.scm:1309 gnu/packages/gnome.scm:1341 +msgid "Printing framework for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:1311 +msgid "" +"GNOME-print was a printing framework for GNOME. It has been deprecated\n" +"since ca. 2006, when GTK+ itself incorporated printing support." +msgstr "" + +#: gnu/packages/gnome.scm:1386 +msgid "Some user interface controls using Bonobo" +msgstr "" + +#: gnu/packages/gnome.scm:1387 +msgid "" +"The Bonobo UI library provides a number of user interface\n" +"controls using the Bonobo component framework." +msgstr "" + +#: gnu/packages/gnome.scm:1411 +msgid "Window Navigator Construction Kit" +msgstr "" + +#: gnu/packages/gnome.scm:1413 +msgid "" +"Libwnck is the Window Navigator Construction Kit, a library for use in\n" +"writing pagers, tasklists, and more generally applications that are dealing\n" +"with window management. It tries hard to respect the Extended Window Manager\n" +"Hints specification (EWMH)." +msgstr "" + +#: gnu/packages/gnome.scm:1460 +msgid "Document-centric objects and utilities" +msgstr "" + +#: gnu/packages/gnome.scm:1461 +msgid "A GLib/GTK+ set of document-centric objects and utilities." +msgstr "" + +#: gnu/packages/gnome.scm:1536 +msgid "Spreadsheet application" +msgstr "Arkusz kalkulacyjny" + +#: gnu/packages/gnome.scm:1538 +msgid "" +"GNUmeric is a GNU spreadsheet application, running under GNOME. It is\n" +"interoperable with other spreadsheet applications. It has a vast array of\n" +"features beyond typical spreadsheet functionality, such as support for linear\n" +"and non-linear solvers, statistical analysis, and telecommunication\n" +"engineering." +msgstr "" + +#: gnu/packages/gnome.scm:1586 +msgid "Default GNOME 3 themes" +msgstr "Domyślne motywy GNOME 3" + +#: gnu/packages/gnome.scm:1588 +msgid "The default GNOME 3 themes (Adwaita and some accessibility themes)." +msgstr "" + +#: gnu/packages/gnome.scm:1619 +msgid "Manage encryption keys and passwords in the GNOME keyring" +msgstr "" + +#: gnu/packages/gnome.scm:1621 +msgid "" +"Seahorse is a GNOME application for managing encryption keys and\n" +"passwords in the GNOME keyring." +msgstr "" + +#: gnu/packages/gnome.scm:1655 gnu/packages/gnome.scm:1791 +msgid "Compiler for the GObject type system" +msgstr "" + +#: gnu/packages/gnome.scm:1657 +msgid "" +"Vala is a programming language that aims to bring modern programming\n" +"language features to GNOME developers without imposing any additional runtime\n" +"requirements and without using a different ABI compared to applications and\n" +"libraries written in C." +msgstr "" + +#: gnu/packages/gnome.scm:1687 +msgid "Virtual Terminal Emulator" +msgstr "" + +#: gnu/packages/gnome.scm:1689 +msgid "" +"VTE is a library (libvte) implementing a terminal emulator widget for\n" +"GTK+, and a minimal sample application (vte) using that. Vte is mainly used in\n" +"gnome-terminal, but can also be used to embed a console/terminal in games,\n" +"editors, IDEs, etc." +msgstr "" + +#: gnu/packages/gnome.scm:1765 +msgid "Low-level GNOME configuration system" +msgstr "" + +#: gnu/packages/gnome.scm:1766 +msgid "" +"Dconf is a low-level configuration system. Its main purpose\n" +"is to provide a backend to GSettings on platforms that don't already have\n" +"configuration storage systems." +msgstr "" + +#: gnu/packages/gnome.scm:1793 +msgid "" +"JSON-GLib is a C library based on GLib providing serialization and\n" +"deserialization support for the JavaScript Object Notation (JSON) format\n" +"described by RFC 4627. It provides parser and generator GObject classes and\n" +"various wrappers for the complex data types employed by JSON, such as arrays\n" +"and objects." +msgstr "" + +#: gnu/packages/gnome.scm:1832 +msgid "High-level API for X Keyboard Extension" +msgstr "" + +#: gnu/packages/gnome.scm:1834 +msgid "" +"LibXklavier is a library providing high-level API for X Keyboard\n" +"Extension known as XKB. This library is intended to support XFree86 and other\n" +"commercial X servers. It is useful for creating XKB-related software (layout\n" +"indicators etc)." +msgstr "" + +#: gnu/packages/gnome.scm:1862 +msgid "Python bindings to librsvg" +msgstr "" + +#: gnu/packages/gnome.scm:1864 +msgid "" +"This packages provides Python bindings to librsvg, the SVG rendering\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:1913 +msgid "Network-related GIO modules" +msgstr "" + +#: gnu/packages/gnome.scm:1915 +msgid "" +"This package contains various network related extensions for the GIO\n" +"library." +msgstr "" + +#: gnu/packages/gnome.scm:1946 +msgid "RESTful web api query library" +msgstr "" + +#: gnu/packages/gnome.scm:1948 +msgid "" +"This library was designed to make it easier to access web services that\n" +"claim to be \"RESTful\". It includes convenience wrappers for libsoup and\n" +"libxml to ease remote use of the RESTful API." +msgstr "" + +#: gnu/packages/gnome.scm:2012 +msgid "GLib-based HTTP Library" +msgstr "" + +#: gnu/packages/gnome.scm:2014 +msgid "" +"LibSoup is an HTTP client/server library for GNOME. It uses GObjects\n" +"and the GLib main loop, to integrate well with GNOME applications." +msgstr "" + +#: gnu/packages/gnome.scm:2059 +msgid "GObject bindings for \"Secret Service\" API" +msgstr "" + +#: gnu/packages/gnome.scm:2061 +msgid "" +"Libsecret is a GObject based library for storing and retrieving passwords\n" +"and other secrets. It communicates with the \"Secret Service\" using DBus." +msgstr "" + +#: gnu/packages/gnome.scm:2105 +msgid "Minesweeper game" +msgstr "Gra Saper" + +#: gnu/packages/gnome.scm:2107 +msgid "" +"Mines (previously gnomine) is a puzzle game where you locate mines\n" +"floating in an ocean using only your brain and a little bit of luck." +msgstr "" + +#: gnu/packages/gnome.scm:2151 +msgid "Terminal emulator" +msgstr "Emulator terminala" + +#: gnu/packages/gnome.scm:2153 +msgid "" +"GNOME Terminal is a terminal emulator application for accessing a\n" +"UNIX shell environment which can be used to run programs available on\n" +"your system.\n" +"\n" +"It supports several profiles, multiple tabs and implements several\n" +"keyboard shortcuts." +msgstr "" + +#: gnu/packages/gnome.scm:2218 +msgid "Color management service" +msgstr "" + +#: gnu/packages/gnome.scm:2219 +msgid "" +"Colord is a system service that makes it easy to manage,\n" +"install and generate color profiles to accurately color manage input and\n" +"output devices." +msgstr "" + +#: gnu/packages/gnome.scm:2261 +msgid "Geolocation service" +msgstr "" + +#: gnu/packages/gnome.scm:2262 +msgid "" +"Geoclue is a D-Bus service that provides location\n" +"information. The primary goal of the Geoclue project is to make creating\n" +"location-aware applications as simple as possible, while the secondary goal is\n" +"to ensure that no application can access location information without explicit\n" +"permission from user." +msgstr "" + +#: gnu/packages/gnome.scm:2298 +msgid "Geocoding and reverse-geocoding library" +msgstr "" + +#: gnu/packages/gnome.scm:2300 +msgid "" +"geocode-glib is a convenience library for geocoding (finding longitude,\n" +"and latitude from an address) and reverse geocoding (finding an address from\n" +"coordinates) using the Nominatim service. geocode-glib caches requests for\n" +"faster results and to avoid unnecessary server load." +msgstr "" + +#: gnu/packages/gnome.scm:2347 +msgid "System daemon for managing power devices" +msgstr "" + +#: gnu/packages/gnome.scm:2349 +msgid "" +"UPower is an abstraction for enumerating power devices,\n" +"listening to device events and querying history and statistics. Any\n" +"application or service on the system can access the org.freedesktop.UPower\n" +"service via the system message bus." +msgstr "" + +#: gnu/packages/gnome.scm:2395 +msgid "Location, time zone, and weather library for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2397 +msgid "" +"libgweather is a library to access weather information from online\n" +"services for numerous locations." +msgstr "" + +#: gnu/packages/gnome.scm:2449 +msgid "GNOME settings daemon" +msgstr "" + +#: gnu/packages/gnome.scm:2451 +msgid "" +"This package contains the daemon responsible for setting the various\n" +"parameters of a GNOME session and the applications that run under it. It\n" +"handles settings such keyboard layout, shortcuts, and accessibility, clipboard\n" +"settings, themes, mouse settings, and startup of other daemons." +msgstr "" + +#: gnu/packages/gnome.scm:2487 +msgid "Library to parse and save media playlists for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2488 +msgid "" +"Totem-pl-parser is a GObjects-based library to parse and save\n" +"playlists in a variety of formats." +msgstr "" + +#: gnu/packages/gnome.scm:2522 +msgid "Solitaire card games" +msgstr "Gry typu pasjans" + +#: gnu/packages/gnome.scm:2524 +msgid "" +"Aisleriot (also known as Solitaire or sol) is a collection of card games\n" +"which are easy to play with the aid of a mouse." +msgstr "" + +#: gnu/packages/gnome.scm:2548 +msgid "API documentation browser for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2550 +msgid "" +"Devhelp is an API documentation browser for GTK+ and GNOME. It works\n" +"natively with GTK-Doc (the API reference system developed for GTK+ and used\n" +"throughout GNOME for API documentation)." +msgstr "" + +#: gnu/packages/gnome.scm:2611 +msgid "Object oriented GL/GLES Abstraction/Utility Layer" +msgstr "" + +#: gnu/packages/gnome.scm:2613 +msgid "" +"Cogl is a small library for using 3D graphics hardware to draw pretty\n" +"pictures. The API departs from the flat state machine style of OpenGL and is\n" +"designed to make it easy to write orthogonal components that can render\n" +"without stepping on each others toes." +msgstr "" + +#: gnu/packages/gnome.scm:2668 +msgid "Open GL based interactive canvas library" +msgstr "" + +#: gnu/packages/gnome.scm:2670 gnu/packages/gnome.scm:2698 +msgid "" +"Clutter is an Open GL based interactive canvas library, designed for\n" +"creating fast, mainly 2D single window applications such as media box UIs,\n" +"presentations, kiosk style applications and so on." +msgstr "" + +#: gnu/packages/gnome.scm:2696 +msgid "Open GL based interactive canvas library GTK+ widget" +msgstr "" + +#: gnu/packages/gnome.scm:2726 +msgid "Integration library for using GStreamer with Clutter" +msgstr "" + +#: gnu/packages/gnome.scm:2728 +msgid "" +"Clutter-Gst is an integration library for using GStreamer with Clutter.\n" +"It provides a GStreamer sink to upload frames to GL and an actor that\n" +"implements the ClutterGstPlayer interface using playbin. Clutter is an Open\n" +"GL based interactive canvas library." +msgstr "" + +#: gnu/packages/gnome.scm:2758 +msgid "C library providing a ClutterActor to display maps" +msgstr "" + +#: gnu/packages/gnome.scm:2760 +msgid "" +"libchamplain is a C library providing a ClutterActor to display maps.\n" +"It also provides a Gtk+ widget to display maps in Gtk+ applications. Python\n" +"and Perl bindings are also available. It supports numerous free map sources\n" +"such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free." +msgstr "" + +#: gnu/packages/gnome.scm:2791 +msgid "Object mapper from GObjects to SQLite" +msgstr "" + +#: gnu/packages/gnome.scm:2793 +msgid "" +"Gom provides an object mapper from GObjects to SQLite. It helps you\n" +"write applications that need to store structured data as well as make complex\n" +"queries upon that data." +msgstr "" + +#: gnu/packages/gnome.scm:2821 +msgid "Sliding block puzzles" +msgstr "" + +#: gnu/packages/gnome.scm:2823 +msgid "" +"GNOME Klotski is a set of block sliding puzzles. The objective is to move\n" +"the patterned block to the area bordered by green markers. To do so, you will\n" +"need to slide other blocks out of the way. Complete each puzzle in as few moves\n" +"as possible!" +msgstr "" + +#: gnu/packages/gnome.scm:2874 +msgid "Framework for discovering and browsing media" +msgstr "" + +#: gnu/packages/gnome.scm:2876 gnu/packages/gnome.scm:2928 +msgid "" +"Grilo is a framework focused on making media discovery and browsing easy\n" +"for application developers." +msgstr "" + +#: gnu/packages/gnome.scm:2926 +msgid "Plugins for the Grilo media discovery library" +msgstr "" + +#: gnu/packages/gnome.scm:3003 +msgid "Simple media player for GNOME based on GStreamer" +msgstr "" + +#: gnu/packages/gnome.scm:3004 +msgid "" +"Totem is a simple yet featureful media player for GNOME\n" +"which can read a large number of file formats." +msgstr "" + +#: gnu/packages/gnome.scm:3093 +msgid "Music player for GNOME" +msgstr "Odtwarzacz muzyki GNOME" + +#: gnu/packages/gnome.scm:3094 +msgid "" +"Rhythmbox is a music playing application for GNOME. It\n" +"supports playlists, song ratings, and any codecs installed through gstreamer." +msgstr "" + +#: gnu/packages/gnome.scm:3144 +msgid "GNOME image viewer" +msgstr "Przeglądarka obrazów GNOME" + +#: gnu/packages/gnome.scm:3145 +msgid "" +"Eye of GNOME is the GNOME image viewer. It\n" +"supports image conversion, rotation, and slideshows." +msgstr "" + +#: gnu/packages/gnome.scm:3170 +msgid "GObject bindings for libudev" +msgstr "" + +#: gnu/packages/gnome.scm:3172 +msgid "" +"This library provides GObject bindings for libudev. It was originally\n" +"part of udev-extras, then udev, then systemd. It's now a project on its own." +msgstr "" + +#: gnu/packages/gnome.scm:3217 +msgid "Userspace virtual filesystem for GIO" +msgstr "" + +#: gnu/packages/gnome.scm:3219 +msgid "" +"GVFS is a userspace virtual filesystem designed to work with the I/O\n" +"abstraction of GIO. It contains a GIO module that seamlessly adds GVFS support\n" +"to all applications using the GIO API. It also supports exposing the GVFS\n" +"mounts to non-GIO applications using FUSE.\n" +"\n" +"GVFS comes with a set of backends, including trash support, SFTP, SMB, HTTP,\n" +"DAV, and others." +msgstr "" + +#: gnu/packages/gnome.scm:3265 +msgid "A GLib binding for libusb1" +msgstr "" + +#: gnu/packages/gnome.scm:3267 +msgid "" +"GUsb is a GObject wrapper for libusb1 that makes it easy to do\n" +"asynchronous control, bulk and interrupt transfers with proper cancellation\n" +"and integration into a mainloop. This makes it easy to integrate low level\n" +"USB transfers with your high-level application or system daemon." +msgstr "" + +#: gnu/packages/gnome.scm:3304 +msgid "Document and image scanner" +msgstr "" + +#: gnu/packages/gnome.scm:3305 +msgid "" +"Simple Scan is an easy-to-use application, designed to let\n" +"users connect their scanner and quickly have the image/document in an\n" +"appropriate format. Simple Scan is basically a frontend for SANE - which is\n" +"the same backend as XSANE uses. This means that all existing scanners will\n" +"work and the interface is well tested." +msgstr "" + +#: gnu/packages/gnome.scm:3354 +msgid "GNOME web browser" +msgstr "Przeglądarka internetu GNOME" + +#: gnu/packages/gnome.scm:3356 +msgid "" +"Epiphany is a GNOME web browser targeted at non-technical users. Its\n" +"principles are simplicity and standards compliance." +msgstr "" + +#: gnu/packages/gnome.scm:3412 +msgid "D-Bus debugger" +msgstr "" + +#: gnu/packages/gnome.scm:3414 +msgid "" +"D-Feet is a D-Bus debugger, which can be used to inspect D-Bus interfaces\n" +"of running programs and invoke methods on those interfaces." +msgstr "" + +#: gnu/packages/gnome.scm:3436 +msgid "XSL stylesheets for Yelp" +msgstr "" + +#: gnu/packages/gnome.scm:3438 +msgid "" +"Yelp-xsl contains XSL stylesheets that are used by the yelp help browser\n" +"to format Docbook and Mallard documents." +msgstr "" + +#: gnu/packages/gnome.scm:3470 +msgid "GNOME help browser" +msgstr "" + +#: gnu/packages/gnome.scm:3472 +msgid "" +"Yelp is the help viewer in Gnome. It natively views Mallard, DocBook,\n" +"man, info, and HTML documents. It can locate documents according to the\n" +"freedesktop.org help system specification." +msgstr "" + +#: gnu/packages/gnome.scm:3500 +msgid "Yelp documentation tools" +msgstr "" + +#: gnu/packages/gnome.scm:3502 +msgid "" +"Yelp-tools is a collection of scripts and build utilities to help create,\n" +"manage, and publish documentation for Yelp and the web. Most of the heavy\n" +"lifting is done by packages like yelp-xsl and itstool. This package just\n" +"wraps things up in a developer-friendly way." +msgstr "" + +#: gnu/packages/gnome.scm:3539 +msgid "GObject collection library" +msgstr "" + +#: gnu/packages/gnome.scm:3541 +msgid "" +"Libgee is a utility library providing GObject-based interfaces and\n" +"classes for commonly used data structures." +msgstr "" + +#: gnu/packages/gnome.scm:3568 +msgid "GObject wrapper around the Exiv2 photo metadata library" +msgstr "" + +#: gnu/packages/gnome.scm:3570 +msgid "" +"Gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It\n" +"allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP\n" +"metadata in photo and video files of various formats." +msgstr "" + +#: gnu/packages/gnome.scm:3622 +msgid "Photo manager for GNOME 3" +msgstr "" + +#: gnu/packages/gnome.scm:3624 +msgid "" +"Shotwell is a digital photo manager designed for the GNOME desktop\n" +"environment. It allows you to import photos from disk or camera, organize\n" +"them by keywords and events, view them in full-window or fullscreen mode, and\n" +"share them with others via social networking and more." +msgstr "" + +#: gnu/packages/gnome.scm:3656 +msgid "Graphical archive manager for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:3657 +msgid "" +"File Roller is an archive manager for the GNOME desktop\n" +"environment that allows users to view, unpack, and create compressed archives\n" +"such as gzip tarballs." +msgstr "" + +#: gnu/packages/gnuzilla.scm:90 +msgid "Mozilla javascript engine" +msgstr "" + +#: gnu/packages/gnuzilla.scm:91 +msgid "" +"SpiderMonkey is Mozilla's JavaScript engine written\n" +"in C/C++." +msgstr "" + +#: gnu/packages/gnuzilla.scm:123 +msgid "Netscape API for system level and libc-like functions" +msgstr "" + +#: gnu/packages/gnuzilla.scm:124 +msgid "" +"Netscape Portable Runtime (NSPR) provides a\n" +"platform-neutral API for system level and libc-like functions. It is used\n" +"in the Mozilla clients." +msgstr "" + +#: gnu/packages/gnuzilla.scm:219 +msgid "Network Security Services" +msgstr "" + +#: gnu/packages/gnuzilla.scm:221 +msgid "" +"Network Security Services (NSS) is a set of libraries designed to support\n" +"cross-platform development of security-enabled client and server applications.\n" +"Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,\n" +"PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security\n" +"standards." +msgstr "" + +#: gnu/packages/gnuzilla.scm:453 +msgid "Entirely free browser derived from Mozilla Firefox" +msgstr "Całkowicie wolna przeglądarka pochodząca od Firefoksa" + +#: gnu/packages/gnuzilla.scm:455 +msgid "" +"IceCat is the GNU version of the Firefox browser. It is entirely free\n" +"software, which does not recommend non-free plugins and addons. It also\n" +"features built-in privacy-protecting features." +msgstr "" + +#: gnu/packages/gtk.scm:84 +msgid "GNOME accessibility toolkit" +msgstr "" + +#: gnu/packages/gtk.scm:86 +msgid "" +"ATK provides the set of accessibility interfaces that are implemented\n" +"by other toolkits and applications. Using the ATK interfaces, accessibility\n" +"tools have full access to view and control running applications." +msgstr "" + +#: gnu/packages/gtk.scm:125 +msgid "2D graphics library" +msgstr "" + +#: gnu/packages/gtk.scm:127 +msgid "" +"Cairo is a 2D graphics library with support for multiple output devices.\n" +"Currently supported output targets include the X Window System (via both\n" +"Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file\n" +"output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.\n" +"\n" +"Cairo is designed to produce consistent output on all output media while\n" +"taking advantage of display hardware acceleration when available\n" +"eg. through the X Render Extension).\n" +"\n" +"The cairo API provides operations similar to the drawing operators of\n" +"PostScript and PDF. Operations in cairo including stroking and filling cubic\n" +"Bézier splines, transforming and compositing translucent images, and\n" +"antialiased text rendering. All drawing operations can be transformed by any\n" +"affine transformation (scale, rotation, shear, etc.)." +msgstr "" + +#: gnu/packages/gtk.scm:175 +msgid "OpenType text shaping engine" +msgstr "" + +#: gnu/packages/gtk.scm:177 +msgid "HarfBuzz is an OpenType text shaping engine." +msgstr "" + +#: gnu/packages/gtk.scm:208 +msgid "GNOME text and font handling library" +msgstr "" + +#: gnu/packages/gtk.scm:210 +msgid "" +"Pango is the core text and font handling library used in GNOME\n" +"applications. It has extensive support for the different writing systems\n" +"used throughout the world." +msgstr "" + +#: gnu/packages/gtk.scm:236 +msgid "Obsolete pango functions" +msgstr "" + +#: gnu/packages/gtk.scm:237 +msgid "" +"Pangox was a X backend to pango. It is now obsolete and no\n" +"longer provided by recent pango releases. pangox-compat provides the\n" +"functions which were removed." +msgstr "" + +#: gnu/packages/gtk.scm:271 +msgid "GTK+ widget for interactive graph-like environments" +msgstr "" + +#: gnu/packages/gtk.scm:273 +msgid "" +"Ganv is an interactive GTK+ widget for interactive “boxes and lines” or\n" +"graph-like environments, e.g. modular synths or finite state machine\n" +"diagrams." +msgstr "" + +#: gnu/packages/gtk.scm:323 +msgid "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget" +msgstr "" + +#: gnu/packages/gtk.scm:325 +msgid "" +"GtkSourceView is a portable C library that extends the standard GTK+\n" +"framework for multiline text editing with support for configurable syntax\n" +"highlighting, unlimited undo/redo, search and replace, a completion framework,\n" +"printing and other features typical of a source code editor." +msgstr "" + +#: gnu/packages/gtk.scm:374 +msgid "GNOME image loading and manipulation library" +msgstr "" + +#: gnu/packages/gtk.scm:376 +msgid "" +"GdkPixbuf is a library for image loading and manipulation developed\n" +"in the GNOME project." +msgstr "" + +#: gnu/packages/gtk.scm:417 +msgid "Assistive Technology Service Provider Interface, core components" +msgstr "" + +#: gnu/packages/gtk.scm:419 +msgid "" +"The Assistive Technology Service Provider Interface, core components,\n" +"is part of the GNOME accessibility project." +msgstr "" + +#: gnu/packages/gtk.scm:451 +msgid "Assistive Technology Service Provider Interface, ATK bindings" +msgstr "" + +#: gnu/packages/gtk.scm:453 +msgid "" +"The Assistive Technology Service Provider Interface\n" +"is part of the GNOME accessibility project." +msgstr "" + +#: gnu/packages/gtk.scm:505 +msgid "Cross-platform toolkit for creating graphical user interfaces" +msgstr "" + +#: gnu/packages/gtk.scm:507 +msgid "" +"GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating\n" +"graphical user interfaces. Offering a complete set of widgets, GTK+ is\n" +"suitable for projects ranging from small one-off tools to complete\n" +"application suites." +msgstr "" + +#: gnu/packages/gtk.scm:630 +msgid "Cairo bindings for GNU Guile" +msgstr "" + +#: gnu/packages/gtk.scm:632 +msgid "" +"Guile-Cairo wraps the Cairo graphics library for Guile Scheme.\n" +"Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API\n" +"stable, providing a firm base on which to do graphics work. Finally, and\n" +"importantly, it is pleasant to use. You get a powerful and well-maintained\n" +"graphics library with all of the benefits of Scheme: memory management,\n" +"exceptions, macros, and a dynamic programming environment." +msgstr "" + +#: gnu/packages/gtk.scm:672 +msgid "Render SVG images using Cairo from Guile" +msgstr "" + +#: gnu/packages/gtk.scm:674 +msgid "" +"Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG\n" +"images onto Cairo surfaces." +msgstr "" + +#: gnu/packages/gtk.scm:718 +msgid "Create SVG or PDF presentations in Guile" +msgstr "" + +#: gnu/packages/gtk.scm:720 +msgid "" +"Guile-Present defines a declarative vocabulary for presentations,\n" +"together with tools to render presentation documents as SVG or PDF.\n" +"Guile-Present can be used to make presentations programmatically, but also\n" +"includes a tools to generate PDF presentations out of Org mode and Texinfo\n" +"documents." +msgstr "" + +#: gnu/packages/gtk.scm:753 +msgid "C++ bindings to the Cairo 2D graphics library" +msgstr "" + +#: gnu/packages/gtk.scm:755 +msgid "" +"Cairomm provides a C++ programming interface to the Cairo 2D graphics\n" +"library." +msgstr "" + +#: gnu/packages/gtk.scm:779 +msgid "C++ interface to the Pango text rendering library" +msgstr "" + +#: gnu/packages/gtk.scm:781 +msgid "" +"Pangomm provides a C++ programming interface to the Pango text rendering\n" +"library." +msgstr "" + +#: gnu/packages/gtk.scm:802 +msgid "C++ interface to the ATK accessibility library" +msgstr "" + +#: gnu/packages/gtk.scm:804 +msgid "" +"ATKmm provides a C++ programming interface to the ATK accessibility\n" +"toolkit." +msgstr "" + +#: gnu/packages/gtk.scm:830 +msgid "C++ interface to the GTK+ graphical user interface library" +msgstr "" + +#: gnu/packages/gtk.scm:832 +msgid "" +"gtkmm is the official C++ interface for the popular GUI library GTK+.\n" +"Highlights include typesafe callbacks, and a comprehensive set of widgets that\n" +"are easily extensible via inheritance. You can create user interfaces either\n" +"in code or with the Glade User Interface designer, using libglademm. There's\n" +"extensive documentation, including API reference and a tutorial." +msgstr "" + +#: gnu/packages/gtk.scm:888 +msgid "Python bindings for cairo" +msgstr "" + +#: gnu/packages/gtk.scm:890 +msgid "Pycairo is a set of Python bindings for the Cairo graphics library." +msgstr "" + +#: gnu/packages/gtk.scm:964 +msgid "Python bindings for GTK+" +msgstr "" + +#: gnu/packages/gtk.scm:966 +msgid "" +"PyGTK allows you to write full featured GTK programs in Python. It is\n" +"targetted at GTK 2.x, and can be used in conjunction with gnome-python to\n" +"write GNOME applications." +msgstr "" + +#: gnu/packages/gtk.scm:997 +msgid "Library for minimalistic gtk+3 user interfaces" +msgstr "" + +#: gnu/packages/gtk.scm:998 +msgid "" +"Girara is a library that implements a user interface that\n" +"focuses on simplicity and minimalism. Currently based on GTK+, a\n" +"cross-platform widget toolkit, it provides an interface that focuses on three\n" +"main components: a so-called view widget that represents the actual\n" +"application, an input bar that is used to execute commands of the\n" +"application and the status bar which provides the user with current\n" +"information." +msgstr "" + +#: gnu/packages/gtk.scm:1041 +msgid "Documentation generator from C source code" +msgstr "" + +#: gnu/packages/gtk.scm:1043 +msgid "" +"GTK-Doc generates API documentation from comments added to C code. It is\n" +"typically used to document the public API of GTK+ and GNOME libraries, but it\n" +"can also be used to document application code." +msgstr "" + +#: gnu/packages/guile.scm:107 gnu/packages/guile.scm:174 +msgid "Scheme implementation intended especially for extensions" +msgstr "" + +#: gnu/packages/guile.scm:109 gnu/packages/guile.scm:176 +msgid "" +"Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n" +"official extension language of the GNU system. It is an implementation of\n" +"the Scheme language which can be easily embedded in other applications to\n" +"provide a convenient means of extending the functionality of the application\n" +"without requiring the source code to be rewritten." +msgstr "" + +#: gnu/packages/guile.scm:217 +msgid "Snapshot of what will become version 2.2 of GNU Guile" +msgstr "" + +#: gnu/packages/guile.scm:264 +msgid "Framework for building readers for GNU Guile" +msgstr "" + +#: gnu/packages/guile.scm:266 +msgid "" +"Guile-Reader is a simple framework for building readers for GNU Guile.\n" +"\n" +"The idea is to make it easy to build procedures that extend Guile’s read\n" +"procedure. Readers supporting various syntax variants can easily be written,\n" +"possibly by re-using existing “token readers” of a standard Scheme\n" +"readers. For example, it is used to implement Skribilo’s R5RS-derived\n" +"document syntax.\n" +"\n" +"Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n" +"hopefully more powerful and flexible (for instance, one may instantiate as\n" +"many readers as needed)." +msgstr "" + +#: gnu/packages/guile.scm:311 +msgid "Guile bindings to ncurses" +msgstr "" + +#: gnu/packages/guile.scm:313 +msgid "" +"guile-ncurses provides Guile language bindings for the ncurses\n" +"library." +msgstr "" + +#: gnu/packages/guile.scm:333 +msgid "Run jobs at scheduled times" +msgstr "" + +#: gnu/packages/guile.scm:335 +msgid "" +"GNU Mcron is a complete replacement for Vixie cron. It is used to run\n" +"tasks on a schedule, such as every hour or every Monday. Mcron is written in\n" +"Guile, so its configuration can be written in Scheme; the original cron\n" +"format is also supported." +msgstr "" + +#: gnu/packages/guile.scm:363 +msgid "Collection of useful Guile Scheme modules" +msgstr "" + +#: gnu/packages/guile.scm:365 +msgid "" +"Guile-Lib is intended as an accumulation place for pure-scheme Guile\n" +"modules, allowing for people to cooperate integrating their generic Guile\n" +"modules into a coherent library. Think \"a down-scaled, limited-scope CPAN\n" +"for Guile\"." +msgstr "" + +#: gnu/packages/guile.scm:396 +msgid "JSON module for Guile" +msgstr "" + +#: gnu/packages/guile.scm:398 +msgid "" +"Guile-json supports parsing and building JSON documents according to the\n" +"http:://json.org specification. These are the main features:\n" +"- Strictly complies to http://json.org specification.\n" +"- Build JSON documents programmatically via macros.\n" +"- Unicode support for strings.\n" +"- Allows JSON pretty printing." +msgstr "" + +#: gnu/packages/guile.scm:468 +msgid "MiniKanren declarative logic system, packaged for Guile" +msgstr "" + +#: gnu/packages/guile.scm:470 +msgid "" +"MiniKanren is a relational programming extension to the Scheme\n" +"programming Language, written as a smaller version of Kanren suitable for\n" +"pedagogical purposes. It is featured in the book, The Reasoned Schemer,\n" +"written by Dan Friedman, William Byrd, and Oleg Kiselyov.\n" +"\n" +"This is Ian Price's r6rs packaged version of miniKanren, which deviates\n" +"slightly from miniKanren mainline.\n" +"\n" +"See http://minikanren.org/ for more on miniKanren generally." +msgstr "" + +#: gnu/packages/guile.scm:540 +msgid "Guile bindings to the GDBM library via Guile's FFI" +msgstr "" + +#: gnu/packages/guile.scm:542 +msgid "" +"Guile bindings to the GDBM key-value storage system, using\n" +"Guile's foreign function interface." +msgstr "" + +#: gnu/packages/guile.scm:560 +msgid "Functional static site generator" +msgstr "" + +#: gnu/packages/guile.scm:561 +msgid "" +"Haunt is a static site generator written in Guile\n" +"Scheme. Haunt features a functional build system and an extensible\n" +"interface for reading articles in any format." +msgstr "" + +#: gnu/packages/guile.scm:591 +msgid "Redis client library for Guile" +msgstr "" + +#: gnu/packages/guile.scm:592 +msgid "" +"Guile-redis provides a Scheme interface to the Redis\n" +"key-value cache and store." +msgstr "" + +#: gnu/packages/guile.scm:666 +msgid "wisp is a whitespace to lisp syntax for Guile" +msgstr "" + +#: gnu/packages/guile.scm:667 +msgid "" +"wisp is a syntax for Guile which provides a Python-like\n" +"whitespace-significant language. It may be easier on the eyes for some\n" +"users and in some situations." +msgstr "" + +#: gnu/packages/imagemagick.scm:99 +msgid "Create, edit, compose, or convert bitmap images" +msgstr "" + +#: gnu/packages/imagemagick.scm:101 +msgid "" +"ImageMagick® is a software suite to create, edit, compose, or convert\n" +"bitmap images. It can read and write images in a variety of formats (over 100)\n" +"including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,\n" +"and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and\n" +"transform images, adjust image colors, apply various special effects, or draw\n" +"text, lines, polygons, ellipses and Bézier curves." +msgstr "" + +#: gnu/packages/imagemagick.scm:145 +msgid "Perl interface to ImageMagick" +msgstr "" + +#: gnu/packages/imagemagick.scm:146 +msgid "" +"This Perl extension allows the reading, manipulation and\n" +"writing of a large number of image file formats using the ImageMagick library.\n" +"Use it to create, edit, compose, or convert bitmap images from within a Perl\n" +"script." +msgstr "" + +#: gnu/packages/image.scm:69 +msgid "Library for handling PNG files" +msgstr "" + +#: gnu/packages/image.scm:71 +msgid "" +"Libpng is the official PNG (Portable Network Graphics) reference\n" +"library. It supports almost all PNG features and is extensible." +msgstr "" + +#: gnu/packages/image.scm:87 +msgid "Library for handling JPEG files" +msgstr "" + +#: gnu/packages/image.scm:89 +msgid "" +"Libjpeg implements JPEG image encoding, decoding, and transcoding.\n" +"JPEG is a standardized compression method for full-color and gray-scale\n" +"images.\n" +"The included programs provide conversion between the JPEG format and\n" +"image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats." +msgstr "" + +#: gnu/packages/image.scm:128 +msgid "Library for handling TIFF files" +msgstr "" + +#: gnu/packages/image.scm:130 +msgid "" +"Libtiff provides support for the Tag Image File Format (TIFF), a format\n" +"used for storing image data.\n" +"Included are a library, libtiff, for reading and writing TIFF and a small\n" +"collection of tools for doing simple manipulations of TIFF images." +msgstr "" + +#: gnu/packages/image.scm:173 +msgid "Library for reading images in the Microsoft WMF format" +msgstr "" + +#: gnu/packages/image.scm:175 +msgid "" +"libwmf is a library for reading vector images in Microsoft's native\n" +"Windows Metafile Format (WMF) and for either (a) displaying them in, e.g., an X\n" +"window; or (b) converting them to more standard/free file formats such as, e.g.,\n" +"the W3C's XML-based Scaleable Vector Graphic (SVG) format." +msgstr "" + +#: gnu/packages/image.scm:233 +msgid "Library and tools for image processing and analysis" +msgstr "" + +#: gnu/packages/image.scm:235 +msgid "" +"Leptonica is a C library and set of command-line tools for efficient\n" +"image processing and image analysis operations. It supports rasterop, affine\n" +"transformations, binary and grayscale morphology, rank order, and convolution,\n" +"seedfill and connected components, image transformations combining changes in\n" +"scale and pixel depth, and pixelwise masking, blending, enhancement, and\n" +"arithmetic ops." +msgstr "" + +#: gnu/packages/image.scm:258 +msgid "Decoder of the JBIG2 image compression format" +msgstr "" + +#: gnu/packages/image.scm:260 +msgid "" +"JBIG2 is designed for lossy or lossless encoding of 'bilevel' (1-bit\n" +"monochrome) images at moderately high resolution, and in particular scanned\n" +"paper documents. In this domain it is very efficient, offering compression\n" +"ratios on the order of 100:1.\n" +"\n" +"This is a decoder only implementation, and currently is in the alpha\n" +"stage, meaning it doesn't completely work yet. However, it is\n" +"maintaining parity with available encoders, so it is useful for real\n" +"work." +msgstr "" + +#: gnu/packages/image.scm:295 +msgid "JPEG 2000 codec" +msgstr "Kodek JPEG 2000" + +#: gnu/packages/image.scm:297 +msgid "" +"The OpenJPEG library is a JPEG 2000 codec written in C. It has\n" +"been developed in order to promote the use of JPEG 2000, the new\n" +"still-image compression standard from the Joint Photographic Experts\n" +"Group (JPEG).\n" +"\n" +"In addition to the basic codec, various other features are under\n" +"development, among them the JP2 and MJ2 (Motion JPEG 2000) file formats,\n" +"an indexing tool useful for the JPIP protocol, JPWL-tools for\n" +"error-resilience, a Java-viewer for j2k-images, ..." +msgstr "" + +#: gnu/packages/image.scm:376 +msgid "Tools and library for working with GIF images" +msgstr "" + +#: gnu/packages/image.scm:378 +msgid "" +"GIFLIB is a library for reading and writing GIF images. It is API and\n" +"ABI compatible with libungif which was in wide use while the LZW compression\n" +"algorithm was patented. Tools are also included to convert, manipulate,\n" +"compose, and analyze GIF images." +msgstr "" + +#: gnu/packages/image.scm:399 +msgid "GIF decompression library" +msgstr "" + +#: gnu/packages/image.scm:401 +msgid "libungif is the old GIF decompression library by the GIFLIB project." +msgstr "" + +#: gnu/packages/image.scm:430 +msgid "Loading, saving, rendering and manipulating image files" +msgstr "" + +#: gnu/packages/image.scm:432 +msgid "" +"Imlib2 is a library that does image file loading and saving as well as\n" +"rendering, manipulation, arbitrary polygon support, etc.\n" +"\n" +"It does ALL of these operations FAST. Imlib2 also tries to be highly\n" +"intelligent about doing them, so writing naive programs can be done easily,\n" +"without sacrificing speed.\n" +"\n" +"This is a complete rewrite over the Imlib 1.x series. The architecture is\n" +"more modular, simple, and flexible." +msgstr "" + +#: gnu/packages/image.scm:460 +msgid "Wrapper library for imlib2" +msgstr "" + +#: gnu/packages/image.scm:462 +msgid "" +"Giblib is a simple library which wraps imlib2's context API, avoiding\n" +"all the context_get/set calls, adds fontstyles to the truetype renderer and\n" +"supplies a generic doubly-linked list and some string functions." +msgstr "" + +#: gnu/packages/image.scm:502 +msgid "Library for handling popular graphics image formats" +msgstr "" + +#: gnu/packages/image.scm:504 +msgid "" +"FreeImage is a library for developers who would like to support popular\n" +"graphics image formats like PNG, BMP, JPEG, TIFF and others." +msgstr "" + +#: gnu/packages/image.scm:554 +msgid "Computer vision library" +msgstr "" + +#: gnu/packages/image.scm:556 +msgid "" +"VIGRA stands for Vision with Generic Algorithms. It is an image\n" +"processing and analysis library that puts its main emphasis on customizable\n" +"algorithms and data structures. It is particularly strong for\n" +"multi-dimensional image processing." +msgstr "" + +#: gnu/packages/image.scm:587 +msgid "Lossless and lossy image compression" +msgstr "" + +#: gnu/packages/image.scm:589 +msgid "" +"WebP is a new image format that provides lossless and lossy compression\n" +"for images. WebP lossless images are 26% smaller in size compared to\n" +"PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at\n" +"equivalent SSIM index. WebP supports lossless transparency (also known as\n" +"alpha channel) with just 22% additional bytes. Transparency is also supported\n" +"with lossy compression and typically provides 3x smaller file sizes compared\n" +"to PNG when lossy compression is acceptable for the red/green/blue color\n" +"channels." +msgstr "" + +#: gnu/packages/image.scm:617 +msgid "Library for handling MNG files" +msgstr "" + +#: gnu/packages/image.scm:619 +msgid "Libmng is the MNG (Multiple-image Network Graphics) reference library." +msgstr "" + +#: gnu/packages/inkscape.scm:84 +msgid "Vector graphics editor" +msgstr "Edytor grafiki wektorowej" + +#: gnu/packages/inkscape.scm:85 +msgid "" +"Inkscape is a vector graphics editor. What sets Inkscape\n" +"apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,\n" +"as the native format." +msgstr "" + +#: gnu/packages/jemalloc.scm:47 +msgid "General-purpose scalable concurrent malloc implementation" +msgstr "" + +#: gnu/packages/jemalloc.scm:49 +msgid "" +"This library providing a malloc(3) implementation that emphasizes\n" +"fragmentation avoidance and scalable concurrency support." +msgstr "" + +#: gnu/packages/key-mon.scm:65 +msgid "Show keyboard and mouse status" +msgstr "" + +#: gnu/packages/key-mon.scm:67 +msgid "" +"The key-mon utility displays the current keyboard and mouse status.\n" +"This is useful for teaching and screencasts." +msgstr "" + +#: gnu/packages/less.scm:41 +msgid "Paginator for terminals" +msgstr "" + +#: gnu/packages/less.scm:43 +msgid "" +"GNU less is a pager, a program that allows you to view large amounts\n" +"of text in page-sized chunks. Unlike traditional pagers, it allows both\n" +"backwards and forwards movement through the document. It also does not have\n" +"to read the entire input file before starting, so it starts faster than most\n" +"text editors." +msgstr "" + +#: gnu/packages/lesstif.scm:47 +msgid "Clone of the Motif toolkit for the X window system" +msgstr "" + +#: gnu/packages/lesstif.scm:48 +msgid "Clone of the Motif toolkit for the X window system." +msgstr "" + +#: gnu/packages/libreoffice.scm:85 +msgid "General purpose formula parser and interpreter" +msgstr "" + +#: gnu/packages/libreoffice.scm:86 +msgid "" +"Ixion is a library for calculating the results of formula\n" +"expressions stored in multiple named targets, or \"cells\". The cells can\n" +"be referenced from each other, and the library takes care of resolving\n" +"their dependencies automatically upon calculation." +msgstr "" + +#: gnu/packages/libreoffice.scm:111 +msgid "File import filter library for spreadsheet documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:112 +msgid "" +"Orcus is a library that provides a collection of standalone\n" +"file processing filters. It is currently focused on providing filters for\n" +"spreadsheet documents. The library includes import filters for\n" +"Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet,\n" +"Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for\n" +"CSV, CSS and XML." +msgstr "" + +#: gnu/packages/libreoffice.scm:143 +msgid "Document importer for office suites" +msgstr "" + +#: gnu/packages/libreoffice.scm:144 +msgid "" +"Librevenge is a base library for writing document import\n" +"filters. It has interfaces for text documents, vector graphics,\n" +"spreadsheets and presentations." +msgstr "" + +#: gnu/packages/libreoffice.scm:169 +msgid "Library for importing WordPerfect documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:170 +msgid "" +"Libwpd is a C++ library designed to help process\n" +"WordPerfect documents. It is most commonly used to import such documents\n" +"into other word processors." +msgstr "" + +#: gnu/packages/libreoffice.scm:202 +msgid "Library for import of reflowable e-book formats" +msgstr "" + +#: gnu/packages/libreoffice.scm:203 +msgid "" +"Libe-book is a library and a set of tools for reading and\n" +"converting various reflowable e-book formats. Currently supported are:\n" +"Broad Band eBook, eReader .pdb, FictionBook v. 2 (including zipped files),\n" +"PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled\n" +"cellphones), TCR (simple compressed text format), TealDoc, zTXT,\n" +"ZVR (simple compressed text format)." +msgstr "" + +#: gnu/packages/libreoffice.scm:232 +msgid "Library and tools for the WordPerfect Graphics format" +msgstr "" + +#: gnu/packages/libreoffice.scm:233 +msgid "" +"The libwpg project provides a library and tools for\n" +"working with graphics in the WPG (WordPerfect Graphics) format." +msgstr "" + +#: gnu/packages/libreoffice.scm:273 +msgid "CMIS client library" +msgstr "" + +#: gnu/packages/libreoffice.scm:274 +msgid "" +"LibCMIS is a C++ client library for the CMIS interface. It\n" +"allows C++ applications to connect to any ECM behaving as a CMIS server such\n" +"as Alfresco or Nuxeo." +msgstr "" + +#: gnu/packages/libreoffice.scm:305 +msgid "Library for parsing the AbiWord format" +msgstr "" + +#: gnu/packages/libreoffice.scm:306 +msgid "" +"Libabw is a library that parses the file format of\n" +"AbiWord documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:336 +msgid "Library for parsing the CorelDRAW format" +msgstr "" + +#: gnu/packages/libreoffice.scm:337 +msgid "" +"Libcdr is a library that parses the file format of\n" +"CorelDRAW documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:366 +msgid "Library for parsing the Apple Keynote format" +msgstr "" + +#: gnu/packages/libreoffice.scm:367 +msgid "" +"Libetonyek is a library that parses the file format of\n" +"Apple Keynote documents. It currently supports Keynote versions 2 to 5." +msgstr "" + +#: gnu/packages/libreoffice.scm:384 +msgid "Text Categorization library" +msgstr "" + +#: gnu/packages/libreoffice.scm:385 +msgid "" +"Libexttextcat is an N-Gram-Based Text Categorization\n" +"library primarily intended for language guessing." +msgstr "" + +#: gnu/packages/libreoffice.scm:411 +msgid "Library for parsing the FreeHand format" +msgstr "" + +#: gnu/packages/libreoffice.scm:412 +msgid "" +"Libfreehand is a library that parses the file format of\n" +"Aldus/Macromedia/Adobe FreeHand documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:438 +msgid "Library for parsing the Microsoft Publisher format" +msgstr "" + +#: gnu/packages/libreoffice.scm:439 +msgid "" +"Libmspub is a library that parses the file format of\n" +"Microsoft Publisher documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:467 +msgid "Library for parsing the PageMaker format" +msgstr "" + +#: gnu/packages/libreoffice.scm:468 +msgid "" +"Libpagemaker is a library that parses the file format of\n" +"Aldus/Adobe PageMaker documents. Currently it only understands documents\n" +"created by PageMaker version 6.x and 7." +msgstr "" + +#: gnu/packages/libreoffice.scm:503 +msgid "Library for parsing the Microsoft Visio format" +msgstr "" + +#: gnu/packages/libreoffice.scm:504 +msgid "" +"Libvisio is a library that parses the file format of\n" +"Microsoft Visio documents of all versions." +msgstr "" + +#: gnu/packages/libreoffice.scm:532 +msgid "ODF (Open Document Format) library" +msgstr "" + +#: gnu/packages/libreoffice.scm:533 +msgid "" +"Libodfgen is a library for generating documents in the\n" +"Open Document Format (ODF). It provides generator implementations for all\n" +"document interfaces supported by librevenge:\n" +"text documents, vector drawings, presentations and spreadsheets." +msgstr "" + +#: gnu/packages/libreoffice.scm:563 +msgid "Import library for some old Macintosh text documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:564 +msgid "" +"Libmwaw contains some import filters for old Macintosh\n" +"text documents (MacWrite, ClarisWorks, ... ) and for some graphics and\n" +"spreadsheet documents." +msgstr "" + +#: gnu/packages/libreoffice.scm:593 +msgid "Import library for Microsoft Works text documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:594 +msgid "" +"Libwps is a library for importing files in the Microsoft\n" +"Works word processor file format." +msgstr "" + +#: gnu/packages/libreoffice.scm:612 +msgid "" +"Hunspell is a spell checker and morphological analyzer\n" +"library and program designed for languages with rich morphology and complex\n" +"word compounding or character encoding." +msgstr "" + +#: gnu/packages/libreoffice.scm:633 +msgid "Hyphenation library" +msgstr "Biblioteka dzielenia wyrazów" + +#: gnu/packages/libreoffice.scm:634 +msgid "" +"Hyphen is a hyphenation library using TeX hyphenation\n" +"patterns, which are pre-processed by a perl script." +msgstr "" + +#: gnu/packages/libreoffice.scm:657 +msgid "Thesaurus" +msgstr "" + +#: gnu/packages/libreoffice.scm:658 +msgid "" +"MyThes is a simple thesaurus that uses a structured text\n" +"data file and an index file with binary search to look up words and phrases\n" +"and to return information on pronunciations, meanings and synonyms." +msgstr "" + +#: gnu/packages/libreoffice.scm:822 +msgid "Office suite" +msgstr "Pakiet biurowy" + +#: gnu/packages/libreoffice.scm:823 +msgid "" +"LibreOffice is a comprehensive office suite. It contains\n" +"a number of components: Writer, a word processor; Calc, a spreadsheet\n" +"application; Impress, a presentation engine; Draw, a drawing and\n" +"flowcharting application; Base, a database and database frontend;\n" +"Math for editing mathematics." +msgstr "" + +#: gnu/packages/linux.scm:149 +msgid "GNU Linux-Libre kernel headers" +msgstr "" + +#: gnu/packages/linux.scm:150 +msgid "Headers of the Linux-Libre kernel." +msgstr "" + +#: gnu/packages/linux.scm:181 +msgid "Tools for loading and managing Linux kernel modules" +msgstr "" + +#: gnu/packages/linux.scm:183 +msgid "" +"Tools for loading and managing Linux kernel modules, such as `modprobe',\n" +"`insmod', `lsmod', and more." +msgstr "" + +#: gnu/packages/linux.scm:311 +msgid "100% free redistribution of a cleaned Linux kernel" +msgstr "" + +#: gnu/packages/linux.scm:313 +msgid "" +"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.\n" +"It has been modified to remove all non-free binary blobs." +msgstr "" + +#: gnu/packages/linux.scm:356 +msgid "Pluggable authentication modules for Linux" +msgstr "" + +#: gnu/packages/linux.scm:358 +msgid "" +"A *Free* project to implement OSF's RFC 86.0.\n" +"Pluggable authentication modules are small shared object files that can\n" +"be used through the PAM API to perform tasks, like authenticating a user\n" +"at login. Local and dynamic reconfiguration are its key features." +msgstr "" + +#: gnu/packages/linux.scm:385 +msgid "Small utilities that use the proc filesystem" +msgstr "" + +#: gnu/packages/linux.scm:387 +msgid "" +"This PSmisc package is a set of some small useful utilities that\n" +"use the proc filesystem. We're not about changing the world, but\n" +"providing the system administrator with some help in common tasks." +msgstr "" + +#: gnu/packages/linux.scm:449 +msgid "Collection of utilities for the Linux kernel" +msgstr "" + +#: gnu/packages/linux.scm:451 +msgid "Util-linux is a random collection of utilities for the Linux kernel." +msgstr "" + +#: gnu/packages/linux.scm:518 +msgid "Utilities that give information about processes" +msgstr "" + +#: gnu/packages/linux.scm:520 +msgid "" +"Procps is the package that has a bunch of small useful utilities\n" +"that give information about processes using the Linux /proc file system.\n" +"The package includes the programs ps, top, vmstat, w, kill, free,\n" +"slabtop, and skill." +msgstr "" + +#: gnu/packages/linux.scm:545 +msgid "Tools for working with USB devices, such as lsusb" +msgstr "" + +#: gnu/packages/linux.scm:547 +msgid "Tools for working with USB devices, such as lsusb." +msgstr "" + +#: gnu/packages/linux.scm:621 +msgid "Creating and checking ext2/ext3/ext4 file systems" +msgstr "" + +#: gnu/packages/linux.scm:623 +msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems." +msgstr "" + +#: gnu/packages/linux.scm:665 +msgid "Statically-linked fsck.* commands from e2fsprogs" +msgstr "" + +#: gnu/packages/linux.scm:667 +msgid "" +"This package provides statically-linked command of fsck.ext[234] taken\n" +"from the e2fsprogs package. It is meant to be used in initrds." +msgstr "" + +#: gnu/packages/linux.scm:686 +msgid "Recover deleted files from ext2/3/4 partitions" +msgstr "" + +#: gnu/packages/linux.scm:688 +msgid "" +"Extundelete is a set of tools that can recover deleted files from an\n" +"ext3 or ext4 partition." +msgstr "" + +#: gnu/packages/linux.scm:720 +msgid "Zero non-allocated regions in ext2/ext3/ext4 file systems" +msgstr "" + +#: gnu/packages/linux.scm:722 +msgid "" +"The zerofree command scans the free blocks in an ext2 file system and\n" +"fills any non-zero blocks with zeroes. This is a useful way to make disk\n" +"images more compressible." +msgstr "" + +#: gnu/packages/linux.scm:741 +msgid "System call tracer for Linux" +msgstr "" + +#: gnu/packages/linux.scm:743 +msgid "" +"strace is a system call tracer, i.e. a debugging tool which prints out a\n" +"trace of all the system calls made by a another process/program." +msgstr "" + +#: gnu/packages/linux.scm:764 +msgid "Library call tracer for Linux" +msgstr "" + +#: gnu/packages/linux.scm:766 +msgid "" +"ltrace intercepts and records dynamic library calls which are called by\n" +"an executed process and the signals received by that process. It can also\n" +"intercept and print the system calls executed by the program." +msgstr "" + +#: gnu/packages/linux.scm:786 +msgid "The Advanced Linux Sound Architecture libraries" +msgstr "" + +#: gnu/packages/linux.scm:788 gnu/packages/linux.scm:830 +msgid "" +"The Advanced Linux Sound Architecture (ALSA) provides audio and\n" +"MIDI functionality to the Linux-based operating system." +msgstr "" + +#: gnu/packages/linux.scm:828 +msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)" +msgstr "" + +#: gnu/packages/linux.scm:855 +msgid "Program to configure the Linux IP packet filtering rules" +msgstr "" + +#: gnu/packages/linux.scm:857 +msgid "" +"iptables is the userspace command line program used to configure the\n" +"Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards\n" +"system administrators. Since Network Address Translation is also configured\n" +"from the packet filter ruleset, iptables is used for this, too. The iptables\n" +"package also includes ip6tables. ip6tables is used for configuring the IPv6\n" +"packet filter." +msgstr "" + +#: gnu/packages/linux.scm:905 +msgid "Utilities for controlling TCP/IP networking and traffic in Linux" +msgstr "" + +#: gnu/packages/linux.scm:907 +msgid "" +"Iproute2 is a collection of utilities for controlling TCP/IP\n" +"networking and traffic with the Linux kernel.\n" +"\n" +"Most network configuration manuals still refer to ifconfig and route as the\n" +"primary network configuration tools, but ifconfig is known to behave\n" +"inadequately in modern network environments. They should be deprecated, but\n" +"most distros still include them. Most network configuration systems make use\n" +"of ifconfig and thus provide a limited feature set. The /etc/net project aims\n" +"to support most modern network technologies, as it doesn't use ifconfig and\n" +"allows a system administrator to make use of all iproute2 features, including\n" +"traffic control.\n" +"\n" +"iproute2 is usually shipped in a package called iproute or iproute2 and\n" +"consists of several tools, of which the most important are ip and tc. ip\n" +"controls IPv4 and IPv6 configuration and tc stands for traffic control. Both\n" +"tools print detailed usage messages and are accompanied by a set of\n" +"manpages." +msgstr "" + +#: gnu/packages/linux.scm:1015 +msgid "Tools for controlling the network subsystem in Linux" +msgstr "" + +#: gnu/packages/linux.scm:1017 +msgid "" +"This package includes the important tools for controlling the network\n" +"subsystem of the Linux kernel. This includes arp, hostname, ifconfig,\n" +"netstat, rarp and route. Additionally, this package contains utilities\n" +"relating to particular network hardware types (plipconfig, slattach) and\n" +"advanced aspects of IP configuration (iptunnel, ipmaddr)." +msgstr "" + +#: gnu/packages/linux.scm:1054 +msgid "Library for working with POSIX capabilities" +msgstr "" + +#: gnu/packages/linux.scm:1056 +msgid "" +"Libcap2 provides a programming interface to POSIX capabilities on\n" +"Linux-based operating systems." +msgstr "" + +#: gnu/packages/linux.scm:1099 +msgid "Manipulate Ethernet bridges" +msgstr "" + +#: gnu/packages/linux.scm:1101 +msgid "" +"Utilities for Linux's Ethernet bridging facilities. A bridge is a way\n" +"to connect two Ethernet segments together in a protocol independent way.\n" +"Packets are forwarded based on Ethernet address, rather than IP address (like\n" +"a router). Since forwarding is done at Layer 2, all protocols can go\n" +"transparently through a bridge." +msgstr "" + +#: gnu/packages/linux.scm:1123 +msgid "NetLink protocol library suite" +msgstr "" + +#: gnu/packages/linux.scm:1125 +msgid "" +"The libnl suite is a collection of libraries providing APIs to netlink\n" +"protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarily\n" +"between the kernel and user space processes. It was designed to be a more\n" +"flexible successor to ioctl to provide mainly networking related kernel\n" +"configuration and monitoring interfaces." +msgstr "" + +#: gnu/packages/linux.scm:1155 +msgid "Tool for configuring wireless devices" +msgstr "" + +#: gnu/packages/linux.scm:1157 +msgid "" +"iw is a new nl80211 based CLI configuration utility for wireless\n" +"devices. It replaces 'iwconfig', which is deprecated." +msgstr "" + +#: gnu/packages/linux.scm:1183 +msgid "Analyze power consumption on Intel-based laptops" +msgstr "" + +#: gnu/packages/linux.scm:1185 +msgid "" +"PowerTOP is a Linux tool to diagnose issues with power consumption and\n" +"power management. In addition to being a diagnostic tool, PowerTOP also has\n" +"an interactive mode where the user can experiment various power management\n" +"settings for cases where the operating system has not enabled these\n" +"settings." +msgstr "" + +#: gnu/packages/linux.scm:1207 +msgid "Audio mixer for X and the console" +msgstr "" + +#: gnu/packages/linux.scm:1209 +msgid "" +"Aumix adjusts an audio mixer from X, the console, a terminal,\n" +"the command line or a script." +msgstr "" + +#: gnu/packages/linux.scm:1233 +msgid "Displays the IO activity of running processes" +msgstr "" + +#: gnu/packages/linux.scm:1235 +msgid "" +"Iotop is a Python program with a top like user interface to show the\n" +"processes currently causing I/O." +msgstr "" + +#: gnu/packages/linux.scm:1287 +msgid "Support file systems implemented in user space" +msgstr "" + +#: gnu/packages/linux.scm:1289 +msgid "" +"As a consequence of its monolithic design, file system code for Linux\n" +"normally goes into the kernel itself---which is not only a robustness issue,\n" +"but also an impediment to system extensibility. FUSE, for \"file systems in\n" +"user space\", is a kernel module and user-space library that tries to address\n" +"part of this problem by allowing users to run file system implementations as\n" +"user-space processes." +msgstr "" + +#: gnu/packages/linux.scm:1314 +msgid "User-space union file system" +msgstr "" + +#: gnu/packages/linux.scm:1316 +msgid "" +"UnionFS-FUSE is a flexible union file system implementation in user\n" +"space, using the FUSE library. Mounting a union file system allows you to\n" +"\"aggregate\" the contents of several directories into a single mount point.\n" +"UnionFS-FUSE additionally supports copy-on-write." +msgstr "" + +#: gnu/packages/linux.scm:1341 +msgid "User-space union file system (statically linked)" +msgstr "" + +#: gnu/packages/linux.scm:1383 +msgid "Mount remote file systems over SSH" +msgstr "" + +#: gnu/packages/linux.scm:1385 +msgid "" +"This is a file system client based on the SSH File Transfer Protocol.\n" +"Since most SSH servers already support this protocol it is very easy to set\n" +"up: on the server side there's nothing to do; on the client side mounting the\n" +"file system is as easy as logging into the server with an SSH client." +msgstr "" + +#: gnu/packages/linux.scm:1433 +msgid "Tools for non-uniform memory access (NUMA) machines" +msgstr "" + +#: gnu/packages/linux.scm:1435 +msgid "" +"NUMA stands for Non-Uniform Memory Access, in other words a system whose\n" +"memory is not all in one place. The numactl program allows you to run your\n" +"application program on specific CPU's and memory nodes. It does this by\n" +"supplying a NUMA memory policy to the operating system before running your\n" +"program.\n" +"\n" +"The package contains other commands, such as numademo, numastat and memhog.\n" +"The numademo command provides a quick overview of NUMA performance on your\n" +"system." +msgstr "" + +#: gnu/packages/linux.scm:1498 +msgid "Linux keyboard utilities and keyboard maps" +msgstr "" + +#: gnu/packages/linux.scm:1500 +msgid "" +"This package contains keytable files and keyboard utilities compatible\n" +"for systems using the Linux kernel. This includes commands such as\n" +"'loadkeys', 'setfont', 'kbdinfo', and 'chvt'." +msgstr "" + +#: gnu/packages/linux.scm:1519 +msgid "Monitor file accesses" +msgstr "" + +#: gnu/packages/linux.scm:1521 +msgid "" +"The inotify-tools packages provides a C library and command-line tools\n" +"to use Linux' inotify mechanism, which allows file accesses to be monitored." +msgstr "" + +#: gnu/packages/linux.scm:1559 +msgid "Kernel module tools" +msgstr "" + +#: gnu/packages/linux.scm:1560 +msgid "" +"Kmod is a set of tools to handle common tasks with Linux\n" +"kernel modules like insert, remove, list, check properties, resolve\n" +"dependencies and aliases.\n" +"\n" +"These tools are designed on top of libkmod, a library that is shipped with\n" +"kmod. The aim is to be compatible with tools, configurations and indices\n" +"from the module-init-tools project." +msgstr "" + +#: gnu/packages/linux.scm:1631 +msgid "Userspace device management" +msgstr "" + +#: gnu/packages/linux.scm:1632 +msgid "" +"Udev is a daemon which dynamically creates and removes\n" +"device nodes from /dev/, handles hotplug events and loads drivers at boot\n" +"time." +msgstr "" + +#: gnu/packages/linux.scm:1692 +msgid "Logical volume management for Linux" +msgstr "" + +#: gnu/packages/linux.scm:1694 +msgid "" +"LVM2 is the logical volume management tool set for Linux-based systems.\n" +"This package includes the user-space libraries and tools, including the device\n" +"mapper. Kernel components are part of Linux-libre." +msgstr "" + +#: gnu/packages/linux.scm:1730 +msgid "Tools for manipulating Linux Wireless Extensions" +msgstr "" + +#: gnu/packages/linux.scm:1731 +msgid "" +"Wireless Tools are used to manipulate the now-deprecated\n" +"Linux Wireless Extensions; consider using 'iw' instead. The Wireless\n" +"Extension was an interface allowing you to set Wireless LAN specific\n" +"parameters and get the specific stats. It is deprecated in favor the nl80211\n" +"interface." +msgstr "" + +#: gnu/packages/linux.scm:1803 +msgid "Central regulatory domain agent (CRDA) for WiFi" +msgstr "" + +#: gnu/packages/linux.scm:1805 +msgid "" +"The Central Regulatory Domain Agent (CRDA) acts as the udev helper for\n" +"communication between the kernel Linux and user space for regulatory\n" +"compliance." +msgstr "" + +#: gnu/packages/linux.scm:1841 +msgid "Wireless regulatory database" +msgstr "" + +#: gnu/packages/linux.scm:1843 +msgid "" +"This package contains the wireless regulatory database Central\n" +"Regulatory Database Agent (CRDA) daemon. The database contains information on\n" +"country-specific regulations for the wireless spectrum." +msgstr "" + +#: gnu/packages/linux.scm:1914 +msgid "Utilities to read temperature/voltage/fan sensors" +msgstr "" + +#: gnu/packages/linux.scm:1916 +msgid "" +"Lm-sensors is a hardware health monitoring package for Linux. It allows\n" +"you to access information from temperature, voltage, and fan speed sensors.\n" +"It works with most newer systems." +msgstr "" + +#: gnu/packages/linux.scm:1943 +msgid "I2C tools for Linux" +msgstr "" + +#: gnu/packages/linux.scm:1945 +msgid "" +"The i2c-tools package contains a heterogeneous set of I2C tools for\n" +"Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,\n" +"EEPROM decoding scripts, EEPROM programming tools, and a python module for\n" +"SMBus access." +msgstr "" + +#: gnu/packages/linux.scm:1981 +msgid "Hardware health information viewer" +msgstr "" + +#: gnu/packages/linux.scm:1983 +msgid "" +"Xsensors reads data from the libsensors library regarding hardware\n" +"health such as temperature, voltage and fan speed and displays the information\n" +"in a digital read-out." +msgstr "" + +#: gnu/packages/linux.scm:2031 +msgid "Linux profiling with performance counters" +msgstr "" + +#: gnu/packages/linux.scm:2033 +msgid "" +"perf is a tool suite for profiling using hardware performance counters,\n" +"with support in the Linux kernel. perf can instrument CPU performance\n" +"counters, tracepoints, kprobes, and uprobes (dynamic tracing). It is capable\n" +"of lightweight profiling. This package contains the user-land tools and in\n" +"particular the 'perf' command." +msgstr "" + +#: gnu/packages/linux.scm:2056 +msgid "Simple tool for creating Linux namespace containers" +msgstr "" + +#: gnu/packages/linux.scm:2057 +msgid "" +"pflask is a simple tool for creating Linux namespace\n" +"containers. It can be used for running a command or even booting an OS inside\n" +"an isolated container, created with the help of Linux namespaces. It is\n" +"similar in functionality to chroot, although pflask provides better isolation\n" +"thanks to the use of namespaces." +msgstr "" + +#: gnu/packages/linux.scm:2084 +msgid "Tune hard disk parameters for high performance" +msgstr "" + +#: gnu/packages/linux.scm:2086 +msgid "" +"Get/set device parameters for Linux SATA/IDE drives. It's primary use\n" +"is for enabling irq-unmasking and IDE multiple-mode." +msgstr "" + +#: gnu/packages/linux.scm:2109 +msgid "Tool for enabling and disabling wireless devices" +msgstr "" + +#: gnu/packages/linux.scm:2111 +msgid "" +"rfkill is a simple tool for accessing the rfkill device interface,\n" +"which is used to enable and disable wireless networking devices, typically\n" +"WLAN, Bluetooth and mobile broadband." +msgstr "" + +#: gnu/packages/linux.scm:2130 +msgid "Daemon for delivering ACPI events to user-space programs" +msgstr "" + +#: gnu/packages/linux.scm:2132 +msgid "" +"acpid is designed to notify user-space programs of Advanced\n" +"Configuration and Power Interface (ACPI) events. acpid should be started\n" +"during the system boot, and will run as a background process. When an ACPI\n" +"event is received from the kernel, acpid will examine the list of rules\n" +"specified in /etc/acpi/events and execute the rules that match the event." +msgstr "" + +#: gnu/packages/linux.scm:2154 +msgid "System utilities based on Linux sysfs" +msgstr "" + +#: gnu/packages/linux.scm:2156 +msgid "" +"These are a set of utilities built upon sysfs, a virtual filesystem in\n" +"Linux kernel versions 2.5+ that exposes a system's device tree. The package\n" +"also contains the libsysfs library." +msgstr "" + +#: gnu/packages/linux.scm:2185 +msgid "System utilities based on Linux sysfs (version 1.x)" +msgstr "" + +#: gnu/packages/linux.scm:2208 +msgid "Utilities to get and set CPU frequency on Linux" +msgstr "" + +#: gnu/packages/linux.scm:2210 +msgid "" +"The cpufrequtils suite contains utilities to retrieve CPU frequency\n" +"information, and set the CPU frequency if supported, using the cpufreq\n" +"capabilities of the Linux kernel." +msgstr "" + +#: gnu/packages/linux.scm:2229 +msgid "Interface library for the Linux IEEE1394 drivers" +msgstr "" + +#: gnu/packages/linux.scm:2231 +msgid "" +"Libraw1394 is the only supported interface to the kernel side raw1394 of\n" +"the Linux IEEE-1394 subsystem, which provides direct access to the connected\n" +"1394 buses to user space. Through libraw1394/raw1394, applications can directly\n" +"send to and receive from other nodes without requiring a kernel driver for the\n" +"protocol in question." +msgstr "" + +#: gnu/packages/linux.scm:2255 +msgid "AV/C protocol library for IEEE 1394" +msgstr "" + +#: gnu/packages/linux.scm:2257 +msgid "" +"Libavc1394 is a programming interface to the AV/C specification from\n" +"the 1394 Trade Association. AV/C stands for Audio/Video Control." +msgstr "" + +#: gnu/packages/linux.scm:2279 +msgid "Isochronous streaming media library for IEEE 1394" +msgstr "" + +#: gnu/packages/linux.scm:2281 +msgid "" +"The libiec61883 library provides a higher level API for streaming DV,\n" +"MPEG-2 and audio over Linux IEEE 1394." +msgstr "" + +#: gnu/packages/linux.scm:2321 +msgid "Tool for managing Linux Software RAID arrays" +msgstr "" + +#: gnu/packages/linux.scm:2323 +msgid "" +"mdadm is a tool for managing Linux Software RAID arrays. It can create,\n" +"assemble, report on, and monitor arrays. It can also move spares between raid\n" +"arrays when needed." +msgstr "" + +#: gnu/packages/linux.scm:2350 +msgid "Linux-native asynchronous I/O access library" +msgstr "" + +#: gnu/packages/linux.scm:2352 +msgid "" +"This library enables userspace to use Linux kernel asynchronous I/O\n" +"system calls, important for the performance of databases and other advanced\n" +"applications." +msgstr "" + +#: gnu/packages/linux.scm:2388 +msgid "Linux Bluetooth protocol stack" +msgstr "" + +#: gnu/packages/linux.scm:2390 +msgid "" +"BlueZ provides support for the core Bluetooth layers and protocols. It\n" +"is flexible, efficient and uses a modular implementation." +msgstr "" + +#: gnu/packages/linux.scm:2446 +msgid "Mount exFAT file systems" +msgstr "" + +#: gnu/packages/linux.scm:2448 +msgid "" +"This package provides a FUSE-based file system that provides read and\n" +"write access to exFAT devices." +msgstr "" + +#: gnu/packages/lout.scm:109 +msgid "Document layout system" +msgstr "" + +#: gnu/packages/lout.scm:111 +msgid "" +"The Lout document formatting system reads a high-level description of\n" +"a document similar in style to LaTeX and produces a PostScript or plain text\n" +"output file.\n" +"\n" +"Lout offers an unprecedented range of advanced features, including optimal\n" +"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n" +"inclusion and generation, equation formatting, tables, diagrams, rotation and\n" +"scaling, sorted indexes, bibliographic databases, running headers and\n" +"odd-even pages, automatic cross referencing, multilingual documents including\n" +"hyphenation (most European languages are supported), formatting of computer\n" +"programs, and much more, all ready to use. Furthermore, Lout is easily\n" +"extended with definitions which are very much easier to write than troff of\n" +"TeX macros because Lout is a high-level, purely functional language, the\n" +"outcome of an eight-year research project that went back to the\n" +"beginning." +msgstr "" + +#: gnu/packages/messaging.scm:76 +msgid "Off-the-Record (OTR) Messaging Library and Toolkit" +msgstr "" + +#: gnu/packages/messaging.scm:78 +msgid "" +"OTR allows you to have private conversations over instant messaging by\n" +"providing: (1) Encryption: No one else can read your instant messages. (2)\n" +"Authentication: You are assured the correspondent is who you think it is. (3)\n" +"Deniability: The messages you send do not have digital signatures that are\n" +"checkable by a third party. Anyone can forge messages after a conversation to\n" +"make them look like they came from you. However, during a conversation, your\n" +"correspondent is assured the messages he sees are authentic and\n" +"unmodified. (4) Perfect forward secrecy: If you lose control of your private\n" +"keys, no previous conversation is compromised." +msgstr "" + +#: gnu/packages/messaging.scm:134 +msgid "IRC to instant messaging gateway" +msgstr "" + +#: gnu/packages/messaging.scm:135 +msgid "" +"BitlBee brings IM (instant messaging) to IRC clients, for\n" +"people who have an IRC client running all the time and don't want to run an\n" +"additional IM client. BitlBee currently supports XMPP/Jabber (including\n" +"Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter\n" +"microblogging network (plus all other Twitter API compatible services like\n" +"identi.ca and status.net)." +msgstr "" + +#: gnu/packages/messaging.scm:168 +msgid "Graphical IRC Client" +msgstr "Graficzny klient IRC" + +#: gnu/packages/messaging.scm:170 +msgid "" +"HexChat lets you connect to multiple IRC networks at once. The main window\n" +"shows the list of currently connected networks and their channels, the current\n" +"conversation and the list of users. It uses colors to differentiate between\n" +"users and to highlight messages. It checks spelling using available\n" +"dictionaries. HexChat can be extended with multiple addons." +msgstr "" + +#: gnu/packages/messaging.scm:236 +msgid "Lightweight Internet Relay Chat server for small networks" +msgstr "" + +#: gnu/packages/messaging.scm:238 +msgid "" +"ngIRCd is a lightweight Internet Relay Chat server for small or private\n" +"networks. It is easy to configure, can cope with dynamic IP addresses, and\n" +"supports IPv6, SSL-protected connections as well as PAM for authentication." +msgstr "" + +#: gnu/packages/messaging.scm:309 +msgid "Graphical multi-protocol instant messaging client" +msgstr "" + +#: gnu/packages/messaging.scm:311 +msgid "" +"Pidgin is a modular instant messaging client that supports many popular\n" +"chat protocols." +msgstr "" + +#: gnu/packages/messaging.scm:349 +msgid "Off-the-Record Messaging plugin for Pidgin" +msgstr "" + +#: gnu/packages/messaging.scm:351 +msgid "" +"Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant\n" +"messaging client. OTR (Off-the-Record) Messaging allows you to have private\n" +"conversations over instant messaging by providing: (1) Encryption: No one else\n" +"can read your instant messages. (2) Authentication: You are assured the\n" +"correspondent is who you think it is. (3) Deniability: The messages you send\n" +"do not have digital signatures that are checkable by a third party. Anyone\n" +"can forge messages after a conversation to make them look like they came from\n" +"you. However, during a conversation, your correspondent is assured the\n" +"messages he sees are authentic and unmodified. (4) Perfect forward secrecy:\n" +"If you lose control of your private keys, no previous conversation is\n" +"compromised." +msgstr "" + +#: gnu/packages/messaging.scm:391 +msgid "IRC network bouncer" +msgstr "" + +#: gnu/packages/messaging.scm:392 +msgid "" +"ZNC is an IRC network bouncer or BNC. It can detach the\n" +"client from the actual IRC server, and also from selected channels. Multiple\n" +"clients from different locations can connect to a single ZNC account\n" +"simultaneously and therefore appear under the same nickname on IRC." +msgstr "" + +#: gnu/packages/messaging.scm:414 +msgid "Non-blocking Jabber/XMPP module" +msgstr "" + +#: gnu/packages/messaging.scm:416 +msgid "" +"The goal of this python library is to provide a way for Python\n" +"applications to use Jabber/XMPP networks in a non-blocking way. This library\n" +"was initially a fork of xmpppy, but is using non-blocking sockets." +msgstr "" + +#: gnu/packages/messaging.scm:466 +msgid "Jabber (XMPP) client" +msgstr "" + +#: gnu/packages/messaging.scm:467 +msgid "" +"Gajim is a feature-rich and easy to use Jabber/XMPP client.\n" +"Among its features are: a tabbed chat window and single window modes; support\n" +"for group chat (with Multi-User Chat protocol), invitation, chat to group chat\n" +"transformation; audio and video conferences; file transfer; TLS, GPG and\n" +"end-to-end encryption support; XML console." +msgstr "" + +#: gnu/packages/mpd.scm:63 +msgid "Music Player Daemon client library" +msgstr "" + +#: gnu/packages/mpd.scm:64 +msgid "" +"A stable, documented, asynchronous API library for\n" +"interfacing MPD in the C, C++ & Objective C languages." +msgstr "" + +#: gnu/packages/mpd.scm:124 +msgid "Music Player Daemon" +msgstr "" + +#: gnu/packages/mpd.scm:125 +msgid "" +"Music Player Daemon (MPD) is a flexible, powerful,\n" +"server-side application for playing music. Through plugins and libraries it\n" +"can play a variety of sound files while being controlled by its network\n" +"protocol." +msgstr "" + +#: gnu/packages/mpd.scm:148 +msgid "Music Player Daemon client" +msgstr "" + +#: gnu/packages/mpd.scm:149 +msgid "" +"MPC is a minimalist command line interface to MPD, the music\n" +"player daemon." +msgstr "" + +#: gnu/packages/mpd.scm:172 +msgid "Curses Music Player Daemon client" +msgstr "" + +#: gnu/packages/mpd.scm:173 +msgid "" +"ncmpc is a fully featured MPD client, which runs in a\n" +"terminal using ncurses." +msgstr "" + +#: gnu/packages/mpd.scm:211 +msgid "Featureful ncurses based MPD client inspired by ncmpc" +msgstr "" + +#: gnu/packages/mpd.scm:212 +msgid "" +"Ncmpcpp is an mpd client with a UI very similar to ncmpc,\n" +"but it provides new useful features such as support for regular expressions\n" +"for library searches, extended song format, items filtering, the ability to\n" +"sort playlists, and a local filesystem browser." +msgstr "" + +#: gnu/packages/mpd.scm:235 +msgid "MPD client for track scrobbling" +msgstr "" + +#: gnu/packages/mpd.scm:236 +msgid "" +"mpdscribble is a Music Player Daemon client which submits\n" +"information about tracks being played to a scrobbler, such as Libre.FM." +msgstr "" + +#: gnu/packages/netpbm.scm:146 +msgid "Toolkit for manipulation of images" +msgstr "" + +#: gnu/packages/netpbm.scm:148 +msgid "" +"Netpbm is a toolkit for the manipulation of graphic images, including\n" +"the conversion of images between a variety of different formats.\n" +"There are over 300 separate tools in the package including converters for\n" +"about 100 graphics formats." +msgstr "" + +#: gnu/packages/nettle.scm:50 +msgid "C library for low-level cryptographic functionality" +msgstr "" + +#: gnu/packages/nettle.scm:52 +msgid "" +"GNU Nettle is a low-level cryptographic library. It is designed to\n" +"fit in easily in almost any context. It can be easily included in\n" +"cryptographic toolkits for object-oriented languages or in applications\n" +"themselves." +msgstr "" + +#: gnu/packages/networking.scm:52 +msgid "Teredo IPv6 tunneling software" +msgstr "" + +#: gnu/packages/networking.scm:54 +msgid "" +"Miredo is an implementation (client, relay, server) of the Teredo\n" +"specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts\n" +"residing in IPv4-only networks, even when they are behind a NAT device." +msgstr "" + +#: gnu/packages/networking.scm:76 +msgid "Open bidirectional communication channels from the command line" +msgstr "" + +#: gnu/packages/networking.scm:78 +msgid "" +"socat is a relay for bidirectional data transfer between two independent\n" +"data channels---files, pipes, devices, sockets, etc. It can create\n" +"\"listening\" sockets, named pipes, and pseudo terminals.\n" +"\n" +"socat can be used, for instance, as TCP port forwarder, as a shell interface\n" +"to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial\n" +"line, to logically connect serial lines on different computers, or to\n" +"establish a relatively secure environment (su and chroot) for running client\n" +"or server shell scripts with network connections." +msgstr "" + +#: gnu/packages/networking.scm:102 +msgid "Library for message-based applications" +msgstr "" + +#: gnu/packages/networking.scm:104 +msgid "" +"The 0MQ lightweight messaging kernel is a library which extends the\n" +"standard socket interfaces with features traditionally provided by specialized\n" +"messaging middle-ware products. 0MQ sockets provide an abstraction of\n" +"asynchronous message queues, multiple messaging patterns, message\n" +"filtering (subscriptions), seamless access to multiple transport protocols and\n" +"more." +msgstr "" + +#: gnu/packages/networking.scm:125 +msgid "Library for Neighbor Discovery Protocol" +msgstr "" + +#: gnu/packages/networking.scm:127 +msgid "" +"libndp contains a library which provides a wrapper for IPv6 Neighbor\n" +"Discovery Protocol. It also provides a tool named ndptool for sending and\n" +"receiving NDP messages." +msgstr "" + +#: gnu/packages/networking.scm:145 +msgid "Display or change Ethernet device settings" +msgstr "" + +#: gnu/packages/networking.scm:147 +msgid "" +"ethtool can be used to query and change settings such as speed,\n" +"auto-negotiation and checksum offload on many network devices, especially\n" +"Ethernet devices." +msgstr "" + +#: gnu/packages/networking.scm:183 +msgid "Text based network interface status monitor" +msgstr "" + +#: gnu/packages/networking.scm:185 +msgid "" +"IFStatus is a simple, easy-to-use program for displaying commonly\n" +"needed/wanted real-time traffic statistics of multiple network\n" +"interfaces, with a simple and efficient view on the command line. It is\n" +"intended as a substitute for the PPPStatus and EthStatus projects." +msgstr "" + +#: gnu/packages/pdf.scm:102 +msgid "PDF rendering library" +msgstr "Biblioteka wyświetlania PDF" + +#: gnu/packages/pdf.scm:104 +msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base." +msgstr "" + +#: gnu/packages/pdf.scm:113 +msgid "Qt4 frontend for the Poppler PDF rendering library" +msgstr "" + +#: gnu/packages/pdf.scm:146 +msgid "Python bindings for Poppler-Qt4" +msgstr "" + +#: gnu/packages/pdf.scm:148 +msgid "" +"This package provides Python bindings for the Qt4 interface of the\n" +"Poppler PDF rendering library." +msgstr "" + +#: gnu/packages/pdf.scm:195 +msgid "Viewer for PDF files based on the Motif toolkit" +msgstr "" + +#: gnu/packages/pdf.scm:197 +msgid "Xpdf is a viewer for Portable Document Format (PDF) files." +msgstr "" + +#: gnu/packages/pdf.scm:227 +msgid "Comic book support for zathura (libarchive backend)" +msgstr "" + +#: gnu/packages/pdf.scm:228 +msgid "" +"The zathura-cb plugin adds comic book support to zathura\n" +"using libarchive." +msgstr "" + +#: gnu/packages/pdf.scm:258 +msgid "PS support for zathura (libspectre backend)" +msgstr "" + +#: gnu/packages/pdf.scm:259 +msgid "" +"The zathura-ps plugin adds PS support to zathura\n" +"using libspectre." +msgstr "" + +#: gnu/packages/pdf.scm:290 +msgid "DjVu support for zathura (DjVuLibre backend)" +msgstr "" + +#: gnu/packages/pdf.scm:291 +msgid "" +"The zathura-djvu plugin adds DjVu support to zathura\n" +"using the DjVuLibre library." +msgstr "" + +#: gnu/packages/pdf.scm:323 +msgid "PDF support for zathura (poppler backend)" +msgstr "" + +#: gnu/packages/pdf.scm:324 +msgid "" +"The zathura-pdf-poppler plugin adds PDF support to zathura\n" +"by using the poppler rendering engine." +msgstr "" + +#: gnu/packages/pdf.scm:362 +msgid "Lightweight keyboard-driven PDF viewer" +msgstr "" + +#: gnu/packages/pdf.scm:363 +msgid "" +"Zathura is a customizable document viewer. It provides a\n" +"minimalistic interface and an interface that mainly focuses on keyboard\n" +"interaction." +msgstr "" + +#: gnu/packages/pdf.scm:402 +msgid "Tools to work with the PDF file format" +msgstr "" + +#: gnu/packages/pdf.scm:404 +msgid "" +"PoDoFo is a C++ library and set of command-line tools to work with the\n" +"PDF file format. It can parse PDF files and load them into memory, and makes\n" +"it easy to modify them and write the changes to disk. It is primarily useful\n" +"for applications that wish to do lower level manipulation of PDF, such as\n" +"extracting content or merging files." +msgstr "" + +#: gnu/packages/pdf.scm:465 +msgid "Lightweight PDF viewer and toolkit" +msgstr "" + +#: gnu/packages/pdf.scm:467 +msgid "" +"MuPDF is a C library that implements a PDF and XPS parsing and\n" +"rendering engine. It is used primarily to render pages into bitmaps,\n" +"but also provides support for other operations such as searching and\n" +"listing the table of contents and hyperlinks.\n" +"\n" +"The library ships with a rudimentary X11 viewer, and a set of command\n" +"line tools for batch rendering (pdfdraw), rewriting files (pdfclean),\n" +"and examining the file structure (pdfshow)." +msgstr "" + +#: gnu/packages/pdf.scm:507 +msgid "Command-line tools and library for transforming PDF files" +msgstr "" + +#: gnu/packages/pdf.scm:509 +msgid "" +"QPDF is a command-line program that does structural, content-preserving\n" +"transformations on PDF files. It could have been called something like\n" +"pdf-to-pdf. It includes support for merging and splitting PDFs and to\n" +"manipulate the list of pages in a PDF file. It is not a PDF viewer or a\n" +"program capable of converting PDF into other formats." +msgstr "" + +#: gnu/packages/pdf.scm:539 +msgid "Notetaking using a stylus" +msgstr "" + +#: gnu/packages/pdf.scm:541 +msgid "" +"Xournal is an application for notetaking, sketching, keeping a journal\n" +"using a stylus." +msgstr "" + +#: gnu/packages/pem.scm:41 +msgid "Personal expenses manager" +msgstr "" + +#: gnu/packages/pem.scm:43 +msgid "" +"GNU Pem is a simple tool for tracking personal income and\n" +"expenses. It operates from the command line and it stores its data\n" +"in a basic text format in your home directory. It can easily print\n" +"reports of your spending on different expenses via a basic search\n" +"feature." +msgstr "" + +#: gnu/packages/perl.scm:100 +msgid "Implementation of the Perl programming language" +msgstr "" + +#: gnu/packages/perl.scm:102 +msgid "" +"Perl 5 is a highly capable, feature-rich programming language with over\n" +"24 years of development." +msgstr "" + +#: gnu/packages/perl.scm:121 +msgid "Module for merging hierarchies using the C3 algorithm" +msgstr "" + +#: gnu/packages/perl.scm:122 +msgid "" +"This module implements the C3 algorithm, which aims to\n" +"provide a sane method resolution order under multiple inheritance." +msgstr "" + +#: gnu/packages/perl.scm:140 +msgid "Compute differences between two files or lists" +msgstr "" + +#: gnu/packages/perl.scm:141 +msgid "" +"This is a module for computing the difference between two\n" +"files, two strings, or any other two lists of things. It uses an intelligent\n" +"algorithm similar to (or identical to) the one used by the Unix \"diff\"\n" +"program. It is guaranteed to find the *smallest possible* set of\n" +"differences." +msgstr "" + +#: gnu/packages/perl.scm:162 +msgid "Use shorter versions of class names" +msgstr "" + +#: gnu/packages/perl.scm:163 +msgid "" +"The alias module loads the class you specify and exports\n" +"into your namespace a subroutine that returns the class name. You can\n" +"explicitly alias the class to another name or, if you prefer, you can do so\n" +"implicitly." +msgstr "" + +#: gnu/packages/perl.scm:185 +msgid "Configuration files and command line parsing" +msgstr "" + +#: gnu/packages/perl.scm:186 +msgid "" +"AppConfig is a bundle of Perl5 modules for reading\n" +"configuration files and parsing command line arguments." +msgstr "" + +#: gnu/packages/perl.scm:204 +msgid "Perl API to zip files" +msgstr "" + +#: gnu/packages/perl.scm:205 gnu/packages/zip.scm:168 +msgid "" +"The Archive::Zip module allows a Perl program to create,\n" +"manipulate, read, and write Zip archive files." +msgstr "" + +#: gnu/packages/perl.scm:224 gnu/packages/perl.scm:3966 +msgid "Establish an ISA relationship with base classes at compile time" +msgstr "" + +#: gnu/packages/perl.scm:225 +msgid "" +"Allows you to both load one or more modules, while setting\n" +"up inheritance from those modules at the same time. Unless you are using the\n" +"fields pragma, consider this module discouraged in favor of the lighter-weight\n" +"parent." +msgstr "" + +#: gnu/packages/perl.scm:250 +msgid "Execute code after a scope finished compilation" +msgstr "" + +#: gnu/packages/perl.scm:251 +msgid "" +"This module allows you to execute code when perl finished\n" +"compiling the surrounding scope." +msgstr "" + +#: gnu/packages/perl.scm:269 +msgid "Benchmarking with statistical confidence" +msgstr "" + +#: gnu/packages/perl.scm:271 +msgid "" +"The Benchmark::Timer class allows you to time portions of code\n" +"conveniently, as well as benchmark code by allowing timings of repeated\n" +"trials. It is perfect for when you need more precise information about the\n" +"running time of portions of your code than the Benchmark module will give you,\n" +"but don't want to go all out and profile your code." +msgstr "" + +#: gnu/packages/perl.scm:296 +msgid "Bit vector library" +msgstr "" + +#: gnu/packages/perl.scm:297 +msgid "" +"Bit::Vector is an efficient C library which allows you to\n" +"handle bit vectors, sets (of integers), \"big integer arithmetic\" and boolean\n" +"matrices, all of arbitrary sizes. The package also includes an\n" +"object-oriented Perl module for accessing the C library from Perl, and\n" +"optionally features overloaded operators for maximum ease of use. The C\n" +"library can nevertheless be used stand-alone, without Perl." +msgstr "" + +#: gnu/packages/perl.scm:319 +msgid "Boolean support for Perl" +msgstr "" + +#: gnu/packages/perl.scm:320 +msgid "" +"This module provides basic Boolean support, by defining two\n" +"special objects: true and false." +msgstr "" + +#: gnu/packages/perl.scm:341 +msgid "Cache interface for Perl" +msgstr "" + +#: gnu/packages/perl.scm:342 +msgid "" +"The Cache modules are designed to assist a developer in\n" +"persisting data for a specified period of time. Often these modules are used\n" +"in web applications to store data locally to save repeated and redundant\n" +"expensive calls to remote machines or databases. People have also been known\n" +"to use Cache::Cache for its straightforward interface in sharing data between\n" +"runs of an application or invocations of a CGI-style script or simply as an\n" +"easy to use abstraction of the filesystem or shared memory." +msgstr "" + +#: gnu/packages/perl.scm:365 +msgid "Shared memory interprocess cache via mmap" +msgstr "" + +#: gnu/packages/perl.scm:366 +msgid "" +"A shared memory cache through an mmap'ed file. It's core is\n" +"written in C for performance. It uses fcntl locking to ensure multiple\n" +"processes can safely access the cache at the same time. It uses a basic LRU\n" +"algorithm to keep the most used entries in the cache." +msgstr "" + +#: gnu/packages/perl.scm:387 +msgid "Capture STDOUT and STDERR from Perl, XS or external programs" +msgstr "" + +#: gnu/packages/perl.scm:389 +msgid "" +"Capture::Tiny provides a simple, portable way to capture almost anything\n" +"sent to STDOUT or STDERR, regardless of whether it comes from Perl, from XS\n" +"code or from an external program. Optionally, output can be teed so that it\n" +"is captured while being passed through to the original file handles." +msgstr "" + +#: gnu/packages/perl.scm:409 +msgid "Executable comments for Perl" +msgstr "" + +#: gnu/packages/perl.scm:410 +msgid "" +"Carp::Assert is intended for a purpose like the ANSI C\n" +"library assert.h." +msgstr "" + +#: gnu/packages/perl.scm:432 +msgid "Convenience wrappers around Carp::Assert" +msgstr "" + +#: gnu/packages/perl.scm:433 +msgid "" +"Carp::Assert::More is a set of handy assertion functions for\n" +"Perl." +msgstr "" + +#: gnu/packages/perl.scm:453 +msgid "Report errors from a \"clan\" of modules" +msgstr "" + +#: gnu/packages/perl.scm:454 +msgid "" +"This module allows errors from a clan (or family) of modules\n" +"to appear to originate from the caller of the clan. This is necessary in\n" +"cases where the clan modules are not classes derived from each other, and thus\n" +"the Carp.pm module doesn't help." +msgstr "" + +#: gnu/packages/perl.scm:478 +msgid "Automated accessor generation" +msgstr "" + +#: gnu/packages/perl.scm:479 +msgid "" +"This module automagically generates accessors/mutators for\n" +"your class." +msgstr "" + +#: gnu/packages/perl.scm:499 +msgid "Faster, but less expandable, chained accessors" +msgstr "" + +#: gnu/packages/perl.scm:500 +msgid "" +"A chained accessor is one that always returns the object\n" +"when called with parameters (to set), and the value of the field when called\n" +"with no arguments. This module subclasses Class::Accessor in order to provide\n" +"the same mk_accessors interface." +msgstr "" + +#: gnu/packages/perl.scm:526 +msgid "Build groups of accessors" +msgstr "" + +#: gnu/packages/perl.scm:527 +msgid "" +"This class lets you build groups of accessors that will call\n" +"different getters and setters." +msgstr "" + +#: gnu/packages/perl.scm:547 +msgid "Pragma to use the C3 method resolution order algorithm" +msgstr "" + +#: gnu/packages/perl.scm:548 +msgid "" +"This is pragma to change Perl 5's standard method resolution\n" +"order from depth-first left-to-right (a.k.a - pre-order) to the more\n" +"sophisticated C3 method resolution order." +msgstr "" + +#: gnu/packages/perl.scm:572 +msgid "Drop-in replacement for NEXT" +msgstr "" + +#: gnu/packages/perl.scm:573 +msgid "" +"This module is intended as a drop-in replacement for NEXT,\n" +"supporting the same interface, but using Class::C3 to do the hard work." +msgstr "" + +#: gnu/packages/perl.scm:597 +msgid "Load mix-ins or components to your C3-based class" +msgstr "" + +#: gnu/packages/perl.scm:598 +msgid "" +"This module will inject base classes to your module using\n" +"the Class::C3 method resolution order." +msgstr "" + +#: gnu/packages/perl.scm:616 +msgid "Inheritable, overridable class data" +msgstr "" + +#: gnu/packages/perl.scm:617 +msgid "" +"Class::Data::Inheritable is for creating accessor/mutators\n" +"to class data. That is, if you want to store something about your class as a\n" +"whole (instead of about a single object). This data is then inherited by your\n" +"subclasses and can be overridden." +msgstr "" + +#: gnu/packages/perl.scm:638 +msgid "Class for easy date and time manipulation" +msgstr "" + +#: gnu/packages/perl.scm:639 +msgid "" +"This module provides a general-purpose date and datetime\n" +"type for perl." +msgstr "" + +#: gnu/packages/perl.scm:657 +msgid "Utility methods for factory classes" +msgstr "" + +#: gnu/packages/perl.scm:658 +msgid "This module exports methods useful for factory classes." +msgstr "" + +#: gnu/packages/perl.scm:675 +msgid "Get information about a class and its structure" +msgstr "" + +#: gnu/packages/perl.scm:676 +msgid "" +"Class::Inspector allows you to get information about a\n" +"loaded class." +msgstr "" + +#: gnu/packages/perl.scm:704 +msgid "Working (require \"Class::Name\") and more" +msgstr "" + +#: gnu/packages/perl.scm:705 +msgid "" +"\"require EXPR\" only accepts Class/Name.pm style module\n" +"names, not Class::Name. For that, this module provides \"load_class\n" +"'Class::Name'\"." +msgstr "" + +#: gnu/packages/perl.scm:728 +msgid "XS implementation of parts of Class::Load" +msgstr "" + +#: gnu/packages/perl.scm:729 +msgid "" +"This module provides an XS implementation for portions of\n" +"Class::Load." +msgstr "" + +#: gnu/packages/perl.scm:748 +msgid "Create generic methods for OO Perl" +msgstr "" + +#: gnu/packages/perl.scm:749 +msgid "" +"This module solves the problem of having to continually\n" +"write accessor methods for your objects that perform standard tasks." +msgstr "" + +#: gnu/packages/perl.scm:770 +msgid "Moose-like method modifiers" +msgstr "" + +#: gnu/packages/perl.scm:771 +msgid "" +"Class::Method::Modifiers provides three modifiers: 'before',\n" +"'around', and 'after'. 'before' and 'after' are run just before and after the\n" +"method they modify, but can not really affect that original method. 'around'\n" +"is run in place of the original method, with a hook to easily call that\n" +"original method." +msgstr "" + +#: gnu/packages/perl.scm:792 +msgid "Implementation of a singleton class for Perl" +msgstr "" + +#: gnu/packages/perl.scm:793 +msgid "" +"This module implements a Singleton class from which other\n" +"classes can be derived. By itself, the Class::Singleton module does very\n" +"little other than manage the instantiation of a single object." +msgstr "" + +#: gnu/packages/perl.scm:812 +msgid "Minimalist class construction" +msgstr "" + +#: gnu/packages/perl.scm:813 +msgid "" +"This module offers a minimalist class construction kit. It\n" +"uses no non-core modules for any recent Perl." +msgstr "" + +#: gnu/packages/perl.scm:833 +msgid "Unload a class" +msgstr "" + +#: gnu/packages/perl.scm:834 +msgid "" +"Class:Unload unloads a given class by clearing out its\n" +"symbol table and removing it from %INC." +msgstr "" + +#: gnu/packages/perl.scm:852 +msgid "Generate fast XS accessors without runtime compilation" +msgstr "" + +#: gnu/packages/perl.scm:853 +msgid "" +"Class::XSAccessor implements fast read, write, and\n" +"read/write accessors in XS. Additionally, it can provide predicates such as\n" +"\"has_foo()\" for testing whether the attribute \"foo\" is defined in the\n" +"object. It only works with objects that are implemented as ordinary hashes.\n" +"Class::XSAccessor::Array implements the same interface for objects that use\n" +"arrays for their internal representation." +msgstr "" + +#: gnu/packages/perl.scm:873 +msgid "Recursively copy Perl datatypes" +msgstr "" + +#: gnu/packages/perl.scm:875 +msgid "" +"This module provides a clone() method which makes recursive copies of\n" +"nested hash, array, scalar and reference types, including tied variables and\n" +"objects." +msgstr "" + +#: gnu/packages/perl.scm:896 +msgid "Sane defaults for Perl programs" +msgstr "" + +#: gnu/packages/perl.scm:897 +msgid "" +"This module implements some sane defaults for Perl programs,\n" +"as defined by two typical specimens of Perl coders." +msgstr "" + +#: gnu/packages/perl.scm:915 +msgid "Load configuration from different file formats" +msgstr "" + +#: gnu/packages/perl.scm:916 +msgid "" +"Config::Any provides a facility for Perl applications and\n" +"libraries to load configuration data from multiple different file formats. It\n" +"supports XML, YAML, JSON, Apache-style configuration, and Perl code." +msgstr "" + +#: gnu/packages/perl.scm:937 +msgid "Module to implement some AutoConf macros in Perl" +msgstr "" + +#: gnu/packages/perl.scm:938 +msgid "" +"Config::AutoConf is intended to provide the same\n" +"opportunities to Perl developers as GNU Autoconf does for Shell developers." +msgstr "" + +#: gnu/packages/perl.scm:956 +msgid "Generic Config Module" +msgstr "" + +#: gnu/packages/perl.scm:957 +msgid "" +"This module opens a config file and parses its contents for\n" +"you. The format of config files supported by Config::General is inspired by\n" +"the well known Apache config format and is 100% compatible with Apache\n" +"configs, but you can also just use simple name/value pairs in your config\n" +"files. In addition to the capabilities of an Apache config file it supports\n" +"some enhancements such as here-documents, C-style comments, and multiline\n" +"options." +msgstr "" + +#: gnu/packages/perl.scm:983 +msgid "Preserve context during subroutine call" +msgstr "" + +#: gnu/packages/perl.scm:984 +msgid "" +"This module runs code after a subroutine call, preserving\n" +"the context the subroutine would have seen if it were the last statement in\n" +"the caller." +msgstr "" + +#: gnu/packages/perl.scm:1005 +msgid "Verify requirements in a CPAN::Meta object" +msgstr "" + +#: gnu/packages/perl.scm:1006 +msgid "" +"This module verifies if requirements described in a\n" +"CPAN::Meta object are present." +msgstr "" + +#: gnu/packages/perl.scm:1026 +msgid "JSON::XS for Cpanel" +msgstr "" + +#: gnu/packages/perl.scm:1027 gnu/packages/perl.scm:2769 +msgid "" +"This module converts Perl data structures to JSON and vice\n" +"versa." +msgstr "" + +#: gnu/packages/perl.scm:1045 +msgid "Random password generator" +msgstr "Generator losowych haseł" + +#: gnu/packages/perl.scm:1046 +msgid "" +"Crypt::RandPasswd provides three functions that can be used\n" +"to generate random passwords, constructed from words, letters, or characters.\n" +"This code is a Perl implementation of the Automated Password Generator\n" +"standard, like the program described in \"A Random Word Generator For\n" +"Pronounceable Passwords\". This code is a re-engineering of the program\n" +"contained in Appendix A of FIPS Publication 181, \"Standard for Automated\n" +"Password Generator\"." +msgstr "" + +#: gnu/packages/perl.scm:1089 +msgid "Library for genomic analysis" +msgstr "" + +#: gnu/packages/perl.scm:1090 +msgid "" +"Chaolin Zhang's Perl Library (czplib) contains assorted\n" +"functions and data structures for processing and analysing genomic and\n" +"bioinformatics data." +msgstr "" + +#: gnu/packages/perl.scm:1109 +msgid "Pretty printing of data structures" +msgstr "" + +#: gnu/packages/perl.scm:1110 +msgid "" +"This module provide functions that takes a list of values as\n" +"their argument and produces a string as its result. The string contains Perl\n" +"code that, when \"eval\"ed, produces a deep copy of the original arguments." +msgstr "" + +#: gnu/packages/perl.scm:1129 +msgid "Concise data dumper" +msgstr "" + +#: gnu/packages/perl.scm:1130 +msgid "" +"Data::Dumper::Concise provides a dumper with Less\n" +"indentation and newlines plus sub deparsing." +msgstr "" + +#: gnu/packages/perl.scm:1152 +msgid "Parse and validate simple name/value option pairs" +msgstr "" + +#: gnu/packages/perl.scm:1154 +msgid "Data::OptList provides a simple syntax for name/value option pairs." +msgstr "" + +#: gnu/packages/perl.scm:1175 +msgid "Help when paging through sets of results" +msgstr "" + +#: gnu/packages/perl.scm:1176 +msgid "" +"When searching through large amounts of data, it is often\n" +"the case that a result set is returned that is larger than we want to display\n" +"on one page. This results in wanting to page through various pages of data.\n" +"The maths behind this is unfortunately fiddly, hence this module." +msgstr "" + +#: gnu/packages/perl.scm:1198 +msgid "Structured tags datastructures" +msgstr "" + +#: gnu/packages/perl.scm:1200 +msgid "" +"This module is for manipulating data as hierarchical tag/value\n" +"pairs (Structured TAGs or Simple Tree AGgregates). These datastructures can\n" +"be represented as nested arrays, which have the advantage of being native to\n" +"Perl." +msgstr "" + +#: gnu/packages/perl.scm:1227 +msgid "N at a time iteration API" +msgstr "" + +#: gnu/packages/perl.scm:1228 +msgid "" +"This module tries to find middle ground between one at a\n" +"time and all at once processing of data sets. The purpose of this module is\n" +"to avoid the overhead of implementing an iterative api when this isn't\n" +"necessary, without breaking forward compatibility in case that becomes\n" +"necessary later on." +msgstr "" + +#: gnu/packages/perl.scm:1253 +msgid "Dynamic generation of nested combinations of variants" +msgstr "" + +#: gnu/packages/perl.scm:1254 +msgid "" +"Data::Tumbler - Dynamic generation of nested combinations of\n" +"variants." +msgstr "" + +#: gnu/packages/perl.scm:1280 +msgid "Visitor style traversal of Perl data structures" +msgstr "" + +#: gnu/packages/perl.scm:1281 +msgid "" +"This module is a simple visitor implementation for Perl\n" +"values. It has a main dispatcher method, visit, which takes a single perl\n" +"value and then calls the methods appropriate for that value. It can\n" +"recursively map (cloning as necessary) or just traverse most structures, with\n" +"support for per-object behavior, circular structures, visiting tied\n" +"structures, and all ref types (hashes, arrays, scalars, code, globs)." +msgstr "" + +#: gnu/packages/perl.scm:1306 +msgid "Gregorian calendar date calculations" +msgstr "" + +#: gnu/packages/perl.scm:1307 +msgid "" +"This package consists of a Perl module for date calculations\n" +"based on the Gregorian calendar, thereby complying with all relevant norms and\n" +"standards: ISO/R 2015-1971, DIN 1355 and, to some extent, ISO 8601 (where\n" +"applicable)." +msgstr "" + +#: gnu/packages/perl.scm:1331 +msgid "XS wrapper for Date::Calc" +msgstr "" + +#: gnu/packages/perl.scm:1332 +msgid "" +"Date::Calc::XS is an XS wrapper and C library plug-in for\n" +"Date::Calc." +msgstr "" + +#: gnu/packages/perl.scm:1355 +msgid "Date manipulation routines" +msgstr "" + +#: gnu/packages/perl.scm:1356 +msgid "" +"Date::Manip is a series of modules for common date/time\n" +"operations, such as comparing two times, determining a date a given amount of\n" +"time from another, or parsing international times." +msgstr "" + +#: gnu/packages/perl.scm:1383 +msgid "Date and time object for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1384 +msgid "" +"DateTime is a class for the representation of date/time\n" +"combinations. It represents the Gregorian calendar, extended backwards in\n" +"time before its creation (in 1582)." +msgstr "" + +#: gnu/packages/perl.scm:1407 +msgid "DateTime set objects" +msgstr "" + +#: gnu/packages/perl.scm:1408 +msgid "" +"The DateTime::Set module provides a date/time sets\n" +"implementation. It allows, for example, the generation of groups of dates,\n" +"like \"every wednesday\", and then find all the dates matching that pattern,\n" +"within a time range." +msgstr "" + +#: gnu/packages/perl.scm:1431 +msgid "DateTime rfc2445 recurrences" +msgstr "" + +#: gnu/packages/perl.scm:1432 +msgid "" +"This module provides convenience methods that let you easily\n" +"create DateTime::Set objects for RFC 2445 style recurrences." +msgstr "" + +#: gnu/packages/perl.scm:1453 +msgid "DateTime::Set extension for basic recurrences" +msgstr "" + +#: gnu/packages/perl.scm:1454 +msgid "" +"This module provides convenience methods that let you easily\n" +"create DateTime::Set objects for various recurrences, such as \"once a month\"\n" +"or \"every day\". You can also create more complicated recurrences, such as\n" +"\"every Monday, Wednesday and Thursday at 10:00 AM and 2:00 PM\"." +msgstr "" + +#: gnu/packages/perl.scm:1479 +msgid "Create DateTime parser classes and objects" +msgstr "" + +#: gnu/packages/perl.scm:1480 +msgid "" +"DateTime::Format::Builder creates DateTime parsers. Many\n" +"string formats of dates and times are simple and just require a basic regular\n" +"expression to extract the relevant information. Builder provides a simple way\n" +"to do this without writing reams of structural code." +msgstr "" + +#: gnu/packages/perl.scm:1506 +msgid "Parse data/time strings" +msgstr "" + +#: gnu/packages/perl.scm:1507 +msgid "" +"DateTime::Format::Flexible attempts to take any string you\n" +"give it and parse it into a DateTime object." +msgstr "" + +#: gnu/packages/perl.scm:1531 +msgid "Parse and format iCal datetime and duration strings" +msgstr "" + +#: gnu/packages/perl.scm:1532 +msgid "" +"This module understands the ICal date/time and duration\n" +"formats, as defined in RFC 2445. It can be used to parse these formats in\n" +"order to create the appropriate objects." +msgstr "" + +#: gnu/packages/perl.scm:1563 +msgid "Machine-readable date/time with natural parsing" +msgstr "" + +#: gnu/packages/perl.scm:1564 +msgid "" +"DateTime::Format::Natural takes a string with a human\n" +"readable date/time and creates a machine readable one by applying natural\n" +"parsing logic." +msgstr "" + +#: gnu/packages/perl.scm:1588 +msgid "Parse and format strp and strf time patterns" +msgstr "" + +#: gnu/packages/perl.scm:1589 +msgid "" +"This module implements most of `strptime(3)`, the POSIX\n" +"function that is the reverse of `strftime(3)`, for `DateTime`. While\n" +"`strftime` takes a `DateTime` and a pattern and returns a string, `strptime`\n" +"takes a string and a pattern and returns the `DateTime` object associated." +msgstr "" + +#: gnu/packages/perl.scm:1612 +msgid "Localization support for DateTime.pm" +msgstr "" + +#: gnu/packages/perl.scm:1613 +msgid "" +"The DateTime::Locale modules provide localization data for\n" +"the DateTime.pm class." +msgstr "" + +#: gnu/packages/perl.scm:1640 +msgid "Time zone object for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1641 +msgid "" +"This class is the base class for all time zone objects. A\n" +"time zone is represented internally as a set of observances, each of which\n" +"describes the offset from GMT for a given time period. Note that without the\n" +"DateTime module, this module does not do much. It's primary interface is\n" +"through a DateTime object, and most users will not need to directly use\n" +"DateTime::TimeZone methods." +msgstr "" + +#: gnu/packages/perl.scm:1671 +msgid "Parse date/time strings" +msgstr "" + +#: gnu/packages/perl.scm:1672 +msgid "" +"DateTimeX::Easy uses a variety of DateTime::Format packages\n" +"to create DateTime objects, with some custom tweaks to smooth out the rough\n" +"edges (mainly concerning timezone detection and selection)." +msgstr "" + +#: gnu/packages/perl.scm:1693 +msgid "Meatier version of caller" +msgstr "" + +#: gnu/packages/perl.scm:1694 +msgid "Devel::Caller provides meatier version of caller." +msgstr "" + +#: gnu/packages/perl.scm:1711 +msgid "Check that a command is available" +msgstr "" + +#: gnu/packages/perl.scm:1712 +msgid "" +"Devel::CheckBin is a perl module that checks whether a\n" +"particular command is available." +msgstr "" + +#: gnu/packages/perl.scm:1732 +msgid "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls" +msgstr "" + +#: gnu/packages/perl.scm:1733 +msgid "" +"Devel::GlobalDestruction provides a function returning the\n" +"equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls." +msgstr "" + +#: gnu/packages/perl.scm:1753 +msgid "Alias lexical variables" +msgstr "" + +#: gnu/packages/perl.scm:1754 +msgid "" +"Devel::LexAlias provides the ability to alias a lexical\n" +"variable in a subroutines scope to one of your choosing." +msgstr "" + +#: gnu/packages/perl.scm:1776 +msgid "Introspect overloaded operators" +msgstr "" + +#: gnu/packages/perl.scm:1777 +msgid "" +"Devel::OverloadInfo returns information about overloaded\n" +"operators for a given class (or object), including where in the inheritance\n" +"hierarchy the overloads are declared and where the code implementing it is." +msgstr "" + +#: gnu/packages/perl.scm:1804 +msgid "Partial dumping of data structures" +msgstr "" + +#: gnu/packages/perl.scm:1805 +msgid "" +"This module is a data dumper optimized for logging of\n" +"arbitrary parameters." +msgstr "" + +#: gnu/packages/perl.scm:1823 +msgid "Object representing a stack trace" +msgstr "" + +#: gnu/packages/perl.scm:1824 +msgid "" +"The Devel::StackTrace module contains two classes,\n" +"Devel::StackTrace and Devel::StackTrace::Frame. These objects encapsulate the\n" +"information that can be retrieved via Perl's caller() function, as well as\n" +"providing a simple interface to this data." +msgstr "" + +#: gnu/packages/perl.scm:1846 +msgid "Displays stack trace in HTML" +msgstr "" + +#: gnu/packages/perl.scm:1847 +msgid "" +"Devel::StackTrace::AsHTML adds as_html method to\n" +"Devel::StackTrace which displays the stack trace in beautiful HTML, with code\n" +"snippet context and function parameters. If you call it on an instance of\n" +"Devel::StackTrace::WithLexicals, you even get to see the lexical variables of\n" +"each stack frame." +msgstr "" + +#: gnu/packages/perl.scm:1868 +msgid "Dump symbol names or the symbol table" +msgstr "" + +#: gnu/packages/perl.scm:1869 +msgid "Devel::Symdump provides access to the perl symbol table." +msgstr "" + +#: gnu/packages/perl.scm:1886 +msgid "Keyed-Hashing for Message Authentication" +msgstr "" + +#: gnu/packages/perl.scm:1887 +msgid "" +"The Digest::HMAC module follows the common Digest::\n" +"interface for the RFC 2104 HMAC mechanism." +msgstr "" + +#: gnu/packages/perl.scm:1903 +msgid "Perl implementation of the SHA-1 message digest algorithm" +msgstr "" + +#: gnu/packages/perl.scm:1905 +msgid "" +"This package provides 'Digest::SHA1', an implementation of the NIST\n" +"SHA-1 message digest algorithm for use by Perl programs." +msgstr "" + +#: gnu/packages/perl.scm:1927 +msgid "Declare version conflicts for your dist" +msgstr "" + +#: gnu/packages/perl.scm:1928 +msgid "" +"This module allows you to specify conflicting versions of\n" +"modules separately and deal with them after the module is done installing." +msgstr "" + +#: gnu/packages/perl.scm:1945 +msgid "OO-ish Error/Exception handling for Perl" +msgstr "" + +#: gnu/packages/perl.scm:1946 +msgid "" +"The Error package provides two interfaces. Firstly Error\n" +"provides a procedural interface to exception handling. Secondly Error is a\n" +"base class for errors/exceptions that can either be thrown, for subsequent\n" +"catch, or can simply be recorded." +msgstr "" + +#: gnu/packages/perl.scm:1971 +msgid "Safely and cleanly create closures via string eval" +msgstr "" + +#: gnu/packages/perl.scm:1972 +msgid "" +"String eval is often used for dynamic code generation. For\n" +"instance, Moose uses it heavily, to generate inlined versions of accessors and\n" +"constructors, which speeds code up at runtime by a significant amount. String\n" +"eval is not without its issues however - it's difficult to control the scope\n" +"it's used in (which determines which variables are in scope inside the eval),\n" +"and it's easy to miss compilation errors, since eval catches them and sticks\n" +"them in $@@ instead. This module attempts to solve these problems. It\n" +"provides an eval_closure function, which evals a string in a clean\n" +"environment, other than a fixed list of specified variables. Compilation\n" +"errors are rethrown automatically." +msgstr "" + +#: gnu/packages/perl.scm:2001 +msgid "Allows you to declare real exception classes in Perl" +msgstr "" + +#: gnu/packages/perl.scm:2002 +msgid "" +"Exception::Class allows you to declare exception hierarchies\n" +"in your modules in a \"Java-esque\" manner." +msgstr "" + +#: gnu/packages/perl.scm:2018 +msgid "Lightweight exporting of functions and variables" +msgstr "" + +#: gnu/packages/perl.scm:2020 +msgid "" +"Exporter::Lite is an alternative to Exporter, intended to provide a\n" +"lightweight subset of the most commonly-used functionality. It supports\n" +"import(), @@EXPORT and @@EXPORT_OK and not a whole lot else." +msgstr "" + +#: gnu/packages/perl.scm:2041 +msgid "Exporter with the features of Sub::Exporter but only core dependencies" +msgstr "" + +#: gnu/packages/perl.scm:2042 +msgid "" +"Exporter::Tiny supports many of Sub::Exporter's\n" +"external-facing features including renaming imported functions with the `-as`,\n" +"`-prefix` and `-suffix` options; explicit destinations with the `into` option;\n" +"and alternative installers with the `installler` option. But it's written in\n" +"only about 40% as many lines of code and with zero non-core dependencies." +msgstr "" + +#: gnu/packages/perl.scm:2065 +msgid "Build.PL install path logic made easy" +msgstr "" + +#: gnu/packages/perl.scm:2066 +msgid "" +"This module tries to make install path resolution as easy as\n" +"possible." +msgstr "" + +#: gnu/packages/perl.scm:2084 +msgid "Wrapper for perl's configuration" +msgstr "" + +#: gnu/packages/perl.scm:2085 +msgid "" +"ExtUtils::Config is an abstraction around the %Config hash.\n" +"By itself it is not a particularly interesting module by any measure, however\n" +"it ties together a family of modern toolchain modules." +msgstr "" + +#: gnu/packages/perl.scm:2104 +msgid "Various portability utilities for module builders" +msgstr "" + +#: gnu/packages/perl.scm:2105 +msgid "" +"This module provides various portable helper functions for\n" +"module building modules." +msgstr "" + +#: gnu/packages/perl.scm:2133 +msgid "Watch for changes to files" +msgstr "" + +#: gnu/packages/perl.scm:2134 +msgid "" +"This module provides a class to monitor a directory for\n" +"changes made to any file." +msgstr "" + +#: gnu/packages/perl.scm:2152 +msgid "Recursively copy files and directories" +msgstr "" + +#: gnu/packages/perl.scm:2153 +msgid "" +"This module has 3 functions: one to copy files only, one to\n" +"copy directories only, and one to do either depending on the argument's\n" +"type." +msgstr "" + +#: gnu/packages/perl.scm:2175 +msgid "Alternative interface to File::Find" +msgstr "" + +#: gnu/packages/perl.scm:2176 +msgid "" +"File::Find::Rule is a friendlier interface to File::Find.\n" +"It allows you to build rules which specify the desired files and\n" +"directories." +msgstr "" + +#: gnu/packages/perl.scm:2199 +msgid "Common rules for searching for Perl things" +msgstr "" + +#: gnu/packages/perl.scm:2200 +msgid "" +"File::Find::Rule::Perl provides methods for finding various\n" +"types Perl-related files, or replicating search queries run on a distribution\n" +"in various parts of the CPAN ecosystem." +msgstr "" + +#: gnu/packages/perl.scm:2223 +msgid "Find your home and other directories on any platform" +msgstr "" + +#: gnu/packages/perl.scm:2224 +msgid "" +"File::HomeDir is a module for locating the directories that\n" +"are \"owned\" by a user (typically your user) and to solve the various issues\n" +"that arise trying to find them consistently across a wide variety of\n" +"platforms." +msgstr "" + +#: gnu/packages/perl.scm:2251 +msgid "" +"Perl extension for crawling directory trees and compiling\n" +"lists of files" +msgstr "" + +#: gnu/packages/perl.scm:2254 +msgid "" +"The File::List module crawls the directory tree starting at the\n" +"provided base directory and can return files (and/or directories if desired)\n" +"matching a regular expression." +msgstr "" + +#: gnu/packages/perl.scm:2273 +msgid "Remove files and directories in Perl" +msgstr "" + +#: gnu/packages/perl.scm:2274 +msgid "" +"File::Remove::remove removes files and directories. It acts\n" +"like /bin/rm, for the most part. Although \"unlink\" can be given a list of\n" +"files, it will not remove directories; this module remedies that. It also\n" +"accepts wildcards, * and ?, as arguments for file names." +msgstr "" + +#: gnu/packages/perl.scm:2298 +msgid "Locate per-dist and per-module shared files" +msgstr "" + +#: gnu/packages/perl.scm:2299 +msgid "" +"The intent of File::ShareDir is to provide a companion to\n" +"Class::Inspector and File::HomeDir. Quite often you want or need your Perl\n" +"module to have access to a large amount of read-only data that is stored on\n" +"the file-system at run-time. Once the files have been installed to the\n" +"correct directory, you can use File::ShareDir to find your files again after\n" +"the installation." +msgstr "" + +#: gnu/packages/perl.scm:2321 +msgid "Install shared files" +msgstr "" + +#: gnu/packages/perl.scm:2322 +msgid "" +"File::ShareDir::Install allows you to install read-only data\n" +"files from a distribution. It is a companion module to File::ShareDir, which\n" +"allows you to locate these files after installation." +msgstr "" + +#: gnu/packages/perl.scm:2341 +msgid "Reading/Writing/Modifying of complete files" +msgstr "" + +#: gnu/packages/perl.scm:2342 +msgid "" +"File::Slurp provides subroutines to read or write entire\n" +"files with a simple call. It also has a subroutine for reading the list of\n" +"file names in a directory." +msgstr "" + +#: gnu/packages/perl.scm:2363 +msgid "Return name and handle of a temporary file safely" +msgstr "" + +#: gnu/packages/perl.scm:2364 +msgid "" +"File::Temp can be used to create and open temporary files in\n" +"a safe way." +msgstr "" + +#: gnu/packages/perl.scm:2381 +msgid "Portable implementation of the `which' utility" +msgstr "" + +#: gnu/packages/perl.scm:2383 +msgid "" +"File::Which was created to be able to get the paths to executable\n" +"programs on systems under which the `which' program wasn't implemented in the\n" +"shell." +msgstr "" + +#: gnu/packages/perl.scm:2410 +msgid "Getopt::Long, but simpler and more powerful" +msgstr "" + +#: gnu/packages/perl.scm:2411 +msgid "" +"Getopt::Long::Descriptive is yet another Getopt library.\n" +"It's built atop Getopt::Long, and gets a lot of its features, but tries to\n" +"avoid making you think about its huge array of options. It also provides\n" +"usage (help) messages, data validation, and a few other useful features." +msgstr "" + +#: gnu/packages/perl.scm:2429 +msgid "Table-driven argument parsing for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2431 +msgid "" +"Getopt::Tabular is a Perl 5 module for table-driven argument parsing,\n" +"vaguely inspired by John Ousterhout's Tk_ParseArgv." +msgstr "" + +#: gnu/packages/perl.scm:2451 +msgid "Merge arbitrarily deep hashes into a single hash" +msgstr "" + +#: gnu/packages/perl.scm:2452 +msgid "" +"Hash::Merge merges two arbitrarily deep hashes into a single\n" +"hash. That is, at any level, it will add non-conflicting key-value pairs from\n" +"one hash to the other, and follows a set of specific rules when there are key\n" +"value conflicts. The hash is followed recursively, so that deeply nested\n" +"hashes that are at the same level will be merged when the parent hashes are\n" +"merged." +msgstr "" + +#: gnu/packages/perl.scm:2474 +msgid "Store multiple values per key" +msgstr "" + +#: gnu/packages/perl.scm:2475 +msgid "" +"Hash::MultiValue is an object (and a plain hash reference)\n" +"that may contain multiple values per key, inspired by MultiDict of WebOb." +msgstr "" + +#: gnu/packages/perl.scm:2495 +msgid "Import packages into other packages" +msgstr "" + +#: gnu/packages/perl.scm:2496 +msgid "" +"Writing exporters is a pain. Some use Exporter, some use\n" +"Sub::Exporter, some use Moose::Exporter, some use Exporter::Declare ... and\n" +"some things are pragmas. Exporting on someone else's behalf is harder. The\n" +"exporters don't provide a consistent API for this, and pragmas need to have\n" +"their import method called directly, since they effect the current unit of\n" +"compilation. Import::Into provides global methods to make this painless." +msgstr "" + +#: gnu/packages/perl.scm:2518 +msgid "Use modules in inc/ if newer than installed" +msgstr "" + +#: gnu/packages/perl.scm:2519 +msgid "" +"The inc::latest module helps bootstrap configure-time\n" +"dependencies for CPAN distributions. These dependencies get bundled into the\n" +"inc directory within a distribution and are used by Makefile.PL or Build.PL." +msgstr "" + +#: gnu/packages/perl.scm:2538 +msgid "Utilities for interactive I/O" +msgstr "" + +#: gnu/packages/perl.scm:2539 +msgid "" +"This module provides three utility subroutines that make it\n" +"easier to develop interactive applications: is_interactive(), interactive(),\n" +"and busy()." +msgstr "" + +#: gnu/packages/perl.scm:2558 +msgid "Emulate file interface for in-core strings" +msgstr "" + +#: gnu/packages/perl.scm:2559 +msgid "" +"IO::String is an IO::File (and IO::Handle) compatible class\n" +"that reads or writes data from in-core strings." +msgstr "" + +#: gnu/packages/perl.scm:2577 +msgid "IO:: interface for reading/writing an array of lines" +msgstr "" + +#: gnu/packages/perl.scm:2578 +msgid "" +"This toolkit primarily provides modules for performing both\n" +"traditional and object-oriented i/o) on things *other* than normal\n" +"filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines." +msgstr "" + +#: gnu/packages/perl.scm:2596 +msgid "Perl interface to pseudo ttys" +msgstr "" + +#: gnu/packages/perl.scm:2598 +msgid "" +"This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to\n" +"pseudo ttys." +msgstr "" + +#: gnu/packages/perl.scm:2626 +msgid "Run system() and background procs w/ piping, redirs, ptys" +msgstr "" + +#: gnu/packages/perl.scm:2627 +msgid "" +"IPC::Run allows you run and interact with child processes\n" +"using files, pipes, and pseudo-ttys. Both system()-style and scripted usages\n" +"are supported and may be mixed. Likewise, functional and OO API styles are\n" +"both supported and may be mixed." +msgstr "" + +#: gnu/packages/perl.scm:2645 +msgid "Run a subprocess with input/output redirection" +msgstr "" + +#: gnu/packages/perl.scm:2647 +msgid "" +"The IPC::Run3 module allows you to run a subprocess and redirect stdin,\n" +"stdout, and/or stderr to files and perl data structures. It aims to satisfy\n" +"99% of the need for using system, qx, and open3 with a simple, extremely\n" +"Perlish API and none of the bloat and rarely used features of IPC::Run." +msgstr "" + +#: gnu/packages/perl.scm:2671 +msgid "Lightweight interface to shared memory" +msgstr "" + +#: gnu/packages/perl.scm:2672 +msgid "" +"IPC::ShareLite provides a simple interface to shared memory,\n" +"allowing data to be efficiently communicated between processes." +msgstr "" + +#: gnu/packages/perl.scm:2692 +msgid "JSON encoder/decoder for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2693 +msgid "" +"This module converts Perl data structures to JSON and vice\n" +"versa using either JSON::XS or JSON::PP." +msgstr "" + +#: gnu/packages/perl.scm:2718 +msgid "Wrapper for Perl JSON classes" +msgstr "" + +#: gnu/packages/perl.scm:2720 +msgid "" +"This module tries to provide a coherent API to bring together the\n" +"various JSON modules currently on CPAN. This module will allow you to code to\n" +"any JSON API and have it work regardless of which JSON module is actually\n" +"installed." +msgstr "" + +#: gnu/packages/perl.scm:2744 +msgid "Cpanel::JSON::XS with fallback" +msgstr "" + +#: gnu/packages/perl.scm:2745 +msgid "" +"This module first checks to see if either Cpanel::JSON::XS\n" +"or JSON::XS is already loaded, in which case it uses that module. Otherwise\n" +"it tries to load Cpanel::JSON::XS, then JSON::XS, then JSON::PP in order, and\n" +"either uses the first module it finds or throws an error." +msgstr "" + +#: gnu/packages/perl.scm:2768 +msgid "JSON serialising/deserialising for Perl" +msgstr "" + +#: gnu/packages/perl.scm:2792 +msgid "Combination of List::Util and List::MoreUtils" +msgstr "" + +#: gnu/packages/perl.scm:2793 +msgid "" +"This module exports all of the functions that either\n" +"List::Util or List::MoreUtils defines, with preference to List::Util." +msgstr "" + +#: gnu/packages/perl.scm:2817 +msgid "Provide the stuff missing in List::Util" +msgstr "" + +#: gnu/packages/perl.scm:2818 +msgid "" +"List::MoreUtils provides some trivial but commonly needed\n" +"functionality on lists which is not going to go into List::Util." +msgstr "" + +#: gnu/packages/perl.scm:2836 +msgid "Expiry plug-in for Memoize that adds LRU cache expiration" +msgstr "" + +#: gnu/packages/perl.scm:2837 +msgid "" +"This module implements an expiry policy for Memoize that\n" +"follows LRU semantics, that is, the last n results, where n is specified as\n" +"the argument to the CACHESIZE parameter, will be cached." +msgstr "" + +#: gnu/packages/perl.scm:2856 +msgid "Definition of MIME types" +msgstr "Definicja typów MIME" + +#: gnu/packages/perl.scm:2857 +msgid "" +"This module provides a list of known mime-types, combined\n" +"from various sources. For instance, it contains all IANA types and the\n" +"knowledge of Apache." +msgstr "" + +#: gnu/packages/perl.scm:2886 +msgid "Tiny replacement for Module::Build" +msgstr "" + +#: gnu/packages/perl.scm:2887 +msgid "" +"Many Perl distributions use a Build.PL file instead of a\n" +"Makefile.PL file to drive distribution configuration, build, test and\n" +"installation. Traditionally, Build.PL uses Module::Build as the underlying\n" +"build system. This module provides a simple, lightweight, drop-in\n" +"replacement. Whereas Module::Build has over 6,700 lines of code; this module\n" +"has less than 120, yet supports the features needed by most distributions." +msgstr "" + +#: gnu/packages/perl.scm:2909 +msgid "Find and use installed modules in a (sub)category" +msgstr "" + +#: gnu/packages/perl.scm:2910 +msgid "" +"Module::Find lets you find and use modules in categories.\n" +"This can be useful for auto-detecting driver or plugin modules. You can\n" +"differentiate between looking in the category itself or in all\n" +"subcategories." +msgstr "" + +#: gnu/packages/perl.scm:2936 +msgid "Loads alternate underlying implementations for a module" +msgstr "" + +#: gnu/packages/perl.scm:2937 +msgid "" +"This module abstracts out the process of choosing one of\n" +"several underlying implementations for a module. This can be used to provide\n" +"XS and pure Perl implementations of a module, or it could be used to load an\n" +"implementation for a given OS or any other case of needing to provide multiple\n" +"implementations." +msgstr "" + +#: gnu/packages/perl.scm:2975 +msgid "Standalone, extensible Perl module installer" +msgstr "" + +#: gnu/packages/perl.scm:2976 +msgid "" +"Module::Install is a package for writing installers for\n" +"CPAN (or CPAN-like) distributions that are clean, simple, minimalist, act in a\n" +"strictly correct manner with ExtUtils::MakeMaker, and will run on any Perl\n" +"installation version 5.005 or newer." +msgstr "" + +#: gnu/packages/perl.scm:2996 +msgid "Perl runtime module handling" +msgstr "" + +#: gnu/packages/perl.scm:2997 +msgid "" +"The functions exported by this module deal with runtime\n" +"handling of Perl modules, which are normally handled at compile time." +msgstr "" + +#: gnu/packages/perl.scm:3018 +msgid "Provide information on conflicts for Module::Runtime" +msgstr "" + +#: gnu/packages/perl.scm:3019 +msgid "" +"This module provides conflicts checking for Module::Runtime,\n" +"which had a recent release that broke some versions of Moose. It is called\n" +"from Moose::Conflicts and moose-outdated." +msgstr "" + +#: gnu/packages/perl.scm:3040 +msgid "Recursively scan Perl code for dependencies" +msgstr "" + +#: gnu/packages/perl.scm:3041 +msgid "" +"Module::ScanDeps is a module to recursively scan Perl\n" +"programs for dependencies." +msgstr "" + +#: gnu/packages/perl.scm:3061 +msgid "Module name tools and transformations" +msgstr "" + +#: gnu/packages/perl.scm:3062 +msgid "" +"This module provides a few useful functions for manipulating\n" +"module names. Its main aim is to centralise some of the functions commonly\n" +"used by modules that manipulate other modules in some way, like converting\n" +"module names to relative paths." +msgstr "" + +#: gnu/packages/perl.scm:3092 +msgid "Minimalist Object Orientation (with Moose compatibility)" +msgstr "" + +#: gnu/packages/perl.scm:3093 +msgid "" +"Moo is an extremely light-weight Object Orientation system.\n" +"It allows one to concisely define objects and roles with a convenient syntax\n" +"that avoids the details of Perl's object system. Moo contains a subset of\n" +"Moose and is optimised for rapid startup." +msgstr "" + +#: gnu/packages/perl.scm:3169 +msgid "Postmodern object system for Perl 5" +msgstr "" + +#: gnu/packages/perl.scm:3171 +msgid "" +"Moose is a complete object system for Perl 5. It provides keywords for\n" +"attribute declaration, object construction, inheritance, and maybe more. With\n" +"Moose, you define your class declaratively, without needing to know about\n" +"blessed hashrefs, accessor methods, and so on. You can concentrate on the\n" +"logical structure of your classes, focusing on \"what\" rather than \"how\".\n" +"A class definition with Moose reads like a list of very concise English\n" +"sentences." +msgstr "" + +#: gnu/packages/perl.scm:3199 +msgid "Emulate Class::Accessor::Fast behavior using Moose attributes" +msgstr "" + +#: gnu/packages/perl.scm:3200 +msgid "" +"This module attempts to emulate the behavior of\n" +"Class::Accessor::Fast as accurately as possible using the Moose attribute\n" +"system. The public API of Class::Accessor::Fast is wholly supported, but the\n" +"private methods are not." +msgstr "" + +#: gnu/packages/perl.scm:3231 +msgid "Moose role for processing command line options" +msgstr "" + +#: gnu/packages/perl.scm:3232 +msgid "" +"This is a Moose role which provides an alternate constructor\n" +"for creating objects using parameters passed in from the command line." +msgstr "" + +#: gnu/packages/perl.scm:3253 +msgid "Mark overload code symbols as methods" +msgstr "" + +#: gnu/packages/perl.scm:3254 +msgid "" +"MooseX::MarkAsMethods allows one to easily mark certain\n" +"functions as Moose methods. This will allow other packages such as\n" +"namespace::autoclean to operate without blowing away your overloads. After\n" +"using MooseX::MarkAsMethods your overloads will be recognized by Class::MOP as\n" +"being methods, and class extension as well as composition from roles with\n" +"overloads will \"just work\"." +msgstr "" + +#: gnu/packages/perl.scm:3284 +msgid "Code attribute introspection" +msgstr "" + +#: gnu/packages/perl.scm:3285 +msgid "" +"This module allows code attributes of methods to be\n" +"introspected using Moose meta method objects." +msgstr "" + +#: gnu/packages/perl.scm:3311 +msgid "Subclassing of non-Moose classes" +msgstr "" + +#: gnu/packages/perl.scm:3312 +msgid "" +"MooseX::NonMoose allows for easily subclassing non-Moose\n" +"classes with Moose, taking care of the details connected with doing this, such\n" +"as setting up proper inheritance from Moose::Object and installing (and\n" +"inlining, at make_immutable time) a constructor that makes sure things like\n" +"BUILD methods are called. It tries to be as non-intrusive as possible." +msgstr "" + +#: gnu/packages/perl.scm:3341 +msgid "Extension of Params::Validate using Moose's types" +msgstr "" + +#: gnu/packages/perl.scm:3342 +msgid "" +"This module fills a gap in Moose by adding method parameter\n" +"validation to Moose." +msgstr "" + +#: gnu/packages/perl.scm:3363 +msgid "Apply roles to a related Perl class" +msgstr "" + +#: gnu/packages/perl.scm:3364 +msgid "" +"This module applies roles to make a subclass instead of\n" +"manually setting up a subclass." +msgstr "" + +#: gnu/packages/perl.scm:3390 +msgid "Moose roles with composition parameters" +msgstr "" + +#: gnu/packages/perl.scm:3391 +msgid "" +"Because Moose roles serve many different masters, they\n" +"usually provide only the least common denominator of functionality. To\n" +"empower roles further, more configurability than -alias and -excludes is\n" +"required. Perhaps your role needs to know which method to call when it is\n" +"done processing, or what default value to use for its url attribute.\n" +"Parameterized roles offer a solution to these (and other) kinds of problems." +msgstr "" + +#: gnu/packages/perl.scm:3417 +msgid "Roles which support overloading" +msgstr "" + +#: gnu/packages/perl.scm:3418 +msgid "" +"MooseX::Role::WithOverloading allows you to write a\n" +"Moose::Role which defines overloaded operators and allows those overload\n" +"methods to be composed into the classes/roles/instances it's compiled to,\n" +"where plain Moose::Roles would lose the overloading." +msgstr "" + +#: gnu/packages/perl.scm:3440 +msgid "Name your accessors foo() and set_foo()" +msgstr "" + +#: gnu/packages/perl.scm:3441 +msgid "" +"This module does not provide any methods. Simply loading it\n" +"changes the default naming policy for the loading class so that accessors are\n" +"separated into get and set methods. The get methods have the same name as the\n" +"accessor, while set methods are prefixed with \"_set_\"." +msgstr "" + +#: gnu/packages/perl.scm:3467 +msgid "Strict object constructors for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3468 +msgid "" +"Simply loading this module makes your constructors\n" +"\"strict\". If your constructor is called with an attribute init argument\n" +"that your class does not declare, then it calls Moose->throw_error()." +msgstr "" + +#: gnu/packages/perl.scm:3496 +msgid "Trait loading and resolution for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3497 +msgid "" +"Adds support on top of MooseX::Traits for class precedence\n" +"search for traits and some extra attributes." +msgstr "" + +#: gnu/packages/perl.scm:3522 +msgid "Organise your Moose types in libraries" +msgstr "" + +#: gnu/packages/perl.scm:3523 +msgid "" +"This package lets you declare types using short names, but\n" +"behind the scenes it namespaces all your type declarations, effectively\n" +"prevent name clashes between packages." +msgstr "" + +#: gnu/packages/perl.scm:3554 +msgid "DateTime related constraints and coercions for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3555 +msgid "" +"This module packages several Moose::Util::TypeConstraints\n" +"with coercions, designed to work with the DateTime suite of objects." +msgstr "" + +#: gnu/packages/perl.scm:3587 +msgid "Extensions to MooseX::Types::DateTime" +msgstr "" + +#: gnu/packages/perl.scm:3588 +msgid "" +"This module builds on MooseX::Types::DateTime to add\n" +"additional custom types and coercions. Since it builds on an existing type,\n" +"all coercions and constraints are inherited." +msgstr "" + +#: gnu/packages/perl.scm:3617 +msgid "ClassName type constraints for Moose" +msgstr "" + +#: gnu/packages/perl.scm:3618 +msgid "" +"MooseX::Types::LoadableClass provides a ClassName type\n" +"constraint with coercion to load the class." +msgstr "" + +#: gnu/packages/perl.scm:3642 +msgid "Moosish types and type builder" +msgstr "" + +#: gnu/packages/perl.scm:3643 +msgid "" +"MooX::Types::MooseLike provides a possibility to build your\n" +"own set of Moose-like types. These custom types can then be used to describe\n" +"fields in Moo-based classes." +msgstr "" + +#: gnu/packages/perl.scm:3662 +msgid "MRO interface compatibility for Perls < 5.9.5" +msgstr "" + +#: gnu/packages/perl.scm:3663 +msgid "" +"The \"mro\" namespace provides several utilities for dealing\n" +"with method resolution order and method caching in general in Perl 5.9.5 and\n" +"higher. This module provides those interfaces for earlier versions of\n" +"Perl (back to 5.6.0)." +msgstr "" + +#: gnu/packages/perl.scm:3689 +msgid "Keep imports out of your namespace" +msgstr "" + +#: gnu/packages/perl.scm:3690 +msgid "" +"The namespace::autoclean pragma will remove all imported\n" +"symbols at the end of the current package's compile cycle. Functions called\n" +"in the package itself will still be bound by their name, but they won't show\n" +"up as methods on your class or instances. It is very similar to\n" +"namespace::clean, except it will clean all imported functions, no matter if\n" +"you imported them before or after you used the pragma. It will also not touch\n" +"anything that looks like a method." +msgstr "" + +#: gnu/packages/perl.scm:3716 +msgid "Keep imports and functions out of your namespace" +msgstr "" + +#: gnu/packages/perl.scm:3717 +msgid "" +"The namespace::clean pragma will remove all previously\n" +"declared or imported symbols at the end of the current package's compile\n" +"cycle. Functions called in the package itself will still be bound by their\n" +"name, but they won't show up as methods on your class or instances." +msgstr "" + +#: gnu/packages/perl.scm:3737 +msgid "Numeric comparisons" +msgstr "" + +#: gnu/packages/perl.scm:3738 +msgid "" +"Number::Compare compiles a simple comparison to an anonymous\n" +"subroutine, which you can call with a value to be tested against." +msgstr "" + +#: gnu/packages/perl.scm:3756 +msgid "Generate cryptographic signatures for objects" +msgstr "" + +#: gnu/packages/perl.scm:3757 +msgid "" +"Object::Signature is an abstract base class that you can\n" +"inherit from in order to allow your objects to generate unique cryptographic\n" +"signatures." +msgstr "" + +#: gnu/packages/perl.scm:3779 +msgid "Anonymous packages" +msgstr "" + +#: gnu/packages/perl.scm:3780 +msgid "" +"This module allows for anonymous packages that are\n" +"independent of the main namespace and only available through an object\n" +"instance, not by name." +msgstr "" + +#: gnu/packages/perl.scm:3808 +msgid "Manage deprecation warnings for your distribution" +msgstr "" + +#: gnu/packages/perl.scm:3809 +msgid "" +"This module allows you to manage a set of deprecations for\n" +"one or more modules." +msgstr "" + +#: gnu/packages/perl.scm:3836 +msgid "Routines for manipulating stashes" +msgstr "" + +#: gnu/packages/perl.scm:3837 +msgid "" +"Manipulating stashes (Perl's symbol tables) is occasionally\n" +"necessary, but incredibly messy, and easy to get wrong. This module hides all\n" +"of that behind a simple API." +msgstr "" + +#: gnu/packages/perl.scm:3860 +msgid "Faster implementation of the Package::Stash API" +msgstr "" + +#: gnu/packages/perl.scm:3861 +msgid "" +"This is a backend for Package::Stash, which provides the\n" +"functionality in a way that's less buggy and much faster. It will be used by\n" +"default if it's installed, and should be preferred in all environments with a\n" +"compiler." +msgstr "" + +#: gnu/packages/perl.scm:3881 +msgid "Play with other peoples' lexical variables" +msgstr "" + +#: gnu/packages/perl.scm:3882 +msgid "" +"PadWalker is a module which allows you to inspect (and even\n" +"change) lexical variables in any subroutine which called you. It will only\n" +"show those variables which are in scope at the point of the call. PadWalker\n" +"is particularly useful for debugging." +msgstr "" + +#: gnu/packages/perl.scm:3903 +msgid "Simple, compact and correct param-checking functions" +msgstr "" + +#: gnu/packages/perl.scm:3905 +msgid "" +"Params::Util provides a basic set of importable functions that makes\n" +"checking parameters easier." +msgstr "" + +#: gnu/packages/perl.scm:3928 +msgid "Validate method/function parameters" +msgstr "" + +#: gnu/packages/perl.scm:3929 +msgid "" +"The Params::Validate module allows you to validate method or\n" +"function call parameters to an arbitrary level of specificity." +msgstr "" + +#: gnu/packages/perl.scm:3947 +msgid "Create and manipulate PAR distributions" +msgstr "" + +#: gnu/packages/perl.scm:3948 +msgid "" +"PAR::Dist is a toolkit to create and manipulate PAR\n" +"distributions." +msgstr "" + +#: gnu/packages/perl.scm:3967 +msgid "" +"Allows you to both load one or more modules, while setting\n" +"up inheritance from those modules at the same time." +msgstr "" + +#: gnu/packages/perl.scm:3985 +msgid "Path specification manipulation" +msgstr "" + +#: gnu/packages/perl.scm:3986 +msgid "" +"Path::Class is a module for manipulation of file and\n" +"directory specifications in a cross-platform manner." +msgstr "" + +#: gnu/packages/perl.scm:4006 +msgid "Check for comprehensive documentation of a module" +msgstr "" + +#: gnu/packages/perl.scm:4007 +msgid "" +"This module provides a mechanism for determining if the pod\n" +"for a given module is comprehensive." +msgstr "" + +#: gnu/packages/perl.scm:4024 +msgid "Parsing library for text in Pod format" +msgstr "" + +#: gnu/packages/perl.scm:4025 +msgid "" +"Pod::Simple is a Perl library for parsing text in\n" +"the Pod (plain old documentation) markup language that is typically\n" +"used for writing documentation for Perl and for Perl modules." +msgstr "" + +#: gnu/packages/perl.scm:4045 +msgid "GNU C library compatible strftime for loggers and servers" +msgstr "" + +#: gnu/packages/perl.scm:4046 +msgid "" +"POSIX::strftime::Compiler provides GNU C library compatible\n" +"strftime(3). But this module is not affected by the system locale. This\n" +"feature is useful when you want to write loggers, servers, and portable\n" +"applications." +msgstr "" + +#: gnu/packages/perl.scm:4064 +msgid "Information about the currently running perl" +msgstr "" + +#: gnu/packages/perl.scm:4066 +msgid "" +"Probe::Perl provides methods for obtaining information about the\n" +"currently running perl interpreter. It originally began life as code in the\n" +"Module::Build project, but has been externalized here for general use." +msgstr "" + +#: gnu/packages/perl.scm:4087 +msgid "Create read-only scalars, arrays, hashes" +msgstr "" + +#: gnu/packages/perl.scm:4088 +msgid "" +"This module provides a facility for creating non-modifiable\n" +"variables in Perl. This is useful for configuration files, headers, etc. It\n" +"can also be useful as a development and debugging tool for catching updates to\n" +"variables that should not be changed." +msgstr "" + +#: gnu/packages/perl.scm:4106 +msgid "Provide commonly requested regular expressions" +msgstr "" + +#: gnu/packages/perl.scm:4108 +msgid "" +"This module exports a single hash (`%RE') that stores or generates\n" +"commonly needed regular expressions. Patterns currently provided include:\n" +"balanced parentheses and brackets, delimited text (with escapes), integers and\n" +"floating-point numbers in any base (up to 36), comments in 44 languages,\n" +"offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip\n" +"codes." +msgstr "" + +#: gnu/packages/perl.scm:4138 +msgid "Roles, as a slice of Moose" +msgstr "" + +#: gnu/packages/perl.scm:4139 +msgid "Role::Tiny is a minimalist role composition tool." +msgstr "" + +#: gnu/packages/perl.scm:4156 +msgid "Call isa, can, does, and DOES safely" +msgstr "" + +#: gnu/packages/perl.scm:4157 +msgid "" +"This module allows you to call isa, can, does, and DOES\n" +"safely on things that may not be objects." +msgstr "" + +#: gnu/packages/perl.scm:4175 +msgid "Lexically-scoped resource management" +msgstr "" + +#: gnu/packages/perl.scm:4176 +msgid "" +"This module provides a convenient way to perform cleanup or\n" +"other forms of resource management at the end of a scope. It is particularly\n" +"useful when dealing with exceptions: the Scope::Guard constructor takes a\n" +"reference to a subroutine that is guaranteed to be called even if the thread\n" +"of execution is aborted prematurely. This effectively allows lexically-scoped\n" +"\"promises\" to be made that are automatically honoured by perl's garbage\n" +"collector." +msgstr "" + +#: gnu/packages/perl.scm:4199 +msgid "Infinite sets" +msgstr "" + +#: gnu/packages/perl.scm:4200 +msgid "Set::Infinite is a set theory module for infinite sets." +msgstr "" + +#: gnu/packages/perl.scm:4220 +msgid "Unordered collections of Perl Objects" +msgstr "" + +#: gnu/packages/perl.scm:4221 +msgid "" +"Set::Object provides efficient sets, unordered collections\n" +"of Perl objects without duplicates for scalars and references." +msgstr "" + +#: gnu/packages/perl.scm:4239 +msgid "Set operations for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4240 +msgid "" +"The first priority of Set::Scalar is to be a convenient\n" +"interface to sets (as in: unordered collections of Perl scalars). While not\n" +"designed to be slow or big, neither has it been designed to be fast or\n" +"compact." +msgstr "" + +#: gnu/packages/perl.scm:4260 +msgid "Spiffy Perl Interface Framework For You" +msgstr "" + +#: gnu/packages/perl.scm:4261 +msgid "" +"Spiffy is a framework and methodology for doing object\n" +"oriented (OO) programming in Perl. Spiffy combines the best parts of\n" +"Exporter.pm, base.pm, mixin.pm and SUPER.pm into one magic foundation class.\n" +"It attempts to fix all the nits and warts of traditional Perl OO, in a clean,\n" +"straightforward and (perhaps someday) standard way. Spiffy borrows ideas from\n" +"other OO languages like Python, Ruby, Java and Perl 6." +msgstr "" + +#: gnu/packages/perl.scm:4283 +msgid "Temporary buffer to save bytes" +msgstr "" + +#: gnu/packages/perl.scm:4284 +msgid "" +"Stream::Buffered is a buffer class to store arbitrary length\n" +"of byte strings and then get a seekable filehandle once everything is\n" +"buffered. It uses PerlIO and/or temporary file to save the buffer depending\n" +"on the length of the size." +msgstr "" + +#: gnu/packages/perl.scm:4304 +msgid "Turn on strict and make all warnings fatal" +msgstr "" + +#: gnu/packages/perl.scm:4305 +msgid "" +"Strictures turns on strict and make all warnings fatal when\n" +"run from within a source-controlled directory." +msgstr "" + +#: gnu/packages/perl.scm:4323 +msgid "Camelcase and de-camelcase" +msgstr "" + +#: gnu/packages/perl.scm:4324 +msgid "" +"This module may be used to convert from under_score text to\n" +"CamelCase and back again." +msgstr "" + +#: gnu/packages/perl.scm:4344 +msgid "Rewrite strings based on a set of known prefixes" +msgstr "" + +#: gnu/packages/perl.scm:4345 +msgid "" +"This module allows you to rewrite strings based on a set of\n" +"known prefixes." +msgstr "" + +#: gnu/packages/perl.scm:4367 +msgid "Sophisticated exporter for custom-built routines" +msgstr "" + +#: gnu/packages/perl.scm:4369 +msgid "" +"Sub::Exporter provides a sophisticated alternative to Exporter.pm for\n" +"custom-built routines." +msgstr "" + +#: gnu/packages/perl.scm:4388 +msgid "Only use Sub::Exporter if you need it" +msgstr "" + +#: gnu/packages/perl.scm:4389 +msgid "" +"Sub::Exporter is an incredibly powerful module, but with\n" +"that power comes great responsibility, as well as some runtime penalties.\n" +"This module is a \"Sub::Exporter\" wrapper that will let your users just use\n" +"Exporter if all they are doing is picking exports, but use \"Sub::Exporter\"\n" +"if your users try to use \"Sub::Exporter\"'s more advanced features, like\n" +"renaming exports, if they try to use them." +msgstr "" + +#: gnu/packages/perl.scm:4411 +msgid "Retrieve names of code references" +msgstr "" + +#: gnu/packages/perl.scm:4412 +msgid "" +"Sub::Identify allows you to retrieve the real name of code\n" +"references." +msgstr "" + +#: gnu/packages/perl.scm:4431 +msgid "Install subroutines into packages easily" +msgstr "" + +#: gnu/packages/perl.scm:4433 +msgid "" +"Sub::Install makes it easy to install subroutines into packages without\n" +"the unsightly mess of C or typeglobs lying about where just anyone\n" +"can see them." +msgstr "" + +#: gnu/packages/perl.scm:4454 +msgid "(Re)name a sub" +msgstr "" + +#: gnu/packages/perl.scm:4455 +msgid "" +"Assigns a new name to referenced sub. If package\n" +"specification is omitted in the name, then the current package is used. The\n" +"return value is the sub." +msgstr "" + +#: gnu/packages/perl.scm:4474 +msgid "Apparently run a function in a higher stack frame" +msgstr "" + +#: gnu/packages/perl.scm:4475 +msgid "" +"Like Tcl's uplevel() function, but not quite so dangerous.\n" +"The idea is just to fool caller(). All the really naughty bits of Tcl's\n" +"uplevel() are avoided." +msgstr "" + +#: gnu/packages/perl.scm:4494 +msgid "Perl extension for generating SVG documents" +msgstr "" + +#: gnu/packages/perl.scm:4495 +msgid "" +"SVG is a Perl module which generates a nested data structure\n" +"containing the DOM representation of an SVG (Scalable Vector Graphics) image.\n" +"Using SVG, you can generate SVG objects, embed other SVG instances into it,\n" +"access the DOM object, create and access Javascript, and generate SMIL\n" +"animation content." +msgstr "" + +#: gnu/packages/perl.scm:4514 +msgid "Perl extension for getting CPU information" +msgstr "" + +#: gnu/packages/perl.scm:4516 +msgid "" +"In responce to a post on perlmonks.org, a module for counting the number\n" +"of CPU's on a system. Support has now also been added for type of CPU and\n" +"clock speed." +msgstr "" + +#: gnu/packages/perl.scm:4538 +msgid "Get full hostname in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4539 +msgid "" +"Sys::Hostname::Long tries very hard to get the full hostname\n" +"of a system." +msgstr "" + +#: gnu/packages/perl.scm:4557 +msgid "Ensure that a platform has weaken support" +msgstr "" + +#: gnu/packages/perl.scm:4558 +msgid "" +"One recurring problem in modules that use Scalar::Util's\n" +"weaken function is that it is not present in the pure-perl variant. If\n" +"Scalar::Util is not available at all, it will issue a normal dependency on the\n" +"module. However, if Scalar::Util is relatively new ( it is >= 1.19 ) and the\n" +"module does not have weaken, the install will bail out altogether with a long\n" +"error encouraging the user to seek support." +msgstr "" + +#: gnu/packages/perl.scm:4583 +msgid "Template processing system for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4584 +msgid "" +"The Template Toolkit is a collection of modules which\n" +"implement an extensible template processing system. It was originally\n" +"designed and remains primarily useful for generating dynamic web content, but\n" +"it can be used equally well for processing any other kind of text based\n" +"documents: HTML, XML, POD, PostScript, LaTeX, and so on." +msgstr "" + +#: gnu/packages/perl.scm:4607 +msgid "Profiling for Template Toolkit" +msgstr "" + +#: gnu/packages/perl.scm:4608 +msgid "" +"Template::Timer provides inline profiling of the template\n" +"processing in Perl code." +msgstr "" + +#: gnu/packages/perl.scm:4626 +msgid "Detect encoding of the current terminal" +msgstr "" + +#: gnu/packages/perl.scm:4627 +msgid "" +"Term::Encoding is a simple module to detect the encoding of\n" +"the current terminal expects in various ways." +msgstr "" + +#: gnu/packages/perl.scm:4651 +msgid "Progress meter on a standard terminal" +msgstr "" + +#: gnu/packages/perl.scm:4652 +msgid "" +"Term::ProgressBar provides a simple progress bar on the\n" +"terminal, to let the user know that something is happening, roughly how much\n" +"stuff has been done, and maybe an estimate at how long remains." +msgstr "" + +#: gnu/packages/perl.scm:4675 +msgid "Progress meter if run interactively" +msgstr "" + +#: gnu/packages/perl.scm:4676 +msgid "" +"Term::ProgressBar is a wonderful module for showing progress\n" +"bars on the terminal. This module acts very much like that module when it is\n" +"run interactively. However, when it is not run interactively (for example, as\n" +"a cron job) then it does not show the progress bar." +msgstr "" + +#: gnu/packages/perl.scm:4698 +msgid "Simple progress bars" +msgstr "" + +#: gnu/packages/perl.scm:4699 +msgid "" +"Term::ProgressBar::Simple tells you how much work has been\n" +"done, how much is left to do, and estimate how long it will take." +msgstr "" + +#: gnu/packages/perl.scm:4717 +msgid "Simple terminal control" +msgstr "" + +#: gnu/packages/perl.scm:4718 +msgid "" +"This module, ReadKey, provides ioctl control for terminals\n" +"so the input modes can be changed (thus allowing reads of a single character\n" +"at a time), and also provides non-blocking reads of stdin, as well as several\n" +"other terminal related features, including retrieval/modification of the\n" +"screen size, and retrieval/modification of the control characters." +msgstr "" + +#: gnu/packages/perl.scm:4745 +msgid "Data-driven testing framework for Perl" +msgstr "" + +#: gnu/packages/perl.scm:4746 +msgid "" +"Test::Base gives a way to trivially write your own test\n" +"framework base class. It concentrates on offering reusable data driven\n" +"patterns, so that you can write tests with a minimum of code." +msgstr "" + +#: gnu/packages/perl.scm:4777 +msgid "Check for uncleaned imports" +msgstr "" + +#: gnu/packages/perl.scm:4778 +msgid "" +"This module lets you check your module's namespaces for\n" +"imported functions you might have forgotten to remove with\n" +"namespace::autoclean or namespace::clean and are therefore available to be\n" +"called as methods, which usually isn't want you want." +msgstr "" + +#: gnu/packages/perl.scm:4798 +msgid "Flexible deep comparison for the Test::Builder framework" +msgstr "" + +#: gnu/packages/perl.scm:4800 +msgid "" +"Test::Deep compares two structures by going through each level, ensuring\n" +"that the values match, that arrays and hashes have the same elements and that\n" +"references are blessed into the correct class. It also handles circular data\n" +"structures without getting caught in an infinite loop." +msgstr "" + +#: gnu/packages/perl.scm:4825 +msgid "Test strings and data structures and show differences" +msgstr "" + +#: gnu/packages/perl.scm:4826 +msgid "" +"This module exports three test functions and four diff-style\n" +"functions." +msgstr "" + +#: gnu/packages/perl.scm:4847 +msgid "Perl extension for maintaining test directories" +msgstr "" + +#: gnu/packages/perl.scm:4848 +msgid "" +"Testing code can involve making sure that files are created\n" +"and deleted as expected. Doing this manually can be error prone, as it's easy\n" +"to forget a file, or miss that some unexpected file was added. This module\n" +"simplifies maintaining test directories by tracking their status as they are\n" +"modified or tested with this API, making it simple to test both individual\n" +"files, as well as to verify that there are no missing or unknown files." +msgstr "" + +#: gnu/packages/perl.scm:4874 +msgid "Test exception based code" +msgstr "" + +#: gnu/packages/perl.scm:4875 +msgid "" +"This module provides a few convenience methods for testing\n" +"exception based code. It is built with Test::Builder and plays happily with\n" +"Test::More and friends." +msgstr "" + +#: gnu/packages/perl.scm:4895 +msgid "Simple helpers for testing code with exceptions" +msgstr "" + +#: gnu/packages/perl.scm:4896 +msgid "" +"Test::Fatal is an alternative to the popular\n" +"Test::Exception. It does much less, but should allow greater flexibility in\n" +"testing exception-throwing code with about the same amount of typing." +msgstr "" + +#: gnu/packages/perl.scm:4926 +msgid "Run Perl standard test scripts with statistics" +msgstr "" + +#: gnu/packages/perl.scm:4927 +msgid "" +"Simple test harness which allows tests to be run and results\n" +"automatically aggregated and output to STDOUT." +msgstr "" + +#: gnu/packages/perl.scm:4945 +msgid "Traces memory leaks in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4946 +msgid "" +"Test::LeakTrace provides several functions that trace memory\n" +"leaks. This module scans arenas, the memory allocation system, so it can\n" +"detect any leaked SVs in given blocks." +msgstr "" + +#: gnu/packages/perl.scm:4965 +msgid "Tests strings for equality, with more helpful failures" +msgstr "" + +#: gnu/packages/perl.scm:4966 +msgid "" +"This module provides some drop-in replacements for the\n" +"string comparison functions of Test::More, but which are more suitable when\n" +"you test against long strings." +msgstr "" + +#: gnu/packages/perl.scm:4993 +msgid "Emulate troublesome interfaces in Perl" +msgstr "" + +#: gnu/packages/perl.scm:4994 +msgid "" +"Test::MockObject allows you to create objects that conform\n" +"to particular interfaces with very little code. You don't have to reimplement\n" +"the behavior, just the input and the output." +msgstr "" + +#: gnu/packages/perl.scm:5013 +msgid "Replaces actual time with simulated time" +msgstr "" + +#: gnu/packages/perl.scm:5014 +msgid "" +"This module was created to enable test suites to test code\n" +"at specific points in time. Specifically it overrides localtime, gmtime and\n" +"time at compile time and then relies on the user supplying a mock time via\n" +"set_relative_time, set_absolute_time or set_fixed_time to alter future calls\n" +"to gmtime,time or localtime." +msgstr "" + +#: gnu/packages/perl.scm:5041 +msgid "Most commonly needed test functions and features" +msgstr "" + +#: gnu/packages/perl.scm:5042 +msgid "" +"This module provides the most commonly used testing\n" +"functions, along with automatically turning on strict and warning and gives a\n" +"bit more fine-grained control over test suites." +msgstr "" + +#: gnu/packages/perl.scm:5060 +msgid "Ensure no warnings are produced while testing" +msgstr "" + +#: gnu/packages/perl.scm:5062 +msgid "" +"This modules causes any warnings during testing to be captured and\n" +"stored. It automatically adds an extra test that will run when your script\n" +"ends to check that there were no warnings. If there were any warnings, the\n" +"test will fail and output diagnostics of where, when and what the warning was,\n" +"including a stack trace of what was going on when it occurred." +msgstr "" + +#: gnu/packages/perl.scm:5087 +msgid "Utilities to test STDOUT and STDERR messages" +msgstr "" + +#: gnu/packages/perl.scm:5089 +msgid "" +"Test::Output provides a simple interface for testing output sent to\n" +"STDOUT or STDERR. A number of different utilities are included to try and be\n" +"as flexible as possible to the tester." +msgstr "" + +#: gnu/packages/perl.scm:5110 +msgid "Check for POD errors in files" +msgstr "" + +#: gnu/packages/perl.scm:5111 +msgid "" +"Check POD files for errors or warnings in a test file, using\n" +"Pod::Simple to do the heavy lifting." +msgstr "" + +#: gnu/packages/perl.scm:5131 +msgid "Check for pod coverage" +msgstr "" + +#: gnu/packages/perl.scm:5132 +msgid "" +"This module adds a test to your Perl distribution which\n" +"checks for pod coverage of all appropriate files." +msgstr "" + +#: gnu/packages/perl.scm:5150 +msgid "Checks to see if the module can be loaded" +msgstr "" + +#: gnu/packages/perl.scm:5151 +msgid "" +"Test::Requires checks to see if the module can be loaded.\n" +"If this fails, then rather than failing tests this skips all tests." +msgstr "" + +#: gnu/packages/perl.scm:5170 +msgid "Basic cross-platform tests for scripts" +msgstr "" + +#: gnu/packages/perl.scm:5172 +msgid "" +"The intent of the Test::Script module is to provide a series of basic\n" +"tests for 80% of the testing you will need to do for scripts in the script (or\n" +"bin as is also commonly used) paths of your Perl distribution." +msgstr "" + +#: gnu/packages/perl.scm:5195 +msgid "Fork test in Perl" +msgstr "" + +#: gnu/packages/perl.scm:5196 +msgid "" +"Test::SharedFork is a utility module for Test::Builder. It\n" +"makes fork(2) safe to use in test cases." +msgstr "" + +#: gnu/packages/perl.scm:5212 +msgid "Basic utilities for writing tests" +msgstr "" + +#: gnu/packages/perl.scm:5214 +msgid "Test::Simple contains basic utilities for writing tests." +msgstr "" + +#: gnu/packages/perl.scm:5231 +msgid "Simplify running Test::Builder tests" +msgstr "" + +#: gnu/packages/perl.scm:5233 +msgid "" +"Test::Tester allows testing of test modules based on Test::Builder with\n" +"a minimum of effort." +msgstr "" + +#: gnu/packages/perl.scm:5257 +msgid "Trap exit codes, exceptions, output, etc." +msgstr "" + +#: gnu/packages/perl.scm:5258 +msgid "" +"This module is primarily (but not exclusively) for use in\n" +"test scripts: A block eval configurable and extensible but by default trapping\n" +"STDOUT, STDERR, warnings, exceptions, would-be exit codes, and return values\n" +"from boxed blocks of test code." +msgstr "" + +#: gnu/packages/perl.scm:5278 +msgid "UTF-8 testing in Perl" +msgstr "" + +#: gnu/packages/perl.scm:5279 +msgid "" +"This module is a collection of tests useful for dealing with\n" +"UTF-8 strings in Perl. This module has two types of tests: The validity tests\n" +"check if a string is valid and not corrupt, whereas the characteristics tests\n" +"will check that string has a given set of characteristics." +msgstr "" + +#: gnu/packages/perl.scm:5301 +msgid "Perl extension to test methods for warnings" +msgstr "" + +#: gnu/packages/perl.scm:5302 +msgid "" +"This module provides a few convenience methods for testing\n" +"warning based code." +msgstr "" + +#: gnu/packages/perl.scm:5320 +msgid "Test for warnings and the lack of them" +msgstr "" + +#: gnu/packages/perl.scm:5321 +msgid "" +"This module is intended to be used as a drop-in replacement\n" +"for Test::NoWarnings. It also adds an extra test, but runs this test before\n" +"done_testing calculates the test count, rather than after. It does this by\n" +"hooking into done_testing as well as via an END block. You can declare a\n" +"plan, or not, and things will still Just Work." +msgstr "" + +#: gnu/packages/perl.scm:5342 +msgid "Test fallback behaviour in absence of modules" +msgstr "" + +#: gnu/packages/perl.scm:5343 +msgid "" +"This module allows you to deliberately hide modules from a\n" +"program even though they are installed. This is mostly useful for testing\n" +"modules that have a fallback when a certain dependency module is not\n" +"installed." +msgstr "" + +#: gnu/packages/perl.scm:5369 +msgid "Dynamic generation of tests" +msgstr "" + +#: gnu/packages/perl.scm:5370 +msgid "" +"The Test::WriteVariants module provides for the dynamic\n" +"generation of tests in nested combinations of contexts." +msgstr "" + +#: gnu/packages/perl.scm:5390 +msgid "Testing module for YAML implementations" +msgstr "" + +#: gnu/packages/perl.scm:5391 +msgid "" +"Test::YAML is a subclass of Test::Base with YAML specific\n" +"support." +msgstr "" + +#: gnu/packages/perl.scm:5409 +msgid "Align text" +msgstr "" + +#: gnu/packages/perl.scm:5410 +msgid "" +"Text::Aligner exports a single function, align(), which is\n" +"used to justify strings to various alignment styles." +msgstr "" + +#: gnu/packages/perl.scm:5428 +msgid "Extract delimited text sequences from strings" +msgstr "" + +#: gnu/packages/perl.scm:5429 +msgid "" +"The Text::Balanced module can be used to extract delimited\n" +"text sequences from strings." +msgstr "" + +#: gnu/packages/perl.scm:5447 +msgid "Manipulate comma-separated values" +msgstr "" + +#: gnu/packages/perl.scm:5448 +msgid "" +"Text::CSV provides facilities for the composition and\n" +"decomposition of comma-separated values. An instance of the Text::CSV class\n" +"can combine fields into a CSV string and parse a CSV string into fields." +msgstr "" + +#: gnu/packages/perl.scm:5469 +msgid "Perform diffs on files and record sets" +msgstr "" + +#: gnu/packages/perl.scm:5470 +msgid "" +"Text::Diff provides a basic set of services akin to the GNU\n" +"diff utility. It is not anywhere near as feature complete as GNU diff, but it\n" +"is better integrated with Perl and available on all platforms. It is often\n" +"faster than shelling out to a system's diff executable for small files, and\n" +"generally slower on larger files." +msgstr "" + +#: gnu/packages/perl.scm:5491 +msgid "Match globbing patterns against text" +msgstr "" + +#: gnu/packages/perl.scm:5492 +msgid "" +"Text::Glob implements glob(3) style matching that can be\n" +"used to match against text, rather than fetching names from a filesystem. If\n" +"you want to do full file globbing use the File::Glob module instead." +msgstr "" + +#: gnu/packages/perl.scm:5511 +msgid "Simple ASCII tables" +msgstr "" + +#: gnu/packages/perl.scm:5512 +msgid "Text::SimpleTable draws simple ASCII tables." +msgstr "" + +#: gnu/packages/perl.scm:5531 +msgid "Organize Data in Tables" +msgstr "" + +#: gnu/packages/perl.scm:5532 +msgid "Text::Table renders plaintext tables." +msgstr "" + +#: gnu/packages/perl.scm:5549 +msgid "Provide plain ASCII transliterations of Unicode text" +msgstr "" + +#: gnu/packages/perl.scm:5550 +msgid "" +"Text::Unidecode provides a function, unidecode(...) that\n" +"takes Unicode data and tries to represent it in US-ASCII characters (i.e., the\n" +"universally displayable characters between 0x00 and 0x7F). The representation\n" +"is almost always an attempt at transliteration-- i.e., conveying, in Roman\n" +"letters, the pronunciation expressed by the text in some other writing\n" +"system." +msgstr "" + +#: gnu/packages/perl.scm:5578 +msgid "Role for classes that can be thrown" +msgstr "" + +#: gnu/packages/perl.scm:5579 +msgid "" +"Throwable is a role for classes that are meant to be thrown\n" +"as exceptions to standard program flow." +msgstr "" + +#: gnu/packages/perl.scm:5597 +msgid "Ordered associative arrays for Perl" +msgstr "" + +#: gnu/packages/perl.scm:5598 +msgid "" +"This Perl module implements Perl hashes that preserve the\n" +"order in which the hash elements were added. The order is not affected when\n" +"values corresponding to existing keys in the IxHash are changed. The elements\n" +"can also be set to any arbitrary supplied order. The familiar perl array\n" +"operations can also be performed on the IxHash." +msgstr "" + +#: gnu/packages/perl.scm:5621 +msgid "Tie to an existing Perl object" +msgstr "" + +#: gnu/packages/perl.scm:5622 +msgid "" +"This class provides a tie constructor that returns the\n" +"object it was given as it's first argument. This way side effects of calling\n" +"$object->TIEHASH are avoided." +msgstr "" + +#: gnu/packages/perl.scm:5644 +msgid "English expression of durations" +msgstr "" + +#: gnu/packages/perl.scm:5645 +msgid "" +"This module provides functions for expressing durations in\n" +"rounded or exact terms." +msgstr "" + +#: gnu/packages/perl.scm:5667 +msgid "Parse time duration strings" +msgstr "" + +#: gnu/packages/perl.scm:5668 +msgid "" +"Time::Duration::Parse is a module to parse human readable\n" +"duration strings like \"2 minutes\" and \"3 seconds\" to seconds." +msgstr "" + +#: gnu/packages/perl.scm:5686 +msgid "Efficiently compute time from local and GMT time" +msgstr "" + +#: gnu/packages/perl.scm:5687 +msgid "" +"This module provides functions that are the inverse of\n" +"built-in perl functions localtime() and gmtime(). They accept a date as a\n" +"six-element array, and return the corresponding time(2) value in seconds since\n" +"the system epoch." +msgstr "" + +#: gnu/packages/perl.scm:5707 +msgid "Date parsing/formatting subroutines" +msgstr "" + +#: gnu/packages/perl.scm:5708 +msgid "" +"This module provides routines for parsing date string into\n" +"time values and formatting dates into ASCII strings." +msgstr "" + +#: gnu/packages/perl.scm:5728 +msgid "Shift and scale time" +msgstr "" + +#: gnu/packages/perl.scm:5729 +msgid "" +"This module allows you to speed up your sleep(), alarm(),\n" +"and time() calls." +msgstr "" + +#: gnu/packages/perl.scm:5752 +msgid "Simple tree object" +msgstr "" + +#: gnu/packages/perl.scm:5753 +msgid "" +"This module in a fully object-oriented implementation of a\n" +"simple n-ary tree." +msgstr "" + +#: gnu/packages/perl.scm:5776 +msgid "Factory object for dispensing Visitor objects" +msgstr "" + +#: gnu/packages/perl.scm:5777 +msgid "" +"This module is a factory for dispensing\n" +"Tree::Simple::Visitor::* objects." +msgstr "" + +#: gnu/packages/perl.scm:5795 +msgid "Minimal try/catch with proper preservation of $@" +msgstr "" + +#: gnu/packages/perl.scm:5796 +msgid "" +"This module provides bare bones try/catch/finally statements\n" +"that are designed to minimize common mistakes with eval blocks, and nothing\n" +"else." +msgstr "" + +#: gnu/packages/perl.scm:5817 +msgid "Data types for common serialisation formats" +msgstr "" + +#: gnu/packages/perl.scm:5818 +msgid "" +"This module provides some extra datatypes that are used by\n" +"common serialisation formats such as JSON or CBOR." +msgstr "" + +#: gnu/packages/perl.scm:5836 +msgid "UNIVERSAL::can() reimplementation" +msgstr "" + +#: gnu/packages/perl.scm:5837 +msgid "" +"This module attempts to work around people calling\n" +"UNIVERSAL::can() as a function, which it is not." +msgstr "" + +#: gnu/packages/perl.scm:5857 +msgid "UNIVERSAL::isa() reimplementation" +msgstr "" + +#: gnu/packages/perl.scm:5858 +msgid "" +"This module attempts to recover from people calling\n" +"UNIVERSAL::isa as a function." +msgstr "" + +#: gnu/packages/perl.scm:5876 +msgid "Associate user-defined magic to variables from Perl" +msgstr "" + +#: gnu/packages/perl.scm:5877 +msgid "" +"Magic is Perl's way of enhancing variables. This mechanism\n" +"lets the user add extra data to any variable and hook syntactical\n" +"operations (such as access, assignment or destruction) that can be applied to\n" +"it. With this module, you can add your own magic to any variable without\n" +"having to write a single line of XS." +msgstr "" + +#: gnu/packages/perl.scm:5900 +msgid "YAML for Perl" +msgstr "" + +#: gnu/packages/perl.scm:5901 +msgid "" +"The YAML.pm module implements a YAML Loader and Dumper based\n" +"on the YAML 1.0 specification." +msgstr "" + +#: gnu/packages/perl.scm:5924 +msgid "Read/Write YAML files" +msgstr "" + +#: gnu/packages/perl.scm:5925 +msgid "" +"YAML::Tiny is a perl class for reading and writing\n" +"YAML-style files, written with as little code as possible, reducing load time\n" +"and memory overhead." +msgstr "" + +#: gnu/packages/perl.scm:5952 +msgid "Distribution metadata for a CPAN dist" +msgstr "" + +#: gnu/packages/perl.scm:5953 +msgid "" +"Software distributions released to the CPAN include a\n" +"META.json or, for older distributions, META.yml, which describes the\n" +"distribution, its contents, and the requirements for building and installing\n" +"the distribution. The data structure stored in the META.json file is\n" +"described in CPAN::Meta::Spec. CPAN::Meta provides a simple class to\n" +"represent this distribution metadata (or distmeta), along with some helpful\n" +"methods for interrogating that data." +msgstr "" + +#: gnu/packages/perl.scm:5976 +msgid "Set of version requirements for a CPAN dist" +msgstr "" + +#: gnu/packages/perl.scm:5977 +msgid "" +"A CPAN::Meta::Requirements object models a set of version\n" +"constraints like those specified in the META.yml or META.json files in CPAN\n" +"distributions, and as defined by CPAN::Meta::Spec. It can be built up by\n" +"adding more and more constraints, and will reduce them to the simplest\n" +"representation." +msgstr "" + +#: gnu/packages/perl.scm:6000 +msgid "Read and write a subset of YAML for CPAN Meta files" +msgstr "" + +#: gnu/packages/perl.scm:6001 +msgid "" +"This module implements a subset of the YAML specification\n" +"for use in reading and writing CPAN metadata files like META.yml and\n" +"MYMETA.yml." +msgstr "" + +#: gnu/packages/perl.scm:6022 +msgid "Build and install Perl modules" +msgstr "" + +#: gnu/packages/perl.scm:6023 +msgid "" +"\"Module::Build\" is a system for building, testing, and\n" +"installing Perl modules. It is meant to be an alternative to\n" +"\"ExtUtils::MakeMaker\". Developers may alter the behavior of the module\n" +"through subclassing in a much more straightforward way than with\n" +"\"MakeMaker\". It also does not require a \"make\" on your system - most of\n" +"the \"Module::Build\" code is pure-perl and written in a cross-platform way." +msgstr "" + +#: gnu/packages/perl.scm:6047 +msgid "Parse META.yml and META.json CPAN metadata files" +msgstr "" + +#: gnu/packages/perl.scm:6048 +msgid "" +"Parse::CPAN::Meta is a parser for META.json and META.yml\n" +"files, using JSON::PP and/or CPAN::Meta::YAML." +msgstr "" + +#: gnu/packages/perl.scm:6066 +msgid "Common Scalar and List utility subroutines" +msgstr "" + +#: gnu/packages/perl.scm:6067 +msgid "" +"This package contains a selection of subroutines that people\n" +"have expressed would be nice to have in the perl core, but the usage would not\n" +"really be high enough to warrant the use of a keyword, and the size so small\n" +"such that being individual extensions would be wasteful." +msgstr "" + +#: gnu/packages/photo.scm:61 +msgid "Raw image decoder" +msgstr "" + +#: gnu/packages/photo.scm:63 +msgid "" +"LibRaw is a library for reading RAW files obtained from digital photo\n" +"cameras (CRW/CR2, NEF, RAF, DNG, and others)." +msgstr "" + +#: gnu/packages/photo.scm:80 +msgid "Read and manipulate EXIF data in digital photographs" +msgstr "" + +#: gnu/packages/photo.scm:82 +msgid "" +"The libexif C library allows applications to read, edit, and save EXIF\n" +"data as produced by digital cameras." +msgstr "" + +#: gnu/packages/photo.scm:107 +msgid "Accessing digital cameras" +msgstr "" + +#: gnu/packages/photo.scm:109 +msgid "" +"This is the library backend for gphoto2. It contains the code for PTP,\n" +"MTP, and other vendor specific protocols for controlling and transferring data\n" +"from digital cameras." +msgstr "" + +#: gnu/packages/photo.scm:150 +msgid "Command-line tools to access digital cameras" +msgstr "" + +#: gnu/packages/photo.scm:152 +msgid "" +"Gphoto2 is a set of command line utilities for manipulating a large\n" +"number of different digital cameras. Through libgphoto2, it supports PTP,\n" +"MTP, and much more." +msgstr "" + +#: gnu/packages/photo.scm:186 +msgid "Program and Perl library to manipulate EXIF tags" +msgstr "" + +#: gnu/packages/photo.scm:188 +msgid "" +"This package provides the 'exiftool' command and the 'Image::ExifTool'\n" +"Perl library to manipulate EXIF tags of digital images." +msgstr "" + +#: gnu/packages/photo.scm:211 +msgid "Library for panoramic images" +msgstr "" + +#: gnu/packages/photo.scm:213 +msgid "" +"The libpano13 package contains the backend library written by the\n" +"Panorama Tools project for building panoramic images from a set of\n" +"overlapping images, as well as some command line tools." +msgstr "" + +#: gnu/packages/photo.scm:255 +msgid "Tools for combining and blending images" +msgstr "" + +#: gnu/packages/photo.scm:257 +msgid "" +"Enblend blends away the seams in a panoramic image mosaic using a\n" +"multi-resolution spline. Enfuse merges different exposures of the same\n" +"scene to produce an image that looks much like a tone-mapped image." +msgstr "" + +#: gnu/packages/qemu.scm:119 +msgid "Machine emulator and virtualizer (without GUI)" +msgstr "" + +#: gnu/packages/qemu.scm:121 +msgid "" +"QEMU is a generic machine emulator and virtualizer.\n" +"\n" +"When used as a machine emulator, QEMU can run OSes and programs made for one\n" +"machine (e.g. an ARM board) on a different machine---e.g., your own PC. By\n" +"using dynamic translation, it achieves very good performance.\n" +"\n" +"When used as a virtualizer, QEMU achieves near native performances by\n" +"executing the guest code directly on the host CPU. QEMU supports\n" +"virtualization when executing under the Xen hypervisor or using\n" +"the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,\n" +"server and embedded PowerPC, and S390 guests." +msgstr "" + +#: gnu/packages/qemu.scm:143 +msgid "Machine emulator and virtualizer" +msgstr "" + +#: gnu/packages/ratpoison.scm:85 +msgid "Simple mouse-free tiling window manager" +msgstr "" + +#: gnu/packages/ratpoison.scm:87 +msgid "" +"Ratpoison is a simple window manager with no fat library\n" +"dependencies, no fancy graphics, no window decorations, and no\n" +"rodent dependence. It is largely modelled after GNU Screen which\n" +"has done wonders in the virtual terminal market.\n" +"\n" +"The screen can be split into non-overlapping frames. All windows\n" +"are kept maximized inside their frames to take full advantage of\n" +"your precious screen real estate.\n" +"\n" +"All interaction with the window manager is done through keystrokes.\n" +"Ratpoison has a prefix map to minimize the key clobbering that\n" +"cripples Emacs and other quality pieces of software." +msgstr "" + +#: gnu/packages/readline.scm:68 +msgid "Edit command lines while typing, with history support" +msgstr "" + +#: gnu/packages/readline.scm:70 +msgid "" +"The GNU readline library allows users to edit command lines as they\n" +"are typed in. It can maintain a searchable history of previously entered\n" +"commands, letting you easily recall, edit and re-enter past commands. It\n" +"features both Emacs-like and vi-like keybindings, making its usage\n" +"comfortable for anyone." +msgstr "" + +#: gnu/packages/scanner.scm:70 +msgid "Raster image scanner library and drivers" +msgstr "" + +#: gnu/packages/scanner.scm:71 +msgid "" +"SANE stands for \"Scanner Access Now Easy\" and is an API\n" +"proving access to any raster image scanner hardware (flatbed scanner,\n" +"hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The\n" +"package contains the library and drivers." +msgstr "" + +#: gnu/packages/scheme.scm:132 +msgid "A Scheme implementation with integrated editor and debugger" +msgstr "" + +#: gnu/packages/scheme.scm:134 +msgid "" +"GNU/MIT Scheme is an implementation of the Scheme programming\n" +"language. It provides an interpreter, a compiler and a debugger. It also\n" +"features an integrated Emacs-like editor and a large runtime library." +msgstr "" + +#: gnu/packages/scheme.scm:217 +msgid "Efficient Scheme compiler" +msgstr "" + +#: gnu/packages/scheme.scm:219 +msgid "" +"Bigloo is a Scheme implementation devoted to one goal: enabling\n" +"Scheme based programming style where C(++) is usually\n" +"required. Bigloo attempts to make Scheme practical by offering\n" +"features usually presented by traditional programming languages\n" +"but not offered by Scheme and functional programming. Bigloo\n" +"compiles Scheme modules. It delivers small and fast stand alone\n" +"binary executables. Bigloo enables full connections between\n" +"Scheme and C programs and between Scheme and Java programs." +msgstr "" + +#: gnu/packages/scheme.scm:262 +msgid "Multi-tier programming language for the Web 2.0" +msgstr "" + +#: gnu/packages/scheme.scm:264 +msgid "" +"HOP is a multi-tier programming language for the Web 2.0 and the\n" +"so-called diffuse Web. It is designed for programming interactive web\n" +"applications in many fields such as multimedia (web galleries, music players,\n" +"...), ubiquitous and house automation (SmartPhones, personal appliance),\n" +"mashups, office (web agendas, mail clients, ...), etc." +msgstr "" + +#: gnu/packages/scheme.scm:304 +msgid "R5RS Scheme implementation that compiles native code via C" +msgstr "" + +#: gnu/packages/scheme.scm:306 +msgid "" +"CHICKEN is a compiler for the Scheme programming language. CHICKEN\n" +"produces portable and efficient C, supports almost all of the R5RS Scheme\n" +"language standard, and includes many enhancements and extensions." +msgstr "" + +#: gnu/packages/scheme.scm:325 +msgid "Scheme implementation using a bytecode interpreter" +msgstr "" + +#: gnu/packages/scheme.scm:327 +msgid "" +"Scheme 48 is an implementation of Scheme based on a byte-code\n" +"interpreter and is designed to be used as a testbed for experiments in\n" +"implementation techniques and as an expository tool." +msgstr "" + +#: gnu/packages/scheme.scm:403 +msgid "Implementation of Scheme and related languages" +msgstr "" + +#: gnu/packages/scheme.scm:405 +msgid "" +"Racket is an implementation of the Scheme programming language (R5RS and\n" +"R6RS) and related languages, such as Typed Racket. It features a compiler and\n" +"a virtual machine with just-in-time native compilation, as well as a large set\n" +"of libraries." +msgstr "" + +#: gnu/packages/scheme.scm:443 +msgid "Efficient Scheme interpreter and compiler" +msgstr "" + +#: gnu/packages/scheme.scm:445 +msgid "" +"Gambit consists of two main programs: gsi, the Gambit Scheme\n" +"interpreter, and gsc, the Gambit Scheme compiler. The interpreter contains\n" +"the complete execution and debugging environment. The compiler is the\n" +"interpreter extended with the capability of generating executable files. The\n" +"compiler can produce standalone executables or compiled modules which can be\n" +"loaded at run time. Interpreted code and compiled code can be freely\n" +"mixed." +msgstr "" + +#: gnu/packages/scheme.scm:482 +msgid "Small embeddable Scheme implementation" +msgstr "" + +#: gnu/packages/scheme.scm:484 +msgid "" +"Chibi-Scheme is a very small library with no external dependencies\n" +"intended for use as an extension and scripting language in C programs. In\n" +"addition to support for lightweight VM-based threads, each VM itself runs in\n" +"an isolated heap allowing multiple VMs to run simultaneously in different OS\n" +"threads." +msgstr "" + +#: gnu/packages/scheme.scm:660 +msgid "Scmutils library for MIT Scheme" +msgstr "" + +#: gnu/packages/scheme.scm:661 +msgid "" +"The Scmutils system is an integrated library of\n" +"procedures, embedded in the programming language Scheme, and intended to\n" +"support teaching and research in mathematical physics and electrical\n" +"engineering." +msgstr "" + +#: gnu/packages/search.scm:52 +msgid "Search Engine Library" +msgstr "" + +#: gnu/packages/search.scm:54 +msgid "" +"Xapian is a highly adaptable toolkit which allows developers to easily\n" +"add advanced indexing and search facilities to their own applications. It\n" +"supports the Probabilistic Information Retrieval model and also supports a\n" +"rich set of boolean query operators." +msgstr "" + +#: gnu/packages/search.scm:97 +msgid "Tool for Obsessive Compulsive Classifiers" +msgstr "" + +#: gnu/packages/search.scm:99 +msgid "" +"libtocc is the engine of the Tocc project, a tag-based file management\n" +"system. The goal of Tocc is to provide a better system for classifying files\n" +"that is more flexible than classic file systems that are based on a tree of\n" +"files and directories." +msgstr "" + +#: gnu/packages/search.scm:121 +msgid "Command-line interface to libtocc" +msgstr "" + +#: gnu/packages/search.scm:123 +msgid "" +"Tocc is a tag-based file management system. This package contains the\n" +"command line tool for interacting with libtocc." +msgstr "" + +#: gnu/packages/search.scm:141 +msgid "Finding text and HTML files that match boolean expressions" +msgstr "" + +#: gnu/packages/search.scm:143 +msgid "" +"GNU Bool is a utility to perform text searches on files using Boolean\n" +"expressions. For example, a search for \"hello AND world\" would return a\n" +"file containing the phrase \"Hello, world!\". It supports both AND and OR\n" +"statements, as well as the NEAR statement to search for the occurrence of\n" +"words in close proximity to each other. It handles context gracefully,\n" +"accounting for new lines and paragraph changes. It also has robust support\n" +"for parsing HTML files." +msgstr "" + +#: gnu/packages/serveez.scm:51 +msgid "Framework for implementing IP-based servers" +msgstr "" + +#: gnu/packages/serveez.scm:53 +msgid "" +"GNU Serveez is a server framework providing the routines necessary to\n" +"easily implement IP-based servers in your application. It\n" +"demonstrates aspects of network programming in a portable manner,\n" +"making it convenient for both simplifying the process of adding a\n" +"server to your application or for learning about how network services\n" +"work. Several example servers are provided already, such as an HTTP\n" +"server and an IRC server." +msgstr "" + +#: gnu/packages/telephony.scm:50 +msgid "(u)Common C++ framework for threaded applications" +msgstr "" + +#: gnu/packages/telephony.scm:51 +msgid "" +"GNU Common C++ is an portable, optimized class framework for\n" +"threaded applications, supporting concurrent synchronization, inter-process\n" +"communications via sockets, and various methods for data handling, such as\n" +"serialization and XML parsing. It includes the uCommon C++ library, a smaller\n" +"reimplementation." +msgstr "" + +#: gnu/packages/telephony.scm:70 +msgid "Common C++ framework for threaded applications" +msgstr "" + +#: gnu/packages/telephony.scm:71 +msgid "" +"GNU uCommon C++ is meant as a very light-weight C++ library\n" +"to facilitate using C++ design patterns even for very deeply embedded\n" +"applications, such as for systems using uclibc along with posix threading\n" +"support." +msgstr "" + +#: gnu/packages/telephony.scm:92 +msgid "Implementation of RTP (real-time transport protocol)" +msgstr "" + +#: gnu/packages/telephony.scm:93 +msgid "" +"GNU ccRTP is an implementation of RTP, the real-time transport\n" +"protocol from the IETF. It is suitable both for high capacity servers and\n" +"personal client applications. It is flexible in its design, allowing it to\n" +"function as a framework for the framework, rather than just being a\n" +"packet-manipulation library." +msgstr "" + +#: gnu/packages/telephony.scm:113 +msgid "Library implementing SIP (RFC-3261)" +msgstr "" + +#: gnu/packages/telephony.scm:114 +msgid "" +"GNU oSIP is an implementation of the SIP protocol. It is\n" +"used to provide multimedia and telecom software developers with an interface\n" +"to initiate and control SIP sessions." +msgstr "" + +#: gnu/packages/telephony.scm:134 +msgid "Sip abstraction library" +msgstr "" + +#: gnu/packages/telephony.scm:135 +msgid "" +"EXosip is a library that hides the complexity of using the\n" +"SIP protocol for multimedia session establishment. This protocol is mainly to\n" +"be used by VoIP telephony applications (endpoints or conference server) but\n" +"might be also useful for any application that wish to establish sessions like\n" +"multiplayer games." +msgstr "" + +#: gnu/packages/telephony.scm:178 +msgid "Secure peer-to-peer VoIP server for the SIP protocol" +msgstr "" + +#: gnu/packages/telephony.scm:179 +msgid "" +"GNU SIP Witch is a peer-to-peer Voice-over-IP server that\n" +"uses the SIP protocol. Calls can be made from behind NAT firewalls and\n" +"without the need for a service provider. Its peer-to-peer design ensures that\n" +"there is no central point for media intercept or capture and thus it can be\n" +"used to construct a secure telephone system that operates over the public\n" +"internet." +msgstr "" + +#: gnu/packages/telephony.scm:204 +msgid "Secure RTP (SRTP) Reference Implementation" +msgstr "" + +#: gnu/packages/telephony.scm:205 +msgid "" +"This package provides an implementation of the Secure\n" +"Real-time Transport Protocol (SRTP), the Universal Security Transform (UST),\n" +"and a supporting cryptographic kernel." +msgstr "" + +#: gnu/packages/texinfo.scm:56 +msgid "The GNU documentation format" +msgstr "" + +#: gnu/packages/texinfo.scm:58 +msgid "" +"Texinfo is the official documentation format of the GNU project. It\n" +"uses a single source file using explicit commands to produce a final document\n" +"in any of several supported output formats, such as HTML or PDF. This\n" +"package includes both the tools necessary to produce Info documents from\n" +"their source and the command-line Info reader. The emphasis of the language\n" +"is on expressing the content semantically, avoiding physical markup commands." +msgstr "" + +#: gnu/packages/texinfo.scm:116 +msgid "Convert Texinfo to HTML" +msgstr "Konwersja Texinfo do HTML" + +#: gnu/packages/texinfo.scm:118 +msgid "" +"Texi2HTML is a Perl script which converts Texinfo source files to HTML\n" +"output. It now supports many advanced features, such as internationalization\n" +"and extremely configurable output formats.\n" +"\n" +"Development of Texi2HTML moved to the GNU Texinfo repository in 2010, since it\n" +"was meant to replace the makeinfo implementation in GNU Texinfo. The route\n" +"forward for authors is, in most cases, to alter manuals and build processes as\n" +"necessary to use the new features of the makeinfo/texi2any implementation of\n" +"GNU Texinfo. The Texi2HTML maintainers (one of whom is the principal author\n" +"of the GNU Texinfo implementation) do not intend to make further releases of\n" +"Texi2HTML." +msgstr "" + +#: gnu/packages/texlive.scm:156 gnu/packages/texlive.scm:216 +#: gnu/packages/texlive.scm:274 +msgid "TeX Live, a package of the TeX typesetting system" +msgstr "" + +#: gnu/packages/texlive.scm:158 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the binaries." +msgstr "" + +#: gnu/packages/texlive.scm:218 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the complete tree of texmf-dist data." +msgstr "" + +#: gnu/packages/texlive.scm:276 +msgid "" +"TeX Live provides a comprehensive TeX document production system.\n" +"It includes all the major TeX-related programs, macro packages, and fonts\n" +"that are free software, including support for many languages around the\n" +"world.\n" +"\n" +"This package contains the complete TeX Live distribution." +msgstr "" + +#: gnu/packages/texlive.scm:305 +msgid "Wrapper for LaTeX and friends" +msgstr "" + +#: gnu/packages/texlive.scm:307 +msgid "" +"Rubber is a program whose purpose is to handle all tasks related to the\n" +"compilation of LaTeX documents. This includes compiling the document itself,\n" +"of course, enough times so that all references are defined, and running BibTeX\n" +"to manage bibliographic references. Automatic execution of dvips to produce\n" +"PostScript documents is also included, as well as usage of pdfLaTeX to produce\n" +"PDF documents." +msgstr "" + +#: gnu/packages/textutils.scm:58 +msgid "Text encoding converter" +msgstr "" + +#: gnu/packages/textutils.scm:59 +msgid "" +"The Recode library converts files between character sets and\n" +"usages. It recognises or produces over 200 different character sets (or about\n" +"300 if combined with an iconv library) and transliterates files between almost\n" +"any pair. When exact transliteration are not possible, it gets rid of\n" +"offending characters or falls back on approximations. The recode program is a\n" +"handy front-end to the library." +msgstr "" + +#: gnu/packages/textutils.scm:86 +msgid "Text encoding detection tool" +msgstr "" + +#: gnu/packages/textutils.scm:87 +msgid "" +"Enca (Extremely Naive Charset Analyser) consists of libenca,\n" +"an encoding detection library, and enca, a command line frontend, integrating\n" +"libenca and several charset conversion libraries and tools." +msgstr "" + +#: gnu/packages/textutils.scm:122 +msgid "C library for processing UTF-8 Unicode data" +msgstr "" + +#: gnu/packages/textutils.scm:123 +msgid "" +"utf8proc is a small C library that provides Unicode\n" +"normalization, case-folding, and other operations for data in the UTF-8\n" +"encoding, supporting Unicode version 7.0." +msgstr "" + +#: gnu/packages/textutils.scm:152 +msgid "Gordon's text utils library" +msgstr "" + +#: gnu/packages/textutils.scm:154 +msgid "" +"libgtextutils is a text utilities library used by the fastx toolkit from\n" +"the Hannon Lab." +msgstr "" + +#: gnu/packages/textutils.scm:175 +msgid "C++ hash functions for strings" +msgstr "" + +#: gnu/packages/textutils.scm:177 +msgid "" +"CityHash provides hash functions for strings. The functions mix the\n" +"input bits thoroughly but are not suitable for cryptography." +msgstr "" + +#: gnu/packages/version-control.scm:97 +msgid "Version control system supporting both distributed and centralized workflows" +msgstr "" + +#: gnu/packages/version-control.scm:99 +msgid "" +"GNU Bazaar is a version control system that allows you to record\n" +"changes to project files over time. It supports both a distributed workflow\n" +"as well as the classic centralized workflow." +msgstr "" + +#: gnu/packages/version-control.scm:258 +msgid "Distributed version control system" +msgstr "Rozproszony system kontroli wersji" + +#: gnu/packages/version-control.scm:260 +msgid "" +"Git is a free distributed version control system designed to handle\n" +"everything from small to very large projects with speed and efficiency." +msgstr "" + +#: gnu/packages/version-control.scm:305 +msgid "Man pages of the Git version control system" +msgstr "" + +#: gnu/packages/version-control.scm:307 +msgid "" +"This package provides the man pages of the Git version control system.\n" +"This is the documentation displayed when using the '--help' option of a 'git'\n" +"command." +msgstr "" + +#: gnu/packages/version-control.scm:344 +msgid "Command-line flags library for shell scripts" +msgstr "" + +#: gnu/packages/version-control.scm:346 +msgid "" +"Shell Flags (shFlags) is a library written to greatly simplify the\n" +"handling of command-line flags in Bourne based Unix shell scripts (bash, dash,\n" +"ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the\n" +"different versions of getopt on various OSes make writing portable shell\n" +"scripts difficult. shFlags instead provides an API that doesn't change across\n" +"shell and OS versions so the script writer can be confident that the script\n" +"will work." +msgstr "" + +#: gnu/packages/version-control.scm:389 +msgid "Git extensions for Vincent Driessen's branching model" +msgstr "" + +#: gnu/packages/version-control.scm:391 +msgid "" +"Vincent Driessen's branching model is a git branching and release\n" +"management strategy that helps developers keep track of features, hotfixes,\n" +"and releases in bigger software projects. The git-flow library of git\n" +"subcommands helps automate some parts of the flow to make working with it a\n" +"lot easier." +msgstr "" + +#: gnu/packages/version-control.scm:426 +msgid "Run a command over a sequence of commits" +msgstr "" + +#: gnu/packages/version-control.scm:428 +msgid "" +"git-test-sequence is similar to an automated git bisect except it’s\n" +"linear. It will test every change between two points in the DAG. It will\n" +"also walk each side of a merge and test those changes individually." +msgstr "" + +#: gnu/packages/version-control.scm:486 +msgid "Git access control layer" +msgstr "" + +#: gnu/packages/version-control.scm:488 +msgid "" +"Gitolite is an access control layer on top of Git, providing fine access\n" +"control to Git repositories." +msgstr "" + +#: gnu/packages/version-control.scm:512 +msgid "Decentralized version control system" +msgstr "" + +#: gnu/packages/version-control.scm:514 +msgid "" +"Mercurial is a free, distributed source control management tool.\n" +"It efficiently handles projects of any size\n" +"and offers an easy and intuitive interface." +msgstr "" + +#: gnu/packages/version-control.scm:548 +msgid "HTTP and WebDAV client library" +msgstr "" + +#: gnu/packages/version-control.scm:549 +msgid "" +"Neon is an HTTP and WebDAV client library, with a\n" +"C interface. Features:\n" +"High-level wrappers for common HTTP and WebDAV operations (GET, MOVE,\n" +"DELETE, etc.);\n" +"low-level interface to the HTTP request/response engine, allowing the use\n" +"of arbitrary HTTP methods, headers, etc.;\n" +"authentication support including Basic and Digest support, along with\n" +"GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32;\n" +"SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for\n" +"verifying server certificates, handling client certificates, and examining\n" +"certificate properties, smartcard-based client certificates are also\n" +"supported via a PKCS#11 wrapper interface;\n" +"abstract interface to parsing XML using libxml2 or expat, and wrappers for\n" +"simplifying handling XML HTTP response bodies;\n" +"WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify\n" +"property manipulation." +msgstr "" + +#: gnu/packages/version-control.scm:628 +msgid "Revision control system" +msgstr "System kontroli wersji" + +#: gnu/packages/version-control.scm:630 +msgid "" +"Subversion exists to be universally recognized and adopted as a\n" +"centralized version control system characterized by its\n" +"reliability as a safe haven for valuable data; the simplicity of its model and\n" +"usage; and its ability to support the needs of a wide variety of users and\n" +"projects, from individuals to large-scale enterprise operations." +msgstr "" + +#: gnu/packages/version-control.scm:651 +msgid "Per-file local revision control system" +msgstr "" + +#: gnu/packages/version-control.scm:653 +msgid "" +"RCS is the original Revision Control System. It works on a\n" +"file-by-file basis, in contrast to subsequent version control systems such as\n" +"CVS, Subversion, and Git. This can make it suitable for system\n" +"administration files, for example, which are often inherently local to one\n" +"machine." +msgstr "" + +#: gnu/packages/version-control.scm:679 +msgid "Historical centralized version control system" +msgstr "" + +#: gnu/packages/version-control.scm:681 +msgid "" +"CVS is a version control system, an important component of Source\n" +"Configuration Management (SCM). Using it, you can record the history of\n" +"sources files, and documents. It fills a similar role to the free software\n" +"RCS, PRCS, and Aegis packages." +msgstr "" + +#: gnu/packages/version-control.scm:714 +msgid "Export an RCS or CVS history as a fast-import stream" +msgstr "" + +#: gnu/packages/version-control.scm:715 +msgid "" +"This program analyzes a collection of RCS files in a CVS\n" +"repository (or outside of one) and, when possible, emits an equivalent history\n" +"in the form of a fast-import stream. Not all possible histories can be\n" +"rendered this way; the program tries to emit useful warnings when it can't.\n" +"\n" +"The program can also produce a visualization of the resulting commit directed\n" +"acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org,\n" +"Graphviz}. The package also includes @command{cvssync}, a tool for mirroring\n" +"masters from remote CVS hosts." +msgstr "" + +#: gnu/packages/version-control.scm:742 +msgid "Version-control-agnostic ChangeLog diff and commit tool" +msgstr "" + +#: gnu/packages/version-control.scm:744 +msgid "" +"The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\".\n" +"vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and\n" +"using version control at the same time, for example by printing a reminder\n" +"when a file change has been described in the ChangeLog but the file has not\n" +"been added to the VC. vc-chlog scans changed files and generates\n" +"standards-compliant ChangeLog entries based on the changes that it detects." +msgstr "" + +#: gnu/packages/version-control.scm:766 +msgid "Make histograms from the output of 'diff'" +msgstr "" + +#: gnu/packages/version-control.scm:768 +msgid "" +"Diffstat reads the output of 'diff' and displays a histogram of the\n" +"insertions, deletions, and modifications per-file. It is useful for reviewing\n" +"large, complex patch files." +msgstr "" + +#: gnu/packages/version-control.scm:809 +msgid "File-based version control like SCCS" +msgstr "" + +#: gnu/packages/version-control.scm:810 +msgid "" +"GNU CSSC provides a replacement for the legacy Unix source\n" +"code control system SCCS. This allows old code still under that system to be\n" +"accessed and migrated on modern systems." +msgstr "" + +#: gnu/packages/version-control.scm:891 +msgid "Project change supervisor" +msgstr "" + +#: gnu/packages/version-control.scm:892 +msgid "" +"Aegis is a project change supervisor, and performs some of\n" +"the Software Configuration Management needed in a CASE environment. Aegis\n" +"provides a framework within which a team of developers may work on many\n" +"changes to a program independently, and Aegis coordinates integrating these\n" +"changes back into the master source of the program, with as little disruption\n" +"as possible. Resolution of contention for source files, a major headache for\n" +"any project with more than one developer, is one of Aegis's major functions." +msgstr "" + +#: gnu/packages/version-control.scm:919 +msgid "Ncurses-based text user interface for Git" +msgstr "" + +#: gnu/packages/version-control.scm:921 +msgid "" +"Tig is an ncurses text user interface for Git, primarily intended as\n" +"a history browser. It can also stage hunks for commit, or colorize the\n" +"output of the 'git' command." +msgstr "" + +#: gnu/packages/webkit.scm:121 +msgid "Web content engine for GTK+" +msgstr "" + +#: gnu/packages/webkit.scm:123 +msgid "" +"WebKitGTK+ is a full-featured port of the WebKit rendering engine,\n" +"suitable for projects requiring any kind of web integration, from hybrid\n" +"HTML/CSS applications to full-fledged web browsers." +msgstr "" + +#: gnu/packages/web.scm:88 +msgid "Featureful HTTP server" +msgstr "" + +#: gnu/packages/web.scm:90 +msgid "" +"The Apache HTTP Server Project is a collaborative software development\n" +"effort aimed at creating a robust, commercial-grade, featureful, and\n" +"freely-available source code implementation of an HTTP (Web) server. The\n" +"project is jointly managed by a group of volunteers located around the world,\n" +"using the Internet and the Web to communicate, plan, and develop the server\n" +"and its related documentation." +msgstr "" + +#: gnu/packages/web.scm:168 +msgid "HTTP and reverse proxy server" +msgstr "" + +#: gnu/packages/web.scm:170 +msgid "" +"Nginx (\"engine X\") is a high-performance web and reverse proxy server\n" +"created by Igor Sysoev. It can be used both as a standalone web server\n" +"and as a proxy to reduce the load on back-end HTTP or mail servers." +msgstr "" + +#: gnu/packages/web.scm:206 +msgid "PSGI/Plack web server" +msgstr "" + +#: gnu/packages/web.scm:207 +msgid "" +"Starman is a PSGI perl web server that has unique features\n" +"such as high performance, preforking, signal support, superdaemon awareness,\n" +"and UNIX socket support." +msgstr "" + +#: gnu/packages/web.scm:226 +msgid "JSON C library" +msgstr "" + +#: gnu/packages/web.scm:228 +msgid "" +"Jansson is a C library for encoding, decoding and manipulating JSON\n" +"data." +msgstr "" + +#: gnu/packages/web.scm:259 +msgid "JSON implementation in C" +msgstr "" + +#: gnu/packages/web.scm:261 +msgid "" +"JSON-C implements a reference counting object model that allows you to\n" +"easily construct JSON objects in C, output them as JSON formatted strings and\n" +"parse JSON formatted strings back into the C representation of JSON objects." +msgstr "" + +#: gnu/packages/web.scm:287 +msgid "JSON parser/generator for C++ with both SAX/DOM style API" +msgstr "" + +#: gnu/packages/web.scm:289 +msgid "" +"RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM\n" +"style API." +msgstr "" + +#: gnu/packages/web.scm:307 +msgid "C library for parsing JSON" +msgstr "" + +#: gnu/packages/web.scm:309 +msgid "" +"Yet Another JSON Library (YAJL) is a small event-driven (SAX-style) JSON\n" +"parser written in ANSI C and a small validating JSON generator." +msgstr "" + +#: gnu/packages/web.scm:339 +msgid "WebSockets library written in C" +msgstr "" + +#: gnu/packages/web.scm:341 +msgid "" +"Libwebsockets is a library that allows C programs to establish client\n" +"and server WebSockets connections---a protocol layered above HTTP that allows\n" +"for efficient socket-like bidirectional reliable communication channels." +msgstr "" + +#: gnu/packages/web.scm:376 +msgid "C library for the Publix Suffix List" +msgstr "" + +#: gnu/packages/web.scm:378 +msgid "" +"A \"public suffix\" is a domain name under which Internet users can\n" +"directly register own names.\n" +"\n" +"Browsers and other web clients can use it to avoid privacy-leaking\n" +"\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain\n" +"highlighting parts of the domain in a user interface, and sorting domain lists\n" +"by site.\n" +"\n" +"Libpsl has built-in PSL data for fast access, allows to load PSL data from\n" +"files, checks if a given domain is a public suffix, provides immediate cookie\n" +"domain verification, finds the longest public part of a given domain, finds\n" +"the shortest private part of a given domain, works with international\n" +"domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008\n" +"UTS#46." +msgstr "" + +#: gnu/packages/web.scm:424 +msgid "HTML validator and tidier" +msgstr "" + +#: gnu/packages/web.scm:425 +msgid "" +"HTML Tidy is a command-line tool and C library that can be\n" +"used to validate and fix HTML data." +msgstr "" + +#: gnu/packages/web.scm:465 +msgid "Light-weight HTTP/HTTPS proxy daemon" +msgstr "" + +#: gnu/packages/web.scm:466 +msgid "" +"Tinyproxy is a light-weight HTTP/HTTPS proxy\n" +"daemon. Designed from the ground up to be fast and yet small, it is an ideal\n" +"solution for use cases such as embedded deployments where a full featured HTTP\n" +"proxy is required, but the system resources for a larger proxy are\n" +"unavailable." +msgstr "" + +#: gnu/packages/web.scm:499 +msgid "Small caching web proxy" +msgstr "" + +#: gnu/packages/web.scm:501 +msgid "" +"Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy\n" +"server). It was primarily designed to be used by one person or a small group\n" +"of people." +msgstr "" + +#: gnu/packages/web.scm:521 +msgid "YAML 1.1 parser and emitter written in C" +msgstr "" + +#: gnu/packages/web.scm:523 +msgid "LibYAML is a YAML 1.1 parser and emitter written in C." +msgstr "" + +#: gnu/packages/web.scm:539 gnu/packages/web.scm:572 gnu/packages/web.scm:594 +msgid "Media stream URL parser" +msgstr "" + +#: gnu/packages/web.scm:540 +msgid "" +"This package contains support scripts called by libquvi to\n" +"parse media stream properties." +msgstr "" + +#: gnu/packages/web.scm:573 +msgid "" +"libquvi is a library with a C API for parsing media stream\n" +"URLs and extracting their actual media files." +msgstr "" + +#: gnu/packages/web.scm:595 +msgid "" +"quvi is a command-line-tool suite to extract media files\n" +"from streaming URLs. It is a command-line wrapper for the libquvi library." +msgstr "" + +#: gnu/packages/web.scm:658 +msgid "High-performance asynchronous HTTP client library" +msgstr "" + +#: gnu/packages/web.scm:660 +msgid "" +"serf is a C-based HTTP client library built upon the Apache Portable\n" +"Runtime (APR) library. It multiplexes connections, running the read/write\n" +"communication asynchronously. Memory copies and transformations are kept to a\n" +"minimum to provide high performance operation." +msgstr "" + +#: gnu/packages/web.scm:715 +msgid "CSS pre-processor" +msgstr "" + +#: gnu/packages/web.scm:716 +msgid "" +"SassC is a compiler written in C for the CSS pre-processor\n" +"language known as SASS." +msgstr "" + +#: gnu/packages/web.scm:744 +msgid "Compile a log format string to perl-code" +msgstr "" + +#: gnu/packages/web.scm:745 +msgid "" +"This module provides methods to compile a log format string\n" +"to perl-code, for faster generation of access_log lines." +msgstr "" + +#: gnu/packages/web.scm:766 +msgid "SASL authentication framework" +msgstr "" + +#: gnu/packages/web.scm:767 +msgid "Authen::SASL provides an SASL authentication framework." +msgstr "" + +#: gnu/packages/web.scm:791 +msgid "Sensible default Catalyst action" +msgstr "" + +#: gnu/packages/web.scm:792 +msgid "" +"This Catalyst action implements a sensible default end\n" +"action, which will forward to the first available view." +msgstr "" + +#: gnu/packages/web.scm:820 +msgid "Automated REST Method Dispatching" +msgstr "" + +#: gnu/packages/web.scm:821 +msgid "" +"This Action handles doing automatic method dispatching for\n" +"REST requests. It takes a normal Catalyst action, and changes the dispatch to\n" +"append an underscore and method name. First it will try dispatching to an\n" +"action with the generated name, and failing that it will try to dispatch to a\n" +"regular method." +msgstr "" + +#: gnu/packages/web.scm:857 +msgid "Storage class for Catalyst authentication using DBIx::Class" +msgstr "" + +#: gnu/packages/web.scm:858 +msgid "" +"The Catalyst::Authentication::Store::DBIx::Class class\n" +"provides access to authentication information stored in a database via\n" +"DBIx::Class." +msgstr "" + +#: gnu/packages/web.scm:882 +msgid "Create only one instance of Moose component per context" +msgstr "" + +#: gnu/packages/web.scm:883 +msgid "" +"Catalyst::Component::InstancePerContext returns a new\n" +"instance of a component on each request." +msgstr "" + +#: gnu/packages/web.scm:920 +msgid "Catalyst Development Tools" +msgstr "" + +#: gnu/packages/web.scm:921 +msgid "" +"The Catalyst-Devel distribution includes a variety of\n" +"modules useful for the development of Catalyst applications, but not required\n" +"to run them. Catalyst-Devel includes the Catalyst::Helper system, which\n" +"autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install\n" +"extension for Catalyst; and requirements for a variety of development-related\n" +"modules." +msgstr "" + +#: gnu/packages/web.scm:950 +msgid "Regex DispatchType for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:951 +msgid "" +"Dispatch type managing path-matching behaviour using\n" +"regexes. Regex dispatch types have been deprecated and removed from Catalyst\n" +"core. It is recommend that you use Chained methods or other techniques\n" +"instead. As part of the refactoring, the dispatch priority of Regex vs Regexp\n" +"vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by\n" +"when the dispatch type is first seen in your application." +msgstr "" + +#: gnu/packages/web.scm:999 +msgid "DBIx::Class::Schema Model Class" +msgstr "" + +#: gnu/packages/web.scm:1000 +msgid "" +"This is a Catalyst Model for DBIx::Class::Schema-based\n" +"Models." +msgstr "" + +#: gnu/packages/web.scm:1024 +msgid "Request logging from within Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1025 +msgid "" +"This Catalyst plugin enables you to create \"access logs\"\n" +"from within a Catalyst application instead of requiring a webserver to do it\n" +"for you. It will work even with Catalyst debug logging turned off." +msgstr "" + +#: gnu/packages/web.scm:1057 +msgid "Infrastructure plugin for the Catalyst authentication framework" +msgstr "" + +#: gnu/packages/web.scm:1058 +msgid "" +"The authentication plugin provides generic user support for\n" +"Catalyst apps. It is the basis for both authentication (checking the user is\n" +"who they claim to be), and authorization (allowing the user to do what the\n" +"system authorises them to do)." +msgstr "" + +#: gnu/packages/web.scm:1088 +msgid "Role-based authorization for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1089 +msgid "" +"Catalyst::Plugin::Authorization::Roles provides role-based\n" +"authorization for Catalyst based on Catalyst::Plugin::Authentication." +msgstr "" + +#: gnu/packages/web.scm:1112 +msgid "Captchas for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:1113 +msgid "" +"This plugin creates and validates Captcha images for\n" +"Catalyst." +msgstr "" + +#: gnu/packages/web.scm:1139 +msgid "Load config files of various types" +msgstr "" + +#: gnu/packages/web.scm:1140 +msgid "" +"This module will attempt to load find and load configuration\n" +"files of various types. Currently it supports YAML, JSON, XML, INI and Perl\n" +"formats." +msgstr "" + +#: gnu/packages/web.scm:1170 +msgid "Catalyst generic session plugin" +msgstr "" + +#: gnu/packages/web.scm:1171 +msgid "" +"This plugin links the two pieces required for session\n" +"management in web applications together: the state, and the store." +msgstr "" + +#: gnu/packages/web.scm:1197 +msgid "Maintain session IDs using cookies" +msgstr "" + +#: gnu/packages/web.scm:1198 +msgid "" +"In order for Catalyst::Plugin::Session to work, the session\n" +"ID needs to be stored on the client, and the session data needs to be stored\n" +"on the server. This plugin stores the session ID on the client using the\n" +"cookie mechanism." +msgstr "" + +#: gnu/packages/web.scm:1228 +msgid "FastMmap session storage backend" +msgstr "" + +#: gnu/packages/web.scm:1229 +msgid "" +"Catalyst::Plugin::Session::Store::FastMmap is a fast session\n" +"storage plugin for Catalyst that uses an mmap'ed file to act as a shared\n" +"memory interprocess cache. It is based on Cache::FastMmap." +msgstr "" + +#: gnu/packages/web.scm:1252 +msgid "Stack trace on the Catalyst debug screen" +msgstr "" + +#: gnu/packages/web.scm:1253 +msgid "" +"This plugin enhances the standard Catalyst debug screen by\n" +"including a stack trace of your application up to the point where the error\n" +"occurred. Each stack frame is displayed along with the package name, line\n" +"number, file name, and code context surrounding the line number." +msgstr "" + +#: gnu/packages/web.scm:1279 +msgid "Simple serving of static pages" +msgstr "" + +#: gnu/packages/web.scm:1280 +msgid "" +"The Static::Simple plugin is designed to make serving static\n" +"content in your application during development quick and easy, without\n" +"requiring a single line of code from you. This plugin detects static files by\n" +"looking at the file extension in the URL (such as .css or .png or .js). The\n" +"plugin uses the lightweight MIME::Types module to map file extensions to\n" +"IANA-registered MIME types, and will serve your static files with the correct\n" +"MIME type directly to the browser, without being processed through Catalyst." +msgstr "" + +#: gnu/packages/web.scm:1346 +msgid "The Catalyst Framework Runtime" +msgstr "" + +#: gnu/packages/web.scm:1347 +msgid "" +"Catalyst is a modern framework for making web applications.\n" +"It is designed to make it easy to manage the various tasks you need to do to\n" +"run an application on the web, either by doing them itself, or by letting you\n" +"\"plug in\" existing Perl modules that do what you need." +msgstr "" + +#: gnu/packages/web.scm:1377 +msgid "Replace request base with value passed by HTTP proxy" +msgstr "" + +#: gnu/packages/web.scm:1378 +msgid "" +"This module is a Moose::Role which allows you more\n" +"flexibility in your application's deployment configurations when deployed\n" +"behind a proxy. Using this module, the request base ($c->req->base) is\n" +"replaced with the contents of the X-Request-Base header." +msgstr "" + +#: gnu/packages/web.scm:1404 +msgid "Download data in many formats" +msgstr "" + +#: gnu/packages/web.scm:1405 +msgid "" +"The purpose of this module is to provide a method for\n" +"downloading data into many supportable formats. For example, downloading a\n" +"table based report in a variety of formats (CSV, HTML, etc.)." +msgstr "" + +#: gnu/packages/web.scm:1430 +msgid "Catalyst JSON view" +msgstr "" + +#: gnu/packages/web.scm:1431 +msgid "" +"Catalyst::View::JSON is a Catalyst View handler that returns\n" +"stash data in JSON format." +msgstr "" + +#: gnu/packages/web.scm:1456 +msgid "Template View Class" +msgstr "" + +#: gnu/packages/web.scm:1457 +msgid "" +"This module is a Catalyst view class for the Template\n" +"Toolkit." +msgstr "" + +#: gnu/packages/web.scm:1486 +msgid "Trait Loading and Resolution for Catalyst Components" +msgstr "" + +#: gnu/packages/web.scm:1487 +msgid "" +"Adds a \"COMPONENT\" in Catalyst::Component method to your\n" +"Catalyst component base class that reads the optional \"traits\" parameter\n" +"from app and component config and instantiates the component subclass with\n" +"those traits using \"new_with_traits\" in MooseX::Traits from\n" +"MooseX::Traits::Pluggable." +msgstr "" + +#: gnu/packages/web.scm:1512 +msgid "Apply roles to Catalyst classes" +msgstr "" + +#: gnu/packages/web.scm:1513 +msgid "" +"CatalystX::RoleApplicator applies roles to Catalyst\n" +"application classes." +msgstr "" + +#: gnu/packages/web.scm:1539 +msgid "Catalyst development server with Starman" +msgstr "" + +#: gnu/packages/web.scm:1540 +msgid "" +"This module provides a Catalyst extension to replace the\n" +"development server with Starman." +msgstr "" + +#: gnu/packages/web.scm:1560 +msgid "CGI interface that is CGI.pm compliant" +msgstr "" + +#: gnu/packages/web.scm:1561 +msgid "" +"CGI::Simple provides a relatively lightweight drop in\n" +"replacement for CGI.pm. It shares an identical OO interface to CGI.pm for\n" +"parameter parsing, file upload, cookie handling and header generation." +msgstr "" + +#: gnu/packages/web.scm:1582 +msgid "Build structures from CGI data" +msgstr "" + +#: gnu/packages/web.scm:1583 +msgid "" +"This is a module for building structured data from CGI\n" +"inputs, in a manner reminiscent of how PHP does." +msgstr "" + +#: gnu/packages/web.scm:1604 +msgid "Date conversion routines" +msgstr "" + +#: gnu/packages/web.scm:1605 +msgid "" +"This module provides functions that deal with the date\n" +"formats used by the HTTP protocol." +msgstr "" + +#: gnu/packages/web.scm:1625 +msgid "MD5 sums for files and urls" +msgstr "" + +#: gnu/packages/web.scm:1626 +msgid "" +"Digest::MD5::File is a Perl extension for getting MD5 sums\n" +"for files and urls." +msgstr "" + +#: gnu/packages/web.scm:1644 +msgid "Perl locale encoding determination" +msgstr "" + +#: gnu/packages/web.scm:1646 +msgid "" +"The POSIX locale system is used to specify both the language\n" +"conventions requested by the user and the preferred character set to\n" +"consume and output. The Encode::Locale module looks up the charset and\n" +"encoding (called a CODESET in the locale jargon) and arranges for the\n" +"Encode module to know this encoding under the name \"locale\". It means\n" +"bytes obtained from the environment can be converted to Unicode strings\n" +"by calling Encode::encode(locale => $bytes) and converted back again\n" +"with Encode::decode(locale => $string)." +msgstr "" + +#: gnu/packages/web.scm:1672 +msgid "Perl directory listing parser" +msgstr "" + +#: gnu/packages/web.scm:1674 +msgid "" +"The File::Listing module exports a single function called parse_dir(),\n" +"which can be used to parse directory listings." +msgstr "" + +#: gnu/packages/web.scm:1705 +msgid "Stock and mutual fund quotes" +msgstr "" + +#: gnu/packages/web.scm:1707 +msgid "" +"Finance::Quote gets stock quotes from various internet sources, including\n" +"Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange." +msgstr "" + +#: gnu/packages/web.scm:1729 +msgid "Perl extension providing access to the GSSAPIv2 library" +msgstr "" + +#: gnu/packages/web.scm:1730 +msgid "" +"This is a Perl extension for using GSSAPI C bindings as\n" +"described in RFC 2744." +msgstr "" + +#: gnu/packages/web.scm:1750 +msgid "Manipulate tables of HTML::Element" +msgstr "" + +#: gnu/packages/web.scm:1752 +msgid "" +"HTML::Element::Extended is a Perl extension for manipulating a table\n" +"composed of HTML::Element style components." +msgstr "" + +#: gnu/packages/web.scm:1776 +msgid "Perl class representing an HTML form element" +msgstr "" + +#: gnu/packages/web.scm:1777 +msgid "" +"Objects of the HTML::Form class represents a single HTML\n" +"
...
instance." +msgstr "" + +#: gnu/packages/web.scm:1799 +msgid "Check for HTML errors in a string or file" +msgstr "" + +#: gnu/packages/web.scm:1800 +msgid "" +"HTML::Lint is a pure-Perl HTML parser and checker for\n" +"syntactic legitmacy." +msgstr "" + +#: gnu/packages/web.scm:1821 +msgid "Extract contents from HTML tables" +msgstr "" + +#: gnu/packages/web.scm:1823 +msgid "" +"HTML::TableExtract is a Perl module for extracting the content contained\n" +"in tables within an HTML document, either as text or encoded element trees." +msgstr "" + +#: gnu/packages/web.scm:1847 +msgid "Work with HTML in a DOM-like tree structure" +msgstr "" + +#: gnu/packages/web.scm:1848 +msgid "" +"This distribution contains a suite of modules for\n" +"representing, creating, and extracting information from HTML syntax trees." +msgstr "" + +#: gnu/packages/web.scm:1868 +msgid "Perl HTML parser class" +msgstr "" + +#: gnu/packages/web.scm:1870 +msgid "" +"Objects of the HTML::Parser class will recognize markup and separate\n" +"it from plain text (alias data content) in HTML documents. As different\n" +"kinds of markup and text are recognized, the corresponding event handlers\n" +"are invoked." +msgstr "" + +#: gnu/packages/web.scm:1890 +msgid "Perl data tables useful in parsing HTML" +msgstr "" + +#: gnu/packages/web.scm:1892 +msgid "" +"The HTML::Tagset module contains several data tables useful in various\n" +"kinds of HTML parsing operations." +msgstr "" + +#: gnu/packages/web.scm:1915 +msgid "HTTP Body Parser" +msgstr "" + +#: gnu/packages/web.scm:1916 +msgid "" +"HTTP::Body parses chunks of HTTP POST data and supports\n" +"application/octet-stream, application/json, application/x-www-form-urlencoded,\n" +"and multipart/form-data." +msgstr "" + +#: gnu/packages/web.scm:1942 +msgid "Minimalist HTTP user agent cookie jar" +msgstr "" + +#: gnu/packages/web.scm:1943 +msgid "" +"This module implements a minimalist HTTP user agent cookie\n" +"jar in conformance with RFC 6265 ." +msgstr "" + +#: gnu/packages/web.scm:1963 +msgid "Perl HTTP cookie jars" +msgstr "" + +#: gnu/packages/web.scm:1965 +msgid "" +"The HTTP::Cookies class is for objects that represent a cookie jar,\n" +"that is, a database of all the HTTP cookies that a given LWP::UserAgent\n" +"object knows about." +msgstr "" + +#: gnu/packages/web.scm:1987 +msgid "Perl simple http server class" +msgstr "" + +#: gnu/packages/web.scm:1989 +msgid "" +"Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen\n" +"on a socket for incoming requests. The HTTP::Daemon is a subclass of\n" +"IO::Socket::INET, so you can perform socket operations directly on it too." +msgstr "" + +#: gnu/packages/web.scm:2008 +msgid "Perl date conversion routines" +msgstr "" + +#: gnu/packages/web.scm:2010 +msgid "" +"The HTTP::Date module provides functions that deal with date formats\n" +"used by the HTTP protocol (and then some more)." +msgstr "" + +#: gnu/packages/web.scm:2033 +msgid "Perl HTTP style message" +msgstr "" + +#: gnu/packages/web.scm:2035 +msgid "An HTTP::Message object contains some headers and a content body." +msgstr "" + +#: gnu/packages/web.scm:2054 +msgid "Perl http content negotiation" +msgstr "" + +#: gnu/packages/web.scm:2056 +msgid "" +"The HTTP::Negotiate module provides a complete implementation of the\n" +"HTTP content negotiation algorithm specified in\n" +"draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for\n" +"the selection of a preferred content representation based upon attributes\n" +"of the negotiable variants and the value of the various Accept* header\n" +"fields in the request." +msgstr "" + +#: gnu/packages/web.scm:2081 +msgid "Parse HTTP/1.1 requests" +msgstr "" + +#: gnu/packages/web.scm:2082 +msgid "" +"This is an HTTP request parser. It takes chunks of text as\n" +"received and returns a 'hint' as to what is required, or returns the\n" +"HTTP::Request when a complete request has been read. HTTP/1.1 chunking is\n" +"supported." +msgstr "" + +#: gnu/packages/web.scm:2102 +msgid "Fast HTTP request parser" +msgstr "" + +#: gnu/packages/web.scm:2103 +msgid "" +"HTTP::Parser::XS is a fast, primitive HTTP request/response\n" +"parser." +msgstr "" + +#: gnu/packages/web.scm:2124 +msgid "Set up a CGI environment from an HTTP::Request" +msgstr "" + +#: gnu/packages/web.scm:2125 +msgid "" +"This module provides a convenient way to set up a CGI\n" +"environment from an HTTP::Request." +msgstr "" + +#: gnu/packages/web.scm:2147 +msgid "Lightweight HTTP server" +msgstr "" + +#: gnu/packages/web.scm:2148 +msgid "" +"HTTP::Server::Simple is a simple standalone HTTP daemon with\n" +"no non-core module dependencies. It can be used for building a standalone\n" +"http-based UI to your existing tools." +msgstr "" + +#: gnu/packages/web.scm:2172 +msgid "HTTP/1.1 client" +msgstr "" + +#: gnu/packages/web.scm:2173 +msgid "" +"This is a very simple HTTP/1.1 client, designed for doing\n" +"simple requests without the overhead of a large framework like LWP::UserAgent.\n" +"It supports proxies and redirection. It also correctly resumes after EINTR." +msgstr "" + +#: gnu/packages/web.scm:2192 +msgid "Perl module to open an HTML file with automatic charset detection" +msgstr "" + +#: gnu/packages/web.scm:2194 +msgid "" +"IO::HTML provides an easy way to open a file containing HTML while\n" +"automatically determining its encoding. It uses the HTML5 encoding sniffing\n" +"algorithm specified in section 8.2.2.1 of the draft standard." +msgstr "" + +#: gnu/packages/web.scm:2213 +msgid "Family-neutral IP socket supporting both IPv4 and IPv6" +msgstr "" + +#: gnu/packages/web.scm:2214 +msgid "" +"This module provides a protocol-independent way to use IPv4\n" +"and IPv6 sockets, intended as a replacement for IO::Socket::INET." +msgstr "" + +#: gnu/packages/web.scm:2231 +msgid "Nearly transparent SSL encapsulation for IO::Socket::INET" +msgstr "" + +#: gnu/packages/web.scm:2233 +msgid "" +"IO::Socket::SSL makes using SSL/TLS much easier by wrapping the\n" +"necessary functionality into the familiar IO::Socket interface and providing\n" +"secure defaults whenever possible. This way existing applications can be made\n" +"SSL-aware without much effort, at least if you do blocking I/O and don't use\n" +"select or poll." +msgstr "" + +#: gnu/packages/web.scm:2264 +msgid "Perl modules for the WWW" +msgstr "" + +#: gnu/packages/web.scm:2266 +msgid "" +"The libwww-perl collection is a set of Perl modules which provides a\n" +"simple and consistent application programming interface to the\n" +"World-Wide Web. The main focus of the library is to provide classes\n" +"and functions that allow you to write WWW clients. The library also\n" +"contains modules that are of more general use and even classes that\n" +"help you implement simple HTTP servers." +msgstr "" + +#: gnu/packages/web.scm:2288 +msgid "Perl module to guess the media type for a file or a URL" +msgstr "" + +#: gnu/packages/web.scm:2290 +#, scheme-format +msgid "" +"The LWP::MediaTypes module provides functions for handling media (also\n" +"known as MIME) types and encodings. The mapping from file extensions to\n" +"media types is defined by the media.types file. If the ~/.media.types file\n" +"exists it is used instead." +msgstr "" + +#: gnu/packages/web.scm:2316 +msgid "HTTPS support for LWP::UserAgent" +msgstr "" + +#: gnu/packages/web.scm:2317 +msgid "" +"The LWP::Protocol::https module provides support for using\n" +"https schemed URLs with LWP." +msgstr "" + +#: gnu/packages/web.scm:2337 +msgid "Virtual browser that retries errors" +msgstr "" + +#: gnu/packages/web.scm:2338 +msgid "" +"LWP::UserAgent::Determined works just like LWP::UserAgent,\n" +"except that when you use it to get a web page but run into a\n" +"possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds\n" +"and retry a few times." +msgstr "" + +#: gnu/packages/web.scm:2383 +msgid "Perl interface to Amazon S3" +msgstr "" + +#: gnu/packages/web.scm:2384 +msgid "This module provides a Perlish interface to Amazon S3." +msgstr "" + +#: gnu/packages/web.scm:2404 +msgid "Perl low-level HTTP connection (client)" +msgstr "" + +#: gnu/packages/web.scm:2406 +msgid "" +"The Net::HTTP class is a low-level HTTP client. An instance of the\n" +"Net::HTTP class represents a connection to an HTTP server. The HTTP protocol\n" +"is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and\n" +"HTTP/1.1." +msgstr "" + +#: gnu/packages/web.scm:2426 +msgid "Extensible Perl server engine" +msgstr "" + +#: gnu/packages/web.scm:2427 +msgid "" +"Net::Server is an extensible, generic Perl server engine.\n" +"It attempts to be a generic server as in Net::Daemon and NetServer::Generic.\n" +"It includes with it the ability to run as an inetd\n" +"process (Net::Server::INET), a single connection server (Net::Server or\n" +"Net::Server::Single), a forking server (Net::Server::Fork), a preforking\n" +"server which maintains a constant number of preforked\n" +"children (Net::Server::PreForkSimple), or as a managed preforking server which\n" +"maintains the number of children based on server load (Net::Server::PreFork).\n" +"In all but the inetd type, the server provides the ability to connect to one\n" +"or to multiple server ports." +msgstr "" + +#: gnu/packages/web.scm:2455 +msgid "SSL support for Net::SMTP" +msgstr "" + +#: gnu/packages/web.scm:2456 +msgid "SSL support for Net::SMTP." +msgstr "" + +#: gnu/packages/web.scm:2490 +msgid "Perl Superglue for Web frameworks and servers (PSGI toolkit)" +msgstr "" + +#: gnu/packages/web.scm:2491 +msgid "" +"Plack is a set of tools for using the PSGI stack. It\n" +"contains middleware components, a reference server, and utilities for Web\n" +"application frameworks. Plack is like Ruby's Rack or Python's Paste for\n" +"WSGI." +msgstr "" + +#: gnu/packages/web.scm:2517 +msgid "Plack::Middleware which sets body for redirect response" +msgstr "" + +#: gnu/packages/web.scm:2518 +msgid "" +"This module sets the body in redirect response, if it's not\n" +"already set." +msgstr "" + +#: gnu/packages/web.scm:2539 +msgid "Override REST methods to Plack apps via POST" +msgstr "" + +#: gnu/packages/web.scm:2540 +msgid "" +"This middleware allows for POST requests that pretend to be\n" +"something else: by adding either a header named X-HTTP-Method-Override to the\n" +"request, or a query parameter named x-tunneled-method to the URI, the client\n" +"can say what method it actually meant." +msgstr "" + +#: gnu/packages/web.scm:2564 +msgid "Plack::Middleware which removes body for HTTP response" +msgstr "" + +#: gnu/packages/web.scm:2565 +msgid "" +"This module removes the body in an HTTP response if it's not\n" +"required." +msgstr "" + +#: gnu/packages/web.scm:2586 +msgid "Supports app to run as a reverse proxy backend" +msgstr "" + +#: gnu/packages/web.scm:2587 +msgid "" +"Plack::Middleware::ReverseProxy resets some HTTP headers,\n" +"which are changed by reverse-proxy. You can specify the reverse proxy address\n" +"and stop fake requests using 'enable_if' directive in your app.psgi." +msgstr "" + +#: gnu/packages/web.scm:2608 +msgid "Run HTTP tests on external live servers" +msgstr "" + +#: gnu/packages/web.scm:2609 +msgid "" +"This module allows your to run your Plack::Test tests\n" +"against an external server instead of just against a local application through\n" +"either mocked HTTP or a locally spawned server." +msgstr "" + +#: gnu/packages/web.scm:2631 +msgid "Testing TCP programs" +msgstr "" + +#: gnu/packages/web.scm:2632 +msgid "Test::TCP is test utilities for TCP/IP programs." +msgstr "" + +#: gnu/packages/web.scm:2660 +msgid "Testing-specific WWW::Mechanize subclass" +msgstr "" + +#: gnu/packages/web.scm:2661 +msgid "" +"Test::WWW::Mechanize is a subclass of the Perl module\n" +"WWW::Mechanize that incorporates features for web application testing." +msgstr "" + +#: gnu/packages/web.scm:2694 +msgid "Test::WWW::Mechanize for Catalyst" +msgstr "" + +#: gnu/packages/web.scm:2695 +msgid "" +"The Test::WWW::Mechanize::Catalyst module meshes the\n" +"Test::WWW:Mechanize module and the Catalyst web application framework to allow\n" +"testing of Catalyst applications without needing to start up a web server." +msgstr "" + +#: gnu/packages/web.scm:2719 +msgid "Test PSGI programs using WWW::Mechanize" +msgstr "" + +#: gnu/packages/web.scm:2720 +msgid "" +"PSGI is a specification to decouple web server environments\n" +"from web application framework code. Test::WWW::Mechanize is a subclass of\n" +"WWW::Mechanize that incorporates features for web application testing. The\n" +"Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI\n" +"applications." +msgstr "" + +#: gnu/packages/web.scm:2740 +msgid "Perl Uniform Resource Identifiers (absolute and relative)" +msgstr "" + +#: gnu/packages/web.scm:2742 +msgid "" +"The URI module implements the URI class. Objects of this class\n" +"represent \"Uniform Resource Identifier references\" as specified in RFC 2396\n" +"and updated by RFC 2732." +msgstr "" + +#: gnu/packages/web.scm:2763 +msgid "Find URIs in arbitrary text" +msgstr "" + +#: gnu/packages/web.scm:2764 +msgid "" +"This module finds URIs and URLs (according to what URI.pm\n" +"considers a URI) in plain text. It only finds URIs which include a\n" +"scheme (http:// or the like), for something a bit less strict, consider\n" +"URI::Find::Schemeless. For a command-line interface, urifind is provided." +msgstr "" + +#: gnu/packages/web.scm:2786 +msgid "WebSocket support for URI package" +msgstr "" + +#: gnu/packages/web.scm:2787 +msgid "" +"With this module, the URI package provides the same set of\n" +"methods for WebSocket URIs as it does for HTTP URIs." +msgstr "" + +#: gnu/packages/web.scm:2807 +msgid "Perl extension interface for libcurl" +msgstr "" + +#: gnu/packages/web.scm:2809 +msgid "" +"This is a Perl extension interface for the libcurl file downloading\n" +"library." +msgstr "" + +#: gnu/packages/web.scm:2836 +msgid "Web browsing in a Perl object" +msgstr "" + +#: gnu/packages/web.scm:2837 +msgid "" +"WWW::Mechanize is a Perl module for stateful programmatic\n" +"web browsing, used for automating interaction with websites." +msgstr "" + +#: gnu/packages/web.scm:2857 +msgid "Perl database of robots.txt-derived permissions" +msgstr "" + +#: gnu/packages/web.scm:2859 +msgid "" +"The WWW::RobotRules module parses /robots.txt files as specified in\n" +"\"A Standard for Robot Exclusion\", at\n" +". Webmasters can use the\n" +"/robots.txt file to forbid conforming robots from accessing parts of\n" +"their web site." +msgstr "" + +#: gnu/packages/web.scm:2879 +msgid "HTTP and WebSocket server library for R" +msgstr "" + +#: gnu/packages/web.scm:2881 +msgid "" +"The httpuv package provides low-level socket and protocol support for\n" +"handling HTTP and WebSocket requests directly from within R. It is primarily\n" +"intended as a building block for other packages, rather than making it\n" +"particularly easy to create complete web applications using httpuv alone." +msgstr "" + +#: gnu/packages/web.scm:2902 +msgid "Robust, high performance JSON parser and generator for R" +msgstr "" + +#: gnu/packages/web.scm:2904 +msgid "" +"The jsonlite package provides a fast JSON parser and generator optimized\n" +"for statistical data and the web. It offers flexible, robust, high\n" +"performance tools for working with JSON in R and is particularly powerful for\n" +"building pipelines and interacting with a web API. In addition to converting\n" +"JSON data from/to R objects, jsonlite contains functions to stream, validate,\n" +"and prettify JSON data. The unit tests included with the package verify that\n" +"all edge cases are encoded and decoded consistently for use with dynamic data\n" +"in systems and applications." +msgstr "" + +#: gnu/packages/web.scm:2932 +msgid "Simple HTTP server to serve static files or dynamic documents" +msgstr "" + +#: gnu/packages/web.scm:2934 +msgid "" +"Servr provides an HTTP server in R to serve static files, or dynamic\n" +"documents that can be converted to HTML files (e.g., R Markdown) under a given\n" +"directory." +msgstr "" + +#: gnu/packages/web.scm:2953 +msgid "R tools for HTML" +msgstr "" + +#: gnu/packages/web.scm:2955 +msgid "This package provides tools for HTML generation and output in R." +msgstr "" + +#: gnu/packages/web.scm:2974 +msgid "HTML Widgets for R" +msgstr "" + +#: gnu/packages/web.scm:2976 +msgid "" +"HTML widgets is a framework for creating HTML widgets that render in\n" +"various contexts including the R console, R Markdown documents, and Shiny web\n" +"applications." +msgstr "" + +#: gnu/packages/weechat.scm:92 +msgid "Extensible chat client" +msgstr "" + +#: gnu/packages/weechat.scm:93 +msgid "" +"WeeChat (Wee Enhanced Environment for Chat) is an\n" +"Internet Relay Chat client, which is designed to be light and fast.\n" +"The client uses a curses frontend, and there are remote interfaces\n" +"for Web, Qt, Android and Emacs. In WeeChat everything can be done\n" +"with a keyboard, though it also supports mouse. It is customizable\n" +"and extensible with plugins and scripts." +msgstr "" + +#: gnu/packages/wordnet.scm:79 +msgid "Lexical database for the English language" +msgstr "" + +#: gnu/packages/wordnet.scm:81 +msgid "" +"WordNet® is a large lexical database of English. Nouns, verbs,\n" +"adjectives and adverbs are grouped into sets of cognitive synonyms (synsets),\n" +"each expressing a distinct concept. Synsets are interlinked by means of\n" +"conceptual-semantic and lexical relations. The resulting network of\n" +"meaningfully related words and concepts can be navigated with the browser.\n" +"WordNet is also freely and publicly available for download. WordNet's\n" +"structure makes it a useful tool for computational linguistics and natural\n" +"language processing." +msgstr "" + +#: gnu/packages/xiph.scm:65 +msgid "Library for manipulating the ogg multimedia format" +msgstr "" + +#: gnu/packages/xiph.scm:67 +msgid "" +"The libogg library allows to manipulate the ogg multimedia container\n" +"format, which encapsulates raw compressed data and allows the interleaving of\n" +"audio and video data. In addition to encapsulation and interleaving of\n" +"multiple data streams, ogg provides packet framing, error detection, and\n" +"periodic timestamps for seeking." +msgstr "" + +#: gnu/packages/xiph.scm:91 +msgid "Library implementing the vorbis audio format" +msgstr "" + +#: gnu/packages/xiph.scm:93 +msgid "" +"The libvorbis library implements the ogg vorbis audio format,\n" +"a fully open, non-proprietary, patent-and-royalty-free, general-purpose\n" +"compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit,\n" +"polyphonic) audio and music at fixed and variable bitrates from 16 to\n" +"128 kbps/channel." +msgstr "" + +#: gnu/packages/xiph.scm:118 +msgid "Library implementing the Theora video format" +msgstr "" + +#: gnu/packages/xiph.scm:120 +msgid "" +"The libtheora library implements the ogg theora video format,\n" +"a fully open, non-proprietary, patent-and-royalty-free, general-purpose\n" +"compressed video format." +msgstr "" + +#: gnu/packages/xiph.scm:141 +msgid "Library for patent-free audio compression format" +msgstr "" + +#: gnu/packages/xiph.scm:143 +msgid "" +"GNU Speex is a patent-free audio compression codec specially designed\n" +"for speech. It is well-adapted to internet applications, such as VoIP. It\n" +"features compression of different bands in the same bitstream, intensity\n" +"stereo encoding, and voice activity detection." +msgstr "" + +#: gnu/packages/xiph.scm:171 +msgid "Cross platform audio library" +msgstr "" + +#: gnu/packages/xiph.scm:173 +msgid "" +"Libao is a cross-platform audio library that allows programs to\n" +"output audio using a simple API on a wide variety of platforms.\n" +"It currently supports:\n" +"Null output (handy for testing without a sound device),\n" +"WAV files,\n" +"AU files,\n" +"RAW files,\n" +"OSS (Open Sound System, used on Linux and FreeBSD),\n" +"ALSA (Advanced Linux Sound Architecture),\n" +"aRts (Analog RealTime Synth, used by KDE),\n" +"PulseAudio (next generation GNOME sound server),\n" +"esd (EsounD or Enlightened Sound Daemon),\n" +"Mac OS X,\n" +"Windows (98 and later),\n" +"AIX,\n" +"Sun/NetBSD/OpenBSD,\n" +"IRIX,\n" +"NAS (Network Audio Server),\n" +"RoarAudio (Modern, multi-OS, networked Sound System),\n" +"OpenBSD's sndio." +msgstr "" + +#: gnu/packages/xiph.scm:212 +msgid "Free lossless audio codec" +msgstr "" + +#: gnu/packages/xiph.scm:214 +msgid "" +"FLAC stands for Free Lossless Audio Codec, an audio format that is lossless,\n" +"meaning that audio is compressed in FLAC without any loss in quality." +msgstr "" + +#: gnu/packages/xiph.scm:240 +msgid "Karaoke and text codec for embedding in ogg" +msgstr "" + +#: gnu/packages/xiph.scm:242 +msgid "" +"Kate is an overlay codec, originally designed for karaoke and text,\n" +"that can be multiplixed in Ogg. Text and images can be carried by a Kate\n" +"stream, and animated. Most of the time, this would be multiplexed with\n" +"audio/video to carry subtitles, song lyrics (with or without karaoke data),\n" +"etc., but doesn't have to be.\n" +"\n" +"Series of curves (splines, segments, etc.) may be attached to various\n" +"properties (text position, font size, etc.) to create animated overlays.\n" +"This allows scrolling or fading text to be defined. This can even be used\n" +"to draw arbitrary shapes, so hand drawing can also be represented by a\n" +"Kate stream." +msgstr "" + +#: gnu/packages/xiph.scm:276 +msgid "Ogg vorbis tools" +msgstr "" + +#: gnu/packages/xiph.scm:278 +msgid "" +"Ogg vorbis is a non-proprietary, patent-and-royalty-free,\n" +"general-purpose compressed audio format.\n" +"\n" +"The package vorbis-tools contains\n" +"ogg123, an ogg vorbis command line audio player;\n" +"oggenc, the ogg vorbis encoder;\n" +"oggdec, a simple, portable command line decoder (to wav and raw);\n" +"ogginfo, to obtain information (tags, bitrate, length, etc.) about\n" +" an ogg vorbis file." +msgstr "" + +#: gnu/packages/xiph.scm:303 gnu/packages/xiph.scm:366 +msgid "Versatile audio codec" +msgstr "" + +#: gnu/packages/xiph.scm:305 +msgid "" +"Opus is a totally open, royalty-free, highly versatile audio codec. Opus\n" +"is unmatched for interactive speech and music transmission over the Internet,\n" +"but is also intended for storage and streaming applications. It is\n" +"standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which\n" +"incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec." +msgstr "" + +#: gnu/packages/xiph.scm:339 +msgid "Command line utilities to encode, inspect, and decode .opus files" +msgstr "" + +#: gnu/packages/xiph.scm:340 +msgid "" +"Opus is a royalty-free, highly versatile audio codec.\n" +"Opus-tools provide command line utilities for creating, inspecting and\n" +"decoding .opus files." +msgstr "" + +#: gnu/packages/xiph.scm:368 +msgid "" +"The opusfile library provides seeking, decode, and playback of Opus\n" +"streams in the Ogg container (.opus files) including over http(s) on posix and\n" +"windows systems." +msgstr "" + +#: gnu/packages/xiph.scm:398 +msgid "Streaming media server" +msgstr "" + +#: gnu/packages/xiph.scm:399 +msgid "" +"Icecast is a streaming media server which currently supports\n" +"Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams. It can be used to\n" +"create an Internet radio station or a privately running jukebox and many\n" +"things in between." +msgstr "" + +#: gnu/packages/xiph.scm:427 +msgid "Audio streaming library for icecast encoders" +msgstr "" + +#: gnu/packages/xiph.scm:429 +msgid "" +"Libshout is a library for communicating with and sending data to an\n" +"icecast server. It handles the socket connection, the timing of the data,\n" +"and prevents bad data from getting to the icecast server." +msgstr "" + +#: gnu/packages/zip.scm:57 +msgid "Compression and file packing utility" +msgstr "" + +#: gnu/packages/zip.scm:59 +msgid "" +"Zip is a compression and file packaging/archive utility. Zip is useful\n" +"for packaging a set of files for distribution, for archiving files, and for\n" +"saving disk space by temporarily compressing unused files or directories.\n" +"Zip puts one or more compressed files into a single ZIP archive, along with\n" +"information about the files (name, path, date, time of last modification,\n" +"protection, and check information to verify file integrity). An entire\n" +"directory structure can be packed into a ZIP archive with a single command.\n" +"\n" +"Zip has one compression method (deflation) and can also store files without\n" +"compression. Zip automatically chooses the better of the two for each file.\n" +"Compression ratios of 2:1 to 3:1 are common for text files." +msgstr "" + +#: gnu/packages/zip.scm:111 +msgid "Decompression and file extraction utility" +msgstr "" + +#: gnu/packages/zip.scm:113 +msgid "" +"UnZip is an extraction utility for archives compressed in .zip format,\n" +"also called \"zipfiles\".\n" +"\n" +"UnZip lists, tests, or extracts files from a .zip archive. The default\n" +"behaviour (with no options) is to extract into the current directory, and\n" +"subdirectories below it, all files from the specified zipfile. UnZip\n" +"recreates the stored directory structure by default." +msgstr "" + +#: gnu/packages/zip.scm:147 +msgid "Library for accessing zip files" +msgstr "" + +#: gnu/packages/zip.scm:149 +msgid "ZZipLib is a library based on zlib for accessing zip files." +msgstr "" + +#: gnu/packages/zip.scm:167 +msgid "Provides an interface to ZIP archive files" +msgstr "" + +#: gnu/packages/zsh.scm:65 +msgid "Powerful shell for interactive use and scripting" +msgstr "" + +#: gnu/packages/zsh.scm:66 +msgid "" +"The Z shell (zsh) is a Unix shell that can be used\n" +"as an interactive login shell and as a powerful command interpreter\n" +"for shell scripting. Zsh can be thought of as an extended Bourne shell\n" +"with a large number of improvements, including some features of bash,\n" +"ksh, and tcsh." +msgstr "" diff --git a/tests/containers.scm b/tests/containers.scm index 0ba81491ba..12982a64f7 100644 --- a/tests/containers.scm +++ b/tests/containers.scm @@ -28,8 +28,9 @@ ;; Skip these tests unless user namespaces are available and the setgroups ;; file (introduced in Linux 3.19 to address a security issue) exists. -(unless (and (file-exists? "/proc/self/ns/user") - (file-exists? "/proc/self/setgroups")) +(unless (and (user-namespace-supported?) + (unprivileged-user-namespace-supported?) + (setgroups-supported?)) (exit 77)) (test-begin "containers") diff --git a/tests/cran.scm b/tests/cran.scm index ba5699a133..0a4a2fdd8f 100644 --- a/tests/cran.scm +++ b/tests/cran.scm @@ -19,120 +19,84 @@ (define-module (test-cran) #:use-module (guix import cran) #:use-module (guix tests) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-64) + #:use-module (srfi srfi-26) #:use-module (ice-9 match)) -(define sxml - '(*TOP* (xhtml:html - (xhtml:head - (xhtml:title "CRAN - Package my-example-sxml")) - (xhtml:body - (xhtml:h2 "my-example-sxml: Short description") - (xhtml:p "Long description") - (xhtml:table - (@ (summary "Package my-example-sxml summary")) - (xhtml:tr - (xhtml:td "Version:") - (xhtml:td "1.2.3")) - (xhtml:tr - (xhtml:td "Depends:") - (xhtml:td "R (>= 3.1.0)")) - (xhtml:tr - (xhtml:td "SystemRequirements:") - (xhtml:td "cairo (>= 1.2 http://www.cairographics.org/)")) - (xhtml:tr - (xhtml:td "Imports:") - (xhtml:td - (xhtml:a (@ (href "../scales/index.html")) - "scales") - " (>= 0.2.3), " - (xhtml:a (@ (href "../proto/index.html")) - "proto") - ", " - (xhtml:a (@ (href "../Rcpp/index.html")) "Rcpp") - " (>= 0.11.0)")) - (xhtml:tr - (xhtml:td "Suggests:") - (xhtml:td - (xhtml:a (@ (href "../some/index.html")) - "some") - ", " - (xhtml:a (@ (href "../suggestions/index.html")) - "suggestions"))) - (xhtml:tr - (xhtml:td "License:") - (xhtml:td - (xhtml:a (@ (href "../../licenses/MIT")) "MIT"))) - (xhtml:tr - (xhtml:td "URL:") - (xhtml:td - (xhtml:a (@ (href "http://gnu.org/s/my-example-sxml")) - "http://gnu.org/s/my-example-sxml") - ", " - (xhtml:a (@ (href "http://alternative/home/page")) - "http://alternative/home/page")))) - (xhtml:h4 "Downloads:") - (xhtml:table - (@ (summary "Package my-example-sxml downloads")) - (xhtml:tr - (xhtml:td " Reference manual: ") - (xhtml:td - (xhtml:a (@ (href "my-example-sxml.pdf")) - " my-example-sxml.pdf "))) - (xhtml:tr - (xhtml:td " Package source: ") - (xhtml:td - (xhtml:a - (@ (href "../../../src/contrib/my-example-sxml_1.2.3.tar.gz")) - " my-example-sxml_1.2.3.tar.gz ")))) - (xhtml:h4 "Reverse dependencies:") - (xhtml:table - (@ (summary "Package my-example-sxml reverse dependencies")) - (xhtml:tr - (xhtml:td "Reverse depends:") - (xhtml:td "Too many.")) - (xhtml:tr - (xhtml:td "Reverse imports:") - (xhtml:td "Likewise.")) - (xhtml:tr - (xhtml:td "Reverse suggests:") - (xhtml:td "Uncountable."))))))) +(define description " +Package: My-Example +Type: Package +Title: Example package +Version: 1.2.3 +Date: 2015-12-10 +Author: Ricardo Wurmus +Maintainer: Guix Schmeeks +URL: http://gnu.org/s/my-example +Description: This is a long description +spanning multiple lines: and it could confuse the parser that +there is a colon : on the lines. + And: this line continues the description. +biocViews: 0 +SystemRequirements: Cairo (>= 0) +Depends: A C++11 compiler. Version 4.6.* of g++ (as + currently in Rtools) is insufficient; versions 4.8.*, 4.9.* or + later will be fine. +License: GPL (>= 3) +Imports: Rcpp (>= 0.11.5), proto, Scales +LinkingTo: Rcpp, BH +NeedsCompilation: yes +Repository: CRAN +Date/Publication: 2015-07-14 14:15:16 +") -(define simple-table - '(xhtml:table - (xhtml:tr - (xhtml:td "Numbers") - (xhtml:td "123")) - (xhtml:tr - (@ (class "whatever")) - (xhtml:td (@ (class "unimportant")) "Letters") - (xhtml:td "abc")) - (xhtml:tr - (xhtml:td "Letters") - (xhtml:td "xyz")) - (xhtml:tr - (xhtml:td "Single")) - (xhtml:tr - (xhtml:td "not a value") - (xhtml:td "not a label") - (xhtml:td "also not a label")))) +(define description-alist + ((@@ (guix import cran) description->alist) description)) + +(define simple-alist + '(("Key" . "Value") + ("SimpleList" . "R, Rcpp, something, whatever") + ("BadList" . "This is not a real list, you know?") + ("List" . "R (>= 2.2), BH (for no reason), GenomicRanges"))) (test-begin "cran") -(test-equal "table-datum: return list of first table cell matching label" - '((xhtml:td "abc")) - ((@@ (guix import cran) table-datum) simple-table "Letters")) +(test-assert "description->alist: contains all valid keys" + (let ((keys '("Package" "Type" "Title" "Version" "Date" + "Author" "Maintainer" "URL" "Description" + "SystemRequirements" "Depends" "License" + "Imports" "biocViews" "LinkingTo" + "NeedsCompilation" "Repository" + "Date/Publication"))) + (lset= string=? keys (map car description-alist)))) -(test-equal "table-datum: return empty list if no match" +(test-equal "listify: return empty list if key cannot be found" '() - ((@@ (guix import cran) table-datum) simple-table "Astronauts")) + ((@@ (guix import cran) listify) simple-alist "Letters")) -(test-equal "table-datum: only consider the first cell as a label cell" +(test-equal "listify: split comma-separated value into elements" + '("R" "Rcpp" "something" "whatever") + ((@@ (guix import cran) listify) simple-alist "SimpleList")) + +(test-equal "listify: strip off parentheses" + '("R" "BH" "GenomicRanges") + ((@@ (guix import cran) listify) simple-alist "List")) + +(test-equal "listify: ignore values that are no lists" '() - ((@@ (guix import cran) table-datum) simple-table "not a label")) + ((@@ (guix import cran) listify) simple-alist "BadList")) +(test-equal "beautify-description: use double spacing" + "This is a package. It is great. Trust me Mr. Hendrix." + ((@@ (guix import cran) beautify-description) + "This is a package. It is great. Trust me Mr. Hendrix.")) -(test-assert "cran-sxml->sexp" +(test-equal "beautify-description: transform fragment into sentence" + "This package provides a function to establish world peace" + ((@@ (guix import cran) beautify-description) + "A function to establish world peace")) + +(test-assert "description->package" ;; Replace network resources with sample data. (mock ((guix build download) url-fetch (lambda* (url file-name #:key (mirrors '())) @@ -140,32 +104,37 @@ (lambda () (display (match url - ("mirror://cran/src/contrib/my-example-sxml_1.2.3.tar.gz" + ("mirror://cran/src/contrib/My-Example_1.2.3.tar.gz" "source") (_ (error "Unexpected URL: " url)))))))) - (match ((@@ (guix import cran) cran-sxml->sexp) sxml) + (match ((@@ (guix import cran) description->package) description-alist) (('package - ('name "r-my-example-sxml") + ('name "r-my-example") ('version "1.2.3") ('source ('origin ('method 'url-fetch) - ('uri ('cran-uri "my-example-sxml" 'version)) + ('uri ('cran-uri "My-Example" 'version)) ('sha256 ('base32 (? string? hash))))) + ('properties ('quasiquote (('upstream-name . "My-Example")))) ('build-system 'r-build-system) ('inputs ('quasiquote (("cairo" ('unquote 'cairo))))) ('propagated-inputs ('quasiquote - (("r-proto" ('unquote 'r-proto)) + (("r-bh" ('unquote 'r-bh)) + ("r-proto" ('unquote 'r-proto)) ("r-rcpp" ('unquote 'r-rcpp)) ("r-scales" ('unquote 'r-scales))))) - ('home-page "http://gnu.org/s/my-example-sxml") - ('synopsis "Short description") - ('description "Long description") - ('license 'x11))) + ('home-page "http://gnu.org/s/my-example") + ('synopsis "Example package") + ('description + "This is a long description spanning multiple lines: \ +and it could confuse the parser that there is a colon : on the \ +lines. And: this line continues the description.") + ('license 'gpl3+))) (x (begin (format #t "~s\n" x) diff --git a/tests/cve-sample.xml b/tests/cve-sample.xml new file mode 100644 index 0000000000..ce158490f1 --- /dev/null +++ b/tests/cve-sample.xml @@ -0,0 +1,616 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cpe:/o:microsoft:windows_2000::sp2:professional + cpe:/o:linux:linux_kernel:2.4.4 + cpe:/o:microsoft:windows_2000_terminal_services::sp1 + cpe:/o:microsoft:windows_2000::sp1:advanced_server + cpe:/o:linux:linux_kernel:2.4.19 + cpe:/o:microsoft:windows_2000::sp2:advanced_server + cpe:/o:microsoft:windows_2000_terminal_services + cpe:/o:microsoft:windows_2000:::advanced_server + cpe:/o:linux:linux_kernel:2.4.20 + cpe:/o:netbsd:netbsd:1.5.1 + cpe:/o:microsoft:windows_2000_terminal_services::sp2 + cpe:/o:netbsd:netbsd:1.5.3 + cpe:/o:netbsd:netbsd:1.5.2 + cpe:/o:linux:linux_kernel:2.4.6 + cpe:/o:linux:linux_kernel:2.4.9 + cpe:/o:microsoft:windows_2000:::datacenter_server + cpe:/o:netbsd:netbsd:1.6 + cpe:/o:netbsd:netbsd:1.5 + cpe:/o:linux:linux_kernel:2.4.7 + cpe:/o:linux:linux_kernel:2.4.8 + cpe:/o:microsoft:windows_2000::sp1:datacenter_server + cpe:/o:microsoft:windows_2000::sp2:datacenter_server + cpe:/o:freebsd:freebsd:4.3 + cpe:/o:linux:linux_kernel:2.4.10 + cpe:/o:microsoft:windows_2000::sp1:server + cpe:/o:freebsd:freebsd:4.5 + cpe:/o:linux:linux_kernel:2.4.12 + cpe:/o:freebsd:freebsd:4.2 + cpe:/o:freebsd:freebsd:4.7 + cpe:/o:freebsd:freebsd:4.4 + cpe:/o:freebsd:freebsd:4.6 + cpe:/o:microsoft:windows_2000::sp2:server + cpe:/o:linux:linux_kernel:2.4.18 + cpe:/o:linux:linux_kernel:2.4.1 + cpe:/o:linux:linux_kernel:2.4.15 + cpe:/o:microsoft:windows_2000:::server + cpe:/o:linux:linux_kernel:2.4.17 + cpe:/o:linux:linux_kernel:2.4.14 + cpe:/o:linux:linux_kernel:2.4.2 + cpe:/o:microsoft:windows_2000:::professional + cpe:/o:linux:linux_kernel:2.4.11 + cpe:/o:linux:linux_kernel:2.4.5 + cpe:/o:linux:linux_kernel:2.4.16 + cpe:/o:microsoft:windows_2000::sp1:professional + cpe:/o:linux:linux_kernel:2.4.13 + cpe:/o:linux:linux_kernel:2.4.3 + + CVE-2003-0001 + 2003-01-17T00:00:00.000-05:00 + 2015-11-24T13:05:47.073-05:00 + + + 5.0 + NETWORK + LOW + NONE + PARTIAL + NONE + NONE + http://nvd.nist.gov + 2015-11-24T12:23:33.593-05:00 + + + + + + CERT-VN + VU#412115 + + + BUGTRAQ + 20150402 NEW : VMSA-2015-0003 VMware product updates address critical information disclosure issue in JRE + + + BUGTRAQ + 20030117 Re: More information regarding Etherleak + + + BUGTRAQ + 20030106 Etherleak: Ethernet frame padding information leakage (A010603-1) + + + REDHAT + RHSA-2003:088 + + + REDHAT + RHSA-2003:025 + + + OSVDB + 9962 + + + CONFIRM + http://www.oracle.com/technetwork/topics/security/cpujan2015-1972971.html + + + MISC + http://www.atstake.com/research/advisories/2003/atstake_etherleak_report.pdf + + + ATSTAKE + A010603-1 + + + FULLDISC + 20150402 NEW : VMSA-2015-0003 VMware product updates address critical information disclosure issue in JRE + + + MISC + http://packetstormsecurity.com/files/131271/VMware-Security-Advisory-2015-0003.html + + + BUGTRAQ + 20030110 More information regarding Etherleak + + + VULNWATCH + 20030110 More information regarding Etherleak + + + + + Multiple ethernet Network Interface Card (NIC) device drivers do not pad frames with null bytes, which allows remote attackers to obtain information from previous packets or kernel memory by using malformed packets, as demonstrated by Etherleak. + + + + + + + + + cpe:/a:tcp:tcp + + CVE-2004-0230 + 2004-08-18T00:00:00.000-04:00 + 2015-11-24T13:06:40.597-05:00 + + + 5.0 + NETWORK + LOW + NONE + NONE + NONE + PARTIAL + http://nvd.nist.gov + 2015-11-24T12:17:30.930-05:00 + + + + + + + + + CERT + TA04-111A + + + CERT-VN + VU#415294 + + + CONFIRM + https://kc.mcafee.com/corporate/index?page=content&id=SB10053 + + + XF + tcp-rst-dos(15886) + + + VUPEN + ADV-2006-3983 + + + MISC + http://www.uniras.gov.uk/vuls/2004/236929/index.htm + + + BID + 10183 + + + BUGTRAQ + 20150402 NEW : VMSA-2015-0003 VMware product updates address critical information disclosure issue in JRE + + + HP + SSRT061264 + + + OSVDB + 4030 + + + CONFIRM + http://www.oracle.com/technetwork/topics/security/cpujan2015-1972971.html + + + MS + MS06-064 + + + MS + MS05-019 + + + CISCO + 20040420 TCP Vulnerabilities in Multiple IOS-Based Cisco Products + + + FULLDISC + 20150402 NEW : VMSA-2015-0003 VMware product updates address critical information disclosure issue in JRE + + + MISC + http://packetstormsecurity.com/files/131271/VMware-Security-Advisory-2015-0003.html + + + HP + SSRT4696 + + + BUGTRAQ + 20040425 Perl code exploting TCP not checking RST ACK. + + + CONFIRM + http://kb.juniper.net/JSA10638 + + + SGI + 20040403-01-A + + + SCO + SCOSA-2005.14 + + + SCO + SCOSA-2005.9 + + + SCO + SCOSA-2005.3 + + + NETBSD + NetBSD-SA2004-006 + + + + + + + + + + + + + + + + + TCP, when using a large Window Size, makes it easier for remote attackers to guess sequence numbers and cause a denial of service (connection loss) to persistent TCP connections by repeatedly injecting a TCP RST packet, especially in protocols that use long-lived connections, such as BGP. + + + + + + + + + + cpe:/a:vastal:phpvid:1.1 + cpe:/a:vastal:phpvid:1.2 + + CVE-2008-2335 + 2008-05-19T09:20:00.000-04:00 + 2015-11-24T11:45:25.057-05:00 + + + 4.3 + NETWORK + MEDIUM + NONE + NONE + PARTIAL + NONE + http://nvd.nist.gov + 2015-11-24T10:50:05.737-05:00 + + + + + XF + phpvid-query-xss(42450) + + + VUPEN + ADV-2008-2552 + + + BID + 29238 + + + MILW0RM + 6422 + + + EXPLOIT-DB + 27519 + + + MISC + http://tetraph.com/security/xss-vulnerability/vastal-i-tech-phpvid-1-2-3-multiple-xss-cross-site-scripting-security-vulnerabilities/ + + + FULLDISC + 20150310 Vastal I-tech phpVID 1.2.3 Multiple XSS (Cross-site Scripting) Security Vulnerabilities + + + MISC + http://packetstormsecurity.com/files/130755/Vastal-I-tech-phpVID-1.2.3-Cross-Site-Scripting.html + + + MISC + http://packetstormsecurity.com/files/122746/PHP-VID-XSS-SQL-Injection-CRLF-Injection.html + + + OSVDB + 45171 + + + MISC + http://holisticinfosec.org/content/view/65/45/ + + Cross-site scripting (XSS) vulnerability in search_results.php in Vastal I-Tech phpVID 1.1 and 1.2 allows remote attackers to inject arbitrary web script or HTML via the query parameter. NOTE: some of these details are obtained from third party information. NOTE: it was later reported that 1.2.3 is also affected. + + + + + + + + + + + + + + cpe:/a:redhat:enterprise_virtualization:3.5 + cpe:/a:jasper_project:jasper:1.900.1 + + CVE-2008-3522 + 2008-10-02T14:18:05.790-04:00 + 2015-11-24T11:46:04.933-05:00 + + + 10.0 + NETWORK + LOW + NONE + COMPLETE + COMPLETE + COMPLETE + http://nvd.nist.gov + 2015-11-24T10:05:46.467-05:00 + + + ALLOWS_ADMIN_ACCESS + + + XF + jasper-jasstreamprintf-bo(45623) + + + UBUNTU + USN-742-1 + + + BID + 31470 + + + MANDRIVA + MDVSA-2009:164 + + + MANDRIVA + MDVSA-2009:144 + + + MANDRIVA + MDVSA-2009:142 + + + GENTOO + GLSA-200812-18 + + + REDHAT + RHSA-2015:0698 + + + MISC + http://bugs.gentoo.org/show_bug.cgi?id=222819 + + + MISC + http://bugs.gentoo.org/attachment.cgi?id=163282&action=view + + Buffer overflow in the jas_stream_printf function in libjasper/base/jas_stream.c in JasPer 1.900.1 might allow context-dependent attackers to have an unknown impact via vectors related to the mif_hdr_put function and use of vsprintf. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cpe:/o:canonical:ubuntu_linux:10.04::~~lts~~~ + cpe:/o:canonical:ubuntu_linux:8.04:-:lts + cpe:/o:canonical:ubuntu_linux:10.10 + cpe:/a:sun:openoffice.org:2.1.0 + cpe:/a:sun:openoffice.org:2.3.0 + cpe:/a:sun:openoffice.org:2.2.1 + + + CVE-2009-3301 + 2010-02-16T14:30:00.533-05:00 + 2015-11-17T10:59:44.723-05:00 + + + 9.3 + NETWORK + MEDIUM + NONE + COMPLETE + COMPLETE + COMPLETE + http://nvd.nist.gov + 2015-11-17T10:02:50.097-05:00 + + + + + + CERT + TA10-287A + + + CONFIRM + https://bugzilla.redhat.com/show_bug.cgi?id=533038 + + + XF + openoffice-word-sprmtdeftable-bo(56240) + + + VUPEN + ADV-2010-2905 + + + VUPEN + ADV-2010-0635 + + + VUPEN + ADV-2010-0366 + + + UBUNTU + USN-903-1 + + + BID + 38218 + + + REDHAT + RHSA-2010:0101 + + + CONFIRM + http://www.oracle.com/technetwork/topics/security/cpuoct2010-175626.html + + + CONFIRM + http://www.openoffice.org/security/cves/CVE-2009-3301-3302.html + + + CONFIRM + http://www.openoffice.org/security/bulletin.html + + + MANDRIVA + MDVSA-2010:221 + + + GENTOO + GLSA-201408-19 + + + DEBIAN + DSA-1995 + + + SECTRACK + 1023591 + + + SUSE + SUSE-SA:2010:017 + + + + + Integer underflow in filter/ww8/ww8par2.cxx in OpenOffice.org (OOo) before 3.2 allows remote attackers to cause a denial of service (application crash) or possibly execute arbitrary code via a crafted sprmTDefTable table property modifier in a Word document. + + + CVE-2015-8330 + 2015-11-24T15:59:25.897-05:00 + 2015-11-24T15:59:26.930-05:00 + + MISC + https://www.onapsis.com/blog/analyzing-sap-security-notes-november-2015 + + + MISC + http://erpscan.com/advisories/erpscan-15-032-sap-pco-agent-dos-vulnerability/ + + The PCo agent in SAP Plant Connectivity (PCo) allows remote attackers to cause a denial of service (memory corruption and agent crash) via crafted xMII requests, aka SAP Security Note 2238619. + + diff --git a/tests/cve.scm b/tests/cve.scm new file mode 100644 index 0000000000..26bc560e52 --- /dev/null +++ b/tests/cve.scm @@ -0,0 +1,69 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; 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 . + +(define-module (test-cve) + #:use-module (guix cve) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-64)) + +(define %sample + (search-path %load-path "tests/cve-sample.xml")) + +(define (vulnerability id packages) + (make-struct (@@ (guix cve) ) 0 id packages)) + +(define %expected-vulnerabilities + ;; What we should get when reading %SAMPLE. + (list + ;; CVE-2003-0001 has no "/a" in its product list so it is omitted. + ;; CVE-2004-0230 lists "tcp" as an application, but lacks a version number. + (vulnerability "CVE-2008-2335" '(("phpvid" . "1.1") ("phpvid" . "1.2"))) + (vulnerability "CVE-2008-3522" '(("enterprise_virtualization" . "3.5") + ("jasper" . "1.900.1"))) + (vulnerability "CVE-2009-3301" '(("openoffice.org" . "2.1.0") + ("openoffice.org" . "2.3.0") + ("openoffice.org" . "2.2.1"))) + ;; CVE-2015-8330 has no software list. + )) + + +(test-begin "cve") + +(test-equal "xml->vulnerabilities" + %expected-vulnerabilities + (call-with-input-file %sample xml->vulnerabilities)) + +(test-equal "" + (list `(("1.1" . ,(first %expected-vulnerabilities)) + ("1.2" . ,(first %expected-vulnerabilities))) + '() + '() + (list (second %expected-vulnerabilities)) + (list (third %expected-vulnerabilities))) + (let* ((vulns (call-with-input-file %sample xml->vulnerabilities)) + (lookup (vulnerabilities->lookup-proc vulns))) + (list (lookup "phpvid") + (lookup "jasper" "2.0") + (lookup "foobar") + (lookup "jasper" "1.900.1") + (lookup "openoffice.org" "2.3.0")))) + +(test-end "cve") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) diff --git a/tests/derivations.scm b/tests/derivations.scm index 9fc96c71ae..1bbc93fe5c 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -670,6 +670,26 @@ (((? string? item)) (string=? item (derivation->output-path drv)))))))))) +(test-assert "derivation-prerequisites-to-build in 'check' mode" + (with-store store + (let* ((dep (build-expression->derivation store "dep" + `(begin ,(random-text) + (mkdir %output)))) + (drv (build-expression->derivation store "to-check" + '(mkdir %output) + #:inputs `(("dep" ,dep))))) + (build-derivations store (list drv)) + (delete-paths store (list (derivation->output-path dep))) + + ;; In 'check' mode, DEP must be rebuilt. + (and (null? (derivation-prerequisites-to-build store drv)) + (match (derivation-prerequisites-to-build store drv + #:mode (build-mode + check)) + ((input) + (string=? (derivation-input-path input) + (derivation-file-name dep)))))))) + (test-assert "build-expression->derivation with expression returning #f" (let* ((builder '(begin (mkdir %output) diff --git a/tests/gexp.scm b/tests/gexp.scm index 4860a8e79c..87c774782a 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -600,7 +600,7 @@ ;; If we're going to hit the silly shebang limit (128 chars on Linux-based ;; systems), then skip the following test. -(test-skip (if (> (string-length shebang) 127) 1 0)) +(test-skip (if (> (string-length shebang) 127) 2 0)) (test-assertm "gexp->script" (mlet* %store-monad ((n -> (random (expt 2 50))) diff --git a/tests/gnu-maintenance.scm b/tests/gnu-maintenance.scm new file mode 100644 index 0000000000..e7296137dc --- /dev/null +++ b/tests/gnu-maintenance.scm @@ -0,0 +1,44 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ludovic Courtès +;;; +;;; 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 . + +(define-module (test-gnu-maintenance) + #:use-module (guix gnu-maintenance) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-64)) + +(test-begin "gnu-maintenance") + +(test-assert "release-file?" + (and (every (lambda (project+file) + (apply release-file? project+file)) + '(("gcc" "gcc-5.3.0.tar.bz2") + ("texmacs" "TeXmacs-1.0.7.9-src.tar.gz") + ("icecat" "icecat-38.4.0-gnu1.tar.bz2") + ("mit-scheme" "mit-scheme-9.2.tar.gz"))) + (every (lambda (project+file) + (not (apply release-file? project+file))) + '(("guile" "guile-www-1.1.1.tar.gz") + ("guile" "guile-2.0.11.tar.gz.sig") + ("mit-scheme" "mit-scheme-9.2-i386.tar.gz") + ("mit-scheme" "mit-scheme-9.2-doc-pdf.tar.gz") + ("gnutls" "gnutls-3.2.18-w32.zip"))))) + +(test-end) + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) diff --git a/tests/graph.scm b/tests/graph.scm index f454b06351..ad8aea0ada 100644 --- a/tests/graph.scm +++ b/tests/graph.scm @@ -18,14 +18,19 @@ (define-module (test-graph) #:use-module (guix tests) + #:use-module (guix graph) #:use-module (guix scripts graph) #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix store) #:use-module (guix monads) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (guix gexp) + #:use-module (guix utils) #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages guile) #:use-module (gnu packages bootstrap) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -110,7 +115,7 @@ edges." ".drv"))) implicit))))))) -(test-assert "bag DAG" +(test-assert "bag DAG" ;a big town in Iraq (let-values (((backend nodes+edges) (make-recording-backend))) (let ((p (dummy-package "p"))) (run-with-store %store @@ -129,6 +134,32 @@ edges." (((labels packages) ...) (map package-full-name packages)))))))) +(test-assert "bag DAG, including origins" + (let-values (((backend nodes+edges) (make-recording-backend))) + (let* ((m (lambda* (uri hash-type hash name #:key system) + (text-file "foo-1.2.3.tar.gz" "This is a fake!"))) + (o (origin (method m) (uri "the-uri") (sha256 #vu8(0 1 2)))) + (p (dummy-package "p" (source o)))) + (run-with-store %store + (export-graph (list p) 'port + #:node-type %bag-with-origins-node-type + #:backend backend)) + ;; We should see O among the nodes, with an edge coming from P. + (let-values (((nodes edges) (nodes+edges))) + (run-with-store %store + (mlet %store-monad ((o* (lower-object o)) + (p* (lower-object p))) + (return + (and (find (match-lambda + ((file "the-uri") #t) + (_ #f)) + nodes) + (find (match-lambda + ((source target) + (and (string=? source (derivation-file-name p*)) + (string=? target o*)))) + edges))))))))) + (test-assert "derivation DAG" (let-values (((backend nodes+edges) (make-recording-backend))) (run-with-store %store @@ -187,6 +218,38 @@ edges." (list out txt)) (equal? edges `((,out ,txt))))))))))) +(test-assert "node-edges" + (run-with-store %store + (let ((packages (fold-packages cons '()))) + (mlet %store-monad ((edges (node-edges %package-node-type packages))) + (return (and (null? (edges grep)) + (lset= eq? + (edges guile-2.0) + (match (package-direct-inputs guile-2.0) + (((labels packages _ ...) ...) + packages))))))))) + +(test-assert "node-transitive-edges + node-back-edges" + (run-with-store %store + (let ((packages (fold-packages cons '())) + (bootstrap? (lambda (package) + (string-contains + (location-file (package-location package)) + "bootstrap.scm"))) + (trivial? (lambda (package) + (eq? (package-build-system package) + trivial-build-system)))) + (mlet %store-monad ((edges (node-back-edges %bag-node-type packages))) + (let* ((glibc (canonical-package glibc)) + (dependents (node-transitive-edges (list glibc) edges)) + (diff (lset-difference eq? packages dependents))) + ;; All the packages depend on libc, except bootstrap packages and + ;; some that use TRIVIAL-BUILD-SYSTEM. + (return (null? (remove (lambda (package) + (or (trivial? package) + (bootstrap? package))) + diff)))))))) + (test-end "graph") diff --git a/tests/guix-build.sh b/tests/guix-build.sh index a72ce0911d..f7fb3c5b64 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -167,6 +167,33 @@ guix build -e "(begin guix build -e '#~(mkdir #$output)' -d guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv' +# Building from a package file. +cat > "$module_dir/package.scm"< "$module_dir/proc.scm"<derivation "test" + (gexp (mkdir (ungexp output))))) +EOF +guix build --file="$module_dir/proc.scm" --dry-run + +# Building from a gexp file. +cat > "$module_dir/gexp.scm"< +# Copyright © 2012, 2015 Ludovic Courtès # # This file is part of GNU Guix. # @@ -34,3 +34,7 @@ then false; else true; fi # This one should succeed. guix download "file://$abs_top_srcdir/README" + +# This one should fail. +if guix download "file:///does-not-exist" "file://$abs_top_srcdir/README" +then false; else true; fi diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh new file mode 100644 index 0000000000..703ab31d27 --- /dev/null +++ b/tests/guix-environment-container.sh @@ -0,0 +1,90 @@ +# GNU Guix --- Functional package management for GNU +# Copyright © 2015 David Thompson +# +# 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 . + +# +# Test 'guix environment'. +# + +set -e + +guix environment --version + +if ! guile -c '((@@ (guix scripts environment) assert-container-features))' +then + # User containers are not supported; skip this test. + exit 77 +fi + +tmpdir="t-guix-environment-$$" +trap 'rm -r "$tmpdir"' EXIT + +mkdir "$tmpdir" + +# Make sure the exit value is preserved. +if guix environment --container --ad-hoc --bootstrap guile-bootstrap \ + -- guile -c '(exit 42)' +then + false +else + test $? = 42 +fi + +# Make sure that the right directories are mapped. +mount_test_code=" +(use-modules (ice-9 rdelim) + (ice-9 match) + (srfi srfi-1)) + +(define mappings + (filter-map (lambda (line) + (match (string-split line #\space) + ;; Empty line. + ((\"\") #f) + ;; Ignore these types of file systems. + ((_ _ (or \"tmpfs\" \"proc\" \"sysfs\" \"devtmpfs\" + \"devpts\" \"cgroup\" \"mqueue\") _ _ _) + #f) + ((_ mount _ _ _ _) + mount))) + (string-split (call-with-input-file \"/proc/mounts\" read-string) + #\newline))) + +(for-each (lambda (mount) + (display mount) + (newline)) + mappings)" + +guix environment --container --ad-hoc --bootstrap guile-bootstrap \ + -- guile -c "$mount_test_code" > $tmpdir/mounts + +cat "$tmpdir/mounts" +test `wc -l < $tmpdir/mounts` -eq 3 + +current_dir="`cd $PWD; pwd -P`" +grep -e "$current_dir$" $tmpdir/mounts # current directory +grep $(guix build guile-bootstrap) $tmpdir/mounts +grep -e "$NIX_STORE_DIR/.*-bash" $tmpdir/mounts # bootstrap bash + +rm $tmpdir/mounts + +if guix environment --bootstrap --container \ + --ad-hoc bootstrap-binaries -- kill -SEGV 2 +then false; +else + test $? -gt 127 +fi diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh index f91c78a801..aed27c103c 100644 --- a/tests/guix-environment.sh +++ b/tests/guix-environment.sh @@ -29,6 +29,10 @@ trap 'rm -r "$tmpdir"' EXIT mkdir "$tmpdir" +# 'guix environment' launches /bin/sh if 'SHELL' is unset, so export 'SHELL' +# since we know it's valid (build environments lack /bin/sh.) +export SHELL + # Check the environment variables for the bootstrap Guile. guix environment --ad-hoc guile-bootstrap --pure --search-paths > "$tmpdir/a" guix environment --ad-hoc guile-bootstrap:out --pure --search-paths > "$tmpdir/b" @@ -97,4 +101,29 @@ then # Make sure the "debug" output is not listed. if grep -E "$make_boot0_debug" "$tmpdir/a"; then false; else true; fi + + # Compute the build environment for the initial GNU Make, but add in the + # bootstrap Guile as an ad-hoc addition. + guix environment -e '(@@ (gnu packages commencement) gnu-make-boot0)' \ + --ad-hoc guile-bootstrap --no-substitutes --search-paths \ + --pure > "$tmpdir/a" + + # Make sure the bootstrap binaries are all listed where they belong. + cat $tmpdir/a + grep -E '^export PATH=.*-bootstrap-binaries-0/bin' "$tmpdir/a" + grep -E '^export PATH=.*-guile-bootstrap-2.0/bin' "$tmpdir/a" + grep -E '^export CPATH=.*-gcc-bootstrap-0/include' "$tmpdir/a" + grep -E '^export CPATH=.*-glibc-bootstrap-0/include' "$tmpdir/a" + grep -E '^export LIBRARY_PATH=.*-glibc-bootstrap-0/lib' "$tmpdir/a" + + # Make sure a package list can be used with -e. + expr_list_test_code=" +(list (@@ (gnu packages commencement) gnu-make-boot0) + (@ (gnu packages bootstrap) %bootstrap-guile))" + + guix environment --ad-hoc --no-substitutes --search-paths --pure \ + -e "$expr_list_test_code" > "$tmpdir/a" + + grep -E '^export PATH=.*-make-boot0-4.1/bin' "$tmpdir/a" + grep -E '^export PATH=.*-guile-bootstrap-2.0/bin' "$tmpdir/a" fi diff --git a/tests/guix-gc.sh b/tests/guix-gc.sh index c1eb66cef5..a100f186f5 100644 --- a/tests/guix-gc.sh +++ b/tests/guix-gc.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2013 Ludovic Courtès +# Copyright © 2013, 2015 Ludovic Courtès # # This file is part of GNU Guix. # @@ -25,6 +25,12 @@ guix gc --version trap "rm -f guix-gc-root" EXIT rm -f guix-gc-root +# For some operations, passing extra arguments is an error. +for option in "" "-C 500M" "--verify" "--optimize" +do + if guix gc $option whatever; then false; else true; fi +done + # Check the references of a .drv. drv="`guix build guile-bootstrap -d`" out="`guix build guile-bootstrap`" diff --git a/tests/guix-graph.sh b/tests/guix-graph.sh index e0cbebb753..4d5a755bc1 100644 --- a/tests/guix-graph.sh +++ b/tests/guix-graph.sh @@ -24,7 +24,7 @@ guix graph --version for package in guile-bootstrap coreutils python do - for graph in package bag-emerged bag + for graph in package bag-emerged bag bag-with-origins do guix graph -t "$graph" "$package" | grep "$package" done diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index 14222cfd25..35ef6ff1a0 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -46,9 +46,10 @@ fi profile="t-profile-$$" +profile_alt="t-profile-alt-$$" rm -f "$profile" -trap 'rm -f "$profile" "$profile-"[0-9]* ; rm -rf t-home-'"$$" EXIT +trap 'rm -f "$profile" "$profile_alt" "$profile-"[0-9]* ; rm -rf t-home-'"$$" EXIT guix package --bootstrap -p "$profile" -i guile-bootstrap @@ -156,6 +157,15 @@ guix package -p "$profile" --switch-generation=2 guix package -p "$profile" --delete-generations=3 test -z "`guix package -p "$profile" -l 3`" +# Search path of combined profiles. 'LIBRARY_PATH' should show up only in the +# combination, not in the individual profiles. +rm "$profile" +guix package --bootstrap -p "$profile" -i guile-bootstrap +guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap +if guix package -p "$profile" --search-paths | grep LIBRARY_PATH +then false; fi +guix package -p "$profile" -p "$profile_alt" --search-paths \ + | grep "LIBRARY_PATH.*$profile/lib" # # Try with the default profile. diff --git a/tests/guix-system.sh b/tests/guix-system.sh index d99c9bd07b..e20bc98713 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -71,13 +71,7 @@ else grep "$tmpfile:9:.*[Uu]nbound variable.*GRUB-config" "$errorfile" fi -# Reporting of duplicate service identifiers. - -cat > "$tmpfile" <symbol "label")) (mount-point "/") (type "ext4")) %base-file-systems)) +' +# Reporting of duplicate service identifiers. + +cat > "$tmpfile" < "$tmpfile" < "$errorfile" +then + exit 1 +else + grep "service 'buggy!'.*'does-not-exist'.*undefined" "$errorfile" +fi + +# Reporting inconsistent user accounts. + make_user_config () { cat > "$tmpfile" <= 7.2 && < 7.6) + Build-depends: ghc-a + if impl(ghc>=7.2&&<7.6) + Build-depends: ghc-b + if impl(ghc == 7.8) + Build-depends: + HTTP >= 4000.2.5 && < 4000.3, + mtl >= 2.0 && < 3 +") + ;; A fragment of a real Cabal file with minor modification to check precedence -;; of 'and' over 'or'. +;; of 'and' over 'or', missing final newline, spaces between keywords and +;; parentheses and between key and column. (define test-read-cabal-1 "name: test-me library @@ -66,24 +86,23 @@ library Build-depends: base >= 3 && < 4 else Build-depends: base < 3 - if flag(base4point8) || flag(base4) && flag(base3) + if flag(base4point8) || flag (base4) && flag(base3) Build-depends: random - Build-depends: containers + Build-depends : containers -- Modules that are always built. Exposed-Modules: - Test.QuickCheck.Exception -") + Test.QuickCheck.Exception") (test-begin "hackage") -(define (eval-test-with-cabal test-cabal) +(define* (eval-test-with-cabal test-cabal #:key (cabal-environment '())) (mock ((guix import hackage) hackage-fetch (lambda (name-version) (call-with-input-string test-cabal read-cabal))) - (match (hackage->guix-package "foo") + (match (hackage->guix-package "foo" #:cabal-environment cabal-environment) (('package ('name "ghc-foo") ('version "1.0.0") @@ -116,6 +135,10 @@ library (test-assert "hackage->guix-package test 2" (eval-test-with-cabal test-cabal-2)) +(test-assert "hackage->guix-package test 3" + (eval-test-with-cabal test-cabal-3 + #:cabal-environment '(("impl" . "ghc-7.8")))) + (test-assert "read-cabal test 1" (match (call-with-input-string test-read-cabal-1 read-cabal) ((("name" ("test-me")) diff --git a/tests/lint.scm b/tests/lint.scm index 3f149562d4..df82593a9e 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -512,6 +512,40 @@ requests." (check-source pkg)))) "not reachable: 404"))) +(test-assert "cve" + (mock ((guix scripts lint) package-vulnerabilities (const '())) + (string-null? + (with-warnings (check-vulnerabilities (dummy-package "x")))))) + +(test-assert "cve: one vulnerability" + (mock ((guix scripts lint) package-vulnerabilities + (lambda (package) + (list (make-struct (@@ (guix cve) ) 0 + "CVE-2015-1234" + (list (cons (package-name package) + (package-version package))))))) + (string-contains + (with-warnings + (check-vulnerabilities (dummy-package "pi" (version "3.14")))) + "vulnerable to CVE-2015-1234"))) + +(test-assert "cve: one patched vulnerability" + (mock ((guix scripts lint) package-vulnerabilities + (lambda (package) + (list (make-struct (@@ (guix cve) ) 0 + "CVE-2015-1234" + (list (cons (package-name package) + (package-version package))))))) + (string-null? + (with-warnings + (check-vulnerabilities + (dummy-package "pi" + (version "3.14") + (source + (dummy-origin + (patches + (list "/a/b/pi-CVE-2015-1234.patch")))))))))) + (test-assert "formatting: lonely parentheses" (string-contains (with-warnings diff --git a/tests/pypi.scm b/tests/pypi.scm index c772474b82..960b8cd32a 100644 --- a/tests/pypi.scm +++ b/tests/pypi.scm @@ -84,8 +84,7 @@ baz > 13.37") ('version "1.0.0") ('source ('origin ('method 'url-fetch) - ('uri ('string-append "https://example.com/foo-" - 'version ".tar.gz")) + ('uri (pypi-uri "foo" version)) ('sha256 ('base32 (? string? hash))))) diff --git a/tests/store.scm b/tests/store.scm index 96b64781dd..394c06bc0f 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -20,6 +20,7 @@ #:use-module (guix tests) #:use-module (guix store) #:use-module (guix utils) + #:use-module (guix monads) #:use-module (guix hash) #:use-module (guix base32) #:use-module (guix packages) @@ -592,6 +593,72 @@ (equal? (list file0) (references %store file1)) (equal? (list file1) (references %store file2)))))) +(test-assert "write-file & export-path yield the same result" + ;; Here we compare 'write-file' and the daemon's own implementation. + ;; 'write-file' is the reference because we know it sorts file + ;; deterministically. Conversely, the daemon uses 'readdir' and the entries + ;; currently happen to be sorted as a side-effect of some unrelated + ;; operation (search for 'unhacked' in archive.cc.) Make sure we detect any + ;; changes there. + (run-with-store %store + (mlet* %store-monad ((drv1 (package->derivation %bootstrap-guile)) + (out1 -> (derivation->output-path drv1)) + (data -> (unfold (cut >= <> 26) + (lambda (i) + (random-bytevector 128)) + 1+ 0)) + (build + -> #~(begin + (use-modules (rnrs io ports) (srfi srfi-1)) + (let () + (define letters + (map (lambda (i) + (string + (integer->char + (+ i (char->integer #\a))))) + (iota 26))) + (define (touch file data) + (call-with-output-file file + (lambda (port) + (put-bytevector port data)))) + + (mkdir #$output) + (chdir #$output) + + ;; The files must be different so they have + ;; different inode numbers, and the inode + ;; order must differ from the lexicographic + ;; order. + (for-each touch + (append (drop letters 10) + (take letters 10)) + (list #$@data)) + #t))) + (drv2 (gexp->derivation "bunch" build)) + (out2 -> (derivation->output-path drv2)) + (item-info -> (store-lift query-path-info))) + (mbegin %store-monad + (built-derivations (list drv1 drv2)) + (foldm %store-monad + (lambda (item result) + (define ref-hash + (let-values (((port get) (open-sha256-port))) + (write-file item port) + (close-port port) + (get))) + + ;; 'query-path-info' returns a hash produced by using the + ;; daemon's C++ 'dump' function, which is the implementation + ;; under test. + (>>= (item-info item) + (lambda (info) + (return + (and result + (bytevector=? (path-info-hash info) ref-hash)))))) + #t + (list out1 out2)))) + #:guile-for-build (%guile-for-build))) + (test-assert "import corrupt path" (let* ((text (random-text)) (file (add-text-to-store %store "text" text)) @@ -689,6 +756,81 @@ ;; Delete the corrupt item to leave the store in a clean state. (delete-paths s (list file))))))) +(test-assert "build-things, check mode" + (with-store store + (call-with-temporary-output-file + (lambda (entropy entropy-port) + (write (random-text) entropy-port) + (force-output entropy-port) + (let* ((drv (build-expression->derivation + store "non-deterministic" + `(begin + (use-modules (rnrs io ports)) + (let ((out (assoc-ref %outputs "out"))) + (call-with-output-file out + (lambda (port) + ;; Rely on the fact that tests do not use the + ;; chroot, and thus ENTROPY is readable. + (display (call-with-input-file ,entropy + get-string-all) + port))) + #t)) + #:guile-for-build + (package-derivation store %bootstrap-guile (%current-system)))) + (file (derivation->output-path drv))) + (and (build-things store (list (derivation-file-name drv))) + (begin + (write (random-text) entropy-port) + (force-output entropy-port) + (guard (c ((nix-protocol-error? c) + (pk 'determinism-exception c) + (and (not (zero? (nix-protocol-error-status c))) + (string-contains (nix-protocol-error-message c) + "deterministic")))) + ;; This one will produce a different result. Since we're in + ;; 'check' mode, this must fail. + (build-things store (list (derivation-file-name drv)) + (build-mode check)) + #f)))))))) + +(test-assert "build multiple times" + (with-store store + ;; Ask to build twice. + (set-build-options store #:rounds 2 #:use-substitutes? #f) + + (call-with-temporary-output-file + (lambda (entropy entropy-port) + (write (random-text) entropy-port) + (force-output entropy-port) + (let* ((drv (build-expression->derivation + store "non-deterministic" + `(begin + (use-modules (rnrs io ports)) + (let ((out (assoc-ref %outputs "out"))) + (call-with-output-file out + (lambda (port) + ;; Rely on the fact that tests do not use the + ;; chroot, and thus ENTROPY is accessible. + (display (call-with-input-file ,entropy + get-string-all) + port) + (call-with-output-file ,entropy + (lambda (port) + (write 'foobar port))))) + #t)) + #:guile-for-build + (package-derivation store %bootstrap-guile (%current-system)))) + (file (derivation->output-path drv))) + (guard (c ((nix-protocol-error? c) + (pk 'multiple-build c) + (and (not (zero? (nix-protocol-error-status c))) + (string-contains (nix-protocol-error-message c) + "deterministic")))) + ;; This one will produce a different result on the second run. + (current-build-output-port (current-error-port)) + (build-things store (list (derivation-file-name drv))) + #f)))))) + (test-equal "store-lower" "Lowered." (let* ((add (store-lower text-file)) diff --git a/tests/substitute.scm b/tests/substitute.scm index 85698127fa..9d907e7abf 100644 --- a/tests/substitute.scm +++ b/tests/substitute.scm @@ -167,8 +167,8 @@ a file for NARINFO." (call-with-narinfo narinfo (lambda () body ...))) ;; Transmit these options to 'guix substitute'. -(set! (@@ (guix scripts substitute) %cache-url) - (getenv "GUIX_BINARY_SUBSTITUTE_URL")) +(set! (@@ (guix scripts substitute) %cache-urls) + (list (getenv "GUIX_BINARY_SUBSTITUTE_URL"))) (test-equal "query narinfo without signature" "" ; not substitutable diff --git a/tests/syscalls.scm b/tests/syscalls.scm index 86783b96c4..a57a9ca9f9 100644 --- a/tests/syscalls.scm +++ b/tests/syscalls.scm @@ -20,6 +20,7 @@ (define-module (test-syscalls) #:use-module (guix utils) #:use-module (guix build syscalls) + #:use-module (gnu build linux-container) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-64) @@ -80,7 +81,11 @@ (define (user-namespace pid) (string-append "/proc/" (number->string pid) "/ns/user")) -(unless (file-exists? (user-namespace (getpid))) +(define perform-container-tests? + (and (user-namespace-supported?) + (unprivileged-user-namespace-supported?))) + +(unless perform-container-tests? (test-skip 1)) (test-assert "clone" (match (clone (logior CLONE_NEWUSER SIGCHLD)) @@ -93,7 +98,7 @@ ((_ . status) (= 42 (status:exit-val status)))))))) -(unless (file-exists? (user-namespace (getpid))) +(unless perform-container-tests? (test-skip 1)) (test-assert "setns" (match (clone (logior CLONE_NEWUSER SIGCHLD)) @@ -122,7 +127,7 @@ (waitpid fork-pid) result)))))))) -(unless (file-exists? (user-namespace (getpid))) +(unless perform-container-tests? (test-skip 1)) (test-assert "pivot-root" (match (pipe) diff --git a/tests/utils.scm b/tests/utils.scm index b65d6d20ba..04a859fc9d 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -318,6 +318,12 @@ (string-append (%store-prefix) "/qvs2rj2ia5vci3wsdb7qvydrmacig4pg-bash-4.2-p24"))) +(test-equal "canonical-newline-port" + "This is a journey\nInto the sound\nA journey ...\n" + (let ((port (open-string-input-port + "This is a journey\r\nInto the sound\r\nA journey ...\n"))) + (get-string-all (canonical-newline-port port)))) + (test-end) (false-if-exception (delete-file temp-file))