diff options
478 files changed, 36855 insertions, 12554 deletions
diff --git a/.dir-locals.el b/.dir-locals.el index 917fd3004a..04b58d2ce0 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -17,13 +17,20 @@ (eval . (put 'call-with-prompt 'scheme-indent-function 1)) (eval . (put 'test-assert 'scheme-indent-function 1)) (eval . (put 'test-assertm 'scheme-indent-function 1)) + (eval . (put 'test-equalm 'scheme-indent-function 1)) (eval . (put 'test-equal 'scheme-indent-function 1)) (eval . (put 'test-eq 'scheme-indent-function 1)) (eval . (put 'call-with-input-string 'scheme-indent-function 1)) (eval . (put 'guard 'scheme-indent-function 1)) (eval . (put 'lambda* 'scheme-indent-function 1)) (eval . (put 'substitute* 'scheme-indent-function 1)) + + ;; 'modify-phases' and its keywords. (eval . (put 'modify-phases 'scheme-indent-function 1)) + (eval . (put 'replace 'scheme-indent-function 1)) + (eval . (put 'add-before 'scheme-indent-function 2)) + (eval . (put 'add-after 'scheme-indent-function 2)) + (eval . (put 'modify-services 'scheme-indent-function 1)) (eval . (put 'with-directory-excursion 'scheme-indent-function 1)) (eval . (put 'package 'scheme-indent-function 0)) @@ -68,6 +75,7 @@ (eval . (put 'call-with-container 'scheme-indent-function 1)) (eval . (put 'container-excursion 'scheme-indent-function 1)) + (eval . (put 'eventually 'scheme-indent-function 1)) ;; Recognize '~', '+', and '$', as used for gexps, as quotation symbols. ;; This notably allows '(' in Paredit to not insert a space when the diff --git a/.gitignore b/.gitignore index 1fc22d7e93..09dbde82fc 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ *.tar.xz *.tmp *~ +.#* +\#*\# ,* /ABOUT-NLS /INSTALL @@ -31,6 +33,7 @@ /doc/guix.cps /doc/guix.fn /doc/guix.fns +/doc/guix.html /doc/guix.info /doc/guix.info-[0-9] /doc/guix.ky @@ -125,3 +128,4 @@ tmp /doc/os-config-lightweight-desktop.texi /nix/scripts/download /etc/indent-code.el +/.version diff --git a/.mailmap b/.mailmap index a3ec47ff44..6598e8e743 100644 --- a/.mailmap +++ b/.mailmap @@ -1,6 +1,7 @@ # This list is used to avoid multiple name/email instances of the same # contributors reported by "git log" and "git shortlog" commands. +Adriano Peluso <catonano@gmail.com> Al McElrath <hello@yrns.org> <hello@atonesir.com> Alex Sassmannshausen <alex@pompo.co> <alex.sassmannshausen@gmail.com> Alexander I. Grafov <grafov@gmail.com> @@ -39,13 +40,15 @@ Marek Benc <dusxmt@gmx.com> <merkur32@gmail.com> Marius Bakke <mbakke@fastmail.com> <m.bakke@warwick.ac.uk> Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org> +Mathieu Othacehe <m.othacehe@gmail.com> Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com> -ng0 <contact.ng0@cryptolab.net> -ng0 <contact.ng0@cryptolab.net> <ng0@we.make.ritual.n0.is> -ng0 <contact.ng0@cryptolab.net> <ngillmann@runbox.com> -ng0 <contact.ng0@cryptolab.net> <niasterisk@grrlz.net> -ng0 <contact.ng0@cryptolab.net> <ng@niasterisk.space> -ng0 <contact.ng0@cryptolab.net> <ng0@libertad.pw> +ng0 <ng0@no-reply.pragmatique.xyz> +ng0 <ng0@no-reply.pragmatique.xyz> <contact.ng0@cryptolab.net> +ng0 <ng0@no-reply.pragmatique.xyz> <ng0@we.make.ritual.n0.is> +ng0 <ng0@no-reply.pragmatique.xyz> <ngillmann@runbox.com> +ng0 <ng0@no-reply.pragmatique.xyz> <niasterisk@grrlz.net> +ng0 <ng0@no-reply.pragmatique.xyz> <ng@niasterisk.space> +ng0 <ng0@no-reply.pragmatique.xyz> <ng0@libertad.pw> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@thebird.nl> Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public12@email> diff --git a/Makefile.am b/Makefile.am index c713d9a3f6..c2fc2642a7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,8 @@ # Copyright © 2015, 2017 Alex Kost <alezost@gmail.com> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> # Copyright © 2016, 2017 Mark H Weaver <mhw@netris.org> +# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +# Copyright © 2017 Leo Famulari <leo@famulari.name> # # This file is part of GNU Guix. # @@ -27,6 +29,10 @@ nodist_noinst_SCRIPTS = \ pre-inst-env \ test-env +# Modules that are not compiled but are installed nonetheless, such as +# build-side modules with unusual dependencies. +MODULES_NOT_COMPILED = + include gnu/local.mk MODULES = \ @@ -45,6 +51,7 @@ MODULES = \ guix/sets.scm \ guix/modules.scm \ guix/download.scm \ + guix/discovery.scm \ guix/git-download.scm \ guix/hg-download.scm \ guix/monads.scm \ @@ -59,7 +66,9 @@ MODULES = \ guix/upstream.scm \ guix/licenses.scm \ guix/graph.scm \ + guix/cache.scm \ guix/cve.scm \ + guix/workers.scm \ guix/zlib.scm \ guix/build-system.scm \ guix/build-system/ant.scm \ @@ -116,6 +125,7 @@ MODULES = \ guix/build/syscalls.scm \ guix/build/gremlin.scm \ guix/build/emacs-utils.scm \ + guix/build/java-utils.scm \ guix/build/lisp-utils.scm \ guix/build/graft.scm \ guix/build/bournish.scm \ @@ -151,7 +161,6 @@ MODULES = \ guix/scripts/import/gnu.scm \ guix/scripts/import/nix.scm \ guix/scripts/import/hackage.scm \ - guix/scripts/import/stackage.scm \ guix/scripts/import/elpa.scm \ guix/scripts/environment.scm \ guix/scripts/publish.scm \ @@ -176,7 +185,8 @@ MODULES += \ guix/import/stackage.scm \ guix/scripts/import/crate.scm \ guix/scripts/import/gem.scm \ - guix/scripts/import/pypi.scm + guix/scripts/import/pypi.scm \ + guix/scripts/import/stackage.scm endif @@ -184,7 +194,8 @@ if HAVE_GUILE_SSH MODULES += \ guix/ssh.scm \ - guix/scripts/copy.scm + guix/scripts/copy.scm \ + guix/store/ssh.scm endif HAVE_GUILE_SSH @@ -201,8 +212,8 @@ dist_noinst_DATA = guix/tests.scm guix/tests/http.scm # Auxiliary files for packages. AUX_FILES = \ gnu/packages/aux-files/emacs/guix-emacs.el \ - gnu/packages/aux-files/linux-libre/4.10-i686.conf \ - gnu/packages/aux-files/linux-libre/4.10-x86_64.conf \ + gnu/packages/aux-files/linux-libre/4.11-i686.conf \ + gnu/packages/aux-files/linux-libre/4.11-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.9-i686.conf \ gnu/packages/aux-files/linux-libre/4.9-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.4-i686.conf \ @@ -214,12 +225,13 @@ AUX_FILES = \ EXAMPLES = \ gnu/system/examples/bare-bones.tmpl \ gnu/system/examples/desktop.tmpl \ - gnu/system/examples/lightweight-desktop.tmpl + gnu/system/examples/lightweight-desktop.tmpl \ + gnu/system/examples/vm-image.tmpl GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go) -nobase_dist_guilemodule_DATA = \ - $(MODULES) $(AUX_FILES) $(EXAMPLES) \ +nobase_dist_guilemodule_DATA = \ + $(MODULES) $(MODULES_NOT_COMPILED) $(AUX_FILES) $(EXAMPLES) \ $(MISC_DISTRO_FILES) nobase_nodist_guilemodule_DATA = guix/config.scm nobase_nodist_guileobject_DATA = $(GOBJECTS) @@ -271,6 +283,7 @@ SCM_TESTS = \ tests/records.scm \ tests/upstream.scm \ tests/combinators.scm \ + tests/discovery.scm \ tests/utils.scm \ tests/build-utils.scm \ tests/packages.scm \ @@ -294,7 +307,9 @@ SCM_TESTS = \ tests/size.scm \ tests/graph.scm \ tests/challenge.scm \ + tests/cache.scm \ tests/cve.scm \ + tests/workers.scm \ tests/zlib.scm \ tests/file-systems.scm \ tests/system.scm \ @@ -373,14 +388,16 @@ check-local: endif !CAN_RUN_TESTS -check-system: $(GOBJECTS) +check-system: $(GOBJECTS) $(BOOTSTRAP_GUILE_TARBALLS) $(AM_V_at)$(top_builddir)/pre-inst-env \ $(GUILE) --no-auto-compile \ -e '(@@ (run-system-tests) run-system-tests)' \ $(top_srcdir)/build-aux/run-system-tests.scm -# Public key used to sign substitutes from hydra.gnu.org. -dist_pkgdata_DATA = hydra.gnu.org.pub +# Public key used to sign substitutes from hydra.gnu.org & co. +dist_pkgdata_DATA = \ + hydra.gnu.org.pub \ + bayfront.guixsd.org.pub # Bash completion file. dist_bashcompletion_DATA = etc/completion/bash/guix @@ -398,13 +415,14 @@ EXTRA_DIST = \ build-aux/compile-all.scm \ build-aux/hydra/evaluate.scm \ build-aux/hydra/gnu-system.scm \ - build-aux/hydra/demo-os.scm \ build-aux/hydra/guix.scm \ build-aux/check-available-binaries.scm \ build-aux/check-final-inputs-self-contained.scm \ build-aux/download.scm \ build-aux/generate-authors.scm \ build-aux/test-driver.scm \ + build-aux/update-guix-package.scm \ + build-aux/update-NEWS.scm \ build-aux/run-system-tests.scm \ d3.v3.js \ graph.js \ @@ -481,32 +499,42 @@ endif BUILD_DAEMON ACLOCAL_AMFLAGS = -I m4 # Pass an explicit '--localstatedir' so that configure does not error out if -# it finds an existing installation with a different localstatedir. +# it finds an existing installation with a different localstatedir. Inherit +# 'ac_cv_guix_test_root' so that "make check" in $(distdir) does not have to +# repopulate the whole store, and to make sure $(GUIX_TEST_ROOT) is short +# enough for shebangs. AM_DISTCHECK_CONFIGURE_FLAGS = \ --localstatedir="$$dc_install_base/var" \ --with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)" \ --with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)" \ --with-nix-prefix="$(NIX_PREFIX)" \ - --enable-daemon + --enable-daemon \ + ac_cv_guix_test_root="$(GUIX_TEST_ROOT)" -# The self-contained tarball. +# The self-contained tarball. Add 'glibc-utf8-locales' along with glibc just +# so 'etc/profile' defines 'GUIX_LOCPATH' pointing to a valid set of locales. guix-binary.%.tar.xz: - $(AM_V_GEN)GUIX_PACKAGE_PATH= \ - tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \ - -s "$*" --localstatedir guix` ; \ + $(AM_V_GEN)GUIX_PACKAGE_PATH= \ + tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz \ + -s "$*" --localstatedir guix glibc-utf8-locales \ + -e '(@@ (gnu packages commencement) glibc-final)'` ; \ cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@" -dist-hook: sync-descriptions gen-ChangeLog gen-AUTHORS +dist-hook: $(distdir)/ChangeLog gen-AUTHORS gen-tarball-version dist-hook: assert-no-store-file-names distcheck-hook: assert-binaries-available assert-final-inputs-self-contained -sync-descriptions: - $(AM_V_at)GUIX_PACKAGE_PATH= \ - $(top_builddir)/pre-inst-env guix lint --checkers=gnu-description +EXTRA_DIST += $(top_srcdir)/.version +BUILT_SOURCES += $(top_srcdir)/.version +$(top_srcdir)/.version: + echo $(VERSION) > "$@-t" && mv "$@-t" "$@" + +gen-tarball-version: + echo $(VERSION) > "$(distdir)/.tarball-version" -gen-ChangeLog: +gen-ChangeLog $(distdir)/ChangeLog: $(AM_V_GEN)if test -d .git; then \ $(top_srcdir)/build-aux/gitlog-to-changelog \ > $(distdir)/cl-t; \ @@ -522,8 +550,134 @@ gen-AUTHORS: "$(top_srcdir)" "$(distdir)/AUTHORS"; \ fi + +# +# Release management. +# + +releasedir = release-$(PACKAGE_VERSION) + +PACKAGE_FULL_TARNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION) + +# List of source tarballs produced. This must be kept in sync with the +# 'dist-' options of 'AM_INIT_AUTOMAKE' in 'configure.ac'. +SOURCE_TARBALLS = \ + $(foreach ext,tar.gz,$(PACKAGE_FULL_TARNAME).$(ext)) + +# Systems supported by Guix. +SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux armhf-linux + +# Guix binary tarballs. +BINARY_TARBALLS = \ + $(foreach system,$(SUPPORTED_SYSTEMS),guix-binary.$(system).tar.xz) + +# Systems supported by GuixSD. +GUIXSD_SUPPORTED_SYSTEMS ?= x86_64-linux i686-linux + +# Systems for which we build GuixSD VMs. +GUIXSD_VM_SYSTEMS ?= x86_64-linux + +# Prefix of the GuixSD installation image file name. +GUIXSD_IMAGE_BASE = guixsd-usb-install-$(PACKAGE_VERSION) + +# Prefix of the GuixSD VM image file name. +GUIXSD_VM_IMAGE_BASE = guixsd-vm-image-$(PACKAGE_VERSION) + +# Size of the installation image (for x86_64 typically). +GUIXSD_INSTALLATION_IMAGE_SIZE ?= 950MiB + +# Size of the VM image (for x86_64 typically). +GUIXSD_VM_IMAGE_SIZE ?= 2GiB + +# The release process works in several phases: +# +# 0. We assume the developer created a 'vX.Y' tag. +# 1. Build the source tarball. +# 2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag. +# 3. Build the binary tarballs for that 'guix' package. +# 4. Update the 'guix' package again. +# 5. Build the GuixSD installation images. The images will run 'guix' +# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'. +# +# This 'release' target takes care of everything and copies the resulting +# files to $(releasedir). +# +# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext +# issue described at <https://savannah.gnu.org/bugs/index.php?51027>. +release: dist + cd po; git checkout . + @if ! git diff-index --quiet HEAD; then \ + echo "There are uncommitted changes; stopping." >&2 ; \ + exit 1 ; \ + fi + $(MKDIR_P) "$(releasedir)" + rm -f "$(releasedir)"/* + mv $(SOURCE_TARBALLS) "$(releasedir)" + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" "$(PACKAGE_VERSION)" + git add $(top_srcdir)/gnu/packages/package-management.scm + git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)." + rm -f $(BINARY_TARBALLS) + $(MAKE) $(BINARY_TARBALLS) + for system in $(SUPPORTED_SYSTEMS) ; do \ + mv "guix-binary.$$system.tar.xz" \ + "$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \ + done + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" + git add $(top_srcdir)/gnu/packages/package-management.scm + git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`." + for system in $(GUIXSD_SUPPORTED_SYSTEMS) ; do \ + image=`$(top_builddir)/pre-inst-env \ + guix system disk-image \ + --system=$$system \ + --image-size=$(GUIXSD_INSTALLATION_IMAGE_SIZE) \ + gnu/system/install.scm` ; \ + if [ ! -f "$$image" ] ; then \ + echo "failed to produced GuixSD installation image for $$system" >&2 ; \ + exit 1 ; \ + fi ; \ + xz < "$$image" > "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp" ; \ + mv "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp" \ + "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz" ; \ + done + for system in $(GUIXSD_VM_SYSTEMS) ; do \ + image=`$(top_builddir)/pre-inst-env \ + guix system vm-image \ + --system=$$system \ + --image-size=$(GUIXSD_VM_IMAGE_SIZE) \ + gnu/system/examples/vm-image.tmpl` ; \ + if [ ! -f "$$image" ] ; then \ + echo "failed to produced GuixSD VM image for $$system" >&2 ; \ + exit 1 ; \ + fi ; \ + xz < "$$image" > "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" ; \ + mv "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz.tmp" \ + "$(releasedir)/$(GUIXSD_VM_IMAGE_BASE).$$system.xz" ; \ + done + @echo + @echo "Congratulations! All the release files are now in $(releasedir)." + @echo + +update-guix-package: + git rev-parse HEAD + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-guix-package.scm \ + "`git rev-parse HEAD`" + +# Location of a checkout of <git://git.savannah.gnu.org/guix/maintenance.git>. +# Package data from this checkout is used by 'update-NEWS.scm'. +GUIX_MAINTENANCE_DIRECTORY ?= $(top_srcdir)/../guix-maintenance + +update-NEWS: $(GOBJECTS) + $(top_builddir)/pre-inst-env "$(GUILE)" \ + $(top_srcdir)/build-aux/update-NEWS.scm \ + $(top_srcdir)/NEWS "$(GUIX_MAINTENANCE_DIRECTORY)/data" + # Make sure we're not shipping a file that embeds a local /gnu/store file name. -assert-no-store-file-names: +assert-no-store-file-names: $(distdir)/ChangeLog $(AM_V_at)if grep -r --exclude=*.texi --exclude=*.info \ --exclude=*.info-[0-9] --exclude=*.dot \ --exclude=*.eps --exclude-dir=bootstrap \ @@ -553,9 +707,11 @@ hydra-jobs.scm: $(GOBJECTS) "$(top_srcdir)/build-aux/hydra/gnu-system.scm" > "$@.tmp" $(AM_V_at)mv "$@.tmp" "$@" -.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go +.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version .PHONY: assert-no-store-file-names assert-binaries-available .PHONY: assert-final-inputs-self-contained +.PHONY: clean-go make-go +.PHONY: update-guix-package update-NEWS release ## -------------- ## ## Silent rules. ## diff --git a/NEWS b/NEWS index 8b6727fd93..8280902557 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ #+TITLE: Guix NEWS – history of user-visible changes #+STARTUP: content hidestars -Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -10,6 +10,615 @@ Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> Please send Guix bug reports to bug-guix@gnu.org. +* Changes in 0.13.0 (since 0.12.0) + +** Package management + +*** Guix can now be used on aarch64 GNU/Linux systems +*** New ‘guix pack’ command to create bundles +*** New ‘guix copy’ command to copy store items over SSH +*** New ‘--cache’ option for ‘guix publish’ +*** $GUIX_DAEMON_SOCKET can specify remote daemons +*** Guix can now run on Guile 2.2, providing better performance +*** Emacs interface moved to separate Emacs-Guix package +*** New ‘--root’ option for ‘guix environment’ +*** ‘guix pull’ now connects to git.savannah.gnu.org over HTTPS +*** New cross-compilation targets: aarch64-linux-gnu, powerpc-linux-gnu +*** Packages can specify “single-entry search paths” (e.g., ‘GIT_EXEC_PATH’) +*** ‘guix import’ and ‘guix refresh’ now support Stackage +*** Support for the deprecated “PKG-VERSION” syntax has been removed +*** New Cypher backend for ‘guix graph’ +*** GnuTLS (Guile bindings) is now required +*** Guix now issues a warning when it detects that Guix has not been upgraded in a while + +** Distribution + +*** The GuixSD installation image supports (U)EFI systems +*** GuixSD supports Btrfs (<http://bugs.gnu.org/19280>) +*** Some system services are now run in separate namespaces (“containers”) +*** The LXDE desktop environment is now available +*** ‘grub-configuration’ can specify settings for the user interface +*** Service types can now specify a default value for services +*** Create the /var/log/wtmp and /var/log/utmpx databases +*** A raw initial RAM disk can be created to support systems with custom kernel configurations +*** ‘static-networking’ service can now be extended +*** Configuration of ‘nginx-service-type’ has been greatly improved +*** New ‘gnu-build-system’ phase to always reset gzip timestamps +*** New services + +exim, mail-aliases, inetd, agetty, openvswitch, special-files, redis, +thermald + +*** 840 new packages + +0ad, 0ad-data, adb, alpine, alsa-plugins, angband, antlr2, antlr3, +appstream-glib, aris, aspell-dict-pt-br, asunder, balsa, bam, beep, +binutils-vc4, blind, blists, btrfs-progs-static, camlzip, cargo, catdoc, +catimg, ccd2cue, cdogs-sdl, cdrtools, ceph, checkpolicy, cifs-utils, cmst, +colors, compface, compton, cool-retro-term, corrode, crawl, darcs, +darktable, dcmtk, deutex, ding-libs, dotherside, dovecot-libsodium-plugin, +dovecot-trees, dub, dvd+rw-tools, dvdauthor, dvdstyler, dzen, e3, electrum, +emacs-adaptive-wrap, emacs-ag, emacs-aggressive-indent, emacs-alert, +emacs-ansi, emacs-calfw, emacs-cdlatex, emacs-commander, +emacs-default-encrypt, emacs-diminish, emacs-dream-theme, +emacs-evil-commentary, emacs-evil-surround, emacs-exwm, emacs-git-gutter, +emacs-git-timemachine, emacs-gntp, emacs-gnuplot, emacs-google-maps, +emacs-highlight-sexp, emacs-ht, emacs-htmlize, emacs-idle-highlight, +emacs-key-chord, emacs-keyfreq, emacs-linum-relative, emacs-log4e, +emacs-memoize, emacs-mew, emacs-monroe, emacs-mu4e-alert, emacs-ox-twbs, +emacs-pretty-mode, emacs-strace-mode, emacs-stripe-buffer, emacs-sx, +emacs-symon, emacs-transpose-frame, emacs-use-package, emacs-xelb, +emacs-xmlgen, emacs-yasnippet, emacspeak, enigma, ert-runner, es, +eudev-with-hwdb, f3, fabric, fcitx-configtool, filezilla, fillets-ng, +fish-guix, fmt, font-awesome, font-cns11643, font-cns11643-swjz, +font-comic-neue, font-go, font-google-material-design-icons, +font-google-roboto, font-iosevka, font-linuxlibertine, font-tamzen, +font-wqy-microhei, fortify-headers, fprintd, freeciv, freedoom, freegish, +freerdp, freetalk, freexl, gcc-vc4, gcompris-qt, geos, ghc-code-page, +ghc-hslogger, ghc-json, ghc-language-c, ghc-markdown-unlit, ghc-setlocale, +ghc-unexceptionalio, ghc-wave, git-crypt, gl2ps, gnome-autoar, +gnome-disk-utility, gnumach, gnushogi, gnustep-make, gpicview, grafx2, +graphene, guildhall, guile-8sync, guile-bash, guile-fibers, guile-git, +guile-ics, guile-miniadapton, guile-sdl2, guile-sjson, +guile-syntax-highlight, guile2.0-commonmark, guile2.0-haunt, guile2.0-json, +guile2.0-reader, guile2.0-ssh, guile2.2-gdbm-ffi, guile2.2-gnutls, +guile2.2-haunt, guile2.2-lib, guile2.2-reader, guile2.2-ssh, heimdal, +hiawatha, hisat2, http-parser, httpfs2, httpstat, hubbub, human, hurd, +hyperestraier, idris-bifunctors, idris-lens, idris-lightyear, +idris-wl-pprint, intel-gpu-tools, itpp, jacal, java-asm, java-cglib, +java-commons-cli, java-commons-codec, java-commons-collections4, +java-commons-compress, java-commons-daemon, java-commons-io, +java-commons-lang, java-commons-lang3, java-commons-logging-minimal, +java-commons-math3, java-commons-net, java-easymock, java-eclipse-ant-core, +java-eclipse-compare-core, java-eclipse-core-commands, +java-eclipse-core-contenttype, java-eclipse-core-expressions, +java-eclipse-core-filesystem, java-eclipse-core-jobs, +java-eclipse-core-resources, java-eclipse-core-runtime, +java-eclipse-core-variables, java-eclipse-equinox-app, +java-eclipse-equinox-common, java-eclipse-equinox-preferences, +java-eclipse-equinox-registry, java-eclipse-jdt-core, java-eclipse-osgi, +java-eclipse-team-core, java-eclipse-text, java-guava, java-hamcrest-all, +java-httpcomponents-httpclient, java-httpcomponents-httpcore, +java-httpcomponents-httpcore-ab, java-httpcomponents-httpcore-nio, +java-httpcomponents-httpmime, java-icu4j, java-javax-mail, java-jmh, +java-jmock, java-jopt-simple, java-jsch, java-jsr305, java-log4j-api, +java-mockito, java-objenesis, java-osgi-annotation, java-osgi-core, +java-osgi-service-event, java-plexus-interpolation, java-plexus-utils, +java-rsyntaxtextarea, java-simple-xml, java-usb4java, joe, kakoune, +keybinder, kiki, knot, lchat, le-certs, leafpad, lensfun, leveldb, libbson, +libcss, libdom, libfilezilla, libfprint, libgig, libgme, +libgnome-games-support, libircclient, libmesode, libmnl, libmp4v2, +libmpack, libnftnl, libnsbmp, libnsgif, libnspsl, libnsutils, +libparserutils, libpng-apng, libselinux, libsemanage, libsepol, libsmf, +libstaroffice, libstrophe, libsvgtiny, libtorrent-rasterbar, liburcu, +libusb4java, libutf, libvterm, libwapcaplet, libxls, libzmf, lierolibre, +light, lightdm, lightdm-gtk-greeter, linsmith, linuxdcpp, +llvm-for-extempore, lmms, loudmouth, lshw, lsyncd, lua-libmpack, +lua5.2-bitop, lua5.2-libmpack, lua5.2-lpeg, lugaru, luminance-hdr, lush2, +lxde, lxde-common, lxde-icon-theme, lxinput, lxmenu-data, lxpanel, +lxsession, maxflow, mbedtls-apache, mcabber, mcomix, mdbtools, megaglest, +megaglest-data, menumaker, mes, meson, mia, minizip, mlmmj, +multipath-tools, neofetch, neomutt, neovim, neovim-syntastic, +netcdf-fortran, niftilib, nim, nnn, no-more-secrets, noice, non-mixer, +non-timeline, nsgenbind, nss-pam-ldapd, nyacc, nyx, obconf, obnam, +ocaml-alcotest, ocaml-astring, ocaml-base64, ocaml-batteries, +ocaml-bin-prot, ocaml-bisect, ocaml-bitstring, ocaml-bos, ocaml-cmdliner, +ocaml-cppo, ocaml-csv, ocaml-expect, ocaml-fieldslib, ocaml-fileutils, +ocaml-fmt, ocaml-fpath, ocaml-frontc, ocaml-gsl, ocaml-js-build-tools, +ocaml-jsonm, ocaml-logs, ocaml-lwt, ocaml-mcl, ocaml-mtime, ocaml-oasis, +ocaml-ocurl, ocaml-ounit, ocaml-pcre, ocaml-ppx-assert, ocaml-ppx-bench, +ocaml-ppx-compare, ocaml-ppx-core, ocaml-ppx-deriving, ocaml-ppx-driver, +ocaml-ppx-enumerate, ocaml-ppx-here, ocaml-ppx-inline-test, ocaml-ppx-let, +ocaml-ppx-optcomp, ocaml-ppx-sexp-conv, ocaml-ppx-tools, +ocaml-ppx-type-conv, ocaml-ppx-typerep-conv, ocaml-ppx-variants-conv, +ocaml-qcheck, ocaml-qtest, ocaml-react, ocaml-result, ocaml-rresult, +ocaml-sexplib, ocaml-sqlite3, ocaml-ssl, ocaml-stringext, ocaml-topkg, +ocaml-typerep, ocaml-uchar, ocaml-ulex, ocaml-uutf, ocaml-variantslib, +ocaml-xmlm, ocaml-zarith, ocaml4.01-batteries, ocaml4.01-bisect, +ocaml4.01-camlzip, ocaml4.01-csv, ocaml4.01-findlib, ocaml4.01-gsl, +ocaml4.01-mcl, ocaml4.01-ounit, ocaml4.01-qtest, ocaml4.01-sqlite3, +ocaml4.01-xmlm, ocamlify, ocamlmod, omake, opencascade-oce, openspin, +openvswitch, orca, ovmf, pcc, pdfgrep, perl-any-moose, perl-anyevent, +perl-anyevent-i3, perl-async-interrupt, perl-canary-stability, +perl-cddb-get, perl-crypt-rc4, perl-cwd-guard, perl-devel-checkcompiler, +perl-ev, perl-extutils-depends, perl-extutils-pkgconfig, perl-file-pushd, +perl-module-build-xsutil, perl-mouse, perl-mousex-nativetraits, +perl-ole-storage-lite, perl-parallel-forkmanager, perl-switch, +perl-test-needs, perl-test-number-delta, perl-x11-xcb, perl-xml-descent, +perl-xml-tokeparser, perl-xs-object-magic, phonon-backend-gstreamer, +pngcrunch, policycoreutils, polkit-gnome, ponymix, pootle, postorius, +pplacer, prboom-plus, profanity, proj.4, proot, proot-static, +propeller-development-suite, propeller-gcc, propeller-load, +propeller-toolchain, proplib, prout, python-astroid, python-autopep8, +python-colorspacious, python-configparser, python-cram, python-cssmin, +python-cssutils, python-cycler, python-ddt, python-defusedxml, +python-diff-match-patch, python-dirsync, python-dj-database-url, +python-django-allauth, python-django-appconf, python-django-assets, +python-django-bulk-update, python-django-contact-form, +python-django-contrib-comments, python-django-gravatar2, +python-django-jsonfield, python-django-mailman3, python-django-overextends, +python-django-redis, python-django-rq, python-django-sortedm2m, +python-django-statici18n, python-dulwich, python-elasticsearch, +python-eventlet, python-factory-boy, python-faker, python-fakeredis, +python-fastimport, python-flake8-polyfill, python-flask-htmlmin, +python-flask-login, python-flask-multistatic, python-flask-oidc, +python-flask-wtf, python-fudge, python-geventhttpclient, python-gpg, +python-hdf4, python-hiredis, python-htmlmin, python-httpbin, python-ipy, +python-isort, python-kitchen, python-levenshtein, python-lz4, python-lzo, +python-mando, python-mando, python-matplotlib-documentation, python-mpmath, +python-munch, python-mwclient, python-mysqlclient, python-netcdf4, +python-nosexcover, python-numpy-documentation, python-oauth2client, +python-openid, python-openid-cla, python-openid-teams, +python-paramunittest, python-pbkdf2, python-poppler-qt5, python-pyatspi, +python-pycosat, python-pygit2, python-pykka, python-pylint, +python-pyodbc-c, python-pypeg2, python-pytest-catchlog, +python-pytest-httpbin, python-pytest-warnings, python-qrcode, python-reno, +python-rst2ansi, python-scandir, python-sepolgen, python-setools, +python-sge-pygame, python-snowballstemmer, python-sockjs-tornado, +python-sphinx-alabaster-theme, python-sphinx-cloud-sptheme, +python-sphinx-me, python-straight-plugin, python-tmx, +python-translate-toolkit, python-trollius-redis, python-utils, +python-webassets, python-xdo, python2-astroid, python2-autopep8, +python2-backports-functools-lru-cache, +python2-backports-shutil-get-terminal-size, python2-cheetah, +python2-cliapp, python2-colorspacious, python2-configparser, +python2-coverage-test-runner, python2-cram, python2-cssmin, python2-cycler, +python2-ddt, python2-defusedxml, python2-diff-match-patch, python2-dirsync, +python2-dj-database-url, python2-django-allauth, python2-django-appconf, +python2-django-assets, python2-django-bulk-update, +python2-django-contact-form, python2-django-contrib-comments, +python2-django-gravatar2, python2-django-jsonfield, +python2-django-mailman3, python2-django-overextends, python2-django-redis, +python2-django-rq, python2-django-sortedm2m, python2-django-statici18n, +python2-dulwich, python2-elasticsearch, python2-eventlet, +python2-factory-boy, python2-faker, python2-fakeredis, python2-fastimport, +python2-flake8-polyfill, python2-flask-htmlmin, python2-flask-login, +python2-flask-multistatic, python2-flask-wtf, python2-fudge, +python2-geventhttpclient, python2-gpg, python2-hdf4, python2-hiredis, +python2-htmlmin, python2-httpbin, python2-isort, python2-kitchen, +python2-larch, python2-levenshtein, python2-lz4, python2-lzo, +python2-mando, python2-matplotlib-documentation, python2-mpmath, +python2-munch, python2-mwclient, python2-mysqlclient, python2-netcdf4, +python2-nosexcover, python2-numpy-documentation, python2-openid, +python2-openid-cla, python2-openid-teams, python2-paramunittest, +python2-pbkdf2, python2-pycosat, python2-pygame, python2-pygit2, +python2-pykka, python2-pylint, python2-pyodbc-c, python2-pytest-catchlog, +python2-pytest-httpbin, python2-pytest-warnings, python2-qrcode, +python2-reno, python2-ruamel.ordereddict, python2-scandir, +python2-sge-pygame, python2-slowaes, python2-snowballstemmer, +python2-sockjs-tornado, python2-sphinx-alabaster-theme, +python2-sphinx-cloud-sptheme, python2-sphinx-me, python2-stemming, +python2-straight-plugin, python2-subprocess32, python2-tmx, +python2-tracing, python2-translate-toolkit, python2-trollius-redis, +python2-ttystatus, python2-utils, pzstd, qdbm, qjackctl, qtcanvas3d, +qtcharts, qtdatavis3d, qtdeclarative-render2d, qtgamepad, qtpurchasing, +qtscxml, qtserialbus, qutebrowser, r-affy, r-affyio, r-ape, r-base64, +r-beeswarm, r-bookdown, r-boot, r-bsgenome-hsapiens-1000genomes-hs37d5, +r-cairo, r-car, r-caret, r-centipede, r-chipseq, r-class, r-commonmark, +r-compquadform, r-copyhelper, r-copywriter, r-cowplot, r-delayedarray, +r-deoptimr, r-desc, r-diptest, r-fastica, r-fivethirtyeight, r-flexmix, +r-fnn, r-fpc, r-genomeinfodbdata, r-ggbeeswarm, r-ggthemes, r-lars, r-lme4, +r-maldiquant, r-mass, r-matrixmodels, r-mclust, r-minimal, r-minqa, +r-mixtools, r-mnormt, r-modelmetrics, r-modeltools, r-msnbase, r-msnid, +r-mzid, r-mzr, r-nlme, r-nloptr, r-numderiv, r-pbapply, r-pbkrtest, +r-pcamethods, r-plogr, r-prabclus, r-protgenerics, r-quantreg, +r-randomforest, r-ranger, r-rann, r-raremetals2, r-rcppeigen, +r-rcppprogress, r-rhdf5, r-robustbase, r-rprojroot, r-seqminer, r-seurat, +r-sn, r-sourcetools, r-spatial, r-statmod, r-sva, r-tclust, r-trimcluster, +r-tsne, r-txdb-mmusculus-ucsc-mm10-knowngene, r-tximport, r-vgam, r-vipor, +r-vsn, rdma-core, re2c, reducelcs, ribodiff, ripit, rocksdb, roffit, +rsnapshot, ruby-mail, sambamba, sbm, scheme48-rx, scm, scrypt, scsh, +seabios, secilc, sedsed, shellcheck, simh, skroll, slib, sonic, +speedtest-cli, speexdsp, spin2cpp, spinsim, spoon, sssd, stringtemplate3, +stringtemplate4, stunnel, swaks, syslinux, sysstat, tailon, talloc-static, +tango-icon-theme, taxtastic, tclx, teeworlds, tftp-hpa, thermald, +tidy-html, tipp10, tlp, tokyocabinet, tracker, tremc, twm, unibilium, +unrar, vim-airline, vim-airline-themes, vim-context-filetype, vim-luna, +vim-neocomplete, vim-neosnippet, vim-neosnippet-snippets, vim-scheme, +vim-syntastic, vinagre, volk, wificurse, wimlib, wwwoffle, wxsvg, xbattmon, +xcalc, xdot, xerces-c, xfce4-notifyd, xinetd, xmag, xmessage, xshogi, +you-get, youtube-dl-gui, zile-on-guile, zpaq, zstd + +*** 1220 package updates + +abbaye@2.0.1, abcde@2.8.1, abiword@3.0.2, acct@6.6.3, acme-client@0.1.16, +acpid@2.0.28, adwaita-icon-theme@3.24.0, aide@0.16, aisleriot@3.22.1, +allegro@5.0.11, allegro@5.2.0, alsa-lib@1.1.3, alsa-utils@1.1.3, +ams-lv2@1.2.1, amsynth@1.7.1, ansible@2.3.0.0, ant@1.9.9, apl@1.7, +aqbanking@5.6.12, arb@2.10.0, arc-icon-theme@20161122, arc-theme@20170302, +ardour@5.8, aria-maestosa@1.4.13, aria2@1.31.0, +arm-none-eabi-nano-toolchain@6.3.0, arm-none-eabi-toolchain@6.3.0, +armadillo@7.800.2, aseprite@1.1.7, assword@0.10, asymptote@2.41, +at-spi2-atk@2.22.0, at-spi2-core@2.22.0, atk@2.22.0, attica@5.34.0, +audacity@2.1.3, augeas@1.8.0, autoconf-archive@2017.03.21, autoconf@2.69, +awesome@4.0, awscli@1.11.63, baloo@5.34.0, bamtools@2.4.1, baobab@3.24.0, +bash-completion@2.5, bash-minimal@4.4.12, bash-static@4.4.12, bash@4.4.12, +bc@1.07.1, bedtools@2.26.0, beets@1.4.3, bind@9.11.1, bioruby@1.5.1, +bison@3.0.4, bitcoin-core@0.14.1, bitlbee@3.5.1, bluez-qt@5.34.0, +bluez@5.44, boost@1.63.0, borg@1.0.10, breeze-icons@5.34.0, +bs1770gain@0.4.12, btrfs-progs@4.10.2, bullet@2.86.1, bundler@1.14.5, +busybox@1.26.0, cairo-xcb@1.14.8, cairo@1.14.8, cairomm@1.12.2, +calibre@2.76.0, capnproto@0.6.0, cbatticon@1.6.5, ccache@3.3.4, +ccid@1.4.26, cd-hit@4.6.6, certbot@0.14.0, cgit@1.1, chicken@4.12.0, +cl-stumpwm@1.0.0, clang-runtime@3.9.1, clang@3.6.2, clang@3.7.1, +clang@3.8.1, clang@3.9.1, claws-mail@3.15.0, clutter-gst@3.0.22, +clutter-gtk@1.8.2, cmake@3.7.2, cmark@0.27.1, coda@2.18, cogl@1.22.2, +conky@1.10.6, connman@1.34, coreutils-minimal@8.26, coreutils@8.26, +coreutils@8.27, cppcheck@1.78, cpupower@4.11, cryptsetup-static@1.7.5, +cryptsetup@1.7.5, cuirass@0.0.1-6.870e8d6, cups-filters@1.13.1, +curl@7.53.0, d-feet@0.3.11, dash@0.5.9.1, datamash@1.1.1, dbus-glib@0.108, +dbus@1.10.16, dconf-editor@3.22.1, ddrescue@1.22, denemo@2.1, +desktop-file-utils@0.23, devhelp@3.22.0, devil@1.8.0, di@4.43, +diamond@0.8.38, diffoscope@81, diffstat@1.61, direnv@2.11.3, dlib@19.3, +dmenu@4.7, dnscrypt-proxy@1.9.5, docbook-xml@4.4, docbook-xml@4.5, +dosfstools@4.1, dovecot@2.2.29.1, doxygen@1.8.13, dropbear@2017.75, +drumkv1@0.8.2, dtc@1.4.4, duplicity@0.7.12, dwm@6.1, e2fsck-static@1.43.4, +e2fsprogs@1.43.4, ecl-stumpwm@1.0.0, ecl@16.1.3, ed@1.14.1, efl@1.18.5, +elfutils@0.169, elixir@1.4.2, emacs-auctex@11.90.0, emacs-bui@1.1.0, +emacs-clojure-mode@5.4.0, emacs-company@0.9.3, emacs-debbugs@0.14, +emacs-elfeed@2.1.0, emacs-emms@4.3, emacs-flycheck@30, emacs-guix@0.3.1, +emacs-ivy@0.9.1, emacs-magit-popup@2.10.3, emacs-minimal@25.2, +emacs-no-x-toolkit@25.2, emacs-no-x@25.2, emacs-org@20170502, +emacs-projectile@0.14.0, emacs-seq@2.19, emacs-slime@2.19, +emacs-smartparens@1.10.1, emacs-spinner@1.7.3, emacs-with-editor@2.5.10, +emacs-zenburn-theme@2.5, emacs@25.2, enlightenment@0.21.7, eog@3.20.5, +epiphany@3.22.7, erlang@19.3, ethtool@4.10, eudev@3.2.1, evince@3.22.1, +evolution-data-server@3.22.3, exempi@2.4.2, exfat-utils@1.2.6, exim@4.87.1, +extra-cmake-modules@5.34.0, extremetuxracer@0.7.4, eyed3@0.7.10, +fatfsck-static@4.1, faust@2.0.a51, feh@2.18.3, ffmpeg@2.8.11, ffmpeg@3.3.1, +file-roller@3.22.2, fio@2.19, fish@2.5.0, flac@1.3.2, flex@2.6.1, +flex@2.6.3, font-abattis-cantarell@0.0.25, font-gnu-unifont@9.0.06, +freefall@4.11, freetype@2.7.1, frescobaldi@3.0.0, fuse-exfat@1.2.6, +fuse@2.9.7, gajim@0.16.7, gcal@4.1, +gcc-cross-sans-libc-arm-none-eabi@5.4.0-1.227977, +gcc-cross-sans-libc-arm-none-eabi@6.3.0, gcc-stripped-tarball@5.4.0, +gcc-toolchain@4.9.4, gcc-toolchain@5.4.0, gcc-toolchain@6.3.0, +gcc-toolchain@7.1.0, gcc@4.8.5, gcc@4.9.4, gcc@5.4.0, gcc@6.3.0, gcc@7.1.0, +gcj@5.4.0, gd@2.2.4, gdb-arm-none-eabi@7.12.1, gdb@7.12.1, +gdk-pixbuf+svg@2.36.6, gdk-pixbuf@2.36.6, gdm@3.22.1, gedit@3.22.0, +geoclue@2.4.6, getmail@4.52.0, gflags@2.2.0, gfortran@6.3.0, +gfortran@7.1.0, ghc-quickcheck-instances@0.3.12, ghc-quickcheck@2.8.2, +ghc-semigroups@0.18.2, ghc-xmonad-contrib@0.12, ghc@8.0.2, +giac-xcas@1.2.3-37, gimp@2.8.22, girara@0.2.7, git-modes@1.2.4, git@2.13.0, +gitolite@3.6.6, gjs@1.46.0, glib-networking@2.50.0, glib@2.50.3, +glibc-hurd-headers@2.23, glibc-hurd@2.23, glibc-locales@2.25, +glibc-utf8-locales@2.25, glibc@2.22, glibc@2.23, glibc@2.24, glibc@2.25, +glibmm@2.50.0, global@6.5.6, glpk@4.61, glulxe@0.5.4, gmime@2.6.23, +gmp@6.1.2, gmsh@2.16.0, gnome-backgrounds@3.22.1, gnome-calendar@3.22.2, +gnome-control-center@3.22.1, gnome-desktop@3.22.2, gnome-klotski@3.22.1, +gnome-mines@3.22.2, gnome-mpv@0.11, gnome-online-accounts@3.22.3, +gnome-screenshot@3.22.0, gnome-session@3.22.2, +gnome-settings-daemon@3.22.1, gnome-shell-extensions@3.22.2, +gnome-shell@3.22.2, gnome-sudoku@3.22.2, gnome-system-monitor@3.22.2, +gnome-terminal@3.24.1, gnome-themes-standard@3.22.2, +gnome-tweak-tool@3.22.0, gnome@3.22.2, gnubik@2.4.3, gnucash@2.6.16, +gnupg@2.0.30, gnupg@2.1.20, gnuplot@5.0.6, gnurl@7.54.0, gnutls@3.5.9, +go@1.8.1, gobject-introspection@1.50.0, goffice@0.10.34, googletest@1.8.0, +gp2c@0.0.10, gparted@0.28.1, gperf@3.1, gpgme@1.9.0, +graphicsmagick@1.3.25-2.6156b4c, graphite2@1.3.9, greenisland@0.9.0.1, +grep@3.0, grilo-plugins@0.3.3, grilo@0.3.2, +gsettings-desktop-schemas@3.22.0, gst-libav@1.12.0, gst-plugins-bad@1.12.0, +gst-plugins-base@1.12.0, gst-plugins-good@1.12.0, gst-plugins-ugly@1.12.0, +gstreamer@1.12.0, gtk+@3.22.12, gtk-vnc@0.7.0, gtkmm@3.22.0, +gtksourceview@3.22.2, guile-aspell@0.4, +guile-bytestructures@20170402.91d042e, guile-daemon@0.1.2, +guile-json@0.6.0, guile-lib@0.2.5, guile-ncurses@2.2, guile-next@2.2.2, +guile-reader@0.6.2, guile-sqlite3@0.0-1.607721f, guile-ssh@0.11.0, +guile-static-stripped-tarball@2.0.14, guile-static-stripped@2.0.14, +guile2.2-json@0.6.0, guile@2.0.14, guile@2.2.2, guitarix-lv2@0.35.3, +guitarix@0.35.3, guix@0.12.0-11.ce92d26, gusb@0.2.9, gvfs@1.30.3, +gx-guvnor-lv2@0.1, gx-hyperion-lv2@0.1, gx-super-fuzz-lv2@0.1, +gx-suppa-tone-bender-lv2@0.1, gx-vintage-fuzz-master-lv2@0.1, +gx-voodoo-fuzz-lv2@0.1, gxtuner@2.4, harfbuzz@1.4.3, haunt@0.2.1, +hdf4-alt@4.2.12, hdf4@4.2.12, hdparm@9.52, hexchat@2.12.4, +hicolor-icon-theme@0.15, httpd@2.4.25, hwloc@1.11.7, hyperrogue@9.4g, +i3status@2.11, ibus-anthy@1.5.9, ibus-libpinyin@1.9.0, ibus@1.5.15, +icecat@52.1.0-gnu1, icedtea@3.3.0, icu4c@58.2, idris@1.0, +imagemagick@6.9.8-4, imlib2@1.4.10, inkscape@0.92.1, iperf@3.1.7, +iproute2@4.10.0, iptables@1.6.1, irssi@1.0.2, ixion@0.12.2, jack@0.125.0, +jalv-select@0.8, jalv@1.6.0, jasper@2.0.12, java-ngs@1.3.0, java-xz@1.6, +jemalloc@4.5.0, jsoncpp@1.8.0, julia@0.5.1, kactivities-stats@5.34.0, +kactivities@5.34.0, kapidox@5.34.0, karchive@5.34.0, kauth@5.34.0, +kbd@2.0.4, kbookmarks@5.34.0, kcmutils@5.34.0, kcodecs@5.34.0, +kcompletion@5.34.0, kconfig@5.34.0, kconfigwidgets@5.34.0, +kcoreaddons@5.34.0, kcrash@5.34.0, kdbusaddons@5.34.0, kdeclarative@5.34.0, +kded@5.34.0, kdesignerplugin@5.34.0, kdesu@5.34.0, kdevelop@5.1.0, +kdevplatform@5.1.0, kdnssd@5.34.0, kdoctools@5.34.0, kemoticons@5.34.0, +kfilemetadata@5.34.0, kglobalaccel@5.34.0, kguiaddons@5.34.0, khal@0.9.5, +khard@0.11.4, ki18n@5.34.0, kiconthemes@5.34.0, kidletime@5.34.0, +kimageformats@5.34.0, kinit@5.34.0, kio@5.34.0, kitemmodels@5.34.0, +kitemviews@5.34.0, kjobwidgets@5.34.0, kmod@24, knewstuff@5.34.0, +knotifications@5.34.0, knotifyconfig@5.34.0, kodi@18.0_alpha-4-b8ad238, +kpackage@5.34.0, kparts@5.34.0, kpeople@5.34.0, kplotting@5.34.0, +kpty@5.34.0, krunner@5.34.0, kservice@5.34.0, ksyntaxhighlighting@5.34.0, +ktexteditor@5.34.0, ktextwidgets@5.34.0, kunitconversion@5.34.0, +kwallet@5.34.0, kwayland@5.34.0, kwidgetsaddons@5.34.0, +kwindowsystem@5.34.0, kxmlgui@5.34.0, kxmlrpcclient@5.34.0, lablgtk@2.18.5, +lcms@2.8, ldc@0.17.3, ldc@1.1.1, leptonica@1.74.0, less@487, +letsencrypt@0.14.0, lftp@4.7.5, libarchive@3.2.2, libass@0.13.6, +libatomic-ops@7.4.4, libbluray@1.0.0, libcap@2.25, libchamplain@0.12.14, +libcmis@0.5.1, libdrm@2.4.80, libepoxy@1.4.1, libetonyek@0.1.6, +libetpan@1.8, libev@4.24, libevdev@1.5.6, libevent@2.1.8, libffcall@1.12, +libfm-extra@1.2.5, libfm@1.2.5, libgc@7.6.0, libgcrypt@1.7.6, +libgee@0.18.1, libgit2@0.25.1, libgnomekbd@3.22.0, libgpg-error@1.26, +libgsf@1.14.41, libgweather@3.20.4, libiberty@5.4.0, libiconv@1.15, +libidn2@0.16, libinput-minimal@1.7.0, libinput@1.7.0, libjpeg@9b, +libmp3splt@0.9.2, libmpdclient@2.11, libmtp@1.1.13, libnotify@0.7.7, +libosinfo@1.0.0, libpcap@1.8.1, libpciaccess@0.13.5, libpeas@1.20.0, +libpinyin@2.0.0, libpng@1.6.28, libpsl@0.17.0, libreoffice@5.3.1.2, +librep@0.92.6, libressl@2.5.4, libsamplerate@0.1.9, libseccomp@2.3.2, +libsndfile@1.0.28, libsodium@1.0.12, libssh2@1.8.0, libssh@0.7.4, +libtasn1@4.10, libtermkey@0.20, libtirpc@1.0.1, libunistring@0.9.7, +libupnp@1.6.21, libusb@1.0.21, libuv@1.11.0, libva@1.8.1, +libvirt-glib@1.0.0, libvirt@3.2.0, libvpx@1.6.1, libwacom@0.23, +libwebp@0.6.0, libwnck@3.20.1, libx11@1.6.5, libx264@20170316-2245, +libxcb@1.12, libxfont@2.0.1, libxi@1.7.9, libxkbcommon@0.7.1, +libxml++@3.0.1, libxpm@3.5.12, lilv@0.24.2, lilypond@2.19.58, +limnoria@2017.03.30, linux-libre-arm-generic@4.11, +linux-libre-headers@4.4.47, linux-libre@4.11, linux-libre@4.9.27, +linux-pam@1.3.0, llvm@3.6.2, llvm@3.7.1, llvm@3.8.1, llvm@3.9.1, lsof@4.89, +lua-lpeg@1.0.1, lua@5.3.4, luajit@2.1.0-beta2, lvm2-static@2.02.171, +lvm2@2.02.171, lxterminal@0.3.0, lynx@2.8.9dev.11, lz4@1.7.5, m4@1.4.18, +mafft@7.310, magit@2.10.3, mailutils@3.2, maim@4.4.62, man-pages@4.11, +manaplus@1.7.3.4, mariadb@10.1.23, mate-themes@3.22.10, mcelog@149, +mdadm-static@4.0, mdadm@4.0, mdds@1.2.2, menu-cache@1.0.2, +mesa-headers@17.0.4, mesa@17.0.4, mg@20161005, milkytracker@1.0.0, +minetest@0.4.15, miniupnpc@2.0.20170421, minixml@2.10, mit-krb5@1.14.4, +mlt@6.4.1, moc@2.5.2, mod-host@0.10.6-2.299a39774, modemmanager-qt@5.34.0, +moka-icon-theme@5.3.5, moreutils@0.60, mosh@1.3.0, mozjs@38.2.1.rc0, +mp3splt@2.6.2, mpd@0.20.6, mpfr@3.1.5, mpv@0.25.0, msgpack@1.4.2, +msmtp@1.6.6, mu@0.9.18, multiqc@0.9, mumble@1.2.19, mupdf@1.11, mutt@1.8.2, +mutter@3.22.2-1.23c315e, myrepos@1.20170129, mysql@5.7.18, nagios@4.2.4, +nano@2.8.2, nautilus@3.22.2, ncbi-vdb@2.8.2, ncmpc@0.27, neon@0.30.2, +netsurf@3.6, nettle@3.3, network-manager@1.6.2, networkmanager-qt@5.34.0, +nfs-utils@2.1.1, nginx@1.12.0, ngircd@24, ngs-sdk@1.3.0, ninja@1.7.2, +nix@1.11.9, nmap@7.40, node@7.8.0, non-sequencer@1.9.5-3.10c31e5, +non-session-manager@1.9.5-3.10c31e5, notmuch@0.24.1, nspr@4.14, +nss-certs@3.30.2, nss@3.30.2, ntp@4.2.8p10, obs@18.0.2, ocrad@0.26, +octave@4.2.1, offlineimap@7.1.0, ola@0.10.3, openjpeg@2.1.2, openssh@7.5p1, +openssl@1.1.0e, openvpn@2.4.2, opus@1.1.4, orcus@0.12.1, +owncloud-client@2.3.1, oxygen-icons@5.34.0, pango@1.40.3, +par2cmdline@0.7.0, parallel@20170422, pari-gp@2.9.1, password-store@1.7.1, +pciutils@3.5.4, pcmanfm@1.2.5, pcre2@10.23, pcre@8.40, pcsc-lite@1.8.20, +pd@0.47-1, perf@4.11, perl-b-hooks-endofscope@0.21, perl-capture-tiny@0.46, +perl-class-load@0.23, perl-clone@0.38, perl-common-sense@3.74, +perl-compress-raw-bzip2@2.074, perl-compress-raw-zlib@2.074, +perl-cpan-meta-check@0.011, perl-cpan-meta-requirements@2.140, +perl-cpan-meta-yaml@0.018, perl-db-file@1.840, perl-dbd-pg@3.5.3, +perl-dbd-sqlite@1.54, perl-devel-overloadinfo@0.004, +perl-devel-partialdump@0.18, perl-email-mime@1.940, +perl-email-simple@2.213, perl-image-exiftool@10.40, perl-io-compress@2.074, +perl-lingua-en-findnumber@1.32, perl-lingua-en-inflect-number@1.12, +perl-lingua-en-inflect@1.901, perl-lingua-en-number-isordinal@0.05, +perl-lingua-en-tagger@0.28, perl-module-runtime-conflicts@0.003, +perl-mojolicious@7.29, perl-moose@2.2004, +perl-package-deprecationmanager@0.17, perl-params-validate@1.26, +perl-parse-cpan-meta@2.150010, perl-scalar-list-utils@1.47, +perl-sub-name@0.21, perl-term-readkey@2.37, perl-test-cleannamespaces@0.22, +perl-test-exception@0.43, perl-test-simple@1.302078, +perl-test-warnings@0.026, perl-time-duration-parse@0.13, +perl-variable-magic@0.61, perl-xml-compile-soap@3.21, +perl-xml-compile-wsdl11@3.06, perl-yaml@1.23, perl-zip@1.59, phonon@4.9.1, +php@7.1.4, pianobar@2016.06.02, pidgin@2.12.0, pioneers@15.4, pius@2.2.4, +pkg-config@0.29.1, plasma-framework@5.34.0, podofo@0.9.5, +poppler-qt4@0.52.0, poppler-qt5@0.52.0, poppler@0.52.0, +portaudio@190600.20161030, postgresql@9.6.3, potrace@1.14, +powertabeditor@2.0.0-alpha9, progress@0.13.1, prosody@0.9.12, +proteinortho@5.16, proxychains-ng@4.12, psmisc@22.21, pugixml@1.8.1, +pulseaudio@10.0, python-acme@0.14.0, python-alembic@0.8.10, +python-appdirs@1.4.3, python-atomicwrites@1.1.5, python-babel@2.3.4, +python-backports-abc@0.5, python-beautifulsoup4@4.5.3, +python-botocore@1.5.26, python-certifi@2017.1.23, python-click-log@0.1.8, +python-click@6.7, python-colorama@0.3.7, python-cython@0.25.2, +python-dateutil@2.6.0, python-debian@0.1.28, python-decorator@4.0.10, +python-dendropy@4.2.0, python-django@1.10.7, python-drmaa@0.7.7, +python-email-validator@1.0.2, python-enum34@1.1.6, +python-feedgenerator@1.9, python-flake8@2.5.4, python-freezegun@0.3.8, +python-graphql-relay@0.4.5, python-greenlet@0.4.11, python-gst@1.12.0, +python-icalendar@3.11.4, python-ipaddress@1.0.18, python-ipykernel@4.5.2, +python-ipython@5.2.2, python-jupyter-core@4.2.1, python-libvirt@3.2.0, +python-llfuse@1.2, python-mako@1.0.6, python-markdown@2.6.8, +python-matplotlib@2.0.0, python-minimal-wrapper@3.5.3, +python-minimal@3.5.3, python-mistune@0.7.3, python-mutagen@1.36, +python-natsort@5.0.2, python-nbxmpp@0.5.5, python-ndg-httpsclient@0.4.2, +python-notmuch@0.24.1, python-numexpr@2.6.1, python-numpy@1.12.0, +python-orderedmultidict@0.7.11, python-oslosphinx@4.10.0, +python-pafy@0.5.3.1, python-pandas@0.19.2, python-paramiko@1.17.4, +python-parsedatetime@2.3, python-passlib@1.7.1, python-paste@2.0.3, +python-pbr@1.10.0, python-pexpect@4.2.1, python-pip@9.0.1, python-ply@3.9, +python-prompt-toolkit@1.0.9, python-psycopg2@2.6.2, +python-ptyprocess@0.5.1, python-publicsuffix2@2.20160818, python-py@1.4.32, +python-pycparser@2.17, python-pygame@1.9.3, python-pygments@2.1.3, +python-pygobject@3.22.0, python-pyicu@1.9.5, python-pyopenssl@17.0.0, +python-pyquery@1.2.17, python-pysam@0.10.0, python-pytest-cov@2.4.0, +python-pytest-django@3.1.2, python-pytest-runner@2.11.1, +python-pytest@3.0.7, python-pytz@2016.10, python-pyyaml@3.12, +python-rauth@0.7.3, python-redis@2.10.5, python-requests-mock@1.3.0, +python-requests@2.13.0, python-rq@0.7.1, python-s3transfer@0.1.10, +python-scikit-learn@0.18.1, python-scipy@0.18.1, python-seaborn@0.7.1, +python-setuptools-scm@1.15.0, python-sphinx@1.5.1, python-sphinx@1.5.3, +python-sphinxcontrib-programoutput@0.10, python-sqlalchemy-utils@0.32.13, +python-statsmodels@0.8.0, python-stem@1.5.4, python-sympy@1.0, +python-tabulate@0.7.7, python-testtools@1.4.0, python-texttable@0.8.7, +python-tornado@4.5.1, python-unidecode@0.04.20, python-waf@1.9.8, +python-wcwidth@0.1.7, python-werkzeug@0.11.15, python-wheel@0.30.0a0, +python-wrapper@3.5.3, python-wrapt@1.10.8, python-zope-component@4.3.0, +python2-acme@0.14.0, python2-alembic@0.8.10, python2-appdirs@1.4.3, +python2-atomicwrites@1.1.5, python2-babel@2.3.4, python2-backports-abc@0.5, +python2-beautifulsoup4@4.5.3, python2-botocore@1.5.26, +python2-certifi@2017.1.23, python2-click@6.7, python2-colorama@0.3.7, +python2-cython@0.25.2, python2-dateutil@2.6.0, python2-debian@0.1.28, +python2-decorator@4.0.10, python2-dendropy@4.2.0, python2-django@1.10.7, +python2-dogtail@0.9.9, python2-drmaa@0.7.7, python2-email-validator@1.0.2, +python2-enum34@1.1.6, python2-feedgenerator@1.9, python2-flake8@2.5.4, +python2-freezegun@0.3.8, python2-futures@3.0.5, +python2-graphql-relay@0.4.5, python2-greenlet@0.4.11, python2-gst@1.12.0, +python2-ipaddress@1.0.18, python2-ipykernel@4.5.2, python2-ipython@5.2.2, +python2-jupyter-core@4.2.1, python2-libvirt@3.2.0, python2-llfuse@1.2, +python2-mako@1.0.6, python2-markdown@2.6.8, python2-matplotlib@2.0.0, +python2-mistune@0.7.3, python2-mutagen@1.36, python2-natsort@5.0.2, +python2-nbxmpp@0.5.5, python2-ndg-httpsclient@0.4.2, +python2-notmuch@0.24.1, python2-numexpr@2.6.1, python2-numpy@1.12.0, +python2-orderedmultidict@0.7.11, python2-oslosphinx@4.10.0, +python2-pandas@0.19.2, python2-paramiko@1.17.4, python2-parsedatetime@2.3, +python2-passlib@1.7.1, python2-paste@2.0.3, python2-pbr@1.10.0, +python2-pexpect@4.2.1, python2-pip@9.0.1, python2-ply@3.9, +python2-prompt-toolkit@1.0.9, python2-psycopg2@2.6.2, +python2-ptyprocess@0.5.1, python2-publicsuffix2@2.20160818, +python2-py@1.4.32, python2-pycparser@2.17, python2-pygments@2.1.3, +python2-pygobject@3.22.0, python2-pyicu@1.9.5, python2-pyopenssl@17.0.0, +python2-pyquery@1.2.17, python2-pysam@0.10.0, python2-pysqlite@2.8.3, +python2-pytest-cov@2.4.0, python2-pytest-django@3.1.2, +python2-pytest-runner@2.11.1, python2-pytest@3.0.7, python2-pytz@2016.10, +python2-pyyaml@3.12, python2-rauth@0.7.3, python2-redis@2.10.5, +python2-requests-mock@1.3.0, python2-requests@2.13.0, python2-rq@0.7.1, +python2-s3transfer@0.1.10, python2-scikit-learn@0.18.1, +python2-scipy@0.18.1, python2-seaborn@0.7.1, python2-setuptools-scm@1.15.0, +python2-sphinx@1.5.1, python2-sphinxcontrib-programoutput@0.10, +python2-sqlalchemy-utils@0.32.13, python2-statsmodels@0.8.0, +python2-stem@1.5.4, python2-sympy@1.0, python2-tabulate@0.7.7, +python2-testtools@1.4.0, python2-texttable@0.8.7, python2-tornado@4.5.1, +python2-unidecode@0.04.20, python2-waf@1.9.8, python2-wcwidth@0.1.7, +python2-werkzeug@0.11.15, python2-wheel@0.30.0a0, python2-wrapt@1.10.8, +python2-xdo@0.3, python2-zope-component@4.3.0, python@3.5.3, qca@2.1.3, +qemu-minimal@2.9.0, qemu@2.9.0, qsyncthingtray@0.5.7, qsynth@0.4.4, +qt@5.6.2, qtbase@5.7.1, qtconnectivity@5.7.1, qtdeclarative@5.7.1, +qtgraphicaleffects@5.7.1, qtimageformats@5.7.1, qtkeychain@0.8.0, +qtlocation@5.7.1, qtmultimedia@5.7.1, qtquickcontrols2@5.7.1, +qtquickcontrols@5.7.1, qtractor@0.8.1, qtscript@5.7.1, qtsensors@5.7.1, +qtserialport@5.7.1, qtsvg@5.7.1, qttools@5.7.1, qtwayland@5.7.1, +qtwebchannel@5.7.1, qtwebkit@5.7.1, qtwebsockets@5.7.1, qtx11extras@5.7.1, +qtxmlpatterns@5.7.1, r-ade4@1.7-6, r-annotate@1.54.0, +r-annotationdbi@1.38.0, r-annotationforge@1.18.0, r-assertthat@0.2.0, +r-backports@1.0.5, r-bamsignals@1.8.0, r-bbmisc@1.11, r-bh@1.62.0-1, +r-biobase@2.36.0, r-bioccheck@1.12.0, r-biocgenerics@0.22.0, +r-biocinstaller@1.26.0, r-biocparallel@1.10.0, r-biocstyle@2.4.0, +r-biocviews@1.44.0, r-biomart@2.32.0, r-biostrings@2.44.0, +r-bsgenome@1.44.0, r-category@2.42.0, r-chron@2.3-50, r-cluster@2.0.6, +r-coda@0.19-1, r-colorspace@1.3-2, r-curl@2.5, r-data-table@1.10.4, +r-dbi@0.6-1, r-deseq2@1.16.0, r-digest@0.6.12, r-dnacopy@1.50.0, +r-e1071@1.6-8, r-edger@3.18.0, r-estimability@1.2, r-fastcluster@1.1.22, +r-gdtools@0.1.4, r-genefilter@1.58.0, r-geneplotter@1.54.0, +r-genomation@1.8.0, r-genomeinfodb@1.12.0, r-genomicalignments@1.12.0, +r-genomicfeatures@1.28.0, r-genomicranges@1.28.0, r-ggplot2@2.2.1, +r-git2r@0.18.0, r-gostats@2.42.0, r-graph@1.54.0, r-grohmm@1.10.0, +r-gseabase@1.38.0, r-hexbin@1.27.1-1, r-hmisc@4.0-2, r-hms@0.3, +r-htmltable@1.9, r-htmlwidgets@0.8, r-impute@1.50.0, r-iranges@2.10.0, +r-jsonlite@1.4, r-knitr@1.15.1, r-lattice@0.20-35, r-limma@3.32.0, +r-markdown@0.8, r-matrix@1.2-8, r-matrixstats@0.52.2, r-memoise@1.1.0, +r-mgcv@1.8-17, r-motifrg@1.20.0, r-multitaper@1.0-13, +r-mutationalpatterns@1.2.0, r-mvtnorm@1.0-6, r-openssl@0.9.6, +r-plotly@4.5.6, r-plotrix@3.6-4, r-pracma@2.0.4, r-preprocesscore@1.38.0, +r-qtl@1.40-8, r-r-rsp@0.41.0, r-r-utils@2.5.0, r-rbgl@1.52.0, r-rcas@1.1.1, +r-rcpp@0.12.10, r-rcpparmadillo@0.7.800.2.0, r-readr@1.1.0, +r-rhtslib@1.8.0, r-rmarkdown@1.4, r-roxygen2@6.0.1, r-rpart@4.1-11, +r-rsamtools@1.28.0, r-rsqlite@1.1-2, r-rtracklayer@1.36.0, r-rtsne@0.13, +r-s4vectors@0.14.0, r-scales@0.4.1, r-seqinr@3.3-6, r-seqlogo@1.42.0, +r-seqpattern@1.8.0, r-servr@0.5, r-shortread@1.34.0, r-sparsem@1.76, +r-stringi@1.1.5, r-stringr@1.2.0, r-summarizedexperiment@1.6.0, +r-survival@2.41-3, r-svglite@1.2.0, r-systempiper@1.10.0, r-tibble@1.3.0, +r-tidyr@0.6.1, r-topgo@2.28.0, r-variantannotation@1.22.0, r-vegan@2.4-3, +r-viridis@0.4.0, r-viridislite@0.2.0, r-xml2@1.1.1, r-xml@3.98-1.6, +r-xvector@0.16.0, r-yaml@2.1.14, r-zlibbioc@1.22.0, r-zoo@1.8-0, r@3.4.0, +racket@6.8, radeontop@1.0, radicale@1.1.2, ratpoison@1.4.9, +raul@0.8.4-1.f8bf77d3c, raxml@8.2.10, re2@2017-05-01, red-eclipse@1.5.8, +retroarch@1.5.0, rhythmbox@3.4.1, rofi@1.3.1, rpcbind@0.2.4, +ruby-coderay@1.1.1, ruby-hoe@3.16.0, ruby-minitar@0.5.4-1.e25205ec, +ruby-minitest@5.10.1, ruby-nokogiri@1.7.0.1, ruby-pry@0.10.4, +ruby-rspec-expectations@3.5.0, ruby-rspec@3.5.0, +ruby-shoulda-matchers@3.1.1, ruby-slop@4.1.0, ruby-sqlite3@1.3.13, +ruby-yard@0.9.6, rustc@1.16.0, samba@4.5.8, samplv1@0.8.2, samtools@1.3.1, +sbcl-stumpwm-with-slynk@1.0.0, sbcl-stumpwm@1.0.0, schismtracker@20170420, +screen@4.5.1, sdl-gfx@2.0.26, sed@4.4, serd@0.26.0, serf@1.3.9, +sessreg@1.1.1, setbfree@0.8.4, shadow@4.4, shared-mime-info@1.8, +shotwell@0.25.5, simple-scan@3.24.1, slock@1.4, slop@5.3.37, +slurm@16.05.9.1, snakemake@3.11.2, solid@5.34.0, sonnet@5.34.0, +sord@0.16.0, soxr@0.1.2, spice-gtk@0.33, spice-protocol@0.12.12, +sqlite@3.17.0, sra-tools@2.8.2-1, sratom@0.6.0, sshfs-fuse@2.9, stagit@0.5, +star@2.5.3a, starfighter@1.7, stellarium@0.15.1, strace@4.16, +sudo@1.8.19p1, suil@0.8.4, supertux@0.5.1, surf@2.0, synergy@1.8.8, +synthv1@0.8.2, talloc@2.1.9, tcl@8.6.6, tcpdump@4.9.0, tcsh@6.20.00, +telepathy-mission-control@5.16.4, terminology@1.0.0, texinfo@5.2, +texinfo@6.3, the-silver-searcher@1.0.2, thefuck@3.16, threadweaver@5.34.0, +tiled@0.18.2, tintin++@2.01.2, tk@8.6.6, tmux@2.4, tomb@2.3, tor@0.3.0.7, +totem-pl-parser@3.10.7, totem@3.22.0, trash-cli@0.17.1.14, tuxguitar@1.4, +tvtime@1.0.11, txt2man@1.6.0, tzdata@2017a, tzdata@2017b, +u-boot-am335x_boneblack@2017.03, u-boot-malta@2017.03, +u-boot-vexpress_ca9x4@2017.03, unionfs-fuse-static@2.0, unionfs-fuse@2.0, +units@2.14, upower@0.99.4, utf8proc@2.1.0, util-linux@2.29.2, +v4l-utils@1.12.3, vala@0.34.4, vapoursynth@37, vc-dwim@1.8, +vcftools@0.1.15, vdirsyncer@0.15.0, vim-full@8.0.0566, vim@8.0.0566, +virglrenderer@0.6.0, virt-manager@1.4.1, vis@0.3, vsearch@2.4.3, +vte-ng@0.48.2.a, vte@0.48.2, w3m@0.5.3+git20170102, wavpack@5.1.0, +wayland@1.13.0, wcslib@5.16, webkitgtk@2.16.2, weechat@1.8, weston@2.0.0, +wget@1.19.1, whois@5.2.15, windowmaker@0.95.8, wine@2.4, wiredtiger@2.9.1, +wireless-regdb@2017.03.07, wireshark@2.2.6, wxwidgets@3.0.2, +wxwidgets@3.1.0, x265@2.3, xapian@1.4.4, xauth@1.0.10, xcape@1.2, +xcb-proto@1.12, xcb-util-cursor@0.1.3, xcb-util-xrm@1.2, xdg-utils@1.1.1, +xf86-input-evdev@2.10.5, xf86-input-libinput@0.25.1, +xf86-input-wacom@0.34.0, xf86-video-geode@2.11.19, xf86-video-glint@1.2.9, +xf86-video-intel@2.99.917-5-b57abe2, xf86-video-mga@1.6.5, +xf86-video-nouveau@1.0.15, xf86-video-nv@2.1.21, xf86-video-qxl@0.1.5, +xf86-video-r128@6.10.2, xf86-video-savage@2.3.9, +xf86-video-siliconmotion@1.7.9, xf86-video-sis@0.10.9, +xf86-video-tdfx@1.4.7, xf86-video-trident@1.3.8, xf86-video-vmware@13.2.1, +xfce4-terminal@0.8.3, xkeyboard-config@2.20, xmonad@0.12, xonsh@0.5.9, +xorg-server-xwayland@1.19.3, xorg-server@1.19.3, xproto@7.0.31, +xscreensaver@5.36, yadifa@2.2.4, yelp@3.22.0, yoshimi@1.5.1.1, yosys@0.7, +youtube-dl@2017.05.07, zathura-cb@0.1.6, zathura-djvu@0.2.6, +zathura-pdf-poppler@0.2.7, zathura-ps@0.2.4, zathura@0.3.7, zenity@3.22.0, +zimg@2.5, zlib@1.2.11, znc@1.6.5 + +** Programming interfaces + +*** (guix scripts challenge) returns complete reports, not just discrepancies +*** New ‘dub-build-system’ for the D language and Dub +*** New ‘ocaml-build-system’ for software written in OCaml +*** Improvements to the ‘asdf-build-system’ for software written in various Common Lisp dialects. +*** New ‘package-mapping’ procedure to rewrite package dependency graphs +*** New modules: (guix workers), (guix discovery), (guix cache), + (guix memoization), (guix ssh), (gnu build shepherd) +*** (gnu build file-systems) now has support for ISO-9660 file systems. + +** Noteworthy bug fixes + +*** Create home directories once file systems are mounted + (<http://bugs.gnu.org/21108>) +*** GNU R now builds bit-reproducibly (<https://bugs.gnu.org/25598>) +*** The daemon’s default settings are used unless overriden + (<https://bugs.gnu.org/20217>) +*** ‘guix system’ now supports the common build option ‘--root’ + (<https://bugs.gnu.org/26271>) +*** Mesa uses LLVM for better Gallium performance (<https://bugs.gnu.org/25953>) +*** Grafting no longer triggers a download of all the outputs of each derivation + (<https://bugs.gnu.org/24886>) +*** Home directories are created when using a separate /home + (<https://bugs.gnu.org/21108>) + +** Native language support + +Updated translations: fr (French) + * Changes in 0.12.0 (since 0.11.0) ** Package management diff --git a/bayfront.guixsd.org.pub b/bayfront.guixsd.org.pub new file mode 100644 index 0000000000..f156a37b08 --- /dev/null +++ b/bayfront.guixsd.org.pub @@ -0,0 +1,6 @@ +(public-key + (ecc + (curve Ed25519) + (q #8D156F295D24B0D9A86FA5741A840FF2D24F60F7B6C4134814AD55625971B394#) + ) + ) diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index cc702490df..a1335fea1d 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +22,7 @@ #:use-module (guix config) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) + #:use-module (ice-9 match) #:export (build)) ;;; Commentary: @@ -58,11 +59,43 @@ (define xz (first (find-best-packages-by-name "xz" #f))) +(define (false-if-wrong-guile package) + "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g., +2.0 instead of 2.2), otherwise return PACKAGE." + (let ((guile (any (match-lambda + ((label (? package? dep) _ ...) + (and (string=? (package-name dep) "guile") + dep))) + (package-direct-inputs package)))) + (and (or (not guile) + (string-prefix? (effective-version) + (package-version guile))) + package))) + +(define (package-for-current-guile . names) + "Return the package with one of the given NAMES that depends on the current +Guile major version (2.0 or 2.2), or #f if none of the packages matches." + (let loop ((names names)) + (match names + (() + #f) + ((name rest ...) + (match (find-best-packages-by-name name #f) + (() + (loop rest)) + ((first _ ...) + (or (false-if-wrong-guile first) + (loop rest)))))))) + (define guile-json - (first (find-best-packages-by-name "guile-json" #f))) + (package-for-current-guile "guile-json" + "guile2.2-json" + "guile2.0-json")) (define guile-ssh - (first (find-best-packages-by-name "guile-ssh" #f))) + (package-for-current-guile "guile-ssh" + "guile2.2-ssh" + "guile2.0-ssh")) ;; The actual build procedure. @@ -80,6 +113,17 @@ person's version identifier." ;; XXX: Replace with a Git commit id. (date->string (current-date 0) "~Y~m~d.~H")) +(define (guile-for-build) + "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently +running Guile." + (package->derivation (cond-expand + (guile-2.2 + (canonical-package + (specification->package "guile@2.2"))) + (else + (canonical-package + (specification->package "guile@2.0")))))) + ;; The procedure below is our return value. (define* (build source #:key verbose? (version (date-version-string)) @@ -104,15 +148,19 @@ files." #~(begin (use-modules (guix build pull)) - (let ((json (string-append #$guile-json "/share/guile/site/2.0"))) + (let ((json (string-append #$guile-json "/share/guile/site/" + #$(effective-version)))) (set! %load-path - (cons* json - (string-append #$guile-ssh "/share/guile/site/2.0") - %load-path)) + (cons* json + (string-append #$guile-ssh "/share/guile/site/" + #$(effective-version)) + %load-path)) (set! %load-compiled-path - (cons* json - (string-append #$guile-ssh "/lib/guile/2.0/site-ccache") - %load-compiled-path))) + (cons* json + (string-append #$guile-ssh "/lib/guile/" + #$(effective-version) + "/site-ccache") + %load-compiled-path))) ;; XXX: The 'guile-ssh' package prior to Guix commit 92b7258 was ;; broken: libguile-ssh could not be found. Work around that. @@ -146,13 +194,21 @@ files." (current-error-port) (%make-void-port "w"))))) - (gexp->derivation "guix-latest" builder - #:modules '((guix build pull) - (guix build utils)) + (mlet %store-monad ((guile (guile-for-build))) + (gexp->derivation "guix-latest" builder + #:modules '((guix build pull) + (guix build utils) + + ;; Closure of (guix modules). + (guix modules) + (guix memoization) + (guix sets)) + + ;; Arrange so that our own (guix build …) modules are + ;; used. + #:module-path (list (top-source-directory)) - ;; Arrange so that our own (guix build …) modules are - ;; used. - #:module-path (list (top-source-directory)))) + #:guile-for-build guile))) ;; This file is loaded by 'guix pull'; return it the build procedure. build diff --git a/build-aux/check-available-binaries.scm b/build-aux/check-available-binaries.scm index 0060a8669e..b832d99935 100644 --- a/build-aux/check-available-binaries.scm +++ b/build-aux/check-available-binaries.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,10 +38,13 @@ %hydra-supported-systems)) (cross (map (cut package-cross-derivation store %bootstrap-tarballs <>) - '("mips64el-linux-gnuabi64"))) + '("mips64el-linux-gnu" + "arm-linux-gnueabihf"))) (total (append native cross))) - (set-build-options store #:use-substitutes? #t) + (set-build-options store + #:use-substitutes? #t + #:substitute-urls %default-substitute-urls) (let* ((total (map derivation->output-path total)) (available (substitutable-paths store total)) (missing (lset-difference string=? total available))) diff --git a/build-aux/check-final-inputs-self-contained.scm b/build-aux/check-final-inputs-self-contained.scm index dc44c4b636..dfb6a72f24 100644 --- a/build-aux/check-final-inputs-self-contained.scm +++ b/build-aux/check-final-inputs-self-contained.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +57,7 @@ if it does." (let ((references (substitutable-references substitute))) (when (any (cut string-contains <> "boot") references) - (leave (_ "'~a' refers to bootstrap inputs: ~s~%") + (leave (G_ "'~a' refers to bootstrap inputs: ~s~%") (substitutable-path substitute) references)))) (define (test-final-inputs store system) @@ -71,7 +71,7 @@ refer to the bootstrap tools." (string=? (substitutable-path substitute) dir)) available) - (leave (_ "~a (system: ~a) has no substitute~%") + (leave (G_ "~a (system: ~a) has no substitute~%") dir system))) inputs) diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm index d077d75229..147bb80196 100644 --- a/build-aux/compile-all.scm +++ b/build-aux/compile-all.scm @@ -24,7 +24,10 @@ (guix build utils)) (define warnings - '(unsupported-warning format unbound-variable arity-mismatch)) + ;; FIXME: 'format' is missing because it reports "non-literal format + ;; strings" due to the fact that we use 'G_' instead of '_'. We'll need + ;; help from Guile to solve this. + '(unsupported-warning unbound-variable arity-mismatch)) (define host (getenv "host")) diff --git a/build-aux/download.scm b/build-aux/download.scm index 0e98bef55b..8dfa914603 100644 --- a/build-aux/download.scm +++ b/build-aux/download.scm @@ -42,17 +42,15 @@ (match (string-tokenize file (char-set-complement (char-set #\/))) ((_ ... system basename) (string->uri - (match system - ("aarch64-linux" - (string-append "http://flashner.co.il/guix/bootstrap/aarch64-linux" - "/20170217/" basename)) - (_ (string-append %url-base "/" system - (match system - ("armhf-linux" - "/20150101/") - (_ - "/20131110/")) - basename))))))) + (string-append %url-base "/" system + (match system + ("aarch64-linux" + "/20170217/") + ("armhf-linux" + "/20150101/") + (_ + "/20131110/")) + basename))))) (match (command-line) ((_ file expected-hash) diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen new file mode 100755 index 0000000000..079849d5e5 --- /dev/null +++ b/build-aux/git-version-gen @@ -0,0 +1,226 @@ +#!/bin/sh +# Print a version string. +scriptversion=2017-01-09.19; # UTC + +# Copyright (C) 2007-2017 Free Software Foundation, Inc. +# +# This program 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. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. +# It may be run two ways: +# - from a git repository in which the "git describe" command below +# produces useful output (thus requiring at least one signed tag) +# - from a non-git-repo directory containing a .tarball-version file, which +# presumes this script is invoked like "./git-version-gen .tarball-version". + +# In order to use intra-version strings in your project, you will need two +# separate generated version string files: +# +# .tarball-version - present only in a distribution tarball, and not in +# a checked-out repository. Created with contents that were learned at +# the last time autoconf was run, and used by git-version-gen. Must not +# be present in either $(srcdir) or $(builddir) for git-version-gen to +# give accurate answers during normal development with a checked out tree, +# but must be present in a tarball when there is no version control system. +# Therefore, it cannot be used in any dependencies. GNUmakefile has +# hooks to force a reconfigure at distribution time to get the value +# correct, without penalizing normal development with extra reconfigures. +# +# .version - present in a checked-out repository and in a distribution +# tarball. Usable in dependencies, particularly for files that don't +# want to depend on config.h but do want to track version changes. +# Delete this file prior to any autoconf run where you want to rebuild +# files to pick up a version string change; and leave it stale to +# minimize rebuild time after unrelated changes to configure sources. +# +# As with any generated file in a VC'd directory, you should add +# /.version to .gitignore, so that you don't accidentally commit it. +# .tarball-version is never generated in a VC'd directory, so needn't +# be listed there. +# +# Use the following line in your configure.ac, so that $(VERSION) will +# automatically be up-to-date each time configure is run (and note that +# since configure.ac no longer includes a version string, Makefile rules +# should not depend on configure.ac for version updates). +# +# AC_INIT([GNU project], +# m4_esyscmd([build-aux/git-version-gen .tarball-version]), +# [bug-project@example]) +# +# Then use the following lines in your Makefile.am, so that .version +# will be present for dependencies, and so that .version and +# .tarball-version will exist in distribution tarballs. +# +# EXTRA_DIST = $(top_srcdir)/.version +# BUILT_SOURCES = $(top_srcdir)/.version +# $(top_srcdir)/.version: +# echo $(VERSION) > $@-t && mv $@-t $@ +# dist-hook: +# echo $(VERSION) > $(distdir)/.tarball-version + + +me=$0 + +version="git-version-gen $scriptversion + +Copyright 2011 Free Software Foundation, Inc. +There is NO warranty. You may redistribute this software +under the terms of the GNU General Public License. +For more information about these matters, see the files named COPYING." + +usage="\ +Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT] +Print a version string. + +Options: + + --prefix PREFIX prefix of git tags (default 'v') + --fallback VERSION + fallback version to use if \"git --version\" fails + + --help display this help and exit + --version output version information and exit + +Running without arguments will suffice in most cases." + +prefix=v +fallback= + +while test $# -gt 0; do + case $1 in + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + --prefix) shift; prefix=${1?};; + --fallback) shift; fallback=${1?};; + -*) + echo "$0: Unknown option '$1'." >&2 + echo "$0: Try '--help' for more information." >&2 + exit 1;; + *) + if test "x$tarball_version_file" = x; then + tarball_version_file="$1" + elif test "x$tag_sed_script" = x; then + tag_sed_script="$1" + else + echo "$0: extra non-option argument '$1'." >&2 + exit 1 + fi;; + esac + shift +done + +if test "x$tarball_version_file" = x; then + echo "$usage" + exit 1 +fi + +tag_sed_script="${tag_sed_script:-s/x/x/}" + +nl=' +' + +# Avoid meddling by environment variable of the same name. +v= +v_from_git= + +# First see if there is a tarball-only version file. +# then try "git describe", then default. +if test -f $tarball_version_file +then + v=`cat $tarball_version_file` || v= + case $v in + *$nl*) v= ;; # reject multi-line output + [0-9]*) ;; + *) v= ;; + esac + test "x$v" = x \ + && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2 +fi + +if test "x$v" != x +then + : # use $v +# Otherwise, if there is at least one git commit involving the working +# directory, and "git describe" output looks sensible, use that to +# derive a version string. +elif test "`git log -1 --pretty=format:x . 2>&1`" = x \ + && v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \ + || git describe --abbrev=4 HEAD 2>/dev/null` \ + && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \ + && case $v in + $prefix[0-9]*) ;; + *) (exit 1) ;; + esac +then + # Is this a new git that lists number of commits since the last + # tag or the previous older version that did not? + # Newer: v6.10-77-g0f8faeb + # Older: v6.10-g0f8faeb + case $v in + *-*-*) : git describe is okay three part flavor ;; + *-*) + : git describe is older two part flavor + # Recreate the number of commits and rewrite such that the + # result is the same as if we were using the newer version + # of git describe. + vtag=`echo "$v" | sed 's/-.*//'` + commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \ + || { commit_list=failed; + echo "$0: WARNING: git rev-list failed" 1>&2; } + numcommits=`echo "$commit_list" | wc -l` + v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; + test "$commit_list" = failed && v=UNKNOWN + ;; + esac + + # Change the first '-' to a '.', so version-comparing tools work properly. + # Remove the "g" in git describe's output string, to save a byte. + v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; + v_from_git=1 +elif test "x$fallback" = x || git --version >/dev/null 2>&1; then + v=UNKNOWN +else + v=$fallback +fi + +v=`echo "$v" |sed "s/^$prefix//"` + +# Test whether to append the "-dirty" suffix only if the version +# string we're using came from git. I.e., skip the test if it's "UNKNOWN" +# or if it came from .tarball-version. +if test "x$v_from_git" != x; then + # Don't declare a version "dirty" merely because a timestamp has changed. + git update-index --refresh > /dev/null 2>&1 + + dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty= + case "$dirty" in + '') ;; + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; + *) v="$v-dirty" ;; + esac ;; + esac +fi + +# Omit the trailing newline, so that m4_esyscmd can use the result directly. +printf %s "$v" + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm index ab10253f31..cc6a4b9492 100644 --- a/build-aux/hydra/evaluate.scm +++ b/build-aux/hydra/evaluate.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +32,13 @@ (beautify-user-module! m) m)) +(cond-expand + (guile-2.2 + ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and + ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. + (define time-monotonic time-tai)) + (else #t)) + (define (call-with-time thunk kont) "Call THUNK and pass KONT the elapsed time followed by THUNK's return values." diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 507c6abe0e..b1faa2265a 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -111,7 +111,7 @@ SYSTEM." ;; chain.) (list gcc-4.8 gcc-4.9 gcc-5 glibc binutils gmp mpfr mpc coreutils findutils diffutils patch sed grep - gawk gnu-gettext hello guile-2.0 zlib gzip xz + gawk gnu-gettext hello guile-2.0 guile-2.2 zlib gzip xz %bootstrap-binaries-tarball %binutils-bootstrap-tarball (%glibc-bootstrap-tarball) diff --git a/build-aux/update-NEWS.scm b/build-aux/update-NEWS.scm new file mode 100644 index 0000000000..2e8f68c9a8 --- /dev/null +++ b/build-aux/update-NEWS.scm @@ -0,0 +1,161 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;;; +;;; This script updates the list of new and updated packages in 'NEWS'. +;;; +;;; Code: + +(use-modules (gnu) (guix) + (guix build utils) + ((guix ui) #:select (fill-paragraph)) + (srfi srfi-1) + (srfi srfi-11) + (ice-9 match) + (ice-9 rdelim) + (ice-9 regex) + (ice-9 pretty-print)) + +(define %header-rx + (make-regexp "^\\* Changes in (version )?([0-9.]+) \\(since ([0-9.]+)\\)")) + +(define (NEWS->versions port) + "Return two values: the previous version and the current version as read +from PORT, which is an input port on the 'NEWS' file." + (let loop () + (let ((line (read-line port))) + (cond ((eof-object? line) + (error "failed to determine previous and current version" + port)) + ((regexp-exec %header-rx line) + => + (lambda (match) + (values (match:substring match 3) + (match:substring match 2)))) + (else + (loop)))))) + +(define (skip-to-org-heading port) + "Read from PORT until an Org heading is found." + (let loop () + (let ((next (peek-char port))) + (cond ((eqv? next #\*) + #t) + ((eof-object? next) + (error "next heading could not be found")) + (else + (read-line port) + (loop)))))) + +(define (rewrite-org-section input output heading-rx proc) + "Write to OUTPUT the text read from INPUT, but with the first Org section +matching HEADING-RX replaced by NEW-HEADING and CONTENTS." + (let loop () + (let ((line (read-line input))) + (cond ((eof-object? line) + (error "failed to match heading regexp" heading-rx)) + ((regexp-exec heading-rx line) + => + (lambda (match) + (proc match output) + (skip-to-org-heading input) + (dump-port input output) + #t)) + (else + (display line output) + (newline output) + (loop)))))) + +(define (enumeration->paragraph lst) + "Turn LST, a list of strings, into a single string that is a ready-to-print +paragraph." + (fill-paragraph (string-join (sort lst string<?) ", ") + 75)) + +(define (write-packages-added news-file old new) + "Write to NEWS-FILE the list of packages added between OLD and NEW." + (let ((added (lset-difference string=? (map car new) (map car old)))) + (with-atomic-file-replacement news-file + (lambda (input output) + (rewrite-org-section input output + (make-regexp "^(\\*+) (.*) new packages") + (lambda (match port) + (let ((stars (match:substring match 1))) + (format port + "~a ~a new packages~%~%~a~%~%" + stars (length added) + (enumeration->paragraph added))))))))) + +(define (write-packages-updates news-file old new) + "Write to NEWS-FILE the list of packages upgraded between OLD and NEW." + (let ((upgraded (filter-map (match-lambda + ((package . new-version) + (match (assoc package old) + ((_ . old-version) + (and (version>? new-version old-version) + (string-append package "@" + new-version))) + (_ #f)))) + new))) + (with-atomic-file-replacement news-file + (lambda (input output) + (rewrite-org-section input output + (make-regexp "^(\\*+) (.*) package updates") + (lambda (match port) + (let ((stars (match:substring match 1))) + (format port + "~a ~a package updates~%~%~a~%~%" + stars (length upgraded) + (enumeration->paragraph upgraded))))))))) + + +(define (main . args) + (match args + ((news-file data-directory) + ;; Don't browse things listed in the user's $GUIX_PACKAGE_PATH. Here we + ;; assume that the last item in (%package-module-path) is the distro + ;; directory. + (parameterize ((%package-module-path + (list (last (%package-module-path))))) + (define (package-file version) + (string-append data-directory "/packages-" + version ".txt")) + + (let-values (((previous-version new-version) + (call-with-input-file news-file NEWS->versions))) + (let* ((old (call-with-input-file (package-file previous-version) + read)) + (new (fold-packages (lambda (p r) + (alist-cons (package-name p) (package-version p) + r)) + '()))) + (call-with-output-file (package-file new-version) + (lambda (port) + (pretty-print new port))) + + (write-packages-added news-file old new) + (write-packages-updates news-file old new))))) + (x + (format (current-error-port) "Usage: update-NEWS NEWS-FILE DATA-DIRECTORY + +Update the list of new and updated packages in NEWS-FILE using the +previous-version package list from DATA-DIRECTORY.\n") + (exit 1)))) + +(apply main (cdr (command-line))) diff --git a/build-aux/update-guix-package.scm b/build-aux/update-guix-package.scm new file mode 100644 index 0000000000..9598872dfd --- /dev/null +++ b/build-aux/update-guix-package.scm @@ -0,0 +1,144 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;;; +;;; This scripts updates the definition of the 'guix' package in Guix for the +;;; current commit. It requires Git to be installed. +;;; +;;; Code: + +(use-modules (guix) + (guix git-download) + (guix upstream) + (guix utils) + (guix base32) + (guix build utils) + (gnu packages package-management) + (ice-9 match)) + +(define %top-srcdir + (string-append (current-source-directory) "/..")) + +(define version-controlled? + (git-predicate %top-srcdir)) + +(define (package-definition-location) + "Return the source properties of the definition of the 'guix' package." + (call-with-input-file (location-file (package-location guix)) + (lambda (port) + (let loop () + (match (read port) + ((? eof-object?) + (error "definition of 'guix' package could not be found" + (port-filename port))) + (('define-public 'guix value) + (source-properties value)) + (_ + (loop))))))) + +(define* (update-definition commit hash + #:key version old-hash) + "Return a one-argument procedure that takes a string, the definition of the +'guix' package, and returns a string, the update definition for VERSION, +COMMIT." + (define (linear-offset str line column) + ;; Return the offset in characters to reach LINE and COLUMN (both + ;; zero-indexed) in STR. + (call-with-input-string str + (lambda (port) + (let loop ((offset 0)) + (cond ((and (= (port-column port) column) + (= (port-line port) line)) + offset) + ((eof-object? (read-char port)) + (error "line and column not reached!" + str)) + (else + (loop (+ 1 offset)))))))) + + (define (update-hash str) + ;; Replace OLD-HASH with HASH in STR. + (string-replace-substring str + (bytevector->nix-base32-string old-hash) + (bytevector->nix-base32-string hash))) + + (lambda (str) + (match (call-with-input-string str read) + (('let (('version old-version) + ('commit old-commit) + ('revision old-revision)) + defn) + (let* ((location (source-properties defn)) + (line (assq-ref location 'line)) + (column 0) + (offset (linear-offset str line column))) + (string-append (format #f "(let ((version \"~a\") + (commit \"~a\") + (revision ~a))\n" + (or version old-version) + commit + (if (and version + (not (string=? version old-version))) + 0 + (+ 1 old-revision))) + (string-drop (update-hash str) offset)))) + (exp + (error "'guix' package definition is not as expected" exp))))) + + +(define (main . args) + (match args + ((commit version) + (with-store store + (let* ((source (add-to-store store + "guix-checkout" ;dummy name + #t "sha256" %top-srcdir + #:select? version-controlled?)) + (hash (query-path-hash store source)) + (location (package-definition-location)) + (old-hash (origin-sha256 (package-source guix)))) + (edit-expression location + (update-definition commit hash + #:old-hash old-hash + #:version version)) + + ;; Re-add SOURCE to the store, but this time under the real name used + ;; in the 'origin'. This allows us to build the package without + ;; having to make a real checkout; thus, it also works when working + ;; on a private branch. + (reload-module + (resolve-module '(gnu packages package-management))) + + (let* ((source (add-to-store store + (origin-file-name (package-source guix)) + #t "sha256" source)) + (root (store-path-package-name source))) + + ;; Add an indirect GC root for SOURCE in the current directory. + (false-if-exception (delete-file root)) + (symlink source root) + (add-indirect-root store root) + + (format #t "source code for commit ~a: ~a (GC root: ~a)~%" + commit source root))))) + ((commit) + ;; Automatically deduce the version and revision numbers. + (main commit #f)))) + +(apply main (cdr (command-line))) diff --git a/configure.ac b/configure.ac index 2b4620c44b..dc3d8f377f 100644 --- a/configure.ac +++ b/configure.ac @@ -2,8 +2,10 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.68) -AC_INIT([GNU Guix], [0.12.0], [bug-guix@gnu.org], [guix], - [http://www.gnu.org/software/guix/]) +AC_INIT([GNU Guix], + [m4_esyscmd([build-aux/git-version-gen .tarball-version])], + [bug-guix@gnu.org], [guix], + [https://www.gnu.org/software/guix/]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \ diff --git a/doc/contributing.texi b/doc/contributing.texi index bbc93424b4..925c584e42 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -248,7 +248,10 @@ please do read it. Some special forms introduced in Guix, such as the @code{substitute*} macro, have special indentation rules. These are defined in the -@file{.dir-locals.el} file, which Emacs automatically uses. +@file{.dir-locals.el} file, which Emacs automatically uses. Also note +that Emacs-Guix provides @code{guix-devel-mode} mode that indents and +highlights Guix code properly (@pxref{Development,,, emacs-guix, The +Emacs-Guix Reference Manual}). @cindex indentation, of code @cindex formatting, of code @@ -342,9 +345,30 @@ For important changes, check that dependent package (if applicable) are not affected by the change; @code{guix refresh --list-dependent @var{package}} will help you do that (@pxref{Invoking guix refresh}). -Packages with roughly 100 dependents or more usually have to be -committed to a separate branch. That branch can then be built -separately by our build farm, and later merged into @code{master} once +@c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>. +@cindex branching strategy +@cindex rebuild scheduling strategy +Depending on the number of dependent packages and thus the amount of +rebuilding induced, commits go to different branches, along these lines: + +@table @asis +@item 300 dependent packages or less +@code{master} branch (non-disruptive changes). + +@item between 300 and 1,200 dependent packages +@code{staging} branch (non-disruptive changes). This branch is intended +to be merged in @code{master} every 3 weeks or so. Topical changes +(e.g., an update of the GNOME stack) can instead go to a specific branch +(say, @code{gnome-updates}). + +@item more than 1,200 dependent packages +@code{core-updates} branch (may include major and potentially disruptive +changes). This branch is intended to be merged in @code{master} every +2.5 months or so. +@end table + +All these branches are tracked by our build farm +and merged into @code{master} once everything has been successfully built. This allows us to fix issues before they hit users, and to reduce the window during which pre-built binaries are not available. diff --git a/doc/guix.texi b/doc/guix.texi index aa779e38e2..aa8b705be6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -10,7 +10,7 @@ @include version.texi @c Identifier of the OpenPGP key used to sign tarballs and such. -@set OPENPGP-SIGNING-KEY-ID BCA689B636553801C3C62150197A5888235FACAC +@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 @copying Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès@* @@ -34,7 +34,10 @@ Copyright @copyright{} 2017 Clément Lassieur@* Copyright @copyright{} 2017 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017 Carlo Zancanaro@* -Copyright @copyright{} 2017 Thomas Danckaert +Copyright @copyright{} 2017 Thomas Danckaert@* +Copyright @copyright{} 2017 humanitiesNerd@* +Copyright @copyright{} 2017 Christopher Allan Webber@* +Copyright @copyright{} 2017 Marius Bakke Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -165,6 +168,7 @@ GNU Distribution * System Installation:: Installing the whole operating system. * System Configuration:: Configuring the operating system. +* Documentation:: Browsing software user manuals. * Installing Debugging Files:: Feeding the debugger. * Security Updates:: Deploying security fixes quickly. * Package Modules:: Packages from the programmer's viewpoint. @@ -233,7 +237,7 @@ Packaging Guidelines * Package Naming:: What's in a name? * Version Numbers:: When the name is not enough. * Synopses and Descriptions:: Helping users find the right package. -* Python Modules:: Taming the snake. +* Python Modules:: A touch of British comedy. * Perl Modules:: Little pearls. * Java Packages:: Coffee break. * Fonts:: Fond of fonts. @@ -438,6 +442,14 @@ Make @code{root}'s profile available under @file{~/.guix-profile}: ~root/.guix-profile @end example +Source @file{etc/profile} to augment @code{PATH} and other relevant +environment variables: + +@example +# GUIX_PROFILE=$HOME/.guix-profile \ + source $GUIX_PROFILE/etc/profile +@end example + @item Create the group and user accounts for build users as explained below (@pxref{Build Environment Setup}). @@ -1420,11 +1432,13 @@ remove software packages, without having to know about their build procedures or dependencies. Guix also goes beyond this obvious set of features. -This chapter describes the main features of Guix, as well as the package -management tools it provides. Along with the command-line interface -described below (@pxref{Invoking guix package, @code{guix package}}), -you may also use Emacs Interface, after installing @code{emacs-guix} -package (run @kbd{M-x guix-help} command to start with it): +This chapter describes the main features of Guix, as well as the +package management tools it provides. Along with the command-line +interface described below (@pxref{Invoking guix package, @code{guix +package}}), you may also use Emacs Interface (@pxref{Top,,, +emacs-guix, The Emacs-Guix Reference Manual}), after installing +@code{emacs-guix} package (run @kbd{M-x guix-help} command to start +with it): @example guix package -i emacs-guix @@ -2378,13 +2392,13 @@ For example, to download and deploy version 0.12.0 of Guix from the canonical Git repo: @example -guix pull --url=http://git.savannah.gnu.org/cgit/guix.git/snapshot/v0.12.0.tar.gz +guix pull --url=https://git.savannah.gnu.org/cgit/guix.git/snapshot/v0.12.0.tar.gz @end example It can also be used to deploy arbitrary Git revisions: @example -guix pull --url=http://git.savannah.gnu.org/cgit/guix.git/snapshot/74d862e8a.tar.gz +guix pull --url=https://git.savannah.gnu.org/cgit/guix.git/snapshot/74d862e8a.tar.gz @end example @item --bootstrap @@ -2392,6 +2406,8 @@ Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers. @end table +In addition, @command{guix pull} supports all the common build options +(@pxref{Common Build Options}). @node Invoking guix pack @section Invoking @command{guix pack} @@ -2475,6 +2491,14 @@ This produces a tarball that follows the Docker Image Specification}. @end table +@item --expression=@var{expr} +@itemx -e @var{expr} +Consider the package @var{expr} evaluates to. + +This has the same purpose as the same-named option in @command{guix +build} (@pxref{Additional Build Options, @code{--expression} in +@command{guix build}}). + @item --system=@var{system} @itemx -s @var{system} Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of @@ -2862,13 +2886,18 @@ unavailable to the build process, possibly leading to a build failure. Once a package definition is in place, the package may actually be built using the @code{guix build} command-line -tool (@pxref{Invoking guix build}). You can easily jump back to the +tool (@pxref{Invoking guix build}), troubleshooting any build failures +you encounter (@pxref{Debugging Build Failures}). You can easily jump back to the package definition using the @command{guix edit} command (@pxref{Invoking guix edit}). @xref{Packaging Guidelines}, for more information on how to test package definitions, and @ref{Invoking guix lint}, for information on how to check a definition for style conformance. +@vindex GUIX_PACKAGE_PATH +Lastly, @pxref{Package Modules}, for information +on how to extend the distribution by adding your own package definitions +to @code{GUIX_PACKAGE_PATH}. Finally, updating the package definition to a new upstream version can be partly automated by the @command{guix refresh} command @@ -2946,6 +2975,16 @@ with @var{libressl}. Then we use it to define a @dfn{variant} of the This is exactly what the @option{--with-input} command-line option does (@pxref{Package Transformation Options, @option{--with-input}}). +A more generic procedure to rewrite a package dependency graph is +@code{package-mapping}: it supports arbitrary changes to nodes in the +graph. + +@deffn {Scheme Procedure} package-mapping @var{proc} [@var{cut?}] +Return a procedure that, given a package, applies @var{proc} to all the packages +depended on and returns the resulting package. The procedure stops recursion +when @var{cut?} returns true for a given package. +@end deffn + @menu * package Reference :: The package data type. * origin Reference:: The origin data type. @@ -3294,7 +3333,8 @@ parameters, respectively. When the original package does not provide a suitable Ant build file, the parameter @code{#:jar-name} can be used to generate a minimal Ant build file @file{build.xml} with tasks to build the specified jar -archive. +archive. In this case the parameter @code{#:source-dir} can be used to +specify the source sub-directory, defaulting to ``src''. The parameter @code{#:build-target} can be used to specify the Ant task that should be run during the @code{build} phase. By default the @@ -3319,23 +3359,8 @@ These build systems can also be used to produce executable programs, or lisp images which contain a set of packages pre-loaded. The build system uses naming conventions. For binary packages, the -package itself as well as its run-time dependencies should begin their -name with the lisp implementation, such as @code{sbcl-} for -@code{asdf-build-system/sbcl}. Beginning the input name with this -prefix will allow the build system to encode its location into the -resulting library, so that the input can be found at run-time. - -If dependencies are used only for tests, it is convenient to use a -different prefix in order to avoid having a run-time dependency on such -systems. For example, - -@example -(define-public sbcl-bordeaux-threads - (package - ... - (native-inputs `(("tests:cl-fiveam" ,sbcl-fiveam))) - ...)) -@end example +package name should be prefixed with the lisp implementation, such as +@code{sbcl-} for @code{asdf-build-system/sbcl}. Additionally, the corresponding source package should be labeled using the same convention as python packages (see @ref{Python Modules}), using @@ -3355,7 +3380,16 @@ expressions to be passed as the @code{#:entry-program} argument. If the system is not defined within its own @code{.asd} file of the same name, then the @code{#:asd-file} parameter should be used to specify -which file the system is defined in. +which file the system is defined in. Furthermore, if the package +defines a system for its tests in a separate file, it will be loaded +before the tests are run if it is specified by the +@code{#:test-asd-file} parameter. If it is not set, the files +@code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd}, +and @code{test.asd} will be tried if they exist. + +If for some reason the package must be named in a different way than the +naming conventions suggest, the @code{#:asd-system-name} parameter can +be used to specify the name of the system. @end defvr @@ -3639,10 +3673,64 @@ accidental modifications. @end quotation The @code{(guix store)} module provides procedures to connect to the -daemon, and to perform RPCs. These are described below. +daemon, and to perform RPCs. These are described below. By default, +@code{open-connection}, and thus all the @command{guix} commands, +connect to the local daemon or to the URI specified by the +@code{GUIX_DAEMON_SOCKET} environment variable. + +@defvr {Environment Variable} GUIX_DAEMON_SOCKET +When set, the value of this variable should be a file name or a URI +designating the daemon endpoint. When it is a file name, it denotes a +Unix-domain socket to connect to. In addition to file names, the +supported URI schemes are: + +@table @code +@item file +@itemx unix +These are for Unix-domain sockets. +@code{file:///var/guix/daemon-socket/socket} is equivalent to +@file{/var/guix/daemon-socket/socket}. + +@item guix +These URIs denote connections over TCP/IP, without encryption nor +authentication of the remote host. The URI must always specify both the +host name and port number: + +@example +guix://master.guix.example.org:1234 +@end example + +This setup is suitable on local networks, such as clusters, where only +trusted nodes may connect to the build daemon at +@code{master.guix.example.org}. -@deffn {Scheme Procedure} open-connection [@var{file}] [#:reserve-space? #t] -Connect to the daemon over the Unix-domain socket at @var{file}. When +@item ssh +@cindex SSH access to build daemons +These URIs allow you to connect to a remote daemon over +SSH@footnote{This feature requires Guile-SSH (@pxref{Requirements}).}. +A typical URL might look like this: + +@example +ssh://charlie@@guix.example.org:22 +@end example + +As for @command{guix copy}, the usual OpenSSH client configuration files +are honored (@pxref{Invoking guix copy}). +@end table + +Additional URI schemes may be supported in the future. + +@c XXX: Remove this note when the protocol incurs fewer round trips +@c and when (guix derivations) no longer relies on file system access. +@quotation Note +The ability to connect to remote build daemons is considered +experimental as of @value{VERSION}. Please get in touch with us to +share any problems or suggestions you may have (@pxref{Contributing}). +@end quotation +@end defvr + +@deffn {Scheme Procedure} open-connection [@var{uri}] [#:reserve-space? #t] +Connect to the daemon over the Unix-domain socket at @var{uri} (a string). When @var{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. @@ -4011,8 +4099,15 @@ in this example: @deffnx {Scheme Syntax} mlet* @var{monad} ((@var{var} @var{mval}) ...) @ @var{body} ... Bind the variables @var{var} to the monadic values @var{mval} in -@var{body}. The form (@var{var} -> @var{val}) binds @var{var} to the -``normal'' value @var{val}, as per @code{let}. +@var{body}, which is a sequence of expressions. As with the bind +operator, this can be thought of as ``unpacking'' the raw, non-monadic +value ``contained'' in @var{mval} and making @var{var} refer to that +raw, non-monadic value within the scope of the @var{body}. The form +(@var{var} -> @var{val}) binds @var{var} to the ``normal'' value +@var{val}, as per @code{let}. The binding operations occur in sequence +from left to right. The last expression of @var{body} must be a monadic +expression, and its result will become the result of the @code{mlet} or +@code{mlet*} when run in the @var{monad}. @code{mlet*} is to @code{mlet} what @code{let*} is to @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}). @@ -4020,13 +4115,28 @@ Bind the variables @var{var} to the monadic values @var{mval} in @deffn {Scheme System} mbegin @var{monad} @var{mexp} ... Bind @var{mexp} and the following monadic expressions in sequence, -returning the result of the last expression. +returning the result of the last expression. Every expression in the +sequence must be a monadic expression. This is akin to @code{mlet}, except that the return values of the monadic expressions are ignored. In that sense, it is analogous to @code{begin}, but applied to monadic expressions. @end deffn +@deffn {Scheme System} mwhen @var{condition} @var{mexp0} @var{mexp*} ... +When @var{condition} is true, evaluate the sequence of monadic +expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When +@var{condition} is false, return @code{*unspecified*} in the current +monad. Every expression in the sequence must be a monadic expression. +@end deffn + +@deffn {Scheme System} munless @var{condition} @var{mexp0} @var{mexp*} ... +When @var{condition} is false, evaluate the sequence of monadic +expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}. When +@var{condition} is true, return @code{*unspecified*} in the current +monad. Every expression in the sequence must be a monadic expression. +@end deffn + @cindex state monad The @code{(guix monads)} module provides the @dfn{state monad}, which allows an additional value---the state---to be @emph{threaded} through @@ -4729,6 +4839,7 @@ described in the subsections below. * Common Build Options:: Build options for most commands. * Package Transformation Options:: Creating variants of packages. * Additional Build Options:: Options specific to 'guix build'. +* Debugging Build Failures:: Real life packaging experience @end menu @node Common Build Options @@ -4754,6 +4865,8 @@ the command-line tools. Keep the build tree of failed builds. Thus, if a build fails, its build tree is kept under @file{/tmp}, in a directory whose name is shown at the end of the build log. This is useful when debugging build issues. +@xref{Debugging Build Failures}, for tips and tricks on how to debug +build issues. @item --keep-going @itemx -k @@ -5141,6 +5254,82 @@ https://hydra.gnu.org/log/@dots{}-gdb-7.10 You can freely access a huge library of build logs! @end table +@node Debugging Build Failures +@subsection Debugging Build Failures + +@cindex build failures, debugging +When defining a new package (@pxref{Defining Packages}), you will +probably find yourself spending some time debugging and tweaking the +build until it succeeds. To do that, you need to operate the build +commands yourself in an environment as close as possible to the one the +build daemon uses. + +To that end, the first thing to do is to use the @option{--keep-failed} +or @option{-K} option of @command{guix build}, which will keep the +failed build tree in @file{/tmp} or whatever directory you specified as +@code{TMPDIR} (@pxref{Invoking guix build, @code{--keep-failed}}). + +From there on, you can @command{cd} to the failed build tree and source +the @file{environment-variables} file, which contains all the +environment variable definitions that were in place when the build +failed. So let's say you're debugging a build failure in package +@code{foo}; a typical session would look like this: + +@example +$ guix build foo -K +@dots{} @i{build fails} +$ cd /tmp/guix-build-foo.drv-0 +$ source ./environment-variables +$ cd foo-1.2 +@end example + +Now, you can invoke commands as if you were the daemon (almost) and +troubleshoot your build process. + +Sometimes it happens that, for example, a package's tests pass when you +run them manually but they fail when the daemon runs them. This can +happen because the daemon runs builds in containers where, unlike in our +environment above, network access is missing, @file{/bin/sh} does not +exist, etc. (@pxref{Build Environment Setup}). + +In such cases, you may need to run inspect the build process from within +a container similar to the one the build daemon creates: + +@example +$ guix build -K foo +@dots{} +$ cd /tmp/guix-build-foo.drv-0 +$ guix environment -C foo --ad-hoc strace gdb +[env]# source ./environment-variables +[env]# cd foo-1.2 +@end example + +Here, @command{guix environment -C} creates a container and spawns a new +shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc +strace gdb} part adds the @command{strace} and @command{gdb} commands to +the container, which would may find handy while debugging. + +To get closer to a container like that used by the build daemon, we can +remove @file{/bin/sh}: + +@example +[env]# rm /bin/sh +@end example + +(Don't worry, this is harmless: this is all happening in the throw-away +container created by @command{guix environment}.) + +The @command{strace} command is probably not in the search path, but we +can run: + +@example +[env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check +@end example + +In this way, not only you will have reproduced the environment variables +the daemon uses, you will also be running the build process in a container +similar to the one the daemon uses. + @node Invoking guix edit @section Invoking @command{guix edit} @@ -5749,7 +5938,7 @@ an upgrade. More rebuilds might be required under some circumstances. @example $ guix refresh --list-dependent flex Building the following 120 packages would ensure 213 dependent packages are rebuilt: -hop-2.4.0 geiser-0.4 notmuch-0.18 mu-0.9.9.5 cflow-1.4 idutils-4.6 @dots{} +hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{} @end example The command above lists a set of packages that could be built to check @@ -6008,7 +6197,9 @@ provides a visual representation of the DAG. By default, @uref{http://www.graphviz.org/, Graphviz}, so its output can be passed directly to the @command{dot} command of Graphviz. It can also emit an HTML page with embedded JavaScript code to display a ``chord diagram'' -in a Web browser, using the @uref{https://d3js.org/, d3.js} library. +in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or +emit Cypher queries to construct a graph in a graph database supporting +the @uref{http://www.opencypher.org/, openCypher} query language. The general syntax is: @example @@ -6473,6 +6664,13 @@ archive}), the daemon may download substitutes from it: guix-daemon --substitute-urls=http://example.org:8080 @end example +By default, @command{guix publish} compresses archives on the fly as it +serves them. This ``on-the-fly'' mode is convenient in that it requires +no setup and is immediately available. However, when serving lots of +clients, we recommend using the @option{--cache} option, which enables +caching of the archives before they are sent to clients---see below for +details. + As a bonus, @command{guix publish} also serves as a content-addressed mirror for source files referenced in @code{origin} records (@pxref{origin Reference}). For instance, assuming @command{guix @@ -6510,10 +6708,46 @@ disable compression. The range 1 to 9 corresponds to different gzip compression levels: 1 is the fastest, and 9 is the best (CPU-intensive). The default is 3. -Compression occurs on the fly and the compressed streams are not +Unless @option{--cache} is used, compression occurs on the fly and +the compressed streams are not cached. Thus, to reduce load on the machine that runs @command{guix -publish}, it may be a good idea to choose a low compression level, or to -run @command{guix publish} behind a caching proxy. +publish}, it may be a good idea to choose a low compression level, to +run @command{guix publish} behind a caching proxy, or to use +@option{--cache}. Using @option{--cache} has the advantage that it +allows @command{guix publish} to add @code{Content-Length} HTTP header +to its responses. + +@item --cache=@var{directory} +@itemx -c @var{directory} +Cache archives and meta-data (@code{.narinfo} URLs) to @var{directory} +and only serve archives that are in cache. + +When this option is omitted, archives and meta-data are created +on-the-fly. This can reduce the available bandwidth, especially when +compression is enabled, since this may become CPU-bound. Another +drawback of the default mode is that the length of archives is not known +in advance, so @command{guix publish} does not add a +@code{Content-Length} HTTP header to its responses, which in turn +prevents clients from knowing the amount of data being downloaded. + +Conversely, when @option{--cache} is used, the first request for a store +item (@i{via} a @code{.narinfo} URL) returns 404 and triggers a +background process to @dfn{bake} the archive---computing its +@code{.narinfo} and compressing the archive, if needed. Once the +archive is cached in @var{directory}, subsequent requests succeed and +are served directly from the cache, which guarantees that clients get +the best possible bandwidth. + +The ``baking'' process is performed by worker threads. By default, one +thread per CPU core is created, but this can be customized. See +@option{--workers} below. + +When @option{--ttl} is used, cached entries are automatically deleted +when they have expired. + +@item --workers=@var{N} +When @option{--cache} is used, request the allocation of @var{N} worker +threads to ``bake'' archives. @item --ttl=@var{ttl} Produce @code{Cache-Control} HTTP headers that advertise a time-to-live @@ -6525,6 +6759,9 @@ This allows the user's Guix to keep substitute information in cache for guarantee that the store items it provides will indeed remain available for as long as @var{ttl}. +Additionally, when @option{--cache} is used, cached entries that have +not been accessed for @var{ttl} may be deleted. + @item --nar-path=@var{path} Use @var{path} as the prefix for the URLs of ``nar'' files (@pxref{Invoking guix archive, normalized archives}). @@ -6897,6 +7134,7 @@ For information on porting to other architectures or kernels, @menu * System Installation:: Installing the whole operating system. * System Configuration:: Configuring the operating system. +* Documentation:: Browsing software user manuals. * Installing Debugging Files:: Feeding the debugger. * Security Updates:: Deploying security fixes quickly. * Package Modules:: Packages from the programmer's viewpoint. @@ -6968,15 +7206,15 @@ get a feel of what that means.) Support for the Logical Volume Manager (LVM) is missing. @item -Few system services are currently supported out-of-the-box -(@pxref{Services}). +More and more system services are provided (@pxref{Services}), but some +may be missing. @item -More than 5,000 packages are available, but you may +More than 5,300 packages are available, but you may occasionally find that a useful package is missing. @item -GNOME, Xfce, and Enlightenment are available (@pxref{Desktop Services}), +GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop Services}), as well as a number of X11 window managers. However, some graphical applications may be missing, as well as KDE. @end itemize @@ -7077,14 +7315,15 @@ copy the image with: @example dd if=guixsd-usb-install-@value{VERSION}.x86_64 of=/dev/sdX +sync @end example Access to @file{/dev/sdX} usually requires root privileges. @end enumerate Once this is done, you should be able to reboot the system and boot from -the USB stick. The latter usually requires you to get in the BIOS' boot -menu, where you can choose to boot from the USB stick. +the USB stick. The latter usually requires you to get in the BIOS' or +UEFI boot menu, where you can choose to boot from the USB stick. @xref{Installing GuixSD in a VM}, if, instead, you would like to install GuixSD in a virtual machine (VM). @@ -7208,6 +7447,17 @@ ping -c 3 gnu.org Setting up network access is almost always a requirement because the image does not contain all the software and tools that may be needed. +@cindex installing over SSH +If you want to, you can continue the installation remotely by starting +an SSH server: + +@example +herd start ssh-daemon +@end example + +Make sure to either set a password with @command{passwd}, or configure +OpenSSH public key authentication before logging in. + @subsubsection Disk Partitioning Unless this has already been done, the next step is to partition, and @@ -7227,6 +7477,17 @@ install BIOS-based GRUB (which is the default), make sure a BIOS Boot Partition is available (@pxref{BIOS installation,,, grub, GNU GRUB manual}). +@cindex EFI, installation +@cindex UEFI, installation +@cindex ESP, EFI system partition +If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System Partition} +(ESP) is required. This partition should be mounted at @file{/boot/efi} and +must have the @code{esp} flag set. E.g., for @command{parted}: + +@example +parted /dev/sda set 1 esp on +@end example + Once you are done partitioning the target hard disk drive, you have to create a file system on the relevant partition(s)@footnote{Currently GuixSD only supports ext4 and btrfs file systems. In particular, code @@ -7266,6 +7527,11 @@ root partition): mount LABEL=my-root /mnt @end example +Also mount any other partitions you would like to use on the target +system relative to this path. If you have @file{/boot} on a separate +partition for example, mount it at @file{/mnt/boot} now so it is found +by @code{guix system init} afterwards. + Finally, if you plan to use one or more swap partitions (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), make sure to initialize them with @command{mkswap}. Assuming you have one @@ -7340,7 +7606,8 @@ in particular: @itemize @item Make sure the @code{grub-configuration} form refers to the device you -want to install GRUB on. +want to install GRUB on. You also need to specify the @code{grub-efi} +package if you wish to use native UEFI boot. @item Be sure that your partition labels match the value of their respective @@ -7363,7 +7630,7 @@ guix system init /mnt/etc/config.scm /mnt @noindent This copies all the necessary files and installs GRUB on -@file{/dev/sdX}, unless you pass the @option{--no-grub} option. For +@file{/dev/sdX}, unless you pass the @option{--no-bootloader} option. For more information, @pxref{Invoking guix system}. This command may trigger downloads or builds of missing packages, which can take some time. @@ -7390,8 +7657,11 @@ good. @subsection Installing GuixSD in a Virtual Machine @cindex virtual machine, GuixSD installation -If you'd like to install GuixSD in a virtual machine (VM) rather than on -your beloved machine, this section is for you. +@cindex virtual private server (VPS) +@cindex VPS (virtual private server) +If you'd like to install GuixSD in a virtual machine (VM) or on a +virtual private server (VPS) rather than on your beloved machine, this +section is for you. To boot a @uref{http://qemu.org/,QEMU} VM for installing GuixSD in a disk image, follow these steps: @@ -7528,7 +7798,19 @@ provides all the tools one would expect 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 tcpdump to those, taken from the @code{(gnu -packages admin)} module (@pxref{Package Modules}). +packages admin)} module (@pxref{Package Modules}). The +@code{(list package output)} syntax can be used to add a specific output +of a package: + +@lisp +(use-modules (gnu packages)) +(use-modules (gnu packages dns)) + +(operating-system + ;; ... + (packages (cons (list bind "utils") + %base-packages))) +@end lisp @findex specification->package Referring to packages by variable name, like @var{tcpdump} above, has @@ -7614,7 +7896,7 @@ management, power management, and more, would look like this: @include os-config-desktop.texi @end lisp -A graphical environment with a choice of lightweight window managers +A graphical UEFI system with a choice of lightweight window managers instead of full-blown desktop environments would look like this: @lisp @@ -9016,9 +9298,9 @@ This service is not part of @var{%base-services}. @end deffn @anchor{guix-publish-service-type} -@deffn {Scheme Variable} guix-publish-service-type @var{config} +@deffn {Scheme Variable} guix-publish-service-type This is the service type for @command{guix publish} (@pxref{Invoking -guix publish}). @var{config} must be a @code{guix-configuration} +guix publish}). Its value must be a @code{guix-configuration} object, as described below. This assumes that @file{/etc/guix} already contains a signing key pair as @@ -9049,6 +9331,23 @@ compression ratio at the expense of increased CPU usage. @item @code{nar-path} (default: @code{"nar"}) The URL path at which ``nars'' can be fetched. @xref{Invoking guix publish, @code{--nar-path}}, for details. + +@item @code{cache} (default: @code{#f}) +When it is @code{#f}, disable caching and instead generate archives on +demand. Otherwise, this should be the name of a directory---e.g., +@code{"/var/cache/guix/publish"}---where @command{guix publish} caches +archives and meta-data ready to be sent. @xref{Invoking guix publish, +@option{--cache}}, for more information on the tradeoffs involved. + +@item @code{workers} (default: @code{#f}) +When it is an integer, this is the number of worker threads used for +caching; when @code{#f}, the number of processors is used. +@xref{Invoking guix publish, @option{--workers}}, for more information. + +@item @code{ttl} (default: @code{#f}) +When it is an integer, this denotes the @dfn{time-to-live} of the +published archives. @xref{Invoking guix publish, @option{--ttl}}, for +more information. @end table @end deftp @@ -9206,7 +9505,7 @@ with the default settings. (operating-system ;; @dots{} (services (cons* (mcron-service) - (service rottlog-service-type (rottlog-configuration)) + (service rottlog-service-type) %base-services))) @end lisp @@ -9383,10 +9682,9 @@ The value of this service is the @code{wpa-supplicant} package to use. Thus, it can be instantiated like this: @lisp -(use-modules (gnu services networking) - (gnu packages admin)) +(use-modules (gnu services networking)) -(service wpa-supplicant-service-type wpa-supplicant) +(service wpa-supplicant-service-type) @end lisp @end defvr @@ -9994,9 +10292,10 @@ system, add a @code{cups-service} to the operating system definition: @deffn {Scheme Variable} cups-service-type The service type for the CUPS print server. Its value should be a valid -CUPS configuration (see below). For example: +CUPS configuration (see below). To use the default settings, simply +write: @example -(service cups-service-type (cups-configuration)) +(service cups-service-type) @end example @end deffn @@ -12541,19 +12840,26 @@ remote servers. Run @command{man smtpd.conf} for more information. @subsubheading Exim Service +@cindex mail transfer agent (MTA) +@cindex MTA (mail transfer agent) +@cindex SMTP + @deffn {Scheme Variable} exim-service-type -This is the type of the @uref{https://exim.org, Exim} service, whose value -should be an @code{exim-configuration} object as in this example: +This is the type of the @uref{https://exim.org, Exim} mail transfer +agent (MTA), whose value should be an @code{exim-configuration} object +as in this example: @example (service exim-service-type (exim-configuration - (config-file (local-file "./my-exim.conf")) - (aliases '(("postmaster" "bob") - ("bob" "bob@@example.com" "bob@@example2.com"))))) + (config-file (local-file "./my-exim.conf")))) @end example @end deffn +In order to use an @code{exim-service-type} service you must also have a +@code{mail-aliases-service-type} service present in your +@code{operating-system} (even if it has no aliases). + @deftp {Data Type} exim-configuration Data type representing the configuration of exim. @@ -12568,16 +12874,37 @@ provided in @code{package}. The resulting configuration file is loaded after setting the @code{exim_user} and @code{exim_group} configuration variables. -@item @code{aliases} (default: @code{'()}) -List of aliases to use when delivering mail on this system. The -@code{car} of each list is used to match incoming mail, with the -@code{cdr} of each list designating how to deliver it. There may be many -delivery methods provided, in which case the mail is delivered to them -all. - @end table @end deftp +@subsubheading Mail Aliases Service + +@cindex email aliases +@cindex aliases, for email addresses + +@deffn {Scheme Variable} mail-aliases-service-type +This is the type of the service which provides @code{/etc/aliases}, +specifying how to deliver mail to users on this system. + +@example +(service mail-aliases-service-type + '(("postmaster" "bob") + ("bob" "bob@@example.com" "bob@@example2.com"))) +@end example +@end deffn + +The configuration for a @code{mail-aliases-service-type} service is an +association list denoting how to deliver mail that comes to this +system. Each entry is of the form @code{(alias addresses ...)}, with +@code{alias} specifying the local alias and @code{addresses} specifying +where to deliver this user's mail. + +The aliases aren't required to exist as users on the local system. In +the above example, there doesn't need to be a @code{postmaster} entry in +the @code{operating-system}'s @code{user-accounts} in order to deliver +the @code{postmaster} mail to @code{bob} (which subsequently would +deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}). + @node Messaging Services @subsubsection Messaging Services @@ -13121,6 +13448,15 @@ used to specify the list of @dfn{server blocks} required on the host and blocks} to configure. For this to work, use the default value for @var{config-file}. +At startup, @command{nginx} has not yet read its configuration file, so it +uses a default file to log error messages. If it fails to load its +configuration file, that is where error messages are logged. After the +configuration file is loaded, the default error log file changes as per +configuration. In our case, startup error messages can be found in +@file{/var/run/nginx/logs/error.log}, and after configuration in +@file{/var/log/nginx/error.log}. The second location can be changed with the +@var{log-directory} configuration option. + @end deffn @deffn {Scheme Variable} nginx-service-type @@ -13824,9 +14160,10 @@ source is detected. More information can be found at @deffn {Scheme Variable} tlp-service-type The service type for the TLP tool. Its value should be a valid -TLP configuration (see below). For example: +TLP configuration (see below). To use the default settings, simply +write: @example -(service tlp-service-type (tlp-configuration)) +(service tlp-service-type) @end example @end deffn @@ -14312,6 +14649,31 @@ Defaults to @samp{#f}. @end deftypevr + +The @code{(gnu services pm)} module provides an interface to +thermald, a CPU frequency scaling service which helps prevent overheating. + +@defvr {Scheme Variable} thermald-service-type +This is the service type for +@uref{https://01.org/linux-thermal-daemon/, thermald}, the Linux +Thermal Daemon, which is responsible for controlling the thermal state +of processors and preventing overheating. +@end defvr + +@deftp {Data Type} thermald-configuration +Data type representing the configuration of @code{thermald-service-type}. + +@table @asis +@item @code{ignore-cpuid-check?} (default: @code{#f}) +Ignore cpuid check for supported CPU models. + +@item @code{thermald} (default: @var{thermald}) +Package object of thermald. + +@end table +@end deftp + + @node Miscellaneous Services @subsubsection Miscellaneous Services @@ -14601,6 +14963,19 @@ $ export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" $ export GIT_SSL_CAINFO="$SSL_CERT_FILE" @end example +As another example, R requires the @code{CURL_CA_BUNDLE} environment +variable to point to a certificate bundle, so you would have to run +something like this: + +@example +$ guix package -i nss-certs +$ export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" +@end example + +For other applications you may want to look up the required environment +variable in the relevant documentation. + + @node Name Service Switch @subsection Name Service Switch @@ -14919,7 +15294,38 @@ The number of seconds to wait for keyboard input before booting. Set to The @code{grub-theme} object describing the theme to use. @item @code{grub} (default: @code{grub}) -The GRUB package to use. +@cindex EFI, bootloader +@cindex UEFI, bootloader +@cindex BIOS, bootloader +The GRUB package to use. Currently either @code{grub}, for ``legacy'' +x86 BIOS systems, or @code{grub-efi}, for modern systems using the +@dfn{Unified Extensible Firmware Interface} (UEFI). + +@item @code{terminal-outputs} (default: @code{'gfxterm}) +The output terminals used for the GRUB boot menu, as a list of symbols. +These values are accepted: @code{console}, @code{serial}, +@code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, +@code{morse}, and @code{pkmodem}. This field corresponds to the GRUB +variable GRUB_TERMINAL_OUTPUT (@pxref{Simple configuration,,, grub,GNU +GRUB manual}). + +@item @code{terminal-inputs} (default: @code{'()}) +The input terminals used for the GRUB boot menu, as a list of symbols. +The default is the native platform terminal as determined by GRUB at +run-time. These values are accepted: @code{console}, @code{serial}, +@code{serial_@{0-3@}}, @code{at_keyboard}, and @code{usb_keyboard}. +This field corresponds to the GRUB variable GRUB_TERMINAL_INPUT +(@pxref{Simple configuration,,, grub,GNU GRUB manual}). + +@item @code{serial-unit} (default: @code{#f}) +The serial unit used by GRUB, as an integer from 0 to 3. The default +value is chosen by GRUB at run-time; currently GRUB chooses 0, which +corresponds to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual}). + +@item @code{serial-speed} (default: @code{#f}) +The speed of the serial interface, as an integer. The default value is +chosen by GRUB at run-time; currently GRUB chooses 9600@tie{}bps +(@pxref{Serial terminal,,, grub,GNU GRUB manual}). @end table @end deftp @@ -15043,7 +15449,7 @@ overwritten. This behavior mirrors that of @command{guix package} It also adds a GRUB menu entry for the new OS configuration, and moves entries for older configurations to a submenu---unless -@option{--no-grub} is passed. +@option{--no-bootloader} is passed. @quotation Note @c The paragraph below refers to the problem discussed at @@ -15123,7 +15529,7 @@ needed for the system to operate correctly---e.g., the @file{/etc}, @file{/var}, and @file{/run} directories, and the @file{/bin/sh} file. This command also installs GRUB on the device specified in -@file{my-os-config}, unless the @option{--no-grub} option was passed. +@file{my-os-config}, unless the @option{--no-bootloader} option was passed. @item vm @cindex virtual machine @@ -15226,6 +15632,11 @@ of the given @var{size}. @var{size} may be a number of bytes, or it may include a unit as a suffix (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}). +@item --root=@var{file} +@itemx -r @var{file} +Make @var{file} a symlink to the result, and register it as a garbage +collector root. + @item --on-error=@var{strategy} Apply @var{strategy} when an error occurs when reading @var{file}. @var{strategy} may be one of the following: @@ -15313,17 +15724,21 @@ example graph. @subsection Running GuixSD in a Virtual Machine @cindex virtual machine -One way to run GuixSD in a virtual machine (VM) is to build a GuixSD -virtual machine image using @command{guix system vm-image} -(@pxref{Invoking guix system}). The returned image is in qcow2 format, -which the @uref{http://qemu.org/, QEMU emulator} can efficiently use. +To run GuixSD in a virtual machine (VM), one can either use the +pre-built GuixSD VM image distributed at +@indicateurl{ftp://alpha.gnu.org/guix/guixsd-vm-image-@value{VERSION}.@var{system}.tar.xz} +, or build their own virtual machine image using @command{guix system +vm-image} (@pxref{Invoking guix system}). The returned image is in +qcow2 format, which the @uref{http://qemu.org/, QEMU emulator} can +efficiently use. @cindex QEMU -To run the image in QEMU, copy it out of the store (@pxref{The Store}) -and give yourself permission to write to the copy. When invoking QEMU, -you must choose a system emulator that is suitable for your hardware -platform. Here is a minimal QEMU invocation that will boot the result -of @command{guix system vm-image} on x86_64 hardware: +If you built your own image, you must copy it out of the store +(@pxref{The Store}) and give yourself permission to write to the copy +before you can use it. When invoking QEMU, you must choose a system +emulator that is suitable for your hardware platform. Here is a minimal +QEMU invocation that will boot the result of @command{guix system +vm-image} on x86_64 hardware: @example $ qemu-system-x86_64 \ @@ -15369,7 +15784,7 @@ to your system definition and start the VM using @command{`guix system vm config.scm` -net user}. An important caveat of using @command{-net user} for networking is that @command{ping} will not work, because it uses the ICMP protocol. You'll have to use a different command to check for -network connectivity, like for example @command{curl}. +network connectivity, for example @command{guix download}. @subsubsection Connecting Through SSH @@ -15500,11 +15915,12 @@ with a simple example, the service type for the Guix build daemon (extensions (list (service-extension shepherd-root-service-type guix-shepherd-service) (service-extension account-service-type guix-accounts) - (service-extension activation-service-type guix-activation))))) + (service-extension activation-service-type guix-activation))) + (default-value (guix-configuration)))) @end example @noindent -It defines two things: +It defines three things: @enumerate @item @@ -15517,6 +15933,9 @@ service, returns a list of objects to extend the service of that type. Every service type has at least one service extension. The only exception is the @dfn{boot service type}, which is the ultimate service. + +@item +Optionally, a default value for instances of this type. @end enumerate In this example, @var{guix-service-type} extends three services: @@ -15552,7 +15971,13 @@ A service of this type is instantiated like this: The second argument to the @code{service} form is a value representing the parameters of this specific service instance. @xref{guix-configuration-type, @code{guix-configuration}}, for -information about the @code{guix-configuration} data type. +information about the @code{guix-configuration} data type. When the +value is omitted, the default value specified by +@code{guix-service-type} is used: + +@example +(service guix-service-type) +@end example @var{guix-service-type} is quite simple because it extends other services but is not extensible itself. @@ -15615,10 +16040,31 @@ Services}). This section provides a reference on how to manipulate services and service types. This interface is provided by the @code{(gnu services)} module. -@deffn {Scheme Procedure} service @var{type} @var{value} +@deffn {Scheme Procedure} service @var{type} [@var{value}] Return a new service of @var{type}, a @code{<service-type>} object (see below.) @var{value} can be any object; it represents the parameters of this particular service instance. + +When @var{value} is omitted, the default value specified by @var{type} +is used; if @var{type} does not specify a default value, an error is +raised. + +For instance, this: + +@example +(service openssh-service-type) +@end example + +@noindent +is equivalent to this: + +@example +(service openssh-service-type + (openssh-configuration)) +@end example + +In both cases the result is an instance of @code{openssh-service-type} +with the default configuration. @end deffn @deffn {Scheme Procedure} service? @var{obj} @@ -15629,7 +16075,7 @@ Return true if @var{obj} is a service. Return the type of @var{service}---i.e., a @code{<service-type>} object. @end deffn -@deffn {Scheme Procedure} service-parameters @var{service} +@deffn {Scheme Procedure} service-value @var{service} Return the value associated with @var{service}. It represents its parameters. @end deffn @@ -15895,6 +16341,70 @@ This service represents PID@tie{}1. @end defvr +@node Documentation +@section Documentation + +@cindex documentation, searching for +@cindex searching for documentation +@cindex Info, documentation format +@cindex man pages +@cindex manual pages +In most cases packages installed with Guix come with documentation. +There are two main documentation formats: ``Info'', a browseable +hypertext format used for GNU software, and ``manual pages'' (or ``man +pages''), the linear documentation format traditionally found on Unix. +Info manuals are accessed with the @command{info} command or with Emacs, +and man pages are accessed using @command{man}. + +You can look for documentation of software installed on your system by +keyword. For example, the following command searches for information +about ``TLS'' in Info manuals: + +@example +$ info -k TLS +"(emacs)Network Security" -- STARTTLS +"(emacs)Network Security" -- TLS +"(gnutls)Core TLS API" -- gnutls_certificate_set_verify_flags +"(gnutls)Core TLS API" -- gnutls_certificate_set_verify_function +@dots{} +@end example + +@noindent +The command below searches for the same keyword in man pages: + +@example +$ man -k TLS +SSL (7) - OpenSSL SSL/TLS library +certtool (1) - GnuTLS certificate tool +@dots {} +@end example + +These searches are purely local to your computer so you have the +guarantee that documentation you find corresponds to what you have +actually installed, you can access it off-line, and your privacy is +respected. + +Once you have these results, you can view the relevant documentation by +running, say: + +@example +$ info "(gnutls)Core TLS API" +@end example + +@noindent +or: + +@example +$ man certtool +@end example + +Info manuals contain sections and indices as well as hyperlinks like +those found in Web pages. The @command{info} reader (@pxref{Top, Info +reader,, info-stnd, Stand-alone GNU Info}) and its Emacs counterpart +(@pxref{Misc Help,,, emacs, The GNU Emacs Manual}) provide intuitive key +bindings to navigate manuals. @xref{Getting Started,,, info, Info: An +Introduction}, for an introduction to Info navigation. + @node Installing Debugging Files @section Installing Debugging Files @@ -15976,9 +16486,9 @@ distribution: @smallexample $ guix lint -c cve -gnu/packages/base.scm:652:2: glibc-2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547 -gnu/packages/gcc.scm:334:2: gcc-4.9.3: probably vulnerable to CVE-2015-5276 -gnu/packages/image.scm:312:2: openjpeg-2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924 +gnu/packages/base.scm:652:2: glibc@@2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547 +gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probably vulnerable to CVE-2015-5276 +gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924 @dots{} @end smallexample @@ -16206,7 +16716,7 @@ needed is to review and apply the patch. * Package Naming:: What's in a name? * Version Numbers:: When the name is not enough. * Synopses and Descriptions:: Helping users find the right package. -* Python Modules:: Taming the snake. +* Python Modules:: A touch of British comedy. * Perl Modules:: Little pearls. * Java Packages:: Coffee break. * Fonts:: Fond of fonts. diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf index 93e214fcc5..78f427bd07 100644 --- a/doc/htmlxref.cnf +++ b/doc/htmlxref.cnf @@ -219,7 +219,9 @@ emacs node ${EMACS}/html_node/emacs/ easejs mono ${GS}/easejs/manual/easejs.html easejs node ${GS}/easejs/manual/ -emacs-guix mono https://notabug.org/alezost/emacs-guix +EMACS_GUIX = https://alezost.github.io/guix.el/manual/latest +emacs-guix mono ${EMACS_GUIX}/emacs-guix.html +emacs-guix node ${EMACS_GUIX}/html_node/index.html emacs-muse node ${GS}/emacs-muse/manual/muse.html emacs-muse node ${GS}/emacs-muse/manual/html_node/ diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in index ffe4cf9bd5..988cf90c00 100644 --- a/etc/guix-daemon.service.in +++ b/etc/guix-daemon.service.in @@ -13,7 +13,9 @@ StandardOutput=syslog StandardError=syslog # See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>. -TasksMax=1024 +# Some package builds (for example, go@1.8.1) may require even more than +# 1024 tasks. +TasksMax=8192 [Install] WantedBy=multi-user.target diff --git a/etc/indent-code.el.in b/etc/indent-code.el.in index 68ad72c562..6102b5d1ab 100755 --- a/etc/indent-code.el.in +++ b/etc/indent-code.el.in @@ -26,10 +26,10 @@ ;;; Code: -;; Load Scheme indentation rules from the current directory. +;; Load Scheme indentation rules from ".dir-locals.el". (with-temp-buffer (scheme-mode) - (let ((default-directory (file-name-as-directory ".")) + (let ((default-directory (file-name-as-directory load-file-name)) (enable-local-variables :all)) (hack-dir-local-variables) (hack-local-variables-apply))) diff --git a/gnu.scm b/gnu.scm index 932e4cdd58..913ce61600 100644 --- a/gnu.scm +++ b/gnu.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Joshua S. Grant <jgrant@parenthetical.io> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,7 +35,8 @@ '((gnu system) (gnu system mapped-devices) (gnu system file-systems) - (gnu system grub) ; 'grub-configuration' + (gnu bootloader) + (gnu bootloader grub) (gnu system pam) (gnu system shadow) ; 'user-account' (gnu system linux-initrd) diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm new file mode 100644 index 0000000000..4e77974d31 --- /dev/null +++ b/gnu/bootloader.scm @@ -0,0 +1,127 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 David Craven <david@craven.ch> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu bootloader) + #:use-module (guix discovery) + #:use-module (guix records) + #:use-module (guix ui) + #:use-module (srfi srfi-1) + #:export (bootloader + bootloader? + bootloader-name + bootloader-package + bootloader-installer + bootloader-configuration-file + bootloader-configuration-file-generator + + bootloader-configuration + bootloader-configuration? + bootloader-configuration-bootloader + bootloader-configuration-device + bootloader-configuration-menu-entries + bootloader-configuration-default-entry + bootloader-configuration-timeout + bootloader-configuration-theme + bootloader-configuration-terminal-outputs + bootloader-configuration-terminal-inputs + bootloader-configuration-serial-unit + bootloader-configuration-serial-speed + bootloader-configuration-additional-configuration + + %bootloaders + lookup-bootloader-by-name)) + + +;;; +;;; Bootloader record. +;;; + +;; The <bootloader> record contains fields expressing how the bootloader +;; should be installed. Every bootloader in gnu/bootloader/ directory +;; has to be described by this record. + +(define-record-type* <bootloader> + bootloader make-bootloader + bootloader? + (name bootloader-name) + (package bootloader-package) + (installer bootloader-installer) + (configuration-file bootloader-configuration-file) + (configuration-file-generator bootloader-configuration-file-generator)) + + +;;; +;;; Bootloader configuration record. +;;; + +;; The <bootloader-configuration> record contains bootloader independant +;; configuration used to fill bootloader configuration file. + +(define-record-type* <bootloader-configuration> + bootloader-configuration make-bootloader-configuration + bootloader-configuration? + (bootloader bootloader-configuration-bootloader) ; <bootloader> + (device bootloader-configuration-device ; string + (default #f)) + (menu-entries bootloader-configuration-menu-entries ; list of <boot-parameters> + (default '())) + (default-entry bootloader-configuration-default-entry ; integer + (default 0)) + (timeout bootloader-configuration-timeout ; seconds as integer + (default 5)) + (theme bootloader-configuration-theme ; bootloader-specific theme + (default #f)) + (terminal-outputs bootloader-configuration-terminal-outputs ; list of symbols + (default '(gfxterm))) + (terminal-inputs bootloader-configuration-terminal-inputs ; list of symbols + (default '())) + (serial-unit bootloader-configuration-serial-unit ; integer | #f + (default #f)) + (serial-speed bootloader-configuration-serial-speed ; integer | #f + (default #f)) + (additional-configuration bootloader-configuration-additional-configuration ; record + (default #f))) + + +;;; +;;; Bootloaders. +;;; + +(define (bootloader-modules) + "Return the list of bootloader modules." + (all-modules (map (lambda (entry) + `(,entry . "gnu/bootloader")) + %load-path))) + +(define %bootloaders + ;; The list of publically-known bootloaders. + (delay (fold-module-public-variables (lambda (obj result) + (if (bootloader? obj) + (cons obj result) + result)) + '() + (bootloader-modules)))) + +(define (lookup-bootloader-by-name name) + "Return the bootloader called NAME." + (or (find (lambda (bootloader) + (eq? name (bootloader-name bootloader))) + (force %bootloaders)) + (leave (G_ "~a: no such bootloader~%") name))) diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm new file mode 100644 index 0000000000..67b8815d40 --- /dev/null +++ b/gnu/bootloader/extlinux.scm @@ -0,0 +1,120 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 David Craven <david@craven.ch> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu bootloader extlinux) + #:use-module (gnu bootloader) + #:use-module (gnu system) + #:use-module (gnu packages bootloaders) + #:use-module (guix gexp) + #:use-module (guix monads) + #:use-module (guix records) + #:use-module (guix utils) + #:export (extlinux-bootloader)) + +(define* (extlinux-configuration-file config entries + #:key + (system (%current-system)) + (old-entries '())) + "Return the U-Boot configuration file corresponding to CONFIG, a +<u-boot-configuration> object, and where the store is available at STORE-FS, a +<file-system> object. OLD-ENTRIES is taken to be a list of menu entries +corresponding to old generations of the system." + + (define all-entries + (append entries (bootloader-configuration-menu-entries config))) + + (define (boot-parameters->gexp params) + (let ((label (boot-parameters-label params)) + (kernel (boot-parameters-kernel params)) + (kernel-arguments (boot-parameters-kernel-arguments params)) + (initrd (boot-parameters-initrd params))) + #~(format port "LABEL ~a + MENU LABEL ~a + KERNEL ~a + FDTDIR ~a/lib/dtbs + INITRD ~a + APPEND ~a +~%" + #$label #$label + #$kernel #$kernel #$initrd + (string-join (list #$@kernel-arguments))))) + + (define builder + #~(call-with-output-file #$output + (lambda (port) + (let ((timeout #$(bootloader-configuration-timeout config))) + (format port "# This file was generated from your GuixSD configuration. Any changes +# will be lost upon reconfiguration. +UI menu.c32 +PROMPT ~a +TIMEOUT ~a~%" + (if (> timeout 0) 1 0) + ;; timeout is expressed in 1/10s of seconds. + (* 10 timeout)) + #$@(map boot-parameters->gexp all-entries) + + #$@(if (pair? old-entries) + #~((format port "~%") + #$@(map boot-parameters->gexp old-entries) + (format port "~%")) + #~()))))) + + (gexp->derivation "extlinux.conf" builder)) + + + + +;;; +;;; Install procedures. +;;; + +(define dd + #~(lambda (bs count if of) + (zero? (system* "dd" + (string-append "bs=" (number->string bs)) + (string-append "count=" (number->string count)) + (string-append "if=" if) + (string-append "of=" of))))) + +(define install-extlinux + #~(lambda (bootloader device mount-point) + (let ((extlinux (string-append bootloader "/sbin/extlinux")) + (install-dir (string-append mount-point "/boot/extlinux")) + (syslinux-dir (string-append bootloader "/share/syslinux"))) + (for-each (lambda (file) + (install-file file install-dir)) + (find-files syslinux-dir "\\.c32$")) + + (unless (and (zero? (system* extlinux "--install" install-dir)) + (#$dd 440 1 (string-append syslinux-dir "/mbr.bin") device)) + (error "failed to install SYSLINUX"))))) + + + +;;; +;;; Bootloader definitions. +;;; + +(define extlinux-bootloader + (bootloader + (name 'extlinux) + (package syslinux) + (installer install-extlinux) + (configuration-file "/boot/extlinux/extlinux.conf") + (configuration-file-generator extlinux-configuration-file))) diff --git a/gnu/system/grub.scm b/gnu/bootloader/grub.scm index 4f9bde6a62..49616b7164 100644 --- a/gnu/system/grub.scm +++ b/gnu/bootloader/grub.scm @@ -1,6 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,7 +19,7 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. -(define-module (gnu system grub) +(define-module (gnu bootloader grub) #:use-module (guix store) #:use-module (guix packages) #:use-module (guix derivations) @@ -26,6 +28,8 @@ #:use-module (guix gexp) #:use-module (guix download) #:use-module (gnu artwork) + #:use-module (gnu system) + #:use-module (gnu bootloader) #:use-module (gnu system file-systems) #:autoload (gnu packages bootloaders) (grub) #:autoload (gnu packages compression) (gzip) @@ -48,15 +52,10 @@ %background-image %default-theme - grub-configuration - grub-configuration? - grub-configuration-device - grub-configuration-grub + grub-bootloader + grub-efi-bootloader - menu-entry - menu-entry? - - grub-configuration-file)) + grub-configuration)) ;;; Commentary: ;;; @@ -104,21 +103,6 @@ denoting a file name." (color-highlight '((fg . yellow) (bg . black))) (color-normal '((fg . light-gray) (bg . black))))) ;XXX: #x303030 -(define-record-type* <grub-configuration> - grub-configuration make-grub-configuration - grub-configuration? - (grub grub-configuration-grub ; package - (default (@ (gnu packages bootloaders) grub))) - (device grub-configuration-device) ; string - (menu-entries grub-configuration-menu-entries ; list - (default '())) - (default-entry grub-configuration-default-entry ; integer - (default 0)) - (timeout grub-configuration-timeout ; integer - (default 5)) - (theme grub-configuration-theme ; <grub-theme> - (default %default-theme))) - (define-record-type* <menu-entry> menu-entry make-menu-entry menu-entry? @@ -137,21 +121,26 @@ denoting a file name." ;;; Background image & themes. ;;; +(define (bootloader-theme config) + "Return user defined theme in CONFIG if defined or %default-theme +otherwise." + (or (bootloader-configuration-theme config) %default-theme)) + (define* (svg->png svg #:key width height) "Build a PNG of HEIGHT x WIDTH from SVG." (gexp->derivation "grub-image.png" (with-imported-modules '((gnu build svg)) #~(begin ;; We need these two libraries. - (add-to-load-path (string-append #$guile-rsvg + (add-to-load-path (string-append #+guile-rsvg "/share/guile/site/" (effective-version))) - (add-to-load-path (string-append #$guile-cairo + (add-to-load-path (string-append #+guile-cairo "/share/guile/site/" (effective-version))) (use-modules (gnu build svg)) - (svg->png #$svg #$output + (svg->png #+svg #$output #:width #$width #:height #$height))))) @@ -161,7 +150,8 @@ WIDTH/HEIGHT, or #f if none was found." (let* ((ratio (/ width height)) (image (find (lambda (image) (= (grub-image-aspect-ratio image) ratio)) - (grub-theme-images (grub-configuration-theme config))))) + (grub-theme-images + (bootloader-theme config))))) (if image (svg->png (grub-image-file image) #:width width #:height height) @@ -198,13 +188,18 @@ system string---e.g., \"x86_64-linux\"." insmod vbe insmod vga fi - - terminal_output gfxterm " "")) + (define (setup-gfxterm config font-file) + (if (memq 'gfxterm (bootloader-configuration-terminal-outputs config)) + #~(format #f "if loadfont ~a; then + setup_gfxterm +fi~%" #$font-file) + "")) + (define (theme-colors type) - (let* ((theme (grub-configuration-theme config)) + (let* ((theme (bootloader-theme config)) (colors (type theme))) (string-append (symbol->string (assoc-ref colors 'fg)) "/" (symbol->string (assoc-ref colors 'bg))))) @@ -221,9 +216,8 @@ function setup_gfxterm {~a} # Set 'root' to the partition that contains /gnu/store. ~a -if loadfont ~a; then - setup_gfxterm -fi +~a +~a insmod png if background_image ~a; then @@ -235,7 +229,8 @@ else fi~%" #$setup-gfxterm-body #$(grub-root-search store-device font-file) - #$font-file + #$(setup-gfxterm config font-file) + #$(grub-setup-io config) #$(strip-mount-point store-mount-point image) #$(theme-colors grub-theme-color-normal) @@ -246,6 +241,57 @@ fi~%" ;;; Configuration file. ;;; +(define (grub-setup-io config) + "Return GRUB commands to configure the input / output interfaces. The result +is a string that can be inserted in grub.cfg." + (let* ((symbols->string (lambda (list) + (string-join (map symbol->string list) " "))) + (outputs (bootloader-configuration-terminal-outputs config)) + (inputs (bootloader-configuration-terminal-inputs config)) + (unit (bootloader-configuration-serial-unit config)) + (speed (bootloader-configuration-serial-speed config)) + + ;; Respectively, GRUB_TERMINAL_OUTPUT and GRUB_TERMINAL_INPUT, + ;; as documented in GRUB manual section "Simple Configuration + ;; Handling". + (valid-outputs '(console serial serial_0 serial_1 serial_2 serial_3 + gfxterm vga_text mda_text morse spkmodem)) + (valid-inputs '(console serial serial_0 serial_1 serial_2 serial_3 + at_keyboard usb_keyboard)) + + (io (string-append + "terminal_output " + (symbols->string + (map + (lambda (output) + (if (memq output valid-outputs) output #f)) outputs)) "\n" + (if (null? inputs) + "" + (string-append + "terminal_input " + (symbols->string + (map + (lambda (input) + (if (memq input valid-inputs) input #f)) inputs)) "\n")) + ;; UNIT and SPEED are arguments to the same GRUB command + ;; ("serial"), so we process them together. + (if (or unit speed) + (string-append + "serial" + (if unit + ;; COM ports 1 through 4 + (if (and (exact-integer? unit) (<= unit 3) (>= unit 0)) + (string-append " --unit=" (number->string unit)) + #f) + "") + (if speed + (if (exact-integer? speed) + (string-append " --speed=" (number->string speed)) + #f) + "")) + "")))) + (format #f "~a" io))) + (define (grub-root-search device file) "Return the GRUB 'search' command to look for DEVICE, which contains FILE, a gexp. The result is a gexp that can be inserted in the grub.cfg-generation @@ -266,16 +312,28 @@ code." (#f #~(format #f "search --file --set ~a" #$file))))) +(define (boot-parameters->menu-entry conf) + "Convert a <boot-parameters> instance to a corresponding <menu-entry>." + (menu-entry + (label (boot-parameters-label conf)) + (device (boot-parameters-store-device conf)) + (device-mount-point (boot-parameters-store-mount-point conf)) + (linux (boot-parameters-kernel conf)) + (linux-arguments (boot-parameters-kernel-arguments conf)) + (initrd (boot-parameters-initrd conf)))) + (define* (grub-configuration-file config entries #:key (system (%current-system)) (old-entries '())) "Return the GRUB configuration file corresponding to CONFIG, a -<grub-configuration> object, and where the store is available at STORE-FS, a -<file-system> object. OLD-ENTRIES is taken to be a list of menu entries -corresponding to old generations of the system." +<bootloader-configuration> object, and where the store is available at +STORE-FS, a <file-system> object. OLD-ENTRIES is taken to be a list of menu +entries corresponding to old generations of the system." (define all-entries - (append entries (grub-configuration-menu-entries config))) + (map boot-parameters->menu-entry + (append entries + (bootloader-configuration-menu-entries config)))) (define entry->gexp (match-lambda @@ -298,9 +356,9 @@ corresponding to old generations of the system." #$initrd))))) (mlet %store-monad ((sugar (eye-candy config - (menu-entry-device (first entries)) + (menu-entry-device (first all-entries)) (menu-entry-device-mount-point - (first entries)) + (first all-entries)) #:system system #:port #~port))) (define builder @@ -314,17 +372,77 @@ corresponding to old generations of the system." (format port " set default=~a set timeout=~a~%" - #$(grub-configuration-default-entry config) - #$(grub-configuration-timeout config)) + #$(bootloader-configuration-default-entry config) + #$(bootloader-configuration-timeout config)) #$@(map entry->gexp all-entries) #$@(if (pair? old-entries) #~((format port " submenu \"GNU system, old configurations...\" {~%") - #$@(map entry->gexp old-entries) + #$@(map entry->gexp (map boot-parameters->menu-entry old-entries)) (format port "}~%")) #~())))) (gexp->derivation "grub.cfg" builder))) + + +;;; +;;; Install procedures. +;;; + +(define install-grub + #~(lambda (bootloader device mount-point) + ;; Install GRUB on DEVICE which is mounted at MOUNT-POINT. + (let ((grub (string-append bootloader "/sbin/grub-install")) + (install-dir (string-append mount-point "/boot"))) + ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or + ;; root partition. + (setenv "GRUB_ENABLE_CRYPTODISK" "y") + + (unless (zero? (system* grub "--no-floppy" + "--boot-directory" install-dir + device)) + (error "failed to install GRUB"))))) + + + +;;; +;;; Bootloader definitions. +;;; + +(define grub-bootloader + (bootloader + (name 'grub) + (package grub) + (installer install-grub) + (configuration-file "/boot/grub/grub.cfg") + (configuration-file-generator grub-configuration-file))) + +(define* grub-efi-bootloader + (bootloader + (inherit grub-bootloader) + (name 'grub-efi) + (package grub-efi))) + + +;;; +;;; Compatibility macros. +;;; + +(define-syntax grub-configuration + (syntax-rules (grub) + ((_ (grub package) fields ...) + (if (eq? package grub) + (bootloader-configuration + (bootloader grub-bootloader) + fields ...) + (bootloader-configuration + (bootloader grub-efi-bootloader) + fields ...))) + ((_ fields ...) + (bootloader-configuration + (bootloader grub-bootloader) + fields ...)))) + ;;; grub.scm ends here diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm index beee56d437..a1d2a9cc7d 100644 --- a/gnu/build/activation.scm +++ b/gnu/build/activation.scm @@ -227,7 +227,11 @@ numeric gid or #f." #:supplementary-groups supplementary-groups #:comment comment #:home home + + ;; Home directories of non-system accounts are created by + ;; 'activate-user-home'. #:create-home? (and create-home? system?) + #:shell shell #:password password) @@ -282,7 +286,10 @@ they already exist." (match-lambda ((name uid group supplementary-groups comment home create-home? shell password system?) - (unless (or (not home) (directory-exists? home)) + ;; The home directories of system accounts are created during + ;; activation, not here. + (unless (or (not home) (not create-home?) system? + (directory-exists? home)) (let* ((pw (getpwnam name)) (uid (passwd:uid pw)) (gid (passwd:gid pw))) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index fe98df95d5..47aa77dd3e 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017 David Craven <david@craven.ch> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,12 +48,7 @@ mount-flags->bit-mask check-file-system - mount-file-system) - #:re-export (mount - umount - MS_BIND - MS_MOVE - MS_RDONLY)) + mount-file-system)) ;;; Commentary: ;;; @@ -61,13 +57,6 @@ ;;; ;;; Code: -;; 'mount' is already defined in the statically linked Guile used for initial -;; RAM disks, in which case the bindings in (guix build syscalls) do not work -;; (the FFI bindings do not work there). Override them in that case. -(when (module-defined? the-scm-module 'mount) - (set! mount (@ (guile) mount)) - (set! umount (@ (guile) umount))) - (define (bind-mount source target) "Bind-mount SOURCE at TARGET." (mount source target "" MS_BIND)) @@ -241,6 +230,63 @@ Trailing spaces are trimmed." ;;; +;;; ISO9660 file systems. +;;; + +;; <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf>. + +(define (iso9660-superblock? sblock) + "Return #t when SBLOCK is a iso9660 superblock." + (bytevector=? (sub-bytevector sblock 1 6) + ;; Note: "\x01" is the volume descriptor format version + (string->utf8 "CD001\x01"))) + +(define (read-iso9660-primary-volume-descriptor device offset) + "Find and read the first primary volume descriptor, starting at OFFSET. + Return #f if not found." + (let* ((sblock (read-superblock device offset 2048 iso9660-superblock?)) + (type-code (if sblock (array-ref sblock 0) 255))) + (match type-code + (255 #f) ; Volume Descriptor Set Terminator. + (1 sblock) ; Primary Volume Descriptor + (_ (read-iso9660-primary-volume-descriptor device (+ offset 2048)))))) + +(define (read-iso9660-superblock device) + "Return the raw contents of DEVICE's iso9660 superblock as a bytevector, or +#f if DEVICE does not contain a iso9660 file system." + ;; Start reading at sector 16. + (read-iso9660-primary-volume-descriptor device (* 2048 16))) + +(define (iso9660-superblock-uuid sblock) + "Return the modification time of a iso9660 superblock SBLOCK as a bytevector." + ;; Drops GMT offset for compatibility with Grub, blkid and /dev/disk/by-uuid. + ;; Compare Grub: "2014-12-02-19-30-23-00". + ;; Compare blkid result: "2014-12-02-19-30-23-00". + ;; Compare /dev/disk/by-uuid entry: "2014-12-02-19-30-23-00". + (sub-bytevector sblock 830 16)) + +(define (iso9660-uuid->string uuid) + "Given an UUID bytevector, return its timestamp string." + (define (digits->string bytes) + (latin1->string bytes (lambda (c) #f))) + (let* ((year (sub-bytevector uuid 0 4)) + (month (sub-bytevector uuid 4 2)) + (day (sub-bytevector uuid 6 2)) + (hour (sub-bytevector uuid 8 2)) + (minute (sub-bytevector uuid 10 2)) + (second (sub-bytevector uuid 12 2)) + (hundredths (sub-bytevector uuid 14 2)) + (parts (list year month day hour minute second hundredths))) + (string-append (string-join (map digits->string parts))))) + +(define (iso9660-superblock-volume-name sblock) + "Return the volume name of SBLOCK as a string. The volume name is an ASCII +string. Trailing spaces are trimmed." + (string-trim-right (latin1->string (sub-bytevector sblock 40 32) + (lambda (c) #f)) #\space)) + + +;;; ;;; LUKS encrypted devices. ;;; @@ -351,7 +397,9 @@ partition field reader that returned a value." (_ #f))) (define %partition-label-readers - (list (partition-field-reader read-ext2-superblock + (list (partition-field-reader read-iso9660-superblock + iso9660-superblock-volume-name) + (partition-field-reader read-ext2-superblock ext2-superblock-volume-name) (partition-field-reader read-btrfs-superblock btrfs-superblock-volume-name) @@ -359,7 +407,9 @@ partition field reader that returned a value." fat32-superblock-volume-name))) (define %partition-uuid-readers - (list (partition-field-reader read-ext2-superblock + (list (partition-field-reader read-iso9660-superblock + iso9660-superblock-uuid) + (partition-field-reader read-ext2-superblock ext2-superblock-uuid) (partition-field-reader read-btrfs-superblock btrfs-superblock-uuid) @@ -576,10 +626,6 @@ corresponds to the symbols listed in FLAGS." (() 0)))) -(define (regular-file? file-name) - "Return #t if FILE-NAME is a regular file." - (eq? (stat:type (stat file-name)) 'regular)) - (define* (mount-file-system spec #:key (root "/root")) "Mount the file system described by SPEC under ROOT. SPEC must have the form: @@ -619,9 +665,9 @@ run a file system check." (check-file-system source type)) ;; Create the mount point. Most of the time this is a directory, but - ;; in the case of a bind mount, a regular file may be needed. + ;; in the case of a bind mount, a regular file or socket may be needed. (if (and (= MS_BIND (logand flags MS_BIND)) - (regular-file? source)) + (not (file-is-directory? source))) (unless (file-exists? mount-point) (mkdir-p (dirname mount-point)) (call-with-output-file mount-point (const #t))) diff --git a/gnu/build/install.scm b/gnu/build/install.scm index 5cb6055a0c..9e30c0d23e 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -22,8 +22,7 @@ #:use-module (guix build store-copy) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:export (install-grub - install-grub-config + #:export (install-boot-config evaluate-populate-directive populate-root-file-system reset-timestamps @@ -39,36 +38,17 @@ ;;; ;;; Code: -(define (install-grub grub.cfg device mount-point) - "Install GRUB with GRUB.CFG on DEVICE, which is assumed to be mounted on -MOUNT-POINT. - -Note that the caller must make sure that GRUB.CFG is registered as a GC root -so that the fonts, background images, etc. referred to by GRUB.CFG are not -GC'd." - (install-grub-config grub.cfg mount-point) - - ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or root - ;; partition. - (setenv "GRUB_ENABLE_CRYPTODISK" "y") - - (unless (zero? (system* "grub-install" "--no-floppy" - "--boot-directory" - (string-append mount-point "/boot") - device)) - (error "failed to install GRUB"))) - -(define (install-grub-config grub.cfg mount-point) - "Atomically copy GRUB.CFG into boot/grub/grub.cfg on the MOUNT-POINT. Note -that the caller must make sure that GRUB.CFG is registered as a GC root so -that the fonts, background images, etc. referred to by GRUB.CFG are not GC'd." - (let* ((target (string-append mount-point "/boot/grub/grub.cfg")) +(define (install-boot-config bootcfg bootcfg-location mount-point) + "Atomically copy BOOTCFG into BOOTCFG-LOCATION on the MOUNT-POINT. Note +that the caller must make sure that BOOTCFG is registered as a GC root so +that the fonts, background images, etc. referred to by BOOTCFG are not GC'd." + (let* ((target (string-append mount-point bootcfg-location)) (pivot (string-append target ".new"))) (mkdir-p (dirname target)) - ;; Copy GRUB.CFG instead of just symlinking it, because symlinks won't + ;; Copy BOOTCFG instead of just symlinking it, because symlinks won't ;; work when /boot is on a separate partition. Do that atomically. - (copy-file grub.cfg pivot) + (copy-file bootcfg pivot) (rename-file pivot target))) (define (evaluate-populate-directive directive target) diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index c34a3f7c18..360ef3faed 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 ftw) #:use-module (guix build utils) + #:use-module (guix build syscalls) #:use-module (gnu build linux-modules) #:use-module (gnu build file-systems) #:export (mount-essential-file-systems diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm index d7feb3a080..5ca7bf8e38 100644 --- a/gnu/build/linux-modules.scm +++ b/gnu/build/linux-modules.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,6 +19,7 @@ (define-module (gnu build linux-modules) #:use-module (guix elf) + #:use-module (guix build syscalls) #:use-module (rnrs io ports) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm index 60ee18ebe0..57619764ce 100644 --- a/gnu/build/vm.scm +++ b/gnu/build/vm.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,9 +23,11 @@ (define-module (gnu build vm) #:use-module (guix build utils) #:use-module (guix build store-copy) + #:use-module (guix build syscalls) #:use-module (gnu build linux-boot) #:use-module (gnu build install) #:use-module (guix records) + #:use-module (ice-9 format) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) @@ -39,7 +43,7 @@ partition-size partition-file-system partition-label - partition-bootable? + partition-flags partition-initializer root-partition-initializer @@ -139,7 +143,7 @@ the #:references-graphs parameter of 'derivation'." (size partition-size) (file-system partition-file-system (default "ext4")) (label partition-label (default #f)) - (bootable? partition-bootable? (default #f)) + (flags partition-flags (default '())) (initializer partition-initializer (default (const #t)))) (define (fold2 proc seed1 seed2 lst) ;TODO: factorize @@ -166,9 +170,10 @@ actual /dev name based on DEVICE." (cons* "mkpart" "primary" "ext2" (format #f "~aB" offset) (format #f "~aB" (+ offset (partition-size part))) - (if (partition-bootable? part) - `("set" ,(number->string index) "boot" "on") - '()))) + (append-map (lambda (flag) + (list "set" (number->string index) + (symbol->string flag) "on")) + (partition-flags part)))) (define (options partitions offset) (let loop ((partitions partitions) @@ -209,10 +214,10 @@ actual /dev name based on DEVICE." (define MS_BIND 4096) ; <sys/mounts.h> again! -(define* (format-partition partition type - #:key label) - "Create a file system TYPE on PARTITION. If LABEL is true, use that as the -volume name." +(define* (create-ext-file-system partition type + #:key label) + "Create an ext-family filesystem of TYPE on PARTITION. If LABEL is true, +use that as the volume name." (format #t "creating ~a partition...\n" type) (unless (zero? (apply system* (string-append "mkfs." type) "-F" partition @@ -221,6 +226,28 @@ volume name." '()))) (error "failed to create partition"))) +(define* (create-fat-file-system partition + #:key label) + "Create a FAT filesystem on PARTITION. The number of File Allocation Tables +will be determined based on filesystem size. If LABEL is true, use that as the +volume name." + (format #t "creating FAT partition...\n") + (unless (zero? (apply system* "mkfs.fat" partition + (if label + `("-n" ,label) + '()))) + (error "failed to create FAT partition"))) + +(define* (format-partition partition type + #:key label) + "Create a file system TYPE on PARTITION. If LABEL is true, use that as the +volume name." + (cond ((string-prefix? "ext" type) + (create-ext-file-system partition type #:label label)) + ((or (string-prefix? "fat" type) (string= "vfat" type)) + (create-fat-file-system partition #:label label)) + (else (error "Unsupported file system.")))) + (define (initialize-partition partition) "Format PARTITION, a <partition> object with a non-#f 'device' field, mount it, run its initializer, and unmount it." @@ -283,23 +310,65 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation." (unless register-closures? (reset-timestamps target)))) -(define (register-grub.cfg-root target grub.cfg) - "On file system TARGET, register GRUB.CFG as a GC root." +(define (register-bootcfg-root target bootcfg) + "On file system TARGET, register BOOTCFG as a GC root." (let ((directory (string-append target "/var/guix/gcroots"))) (mkdir-p directory) - (symlink grub.cfg (string-append directory "/grub.cfg")))) + (symlink bootcfg (string-append directory "/bootcfg")))) + +(define (install-efi grub esp config-file) + "Write a self-contained GRUB EFI loader to the mounted ESP using CONFIG-FILE." + (let* ((system %host-type) + ;; Hard code the output location to a well-known path recognized by + ;; compliant firmware. See "3.5.1.1 Removable Media Boot Behaviour": + ;; http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf + (grub-mkstandalone (string-append grub "/bin/grub-mkstandalone")) + (efi-directory (string-append esp "/EFI/BOOT")) + ;; Map grub target names to boot file names. + (efi-targets (cond ((string-prefix? "x86_64" system) + '("x86_64-efi" . "BOOTX64.EFI")) + ((string-prefix? "i686" system) + '("i386-efi" . "BOOTIA32.EFI")) + ((string-prefix? "armhf" system) + '("arm-efi" . "BOOTARM.EFI")) + ((string-prefix? "aarch64" system) + '("arm64-efi" . "BOOTAA64.EFI"))))) + ;; grub-mkstandalone requires a TMPDIR to prepare the firmware image. + (setenv "TMPDIR" esp) + + (mkdir-p efi-directory) + (unless (zero? (system* grub-mkstandalone "-O" (car efi-targets) + "-o" (string-append efi-directory "/" + (cdr efi-targets)) + ;; Graft the configuration file onto the image. + (string-append "boot/grub/grub.cfg=" config-file))) + (error "failed to create GRUB EFI image")))) (define* (initialize-hard-disk device #:key - grub.cfg + bootloader-package + bootcfg + bootcfg-location + bootloader-installer + (grub-efi #f) (partitions '())) "Initialize DEVICE as a disk containing all the <partition> objects listed -in PARTITIONS, and using GRUB.CFG as its bootloader configuration file. +in PARTITIONS, and using BOOTCFG as its bootloader configuration file. Each partition is initialized by calling its 'initializer' procedure, passing it a directory name where it is mounted." + + (define (partition-bootable? partition) + "Return the first partition found with the boot flag set." + (member 'boot (partition-flags partition))) + + (define (partition-esp? partition) + "Return the first EFI System Partition." + (member 'esp (partition-flags partition))) + (let* ((partitions (initialize-partition-table device partitions)) (root (find partition-bootable? partitions)) + (esp (find partition-esp? partitions)) (target "/fs")) (unless root (error "no bootable partition specified" partitions)) @@ -309,10 +378,38 @@ passing it a directory name where it is mounted." (display "mounting root partition...\n") (mkdir-p target) (mount (partition-device root) target (partition-file-system root)) - (install-grub grub.cfg device target) - - ;; Register GRUB.CFG as a GC root. - (register-grub.cfg-root target grub.cfg) + (install-boot-config bootcfg bootcfg-location target) + (when bootloader-installer + (display "installing bootloader...\n") + (bootloader-installer bootloader-package device target)) + + (when esp + ;; Mount the ESP somewhere and install GRUB UEFI image. + (let ((mount-point (string-append target "/boot/efi")) + (grub-config (string-append target "/tmp/grub-standalone.cfg"))) + (display "mounting EFI system partition...\n") + (mkdir-p mount-point) + (mount (partition-device esp) mount-point + (partition-file-system esp)) + + ;; Create a tiny configuration file telling the embedded grub + ;; where to load the real thing. + (call-with-output-file grub-config + (lambda (port) + (format port + "insmod part_msdos~@ + search --set=root --label gnu-disk-image~@ + configfile /boot/grub/grub.cfg~%"))) + + (display "creating EFI firmware image...") + (install-efi grub-efi mount-point grub-config) + (display "done.\n") + + (delete-file grub-config) + (umount mount-point))) + + ;; Register BOOTCFG as a GC root. + (register-bootcfg-root target bootcfg) (umount target))) diff --git a/gnu/local.mk b/gnu/local.mk index a0d7cfd0ac..5ffd9779f9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -36,6 +36,9 @@ GNU_SYSTEM_MODULES = \ gnu.scm \ %D%/artwork.scm \ + %D%/bootloader.scm \ + %D%/bootloader/grub.scm \ + %D%/bootloader/extlinux.scm \ %D%/packages.scm \ %D%/packages/abduco.scm \ %D%/packages/abiword.scm \ @@ -45,6 +48,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/adns.scm \ %D%/packages/algebra.scm \ %D%/packages/aidc.scm \ + %D%/packages/android.scm \ %D%/packages/animation.scm \ %D%/packages/anthy.scm \ %D%/packages/apl.scm \ @@ -53,7 +57,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/assembly.scm \ %D%/packages/astronomy.scm \ %D%/packages/attr.scm \ - %D%/packages/audacity.scm \ %D%/packages/audio.scm \ %D%/packages/augeas.scm \ %D%/packages/autogen.scm \ @@ -71,6 +74,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/boost.scm \ %D%/packages/bootloaders.scm \ %D%/packages/bootstrap.scm \ + %D%/packages/build-tools.scm \ %D%/packages/busybox.scm \ %D%/packages/c.scm \ %D%/packages/calcurse.scm \ @@ -106,7 +110,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/dejagnu.scm \ %D%/packages/dico.scm \ %D%/packages/dictionaries.scm \ - %D%/packages/dillo.scm \ + %D%/packages/direct-connect.scm \ %D%/packages/disk.scm \ %D%/packages/display-managers.scm \ %D%/packages/django.scm \ @@ -193,6 +197,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/idris.scm \ %D%/packages/idutils.scm \ %D%/packages/image.scm \ + %D%/packages/image-processing.scm \ %D%/packages/image-viewers.scm \ %D%/packages/imagemagick.scm \ %D%/packages/indent.scm \ @@ -232,7 +237,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/libunwind.scm \ %D%/packages/libupnp.scm \ %D%/packages/lighting.scm \ - %D%/packages/links.scm \ %D%/packages/linux.scm \ %D%/packages/lirc.scm \ %D%/packages/lisp.scm \ @@ -244,7 +248,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/lua.scm \ %D%/packages/lxde.scm \ %D%/packages/lxqt.scm \ - %D%/packages/lynx.scm \ %D%/packages/m4.scm \ %D%/packages/machine-learning.scm \ %D%/packages/man.scm \ @@ -256,6 +259,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/maths.scm \ %D%/packages/mc.scm \ %D%/packages/mcrypt.scm \ + %D%/packages/mes.scm \ %D%/packages/messaging.scm \ %D%/packages/mingw.scm \ %D%/packages/mg.scm \ @@ -343,6 +347,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/sdl.scm \ %D%/packages/search.scm \ %D%/packages/security-token.scm \ + %D%/packages/selinux.scm \ %D%/packages/serialization.scm \ %D%/packages/serveez.scm \ %D%/packages/shells.scm \ @@ -355,6 +360,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/speech.scm \ %D%/packages/spice.scm \ %D%/packages/ssh.scm \ + %D%/packages/sssd.scm \ %D%/packages/stalonetray.scm \ %D%/packages/statistics.scm \ %D%/packages/storage.scm \ @@ -390,6 +396,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/w3m.scm \ %D%/packages/wdiff.scm \ %D%/packages/web.scm \ + %D%/packages/web-browsers.scm \ %D%/packages/webkit.scm \ %D%/packages/wget.scm \ %D%/packages/wicd.scm \ @@ -439,7 +446,6 @@ GNU_SYSTEM_MODULES = \ \ %D%/system.scm \ %D%/system/file-systems.scm \ - %D%/system/grub.scm \ %D%/system/install.scm \ %D%/system/linux-container.scm \ %D%/system/linux-initrd.scm \ @@ -460,7 +466,6 @@ GNU_SYSTEM_MODULES = \ %D%/build/linux-modules.scm \ %D%/build/marionette.scm \ %D%/build/shepherd.scm \ - %D%/build/svg.scm \ %D%/build/vm.scm \ \ %D%/tests.scm \ @@ -474,6 +479,9 @@ GNU_SYSTEM_MODULES = \ %D%/tests/ssh.scm \ %D%/tests/web.scm +# Modules that do not need to be compiled. +MODULES_NOT_COMPILED += \ + %D%/build/svg.scm patchdir = $(guilemoduledir)/%D%/packages/patches dist_patch_DATA = \ @@ -482,6 +490,7 @@ dist_patch_DATA = \ %D%/packages/patches/a2ps-CVE-2014-0466.patch \ %D%/packages/patches/abiword-explictly-cast-bools.patch \ %D%/packages/patches/abiword-wmf-version-lookup-fix.patch \ + %D%/packages/patches/abiword-black-drawing-with-gtk322.patch \ %D%/packages/patches/acl-hurd-path-max.patch \ %D%/packages/patches/aegis-constness-error.patch \ %D%/packages/patches/aegis-perl-tempdir1.patch \ @@ -492,10 +501,10 @@ dist_patch_DATA = \ %D%/packages/patches/antiword-CVE-2014-8123.patch \ %D%/packages/patches/apr-skip-getservbyname-test.patch \ %D%/packages/patches/artanis-fix-Makefile.in.patch \ + %D%/packages/patches/aspell-default-dict-dir.patch \ %D%/packages/patches/ath9k-htc-firmware-binutils.patch \ %D%/packages/patches/ath9k-htc-firmware-gcc.patch \ %D%/packages/patches/ath9k-htc-firmware-objcopy.patch \ - %D%/packages/patches/audacity-fix-ffmpeg-binding.patch \ %D%/packages/patches/automake-skip-amhello-tests.patch \ %D%/packages/patches/automake-regexp-syntax.patch \ %D%/packages/patches/automake-test-gzip-warning.patch \ @@ -511,9 +520,13 @@ dist_patch_DATA = \ %D%/packages/patches/byobu-writable-status.patch \ %D%/packages/patches/cairo-CVE-2016-9082.patch \ %D%/packages/patches/calibre-drop-unrar.patch \ + %D%/packages/patches/calibre-dont-load-remote-icons.patch \ %D%/packages/patches/calibre-no-updates-dialog.patch \ + %D%/packages/patches/calibre-use-packaged-feedparser.patch \ %D%/packages/patches/cdparanoia-fpic.patch \ + %D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \ %D%/packages/patches/ceph-disable-cpu-optimizations.patch \ + %D%/packages/patches/ceph-disable-unittest-throttle.patch \ %D%/packages/patches/ceph-skip-collect-sys-info-test.patch \ %D%/packages/patches/ceph-skip-unittest_blockdev.patch \ %D%/packages/patches/chicken-CVE-2017-6949.patch \ @@ -524,6 +537,10 @@ dist_patch_DATA = \ %D%/packages/patches/clx-remove-demo.patch \ %D%/packages/patches/cmake-fix-tests.patch \ %D%/packages/patches/coda-use-system-libs.patch \ + %D%/packages/patches/cool-retro-term-dont-check-uninit-member.patch \ + %D%/packages/patches/cool-retro-term-fix-array-size.patch \ + %D%/packages/patches/cool-retro-term-memory-leak-1.patch \ + %D%/packages/patches/cool-retro-term-remove-non-free-fonts.patch \ %D%/packages/patches/coreutils-cut-huge-range-test.patch \ %D%/packages/patches/cpio-CVE-2016-2037.patch \ %D%/packages/patches/cpufrequtils-fix-aclocal.patch \ @@ -541,6 +558,7 @@ dist_patch_DATA = \ %D%/packages/patches/doc++-include-directives.patch \ %D%/packages/patches/doc++-segfault-fix.patch \ %D%/packages/patches/doxygen-test.patch \ + %D%/packages/patches/dvd+rw-tools-add-include.patch \ %D%/packages/patches/elfutils-tests-ptrace.patch \ %D%/packages/patches/elixir-disable-failing-tests.patch \ %D%/packages/patches/einstein-build.patch \ @@ -552,6 +570,7 @@ dist_patch_DATA = \ %D%/packages/patches/eudev-conflicting-declaration.patch \ %D%/packages/patches/evilwm-lost-focus-bug.patch \ %D%/packages/patches/expat-CVE-2016-0718-fix-regression.patch \ + %D%/packages/patches/fabric-tests.patch \ %D%/packages/patches/fastcap-mulGlobal.patch \ %D%/packages/patches/fastcap-mulSetup.patch \ %D%/packages/patches/fasthenry-spAllocate.patch \ @@ -573,11 +592,11 @@ dist_patch_DATA = \ %D%/packages/patches/freeimage-CVE-2015-0852.patch \ %D%/packages/patches/freeimage-CVE-2016-5684.patch \ %D%/packages/patches/freeimage-fix-build-with-gcc-5.patch \ + %D%/packages/patches/fuse-overlapping-headers.patch \ %D%/packages/patches/gawk-shell.patch \ %D%/packages/patches/gcc-arm-bug-71399.patch \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ %D%/packages/patches/gcc-cross-environment-variables.patch \ - %D%/packages/patches/gcc-libiberty-printf-decl.patch \ %D%/packages/patches/gcc-libvtv-runpath.patch \ %D%/packages/patches/gcc-strmov-store-file-names.patch \ %D%/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \ @@ -586,7 +605,6 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-5-source-date-epoch-2.patch \ %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch \ %D%/packages/patches/gcc-6-cross-environment-variables.patch \ - %D%/packages/patches/gcj-arm-mode.patch \ %D%/packages/patches/gdk-pixbuf-list-dir.patch \ %D%/packages/patches/gd-fix-gd2-read-test.patch \ %D%/packages/patches/gd-fix-tests-on-i686.patch \ @@ -603,36 +621,42 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-CVE-2016-7978.patch \ %D%/packages/patches/ghostscript-CVE-2016-7979.patch \ %D%/packages/patches/ghostscript-CVE-2016-8602.patch \ + %D%/packages/patches/ghostscript-CVE-2017-8291.patch \ %D%/packages/patches/ghostscript-runpath.patch \ %D%/packages/patches/glib-networking-ssl-cert-file.patch \ %D%/packages/patches/glib-tests-timer.patch \ %D%/packages/patches/glibc-bootstrap-system.patch \ %D%/packages/patches/glibc-ldd-x86_64.patch \ %D%/packages/patches/glibc-locales.patch \ + %D%/packages/patches/glibc-memchr-overflow-i686.patch \ %D%/packages/patches/glibc-o-largefile.patch \ %D%/packages/patches/glibc-versioned-locpath.patch \ + %D%/packages/patches/glog-gcc-5-demangling.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ %D%/packages/patches/gmp-faulty-test.patch \ + %D%/packages/patches/gnome-shell-CVE-2017-8288.patch \ %D%/packages/patches/gnome-tweak-tool-search-paths.patch \ %D%/packages/patches/gnucash-price-quotes-perl.patch \ - %D%/packages/patches/gnupg-2.1-fix-Y2038-test-failure.patch \ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ + %D%/packages/patches/graphite2-CVE-2017-5436.patch \ + %D%/packages/patches/graphite2-check-code-point-limit.patch \ %D%/packages/patches/graphite2-ffloat-store.patch \ + %D%/packages/patches/graphite2-fix-32-bit-wrap-arounds.patch \ + %D%/packages/patches/graphite2-non-linear-classes-even-number.patch \ %D%/packages/patches/grep-gnulib-lock.patch \ %D%/packages/patches/grep-timing-sensitive-test.patch \ - %D%/packages/patches/grub-CVE-2015-8370.patch \ - %D%/packages/patches/grub-gets-undeclared.patch \ - %D%/packages/patches/grub-freetype.patch \ %D%/packages/patches/gsl-test-i686.patch \ + %D%/packages/patches/gspell-dash-test.patch \ %D%/packages/patches/guile-1.8-cpp-4.5.patch \ - %D%/packages/patches/guile-arm-fixes.patch \ %D%/packages/patches/guile-default-utf8.patch \ %D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-relocatable.patch \ %D%/packages/patches/guile-rsvg-pkgconfig.patch \ + %D%/packages/patches/guile-ssh-rexec-bug.patch \ + %D%/packages/patches/guile-ssh-double-free.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk2-theme-paths.patch \ @@ -654,23 +678,27 @@ dist_patch_DATA = \ %D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/hop-linker-flags.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ + %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ - %D%/packages/patches/hypre-doc-tables.patch \ - %D%/packages/patches/hypre-ldflags.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ - %D%/packages/patches/icecat-binutils.patch \ - %D%/packages/patches/icu4c-CVE-2014-6585.patch \ - %D%/packages/patches/icu4c-CVE-2015-1270.patch \ - %D%/packages/patches/icu4c-CVE-2015-4760.patch \ + %D%/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch \ + %D%/packages/patches/icu4c-reset-keyword-list-iterator.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ + %D%/packages/patches/jasper-CVE-2017-6850.patch \ %D%/packages/patches/jbig2dec-ignore-testtest.patch \ %D%/packages/patches/jbig2dec-CVE-2016-9601.patch \ + %D%/packages/patches/jbig2dec-CVE-2017-7885.patch \ + %D%/packages/patches/jbig2dec-CVE-2017-7975.patch \ + %D%/packages/patches/jbig2dec-CVE-2017-7976.patch \ %D%/packages/patches/jq-CVE-2015-8863.patch \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \ %D%/packages/patches/khmer-use-libraries.patch \ - %D%/packages/patches/kio-CVE-2017-6410.patch \ + %D%/packages/patches/kiki-level-selection-crash.patch \ + %D%/packages/patches/kiki-makefile.patch \ + %D%/packages/patches/kiki-missing-includes.patch \ + %D%/packages/patches/kiki-portability-64bit.patch \ %D%/packages/patches/kmod-module-directory.patch \ %D%/packages/patches/kobodeluxe-paths.patch \ %D%/packages/patches/kobodeluxe-enemies-pipe-decl.patch \ @@ -687,8 +715,12 @@ dist_patch_DATA = \ %D%/packages/patches/liba52-link-with-libm.patch \ %D%/packages/patches/liba52-set-soname.patch \ %D%/packages/patches/liba52-use-mtune-not-mcpu.patch \ + %D%/packages/patches/libbase-fix-includes.patch \ + %D%/packages/patches/libbase-use-own-logging.patch \ %D%/packages/patches/libbonobo-activation-test-race.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ + %D%/packages/patches/libcroco-CVE-2017-7960.patch \ + %D%/packages/patches/libcroco-CVE-2017-7961.patch \ %D%/packages/patches/libdrm-symbol-check.patch \ %D%/packages/patches/libetonyek-build-with-mdds-1.2.patch \ %D%/packages/patches/libevent-dns-tests.patch \ @@ -710,6 +742,9 @@ dist_patch_DATA = \ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \ %D%/packages/patches/libmad-frame-length.patch \ %D%/packages/patches/libmad-mips-newgcc.patch \ + %D%/packages/patches/libsndfile-armhf-type-checks.patch \ + %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \ + %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ %D%/packages/patches/libssh2-fix-build-failure-with-gcrypt.patch \ %D%/packages/patches/libtar-CVE-2013-4420.patch \ %D%/packages/patches/libtheora-config-guess.patch \ @@ -717,6 +752,9 @@ dist_patch_DATA = \ %D%/packages/patches/libtiff-CVE-2016-10093.patch \ %D%/packages/patches/libtiff-CVE-2016-10094.patch \ %D%/packages/patches/libtiff-CVE-2017-5225.patch \ + %D%/packages/patches/libtiff-CVE-2017-7593.patch \ + %D%/packages/patches/libtiff-CVE-2017-7594.patch \ + %D%/packages/patches/libtiff-multiple-UBSAN-crashes.patch \ %D%/packages/patches/libtiff-assertion-failure.patch \ %D%/packages/patches/libtiff-divide-by-zero-ojpeg.patch \ %D%/packages/patches/libtiff-divide-by-zero-tiffcp.patch \ @@ -729,6 +767,7 @@ dist_patch_DATA = \ %D%/packages/patches/libtiff-invalid-read.patch \ %D%/packages/patches/libtiff-null-dereference.patch \ %D%/packages/patches/libtiff-tiffcp-underflow.patch \ + %D%/packages/patches/libtirpc-CVE-2017-8779.patch \ %D%/packages/patches/libtorrent-rasterbar-boost-compat.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libunwind-CVE-2015-3239.patch \ @@ -752,8 +791,14 @@ dist_patch_DATA = \ %D%/packages/patches/libxslt-generated-ids.patch \ %D%/packages/patches/libxslt-CVE-2016-4738.patch \ %D%/packages/patches/libxt-guix-search-paths.patch \ + %D%/packages/patches/lierolibre-check-unaligned-access.patch \ + %D%/packages/patches/lierolibre-is-free-software.patch \ + %D%/packages/patches/lierolibre-newer-libconfig.patch \ + %D%/packages/patches/lierolibre-remove-arch-warning.patch \ + %D%/packages/patches/lierolibre-try-building-other-arch.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/lirc-localstatedir.patch \ + %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch \ %D%/packages/patches/llvm-for-extempore.patch \ %D%/packages/patches/lm-sensors-hwmon-attrs.patch \ %D%/packages/patches/lua-CVE-2014-5461.patch \ @@ -764,8 +809,11 @@ dist_patch_DATA = \ %D%/packages/patches/luajit-no_ldconfig.patch \ %D%/packages/patches/luajit-symlinks.patch \ %D%/packages/patches/luit-posix.patch \ + %D%/packages/patches/luminance-hdr-qt-printer.patch \ %D%/packages/patches/lvm2-static-link.patch \ %D%/packages/patches/lxsession-use-gapplication.patch \ + %D%/packages/patches/lxterminal-CVE-2016-10369.patch \ + %D%/packages/patches/lz4-fix-test-failures.patch \ %D%/packages/patches/make-impure-dirs.patch \ %D%/packages/patches/mars-install.patch \ %D%/packages/patches/mars-sfml-2.3.patch \ @@ -774,22 +822,24 @@ dist_patch_DATA = \ %D%/packages/patches/mcrypt-CVE-2012-4409.patch \ %D%/packages/patches/mcrypt-CVE-2012-4426.patch \ %D%/packages/patches/mcrypt-CVE-2012-4527.patch \ + %D%/packages/patches/mesa-fix-32bit-test-failures.patch \ + %D%/packages/patches/mesa-skip-disk-cache-test.patch \ %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \ %D%/packages/patches/metabat-remove-compilation-date.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ + %D%/packages/patches/miniupnpc-CVE-2017-8798.patch \ %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ - %D%/packages/patches/mplayer2-theora-fix.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ %D%/packages/patches/mozjs17-aarch64-support.patch \ %D%/packages/patches/mozjs24-aarch64-support.patch \ + %D%/packages/patches/mozjs38-pkg-config-version.patch \ + %D%/packages/patches/mozjs38-shell-version.patch \ + %D%/packages/patches/mozjs38-tracelogger.patch \ + %D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/multiqc-fix-git-subprocess-error.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mupdf-build-with-openjpeg-2.1.patch \ - %D%/packages/patches/mupdf-mujs-CVE-2016-10132.patch \ - %D%/packages/patches/mupdf-mujs-CVE-2016-10133.patch \ - %D%/packages/patches/mupdf-CVE-2017-5896.patch \ - %D%/packages/patches/mupdf-CVE-2017-5991.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/musl-CVE-2016-8859.patch \ %D%/packages/patches/mutt-store-references.patch \ @@ -802,6 +852,7 @@ dist_patch_DATA = \ %D%/packages/patches/ngircd-handle-zombies.patch \ %D%/packages/patches/ninja-zero-mtime.patch \ %D%/packages/patches/node-9077.patch \ + %D%/packages/patches/nss-disable-long-b64-tests.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-pkgconfig.patch \ %D%/packages/patches/ntfs-3g-CVE-2017-0358.patch \ @@ -826,11 +877,13 @@ dist_patch_DATA = \ %D%/packages/patches/ots-no-include-missing-file.patch \ %D%/packages/patches/p7zip-CVE-2016-9296.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \ - %D%/packages/patches/password-store-gnupg-compat.patch \ %D%/packages/patches/patchelf-page-size.patch \ %D%/packages/patches/patchelf-rework-for-arm.patch \ %D%/packages/patches/patchutils-xfail-gendiff-tests.patch \ %D%/packages/patches/patch-hurd-path-max.patch \ + %D%/packages/patches/pcre-CVE-2017-7186.patch \ + %D%/packages/patches/pcre2-CVE-2017-7186.patch \ + %D%/packages/patches/pcre2-CVE-2017-8786.patch \ %D%/packages/patches/perl-autosplit-default-time.patch \ %D%/packages/patches/perl-deterministic-ordering.patch \ %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \ @@ -838,7 +891,7 @@ dist_patch_DATA = \ %D%/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \ %D%/packages/patches/perl-net-amazon-s3-moose-warning.patch \ %D%/packages/patches/perl-net-ssleay-disable-ede-test.patch \ - %D%/packages/patches/perl-net-dns-resolver-programmable-Fix-broken-interface.patch \ + %D%/packages/patches/perl-net-dns-resolver-programmable-fix.patch \ %D%/packages/patches/perl-no-sys-dirs.patch \ %D%/packages/patches/perl-module-pluggable-search.patch \ %D%/packages/patches/perl-reproducible-build-date.patch \ @@ -855,10 +908,12 @@ dist_patch_DATA = \ %D%/packages/patches/plink-endian-detection.patch \ %D%/packages/patches/plotutils-libpng-jmpbuf.patch \ %D%/packages/patches/polkit-drop-test.patch \ + %D%/packages/patches/policycoreutils-make-sepolicy-use-python3.patch \ %D%/packages/patches/portaudio-audacity-compat.patch \ %D%/packages/patches/portmidi-modular-build.patch \ %D%/packages/patches/procmail-ambiguous-getline-debian.patch \ %D%/packages/patches/procmail-CVE-2014-3618.patch \ + %D%/packages/patches/proot-test-fhs.patch \ %D%/packages/patches/pt-scotch-build-parallelism.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \ @@ -883,6 +938,7 @@ dist_patch_DATA = \ %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ %D%/packages/patches/python-statsmodels-fix-tests.patch \ %D%/packages/patches/python-configobj-setuptools.patch \ + %D%/packages/patches/python-cython-fix-tests-32bit.patch \ %D%/packages/patches/python-fake-factory-fix-build-32bit.patch \ %D%/packages/patches/python-faker-fix-build-32bit.patch \ %D%/packages/patches/python-pandas-skip-failing-tests.patch \ @@ -895,20 +951,9 @@ dist_patch_DATA = \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \ - %D%/packages/patches/qemu-CVE-2016-10155.patch \ - %D%/packages/patches/qemu-CVE-2017-2615.patch \ - %D%/packages/patches/qemu-CVE-2017-2620.patch \ - %D%/packages/patches/qemu-CVE-2017-2630.patch \ - %D%/packages/patches/qemu-CVE-2017-5525.patch \ - %D%/packages/patches/qemu-CVE-2017-5526.patch \ - %D%/packages/patches/qemu-CVE-2017-5552.patch \ - %D%/packages/patches/qemu-CVE-2017-5578.patch \ - %D%/packages/patches/qemu-CVE-2017-5579.patch \ - %D%/packages/patches/qemu-CVE-2017-5667.patch \ - %D%/packages/patches/qemu-CVE-2017-5856.patch \ - %D%/packages/patches/qemu-CVE-2017-5898.patch \ - %D%/packages/patches/qemu-CVE-2017-5931.patch \ + %D%/packages/patches/qemu-CVE-2017-7493.patch \ %D%/packages/patches/qt4-ldflags.patch \ + %D%/packages/patches/qtscript-disable-tests.patch \ %D%/packages/patches/quickswitch-fix-dmenu-check.patch \ %D%/packages/patches/rapicorn-isnan.patch \ %D%/packages/patches/ratpoison-shell.patch \ @@ -916,7 +961,9 @@ dist_patch_DATA = \ %D%/packages/patches/readline-link-ncurses.patch \ %D%/packages/patches/readline-6.2-CVE-2014-2524.patch \ %D%/packages/patches/readline-7.0-mingw.patch \ + %D%/packages/patches/reptyr-fix-gcc-7.patch \ %D%/packages/patches/ripperx-missing-file.patch \ + %D%/packages/patches/rpcbind-CVE-2017-8779.patch \ %D%/packages/patches/rpm-CVE-2014-8118.patch \ %D%/packages/patches/rsem-makefile.patch \ %D%/packages/patches/ruby-concurrent-ignore-broken-test.patch \ @@ -926,19 +973,15 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ %D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scotch-test-threading.patch \ + %D%/packages/patches/screen-fix-info-syntax-error.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ - %D%/packages/patches/serf-comment-style-fix.patch \ - %D%/packages/patches/serf-deflate-buckets-test-fix.patch \ - %D%/packages/patches/shadow-4.4-su-snprintf-fix.patch \ - %D%/packages/patches/shadow-CVE-2017-2616.patch \ %D%/packages/patches/slim-session.patch \ %D%/packages/patches/slim-config.patch \ %D%/packages/patches/slim-sigusr1.patch \ %D%/packages/patches/slim-reset.patch \ %D%/packages/patches/slim-login.patch \ %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \ - %D%/packages/patches/soprano-find-clucene.patch \ %D%/packages/patches/spice-CVE-2016-9577.patch \ %D%/packages/patches/spice-CVE-2016-9578-1.patch \ %D%/packages/patches/spice-CVE-2016-9578-2.patch \ @@ -957,6 +1000,7 @@ dist_patch_DATA = \ %D%/packages/patches/tcsh-fix-autotest.patch \ %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \ %D%/packages/patches/teensy-loader-cli-help.patch \ + %D%/packages/patches/teeworlds-use-latest-wavpack.patch \ %D%/packages/patches/texlive-texmf-CVE-2016-10243.patch \ %D%/packages/patches/texi2html-document-encoding.patch \ %D%/packages/patches/texi2html-i18n.patch \ @@ -986,7 +1030,6 @@ dist_patch_DATA = \ %D%/packages/patches/unzip-remove-build-date.patch \ %D%/packages/patches/ustr-fix-build-with-gcc-5.patch \ %D%/packages/patches/util-linux-tests.patch \ - %D%/packages/patches/util-linux-CVE-2017-2616.patch \ %D%/packages/patches/upower-builddir.patch \ %D%/packages/patches/valgrind-enable-arm.patch \ %D%/packages/patches/virglrenderer-CVE-2017-6386.patch \ @@ -1004,6 +1047,7 @@ dist_patch_DATA = \ %D%/packages/patches/wicd-urwid-1.3.patch \ %D%/packages/patches/wicd-wpa2-ttls.patch \ %D%/packages/patches/wmctrl-64-fix.patch \ + %D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \ %D%/packages/patches/woff2-libbrotli.patch \ %D%/packages/patches/wordnet-CVE-2008-2149.patch \ %D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \ @@ -1017,8 +1061,6 @@ dist_patch_DATA = \ %D%/packages/patches/xf86-video-ast-remove-mibstore.patch \ %D%/packages/patches/xf86-video-geode-glibc-2.20.patch \ %D%/packages/patches/xf86-video-i128-remove-mibstore.patch \ - %D%/packages/patches/xf86-video-intel-compat-api.patch \ - %D%/packages/patches/xf86-video-intel-glibc-2.20.patch \ %D%/packages/patches/xf86-video-mach64-glibc-2.20.patch \ %D%/packages/patches/xf86-video-tga-remove-mibstore.patch \ %D%/packages/patches/xfce4-panel-plugins.patch \ @@ -1088,13 +1130,15 @@ nodist_bootstrap_mips64el_linux_DATA = \ set-bootstrap-executable-permissions: chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz} -DISTCLEANFILES = \ +BOOTSTRAP_GUILE_TARBALLS = \ $(nodist_bootstrap_x86_64_linux_DATA) \ $(nodist_bootstrap_i686_linux_DATA) \ $(nodist_bootstrap_armhf_linux_DATA) \ - $(nodist_bootstrap_aarch64_linux_DATA) \ + $(nodist_bootstrap_aarch64_linux_DATA) \ $(nodist_bootstrap_mips64el_linux_DATA) +DISTCLEANFILES = $(BOOTSTRAP_GUILE_TARBALLS) + # Method to download a file from an external source. DOWNLOAD_FILE = \ GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \ diff --git a/gnu/packages.scm b/gnu/packages.scm index 92bab7228a..57907155fb 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -24,12 +24,11 @@ #:use-module (guix packages) #:use-module (guix ui) #:use-module (guix utils) + #:use-module (guix discovery) #:use-module (guix memoization) - #:use-module (guix combinators) #:use-module ((guix build utils) #:select ((package-name->name+version . hyphen-separated-name->name+version))) - #:use-module (ice-9 ftw) #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -48,7 +47,6 @@ %package-module-path fold-packages - scheme-modules ;XXX: for lack of a better place find-packages-by-name find-best-packages-by-name @@ -89,7 +87,7 @@ "Search the patch FILE-NAME. Raise an error if not found." (or (search-path (%patch-path) file-name) (raise (condition - (&message (message (format #f (_ "~a: patch not found") + (&message (message (format #f (G_ "~a: patch not found") file-name))))))) (define-syntax-rule (search-patches file-name ...) @@ -105,7 +103,7 @@ found." (raise (condition (&message (message - (format #f (_ "could not find bootstrap binary '~a' \ + (format #f (G_ "could not find bootstrap binary '~a' \ for system '~a'") file-name system))))))) @@ -140,92 +138,17 @@ for system '~a'") directory)) %load-path))) -(define* (scheme-files directory) - "Return the list of Scheme files found under DIRECTORY, recursively. The -returned list is sorted in alphabetical order." - - ;; Sort entries so that 'fold-packages' works in a deterministic fashion - ;; regardless of details of the underlying file system. - (sort (file-system-fold (const #t) ; enter? - (lambda (path stat result) ; leaf - (if (string-suffix? ".scm" path) - (cons path result) - result)) - (lambda (path stat result) ; down - result) - (lambda (path stat result) ; up - result) - (const #f) ; skip - (lambda (path stat errno result) - (warning (_ "cannot access `~a': ~a~%") - path (strerror errno)) - result) - '() - directory - stat) - string<?)) - -(define file-name->module-name - (let ((not-slash (char-set-complement (char-set #\/)))) - (lambda (file) - "Return the module name (a list of symbols) corresponding to FILE." - (map string->symbol - (string-tokenize (string-drop-right file 4) not-slash))))) - -(define* (scheme-modules directory #:optional sub-directory) - "Return the list of Scheme modules available under DIRECTORY. -Optionally, narrow the search to SUB-DIRECTORY." - (define prefix-len - (string-length directory)) - - (filter-map (lambda (file) - (let* ((file (substring file prefix-len)) - (module (file-name->module-name file))) - (catch #t - (lambda () - (resolve-interface module)) - (lambda args - ;; Report the error, but keep going. - (warn-about-load-error module args) - #f)))) - (scheme-files (if sub-directory - (string-append directory "/" sub-directory) - directory)))) - -(define* (all-package-modules #:optional (path (%package-module-path))) - "Return the list of package modules found in PATH, a list of directories to -search." - (fold-right (lambda (spec result) - (match spec - ((? string? directory) - (append (scheme-modules directory) result)) - ((directory . sub-directory) - (append (scheme-modules directory sub-directory) - result)))) - '() - path)) - (define (fold-packages proc init) "Call (PROC PACKAGE RESULT) for each available package, using INIT as the initial value of RESULT. It is guaranteed to never traverse the same package twice." - (identity ; discard second return value - (fold2 (lambda (module result seen) - (fold2 (lambda (var result seen) - (if (and (package? var) - (not (vhash-assq var seen)) - (not (hidden-package? var))) - (values (proc var result) - (vhash-consq var #t seen)) - (values result seen))) - result - seen - (module-map (lambda (sym var) - (false-if-exception (variable-ref var))) - module))) - init - vlist-null - (all-package-modules)))) + (fold-module-public-variables (lambda (object result) + (if (and (package? object) + (not (hidden-package? object))) + (proc object result) + result)) + init + (all-modules (%package-module-path)))) (define find-packages-by-name (let ((packages (delay @@ -306,38 +229,25 @@ return its return value." ;;; Package specification. ;;; -(define* (%find-package spec name version #:key fallback?) +(define* (%find-package spec name version) (match (find-best-packages-by-name name version) ((pkg . pkg*) (unless (null? pkg*) - (warning (_ "ambiguous package specification `~a'~%") spec) - (warning (_ "choosing ~a@~a from ~a~%") + (warning (G_ "ambiguous package specification `~a'~%") spec) + (warning (G_ "choosing ~a@~a from ~a~%") (package-name pkg) (package-version pkg) (location->string (package-location pkg)))) - (when fallback? - (warning (_ "deprecated NAME-VERSION syntax; \ -use NAME@VERSION instead~%"))) - (match (package-superseded pkg) ((? package? new) - (info (_ "package '~a' has been superseded by '~a'~%") + (info (G_ "package '~a' has been superseded by '~a'~%") (package-name pkg) (package-name new)) new) (#f pkg))) (x (if version - (leave (_ "~A: package not found for version ~a~%") name version) - (if (not fallback?) - ;; XXX: Fallback to the older specification style with an hyphen - ;; between NAME and VERSION, for backward compatibility. - (call-with-values - (lambda () - (hyphen-separated-name->name+version name)) - (cut %find-package spec <> <> #:fallback? #t)) - - ;; The fallback case didn't find anything either, so bail out. - (leave (_ "~A: unknown package~%") name)))))) + (leave (G_ "~A: package not found for version ~a~%") name version) + (leave (G_ "~A: unknown package~%") name))))) (define (specification->package spec) "Return a package matching SPEC. SPEC may be a package name, or a package @@ -365,6 +275,6 @@ version; if SPEC does not specify an output, return OUTPUT." (package (if (member sub-drv (package-outputs package)) (values package sub-drv) - (leave (_ "package `~a' lacks output `~a'~%") + (leave (G_ "package `~a' lacks output `~a'~%") (package-full-name package) sub-drv)))))) diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm index 514ac0ceb5..30c2411df3 100644 --- a/gnu/packages/abiword.scm +++ b/gnu/packages/abiword.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Marek Benc <merkur32@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,7 @@ (define-public abiword (package (name "abiword") - (version "3.0.1") + (version "3.0.2") (source (origin (method url-fetch) @@ -52,16 +53,11 @@ (string-append "http://abisource.org/downloads/" name "/" version "/source/" name "-" version ".tar.gz")) (sha256 - (base32 "1ik591rx15nn3n1297cwykl8wvrlgj78i528id9wbidgy3xzd570")) - (modules '((guix build utils))) - (snippet - ;; Ensure reproducibility. - '(substitute* "src/wp/main/xp/abi_ver.cpp" - (("__DATE__") "\"2017\"") - (("__TIME__") "\"00:00\""))) + (base32 "08imry821g81apdwym3gcs4nss0l9j5blqk31j5rv602zmcd9gxg")) (patches (search-patches "abiword-wmf-version-lookup-fix.patch" - "abiword-explictly-cast-bools.patch")))) + "abiword-explictly-cast-bools.patch" + "abiword-black-drawing-with-gtk322.patch")))) (build-system glib-or-gtk-build-system) (arguments ;; NOTE: rsvg is disabled, since Abiword @@ -84,7 +80,9 @@ ;; assertion 'G_IS_OBJECT (object)' failed ;; Manually starting the X server before the test phase did not help ;; the tests to pass. - #:tests? #f)) + #:tests? #f + #:make-flags + (list "CXXFLAGS=-std=c++11"))) (inputs `(("boost" ,boost) ("enchant" ,enchant) diff --git a/gnu/packages/acct.scm b/gnu/packages/acct.scm index b9bc0161e4..c86713cb35 100644 --- a/gnu/packages/acct.scm +++ b/gnu/packages/acct.scm @@ -25,7 +25,7 @@ (define-public acct (package (name "acct") - (version "6.6.2") + (version "6.6.3") (source (origin (method url-fetch) @@ -33,7 +33,7 @@ version ".tar.gz")) (sha256 (base32 - "0081hzkcxw9aslpsakridj15m0wbnkdhm210fzbg021vi4pppm4f")))) + "14x0zklwlg7cc7amlyzffqr8az3fqj1h9dyj0hvl1kpi7cr7kbjy")))) (build-system gnu-build-system) (home-page "https://gnu.org/software/acct/") (synopsis "Standard login and process accounting utilities") diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 41b0da4c47..aa6ccc0a73 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -8,13 +8,16 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl> -;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> -;;; Coypright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> -;;; Coypright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Coypright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au> +;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com> +;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,28 +70,31 @@ #:use-module (gnu packages texinfo) #:use-module (gnu packages groff) #:use-module (gnu packages pciutils) + #:use-module (gnu packages libunwind) #:use-module (gnu packages libusb) #:use-module (gnu packages libftdi) #:use-module (gnu packages image) #:use-module (gnu packages xorg) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages python) #:use-module (gnu packages man) #:use-module (gnu packages autotools) #:use-module (gnu packages gnome) #:use-module (gnu packages kerberos) - #:use-module (gnu packages gtk)) + #:use-module (gnu packages gtk) + #:use-module (gnu packages xml)) (define-public aide (package (name "aide") - (version "0.15.1") + (version "0.16") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/aide/aide/" version "/aide-" version ".tar.gz")) (sha256 (base32 - "1vsrc0s62kv1i84skm6k6zy868gayjck268qwj38rpspc8c5qgih")))) + "0ibkv4z2gk14fn014kq13rp2ysiq6nn2cflv2q5i7zf466hm6758")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) @@ -97,6 +103,7 @@ `(("libgcrypt" ,libgcrypt) ("libgpg-error" ,libgpg-error) ("libmhash" ,libmhash) + ("pcre" ,pcre) ("zlib" ,zlib))) (synopsis "File and directory integrity checker") (description @@ -274,17 +281,15 @@ client and server, a telnet client and server, and an rsh client and server.") (define-public shadow (package (name "shadow") - (version "4.4") + (version "4.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/shadow-maint/shadow/releases/" "download/" version "/shadow-" version ".tar.xz")) - (patches (search-patches "shadow-4.4-su-snprintf-fix.patch" - "shadow-CVE-2017-2616.patch")) (sha256 (base32 - "0g7hf55ar2pafg5g3ldx0fwzjk36wf4xb21p4ndanbjm3c2a9ab1")))) + "0hdpai78n63l3v3fgr3kkiqzhd0awrpfnnzz4mf7lmxdh61qb37w")))) (build-system gnu-build-system) (arguments '(;; Assume System V `setpgrp (void)', which is the default on GNU @@ -477,7 +482,7 @@ connection alive.") (bind-minor-version "9") (bind-patch-version "9") (bind-release-type "-P") ; for patch release, use "-P" - (bind-release-version "6") ; for patch release, e.g. "6" + (bind-release-version "8") ; for patch release, e.g. "6" (bind-version (string-append bind-major-version "." bind-minor-version @@ -593,7 +598,7 @@ connection alive.") "/bind-" bind-version ".tar.gz")) (sha256 (base32 - "1qf9j0nyqx0qy871mj22xh4dg0n1pqlv94lpiijb8vr7n7m3svhr")))) + "1f5i64f6y4rmy61y63r5if1lifw8dw8r8dh6ns3x4002hanzrpgz")))) ;; When cross-compiling, we need the cross Coreutils and sed. ;; Otherwise just use those from %FINAL-INPUTS. @@ -1349,14 +1354,14 @@ of supported upstream metrics systems simultaneously.") (define-public ansible (package (name "ansible") - (version "2.2.1.0") + (version "2.3.0.0") (source (origin (method url-fetch) (uri (pypi-uri "ansible" version)) (sha256 (base32 - "0gz9i30pdmkchi936ijy873k8di6fmf3v5rv551hxyf0hjkjx8b3")))) + "0n54h8g6a6hcp41sasvjqa4yz1pwd8mshbwlcghj0sjnrl3kk7r9")))) (build-system python-build-system) (native-inputs `(("python2-pycrypto" ,python2-pycrypto) @@ -1691,7 +1696,7 @@ throughput (in the same interval).") (define-public thefuck (package (name "thefuck") - (version "3.15") + (version "3.16") (source (origin (method url-fetch) (uri (string-append "https://github.com/nvbn/thefuck/archive/" @@ -1699,7 +1704,7 @@ throughput (in the same interval).") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1vxas21h5mf41cb6y7f7x07858ags7qg45lkf74rc0slqbic3l1h")) + "0jrhfxmj2asx4jdix9ks3fpl364ph8w9prhwpk4488aj1a0q4rak")) (patches (search-patches "thefuck-test-environ.patch")))) (build-system python-build-system) (arguments @@ -1760,7 +1765,7 @@ a new command using the matched rule, and runs it.") "'di' is a disk information utility, displaying everything (and more) that your @code{df} command does. It features the ability to display your disk usage in whatever format you prefer. It is designed to be -highly portable. Great for heterogenous networks.") +highly portable. Great for heterogeneous networks.") (license license:zlib))) (define-public cbatticon @@ -1997,3 +2002,231 @@ with all the commands and parameters identified for your viewing pleasure. With sedsed you can master any sed script. No more secrets, no more hidden buffers.") (license license:expat))) + +(define-public intel-gpu-tools + (package + (name "intel-gpu-tools") + (version "1.18") + (source (origin + (method url-fetch) + (uri (string-append "https://cgit.freedesktop.org/xorg/app/" + "intel-gpu-tools/snapshot/" + "intel-gpu-tools-" version ".tar.gz")) + (sha256 + (base32 + "0w7djk0y5w76hzn1b3cm39zd5c6w9za1wfn80wd857h0v313rzq3")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; many of the tests try to load kernel modules + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + ;; Don't run configure in this phase + (setenv "NOCONFIGURE" "1") + (zero? (system* "sh" "autogen.sh"))))))) + (inputs + `(("util-macros" ,util-macros) + ("libdrm" ,libdrm) + ("libpciaccess" ,libpciaccess) + ("kmod" ,kmod) + ("procps" ,procps) + ("cairo" ,cairo) + ("libunwind" ,libunwind) + ("libxrandr" ,libxrandr) + ("glib" ,glib))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/") + (synopsis "Tools for development and testing of the Intel DRM driver") + (description "Intel GPU Tools is a collection of tools for development and +testing of the Intel DRM driver. There are many macro-level test suites that +get used against the driver, including xtest, rendercheck, piglit, and +oglconform, but failures from those can be difficult to track down to kernel +changes, and many require complicated build procedures or specific testing +environments to get useful results. Therefore, Intel GPU Tools includes +low-level tools and tests specifically for development and testing of the +Intel DRM Driver.") + (license license:expat))) + +(define-public fabric + (package + (name "fabric") + (version "1.13.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Fabric" version)) + (sha256 + (base32 + "1z17hw0yiqp1blq217zxkg2jzkv8qd79saqhscgsw14mwlcqpwd0")) + (patches (search-patches "fabric-tests.patch")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) ;Python 2 only + (native-inputs + `(("python2-fudge" ,python2-fudge) ; Requires < 1.0 + ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0 + ("python2-nose" ,python2-nose))) ; Requires < 2.0 + (propagated-inputs + ;; Required upgrading python-paramiko 1.17.4 to fix an incompatibility + ;; between python-paramiko and newer python-pycrypto. Without this, the + ;; `fab` command fails with "ValueError: CTR mode needs counter + ;; parameter, not IV". See: + ;; https://github.com/paramiko/paramiko/pull/714#issuecomment-281191548. + `(("python2-paramiko" ,python2-paramiko))) + (home-page "http://fabfile.org") + (synopsis "Simple Pythonic remote execution and deployment tool") + (description + "Fabric is designed to upload files and run shell commands on a number of +servers in parallel or serially. These commands are grouped in tasks (which +are regular Python functions) and specified in a @dfn{fabfile}. + +It is similar to Capistrano, except it's implemented in Python and doesn't +expect you to be deploying Rails applications. Fabric is a simple, Pythonic +tool for remote execution and deployment.") + (license license:bsd-2))) + +(define-public neofetch + (package + (name "neofetch") + (version "3.1.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/dylanaraps/neofetch/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1rgznkl7a5q7lnc6zxlwvinq20b7k46n949l1hiwifarv0jgwynv")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; there are no tests + #:make-flags + (list (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-target-directories + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("\\$\\(DESTDIR\\)/etc/") + "$(PREFIX)/etc/")) + (substitute* "neofetch" + (("\"/etc/neofetch") + (string-append "\"" out "/etc/neofetch")) + (("\"/usr/share/neofetch") + (string-append "\"" out "/usr/share/neofetch")))) + #t)) + (delete 'configure)))) + (home-page "https://github.com/dylanaraps/neofetch") + (synopsis "System info script") + (description "Neofetch is a CLI system information tool written in Bash. +Neofetch displays information about your system next to an image, your OS +logo, or any ASCII file of your choice. The main purpose of Neofetch is to be +used in screenshots to show other users what operating system or distribution +you are running, what theme or icon set you are using, etc.") + (license license:expat))) + +(define-public nnn + (package + (name "nnn") + (version "1.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/jarun/nnn/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1hww4385f81lyy30fx2rb4wchfi79dpgl7yylnfxvf27a4h2mkhm")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses) + ("readline" ,readline))) + (arguments + '(#:tests? #f ; no tests + #:phases + ;; We do not provide `ncurses.h' within an `ncursesw' + ;; sub-directory, so patch the source accordingly. See + ;; <http://bugs.gnu.org/19018>. + ;; Thanks to gtypist maintainer. + (modify-phases %standard-phases + (add-after 'unpack 'patch-curses-lib + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("-lncursesw") + "-lncurses")) + (substitute* "nnn.c" + (("ncursesw\\/curses.h") + "ncurses.h"))) + #t)) + (delete 'configure)) + #:make-flags + (list + (string-append "PREFIX=" + (assoc-ref %outputs "out")) + (string-append "-Wl,-rpath=" + %output "/lib") + "CC=gcc"))) + (home-page "https://github.com/jarun/nnn") + (synopsis "Terminal file browser") + (description "@command{nnn} is a fork of @command{noice}, a blazing-fast +lightweight terminal file browser with easy keyboard shortcuts for +navigation, opening files and running tasks. There is no config file and +mime associations are hard-coded. The incredible user-friendliness and speed +make it a perfect utility on modern distros.") + (license license:bsd-2))) + +(define-public thermald + (package + (name "thermald") + (version "1.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/01org/thermal_daemon/archive/v" + version ".tar.gz")) + (sha256 (base32 + "14klz9fnvi9jdlaqwrp61xa5nh051n8ykrs1fh1wxd7j66qf2fn6")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after + 'unpack 'autogen.sh-and-fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; upstartconfir is hardcoded to /etc/init and the build + ;; system tries to mkdir that. We don't even need upstart + ;; files at all; this is a fast and kludgy workaround + (substitute* "data/Makefile.am" + (("upstartconfdir = /etc/init") + (string-append "upstartconfdir = " + out "/etc/init"))) + ;; Now run autogen + (zero? (system* "sh" "autogen.sh")))))) + #:configure-flags + (let ((out (assoc-ref %outputs "out"))) + (list (string-append "--sysconfdir=" + out "/etc") + (string-append "--with-udev-dir=" + out "/lib/udev") + (string-append "--with-dbus-sys-dir=" + out "/etc/dbus-1/system.d") + "--localstatedir=/var")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("glib" ,glib "bin") ; for glib-genmarshal, etc. + ("pkg-config" ,pkg-config))) + (inputs + `(("dbus-glib" ,dbus-glib) + ("libxml2" ,libxml2))) + (home-page "https://01.org/linux-thermal-daemon/") + (synopsis "CPU scaling for thermal management") + (description "The Linux Thermal Daemon helps monitor and control temperature +on systems running the Linux kernel.") + (license license:gpl2+))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 1f34e86b23..9abff040bb 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -1,10 +1,12 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,26 +28,28 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) + #:use-module (gnu packages ed) + #:use-module (gnu packages flex) #:use-module (gnu packages fltk) #:use-module (gnu packages gl) #:use-module (gnu packages graphviz) #:use-module (gnu packages image) - #:use-module (gnu packages multiprecision) #:use-module (gnu packages maths) #:use-module (gnu packages mpi) + #:use-module (gnu packages multiprecision) #:use-module (gnu packages perl) - #:use-module (gnu packages readline) - #:use-module (gnu packages flex) #:use-module (gnu packages python) + #:use-module (gnu packages readline) #:use-module (gnu packages shells) #:use-module (gnu packages tex) + #:use-module (gnu packages texinfo) #:use-module (gnu packages xiph) #:use-module (gnu packages xorg) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) #:use-module (guix utils)) @@ -203,7 +207,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") (define-public giac-xcas (package (name "giac-xcas") - (version "1.2.3-25") + (version "1.2.3-37") (source (origin (method url-fetch) ;; "~parisse/giac" is not used because the maintainer regularly @@ -215,7 +219,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") "source/giac_" version ".tar.gz")) (sha256 (base32 - "0d6a42p8111raf7k16yvjajnpj22abiqndy3yzkrb4b8l071r24d")))) + "180146rm8fxlbd6x25x81yscf6q8qjpzr35k203r25c2xkcb7h2x")))) (build-system gnu-build-system) (arguments `(#:phases @@ -468,34 +472,21 @@ binary.") (define-public bc (package (name "bc") - (version "1.06") + (version "1.07.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz")) (sha256 (base32 - "0cqf5jkwx6awgd2xc2a0mkpxilzcfmhncdcfg7c9439wgkqxkxjf")))) + "0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2")))) (build-system gnu-build-system) - (inputs `(("readline" ,readline))) - (native-inputs `(("flex" ,flex))) + (native-inputs + `(("ed" ,ed) + ("flex" ,flex) + ("texinfo" ,texinfo))) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - ;; This old `configure' script doesn't support - ;; variables passed as arguments. - (let ((out (assoc-ref outputs "out"))) - (setenv "CONFIG_SHELL" (which "bash")) - (zero? - (system* - "./configure" - (string-append "--prefix=" out) - ;; By default, man and info pages are put in - ;; PREFIX/{man,info}, but we want them in - ;; PREFIX/share/{man,info}. - (string-append "--mandir=" out "/share/man") - (string-append "--infodir=" out "/share/info"))))))))) + '(#:configure-flags + (list "--with-readline"))) (home-page "https://www.gnu.org/software/bc/") (synopsis "Arbitrary precision numeric processing language") (description diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm new file mode 100644 index 0000000000..e23d0fd910 --- /dev/null +++ b/gnu/packages/android.scm @@ -0,0 +1,300 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Stefan Handschuh <handschuh.stefan@googlemail.com> +;;; Copyright © 2015 Kai-Chung Yan <seamlikok@gmail.com> +;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages android) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages tls)) + +;; The Makefiles that we add are largely based on the Debian +;; packages. They are licensed under GPL-2 and have copyright: +;; 2012, Stefan Handschuh <handschuh.stefan@googlemail.com> +;; 2015, Kai-Chung Yan <seamlikok@gmail.com> +;; Big thanks to them for laying the groundwork. + +;; The version tag is consistent between all repositories. +(define (android-platform-version) "7.1.2_r6") + +(define (android-platform-system-core version) + (origin + (method git-fetch) + (uri (git-reference + (url "https://android.googlesource.com/platform/system/core") + (commit (string-append "android-" version)))) + (file-name (string-append "android-platform-system-core-" + version "-checkout")) + (sha256 + (base32 + "0xc2n7jxrf1iw9cc278pijdfjix2fkiig5ws27f6rwp40zg5mrgg")))) + +(define liblog + (package + (name "liblog") + (version (android-platform-version)) + (source (android-platform-system-core version)) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; TODO. + #:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "liblog") #t)) + (add-after 'enter-source 'create-Makefile + (lambda _ + ;; No useful makefile is shipped, so we create one. + (with-output-to-file "Makefile" + (lambda _ + (display + (string-append + "NAME = liblog\n" + "SOURCES = log_event_list.c log_event_write.c" + " logger_write.c config_write.c logger_name.c" + " logger_lock.c fake_log_device.c fake_writer.c" + " event_tag_map.c\n" + + "CFLAGS += -fvisibility=hidden -fPIC\n" + "CPPFLAGS += -I../include -DFAKE_LOG_DEVICE=1" + ;; Keep these two in sync with "liblog/Android.bp". + " -DLIBLOG_LOG_TAG=1005" + " -DSNET_EVENT_LOG_TAG=1397638484\n" + "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0 -lpthread\n" + + "build: $(SOURCES)\n" + " $(CC) $^ -o $(NAME).so.0 $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)\n")) + #t)))) + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (install-file "liblog.so.0" lib) + (with-directory-excursion lib + (symlink "liblog.so.0" "liblog.so")) + #t)))))) + (home-page "https://developer.android.com/") + (synopsis "Logging library from the Android platform.") + (description "@code{liblog} represents an interface to the volatile Android +Logging system for NDK (Native) applications and libraries and contain +interfaces for either writing or reading logs. The log buffers are divided up +in Main, System, Radio and Events sub-logs.") + (license license:asl2.0))) + +(define libbase + (package + (name "libbase") + (version (android-platform-version)) + (source (origin + (inherit (android-platform-system-core version)) + (patches + (search-patches "libbase-use-own-logging.patch" + "libbase-fix-includes.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; TODO. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "base") #t)) + (add-after 'enter-source 'create-Makefile + (lambda _ + ;; No useful makefile is shipped, so we create one. + (with-output-to-file "Makefile" + (lambda _ + (display + (string-append + "NAME = libbase\n" + "SOURCES = file.cpp logging.cpp parsenetaddress.cpp" + " stringprintf.cpp strings.cpp errors_unix.cpp\n" + + "CXXFLAGS += -std=gnu++11 -fPIC\n" + "CPPFLAGS += -Iinclude -I../include\n" + "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0" + " -L.. -llog\n" + + "build: $(SOURCES)\n" + " $(CXX) $^ -o $(NAME).so.0 $(CXXFLAGS) $(CPPFLAGS)" + " $(LDFLAGS)\n")) + #t)))) + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (install-file "libbase.so.0" lib) + (with-directory-excursion lib + (symlink "libbase.so.0" "libbase.so")) + (copy-recursively "include" out) + #t)))))) + (inputs `(("liblog" ,liblog))) + (home-page "https://developer.android.com/") + (synopsis "Android platform base library") + (description "@code{libbase} is a library in common use by the +various Android core host applications.") + (license license:asl2.0))) + +(define libcutils + (package + (name "libcutils") + (version (android-platform-version)) + (source (android-platform-system-core version)) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; TODO. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "libcutils") #t)) + (add-after 'enter-source 'create-Makefile + (lambda _ + ;; No useful makefile is shipped, so we create one. + (with-output-to-file "Makefile" + (lambda _ + (display + (string-append + "NAME = libcutils\n" + "SOURCES = load_file.o socket_local_client_unix.o" + " socket_loopback_client_unix.o socket_network_client_unix.o" + " socket_loopback_server_unix.o socket_local_server_unix.o" + " sockets_unix.o socket_inaddr_any_server_unix.o" + " sockets.o\n" + "CC = gcc\n" + + "CFLAGS += -fPIC\n" + "CXXFLAGS += -std=gnu++11 -fPIC\n" + "CPPFLAGS += -Iinclude -I../include\n" + "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0\n" + + "build: $(SOURCES)\n" + " $(CXX) $^ -o $(NAME).so.0 $(CXXFLAGS) $(CPPFLAGS)" + " $(LDFLAGS)\n")) + #t)))) + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (install-file "libcutils.so.0" lib) + (with-directory-excursion lib + (symlink "libcutils.so.0" "libcutils.so")) + #t)))))) + (home-page "https://developer.android.com/") + (synopsis "Android platform c utils library") + (description "@code{libcutils} is a library in common use by the +various Android core host applications.") + (license license:asl2.0))) + +(define-public adb + (package + (name "adb") + (version (android-platform-version)) + (source (origin + (inherit (android-platform-system-core version)) + (patches + (search-patches "libbase-use-own-logging.patch" + "libbase-fix-includes.patch")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "adb") #t)) + (add-before 'build 'fix-clang + (lambda _ + ;; adb_client.h contains _Nonnull and _Nullable attributes, that + ;; are not understood by gcc. + (substitute* "adb_client.h" + (("_Nonnull") "") + (("_Nullable") "")) + #t)) + (add-before 'build 'fix-main + (lambda _ + ;; main.cpp used to be adb_main.cpp in the current directory + ;; rather than in its own subdirectory, but it was not fixed. + ;; This leads to some header files not being found anymore. + (copy-file "client/main.cpp" "adb_main.cpp") + #t)) + (add-after 'enter-source 'create-Makefile + (lambda* (#:key outputs #:allow-other-keys) + ;; No useful makefile is shipped, so we create one. + (with-output-to-file "Makefile" + (lambda _ + (display + (string-append + ;; Common for all components. + "CXXFLAGS += -std=gnu++14 -fpermissive\n" + "CPPFLAGS += -I../include -I../base/include -I. -DADB_HOST=1 " + "-DADB_REVISION='\"" ,version "\"' -fPIC\n" + "LDFLAGS += -lcrypto -lpthread -lbase -lcutils -L. -ladb\n" + + ;; Libadb specifics. + "LIBADB_SOURCES = adb.cpp adb_auth.cpp adb_io.cpp " + "adb_listeners.cpp adb_trace.cpp adb_utils.cpp fdevent.cpp " + "sockets.cpp transport.cpp transport_local.cpp transport_usb.cpp " + "get_my_path_linux.cpp sysdeps_unix.cpp usb_linux.cpp " + "adb_auth_host.cpp diagnose_usb.cpp services.cpp " + "shell_service_protocol.cpp bugreport.cpp line_printer.cpp\n" + + "LIBADB_LDFLAGS += -shared -Wl,-soname,libadb.so.0 " + "-lcrypto -lpthread -lbase\n" + + ;; Adb specifics. + "ADB_SOURCES = adb_main.cpp console.cpp commandline.cpp " + "adb_client.cpp file_sync_client.cpp\n" + "ADB_LDFLAGS += -Wl,-rpath=" (assoc-ref outputs "out") "/lib\n" + + "build: libadb $(ADB_SOURCES)\n" + " $(CXX) $(ADB_SOURCES) -o adb $(CXXFLAGS) $(CPPFLAGS) " + "$(ADB_LDFLAGS) $(LDFLAGS)\n" + + "libadb: $(LIBADB_SOURCES)\n" + " $(CXX) $^ -o libadb.so.0 $(CXXFLAGS) $(CPPFLAGS) " + "$(LIBADB_LDFLAGS)\n" + " ln -sv libadb.so.0 libadb.so\n")) + #t)))) + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (bin (string-append out "/bin"))) + (install-file "libadb.so.0" lib) + (install-file "adb" bin) + (with-directory-excursion lib + (symlink "libadb.so.0" "libadb.so")) + #t)))) + ;; Test suite must be run with attached devices + #:tests? #f)) + (inputs + `(("libbase" ,libbase) + ("libcutils" ,libcutils) + ("openssl" ,openssl))) + (home-page "https://developer.android.com/studio/command-line/adb.html") + (synopsis "Android Debug Bridge") + (description + "@command{adb} is a versatile command line tool that lets you communicate +with an emulator instance or connected Android device. It facilitates a variety +of device actions, such as installing and debugging apps, and it provides access +to a Unix shell that can run commands on the connected device or emulator.") + (license license:asl2.0))) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index 188e91d1e1..509d428f64 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> @@ -26,6 +26,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix licenses) + #:use-module (gnu packages) #:use-module (gnu packages perl) #:use-module (gnu packages base)) @@ -40,7 +41,8 @@ version ".tar.gz")) (sha256 (base32 - "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm")))) + "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm")) + (patches (search-patches "aspell-default-dict-dir.patch")))) (build-system gnu-build-system) (arguments `(#:phases @@ -53,6 +55,15 @@ '("ASPELL_CONF" "" = ("${ASPELL_CONF:-\"dict-dir ${GUIX_PROFILE:-$HOME/.guix-profile}/lib/aspell\"}"))))))))) (inputs `(("perl" ,perl))) + + (native-search-paths + ;; This is a Guix-specific environment variable that takes a single + ;; entry, not an actual search path. + (list (search-path-specification + (variable "ASPELL_DICT_DIR") + (separator #f) + (files '("lib/aspell"))))) + (home-page "http://aspell.net/") (synopsis "Spell checker") (description @@ -62,12 +73,12 @@ documents written in the UTF-8 encoding and its ability to use multiple dictionaries, including personal ones.") (license lgpl2.1+))) - ;;; ;;; Dictionaries. ;;; ;;; Use 'export ASPELL_CONF="dict-dir $HOME/.guix-profile/lib/aspell"' to use -;;; them. +;;; them, or set the Guix-specific 'ASPELL_DICT_DIR', or just do nothing (as +;;; long as 'HOME' is set, that's fine!). ;;; (define* (aspell-dictionary dict-name full-name @@ -190,3 +201,11 @@ dictionaries, including personal ones.") #:sha256 (base32 "1zxr8958v37v260fkqd4pg37ns5h5kyqm54hn1hg70wq5cz8h512"))) + +(define-public aspell-dict-pt-br + (aspell-dictionary "pt-br" "Brazilian Portuguese" + #:version "20090702-0" + #:prefix "aspell6-" + #:sha256 + (base32 + "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p"))) diff --git a/gnu/packages/audacity.scm b/gnu/packages/audacity.scm deleted file mode 100644 index a70d0e3a69..0000000000 --- a/gnu/packages/audacity.scm +++ /dev/null @@ -1,103 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages audacity) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix build-system gnu) - #:use-module (gnu packages) - #:use-module (gnu packages audio) - #:use-module (gnu packages base) - #:use-module (gnu packages gettext) - #:use-module (gnu packages gtk) - #:use-module (gnu packages linux) - #:use-module (gnu packages mp3) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages pulseaudio) - #:use-module (gnu packages python) - #:use-module (gnu packages xiph) - #:use-module (gnu packages xml) - #:use-module (gnu packages video) - #:use-module (gnu packages wxwidgets)) - -(define-public audacity - (package - (name "audacity") - (version "2.1.2") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/audacity/audacity/archive" - "/Audacity-" version ".zip")) - (sha256 - (base32 "1642i9d5cdmqzj6r0qdl2ldnqsvpb08znnczncysi72x6zpvb5qq")) - (patches (search-patches "audacity-fix-ffmpeg-binding.patch")))) - (build-system gnu-build-system) - (inputs - ;; TODO: Add portSMF and libwidgetextra once they're packaged. In-tree - ;; versions shipping with Audacity are used for now. - `(("wxwidgets" ,wxwidgets-gtk2) - ("gtk" ,gtk+-2) - ("alsa-lib" ,alsa-lib) - ("jack" ,jack-1) - ("expat" ,expat) - ("ffmpeg" ,ffmpeg) - ("lame" ,lame) - ("flac" ,flac) - ("libid3tag" ,libid3tag) - ("libmad" ,libmad) - ("libsbsms" ,libsbsms) - ("libsndfile" ,libsndfile) - ("soundtouch" ,soundtouch) - ("soxr" ,soxr) ;replaces libsamplerate - ("twolame" ,twolame) - ("vamp" ,vamp) - ("libvorbis" ,libvorbis) - ("lv2" ,lv2) - ("lilv" ,lilv) - ("portaudio" ,portaudio))) - (native-inputs - `(("gettext" ,gettext-minimal) ;for msgfmt - ("pkg-config" ,pkg-config) - ("python" ,python-2) - ("which" ,which))) - (arguments - '(#:configure-flags - (let ((libid3tag (assoc-ref %build-inputs "libid3tag")) - (libmad (assoc-ref %build-inputs "libmad"))) - (list - ;; Loading FFmpeg dynamically is problematic. - "--disable-dynamic-loading" - ;; libid3tag and libmad provide no .pc files, so pkg-config fails to - ;; find them. Force their inclusion. - (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include") - (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz") - (string-append "LIBMAD_CFLAGS=-I" libmad "/include") - (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad"))) - ;; The test suite is not "well exercised" according to the developers, - ;; and fails with various errors. See - ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>. - #:tests? #f)) - (home-page "http://audacity.sourceforge.net/") - (synopsis "Software for recording and editing sounds") - (description - "Audacity is a multi-track audio editor designed for recording, playing -and editing digital audio. It features digital effects and spectrum analysis -tools.") - (license license:gpl2+))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 86a149b1d3..497f20538d 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> @@ -75,6 +75,7 @@ #:use-module (gnu packages video) #:use-module (gnu packages vim) ;xxd #:use-module (gnu packages webkit) + #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -269,6 +270,80 @@ 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 audacity + (package + (name "audacity") + (version "2.1.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/audacity/audacity/archive" + "/Audacity-" version ".tar.gz")) + (sha256 + (base32 "11mx7gb4dbqrgfp7hm0154x3m76ddnmhf2675q5zkxn7jc5qfc6b")))) + (build-system gnu-build-system) + (inputs + ;; TODO: Add portSMF and libwidgetextra once they're packaged. In-tree + ;; versions shipping with Audacity are used for now. + `(("wxwidgets" ,wxwidgets-gtk2) + ("gtk" ,gtk+-2) + ("alsa-lib" ,alsa-lib) + ("jack" ,jack-1) + ("expat" ,expat) + ("ffmpeg" ,ffmpeg) + ("lame" ,lame) + ("flac" ,flac) + ("libid3tag" ,libid3tag) + ("libmad" ,libmad) + ("libsbsms" ,libsbsms) + ("libsndfile" ,libsndfile) + ("soundtouch" ,soundtouch) + ("soxr" ,soxr) ;replaces libsamplerate + ("twolame" ,twolame) + ("vamp" ,vamp) + ("libvorbis" ,libvorbis) + ("lv2" ,lv2) + ("lilv" ,lilv) + ("portaudio" ,portaudio))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) ;for msgfmt + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("python" ,python-2) + ("which" ,which))) + (arguments + '(#:configure-flags + (let ((libid3tag (assoc-ref %build-inputs "libid3tag")) + (libmad (assoc-ref %build-inputs "libmad"))) + (list + ;; Loading FFmpeg dynamically is problematic. + "--disable-dynamic-loading" + ;; libid3tag and libmad provide no .pc files, so pkg-config fails to + ;; find them. Force their inclusion. + (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include") + (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz") + (string-append "LIBMAD_CFLAGS=-I" libmad "/include") + (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad"))) + #:phases + (modify-phases %standard-phases + ;; FFmpeg is only detected if autoreconf runs. + (add-before 'configure 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))) + ;; The test suite is not "well exercised" according to the developers, + ;; and fails with various errors. See + ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>. + #:tests? #f)) + (home-page "http://audacity.sourceforge.net/") + (synopsis "Software for recording and editing sounds") + (description + "Audacity is a multi-track audio editor designed for recording, playing +and editing digital audio. It features digital effects and spectrum analysis +tools.") + (license license:gpl2+))) + (define-public azr3 (package (name "azr3") @@ -1091,7 +1166,6 @@ 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) @@ -1227,7 +1301,7 @@ especially for creating reverb effects. It supports impulse responses with 1, (define-public jack-1 (package (name "jack") - (version "0.124.1") + (version "0.125.0") (source (origin (method url-fetch) (uri (string-append @@ -1236,7 +1310,7 @@ especially for creating reverb effects. It supports impulse responses with 1, ".tar.gz")) (sha256 (base32 - "1mk1wnx33anp6haxfjjkfhwbaknfblsvj35nxvz0hvspcmhdyhpb")))) + "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm")))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) @@ -1328,14 +1402,14 @@ synchronous execution of all clients, and low latency operation.") (define-public jalv (package (name "jalv") - (version "1.4.6") + (version "1.6.0") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/jalv-" version ".tar.bz2")) (sha256 (base32 - "1f1hcq74n3ziw8bk97mn5a1vgw028dxikv3fchaxd430pbbhqgl9")))) + "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target @@ -1351,8 +1425,8 @@ synchronous execution of all clients, and low latency operation.") `(("lv2" ,lv2) ("lilv" ,lilv) ("suil" ,suil) - ("gtk" ,gtk+-2) - ("gtkmm" ,gtkmm-2) + ("gtk" ,gtk+) + ("gtkmm" ,gtkmm) ("jack" ,jack-1))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1526,15 +1600,14 @@ included are the command line utilities @code{send_osc} and @code{dump_osc}.") (define-public lilv (package (name "lilv") - (version "0.22.0") + (version "0.24.2") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/lilv-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 - "1d3ss7vv8drf1c5340lyd0gv736n2qy7sxji2nh1rw9y48hr69yd")))) + "08m5a372pr1l7aii9s3pic5nm68gynx1n1bc7bnlswziq6qnbv7p")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target @@ -1792,6 +1865,34 @@ buffers, and audio capture.") and ALSA.") (license license:gpl3+))) +(define-public qjackctl + (package + (name "qjackctl") + (version "0.4.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" + version "/qjackctl-" version ".tar.gz")) + (sha256 + (base32 + "1dsavjfzz5bpzc80mvfs940w9f9f47cf4r9cqxnaqrl4xilsa3f5")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f)) ; no check target + (inputs + `(("jack" ,jack-1) + ("qtbase" ,qtbase) + ("qtx11extras" ,qtx11extras))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (home-page "https://qjackctl.sourceforge.io/") + (synopsis "Jack server control application") + (description "Control a Jack server. Allows you to plug various sources +into various outputs and to start, stop and configure jackd") + (license license:gpl2+))) + + (define-public raul (package (name "raul") @@ -1918,15 +2019,14 @@ input/output.") (define-public sratom (package (name "sratom") - (version "0.4.6") + (version "0.6.0") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/sratom-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 - "080jjiyxjnj7hf25844hd9rb01grvzz1rk8mxcdnakywmspbxfd4")))) + "0hrxd9i66s06bpn6i3s9ka95134g3sm8yscmif7qgdzhyjqw42j4")))) (build-system waf-build-system) (arguments `(#:tests? #f)) ; no check target (inputs @@ -1945,15 +2045,14 @@ the Turtle syntax.") (define-public suil (package (name "suil") - (version "0.8.2") + (version "0.8.4") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/suil-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 - "1s3adyiw7sa5gfvm5wasa61qa23629kprxyv6w8hbxdiwp0hhxkq")))) + "1kji3lhha26qr6xm9j8ic5c40zbrrb5qnwm2qxzmsfxgmrz29wkf")))) (build-system waf-build-system) (arguments `(#:tests? #f)) ; no check target (inputs @@ -2278,7 +2377,7 @@ can play and record audio files.") (define-public soxr (package (name "soxr") - (version "0.1.1") + (version "0.1.2") (source (origin (method url-fetch) @@ -2286,7 +2385,7 @@ can play and record audio files.") (string-append "mirror://sourceforge/soxr/soxr-" version "-Source.tar.xz")) (sha256 - (base32 "1hmadwqfpg15vhwq9pa1sl5xslibrjpk6hpq2s9hfmx1s5l6ihfw")))) + (base32 "0xf2w3piwz9gfr1xqyrj4k685q5dy53kq3igv663i4f4y4sg9rjl")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ;no 'check' target (home-page "https://sourceforge.net/p/soxr/wiki/Home/") @@ -2332,7 +2431,7 @@ portions of LAME.") (define-public portaudio (package (name "portaudio") - (version "19.20140130") + (version "190600.20161030") (source (origin (method url-fetch) @@ -2341,7 +2440,7 @@ portions of LAME.") (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version) ".tgz")) (sha256 - (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g")) + (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm")) (patches (search-patches "portaudio-audacity-compat.patch")))) (build-system gnu-build-system) (inputs @@ -2374,14 +2473,15 @@ interface.") (define-public qsynth (package (name "qsynth") - (version "0.4.3") + (version "0.4.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version "/qsynth-" version ".tar.gz")) (sha256 - (base32 "1j5hm99fjrnaw8wbmlh4qixkv3rw5dl429mp1ag7js2ydrx0j9yy")))) + (base32 + "0qhfnikx3xcllkvs60kj6vcf2rwwzh31y41qkk6kwfhzgd219y8f")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" phase diff --git a/gnu/packages/augeas.scm b/gnu/packages/augeas.scm index 95b96ca25c..9b320810ca 100644 --- a/gnu/packages/augeas.scm +++ b/gnu/packages/augeas.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,14 +30,14 @@ (define-public augeas (package (name "augeas") - (version "1.4.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "http://download.augeas.net/augeas-" version ".tar.gz")) (sha256 (base32 - "0c2vncn0afmgwggnqa5s5z7m3zbcc66bi8v9m1h9w0i9q9xax7v5")))) + "1iac5lwi1q10r343ii9v5p2fdplvh06yv9svsi8zz6cd2c2fjp2i")))) (build-system gnu-build-system) ;; Marked as "required" in augeas.pc (propagated-inputs diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index e8b087000f..4dbe7b2a21 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> -;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2015, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017 ng0 <ng0@libertad.pw> ;;; @@ -92,6 +92,35 @@ know anything about Autoconf or M4.") (base32 "0j3jdjpf5ly39dlp0bg70h72nzqr059k0x8iqxvaxf106chpgn9j")))))) +(define-public autoconf-2.13 + ;; GNU IceCat 52.x requires autoconf-2.13 to build! + (package (inherit autoconf) + (version "2.13") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/autoconf/autoconf-" + version ".tar.gz")) + (sha256 + (base32 + "07krzl4czczdsgzrrw9fiqx35xcf32naf751khg821g5pqv12qgh")))) + (arguments + `(#:tests? #f + #:phases + ;; The 'configure' script in autoconf-2.13 can't cope with "SHELL=" and + ;; "CONFIG_SHELL=" arguments, so we set them as environment variables + ;; and pass a simplified set of arguments. + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key build inputs outputs #:allow-other-keys) + (let ((bash (which "bash")) + (out (assoc-ref outputs "out"))) + (setenv "CONFIG_SHELL" bash) + (setenv "SHELL" bash) + (zero? (system* bash "./configure" + (string-append "--prefix=" out) + (string-append "--build=" build))))))))))) + (define* (autoconf-wrapper #:optional (autoconf autoconf)) "Return an wrapper around AUTOCONF that generates `configure' scripts that diff --git a/gnu/packages/aux-files/linux-libre/4.10-i686.conf b/gnu/packages/aux-files/linux-libre/4.11-i686.conf index 8ec475ea01..93c1f1747b 100644 --- a/gnu/packages/aux-files/linux-libre/4.10-i686.conf +++ b/gnu/packages/aux-files/linux-libre/4.11-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.10.0-gnu Kernel Configuration +# Linux/x86 4.11.0-gnu Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -38,7 +38,6 @@ CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_32_SMP=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y -CONFIG_DEBUG_RODATA=y CONFIG_PGTABLE_LEVELS=3 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_IRQ_WORK=y @@ -134,12 +133,11 @@ CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE 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_NMI_LOG_BUF_SHIFT=13 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_CGROUPS=y @@ -155,6 +153,7 @@ CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y @@ -223,6 +222,7 @@ CONFIG_PCI_QUIRKS=y CONFIG_MEMBARRIER=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set # # Kernel Performance Events And Counters @@ -231,6 +231,7 @@ CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_MEMCG_SYSFS_ON is not set # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -250,7 +251,7 @@ CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set CONFIG_OPTPROBES=y CONFIG_KPROBES_ON_FTRACE=y -CONFIG_UPROBES=y +# CONFIG_UPROBES is not set # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y @@ -265,6 +266,7 @@ CONFIG_HAVE_NMI=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_SET_MEMORY=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_CLK=y @@ -287,6 +289,7 @@ CONFIG_HAVE_GCC_PLUGINS=y CONFIG_GCC_PLUGINS=y # CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK is not set CONFIG_HAVE_CC_STACKPROTECTOR=y CONFIG_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR_NONE is not set @@ -309,6 +312,12 @@ CONFIG_OLD_SIGSUSPEND3=y CONFIG_OLD_SIGACTION=y # CONFIG_CPU_NO_EFFICIENT_FFS is not set # CONFIG_HAVE_ARCH_VMAP_STACK is not set +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y # # GCOV-based kernel profiling @@ -330,6 +339,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_LBDAF=y +CONFIG_BLK_SCSI_REQUEST=y CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y @@ -339,6 +349,8 @@ CONFIG_BLK_CMDLINE_PARSER=y CONFIG_BLK_WBT=y # CONFIG_BLK_WBT_SQ is not set CONFIG_BLK_WBT_MQ=y +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set # # Partition Types @@ -365,6 +377,7 @@ CONFIG_EFI_PARTITION=y CONFIG_SYSV68_PARTITION=y CONFIG_CMDLINE_PARTITION=y CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y # # IO Schedulers @@ -377,6 +390,7 @@ CONFIG_DEFAULT_DEADLINE=y # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_MQ_IOSCHED_DEADLINE=m CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y @@ -428,6 +442,7 @@ CONFIG_XEN_DOM0=y CONFIG_XEN_PVHVM=y CONFIG_XEN_SAVE_RESTORE=y # CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_PVH=y CONFIG_KVM_GUEST=y CONFIG_KVM_DEBUG_FS=y # CONFIG_LGUEST_GUEST is not set @@ -720,7 +735,6 @@ CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set @@ -796,6 +810,7 @@ CONFIG_PCIEASPM=y CONFIG_PCIEASPM_DEBUG=y CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y CONFIG_PCIE_DPC=y @@ -825,9 +840,13 @@ CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m CONFIG_HOTPLUG_PCI_SHPC=m # -# PCI host controller drivers +# DesignWare PCI Core Support # # CONFIG_PCIE_DW_PLAT is not set + +# +# PCI host controller drivers +# # CONFIG_ISA_BUS is not set CONFIG_ISA_DMA_API=y CONFIG_ISA=y @@ -895,7 +914,6 @@ CONFIG_BINFMT_MISC=m CONFIG_COREDUMP=y CONFIG_COMPAT_32=y CONFIG_HAVE_ATOMIC_IOMAP=y -CONFIG_PMC_ATOM=y CONFIG_NET=y CONFIG_NET_INGRESS=y CONFIG_NET_EGRESS=y @@ -908,6 +926,7 @@ CONFIG_PACKET_DIAG=m CONFIG_UNIX=y CONFIG_UNIX_DIAG=m CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y CONFIG_XFRM_ALGO=m CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set @@ -916,6 +935,7 @@ CONFIG_XFRM_STATISTICS=y CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m # CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_SMC is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -944,6 +964,7 @@ CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_INET_AH=m CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m CONFIG_INET_IPCOMP=m CONFIG_INET_XFRM_TUNNEL=m CONFIG_INET_TUNNEL=m @@ -982,6 +1003,7 @@ CONFIG_IPV6_ROUTE_INFO=y # CONFIG_IPV6_OPTIMISTIC_DAD is not set CONFIG_INET6_AH=m CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m CONFIG_IPV6_ILA=m @@ -1075,6 +1097,7 @@ CONFIG_NFT_NUMGEN=m CONFIG_NFT_CT=m CONFIG_NFT_SET_RBTREE=m CONFIG_NFT_SET_HASH=m +CONFIG_NFT_SET_BITMAP=m CONFIG_NFT_COUNTER=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m @@ -1407,6 +1430,12 @@ CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_HAVE_NET_DSA=y +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_BRCM=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_TAG_QCA=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_VLAN_8021Q_MVRP=y @@ -1511,6 +1540,7 @@ CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m @@ -1552,7 +1582,7 @@ CONFIG_NET_MPLS_GSO=m CONFIG_MPLS_ROUTING=m CONFIG_MPLS_IPTUNNEL=m CONFIG_HSR=m -# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_SWITCHDEV=y CONFIG_NET_L3_MASTER_DEV=y CONFIG_NET_NCSI=y CONFIG_RPS=y @@ -1800,7 +1830,6 @@ CONFIG_WIMAX_DEBUG_LEVEL=8 CONFIG_RFKILL=y CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_REGULATOR=m CONFIG_RFKILL_GPIO=m CONFIG_NET_9P=m CONFIG_NET_9P_VIRTIO=m @@ -1855,9 +1884,12 @@ CONFIG_NFC_NXP_NCI_I2C=m CONFIG_NFC_S3FWRN5=m CONFIG_NFC_S3FWRN5_I2C=m CONFIG_NFC_ST95HF=m +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m CONFIG_LWTUNNEL=y CONFIG_LWTUNNEL_BPF=y CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y CONFIG_NET_DEVLINK=m CONFIG_MAY_USE_DEVLINK=m @@ -2024,7 +2056,6 @@ CONFIG_MTD_NAND_CAFE=m CONFIG_MTD_NAND_CS553X=m CONFIG_MTD_NAND_NANDSIM=m CONFIG_MTD_NAND_PLATFORM=m -CONFIG_MTD_NAND_OXNAS=m CONFIG_MTD_NAND_HISI504=m CONFIG_MTD_NAND_MTK=m CONFIG_MTD_ONENAND=m @@ -2041,6 +2072,8 @@ CONFIG_MTD_QINFO_PROBE=m CONFIG_MTD_SPI_NOR=m CONFIG_MTD_MT81xx_NOR=m CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_SPI_INTEL_SPI=m +CONFIG_SPI_INTEL_SPI_PLATFORM=m CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_LIMIT=20 @@ -2128,6 +2161,7 @@ CONFIG_ATA_OVER_ETH=m CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_VIRTIO_BLK=y +# CONFIG_VIRTIO_BLK_SCSI is not set # CONFIG_BLK_DEV_HD is not set CONFIG_BLK_DEV_RBD=m CONFIG_BLK_DEV_RSXX=m @@ -2191,6 +2225,7 @@ CONFIG_EEPROM_LEGACY=m CONFIG_EEPROM_MAX6875=m CONFIG_EEPROM_93CX6=m CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_IDT_89HPESX=m CONFIG_CB710_CORE=m # CONFIG_CB710_DEBUG is not set CONFIG_CB710_DEBUG_ASSUMPTIONS=y @@ -2384,6 +2419,7 @@ CONFIG_TCM_QLA2XXX=m # CONFIG_TCM_QLA2XXX_DEBUG is not set CONFIG_SCSI_QLA_ISCSI=m CONFIG_QEDI=m +CONFIG_QEDF=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set CONFIG_SCSI_SIM710=m @@ -2607,6 +2643,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_IPVLAN=m +CONFIG_IPVTAP=m CONFIG_VXLAN=m CONFIG_GENEVE=m CONFIG_GTP=m @@ -2620,6 +2657,7 @@ CONFIG_RIONET=m CONFIG_RIONET_TX_SIZE=128 CONFIG_RIONET_RX_SIZE=128 CONFIG_TUN=y +CONFIG_TAP=m # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m CONFIG_VIRTIO_NET=y @@ -2681,6 +2719,16 @@ CONFIG_CAIF_VIRTIO=m # # Distributed Switch Architecture drivers # +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_B53=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y +CONFIG_NET_DSA_QCA8K=m CONFIG_ETHERNET=y CONFIG_MDIO=m CONFIG_NET_VENDOR_3COM=y @@ -2711,6 +2759,7 @@ CONFIG_NI65=m CONFIG_AMD_XGBE=m # CONFIG_AMD_XGBE_DCB is not set CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_NET_VENDOR_AQUANTIA=y CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y CONFIG_ATL2=m @@ -2826,6 +2875,10 @@ CONFIG_MLXSW_CORE_HWMON=y CONFIG_MLXSW_CORE_THERMAL=y CONFIG_MLXSW_PCI=m CONFIG_MLXSW_I2C=m +CONFIG_MLXSW_SWITCHIB=m +CONFIG_MLXSW_SWITCHX2=m +CONFIG_MLXSW_SPECTRUM=m +CONFIG_MLXSW_SPECTRUM_DCB=y CONFIG_MLXSW_MINIMAL=m CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m @@ -2843,8 +2896,8 @@ CONFIG_NET_VENDOR_NATSEMI=y CONFIG_NATSEMI=m CONFIG_NS83820=m CONFIG_NET_VENDOR_NETRONOME=y -CONFIG_NFP_NETVF=m -# CONFIG_NFP_NET_DEBUG is not set +CONFIG_NFP=m +# CONFIG_NFP_DEBUG is not set CONFIG_NET_VENDOR_8390=y CONFIG_PCMCIA_AXNET=m CONFIG_NE2000=m @@ -2873,6 +2926,7 @@ CONFIG_QED_LL2=y CONFIG_QED_SRIOV=y CONFIG_QEDE=m CONFIG_QED_ISCSI=y +CONFIG_QED_FCOE=y CONFIG_NET_VENDOR_QUALCOMM=y CONFIG_QCOM_EMAC=m CONFIG_NET_VENDOR_REALTEK=y @@ -2888,6 +2942,7 @@ CONFIG_NET_VENDOR_RENESAS=y CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m CONFIG_NET_VENDOR_SAMSUNG=y CONFIG_SXGBE_ETH=m CONFIG_NET_VENDOR_SEEQ=y @@ -2921,7 +2976,6 @@ 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 @@ -3064,6 +3118,7 @@ CONFIG_ATH5K=m CONFIG_ATH5K_PCI=y CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_COMMON_DEBUG=y CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m CONFIG_ATH9K_PCI=y @@ -3491,7 +3546,6 @@ CONFIG_MISDN_ISAR=m CONFIG_ISDN_HDLC=m CONFIG_NVM=y # CONFIG_NVM_DEBUG is not set -CONFIG_NVM_GENNVM=m CONFIG_NVM_RRPC=m # @@ -3542,6 +3596,7 @@ CONFIG_KEYBOARD_OPENCORES=m CONFIG_KEYBOARD_SAMSUNG=m CONFIG_KEYBOARD_STOWAWAY=m CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TM2_TOUCHKEY=m CONFIG_KEYBOARD_TWL4030=m CONFIG_KEYBOARD_XTKBD=m CONFIG_KEYBOARD_CROS_EC=m @@ -3652,7 +3707,6 @@ CONFIG_TOUCHSCREEN_MMS114=m CONFIG_TOUCHSCREEN_MELFAS_MIP4=m CONFIG_TOUCHSCREEN_MTOUCH=m CONFIG_TOUCHSCREEN_INEXIO=m -CONFIG_TOUCHSCREEN_INTEL_MID=m CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_HTCPEN=m CONFIG_TOUCHSCREEN_PENMOUNT=m @@ -3703,6 +3757,7 @@ CONFIG_TOUCHSCREEN_SUR40=m CONFIG_TOUCHSCREEN_SURFACE3_SPI=m CONFIG_TOUCHSCREEN_SX8654=m CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_ZET6223=m CONFIG_TOUCHSCREEN_ZFORCE=m CONFIG_TOUCHSCREEN_ROHM_BU21023=m CONFIG_INPUT_MISC=y @@ -3720,7 +3775,6 @@ CONFIG_INPUT_MAX8925_ONKEY=m CONFIG_INPUT_MAX8997_HAPTIC=m CONFIG_INPUT_MC13783_PWRBUTTON=m CONFIG_INPUT_MMA8450=m -CONFIG_INPUT_MPU3050=m CONFIG_INPUT_APANEL=m CONFIG_INPUT_GP2A=m CONFIG_INPUT_GPIO_BEEPER=m @@ -3769,7 +3823,8 @@ CONFIG_RMI4_CORE=m CONFIG_RMI4_I2C=m CONFIG_RMI4_SPI=m CONFIG_RMI4_SMB=m -# CONFIG_RMI4_F03 is not set +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m CONFIG_RMI4_2D_SENSOR=y CONFIG_RMI4_F11=y CONFIG_RMI4_F12=y @@ -3843,6 +3898,7 @@ CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=m CONFIG_SERIAL_8250_CS=m CONFIG_SERIAL_8250_NR_UARTS=48 CONFIG_SERIAL_8250_RUNTIME_UARTS=32 @@ -3893,6 +3949,8 @@ CONFIG_SERIAL_RP2=m CONFIG_SERIAL_RP2_NR_UARTS=32 CONFIG_SERIAL_FSL_LPUART=m CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y CONFIG_TTY_PRINTK=y CONFIG_PRINTER=m # CONFIG_LP_CONSOLE is not set @@ -4133,6 +4191,7 @@ CONFIG_PTP_1588_CLOCK=m # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # CONFIG_PTP_1588_CLOCK_PCH=m +CONFIG_PTP_1588_CLOCK_KVM=m CONFIG_PINCTRL=y # @@ -4149,6 +4208,7 @@ CONFIG_PINCTRL_CHERRYVIEW=m CONFIG_PINCTRL_MERRIFIELD=m CONFIG_PINCTRL_INTEL=m CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_GEMINILAKE=m CONFIG_PINCTRL_SUNRISEPOINT=m CONFIG_GPIOLIB=y CONFIG_GPIO_ACPI=y @@ -4164,6 +4224,7 @@ CONFIG_GPIO_MAX730X=m CONFIG_GPIO_AMDPT=m CONFIG_GPIO_AXP209=m CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EXAR=m CONFIG_GPIO_GENERIC_PLATFORM=m CONFIG_GPIO_ICH=m CONFIG_GPIO_LYNXPOINT=y @@ -4234,6 +4295,7 @@ CONFIG_GPIO_INTEL_MID=y CONFIG_GPIO_MERRIFIELD=m CONFIG_GPIO_ML_IOH=m CONFIG_GPIO_PCH=m +CONFIG_GPIO_PCI_IDIO_16=m CONFIG_GPIO_RDC321X=m # @@ -4268,6 +4330,7 @@ CONFIG_W1_MASTER_GPIO=m # CONFIG_W1_SLAVE_THERM=m CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2405=m CONFIG_W1_SLAVE_DS2408=m CONFIG_W1_SLAVE_DS2408_READBACK=y CONFIG_W1_SLAVE_DS2413=m @@ -4299,6 +4362,7 @@ CONFIG_BATTERY_DS2780=m CONFIG_BATTERY_DS2781=m CONFIG_BATTERY_DS2782=m CONFIG_BATTERY_SBS=m +CONFIG_CHARGER_SBS=m CONFIG_BATTERY_BQ27XXX=m CONFIG_BATTERY_BQ27XXX_I2C=m CONFIG_BATTERY_DA9030=m @@ -4312,7 +4376,6 @@ CONFIG_BATTERY_MAX17042=m CONFIG_BATTERY_TWL4030_MADC=m CONFIG_CHARGER_88PM860X=m CONFIG_CHARGER_PCF50633=m -CONFIG_BATTERY_INTEL_MID=m CONFIG_BATTERY_RX51=m CONFIG_CHARGER_ISP1704=m CONFIG_CHARGER_MAX8903=m @@ -4473,6 +4536,7 @@ CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SCH56XX_COMMON=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_ADC128D818=m CONFIG_SENSORS_ADS1015=m @@ -4605,6 +4669,7 @@ CONFIG_MACHZ_WDT=m CONFIG_SBC_EPX_C3_WATCHDOG=m CONFIG_INTEL_MEI_WDT=m CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m CONFIG_MEN_A21_WDT=m CONFIG_XEN_WDT=m @@ -4931,6 +4996,7 @@ CONFIG_IR_ITE_CIR=m CONFIG_IR_FINTEK=m CONFIG_IR_NUVOTON=m CONFIG_IR_REDRAT3=m +CONFIG_IR_SPI=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m CONFIG_IR_IGORPLUGUSB=m @@ -5016,7 +5082,6 @@ CONFIG_VIDEO_PVRUSB2_DVB=y CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_USBVISION=m CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_STK1160_AC97=y CONFIG_VIDEO_STK1160=m CONFIG_VIDEO_GO7007=m CONFIG_VIDEO_GO7007_USB=m @@ -5081,6 +5146,7 @@ CONFIG_DVB_USB_LME2510=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_ZD1301=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_SMS_USB_DRV=m @@ -5131,6 +5197,7 @@ CONFIG_VIDEO_ZORAN_AVS6EYES=m # Media capture/analog TV support # CONFIG_VIDEO_IVTV=m +# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set CONFIG_VIDEO_IVTV_ALSA=m CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_HEXIUM_GEMINI=m @@ -5496,6 +5563,7 @@ CONFIG_DVB_RTL2832=m CONFIG_DVB_RTL2832_SDR=m CONFIG_DVB_SI2168=m CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ZD1301_DEMOD=m CONFIG_DVB_GP8PSK_FE=m # @@ -5590,11 +5658,13 @@ CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=m CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM_SELFTEST is not set 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 +CONFIG_DRM_VM=y # # I2C encoder or helper chips @@ -5629,6 +5699,7 @@ CONFIG_DRM_I915_USERPTR=y # # CONFIG_DRM_I915_WERROR is not set # CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set CONFIG_DRM_VGEM=m CONFIG_DRM_VMWGFX=m CONFIG_DRM_VMWGFX_FBCON=y @@ -5655,7 +5726,9 @@ CONFIG_DRM_BRIDGE=y # CONFIG_DRM_ANALOGIX_ANX78XX=m CONFIG_DRM_HISI_HIBMC=m +# CONFIG_DRM_TINYDRM is not set # CONFIG_DRM_LEGACY is not set +# CONFIG_DRM_LIB_RANDOM is not set # # Frame buffer Devices @@ -5673,6 +5746,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=m CONFIG_FB_DEFERRED_IO=y @@ -6091,7 +6165,7 @@ CONFIG_SND_SOC_FSL_ESAI=m CONFIG_SND_SOC_IMX_AUDMUX=m # CONFIG_SND_SOC_IMG is not set CONFIG_SND_MFLD_MACHINE=m -CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_IPC=m CONFIG_SND_SST_IPC_PCI=m CONFIG_SND_SST_IPC_ACPI=m @@ -6103,6 +6177,7 @@ CONFIG_SND_SOC_INTEL_HASWELL=m CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m @@ -6151,6 +6226,8 @@ CONFIG_SND_SOC_DA7219=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_HDMI_CODEC=m CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m CONFIG_SND_SOC_GTM601=m CONFIG_SND_SOC_HDAC_HDMI=m CONFIG_SND_SOC_INNO_RK3036=m @@ -6180,7 +6257,8 @@ CONFIG_SND_SOC_RT5640=m CONFIG_SND_SOC_RT5645=m CONFIG_SND_SOC_RT5651=m CONFIG_SND_SOC_RT5670=m -# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m CONFIG_SND_SOC_SGTL5000=m CONFIG_SND_SOC_SI476X=m CONFIG_SND_SOC_SIGMADSP=m @@ -6227,11 +6305,14 @@ CONFIG_SND_SOC_WM8962=m CONFIG_SND_SOC_WM8974=m CONFIG_SND_SOC_WM8978=m CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_NAU8540=m CONFIG_SND_SOC_NAU8810=m CONFIG_SND_SOC_NAU8825=m CONFIG_SND_SOC_TPA6130A2=m CONFIG_SND_SIMPLE_CARD_UTILS=m CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m @@ -6492,6 +6573,7 @@ CONFIG_USB_CHIPIDEA=m CONFIG_USB_CHIPIDEA_PCI=m CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_ULPI=y CONFIG_USB_ISP1760=m CONFIG_USB_ISP1760_HCD=y CONFIG_USB_ISP1761_UDC=y @@ -6569,6 +6651,7 @@ CONFIG_USB_SERIAL_XSENS_MT=m CONFIG_USB_SERIAL_WISHBONE=m CONFIG_USB_SERIAL_SSU100=m CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m CONFIG_USB_SERIAL_DEBUG=m # @@ -6596,6 +6679,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_HUB_USB251XB=m CONFIG_USB_HSIC_USB3503=m CONFIG_USB_HSIC_USB4604=m CONFIG_USB_LINK_LAYER_TEST=m @@ -6770,6 +6854,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_FLASH=m +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # # LED drivers @@ -6871,6 +6956,7 @@ CONFIG_INFINIBAND_SRPT=m CONFIG_INFINIBAND_ISER=m CONFIG_INFINIBAND_ISERT=m CONFIG_RDMA_RXE=m +CONFIG_INFINIBAND_BNXT_RE=m CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y CONFIG_EDAC=y @@ -7399,9 +7485,6 @@ CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m CONFIG_DVB_CXD2099=m CONFIG_LIRC_STAGING=y -CONFIG_LIRC_BT829=m -CONFIG_LIRC_IMON=m -CONFIG_LIRC_PARALLEL=m CONFIG_LIRC_SASEM=m CONFIG_LIRC_SIR=m CONFIG_LIRC_ZILOG=m @@ -7468,13 +7551,6 @@ CONFIG_AIM_V4L2=m CONFIG_HDM_DIM2=m CONFIG_HDM_I2C=m CONFIG_HDM_USB=m - -# -# Old ISDN4Linux (deprecated) -# -CONFIG_ISDN_DRV_ICN=m -CONFIG_ISDN_DRV_PCBIT=m -CONFIG_ISDN_DRV_ACT2000=m CONFIG_KS7010=m # CONFIG_GREYBUS is not set CONFIG_X86_PLATFORM_DEVICES=y @@ -7529,7 +7605,6 @@ CONFIG_INTEL_HID_EVENT=m CONFIG_INTEL_VBTN=m CONFIG_INTEL_SCU_IPC=y CONFIG_INTEL_SCU_IPC_UTIL=m -CONFIG_GPIO_INTEL_PMIC=y CONFIG_INTEL_MID_POWER_BUTTON=m CONFIG_INTEL_MFLD_THERMAL=m CONFIG_INTEL_IPS=m @@ -7549,6 +7624,8 @@ CONFIG_SURFACE_PRO3_BUTTON=m CONFIG_SURFACE_3_BUTTON=m CONFIG_INTEL_PUNIT_IPC=m CONFIG_MLX_CPLD_PLATFORM=m +# CONFIG_SILEAD_DMI is not set +CONFIG_PMC_ATOM=y CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m @@ -7574,13 +7651,6 @@ CONFIG_COMMON_CLK_PALMAS=m CONFIG_COMMON_CLK_PWM=m # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_MT2701 is not set -# CONFIG_COMMON_CLK_MT2701_MMSYS is not set -# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set -# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set -# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set -# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set -# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set # # Hardware Spinlock drivers @@ -7633,6 +7703,7 @@ CONFIG_REMOTEPROC=m # # CONFIG_SUNXI_SRAM is not set CONFIG_SOC_TI=y +# CONFIG_SOC_ZTE is not set CONFIG_PM_DEVFREQ=y # @@ -7657,6 +7728,7 @@ CONFIG_EXTCON_ADC_JACK=m CONFIG_EXTCON_ARIZONA=m CONFIG_EXTCON_AXP288=m CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_INT3496=m CONFIG_EXTCON_MAX14577=m CONFIG_EXTCON_MAX3355=m CONFIG_EXTCON_MAX77693=m @@ -7733,10 +7805,12 @@ CONFIG_AXP288_ADC=m CONFIG_CC10001_ADC=m CONFIG_DA9150_GPADC=m CONFIG_HI8435=m +CONFIG_HX711=m CONFIG_INA2XX_ADC=m CONFIG_LP8788_ADC=m CONFIG_LTC2485=m CONFIG_MAX1027=m +CONFIG_MAX11100=m CONFIG_MAX1363=m CONFIG_MCP320X=m CONFIG_MCP3422=m @@ -7752,7 +7826,9 @@ CONFIG_TI_ADC12138=m CONFIG_TI_ADC128S052=m CONFIG_TI_ADC161S626=m CONFIG_TI_ADS1015=m +CONFIG_TI_ADS7950=m CONFIG_TI_AM335X_ADC=m +CONFIG_TI_TLC4541=m CONFIG_TWL4030_MADC=m CONFIG_TWL6030_GPADC=m CONFIG_VIPERBOARD_ADC=m @@ -7852,6 +7928,8 @@ CONFIG_BMG160=m CONFIG_BMG160_I2C=m CONFIG_BMG160_SPI=m CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m CONFIG_IIO_ST_GYRO_3AXIS=m CONFIG_IIO_ST_GYRO_I2C_3AXIS=m CONFIG_IIO_ST_GYRO_SPI_3AXIS=m @@ -7893,6 +7971,9 @@ CONFIG_KMX61=m CONFIG_INV_MPU6050_IIO=m CONFIG_INV_MPU6050_I2C=m CONFIG_INV_MPU6050_SPI=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM6DSX_I2C=m +CONFIG_IIO_ST_LSM6DSX_SPI=m CONFIG_IIO_ADIS_LIB=m CONFIG_IIO_ADIS_LIB_BUFFER=y @@ -7969,6 +8050,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m # Digital potentiometers # CONFIG_DS1803=m +CONFIG_MAX5481=m CONFIG_MAX5487=m CONFIG_MCP4131=m CONFIG_MCP4531=m @@ -7986,6 +8068,7 @@ CONFIG_ABP060MG=m CONFIG_BMP280=m CONFIG_BMP280_I2C=m CONFIG_BMP280_SPI=m +CONFIG_IIO_CROS_EC_BARO=m CONFIG_HID_SENSOR_PRESS=m CONFIG_HP03=m CONFIG_MPL115=m @@ -8011,10 +8094,11 @@ CONFIG_ZPA2326_SPI=m CONFIG_AS3935=m # -# Proximity sensors +# Proximity and distance sensors # CONFIG_LIDAR_LITE_V2=m CONFIG_SX9500=m +CONFIG_SRF08=m # # Temperature sensors @@ -8022,6 +8106,7 @@ CONFIG_SX9500=m CONFIG_MAXIM_THERMOCOUPLE=m CONFIG_MLX90614=m CONFIG_TMP006=m +CONFIG_TMP007=m CONFIG_TSYS01=m CONFIG_TSYS02D=m CONFIG_NTB=m @@ -8092,6 +8177,8 @@ CONFIG_PHY_SAMSUNG_USB2=m # CONFIG_PHY_EXYNOS4210_USB2 is not set # CONFIG_PHY_EXYNOS4X12_USB2 is not set # CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m CONFIG_PHY_TUSB1210=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m @@ -8138,9 +8225,13 @@ CONFIG_INTEL_TH_PTI=m CONFIG_FPGA=m # +# FSI support +# +# CONFIG_FSI is not set + +# # Firmware Drivers # -# CONFIG_ARM_SCPI_PROTOCOL is not set CONFIG_EDD=y CONFIG_EDD_OFF=y CONFIG_FIRMWARE_MEMMAP=y @@ -8554,6 +8645,7 @@ CONFIG_FRAME_POINTER=y # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_DEBUG_KERNEL=y # @@ -8563,6 +8655,7 @@ CONFIG_PAGE_EXTENSION=y # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set @@ -8570,6 +8663,7 @@ CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_MEMORY_INIT is not set CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m @@ -8602,7 +8696,6 @@ CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y CONFIG_SCHED_STACK_END_CHECK=y # CONFIG_DEBUG_TIMEKEEPING is not set -CONFIG_TIMER_STATS=y # # Lock Debugging (spinlocks, mutexes, etc...) @@ -8617,6 +8710,7 @@ CONFIG_TIMER_STATS=y # CONFIG_DEBUG_ATOMIC_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_LOCK_TORTURE_TEST=m +CONFIG_WW_MUTEX_SELFTEST=m CONFIG_STACKTRACE=y # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y @@ -8677,8 +8771,8 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_KPROBE_EVENT=y -CONFIG_UPROBE_EVENT=y +CONFIG_KPROBE_EVENTS=y +# CONFIG_UPROBE_EVENTS is not set CONFIG_BPF_EVENTS=y CONFIG_PROBE_EVENTS=y CONFIG_DYNAMIC_FTRACE=y @@ -8700,6 +8794,7 @@ CONFIG_TRACING_EVENTS_GPIO=y # # CONFIG_LKDTM is not set # CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set CONFIG_RBTREE_TEST=m @@ -8715,6 +8810,7 @@ CONFIG_TEST_BITMAP=m CONFIG_TEST_UUID=m # CONFIG_TEST_RHASHTABLE is not set CONFIG_TEST_HASH=m +CONFIG_TEST_PARMAN=m # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_DMA_API_DEBUG is not set CONFIG_TEST_LKM=m @@ -8748,10 +8844,7 @@ CONFIG_EARLY_PRINTK_EFI=y # CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set -# CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_WX is not set -CONFIG_DEBUG_SET_MODULE_RONX=y -# CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y # CONFIG_DEBUG_TLBFLUSH is not set # CONFIG_IOMMU_STRESS is not set @@ -8795,6 +8888,7 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y CONFIG_HARDENED_USERCOPY=y # CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +# CONFIG_STATIC_USERMODEHELPER is not set CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 @@ -8816,6 +8910,7 @@ CONFIG_SECURITY_APPARMOR=y CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set # CONFIG_SECURITY_LOADPIN is not set CONFIG_SECURITY_YAMA=y CONFIG_INTEGRITY=y @@ -8897,6 +8992,7 @@ CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_ABLK_HELPER=m CONFIG_CRYPTO_SIMD=m CONFIG_CRYPTO_GLUE_HELPER_X86=m +CONFIG_CRYPTO_ENGINE=m # # Authenticated Encryption with Associated Data @@ -8955,6 +9051,7 @@ CONFIG_CRYPTO_WP512=m # Ciphers # CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=m CONFIG_CRYPTO_AES_586=m CONFIG_CRYPTO_AES_NI_INTEL=m CONFIG_CRYPTO_ANUBIS=m @@ -9133,6 +9230,8 @@ CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y +# CONFIG_DMA_NOOP_OPS is not set +CONFIG_DMA_VIRT_OPS=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPU_RMAP=y CONFIG_DQL=y @@ -9157,3 +9256,4 @@ CONFIG_SG_POOL=y CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_MMIO_FLUSH=y CONFIG_SBITMAP=y +CONFIG_PARMAN=m diff --git a/gnu/packages/aux-files/linux-libre/4.10-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.11-x86_64.conf index c5d8fe1da0..ea6e5cc899 100644 --- a/gnu/packages/aux-files/linux-libre/4.10-x86_64.conf +++ b/gnu/packages/aux-files/linux-libre/4.11-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.10.0-gnu Kernel Configuration +# Linux/x86 4.11.0-gnu Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -41,7 +41,6 @@ CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y -CONFIG_DEBUG_RODATA=y CONFIG_PGTABLE_LEVELS=4 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_IRQ_WORK=y @@ -139,12 +138,11 @@ CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_NMI_LOG_BUF_SHIFT=13 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y @@ -164,6 +162,7 @@ CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_CGROUP_PIDS=y +# CONFIG_CGROUP_RDMA is not set CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_HUGETLB=y CONFIG_CPUSETS=y @@ -232,6 +231,7 @@ CONFIG_PCI_QUIRKS=y CONFIG_MEMBARRIER=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set # # Kernel Performance Events And Counters @@ -240,6 +240,7 @@ CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_MEMCG_SYSFS_ON is not set # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -259,7 +260,7 @@ CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set CONFIG_OPTPROBES=y CONFIG_KPROBES_ON_FTRACE=y -CONFIG_UPROBES=y +# CONFIG_UPROBES is not set # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y @@ -274,6 +275,7 @@ CONFIG_HAVE_NMI=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_SET_MEMORY=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_CLK=y @@ -297,6 +299,7 @@ CONFIG_HAVE_GCC_PLUGINS=y CONFIG_GCC_PLUGINS=y # CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set +# CONFIG_GCC_PLUGIN_STRUCTLEAK is not set CONFIG_HAVE_CC_STACKPROTECTOR=y CONFIG_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR_NONE is not set @@ -307,6 +310,7 @@ CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y CONFIG_HAVE_ARCH_HUGE_VMAP=y CONFIG_HAVE_ARCH_SOFT_DIRTY=y CONFIG_MODULES_USE_ELF_RELA=y @@ -326,6 +330,12 @@ CONFIG_COMPAT_OLD_SIGACTION=y # CONFIG_CPU_NO_EFFICIENT_FFS is not set CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y # # GCOV-based kernel profiling @@ -346,6 +356,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y # CONFIG_MODULE_COMPRESS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_BLK_DEV_INTEGRITY=y @@ -355,6 +366,8 @@ CONFIG_BLK_CMDLINE_PARSER=y CONFIG_BLK_WBT=y # CONFIG_BLK_WBT_SQ is not set CONFIG_BLK_WBT_MQ=y +CONFIG_BLK_DEBUG_FS=y +# CONFIG_BLK_SED_OPAL is not set # # Partition Types @@ -382,6 +395,7 @@ CONFIG_SYSV68_PARTITION=y CONFIG_CMDLINE_PARTITION=y CONFIG_BLOCK_COMPAT=y CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y # # IO Schedulers @@ -394,6 +408,7 @@ CONFIG_DEFAULT_DEADLINE=y # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_MQ_IOSCHED_DEADLINE=m CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y @@ -729,7 +744,6 @@ CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set @@ -787,6 +801,7 @@ CONFIG_PCIEASPM=y CONFIG_PCIEASPM_DEBUG=y CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y CONFIG_PCIE_DPC=y @@ -814,9 +829,13 @@ CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m CONFIG_HOTPLUG_PCI_SHPC=m # -# PCI host controller drivers +# DesignWare PCI Core Support # # CONFIG_PCIE_DW_PLAT is not set + +# +# PCI host controller drivers +# # CONFIG_VMD is not set # CONFIG_ISA_BUS is not set CONFIG_ISA_DMA_API=y @@ -878,7 +897,6 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y CONFIG_KEYS_COMPAT=y CONFIG_X86_DEV_DMA_OPS=y -CONFIG_PMC_ATOM=y CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y CONFIG_NET_INGRESS=y @@ -892,6 +910,7 @@ CONFIG_PACKET_DIAG=m CONFIG_UNIX=y CONFIG_UNIX_DIAG=m CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y CONFIG_XFRM_ALGO=m CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set @@ -900,6 +919,7 @@ CONFIG_XFRM_STATISTICS=y CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m # CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_SMC is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -928,6 +948,7 @@ CONFIG_NET_FOU=m CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_INET_AH=m CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m CONFIG_INET_IPCOMP=m CONFIG_INET_XFRM_TUNNEL=m CONFIG_INET_TUNNEL=m @@ -966,6 +987,7 @@ CONFIG_IPV6_ROUTE_INFO=y # CONFIG_IPV6_OPTIMISTIC_DAD is not set CONFIG_INET6_AH=m CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m CONFIG_INET6_IPCOMP=m CONFIG_IPV6_MIP6=m CONFIG_IPV6_ILA=m @@ -1059,6 +1081,7 @@ CONFIG_NFT_NUMGEN=m CONFIG_NFT_CT=m CONFIG_NFT_SET_RBTREE=m CONFIG_NFT_SET_HASH=m +CONFIG_NFT_SET_BITMAP=m CONFIG_NFT_COUNTER=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m @@ -1391,6 +1414,12 @@ CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_HAVE_NET_DSA=y +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_BRCM=y +CONFIG_NET_DSA_TAG_DSA=y +CONFIG_NET_DSA_TAG_EDSA=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_DSA_TAG_QCA=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_VLAN_8021Q_MVRP=y @@ -1491,6 +1520,7 @@ CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m @@ -1532,7 +1562,7 @@ CONFIG_NET_MPLS_GSO=m CONFIG_MPLS_ROUTING=m CONFIG_MPLS_IPTUNNEL=m CONFIG_HSR=m -# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_SWITCHDEV=y CONFIG_NET_L3_MASTER_DEV=y CONFIG_NET_NCSI=y CONFIG_RPS=y @@ -1774,7 +1804,6 @@ CONFIG_WIMAX_DEBUG_LEVEL=8 CONFIG_RFKILL=y CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y -CONFIG_RFKILL_REGULATOR=m CONFIG_RFKILL_GPIO=m CONFIG_NET_9P=m CONFIG_NET_9P_VIRTIO=m @@ -1829,9 +1858,12 @@ CONFIG_NFC_NXP_NCI_I2C=m CONFIG_NFC_S3FWRN5=m CONFIG_NFC_S3FWRN5_I2C=m CONFIG_NFC_ST95HF=m +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m CONFIG_LWTUNNEL=y CONFIG_LWTUNNEL_BPF=y CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y CONFIG_NET_DEVLINK=m CONFIG_MAY_USE_DEVLINK=m CONFIG_HAVE_EBPF_JIT=y @@ -1997,7 +2029,6 @@ CONFIG_MTD_NAND_DOCG4=m CONFIG_MTD_NAND_CAFE=m CONFIG_MTD_NAND_NANDSIM=m CONFIG_MTD_NAND_PLATFORM=m -CONFIG_MTD_NAND_OXNAS=m CONFIG_MTD_NAND_HISI504=m CONFIG_MTD_NAND_MTK=m CONFIG_MTD_ONENAND=m @@ -2014,6 +2045,8 @@ CONFIG_MTD_QINFO_PROBE=m CONFIG_MTD_SPI_NOR=m CONFIG_MTD_MT81xx_NOR=m CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_SPI_INTEL_SPI=m +CONFIG_SPI_INTEL_SPI_PLATFORM=m CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_LIMIT=20 @@ -2098,6 +2131,7 @@ CONFIG_ATA_OVER_ETH=m CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_VIRTIO_BLK=y +# CONFIG_VIRTIO_BLK_SCSI is not set # CONFIG_BLK_DEV_HD is not set CONFIG_BLK_DEV_RBD=m CONFIG_BLK_DEV_RSXX=m @@ -2158,6 +2192,7 @@ CONFIG_EEPROM_LEGACY=m CONFIG_EEPROM_MAX6875=m CONFIG_EEPROM_93CX6=m CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_IDT_89HPESX=m CONFIG_CB710_CORE=m # CONFIG_CB710_DEBUG is not set CONFIG_CB710_DEBUG_ASSUMPTIONS=y @@ -2355,6 +2390,7 @@ CONFIG_TCM_QLA2XXX=m # CONFIG_TCM_QLA2XXX_DEBUG is not set CONFIG_SCSI_QLA_ISCSI=m CONFIG_QEDI=m +CONFIG_QEDF=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set CONFIG_SCSI_DC395x=m @@ -2566,6 +2602,7 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_IPVLAN=m +CONFIG_IPVTAP=m CONFIG_VXLAN=m CONFIG_GENEVE=m CONFIG_GTP=m @@ -2579,6 +2616,7 @@ CONFIG_RIONET=m CONFIG_RIONET_TX_SIZE=128 CONFIG_RIONET_RX_SIZE=128 CONFIG_TUN=y +CONFIG_TAP=m # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m CONFIG_VIRTIO_NET=y @@ -2639,6 +2677,16 @@ CONFIG_CAIF_VIRTIO=m # # Distributed Switch Architecture drivers # +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_B53=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y +CONFIG_NET_DSA_QCA8K=m CONFIG_ETHERNET=y CONFIG_MDIO=m CONFIG_NET_VENDOR_3COM=y @@ -2665,6 +2713,8 @@ CONFIG_PCMCIA_NMCLAN=m CONFIG_AMD_XGBE=m # CONFIG_AMD_XGBE_DCB is not set CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_AQTION=m CONFIG_NET_VENDOR_ARC=y CONFIG_NET_VENDOR_ATHEROS=y CONFIG_ATL2=m @@ -2784,6 +2834,10 @@ CONFIG_MLXSW_CORE_HWMON=y CONFIG_MLXSW_CORE_THERMAL=y CONFIG_MLXSW_PCI=m CONFIG_MLXSW_I2C=m +CONFIG_MLXSW_SWITCHIB=m +CONFIG_MLXSW_SWITCHX2=m +CONFIG_MLXSW_SPECTRUM=m +CONFIG_MLXSW_SPECTRUM_DCB=y CONFIG_MLXSW_MINIMAL=m CONFIG_NET_VENDOR_MICREL=y CONFIG_KS8842=m @@ -2802,8 +2856,8 @@ CONFIG_NET_VENDOR_NATSEMI=y CONFIG_NATSEMI=m CONFIG_NS83820=m CONFIG_NET_VENDOR_NETRONOME=y -CONFIG_NFP_NETVF=m -# CONFIG_NFP_NET_DEBUG is not set +CONFIG_NFP=m +# CONFIG_NFP_DEBUG is not set CONFIG_NET_VENDOR_8390=y CONFIG_PCMCIA_AXNET=m CONFIG_NE2K_PCI=m @@ -2829,6 +2883,7 @@ CONFIG_QED_SRIOV=y CONFIG_QEDE=m CONFIG_QED_RDMA=y CONFIG_QED_ISCSI=y +CONFIG_QED_FCOE=y CONFIG_NET_VENDOR_QUALCOMM=y CONFIG_QCOM_EMAC=m CONFIG_NET_VENDOR_REALTEK=y @@ -2844,6 +2899,7 @@ CONFIG_NET_VENDOR_RENESAS=y CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m CONFIG_NET_VENDOR_SAMSUNG=y CONFIG_SXGBE_ETH=m CONFIG_NET_VENDOR_SEEQ=y @@ -2876,7 +2932,6 @@ 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 @@ -3022,6 +3077,7 @@ CONFIG_ATH5K=m CONFIG_ATH5K_PCI=y CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_COMMON_DEBUG=y CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m CONFIG_ATH9K_PCI=y @@ -3431,7 +3487,6 @@ CONFIG_MISDN_ISAR=m CONFIG_ISDN_HDLC=m CONFIG_NVM=y # CONFIG_NVM_DEBUG is not set -CONFIG_NVM_GENNVM=m CONFIG_NVM_RRPC=m # @@ -3482,6 +3537,7 @@ CONFIG_KEYBOARD_OPENCORES=m CONFIG_KEYBOARD_SAMSUNG=m CONFIG_KEYBOARD_STOWAWAY=m CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TM2_TOUCHKEY=m CONFIG_KEYBOARD_TWL4030=m CONFIG_KEYBOARD_XTKBD=m CONFIG_KEYBOARD_CROS_EC=m @@ -3638,6 +3694,7 @@ CONFIG_TOUCHSCREEN_SUR40=m CONFIG_TOUCHSCREEN_SURFACE3_SPI=m CONFIG_TOUCHSCREEN_SX8654=m CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_ZET6223=m CONFIG_TOUCHSCREEN_ZFORCE=m CONFIG_TOUCHSCREEN_ROHM_BU21023=m CONFIG_INPUT_MISC=y @@ -3655,7 +3712,6 @@ CONFIG_INPUT_MAX8925_ONKEY=m CONFIG_INPUT_MAX8997_HAPTIC=m CONFIG_INPUT_MC13783_PWRBUTTON=m CONFIG_INPUT_MMA8450=m -CONFIG_INPUT_MPU3050=m CONFIG_INPUT_APANEL=m CONFIG_INPUT_GP2A=m CONFIG_INPUT_GPIO_BEEPER=m @@ -3703,7 +3759,8 @@ CONFIG_RMI4_CORE=m CONFIG_RMI4_I2C=m CONFIG_RMI4_SPI=m CONFIG_RMI4_SMB=m -# CONFIG_RMI4_F03 is not set +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m CONFIG_RMI4_2D_SENSOR=y CONFIG_RMI4_F11=y CONFIG_RMI4_F12=y @@ -3777,6 +3834,7 @@ CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=m CONFIG_SERIAL_8250_CS=m CONFIG_SERIAL_8250_NR_UARTS=48 CONFIG_SERIAL_8250_RUNTIME_UARTS=32 @@ -3820,6 +3878,8 @@ CONFIG_SERIAL_RP2=m CONFIG_SERIAL_RP2_NR_UARTS=32 CONFIG_SERIAL_FSL_LPUART=m CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y CONFIG_TTY_PRINTK=y CONFIG_PRINTER=m # CONFIG_LP_CONSOLE is not set @@ -4050,6 +4110,7 @@ CONFIG_PTP_1588_CLOCK=m # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # +CONFIG_PTP_1588_CLOCK_KVM=m CONFIG_PINCTRL=y # @@ -4065,6 +4126,7 @@ CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_CHERRYVIEW=m CONFIG_PINCTRL_INTEL=m CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_GEMINILAKE=m CONFIG_PINCTRL_SUNRISEPOINT=m CONFIG_GPIOLIB=y CONFIG_GPIO_ACPI=y @@ -4080,6 +4142,7 @@ CONFIG_GPIO_MAX730X=m CONFIG_GPIO_AMDPT=m CONFIG_GPIO_AXP209=m CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EXAR=m CONFIG_GPIO_GENERIC_PLATFORM=m CONFIG_GPIO_ICH=m CONFIG_GPIO_LYNXPOINT=y @@ -4139,6 +4202,7 @@ CONFIG_GPIO_WM8994=m # CONFIG_GPIO_AMD8111=m CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_PCI_IDIO_16=m CONFIG_GPIO_RDC321X=m # @@ -4173,6 +4237,7 @@ CONFIG_W1_MASTER_GPIO=m # CONFIG_W1_SLAVE_THERM=m CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2405=m CONFIG_W1_SLAVE_DS2408=m CONFIG_W1_SLAVE_DS2408_READBACK=y CONFIG_W1_SLAVE_DS2413=m @@ -4204,6 +4269,7 @@ CONFIG_BATTERY_DS2780=m CONFIG_BATTERY_DS2781=m CONFIG_BATTERY_DS2782=m CONFIG_BATTERY_SBS=m +CONFIG_CHARGER_SBS=m CONFIG_BATTERY_BQ27XXX=m CONFIG_BATTERY_BQ27XXX_I2C=m CONFIG_BATTERY_DA9030=m @@ -4377,6 +4443,7 @@ CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SCH56XX_COMMON=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_ADC128D818=m CONFIG_SENSORS_ADS1015=m @@ -4503,6 +4570,7 @@ CONFIG_MACHZ_WDT=m CONFIG_SBC_EPX_C3_WATCHDOG=m CONFIG_INTEL_MEI_WDT=m CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m CONFIG_MEN_A21_WDT=m CONFIG_XEN_WDT=m @@ -4819,6 +4887,7 @@ CONFIG_IR_ITE_CIR=m CONFIG_IR_FINTEK=m CONFIG_IR_NUVOTON=m CONFIG_IR_REDRAT3=m +CONFIG_IR_SPI=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m CONFIG_IR_IGORPLUGUSB=m @@ -4904,7 +4973,6 @@ CONFIG_VIDEO_PVRUSB2_DVB=y CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_USBVISION=m CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_STK1160_AC97=y CONFIG_VIDEO_STK1160=m CONFIG_VIDEO_GO7007=m CONFIG_VIDEO_GO7007_USB=m @@ -4969,6 +5037,7 @@ CONFIG_DVB_USB_LME2510=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_ZD1301=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_SMS_USB_DRV=m @@ -5019,6 +5088,7 @@ CONFIG_VIDEO_ZORAN_AVS6EYES=m # Media capture/analog TV support # CONFIG_VIDEO_IVTV=m +# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set CONFIG_VIDEO_IVTV_ALSA=m CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_HEXIUM_GEMINI=m @@ -5369,6 +5439,7 @@ CONFIG_DVB_RTL2832=m CONFIG_DVB_RTL2832_SDR=m CONFIG_DVB_SI2168=m CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ZD1301_DEMOD=m CONFIG_DVB_GP8PSK_FE=m # @@ -5457,11 +5528,13 @@ CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=m CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM_SELFTEST is not set 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 +CONFIG_DRM_VM=y # # I2C encoder or helper chips @@ -5497,6 +5570,7 @@ CONFIG_DRM_I915_USERPTR=y # # CONFIG_DRM_I915_WERROR is not set # CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set CONFIG_DRM_VGEM=m CONFIG_DRM_VMWGFX=m CONFIG_DRM_VMWGFX_FBCON=y @@ -5523,7 +5597,9 @@ CONFIG_DRM_BRIDGE=y CONFIG_DRM_ANALOGIX_ANX78XX=m CONFIG_HSA_AMD=m CONFIG_DRM_HISI_HIBMC=m +# CONFIG_DRM_TINYDRM is not set # CONFIG_DRM_LEGACY is not set +# CONFIG_DRM_LIB_RANDOM is not set # # Frame buffer Devices @@ -5541,6 +5617,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=m CONFIG_FB_DEFERRED_IO=y @@ -5896,7 +5973,7 @@ CONFIG_SND_SOC_FSL_SPDIF=m CONFIG_SND_SOC_FSL_ESAI=m CONFIG_SND_SOC_IMX_AUDMUX=m # CONFIG_SND_SOC_IMG is not set -CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_IPC=m CONFIG_SND_SST_IPC_ACPI=m CONFIG_SND_SOC_INTEL_SST=m @@ -5907,6 +5984,7 @@ CONFIG_SND_SOC_INTEL_HASWELL=m CONFIG_SND_SOC_INTEL_HASWELL_MACH=m CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m @@ -5955,6 +6033,8 @@ CONFIG_SND_SOC_DA7219=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_HDMI_CODEC=m CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m CONFIG_SND_SOC_GTM601=m CONFIG_SND_SOC_HDAC_HDMI=m CONFIG_SND_SOC_INNO_RK3036=m @@ -5984,7 +6064,8 @@ CONFIG_SND_SOC_RT5640=m CONFIG_SND_SOC_RT5645=m CONFIG_SND_SOC_RT5651=m CONFIG_SND_SOC_RT5670=m -# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m CONFIG_SND_SOC_SGTL5000=m CONFIG_SND_SOC_SI476X=m CONFIG_SND_SOC_SIGMADSP=m @@ -6030,11 +6111,14 @@ CONFIG_SND_SOC_WM8962=m CONFIG_SND_SOC_WM8974=m CONFIG_SND_SOC_WM8978=m CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_NAU8540=m CONFIG_SND_SOC_NAU8810=m CONFIG_SND_SOC_NAU8825=m CONFIG_SND_SOC_TPA6130A2=m CONFIG_SND_SIMPLE_CARD_UTILS=m CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m @@ -6300,6 +6384,7 @@ CONFIG_USB_CHIPIDEA=m CONFIG_USB_CHIPIDEA_PCI=m CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_ULPI=y CONFIG_USB_ISP1760=m CONFIG_USB_ISP1760_HCD=y CONFIG_USB_ISP1761_UDC=y @@ -6377,6 +6462,7 @@ CONFIG_USB_SERIAL_XSENS_MT=m CONFIG_USB_SERIAL_WISHBONE=m CONFIG_USB_SERIAL_SSU100=m CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m CONFIG_USB_SERIAL_DEBUG=m # @@ -6404,6 +6490,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_HUB_USB251XB=m CONFIG_USB_HSIC_USB3503=m CONFIG_USB_HSIC_USB4604=m CONFIG_USB_LINK_LAYER_TEST=m @@ -6579,6 +6666,7 @@ CONFIG_MEMSTICK_REALTEK_USB=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_FLASH=m +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set # # LED drivers @@ -6686,6 +6774,7 @@ CONFIG_INFINIBAND_HFI1=m CONFIG_HFI1_VERBS_31BIT_PSN=y # CONFIG_SDMA_VERBOSITY is not set CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_BNXT_RE=m CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y CONFIG_EDAC=y @@ -6708,6 +6797,7 @@ CONFIG_EDAC_I5100=m CONFIG_EDAC_I7300=m CONFIG_EDAC_SBRIDGE=m CONFIG_EDAC_SKX=m +CONFIG_EDAC_PND2=m CONFIG_RTC_LIB=y CONFIG_RTC_MC146818_LIB=y CONFIG_RTC_CLASS=y @@ -7208,9 +7298,6 @@ CONFIG_STAGING_MEDIA=y CONFIG_I2C_BCM2048=m CONFIG_DVB_CXD2099=m CONFIG_LIRC_STAGING=y -CONFIG_LIRC_BT829=m -CONFIG_LIRC_IMON=m -CONFIG_LIRC_PARALLEL=m CONFIG_LIRC_SASEM=m CONFIG_LIRC_SIR=m CONFIG_LIRC_ZILOG=m @@ -7283,10 +7370,6 @@ CONFIG_AIM_V4L2=m CONFIG_HDM_DIM2=m CONFIG_HDM_I2C=m CONFIG_HDM_USB=m - -# -# Old ISDN4Linux (deprecated) -# CONFIG_KS7010=m # CONFIG_GREYBUS is not set CONFIG_X86_PLATFORM_DEVICES=y @@ -7357,6 +7440,9 @@ CONFIG_INTEL_PUNIT_IPC=m CONFIG_INTEL_TELEMETRY=m # CONFIG_MLX_PLATFORM is not set CONFIG_MLX_CPLD_PLATFORM=m +# CONFIG_INTEL_TURBO_MAX_3 is not set +# CONFIG_SILEAD_DMI is not set +CONFIG_PMC_ATOM=y CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m CONFIG_CHROMEOS_PSTORE=m @@ -7382,13 +7468,6 @@ CONFIG_COMMON_CLK_PALMAS=m CONFIG_COMMON_CLK_PWM=m # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_MT2701 is not set -# CONFIG_COMMON_CLK_MT2701_MMSYS is not set -# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set -# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set -# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set -# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set -# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set # # Hardware Spinlock drivers @@ -7442,6 +7521,7 @@ CONFIG_REMOTEPROC=m # # CONFIG_SUNXI_SRAM is not set CONFIG_SOC_TI=y +# CONFIG_SOC_ZTE is not set CONFIG_PM_DEVFREQ=y # @@ -7466,6 +7546,7 @@ CONFIG_EXTCON_ADC_JACK=m CONFIG_EXTCON_ARIZONA=m CONFIG_EXTCON_AXP288=m CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_INT3496=m CONFIG_EXTCON_MAX14577=m CONFIG_EXTCON_MAX3355=m CONFIG_EXTCON_MAX77693=m @@ -7542,10 +7623,12 @@ CONFIG_AXP288_ADC=m CONFIG_CC10001_ADC=m CONFIG_DA9150_GPADC=m CONFIG_HI8435=m +CONFIG_HX711=m CONFIG_INA2XX_ADC=m CONFIG_LP8788_ADC=m CONFIG_LTC2485=m CONFIG_MAX1027=m +CONFIG_MAX11100=m CONFIG_MAX1363=m CONFIG_MCP320X=m CONFIG_MCP3422=m @@ -7560,7 +7643,9 @@ CONFIG_TI_ADC12138=m CONFIG_TI_ADC128S052=m CONFIG_TI_ADC161S626=m CONFIG_TI_ADS1015=m +CONFIG_TI_ADS7950=m CONFIG_TI_AM335X_ADC=m +CONFIG_TI_TLC4541=m CONFIG_TWL4030_MADC=m CONFIG_TWL6030_GPADC=m CONFIG_VIPERBOARD_ADC=m @@ -7658,6 +7743,8 @@ CONFIG_BMG160=m CONFIG_BMG160_I2C=m CONFIG_BMG160_SPI=m CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m CONFIG_IIO_ST_GYRO_3AXIS=m CONFIG_IIO_ST_GYRO_I2C_3AXIS=m CONFIG_IIO_ST_GYRO_SPI_3AXIS=m @@ -7699,6 +7786,9 @@ CONFIG_KMX61=m CONFIG_INV_MPU6050_IIO=m CONFIG_INV_MPU6050_I2C=m CONFIG_INV_MPU6050_SPI=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM6DSX_I2C=m +CONFIG_IIO_ST_LSM6DSX_SPI=m CONFIG_IIO_ADIS_LIB=m CONFIG_IIO_ADIS_LIB_BUFFER=y @@ -7775,6 +7865,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m # Digital potentiometers # CONFIG_DS1803=m +CONFIG_MAX5481=m CONFIG_MAX5487=m CONFIG_MCP4131=m CONFIG_MCP4531=m @@ -7792,6 +7883,7 @@ CONFIG_ABP060MG=m CONFIG_BMP280=m CONFIG_BMP280_I2C=m CONFIG_BMP280_SPI=m +CONFIG_IIO_CROS_EC_BARO=m CONFIG_HID_SENSOR_PRESS=m CONFIG_HP03=m CONFIG_MPL115=m @@ -7817,10 +7909,11 @@ CONFIG_ZPA2326_SPI=m CONFIG_AS3935=m # -# Proximity sensors +# Proximity and distance sensors # CONFIG_LIDAR_LITE_V2=m CONFIG_SX9500=m +CONFIG_SRF08=m # # Temperature sensors @@ -7828,6 +7921,7 @@ CONFIG_SX9500=m CONFIG_MAXIM_THERMOCOUPLE=m CONFIG_MLX90614=m CONFIG_TMP006=m +CONFIG_TMP007=m CONFIG_TSYS01=m CONFIG_TSYS02D=m CONFIG_NTB=m @@ -7900,6 +7994,8 @@ CONFIG_PHY_SAMSUNG_USB2=m # CONFIG_PHY_EXYNOS4210_USB2 is not set # CONFIG_PHY_EXYNOS4X12_USB2 is not set # CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m CONFIG_PHY_TUSB1210=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=m @@ -7950,9 +8046,13 @@ CONFIG_INTEL_TH_PTI=m CONFIG_FPGA=m # +# FSI support +# +# CONFIG_FSI is not set + +# # Firmware Drivers # -# CONFIG_ARM_SCPI_PROTOCOL is not set CONFIG_EDD=y CONFIG_EDD_OFF=y CONFIG_FIRMWARE_MEMMAP=y @@ -8370,6 +8470,7 @@ CONFIG_FRAME_POINTER=y # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_DEBUG_KERNEL=y # @@ -8379,6 +8480,7 @@ CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set @@ -8386,6 +8488,7 @@ CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_MEMORY_INIT is not set CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m @@ -8421,7 +8524,6 @@ CONFIG_SCHED_INFO=y CONFIG_SCHEDSTATS=y CONFIG_SCHED_STACK_END_CHECK=y # CONFIG_DEBUG_TIMEKEEPING is not set -CONFIG_TIMER_STATS=y # # Lock Debugging (spinlocks, mutexes, etc...) @@ -8436,6 +8538,7 @@ CONFIG_TIMER_STATS=y # CONFIG_DEBUG_ATOMIC_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_LOCK_TORTURE_TEST=m +CONFIG_WW_MUTEX_SELFTEST=m CONFIG_STACKTRACE=y # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y @@ -8497,8 +8600,8 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_KPROBE_EVENT=y -CONFIG_UPROBE_EVENT=y +CONFIG_KPROBE_EVENTS=y +# CONFIG_UPROBE_EVENTS is not set CONFIG_BPF_EVENTS=y CONFIG_PROBE_EVENTS=y CONFIG_DYNAMIC_FTRACE=y @@ -8520,6 +8623,7 @@ CONFIG_TRACING_EVENTS_GPIO=y # # CONFIG_LKDTM is not set # CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set CONFIG_RBTREE_TEST=m @@ -8535,6 +8639,7 @@ CONFIG_TEST_BITMAP=m CONFIG_TEST_UUID=m # CONFIG_TEST_RHASHTABLE is not set CONFIG_TEST_HASH=m +CONFIG_TEST_PARMAN=m # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_DMA_API_DEBUG is not set CONFIG_TEST_LKM=m @@ -8568,10 +8673,7 @@ CONFIG_EARLY_PRINTK_EFI=y # CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set -# CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_WX is not set -CONFIG_DEBUG_SET_MODULE_RONX=y -# CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y # CONFIG_DEBUG_TLBFLUSH is not set # CONFIG_IOMMU_DEBUG is not set @@ -8616,6 +8718,7 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y CONFIG_HARDENED_USERCOPY=y # CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +# CONFIG_STATIC_USERMODEHELPER is not set CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 @@ -8637,6 +8740,7 @@ CONFIG_SECURITY_APPARMOR=y CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set # CONFIG_SECURITY_LOADPIN is not set CONFIG_SECURITY_YAMA=y CONFIG_INTEGRITY=y @@ -8718,6 +8822,7 @@ CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_ABLK_HELPER=m CONFIG_CRYPTO_SIMD=m CONFIG_CRYPTO_GLUE_HELPER_X86=m +CONFIG_CRYPTO_ENGINE=m # # Authenticated Encryption with Associated Data @@ -8785,6 +8890,7 @@ CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m # Ciphers # CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_TI=m CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_AES_NI_INTEL=m CONFIG_CRYPTO_ANUBIS=m @@ -8974,6 +9080,8 @@ CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y +# CONFIG_DMA_NOOP_OPS is not set +CONFIG_DMA_VIRT_OPS=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPU_RMAP=y CONFIG_DQL=y @@ -8999,3 +9107,4 @@ CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_MMIO_FLUSH=y CONFIG_SBITMAP=y +CONFIG_PARMAN=m diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index c6487b966b..f66967f790 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,7 +56,7 @@ (define-public duplicity (package (name "duplicity") - (version "0.7.11") + (version "0.7.12") (source (origin (method url-fetch) @@ -65,7 +66,7 @@ version ".tar.gz")) (sha256 (base32 - "01zcq9cwn4pvj68rihgjvcdgccnxvz4jrba38sbv6nqz19cs2ixh")))) + "1rhgrz2lm9vbfdp2raykrih1c6n2lw5jd572z4dsz488m52avjqi")))) (build-system python-build-system) (native-inputs `(("util-linux" ,util-linux) ;setsid command, for the tests @@ -117,7 +118,7 @@ spying and/or modification by the server.") (define-public par2cmdline (package (name "par2cmdline") - (version "0.6.14") + (version "0.7.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/Parchive/par2cmdline/archive/v" @@ -125,21 +126,14 @@ spying and/or modification by the server.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0ykfb7ar0x0flfdgf6i8xphyv5b93dalbjj2jb6hx7sdjax33n1g")) - ;; This test merely needs a file to test recovery on, but - ;; /dev/random is essentially /dev/urandom plus minimum entropy - ;; locking, making the test hang indefinitely. This change is - ;; already upstream: remove on upgrade to future 0.6.15. - ;; https://github.com/Parchive/par2cmdline/commit/27723a678f780da82c79b98592592009c779a4fb - (modules '((guix build utils))) - (snippet - '(substitute* "tests/test20" (("if=/dev/random") "if=/dev/urandom"))))) + "1m9vnv3pg0nds47raq2rd2kfpaad1sc10hv40hll5byksqlbfxyq")))) (native-inputs `(("automake" ,automake) ("autoconf" ,autoconf))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:parallel-tests? #f + #:phases (modify-phases %standard-phases (add-after 'unpack 'autoreconf (lambda _ (zero? (system* "autoreconf" "-vfi"))))))) @@ -241,6 +235,20 @@ archive. In particular, note that there is currently no built-in support for random access nor for in-place modification.") (license license:bsd-2))) +(define libarchive-3.3.1 + (package + (inherit libarchive) + (name "libarchive") + (version "3.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://libarchive.org/downloads/libarchive-" + version ".tar.gz")) + (sha256 + (base32 + "1rr40hxlm9vy5z2zb5w7pyfkgd1a4s061qapm83s19accb8mpji9")))))) + (define-public rdup (package (name "rdup") diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 4fd9ed87e8..972b51b964 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -345,6 +346,29 @@ functionality beyond that which is outlined in the POSIX standard.") (license gpl3+) (home-page "https://www.gnu.org/software/coreutils/"))) +;; We add version 8.27 here for use in (gnu system) due to a time +;; zone bug in `date' versions 8.25 - 8.26. +;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23035 +;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26238 +(define-public coreutils-8.27 + (package + (inherit coreutils) + (version "8.27") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/coreutils/coreutils-" + version ".tar.xz")) + (sha256 + (base32 + "0sv547572iq8ayy8klir4hnngnx92a9nsazmf1wgzfc7xr4x74c8")))) + (arguments + (if (string-prefix? "arm" (or (%current-target-system) + (%current-system))) + (substitute-keyword-arguments (package-arguments coreutils) + ((#:phases phases) + `(alist-delete 'patch-cut-test ,phases))) + (package-arguments coreutils))))) + (define-public coreutils-minimal ;; Coreutils without its optional dependencies. (package @@ -622,6 +646,19 @@ store.") ;; 4.7.1. ((" -lgcc_s") "")) + ;; Apply patch only on i686. + ;; TODO: Move the patch to 'patches' in the next update cycle. + ,@(if (string-prefix? "i686" (or (%current-target-system) + (%current-system))) + `((unless (zero? (system* "patch" "-p1" "--force" + "--input" + (or (assoc-ref native-inputs + "glibc-memchr-overflow-i686.patch") + (assoc-ref inputs + "glibc-memchr-overflow-i686.patch")))) + (error "patch failed for glibc-memchr-overflow-i686.patch"))) + '()) + ;; Have `system' use that Bash. (substitute* "sysdeps/posix/system.c" (("#define[[:blank:]]+SHELL_PATH.*$") @@ -665,7 +702,15 @@ store.") ;; install the message catalogs, with 'msgfmt'. (native-inputs `(("texinfo" ,texinfo) ("perl" ,perl) - ("gettext" ,gettext-minimal))) + ("gettext" ,gettext-minimal) + + ;; Apply this patch only on i686 to avoid a full rebuild. + ;; TODO: Move to 'patches' in the next update cycle. + ,@(if (string-prefix? "i686" (or (%current-target-system) + (%current-system))) + `(("glibc-memchr-overflow-i686.patch" + ,(search-patch "glibc-memchr-overflow-i686.patch"))) + '()))) (native-search-paths ;; Search path for packages that provide locale data. This is useful @@ -713,35 +758,98 @@ with the Linux kernel.") ((#:phases original-phases) ;; Add libmachuser.so and libhurduser.so to libc.so's search path. ;; See <http://lists.gnu.org/archive/html/bug-hurd/2015-07/msg00051.html>. - `(alist-cons-after - 'install 'augment-libc.so - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (substitute* (string-append out "/lib/libc.so") - (("/[^ ]+/lib/libc.so.0.3") - (string-append out "/lib/libc.so.0.3" " libmachuser.so" " libhurduser.so")))) - #t) - (alist-cons-after - 'pre-configure 'pre-configure-set-pwd - (lambda _ - ;; Use the right 'pwd'. - (substitute* "configure" - (("/bin/pwd") "pwd"))) - (alist-replace - 'build - (lambda _ - ;; Force mach/hurd/libpthread subdirs to build first in order to avoid - ;; linking errors. - ;; See <https://lists.gnu.org/archive/html/bug-hurd/2016-11/msg00045.html> - (let ((-j (list "-j" (number->string (parallel-job-count))))) - (let-syntax ((make (syntax-rules () - ((_ target) - (zero? (apply system* "make" target -j)))))) - (and (make "mach/subdir_lib") - (make "hurd/subdir_lib") - (make "libpthread/subdir_lib") - (zero? (apply system* "make" -j)))))) - ,original-phases)))) + `(modify-phases ,original-phases + ;; TODO: This is almost an exact copy of the phase of the same name + ;; in glibc/linux. The only difference is that the i686 patch is + ;; not applied here. In the next update cycle the patch moves to + ;; the patches field and this overwritten phase won't be needed any + ;; more. + (replace 'pre-configure + (lambda* (#:key inputs native-inputs outputs + #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + ;; FIXME: Normally we would look it up only in INPUTS + ;; but cross-base uses it as a native input. + (bash (or (assoc-ref inputs "static-bash") + (assoc-ref native-inputs "static-bash")))) + ;; Install the rpc data base file under `$out/etc/rpc'. + ;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ]; + (substitute* "sunrpc/Makefile" + (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix) + (string-append out "/etc/rpc" suffix "\n")) + (("^install-others =.*$") + (string-append "install-others = " out "/etc/rpc\n"))) + + (substitute* "Makeconfig" + ;; According to + ;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>, + ;; linking against libgcc_s is not needed with GCC + ;; 4.7.1. + ((" -lgcc_s") "")) + + ;; Have `system' use that Bash. + (substitute* "sysdeps/posix/system.c" + (("#define[[:blank:]]+SHELL_PATH.*$") + (format #f "#define SHELL_PATH \"~a/bin/bash\"\n" + bash))) + + ;; Same for `popen'. + (substitute* "libio/iopopen.c" + (("/bin/sh") + (string-append bash "/bin/sh"))) + + ;; Same for the shell used by the 'exec' functions for + ;; scripts that lack a shebang. + (substitute* (find-files "." "^paths\\.h$") + (("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$") + (string-append "#define _PATH_BSHELL \"" + bash "/bin/sh\"\n"))) + + ;; Nscd uses __DATE__ and __TIME__ to create a string to + ;; make sure the client and server come from the same + ;; libc. Use something deterministic instead. + (substitute* "nscd/nscd_stat.c" + (("static const char compilation\\[21\\] =.*$") + (string-append + "static const char compilation[21] = \"" + (string-take (basename out) 20) "\";\n"))) + + ;; Make sure we don't retain a reference to the + ;; bootstrap Perl. + (substitute* "malloc/mtrace.pl" + (("^#!.*") + ;; The shebang can be omitted, because there's the + ;; "bilingual" eval/exec magic at the top of the file. + "") + (("exec @PERL@") + "exec perl"))))) + (add-after 'install 'augment-libc.so + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (substitute* (string-append out "/lib/libc.so") + (("/[^ ]+/lib/libc.so.0.3") + (string-append out "/lib/libc.so.0.3" " libmachuser.so" " libhurduser.so")))) + #t)) + (add-after 'pre-configure 'pre-configure-set-pwd + (lambda _ + ;; Use the right 'pwd'. + (substitute* "configure" + (("/bin/pwd") "pwd")) + #t)) + (replace 'build + (lambda _ + ;; Force mach/hurd/libpthread subdirs to build first in order to avoid + ;; linking errors. + ;; See <https://lists.gnu.org/archive/html/bug-hurd/2016-11/msg00045.html> + (let ((-j (list "-j" (number->string (parallel-job-count))))) + (let-syntax ((make (syntax-rules () + ((_ target) + (zero? (apply system* "make" target -j)))))) + (and (make "mach/subdir_lib") + (make "hurd/subdir_lib") + (make "libpthread/subdir_lib") + (zero? (apply system* "make" -j))))))))) ((#:configure-flags original-configure-flags) `(append (list "--host=i586-pc-gnu" @@ -981,7 +1089,7 @@ command.") (define-public tzdata (package (name "tzdata") - (version "2017a") + (version "2017b") (source (origin (method url-fetch) (uri (string-append @@ -989,7 +1097,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "1mmv4rvcs12lrvgghw4fidczvb69yv69cmzknghcvw1c196mqfnz")))) + "11l0s43vx33dcs78p80122i8s5s9l1sjwkzzwh66njd35r92l97q")))) (build-system gnu-build-system) (arguments '(#:tests? #f @@ -1037,7 +1145,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "1b1q7gnlsh5hjgs5065pvajd37rmbc3k9b8cgzad1vcrifswdwh2")))))) + "0h1d567gn8l3iqgyadcswwdy2yh07nhz3lfl8ds8saz2ajxka5sd")))))) (home-page "https://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) @@ -1082,7 +1190,14 @@ and daylight-saving rules.") version ".tar.gz")) (sha256 (base32 - "0y1ij745r4p48mxq84rax40p10ln7fc7m243p8k8sia519i3dxfc")))) + "0y1ij745r4p48mxq84rax40p10ln7fc7m243p8k8sia519i3dxfc")) + (modules '((guix build utils))) + (snippet + ;; Work around "declared gets" error on glibc systems (fixed by + ;; Gnulib commit 66712c23388e93e5c518ebc8515140fa0c807348.) + '(substitute* "srclib/stdio.in.h" + (("^#undef gets") "") + (("^_GL_WARN_ON_USE \\(gets.*") ""))))) (build-system gnu-build-system) (synopsis "Character set conversion library") (description diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index 4dab620993..136f141d8b 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -30,7 +30,7 @@ (define-public fio (package (name "fio") - (version "2.18") + (version "2.20") (source (origin (method url-fetch) (uri (string-append @@ -38,7 +38,7 @@ "fio-" version ".tar.bz2")) (sha256 (base32 - "08kx2mh556xby9saayrbynwrkmh4v8wwrw759nbv025ch3xbw79n")))) + "15vgbzlcjd21bi9ahlbs8h9ca4raw5qgi711n802qmagjdjbmlxw")))) (build-system gnu-build-system) (arguments '(#:test-target "test" @@ -78,8 +78,8 @@ (dst (string-append newbin "/" file))) (link src dst) (delete-file src))) - '("fio2gnuplot" "fio_latency2csv.py" - "fiologparser_hist.py" "fiologparser.py")) + '("fio2gnuplot" "fiologparser_hist.py" + "fiologparser.py")) ;; Make sure numpy et.al is found. (wrap-program (string-append newbin "/fiologparser_hist.py") `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 6ec378c0d9..e4cc520868 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -33,6 +33,7 @@ #:use-module (guix build-system ant) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system ocaml) #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system r) @@ -71,6 +72,7 @@ #:use-module (gnu packages maths) #:use-module (gnu packages mpi) #:use-module (gnu packages ncurses) + #:use-module (gnu packages ocaml) #:use-module (gnu packages pcre) #:use-module (gnu packages parallel) #:use-module (gnu packages pdf) @@ -612,7 +614,7 @@ Python.") (define-public python-biom-format (package (name "python-biom-format") - (version "2.1.5") + (version "2.1.6") (source (origin (method url-fetch) @@ -623,14 +625,15 @@ Python.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1n25w3p1rixbpac8iysmzcja6m4ip5r6sz19l8y6wlwi49hxn278")))) + "08cr7wpahk6zb31h4bs7jmzpvxcqv9s13xz40h6y2h656jvdvnpj")))) (build-system python-build-system) (propagated-inputs `(("python-numpy" ,python-numpy) ("python-scipy" ,python-scipy) ("python-future" ,python-future) ("python-click" ,python-click) - ("python-h5py" ,python-h5py))) + ("python-h5py" ,python-h5py) + ("python-pandas" ,python-pandas))) (native-inputs `(("python-nose" ,python-nose))) (home-page "http://www.biom-format.org") @@ -721,7 +724,7 @@ objects are made from the Sequence objects, Sequence objects have access to Annotation and SeqFeature objects and databases, Blast objects can be converted to Alignment objects, and so on. This means that the objects provide a coordinated and extensible framework to do computational biology.") - (license (package-license perl))))) + (license license:perl-license)))) (define-public python-biopython (package @@ -1460,9 +1463,15 @@ multiple sequence alignments.") (setenv "HOME" "/tmp") (and (zero? (system* "make" "-C" "pysam_data")) (zero? (system* "make" "-C" "cbcf_data")) - (zero? (system* "nosetests" "-v" - "--processes" - (number->string (parallel-job-count))))))))))) + ;; Running nosetests without explicitly asking for a + ;; single process leads to a crash. Running with multiple + ;; processes fails because the tests are not designed to + ;; run in parallel. + + ;; FIXME: tests keep timing out on some systems. + ;; (zero? (system* "nosetests" "-v" + ;; "--processes" "1")) + ))))))) (propagated-inputs `(("htslib" ,htslib))) ; Included from installed header files. (inputs @@ -2084,7 +2093,7 @@ identify enrichments with functional annotations of the genome.") (define-public diamond (package (name "diamond") - (version "0.8.36") + (version "0.9.1") (source (origin (method url-fetch) (uri (string-append @@ -2093,7 +2102,7 @@ identify enrichments with functional annotations of the genome.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "092smzzjcg51n3x4h84k52ijpz9m40ri838j9k2i463ribc3c8rh")))) + "062943yk3mp23jpcawamkh1zawx9br95l7w178v0kyr863v4p5a1")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no "check" target @@ -2113,11 +2122,7 @@ translated DNA query sequences against a protein reference database (BLASTP and BLASTX alignment mode). The speedup over BLAST is up to 20,000 on short reads at a typical sensitivity of 90-99% relative to BLAST depending on the data and settings.") - ;; diamond fails to build on other platforms - ;; https://github.com/bbuchfink/diamond/issues/18 - (supported-systems '("x86_64-linux")) - (license (license:non-copyleft "file://src/COPYING" - "See src/COPYING in the distribution.")))) + (license license:agpl3+))) (define-public discrover (package @@ -2412,7 +2417,7 @@ similarity of community members.") (define-public fasttree (package (name "fasttree") - (version "2.1.9") + (version "2.1.10") (source (origin (method url-fetch) (uri (string-append @@ -2420,7 +2425,7 @@ similarity of community members.") version ".c")) (sha256 (base32 - "0ljvvw8i1als1wbfzvrf15c3ii2vw9db20a259g6pzg34xyyb97k")))) + "0vcjdvy1j4m702vmak4svbfkrpcw63k7wymfksjp9a982zy8kjsl")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -2546,7 +2551,7 @@ Illumina, Roche 454, and the SOLiD platform.") (define-public fraggenescan (package (name "fraggenescan") - (version "1.20") + (version "1.30") (source (origin (method url-fetch) @@ -2554,7 +2559,7 @@ Illumina, Roche 454, and the SOLiD platform.") (string-append "mirror://sourceforge/fraggenescan/" "FragGeneScan" version ".tar.gz")) (sha256 - (base32 "1zzigqmvqvjyqv4945kv6nc5ah2xxm1nxgrlsnbzav3f5c0n0pyj")))) + (base32 "158dcnwczgcyhwm4qlx19sanrwgdpzf6bn2y57mbpx55lkgz1mzj")))) (build-system gnu-build-system) (arguments `(#:phases @@ -2569,6 +2574,7 @@ Illumina, Roche 454, and the SOLiD platform.") (string-append "system(\"" (which "rm"))) (("system\\(\"mv") (string-append "system(\"" (which "mv"))) + (("\\\"awk") (string-append "\"" (which "awk"))) ;; This script and other programs expect the training files ;; to be in the non-standard location bin/train/XXX. Change ;; this to be share/fraggenescan/train/XXX instead. @@ -2578,10 +2584,7 @@ Illumina, Roche 454, and the SOLiD platform.") "train/\".$FGS_train_file;"))) (substitute* "run_hmm.c" (("^ strcat\\(train_dir, \\\"train/\\\"\\);") - (string-append " strcpy(train_dir, \"" share "/train/\");"))) - (substitute* "post_process.pl" - (("^my \\$dir = substr.*") - (string-append "my $dir = \"" share "\";")))) + (string-append " strcpy(train_dir, \"" share "/train/\");")))) #t)) (replace 'build (lambda _ (and (zero? (system* "make" "clean")) @@ -2593,8 +2596,6 @@ Illumina, Roche 454, and the SOLiD platform.") (share (string-append out "/share/fraggenescan/train"))) (install-file "run_FragGeneScan.pl" bin) (install-file "FragGeneScan" bin) - (install-file "FGS_gff.py" bin) - (install-file "post_process.pl" bin) (copy-recursively "train" share)))) (delete 'check) (add-after 'install 'post-install-check @@ -2602,8 +2603,9 @@ Illumina, Roche 454, and the SOLiD platform.") ;; output files gets created. (lambda* (#:key outputs #:allow-other-keys) (let* ((out (string-append (assoc-ref outputs "out"))) - (bin (string-append out "/bin/"))) - (and (zero? (system* (string-append bin "run_FragGeneScan.pl") + (bin (string-append out "/bin/")) + (frag (string-append bin "run_FragGeneScan.pl"))) + (and (zero? (system* frag ; Test complete genome. "-genome=./example/NC_000913.fna" "-out=./test2" "-complete=1" @@ -2611,7 +2613,13 @@ Illumina, Roche 454, and the SOLiD platform.") (file-exists? "test2.faa") (file-exists? "test2.ffn") (file-exists? "test2.gff") - (file-exists? "test2.out")))))))) + (file-exists? "test2.out") + (zero? (system* ; Test incomplete sequences. + frag + "-genome=./example/NC_000913-fgs.ffn" + "-out=out" + "-complete=0" + "-train=454_30"))))))))) (inputs `(("perl" ,perl) ("python" ,python-2))) ;not compatible with python 3. @@ -2691,6 +2699,46 @@ comment or quality sections.") (supported-systems '("x86_64-linux")) (license license:expat)))) +(define-public gemma + (package + (name "gemma") + (version "0.96") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/xiangzhou/GEMMA/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "055ynn16gd12pf78n4vr2a9jlwsbwzajpdnf2y2yilg1krfff222")))) + (inputs + `(("gsl" ,gsl) + ("lapack" ,lapack) + ("zlib" ,zlib))) + (build-system gnu-build-system) + (arguments + `(#:make-flags '("FORCE_DYNAMIC=1") ; use shared libs + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'bin-mkdir + (lambda _ + (mkdir-p "bin"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "bin/gemma" + (string-append + out "/bin")))))) + #:tests? #f)) ; no tests included yet + (home-page "https://github.com/xiangzhou/GEMMA") + (synopsis "Tool for genome-wide efficient mixed model association") + (description + "Genome-wide Efficient Mixed Model Association (GEMMA) provides a +standard linear mixed model resolver with application in genome-wide +association studies (GWAS).") + (license license:gpl3))) + (define-public grit (package (name "grit") @@ -3196,7 +3244,7 @@ sequencing tag position and orientation.") (define-public mafft (package (name "mafft") - (version "7.305") + (version "7.310") (source (origin (method url-fetch) (uri (string-append @@ -3205,7 +3253,7 @@ sequencing tag position and orientation.") (file-name (string-append name "-" version ".tgz")) (sha256 (base32 - "0ziim7g58n3z8gppsa713f5fxprl60ldj3xck186z0n9dpp06i8r")))) + "0gbsaz6z2qa307kd7wfb06c3y4ikmv1hsdvlns11f6zq4w1z9pwc")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no automated tests, though there are tests in the read me @@ -3624,6 +3672,129 @@ interrupted by stop codons. OrfM finds and prints these ORFs.") (home-page "https://github.com/wwood/OrfM") (license license:lgpl3+))) +(define-public pplacer + (let ((commit "g807f6f3")) + (package + (name "pplacer") + ;; The commit should be updated with each version change. + (version "1.1.alpha19") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/matsen/pplacer/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0z1lnd2s8sh6kpzg106wzbh2szw7h0hvq8syd5a6wv4rmyyz6x0f")))) + (build-system ocaml-build-system) + (arguments + `(#:ocaml ,ocaml-4.01 + #:findlib ,ocaml4.01-findlib + #:modules ((guix build ocaml-build-system) + (guix build utils) + (ice-9 ftw)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'replace-bundled-cddlib + (lambda* (#:key inputs #:allow-other-keys) + (let* ((cddlib-src (assoc-ref inputs "cddlib-src")) + (local-dir "cddlib_guix")) + (mkdir local-dir) + (with-directory-excursion local-dir + (system* "tar" "xvf" cddlib-src)) + (let ((cddlib-src-folder + (string-append local-dir "/" + (list-ref (scandir local-dir) 2) + "/lib-src"))) + (for-each + (lambda (file) + (copy-file file + (string-append "cdd_src/" (basename file)))) + (find-files cddlib-src-folder ".*[ch]$"))) + #t))) + (add-after 'unpack 'fix-makefile + (lambda _ + ;; Remove system calls to 'git'. + (substitute* "Makefile" + (("^DESCRIPT:=pplacer-.*") + (string-append + "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n"))) + (substitute* "myocamlbuild.ml" + (("git describe --tags --long .*\\\" with") + (string-append + "echo -n v" ,version "-" ,commit "\" with"))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (copy-recursively "bin" bin)) + #t))))) + (native-inputs + `(("zlib" ,zlib) + ("gsl" ,gsl) + ("ocaml-ounit" ,ocaml4.01-ounit) + ("ocaml-batteries" ,ocaml4.01-batteries) + ("ocaml-camlzip" ,ocaml4.01-camlzip) + ("ocaml-csv" ,ocaml4.01-csv) + ("ocaml-sqlite3" ,ocaml4.01-sqlite3) + ("ocaml-xmlm" ,ocaml4.01-xmlm) + ("ocaml-mcl" ,ocaml4.01-mcl) + ("ocaml-gsl" ,ocaml4.01-gsl) + ("cddlib-src" ,(package-source cddlib)))) + (propagated-inputs + `(("pplacer-scripts" ,pplacer-scripts))) + (synopsis "Phylogenetic placement of biological sequences") + (description + "Pplacer places query sequences on a fixed reference phylogenetic tree +to maximize phylogenetic likelihood or posterior probability according to a +reference alignment. Pplacer is designed to be fast, to give useful +information about uncertainty, and to offer advanced visualization and +downstream analysis.") + (home-page "http://matsen.fhcrc.org/pplacer") + (license license:gpl3)))) + +;; This package is installed alongside 'pplacer'. It is a separate package so +;; that it can use the python-build-system for the scripts that are +;; distributed alongside the main OCaml binaries. +(define pplacer-scripts + (package + (inherit pplacer) + (name "pplacer-scripts") + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-scripts-dir + (lambda _ (chdir "scripts"))) + (replace 'check + (lambda _ + (zero? (system* "python" "-m" "unittest" "discover" "-v")))) + (add-after 'install 'wrap-executables + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (let ((path (string-append + (assoc-ref inputs "hmmer") "/bin:" + (assoc-ref inputs "infernal") "/bin"))) + (display path) + (wrap-program (string-append bin "/refpkg_align.py") + `("PATH" ":" prefix (,path)))) + (let ((path (string-append + (assoc-ref inputs "hmmer") "/bin"))) + (wrap-program (string-append bin "/hrefpkg_query.py") + `("PATH" ":" prefix (,path))))) + #t))))) + (inputs + `(("infernal" ,infernal) + ("hmmer" ,hmmer))) + (propagated-inputs + `(("python-biopython" ,python2-biopython) + ("taxtastic" ,taxtastic))) + (synopsis "Pplacer Python scripts"))) + (define-public python2-pbcore (package (name "python2-pbcore") @@ -3805,7 +3976,7 @@ predicts the locations of structural units in the sequences.") (define-public proteinortho (package (name "proteinortho") - (version "5.15") + (version "5.16") (source (origin (method url-fetch) @@ -3815,7 +3986,7 @@ predicts the locations of structural units in the sequences.") version "_src.tar.gz")) (sha256 (base32 - "05wacnnbx56avpcwhzlcf6b7s77swcpv3qnwz5sh1z54i51gg2ki")))) + "0z4f5cg0cs8ai62hfvp4q6w66q2phcc55nhs4xj5cyhxxivjv2ai")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -3926,7 +4097,7 @@ partial genes, and identifies translation initiation sites.") (define-public roary (package (name "roary") - (version "3.7.0") + (version "3.8.2") (source (origin (method url-fetch) @@ -3935,7 +4106,7 @@ partial genes, and identifies translation initiation sites.") version ".tar.gz")) (sha256 (base32 - "0x2hpb3nfsc6x2nq1788w0fhqfzc7cn2dp4xwyva9m3k6xlz0m43")))) + "03dfr2cd5fp80bcr65923zpdzrasvcxl7c2vgh8373v25a1yfap7")))) (build-system perl-build-system) (arguments `(#:phases @@ -4041,7 +4212,7 @@ extremely diverse sets of genomes.") (define-public raxml (package (name "raxml") - (version "8.2.9") + (version "8.2.10") (source (origin (method url-fetch) @@ -4052,7 +4223,7 @@ extremely diverse sets of genomes.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1pv8p2fy67y21a9y4cm7xpvxqjwz2v4201flfjshdq1p8j52rqf7")))) + "13s7aspfdcfr6asynwdg1x6vznys6pzap5f8wsffbnnwpkkg9ya8")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; There are no tests. @@ -4790,50 +4961,61 @@ sequence itself can be retrieved from these databases.") "/lib64" "/lib32"))) #:phases - (alist-replace - 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; The build system expects a directory containing the sources and - ;; raw build output of ncbi-vdb, including files that are not - ;; installed. Since we are building against an installed version of - ;; ncbi-vdb, the following modifications are needed. - (substitute* "setup/konfigure.perl" - ;; Make the configure script look for the "ilib" directory of - ;; "ncbi-vdb" without first checking for the existence of a - ;; matching library in its "lib" directory. - (("^ my \\$f = File::Spec->catdir\\(\\$libdir, \\$lib\\);") - "my $f = File::Spec->catdir($ilibdir, $ilib);") - ;; Look for interface libraries in ncbi-vdb's "ilib" directory. - (("my \\$ilibdir = File::Spec->catdir\\(\\$builddir, 'ilib'\\);") - "my $ilibdir = File::Spec->catdir($dir, 'ilib');")) - - ;; Dynamic linking - (substitute* "tools/copycat/Makefile" - (("smagic-static") "lmagic")) - - ;; The 'configure' script doesn't recognize things like - ;; '--enable-fast-install'. - (zero? (system* - "./configure" - (string-append "--build-prefix=" (getcwd) "/build") - (string-append "--prefix=" (assoc-ref outputs "out")) - (string-append "--debug") - (string-append "--with-fuse-prefix=" - (assoc-ref inputs "fuse")) - (string-append "--with-magic-prefix=" - (assoc-ref inputs "libmagic")) - ;; TODO: building with libxml2 fails with linker errors - ;; (string-append "--with-xml2-prefix=" - ;; (assoc-ref inputs "libxml2")) - (string-append "--with-ncbi-vdb-sources=" - (assoc-ref inputs "ncbi-vdb")) - (string-append "--with-ncbi-vdb-build=" - (assoc-ref inputs "ncbi-vdb")) - (string-append "--with-ngs-sdk-prefix=" - (assoc-ref inputs "ngs-sdk")) - (string-append "--with-hdf5-prefix=" - (assoc-ref inputs "hdf5"))))) - %standard-phases))) + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; The build system expects a directory containing the sources and + ;; raw build output of ncbi-vdb, including files that are not + ;; installed. Since we are building against an installed version of + ;; ncbi-vdb, the following modifications are needed. + (substitute* "setup/konfigure.perl" + ;; Make the configure script look for the "ilib" directory of + ;; "ncbi-vdb" without first checking for the existence of a + ;; matching library in its "lib" directory. + (("^ my \\$f = File::Spec->catdir\\(\\$libdir, \\$lib\\);") + "my $f = File::Spec->catdir($ilibdir, $ilib);") + ;; Look for interface libraries in ncbi-vdb's "ilib" directory. + (("my \\$ilibdir = File::Spec->catdir\\(\\$builddir, 'ilib'\\);") + "my $ilibdir = File::Spec->catdir($dir, 'ilib');")) + + ;; Dynamic linking + (substitute* "tools/copycat/Makefile" + (("smagic-static") "lmagic")) + + ;; The 'configure' script doesn't recognize things like + ;; '--enable-fast-install'. + (zero? (system* + "./configure" + (string-append "--build-prefix=" (getcwd) "/build") + (string-append "--prefix=" (assoc-ref outputs "out")) + (string-append "--debug") + (string-append "--with-fuse-prefix=" + (assoc-ref inputs "fuse")) + (string-append "--with-magic-prefix=" + (assoc-ref inputs "libmagic")) + ;; TODO: building with libxml2 fails with linker errors + ;; (string-append "--with-xml2-prefix=" + ;; (assoc-ref inputs "libxml2")) + (string-append "--with-ncbi-vdb-sources=" + (assoc-ref inputs "ncbi-vdb")) + (string-append "--with-ncbi-vdb-build=" + (assoc-ref inputs "ncbi-vdb")) + (string-append "--with-ngs-sdk-prefix=" + (assoc-ref inputs "ngs-sdk")) + (string-append "--with-hdf5-prefix=" + (assoc-ref inputs "hdf5")))))) + ;; This version of sra-tools fails to build with glibc because of a + ;; naming conflict. glibc-2.25/include/bits/mathcalls.h already + ;; contains a definition of "canonicalize", so we rename it. + ;; + ;; See upstream bug report: + ;; https://github.com/ncbi/sra-tools/issues/67 + (add-after 'unpack 'patch-away-glibc-conflict + (lambda _ + (substitute* "tools/bam-loader/bam.c" + (("canonicalize\\(" line) + (string-append "sra_tools_" line))) + #t))))) (native-inputs `(("perl" ,perl))) (inputs `(("ngs-sdk" ,ngs-sdk) @@ -5254,10 +5436,41 @@ between experiments, StringTie's output can be processed either by the Cuffdiff or Ballgown programs.") (license license:artistic2.0))) +(define-public taxtastic + (package + (name "taxtastic") + (version "0.6.4") + (source (origin + (method url-fetch) + (uri (pypi-uri "taxtastic" version)) + (sha256 + (base32 + "0s79z8kfl853x7l4h8ms05k31q87aw62nrchlk20w9n227j35929")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "python" "-m" "unittest" "discover" "-v"))))))) + (propagated-inputs + `(("python-sqlalchemy" ,python2-sqlalchemy) + ("python-decorator" ,python2-decorator) + ("python-biopython" ,python2-biopython) + ("python-pandas" ,python2-pandas))) + (home-page "https://github.com/fhcrc/taxtastic") + (synopsis "Tools for taxonomic naming and annotation") + (description + "Taxtastic is software written in python used to build and maintain +reference packages i.e. collections of reference trees, reference alignments, +profiles, and associated taxonomic information.") + (license license:gpl3+))) + (define-public vcftools (package (name "vcftools") - (version "0.1.14") + (version "0.1.15") (source (origin (method url-fetch) (uri (string-append @@ -5265,7 +5478,7 @@ Cuffdiff or Ballgown programs.") version "/vcftools-" version ".tar.gz")) (sha256 (base32 - "10l5c07z9p4i9pr4gl54b2c9h6ndhqlbq1rashg2zcgwkbfrkmvn")))) + "1qw30c45wihgy632rbz4rh3njnwj4msj46l1rsgdhyg6bgypmr1i")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target @@ -5345,40 +5558,18 @@ information as possible.") (define-public r-vegan (package (name "r-vegan") - (version "2.4-2") + (version "2.4-3") (source (origin (method url-fetch) (uri (cran-uri "vegan" version)) (sha256 (base32 - "12wf64izrpq9z3ix7mgm5421mq0xsm8dw5qblvcrz452nfhjf5w9")))) + "15zcxfix2d854897k1lr0sfmj2n00339nlsppcr3zrb238lb2mi5")))) (build-system r-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'revert-test-deletion - ;; The distributed sources do not include tests with the CRAN - ;; package. Here we revert the commit - ;; `591d0e8ba1deaaf82445474ec6619c0b43db4e63' which deletes these - ;; tests. There are plans to not delete tests in future as - ;; documented at https://github.com/vegandevs/vegan/issues/181. - (lambda* (#:key inputs #:allow-other-keys) - (zero? - (system* "patch" "-R" "-p1" "-i" - (assoc-ref inputs "r-vegan-delete-tests-patch")))))))) (native-inputs `(("gfortran" ,gfortran) - ("r-knitr" ,r-knitr) - ("r-vegan-delete-tests-patch" - ,(origin - (method url-fetch) - (uri (string-append - "https://github.com/vegandevs/vegan/commit/" - "591d0e8ba1deaaf82445474ec6619c0b43db4e63.patch")) - (sha256 - (base32 - "0b1bi7y4jjdl3ph721vm9apm51dr2z9piwvhy4355sf2b4kyyj5a")))))) + ("r-knitr" ,r-knitr))) (propagated-inputs `(("r-cluster" ,r-cluster) ("r-lattice" ,r-lattice) @@ -5397,14 +5588,14 @@ data types as well.") (define-public r-annotate (package (name "r-annotate") - (version "1.52.1") + (version "1.54.0") (source (origin (method url-fetch) (uri (bioconductor-uri "annotate" version)) (sha256 (base32 - "0yymz8qxgnbybvfhqrgkd1hh9dhwxdii1yxkhr1zicjgb35xixxb")))) + "03hmbvp3i6lvd307fqdg7akxi2qp322rlky3bzw0zccgm0i0221g")))) (build-system r-build-system) (propagated-inputs `(("r-annotationdbi" ,r-annotationdbi) @@ -5417,21 +5608,21 @@ data types as well.") (home-page "http://bioconductor.org/packages/annotate") (synopsis "Annotation for microarrays") - (description "This package provides R enviroments for the annotation of + (description "This package provides R environments for the annotation of microarrays.") (license license:artistic2.0))) (define-public r-geneplotter (package (name "r-geneplotter") - (version "1.52.0") + (version "1.54.0") (source (origin (method url-fetch) (uri (bioconductor-uri "geneplotter" version)) (sha256 (base32 - "1p6yvxi243irhjxwm97hp73abhwampj0myyf8z00ij166674pc7h")))) + "0a0ajns21db5rrjl16bq6wawggsnxr00fg184pc38nmfghv4z4b6")))) (build-system r-build-system) (propagated-inputs `(("r-annotate" ,r-annotate) @@ -5449,14 +5640,14 @@ microarrays.") (define-public r-genefilter (package (name "r-genefilter") - (version "1.56.0") + (version "1.58.0") (source (origin (method url-fetch) (uri (bioconductor-uri "genefilter" version)) (sha256 (base32 - "1vzgciqd09csqcw9qync8blsv51ylrd86a65iadgyy6j26g01fwd")))) + "0sf2hdi9nv6r83vn1y65m4jiba8pffddpj46d6yjn5rlsixplmqg")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -5476,24 +5667,16 @@ high-throughput sequencing experiments.") (define-public r-deseq2 (package (name "r-deseq2") - (version "1.14.1") + (version "1.16.0") (source (origin (method url-fetch) (uri (bioconductor-uri "DESeq2" version)) (sha256 (base32 - "1walwkqryn1gnwz7zryr5764a0p6ia7ag4w6w9n8fskg8dkg0fqs")))) + "0m0apn3xi4kdkinsj4xkw5cwysicyjr6xxlxhpa4scyv589am1s5")))) (properties `((upstream-name . "DESeq2"))) (build-system r-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'link-against-armadillo - (lambda _ - (substitute* "src/Makevars" - (("PKG_LIBS =" prefix) - (string-append prefix "-larmadillo")))))))) (propagated-inputs `(("r-biobase" ,r-biobase) ("r-biocgenerics" ,r-biocgenerics) @@ -5521,14 +5704,14 @@ distribution.") (define-public r-annotationforge (package (name "r-annotationforge") - (version "1.16.0") + (version "1.18.0") (source (origin (method url-fetch) (uri (bioconductor-uri "AnnotationForge" version)) (sha256 (base32 - "02msyb9p3hywrryx00zpjkjl126mrv827i1ah1092s0cplm6xxvf")))) + "01kd86vvgpa4a5zivcy4g6z8rhcykasdskrz8yqsqz211sd1xsr3")))) (properties `((upstream-name . "AnnotationForge"))) (build-system r-build-system) @@ -5551,14 +5734,14 @@ databases. Packages produced are intended to be used with AnnotationDbi.") (define-public r-rbgl (package (name "r-rbgl") - (version "1.50.0") + (version "1.52.0") (source (origin (method url-fetch) (uri (bioconductor-uri "RBGL" version)) (sha256 (base32 - "1q14m8w6ih56v680kf3d9wh1qbgp7af33kz3cxafdf1vvzx9km08")))) + "11db6kvz453ypj9ds3xpjqzwrrjck84ijn4wlhkfyz2dzdgd5ryv")))) (properties `((upstream-name . "RBGL"))) (build-system r-build-system) (propagated-inputs `(("r-graph" ,r-graph))) @@ -5572,14 +5755,14 @@ the graph algorithms contained in the Boost library.") (define-public r-gseabase (package (name "r-gseabase") - (version "1.36.0") + (version "1.38.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GSEABase" version)) (sha256 (base32 - "0l2x7yj7lfb0m2dmsav5ib026dikpgl4crdckrnj776yy08lgxpj")))) + "1c6i6g4fj3b8wjyxyygr7i3v8sxrq1ffb2bbicya5ah2gdaclfad")))) (properties `((upstream-name . "GSEABase"))) (build-system r-build-system) (propagated-inputs @@ -5599,14 +5782,14 @@ Enrichment Analysis} (GSEA).") (define-public r-category (package (name "r-category") - (version "2.40.0") + (version "2.42.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Category" version)) (sha256 (base32 - "16ncwz7b4y48k0p3fvbrbmvf7nfz63li9ysgcl8kp9kl4hg7llng")))) + "0swcmihyjg0fhaaydl9hm24aj9zffw3bibza9y6sqs6jaqd97f09")))) (properties `((upstream-name . "Category"))) (build-system r-build-system) (propagated-inputs @@ -5630,14 +5813,14 @@ analysis.") (define-public r-gostats (package (name "r-gostats") - (version "2.40.0") + (version "2.42.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GOstats" version)) (sha256 (base32 - "0g2czm94zhzx92z7y2r4mjfxhwml7bhab2db6820ks8nkw1zvr9n")))) + "0qvqjgfnd9ap4rikvyxa9p4dhcnccvkw8phzv88vghh6pq463d62")))) (properties `((upstream-name . "GOstats"))) (build-system r-build-system) (propagated-inputs @@ -5660,14 +5843,14 @@ testing and other simple calculations.") (define-public r-shortread (package (name "r-shortread") - (version "1.32.0") + (version "1.34.0") (source (origin (method url-fetch) (uri (bioconductor-uri "ShortRead" version)) (sha256 (base32 - "0mjdlg92x5qw4x2djc4dv5lxwl7ai6ix56nnf86zr07jk8vc7yls")))) + "0ayk3d5625ymb5g2gycq6banzqmyd642xrwjzhdshz2dwid7kly8")))) (properties `((upstream-name . "ShortRead"))) (build-system r-build-system) (inputs @@ -5702,14 +5885,14 @@ ungapped alignment formats.") (define-public r-systempiper (package (name "r-systempiper") - (version "1.8.1") + (version "1.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "systemPipeR" version)) (sha256 (base32 - "0hyi841w8fm2yzpm6lwqi3jz5kc8ny8dy5p29dxynzaw5bpjw56d")))) + "0c3m5rq63ypv15yca97yag5d4vgd7xj9by2a4sd8z0pcmpajz0hw")))) (properties `((upstream-name . "systemPipeR"))) (build-system r-build-system) (propagated-inputs @@ -5748,14 +5931,14 @@ annotation infrastructure.") (define-public r-grohmm (package (name "r-grohmm") - (version "1.8.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "groHMM" version)) (sha256 (base32 - "0d91nyhqbi5hv3mgmr2z0g29wg2md26g0hyv5mgapmz20cd9zi4y")))) + "16k1kp4sbhh0vp7dzywafq52csq42ksqfrqfy4bdv1qbd7536dpd")))) (properties `((upstream-name . "groHMM"))) (build-system r-build-system) (propagated-inputs @@ -5807,7 +5990,7 @@ track. The database is exposed as a @code{TxDb} object.") (define-public vsearch (package (name "vsearch") - (version "2.4.2") + (version "2.4.3") (source (origin (method url-fetch) @@ -5817,7 +6000,7 @@ track. The database is exposed as a @code{TxDb} object.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "15zy2d9xvgbgdjlxvrhj8s5ga42p13k7a3xv015ingn0bi1p3n6w")) + "0hc110ycqpa54nr6x173qg7190hk08qp7yz7zzqxlsypqnpc5zzp")) (patches (search-patches "vsearch-unbundle-cityhash.patch")) (snippet '(begin @@ -6044,13 +6227,13 @@ barplots or heatmaps.") (define-public r-biocgenerics (package (name "r-biocgenerics") - (version "0.20.0") + (version "0.22.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocGenerics" version)) (sha256 (base32 - "06szdz7dfs1iyv5zdl4fjzad18nnf1zf3wvglc6c6yd9mrqlf7vk")))) + "0qbmz2qxwwi30xpxpvp2h1h7l494rbbz5d9pls5cfhqdv3wnpzsv")))) (properties `((upstream-name . "BiocGenerics"))) (build-system r-build-system) @@ -6064,13 +6247,13 @@ packages.") (define-public r-biocinstaller (package (name "r-biocinstaller") - (version "1.24.0") + (version "1.26.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocInstaller" version)) (sha256 (base32 - "0y1y5wmy6lzjqx3hdg15n91d417ccjj8dbvdkhmp99bs5aijwcpn")))) + "0njw2q3lq1rrjx8qzw5d2130l72bmd3g2z8qlxqmkdcbmmgliyj2")))) (properties `((upstream-name . "BiocInstaller"))) (build-system r-build-system) @@ -6083,13 +6266,13 @@ Bioconductor, CRAN, and Github.") (define-public r-biocviews (package (name "r-biocviews") - (version "1.42.0") + (version "1.44.0") (source (origin (method url-fetch) (uri (bioconductor-uri "biocViews" version)) (sha256 (base32 - "07rjk10b91pkriyq297w86199r2d3sfji3ggs9mq2gyalsa8y4b6")))) + "17hi8w0w63f5yc43kid5pbld3ca78sj6n8x9dmkbl8h48818xbga")))) (properties `((upstream-name . "biocViews"))) (build-system r-build-system) @@ -6108,19 +6291,46 @@ categorize packages in a Bioconductor package repository according to keywords, also known as views, in a controlled vocabulary.") (license license:artistic2.0))) +(define-public r-bookdown + (package + (name "r-bookdown") + (version "0.3") + (source (origin + (method url-fetch) + (uri (cran-uri "bookdown" version)) + (sha256 + (base32 + "0r9bchzg7im6psc3jphvshzbidc5bv5xaih1qg7b5518jy4iyvb9")))) + (build-system r-build-system) + (propagated-inputs + `(("r-htmltools" ,r-htmltools) + ("r-knitr" ,r-knitr) + ("r-rmarkdown" ,r-rmarkdown) + ("r-yaml" ,r-yaml))) + (home-page "https://github.com/rstudio/bookdown") + (synopsis "Authoring books and technical documents with R markdown") + (description "This package provides output formats and utilities for +authoring books and technical documents with R Markdown.") + (license license:gpl3))) + (define-public r-biocstyle (package (name "r-biocstyle") - (version "2.2.1") + (version "2.4.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocStyle" version)) (sha256 (base32 - "0sl99xw940ixrm6v24lgaw3ljh56g59a6rdz7g160hx84z9f8n2n")))) + "1n2c8rj920wmk3q2khmjfnhn5i4b3lmhx1whnghk0zk3jf88hvbi")))) (properties `((upstream-name . "BiocStyle"))) (build-system r-build-system) + (propagated-inputs + `(("r-bookdown" ,r-bookdown) + ("r-knitr" ,r-knitr) + ("r-rmarkdown" ,r-rmarkdown) + ("r-yaml" ,r-yaml))) (home-page "http://bioconductor.org/packages/BiocStyle") (synopsis "Bioconductor formatting styles") (description "This package provides standard formatting styles for @@ -6131,13 +6341,13 @@ functionality.") (define-public r-bioccheck (package (name "r-bioccheck") - (version "1.10.0") + (version "1.12.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocCheck" version)) (sha256 (base32 - "1rfy37xg1nc2cmgbclvzsi7sgmdcdjiahsx9crgx3yaw7kxgiack")))) + "01zkw5hggzvn0wj4msac71k1mknq4h2inn1c2hwqgw4cy1675wl0")))) (properties `((upstream-name . "BiocCheck"))) (build-system r-build-system) @@ -6165,10 +6375,8 @@ functionality.") (propagated-inputs `(("r-codetools" ,r-codetools) ("r-graph" ,r-graph) - ("r-knitr" ,r-knitr) ("r-httr" ,r-httr) ("r-optparse" ,r-optparse) - ("r-devtools" ,r-devtools) ("r-biocinstaller" ,r-biocinstaller) ("r-biocviews" ,r-biocviews))) (home-page "http://bioconductor.org/packages/BiocCheck") @@ -6225,13 +6433,13 @@ that accept short and long options.") (define-public r-dnacopy (package (name "r-dnacopy") - (version "1.48.0") + (version "1.50.0") (source (origin (method url-fetch) (uri (bioconductor-uri "DNAcopy" version)) (sha256 (base32 - "1idyvfvy7xx8k9vk00y4k3819qmip8iqm809j3vpxabmsn7r9zyh")))) + "0112ry62z18m7rdyrn3gvbxq2f6m44cawhcfb1f02z9xzlsj0k28")))) (properties `((upstream-name . "DNAcopy"))) (build-system r-build-system) @@ -6247,13 +6455,13 @@ abnormal copy number.") (define-public r-s4vectors (package (name "r-s4vectors") - (version "0.12.1") + (version "0.14.0") (source (origin (method url-fetch) (uri (bioconductor-uri "S4Vectors" version)) (sha256 (base32 - "0i36y3w36h3d8rmazxcrip4gvn54rd9av1wz4lygsprrjmylfhcc")))) + "0ywwrs4d752xfk0p0w122kvi0xvp6nmxnyynchbsa8zciqymhgv8")))) (properties `((upstream-name . "S4Vectors"))) (build-system r-build-system) @@ -6274,14 +6482,14 @@ S4Vectors package itself.") (define-public r-seqinr (package (name "r-seqinr") - (version "3.3-3") + (version "3.3-6") (source (origin (method url-fetch) (uri (cran-uri "seqinr" version)) (sha256 (base32 - "0rk4yba8km26c0rh1f4h474zsb5n6kjmqsi55bnzr6p8pymp18hj")))) + "13d0qxm2244wgdl2dy2s8vnrnf5fx4n47if9gkb49dqx6c0sx8s2")))) (build-system r-build-system) (propagated-inputs `(("r-ade4" ,r-ade4) @@ -6299,13 +6507,13 @@ utilities for sequence data management under the ACNUC system.") (define-public r-iranges (package (name "r-iranges") - (version "2.8.1") + (version "2.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "IRanges" version)) (sha256 (base32 - "0cryqnpqb3p6l9jjw27hyqd550sxlljls3ka7b9rb38hkji7b5hw")))) + "0zp4mxm9h1p4krj7m7cinkvwa2ibqkq59jwpan97yvhb4z8q0d6n")))) (properties `((upstream-name . "IRanges"))) (build-system r-build-system) @@ -6325,22 +6533,47 @@ naming and share the same rich and consistent \"Vector API\" as much as possible.") (license license:artistic2.0))) +(define-public r-genomeinfodbdata + (package + (name "r-genomeinfodbdata") + (version "0.99.0") + (source (origin + (method url-fetch) + ;; We cannot use bioconductor-uri here because this tarball is + ;; located under "data/annotation/" instead of "bioc/". + (uri (string-append "https://bioconductor.org/packages/release/" + "data/annotation/src/contrib/GenomeInfoDbData_" + version ".tar.gz")) + (sha256 + (base32 + "120qvhb0pvkzd65lsgja62vyrgc37si6fh68q4cg4w5x9f04jw25")))) + (properties + `((upstream-name . "GenomeInfoDbData"))) + (build-system r-build-system) + (home-page "http://bioconductor.org/packages/GenomeInfoDbData") + (synopsis "Species and taxonomy ID look up tables for GenomeInfoDb") + (description "This package contains data for mapping between NCBI taxonomy +ID and species. It is used by functions in the GenomeInfoDb package.") + (license license:artistic2.0))) + (define-public r-genomeinfodb (package (name "r-genomeinfodb") - (version "1.10.2") + (version "1.12.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomeInfoDb" version)) (sha256 (base32 - "0zh894qd1sgpjbn0wfvq6hs2dzn7y1pyicvzk2aa48y3zbidanv7")))) + "1bwwhscjl376a5p43mx8ijrqajxmgypbqhv049pgagl22hkkf0y3")))) (properties `((upstream-name . "GenomeInfoDb"))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics) + ("r-genomeinfodbdata" ,r-genomeinfodbdata) ("r-iranges" ,r-iranges) + ("r-rcurl" ,r-rcurl) ("r-s4vectors" ,r-s4vectors))) (home-page "http://bioconductor.org/packages/GenomeInfoDb") (synopsis "Utilities for manipulating chromosome identifiers") @@ -6354,13 +6587,13 @@ names in their natural, rather than lexicographic, order.") (define-public r-edger (package (name "r-edger") - (version "3.16.5") + (version "3.18.0") (source (origin (method url-fetch) (uri (bioconductor-uri "edgeR" version)) (sha256 (base32 - "04vpa0a6dkkjyvvfbkmfjyaxf2ldkagi66g028qpaszd8jsk8yiv")))) + "02l17i6xh33dv10swwvyfxrmv5kp23iv278iwvkfq2mnipasfnb9")))) (properties `((upstream-name . "edgeR"))) (build-system r-build-system) (propagated-inputs @@ -6381,13 +6614,13 @@ CAGE.") (define-public r-variantannotation (package (name "r-variantannotation") - (version "1.20.2") + (version "1.22.0") (source (origin (method url-fetch) (uri (bioconductor-uri "VariantAnnotation" version)) (sha256 (base32 - "165wda1d2jagd907pnra4m3sla66icyqxvd60xpv09jl5agd5mn9")))) + "05hpm4as36kvpiqhgnkfjwfx0a05p304c21ggba29iac4nanm8b3")))) (properties `((upstream-name . "VariantAnnotation"))) (inputs @@ -6419,13 +6652,13 @@ coding changes and predict coding outcomes.") (define-public r-limma (package (name "r-limma") - (version "3.30.7") + (version "3.32.0") (source (origin (method url-fetch) (uri (bioconductor-uri "limma" version)) (sha256 (base32 - "1xg9w4lmn9n4hwyflxiwi6g969lcy569cg4z1x47crwwg7z7qdka")))) + "0q7rqm86nwq0rg4fjggfr7xqybjrxj425vni3cva70b4c8d1h425")))) (build-system r-build-system) (home-page "http://bioinf.wehi.edu.au/limma") (synopsis "Package for linear models for microarray and RNA-seq data") @@ -6438,13 +6671,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.") (define-public r-xvector (package (name "r-xvector") - (version "0.14.0") + (version "0.16.0") (source (origin (method url-fetch) (uri (bioconductor-uri "XVector" version)) (sha256 (base32 - "09lbqxpqr80g0kw77mpz0p1a8cq706j33kz8194wp71il67cdzi7")))) + "01n09f4jdm60684lzikp02zf9gjan8bdrjx740vggr21q9fa69wn")))) (properties `((upstream-name . "XVector"))) (build-system r-build-system) @@ -6474,13 +6707,13 @@ different technologies, including microarrays, RNA-seq, and quantitative PCR.") (define-public r-genomicranges (package (name "r-genomicranges") - (version "1.26.2") + (version "1.28.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicRanges" version)) (sha256 (base32 - "0if5dswkp77lyqppd0z2iyvnwag9h1gsr03707s8npcx13mzpsia")))) + "10x9zx0b7j05d1j6p0xs4q4f4wzbhf3rq64wzi9cgv7f44q43a5n")))) (properties `((upstream-name . "GenomicRanges"))) (build-system r-build-system) @@ -6503,13 +6736,13 @@ manipulating genomic intervals and variables defined along a genome.") (define-public r-biobase (package (name "r-biobase") - (version "2.34.0") + (version "2.36.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Biobase" version)) (sha256 (base32 - "0js9j9wqls8f571ifl9ylllbb9a9hwf7b7drf2grwb1fl31ldazl")))) + "0x7pf5xsdcj12dbf5qqki2c6bd5madqg2fbiq5xgisarpc9v6c1m")))) (properties `((upstream-name . "Biobase"))) (build-system r-build-system) @@ -6525,13 +6758,13 @@ on Bioconductor or which replace R functions.") (define-public r-annotationdbi (package (name "r-annotationdbi") - (version "1.36.0") + (version "1.38.0") (source (origin (method url-fetch) (uri (bioconductor-uri "AnnotationDbi" version)) (sha256 (base32 - "0ydrqw1k1j5p6w76bwc753cx545c055x88q87wzya93858synj6r")))) + "1xffm98s817mfc827cnr0by6167nlrl1glxzjawzz0rkghs41g27")))) (properties `((upstream-name . "AnnotationDbi"))) (build-system r-build-system) @@ -6552,13 +6785,13 @@ annotation data packages using SQLite data storage.") (define-public r-biomart (package (name "r-biomart") - (version "2.30.0") + (version "2.32.0") (source (origin (method url-fetch) (uri (bioconductor-uri "biomaRt" version)) (sha256 (base32 - "1x0flcghq71784q2l02j0g4f9jkmyb14f6i307n6c59d6ji7h7x6")))) + "0knkxh23vl9pa0by03xr6dy9aiah714cmf54jl828k51l9wv5l2j")))) (properties `((upstream-name . "biomaRt"))) (build-system r-build-system) @@ -6582,13 +6815,13 @@ powerful online queries from gene annotation to database mining.") (define-public r-biocparallel (package (name "r-biocparallel") - (version "1.8.1") + (version "1.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocParallel" version)) (sha256 (base32 - "123i928rwi4h4sy4fpysv6pinw5nns0sm3myxi2ghqhm34ws8gyl")))) + "01ph0kq70b5gkd7n6a4myjlvwzgc0hi4xfwz8h17h06n9p5sdwa9")))) (properties `((upstream-name . "BiocParallel"))) (build-system r-build-system) @@ -6606,13 +6839,13 @@ objects.") (define-public r-biostrings (package (name "r-biostrings") - (version "2.42.1") + (version "2.44.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Biostrings" version)) (sha256 (base32 - "0vqgd9i6y3wj4zviqwgvwgd4qj6033fg01rmx1cw9bw5i8ans42d")))) + "0ixgx12cx2z4n2khxq83crz9gc21qckj2v78y2p31567kfsw7clg")))) (properties `((upstream-name . "Biostrings"))) (build-system r-build-system) @@ -6632,13 +6865,13 @@ biological sequences or sets of sequences.") (define-public r-rsamtools (package (name "r-rsamtools") - (version "1.26.1") + (version "1.28.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Rsamtools" version)) (sha256 (base32 - "0pf4f6brf4bl5zgjrah0f38qslazrs49ayqgyh0xfqgrh63yx4ck")))) + "1zx6vhdz3lksbfy98jj3qzl7cxgspigm2pbsd5835b12r6mc5w6d")))) (properties `((upstream-name . "Rsamtools"))) (build-system r-build-system) @@ -6673,22 +6906,53 @@ binary variant call (BCF) and compressed indexed tab-delimited (tabix) files.") (license license:expat))) +(define-public r-delayedarray + (package + (name "r-delayedarray") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "DelayedArray" version)) + (sha256 + (base32 + "0pcsk0f2dg2ldzprs1cccqrk53jrysmm6ccgjj5wh6z3x17g7g2r")))) + (properties + `((upstream-name . "DelayedArray"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-s4vectors" ,r-s4vectors) + ("r-iranges" ,r-iranges) + ("r-matrixstats" ,r-matrixstats))) + (home-page "http://bioconductor.org/packages/DelayedArray") + (synopsis "Delayed operations on array-like objects") + (description + "Wrapping an array-like object (typically an on-disk object) in a +@code{DelayedArray} object allows one to perform common array operations on it +without loading the object in memory. In order to reduce memory usage and +optimize performance, operations on the object are either delayed or executed +using a block processing mechanism. Note that this also works on in-memory +array-like objects like @code{DataFrame} objects (typically with Rle columns), +@code{Matrix} objects, and ordinary arrays and data frames.") + (license license:artistic2.0))) + (define-public r-summarizedexperiment (package (name "r-summarizedexperiment") - (version "1.4.0") + (version "1.6.0") (source (origin (method url-fetch) (uri (bioconductor-uri "SummarizedExperiment" version)) (sha256 (base32 - "1kbj8sg2ik9f8d6g95wz0py62jldg01qy5rsdpg1cxw95nf7dzi3")))) + "1szjbzzz4pyip891nji71caalxh0rhqiv7rpv6q54swlrqpfkqkw")))) (properties `((upstream-name . "SummarizedExperiment"))) (build-system r-build-system) (propagated-inputs `(("r-biobase" ,r-biobase) ("r-biocgenerics" ,r-biocgenerics) + ("r-delayedarray" ,r-delayedarray) ("r-genomeinfodb" ,r-genomeinfodb) ("r-genomicranges" ,r-genomicranges) ("r-iranges" ,r-iranges) @@ -6706,13 +6970,13 @@ samples.") (define-public r-genomicalignments (package (name "r-genomicalignments") - (version "1.10.0") + (version "1.12.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicAlignments" version)) (sha256 (base32 - "11vb0a0zd36i4yhg4mfijv787v0nihn6pkjj6q7rfy19gwy61xlc")))) + "1aagyrdk5309a7awg42lg0bpirp91i6i2ddvpmrs38pzriwahnjy")))) (properties `((upstream-name . "GenomicAlignments"))) (build-system r-build-system) @@ -6739,13 +7003,13 @@ alignments.") (define-public r-rtracklayer (package (name "r-rtracklayer") - (version "1.34.1") + (version "1.36.0") (source (origin (method url-fetch) (uri (bioconductor-uri "rtracklayer" version)) (sha256 (base32 - "0x59k2fd0iaqi93gy6bm58p2j2z90z1b7a6w5b4c098y98n096rc")))) + "0dv7p3wzmx57inznf6fb06417zcm48g7fpazyahxny7bqgzwq0ig")))) (build-system r-build-system) (arguments `(#:phases @@ -6784,13 +7048,13 @@ as well as query and modify the browser state, such as the current viewport.") (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.26.2") + (version "1.28.0") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "1ybi6r3bax07wlv2qcd34y5qjdvcqcfayfvlrjc39ifrkk65wv4f")))) + "1pjxlr34ygv8pvfwpyq268wpgqzphiwpij85fyhjqdwdp0a253ik")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -6849,13 +7113,13 @@ information about the latest version of the Gene Ontologies.") (define-public r-graph (package (name "r-graph") - (version "1.52.0") + (version "1.54.0") (source (origin (method url-fetch) (uri (bioconductor-uri "graph" version)) (sha256 (base32 - "0g3dk5vsdp489fmyg8mifczmzgqrjlakkkr8i96dj15gghp3l135")))) + "0hx9wslnrci7c5i1gd1zlpjmgrkdnx9gabfgmzzwfnykk1mdvvna")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics))) @@ -6868,13 +7132,13 @@ information about the latest version of the Gene Ontologies.") (define-public r-topgo (package (name "r-topgo") - (version "2.26.0") + (version "2.28.0") (source (origin (method url-fetch) (uri (bioconductor-uri "topGO" version)) (sha256 (base32 - "0j6sgvam4lk9348ag6pypcbkv93x4fk0di8ivhr23mz2s2yqzwrx")))) + "04kvxz9qsxfz0np7wlrzp4r95nykz94x7mqpyyk76f90g6m66vcc")))) (properties `((upstream-name . "topGO"))) (build-system r-build-system) @@ -6901,13 +7165,13 @@ dependencies between GO terms can be implemented and applied.") (define-public r-bsgenome (package (name "r-bsgenome") - (version "1.42.0") + (version "1.44.0") (source (origin (method url-fetch) (uri (bioconductor-uri "BSgenome" version)) (sha256 (base32 - "0hxwc02h5mzhkrk60d1jmlsfjf0ai9jxdc0128kj1sg4r2k1q94y")))) + "18dlknwk3xvi52hamxf9pl5bjc5806mpw98xwvx5xajn8mrxiy5h")))) (properties `((upstream-name . "BSgenome"))) (build-system r-build-system) @@ -6962,13 +7226,13 @@ genome data packages and support for efficient SNP representation.") (define-public r-impute (package (name "r-impute") - (version "1.48.0") + (version "1.50.0") (source (origin (method url-fetch) (uri (bioconductor-uri "impute" version)) (sha256 (base32 - "1164zvnikbjd0ybdn9xwn520rlmdjd824vmhnl83zgv3v9lzp9bm")))) + "0va45vfixy3np549md87h3b3rbavm54gfnmnjhpr9hf02lll6zxs")))) (inputs `(("gfortran" ,gfortran))) (build-system r-build-system) @@ -6982,13 +7246,13 @@ microarray data, using nearest neighbor averaging.") (define-public r-seqpattern (package (name "r-seqpattern") - (version "1.6.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "seqPattern" version)) (sha256 (base32 - "0lsa5pz36xapi3yiv78k3z286a5md5sm5g21pgfyg8zmhmkxr7y8")))) + "0yw5251sirv3283xgmfmfbf900xp8dwvqfk88mr945s3by5hx99v")))) (properties `((upstream-name . "seqPattern"))) (build-system r-build-system) @@ -7009,13 +7273,13 @@ reference point and sorted by a user defined feature.") (define-public r-genomation (package (name "r-genomation") - (version "1.6.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "genomation" version)) (sha256 (base32 - "1m4mz7wihj8yqivwkzw68div8ybk4rjsai3ffki7xp7sh21ax03y")))) + "0r71nf8p3aq3yffqxg4yir1zmm7rar5a57nmy1kpqpn8kaf2svjl")))) (build-system r-build-system) (propagated-inputs `(("r-biostrings" ,r-biostrings) @@ -7190,14 +7454,14 @@ annotations for the genome of the model mouse Mus musculus.") (define-public r-seqlogo (package (name "r-seqlogo") - (version "1.40.0") + (version "1.42.0") (source (origin (method url-fetch) (uri (bioconductor-uri "seqLogo" version)) (sha256 (base32 - "18bajdl75h3039559d81rgllqqvnq8ygsfxfx081xphxs0v6xggy")))) + "19d5zmy7m8svljwgbmrb4vxkq18slq0f3all6k2ayv42b8w44h6q")))) (properties `((upstream-name . "seqLogo"))) (build-system r-build-system) (home-page "http://bioconductor.org/packages/seqLogo") @@ -7436,14 +7700,14 @@ Biostrings objects.") (define-public r-motifrg (package (name "r-motifrg") - (version "1.18.0") + (version "1.20.0") (source (origin (method url-fetch) (uri (bioconductor-uri "motifRG" version)) (sha256 (base32 - "1pa97aj6c5f3gx4bgriw110764dj3m9h104ddi8rv2bpy41yd98d")))) + "0lxxpqyljiyk73vyq6ss46q13g81pm24q87mkzdsqlr5zx427ch6")))) (properties `((upstream-name . "motifRG"))) (build-system r-build-system) (propagated-inputs @@ -7488,13 +7752,13 @@ two-dimensional genome scans.") (define-public r-zlibbioc (package (name "r-zlibbioc") - (version "1.20.0") + (version "1.22.0") (source (origin (method url-fetch) (uri (bioconductor-uri "zlibbioc" version)) (sha256 (base32 - "0hbk90q5hl0fycfvy5nxxa4hxgglag9lzp7i0fg849bqygg5nbyq")))) + "1kdgwwlh39mgwzj3zq71za4iv40sq625ghnyrndv5wrivrcr2igv")))) (properties `((upstream-name . "zlibbioc"))) (build-system r-build-system) @@ -7530,14 +7794,14 @@ secondary structure and comparative analysis in R.") (define-public r-rhtslib (package (name "r-rhtslib") - (version "1.6.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "Rhtslib" version)) (sha256 (base32 - "1vk3ng61dhi3pbia1lp3gl3mlr3i1vb2lkq83qb53i9dzz128wh9")))) + "0jj5h81z5gyf4j3lp2l3zsm6pgbmalgrngr8qdpygc20phndpp0b")))) (properties `((upstream-name . "Rhtslib"))) (build-system r-build-system) (propagated-inputs @@ -7557,14 +7821,14 @@ of other R packages who wish to make use of HTSlib.") (define-public r-bamsignals (package (name "r-bamsignals") - (version "1.6.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "bamsignals" version)) (sha256 (base32 - "1k42gvk5mgq4la1fp0in3an2zfdz69h6522jsqhmk0f6i75kg4mb")))) + "0knx69zzdaak2sjim8k9mygmcjxpa705m8013ld5zwpgi8dag9mc")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics) @@ -7665,7 +7929,7 @@ library implementing most of the pipeline's features.") `(("r-minimal" ,r-minimal) ("r-rcas" ,r-rcas) ("guile-next" ,guile-2.2) - ("guile-json" ,guile2.2-json) + ("guile-json" ,guile-json) ("guile-redis" ,guile2.2-redis))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -7678,18 +7942,20 @@ library implementing most of the pipeline's features.") (define-public r-mutationalpatterns (package (name "r-mutationalpatterns") - (version "1.0.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (bioconductor-uri "MutationalPatterns" version)) (sha256 (base32 - "1a3c2bm0xx0q4gf98jiw74msmdf2fr8rbsdysd5ww9kqlzmsbr17")))) + "1s50diwh1j6vg3mgahh6bczvq74mfdbmwjrad4d5lh723gnc5pjg")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics) ("r-biostrings" ,r-biostrings) + ("r-bsgenome-hsapiens-1000g" ,r-bsgenome-hsapiens-1000genomes-hs37d5) + ("r-bsgenome-hsapiens-ucsc-hg19" ,r-bsgenome-hsapiens-ucsc-hg19) ("r-genomicranges" ,r-genomicranges) ("r-genomeinfodb" ,r-genomeinfodb) ("r-ggplot2" ,r-ggplot2) @@ -7846,13 +8112,13 @@ kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.") (define-public r-tximport (package (name "r-tximport") - (version "1.2.0") + (version "1.4.0") (source (origin (method url-fetch) (uri (bioconductor-uri "tximport" version)) (sha256 (base32 - "1k5a7dad6zqg936s17f6cmwgqp11x24z9zhxndsgwbscgpyhpcb0")))) + "1mklb02bj4gnbjlmb7vv6k4lr3w9fp3pzli9rddbrwd0y5n8fcpx")))) (build-system r-build-system) (home-page "http://bioconductor.org/packages/tximport") (synopsis "Import and summarize transcript-level estimates for gene-level analysis") @@ -7868,13 +8134,13 @@ of gene-level counts.") (define-public r-rhdf5 (package (name "r-rhdf5") - (version "2.18.0") + (version "2.20.0") (source (origin (method url-fetch) (uri (bioconductor-uri "rhdf5" version)) (sha256 (base32 - "0pb04li55ysag30s7rap7nnivc0rqmgsmpj43kin0rxdabfn1w0k")))) + "1p6f5i6l44phl772a38x9cav2sya37bkqbkjzdc4pmyfzkv1j6hy")))) (build-system r-build-system) (arguments `(#:phases @@ -8177,14 +8443,14 @@ common bioinformatics tools.") (define-public r-chipseq (package (name "r-chipseq") - (version "1.24.0") + (version "1.26.0") (source (origin (method url-fetch) (uri (bioconductor-uri "chipseq" version)) (sha256 (base32 - "115ayp82rs99iaswrx45skw1i5iacgwzz5k8rzijbp5qic0554n0")))) + "1hahyqiwb2ch8214xqpw0c3jpiwkmyf3dwz0xc87jx6cdnzipj3i")))) (build-system r-build-system) (propagated-inputs `(("r-biocgenerics" ,r-biocgenerics) @@ -8228,14 +8494,14 @@ GenomicRanges Bioconductor package.") (define-public r-copywriter (package (name "r-copywriter") - (version "2.6.0") + (version "2.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "CopywriteR" version)) (sha256 (base32 - "1bwwnsyk7cpgwkagsnn5mv6fv233b0rkhjvbadrh70h8m4anawfj")))) + "183nmrqmdf9syqljslvwv7mhs9ar5xizzq98imgsc80q0m25ncjf")))) (properties `((upstream-name . "CopywriteR"))) (build-system r-build-system) (propagated-inputs @@ -8268,14 +8534,14 @@ number detection tools.") (define-public r-sva (package (name "r-sva") - (version "3.22.0") + (version "3.24.0") (source (origin (method url-fetch) (uri (bioconductor-uri "sva" version)) (sha256 (base32 - "1wc1fjm6dzlsqqagm43y57w8jh8nsh0r0m8z1p6ximcb5gxqh7hn")))) + "04pxl61iyc845wmqca1qv8kbb8zcp0qp72zgvgki3zzmrph9a362")))) (build-system r-build-system) (propagated-inputs `(("r-genefilter" ,r-genefilter) @@ -8295,14 +8561,14 @@ unmodeled, or latent sources of noise.") (define-public r-seqminer (package (name "r-seqminer") - (version "5.3") + (version "5.9") (source (origin (method url-fetch) (uri (cran-uri "seqminer" version)) (sha256 (base32 - "0y0gc5lws3hdxasjb84m532ics6imb7qg9sl1zy62h503jh4j9gw")))) + "0sfkxrc9gy5a8fadzyzfzh7l5grasm8cj6cd2nnpv85ws6mqr6qd")))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) @@ -8349,14 +8615,14 @@ trait.") (define-public r-maldiquant (package (name "r-maldiquant") - (version "1.16") + (version "1.16.2") (source (origin (method url-fetch) (uri (cran-uri "MALDIquant" version)) (sha256 (base32 - "067xbmy10mpsvmv77g62chd7wwhdhcfn5hmp5fisbnz2h5rq0q60")))) + "0z5srzsfgsgi4bssr4chls4ry6d18y2g9143znqmraylppwrrqzr")))) (properties `((upstream-name . "MALDIquant"))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/MALDIquant") @@ -8375,14 +8641,14 @@ as allowing spectra with different resolutions.") (define-public r-protgenerics (package (name "r-protgenerics") - (version "1.6.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (bioconductor-uri "ProtGenerics" version)) (sha256 (base32 - "0hb3vrrvfx6lcfalmjxm8dmigfmi5nba0pzjfgsrzd35c8mbfc6f")))) + "08idb3rvxn4fl7rd66jasyqz47cb76dbc3968r1g26jr2ci3w1pl")))) (properties `((upstream-name . "ProtGenerics"))) (build-system r-build-system) (home-page "https://github.com/lgatto/ProtGenerics") @@ -8395,14 +8661,14 @@ proteomics packages.") (define-public r-mzr (package (name "r-mzr") - (version "2.8.1") + (version "2.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "mzR" version)) (sha256 (base32 - "0ipmhg6l3pf648rdx5g2ha7l5ppd3cja6afxhdw76x8ga3633x0r")))) + "1zir46h320n2vbrky6q3m8l221f3wdjlfsnx4ak9xca5min24xm7")))) (properties `((upstream-name . "mzR"))) (build-system r-build-system) (inputs @@ -8427,14 +8693,14 @@ previously been used in XCMS.") (define-public r-affyio (package (name "r-affyio") - (version "1.44.0") + (version "1.46.0") (source (origin (method url-fetch) (uri (bioconductor-uri "affyio" version)) (sha256 (base32 - "1svsl4mpk06xm505pap913x69ywks99262krag8y4ygpllj7dfyy")))) + "13w6al9296q916w0w6ngbsk25b21ahla1b6n40fcqhbvhyfii6sj")))) (build-system r-build-system) (propagated-inputs `(("r-zlibbioc" ,r-zlibbioc))) @@ -8451,14 +8717,14 @@ CDF file formats.") (define-public r-affy (package (name "r-affy") - (version "1.52.0") + (version "1.54.0") (source (origin (method url-fetch) (uri (bioconductor-uri "affy" version)) (sha256 (base32 - "1snq71ligf0wvaxa6zfrl13ydw0zfhspmhdyfk8q3ba3np4cz344")))) + "0azwg2qxzgflr1rjvbdln5i5rbcr9gs36kqlacd9cwl1szb9ad3m")))) (build-system r-build-system) (propagated-inputs `(("r-affyio" ,r-affyio) @@ -8477,19 +8743,20 @@ analysis.") (define-public r-vsn (package (name "r-vsn") - (version "3.42.3") + (version "3.44.0") (source (origin (method url-fetch) (uri (bioconductor-uri "vsn" version)) (sha256 (base32 - "0mgl0azys2g90simf8wx6jdwd7gyg3m4pf12n6w6507jixm2cg97")))) + "0qhg3a4sc62pfdxcpvmk831rk138xh4zx4f1s39jhxpqqhmr7jvk")))) (build-system r-build-system) (propagated-inputs `(("r-affy" ,r-affy) ("r-biobase" ,r-biobase) ("r-ggplot2" ,r-ggplot2) + ("r-hexbin" ,r-hexbin) ("r-lattice" ,r-lattice) ("r-limma" ,r-limma))) (home-page "http://bioconductor.org/packages/release/bioc/html/vsn.html") @@ -8511,14 +8778,14 @@ and specific in detecting differential transcription.") (define-public r-mzid (package (name "r-mzid") - (version "1.12.0") + (version "1.14.0") (source (origin (method url-fetch) (uri (bioconductor-uri "mzID" version)) (sha256 (base32 - "1zn896cpfvqp1qmq5c4vcj933hb8rxwb6gkck1wqvr7393rpqy1q")))) + "11xnild02jz24vbsfy92lb7jlqqwnrswg66a7r4rsw8d2ibrbk33")))) (properties `((upstream-name . "mzID"))) (build-system r-build-system) (propagated-inputs @@ -8541,14 +8808,14 @@ specific parser.") (define-public r-pcamethods (package (name "r-pcamethods") - (version "1.66.0") + (version "1.68.0") (source (origin (method url-fetch) (uri (bioconductor-uri "pcaMethods" version)) (sha256 (base32 - "18mawhxw57pgpn87qha4mwki24gqja7wpqha8q496476vyap11xw")))) + "0c4lphqyzj577ws4s172391cgv00s5nhy152zp18k2k4diyhq6n0")))) (properties `((upstream-name . "pcaMethods"))) (build-system r-build-system) (propagated-inputs @@ -8571,14 +8838,14 @@ structure (pcaRes) to provide a common interface to the PCA results.") (define-public r-msnbase (package (name "r-msnbase") - (version "2.0.2") + (version "2.2.0") (source (origin (method url-fetch) (uri (bioconductor-uri "MSnbase" version)) (sha256 (base32 - "0jjjs29dcwsjaxzfqxy98ycpg3rwxzzchkj77my3cjgdc00sm66n")))) + "1n9bbdlp8d8bx2mqby0c4yylz1yil42scbkxqgyrfr9s5sn6dqff")))) (properties `((upstream-name . "MSnbase"))) (build-system r-build-system) (propagated-inputs @@ -8612,14 +8879,14 @@ of mass spectrometry based proteomics data.") (define-public r-msnid (package (name "r-msnid") - (version "1.8.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (bioconductor-uri "MSnID" version)) (sha256 (base32 - "0fkk3za39cxi0jyxmagmycjdslr2xf6vg3ylz14jyffqi0blw9d5")))) + "0pjwargi5lif8q53fd43ql67p3yk9w10jychafd9qgbaw5k3f68k")))) (properties `((upstream-name . "MSnID"))) (build-system r-build-system) (propagated-inputs @@ -8727,6 +8994,102 @@ algorithms; density clustering, hierarchical clustering, k-means, and the discovery of differentially expressed genes and markers.") (license license:gpl3)))) +(define-public r-aroma-light + (package + (name "r-aroma-light") + (version "3.6.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "aroma.light" version)) + (sha256 + (base32 + "10snykmmx36qaymyf5s1n1km8hsscyzpykcpf0mzsrcv8ml9rp8a")))) + (properties `((upstream-name . "aroma.light"))) + (build-system r-build-system) + (propagated-inputs + `(("r-matrixstats" ,r-matrixstats) + ("r-r-methodss3" ,r-r-methodss3) + ("r-r-oo" ,r-r-oo) + ("r-r-utils" ,r-r-utils))) + (home-page "https://github.com/HenrikBengtsson/aroma.light") + (synopsis "Methods for normalization and visualization of microarray data") + (description + "This package provides methods for microarray analysis that take basic +data types such as matrices and lists of vectors. These methods can be used +standalone, be utilized in other packages, or be wrapped up in higher-level +classes.") + (license license:gpl2+))) + +(define-public r-deseq + (package + (name "r-deseq") + (version "1.28.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "DESeq" version)) + (sha256 + (base32 + "0j3dgcxd64m9qknmlcbdzvg4xhp981xd6nbwsvnqjfn6yypslgyw")))) + (properties `((upstream-name . "DESeq"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-genefilter" ,r-genefilter) + ("r-geneplotter" ,r-geneplotter) + ("r-lattice" ,r-lattice) + ("r-locfit" ,r-locfit) + ("r-mass" ,r-mass) + ("r-rcolorbrewer" ,r-rcolorbrewer))) + (home-page "http://www-huber.embl.de/users/anders/DESeq") + (synopsis "Differential gene expression analysis") + (description + "This package provides tools for estimating variance-mean dependence in +count data from high-throughput genetic sequencing assays and for testing for +differential expression based on a model using the negative binomial +distribution.") + (license license:gpl3+))) + +(define-public r-edaseq + (package + (name "r-edaseq") + (version "2.10.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "EDASeq" version)) + (sha256 + (base32 + "0f25dfc8hdii9fjm3bf89vy9jkxv23sa62fkcga5b4gkipwrvm9a")))) + (properties `((upstream-name . "EDASeq"))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-aroma-light" ,r-aroma-light) + ("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biomart" ,r-biomart) + ("r-biostrings" ,r-biostrings) + ("r-deseq" ,r-deseq) + ("r-genomicfeatures" ,r-genomicfeatures) + ("r-genomicranges" ,r-genomicranges) + ("r-iranges" ,r-iranges) + ("r-rsamtools" ,r-rsamtools) + ("r-shortread" ,r-shortread))) + (home-page "https://github.com/drisso/EDASeq") + (synopsis "Exploratory data analysis and normalization for RNA-Seq") + (description + "This package provides support for numerical and graphical summaries of +RNA-Seq genomic read data. Provided within-lane normalization procedures to +adjust for GC-content effect (or other gene-level effects) on read counts: +loess robust local regression, global-scaling, and full-quantile +normalization. Between-lane normalization procedures to adjust for +distributional differences between lanes (e.g., sequencing depth): +global-scaling and full-quantile normalization.") + (license license:artistic2.0))) + (define htslib-for-sambamba (let ((commit "2f3c3ea7b301f9b45737a793c0b2dcf0240e5ee5")) (package diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 572186bea7..396368379f 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -63,17 +63,13 @@ (define-public grub (package (name "grub") - (version "2.02rc1") + (version "2.02") (source (origin (method url-fetch) - (uri (string-append - "ftp://alpha.gnu.org/gnu/grub/grub-" - "2.02~rc1" - ".tar.xz")) - (file-name (string-append name "-" version ".tar.xz")) + (uri (string-append "mirror://gnu/grub/grub-" version ".tar.xz")) (sha256 (base32 - "0y02v19x9sb5jvj740f604vvi5j1rx8pily1jk0l64bdp7lkjlj4")))) + "03vvdfhdmf16121v7xs8is2krwnv15wpkhkf16a4yf8nsfc3f2w1")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index 048fe26f1a..f43decc96e 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -179,6 +179,7 @@ successful, or false to signal an error." ((string=? system "avr") "no-ld.so") ((string=? system "propeller-elf") "no-ld.so") ((string=? system "i686-mingw") "no-ld.so") + ((string=? system "vc4-elf") "no-ld.so") (else (error "dynamic linker name not known for this system" system)))) diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm new file mode 100644 index 0000000000..66f46433f9 --- /dev/null +++ b/gnu/packages/build-tools.scm @@ -0,0 +1,92 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages build-tools) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (gnu packages) + #:use-module (gnu packages python) + #:use-module (gnu packages ninja) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python)) + +(define-public bam + (package + (name "bam") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (string-append "http://github.com/downloads/matricks/" + "bam/bam-" version ".tar.bz2")) + (sha256 + (base32 + "0z90wvyd4nfl7mybdrv9dsd4caaikc6fxw801b72gqi1m9q0c0sn")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (zero? (system* "bash" "make_unix.sh")))) + (replace 'check + (lambda _ + (zero? (system* "python" "scripts/test.py")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (install-file "bam" bin) + #t)))))) + (native-inputs + `(("python" ,python-2))) + (home-page "https://matricks.github.io/bam/") + (synopsis "Fast and flexible build system") + (description "Bam is a fast and flexible build system. Bam uses Lua to +describe the build process. It takes its inspiration for the script files +from scons. While scons focuses on being 100% correct when building, bam +makes a few sacrifices to acquire fast full and incremental build times.") + (license license:bsd-3))) + +(define-public meson + (package + (name "meson") + (version "0.40.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mesonbuild/meson/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0yl6iryh89nn6hzhwv7kg16ki1chh9h0x1yk1y130h87iq42a35r")))) + (build-system python-build-system) + (inputs `(("ninja", ninja))) + (home-page "https://mesonbuild.com/") + (synopsis "Build system designed to be fast and user-friendly") + (description + "The Meson build system is focused on user-friendliness and speed. +It can compile code written in C, C++, Fortran, Java, Rust, and other +languages. Meson provides features comparable to those of the +Autoconf/Automake/make combo. Build specifications, also known as @dfn{Meson +files}, are written in a custom domain-specific language (DSL) that resembles +Python.") + (license license:asl2.0))) diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 000b2dd62f..b022c0efa7 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -85,13 +85,13 @@ data units.") (define-public khal (package (name "khal") - (version "0.9.3") + (version "0.9.5") (source (origin (method url-fetch) (uri (pypi-uri "khal" version)) (sha256 (base32 - "1iva6cw2x3p2jzjj6bsyx7lc7yxin4fsd37j9c96j07x16p4imyl")))) + "0fvv0kjym9q8v20zbpr5m8ig65b8hva4p0c935qsdvgdni68jidr")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 7e86753abe..15329b3109 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +27,7 @@ (define-module (gnu packages cdrom) #:use-module (guix download) #:use-module (guix packages) - #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+)) + #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+ cddl1.0)) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) @@ -36,19 +37,29 @@ #:use-module (gnu packages audio) #:use-module (gnu packages bison) #:use-module (gnu packages compression) + #:use-module (gnu packages zip) #:use-module (gnu packages flex) + #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) + #:use-module (gnu packages docbook) + #:use-module (gnu packages xml) #:use-module (gnu packages gtk) #:use-module (gnu packages glib) #:use-module (gnu packages man) + #:use-module (gnu packages m4) #:use-module (gnu packages mp3) #:use-module (gnu packages ncurses) #:use-module (gnu packages elf) + #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages readline) #:use-module (gnu packages base) #:use-module (gnu packages perl) #:use-module (gnu packages python) + #:use-module (gnu packages image) + #:use-module (gnu packages photo) + #:use-module (gnu packages video) #:use-module (gnu packages wget) #:use-module (gnu packages xiph)) @@ -197,6 +208,104 @@ extra-robust data verification, synchronization, error handling and scratch reconstruction capability.") (license gpl2))) ; libraries under lgpl2.1 +(define-public cdrtools + (package + (name "cdrtools") + (version "3.01") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/cdrtools/cdrtools-" version ".tar.bz2")) + (sha256 + (base32 + "03w6ypsmwwy4d7vh6zgwpc60v541vc5ywp8bdb758hbc4yv2wa7d")) + (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch")))) + (build-system gnu-build-system) + ;; XXX cdrtools bundles a modified, relicensed early version of cdparanoia. + (inputs + `(("linux-headers" ,linux-libre-headers))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'set-linux-headers + (lambda _ + (substitute* "autoconf/configure" + (("/usr/src/linux") + (assoc-ref %build-inputs "linux-headers"))) + #t)) + (add-before 'build 'substitute-dirs + (lambda _ + (substitute* (append (find-files "DEFAULTS" "^Defaults\\.") + (find-files "DEFAULTS_ENG" "^Defaults\\.") + (find-files "TEMPLATES" "^Defaults\\.")) + (("/opt/schily") (assoc-ref %outputs "out"))) + #t)) + (replace 'build + (lambda _ + (zero? + (system* "make" "CONFIG_SHELL=sh" "CCOM=gcc" "RM=rm")))) + (replace 'install + (lambda _ + (zero? + (system* "make" + "RM=rm" "LN=ln" "SYMLINK=ln -s" + (string-append "INS_BASE=" (assoc-ref %outputs "out")) + (string-append "INS_RBASE=" (assoc-ref %outputs "out")) + "install" ))))) + #:tests? #f)) ; no tests + (synopsis "Command line utilities to manipulate and burn CD/DVD/BD images") + (description "cdrtools is a collection of command line utilities to create +CD's, DVD's or Blue Ray discs. The most important components are +@command{cdrecord}, a burning program, @command{cdda2wav}, a CD audio ripper +which uses libparanoia, and @command{mkisofs}, which can create various disc +images.") + (home-page "http://cdrtools.sourceforge.net/private/cdrecord.html") + + ;; mkisofs is GPL, the other programs are CDDL. + (license (list cddl1.0 gpl2)))) + +(define-public dvd+rw-tools + (package + (name "dvd+rw-tools") + (version "7.1") + (source (origin + (method url-fetch) + (uri (string-append + "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-" + version ".tar.gz")) + (sha256 + (base32 + "1jkjvvnjcyxpql97xjjx0kwvy70kxpiznr2zpjy2hhci5s10zmpq")) + (patches (search-patches "dvd+rw-tools-add-include.patch")))) + (build-system gnu-build-system) + (inputs + `(("cdrtools" ,cdrtools))) + (native-inputs + `(("m4" ,m4))) + (arguments + `(#:tests? #f ; No tests. + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ (setenv "prefix" (assoc-ref %outputs "out")) #t)) + (add-before 'build 'embed-mkisofs + (lambda* (#:key inputs #:allow-other-keys) + ;; We use sed --in-place because substitute* cannot handle the + ;; character encoding used by growisofs.c. + (zero? (system* "sed" "-i" "-e" + (string-append + "s,\"mkisofs\"," + "\"" (which "mkisofs") "\",") + "growisofs.c"))))))) + (home-page "http://fy.chalmers.se/~appro/linux/DVD+RW/") + (synopsis "DVD and Blu-ray Disc burning tools") + (description "dvd+rw-tools, mostly known for its command +@command{growisofs}, is a collection of DVD and Blu-ray Disc burning tools. +It requires another program, such as @command{mkisofs}, @command{genisoimage}, +or @command{xorrisofs} to create ISO 9660 images.") + (license gpl2))) + (define-public dvdisaster (package (name "dvdisaster") @@ -238,6 +347,70 @@ depend on the file system of the medium. The maximum error correction capacity is user-selectable.") (license gpl2+))) +(define-public dvdstyler + (package + (name "dvdstyler") + (version "3.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/dvdstyler/dvdstyler/" + version "/DVDStyler-" version ".tar.bz2")) + (sha256 + (base32 + "1j432kszmwmsd3nz398h5514dbm5vsrn4rr3iil72ckjj1h3i00q")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list (string-append "XMLTO=" + (assoc-ref %build-inputs "xmlto") + "/bin/xmlto" + " --searchpath " + (assoc-ref %build-inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-1.79.1/htmlhelp:" + (assoc-ref %build-inputs "docbook-xml") + "/xml/dtd/docbook")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs "out") "/bin/dvdstyler") + `("PATH" ":" prefix + (,(string-join + (map (lambda (in) (string-append (assoc-ref inputs in) "/bin")) + '("cdrtools" "dvdauthor" "dvd+rw-tools" "ffmpeg")) + ":")))) + #t))) + #:tests? #f)) ; No tests. + (inputs ; TODO package bundled wxvillalib + `(("wxwidgets" ,wxwidgets-3.1) + ("wssvg" ,wxsvg) + ("dbus" ,dbus) + ("cdrtools" ,cdrtools) + ("dvd+rw-tools" ,dvd+rw-tools) + ("dvdauthor" ,dvdauthor) + ("eudev" ,eudev) + ("fontconfig" ,fontconfig) + ("libexif" ,libexif) + ("libjpeg" ,libjpeg) + ("ffmpeg" ,ffmpeg))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("flex" ,flex) + ("python" ,python-2) + ("xmlto" ,xmlto) + ("gettext" ,gnu-gettext) + ("docbook-xml" ,docbook-xml) + ("docbook-xsl" ,docbook-xsl) + ("zip" ,zip))) + (synopsis "DVD authoring application") + (description "DVDStyler is a DVD authoring application which allows users +to burn video files in many formats to DVD discs, complete with individually +designed menus. It can be used to create professional-looking DVD's with +custom buttons, backgrounds and animations, from within a user-friendly +graphical interface.") + (home-page "https://www.dvdstyler.org") + (license gpl2))) + (define-public libcue (package (name "libcue") diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm index 7f5c5b793f..85a8badc55 100644 --- a/gnu/packages/certs.scm +++ b/gnu/packages/certs.scm @@ -74,7 +74,7 @@ (define-public nss-certs (package (name "nss-certs") - (version "3.29.3") + (version "3.30.2") (source (origin (method url-fetch) (uri (let ((version-with-underscores @@ -85,7 +85,7 @@ "nss-" version ".tar.gz"))) (sha256 (base32 - "1sz1r2iml9bhd4iqiqz75gii855a25895vpy9scjky0y4lqwrp9m")))) + "096frzvyp3z257x84rxknscfgsbavzh2a0gyibx7kvmw4vzpfjhd")))) (build-system gnu-build-system) (outputs '("out")) (native-inputs diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 372f1c4fea..ea91200a65 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -180,13 +181,13 @@ format.") (define-public cppcheck (package (name "cppcheck") - (version "1.77") + (version "1.78") (source (origin (method url-fetch) (uri (string-append "https://github.com/danmar/cppcheck/archive/" version ".tar.gz")) (sha256 - (base32 "1fn26p0xvfrdbhxjhy6aqhkk63n3fvrdb2ygcn9wg4vaandhmbkn")) + (base32 "1dnizw0rfj6faqgnmg8qh6njr9q89j8brhba7qmx2i47vl0qj11i")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (home-page "http://cppcheck.sourceforge.net") diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index ae91464a18..c26d02f175 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -187,23 +187,28 @@ their dependencies.") (license l:gpl3+)))) (define-public cuirass - (let ((commit "8c811abb3174b44601b8996a1fe1718f37d7bd14") - (revision "5")) + (let ((commit "870e8d6ad3415ac61c52e57095fcc6164023a0fc") + (revision "6")) (package (name "cuirass") (version (string-append "0.0.1-" revision "." (string-take commit 7))) (source (origin (method git-fetch) (uri (git-reference - (url "https://notabug.org/mthl/cuirass") + (url "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") (commit commit))) (file-name (string-append name "-" version)) (sha256 (base32 - "0kz2ys01xlmxagsfr9qf3p212vm31wfl76rvxa7ii5804aidlz5n")))) + "0lp5a5p42k7lml15lbmmd7az9i0gw5kips3sh3awd2z79h0w2knw")))) (build-system gnu-build-system) (arguments - '(#:phases + '(#:modules ((guix build utils) + (guix build gnu-build-system) + (ice-9 rdelim) + (ice-9 popen)) + + #:phases (modify-phases %standard-phases (add-after 'unpack 'disable-repo-tests (λ _ @@ -221,9 +226,17 @@ their dependencies.") (sqlite (assoc-ref inputs "guile-sqlite3")) (git (assoc-ref inputs "git")) (guix (assoc-ref inputs "guix")) - (mods (string-append json "/share/guile/site/2.0:" - sqlite "/share/guile/site/2.0:" - guix "/share/guile/site/2.0"))) + (guile (assoc-ref %build-inputs "guile")) + (effective (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (mods (string-append json "/share/guile/site/" + effective ":" + sqlite "/share/guile/site/" + effective ":" + guix "/share/guile/site/" + effective))) ;; Make sure 'cuirass' can find the 'git' and 'evaluate' ;; commands, as well as the relevant Guile modules. (wrap-program (string-append out "/bin/cuirass") @@ -233,7 +246,7 @@ their dependencies.") `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods))) #t)))))) (inputs - `(("guile" ,guile-2.0) + `(("guile" ,guile-2.2) ("guile-json" ,guile-json) ("guile-sqlite3" ,guile-sqlite3) ("guix" ,guix) @@ -247,5 +260,5 @@ their dependencies.") (description "Cuirass is a continuous integration tool using GNU Guix. It is intended as a replacement for Hydra.") - (home-page "https://notabug.org/mthl/cuirass") + (home-page "https://www.gnu.org/software/guix/") (license l:gpl3+)))) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index baabb16ac6..93fec0c010 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -22,6 +22,7 @@ (define-module (gnu packages commencement) #:use-module ((guix licenses) #:select (gpl3+ lgpl2.0+ public-domain)) + #:use-module (gnu packages) #:use-module (gnu packages bootstrap) #:use-module (gnu packages base) #:use-module (gnu packages bash) @@ -509,7 +510,14 @@ the bootstrap environment." (propagated-inputs `(("kernel-headers" ,(kernel-headers-boot0)))) (native-inputs `(("texinfo" ,texinfo-boot0) - ("perl" ,perl-boot0))) + ("perl" ,perl-boot0) + ;; Apply this patch only on i686 to avoid a full rebuild. + ;; TODO: Remove in the next update cycle. + ,@(if (string-prefix? "i686" (or (%current-target-system) + (%current-system))) + `(("glibc-memchr-overflow-i686.patch" + ,(search-patch "glibc-memchr-overflow-i686.patch"))) + '()))) (inputs `(;; The boot inputs. That includes the bootstrap libc. We don't want ;; it in $CPATH, hence the 'pre-configure' phase above. @@ -1015,4 +1023,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") (define-public gcc-toolchain-6 (gcc-toolchain gcc-6)) +(define-public gcc-toolchain-7 + (gcc-toolchain gcc-7)) + ;;; commencement.scm ends here diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 4908c9cccf..2b576743d6 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015 Leo Famulari <leo@famulari.name> +;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Jeff Mickey <j@codemac.net> ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> @@ -605,7 +605,7 @@ decompression of some loosely related file formats used by Microsoft.") (synopsis "Low-level interface to bzip2 compression library") (description "This module provides a Perl interface to the bzip2 compression library.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-compress-raw-zlib (package @@ -640,7 +640,7 @@ GZIP_OS_CODE = AUTO_DETECT" (synopsis "Low-level interface to zlib compression library") (description "This module provides a Perl interface to the zlib compression library.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-io-compress (package @@ -662,19 +662,21 @@ compression library.") (synopsis "IO Interface to compressed files/buffers") (description "IO-Compress provides a Perl interface to allow reading and writing of compressed data created with the zlib and bzip2 libraries.") - (license (package-license perl)))) + (license license:perl-license))) (define-public lz4 (package (name "lz4") - (version "1.7.4.2") + (version "1.7.5") (source (origin (method url-fetch) - (uri (string-append "https://github.com/Cyan4973/lz4/archive/" + (uri (string-append "https://github.com/lz4/lz4/archive/" "v" version ".tar.gz")) + (patches (search-patches "lz4-fix-test-failures.patch")) (sha256 - (base32 "0l39bymif15rmmfz7h6wvrr853rix4wj8wbqq8z8fm49xa7gx9fb")) + (base32 + "0zkykqqjfa1q3ji0qmb1ml3l9063qqfh99agyj3cnb02cg6wm401")) (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (native-inputs `(("valgrind" ,valgrind))) ; for tests @@ -685,7 +687,7 @@ writing of compressed data created with the zlib and bzip2 libraries.") (string-append "PREFIX=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script - (home-page "https://github.com/Cyan4973/lz4") + (home-page "https://github.com/lz4/lz4") (synopsis "Compression algorithm focused on speed") (description "LZ4 is a lossless compression algorithm, providing compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an @@ -1172,7 +1174,7 @@ RAR archives.") (define-public zstd (package (name "zstd") - (version "1.1.4") + (version "1.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/facebook/zstd/archive/v" @@ -1180,7 +1182,7 @@ RAR archives.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1yxr1y83gphljxaqhwvxbldy1ivx81x93rngiv5l94rmdrc2pbka")) + "1yyb8z03z9rw74k1d9dygcqxhx76717xq29agz57d0k3lf9lazja")) (modules '((guix build utils))) (snippet ;; Remove non-free source files. diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm index 0fced0be79..b3d62d6f6f 100644 --- a/gnu/packages/connman.scm +++ b/gnu/packages/connman.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 Mathieu OTHACEHE <m.othacehe@gmail.com> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. @@ -41,7 +41,7 @@ (define-public connman (package (name "connman") - (version "1.33") + (version "1.34") (source (origin (method url-fetch) @@ -49,7 +49,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "187mknq2i907gf8dz0i79359gn1qc9mryvqkcgb280d7dw1ld2dw")))) + "07n71wcy1c4cc01ca4dl9k1jpdqr5nsyr33dqf7k87wwfa681859")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -135,7 +135,7 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.") (define-public cmst (package (name "cmst") - (version "2016.10.03") + (version "2017.03.18") (source (origin (method url-fetch) @@ -143,7 +143,7 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.") "https://github.com/andrew-bibb/cmst/releases/download/cmst-" version "/cmst-" version ".tar.gz")) (sha256 - (base32 "1xpn4sqnxzpsjjwh9hva9sn55xlryiz2f2mwpyj2l31janj7a082")))) + (base32 "16g9byxr1rkmrnzi6sjplpmkr8h6pqj7418jz30czqviw5qlkqwl")))) (inputs `(("qt" ,qt))) (native-inputs diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index fd2b5a36b7..856308afe8 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -56,7 +56,7 @@ (define-public libsodium (package (name "libsodium") - (version "1.0.11") + (version "1.0.12") (source (origin (method url-fetch) (uri (list (string-append @@ -67,7 +67,7 @@ "releases/old/libsodium-" version ".tar.gz"))) (sha256 (base32 - "0rf7z6bgpnf8lyz8sph4h43fbb28pmj4dgybf0hsxxj97kdljid1")))) + "159givfh5jgli3cifxgssivkklfyfq6lzyjgrx8h4jx5ncdqyr5q")))) (build-system gnu-build-system) (synopsis "Portable NaCl-based crypto library") (description diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm index 900b004a50..9df26edc77 100644 --- a/gnu/packages/cryptsetup.scm +++ b/gnu/packages/cryptsetup.scm @@ -32,7 +32,7 @@ (define-public cryptsetup (package (name "cryptsetup") - (version "1.7.4") + (version "1.7.5") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/cryptsetup/v" @@ -40,7 +40,7 @@ "/" name "-" version ".tar.xz")) (sha256 (base32 - "05m0ric8anrkl62smk8rafgi30j9jrxw20qzss9gnf4sywz8kkvw")))) + "1gail831j826lmpdx2gsc83lp3br6wfnwh3vqwxaa1nn1lfwsc1b")))) (build-system gnu-build-system) (inputs `(("libgcrypt" ,libgcrypt) @@ -81,8 +81,8 @@ files). This assumes LIBRARY uses Libtool." '(#:configure-flags '("--disable-shared" "--enable-static-cryptsetup" - ;; 'libdevmapper.a' pulls in libpthread and libudev. - "LIBS=-ludev -pthread") + ;; 'libdevmapper.a' pulls in libpthread, libudev and libm. + "LIBS=-ludev -pthread -lm") #:allowed-references () ;this should be self-contained diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index dc070fff83..accfe410ba 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,7 @@ ;; Delay to avoid module circularity problems. (define ghostscript/cups (delay - (package (inherit ghostscript) + (package/inherit ghostscript (name "ghostscript-with-cups") (inputs `(("cups" ,cups-minimal) ,@(package-inputs ghostscript)))))) diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index d0f4bbf295..420b9bacc1 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -40,14 +40,14 @@ (define-public curl (package (name "curl") - (version "7.53.1") + (version "7.54.0") (source (origin (method url-fetch) (uri (string-append "https://curl.haxx.se/download/curl-" version ".tar.lzma")) (sha256 (base32 - "1qpm4qj5llr8f5bbl185gpjqknj47nzhvxd8j1vm6asgk3sly4jb")))) + "02h7qhl8ynp75g1vcaw18ks0gp7nahvvkqck19pb1q0kkw1scsnd")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.2 MiB of man3 pages diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index d02366e9b2..6ff49efd6f 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> +;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -52,6 +53,7 @@ #:use-module (gnu packages jemalloc) #:use-module (gnu packages language) #:use-module (gnu packages linux) + #:use-module (gnu packages man) #:use-module (gnu packages ncurses) #:use-module (gnu packages parallel) #:use-module (gnu packages pcre) @@ -290,7 +292,7 @@ mapping from string keys to string values.") (define-public mysql (package (name "mysql") - (version "5.7.17") + (version "5.7.18") (source (origin (method url-fetch) (uri (list (string-append @@ -302,7 +304,7 @@ mapping from string keys to string values.") name "-" version ".tar.gz"))) (sha256 (base32 - "0lcn9cm36n14g22bcppq5vf4nxbrl3khvlsp9hsixqdfb3l27gyf")))) + "18m1mr55k9zmvnyqs0wr50csqsz3scs09fykh60wsml6c3np2p8b")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -370,7 +372,7 @@ Language.") (define-public mariadb (package (name "mariadb") - (version "10.1.22") + (version "10.1.23") (source (origin (method url-fetch) (uri (string-append "https://downloads.mariadb.org/f/" @@ -378,11 +380,20 @@ Language.") name "-" version ".tar.gz")) (sha256 (base32 - "1kk674mx2bf22yivvzv1al5gdg9kyxar47m282bylb6kg8p5gc5w")))) + "1gq08dj9skr0gli1nj7a8wl92w8lmmqy0sbxvkmy79dz4i713n2l")))) (build-system cmake-build-system) (arguments '(#:configure-flags '("-DBUILD_CONFIG=mysql_release" + ;; Linking with libarchive fails, like this: + + ;; ld: /gnu/store/...-libarchive-3.2.2/lib/libarchive.a(archive_entry.o): + ;; relocation R_X86_64_32 against `.bss' can not be used when + ;; making a shared object; recompile with -fPIC + + ;; For now, disable the features that that use libarchive (xtrabackup). + "-DWITH_LIBARCHIVE=OFF" + "-DDEFAULT_CHARSET=utf8" "-DDEFAULT_COLLATION=utf8_general_ci" "-DMYSQL_DATADIR=/var/lib/mysql" @@ -438,14 +449,14 @@ as a drop-in replacement of MySQL.") (define-public postgresql (package (name "postgresql") - (version "9.5.6") + (version "9.6.3") (source (origin (method url-fetch) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "0bz1b9r249ffjfvldaiah2g78ccwq30ddh8hdvlq61z26inmz7mv")))) + "1imrjp4vfslxj5rrvphcrrk21zv8kqw3gacmwradixh1d5rv6i8n")))) (build-system gnu-build-system) (arguments `(#:phases @@ -575,48 +586,51 @@ types are supported, as is encryption.") #t)))) (build-system gnu-build-system) (arguments - '(#:make-flags (list "CC=gcc" - ;; Make the resulting library position-independent so the - ;; static version can be included in shared objects. - "EXTRA_CXXFLAGS=-fPIC" + `(#:make-flags (list "CC=gcc" (string-append "INSTALL_PATH=" (assoc-ref %outputs "out"))) + ;; Many tests fail on 32-bit platforms. There are multiple reports about + ;; this upstream, but it's not going to be supported any time soon. + #:tests? (let ((system ,(or (%current-target-system) + (%current-system)))) + (or (string-prefix? "x86_64-linux" system) + (string-prefix? "aarch64-linux" system))) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-Makefile (lambda _ (substitute* "Makefile" (("build_tools/gnu_parallel") "parallel") + ;; Don't depend on the static library when installing. + (("install: install-static") + "install: install-shared") (("#!/bin/sh") (string-append "#!" (which "sh")))) #t)) (delete 'configure) + ;; The default target is only needed for tests and built on demand. + (delete 'build) + (add-before 'check 'disable-optimizations + (lambda _ + ;; Prevent the build from passing '-march=native' to the compiler. + (setenv "PORTABLE" "1") + #t)) (add-before 'check 'disable-failing-tests (lambda _ (substitute* "Makefile" + ;; This test fails with GCC-5 and is unmaintained. + ;; https://github.com/facebook/rocksdb/issues/2148 + (("^[[:blank:]]+spatial_db_test[[:blank:]]+\\\\") "\\") ;; These tests reliably fail due to "Too many open files". (("^[[:blank:]]+env_test[[:blank:]]+\\\\") "\\") (("^[[:blank:]]+persistent_cache_test[[:blank:]]+\\\\") "\\")) #t)) - (add-after - 'check 'build-release-libraries - ;; The 'check' target depends on the default target which is compiled - ;; with debug symbols. The 'install' target depends on shared and - ;; static release targets so we build them here for clarity. - ;; TODO: Add debug output. - (lambda* (#:key (make-flags '()) #:allow-other-keys) - ;; Prevent the build from adding machine-specific optimizations. - ;; This does not work if passed as a make flag... - (setenv "PORTABLE" "1") - (and (zero? (apply system* "make" "static_lib" make-flags)) - (zero? (apply system* "make" "shared_lib" make-flags))))) - (add-after 'install 'delete-static-library - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - (for-each (lambda (file) - (delete-file file)) - (find-files lib "\\.l?a$")) - #t)))))) + (add-after 'check 'build-release-libraries + ;; The default build target is a debug build for tests. The + ;; install target depends on "shared_lib" and "static_lib" + ;; targets for release builds so we build them here for clarity. + ;; TODO: Add debug output. + (lambda* (#:key (make-flags '()) #:allow-other-keys) + (zero? (apply system* "make" "shared_lib" make-flags))))))) (native-inputs `(("parallel" ,parallel) ("perl" ,perl) @@ -796,7 +810,7 @@ extremely small.") (synopsis "Database independent interface for Perl") (description "This package provides an database interface for Perl.") (home-page "http://search.cpan.org/dist/DBI") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbix-class (package @@ -850,7 +864,7 @@ still providing access to as many of the capabilities of the database as possible, including retrieving related records from multiple tables in a single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\", \"ORDER BY\" and \"HAVING\" support.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbix-class-cursor-cached (package @@ -875,7 +889,7 @@ single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\", (synopsis "Cursor with built-in caching support") (description "DBIx::Class::Cursor::Cached provides a cursor class with built-in caching support.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbix-class-introspectablem2m (package @@ -900,7 +914,7 @@ relationships are actually just a collection of convenience methods installed to bridge two relationships. This DBIx::Class component can be used to store all relevant information about these non-relationships so they can later be introspected and examined.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbix-class-schema-loader (package @@ -955,12 +969,12 @@ introspected and examined.") (description "DBIx::Class::Schema::Loader automates the definition of a DBIx::Class::Schema by scanning database table definitions and setting up the columns, primary keys, unique constraints and relationships.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbd-pg (package (name "perl-dbd-pg") - (version "3.5.1") + (version "3.5.3") (source (origin (method url-fetch) @@ -968,7 +982,7 @@ columns, primary keys, unique constraints and relationships.") "DBD-Pg-" version ".tar.gz")) (sha256 (base32 - "0z0kf1kjgbi5f6nr63i2fnrx7629d9lvxg1q8sficwb3zdf1ggzx")))) + "03m9w1cd0yyrbqwkwcl92j1cpmasmm69f3hwvcrlfsi5fnwsk63y")))) (build-system perl-build-system) (native-inputs `(("perl-dbi" ,perl-dbi))) @@ -979,7 +993,7 @@ columns, primary keys, unique constraints and relationships.") (synopsis "DBI PostgreSQL interface") (description "This package provides a PostgreSQL driver for the Perl5 @dfn{Database Interface} (DBI).") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbd-mysql (package @@ -1003,12 +1017,12 @@ columns, primary keys, unique constraints and relationships.") (synopsis "DBI MySQL interface") (description "This package provides a MySQL driver for the Perl5 @dfn{Database Interface} (DBI).") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-dbd-sqlite (package (name "perl-dbd-sqlite") - (version "1.52") + (version "1.54") (source (origin (method url-fetch) (uri (string-append @@ -1016,7 +1030,7 @@ columns, primary keys, unique constraints and relationships.") version ".tar.gz")) (sha256 (base32 - "0kimb2qr1rh07yylbbfybwcizpmy61ck667amypn4clmkfg0knm6")))) + "0sbj9lx9syzpknvjv8cz9jndg32qz775vy2prgq305npv3dsca9r")))) (build-system perl-build-system) (inputs `(("sqlite" ,sqlite))) (propagated-inputs `(("perl-dbi" ,perl-dbi))) @@ -1025,7 +1039,7 @@ columns, primary keys, unique constraints and relationships.") the entire thing in the distribution. So in order to get a fast transaction capable RDBMS working for your Perl project you simply have to install this module, and nothing else.") - (license (package-license perl)) + (license license:perl-license) (home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm"))) (define-public perl-sql-abstract @@ -1058,7 +1072,7 @@ been modified to make the SQL easier to generate from Perl data structures. The underlying idea is for this module to do what you mean, based on the data structures you provide it, so that you don't have to modify your code every time your data changes.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-sql-splitstatement (package @@ -1084,7 +1098,7 @@ time your data changes.") (synopsis "Split SQL code into atomic statements") (description "This module tries to split any SQL code, even including non-standard extensions, into the atomic statements it is composed of.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-sql-tokenizer (package @@ -1104,7 +1118,7 @@ non-standard extensions, into the atomic statements it is composed of.") (description "SQL::Tokenizer is a tokenizer for SQL queries. It does not claim to be a parser or query verifier. It just creates sane tokens from a valid SQL query.") - (license (package-license perl)))) + (license license:perl-license))) (define-public unixodbc (package @@ -1275,12 +1289,12 @@ more efficient access and storage of column subsets) and log-structured merge trees (LSM), for sustained throughput under random insert workloads.") (license license:gpl3) ; or GPL-2 ;; configure.ac: WiredTiger requires a 64-bit build. - (supported-systems '("x86_64-linux" "mips64el-linux")))) + (supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux")))) (define-public perl-db-file (package (name "perl-db-file") - (version "1.838") + (version "1.840") (source (origin (method url-fetch) @@ -1290,7 +1304,7 @@ trees (LSM), for sustained throughput under random insert workloads.") ".tar.gz")) (sha256 (base32 - "0yp5d5zr8dk9g6xdh7ygi5bq63q7nxvhd58dk2i3ki4nb7yv2yh9")))) + "1i5jz85z4hpx15lw6ix27pyvrf0ziyh4z33lii4d3wnhz83lg1mp")))) (build-system perl-build-system) (inputs `(("bdb" ,bdb))) (native-inputs `(("perl-test-pod" ,perl-test-pod))) @@ -1307,7 +1321,7 @@ trees (LSM), for sustained throughput under random insert workloads.") "Perl5 access to Berkeley DB version 1.x") (description "The DB::File module provides Perl bindings to the Berkeley DB version 1.x.") - (license (package-license perl)))) + (license license:perl-license))) (define-public lmdb (package @@ -1477,3 +1491,42 @@ for ODBC.") (define-public python2-pyodbc-c (package-with-python2 python-pyodbc-c)) + +(define-public mdbtools + (package + (name "mdbtools") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/brianb/mdbtools/archive/" + version ".tar.gz")) + (sha256 + (base32 + "05hbmxcq173kzb899gdi3bz2qcc1vi3n1qbbkwpsvrq7ggf11wyw")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (inputs + `(("glib" ,glib))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("txt2man" ,txt2man) + ("which" ,which))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-vfi"))))))) + (home-page "http://mdbtools.sourceforge.net/") + (synopsis "Read Microsoft Access databases") + (description "MDB Tools is a set of tools and applications to read the +proprietary MDB file format used in Microsoft's Access database package. This +includes programs to export schema and data from Microsoft's Access database +file format to other databases such as MySQL, Oracle, Sybase, PostgreSQL, +etc., and an SQL engine for performing simple SQL queries.") + (license (list license:lgpl2.0 + license:gpl2+)))) diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm index ef249b9659..79068a54d0 100644 --- a/gnu/packages/datastructures.scm +++ b/gnu/packages/datastructures.scm @@ -65,7 +65,7 @@ and heaps.") "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. +bits per entry. @code{dense_hash_map} is very fast, particularly 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 -- diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm index 7901e1c1d8..0bed55edd8 100644 --- a/gnu/packages/dav.scm +++ b/gnu/packages/dav.scm @@ -27,13 +27,13 @@ (define-public radicale (package (name "radicale") - (version "1.1.1") + (version "1.1.2") (source (origin (method url-fetch) (uri (pypi-uri "Radicale" version)) (sha256 (base32 - "1c5lv8qca21mndkx350wxv34qypqh6gb4rhzms4anr642clq3jg2")))) + "1g20p3998f46ywda7swv0py63wjbrhvk0nrafajlbb6wgzxjmqpb")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; The tests are not distributed in the PyPi release. diff --git a/gnu/packages/dillo.scm b/gnu/packages/dillo.scm deleted file mode 100644 index 6e0c4d17a9..0000000000 --- a/gnu/packages/dillo.scm +++ /dev/null @@ -1,63 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages dillo) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (gnu packages) - #:use-module (gnu packages compression) - #:use-module (gnu packages fltk) - #:use-module (gnu packages fontutils) - #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages image) - #:use-module (gnu packages tls) - #:use-module (gnu packages xorg) - #:use-module (guix download) - #:use-module (guix build-system gnu)) - -(define-public dillo - (package - (name "dillo") - (version "3.0.5") - (source (origin - (method url-fetch) - (uri (string-append "http://www.dillo.org/download/" - name "-" version ".tar.bz2")) - (sha256 - (base32 - "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv")))) - (build-system gnu-build-system) - (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6"))) - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("fltk" ,fltk) - ("fontconfig" ,fontconfig) - ("libjpeg" ,libjpeg) - ("libpng" ,libpng) - ("libxcursor" ,libxcursor) - ("libxft" ,libxft) - ("libxi" ,libxi) - ("libxinerama" ,libxinerama) - ("openssl" ,openssl) - ("perl" ,perl) - ("zlib" ,zlib))) - (synopsis "Very small and fast graphical web browser") - (description "Dillo is a minimalistic web browser particularly intended for -older or slower computers and embedded systems.") - (home-page "http://www.dillo.org") - (license license:gpl3+))) diff --git a/gnu/packages/direct-connect.scm b/gnu/packages/direct-connect.scm new file mode 100644 index 0000000000..6796bf3bc8 --- /dev/null +++ b/gnu/packages/direct-connect.scm @@ -0,0 +1,82 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages direct-connect) + #:use-module (guix build-system python) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (gnu packages boost) + #:use-module (gnu packages compression) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages tls) + #:use-module (gnu packages version-control)) + +(define-public linuxdcpp + (package + (name "linuxdcpp") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-" + version ".tar.bz2")) + (sha256 + (base32 + "12i92hirmwryl1qy0n3jfrpziwzb82f61xca9jcjwyilx502f0b6")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:tests? #f ; no tests + #:phases + ;; TODO: Add scons-build-system and use it here. + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (mkdir-p out) + (zero? (system* "scons" (string-append "PREFIX=" out) + "-j" (number->string (parallel-job-count))))))) + (replace 'install + (lambda _ + (zero? (system* "scons" "install"))))))) + (inputs + `(("boost" ,boost) + ("bzip2" ,bzip2) + ("gtk+" ,gtk+-2) + ("libglade" ,libglade) + ("libnotify" ,libnotify) + ("openssl" ,openssl))) + (native-inputs + `(("bazaar" ,bazaar) + ("gettext-minimal" ,gettext-minimal) + ("pkg-config" ,pkg-config) + ("scons" ,scons))) + (home-page "https://launchpad.net/linuxdcpp/") + (synopsis "Direct Connect client") + (description "LinuxDC++ is a Direct Connect (DC) client. Direct Connect +is a peer-to-peer file-sharing protocol. Clients connect to a central hub +where they can chat or share files with one another. Users can view other +users' list of shared files or search the hub for files.") + (license license:gpl2+))) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 93895278d6..a087141a87 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -337,3 +338,46 @@ project to detect and manipulate partition tables. Optional file system tools permit managing file systems not included in libparted.") ;; The home page says GPLv2, but the source code says GPLv2+. (license license:gpl2+))) + + +(define-public f3 + (package + (name "f3") + (version "6.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/AltraMayor/f3/archive/" + "v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1mgbzc1swvgil45md1336j0aqkmkhwmpxical0ln5g09b2qxsanp")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'fix-makefile + (lambda _ + (substitute* "Makefile" + ;; Install without setting owner and group + (("\\$\\(INSTALL\\) -oroot -groot ") "$(INSTALL) ") + ;; also build and install experimental tools + (("^all: ") "all: $(EXPERIMENTAL_TARGETS) ") + (("^install: ") "install-all: ") + (("^install-experimental: ") "install: install-all ")) + #t))))) + (inputs + `(("eudev" ,eudev) + ("parted" ,parted))) + (home-page "http://oss.digirati.com.br/f3/") + (synopsis "Test real capacity of flash memory cards and such.") + (description "F3 (Fight Flash Fraud or Fight Fake Flash) tests the full +capacity of a flash card (flash drive, flash disk, pendrive). F3 writes to +the card and then checks if can read it. It will assure you haven't been sold +a card with a smaller capacity than stated.") + (license license:gpl3+))) diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 0a70fd737b..869d6239ef 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net> ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,19 +25,26 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gl) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages kde-frameworks) #: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 xdisorg) + #:use-module (gnu packages xfce) #:use-module (gnu packages xorg)) (define-public greenisland @@ -186,6 +195,107 @@ create smooth, animated user interfaces.") ;; QML files are MIT licensed and images are CC BY 3.0. (license (list license:gpl2+ license:expat license:cc-by3.0)))) +(define-public lightdm + (package + (name "lightdm") + (version "1.22.0") + (source (origin + (method url-fetch) + (uri (string-append "https://launchpad.net/lightdm/" + (version-major+minor version) "/" + version "/+download/lightdm-" + version ".tar.xz")) + (sha256 + (base32 + "0a5bvfl2h7r873al6q7c819h0kg564k9fh51rl6489z6lyvazfg4")))) + (build-system gnu-build-system) + (arguments + '(#:parallel-tests? #f ; fails when run in parallel + #:configure-flags + (list "--localstatedir=/var") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda _ + (substitute* "src/shared-data-manager.c" + (("/bin/rm") (which "rm"))) + (substitute* '("data/users.conf" + "common/user-list.c") + (("/bin/false") (which "false")) + (("/usr/sbin/nologin") (which "nologin"))) + (substitute* "src/seat.c" + (("/bin/sh") (which "sh"))) + #t)) + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "tests/Makefile.in" + (("test-sessions-gobject ") "") + ((" test-sessions-python ") " ")) + #t)) + (add-before 'check 'pre-check + ;; Run test-suite under a dbus session. + (lambda* (#:key inputs #:allow-other-keys) + (wrap-program "tests/src/test-python-greeter" + `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))) + `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))) + + ;; Avoid printing locale warnings, which trip up the text + ;; matching tests. + (unsetenv "LC_ALL") + #t))))) + (inputs + `(("audit" ,audit) + ("linux-pam" ,linux-pam) + ("util-linux" ,util-linux) ; for sbin/nologin + ("libgcrypt" ,libgcrypt) + ("libxcb" ,libxcb))) + (native-inputs + `(("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("itstool" ,itstool) + ("intltool" ,intltool) + ;; For tests + ("dbus" ,dbus) + ("python" ,python-2) + ("python-pygobject" ,python2-pygobject))) + ;; Required by liblightdm-gobject-1.pc. + (propagated-inputs + `(("glib" ,glib) + ("libx11" ,libx11) + ("libxklavier" ,libxklavier))) + (home-page "https://www.freedesktop.org/wiki/Software/LightDM/") + (synopsis "Lightweight display manager") + (description "The Light Display Manager (LightDM) is a cross-desktop +display manager which supports different greeters.") + (license license:gpl3+))) + +(define-public lightdm-gtk-greeter + (package + (name "lightdm-gtk-greeter") + (version "2.0.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://launchpad.net/lightdm-gtk-greeter/" + (version-major+minor version) "/" version + "/+download/lightdm-gtk-greeter-" version ".tar.gz")) + (sha256 + (base32 + "1436sdm83xqhxyr1rzqxhsl8if2xmidlvb341xcv6dv83lyxkrlf")))) + (build-system gnu-build-system) + (native-inputs + `(("exo" ,exo) + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("lightdm" ,lightdm) + ("gtk+" ,gtk+))) + (synopsis "GTK+ greeter for LightDM") + (home-page "https://launchpad.net/lightdm-gtk-greeter") + (description "This package provides a LightDM greeter implementation using +GTK+, lets you select a desktop session and log in to it.") + (license license:gpl3+))) + (define-public slim (package (name "slim") diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 185fbf8e62..356586e1bc 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,18 +25,19 @@ #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages base) + #:use-module (gnu packages databases) #:use-module (gnu packages python)) (define-public python-django (package (name "python-django") - (version "1.10.5") + (version "1.10.7") (source (origin (method url-fetch) (uri (pypi-uri "Django" version)) (sha256 (base32 - "12szjsmnfhh2yr54sfynyjr8vl0q9gb6qak3ayqcifcinrs97f0d")))) + "1f5hnn2dzfr5szk4yc47bs4kk2nmrayjcvgpqi2s4l13pjfpfgar")))) (build-system python-build-system) (arguments '(#:phases @@ -80,7 +82,8 @@ development and clean, pragmatic design. It provides many tools for building any Web site. Django focuses on automating as much as possible and adhering to the @dfn{don't repeat yourself} (DRY) principle.") (license license:bsd-3) - (properties `((python2-variant . ,(delay python2-django)))))) + (properties `((python2-variant . ,(delay python2-django)) + (cpe-name . "django"))))) (define-public python2-django (let ((base (package-with-python2 (strip-python2-variant python-django)))) @@ -126,13 +129,13 @@ with arguments to the field constructor.") (define-public python-pytest-django (package (name "python-pytest-django") - (version "2.9.1") + (version "3.1.2") (source (origin (method url-fetch) (uri (pypi-uri "pytest-django" version)) (sha256 (base32 - "1mmc7zsz3dlhs6sx4sppkj1vgshabi362r1a8b8wpj1qfximpqcb")))) + "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303")))) (build-system python-build-system) (arguments `(#:tests? #f ; FIXME: How to run tests? @@ -141,7 +144,7 @@ with arguments to the field constructor.") (add-after 'unpack 'patch-setuppy (lambda _ (substitute* "setup.py" - (("setuptools_scm==1.8.0") "setuptools_scm")) + (("setuptools_scm==1.11.1") "setuptools_scm")) #t))))) (native-inputs `(("python-django" ,python-django) @@ -188,3 +191,506 @@ them do this.") (define-public python2-django-filter (package-with-python2 python-django-filter)) + +(define-public python-django-allauth + (package + (name "python-django-allauth") + (version "0.30.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-allauth" version)) + (sha256 + (base32 + "1fslqc5qqb0b66yscvkyjwfv8cnbfx5nlkpnwimyb3pf1nc1w7r3")))) + (build-system python-build-system) + (propagated-inputs + `(("python-openid" ,python-openid) + ("python-requests" ,python-requests) + ("python-requests-oauthlib" ,python-requests-oauthlib))) + (native-inputs + `(("python-mock" ,python-mock))) + (inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/pennersr/django-allauth") + (synopsis "Set of Django applications addressing authentication") + (description + "Integrated set of Django applications addressing authentication, +registration, account management as well as 3rd party (social) +account authentication.") + (license license:expat))) + +(define-public python2-django-allauth + (package-with-python2 python-django-allauth)) + +(define-public python-django-gravatar2 + (package + (name "python-django-gravatar2") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-gravatar2" version)) + (sha256 + (base32 + "1v4qyj6kms321yw0z2g1kch6b2dskmv6fjd6sfxzwr4xshq9mccl")))) + (build-system python-build-system) + (inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/twaddington/django-gravatar") + (synopsis "Gravatar support for Django, improved version") + (description + "Essential Gravatar support for Django. Features helper methods, +templatetags and a full test suite.") + (license license:expat))) + +(define-public python2-django-gravatar2 + (package-with-python2 python-django-gravatar2)) + +(define-public python-django-assets + (package + (name "python-django-assets") + (version "0.12") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-assets" version)) + (sha256 + (base32 + "0y0007fvkn1rdlj2g0y6k1cnkx53kxab3g8i85i0rd58k335p365")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda _ + (begin + ;; https://github.com/miracle2k/django-assets/issues/87 + (substitute* "tests/__init__.py" + (("settings.configure.*") + (string-append + "settings.configure(\n" + "INSTALLED_APPS=['django_assets', " + "'django.contrib.staticfiles'],\n" + "TEMPLATES=[{'BACKEND': " + "'django.template.backends.django.DjangoTemplates'}],\n" + ")\n"))) + ;; These tests fail + (substitute* "tests/test_django.py" + (("TestLoader") "NoTestLoader")))))))) + (native-inputs + `(("python-nose" ,python-nose))) + (propagated-inputs + `(("python-django" ,python-django) + ("python-webassets" ,python-webassets))) + (home-page "https://github.com/miracle2k/django-assets") + (synopsis "Asset management for Django") + (description + "Asset management for Django, to compress and merge CSS and Javascript +files. Integrates the webassets library with Django, adding support for +merging, minifying and compiling CSS and Javascript files.") + (license license:bsd-2))) + +(define-public python2-django-assets + (package-with-python2 python-django-assets)) + +(define-public python-django-jsonfield + (package + (name "python-django-jsonfield") + (version "1.0.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "jsonfield" version)) + (sha256 + (base32 + "19x4lak0hg9c20r7mvf27w7i8r6i4sg2g0ypmlmp2665fnk76zvy")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda _ + (substitute* "jsonfield/tests.py" + (("django.forms.util") "django.forms.utils"))))))) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/bradjasper/django-jsonfield") + (synopsis "Store validated JSON in your model") + (description + "Django-jsonfield is a reusable Django field that allows you to store +validated JSON in your model. It silently takes care of serialization. To +use, simply add the field to one of your models.") + (license license:expat))) + +(define-public python2-django-jsonfield + (package-with-python2 python-django-jsonfield)) + +(define-public python-dj-database-url + (package + (name "python-dj-database-url") + (version "0.4.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "dj-database-url" version)) + (sha256 + (base32 + "024zbkc5rli4hia9lz9g8kf1zxhb2gwawj5abf67i7gf8n22v0x6")))) + (build-system python-build-system) + (home-page "https://github.com/kennethreitz/dj-database-url") + (synopsis "Use Database URLs in your Django Application") + (description + "This simple Django utility allows you to utilize the 12factor inspired +DATABASE_URL environment variable to configure your Django application. + +The dj_database_url.config method returns a Django database connection +dictionary, populated with all the data specified in your URL. There is also a +conn_max_age argument to easily enable Django’s connection pool.") + (license license:bsd-2))) + +(define-public python2-dj-database-url + (package-with-python2 python-dj-database-url)) + +(define-public python-django-bulk-update + (package + (name "python-django-bulk-update") + (version "1.1.10") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-bulk-update" version)) + (sha256 + (base32 + "0mbng9m7swfc0dnidipbzlxfhlfjrv755dlnha5s4m9mgdxb1fhc")))) + (build-system python-build-system) + (arguments + ;; tests don't support django 1.10, but the module seems to work. + `(#:tests? #f)) + (native-inputs + `(("six" ,python-six) + ("jsonfield" ,python-django-jsonfield) + ("python-dj-database-url" ,python-dj-database-url))) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/aykut/django-bulk-update") + (synopsis "Simple bulk update over Django ORM or with helper function") + (description + "Simple bulk update over Django ORM or with helper function. This +project aims to bulk update given objects using one query over Django ORM.") + (license license:expat))) + +(define-public python2-django-bulk-update + (package-with-python2 python-django-bulk-update)) + +(define-public python-django-contact-form + (package + (name "python-django-contact-form") + (version "1.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-contact-form" version)) + (sha256 + (base32 + "0az590y56k5ahv4sixrkn54d3a8ig2q2z9pl6s3m4f533mx2gj17")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; the next version will need "make test" + (and (zero? (system* "flake8" "contact_form")) + (zero? (system* "coverage" "run" "contact_form/runtests.py")) + (zero? (system* "coverage" "report" "-m" "--fail-under" "0")))))))) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-flake8" ,python-flake8))) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/ubernostrum/django-contact-form") + (synopsis "Contact form for Django") + (description + "This application provides simple, extensible contact-form functionality +for Django sites.") + (license license:bsd-3))) + +(define-public python2-django-contact-form + (package-with-python2 python-django-contact-form)) + +(define-public python-django-contrib-comments + (package + (name "python-django-contrib-comments") + (version "1.8.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-contrib-comments" version)) + (sha256 + (base32 + "0bxsgw8jrkhg6r5s0z6ksfi4w8yknaqb1s9acmxd9pm3pnsnp5kx")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/django/django-contrib-comments") + (synopsis "Comments framework") + (description + "Django used to include a comments framework; since Django 1.6 it's been +separated to a separate project. This is that project. This framework can be +used to attach comments to any model, so you can use it for comments on blog +entries, photos, book chapters, or anything else.") + (license license:bsd-3))) + +(define-public python2-django-contrib-comments + (package-with-python2 python-django-contrib-comments)) + +(define-public python-django-overextends + (package + (name "python-django-overextends") + (version "0.4.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-overextends" version)) + (sha256 + (base32 + "0qc2pcf3i56pmfxh2jw7k3pgljd8xzficmkl2541n7bkcbngqfzm")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "./test_project/manage.py" "test"))))))) + (propagated-inputs + `(("python-django" ,python-django))) + (native-inputs + `(("sphinx-me" ,python-sphinx-me))) + (home-page "https://github.com/stephenmcd/django-overextends") + (synopsis "Circular template inheritance") + (description + "A Django reusable app providing the overextends template tag, a drop-in +replacement for Django's extends tag, which allows you to use circular template +inheritance. The primary use-case for overextends is to simultaneously +override and extend templates from other reusable apps, in your own Django +project.") + (license license:bsd-2))) + +(define-public python2-django-overextends + (package-with-python2 python-django-overextends)) + +(define-public python-django-redis + (package + (name "python-django-redis") + (version "4.7.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-redis" version)) + (sha256 + (base32 + "0yyyxv8n9l9dhs893jsqwg2cxqkkc79g719n9dzzzqgkzialv1c1")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (and (zero? (system* "redis-server" "--daemonize" "yes")) + (with-directory-excursion "tests" + (zero? (system* "python" "runtests.py"))))))))) + (native-inputs + `(("python-fakeredis" ,python-fakeredis) + ("python-hiredis" ,python-hiredis) + ("python-mock" ,python-mock) + ("python-msgpack" ,python-msgpack) + ("redis" ,redis))) + (propagated-inputs + `(("python-django" ,python-django) + ("python-redis" ,python-redis))) + (home-page "https://github.com/niwibe/django-redis") + (synopsis "Full featured redis cache backend for Django") + (description + "Full featured redis cache backend for Django.") + (license license:bsd-3))) + +(define-public python2-django-redis + (package-with-python2 python-django-redis)) + +(define-public python-django-rq + (package + (name "python-django-rq") + (version "0.9.4") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-rq" version)) + (sha256 + (base32 + "04v8ilfdp10bk31fxgh4cn083gsn5m06342cnpm5d10nd8hc0vky")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (and (zero? (system* "redis-server" "--daemonize" "yes")) + (zero? (system* "django-admin.py" "test" "django_rq" + "--settings=django_rq.test_settings" + "--pythonpath=")))))))) + (native-inputs + `(("redis" ,redis))) + (propagated-inputs + `(("python-django" ,python-django) + ("python-rq" ,python-rq))) + (home-page "https://github.com/ui/django-rq") + (synopsis "Django integration with RQ") + (description + "Django integration with RQ, a Redis based Python queuing library. +Django-RQ is a simple app that allows you to configure your queues in django's +settings.py and easily use them in your project.") + (license license:expat))) + +(define-public python2-django-rq + (package-with-python2 python-django-rq)) + +(define-public python-django-sortedm2m + (package + (name "python-django-sortedm2m") + (version "1.3.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-sortedm2m" version)) + (sha256 + (base32 + "0axf765i7b3c2s83nlph47asi8s071dhq8l7y382v1pw785s22vi")))) + (build-system python-build-system) + (arguments + ;; no tests. + `(#:tests? #f)) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/gregmuellegger/django-sortedm2m") + (synopsis "Drop-in replacement for django's own ManyToManyField") + (description + "Sortedm2m is a drop-in replacement for django's own ManyToManyField. +The provided SortedManyToManyField behaves like the original one but remembers +the order of added relations.") + (license license:bsd-3))) + +(define-public python2-django-sortedm2m + (package-with-python2 python-django-sortedm2m)) + +(define-public python-django-appconf + (package + (name "python-django-appconf") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-appconf" version)) + (sha256 + (base32 + "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django))) + (home-page "https://github.com/django-compressor/django-appconf") + (synopsis "Handle configuration defaults of packaged Django apps") + (description + "This app precedes Django's own AppConfig classes that act as \"objects +[to] store metadata for an application\" inside Django's app loading mechanism. +In other words, they solve a related but different use case than +django-appconf and can't easily be used as a replacement. The similarity in +name is purely coincidental.") + (license license:bsd-3))) + +(define-public python2-django-appconf + (package-with-python2 python-django-appconf)) + +(define-public python-django-statici18n + (package + (name "python-django-statici18n") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "django-statici18n" version)) + (sha256 + (base32 + "0alcf4g1nv69njhq5k3qw4mfl2k6dc18bik5nk0g1mnp3m8zyz7k")))) + (build-system python-build-system) + (propagated-inputs + `(("python-django" ,python-django) + ("django-appconf" ,python-django-appconf))) + (home-page "https://github.com/zyegfryed/django-statici18n") + (synopsis "Generate JavaScript catalog to static files") + (description + "A Django app that provides helper for generating JavaScript catalog to +static files.") + (license license:bsd-3))) + +(define-public python2-django-statici18n + (package-with-python2 python-django-statici18n)) + +(define-public pootle + (package + (name "pootle") + (version "2.8.0rc5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Pootle" version ".tar.bz2")) + (sha256 + (base32 + "0m6qcpkcy22dk3ad5y2k8851kqg2w6vrkywgy4vabwbacd7r1mvn")))) + (build-system python-build-system) + (arguments + `(; pootle supports only python2. + #:python ,python-2 + ;; tests are not run and fail with "pytest_pootle/data/po/.tmp: No such + ;; file or directory". If we create this directory, + ;; pytest_pootle/data/po/terminology.po is missing. + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-requirements + (lambda _ + (substitute* "Pootle.egg-info/requires.txt" + (("1.7.3") "1.8.0") + (("2.0.0") "2.1.0")) + (substitute* "requirements/tests.txt" + (("==3.0.6") ">=3.0.6")) + (substitute* "requirements/base.txt" + (("1.7.3") "1.8.0") + (("2.0.0") "2.1.0"))))))) + (propagated-inputs + `(("django-allauth" ,python2-django-allauth) + ("django-assets" ,python2-django-assets) + ("django-bulk-update" ,python2-django-bulk-update) + ("django-contact-form" ,python2-django-contact-form) + ("django-contrib-comments" ,python2-django-contrib-comments) + ("django-overextends" ,python2-django-overextends) + ("django-redis" ,python2-django-redis) + ("django-rq" ,python2-django-rq) + ("django-sortedm2m" ,python2-django-sortedm2m) + ("django-statici18n" ,python2-django-statici18n) + ("babel" ,python2-babel) + ("cssmin" ,python2-cssmin) + ("diff-match-patch" ,python2-diff-match-patch) + ("dirsync" ,python2-dirsync) + ("elasticsearch" ,python2-elasticsearch) + ("jsonfield" ,python2-django-jsonfield) + ("lxml" ,python2-lxml) + ("dateutil" ,python2-dateutil) + ("levenshtein" ,python2-levenshtein) + ("mysqlclient" ,python2-mysqlclient) + ("psycopg2" ,python2-psycopg2) + ("pytz" ,python2-pytz) + ("rq" ,python2-rq) + ("scandir" ,python2-scandir) + ("stemming" ,python2-stemming) + ("translate-toolkit" ,python2-translate-toolkit))) + (native-inputs + `(("python2-pytest-warnings" ,python2-pytest-warnings) + ("python2-pytest-django" ,python2-pytest-django) + ("python2-pytest-catchlog" ,python2-pytest-catchlog) + ("python2-pytest-cov" ,python2-pytest-cov) + ("python2-factory-boy" ,python2-factory-boy))) + (home-page "http://pootle.translatehouse.org/") + (synopsis "Community localization server") + (description + "Pootle is an online translation and localization tool. It works to +lower the barrier of entry, providing tools to enable teams to work towards +higher quality while welcoming newcomers.") + (license license:gpl3+))) diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 57ac297a05..7937c67781 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,10 +88,12 @@ and BOOTP/TFTP for network booting of diskless machines.") ;; Source files only say GPL2 and GPL3 are allowed. (license (list license:gpl2 license:gpl3)))) -(define-public bind +;; 'bind' is the name of a built-in Guile procedure, which is why we choose a +;; different name here. +(define-public isc-bind (package (name "bind") - (version "9.10.4-P6") + (version "9.11.1") (source (origin (method url-fetch) (uri (string-append @@ -98,7 +101,7 @@ and BOOTP/TFTP for network booting of diskless machines.") version ".tar.gz")) (sha256 (base32 - "0rgffdm0h6dks0np4h9q4kd8nyb3azrdxw2skqnjzd8ws78vzpx1")))) + "1chhphaa4lmfxj9daqsxph5ng4h3qq51jx21rj2i6an8ynah0192")))) (build-system gnu-build-system) (outputs `("out" "utils")) (inputs @@ -149,12 +152,12 @@ high-volume and high-reliability applications. The name BIND stands for \"Berkeley Internet Name Domain\", because the software originated in the early 1980s at the University of California at Berkeley.") (home-page "https://www.isc.org/downloads/bind") - (license (list license:isc)))) + (license (list license:mpl2.0)))) (define-public dnscrypt-proxy (package (name "dnscrypt-proxy") - (version "1.9.4") + (version "1.9.5") (source (origin (method url-fetch) (uri (string-append @@ -162,7 +165,7 @@ high-volume and high-reliability applications. The name BIND stands for "dnscrypt-proxy-" version ".tar.bz2")) (sha256 (base32 - "07piwsjczamwvdpv1585kg4awqakip51bwsm8nqi6bljww4agx7x")) + "1dhvklr4dg2vlw108n11xbamacaryyg3dbrg629b76lp7685p7z8")) (modules '((guix build utils))) (snippet ;; Delete bundled libltdl. XXX: This package also bundles @@ -275,9 +278,9 @@ asynchronous fashion.") (define-public yadifa (package (name "yadifa") - (version "2.2.3") + (version "2.2.4") (source - (let ((revision "6711")) + (let ((revision "6924")) (origin (method url-fetch) (uri @@ -285,7 +288,7 @@ asynchronous fashion.") name "-" version "-" revision ".tar.gz")) (sha256 (base32 - "0ikfm40gx0zjw3gnxsw3rn1k4wb8jacgklja3ygcj1knq6hy2zaa"))))) + "060ydcfn9876bs6p5xi3p1k20ca547f4jck25r5x1hnxjlv7ss03"))))) (build-system gnu-build-system) (native-inputs `(("which" ,which))) @@ -318,14 +321,14 @@ Extensions} (DNSSEC).") (define-public knot (package (name "knot") - (version "2.4.2") + (version "2.4.3") (source (origin (method url-fetch) (uri (string-append "https://secure.nic.cz/files/knot-dns/" name "-" version ".tar.xz")) (sha256 (base32 - "0licfnjl0mq9lzdn6frzdasrj65253xc9n33dhvxcjqr3z7pznip")) + "0kvhibnnk77nqi9gdw2zbnp0dydfcy6zy96qv0f3a7wwnay5h0pr")) (modules '((guix build utils))) (snippet '(begin @@ -377,7 +380,7 @@ Extensions} (DNSSEC).") "/etc/bash_completion.d")))) (home-page "https://www.knot-dns.cz/") (synopsis "Authoritative DNS name server") - (description "Knot DNS is an authorative name server for the @dfn{Domain + (description "Knot DNS is an authoritative name server for the @dfn{Domain Name System} (DNS), designed to meet the needs of root and @dfn{top-level domain} (TLD) name servers. It is implemented as a threaded daemon and uses a number of programming techniques to improve speed. For example, the responder diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 0a53e6ca99..1d64e9b69f 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +20,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages ebook) - #:use-module ((guix licenses) #:select (gpl3 lgpl2.1+)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) @@ -27,8 +28,10 @@ #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages databases) + #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gnome) #:use-module (gnu packages glib) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) @@ -38,6 +41,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages tls) + #:use-module (gnu packages web) #:use-module (gnu packages xorg)) (define-public chmlib @@ -56,12 +60,12 @@ (home-page "http://www.jedrea.com/chmlib/") (synopsis "Library for CHM files") (description "CHMLIB is a library for dealing with ITSS/CHM format files.") - (license lgpl2.1+))) + (license license:lgpl2.1+))) (define-public calibre (package (name "calibre") - (version "2.76.0") + (version "2.85.1") (source (origin (method url-fetch) @@ -70,33 +74,35 @@ version ".tar.xz")) (sha256 (base32 - "1xfm586n6gm44mkyn25mbiyhj6w9ji9yl6fvmnr4zk1q6qcga3v8")) + "1g8s0kp1gj05yysfgqpp2lgrxvzc0fsny1hwzx5jh9hvqn0b53cc")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) (snippet '(begin + (delete-file-recursively "src/calibre/ebooks/markdown") (delete-file-recursively "src/unrar") - (delete-file "src/odf/thumbnail.py"))) + (delete-file "src/odf/thumbnail.py") + (delete-file-recursively "resources/fonts/liberation") + (delete-file-recursively "src/chardet") + (substitute* (find-files "." "\\.py") + (("calibre\\.ebooks\\.markdown") "markdown")) + #t)) (patches (search-patches "calibre-drop-unrar.patch" + "calibre-use-packaged-feedparser.patch" + "calibre-dont-load-remote-icons.patch" "calibre-no-updates-dialog.patch")))) (build-system python-build-system) (native-inputs `(("pkg-config" ,pkg-config) + ("font-liberation" ,font-liberation) ("qtbase" ,qtbase) ; for qmake ;; xdg-utils is supposed to be used for desktop integration, but it ;; also creates lots of messages ;; mkdir: cannot create directory '/homeless-shelter': Permission denied + ("python2-flake8" ,python2-flake8) ("xdg-utils" ,xdg-utils))) - ;; FIXME: The following are missing inputs according to the documentation, - ;; but the package can apparently be used without them, - ;; They may need to be added if a deficiency is detected. - ;; BeautifulSoup >= 3.0.5 - ;; dnspython >= 1.6.0 - ;; poppler >= 0.20.2 - ;; libwmf >= 0.2.8 - ;; psutil >= 0.6.1 - ;; python-pygments >= 2.0.1 ; used for ebook editing + ;; Beautifulsoup3 is bundled but obsolete and not packaged, so just leave it bundled. (inputs `(("chmlib" ,chmlib) ("fontconfig" ,fontconfig) @@ -108,16 +114,22 @@ ("libxrender" ,libxrender) ("openssl" ,openssl) ("podofo" ,podofo) + ("poppler" ,poppler) ("python" ,python-2) ("python2-apsw" ,python2-apsw) + ("python2-chardet" ,python2-chardet) ("python2-cssselect" ,python2-cssselect) ("python2-cssutils" ,python2-cssutils) ("python2-dateutil" ,python2-dateutil) ("python2-dbus" ,python2-dbus) + ("python2-dnspython" ,python2-dnspython) + ("python2-feedparser" ,python2-feedparser) ("python2-lxml" ,python2-lxml) + ("python2-markdown" ,python2-markdown) ("python2-mechanize" ,python2-mechanize) ("python2-netifaces" ,python2-netifaces) ("python2-pillow" ,python2-pillow) + ("python2-pygments" ,python2-pygments) ("python2-pyqt" ,python2-pyqt) ("python2-sip" ,python2-sip) ("sqlite" ,sqlite))) @@ -130,6 +142,12 @@ #:use-setuptools? #f #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + (substitute* "src/calibre/linux.py" + ;; We can't use the uninstaller in Guix. Don't build it. + (("self\\.create_uninstaller()") "")) + #t)) (add-before 'build 'configure (lambda* (#:key inputs #:allow-other-keys) (let ((podofo (assoc-ref inputs "podofo")) @@ -137,7 +155,17 @@ (substitute* "setup/build_environment.py" (("sys.prefix") (string-append "'" pyqt "'"))) (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo")) - (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")))))))) + (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib"))))) + (add-after 'install 'install-font-liberation + (lambda* (#:key inputs outputs #:allow-other-keys) + (for-each (lambda (file) + (install-file file (string-append + (assoc-ref outputs "out") + "/share/calibre/fonts/liberation"))) + (find-files (string-append + (assoc-ref inputs "font-liberation") + "/share/fonts/truetype"))) + #t))))) (home-page "http://calibre-ebook.com/") (synopsis "E-book library management software") (description "Calibre is an ebook library manager. It can view, convert @@ -145,4 +173,16 @@ and catalog ebooks in most of the major ebook formats. It can also talk to many ebook reader devices. It can go out to the Internet and fetch metadata for books. It can download newspapers and convert them into ebooks for convenient reading.") - (license gpl3))) ; some files are under various other licenses, see COPYRIGHT + ;; Calibre is largely GPL3+, but includes a number of components covered + ;; by other licenses. See COPYRIGHT for more details. + (license (list license:gpl3+ + license:gpl2+ + license:lgpl2.1+ + license:lgpl2.1 + license:bsd-3 + license:expat + license:zpl2.1 + license:asl2.0 + license:public-domain + license:silofl1.1 + license:cc-by-sa3.0)))) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 808be203c2..b600c2ee39 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) + #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -102,6 +104,49 @@ of categories with some of the activities available in that category. ") (license license:gpl3+))) +(define-public gcompris-qt + (package + (name "gcompris-qt") + (version "0.70") + (source + (origin + (method url-fetch) + (uri (string-append + "http://gcompris.net/download/qt/src/gcompris-qt-" + version ".tar.xz")) + (sha256 + (base32 + "01r7i8dmwb2nlfyp0y0mzs8yydmvn5gq7xn1w7g21lysak1mliwa")))) + (build-system cmake-build-system) + (arguments + ;; Qml_box2d is unmaintained and not actually required for building + '(#:configure-flags (list "-DQML_BOX2D_MODULE=disabled") + #:tests? #f)) ; no test target + (native-inputs + `(("extra-cmake-modules" ,extra-cmake-modules) + ("gettext" ,gettext-minimal) + ("perl" ,perl))) + (inputs + `(("python-2" ,python-2) + ("qt" ,qt))) ; Cannot find qtquick at runtime with modular qt. + (home-page "http://gcompris.net/index-en.html") + (synopsis "Educational games for small children") + (description + "Gcompris offers a large collection of educational games for small +children, designed to be a unified interface to integrate more educational +games. Language-oriented games contain vocabulary, sounds, and voices for +many different languages. +Currently available boards include: +@enumerate +@item learning how to use a mouse and keyboard +@item learning simple arithmetic +@item learning how to read an analog clock +@item recognize letters after hearing their names +@item reading practice +@item small games (memory games, jigsaw puzzles, ...) +@end enumerate\n") + (license license:gpl3+))) + (define-public tipp10 (package (name "tipp10") diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm index 8180f55359..c81976a479 100644 --- a/gnu/packages/elf.scm +++ b/gnu/packages/elf.scm @@ -32,14 +32,14 @@ (define-public elfutils (package (name "elfutils") - (version "0.168") + (version "0.169") (source (origin (method url-fetch) (uri (string-append "https://sourceware.org/elfutils/ftp/" version "/elfutils-" version ".tar.bz2")) (sha256 (base32 - "0xn2fbgda1i703csfs35frvm7l068ybmay4ssrykqdx17f4hg3dq")) + "1hiv1yqig3292dwqhrwsxwk3qjalxp5fpl8yphwbfwh8ng3zl4ll")) (patches (search-patches "elfutils-tests-ptrace.patch")))) (build-system gnu-build-system) diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index 4e430b323f..7425b49a43 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 Pjotr Prins <pjotr.public12@thebird.nl> +;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -30,7 +30,7 @@ (define-public elixir (package (name "elixir") - (version "1.3.2") + (version "1.4.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/elixir-lang/elixir" @@ -38,9 +38,10 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0jsc6kl7f74yszcypdv3w3vhyc9qfqav8nwc41in082m0vpfy95y")) - ;; FIXME: Some tests had to be disabled as they fail in the - ;; build environment. Common failures are: + "0gsmgx4h6rvxilcbsx2z6yirm6g2g5bsxdvr0608ng4bsv22wknb")) + ;; FIXME: 27 tests (out of 4K) had to be disabled as + ;; they fail in the build environment. Common failures + ;; are: ;; - Mix.Shell.cmd() fails with error 130 ;; - The git_repo fixture cannot be found ;; - Communication with spawned processes fails with EPIPE diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index d1267d4f46..a59a4ca698 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -5,9 +5,9 @@ ;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2016, 2017 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> -;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com> +;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> @@ -22,6 +22,9 @@ ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com> +;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2017 George Clemmer <myglc2@gmail.com> +;;; Copyright © 2017 Feng Shu <tumashu@163.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,13 +54,16 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages audio) #:use-module (gnu packages code) #:use-module (gnu packages guile) #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) #:use-module (gnu packages ncurses) + #:use-module (gnu packages python) #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) + #:use-module (gnu packages tcl) #:use-module (gnu packages tls) #:use-module (gnu packages pkg-config) #:use-module (gnu packages xorg) @@ -86,19 +92,20 @@ #:use-module (gnu packages gd) #:use-module (gnu packages fontutils) #:use-module (guix utils) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match)) (define-public emacs (package (name "emacs") - (version "25.1") + (version "25.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/emacs/emacs-" version ".tar.xz")) (sha256 (base32 - "0cwgyiyymnx4xdg99dm2drfxcyhy2jmyf0rkr9fwj9mwwf77kwhr")) + "1ykkq0xl28ljdg61bm6gzy04ww86ajms98gix72qg6cpr6a53dar")) (patches (search-patches "emacs-exec-path.patch" "emacs-fix-scheme-indent-function.patch" "emacs-source-date-epoch.patch")) @@ -725,7 +732,7 @@ the body are let-bound and this search is done at compile time.") (define-public flycheck (package (name "emacs-flycheck") - (version "28") + (version "30") (source (origin (method url-fetch) (uri (string-append @@ -733,7 +740,7 @@ the body are let-bound and this search is done at compile time.") version "/flycheck-" version ".tar")) (sha256 (base32 - "1yjxivk11d7w39zfhj2xr4h6xhwx1aj6yhyzd63rjrad7xpjfl86")))) + "1rxzkaqsj48z3nska5wsgwafvwkam014dzqd32baycmxjl0jxvy7")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -884,14 +891,14 @@ provides an optional IDE-like error list.") (define-public emms (package (name "emacs-emms") - (version "4.2") + (version "4.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/emms/emms-" version ".tar.gz")) (sha256 (base32 - "1xa9y64g5z8gfnxk1c2rf3plfjhqn4r6j8dpiygnfs6w4giysn22")) + "0dicgkl8l83n4cah5vk7c242abbwpyzlih451blgw37f3rijs480")) (modules '((guix build utils))) (snippet '(substitute* "Makefile" @@ -1119,18 +1126,24 @@ than @code{electric-indent-mode}.") (arguments `(#:phases (modify-phases %standard-phases - (add-before 'install 'patch-exec-paths - (lambda* (#:key inputs #:allow-other-keys) - (emacs-substitute-variables "ag.el" - ("ag-executable" - (string-append (assoc-ref inputs "the-silver-searcher") - "/bin/ag"))) - #t))))) - (inputs - `(("the-silver-searcher" ,the-silver-searcher))) + (add-before 'install 'make-info + (lambda _ + (with-directory-excursion "docs" + (zero? (system* "make" "info"))))) + (add-after 'install 'install-info + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info"))) + (install-file "docs/_build/texinfo/agel.info" info) + #t)))))) + (native-inputs + `(("python-sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) (propagated-inputs `(("dash" ,emacs-dash) - ("s" ,emacs-s))) + ("s" ,emacs-s) + ;; We need to use 'ag' as the executable on remote systems. + ("the-silver-searcher" ,the-silver-searcher))) (home-page "https://github.com/Wilfred/ag.el") (synopsis "Front-end for ag (the-silver-searcher) for Emacs") (description "This package provides the ability to use the silver @@ -1143,14 +1156,14 @@ rather than the contents of files.") (define-public emacs-async (package (name "emacs-async") - (version "1.9") + (version "1.9.2") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/async-" version ".tar")) (sha256 (base32 - "1ip5nc8xyln5szvqwp6wqva9xr84pn8ssn3nnphrszr19y4js2bm")))) + "17fnvrj7jww29sav6a6jpizclg4w2962m6h37akpii71gf0vrffw")))) (build-system emacs-build-system) (home-page "https://elpa.gnu.org/packages/async.html") (synopsis "Asynchronous processing in Emacs") @@ -1178,7 +1191,10 @@ as a library for other Emacs packages.") (build-system emacs-build-system) ;; We use 'emacs' because AUCTeX requires dbus at compile time ;; ('emacs-minimal' does not provide dbus). - (arguments `(#:emacs ,emacs)) + (arguments + `(#:emacs ,emacs + #:include '("\\.el$" "^images/" "^latex/" "\\.info$") + #:exclude '("^tests/" "^latex/README"))) (native-inputs `(("perl" ,perl))) (home-page "https://www.gnu.org/software/auctex/") @@ -1189,6 +1205,47 @@ writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs or XEmacs.") (license license:gpl3+))) +(define-public emacs-calfw + (package + (name "emacs-calfw") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/kiwanami/emacs-calfw/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17ssg8gx66yp63nhygjq2r6kgl4h45cacmrxsxs9f0lrfcx37k0l")))) + (build-system emacs-build-system) + (home-page "https://github.com/kiwanami/emacs-calfw/") + (synopsis "Calendar framework for Emacs") + (description + "This package displays a calendar view with various shedule data in +the Emacs buffer.") + (license license:gpl3+))) + +(define-public emacs-google-maps + (package + (name "emacs-google-maps") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/jd/google-maps.el/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs")))) + (build-system emacs-build-system) + (home-page "https://github.com/jd/google-maps.el") + (synopsis "Access Google Maps from Emacs") + (description "The @code{google-maps} package allows to display Google +Maps directly inside Emacs.") + (license license:gpl3+))) + (define-public emacs-mmm-mode (package (name "emacs-mmm-mode") @@ -1346,7 +1403,7 @@ type, for example: packages, buffers, files, etc.") (define-public emacs-guix (package (name "emacs-guix") - (version "0.3") + (version "0.3.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/alezost/guix.el" @@ -1354,7 +1411,7 @@ type, for example: packages, buffers, files, etc.") "/emacs-guix-" version ".tar.gz")) (sha256 (base32 - "1327zp140c7acckk0ajl88cgwr0lk9j3mb67nsq2janxrkwmj6br")))) + "0s7s90rfba8ccbilbvmbcwn4qp4m0jv9y58xq8avm39cygmjgyxz")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1365,7 +1422,13 @@ type, for example: packages, buffers, files, etc.") (magit-popup (assoc-ref %build-inputs "magit-popup")) (site-lisp "/share/emacs/site-lisp")) (list (string-append "--with-guix-site-dir=" - guix "/share/guile/site/2.0") + (car (find-files (string-append guix + "/share/guile/site") + (lambda (file stat) + (string-prefix? + "2." + (basename file))) + #:directories? #t))) (string-append "--with-geiser-lispdir=" geiser site-lisp) (string-append "--with-dash-lispdir=" dash site-lisp "/guix.d/dash-" @@ -1380,14 +1443,14 @@ type, for example: packages, buffers, files, etc.") `(("pkg-config" ,pkg-config) ("emacs" ,emacs-minimal))) (inputs - `(("guile" ,guile-2.0) + `(("guile" ,guile-2.2) ("guix" ,guix))) (propagated-inputs `(("geiser" ,geiser) ("dash" ,emacs-dash) ("bui" ,emacs-bui) ("magit-popup" ,emacs-magit-popup))) - (home-page "https://github.com/alezost/guix.el") + (home-page "https://alezost.github.io/guix.el/") (synopsis "Emacs interface for GNU Guix") (description "Emacs-Guix provides a visual interface, tools and features for the GNU @@ -1487,17 +1550,18 @@ strings.") (define-public emacs-symon (package (name "emacs-symon") - (version "20170224.33") + (version "20160630") (source (origin (method url-fetch) - (uri (string-append "http://melpa.org/packages/symon-" - version ".el")) + (uri (string-append "https://github.com/zk-phi/symon/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "109jd7yjhdrrf5jqpqyv543nb28g7065z58bji9pvxanzi4zl2iz")))) + "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz")))) (build-system emacs-build-system) - (home-page "http://hins11.yu-yake.com/") + (home-page "https://github.com/zk-phi/symon") (synopsis "Tiny graphical system monitor") (description "Tiny graphical system monitor for the Emacs minibuffer when idle.") @@ -1979,14 +2043,14 @@ source code using IPython.") (define-public emacs-debbugs (package (name "emacs-debbugs") - (version "0.12") + (version "0.14") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/debbugs-" version ".tar")) (sha256 (base32 - "1swi4d7fhahimid9j12cypmkz7dlqgffrnhfxy5ra44y3j2b35ph")))) + "07wgcvg038l88gxvjr0gjpjhyk743w22x1rqghz3gkmif0g70say")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-async" ,emacs-async))) @@ -2058,7 +2122,7 @@ build jobs.") (define-public emacs-company (package (name "emacs-company") - (version "0.8.12") + (version "0.9.3") (source (origin (method url-fetch) @@ -2067,8 +2131,20 @@ build jobs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1vwmbqm7h4lrszv2qxy6fqzznm9raigi84cadx982c9m7shp0zzz")))) + "1fyrpchpdmvszssy1qmsw41aqpv6q5rybvs1bw00nv9xdhiaq4vh")))) (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'check + (lambda _ + ;; The company-files-candidates-normal-root test looks + ;; for the /bin directory, but the build environment has + ;; no /bin directory. Modify the test to look for the + ;; /tmp directory. + (substitute* "test/files-tests.el" + (("/bin/") "/tmp/")) + (zero? (system* "make" "test-batch"))))))) (home-page "http://company-mode.github.io/") (synopsis "Modular text completion framework") (description @@ -2254,7 +2330,10 @@ in @code{html-mode}.") (native-inputs `(("texinfo" ,texinfo))) (arguments - `(#:phases + `(#:include '("\\.el$" "\\.lisp$" "\\.asd$" "contrib") + #:exclude '("^slime-tests.el" "^contrib/test/" + "^contrib/Makefile$" "^contrib/README.md$") + #:phases (modify-phases %standard-phases (add-before 'install 'configure (lambda* _ @@ -2442,7 +2521,7 @@ organizer.") (define-public emacs-zenburn-theme (package (name "emacs-zenburn-theme") - (version "2.4") + (version "2.5") (source (origin (method url-fetch) (uri (string-append @@ -2451,7 +2530,7 @@ organizer.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0lyi84bm8sa7vj40n6zg6rlbsmi53mi1y9xn6gkjj29s5zbcnlg7")))) + "03kfhzgbbbl8ivpzzky6qxw4j9mmp452m1sk7wikxmcalfnix0gn")))) (build-system emacs-build-system) (home-page "https://github.com/bbatsov/zenburn-emacs") (synopsis "Low contrast color theme for Emacs") @@ -2505,7 +2584,7 @@ dark background.") (define-public emacs-smartparens (package (name "emacs-smartparens") - (version "1.9.0") + (version "1.10.1") (source (origin (method url-fetch) (uri (string-append @@ -2514,7 +2593,7 @@ dark background.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "12065r7h1s9v8lnq5mk3654dkw4cq60ky8aniqq5n2ivv6qd2d4q")))) + "1nwsi6fbbxjq3r22r6knmx71la3g0lmwfb95i9q4k138gn0m2l3i")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash))) (home-page "https://github.com/Fuco1/smartparens") @@ -2655,7 +2734,7 @@ automatically.") (define-public emacs-ivy (package (name "emacs-ivy") - (version "0.8.0") + (version "0.9.1") (source (origin (method url-fetch) @@ -2664,7 +2743,7 @@ automatically.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "18nqwl05is71dzswnvpfhlg7b0v3apvbsfxrwab9c0apwavi892q")))) + "1abi1rvjarwfxxylpx8qlhck0kbavnj0nmlaaizk9q5zr02xfx1j")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-hydra" ,emacs-hydra))) @@ -2792,7 +2871,7 @@ S-expression.") (define-public emacs-clojure-mode (package (name "emacs-clojure-mode") - (version "5.3.0") + (version "5.4.0") (source (origin (method url-fetch) (uri (string-append @@ -2801,8 +2880,18 @@ S-expression.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0gi8ra3ap5m3mz4qh1yxp2cldn7z9xcxvypznr6rrlc6a9l8s5a6")))) + "117mvjqh4nm8mvmwmmvy4qmkdg23ldlzk08y91g8b8ac8kxwqg81")))) (build-system emacs-build-system) + (native-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s) + ("ert-runner" ,ert-runner))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'check + (lambda _ + (zero? (system* "ert-runner"))))))) (home-page "https://github.com/clojure-emacs/clojure-mode") (synopsis "Major mode for Clojure code") (description @@ -3064,7 +3153,7 @@ in Emacs.") (define-public emacs-projectile (package (name "emacs-projectile") - (version "0.13.0") + (version "0.14.0") (source (origin (method url-fetch) (uri (string-append "https://raw.githubusercontent.com/bbatsov" @@ -3072,7 +3161,7 @@ in Emacs.") (file-name (string-append "projectile-" version ".el")) (sha256 (base32 - "1pc6xb61hzxzc5hkqkli1ab0s7wz0rfgx4kcn9y30ksvhw18smbz")))) + "1ql1wnzhblbwnv66hf2y0wq45g71hh6s9inc090lmhm1vgylbd1f")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -3100,6 +3189,12 @@ If you want to mark a folder manually as a project just create an empty (base32 "145glas04zd0s2rmnif46vhyijs4z03v871gfp1dcrwxvvvns8ap")))) (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'check + (lambda _ + (zero? (system* "make" "test"))))))) (home-page "https://github.com/skeeto/elfeed") (synopsis "Atom/RSS feed reader for Emacs") (description @@ -3272,7 +3367,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.") (define-public emacs-helm (package (name "emacs-helm") - (version "1.9.8") + (version "2.7.0") (source (origin (method url-fetch) (uri (string-append @@ -3281,7 +3376,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "019dpzr6l83k1fgxn40aqxjvrpz4dl5d9vi7fc5wjnifmxaqxia6")))) + "1scdirpclgq3pi1j2c90gqaaqg1pgvasp98f4jqw8c5xbqcr7jdw")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-async" ,emacs-async) @@ -3298,6 +3393,55 @@ considered to be its successor. Helm sets out to clean up the legacy code in not tied in the trap of backward compatibility.") (license license:gpl3+))) +(define-public emacs-helm-swoop + (package + (name "emacs-helm-swoop") + (version "1.7.2") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/ShingoFukuyama/helm-swoop/archive/" + version + ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1z34pfi0gsk054pxr906ilaalaw0xz3s536163gf9ykkwmc2356d")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (home-page "https://github.com/ShingoFukuyama/helm-swoop") + (synopsis "Filter and jump to lines in an Emacs buffer using Helm") + (description + "This package builds on the Helm interface to provide several commands +for search-based navigation of buffers.") + (license license:gpl2+))) + +(define-public emacs-helm-projectile + (package + (name "emacs-helm-projectile") + (version "0.14.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/bbatsov/helm-projectile/archive/v" + version + ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-helm" ,emacs-helm) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/bbatsov/helm-projectile") + (synopsis "Helm integration for Projectile") + (description + "This Emacs library provides a Helm interface for Projectile.") + (license license:gpl3+))) + (define-public emacs-cider (package (name "emacs-cider") @@ -3410,6 +3554,7 @@ extensions.") (method url-fetch) ;; There is no versioned source. (uri "https://www.emacswiki.org/emacs/download/goto-chg.el") + (file-name (string-append "goto-chg-" version ".el")) (sha256 (base32 "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij")))) @@ -3489,14 +3634,14 @@ passive voice.") (define-public emacs-org (package (name "emacs-org") - (version "20170210") + (version "20170515") (source (origin (method url-fetch) (uri (string-append "http://elpa.gnu.org/packages/org-" version ".tar")) (sha256 (base32 - "15415wh3w8d4c8hd7qfrfdjnjb1zppmrkg8cdp7hw2ilyr90c0bn")))) + "0lfapcxil69x1a63cszgq72lqks1z3gpyxw7vcllqlgi7n7a4y6f")))) (build-system emacs-build-system) (home-page "http://orgmode.org/") (synopsis "Outline-based notes management and organizer") @@ -3870,7 +4015,7 @@ customizable by the user.") (define-public emacs-mu4e-alert (package (name "emacs-mu4e-alert") - (version "0.4") + (version "1.0") (source (origin (method url-fetch) @@ -3880,7 +4025,7 @@ customizable by the user.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1m63vyb2v5r9swmqv56q80jca8172nk5vaxl7bcm5zbfs8zsvr4b")))) + "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-alert" ,emacs-alert) @@ -4000,10 +4145,10 @@ number on the left margin in Emacs.") "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl")))) (build-system emacs-build-system) (home-page "https://www.emacswiki.org/emacs/IdleHighlight") - (synopsis "Highlights all occurences of the word the point is on") + (synopsis "Highlights all occurrences of the word the point is on") (description "This Emacs package provides @code{idle-highlight-mode} that sets - an idle timer to highlight all occurences in the buffer of the word under + an idle timer to highlight all occurrences in the buffer of the word under the point.") (license license:gpl3+))) @@ -4051,3 +4196,643 @@ jQuery and Bootstrap resources included via osscdn.") (description "This Emacs package highlights the s-exp at the current position.") (license license:gpl3+))) + +(define-public emacspeak + (package + (name "emacspeak") + (version "46.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/tvraman/emacspeak/releases/download/" + version "/emacspeak-" version ".tar.bz2")) + (sha256 + (base32 + "15x4yfp3wl2fxm1nkx6pz3clw6zyw3argcsqxgcx6pa28sivlg2n")) + (modules '((guix build utils))) + (snippet + ;; Delete the bundled byte-compiled elisp files. + '(for-each delete-file (find-files "lisp" "\\.elc$"))))) + (build-system gnu-build-system) + (arguments + '(#:make-flags (list (string-append "prefix=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + ;; Configure Emacspeak according to etc/install.org. + (zero? (system* "make" "config")))) + (add-after 'build 'build-espeak + (lambda _ + (zero? (system* "make" "espeak")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lisp (string-append out "/share/emacs/site-lisp/emacspeak")) + (info (string-append out "/share/info"))) + ;; According to etc/install.org, the Emacspeak directory should + ;; be copied to its installation destination. + (for-each + (lambda (file) + (copy-recursively file (string-append lisp "/" file))) + '("etc" "info" "lisp" "media" "servers" "sounds" "stumpwm" + "xsl")) + ;; Make sure emacspeak is loaded from the correct directory. + (substitute* "etc/emacspeak.sh" + (("exec emacs.*$") + (string-append "exec emacs -l " lisp + "/lisp/emacspeak-setup.el $CL_ALL"))) + ;; Install the convenient startup script. + (mkdir-p bin) + (copy-file "etc/emacspeak.sh" (string-append bin "/emacspeak"))) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (emacspeak (string-append out "/bin/emacspeak")) + (espeak (string-append (assoc-ref inputs "espeak") + "/bin/espeak"))) + ;; The environment variable DTK_PROGRAM tells emacspeak what + ;; program to use for speech. + (wrap-program emacspeak + `("DTK_PROGRAM" ":" prefix (,espeak))) + #t)))) + #:tests? #f)) ; no check target + (inputs + `(("espeak" ,espeak) + ("tcl" ,tcl) + ("tclx" ,tclx))) + (native-inputs `(("emacs" ,emacs-minimal))) + (home-page "http://emacspeak.sourceforge.net") + (synopsis "Audio desktop interface for Emacs") + (description + "Emacspeak is a speech interface that allows visually impaired users to +interact independently and efficiently with the computer. Audio formatting +--a technique pioneered by AsTeR-- and full support for W3C's Aural CSS (ACSS) +allows Emacspeak to produce rich aural presentations of electronic information. +By seamlessly blending all aspects of the Internet such as Web-surfing and +messaging, Emacspeak speech-enables local and remote information via a +consistent and well-integrated user interface.") + (license license:gpl2+))) + +(define-public emacs-adaptive-wrap + (package + (name "emacs-adaptive-wrap") + (version "0.5") + (source (origin + (method url-fetch) + (uri (string-append + "http://elpa.gnu.org/packages/adaptive-wrap-" + version ".el")) + (sha256 + (base32 + "0frgmp8vrrml4iykm60j4d6cl9rbcivy9yh24q6kd10bcyx59ypy")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/adaptive-wrap.html") + (synopsis "Smart line-wrapping with wrap-prefix") + (description + "This Emacs package provides the @code{adaptive-wrap-prefix-mode} +minor mode which sets the wrap-prefix property on the fly so that +single-long-line paragraphs get word-wrapped in a way similar to what +you'd get with @kbd{M-q} using @code{adaptive-fill-mode}, but without +actually changing the buffer's text.") + (license license:gpl3+))) + +(define-public emacs-diminish + (package + (name "emacs-diminish") + (version "0.45") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/myrjola/diminish.el/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9")))) + (build-system emacs-build-system) + (home-page "https://github.com/myrjola/diminish.el") + (synopsis "Diminish minor modes with no modeline display") + (description "@code{emacs-diminish} implements hiding or +abbreviation of the mode line displays (lighters) of minor modes.") + (license license:gpl2+))) + +(define-public emacs-use-package + (package + (name "emacs-use-package") + (version "2.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/jwiegley/use-package/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0x4h136jb3imyli6zsh7dyzjrra6pv0v6b0yk94jdng3rdfcmsf5")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-diminish" ,emacs-diminish))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'check + (lambda _ + (zero? (system* "emacs" "--batch" "-L" "." + "-l" "use-package-tests.el" + "-f" "ert-run-tests-batch-and-exit")) + ;; Tests fail in this release, but have been fixed in + ;; upstream commit 7956d40eed57d6c06bef36ebc174cf57d934e30d + #t))))) + (home-page "https://github.com/jwiegley/use-package") + (synopsis "Declaration for simplifying your .emacs") + (description "The use-package macro allows you to isolate package +configuration in your @file{.emacs} file in a way that is both +performance-oriented and tidy.") + (license license:gpl2+))) + +(define-public emacs-strace-mode + (let* ((commit "6a69b4b06db6797af56f33eda5cb28af94e59f11") + (revision "1")) + (package + (name "emacs-strace-mode") + (version (string-append "0.0.2-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pkmoore/strace-mode") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f")))) + (build-system emacs-build-system) + (home-page "https://github.com/pkmoore/strace-mode") + (synopsis "Emacs major mode to highlight strace outputs") + (description "@code{emacs-strace-mode} provides an Emacs major mode + highlighting strace outputs.") + (license license:gpl3+)))) + +(define-public emacs-default-encrypt + (package + (name "emacs-default-encrypt") + (version "4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://www.informationelle-selbstbestimmung-im-internet.de" + "/emacs/jl-encrypt" version "/jl-encrypt.el")) + (file-name (string-append "jl-encrypt-" version ".el")) + (sha256 + (base32 + "16i3rlfp3jxlqvndn8idylhmczync3gwmy8a019v29vyr48rnnr0")))) + (build-system emacs-build-system) + (home-page "https://www.informationelle-selbstbestimmung-im-internet.de/Emacs.html") + (synopsis "Automatically encrypt or sign Gnus messages in Emacs") + (description + "DefaultEncrypt is designed to be used with Gnus in Emacs. It +automatically encrypts messages that you send (e.g., email) when public keys +for all recipients are available, and it protects you from accidentally +sending un-encrypted messages. It can also be configured to automatically +sign messages that you send. For details and instructions on how to use +DefaultEncrypt, please refer to the home page or read the comments in the +source file, @file{jl-encrypt.el}.") + (license license:gpl3+))) + +(define-public emacs-htmlize + (package + (name "emacs-htmlize") + (version "1.51") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/hniksic/emacs-htmlize/archive/release/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1fy1lybzrxl8a8r88f6p19nz8ygmvcxhxbnymkxh7jqaz25viwld")))) + (build-system emacs-build-system) + (home-page "https://github.com/hniksic/emacs-htmlize") + (synopsis "Convert buffer text and decorations to HTML") + (description "@code{emacs-htmlize} converts the buffer text and +the associated decorations to HTML. Output to CSS, inline CSS and +fonts is supported.") + (license license:gpl2+))) + +(define-public emacs-xmlgen + (package + (name "emacs-xmlgen") + (version "0.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/philjackson/xmlgen/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'check + (lambda _ + (zero? (system* "emacs" "--batch" "-L" "." + "-l" "xmlgen-test.el" + "-f" "ert-run-tests-batch-and-exit"))))))) + (home-page "https://github.com/philjackson/xmlgen") + (synopsis "S-expression to XML domain specific language (DSL) in +Emacs Lisp") + (description "@code{emacs-xmlgen} provides S-expression to XML +conversion for Emacs Lisp.") + (license license:gpl2+))) + +(define-public emacs-cdlatex + (package + (name "emacs-cdlatex") + (version "4.7") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/cdominik/cdlatex/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp")))) + (build-system emacs-build-system) + (home-page "https://github.com/cdominik/cdlatex") + (synopsis "Fast Emacs input methods for LaTeX environments and +math") + (description "CDLaTeX is an Emacs minor mode supporting fast +insertion of environment templates and math in LaTeX. Similar +commands are also offered as part of the AUCTeX package, but it is not +the same - CDLaTeX focuses on speediness for inserting LaTeX +constructs.") + (license license:gpl3+))) + +(define-public emacs-xelb + (package + (name "emacs-xelb") + (version "0.12") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/xelb-" + version ".tar")) + (sha256 + (base32 + "0i9n0f3ibj4a5pwcsvwrah9m0fz32m0x6a9wsmjn3li20v8pcb81")))) + (build-system emacs-build-system) + ;; The following functions and variables needed by emacs-xelb are + ;; not included in emacs-minimal: + ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym + ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region + ;; x-display-pixel-width, x-display-pixel-height + (arguments + `(#:emacs ,emacs + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'regenerate-el-files + (lambda* (#:key inputs #:allow-other-keys) + (zero? (system* "make" + (string-append "PROTO_PATH=" + (assoc-ref inputs "xcb-proto") + "/share/xcb") + (string-append "EMACS_BIN=" + (assoc-ref inputs "emacs") + "/bin/emacs -Q")))))))) + (native-inputs `(("xcb-proto" ,xcb-proto))) + (home-page "https://github.com/ch11ng/xelb") + (synopsis "X protocol Emacs Lisp binding") + (description "@code{emacs-xelb} is a pure Emacs Lisp implementation of the +X11 protocol based on the XML description files from the XCB project. It +features an object-oriented API and permits a certain degree of concurrency. +It should enable you to implement low-level X11 applications.") + (license license:gpl3+))) + +(define-public emacs-exwm + (package + (name "emacs-exwm") + (version "0.13") + (synopsis "Emacs X window manager") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/exwm-" + version ".tar")) + (sha256 + (base32 + "0n1wzy6chh024r0yaywjbf7mdsrxs6hrfycv5v0ps0drf6q3zldc")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-xelb" ,emacs-xelb))) + (inputs + `(("xhost" ,xhost) + ("dbus" ,dbus))) + ;; The following functions and variables needed by emacs-exwm are + ;; not included in emacs-minimal: + ;; scroll-bar-mode, fringe-mode + ;; x-display-pixel-width, x-display-pixel-height + (arguments + `(#:emacs ,emacs + #:phases + (modify-phases %standard-phases + (add-after 'build 'install-xsession + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (xsessions (string-append out "/share/xsessions")) + (bin (string-append out "/bin")) + (exwm-executable (string-append bin "/exwm"))) + ;; Add a .desktop file to xsessions + (mkdir-p xsessions) + (mkdir-p bin) + (with-output-to-file + (string-append xsessions "/exwm.desktop") + (lambda _ + (format #t "[Desktop Entry]~@ + Name=~a~@ + Comment=~a~@ + Exec=~a~@ + TryExec=~@*~a~@ + Type=Application~%" ,name ,synopsis exwm-executable))) + ;; Add a shell wrapper to bin + ;; Set DISPLAY variable to work around + ;; https://github.com/ch11ng/exwm/issues/213 + (with-output-to-file exwm-executable + (lambda _ + (format #t "#!~a ~@ + export DISPLAY=:0 ~@ + ~a +SI:localuser:$USER ~@ + exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%" + (string-append (assoc-ref inputs "bash") "/bin/sh") + (string-append (assoc-ref inputs "xhost") "/bin/xhost") + (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch") + (string-append (assoc-ref inputs "emacs") "/bin/emacs") + '(cond + ((file-exists-p "~/.exwm") + (load-file "~/.exwm")) + ((not (featurep 'exwm)) + (require 'exwm) + (require 'exwm-config) + (exwm-config-default) + (message "exwm configuration not found. Falling back to default configuration...")))))) + (chmod exwm-executable #o555) + #t)))))) + (home-page "https://github.com/ch11ng/exwm") + (description "EXWM is a full-featured tiling X window manager for Emacs +built on top of XELB.") + (license license:gpl3+))) + +(define-public emacs-gnuplot + (package + (name "emacs-gnuplot") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/bruceravel/gnuplot-mode/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i")))) + (build-system gnu-build-system) + (native-inputs `(("emacs" ,emacs-minimal))) + (arguments + (let ((elisp-dir (string-append "/share/emacs/site-lisp/guix.d" + "/gnuplot-" version))) + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:configure-flags + (list (string-append "EMACS=" (assoc-ref %build-inputs "emacs") + "/bin/emacs") + (string-append "--with-lispdir=" %output ,elisp-dir)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'generate-autoloads + (lambda* (#:key outputs #:allow-other-keys) + (emacs-generate-autoloads + "gnuplot" + (string-append (assoc-ref outputs "out") ,elisp-dir)) + #t)))))) + (home-page "https://github.com/bruceravel/gnuplot-mode") + (synopsis "Emacs major mode for interacting with gnuplot") + (description "@code{emacs-gnuplot} is an emacs major mode for interacting +with gnuplot.") + (license license:gpl2+))) + +(define-public emacs-transpose-frame + (package + (name "emacs-transpose-frame") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri "http://www.emacswiki.org/emacs/download/transpose-frame.el") + (file-name (string-append "transpose-frame-" version ".el")) + (sha256 + (base32 + "1f67yksgw9s6j0033hmqzaxx2a93jm11sd5ys7cc3li5gfh680m4")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/TransposeFrame") + (synopsis "Transpose window arrangement in current frame") + (description "@code{emacs-transpose-frame} provides some interactive +functions which allows users to transpose windows arrangement in currently +selected frame.") + (license license:bsd-2))) + +(define-public emacs-key-chord + (package + (name "emacs-key-chord") + (version "0.6") + (source + (origin + (method url-fetch) + (uri "https://www.emacswiki.org/emacs/download/key-chord.el") + (file-name (string-append "key-chord-" version ".el")) + (sha256 + (base32 + "03m44pqggfrd53nh9dvpdjgm0rvca34qxmd30hr33hzprzjambxg")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/key-chord.el") + (synopsis "Map pairs of simultaneously pressed keys to Emacs commands") + (description "@code{emacs-key-chord} provides @code{key-chord-mode}, a +mode for binding key chords to commands. A key chord is defined as two keys +pressed simultaneously or a single key quickly pressed twice.") + (license license:gpl2+))) + +(define-public emacs-evil-surround + (package + (name "emacs-evil-surround") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/timcharper/evil-surround/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/timcharper/evil-surround") + (synopsis "Easily modify surrounding parantheses and quotes") + (description "@code{emacs-evil-surround} allows easy deletion, change and +addition of surrounding pairs, such as parantheses and quotes, in evil mode.") + (license license:gpl3+))) + +(define-public emacs-evil-commentary + (package + (name "emacs-evil-commentary") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/linktohack/evil-commentary/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/linktohack/evil-commentary") + (synopsis "Comment out code in evil mode") + (description "@code{emacs-evil-commentary} adds keybindings to easily +comment out lines of code in evil mode. It provides @code{gcc} to comment out +lines, and @code{gc} to comment out the target of a motion.") + (license license:gpl3+))) + +;; Tests for emacs-ansi have a circular dependency with ert-runner, and +;; therefore cannot be run +(define-public emacs-ansi + (package + (name "emacs-ansi") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/rejeep/ansi.el/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/rejeep/ansi.el") + (synopsis "Convert strings to ANSI") + (description "@code{emacs-ansi} defines functions that turns simple +strings to ANSI strings. Turning a string into an ANSI string can be to add +color to a text, add color in the background of a text or adding a style, such +as bold, underscore or italic.") + (license license:gpl3+))) + +;; Tests for emacs-commander have a circular dependency with ert-runner, and +;; therefore cannot be run +(define-public emacs-commander + (package + (name "emacs-commander") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/rejeep/commander.el/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/rejeep/commander.el") + (synopsis "Emacs command line parser") + (description "@code{emacs-commander} provides command line parsing for +Emacs.") + (license license:gpl3+))) + +;; Tests for ert-runner have a circular dependency with ecukes, and therefore +;; cannot be run +(define-public ert-runner + (let ((dependencies + `(("emacs-ansi" ,emacs-ansi) + ("emacs-commander" ,emacs-commander) + ("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s) + ("emacs-shut-up" ,emacs-shut-up)))) + (package + (name "ert-runner") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/rejeep/ert-runner.el/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1657nck9i96a4xgl8crfqq0s8gflzp21pkkzwg6m3z5npjxklgwp")))) + (build-system emacs-build-system) + (inputs dependencies) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "bin/ert-runner" + (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)") + (string-append "ERT_RUNNER=\"" out + "/share/emacs/site-lisp/guix.d/" + ,name "-" ,version))) + (install-file "bin/ert-runner" (string-append out "/bin")) + (wrap-program (string-append out "/bin/ert-runner") + (list "EMACSLOADPATH" ":" '= + (append + ,(match dependencies + (((labels packages) ...) + `(map (lambda (label package version) + (string-append (assoc-ref inputs label) + "/share/emacs/site-lisp/guix.d/" + (string-drop package 6) + "-" version)) + ',labels + ',(map package-name packages) + ',(map package-version packages)))) + ;; empty element to include the default load path as + ;; determined by emacs' standard initialization + ;; procedure + (list "")))) + #t)))))) + (home-page "https://github.com/rejeep/ert-runner.el") + (synopsis "Opinionated Ert testing workflow") + (description "@code{ert-runner} is a tool for Emacs projects tested +using ERT. It assumes a certain test structure setup and can therefore make +running tests easier.") + (license license:gpl3+)))) diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index fbbafc6a3b..289fbcfb5c 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -773,3 +773,27 @@ simulator.") the Raspberry Pi chip.") (license license:gpl3+) (home-page "https://github.com/puppeh/vc4-toolchain/")))) + +(define-public gcc-vc4 + (let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2") + (xgcc (cross-gcc "vc4-elf" binutils-vc4))) + (package (inherit xgcc) + (name "gcc-vc4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/puppeh/gcc-vc4.git") + (commit commit))) + (file-name (string-append name + "-" + (package-version xgcc) + "-checkout")) + (sha256 + (base32 + "13h30qjcwnlz6lfma1d82nnvfmjnhh7abkagip4vly6vm5fpnvf2")))) + (native-inputs + `(("flex" ,flex) + ,@(package-native-inputs xgcc))) + (synopsis "GCC for VC4") + (description "This package provides @code{gcc} for VideoCore IV, +the Raspberry Pi chip.")))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index dd56af99da..7ad93653e9 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 David Thompson <davet@gnu.org> @@ -53,6 +53,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages linux) ;FIXME: for pcb #:use-module (gnu packages m4) #:use-module (gnu packages maths) @@ -107,7 +108,8 @@ `(("boost" ,boost) ("muparser" ,muparser) ("freetype" ,freetype) - ("qt" ,qt))) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg))) (native-inputs `(("pkg-config" ,pkg-config) ("which" ,which))) @@ -173,15 +175,14 @@ utilities.") (define-public pcb (package (name "pcb") - (version "20140316") + (version "4.0.0") (source (origin (method url-fetch) - (uri (string-append - "http://ftp.geda-project.org/pcb/pcb-" version "/pcb-" - version ".tar.gz")) + (uri (string-append "mirror://sourceforge/pcb/pcb/pcb-" version + "/pcb-" version ".tar.gz")) (sha256 (base32 - "0l6944hq79qsyp60i5ai02xwyp8l47q7xdm3js0jfkpf72ag7i42")))) + "1i6sk8g8h9avms142wl07yv20m1cm4c3fq3v6hybrhdxs2n17plf")))) (build-system gnu-build-system) (arguments `(#:phases @@ -200,7 +201,13 @@ utilities.") (path (string-append (assoc-ref inputs "udev") "/lib"))) (wrap-program (string-append out "/bin/pcb") `("LD_LIBRARY_PATH" ":" prefix (,path))))) - %standard-phases)))) + (alist-cons-before + 'check 'pre-check + (lambda _ + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + #t) + %standard-phases))))) (inputs `(("dbus" ,dbus) ("mesa" ,mesa) @@ -216,7 +223,12 @@ utilities.") `(("pkg-config" ,pkg-config) ("intltool" ,intltool) ("bison" ,bison) - ("flex" ,flex))) + ("flex" ,flex) + ;; For tests + ("imagemagick" ,imagemagick) + ("gerbv" ,gerbv) + ("ghostscript" ,ghostscript) + ("xvfb" ,xorg-server))) (home-page "http://pcb.geda-project.org/") (synopsis "Design printed circuit board layouts") (description @@ -774,3 +786,29 @@ render model libraries.") educational use. As such, there is an emphasis on capabilities that improve the 'showing the effect of'-style of operation.") (license license:gpl2+))) + +(define-public volk + (package + (name "volk") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (string-append "http://libvolk.org/releases/volk-" + version ".tar.gz")) + (sha256 + (base32 + "1bz3ywc6y5wmz3i8p4z2wbzhns8bc0ywdkl9qnxpcvfcscarbdlh")))) + (build-system cmake-build-system) + (inputs + `(("boost" ,boost))) + (native-inputs + `(("python-2", python-2) + ("python2-cheetah" ,python2-cheetah))) + (home-page "http://libvolk.org/") + (synopsis "Vector-Optimized Library of Kernels") + (description + "@code{volk} contains procedures with machine-specific optimizations +for mathematical functions. It also provides an machine-independent +interface to select the best such procedures to use on a given system.") + (license license:gpl3+))) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index b9a55333df..165ca50ce1 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -57,7 +57,7 @@ (define-public efl (package (name "efl") - (version "1.18.4") + (version "1.18.5") (source (origin (method url-fetch) (uri (string-append @@ -65,7 +65,7 @@ version ".tar.xz")) (sha256 (base32 - "09c0ajszjarcs6d62zlgnf1aha2f921mfr0gxg6nwza36xzc1srr")))) + "0wxz00cijynamm0sx4ss4hp89zyz5y6zliv5zd905jn4nak2mw2n")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -133,7 +133,7 @@ "--with-opengl=es" "--enable-egl" "--enable-harfbuzz"))) - (home-page "https://www.enlightenment.org") + (home-page "https://www.enlightenment.org/about-efl") (synopsis "Enlightenment Foundation Libraries") (description "Enlightenment Foundation Libraries is a set of libraries developed @@ -197,7 +197,7 @@ Libraries with some extra bells and whistles.") (define-public enlightenment (package (name "enlightenment") - (version "0.21.6") + (version "0.21.7") (source (origin (method url-fetch) (uri @@ -205,7 +205,7 @@ Libraries with some extra bells and whistles.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0gan3c8jbvhcmvb2fpbprr3m6db0afg1dnrb87nbqb399nsi81zd")))) + "1xvngjdsa0p901vfhrh2qpa50k32hwwhc8bgi16a9b5d9byzfhvn")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--enable-mount-eeze"))) @@ -221,7 +221,7 @@ Libraries with some extra bells and whistles.") ("libxext" ,libxext) ("linux-pam" ,linux-pam) ("xcb-util-keysyms" ,xcb-util-keysyms))) - (home-page "https://www.enlightenment.org") + (home-page "https://www.enlightenment.org/about-enlightenment") (synopsis "Lightweight desktop environment") (description "Enlightenment is resource friendly desktop environment with integrated diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm index 39da7e939b..07f117e283 100644 --- a/gnu/packages/erlang.scm +++ b/gnu/packages/erlang.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Steve Sprang <scs@stevesprang.com> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 Pjotr Prins <pjotr.public12@thebird.nl> +;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,8 +34,7 @@ (define-public erlang (package (name "erlang") - ;; When updating, remember to update the hash of erlang-manpages! - (version "19.0") + (version "19.3") (source (origin (method url-fetch) ;; The tarball from http://erlang.org/download contains many @@ -46,7 +45,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1dxyz6x1yfv33fd0xfry2ihylkyfa2d655q1vxvbz8dflyd64yqh")))) + "1b47jh549yywyp8fbs8a8j4ydr3zn982navzyqvlms6rg8vwb0pw")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) @@ -61,7 +60,7 @@ version ".tar.gz")) (sha256 (base32 - "07j0l7ary936hil38xr3hvfw6j74pshkyyi98kc9cassbbcdd8y7")))))) + "0p6r3n3y7lbhv38sw8f2vi1xlmc137gyspk9ap086w1nszyjy6gq")))))) (inputs `(("ncurses" ,ncurses) ("openssl" ,openssl) @@ -162,9 +161,8 @@ (zero? (system* "tar" "xvf" manpages)) (rename-file "COPYRIGHT" (string-append share "/misc/erlang/COPYRIGHT")) - ;; Delete superfluous files. - (for-each delete-file '("PR.template" - "README")))))))))) + ;; Delete superfluous file. + (delete-file "PR.template"))))))))) (home-page "http://erlang.org/") (synopsis "The Erlang programming language") (description diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 3c305f4b2a..fb2543bceb 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -49,7 +49,7 @@ (define-public bitcoin-core (package (name "bitcoin-core") - (version "0.14.0") + (version "0.14.1") (source (origin (method url-fetch) (uri @@ -57,7 +57,7 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "07k4i9r033dsvkp5ii5g3hykidm8b19c8c0mz1bi8k0dda3d8hyp")))) + "18zrsinlwkj4q5bj2hzswbhswkvd0sdfi6skfwqwwk85gzh064pj")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 6579a66e4d..03a1f6f796 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> -;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 ng0 <ng0@libertad.pw> ;;; Copyright © 2016 Jookia <166291@gmail.com> @@ -17,6 +17,8 @@ ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -239,8 +241,11 @@ provide serif, sans and monospaced variants.") (description "Vera is a sans-serif typeface from Bitstream, Inc. This package provides the TrueType (TTF) files.") (license - (license:x11-style - "http://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")))) + (license:fsdg-compatible + "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts" + "The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself.")))) (define-public font-cantarell (package @@ -316,7 +321,7 @@ sans-serif designed for on-screen reading. It is used by GNOME@tie{}3.") (version "2.00.1") (source (origin (method url-fetch) - (uri (string-append "https://fedorahosted.org/releases/l/i/" + (uri (string-append "https://releases.pagure.org/" "liberation-fonts/liberation-fonts-ttf-" version ".tar.gz")) (sha256 @@ -350,7 +355,7 @@ sans-serif designed for on-screen reading. It is used by GNOME@tie{}3.") `(("source" ,source) ("tar" ,tar) ("gzip" ,gzip))) - (home-page "https://fedorahosted.org/liberation-fonts/") + (home-page "https://pagure.io/liberation-fonts/") (synopsis "Fonts compatible with Arial, Times New Roman, and Courier New") (description @@ -370,6 +375,63 @@ and Bitstream Vera Sans Mono). The Liberation Fonts are sponsored by Red Hat.") (license license:silofl1.1))) +(define-public font-linuxlibertine + (package + (name "font-linuxlibertine") + (version "5.3.0") + (source (origin + (method url-fetch/tarbomb) + (uri (string-append "mirror://sourceforge/linuxlibertine/" + "linuxlibertine/" version + "/LinLibertineSRC_" version "_2012_07_02.tgz")) + (sha256 + (base32 + "0x7cz6hvhpil1rh03rax9zsfzm54bh7r4bbrq8rz673gl9h47v0v")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; there are no tests + #:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (let ((compile + (lambda (name ext) + (zero? (system* + "fontforge" "-lang=ff" + "-c" (string-append "Open('" name "');" + "Generate('" + (basename name "sfd") ext + "')")))))) + (every (lambda (name) + (and (compile name "ttf") + (compile name "otf"))) + (find-files "." "\\.sfd$"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((font-dir (string-append (assoc-ref outputs "out") + "/share/fonts/truetype"))) + (mkdir-p font-dir) + (for-each (cut install-file <> font-dir) + (find-files "." "\\.(otf|ttf)$")) + #t)))))) + (native-inputs + `(("fontforge" ,fontforge))) + (home-page "http://www.linuxlibertine.org/") + (synopsis "Serif and sans serif typefaces") + (description "The Linux Libertine fonts is a set of typefaces containing +both a Serif version (\"Linux Libertine\") and a Sans Serif (\"Linux +Biolinum\") designed to be used together as an alternative for Times/Times New +Roman and Helvetica/Arial. The Serif typeface comes in two shapes and two +weights, and with a Small Capitals version of the regular typeface. Linux +Biolinum is available in both Regular and Bold weights.") + ;; The fonts are released under either of these licenses. + (license (list license:gpl2+ license:silofl1.1)))) + (define-public font-terminus (package (name "font-terminus") @@ -461,6 +523,104 @@ fonts are intended to support the characters necessary to render or display text in Simplified Chinese, Traditional Chinese, Japanese, and Korean.") (license license:silofl1.1))) +(define-public font-cns11643 + (package + (name "font-cns11643") + (version "98.1.20170405") + (source (origin + (method url-fetch) + (uri "http://www.cns11643.gov.tw/AIDB/Open_Data.zip") + (sha256 + (base32 + "02kb3bwjrra0k2hlr2p8xswd2y0xs6j8d9vm6yrby734h02a40qf")))) + (outputs '("out" "tw-kai" "tw-sung")) + (build-system trivial-build-system) + (native-inputs + `(("unzip" ,unzip))) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((font-dir "/share/fonts/truetype/cns11643") + (out (string-append + (assoc-ref %outputs "out") font-dir)) + (tw-kai (string-append + (assoc-ref %outputs "tw-kai") font-dir)) + (tw-sung (string-append + (assoc-ref %outputs "tw-sung") font-dir)) + (unzip (string-append + (assoc-ref %build-inputs "unzip") "/bin/unzip"))) + (system* unzip (assoc-ref %build-inputs "source")) + (chdir "Open_Data/Fonts/") + (install-file "TW-Kai-98_1.ttf" tw-kai) + (install-file "TW-Sung-98_1.ttf" tw-sung) + (install-file "TW-Kai-98_1.ttf" out) + (install-file "TW-Kai-Ext-B-98_1.ttf" out) + (install-file "TW-Kai-Plus-98_1.ttf" out) + (install-file "TW-Sung-98_1.ttf" out) + (install-file "TW-Sung-Ext-B-98_1.ttf" out) + (install-file "TW-Sung-Plus-98_1.ttf" out) + #t)))) + (home-page "http://www.cns11643.gov.tw/AIDB/welcome.do") + (synopsis "CJK TrueType fonts, TW-Kai and TW-Sung") + (description + "@code{CNS 11643} character set (Chinese National Standard, or Chinese +Standard Interchange Code) is the standard character set of the Republic of +China (Taiwan) for Chinese Characters and other Unicode symbols. Contained +are six TrueType fonts based on two script styles, Regular script (Kai), and +Sung/Ming script, each with three variants: + +@itemize +@item @code{CNS 11643} (@code{TW-Kai} and @code{TW-Sung}): Tens of thousands +of CJK characters from frequency tables published by the Taiwanese +Ministry of Education. ISO 10646 and Unicode compatible encoding. +@item @code{Big-5 Plus}: Several thousand frequently used CJK characters +encoded in the user defined area of the Big-5 code. +@item @code{Big-5 Extended}: A Big-5 character set based on the +@code{Big-5 Plus} and @code{CNS 11643} character sets. +@end itemize\n") + (license (license:non-copyleft + "http://data.gov.tw/license")))) ; CC-BY 4.0 compatible + +(define-public font-cns11643-swjz + (package + (name "font-cns11643-swjz") + (version "1") + (source + (origin + (method url-fetch) + (uri "https://www.moedict.tw/fonts/truetype/cns11643/ebas927.ttf") + (sha256 + (base32 + "1qkljldbmb53zp1rcmpsb8rzy67rnsqcjxi549m9743ifk4isl78")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((font-dir (string-append %output + "/share/fonts/truetype/cns11643")) + (source (assoc-ref %build-inputs "source"))) + (mkdir-p font-dir) + (copy-file source + (string-append font-dir "/" "ebas927.ttf")) + #t)))) + (home-page + (string-append "http://www.cns11643.gov.tw/AIDB/download.do" + "?name=%E5%AD%97%E5%9E%8B%E4%B8%8B%E8%BC%89")) + (synopsis "TrueType seal script font") + (description + "@code{Shuowen Jiezi} is a TrueType seal script font based on the ancient +text of the same name published by the Executive Yuan of Taiwan. 6721 glyphs +are included, at Unicode compatible code points corresponding to their modern +variants.") + ;; Original text only available in Chinese. More info at + ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26703#11 + (license (license:non-copyleft + "http://www.cns11643.gov.tw/AIDB/copyright.do")))) + (define-public font-wqy-zenhei (package (name "font-wqy-zenhei") diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index f53881eb9c..5544111393 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -381,7 +381,12 @@ applications should be.") (method url-fetch) (uri (string-append "https://github.com/silnrsi/graphite/releases/" "download/" version "/" name "-" version ".tgz")) - (patches (search-patches "graphite2-ffloat-store.patch")) + (patches (search-patches + "graphite2-ffloat-store.patch" + "graphite2-check-code-point-limit.patch" + "graphite2-CVE-2017-5436.patch" + "graphite2-fix-32-bit-wrap-arounds.patch" + "graphite2-non-linear-classes-even-number.patch")) (sha256 (base32 "0rs5h7m340z75kygx8d72cps0q6yvvqa9i788vym7585cfv8a0gc")))) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index b912ce0260..85a6c8b26d 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,6 +56,7 @@ #:use-module (gnu packages polkit) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages w3m) #:use-module (gnu packages xml) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg)) @@ -62,23 +64,61 @@ (define-public xdg-utils (package (name "xdg-utils") - (version "1.0.2") + (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "https://portland.freedesktop.org/download/xdg-utils-" - version ".tgz")) + version ".tar.gz")) (sha256 (base32 - "1b019d3r1379b60p33d6z44kx589xjgga62ijz9vha95dg8vgbi1")))) + "09a1pk3ifsndc5qz2kcd1557i137gpgnv3d739pv22vfayi67pdh")))) (build-system gnu-build-system) + (native-inputs + `(("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml-4.1.2) + ("libxslt" ,libxslt) + ("w3m" ,w3m) + ("xmlto" ,xmlto))) (propagated-inputs `(("xprop" ,xprop) ; for Xfce detecting ("xset" ,xset))) ; for xdg-screensaver (arguments - `(#:tests? #f)) ; no check target - (home-page "http://portland.freedesktop.org/") + `(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-hardcoded-paths + (lambda _ + (substitute* "scripts/xdg-mime.in" + (("/usr/bin/file") (which "file"))) + (substitute* "scripts/xdg-open.in" + (("/usr/bin/printf") (which "printf"))) + #t)) + (add-before 'build 'locate-catalog-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook")) + (xsldoc (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl)))) + (for-each (lambda (file) + (substitute* file + (("http://.*/docbookx\\.dtd") + (string-append xmldoc "/docbookx.dtd")))) + (find-files "scripts/desc" "\\.xml$")) + (substitute* "scripts/Makefile" + ;; Apparently `xmlto' does not bother to looks up the stylesheets + ;; specified in the XML, unlike the above substitition. Instead it + ;; uses a hard-coded URL. Work around it here, but if this is + ;; common perhaps we should hardcode this path in xmlto itself. + (("\\$\\(XMLTO\\) man") + (string-append "$(XMLTO) -x " xsldoc + "/manpages/docbook.xsl man"))) + (setenv "STYLESHEET" + (string-append xsldoc "/html/docbook.xsl")) + #t)))))) + (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/") (synopsis "Freedesktop.org scripts for desktop integration") (description "The xdg-utils package is a set of simple scripts that provide basic desktop integration functions in the framework of the diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 8f5b1fb0da..da3a850fed 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Julian Graham <joolean@gmail.com> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -69,7 +70,7 @@ (define-public bullet (package (name "bullet") - (version "2.85.1") + (version "2.86.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/bulletphysics/bullet3/" @@ -77,7 +78,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0qpd37ws0xlxwy55dg058a5b4yw2jxiz09yyc3lc0frpa05pq5bf")))) + "0nghzcl84p8di215p7xj0gy1hyy072hw2xk9cnmav9hv6bjb4n60")))) (build-system cmake-build-system) (arguments '(#:configure-flags (list (string-append @@ -186,6 +187,68 @@ and network communications. A very thin client library can be embedded to provide connectivity for client applications written in any language.") (license license:gpl3+))) +(define-public python-sge-pygame + (package + (name "python-sge-pygame") + (version "1.4.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sge-pygame" version)) + (sha256 + (base32 + "1qhrcja1igqkjjn1w425ni5f41mijdq5dpq0ymkhl29xxrf8hnx8")))) + (build-system python-build-system) + (propagated-inputs + `(("python-pygame" ,python-pygame) + ("python-six" ,python-six))) + (home-page "http://stellarengine.nongnu.org") + (synopsis "2D game engine for Python") + (description + "The SGE Game Engine (\"SGE\", pronounced like \"Sage\") is a +general-purpose 2D game engine. It takes care of several details fro you so +you can focus on the game itself. This makes more rapid game development +possible, and it also makes the SGE easy to learn.") + (license license:lgpl3+))) + +(define-public python2-sge-pygame + (package-with-python2 python-sge-pygame)) + +(define-public python-tmx + (package + (name "python-tmx") + (version "1.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/python-tmx/tmx-" + version ".tar.gz")) + (sha256 + (base32 + "1is107sx3lr09dqjiyn10xqhyv5x54c2ryhys9mb9j3mxjbm227l")))) + (build-system python-build-system) + (propagated-inputs + `(("python-six" ,python-six))) + (home-page "http://python-tmx.nongnu.org") + (synopsis "Python library for the @code{Tiled} TMX format") + (description + "Python TMX reads and writes the @code{Tiled} TMX format in a simple way. +This is useful for map editors or generic level editors, and it's also useful +for using a map editor or generic level editor like Tiled to edit your game's +levels.") + (license (list license:asl2.0 + ;; Documentation (only available in the source tarball) is + ;; under the CC0 license. + license:cc0)))) + +(define-public python2-tmx + (let ((python2-tmx (package-with-python2 python-tmx))) + (package + (inherit python2-tmx) + (propagated-inputs + `(("python2-pathlib" ,python2-pathlib) + ,@(package-propagated-inputs python2-tmx)))))) + (define-public tiled (package (name "tiled") @@ -253,7 +316,7 @@ clone.") ("libjpeg" ,libjpeg) ("libsndfile" ,libsndfile) ("openal" ,openal))) - (home-page "http://www.sfml-dev.org") + (home-page "https://www.sfml-dev.org") (synopsis "Simple and Fast Multimedia Library") (description "SFML provides a simple interface to the various computer components, @@ -305,7 +368,7 @@ sounds from presets such as \"explosion\" or \"powerup\".") (source (origin (method url-fetch) (uri (string-append - "http://icculus.org/physfs/downloads/physfs-" + "https://icculus.org/physfs/downloads/physfs-" version ".tar.bz2")) (file-name (string-append name "-" version ".tar.gz")) (sha256 @@ -318,7 +381,7 @@ sounds from presets such as \"explosion\" or \"powerup\".") `(("zlib" ,zlib))) (native-inputs `(("doxygen" ,doxygen))) - (home-page "http://icculus.org/physfs") + (home-page "https://icculus.org/physfs") (synopsis "File system abstraction library") (description "PhysicsFS is a library to provide abstract access to various archives. @@ -510,7 +573,7 @@ etc.") (description "Aseprite is a tool for creating 2D pixel art for video games. In addition to basic pixel editing features, Aseprite can assist in the creation of animations, tiled graphics, texture atlases, and more.") - (home-page "http://www.aseprite.org/") + (home-page "https://www.aseprite.org/") (license license:gpl2+))) (define-public qqwing @@ -655,7 +718,7 @@ interface (API).") ("libsmpeg" ,libsmpeg) ("portmidi" ,portmidi) ("v4l-utils" ,v4l-utils))) - (home-page "http://www.pygame.org") + (home-page "https://www.pygame.org") (synopsis "SDL wrapper for Python") (description "Pygame is a set of Python modules designed for writing games. Pygame adds functionality on top of the excellent SDL library. This allows you diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 0e0e68afcc..4c297005dc 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -21,12 +21,15 @@ ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> ;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com> ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 nee <nee-git@hidamari.blue> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,11 +54,13 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix svn-download) + #:use-module (guix gexp) #: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 build-tools) #:use-module (gnu packages admin) #:use-module (gnu packages audio) #:use-module (gnu packages avahi) @@ -82,13 +87,16 @@ #:use-module (gnu packages image) #:use-module (gnu packages ncurses) #:use-module (gnu packages netpbm) + #:use-module (gnu packages networking) #:use-module (gnu packages ocaml) #:use-module (gnu packages python) #:use-module (gnu packages readline) + #:use-module (gnu packages textutils) #:use-module (gnu packages xorg) #:use-module (gnu packages pkg-config) #:use-module (gnu packages databases) #:use-module (gnu packages sdl) + #:use-module (gnu packages swig) #:use-module (gnu packages texinfo) #:use-module (gnu packages check) #:use-module (gnu packages fonts) @@ -114,6 +122,12 @@ #:use-module (gnu packages messaging) #:use-module (gnu packages upnp) #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages bison) + #:use-module (gnu packages flex) + #:use-module (gnu packages cmake) + #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages networking) #:use-module (guix build-system gnu) #:use-module (guix build-system haskell) #:use-module (guix build-system python) @@ -225,7 +239,7 @@ representation of the playing board.") (define-public gnubik (package (name "gnubik") - (version "2.4.2") + (version "2.4.3") (source (origin (method url-fetch) @@ -233,7 +247,7 @@ representation of the playing board.") version ".tar.gz")) (sha256 (base32 - "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5")))) + "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) ("mesa" ,mesa) @@ -431,7 +445,7 @@ that beneath its ruins lay buried an ancient evil.") (lambda _ (substitute* "acinclude.m4" (("ncursesw5-config") "ncursesw6-config")) - (zero? (system* "sh" "autogen.sh"))))))) + (zero? (system* "sh" "autogen.sh"))))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) @@ -596,14 +610,14 @@ To that extent, it also includes a front-end for managing all of your D-Mods.") (define freedink-data (package (name "freedink-data") - (version "1.08.20140901") + (version "1.08.20170401") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/freedink/freedink-data-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "04f1aa8gfz30qkgv7chjz5n1s8v5hbqs01h2113cq1ylm3isd5sp")))) + "1zx7qywibhznj7bnz217404scr8dfh0xj24xjihnda5iapzz7lz8")))) (build-system gnu-build-system) (arguments `(#:phases @@ -1045,14 +1059,14 @@ reference interpreter, using the Glk API.") (define-public fizmo (package (name "fizmo") - (version "0.7.9") + (version "0.8.4") (source (origin (method url-fetch) (uri (string-append "https://christoph-ender.de/fizmo/source/" name "-" version ".tar.gz")) (sha256 (base32 - "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7")))) + "1sd988db2302r7cbfcfghbmg8ck43c6hvnlnlpb0rqxb7pm9cwyy")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -1065,12 +1079,13 @@ reference interpreter, using the Glk API.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("libjpeg" ,libjpeg) + `(("freetype" ,freetype) + ("libjpeg" ,libjpeg) ("libpng" ,libpng) ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) ("ncurses" ,ncurses) - ("sdl" ,sdl))) + ("sdl2" ,sdl2))) (home-page "https://christoph-ender.de/fizmo/") (synopsis "Z-machine interpreter") (description @@ -1082,7 +1097,7 @@ either by Infocom or created using the Inform compiler.") (define-public retroarch (package (name "retroarch") - (version "1.3.6") + (version "1.5.0") (source (origin (method url-fetch) @@ -1090,7 +1105,7 @@ either by Infocom or created using the Inform compiler.") version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "1xar0wagcz50clwwkvjg4zq9m1sjqw47vw3xx44pisdj94g21m5y")))) + (base32 "1rbdax3i33myg1v938pxy28117ihff2lml1ky6g70c8099fkirjx")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests @@ -1396,14 +1411,14 @@ older games.") (define-public gamine (package (name "gamine") - (version "1.4") + (version "1.5") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gamine-game/" "gamine-" version ".tar.gz")) (sha256 (base32 - "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h")))) + "08wnk7w84c2413hwny89j2cn89cvfdf67bfc6wl0bf475if0mf4h")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1476,7 +1491,7 @@ is programmed in Haskell.") (define-public manaplus (package (name "manaplus") - (version "1.7.3.4") + (version "1.7.5.14") (source (origin (method url-fetch) (uri (string-append @@ -1484,7 +1499,7 @@ is programmed in Haskell.") version "/manaplus-" version ".tar.xz")) (sha256 (base32 - "0mbxzsgjg16pqa3jnxkd7wwvw1lrx455r7fvwjfhzp0yv7acrn10")))) + "1b5q79jkdrck5lq8lvhnpq2mly257r8lylp7b8sp8xn4365f86ch")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -1498,7 +1513,6 @@ is programmed in Haskell.") ("curl" ,curl) ("libxml2" ,libxml2) ("mesa" ,mesa) - ("physfs" ,physfs) ("sdl-union" ,(sdl-union)))) (home-page "http://manaplus.org") (synopsis "Client for 'The Mana World' and similar games") @@ -2146,14 +2160,14 @@ and a game metadata scraper.") (define openttd-engine (package (name "openttd-engine") - (version "1.6.1") + (version "1.7.0") (source (origin (method url-fetch) (uri (string-append "http://binaries.openttd.org/releases/" version "/openttd-" version "-source.tar.xz")) (sha256 (base32 - "1ak32fj5xkk2fvmm3g8i7wzmk4bh2ijsp8fzvvw5wj6365p9j24v")) + "1q4r5860dpkkw4fpfz3f8mvdd8xjpnwwzr9zybgmgb255bs0g4yz")) (modules '((guix build utils))) (snippet ;; The DOS port contains proprietary software. @@ -2193,8 +2207,8 @@ and a game metadata scraper.") passengers by land, water and air. It is a re-implementation of Transport Tycoon Deluxe with many enhancements including multiplayer mode, internationalization support, conditional orders and the ability to clone, -autoreplace and autoupdate vehicles. This package only includes the game engine. When you start -it you will be prompted to download a graphics set.") +autoreplace and autoupdate vehicles. This package only includes the game +engine. When you start it you will be prompted to download a graphics set.") (home-page "http://openttd.org/") ;; This package is GPLv2, except for a few files located in ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib @@ -2681,6 +2695,69 @@ your way through an underground cave system in search of the Grue. Can you capture it and get out alive?") (license license:agpl3+))) +(define-public lierolibre + (package + (name "lierolibre") + (version "0.5") + (source (origin + (method url-fetch) + (uri (string-append "https://launchpad.net/lierolibre/trunk/" + version "/+download/lierolibre-" + version ".tar.xz")) + (sha256 + (base32 + "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9")) + (patches + (search-patches "lierolibre-check-unaligned-access.patch" + "lierolibre-try-building-other-arch.patch" + "lierolibre-remove-arch-warning.patch" + "lierolibre-newer-libconfig.patch" + "lierolibre-is-free-software.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete pre-compiled files. + (delete-file "data/LIERO.CHR") + (delete-file "data/LIERO.SND") + #t)))) + (build-system gnu-build-system) + (native-inputs + `(("imagemagick" ,imagemagick) + ("pkg-config" ,pkg-config) + ("util-linux" ,util-linux) + ("sox" ,sox))) + (inputs + `(("boost" ,boost) + ("libconfig" ,libconfig) + ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer))) + ("zlib" ,zlib))) + (home-page "https://gitlab.com/lierolibre/lierolibre") + (synopsis "Old-school earthworm action game") + (description + "lierolibre is an earthworm action game where you fight another player +(or the computer) underground using a wide array of weapons. + +Features: +@itemize +@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All +and Game of Tag, plus AI-players without true intelligence! +@item Dat nostalgia. +@item Extensions via a hidden F1 menu: +@itemize +@item Replays +@item Game controller support +@item Powerlevel palettes +@end itemize +@item Ability to write game variables to plain text files. +@item Ability to load game variables from both EXE and plain text files. +@item Scripts to extract and repack graphics, sounds and levels. +@end itemize + +To switch between different window sizes, use F6, F7 and F8, to switch to +fullscreen, use F5 or Alt+Enter.") + ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2. + (license (list license:bsd-2 license:boost1.0 license:wtfpl2)))) + (define-public warzone2100 (package (name "warzone2100") @@ -2847,6 +2924,7 @@ safety of the Chromium vessel.") ,(string-append "PREFIX=" %output) "GNOME_PREFIX=$(PREFIX)" "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d") + #:parallel-build? #f ;fails on some systems #:tests? #f ;No tests #:phases (modify-phases %standard-phases (delete 'configure) ;no configure phase @@ -3167,7 +3245,7 @@ throwing people around in pseudo-randomly generated buildings.") (define-public hyperrogue (package (name "hyperrogue") - (version "9.4c") + (version "9.4g") ;; When updating this package, be sure to update the "hyperrogue-data" ;; origin in native-inputs. (source (origin @@ -3178,7 +3256,7 @@ throwing people around in pseudo-randomly generated buildings.") "-src.tgz")) (sha256 (base32 - "1ri5fllnhqjm3dlnl1xbb9mlv79iigc940vbvcnk0v5k6p58pavq")))) + "09j9gnx701x28zfkrv3rjqlr56p89hyxk78gkpmmdfjgcq076pc2")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -3233,14 +3311,14 @@ throwing people around in pseudo-randomly generated buildings.") (string-append "hyperrogue" (string-join (string-split ,version #\.) "") - "-win/sounds/credits.txt") "-d" sounds)) + "/sounds/credits.txt") "-d" sounds)) ;; Extract sounds and music into sounds directory. (zero? (system* "unzip" "-j" data (string-append "hyperrogue" (string-join (string-split ,version #\.) "") - "-win/*.ogg") "-d" sounds))))))))) + "/*.ogg") "-d" sounds))))))))) (native-inputs `(("hyperrogue-data" ,(origin @@ -3252,7 +3330,7 @@ throwing people around in pseudo-randomly generated buildings.") "-win.zip")) (sha256 (base32 - "1cyyrsnrixygg3zyz97hpsm6jzwbhydiwk3kl0lm7qjnw2nzkhhh")))) + "1r57db4hm7fjcd27p8b6cdsnq2cgkym2kp9lrw7ha2asdf8w6gkb")))) ("unzip" ,unzip))) (inputs `(("font-dejavu" ,font-dejavu) @@ -3458,3 +3536,732 @@ starting a decryption sequence to reveal the original plaintext characters.") game, where you control the armies of one of seven different factions: Tech, Magic, Egypt, Indians, Norsemen, Persian or Romans.") (license license:gpl2+))) + +(define-public freegish + (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7") + (revision "1")) + (package + (name "freegish") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/freegish/freegish.git") + (commit commit))) + (sha256 + (base32 + "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx")) + (modules '((guix build utils))) + ;; The audio files in the "music" directory are licensed under + ;; CC-BY-NC, so we delete them. + (snippet + '(begin + (delete-file-recursively "music") + #t)))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; no tests included + #:configure-flags + (list "-DCMAKE_INSTALL_FHS=ON") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-DATAPATH + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("^option\\(INSTALL_FHS" line) + (string-append "add_definitions(-DDATAPATH=\"" + (assoc-ref outputs "out") "/share/freegish\")\n" + line))) + #t))))) + (inputs + `(("sdl-union" ,(sdl-union (list sdl sdl-mixer))) + ("openal" ,openal) + ("libvorbis" ,libvorbis) + ("libogg" ,libogg) + ("mesa" ,mesa) + ("libpng" ,libpng) + ("zlib" ,zlib))) + (home-page "https://github.com/freegish/freegish") + (synopsis "Side-scrolling physics platformer with a ball of tar") + (description "In FreeGish you control Gish, a ball of tar who lives +happily with his girlfriend Brea, until one day a mysterious dark creature +emerges from a sewer hole and pulls her below ground.") + ;; The textures are available under the Expat license. All other assets + ;; (including levels) are covered under CC-BY-SA or public domain. The + ;; source code is under GPLv2+. + (license (list license:gpl2+ + license:expat + license:public-domain + license:cc-by-sa3.0))))) + +(define-public cdogs-sdl + (package + (name "cdogs-sdl") + (version "0.6.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/cxong/cdogs-sdl/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "08c3y8ijimx6mp0gm90abz4lsnbflqka519q2v0id0096vsc2pxn")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list (string-append "-DCDOGS_DATA_DIR=" + (assoc-ref %outputs "out") + "/share/cdogs-sdl/")))) + (inputs + `(("sdl2" ,sdl2) + ("sdl2-image" ,sdl2-image) + ("sdl2-mixer" ,sdl2-mixer))) + (home-page "http://cxong.github.io/cdogs-sdl/") + (synopsis "Classic overhead run-and-gun game") + (description "C-Dogs SDL is a classic overhead run-and-gun game, +supporting up to 4 players in co-op and deathmatch modes. Customize your +player, choose from many weapons, and blast, slide and slash your way through +over 100 user-created campaigns.") + ;; GPLv2+ for code (includes files under BSD-2 and BSD-3), + ;; CC0/CC-BY/CC-BY-SA for assets. + (license (list license:gpl2+ + license:bsd-2 + license:bsd-3 + license:cc0 + license:cc-by3.0 + license:cc-by-sa3.0)))) + +(define-public kiki + (package + (name "kiki") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/kiki/kiki-src/" + version "/kiki-" version "-src.tgz")) + (sha256 + (base32 + "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file (find-files "." "\\.dll$")) + #t)) + (patches + (search-patches "kiki-level-selection-crash.patch" + "kiki-makefile.patch" + "kiki-missing-includes.patch" + "kiki-portability-64bit.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; there are no tests + #:make-flags '("CXX=g++") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "CPLUS_INCLUDE_PATH" + (string-append (assoc-ref inputs "sdl-union") + "/include/SDL:" + (assoc-ref inputs "python") + "/include/python2.7:" + (getenv "CPLUS_INCLUDE_PATH"))) + (substitute* "src/main/main.cpp" + (("#include <SDL.h>" line) + (string-append line " +#define K_INCLUDE_GLUT +#include \"KIncludeTools.h\"")) + (("// initialize SDL" line) + (string-append "glutInit(&argc,argv);\n" line))) + (substitute* "src/main/KikiController.cpp" + (("getenv\\(\"KIKI_HOME\"\\)") + (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\""))) + (substitute* "linux/Makefile" + (("CXXOPTS =" line) + (string-append line " -fpermissive")) + (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7") + (("PYTHONHOME =.*") + (string-append "PYTHONHOME = " + (assoc-ref inputs "python") + "/lib/python2.7/")) + (("\\$\\(GLLIBS\\)" line) + (string-append line " -lm -lpython2.7"))) + (substitute* "src/main/KikiPythonWidget.h" + (("#define __KikiPythonWidget" line) + (string-append line "\n#include \"KikiPython.h\""))) + #t)) + (add-before 'build 'build-kodilib + (lambda* (#:key make-flags #:allow-other-keys) + (with-directory-excursion "kodilib/linux" + (zero? (apply system* "make" make-flags))))) + (add-after 'build-kodilib 'chdir + (lambda _ (chdir "linux") #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share/kiki"))) + (mkdir-p bin) + (mkdir-p share) + (install-file "kiki" bin) + (copy-recursively "../py" (string-append share "/py")) + (copy-recursively "../sound" (string-append share "/sound")) + #t)))))) + (inputs + `(("glu" ,glu) + ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start. + ("freeglut" ,freeglut-2.8) + ("sdl-union" ,(sdl-union (list sdl + sdl-mixer + sdl-image))) + ("python" ,python-2))) + (native-inputs + `(("swig" ,swig))) + (home-page "http://kiki.sourceforge.net/") + (synopsis "3D puzzle game") + (description "Kiki the nano bot is a 3D puzzle game. It is basically a +mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a +small robot living in the nano world, repair its maker.") + ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/ + ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright> + ;; for a statement from the author. + (license license:public-domain))) + +(define-public teeworlds + (package + (name "teeworlds") + (version "0.6.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/teeworlds/teeworlds/" + "archive/" version "-release.tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1mqhp6xjl75l49050cid36wxyjn1qr0vjx1c709dfg1lkvmgs6l3")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file-recursively + '("src/engine/external/wavpack/" + "src/engine/external/zlib/")) + #t)) + (patches + (search-patches "teeworlds-use-latest-wavpack.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no tests included + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + ;; Embed path to assets. + (substitute* "src/engine/shared/storage.cpp" + (("#define DATA_DIR.*") + (string-append "#define DATA_DIR \"" + (assoc-ref outputs "out") + "/share/teeworlds/data" + "\""))) + + ;; Bam expects all files to have a recent time stamp. + (for-each (lambda (file) + (utime file 1 1)) + (find-files ".")) + + ;; Do not use bundled libraries. + (substitute* "bam.lua" + (("if config.zlib.value == 1 then") + "if true then") + (("wavpack = .*") + "wavpack = {} +settings.link.libs:Add(\"wavpack\")\n")) + (substitute* "src/engine/client/sound.cpp" + (("#include <engine/external/wavpack/wavpack.h>") + "#include <wavpack/wavpack.h>")) + #t)) + (replace 'build + (lambda _ + (zero? (system* "bam" "-a" "-v" "release")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (data (string-append out "/share/teeworlds/data"))) + (mkdir-p bin) + (mkdir-p data) + (for-each (lambda (file) + (install-file file bin)) + '("teeworlds" "teeworlds_srv")) + (copy-recursively "data" data) + #t)))))) + ;; FIXME: teeworlds bundles the sources of "pnglite", a two-file PNG + ;; library without a build system. + (inputs + `(("freetype" ,freetype) + ("glu" ,glu) + ("mesa" ,mesa) + ("sdl-union" ,(sdl-union (list sdl + sdl-mixer + sdl-image))) + ("wavpack" ,wavpack) + ("zlib" ,zlib))) + (native-inputs + `(("bam" ,bam) + ("python" ,python-2))) + (home-page "https://www.teeworlds.com") + (synopsis "2D retro multiplayer shooter game") + (description "Teeworlds is an online multiplayer game. Battle with up to +16 players in a variety of game modes, including Team Deathmatch and Capture +The Flag. You can even design your own maps!") + (license license:bsd-3))) + +(define-public enigma + (package + (name "enigma") + (version "1.21") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/enigma-game/" + "Release%20" version "/enigma-" + version ".tar.gz")) + (sha256 + (base32 + "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--with-system-enet") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'find-sdl + (lambda _ + (substitute* "configure" + (("SDL_ttf.h") "SDL/SDL_ttf.h")) + (substitute* '("tools/ttf2bmf.cc" + "lib-src/enigma-core/ecl_font.cc" + "lib-src/enigma-core/ecl_video.cc" + "lib-src/enigma-core/ecl_buffer.hh" + "src/SoundEngine.cc" + "src/SoundEngine.hh" + "src/MusicManager.cc" + "src/MusicManager.hh" + "src/d_models.cc" + "src/main.cc" + "src/network.cc") + (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header) + (string-append "#include \"SDL/SDL_" header ".h\""))) + (substitute* "src/main.cc" + (("#include <SDL_(image|ttf|mixer).h>" line header) + (string-append "#include \"SDL/SDL_" header ".h\""))) + #t))))) + (inputs + `(("xerces-c" ,xerces-c) + ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf))) + ("curl" ,curl) + ("enet" ,enet))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("imagemagick" ,imagemagick))) + (home-page "http://www.nongnu.org/enigma") + (synopsis "Puzzle game with a dexterity component") + (description "Enigma is a puzzle game with 550 unique levels. The object +of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones. +Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams, +and most of all, countless hairy puzzles usually block your direct way to the +Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you +get bored) interact in many unexpected ways, and since many of them follow the +laws of physics (Enigma’s special laws of physics, that is), controlling them +with the mouse isn’t always trivial.") + (license license:gpl2+))) + +(define-public fillets-ng + (package + (name "fillets-ng") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/fillets/" + "Fish%20Fillets%20-%20Next%20Generation/" + version "/fillets-ng-" version ".tar.gz")) + (sha256 + (base32 + "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-lua=" + (assoc-ref %build-inputs "lua"))) + #:make-flags + (list (string-append "CFLAGS=-I" + (assoc-ref %build-inputs "sdl-union") + "/include/SDL") + (string-append "CXXFLAGS=-I" + (assoc-ref %build-inputs "sdl-union") + "/include/SDL")) + #:phases + (modify-phases %standard-phases + ;; Lua 5.1 does not provide it. + (add-after 'unpack 'do-not-link-with-lualib + (lambda _ + (substitute* "configure" + (("-llualib") "")) + #t)) + (add-after 'install 'install-data + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((data (string-append (assoc-ref outputs "out") + "/share/games/fillets-ng"))) + (mkdir-p data) + (zero? (system* "tar" "-xvf" + (assoc-ref inputs "fillets-ng-data") + "--strip-components=1" + "-C" data)))))))) + (inputs + `(("sdl-union" ,(sdl-union (list sdl + sdl-mixer + sdl-image + sdl-ttf))) + ("fribidi" ,fribidi) + ("libx11" ,libx11) + ("lua" ,lua-5.1))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("fillets-ng-data" + ,(origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/fillets/" + "Fish%20Fillets%20-%20Next%20Generation/" + version "/fillets-ng-data-" version ".tar.gz")) + (sha256 + (base32 + "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh")))))) + (home-page "http://fillets.sourceforge.net/") + (synopsis "Puzzle game") + (description "Fish Fillets NG is strictly a puzzle game. The goal in +every of the seventy levels is always the same: find a safe way out. The fish +utter witty remarks about their surroundings, the various inhabitants of their +underwater realm quarrel among themselves or comment on the efforts of your +fish. The whole game is accompanied by quiet, comforting music.") + (license license:gpl2+))) + +(define-public crawl + (package + (name "crawl") + (version "0.19.5") + (source + (origin + (method url-fetch) + (uri (list + ;; Older releases get moved into a versioned directory + (string-append "http://crawl.develz.org/release/" + (version-major+minor version) "/stone_soup-" + version "-nodeps.tar.xz") + ;; Only the latest release is in this directory + (string-append "http://crawl.develz.org/release/stone_soup-" + version "-nodeps.tar.xz"))) + (sha256 + (base32 + "00yl2lb2shglxlxzpyk99zvglfx4amjybqwnzdcasvbiggb4cj18")))) + (build-system gnu-build-system) + (inputs + `(("lua51" ,lua-5.1) + ("ncurses" ,ncurses) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("perl" ,perl) + ("pkg-config" ,pkg-config))) + (arguments + '(#:make-flags + (let* ((sqlite (assoc-ref %build-inputs "sqlite")) + (out (assoc-ref %outputs "out"))) + (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include") + (string-append "prefix=" out) + "SAVEDIR=~/.crawl" + ;; don't build any bundled dependencies + "BUILD_LUA=" + "BUILD_SQLITE=" + "BUILD_ZLIB=" + "-Csource")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check) + ;; Test cases require the source to be rebuild with the -DDEBUG define. + ;; Do 'check before 'build to avoid a 3rd build on make install. + (add-before 'build 'check + (lambda* (#:key inputs outputs make-flags #:allow-other-keys) + (setenv "HOME" (getcwd)) + ;; Fake a terminal for the test cases. + (setenv "TERM" "xterm-256color") + (zero? (apply system* "make" "debug" "test" + (format #f "-j~d" (parallel-job-count)) + ;; Force command line build for test cases. + (append make-flags '("GAME=crawl" "TILES="))))))))) + (synopsis "Roguelike dungeon crawler game") + (description "Dungeon Crawl Stone Soup is a roguelike adventure through +dungeons filled with dangerous monsters in a quest to find the mystifyingly +fabulous Orb of Zot.") + (home-page "https://crawl.develz.org") + (license (list license:gpl2+ + license:bsd-2 + license:bsd-3 + license:cc0 + license:expat + license:zlib + license:asl2.0)))) + +(define-public crawl-tiles + (package + (inherit crawl) + (name "crawl-tiles") + (arguments + (substitute-keyword-arguments + (package-arguments crawl) + ((#:make-flags flags) + `(let ((dejavu (assoc-ref %build-inputs "font-dejavu"))) + (cons* + (string-append "PROPORTIONAL_FONT=" dejavu + "/share/fonts/truetype/DejaVuSans.ttf") + (string-append "MONOSPACED_FONT=" dejavu + "/share/fonts/truetype/DejaVuSansMono.ttf") + "TILES=y" + ;; Rename the executable to allow parallel installation with crawl. + "GAME=crawl-tiles" + ,flags))))) + (inputs + `(,@(package-inputs crawl) + ("font-dejavu" ,font-dejavu) + ("freetype6" ,freetype) + ("glu" ,glu) + ("libpng" ,libpng) + ("sdl2" ,sdl2) + ("sdl2-image" ,sdl2-image) + ("sdl2-mixer" ,sdl2-mixer))) + (native-inputs + `(,@(package-native-inputs crawl) + ;; TODO: Add advpng or pngcrush for additional PNG optimization. + ("which" ,which))) + (synopsis "Graphical roguelike dungeon crawler game"))) + +(define-public lugaru + (package + (name "lugaru") + (version "1.2") + (source (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DSYSTEM_INSTALL=ON") + ;; no test target + #:tests? #f)) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("sdl2" ,sdl2) + ("glu" ,glu) + ("libjpeg" ,libjpeg-turbo) + ("libpng" ,libpng) + ("openal" ,openal) + ("vorbis" ,libvorbis) + ("zlib" ,zlib))) + (home-page "https://osslugaru.gitlab.io") + (synopsis "Cross-platform third-person action game") + (description "Lugaru is a third-person action game. The main character, +Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills. +In his quest to find those responsible for slaughtering his village, he uncovers +a far-reaching conspiracy involving the corrupt leaders of the rabbit republic +and the starving wolves from a nearby den. Turner takes it upon himself to +fight against their plot and save his fellow rabbits from slavery.") + (license (list license:gpl2+ ; code + ;; assets: + license:cc-by-sa3.0 + license:cc-by-sa4.0)))) + +(define-public 0ad-data + (package + (name "0ad-data") + (version "0.0.21-alpha") + (source + (origin + (method url-fetch) + (uri (string-append "http://releases.wildfiregames.com/0ad-" + version "-unix-data.tar.xz")) + (file-name (string-append name "-" version ".tar.xz")) + (sha256 + (base32 + "15xadyrpvq27lm9p1ny7bcmmv56m16h3xadbkdx69gfkzxc3razk")) + (modules '((guix build utils))) + (snippet + #~(begin + (for-each + (lambda (name) + (let* ((dir (string-append "binaries/data/mods/" name)) + (file (string-append dir "/" name ".zip")) + (unzip #$(file-append unzip "/bin/unzip"))) + (system* unzip "-d" dir file) + (delete-file file))) + '("mod" "public")) + #t)))) + (build-system trivial-build-system) + (native-inputs `(("tar" ,tar) + ("xz" ,xz))) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((out (assoc-ref %outputs "out")) + (source (assoc-ref %build-inputs "source")) + (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar")) + (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin"))) + (setenv "PATH" xz-path) + (mkdir out) + (zero? (system* tar "xvf" source "-C" out "--strip=3")))))) + (synopsis "Data files for 0ad") + (description "0ad-data provides the data files required by the game 0ad.") + (home-page "https://play0ad.com") + (license (list (license:fsdg-compatible + "http://tavmjong.free.fr/FONTS/ArevCopyright.txt" + (license:license-comment + (package-license font-bitstream-vera))) + (package-license font-bitstream-vera) + license:cc-by-sa3.0 + license:expat + license:gfl1.0 + license:gpl2+ + license:gpl3+)))) + +(define-public 0ad + (package + (name "0ad") + (version "0.0.21-alpha") + (source + (origin + (method url-fetch) + (uri (string-append "http://releases.wildfiregames.com/0ad-" + version "-unix-build.tar.xz")) + (file-name (string-append name "-" version ".tar.xz")) + (sha256 + (base32 + "1kw3hqnr737ipx4f03khz3hvsh3ha7r8iy9njppk2faa53j27gln")) + ;; A snippet here would cause a build failure because of timestamps + ;; reset. See https://bugs.gnu.org/26734. + )) + (inputs + `(("0ad-data" ,0ad-data) + ("curl" ,curl) + ("enet" ,enet) + ("gloox" ,gloox) + ("icu4c" ,icu4c) + ("libpng" ,libpng) + ("libvorbis" ,libvorbis) + ("libxcursor" ,libxcursor) + ("libxml2" ,libxml2) + ("miniupnpc" ,miniupnpc) + ("mozjs-38" ,mozjs-38) + ("openal" ,openal) + ("sdl2" ,sdl2) + ("wxwidgets" ,wxwidgets) + ("zlib" ,zlib))) + (native-inputs + `(("boost" ,boost) + ("cmake" ,cmake) + ("mesa" ,mesa) + ("pkg-config" ,pkg-config) + ("python-2" ,python-2))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bundles + (lambda _ + (delete-file-recursively "libraries/source/spidermonkey") + #t)) + (add-after 'unpack 'fix-x11-includes + (lambda _ + (substitute* "source/lib/sysdep/os/unix/x/x.cpp" + (("<Xlib.h>") "<X11/Xlib.h>")) + (substitute* "source/lib/sysdep/os/unix/x/x.cpp" + (("<Xatom.h>") "<X11/Xatom.h>")) + (substitute* "source/lib/sysdep/os/unix/x/x.cpp" + (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>")) + #t)) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((jobs (number->string (parallel-job-count))) + (out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (data (string-append out "/share/0ad"))) + (setenv "JOBS" (string-append "-j" jobs)) + (setenv "CC" "gcc") + (with-directory-excursion "build/workspaces" + (zero? (system* "./update-workspaces.sh" + (string-append "--libdir=" lib) + (string-append "--datadir=" data) + "--minimal-flags" + ;; TODO: "--with-system-nvtt" + "--with-system-mozjs38")))))) + (add-before 'build 'chdir + (lambda _ + (chdir "build/workspaces/gcc") + #t)) + (delete 'check) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (chdir "../../../binaries") + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib")) + (data (string-append out "/share/0ad")) + (applications (string-append out "/share/applications")) + (pixmaps (string-append out "/share/pixmaps")) + (0ad-data (assoc-ref inputs "0ad-data"))) + ;; data + (copy-recursively "data" data) + (for-each (lambda (file) + (symlink (string-append 0ad-data "/" file) + (string-append data "/" file))) + '("config" "mods/mod" "mods/public" "tools")) + ;; libraries + (for-each (lambda (file) + (install-file file lib)) + (find-files "system" "\\.so$")) + ;; binaries + (install-file "system/pyrogenesis" bin) + (with-directory-excursion bin + (symlink "pyrogenesis" "0ad")) + ;; resources + (with-directory-excursion "../build/resources" + (install-file "0ad.desktop" applications) + (install-file "0ad.png" pixmaps)) + #t))) + (add-after 'install 'check + (lambda _ + (with-directory-excursion "system" + (zero? (system* "./test")))))))) + (home-page "https://play0ad.com") + (synopsis "3D real-time strategy game of ancient warfare") + (description "0 A.D. is a real-time strategy (RTS) game of ancient +warfare. It's a historically-based war/economy game that allows players to +relive or rewrite the history of twelve ancient civilizations, each depicted +at their peak of economic growth and military prowess. + +0ad needs a window manager that supports 'Extended Window Manager Hints'.") + (license (list license:bsd-2 + license:bsd-3 + license:expat + license:gpl2+ + license:ibmpl1.0 + license:isc + license:lgpl2.1 + license:lgpl3 + license:mpl2.0 + license:zlib)))) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 0fdb5ca9b8..45b86fcc7e 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, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2014, 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com> @@ -399,6 +399,19 @@ Go. It also includes runtime support libraries for these languages.") "17xjz30jb65hcf714vn9gcxvrrji8j20xm7n33qg1ywhyzryfsph")) (patches (search-patches "gcc-strmov-store-file-names.patch" "gcc-5.0-libvtv-runpath.patch")))))) +(define-public gcc-7 + (package + (inherit gcc-6) + (version "7.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "05xwps0ci7wgxh50askpa2r9p8518qxdgh6ad7pnyk7n6p13d0ca")) + (patches (search-patches "gcc-strmov-store-file-names.patch" + "gcc-5.0-libvtv-runpath.patch")))))) ;; Note: When changing the default gcc version, update ;; the gcc-toolchain-* definitions and the gfortran definition @@ -523,6 +536,14 @@ as the 'native-search-paths' field." (custom-gcc gcc-5 "gfortran" '("fortran") %generic-search-paths)) +(define-public gfortran-6 + (custom-gcc gcc-6 "gfortran" '("fortran") + %generic-search-paths)) + +(define-public gfortran-7 + (custom-gcc gcc-7 "gfortran" '("fortran") + %generic-search-paths)) + (define-public gfortran ;; Note: Update this when GCC changes! We cannot use ;; (custom-gcc gcc "fortran" …) because that would lead to a package object @@ -538,140 +559,6 @@ as the 'native-search-paths' field." ;; a cyclic dependency. <http://debbugs.gnu.org/18101> #:separate-lib-output? #f)) -(define javac.in - (origin - (method url-fetch) - (uri (string-append "http://sources.gentoo.org/cgi-bin/viewvc.cgi/" - "gentoo-x86/dev-java/gcj-jdk/files/javac.in?revision=1.1")) - (file-name "javac.in") - (sha256 (base32 - "1c3dk4z5yfj6ic2fn3lyxs27n6pmn2wy9k0r1s17lnkf1bzkrciv")))) - -(define-public gcj - (package (inherit gcc) - (name "gcj") - (version (package-version gcc)) - (inputs - `(("fastjar" ,fastjar) - ("perl" ,perl) - ("javac.in" ,javac.in) - ("ecj-bootstrap" ,ecj-bootstrap) - ,@(package-inputs gcc))) - (native-inputs - `(("dejagnu" ,dejagnu) - ,@(if (string-prefix? "armhf" (or (%current-system) - (%current-target-system))) - `(("arm-patch" ,(origin - (method url-fetch) - (uri (search-patch "gcj-arm-mode.patch")) - (sha256 - (base32 - "1z15xs5yx6qinnb572swzxrn9f668sw7ga5280q3gznj1jyrynfn"))))) - '()) - ,@(package-native-inputs gcc))) - (native-search-paths %generic-search-paths) - - ;; Suppress the separate "lib" output, because otherwise the - ;; "lib" and "out" outputs would refer to each other, creating - ;; a cyclic dependency. <http://debbugs.gnu.org/18101> - (outputs - (delete "lib" (package-outputs gcc))) - (arguments - (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 regex) - (srfi srfi-1) - (srfi srfi-26)) - #:test-target "check-target-libjava" - ,@(package-arguments gcc)) - ((#:tests? _) #t) - ((#:configure-flags flags) - `(let ((ecj (assoc-ref %build-inputs "ecj-bootstrap"))) - `("--enable-java-home" - "--enable-gjdoc" - ,(string-append "--with-ecj-jar=" ecj) - "--enable-languages=java" - ,@(remove (cut string-match "--enable-languages.*" <>) - ,flags)))) - ((#:phases phases) - `(modify-phases ,phases - ;; Conditionally add phase to apply patch - ,@(if (string-prefix? "armhf" (or (%current-system) - (%current-target-system))) - `((add-after 'unpack 'apply-arm-patch - (lambda* (#:key inputs #:allow-other-keys) - (zero? (system* "patch" "-p1" - "-i" (assoc-ref inputs "arm-patch")))))) - '()) - (add-after - 'unpack 'add-lib-output-to-rpath - (lambda _ - (substitute* "libjava/Makefile.in" - (("libgcj_bc_dummy_LINK = .* -shared" line) - (string-append line " -Wl,-rpath=$(libdir)")) - (("libgcj(_bc)?_la_LDFLAGS =" ldflags _) - (string-append ldflags " -Wl,-rpath=$(libdir)"))))) - (add-after - 'unpack 'patch-testsuite - ;; dejagnu-1.6 removes the 'absolute' command - (lambda _ - ;; This test fails on armhf. It seems harmless enough to disable it. - (for-each delete-file '("libjava/testsuite/libjava.lang/Throw_2.java" - "libjava/testsuite/libjava.lang/Throw_2.out" - "libjava/testsuite/libjava.lang/Throw_2.jar")) - (substitute* "libjava/testsuite/lib/libjava.exp" - (("absolute") "file normalize")) - #t)) - (add-after - 'install 'install-javac-and-javap-wrappers - (lambda _ - (let* ((javac (assoc-ref %build-inputs "javac.in")) - (ecj (assoc-ref %build-inputs "ecj-bootstrap")) - (gcj (assoc-ref %outputs "out")) - (gcjbin (string-append gcj "/bin/")) - (jvm (string-append gcj "/lib/jvm/")) - (target (string-append jvm "/bin/javac"))) - - (symlink (string-append gcjbin "jcf-dump") - (string-append jvm "/bin/javap")) - - (copy-file ecj (string-append gcj "/share/java/ecj.jar")) - - ;; Create javac wrapper from the template javac.in by - ;; replacing the @VARIABLES@ with paths. - (copy-file javac target) - (patch-shebang target) - (substitute* target - (("@JAVA@") - (string-append jvm "/bin/java")) - (("@ECJ_JAR@") - (string-append gcj "/share/java/ecj.jar")) - (("@RT_JAR@") - (string-append jvm "/jre/lib/rt.jar")) - (("@TOOLS_JAR@") - (string-append jvm "/lib/tools.jar"))) - (chmod target #o755) - #t))) - (add-after - 'install 'remove-broken-or-conflicting-files - (lambda _ - (let ((out (assoc-ref %outputs "out"))) - (for-each - delete-file - (append (find-files (string-append out "/lib/jvm/jre/lib") - "libjawt.so") - (find-files (string-append out "/bin") - ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)")))) - #t)))))))) - -(define ecj-bootstrap - (origin - (method url-fetch) - (uri "ftp://sourceware.org/pub/java/ecj-4.9.jar") - (sha256 - (base32 - "1k9lgm3qamf6zy534pa2zwskr8mpiqrngbv1vw9j4y1ghrdyf1lm")))) - (define-public gcc-objc-4.8 (custom-gcc gcc-4.8 "gcc-objc" '("objc") (list (search-path-specification diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index 62c8fd8588..aac0f9664c 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -32,7 +32,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) - #:use-module ((guix licenses) #:select (non-copyleft))) + #:use-module ((guix licenses) #:select (non-copyleft perl-license))) (define-public gd (package @@ -139,7 +139,7 @@ most common applications of GD involve website development.") (description "GD.pm is an autoloadable interface module for libgd, a popular library for creating and manipulating PNG files. With this library you can create PNG images on the fly or modify existing files.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-gd-securityimage (package @@ -166,4 +166,4 @@ security (captcha) images. The final output is the actual graphic data, the mime type of the graphic, and the created random string. The module also has some \"styles\" that are used to create the background (or foreground) of the image.") - (license (package-license perl)))) + (license perl-license))) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 33b8f51b6d..3a24580b77 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> @@ -131,6 +131,7 @@ printing, and psresize, for adjusting page sizes.") (package (name "ghostscript") (version "9.14.0") + ;; XXX Try removing the bundled copy of jbig2dec. (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-" @@ -144,6 +145,7 @@ printing, and psresize, for adjusting page sizes.") "ghostscript-CVE-2016-7978.patch" "ghostscript-CVE-2016-7979.patch" "ghostscript-CVE-2016-8602.patch" + "ghostscript-CVE-2017-8291.patch" "ghostscript-runpath.patch")) (modules '((guix build utils))) (snippet @@ -208,7 +210,7 @@ output file formats and printers.") (properties '((upstream-name . "gnu-ghostscript"))))) (define-public ghostscript/x - (package (inherit ghostscript) + (package/inherit ghostscript (name (string-append (package-name ghostscript) "-with-x")) (inputs `(("libxext" ,libxext) ("libxt" ,libxt) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 15eb5bc084..362e2047fa 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -126,7 +126,7 @@ buffers.") (define-public gimp (package (name "gimp") - (version "2.8.18") + (version "2.8.22") (source (origin (method url-fetch) (uri (string-append "http://download.gimp.org/pub/gimp/v" @@ -134,10 +134,10 @@ buffers.") "/gimp-" version ".tar.bz2")) (sha256 (base32 - "0halh6sl3d2j9gahyabj6h6r3yyldcy7sfb4qrfazpkqqr3j5p9r")))) + "12k3lp938qdc9cqj29scg55f3bb8iav2fysd29w0s49bqmfa71wi")))) (build-system gnu-build-system) (outputs '("out" - "doc")) ;8 MiB of gtk-doc HTML + "doc")) ;5 MiB of gtk-doc HTML (arguments '(#:configure-flags (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 37a1bd9098..40b756394e 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,12 +28,14 @@ #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages bison) + #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages guile) + #:use-module (gnu packages image) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) #:use-module (gnu packages pkg-config) @@ -121,6 +124,21 @@ the mouse, keyboard and joystick functions. Freeglut is released under the X-Consortium license.") (license license:x11))) +;; Needed for "kiki". +(define-public freeglut-2.8 + (package (inherit freeglut) + (name "freeglut") + (version "2.8.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/freeglut/freeglut/" + version "/freeglut-" version ".tar.gz")) + (sha256 + (base32 + "16lrxxxd9ps9l69y3zsw6iy0drwjsp6m26d1937xj71alqk6dr6x")))) + (build-system gnu-build-system))) + (define-public ftgl (package (name "ftgl") @@ -199,17 +217,21 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "13.0.5") + (version "17.0.4") (source (origin (method url-fetch) - (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/" - version "/mesa-" version ".tar.xz")) + (uri (list (string-append "ftp://ftp.freedesktop.org/pub/mesa/" + "mesa-" version ".tar.xz") + (string-append "ftp://ftp.freedesktop.org/pub/mesa/" + version "/mesa-" version ".tar.xz"))) (sha256 (base32 - "11zgynii1wz17131ml1mmblpwib8m88zz2jwi5h5llh1r3iagkmz")) + "0im3ca1vwwmkjf5w761vh7vabr4vrrdxpckr0wm974x18n2xqs8j")) (patches - (search-patches "mesa-wayland-egl-symbols-check-mips.patch")))) + (search-patches "mesa-fix-32bit-test-failures.patch" + "mesa-wayland-egl-symbols-check-mips.patch" + "mesa-skip-disk-cache-test.patch")))) (build-system gnu-build-system) (propagated-inputs `(("glproto" ,glproto) @@ -263,7 +285,7 @@ also known as DXTn or DXTC) for Mesa.") ;; Without floating point texture support, drivers such as Nouveau ;; are stuck at OpenGL 2.1 instead of OpenGL 3.0+. "--enable-texture-float" - + ;; Also enable the tests. "--enable-gallium-tests" @@ -283,7 +305,8 @@ also known as DXTn or DXTC) for Mesa.") (substitute* "src/compiler/glsl/tests/lower_jumps/create_test_cases.py" (("/usr/bin/env bash") (which "bash"))) (substitute* "src/intel/genxml/gen_pack_header.py" - (("/usr/bin/env python2") (which "python"))))) + (("/usr/bin/env python2") (which "python"))) + #t)) (add-before 'build 'fix-dlopen-libnames (lambda* (#:key inputs outputs #:allow-other-keys) @@ -307,8 +330,9 @@ also known as DXTn or DXTC) for Mesa.") ;; it's never installed since Mesa removed its ;; egl_gallium support. (("\"gbm_dri\\.so") - (string-append "\"" out "/lib/dri/gbm_dri.so"))))))))) - (home-page "http://mesa3d.org/") + (string-append "\"" out "/lib/dri/gbm_dri.so"))) + #t)))))) + (home-page "https://mesa3d.org/") (synopsis "OpenGL implementation") (description "Mesa is a free implementation of the OpenGL specification - a system for rendering interactive 3D graphics. A variety of device drivers @@ -612,3 +636,35 @@ library for OpenGL. It has lean API modeled after HTML5 canvas API. It is aimed to be a practical and fun toolset for building scalable user interfaces and visualizations.") (license license:zlib))) + +(define-public gl2ps + (package + (name "gl2ps") + (version "1.3.9") + (source + (origin + (method url-fetch) + (uri (string-append + "http://geuz.org/gl2ps/src/gl2ps-" + version ".tgz")) + (sha256 + (base32 + "0h1nrhmkc4qjw2ninwpj2zbgwhc0qg6pdhpsibbvry0d2bzhns4a")))) + (build-system cmake-build-system) + (inputs + `(("libpng" ,libpng) + ("mesa" ,mesa) + ("zlib" ,zlib))) + (arguments + `(#:tests? #f)) ;; no tests + (home-page "http://www.geuz.org/gl2ps/") + (synopsis "OpenGL to PostScript printing library") + (description "GL2PS is a C library providing high quality vector +output for any OpenGL application. GL2PS uses sorting algorithms +capable of handling intersecting and stretched polygons, as well as +non-manifold objects. GL2PS provides many features including advanced +smooth shading and text rendering, culling of invisible primitives and +mixed vector/bitmap output.") + (license (list license:lgpl2.0+ + (license:fsf-free "http://www.geuz.org/gl2ps/COPYING.GL2PS" + "GPL-incompatible copyleft license"))))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 9856fef0ce..6990ab564a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2015, 2016, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> +;;; Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> @@ -21,8 +21,9 @@ ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> +;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -50,6 +51,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages admin) + #:use-module (gnu packages aspell) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) #:use-module (gnu packages base) @@ -89,6 +91,7 @@ #:use-module (gnu packages lirc) #:use-module (gnu packages lua) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages networking) #:use-module (gnu packages password-utils) #:use-module (gnu packages pcre) @@ -125,6 +128,7 @@ #:use-module (gnu packages fonts) #:use-module (gnu packages qemu) #:use-module (gnu packages zip) + #:use-module (gnu packages speech) #:use-module (srfi srfi-1)) (define-public brasero @@ -147,7 +151,14 @@ "/share/gir-1.0") (string-append "--with-typelibdir=" (assoc-ref %outputs "out") - "/lib/girepository-1.0")))) + "/lib/girepository-1.0")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'embed-growisofs + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "plugins/growisofs/burn-growisofs.c" + (("\"growisofs") (string-append "\"" (which "growisofs")))) + #t ))))) (propagated-inputs `(("hicolor-icon-theme" ,hicolor-icon-theme))) (native-inputs @@ -156,7 +167,8 @@ ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config))) (inputs - `(("glib" ,glib) + `(("dvd+rw-tools" ,dvd+rw-tools) + ("glib" ,glib) ("gnome-doc-utils" ,gnome-doc-utils) ("gstreamer" ,gstreamer) ("gst-plugins-base" ,gst-plugins-base) @@ -711,7 +723,7 @@ update-desktop-database: updates the database containing a cache of MIME types (define-public adwaita-icon-theme (package (inherit gnome-icon-theme) (name "adwaita-icon-theme") - (version "3.22.0") + (version "3.24.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -719,10 +731,33 @@ update-desktop-database: updates the database containing a cache of MIME types name "-" version ".tar.xz")) (sha256 (base32 - "1dyw8mm72wfpkn83vdqr0ifv5yhy565jhxrcjsd83nc7c3igd2y1")))) + "0ai73gs44yyw276xag6db0rlpvncy23qplp4girm80ilpprrzxyc")))) (native-inputs `(("gtk-encode-symbolic-svg" ,gtk+ "bin"))))) +(define-public tango-icon-theme + (package + (name "tango-icon-theme") + (version "0.8.90") + (source (origin + (method url-fetch) + (uri (string-append "http://tango.freedesktop.org/releases/" + "tango-icon-theme-" version ".tar.bz2")) + (sha256 + (base32 + "034r9s944b4yikyfgn602yv7s54wdzlq0qfvqh52b9x6kbx08h79")))) + (build-system gnu-build-system) + (native-inputs + `(("icon-naming-utils" ,icon-naming-utils) + ("intltool" ,intltool) + ("imagemagick" ,imagemagick) + ("pkg-config" ,pkg-config))) + (home-page "http://tango-project.org/") + (synopsis "Tango icon theme") + (description "This is an icon theme that follows the Tango visual +guidelines.") + (license license:public-domain))) + (define-public shared-mime-info (package (name "shared-mime-info") @@ -837,11 +872,11 @@ some form of information without getting in the user's way.") (home-page "https://wiki.gnome.org/Libpeas") (synopsis "GObject plugin system") (description - "Libpeas is a gobject-based plugins engine, and is targetted at giving -every application the chance to assume its own extensibility. It also has a -set of features including, but not limited to: multiple extension points; on -demand (lazy) programming language support for C, Python and JS; simplicity of -the API.") + "Libpeas is a gobject-based plugin engine, targeted at giving every +application the chance to assume its own extensibility. It also has a set of +features including, but not limited to: multiple extension points; on-demand +(lazy) programming language support for C, Python and JS; simplicity of the +API.") (license license:lgpl2.0+))) (define-public gtkglext @@ -927,7 +962,9 @@ the GNOME desktop environment.") name "-" version ".tar.xz")) (sha256 (base32 - "0mm0wldbi40am5qn0nv7psisbg01k42rwzjxl3gv11l5jj554aqk")))) + "0mm0wldbi40am5qn0nv7psisbg01k42rwzjxl3gv11l5jj554aqk")) + (patches (search-patches "libcroco-CVE-2017-7960.patch" + "libcroco-CVE-2017-7961.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1822,7 +1859,7 @@ libraries written in C.") (define-public vte (package (name "vte") - (version "0.46.1") + (version "0.48.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1830,22 +1867,15 @@ libraries written in C.") name "-" version ".tar.xz")) (sha256 (base32 - "1ipmnfazvhzjp5pjw90mmxbkizivnh7gnlqqml94lw2rqa5wy048")))) + "1hsqc7238862mqnva5qqdfxnhpwq3ak6zx6kbjj95cs04wcgpad3")))) (build-system gnu-build-system) - (arguments - ;; XXX: fails to compile tests with the default flags. - ;; vteconv.cc:774:40: - ;; error: missing sentinel in function call [-Werror=format=] - ;; g_test_init (&argc, &argv, NULL); - ;; - ;; cc1plus: some warnings being treated as errors - '(#:configure-flags '("CXXFLAGS=-Wformat=0"))) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool) ("vala" ,vala) ("gobject-introspection" ,gobject-introspection) ("glib" ,glib "bin") ; for glib-genmarshal, etc. + ("gperf" ,gperf) ("xmllint" ,libxml2))) (propagated-inputs `(("gtk+" ,gtk+) ;required by vte-2.91.pc @@ -1864,10 +1894,10 @@ editors, IDEs, etc.") (package (inherit vte) (name "vte-ng") - (version "0.46.1.a") + (version "0.48.3.a") (native-inputs `(("gtk-doc" ,gtk-doc) - ("gperf" ,gperf-3.0) + ("gperf" ,gperf) ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool) @@ -1879,7 +1909,7 @@ editors, IDEs, etc.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1c0czhsn28b5h4pk3kx89jjbdc5d2qkxhl4ywqvxfivphf2nicbp")))) + "1wdkf090zclqy11hxdjgy8f6fgzajl0xzzirajikhbaiill7f8zh")))) (arguments `(#:configure-flags '("CXXFLAGS=-Wformat=0") #:phases (modify-phases %standard-phases @@ -2414,7 +2444,7 @@ more fun.") (define-public gnome-terminal (package (name "gnome-terminal") - (version "3.22.1") + (version "3.24.1") (source (origin (method url-fetch) @@ -2423,7 +2453,7 @@ more fun.") name "-" version ".tar.xz")) (sha256 (base32 - "1m5h3ck7wcvq1kfap05jwhnbpp3kmikc2qy822gnsbdjdqrm41xh")))) + "1q303bljcr06w3ra737kq1hpjda45wk16kmrixxwldf3zkk2dgx7")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags @@ -2811,7 +2841,7 @@ playlists in a variety of formats.") (define-public aisleriot (package (name "aisleriot") - (version "3.22.1") + (version "3.22.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2819,7 +2849,7 @@ playlists in a variety of formats.") name "-" version ".tar.xz")) (sha256 (base32 - "01ydq39kk8xvv8nbqqbh458gpmvx676sms71r1iix42z40a13caj")))) + "0a8cir7vgi67sncl0m7cypq11amardm7r68gr3q52a11l8ajycdx")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags @@ -3658,7 +3688,7 @@ USB transfers with your high-level application or system daemon.") (define-public simple-scan (package (name "simple-scan") - (version "3.24.0") + (version "3.24.1") (source (origin (method url-fetch) (uri (string-append "https://launchpad.net/simple-scan/" @@ -3667,7 +3697,7 @@ USB transfers with your high-level application or system daemon.") version ".tar.xz")) (sha256 (base32 - "19klldnbnknpq6ikz9x93861ywcyg0pg9ngijvw66ncbnb7lx912")))) + "1czg21cdbd2fgqylxfnzfhhzy69gycf816d5bbaq6hb62hmq7bjy")))) (build-system glib-or-gtk-build-system) (inputs `(("gtk" ,gtk+) @@ -3942,7 +3972,7 @@ classes for commonly used data structures.") (define-public gexiv2 (package (name "gexiv2") - (version "0.10.4") + (version "0.10.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3950,7 +3980,7 @@ classes for commonly used data structures.") name "-" version ".tar.xz")) (sha256 (base32 - "190www3b61spfgwx42jw8h5hsz2996jcxky48k63468avjpk33dd")))) + "09aqsnpah71p9gx0ap2px2dyanrs7jmkkar6q114n9b7js8qh9qk")))) (build-system gnu-build-system) (native-inputs `(("glib" ,glib "bin") @@ -4549,7 +4579,7 @@ users.") (define-public network-manager (package (name "network-manager") - (version "1.4.4") + (version "1.6.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/NetworkManager/" @@ -4557,7 +4587,7 @@ users.") "NetworkManager-" version ".tar.xz")) (sha256 (base32 - "029k2f1arx1m5hppmr778i9yg34jj68nmji3i89qs06c33rpi4w2")) + "1y96k82rav8if334jl500zc024d210c4pgprh94yqyz3rmanyaxj")) (snippet '(begin (use-modules (guix build utils)) @@ -4601,12 +4631,14 @@ users.") ;; cope with being already in the Guix build jail as that jail ;; lacks some features that they would like to proxy over (like ;; a /sys mount). - (substitute* '("src/platform/Makefile.in" - "src/devices/Makefile.in") - (("SUBDIRS = tests") "")) - (substitute* '("src/tests/Makefile.in") - (("\ttest-route-manager-linux") "\t") - (("\ttest-route-manager-fake") "\t")) + (substitute* '("Makefile.in") + (("src/platform/tests/test-address-linux") " ") + (("src/platform/tests/test-cleanup-linux") " ") + (("src/platform/tests/test-link-linux") " ") + (("src/platform/tests/test-route-linux") " ") + (("src/devices/tests/test-arping") " ") + (("src/devices/tests/test-lldp") " ") + (("src/tests/test-route-manager-linux") " ")) #t)) (add-before 'check 'pre-check (lambda _ @@ -4619,13 +4651,17 @@ users.") "sysconfdir=/tmp" "rundir=/tmp" "statedir=/tmp" + "nmstatedir=/tmp/nm" "install"))))))) (propagated-inputs `(("glib" ,glib))) (native-inputs `(("glib:bin" ,glib "bin") ; for gdbus-codegen ("gobject-introspection" ,gobject-introspection) + ("docbook-xsl" ,docbook-xsl) ("intltool" ,intltool) + ("libxslt" ,libxslt) + ("libxml2" ,libxml2) ("pkg-config" ,pkg-config) ;; For testing. ("python" ,python-wrapper) @@ -4637,6 +4673,7 @@ users.") ("gnutls" ,gnutls) ("iptables" ,iptables) ("isc-dhcp" ,isc-dhcp) + ("jansson" ,jansson) ("libgcrypt" ,libgcrypt) ("libgudev" ,libgudev) ("libndp" ,libndp) @@ -4960,6 +4997,7 @@ properties, screen resolution, and other GNOME parameters.") (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) + (patches (search-patches "gnome-shell-CVE-2017-8288.patch")) (sha256 (base32 "16smvjfrpyfphv479hjky5261hgl4kli4q86bcb2b8xdcav4w3yq")))) @@ -5210,7 +5248,7 @@ files.") (define-public baobab (package (name "baobab") - (version "3.22.1") + (version "3.24.0") (source (origin (method url-fetch) (uri (string-append @@ -5219,7 +5257,7 @@ files.") name "-" version ".tar.xz")) (sha256 (base32 - "1zwpzj6hbvcyw1ymqzn3zw8w4h29ad7411crbkbh71c8jwbwpssv")))) + "0gzwzn8p0agidjq3wnkxcsny6jhqph3yqscqjqd7blgkz5nyk02r")))) (build-system glib-or-gtk-build-system) (native-inputs `(("intltool" ,intltool) @@ -5301,7 +5339,7 @@ beautifying border effects.") (define-public dconf-editor (package (name "dconf-editor") - (version "3.22.1") + (version "3.22.3") (source (origin (method url-fetch) @@ -5310,7 +5348,7 @@ beautifying border effects.") name "-" version ".tar.xz")) (sha256 (base32 - "09n1ljryjgkmxwly542zb2dh9j7h76chc0br2bbhrhkwvjjmc3ha")))) + "1939yq3fl55c2dqkc6nzp6cbpxq9sli74gdj0rj7c50pwvbngwam")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases @@ -5997,3 +6035,146 @@ for process dependencies, icons for processes, the ability to hide processes, graphical time histories of CPU/memory/swap usage and the ability to kill/reinice processes.") (license license:gpl2+))) + +(define-public python-pyatspi + (package + (name "python-pyatspi") + (version "2.24.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnome/sources/pyatspi/" + (version-major+minor version) + "/pyatspi-" version ".tar.xz")) + (sha256 + (base32 + "14m6y27ziqc9f6339gjz49mlsk6mrsyg4bkj055cdzc7sfjlgvz7")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("python" ,python) + ("python-pygobject" ,python-pygobject))) + (synopsis "Python client bindings for D-Bus AT-SPI") + (home-page "https://wiki.linuxfoundation.org/accessibility\ +/atk/at-spi/at-spi_on_d-bus") + (description + "This package includes a python client library for the AT-SPI D-Bus +accessibility infrastructure.") + (license license:lgpl2.0) + (properties '((upstream-name . "pyatspi"))))) + +(define-public orca + (package + (name "orca") + (version "3.24.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1la6f815drykrgqf791jx1dda6716cfv6052frqp7nhjxr75xg97")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'configure 'qualify-xkbcomp + (lambda* (#:key inputs #:allow-other-keys) + (let ((xkbcomp (string-append + (assoc-ref inputs "xkbcomp") "/bin/xkbcomp"))) + (substitute* "src/orca/orca.py" + (("'xkbcomp'") (format #f "'~a'" xkbcomp)))) + #t)) + (add-after 'install 'wrap-orca + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (prog (string-append out "/bin/orca"))) + (wrap-program prog + `("GI_TYPELIB_PATH" ":" prefix + (,(getenv "GI_TYPELIB_PATH"))) + `("GST_PLUGIN_SYSTEM_PATH" ":" prefix + (,(getenv "GST_PLUGIN_SYSTEM_PATH"))) + `("PYTHONPATH" ":" prefix + (,(getenv "PYTHONPATH"))))) + #t))))) + (native-inputs + `(("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2))) + (inputs + `(("at-spi2-atk" ,at-spi2-atk) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-good" ,gst-plugins-good) + ("gtk+" ,gtk+) + ("python" ,python) + ("python-pygobject" ,python-pygobject) + ("python-pyatspi" ,python-pyatspi) + ("python-speechd" ,speech-dispatcher) + ("xkbcomp" ,xkbcomp))) + (synopsis + "Screen reader for individuals who are blind or visually impaired") + (home-page "https://wiki.gnome.org/Projects/Orca") + (description + "Orca is a screen reader that provides access to the graphical desktop +via speech and refreshable braille. Orca works with applications and toolkits +that support the Assistive Technology Service Provider Interface (AT-SPI).") + (license license:lgpl2.1+))) + +(define-public gspell + (package + (name "gspell") + (version "1.3.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1n4kd5i11l79h8bpvx3cz79ww0b4z89y99h4czvyg80qlarn585w")) + (patches (search-patches "gspell-dash-test.patch")))) + (build-system glib-or-gtk-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + + ;; For the missing /etc/machine-id. + (setenv "DBUS_FATAL_WARNINGS" "0") + + ;; Allow Enchant and its Aspell backend to find the en_US + ;; dictionary. + (setenv "ASPELL_DICT_DIR" + (string-append (assoc-ref inputs "aspell-dict-en") + "/lib/aspell")) + #t))))) + (inputs + `(("enchant" ,enchant) + ("iso-codes" ,iso-codes) + ("gtk+" ,gtk+) + ("glib" ,glib))) + (native-inputs + `(("glib" ,glib "bin") + ("pkg-config" ,pkg-config) + ("xmllint" ,libxml2) + + ;; For tests. + ("xorg-server" ,xorg-server) + ("aspell-dict-en" ,aspell-dict-en))) + (home-page "https://wiki.gnome.org/Projects/gspell") + (synopsis "GNOME's alternative spell checker") + (description + "gspell provides a flexible API to add spell-checking to a GTK+ +application. It provides a GObject API, spell-checking to text entries and +text views, and buttons to choose the language.") + (license license:gpl2+))) diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm index e7828b7bbb..b33cd26a81 100644 --- a/gnu/packages/gnucash.scm +++ b/gnu/packages/gnucash.scm @@ -42,7 +42,7 @@ (define-public gnucash (package (name "gnucash") - (version "2.6.15") + (version "2.6.16") (source (origin (method url-fetch) @@ -50,7 +50,7 @@ version "/gnucash-" version ".tar.bz2")) (sha256 (base32 - "1bnvnv1sxv85bgpfklykbhymjl4sbfqc1z9as5ym97s3cf1fn68n")) + "1088rssg9xgwi3wdfrhdcga46gby6lrd9a1fvn9zq456lscn4m9c")) (patches (search-patches "gnucash-price-quotes-perl.patch")))) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 7bc17ad06a..44d6129897 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -184,14 +184,14 @@ and support for SSL3 and TLS.") (define-public gnurl (package (name "gnurl") - (version "7.53.1") + (version "7.54.0") (source (origin (method url-fetch) (uri (string-append "https://gnunet.org/sites/default/files/" name "-" version ".tar.bz2")) (sha256 (base32 - "1ah2304cm6y7d201vdph170mrwxmg6r72v2zsxzjn0jk68d8kb6d")))) + "1ww346cdsxln6iq158a4wm38bmicg5wspd2c83gnqf1glx22hza0")))) (build-system gnu-build-system) (outputs '("out" "doc")) ; 1.5 MiB of man3 pages diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index fc22c43a0b..d12304a8eb 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -192,16 +192,14 @@ specifications are building blocks of S/MIME and TLS.") (define-public npth (package (name "npth") - (version "1.3") + (version "1.4") (source (origin (method url-fetch) - (uri (string-append - "mirror://gnupg/npth/npth-" - version ".tar.bz2")) + (uri (string-append "mirror://gnupg/npth/npth-" version ".tar.bz2")) (sha256 (base32 - "0am86vblapwz84254qpmhz0chk70g6qzh3wdxcs0gvba8d01ka5w")))) + "1wpijvxg5svj893q9vp5r83d9ipwhpbyphb55m89l5m36qc185c9")))) (build-system gnu-build-system) (home-page "https://www.gnupg.org") (synopsis "Non-preemptive thread library") @@ -217,15 +215,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.1.19") + (version "2.1.21") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) - (patches (search-patches "gnupg-2.1-fix-Y2038-test-failure.patch")) (sha256 (base32 - "1w4vccmb5l50lm4yrz9vkdj7whbfvzx543r55362kkj1aqgyvk26")))) + "1p97limv29p01y79mgnzpwixa50lv53wgdl3ymk9idkmpaldisks")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -371,7 +368,7 @@ libskba (working with X.509 certificates and CMS data).") (define-public gpgme (package (name "gpgme") - (version "1.8.0") + (version "1.9.0") (source (origin (method url-fetch) @@ -379,7 +376,7 @@ libskba (working with X.509 certificates and CMS data).") ".tar.bz2")) (sha256 (base32 - "0csx3qnycwm0n90ql6gs65if5xi4gqyzzy21fxs2xqicghjrfq2r")))) + "1ssc0gs02r4fasabk7c6v6r865k2j02mpb5g1vkpbmzsigdzwa8v")))) (build-system gnu-build-system) (propagated-inputs ;; Needs to be propagated because gpgme.h includes gpg-error.h. diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm index 6e729165c9..51541170ae 100644 --- a/gnu/packages/gnustep.scm +++ b/gnu/packages/gnustep.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +22,10 @@ #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix licenses) + #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages xorg) + #:use-module (gnu packages libffcall) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages texinfo) @@ -30,7 +33,33 @@ #:use-module (gnu packages glib) #:use-module (gnu packages fontutils) #:use-module (gnu packages image) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xml)) + +(define-public gnustep-make + (package + (name "gnustep-make") + (version "2.7.0") + (source (origin + (method url-fetch) + (uri (string-append "ftp://ftp.gnustep.org/pub/gnustep/core/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1khiygfkz0zhh9b5nybn40g0xnnjxchk24n49hff1bwanszir84h")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f)) ; no check target + (native-inputs + `(("which" ,which))) + (home-page "http://gnustep.org") + (synopsis "GNUstep make package") + (description "The makefile package is a simple, powerful and extensible way +to write makefiles for a GNUstep-based project. It allows the user to write a +project without having to deal with the complex issues associated with +configuration, building, installation, and packaging. It also allows the user +to easily create cross-compiled binaries.") + (license gpl3+))) (define-public windowmaker (package @@ -244,7 +273,9 @@ display, and can run a user-specified program on mouse click.") name "/" name "-" version ".tar.gz")) (sha256 (base32 - "101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3")))) + "101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3")) + (patches + (search-patches "wmfire-update-for-new-gdk-versions.patch")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 9cf64f82c4..d9901fd0fb 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -5,6 +5,8 @@ ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,10 +32,10 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages databases) #:use-module (gnu packages glib) - #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages gnome) #:use-module (gnu packages libcanberra) @@ -56,7 +58,8 @@ #:use-module (gnu packages icu4c) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) - #:use-module (gnu packages zip)) + #:use-module (gnu packages zip) + #:use-module (gnu packages readline)) (define-public mozjs (package @@ -158,6 +161,92 @@ in C/C++.") `(("libffi" ,libffi) ("zlib" ,zlib))))) +(define-public mozjs-38 + (package + (inherit mozjs) + (name "mozjs") + (version "38.2.1.rc0") + (source (origin + (method url-fetch) + (uri (string-append + "https://people.mozilla.org/~sstangl/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681")) + (patches + (search-patches + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for + ;; GCC 6 compatibility. + + "mozjs38-version-detection.patch" ; for 0ad + "mozjs38-tracelogger.patch" + + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931. + "mozjs38-pkg-config-version.patch" + "mozjs38-shell-version.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix incompatibility with sed 4.4. + (substitute* "js/src/configure" + (("\\^\\[:space:\\]") "^[[:space:]]")) + + ;; The headers are symlinks to files that are in /tmp, so they + ;; end up broken. Copy them instead. + (substitute* + "python/mozbuild/mozbuild/backend/recursivemake.py" + (("\\['dist_include'\\].add_symlink") + "['dist_include'].add_copy")) + + ;; Remove bundled libraries. + (for-each delete-file-recursively + '("intl" + "js/src/ctypes/libffi" + "js/src/ctypes/libffi-patches" + "modules/zlib")) + #t)))) + (arguments + `(;; XXX: parallel build fails, lacking: + ;; mkdir -p "system_wrapper_js/" + #:parallel-build? #f + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470. + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (chdir "js/src") + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (zero? (system* "./configure" + (string-append "--prefix=" out) + "--enable-ctypes" + "--enable-gcgenerational" + "--enable-optimize" + "--enable-pie" + "--enable-readline" + "--enable-shared-js" + "--enable-system-ffi" + "--enable-threadsafe" + "--enable-xterm-updates" + "--with-system-icu" + "--with-system-nspr" + "--with-system-zlib" + + ;; Intl API requires bundled ICU. + "--without-intl-api")))))))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-2" ,python-2))) + (inputs + `(("libffi" ,libffi) + ("readline" ,readline) + ("icu4c" ,icu4c) + ("zlib" ,zlib))))) + (define-public nspr (package (name "nspr") @@ -193,7 +282,7 @@ in the Mozilla clients.") (define-public nss (package (name "nss") - (version "3.29.3") + (version "3.30.2") (source (origin (method url-fetch) (uri (let ((version-with-underscores @@ -204,9 +293,10 @@ in the Mozilla clients.") "nss-" version ".tar.gz"))) (sha256 (base32 - "1sz1r2iml9bhd4iqiqz75gii855a25895vpy9scjky0y4lqwrp9m")) + "096frzvyp3z257x84rxknscfgsbavzh2a0gyibx7kvmw4vzpfjhd")) ;; Create nss.pc and nss-config. (patches (search-patches "nss-pkgconfig.patch" + "nss-disable-long-b64-tests.patch" "nss-increase-test-timeout.patch")))) (build-system gnu-build-system) (outputs '("out" "bin")) @@ -239,6 +329,16 @@ in the Mozilla clients.") `((setenv "USE_64" "1"))) (_ '())) + ;; The timeout values in "increase-test-timeouts" are still + ;; too low, so apply this workaround on armhf for now to avoid + ;; rebuilding on all platforms. This should be incorporated in + ;; the patch for the next update. + ;; https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00472.html + ,@(if (string-prefix? "armhf" (or (%current-target-system) + (%current-system))) + `((substitute* "nss/gtests/ssl_gtest/tls_connect.cc" + (("25000\\);") "300000);"))) + '()) #t)) (replace 'check (lambda _ @@ -300,10 +400,10 @@ standards.") (license license:mpl2.0))) (define (mozilla-patch file-name changeset hash) - "Return an origin for CHANGESET from the mozilla-esr45 repository." + "Return an origin for CHANGESET from the mozilla-esr52 repository." (origin (method url-fetch) - (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr45/raw-rev/" + (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr52/raw-rev/" changeset)) (sha256 (base32 hash)) (file-name file-name))) @@ -311,7 +411,7 @@ standards.") (define-public icecat (package (name "icecat") - (version "45.7.0-gnu1") + (version "52.1.0-gnu1") (source (origin (method url-fetch) @@ -320,62 +420,38 @@ standards.") "/" name "-" version ".tar.bz2")) (sha256 (base32 - "1mn73liylqzxk441f28wk326yglqs8zcwqs4zz51s8i2id2jsnv3")) + "1wr4bc5806xzyqpi6m4rjaf61za6ylpx4g0kfk95c6yw9yhg5vqb")) (patches (list (search-patch "icecat-avoid-bundled-libraries.patch") - (search-patch "icecat-binutils.patch") - (mozilla-patch "icecat-CVE-2017-5398-pt01.patch" "1a39a54b5fea" "0k3sbf2w2yng2rpv6wl9zrm5cbsgq3pslr19xwrk8sk753as79fp") - (mozilla-patch "icecat-CVE-2017-5402.patch" "9828c3bb7b73" "0zgks0v9sqhwwkmry4daswvjwk6aqln6abx0iac1vwqqpg6swff6") - (mozilla-patch "icecat-CVE-2017-5398-pt02.patch" "fa3268a1147e" "1jyd1hvp42pz5l15agmb1jhw74b38x8xnj9ih5v4pskv41bgmyg5") - (mozilla-patch "icecat-CVE-2017-5400.patch" "347c10e4d6d1" "1w6yrm97l477q4ripbj0nimc87p4jscabvihpncxqbq9xzc4km7p") - (mozilla-patch "icecat-CVE-2017-5410.patch" "fe4a2cda54ad" "0spcs93hpz13d8670jgvww80f0ynrbhwbh62fkv27lpr6wmqwqh1") - (mozilla-patch "icecat-CVE-2017-5401.patch" "c38f8546be5f" "1sa22w9kzgynsn4c6zh4d66byskk5kffzbvlzrhyzvqjddypf9p8") - (mozilla-patch "icecat-CVE-2017-5398-pt03.patch" "41c80ecafa99" "0r33arr5wcgl00zgncasiyl65bmm6jy45clxnbb75nzjmsd1zx1s") - (mozilla-patch "icecat-CVE-2017-5405.patch" "381552c888b4" "1sjhh390cx1jqx74lxk6qd8f8ccppqgagqfhc9pnbm2m67hxvkj9") - (mozilla-patch "icecat-CVE-2017-5407.patch" "4ba337cdb998" "0vyknizid2z9nvl31m08c7fknizhv8dh8m54apm39k8lx77vf70p") - (mozilla-patch "icecat-CVE-2017-5398-pt04.patch" "886650fac531" "18fsr5dmav96ja0dah7mj34n8mjpckp0bbc32zjyaj5qx0m4h5cw") - (mozilla-patch "icecat-CVE-2017-5409.patch" "0a22becb23cd" "19fshrq4qkj5s0mjrads6by84gy7rsq3k57gha6sw6rvx8chjaz6") - (mozilla-patch "icecat-CVE-2017-5398-pt05.patch" "a0ead6ef09eb" "1hpsq81hhhq2a2dcq2dfndiwx93vvp5rfq0cgv6kwk2bsrq77wqq") - (mozilla-patch "icecat-CVE-2017-5398-pt06.patch" "d3fede027d06" "1aw02p367cm0ayijdiiawlb7qhab6jwqwkakj317yd1cjnmkalwr") - (mozilla-patch "icecat-CVE-2017-5398-pt07.patch" "ffca0f060bb4" "0qwisfp7idjj5nc1vp1afrf5lj66l2gp7rllkjmrqpz6cyfc708v") - (mozilla-patch "icecat-CVE-2017-5398-pt08.patch" "4aa65b44dcb9" "07j6dz2b7hp1bkfvkxwgpn2wc3hqrgjgwpaz96fcpz8yadg2fssw") - (mozilla-patch "icecat-bug-1318914.patch" "30e2382d800f" "0w8zky5i7zc5q943x37rdvi4wbcing0q7w9fcgvnnh5li2sbrsy8") - (mozilla-patch "icecat-CVE-2017-5408.patch" "403d2300adc2" "06r4j48rc1fd9gvmvqy68mlqah5xfxpkvwmxk0gnqc364kpq9slk") - (mozilla-patch "icecat-CVE-2017-5398-pt09.patch" "546ab5e99568" "05rdb9bm3n4lj0zq5a95xnwsb0vzirb9mbc2wf9xbi4xlamsgvvw") - (mozilla-patch "icecat-bug-1311380.patch" "ef6eeb7f8846" "1w19is5blbrwf3wlmy6wzgabih8sxp2kmkffqcj2g4jypfwyqn73") - (mozilla-patch "icecat-CVE-2017-5398-pt10.patch" "eec69810d80e" "1r20abhw7b38igsrdpkhcfwx9i9gmcxikv4y3sjr4wkbp684f7av") - (mozilla-patch "icecat-CVE-2017-5398-pt11.patch" "fec35ce6e68b" "1imdfrs8dxz44rhsmvydh29w5j64cij6g5ggrmhvz3386xvlil2v") - (mozilla-patch "icecat-CVE-2017-5398-pt12.patch" "725e2a217722" "06gfhi2ich279rjnxi15fb4igimsxnv5w6bx4g91js8wbvp2r3v0") - (mozilla-patch "icecat-CVE-2017-5398-pt13.patch" "d905a2e3a4d9" "1ibxi2s0czj47b739zmmjzbln8lpn27hdg4b17w58vhbhzkq31cx") - (mozilla-patch "icecat-CVE-2017-5398-pt14.patch" "0032560ae945" "0md3p5cix6nzbj5m199awc9gk52pygy5s9lx3a38vh3xvd92lsbj") - (mozilla-patch "icecat-CVE-2017-5398-pt15.patch" "91dda1e79ad8" "0b5h8fhagczfqkdgby982w6qgkw9y11zxxpdbn89rwmjpyp9nghx") - (mozilla-patch "icecat-CVE-2017-5404.patch" "556dd9e4a9e3" "0mbdx4xn1xs67n47ys9m42lc5ny96rz21ala848yajpdlxsz680g") - (mozilla-patch "icecat-bug-1341137-pt1.patch" "e86e0423dad1" "0dk1v7lcs61nx76qxcibha3ygqri15ldcvwwsrsayff9fq6k0v4y") - (mozilla-patch "icecat-bug-1341137-pt2.patch" "9aebee8b8cb9" "0m7p5iprhhwdv89aqqg7fla5szw6v7x2sll4ns0zg60pk4vm6izq") - (mozilla-patch "icecat-bug-1341137-pt3.patch" "69f3d44bdb48" "1ad7rw6nmg3c49ylqxlqqkb6cm2f0ygfzrigs6b60a2zkjqhbl0h") - (mozilla-patch "icecat-bug-1341137-pt4.patch" "22546e2cee64" "0gbwxa3p7qkq53hwnvxcqhx8h34qmnjdxy0h3ajik4mw76vrna9s") - (mozilla-patch "icecat-bug-1341137-pt5.patch" "e5083d8a855a" "1247vbpqzf007nigbxxqd6nwgr1dxd4p8cd0dr45afqh19vhlapj") - (mozilla-patch "icecat-bug-1339122.patch" "b0d156c7445e" "026jp5bb565yvhkmmicgygcn1lmak85p0466yl1vnjlx1rc8n724") - (mozilla-patch "icecat-bug-1319087.patch" "9cd44507fd65" "0mcfvby53r2150libazgrgaqrdyvl0g6cr1f01dsya3cgmc9mkcn") - (mozilla-patch "icecat-bug-1342661.patch" "d449995ef7d9" "1kz8k2jxvhqpjgrsj7r0kqq79036lrkfnx5pvdnsl59np9128j81") - (mozilla-patch "icecat-bug-1343261.patch" "9b5374019b58" "0v5w50r5ys4jjy1lpks280cq8paw7wdy9mrk7szzq7nlcxz90is7") - (mozilla-patch "icecat-bug-1343552-pt1.patch" "08bc7a3330e4" "1hsvffscqc4zflni866ilylgi3a13wz0n882z85xplbhwhc9lcfj") - (mozilla-patch "icecat-bug-1343552-pt2.patch" "8c61ebe37f1b" "1fjsr6bzfyd1zqzz2pglwh2ckys95h21wy3j4rlwkz66057z53qq") - (mozilla-patch "icecat-bug-1340718.patch" "bfa75fc20c2b" "08gksd06lwbb5ykdrk9gh2cb9bximwxhbxl3rprz64jj2bnmd3dq") - (mozilla-patch "icecat-bug-1345461.patch" "bcd5e51251dd" "1ms2ad8j04lz761cvdwi9rj5qv3qbjmg0zwyp3fykcf01a323ygd") - (mozilla-patch "icecat-bug-1343505.patch" "290f10412f92" "1dsj22fkz60zfa6isnxj54clg32dwzapwh5f1vz6jsin9r67ik2p") - (mozilla-patch "icecat-bug-1346648.patch" "9369ede30cc1" "1wrdn2aixbzifz7wyqnfi65gaiva8i746pi53z6w62lmn1hwd3ji") - (mozilla-patch "icecat-bug-1347979.patch" "4ae2261bfab0" "1yi3jicwjy7w8f0sv5di4rx05bfpkhcwj3r6dhl5315yz4ifqy30") - (mozilla-patch "icecat-bug-1343795.patch" "dcf468969700" "0syfq35s2r86ajmnqsxlfanvxd9ax57qkfmxpkvmk447s3mxsk08") - (mozilla-patch "icecat-bug-1347168.patch" "5a6390274b64" "1lg5px4sncalh82y61ni9rlg50d83jmmrrvn0944x4zfrzlfaz8x") - (mozilla-patch "icecat-bug-1341096.patch" "64158495e5ae" "1lyh8m159hhzrxj5hr0yib2sb8rkd20qxpykrf398v18s3yc08cx") - (mozilla-patch "icecat-bug-1346654.patch" "f359ec604627" "0j6rzbnzlz8x9sj2r79d1zr4p89c5zq7y49xa4kn6am5ay3ws0ri") - (mozilla-patch "icecat-bug-1344461.patch" "6f14d2ef7981" "0n24hqvjj7vxqdvxhk38swnmvcv7h7vvn5invbidhv22m0qqzs2c") - (mozilla-patch "icecat-bug-1292534.patch" "c709d4b36145" "18cdck3fr4a1ygszb6qk07g6fi3kv6i697pjfcipvqrk358qb0hq") - (mozilla-patch "icecat-bug-1336830.patch" "18e355831dd5" "042487xhq9zkky3pxiqy1rpy69z0j20w0jnl7kwg2j1bzfbnniip") - (mozilla-patch "icecat-bug-1336832.patch" "ebeb0b45a84b" "17ch2aqsrnkiwbnkf6x7a1cpi8jgfjhwr6wp0bsa89s8v1dax6w4") - (mozilla-patch "icecat-bug-1349946.patch" "ccbecbe17a45" "19vwmhvqarpzai8mcq6i7szkrp1h9m8v5lyimkmmdlmagrivjw7f"))) + (mozilla-patch "icecat-bug-1342366.patch" "fb43f6690a26" "1vnkjpq2bcqwzmjkgyqv8wj0ndrrsyix3qy1rsb5is6pjmi9sbaa") + (mozilla-patch "icecat-bug-1343818.patch" "90f870bbec29" "0mbki955f71n4yr9p0yc7kh5jwq7vs4bs4rhaazdncirbr564hm6") + (mozilla-patch "icecat-bug-1348454.patch" "c1cd8a02669f" "1wf0107763rw45kxkak7478vlax06ay7076cbm7ysxl7vijbr52w") + (mozilla-patch "icecat-bug-1297111.patch" "2553531f83b9" "0ibf59pa8czdyhc25sas6zhh2gf1k8vr8fklis2b1ms3n1qnzrha") + (mozilla-patch "icecat-bug-1355873.patch" "9ee455ddcd68" "0d38hi4556635g9ag805vfyffdgfsp4a8v3d9ldffdp99ypv2ixj") + (mozilla-patch "icecat-bug-1348424-pt1.patch" "6472c7006a73" "1fgydas23fzj49n4g43133bgjn98b2h38bii4knl7z7pm3fs2wws") + (mozilla-patch "icecat-bug-1348424-pt2.patch" "0d5a26b29816" "03mkghl9i83jk1axr8bvw8la6shbggkabf23if8a9vi5jdv8182x") + (mozilla-patch "icecat-bug-1357092.patch" "e78c943af07f" "0r830k6hja8z9rjk2nqjg8zfzr0wjcnic8rddh7jmc1inr1w3crm") + (mozilla-patch "icecat-bug-1352093.patch" "d7c06f2d0d13" "1ahyns5v37w91bilvb3pa8kkdzkkn3fcxmi49jr5bycjlawljrm4") + (mozilla-patch "icecat-bug-1349595.patch" "9071c7d4cc9c" "12128sf8s3zwv2w16kfl5jry9d6ky7hvps2006184rg23p32aj6n") + (mozilla-patch "icecat-bug-1336979.patch" "8bbc7b586d68" "0c13imyp1nq18in3yb1zcyi41b69svh4fn8msyj0c2lhbf8qnqcw") + (mozilla-patch "icecat-bug-1352556.patch" "6d80ca63ff8b" "0s893fn6v0p323lcnl4cbkg1zd7gs1p0bw76ki6cmiapkn63gs13") + (mozilla-patch "icecat-bug-1359547.patch" "43d7b98d8743" "1dhgy1jkvn3c4k27hbv8p16w7l09b8hd4w9zzpk8dpn4h78ncs3h") + (mozilla-patch "icecat-CVE-2017-5031.patch" "bd4fcdee9a06" "0xz1r342023a0bsllhjbzn6v75lpqznwacqyikb7q8i4hxkxh78a") + (mozilla-patch "icecat-bug-1346499.patch" "747fd6c81983" "00iscyn4wr69205ppiaghlnd32845f5lcsl303v0fcdd4d1v04vc") + (mozilla-patch "icecat-bug-1334443-pt1.patch" "16201e8478df" "1k91xaai25vn1svkaldnsd2s8br3fgvnk5l54k3n3lk3m5vj55hv") + (mozilla-patch "icecat-bug-1334443-pt2.patch" "f100e5cf3bcb" "1cgbbbnkrd3ydfw99rhnpqdp5zq65537mg8sa1s9ajxkjjd1dkwj") + (mozilla-patch "icecat-bug-1354810.patch" "e579ef6e8d11" "0cmrh8dl85lzjxpbni08xbs8qq15sljnpg70a7rsl0jdbgih3mdx") + (mozilla-patch "icecat-bug-1356755.patch" "4a3fce67b52d" "126i9nwxsb3sjwb7dvhafacq86glnhx7r7jjv0h9v21s1w0kx4wj") + (mozilla-patch "icecat-bug-1273265.patch" "7902fea300b8" "1jkrl8hdycsi17dd1m1vvl6gm1skhpf10q2m29zwfr8l40fd6a3q") + (mozilla-patch "icecat-bug-1353204.patch" "b5a21502aeff" "13rbrhvr37w95av9d4hkgi913nq0j6k2iijydylvprcn18cwibp0") + (mozilla-patch "icecat-bug-1028195.patch" "69a5ca2bf867" "0q8cgi6837ikpg7gsvywmzhq0i102845apcbrd6mw0205qqsnw5c") + (mozilla-patch "icecat-bug-1347835.patch" "bc635f45af37" "1fny422l6yc80901x6swybr8nk0in1wxfgy97ky4bdkcqlnmzpqv") + (mozilla-patch "icecat-bug-1241066.patch" "b922ca70cce5" "09hcf9rm7ng3vj5y267w0c9h6pqinnz8gjlkwx1337xh43mdvqjv") + (mozilla-patch "icecat-bug-1346012.patch" "1ce6d0652921" "163ji64a86h682frh1jq016w1mjf8g24r8cni0irsdmiihis7zxc") + (mozilla-patch "icecat-bug-1324140.patch" "8886f9cd5dd3" "0byabs9md8r3pc4r67sv2759427n1za0gfayln40nx47n2p52kmg") + (mozilla-patch "icecat-bug-1342552.patch" "ad995e90916b" "02nq9sg675p26z99nr2pykbz51hi2phf0gmrb1bjpq9pjbll7gsa") + (mozilla-patch "icecat-bug-1355039.patch" "4ae71415fecf" "0yfkkdkkimad9a3w734xx85lb7hrl870c8k8an7w78fq3vl3fjnd"))) (modules '((guix build utils))) (snippet '(begin @@ -433,9 +509,8 @@ standards.") ("dbus-glib" ,dbus-glib) ("gdk-pixbuf" ,gdk-pixbuf) ("glib" ,glib) - ("gstreamer" ,gstreamer) - ("gst-plugins-base" ,gst-plugins-base) - ("gtk+" ,gtk+-2) + ("gtk+" ,gtk+) + ("gtk+-2" ,gtk+-2) ("pango" ,pango) ("freetype" ,freetype) ("hunspell" ,hunspell) @@ -449,6 +524,7 @@ standards.") ("libxcomposite" ,libxcomposite) ("libxt" ,libxt) ("libffi" ,libffi) + ("ffmpeg" ,ffmpeg) ("libvpx" ,libvpx) ("icu4c" ,icu4c) ("pixman" ,pixman) @@ -460,19 +536,19 @@ standards.") ("sqlite" ,sqlite) ("startup-notification" ,startup-notification) ("unzip" ,unzip) - ("yasm" ,yasm) ("zip" ,zip) ("zlib" ,zlib))) (native-inputs `(("perl" ,perl) ("python" ,python-2) ; Python 3 not supported ("python2-pysqlite" ,python2-pysqlite) + ("yasm" ,yasm) ("pkg-config" ,pkg-config) + ("autoconf" ,autoconf-2.13) ("which" ,which))) (arguments `(#:tests? #f ; no check target #:out-of-source? #t ; must be built outside of the source directory - #:parallel-build? #f ;; XXX: There are RUNPATH issues such as ;; $prefix/lib/icecat-31.6.0/plugin-container NEEDing libmozalloc.so, @@ -480,17 +556,11 @@ standards.") ;; practice somehow. See <http://hydra.gnu.org/build/378133>. #:validate-runpath? #f - #:configure-flags '("--enable-default-toolkit=cairo-gtk2" - "--enable-pango" + #:configure-flags '("--enable-default-toolkit=cairo-gtk3" "--enable-gio" - "--enable-svg" - "--enable-canvas" - "--enable-mathml" "--enable-startup-notification" "--enable-pulseaudio" - "--enable-gstreamer=1.0" - "--disable-gnomevfs" "--disable-gconf" "--disable-gnomeui" @@ -548,16 +618,6 @@ standards.") #t)) #t))) (add-after - 'unpack 'remove-h264parse-from-blacklist - (lambda _ - ;; Remove h264parse from gstreamer format helper blacklist. It - ;; was put there to work around a bug in a pre-1.0 version of - ;; gstreamer. See: - ;; https://www.mozilla.org/en-US/security/advisories/mfsa2015-47/ - (substitute* "dom/media/gstreamer/GStreamerFormatHelper.cpp" - (("^ \"h264parse\",\n") "")) - #t)) - (add-after 'unpack 'use-skia-by-default (lambda _ ;; Use the bundled Skia library by default, since IceCat appears @@ -580,10 +640,11 @@ standards.") ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to ;; work. More investigation is needed. (substitute* "toolkit/library/moz.build" - (("^# This needs to be last") - "OS_LIBS += [ + (("^# This library needs to be last" all) + (string-append "OS_LIBS += [ 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5', - 'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0' ]\n\n")) + 'avcodec', 'avutil', 'pulse' ]\n\n" + all))) #t)) (replace 'configure @@ -600,6 +661,7 @@ standards.") ,@configure-flags))) (setenv "SHELL" bash) (setenv "CONFIG_SHELL" bash) + (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13 (mkdir "../build") (chdir "../build") (format #t "build directory: ~s~%" (getcwd)) @@ -661,7 +723,16 @@ standards.") (copy-file file (string-append icons "/icecat.png")))) '("default16.png" "default22.png" "default24.png" "default32.png" "default48.png" "content/icon64.png" - "mozicon128.png" "default256.png"))))))))) + "mozicon128.png" "default256.png")))))) + ;; This fixes the file chooser crash that happens with GTK 3. + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (gtk (assoc-ref inputs "gtk+")) + (gtk-share (string-append gtk "/share"))) + (wrap-program (car (find-files lib "^icecat$")) + `("XDG_DATA_DIRS" ":" prefix (,gtk-share))))))))) (home-page "https://www.gnu.org/software/gnuzilla/") (synopsis "Entirely free browser derived from Mozilla Firefox") (description diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index d19aa65afc..13c5529f9d 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3,8 +3,9 @@ ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 Petter <petter@mykolab.ch> +;;; Copyright © 2016, 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru> ;;; ;;; This file is part of GNU Guix. ;;; @@ -198,11 +199,11 @@ garbage collection, various safety features and in the style of communicating sequential processes (CSP) concurrent programming features added.") (license license:bsd-3))) -(define-public go-1.7 +(define-public go-1.8 (package (inherit go-1.4) (name "go") - (version "1.7.5") + (version "1.8.1") (source (origin (method url-fetch) @@ -210,7 +211,7 @@ sequential processes (CSP) concurrent programming features added.") name version ".src.tar.gz")) (sha256 (base32 - "058q57zmi23rflingzhy1b87yl69mb62ql2psfxqr7q7l89lb0sf")))) + "0mqf8ydxdx1pwmrs8p8wl5y1qrplzxmxzgb6vkghy4l67z0g9nik")))) (arguments (substitute-keyword-arguments (package-arguments go-1.4) ((#:phases phases) @@ -301,8 +302,8 @@ sequential processes (CSP) concurrent programming features added.") (("/etc/services") (string-append net-base "/etc/services"))) (substitute* "time/zoneinfo_unix.go" (("/usr/share/zoneinfo/") tzdata-path)) - (substitute* (find-files "cmd" "asm.c") - (("/lib/ld-linux.*\\.so\\.[0-9]") loader)) + (substitute* (find-files "cmd" "\\.go") + (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader)) #t))) (add-before 'build 'set-bootstrap-variables (lambda* (#:key outputs inputs #:allow-other-keys) @@ -365,4 +366,4 @@ sequential processes (CSP) concurrent programming features added.") `(("go" ,go-1.4) ,@(package-native-inputs go-1.4))))) -(define-public go go-1.7) +(define-public go go-1.8) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index b3a2d575a7..5c3b3c5f3b 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -98,7 +98,7 @@ arrays of data.") (define-public gstreamer (package (name "gstreamer") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) @@ -107,7 +107,7 @@ arrays of data.") version ".tar.xz")) (sha256 (base32 - "062jidnw17hkpva6ddygp80gyasyigfkpm1y7w56rk56a2pzbhjh")))) + "00j3zwm22582fwyzh316mnh6ghicv4ya93yk52kz4avx57wfxm8l")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -146,7 +146,7 @@ This package provides the core library and elements.") (define-public gst-plugins-base (package (name "gst-plugins-base") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) @@ -154,11 +154,7 @@ This package provides the core library and elements.") name "-" version ".tar.xz")) (sha256 (base32 - "1dsyjf6rncsbg4rfj40cvf1wwpjj9h3j3c7bh4zp7jylnfv4blpn")) -; (patches -; (search-patches "gst-plugins-base-fix-test-on-32bit.patch")) - - )) + "0k9nckvzk2hhhg7w4gzmd7is0lbswdmrkwmcgblvdf2lgy3wcprl")))) (build-system gnu-build-system) (outputs '("out" "doc")) (propagated-inputs @@ -205,7 +201,7 @@ for the GStreamer multimedia library.") (define-public gst-plugins-good (package (name "gst-plugins-good") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) @@ -214,7 +210,7 @@ for the GStreamer multimedia library.") name "-" version ".tar.xz")) (sha256 (base32 - "0zjdwxn83sp9wjp9rxjbyk8kf284g9av7l2v6rjldi586hacd1la")))) + "1g1f6xyj0f06nmsl01xhr32x2rwyb857yjkrig1013iknx6p67ca")))) (build-system gnu-build-system) (inputs `(("aalib" ,aalib) @@ -270,14 +266,14 @@ developers consider to have good quality code and correct functionality.") (define-public gst-plugins-bad (package (name "gst-plugins-bad") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append "https://gstreamer.freedesktop.org/src/" name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0rk9rlzf2b0hjw5hwbadz53yh4ls7vm3w3cshsa3n8isdd8axp93")))) + "0d45zgdnflwpwvlb1fmgj35yfds9m1g46mhppvlsh5dky7zkrdqi")))) (outputs '("out" "doc")) (build-system gnu-build-system) (arguments @@ -347,7 +343,7 @@ par compared to the rest.") (define-public gst-plugins-ugly (package (name "gst-plugins-ugly") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) @@ -355,7 +351,7 @@ par compared to the rest.") name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0ngsiwcsz3jd08id4mc0qiy2q1n7h2kkvdnh3r1vm725m1ycg1k3")))) + "1mhasi20kvi9p72kh4qyfzync509wqqkk8fp2xxyhgp88r8bls2y")))) (build-system gnu-build-system) (inputs `(("gst-plugins-base" ,gst-plugins-base) @@ -386,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") (define-public gst-libav (package (name "gst-libav") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append @@ -394,7 +390,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") name "-" version ".tar.xz")) (sha256 (base32 - "12r68ri03mgbbwsxyn6yklgfsq32rwvyq83zw0aq7m73fp5gx83c")))) + "1i2h0ymh9jy0rnkcan2rdsdfq7l02rmp33g712q81s9fcizlgl9r")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-system-libav") @@ -424,7 +420,7 @@ compression formats through the use of the libav library.") (define-public python-gst (package (name "python-gst") - (version "1.10.4") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append @@ -432,7 +428,7 @@ compression formats through the use of the libav library.") "gst-python-" version ".tar.xz")) (sha256 (base32 - "04l2hvvz9b0f3nyds1k3yfk5di8a91fpr6maj19c11mwp1s82l2r")))) + "01wwbn6z3771ad55ljl9gs6irrs9a8p186zrgrkmzs91kxmxwcxy")))) (build-system gnu-build-system) (arguments ;; XXX: Factorize python-sitedir with python-build-system. diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index ae1ff6a8cf..d250caff4a 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org> ;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is> +;;; Coypright © 2017 Roel Janssen <roel@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages texinfo) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -424,7 +426,7 @@ highlighting and other features typical of a source code editor.") (define-public gdk-pixbuf (package (name "gdk-pixbuf") - (version "2.36.3") + (version "2.36.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -432,7 +434,7 @@ highlighting and other features typical of a source code editor.") name "-" version ".tar.xz")) (sha256 (base32 - "1v1rssjd8p5s3lymsfhiq5mbs2pc0h1r6jd0asrwdbrign7i68sj")) + "034279k49ydawnagqd7b1rz741n20k4y3grybzwp26zd146bjpj5")) (patches (search-patches "gdk-pixbuf-list-dir.patch")))) (build-system gnu-build-system) (arguments @@ -651,7 +653,7 @@ application suites.") (name "gtk+") ;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in ;; mate.scm will also need to be updated. - (version "3.22.6") + (version "3.22.12") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -659,7 +661,7 @@ application suites.") name "-" version ".tar.xz")) (sha256 (base32 - "0bqpx8825b1fdjmz14wq20zq58gq1yi1p5xjps8l6zqid8hmm9zb")) + "1359w81sxs2izkan2rni985x78s6zr1arf469qmyw4bazg7f1yl4")) (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch" "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) (outputs '("out" "bin" "doc")) @@ -691,9 +693,9 @@ application suites.") ("python-wrapper" ,python-wrapper) ;; By using a special xorg-server for GTK+'s tests, we reduce the impact ;; of updating xorg-server directly on the master branch. - ("xorg-server" ,xorg-server-1.19.2))) + ("xorg-server" ,xorg-server-1.19.3))) (arguments - `(#:disallowed-references (,xorg-server-1.19.2) + `(#:disallowed-references (,xorg-server-1.19.3) ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes ;; to "doc". #:configure-flags (list (string-append "--with-html-dir=" @@ -1208,7 +1210,7 @@ extensive documentation, including API reference and a tutorial.") (synopsis "Python bindings for GTK+") (description "PyGTK allows you to write full featured GTK programs in Python. It is -targetted at GTK 2.x, and can be used in conjunction with gnome-python to +targeted at GTK 2.x, and can be used in conjunction with gnome-python to write GNOME applications.") (license license:lgpl2.1+))) @@ -1419,3 +1421,41 @@ misspelled words in a GtkTextView widget.") thereof, global hotkeys and clipboard item actions. It was forked from Parcellite and adds bugfixes and features.") (license license:gpl2+))) + +(define-public graphene + (package + (name "graphene") + (version "1.6.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/ebassi/graphene/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--enable-introspection=yes") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'autogen + (lambda _ + (zero? (system* "./autogen.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("which" ,which) + ("pkg-config" ,pkg-config) + ("automake" ,automake) + ("libtool" ,libtool))) + (inputs + `(("python" ,python) + ("python-2" ,python-2) + ("glib" ,glib) + ("gobject-introspection" ,gobject-introspection))) + (home-page "http://ebassi.github.io/graphene") + (synopsis "Thin layer of graphic data types") + (description "This library provides graphic types and their relative API; +it does not deal with windowing system surfaces, drawing, scene graphs, or +input.") + (license license:expat))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 46e6dea747..bb34063463 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -6,11 +6,13 @@ ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com> ;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Alex Kost <alezost@gmail.com> +;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> ;;; Copyright © 2016 Amirouche <amirouche@hypermove.net> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com> +;;; Copyright © 2017 David Thompson <davet@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +32,7 @@ (define-module (gnu packages guile) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) + #:use-module (gnu packages admin) ;;for tree #:use-module (gnu packages aspell) #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) @@ -212,7 +215,7 @@ without requiring the source code to be rewritten.") (define-public guile-2.2 (package (inherit guile-2.0) (name "guile") - (version "2.2.0") + (version "2.2.2") (replacement #f) (source (origin (method url-fetch) @@ -223,7 +226,7 @@ without requiring the source code to be rewritten.") ".tar.xz")) (sha256 (base32 - "05dmvhd1y135x7w5qfw4my42cfp6l8bbhjfxvchcc1cbdvzri0f1")) + "1azm25zcmxif0skxfrp11d2wc89nrzpjaann9yxdw6pvjxhs948w")) (modules '((guix build utils))) ;; Remove the pre-built object files. Instead, build everything @@ -473,17 +476,17 @@ many readers as needed).") (define-public guile-ncurses (package (name "guile-ncurses") - (version "2.1") + (version "2.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-" version ".tar.gz")) (sha256 (base32 - "1h7rnq4g7xlxxybcb3vjq6nscm9zhlmfaxb7258c8ax7him4azg6")))) + "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) - ("guile" ,guile-2.0))) + ("guile" ,guile-2.2))) (native-inputs `(("pkg-config" ,pkg-config))) (arguments '(#:configure-flags (list "--with-ncursesw" ; Unicode support @@ -501,7 +504,7 @@ many readers as needed).") (files (find-files dir ".scm"))) (substitute* files (("\"libguile-ncurses\"") - (format #f "\"~a/lib/guile/2.0/libguile-ncurses\"" + (format #f "\"~a/lib/guile/2.2/libguile-ncurses\"" out))) #t))))))) (home-page "https://www.gnu.org/software/guile-ncurses/") @@ -691,7 +694,7 @@ for Guile\".") (("moddir =.*/share/guile/site" all) (string-append all "/@GUILE_EFFECTIVE_VERSION@"))))))) (build-system gnu-build-system) - (native-inputs `(("guile" ,guile-2.0))) + (native-inputs `(("guile" ,guile-2.2))) (home-page "http://savannah.nongnu.org/projects/guile-json/") (synopsis "JSON module for Guile") (description @@ -707,7 +710,10 @@ specification. These are the main features: (license license:lgpl3+))) (define-public guile2.2-json - (package-for-guile-2.2 guile-json)) + (deprecated-package "guile2.2-json" guile-json)) + +(define-public guile2.0-json + (package-for-guile-2.0 guile-json)) (define-public guile-minikanren (package @@ -795,6 +801,74 @@ See http://minikanren.org/ for more on miniKanren generally.") (define-public guile2.2-minikanren (package-for-guile-2.2 guile-minikanren)) +(define-public guile-miniadapton + (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880") + (revision "1")) + (package + (name "guile-miniadapton") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fisherdj/miniAdapton.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 popen) + (ice-9 rdelim) + (srfi srfi-1) + (guix build gnu-build-system)) + #:tests? #f ; there is no test target + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((cwd (getcwd)) + (scm-files (find-files "." "\\.scm$")) + (effective (read-line + (open-pipe* OPEN_READ + "guile" "-c" + "(display (effective-version))"))) + (module-dir (string-append (assoc-ref outputs "out") + "/share/guile/site/" + effective))) + + ;; Make installation directories. + (mkdir-p module-dir) + + (setenv "GUILE_AUTO_COMPILE" "0") + + ;; Compile .scm files and install. + (every (lambda (file) + (let ((go-file (string-append module-dir "/" + (basename file ".scm") ".go"))) + ;; Install source module. + (install-file file module-dir) + ;; Compile and install module. + (zero? (system* "guild" "compile" "-L" cwd + "-o" go-file file)))) + scm-files))))))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/fisherdj/miniAdapton") + (synopsis "Minimal implementation of incremental computation in Guile +Scheme") + (description "This package provides a complete Scheme implementation of +miniAdapton, which implements the core functionality of the Adapton system for +incremental computation (also known as self-adjusting computation). Like +Adapton, miniAdapton allows programmers to safely combine mutation and +memoization. miniAdapton is built on top of an even simpler system, +microAdapton. Both miniAdapton and microAdapton are designed to be easy to +understand, extend, and port to host languages other than Scheme.") + (license license:expat)))) + (define-public guile-irregex (package (name "guile-irregex") @@ -966,7 +1040,7 @@ Guile's foreign function interface.") (let ((commit "607721fe1174a299e45d457acacf94eefb964071")) (package (name "guile-sqlite3") - (version (string-append "0.0-0." (string-take commit 7))) + (version (string-append "0.0-1." (string-take commit 7))) ;; XXX: This used to be available read-only at ;; <https://www.gitorious.org/guile-sqlite3/guile-sqlite3.git/> but it @@ -994,7 +1068,7 @@ Guile's foreign function interface.") ("automake" ,automake) ("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.0) + `(("guile" ,guile-2.2) ("sqlite" ,sqlite))) (arguments '(#:phases (modify-phases %standard-phases @@ -1361,7 +1435,7 @@ SQL databases. This package implements the interface for SQLite.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.0) + `(("guile" ,guile-2.2) ("libx11" ,libx11) ("libxext" ,libxext) ("libxinerama" ,libxinerama) @@ -1377,7 +1451,7 @@ library}.") (define-public guile-daemon (package (name "guile-daemon") - (version "0.1.1") + (version "0.1.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/alezost/" name @@ -1385,12 +1459,12 @@ library}.") "/" name "-" version ".tar.gz")) (sha256 (base32 - "0wsq9l6a4sijq4i1r3kcddfaznsak2jc5k59gzkhs5il5d2kn5yi")))) + "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.0))) + `(("guile" ,guile-2.2))) (home-page "https://github.com/alezost/guile-daemon") (synopsis "Evaluate code in a running Guile process") (description @@ -1443,16 +1517,16 @@ is no support for parsing block and inline level HTML.") (define-public guile-bytestructures (package (name "guile-bytestructures") - (version "20160726.53127f6") + (version "20170402.91d042e") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/TaylanUB/scheme-bytestructures") - (commit "53127f608caf64b34fa41c389b2743b546fbe9da"))) + (commit "91d042e3427e1d7740b604b6296c616cf2eec13d"))) (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0l4nx1vp9fkrgrgwjiycj7nx6wfjfd39rqamv4pmq7issi8mrywq")))) + "04lgh0nk6ddnwgh20hnz4pyhczaik0xbd50kikjsxcwcl46shavb")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -1472,6 +1546,8 @@ is no support for parsing block and inline level HTML.") effective)) (source (assoc-ref %build-inputs "source")) (doc (string-append out "/share/doc/scheme-bytestructures")) + (sld-files (with-directory-excursion source + (find-files "bytestructures/r7" "\\.exports.sld$"))) (scm-files (filter (lambda (path) (not (string-prefix? "bytestructures/r7" path))) (with-directory-excursion source @@ -1503,7 +1579,7 @@ is no support for parsing block and inline level HTML.") file)) (error (format #f "Failed to compile ~s to ~s!" file go-file))))) - scm-files) + (append sld-files scm-files)) ;; Also copy over the README. (install-file "README.md" doc) @@ -1523,7 +1599,7 @@ type system, elevating types to first-class status.") (define-public guile-aspell (package (name "guile-aspell") - (version "0.3") + (version "0.4") (source (origin (method url-fetch) (uri (string-append @@ -1531,23 +1607,27 @@ type system, elevating types to first-class status.") version ".tar.gz")) (sha256 (base32 - "1wknn57x2qcsbn7zw6sbn1ma6fjsg8cvpnf78ak47s8jw6k6j75n")))) + "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077")))) (build-system gnu-build-system) (arguments - '(#:configure-flags (list (string-append "--with-guilesitedir=" - (assoc-ref %outputs "out") - "/share/guile/site/2.0")) - #:phases (modify-phases %standard-phases + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'set-guilesitedir + (lambda _ + (substitute* "Makefile.in" + (("^guilesitedir =.*$") + "guilesitedir = \ +$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + #t)) (add-before 'build 'set-libaspell-file-name (lambda* (#:key inputs #:allow-other-keys) (let ((aspell (assoc-ref inputs "aspell"))) - (substitute* "aspell/aspell.scm" + (substitute* "aspell.scm" (("\"libaspell\\.so\"") (string-append "\"" aspell "/lib/libaspell\""))) #t)))))) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.0) + (inputs `(("guile" ,guile-2.2) ("aspell" ,aspell))) (home-page "https://github.com/spk121/guile-aspell") (synopsis "Spell-checking from Guile") @@ -1692,8 +1772,8 @@ is not available for Guile 2.0.") (license license:lgpl3+))) (define-public guile-git - (let ((revision "1") - (commit "96dfb3bdba39a37cf6aefb18e335118a6115f963")) + (let ((revision "2") + (commit "06f9fc3d9ac95798d4a51e6310f7b594ce5597e0")) (package (name "guile-git") (version (string-append "0.0-" revision "." (string-take commit 7))) @@ -1703,18 +1783,13 @@ is not available for Guile 2.0.") (uri (git-reference (url home-page) (commit commit))) (sha256 (base32 - "0v73251kmh1vs7gp3jh4pk4rikl4d8illwi0gnhwa55ij1mn9apl")) + "0rcq0f8dhl89ia7336bq8y279q5ada0b1kabcqw9zl3125k3cp4v")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'bootstrap (lambda _ - ;; Install .go files to "site-ccache", not "ccache". - (substitute* "Makefile.am" - (("/ccache") - "/site-ccache")) - (zero? (system* "autoreconf" "-vfi"))))))) (native-inputs `(("autoconf" ,autoconf) @@ -1731,4 +1806,68 @@ is not available for Guile 2.0.") manipulate repositories of the Git version control system.") (license license:gpl3+)))) +(define-public guile-syntax-highlight + (let ((commit "a047675e66861b647426372aa2ba7820f749616d") + (revision "0")) + (package + (name "guile-syntax-highlight") + (version (string-append "0.0." revision "." + (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://dthompson.us/guile-syntax-highlight.git") + (commit commit))) + (sha256 + (base32 + "1zjr6sg3n7xbdsliy45i39dqanxvcms58ayx36wxrz72zpq58vq3")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ + (zero? (system* "sh" "bootstrap"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (synopsis "General-purpose syntax highlighter for GNU Guile") + (description "Guile-syntax-highlight is a general-purpose syntax +highlighting library for GNU Guile. It can parse code written in various +programming languages into a simple s-expression that can be converted to +HTML (via SXML) or any other format for rendering.") + (home-page "http://dthompson.us/software/guile-syntax-highlight") + (license license:lgpl3+)))) + +(define-public guile-sjson + (package + (name "guile-sjson") + (version "0.2.1") + (source (origin + (method url-fetch) + (uri (string-append "https://dustycloud.org/misc/sjson-" version + ".tar.gz")) + (sha256 + (base32 + "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ (zero? (system* "sh" "bootstrap.sh"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://gitlab.com/dustyweb/guile-sjson") + (synopsis "S-expression based json reader/writer for Guile") + (description "guile-sjson is a json reader/writer for Guile. +It has a nice, simple s-expression based syntax.") + (license license:lgpl3+))) + ;;; guile.scm ends here diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index b5da4cb963..bd1eb4b085 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -39,6 +39,10 @@ (string-append "mirror://gnu/gnumach/gnumach-" version ".tar.gz")) +(define (hurd-source-url version) + (string-append "mirror://gnu/hurd/hurd-" + version ".tar.gz")) + (define-public gnumach-headers (package (name "gnumach-headers") @@ -113,8 +117,7 @@ communication.") (version "0.9") (source (origin (method url-fetch) - (uri (string-append "mirror://gnu/hurd/hurd-" - version ".tar.gz")) + (uri (hurd-source-url version)) (sha256 (base32 "1nw9gly0n7pyv3cpfm4mmxy4yccrx4g0lyrvd3vk2vil26jpbggw")))) @@ -242,3 +245,44 @@ Hurd-minimal package which are needed for both glibc and GCC.") (description "GNU Mach is the microkernel upon which a GNU Hurd system is based.") (license gpl2+))) + +(define-public hurd + (package + (name "hurd") + (version "0.9") + (source (origin + (method url-fetch) + (uri (hurd-source-url version)) + (sha256 + (base32 + "1nw9gly0n7pyv3cpfm4mmxy4yccrx4g0lyrvd3vk2vil26jpbggw")) + (patches (search-patches "hurd-fix-eth-multiplexer-dependency.patch")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'pre-build + (lambda _ + ;; Don't change the ownership of any file at this time. + (substitute* '("daemons/Makefile" "utils/Makefile") + (("-o root -m 4755") "")) + #t))) + #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + %output "/lib") + "--disable-ncursesw" + "--without-libbz2" + "--without-libz" + "--without-parted"))) + (build-system gnu-build-system) + (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) + (native-inputs + `(("mig" ,mig) + ("perl" ,perl))) + (supported-systems %hurd-systems) + (home-page "https://www.gnu.org/software/hurd/hurd.html") + (synopsis "The kernel servers for the GNU operating system") + (description + "The Hurd is the kernel for the GNU system, a replacement and +augmentation of standard Unix kernels. It is a collection of protocols for +system interaction (file systems, networks, authentication), and servers +implementing them.") + (license gpl2+))) diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 6c5537579e..04be3b0c3b 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; @@ -135,7 +135,7 @@ may also simplify input method development.") (define-public ibus-libpinyin (package (name "ibus-libpinyin") - (version "1.7.2") + (version "1.9.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/libpinyin/" @@ -143,7 +143,7 @@ may also simplify input method development.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "080ixx5lih9lr78b061y67dqmiyc7ij87jl1sa26hhs1dr28ihka")))) + "0gly314z6zn2fv52jw0764k66ry97llk009bk1q1iwf6rr829v68")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases @@ -190,7 +190,7 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.") (define-public libpinyin (package (name "libpinyin") - (version "1.2.0") + (version "2.0.0") (source (origin (method url-fetch) (uri (string-append @@ -199,18 +199,18 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "04didxd39vlry6nqy7xqynwc68ndajnhw334wahfmp7zjbbscs7p")))) + "17fibx9psrxfiznm4yw8klgbnh3ksyisx0pm1n59kxkrq61v8y0b")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-before 'configure 'autogen - (lambda _ (zero? (system* "autoreconf" "-vif")))) + (lambda _ (zero? (system* "autoreconf" "-vif")))) (add-after 'unpack 'unpack-model - (lambda* (#:key inputs #:allow-other-keys) - (zero? (system* "tar" "-xvf" - (assoc-ref inputs "model") - "-C" "data"))))))) + (lambda* (#:key inputs #:allow-other-keys) + (zero? (system* "tar" "-xvf" + (assoc-ref inputs "model") + "-C" "data"))))))) (inputs `(("glib" ,glib) ("bdb" ,bdb) @@ -218,10 +218,10 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.") ,(origin (method url-fetch) (uri (string-append "mirror://sourceforge/libpinyin/" - "models/model10.text.tar.gz")) + "models/model14.text.tar.gz")) (sha256 (base32 - "0g489wqcfklxphhxpkh8i4qf9y8scmnmdbfrzdbrgf3rignbwyiw")))))) + "0qqk30nflj07zjhs231c95ln4yj4ipzwxxiwrxazrg4hb8bhypqq")))))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm index d842f03b4e..3461285850 100644 --- a/gnu/packages/icu4c.scm +++ b/gnu/packages/icu4c.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +26,7 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix build-system ant) #:use-module (guix build-system gnu)) (define-public icu4c @@ -38,6 +41,9 @@ "/icu4c-" (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) "-src.tgz")) + (patches + (search-patches "icu4c-CVE-2017-7867-CVE-2017-7868.patch" + "icu4c-reset-keyword-list-iterator.patch")) (sha256 (base32 "036shcb3f8bm1lynhlsb4kpjm9s9c2vdiir01vg216rs2l8482ib")))) (build-system gnu-build-system) @@ -63,3 +69,30 @@ globalisation support for software applications. This package contains the C/C++ part.") (license x11) (home-page "http://site.icu-project.org/"))) + +(define-public java-icu4j + (package + (name "java-icu4j") + (version "59.1") + (source (origin + (method url-fetch) + (uri (string-append "http://download.icu-project.org/files/icu4j/" + version "/icu4j-" + (string-map (lambda (x) + (if (char=? x #\.) #\_ x)) + version) + "-src.jar")) + (sha256 + (base32 + "0bgxsvgi0qcwj60pvcxrf7a3fbk7aksyxnfwpbzavyfrfzixqh0c")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "icu4j.jar")) + (home-page "http://site.icu-project.org/") + (synopsis "International Components for Unicode") + (description + "ICU is a set of C/C++ and Java libraries providing Unicode and +globalisation support for software applications. This package contains the +Java part.") + (license x11))) diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm index 2b7f4cc9dd..de9b5dd1d0 100644 --- a/gnu/packages/idris.scm +++ b/gnu/packages/idris.scm @@ -31,7 +31,7 @@ (define-public idris (package (name "idris") - (version "0.99.1") + (version "1.0") (source (origin (method url-fetch) (uri (string-append @@ -39,7 +39,7 @@ "idris-" version "/idris-" version ".tar.gz")) (sha256 (base32 - "12kw452arnl5ldip2x749j5np3l40bv7asqdv9w0f60j45hii40r")))) + "1srbz0cyvd0k1yqgbrwnfj94yg5y3z533q1kzac96z1h7v454s5h")))) (build-system haskell-build-system) (inputs `(("gmp" ,gmp) @@ -146,12 +146,14 @@ Epigram and Agda.") idris-path-files)) (install-cmd (cons* idris-bin "--ibcsubdir" ibcsubdir - "--install" ipkg + "--build" ipkg + ;; only trigger a build, as --ibcsubdir + ;; already installs .ibc files. + (apply append (map (lambda (path) (list "--idrispath" path)) idris-path-subdirs))))) - (setenv "IDRIS_LIBRARY_PATH" idris-libs) ;; FIXME: Seems to be a bug in idris that causes a dubious failure. (apply system* install-cmd) #t)))))) diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm new file mode 100644 index 0000000000..1753b926c6 --- /dev/null +++ b/gnu/packages/image-processing.scm @@ -0,0 +1,130 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages image-processing) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (guix download) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages algebra) + #:use-module (gnu packages boost) + #:use-module (gnu packages compression) + #:use-module (gnu packages documentation) + #:use-module (gnu packages gnome) + #:use-module (gnu packages graphics) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages image) + #:use-module (gnu packages maths) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages xml) + #:use-module (gnu packages vtk)) + +;; We use the latest snapshot of this package because the latest release is +;; from 2011 and has known vulnerabilities that cannot easily be fixed by +;; applying patches. +(define-public dcmtk + (package + (name "dcmtk") + (version "3.6.1_20170228") + (source (origin + (method url-fetch) + (uri (string-append "ftp://dicom.offis.de/pub/dicom/offis/" + "software/dcmtk/snapshot/dcmtk-" + version ".tar.gz")) + (sha256 + (base32 + "04cwfx8yrscqcd59mxk2fh6314ckayi9cp68iql5a57pf2pg5qld")))) + (build-system gnu-build-system) + (inputs + `(("libtiff" ,libtiff) + ("libpng" ,libpng) + ("doxygen" ,doxygen) + ("zlib" ,zlib))) + (native-inputs + `(("perl" ,perl))) + (home-page "http://dcmtk.org") + (synopsis "Libraries and programs implementing parts of the DICOM standard") + (description "DCMTK is a collection of libraries and applications +implementing large parts the DICOM standard. It includes software for +examining, constructing and converting DICOM image files, handling offline +media, sending and receiving images over a network connection, as well as +demonstrative image storage and worklist servers.") + (license (license:fsf-free + "file://COPYRIGHT" + "A union of the Apache 2.0 licence and various non-copyleft +licences similar to the Modified BSD licence.")))) + +(define-public mia + (package + (name "mia") + (version "2.4.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/mia/mia/" + (version-major+minor version) + "/mia-" version ".tar.xz")) + (sha256 + (base32 + "124gvf8nkls59mlnx8ynq00n9zrah7a54gsywafx7qmfr0y95ra7")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DMIA_CREATE_NIPYPE_INTERFACES=0" + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") "/lib") + "-DCMAKE_CXX_FLAGS=-fpermissive"))) + (inputs + `(("boost" ,boost) + ("dcmtk" ,dcmtk) + ("doxygen" ,doxygen) + ("eigen" ,eigen) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("gsl" ,gsl) + ("gts" ,gts) + ("hdf5" ,hdf5) + ("itpp" ,itpp) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtiff" ,libtiff) + ("libxml" ,libxml2) + ("libxml++" ,libxml++) + ("maxflow" ,maxflow) + ("niftilib" ,niftilib) + ("nlopt" ,nlopt) + ("openexr" ,openexr) + ("python-lxml" ,python2-lxml) + ("vtk" ,vtk))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python-2))) + (home-page "http://mia.sourceforge.net") + (synopsis "Toolkit for gray scale medical image analysis") + (description "MIA provides a combination of command line tools, plug-ins, +and libraries that make it possible run image processing tasks interactively +in a command shell and to prototype using the shell's scripting language. It +is built around a plug-in structure that makes it easy to add functionality +without compromising the original code base and it makes use of a wide variety +of external libraries that provide additional functionality.") + (license license:gpl3+))) diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 05b9472395..768ed325bd 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -1,10 +1,12 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017 nee <nee-git@hidamari.blue> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,23 +29,32 @@ #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system python) #:use-module (gnu packages autotools) + #:use-module (gnu packages algebra) #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) + #:use-module (gnu packages graphics) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages maths) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages xorg)) + #:use-module (gnu packages python) + #:use-module (gnu packages qt) + #:use-module (gnu packages xorg) + #:use-module (gnu packages)) (define-public feh (package (name "feh") - (version "2.18.2") + (version "2.18.3") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -51,7 +62,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "09f5rfzls4h5jcrp7ylwbiljp5qzc2nbw9p2csv0pnlaixj69gil")))) + "0qq567d0g181k6llr6p759lnni39va5xakjqngd6063fm73nhbyq")))) (build-system gnu-build-system) (arguments '(#:phases (alist-delete 'configure %standard-phases) @@ -122,6 +133,29 @@ image formats; tools for image comparison, sorting and managing photo collection. Geeqie was initially based on GQview.") (license license:gpl2+))) +(define-public gpicview + (package + (name "gpicview") + (version "0.2.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/lxde/" + "GPicView%20%28image%20Viewer%29/0.2.x/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0hi9v0rdx47nys0wvm9xasdrafa34r5kq6crb074a0ipwmc60iiq")))) + (build-system gnu-build-system) + (inputs `(("gtk+" ,gtk+-2) + ("libjpeg" ,libjpeg))) + (native-inputs `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (synopsis "Simple and fast image viewer for X") + (description "gpicview is a lightweight GTK+ 2.x based image viewer. +It is the default image viewer on LXDE desktop environment.") + (home-page "http://lxde.sourceforge.net/gpicview/") + (license license:gpl2+))) + (define-public sxiv (package (name "sxiv") @@ -266,3 +300,105 @@ your images. Among its features are: "Catimg is a little program that prints images in the terminal. It supports JPEG, PNG and GIF formats.") (license license:expat))) + +(define-public luminance-hdr + (package + (name "luminance-hdr") + (version "2.4.0") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/qtpfsgui/luminance/" + version "/luminance-hdr-" version ".tar.bz2")) + (sha256 + (base32 + "00fldbcizrx8jcnjgq74n3zmbm27dxzl96fxa7q49689mfnlw08l")) + (patches (search-patches "luminance-hdr-qt-printer.patch")))) + (build-system cmake-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (inputs + `(("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtwebkit" ,qtwebkit) + ("boost" ,boost) + ;; ("gtest" ,gtest) + ("libraw" ,libraw) + ("zlib" ,zlib) + ("exiv2" ,exiv2) + ("libpng" ,libpng) + ("libjpeg" ,libjpeg) + ("lcms" ,lcms) + ("openexr" ,openexr) + ("fftw" ,fftwf) + ("gsl" ,gsl) + ("libtiff" ,libtiff))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'set-paths 'add-ilmbase-include-path + (lambda* (#:key inputs #:allow-other-keys) + ;; 'OpenEXR.pc' has a -I for IlmBase but 'FindOpenEXR.cmake' does + ;; not use 'OpenEXR.pc'. Thus, we need to add + ;; "$ilmbase/include/OpenEXR/" to the CPATH. + (setenv "CPATH" + (string-append (assoc-ref inputs "ilmbase") + "/include/OpenEXR" + ":" (or (getenv "CPATH") ""))) + #t))))) + (home-page "http://qtpfsgui.sourceforge.net") + (synopsis "High dynamic range (HDR) imaging application") + (description + "Luminance HDR (formerly QtPFSGui) is a graphical user interface +application that aims to provide a workflow for high dynamic range (HDR) +imaging. It supports several HDR and LDR image formats, and it can: + +@itemize +@item Create an HDR file from a set of images (formats: JPEG, TIFF 8bit and +16bit, RAW) of the same scene taken at different exposure setting; +@item Save load HDR images; +@item Rotate, resize and crop HDR images; +@item Tone-map HDR images; +@item Copy EXIF data between sets of images. +@end itemize\n") + (license license:gpl2+))) + +;; CBR and RAR are currently unsupported, due to non-free dependencies. +;; For optional PDF support, you can install the mupdf package. +(define-public mcomix + (package + (name "mcomix") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/mcomix/MComix-" version + "/mcomix-" version ".tar.bz2")) + (sha256 + (base32 + "0fzsf9pklhfs1rzwzj64c0v30b74nk94p93h371rpg45qnfiahvy")))) + (build-system python-build-system) + (inputs + `(("p7zip" ,p7zip) + ("python2-pillow" ,python2-pillow) + ("python2-pygtk" ,python2-pygtk))) + (arguments + ;; Python 2.5 or newer (Python 3 and up is not supported) + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (let ((p7zip (assoc-ref inputs "p7zip"))) + ;; insert absolute path to 7z executable + (substitute* "mcomix/archive/sevenzip_external.py" + (("_7z_executable = -1") + (string-append "_7z_executable = u'" p7zip "/bin/7z'")))) + #t))))) + (home-page "https://sourceforge.net/p/mcomix/wiki/Home/") + (synopsis "Image viewer for comics") + (description "MComix is a customizable image viewer that specializes as +a comic and manga reader. It supports a variety of container formats +including CBZ, CB7, CBT, LHA.") + (license license:gpl2+))) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 82fc7bfe7a..326834907d 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -13,8 +13,9 @@ ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -156,6 +157,41 @@ APNG patch provides APNG support to libpng.") (sha256 (base32 "1n2lrzjkm5jhfg2bs10q398lkwbbx742fi27zgdgx0x23zhj0ihg")))))) +(define-public pngcrunch + (package + (name "pngcrunch") + (version "1.8.11") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/pmt/pngcrush/" + version "/pngcrush-" version ".tar.xz")) + (sha256 (base32 + "1c7m316i91jp3h1dj1ppppdv6zilm2njk1wrpqy2zj0fcll06lwd")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags '("-f" "Makefile-nolib") + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Makefile-nolib" + (("^(PNG(INC|LIB) = )/usr/local/" line vardef) + (string-append vardef (assoc-ref inputs "libpng") "/")) + (("^(Z(INC|LIB) = )/usr/local/" line vardef) + (string-append vardef (assoc-ref inputs "zlib") "/")) + ;; The Makefile is written by hand and not using $PREFIX + (("\\$\\(DESTDIR\\)/usr/") + (string-append (assoc-ref outputs "out") "/")))))))) + (inputs + `(("libpng" ,libpng) + ("zlib" , zlib))) + (home-page "https://pmt.sourceforge.net/pngcrush") + (synopsis "Utility to compress PNG files") + (description "pngcrusqh is an optimizer for PNG (Portable Network Graphics) +files. It can compress them as much as 40% losslessly.") + (license license:zlib))) + (define-public libjpeg (package (name "libjpeg") @@ -320,7 +356,10 @@ extracting icontainer icon files.") "libtiff-divide-by-zero-tiffcp.patch" "libtiff-assertion-failure.patch" "libtiff-CVE-2016-10094.patch" - "libtiff-CVE-2017-5225.patch")) + "libtiff-CVE-2017-5225.patch" + "libtiff-CVE-2017-7593.patch" + "libtiff-CVE-2017-7594.patch" + "libtiff-multiple-UBSAN-crashes.patch")) (sha256 (base32 "06ghqhr4db1ssq0acyyz49gr8k41gzw6pqb6mbn5r7jqp77s4hwz")))) @@ -460,7 +499,10 @@ arithmetic ops.") (sha256 (base32 "04akiwab8iy5iy34razcvh9mcja9wy737civ3sbjxk4j143s1b2s")) (patches (search-patches "jbig2dec-ignore-testtest.patch" - "jbig2dec-CVE-2016-9601.patch")))) + "jbig2dec-CVE-2016-9601.patch" + "jbig2dec-CVE-2017-7885.patch" + "jbig2dec-CVE-2017-7975.patch" + "jbig2dec-CVE-2017-7976.patch")))) (build-system gnu-build-system) (synopsis "Decoder of the JBIG2 image compression format") @@ -599,7 +641,7 @@ compose, and analyze GIF images.") (define-public imlib2 (package (name "imlib2") - (version "1.4.9") + (version "1.4.10") (source (origin (method url-fetch) (uri (string-append @@ -607,7 +649,7 @@ compose, and analyze GIF images.") "/imlib2-" version ".tar.bz2")) (sha256 (base32 - "08809xxk2555yj6glixzw9a0x3x8cx55imd89kj3r0h152bn8a3x")))) + "0wm2q2xlkbm71k7mw2jyzbxgzylrkcj5yh6nq58w5gybhp98qs9z")))) (build-system gnu-build-system) (native-inputs `(("pkgconfig" ,pkg-config))) @@ -906,7 +948,8 @@ convert, manipulate, filter and display a wide variety of image formats.") "/software/jasper-" version ".tar.gz")) (sha256 (base32 - "1njdbxv7d4anzrd476wjww2qsi96dd8vfnp4hri0srrqxpszl92v")))) + "1njdbxv7d4anzrd476wjww2qsi96dd8vfnp4hri0srrqxpszl92v")) + (patches (search-patches "jasper-CVE-2017-6850.patch")))) (build-system cmake-build-system) (inputs `(("libjpeg" ,libjpeg))) (synopsis "JPEG-2000 library") diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 6423f91f46..bde3ebe402 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -46,14 +46,14 @@ ;; The 7 release series has an incompatible API, while the 6 series is still ;; maintained. Don't update to 7 until we've made sure that the ImageMagick ;; users are ready for the 7-series API. - (version "6.9.8-3") + (version "6.9.8-6") (source (origin (method url-fetch) (uri (string-append "mirror://imagemagick/ImageMagick-" version ".tar.xz")) (sha256 (base32 - "05hk841f5fw1hh7pfmpznlwcdr68ijk3s3zwqv0g009xh17q1max")))) + "1sxg2wx3nrzbymh5wcqiv1x401nrz95xkrqgk3x446vx8lq7ln6w")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch") diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index f4ff7fcbef..30e14a0914 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 ng0 <ng0@libertad.pw> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -141,14 +142,14 @@ SILC and ICB protocols via plugins.") (define-public weechat (package (name "weechat") - (version "1.7") + (version "1.8") (source (origin (method url-fetch) - (uri (string-append "http://weechat.org/files/src/weechat-" + (uri (string-append "https://weechat.org/files/src/weechat-" version ".tar.xz")) (sha256 (base32 - "1crdwlxj5liik32svflfac0s87vm6p8xm208yndigzsbg8rli4sr")) + "05z0qmlmdm0zgkzhi6cy6snxdz37h1n5z2s460df76akjr7capxn")) (patches (search-patches "weechat-python.patch")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -190,12 +191,13 @@ SILC and ICB protocols via plugins.") #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. -The client uses a curses frontend, and there are remote interfaces -for Web, Qt, Android and Emacs. In WeeChat everything can be done -with a keyboard, though it also supports mouse. It is customizable -and extensible with plugins and scripts.") - (home-page "http://www.weechat.org/") +@dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast. +The client uses a curses frontend, and there are remote interfaces for Web, +Qt, Android, and Emacs. + +Everything in WeeChat can be done with the keyboard, though it also supports +using a mouse. It is customizable and extensible with plugins and scripts.") + (home-page "https://www.weechat.org/") (license license:gpl3))) (define-public ircii @@ -298,14 +300,14 @@ and extensible with plugins and scripts.") (define-public limnoria (package (name "limnoria") - (version "2017.01.10") + (version "2017.03.30") (source (origin (method url-fetch) (uri (pypi-uri "limnoria" version)) (sha256 (base32 - "0va7iiwkrd5miibpaphfm2jlfsmaazbqb8izkmlnlzkqnskhz1ff")))) + "1q0y6iglg1cbhimgjz3afws51as3shy6rd61dck7jfm25y8pi6g8")))) (build-system python-build-system) (inputs `(("python-pytz" ,python-pytz) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 1d18a0b066..b422a1effe 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> +;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,9 +24,12 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix hg-download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system ant) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages attr) #:use-module (gnu packages autotools) @@ -37,12 +41,15 @@ #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) + #:use-module (gnu packages gettext) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages gnuzilla) ;nss #:use-module (gnu packages ghostscript) ;lcms #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages linux) ;alsa #:use-module (gnu packages wget) @@ -57,291 +64,990 @@ #:use-module (srfi srfi-11) #:use-module (ice-9 match)) -(define-public java-swt + +;;; +;;; Java bootstrap toolchain. +;;; + +;; The Java bootstrap begins with Jikes, a Java compiler written in C++. We +;; use it to build the SableVM standard library and virtual machine, which are +;; written in a simpler dialect of Java and C, respectively. This is +;; sufficient to build an older version of Ant, which is needed to build an +;; older version of ECJ, an incremental Java compiler, both of which are +;; written in Java. +;; +;; ECJ is needed to build the latest release of GNU Classpath (0.99). +;; Classpath (> 0.98) is a requirement for JamVM, a more modern implementation +;; of the Java virtual machine. +;; +;; With JamVM we can build the latest development version of GNU Classpath, +;; which has much more support for Java 1.6 than the latest release. Since +;; the previous build of JamVM is limited by the use of GNU Classpath 0.99 we +;; rebuild it with the latest development version of GNU Classpath. +;; +;; Finally, we use the bootstrap toolchain to build the OpenJDK with the +;; Icedtea 1.x build framework. We then build the more recent JDKs Icedtea +;; 2.x and Icedtea 3.x. + +(define jikes (package - (name "java-swt") - (version "4.6") - (source - ;; The types of many variables and procedures differ in the sources - ;; dependent on whether the target architecture is a 32-bit system or a - ;; 64-bit system. Instead of patching the sources on demand in a build - ;; phase we download either the 32-bit archive (which mostly uses "int" - ;; types) or the 64-bit archive (which mostly uses "long" types). - (let ((hash32 "0jmx1h65wqxsyjzs64i2z6ryiynllxzm13cq90fky2qrzagcw1ir") - (hash64 "0wnd01xssdq9pgx5xqh5lfiy3dmk60dzzqdxzdzf883h13692lgy") - (file32 "x86") - (file64 "x86_64")) - (let-values (((hash file) - (match (or (%current-target-system) (%current-system)) - ("x86_64-linux" (values hash64 file64)) - (_ (values hash32 file32))))) - (origin - (method url-fetch) - (uri (string-append - "http://ftp-stud.fht-esslingen.de/pub/Mirrors/" - "eclipse/eclipse/downloads/drops4/R-" version - "-201606061100/swt-" version "-gtk-linux-" file ".zip")) - (sha256 (base32 hash)))))) - (build-system ant-build-system) + (name "jikes") + (version "1.22") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/jikes/Jikes/" + version "/jikes-" version ".tar.bz2")) + (sha256 + (base32 + "1qqldrp74pzpy5ly421srqn30qppmm9cvjiqdngk8hf47dv2rc0c")))) + (build-system gnu-build-system) + (home-page "http://jikes.sourceforge.net/") + (synopsis "Compiler for the Java language") + (description "Jikes is a compiler that translates Java source files as +defined in The Java Language Specification into the bytecoded instruction set +and binary format defined in The Java Virtual Machine Specification.") + (license license:ibmpl1.0))) + +(define sablevm-classpath + (package + (name "sablevm-classpath") + (version "1.13") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/sablevm/sablevm/" + version "/sablevm-classpath-" version ".tar.gz")) + (sha256 + (base32 + "1qyhyfz8idghxdam16hdgpa24r2x4xbg9z8c8asa3chnd79h3zw2")))) + (build-system gnu-build-system) (arguments - `(#:jar-name "swt.jar" - #:tests? #f ; no "check" target + `(#:configure-flags + (list "--with-jikes" + "--disable-Werror" + "--disable-gmp" + "--disable-gtk-peer" + "--disable-plugin" + "--disable-dssi" + "--disable-alsa" + "--disable-gjdoc"))) + (inputs + `(("gconf" ,gconf) + ("gtk+" ,gtk+-2))) + (native-inputs + `(("jikes" ,jikes) + ("fastjar" ,fastjar) + ("pkg-config" ,pkg-config))) + (home-page "http://sablevm.org/") + (synopsis "Java Virtual Machine") + (description "SableVM is a clean-room, highly portable and efficient Java +virtual machine. Its goals are to be reasonably small, fast, and compliant +with the various specifications (JVM specification, JNI, invocation interface, +etc.). SableVM is no longer maintained. + +This package provides the classpath library.") + (license license:lgpl2.1+))) + +(define sablevm + (package + (name "sablevm") + (version "1.13") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/sablevm/sablevm/" + version "/sablevm-" version ".tar.gz")) + (sha256 + (base32 + "1jyg4bsym6igz94wps5443c7wiwlzinqzkchcw972nz4kf1cql6g")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-path-to-classpath + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Makefile.in" + (("@datadir@/sablevm-classpath") + (string-append (assoc-ref inputs "classpath") + "/share/sablevm-classpath"))) + (substitute* "src/libsablevm/Makefile.in" + (("\\$\\(libdir\\)/sablevm-classpath") + (string-append (assoc-ref inputs "classpath") + "/lib/sablevm-classpath")) + (("\\$\\(datadir\\)/sablevm-classpath") + (string-append (assoc-ref inputs "classpath") + "/share/sablevm-classpath"))) + #t))))) + (inputs + `(("classpath" ,sablevm-classpath) + ("jikes" ,jikes) + ("zlib" ,zlib))) + (native-inputs + `(("libltdl" ,libltdl))) + (home-page "http://sablevm.org/") + (synopsis "Java Virtual Machine") + (description "SableVM is a clean-room, highly portable and efficient Java +virtual machine. Its goals are to be reasonably small, fast, and compliant +with the various specifications (JVM specification, JNI, invocation interface, +etc.). SableVM is no longer maintained. + +This package provides the virtual machine.") + (license license:lgpl2.1+))) + +(define ant-bootstrap + (package + (name "ant-bootstrap") + ;; The 1.10.x series requires Java 8. 1.9.0 and later use generics, which + ;; are not supported. The 1.8.x series is the last to use only features + ;; supported by Jikes, but it cannot seem to be built with sablevm. + (version "1.7.1") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.apache.org/dist/" + "ant/source/apache-ant-" + version "-src.tar.bz2")) + (sha256 + (base32 + "19pvqvgkxgpgsqm4lvbki5sm0z84kxmykdqicvfad47gc1r9mi2d")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no "check" target #:phases (modify-phases %standard-phases - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (and (mkdir "swt") - (zero? (system* "unzip" source "-d" "swt")) - (chdir "swt") - (mkdir "src") - (zero? (system* "unzip" "src.zip" "-d" "src"))))) - ;; The classpath contains invalid icecat jars. Since we don't need - ;; anything other than the JDK on the classpath, we can simply unset - ;; it. - (add-after 'configure 'unset-classpath - (lambda _ (unsetenv "CLASSPATH") #t)) - (add-before 'build 'build-native - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) - ;; Build shared libraries. Users of SWT have to set the system - ;; property swt.library.path to the "lib" directory of this - ;; package output. - (mkdir-p lib) - (setenv "OUTPUT_DIR" lib) - (with-directory-excursion "src" - (zero? (system* "bash" "build.sh")))))) - (add-after 'install 'install-native + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (setenv "JAVA_HOME" + (string-append (assoc-ref inputs "sablevm") + "/lib/sablevm")) + (setenv "JAVACMD" + (string-append (assoc-ref inputs "sablevm") + "/bin/java-sablevm")) + (setenv "JAVAC" + (string-append (assoc-ref inputs "sablevm") + "/bin/javac-sablevm")) + + ;; Use jikes instead of javac for <javac ...> tags in build.xml + (setenv "ANT_OPTS" "-Dbuild.compiler=jikes") + + ;; jikes produces lots of warnings, but they are not very + ;; interesting, so we silence them. + (setenv "$BOOTJAVAC_OPTS" "-nowarn") + + ;; Disable tests because we are bootstrapping and thus don't have + ;; any of the dependencies required to build and run the tests. + (substitute* "build.xml" + (("depends=\"jars,test-jar\"") "depends=\"jars\"")) + (zero? (system* "bash" "bootstrap.sh" + (string-append "-Ddist.dir=" + (assoc-ref %outputs "out")))))) + (delete 'install)))) + (native-inputs + `(("jikes" ,jikes) + ("sablevm" ,sablevm))) + (home-page "http://ant.apache.org") + (synopsis "Build tool for Java") + (description + "Ant is a platform-independent build tool for Java. It is similar to +make but is implemented using the Java language, requires the Java platform, +and is best suited to building Java projects. Ant uses XML to describe the +build process and its dependencies, whereas Make uses Makefile format.") + (license license:asl2.0))) + +;; Version 3.2.2 is the last version without a dependency on a full-fledged +;; compiler for Java 1.5. +(define ecj-bootstrap + (package + (name "ecj-bootstrap") + (version "3.2.2") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.eclipse.org/eclipse/" + "downloads/drops/R-" version + "-200702121330/ecjsrc.zip")) + (sha256 + (base32 + "05hj82kxd23qaglsjkaqcj944riisjha7acf7h3ljhrjyljx8307")))) + ;; It would be so much easier if we could use the ant-build-system, but we + ;; cannot as we don't have ant at this point. We use ecj for + ;; bootstrapping the JDK. + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CLASSPATH" + (string-join + (find-files (string-append (assoc-ref inputs "ant-bootstrap") + "/lib") + "\\.jar$") + ":")) + #t)) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + ;; The unpack phase enters the "org" directory by mistake. + (chdir "..") + + ;; Create a simple manifest to make ecj executable. + (with-output-to-file "manifest" + (lambda _ + (display "Manifest-Version: 1.0 +Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"))) + + ;; Compile it all! + (and (zero? (apply system* "javac-sablevm" + (find-files "." "\\.java$"))) + (zero? (system* "fastjar" "cvfm" + "ecj-bootstrap.jar" "manifest" "."))))) + (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) - (for-each (lambda (file) - (install-file file lib)) - (find-files "." "\\.so$")) + (let ((share (string-append (assoc-ref outputs "out") + "/share/java/"))) + (mkdir-p share) + (install-file "ecj-bootstrap.jar" share) #t)))))) + (native-inputs + `(("ant-bootstrap" ,ant-bootstrap) + ("unzip" ,unzip) + ("sablevm" ,sablevm) + ("fastjar" ,fastjar))) + (home-page "https://eclipse.org") + (synopsis "Eclipse Java development tools core batch compiler") + (description "This package provides the Eclipse Java core batch compiler +for bootstrapping purposes. The @dfn{Eclipse compiler for Java} (ecj) is a +requirement for all GNU Classpath releases after version 0.93.") + (license license:epl1.0))) + +(define ecj-javac-wrapper + (package (inherit ecj-bootstrap) + (name "ecj-javac-wrapper") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (let ((backend 'sablevm)) + (use-modules (guix build utils)) + (let* ((bin (string-append (assoc-ref %outputs "out") "/bin")) + (target (string-append bin "/javac")) + (guile (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (ecj (string-append (assoc-ref %build-inputs "ecj-bootstrap") + "/share/java/ecj-bootstrap.jar")) + (java (case backend + ((sablevm) + (string-append (assoc-ref %build-inputs "sablevm") + "/lib/sablevm/bin/java")) + ((jamvm) + (string-append (assoc-ref %build-inputs "jamvm") + "/bin/jamvm")))) + (bootcp (case backend + ((sablevm) + (let ((jvmlib (string-append + (assoc-ref %build-inputs "sablevm-classpath") + "/lib/sablevm"))) + (string-append jvmlib "/jre/lib/rt.jar"))) + ((jamvm) + (let ((jvmlib (string-append (assoc-ref %build-inputs "classpath") + "/share/classpath"))) + (string-append jvmlib "/lib/glibj.zip:" + jvmlib "/lib/tools.zip")))))) + (mkdir-p bin) + (with-output-to-file target + (lambda _ + (format #t "#!~a --no-auto-compile\n!#\n" guile) + (write + `(begin (use-modules (ice-9 match) + (ice-9 receive) + (ice-9 hash-table) + (srfi srfi-1) + (srfi srfi-26)) + (define defaults + '(("-bootclasspath" ,bootcp) + ("-source" "1.5") + ("-target" "1.5") + ("-cp" "."))) + (define (main args) + (let ((classpath (getenv "CLASSPATH"))) + (setenv "CLASSPATH" + (string-append ,ecj + (if classpath + (string-append ":" classpath) + "")))) + (receive (vm-args other-args) + ;; Separate VM arguments from arguments to ECJ. + (partition (cut string-prefix? "-J" <>) + (fold (lambda (default acc) + (if (member (first default) acc) + acc (append default acc))) + args defaults)) + (apply system* ,java + (append + ;; Remove "-J" prefix + (map (cut string-drop <> 2) vm-args) + '("org.eclipse.jdt.internal.compiler.batch.Main") + (cons "-nowarn" other-args))))) + ;; Entry point + (let ((args (cdr (command-line)))) + (if (null? args) + (format (current-error-port) "javac: no arguments given!\n") + (main args))))))) + (chmod target #o755) + #t)))) + (native-inputs + `(("guile" ,guile-2.2) + ("ecj-bootstrap" ,ecj-bootstrap) + ("sablevm" ,sablevm) + ("sablevm-classpath" ,sablevm-classpath))) + (description "This package provides a wrapper around the @dfn{Eclipse +compiler for Java} (ecj) with a command line interface that is compatible with +the standard javac executable."))) + +;; Note: All the tool wrappers (e.g. for javah, javac, etc) fail with +;; java.lang.UnsupportedClassVersionError. They simply won't run on the old +;; sablevm. We use Classpath 0.99 to build JamVM, on which the Classpath +;; tools do run. Using these Classpath tools on JamVM we can then build the +;; development version of GNU Classpath. +(define classpath-on-sablevm + (package + (name "classpath") + (version "0.99") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/classpath/classpath-" + version ".tar.gz")) + (sha256 + (base32 + "1j7cby4k66f1nvckm48xcmh352b1d1b33qk7l6hi7dp9i9zjjagr")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-ecj-jar=" + (assoc-ref %build-inputs "ecj-bootstrap") + "/share/java/ecj-bootstrap.jar") + (string-append "JAVAC=" + (assoc-ref %build-inputs "ecj-javac-wrapper") + "/bin/javac") + (string-append "JAVA=" + (assoc-ref %build-inputs "sablevm") + "/bin/java-sablevm") + "GCJ_JAVAC_TRUE=no" + "ac_cv_prog_java_works=yes" ; trust me + "--disable-Werror" + "--disable-gmp" + "--disable-gtk-peer" + "--disable-gconf-peer" + "--disable-plugin" + "--disable-dssi" + "--disable-alsa" + "--disable-gjdoc") + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-data + (lambda _ (zero? (system* "make" "install-data"))))))) + (native-inputs + `(("ecj-bootstrap" ,ecj-bootstrap) + ("ecj-javac-wrapper" ,ecj-javac-wrapper) + ("fastjar" ,fastjar) + ("sablevm" ,sablevm) + ("sablevm-classpath" ,sablevm-classpath) + ("libltdl" ,libltdl) + ("pkg-config" ,pkg-config))) + (home-page "https://www.gnu.org/software/classpath/") + (synopsis "Essential libraries for Java") + (description "GNU Classpath is a project to create core class libraries +for use with runtimes, compilers and tools for the Java programming +language.") + ;; GPLv2 or later, with special linking exception. + (license license:gpl2+))) + +(define jamvm-bootstrap + (package + (name "jamvm") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/jamvm/jamvm/" + "JamVM%20" version "/jamvm-" + version ".tar.gz")) + (sha256 + (base32 + "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-classpath-install-dir=" + (assoc-ref %build-inputs "classpath"))))) (inputs - `(("xulrunner" ,icecat) - ("gtk" ,gtk+-2) - ("libxtst" ,libxtst) - ("libxt" ,libxt) - ("mesa" ,mesa) - ("glu" ,glu))) + `(("classpath" ,classpath-on-sablevm) + ("ecj-javac-wrapper" ,ecj-javac-wrapper) + ("zlib" ,zlib))) + (home-page "http://jamvm.sourceforge.net/") + (synopsis "Small Java Virtual Machine") + (description "JamVM is a Java Virtual Machine conforming to the JVM +specification edition 2 (blue book). It is extremely small. However, unlike +other small VMs it supports the full spec, including object finalisation and +JNI.") + (license license:gpl2+))) + +;; We need this because the tools provided by the latest release of GNU +;; Classpath don't actually work with sablevm. +(define classpath-jamvm-wrappers + (package (inherit classpath-on-sablevm) + (name "classpath-jamvm-wrappers") + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((bash (assoc-ref %build-inputs "bash")) + (jamvm (assoc-ref %build-inputs "jamvm")) + (classpath (assoc-ref %build-inputs "classpath")) + (bin (string-append (assoc-ref %outputs "out") + "/bin/"))) + (mkdir-p bin) + (for-each (lambda (tool) + (with-output-to-file (string-append bin tool) + (lambda _ + (format #t "#!~a/bin/sh +~a/bin/jamvm -classpath ~a/share/classpath/tools.zip \ +gnu.classpath.tools.~a.~a $@" + bash jamvm classpath tool + (if (string=? "native2ascii" tool) + "Native2ASCII" "Main")))) + (chmod (string-append bin tool) #o755)) + (list "javah" + "rmic" + "rmid" + "orbd" + "rmiregistry" + "native2ascii")) + #t)))) (native-inputs - `(("pkg-config" ,pkg-config) - ("unzip" ,unzip))) - (home-page "https://www.eclipse.org/swt/") - (synopsis "Widget toolkit for Java") - (description - "SWT is a widget toolkit for Java designed to provide efficient, portable -access to the user-interface facilities of the operating systems on which it -is implemented.") - ;; SWT code is licensed under EPL1.0 - ;; Gnome and Gtk+ bindings contain code licensed under LGPLv2.1 - ;; Cairo bindings contain code under MPL1.1 - ;; XULRunner 1.9 bindings contain code under MPL2.0 - (license (list - license:epl1.0 - license:mpl1.1 - license:mpl2.0 - license:lgpl2.1+)))) + `(("bash" ,bash) + ("jamvm" ,jamvm-bootstrap) + ("classpath" ,classpath-on-sablevm))) + (inputs '()) + (synopsis "Executables from GNU Classpath") + (description "This package provides wrappers around the tools provided by +the GNU Classpath library. They are executed by the JamVM virtual +machine."))) -(define-public clojure - (let* ((remove-archives '(begin - (for-each delete-file - (find-files "." ".*\\.(jar|zip)")) - #t)) - (submodule (lambda (prefix version hash) - (origin - (method url-fetch) - (uri (string-append "https://github.com/clojure/" - prefix version ".tar.gz")) - (sha256 (base32 hash)) - (modules '((guix build utils))) - (snippet remove-archives))))) - (package - (name "clojure") - (version "1.8.0") - (source - (origin - (method url-fetch) - (uri - (string-append "http://repo1.maven.org/maven2/org/clojure/clojure/" - version "/clojure-" version ".zip")) - (sha256 - (base32 "1nip095fz5c492sw15skril60i1vd21ibg6szin4jcvyy3xr6cym")) - (modules '((guix build utils))) - (snippet remove-archives))) - (build-system ant-build-system) +(define ecj-javac-on-jamvm-wrapper + (package (inherit ecj-javac-wrapper) + (name "ecj-javac-on-jamvm-wrapper") + (arguments + `(#:modules ((guix build utils)) + #:builder + ;; TODO: This builder is exactly the same as in ecj-javac-wrapper, + ;; except that the backend is 'jamvm here. Can we reuse the same + ;; builder somehow? + (let ((backend 'jamvm)) + (use-modules (guix build utils)) + (let* ((bin (string-append (assoc-ref %outputs "out") "/bin")) + (target (string-append bin "/javac")) + (guile (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (ecj (string-append (assoc-ref %build-inputs "ecj-bootstrap") + "/share/java/ecj-bootstrap.jar")) + (java (case backend + ((sablevm) + (string-append (assoc-ref %build-inputs "sablevm") + "/lib/sablevm/bin/java")) + ((jamvm) + (string-append (assoc-ref %build-inputs "jamvm") + "/bin/jamvm")))) + (bootcp (case backend + ((sablevm) + (let ((jvmlib (string-append + (assoc-ref %build-inputs "sablevm-classpath") + "/lib/sablevm"))) + (string-append jvmlib "/jre/lib/rt.jar"))) + ((jamvm) + (let ((jvmlib (string-append (assoc-ref %build-inputs "classpath") + "/share/classpath"))) + (string-append jvmlib "/lib/glibj.zip:" + jvmlib "/lib/tools.zip")))))) + (mkdir-p bin) + (with-output-to-file target + (lambda _ + (format #t "#!~a --no-auto-compile\n!#\n" guile) + (write + `(begin (use-modules (ice-9 match) + (ice-9 receive) + (ice-9 hash-table) + (srfi srfi-1) + (srfi srfi-26)) + (define defaults + '(("-bootclasspath" ,bootcp) + ("-source" "1.5") + ("-target" "1.5") + ("-cp" "."))) + (define (main args) + (let ((classpath (getenv "CLASSPATH"))) + (setenv "CLASSPATH" + (string-append ,ecj + (if classpath + (string-append ":" classpath) + "")))) + (receive (vm-args other-args) + ;; Separate VM arguments from arguments to ECJ. + (partition (cut string-prefix? "-J" <>) + (fold (lambda (default acc) + (if (member (first default) acc) + acc (append default acc))) + args defaults)) + (apply system* ,java + (append + ;; Remove "-J" prefix + (map (cut string-drop <> 2) vm-args) + '("org.eclipse.jdt.internal.compiler.batch.Main") + (cons "-nowarn" other-args))))) + ;; Entry point + (let ((args (cdr (command-line)))) + (if (null? args) + (format (current-error-port) "javac: no arguments given!\n") + (main args))))))) + (chmod target #o755) + #t)))) + (native-inputs + `(("guile" ,guile-2.2) + ("ecj-bootstrap" ,ecj-bootstrap) + ("jamvm" ,jamvm-bootstrap) + ("classpath" ,classpath-on-sablevm))) + (description "This package provides a wrapper around the @dfn{Eclipse +compiler for Java} (ecj) with a command line interface that is compatible with +the standard javac executable. The tool runs on JamVM instead of SableVM."))) + +;; The last release of GNU Classpath is 0.99 and it happened in 2012. Since +;; then Classpath has gained much more support for Java 1.6. +(define-public classpath-devel + (let ((commit "e7c13ee0cf2005206fbec0eca677f8cf66d5a103") + (revision "1")) + (package (inherit classpath-on-sablevm) + (version (string-append "0.99-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://git.savannah.gnu.org/classpath.git") + (commit commit))) + (sha256 + (base32 + "1v2rww76ww322mpg3s12a1kkc6gkp31bm9gcxs532h0wq285fiw4")))) (arguments - `(#:modules ((guix build ant-build-system) - (guix build utils) - (ice-9 ftw) - (ice-9 regex) - (srfi srfi-1) - (srfi srfi-26)) - #:test-target "test" + `(#:configure-flags + (list (string-append "--with-ecj-jar=" + (assoc-ref %build-inputs "ecj-bootstrap") + "/share/java/ecj-bootstrap.jar") + (string-append "JAVAC=" + (assoc-ref %build-inputs "ecj-javac-wrapper") + "/bin/javac") + (string-append "JAVA=" + (assoc-ref %build-inputs "jamvm") + "/bin/jamvm") + "GCJ_JAVAC_TRUE=no" + "ac_cv_prog_java_works=yes" ; trust me + "--disable-Werror" + "--disable-gmp" + "--disable-gtk-peer" + "--disable-gconf-peer" + "--disable-plugin" + "--disable-dssi" + "--disable-alsa" + "--disable-gjdoc") #:phases (modify-phases %standard-phases - (add-after 'unpack 'unpack-submodule-sources - (lambda* (#:key inputs #:allow-other-keys) - (for-each - (lambda (name) - (mkdir-p name) - (with-directory-excursion name - (or (zero? (system* "tar" - ;; Use xz for repacked tarball. - "--xz" - "--extract" - "--verbose" - "--file" (assoc-ref inputs name) - "--strip-components=1")) - (error "failed to unpack tarball" name))) - (copy-recursively (string-append name "/src/main/clojure/") - "src/clj/")) - '("data-generators-src" - "java-classpath-src" - "test-check-src" - "test-generative-src" - "tools-namespace-src" - "tools-reader-src")) - #t)) - ;; The javadoc target is not built by default. - (add-after 'build 'build-doc + (add-before 'configure 'bootstrap (lambda _ - (zero? (system* "ant" "javadoc")))) - ;; Needed since no install target is provided. - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((java-dir (string-append (assoc-ref outputs "out") - "/share/java/"))) - ;; Install versioned to avoid collisions. - (install-file (string-append "clojure-" ,version ".jar") - java-dir) - #t))) - ;; Needed since no install-doc target is provided. - (add-after 'install 'install-doc - (lambda* (#:key outputs #:allow-other-keys) - (let ((doc-dir (string-append (assoc-ref outputs "out") - "/share/doc/clojure-" - ,version "/"))) - (copy-recursively "doc/clojure" doc-dir) - (copy-recursively "target/javadoc/" - (string-append doc-dir "javadoc/")) - (for-each (cut install-file <> doc-dir) - (filter (cut string-match - ".*\\.(html|markdown|md|txt)" - <>) - (scandir "./"))) - #t)))))) - ;; The native-inputs below are needed to run the tests. + (zero? (system* "autoreconf" "-vif")))) + (add-after 'unpack 'remove-unsupported-annotations + (lambda _ + (substitute* (find-files "java" "\\.java$") + (("@Override") "")) + #t)) + (add-after 'install 'install-data + (lambda _ (zero? (system* "make" "install-data"))))))) (native-inputs - `(("data-generators-src" - ,(submodule "data.generators/archive/data.generators-" - "0.1.2" - "0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1")) - ("java-classpath-src" - ,(submodule "java.classpath/archive/java.classpath-" - "0.2.3" - "0sjymly9xh1lkvwn5ygygpsfwz4dabblnlq0c9bx76rkvq62fyng")) - ("test-check-src" - ,(submodule "test.check/archive/test.check-" - "0.9.0" - "0p0mnyhr442bzkz0s4k5ra3i6l5lc7kp6ajaqkkyh4c2k5yck1md")) - ("test-generative-src" - ,(submodule "test.generative/archive/test.generative-" - "0.5.2" - "1pjafy1i7yblc7ixmcpfq1lfbyf3jaljvkgrajn70sws9xs7a9f8")) - ("tools-namespace-src" - ,(submodule "tools.namespace/archive/tools.namespace-" - "0.2.11" - "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0")) - ("tools-reader-src" - ,(submodule "tools.reader/archive/tools.reader-" - "0.10.0" - "09i3lzbhr608h76mhdjm3932gg9xi8sflscla3c5f0v1nkc28cnr")))) - (home-page "https://clojure.org/") - (synopsis "Lisp dialect running on the JVM") - (description "Clojure is a dynamic, general-purpose programming language, -combining the approachability and interactive development of a scripting -language with an efficient and robust infrastructure for multithreaded -programming. Clojure is a compiled language, yet remains completely dynamic -– every feature supported by Clojure is supported at runtime. Clojure -provides easy access to the Java frameworks, with optional type hints and type -inference, to ensure that calls to Java can avoid reflection. + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("gettext" ,gettext-minimal) + ("texinfo" ,texinfo) + ("classpath-jamvm-wrappers" ,classpath-jamvm-wrappers) ; for javah + ("ecj-bootstrap" ,ecj-bootstrap) + ("ecj-javac-wrapper" ,ecj-javac-on-jamvm-wrapper) + ("fastjar" ,fastjar) + ("jamvm" ,jamvm-bootstrap) + ("libltdl" ,libltdl) + ("pkg-config" ,pkg-config)))))) -Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy -and a powerful macro system. Clojure is predominantly a functional programming -language, and features a rich set of immutable, persistent data structures. -When mutable state is needed, Clojure offers a software transactional memory -system and reactive Agent system that ensure clean, correct, multithreaded -designs.") - ;; Clojure is licensed under EPL1.0 - ;; ASM bytecode manipulation library is licensed under BSD-3 - ;; Guava Murmur3 hash implementation is licensed under APL2.0 - ;; src/clj/repl.clj is licensed under CPL1.0 - ;; - ;; See readme.html or readme.txt for details. - (license (list license:epl1.0 - license:bsd-3 - license:asl2.0 - license:cpl1.0))))) +(define-public jamvm + (package (inherit jamvm-bootstrap) + (inputs + `(("classpath" ,classpath-devel) + ("ecj-javac-wrapper" ,ecj-javac-on-jamvm-wrapper) + ("zlib" ,zlib))))) -(define-public ant +(define ecj-javac-on-jamvm-wrapper-final + (package (inherit ecj-javac-on-jamvm-wrapper) + (native-inputs + `(("guile" ,guile-2.2) + ("ecj-bootstrap" ,ecj-bootstrap) + ("jamvm" ,jamvm) + ("classpath" ,classpath-devel))))) + +;; The bootstrap JDK consisting of jamvm, classpath-devel, +;; ecj-javac-on-jamvm-wrapper-final cannot build Icedtea 2.x directly, because +;; it's written in Java 7. It can, however, build the unmaintained Icedtea +;; 1.x, which uses Java 6 only. +(define-public icedtea-6 (package - (name "ant") - (version "1.9.6") + (name "icedtea") + (version "1.13.13") (source (origin (method url-fetch) - (uri (string-append "mirror://apache/ant/source/apache-ant-" - version "-src.tar.gz")) + (uri (string-append + "http://icedtea.wildebeest.org/download/source/icedtea6-" + version ".tar.xz")) (sha256 (base32 - "1396wflczyxjxl603dhxjvd559f289lha9y2f04f71c7hapjl3am")))) + "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg")) + (modules '((guix build utils))) + (snippet + '(substitute* "Makefile.in" + ;; do not leak information about the build host + (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") + "DISTRIBUTION_ID=\"\\\"guix\\\"\""))))) (build-system gnu-build-system) + (outputs '("out" ; Java Runtime Environment + "jdk" ; Java Development Kit + "doc")) ; all documentation (arguments - `(#:tests? #f ; no "check" target + `(;; There are many failing tests and many are known to fail upstream. + #:tests? #f + + ;; The DSOs use $ORIGIN to refer to each other, but (guix build + ;; gremlin) doesn't support it yet, so skip this phase. + #:validate-runpath? #f + + #:modules ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-19)) + + #:configure-flags + `("--enable-bootstrap" + "--enable-nss" + "--without-rhino" + "--with-parallel-jobs" + "--disable-downloading" + "--disable-tests" + ,(string-append "--with-ecj=" + (assoc-ref %build-inputs "ecj") + "/share/java/ecj-bootstrap.jar") + ,(string-append "--with-jar=" + (assoc-ref %build-inputs "fastjar") + "/bin/fastjar") + ,(string-append "--with-jdk-home=" + (assoc-ref %build-inputs "classpath")) + ,(string-append "--with-java=" + (assoc-ref %build-inputs "jamvm") + "/bin/jamvm")) #:phases - (alist-cons-after - 'unpack 'remove-scripts - ;; Remove bat / cmd scripts for DOS as well as the antRun and runant - ;; wrappers. - (lambda _ - (for-each delete-file - (find-files "src/script" - "(.*\\.(bat|cmd)|runant.*|antRun.*)"))) - (alist-replace - 'build - (lambda _ - (setenv "JAVA_HOME" (string-append (assoc-ref %build-inputs "gcj") - "/lib/jvm")) - ;; Disable tests to avoid dependency on hamcrest-core, which needs - ;; Ant to build. This is necessary in addition to disabling the - ;; "check" phase, because the dependency on "test-jar" would always - ;; result in the tests to be run. - (substitute* "build.xml" - (("depends=\"jars,test-jar\"") "depends=\"jars\"")) - (zero? (system* "bash" "bootstrap.sh" - (string-append "-Ddist.dir=" - (assoc-ref %outputs "out"))))) - (alist-delete - 'configure - (alist-delete 'install %standard-phases)))))) + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source inputs #:allow-other-keys) + (and (zero? (system* "tar" "xvf" source)) + (begin + (chdir (string-append "icedtea6-" ,version)) + (mkdir "openjdk") + (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk") + ;; The convenient OpenJDK source bundle is no longer + ;; available for download, so we have to take the sources + ;; from the Mercurial repositories and change the Makefile + ;; to avoid tests for the OpenJDK zip archive. + (with-directory-excursion "openjdk" + (for-each (lambda (part) + (mkdir part) + (copy-recursively + (assoc-ref inputs + (string-append part "-src")) + part)) + '("jdk" "hotspot" "corba" + "langtools" "jaxp" "jaxws"))) + (substitute* "Makefile.in" + (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;") + "echo \"trust me\";") + ;; The contents of the bootstrap directory must be + ;; writeable but when copying from the store they are + ;; not. + (("mkdir -p lib/rt" line) + (string-append line "; chmod -R u+w $(BOOT_DIR)"))) + (zero? (system* "chmod" "-R" "u+w" "openjdk")) + #t)))) + (add-after 'unpack 'use-classpath + (lambda* (#:key inputs #:allow-other-keys) + (let ((jvmlib (assoc-ref inputs "classpath"))) + ;; Classpath does not provide rt.jar. + (substitute* "Makefile.in" + (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar") + (string-append jvmlib "/share/classpath/glibj.zip"))) + ;; Make sure we can find all classes. + (setenv "CLASSPATH" + (string-append jvmlib "/share/classpath/glibj.zip:" + jvmlib "/share/classpath/tools.zip")) + (setenv "JAVACFLAGS" + (string-append "-cp " + jvmlib "/share/classpath/glibj.zip:" + jvmlib "/share/classpath/tools.zip"))) + #t)) + (add-after 'unpack 'patch-patches + (lambda _ + ;; shebang in patches so that they apply cleanly + (substitute* '("patches/jtreg-jrunscript.patch" + "patches/hotspot/hs23/drop_unlicensed_test.patch") + (("#!/bin/sh") (string-append "#!" (which "sh")))) + #t)) + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + ;; buildtree.make generates shell scripts, so we need to replace + ;; the generated shebang + (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make") + (("/bin/sh") (which "bash"))) + + (let ((corebin (string-append + (assoc-ref inputs "coreutils") "/bin/")) + (binbin (string-append + (assoc-ref inputs "binutils") "/bin/")) + (grepbin (string-append + (assoc-ref inputs "grep") "/bin/"))) + (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk" + "openjdk/corba/make/common/shared/Defs-linux.gmk") + (("UNIXCOMMAND_PATH = /bin/") + (string-append "UNIXCOMMAND_PATH = " corebin)) + (("USRBIN_PATH = /usr/bin/") + (string-append "USRBIN_PATH = " corebin)) + (("DEVTOOLS_PATH *= */usr/bin/") + (string-append "DEVTOOLS_PATH = " corebin)) + (("COMPILER_PATH *= */usr/bin/") + (string-append "COMPILER_PATH = " + (assoc-ref inputs "gcc") "/bin/")) + (("DEF_OBJCOPY *=.*objcopy") + (string-append "DEF_OBJCOPY = " (which "objcopy")))) + + ;; fix path to alsa header + (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk" + (("ALSA_INCLUDE=/usr/include/alsa/version.h") + (string-append "ALSA_INCLUDE=" + (assoc-ref inputs "alsa-lib") + "/include/alsa/version.h"))) + + ;; fix hard-coded utility paths + (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" + "openjdk/corba/make/common/shared/Defs-utils.gmk") + (("ECHO *=.*echo") + (string-append "ECHO = " (which "echo"))) + (("^GREP *=.*grep") + (string-append "GREP = " (which "grep"))) + (("EGREP *=.*egrep") + (string-append "EGREP = " (which "egrep"))) + (("CPIO *=.*cpio") + (string-append "CPIO = " (which "cpio"))) + (("READELF *=.*readelf") + (string-append "READELF = " (which "readelf"))) + (("^ *AR *=.*ar") + (string-append "AR = " (which "ar"))) + (("^ *TAR *=.*tar") + (string-append "TAR = " (which "tar"))) + (("AS *=.*as") + (string-append "AS = " (which "as"))) + (("LD *=.*ld") + (string-append "LD = " (which "ld"))) + (("STRIP *=.*strip") + (string-append "STRIP = " (which "strip"))) + (("NM *=.*nm") + (string-append "NM = " (which "nm"))) + (("^SH *=.*sh") + (string-append "SH = " (which "bash"))) + (("^FIND *=.*find") + (string-append "FIND = " (which "find"))) + (("LDD *=.*ldd") + (string-append "LDD = " (which "ldd"))) + (("NAWK *=.*(n|g)awk") + (string-append "NAWK = " (which "gawk"))) + (("XARGS *=.*xargs") + (string-append "XARGS = " (which "xargs"))) + (("UNZIP *=.*unzip") + (string-append "UNZIP = " (which "unzip"))) + (("ZIPEXE *=.*zip") + (string-append "ZIPEXE = " (which "zip"))) + (("SED *=.*sed") + (string-append "SED = " (which "sed")))) + + ;; Some of these timestamps cause problems as they are more than + ;; 10 years ago, failing the build process. + (substitute* + "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties" + (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") + (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") + (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") + (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")) + #t))) + (add-before 'configure 'set-additional-paths + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append (assoc-ref inputs "libxrender") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxtst") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxinerama") + "/include/X11/extensions" ":" + (or (getenv "CPATH") ""))) + (setenv "ALT_CUPS_HEADERS_PATH" + (string-append (assoc-ref inputs "cups") + "/include")) + (setenv "ALT_FREETYPE_HEADERS_PATH" + (string-append (assoc-ref inputs "freetype") + "/include")) + (setenv "ALT_FREETYPE_LIB_PATH" + (string-append (assoc-ref inputs "freetype") + "/lib")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "doc") + "/share/doc/icedtea")) + (jre (assoc-ref outputs "out")) + (jdk (assoc-ref outputs "jdk"))) + (copy-recursively "openjdk.build/docs" doc) + (copy-recursively "openjdk.build/j2re-image" jre) + (copy-recursively "openjdk.build/j2sdk-image" jdk)) + #t))))) (native-inputs - `(("gcj" ,gcj))) - (home-page "http://ant.apache.org") - (synopsis "Build tool for Java") + `(("ant" ,ant-bootstrap) + ("alsa-lib" ,alsa-lib) + ("attr" ,attr) + ("classpath" ,classpath-devel) + ("coreutils" ,coreutils) + ("cpio" ,cpio) + ("cups" ,cups) + ("ecj" ,ecj-bootstrap) + ("ecj-javac" ,ecj-javac-on-jamvm-wrapper-final) + ("fastjar" ,fastjar) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("gtk" ,gtk+-2) + ("gawk" ,gawk) + ("giflib" ,giflib) + ("grep" ,grep) + ("jamvm" ,jamvm) + ("lcms" ,lcms) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtool" ,libtool) + ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("libxrender" ,libxrender) + ("libxslt" ,libxslt) ;for xsltproc + ("libxt" ,libxt) + ("libxtst" ,libxtst) + ("mit-krb5" ,mit-krb5) + ("nss" ,nss) + ("nss-certs" ,nss-certs) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("procps" ,procps) ;for "free", even though I'm not sure we should use it + ("unzip" ,unzip) + ("wget" ,wget) + ("which" ,which) + ("zip" ,zip) + ("zlib" ,zlib) + ("openjdk-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "14q47yfg586fs64w30g8mk92m5dkxsvr36zzh0ra99xk5x0x96mv")))) + ("jdk-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/jdk/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "165824nhg1k1dx6zs9dny0j49rmk35jw5b13dmz8c77jfajml4v9")))) + ("hotspot-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/hotspot/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd")))) + ("corba-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/corba/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "1p9g1r9dnax2iwp7yb59qx7m4nmshqhwmrb2b8jj8zgbd9dl2i3q")))) + ("langtools-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/langtools/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d")))) + ("jaxp-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxp/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "0shlqrvzpr4nrkmv215lbxnby63s3yvbdh1yxcayznsyqwa4nlxm")))) + ("jaxws-src" + ,(origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxws/") + (changeset "jdk6-b41"))) + (sha256 + (base32 + "0835lkw8vib1xhp8lxnybhlvzdh699hbi4mclxanydjk63zbpxk0")))))) + (home-page "http://icedtea.classpath.org") + (synopsis "Java development kit") (description - "Ant is a platform-independent build tool for Java. It is similar to -make but is implemented using the Java language, requires the Java platform, -and is best suited to building Java projects. Ant uses XML to describe the -build process and its dependencies, whereas Make uses Makefile format.") - (license license:asl2.0))) + "This package provides the OpenJDK built with the IcedTea build harness. +This version of the OpenJDK is no longer maintained and is only used for +bootstrapping purposes.") + ;; IcedTea is released under the GPL2 + Classpath exception, which is the + ;; same license as both GNU Classpath and OpenJDK. + (license license:gpl2+))) (define-public icedtea-7 - (let* ((version "2.6.9") + (let* ((version "2.6.10") (drop (lambda (name hash) (origin (method url-fetch) (uri (string-append - "http://icedtea.classpath.org/download/drops/" + "http://icedtea.classpath.org/download/drops" "/icedtea7/" version "/" name ".tar.bz2")) (sha256 (base32 hash)))))) (package @@ -354,13 +1060,10 @@ build process and its dependencies, whereas Make uses Makefile format.") version ".tar.xz")) (sha256 (base32 - "1slmajiakq7sk137vgqq9c93r5s620a46lw2jwbnzxhysjw3wkwf")) + "0am945k2zqrka2xn7lb5grmkad4lwncnhnwk8iq6f269birzsj8w")) (modules '((guix build utils))) (snippet '(substitute* "Makefile.in" - ;; link against libgcj to avoid linker error - (("-o native-ecj") - "-lgcj -o native-ecj") ;; do not leak information about the build host (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") "DISTRIBUTION_ID=\"\\\"guix\\\"\""))))) @@ -390,29 +1093,21 @@ build process and its dependencies, whereas Make uses Makefile format.") (guix build gnu-build-system) (ice-9 match) (ice-9 popen) - (ice-9 rdelim) (srfi srfi-19) (srfi srfi-26)) #:configure-flags - (let* ((gcjdir (assoc-ref %build-inputs "gcj")) - (ecj (string-append gcjdir "/share/java/ecj.jar")) - (jdk (string-append gcjdir "/lib/jvm/")) - (gcj (string-append gcjdir "/bin/gcj"))) - ;; TODO: package pcsc and sctp, and add to inputs - `("--disable-system-pcsc" - "--disable-system-sctp" - "--enable-bootstrap" - "--enable-nss" - "--without-rhino" - "--disable-downloading" - "--disable-tests" ;they are run in the check phase instead - "--with-openjdk-src-dir=./openjdk.src" - ,(string-append "--with-javac=" jdk "/bin/javac") - ,(string-append "--with-ecj-jar=" ecj) - ,(string-append "--with-gcj=" gcj) - ,(string-append "--with-jdk-home=" jdk) - ,(string-append "--with-java=" jdk "/bin/java"))) + ;; TODO: package pcsc and sctp, and add to inputs + `("--disable-system-pcsc" + "--disable-system-sctp" + "--enable-bootstrap" + "--enable-nss" + "--without-rhino" + "--disable-downloading" + "--disable-tests" ;they are run in the check phase instead + "--with-openjdk-src-dir=./openjdk.src" + ,(string-append "--with-jdk-home=" + (assoc-ref %build-inputs "jdk"))) #:phases (modify-phases %standard-phases @@ -541,39 +1236,32 @@ build process and its dependencies, whereas Make uses Makefile format.") #t)) (add-before 'configure 'set-additional-paths (lambda* (#:key inputs #:allow-other-keys) - (let ( ;; Get target-specific include directory so that - ;; libgcj-config.h is found when compiling hotspot. - (gcjinclude (let* ((port (open-input-pipe "gcj -print-file-name=include")) - (str (read-line port))) - (close-pipe port) - str))) - (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk" - (("ALSA_INCLUDE=/usr/include/alsa/version.h") - (string-append "ALSA_INCLUDE=" - (assoc-ref inputs "alsa-lib") - "/include/alsa/version.h"))) - (setenv "CC" "gcc") - (setenv "CPATH" - (string-append gcjinclude ":" - (assoc-ref inputs "libxcomposite") - "/include/X11/extensions" ":" - (assoc-ref inputs "libxrender") - "/include/X11/extensions" ":" - (assoc-ref inputs "libxtst") - "/include/X11/extensions" ":" - (assoc-ref inputs "libxinerama") - "/include/X11/extensions" ":" - (or (getenv "CPATH") ""))) - (setenv "ALT_OBJCOPY" (which "objcopy")) - (setenv "ALT_CUPS_HEADERS_PATH" - (string-append (assoc-ref inputs "cups") - "/include")) - (setenv "ALT_FREETYPE_HEADERS_PATH" - (string-append (assoc-ref inputs "freetype") - "/include")) - (setenv "ALT_FREETYPE_LIB_PATH" - (string-append (assoc-ref inputs "freetype") - "/lib"))) + (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk" + (("ALSA_INCLUDE=/usr/include/alsa/version.h") + (string-append "ALSA_INCLUDE=" + (assoc-ref inputs "alsa-lib") + "/include/alsa/version.h"))) + (setenv "CC" "gcc") + (setenv "CPATH" + (string-append (assoc-ref inputs "libxcomposite") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxrender") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxtst") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxinerama") + "/include/X11/extensions" ":" + (or (getenv "CPATH") ""))) + (setenv "ALT_OBJCOPY" (which "objcopy")) + (setenv "ALT_CUPS_HEADERS_PATH" + (string-append (assoc-ref inputs "cups") + "/include")) + (setenv "ALT_FREETYPE_HEADERS_PATH" + (string-append (assoc-ref inputs "freetype") + "/include")) + (setenv "ALT_FREETYPE_LIB_PATH" + (string-append (assoc-ref inputs "freetype") + "/lib")) #t)) (add-before 'check 'fix-test-framework (lambda _ @@ -765,29 +1453,27 @@ build process and its dependencies, whereas Make uses Makefile format.") (native-inputs `(("openjdk-src" ,(drop "openjdk" - "08a4d1sg5m9l99lc7gafc7dmzmf4d8jvij5pffxv8rf6pk7psk24")) + "02klsxp9hlf5sial6mxpiq53hmrhlrg6x774j7bjjfhb7hpdvadh")) ("corba-drop" ,(drop "corba" - "12br49cfrqgvms0bnaij7fvnakvb6q8dlpqja64rg5q5r3x4gps8")) + "1vbly6khri241xda05gnwkpf2fk41d96ls96ximi084mx0a3w5rd")) ("jaxp-drop" ,(drop "jaxp" - "07v2y3pll6z2wma94qilgffwyn2n4jna01mrhqwkb27whfpjfkmz")) + "0s8zln64vdwdxwlw1vpfzm8xbpyhgsv3nqjmnv7y36qpsszg27a5")) ("jaxws-drop" ,(drop "jaxws" - "18rw64jjpq14v56d0q1xvz8knl0kf02rcday7fvlaxrbbj19km55")) + "0myd66bv8ib8krzgqv754bc564rd8xwpwabvf7my1apyb86vap3n")) ("jdk-drop" ,(drop "jdk" - "1ig7xipi3vzm6cphy5fdraxi72p27xsg2qb51yqx9qwsmlrv1zj4")) + "10b4lfv10vba07zblw0wii7mhrfhf32pf7410x5nz2q0smgszl2h")) ("langtools-drop" ,(drop "langtools" - "0sn9qv9nnhaan2smbhrv54lfhwsjhgd3b3h736p5d2hzpw8kicry")) + "0lvncxb5qzrlqkflrnd0l8vwy155cwj1jb07rkq10z2vx0bq7lq2")) ("hotspot-drop" ,(drop "hotspot" - "16ijxy8br8dla339m4i90wr9xpf7s8z3nrhfyxm7jahr8injpzyl")) - ("ant" ,ant) + "0q6mdgbbd3681y3n0z1v783irdjhhi73z6sn5csczpyhjm318axb")) + ("ant" ,ant-bootstrap) ("attr" ,attr) - ("autoconf" ,autoconf) - ("automake" ,automake) ("coreutils" ,coreutils) ("diffutils" ,diffutils) ;for tests ("gawk" ,gawk) @@ -804,7 +1490,7 @@ build process and its dependencies, whereas Make uses Makefile format.") ("nss-certs" ,nss-certs) ("perl" ,perl) ("procps" ,procps) ;for "free", even though I'm not sure we should use it - ("gcj" ,gcj))) + ("jdk" ,icedtea-6 "jdk"))) (inputs `(("alsa-lib" ,alsa-lib) ("cups" ,cups) @@ -835,16 +1521,16 @@ IcedTea build harness.") (license license:gpl2+)))) (define-public icedtea-8 - (let* ((version "3.3.0") + (let* ((version "3.4.0") (drop (lambda (name hash) (origin (method url-fetch) (uri (string-append - "http://icedtea.classpath.org/download/drops/" + "http://icedtea.classpath.org/download/drops" "/icedtea8/" version "/" name ".tar.xz")) (sha256 (base32 hash)))))) (package (inherit icedtea-7) - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) (uri (string-append @@ -852,7 +1538,7 @@ IcedTea build harness.") version ".tar.xz")) (sha256 (base32 - "02vmxa6gc6gizcri1fy797qmmm9y77vgi7gy9pwkk4agcw4zyr5p")) + "16if055973y6yw7n5gczp8iksvc31cy4p5by9lkbniadqj4z665m")) (modules '((guix build utils))) (snippet '(begin @@ -924,37 +1610,328 @@ IcedTea build harness.") `(("jdk" ,icedtea-7 "jdk") ("openjdk-src" ,(drop "openjdk" - "0889n19w6rvpzxgmmk9hlgzdh9ya95qkc2ajgpnzr3h69g15nz48")) + "0va5i3zr8y8ncv914rz914jda9d88gq0viww3smdqnln8n78rszi")) + ("aarch32-drop" + ,(drop "aarch32" + "0cway5a5hcfyh4pzl9zz5xr7lil4gsliy6r5iqbaasd2d9alvqiq")) ("corba-drop" ,(drop "corba" - "0qcb72hhlsjgp6h9wd048qgyc88b7lfnxyc51xfyav0nhpfjnj8r")) + "1l9zr97a3kq00bj4i8wcdsjlz3xlfldxd8zhkcxikinwd5n0n8a7")) ("jaxp-drop" ,(drop "jaxp" - "1vyc7dw10x5k45jmi348y8min6sg651ns12zzn30fjzhpfi36nds")) + "0lqxrsr3xlpwm2na6f2rpl7znrz34dkb9dg3zjmympyjy4kqljn7")) ("jaxws-drop" ,(drop "jaxws" - "1dki6p39z1ms94cjvj5hd9q75q75g244c0xib82pma3q74jg6hx4")) + "1b3chckk10dzrpa7cswmcf1jvryaiwkj8lihfqjr5j7l668jwr4h")) ("jdk-drop" ,(drop "jdk" - "17czby3nylcglp7l3d90a4pz1izc1sslifv8hrmynm9hn4m9d3k8")) + "15lq0k2jv2x26x6vqkbljdcxk35i3b60pcsw3j1sdfmlk1xy6wgc")) ("langtools-drop" ,(drop "langtools" - "1h4azc21k58g9gn2y686wrvn9ahgac0ii7jhrrrmb5c1kjs0y2qv")) + "17xkb8ahkg04ri0bp5wblcp1a2lp8j7c83ic5zdbggvgm339k5s8")) ("hotspot-drop" ,(drop "hotspot" - "12bfgwhrjfhgj6a2dsysdwhirg0jx88pi44y7s8a1bdan1mp03r8")) + "0xpx8ykaq0ki6r0dl3dzca2xgp1p82z8mvsxcs2931ib667ncgcp")) ("nashorn-drop" ,(drop "nashorn" - "0bg9r16jffc64fhyczn4jpx7bkfw7w62prw65mh66vshqk4lbh0f")) + "1bnn4731lhlvg8axy4mjxgvh646yl22hp52wipx8cfca4vkn2f1z")) ("shenandoah-drop" ,(drop "shenandoah" - "0abjlsvz669i06mlks28wnh11mm55y5613990pn5j7hfbw8a34q5")) + "0fpxl8zlii1hpm777r875ys2cr5ih3gb6p1nm9jfa6krjrccrxv1")) ,@(fold alist-delete (package-native-inputs icedtea-7) - '("gcj" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" + '("jdk" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" "jdk-drop" "langtools-drop" "hotspot-drop"))))))) (define-public icedtea icedtea-7) + +(define-public ant/java8 + (package (inherit ant-bootstrap) + (name "ant") + (version "1.10.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/ant/source/apache-ant-" + version "-src.tar.gz")) + (sha256 + (base32 + "10p3dh77lkzzzcy32dk9azljixzadp46fggjfbvgkl8mmb8cxxv8")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file + (find-files "lib/optional" "\\.jar$")) + #t)))) + (arguments + (substitute-keyword-arguments (package-arguments ant-bootstrap) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'remove-scripts + ;; Remove bat / cmd scripts for DOS as well as the antRun and runant + ;; wrappers. + (lambda _ + (for-each delete-file + (find-files "src/script" + "(.*\\.(bat|cmd)|runant.*|antRun.*)")) + #t)) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) + + ;; Disable tests to avoid dependency on hamcrest-core, which needs + ;; Ant to build. This is necessary in addition to disabling the + ;; "check" phase, because the dependency on "test-jar" would always + ;; result in the tests to be run. + (substitute* "build.xml" + (("depends=\"jars,test-jar\"") "depends=\"jars\"")) + (zero? (system* "bash" "bootstrap.sh" + (string-append "-Ddist.dir=" + (assoc-ref outputs "out")))))))))) + (native-inputs + `(("jdk" ,icedtea-8 "jdk"))))) + +;; The 1.9.x series is the last that can be built with GCJ. The 1.10.x series +;; requires Java 8. +(define-public ant + (package (inherit ant/java8) + (version "1.9.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/ant/source/apache-ant-" + version "-src.tar.gz")) + (sha256 + (base32 + "1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n")))) + (native-inputs + `(("jdk" ,icedtea-7 "jdk"))))) + +(define-public clojure + (let* ((remove-archives '(begin + (for-each delete-file + (find-files "." ".*\\.(jar|zip)")) + #t)) + (submodule (lambda (prefix version hash) + (origin + (method url-fetch) + (uri (string-append "https://github.com/clojure/" + prefix version ".tar.gz")) + (sha256 (base32 hash)) + (modules '((guix build utils))) + (snippet remove-archives))))) + (package + (name "clojure") + (version "1.8.0") + (source + (origin + (method url-fetch) + (uri + (string-append "http://repo1.maven.org/maven2/org/clojure/clojure/" + version "/clojure-" version ".zip")) + (sha256 + (base32 "1nip095fz5c492sw15skril60i1vd21ibg6szin4jcvyy3xr6cym")) + (modules '((guix build utils))) + (snippet remove-archives))) + (build-system ant-build-system) + (arguments + `(#:modules ((guix build ant-build-system) + (guix build utils) + (ice-9 ftw) + (ice-9 regex) + (srfi srfi-1) + (srfi srfi-26)) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-submodule-sources + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (name) + (mkdir-p name) + (with-directory-excursion name + (or (zero? (system* "tar" + ;; Use xz for repacked tarball. + "--xz" + "--extract" + "--verbose" + "--file" (assoc-ref inputs name) + "--strip-components=1")) + (error "failed to unpack tarball" name))) + (copy-recursively (string-append name "/src/main/clojure/") + "src/clj/")) + '("data-generators-src" + "java-classpath-src" + "test-check-src" + "test-generative-src" + "tools-namespace-src" + "tools-reader-src")) + #t)) + ;; The javadoc target is not built by default. + (add-after 'build 'build-doc + (lambda _ + (zero? (system* "ant" "javadoc")))) + ;; Needed since no install target is provided. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((java-dir (string-append (assoc-ref outputs "out") + "/share/java/"))) + ;; Install versioned to avoid collisions. + (install-file (string-append "clojure-" ,version ".jar") + java-dir) + #t))) + ;; Needed since no install-doc target is provided. + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc-dir (string-append (assoc-ref outputs "out") + "/share/doc/clojure-" + ,version "/"))) + (copy-recursively "doc/clojure" doc-dir) + (copy-recursively "target/javadoc/" + (string-append doc-dir "javadoc/")) + (for-each (cut install-file <> doc-dir) + (filter (cut string-match + ".*\\.(html|markdown|md|txt)" + <>) + (scandir "./"))) + #t)))))) + ;; The native-inputs below are needed to run the tests. + (native-inputs + `(("data-generators-src" + ,(submodule "data.generators/archive/data.generators-" + "0.1.2" + "0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1")) + ("java-classpath-src" + ,(submodule "java.classpath/archive/java.classpath-" + "0.2.3" + "0sjymly9xh1lkvwn5ygygpsfwz4dabblnlq0c9bx76rkvq62fyng")) + ("test-check-src" + ,(submodule "test.check/archive/test.check-" + "0.9.0" + "0p0mnyhr442bzkz0s4k5ra3i6l5lc7kp6ajaqkkyh4c2k5yck1md")) + ("test-generative-src" + ,(submodule "test.generative/archive/test.generative-" + "0.5.2" + "1pjafy1i7yblc7ixmcpfq1lfbyf3jaljvkgrajn70sws9xs7a9f8")) + ("tools-namespace-src" + ,(submodule "tools.namespace/archive/tools.namespace-" + "0.2.11" + "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0")) + ("tools-reader-src" + ,(submodule "tools.reader/archive/tools.reader-" + "0.10.0" + "09i3lzbhr608h76mhdjm3932gg9xi8sflscla3c5f0v1nkc28cnr")))) + (home-page "https://clojure.org/") + (synopsis "Lisp dialect running on the JVM") + (description "Clojure is a dynamic, general-purpose programming language, +combining the approachability and interactive development of a scripting +language with an efficient and robust infrastructure for multithreaded +programming. Clojure is a compiled language, yet remains completely dynamic +– every feature supported by Clojure is supported at runtime. Clojure +provides easy access to the Java frameworks, with optional type hints and type +inference, to ensure that calls to Java can avoid reflection. + +Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy +and a powerful macro system. Clojure is predominantly a functional programming +language, and features a rich set of immutable, persistent data structures. +When mutable state is needed, Clojure offers a software transactional memory +system and reactive Agent system that ensure clean, correct, multithreaded +designs.") + ;; Clojure is licensed under EPL1.0 + ;; ASM bytecode manipulation library is licensed under BSD-3 + ;; Guava Murmur3 hash implementation is licensed under APL2.0 + ;; src/clj/repl.clj is licensed under CPL1.0 + ;; + ;; See readme.html or readme.txt for details. + (license (list license:epl1.0 + license:bsd-3 + license:asl2.0 + license:cpl1.0))))) + +(define-public java-swt + (package + (name "java-swt") + (version "4.6") + (source + ;; The types of many variables and procedures differ in the sources + ;; dependent on whether the target architecture is a 32-bit system or a + ;; 64-bit system. Instead of patching the sources on demand in a build + ;; phase we download either the 32-bit archive (which mostly uses "int" + ;; types) or the 64-bit archive (which mostly uses "long" types). + (let ((hash32 "0jmx1h65wqxsyjzs64i2z6ryiynllxzm13cq90fky2qrzagcw1ir") + (hash64 "0wnd01xssdq9pgx5xqh5lfiy3dmk60dzzqdxzdzf883h13692lgy") + (file32 "x86") + (file64 "x86_64")) + (let-values (((hash file) + (match (or (%current-target-system) (%current-system)) + ("x86_64-linux" (values hash64 file64)) + (_ (values hash32 file32))))) + (origin + (method url-fetch) + (uri (string-append + "http://ftp-stud.fht-esslingen.de/pub/Mirrors/" + "eclipse/eclipse/downloads/drops4/R-" version + "-201606061100/swt-" version "-gtk-linux-" file ".zip")) + (sha256 (base32 hash)))))) + (build-system ant-build-system) + (arguments + `(#:jar-name "swt.jar" + #:tests? #f ; no "check" target + #:phases + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (and (mkdir "swt") + (zero? (system* "unzip" source "-d" "swt")) + (chdir "swt") + (mkdir "src") + (zero? (system* "unzip" "src.zip" "-d" "src"))))) + ;; The classpath contains invalid icecat jars. Since we don't need + ;; anything other than the JDK on the classpath, we can simply unset + ;; it. + (add-after 'configure 'unset-classpath + (lambda _ (unsetenv "CLASSPATH") #t)) + (add-before 'build 'build-native + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + ;; Build shared libraries. Users of SWT have to set the system + ;; property swt.library.path to the "lib" directory of this + ;; package output. + (mkdir-p lib) + (setenv "OUTPUT_DIR" lib) + (with-directory-excursion "src" + (zero? (system* "bash" "build.sh")))))) + (add-after 'install 'install-native + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) + (for-each (lambda (file) + (install-file file lib)) + (find-files "." "\\.so$")) + #t)))))) + (inputs + `(("xulrunner" ,icecat) + ("gtk" ,gtk+-2) + ("libxtst" ,libxtst) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("glu" ,glu))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("unzip" ,unzip))) + (home-page "https://www.eclipse.org/swt/") + (synopsis "Widget toolkit for Java") + (description + "SWT is a widget toolkit for Java designed to provide efficient, portable +access to the user-interface facilities of the operating systems on which it +is implemented.") + ;; SWT code is licensed under EPL1.0 + ;; Gnome and Gtk+ bindings contain code licensed under LGPLv2.1 + ;; Cairo bindings contain code under MPL1.1 + ;; XULRunner 1.9 bindings contain code under MPL2.0 + (license (list + license:epl1.0 + license:mpl1.1 + license:mpl2.0 + license:lgpl2.1+)))) + (define-public java-xz (package (name "java-xz") @@ -1080,7 +2057,11 @@ an Ant task that extends the built-in @code{jar} task.") (build-system ant-build-system) (arguments `(#:tests? #f ; Tests require junit + #:modules ((guix build ant-build-system) + (guix build utils) + (srfi srfi-1)) #:make-flags (list (string-append "-Dversion=" ,version)) + #:test-target "unit-test" #:build-target "core" #:phases (modify-phases %standard-phases @@ -1131,10 +2112,23 @@ private Method[] allMethods = getSortedMethods();"))))) #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (install-file (string-append "build/hamcrest-core-" - ,version ".jar") - (string-append (assoc-ref outputs "out") - "/share/java"))))))) + (let* ((target (string-append (assoc-ref outputs "out") + "/share/java/")) + (version-suffix ,(string-append "-" version ".jar")) + (install-without-version-suffix + (lambda (jar) + (copy-file jar + (string-append target + (basename jar version-suffix) + ".jar"))))) + (mkdir-p target) + (for-each + install-without-version-suffix + (find-files "build" + (lambda (name _) + (and (string-suffix? ".jar" name) + (not (string-suffix? "-sources.jar" name))))))) + #t))))) (native-inputs `(("java-qdox-1.12" ,java-qdox-1.12) ("java-jarjar" ,java-jarjar))) @@ -1178,3 +2172,2379 @@ testing frameworks, mocking libraries and UI validation rules.") JUnit provides assertions for testing expected results, test fixtures for sharing common test data, and test runners for running tests.") (license license:epl1.0))) + +(define-public java-plexus-utils + (package + (name "java-plexus-utils") + (version "3.0.24") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/" + "plexus-utils/archive/plexus-utils-" + version ".tar.gz")) + (sha256 + (base32 + "1mlwpc6fms24slygv5yvi6fi9hcha2fh0v73p5znpi78bg36i2js")))) + (build-system ant-build-system) + ;; FIXME: The default build.xml does not include a target to install + ;; javadoc files. + (arguments + `(#:jar-name "plexus-utils.jar" + #:source-dir "src/main" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-reference-to-/bin-and-/usr + (lambda _ + (substitute* "src/main/java/org/codehaus/plexus/util/\ +cli/shell/BourneShell.java" + (("/bin/sh") (which "sh")) + (("/usr/") (getcwd))) + #t)) + (add-after 'unpack 'fix-or-disable-broken-tests + (lambda _ + (with-directory-excursion "src/test/java/org/codehaus/plexus/util" + (substitute* '("cli/CommandlineTest.java" + "cli/shell/BourneShellTest.java") + (("/bin/sh") (which "sh")) + (("/bin/echo") (which "echo"))) + + ;; This test depends on MavenProjectStub, but we don't have + ;; a package for Maven. + (delete-file "introspection/ReflectionValueExtractorTest.java") + + ;; FIXME: The command line tests fail, maybe because they use + ;; absolute paths. + (delete-file "cli/CommandlineTest.java")) + #t))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://codehaus-plexus.github.io/plexus-utils/") + (synopsis "Common utilities for the Plexus framework") + (description "This package provides various Java utility classes for the +Plexus framework to ease working with strings, files, command lines, XML and +more.") + (license license:asl2.0))) + +(define-public java-plexus-interpolation + (package + (name "java-plexus-interpolation") + (version "1.23") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/" + "plexus-interpolation/archive/" + "plexus-interpolation-" version ".tar.gz")) + (sha256 + (base32 + "1w79ljwk42ymrgy8kqxq4l82pgdj6287gabpfnpkyzbrnclsnfrp")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "plexus-interpolation.jar" + #:source-dir "src/main")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://codehaus-plexus.github.io/plexus-interpolation/") + (synopsis "Java components for interpolating ${} strings and the like") + (description "Plexus interpolator is a modular, flexible interpolation +framework for the expression language style commonly seen in Maven, Plexus, +and other related projects. + +It has its foundation in the @code{org.codehaus.plexus.utils.interpolation} +package within @code{plexus-utils}, but has been separated in order to allow +these two libraries to vary independently of one another.") + (license license:asl2.0))) + +(define-public java-asm + (package + (name "java-asm") + (version "5.2") + (source (origin + (method url-fetch) + (uri (string-append "http://download.forge.ow2.org/asm/" + "asm-" version ".tar.gz")) + (sha256 + (base32 + "0kxvmv5275rnjl7jv0442k3wjnq03ngkb7sghs78avf45pzm4qgr")))) + (build-system ant-build-system) + (arguments + `(#:build-target "compile" + ;; The tests require an old version of Janino, which no longer compiles + ;; with the JDK7. + #:tests? #f + ;; We don't need these extra ant tasks, but the build system asks us to + ;; provide a path anyway. + #:make-flags (list (string-append "-Dobjectweb.ant.tasks.path=foo")) + #:phases + (modify-phases %standard-phases + (add-before 'install 'build-jars + (lambda* (#:key make-flags #:allow-other-keys) + ;; We cannot use the "jar" target because it depends on a couple + ;; of unpackaged, complicated tools. + (mkdir "dist") + (zero? (system* "jar" + "-cf" (string-append "dist/asm-" ,version ".jar") + "-C" "output/build/tmp" ".")))) + (replace 'install + (install-jars "dist"))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://asm.ow2.org/") + (synopsis "Very small and fast Java bytecode manipulation framework") + (description "ASM is an all purpose Java bytecode manipulation and +analysis framework. It can be used to modify existing classes or dynamically +generate classes, directly in binary form. The provided common +transformations and analysis algorithms allow to easily assemble custom +complex transformations and code analysis tools.") + (license license:bsd-3))) + +(define-public java-cglib + (package + (name "java-cglib") + (version "3.2.4") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/cglib/cglib/archive/RELEASE_" + (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version) + ".tar.gz")) + (file-name (string-append "cglib-" version ".tar.gz")) + (sha256 + (base32 + "162dvd4fln76ai8prfharf66pn6r56p3sxx683j5vdyccrd5hi1q")))) + (build-system ant-build-system) + (arguments + `(;; FIXME: tests fail because junit runs + ;; "net.sf.cglib.transform.AbstractTransformTest", which does not seem + ;; to describe a test at all. + #:tests? #f + #:jar-name "cglib.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "cglib") #t))))) + (inputs + `(("java-asm" ,java-asm) + ("java-junit" ,java-junit))) + (home-page "https://github.com/cglib/cglib/") + (synopsis "Java byte code generation library") + (description "The byte code generation library CGLIB is a high level API +to generate and transform Java byte code.") + (license license:asl2.0))) + +(define-public java-objenesis + (package + (name "java-objenesis") + (version "2.5.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/easymock/objenesis/" + "archive/" version ".tar.gz")) + (file-name (string-append "objenesis-" version ".tar.gz")) + (sha256 + (base32 + "1va5qz1i2wawwavhnxfzxnfgrcaflz9p1pg03irrjh4nd3rz8wh6")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "objenesis.jar" + #:source-dir "main/src/" + #:test-dir "main/src/test/")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://objenesis.org/") + (synopsis "Bypass the constructor when creating an object") + (description "Objenesis is a small Java library that serves one purpose: +to instantiate a new object of a particular class. It is common to see +restrictions in libraries stating that classes must require a default +constructor. Objenesis aims to overcome these restrictions by bypassing the +constructor on object instantiation.") + (license license:asl2.0))) + +(define-public java-easymock + (package + (name "java-easymock") + (version "3.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/easymock/easymock/" + "archive/easymock-" version ".tar.gz")) + (sha256 + (base32 + "1yzg0kv256ndr57gpav46cyv4a1ns5sj722l50zpxk3j6sk9hnmi")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "easymock.jar" + #:source-dir "core/src/main" + #:test-dir "core/src/test" + #:phases + (modify-phases %standard-phases + ;; FIXME: Android support requires the following packages to be + ;; available: com.google.dexmaker.stock.ProxyBuilder + (add-after 'unpack 'delete-android-support + (lambda _ + (with-directory-excursion "core/src/main/java/org/easymock/internal" + (substitute* "MocksControl.java" + (("AndroidSupport.isAndroid\\(\\)") "false") + (("return classProxyFactory = new AndroidClassProxyFactory\\(\\);") "")) + (delete-file "AndroidClassProxyFactory.java")) + #t)) + (add-after 'unpack 'delete-broken-tests + (lambda _ + (with-directory-excursion "core/src/test/java/org/easymock" + ;; This test depends on dexmaker. + (delete-file "tests2/ClassExtensionHelperTest.java") + + ;; This is not a test. + (delete-file "tests/BaseEasyMockRunnerTest.java") + + ;; This test should be executed with a different runner... + (delete-file "tests2/EasyMockAnnotationsTest.java") + ;; ...but deleting it means that we also have to delete these + ;; dependent files. + (delete-file "tests2/EasyMockRunnerTest.java") + (delete-file "tests2/EasyMockRuleTest.java") + + ;; This test fails because the file "easymock.properties" does + ;; not exist. + (delete-file "tests2/EasyMockPropertiesTest.java")) + #t))))) + (inputs + `(("java-asm" ,java-asm) + ("java-cglib" ,java-cglib) + ("java-objenesis" ,java-objenesis))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://easymock.org") + (synopsis "Java library providing mock objects for unit tests") + (description "EasyMock is a Java library that provides an easy way to use +mock objects in unit testing.") + (license license:asl2.0))) + +(define-public java-jmock-1 + (package + (name "java-jmock") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/jmock-developers/" + "jmock-library/archive/" version ".tar.gz")) + (file-name (string-append "jmock-" version ".tar.gz")) + (sha256 + (base32 + "0xmrlhq0fszldkbv281k9463mv496143vvmqwpxp62yzjvdkx9w0")))) + (build-system ant-build-system) + (arguments + `(#:build-target "jars" + #:test-target "run.tests" + #:phases + (modify-phases %standard-phases + (replace 'install (install-jars "build"))))) + (home-page "http://www.jmock.org") + (synopsis "Mock object library for test-driven development") + (description "JMock is a library that supports test-driven development of +Java code with mock objects. Mock objects help you design and test the +interactions between the objects in your programs. + +The jMock library + +@itemize +@item makes it quick and easy to define mock objects +@item lets you precisely specify the interactions between + your objects, reducing the brittleness of your tests +@item plugs into your favourite test framework +@item is easy to extend. +@end itemize\n") + (license license:bsd-3))) + +(define-public java-hamcrest-all + (package (inherit java-hamcrest-core) + (name "java-hamcrest-all") + (arguments + (substitute-keyword-arguments (package-arguments java-hamcrest-core) + ;; FIXME: a unit test fails because org.hamcrest.SelfDescribing is not + ;; found, although it is part of the hamcrest-core library that has + ;; just been built. + ;; + ;; Fixing this one test is insufficient, though, and upstream confirmed + ;; that the latest hamcrest release fails its unit tests when built + ;; with Java 7. See https://github.com/hamcrest/JavaHamcrest/issues/30 + ((#:tests? _) #f) + ((#:build-target _) "bigjar") + ((#:phases phases) + `(modify-phases ,phases + ;; Some build targets override the classpath, so we need to patch + ;; the build.xml to ensure that required dependencies are on the + ;; classpath. + (add-after 'unpack 'patch-classpath-for-integration + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "build.xml" + ((" build/hamcrest-library-\\$\\{version\\}.jar" line) + (string-join + (cons line + (append + (find-files (assoc-ref inputs "java-hamcrest-core") "\\.jar$") + (find-files (assoc-ref inputs "java-junit") "\\.jar$") + (find-files (assoc-ref inputs "java-jmock") "\\.jar$") + (find-files (assoc-ref inputs "java-easymock") "\\.jar$"))) + ";"))) + #t)))))) + (inputs + `(("java-junit" ,java-junit) + ("java-jmock" ,java-jmock-1) + ("java-easymock" ,java-easymock) + ("java-hamcrest-core" ,java-hamcrest-core) + ,@(package-inputs java-hamcrest-core))))) + +(define-public java-jopt-simple + (package + (name "java-jopt-simple") + (version "5.0.3") + (source (origin + (method url-fetch) + (uri (string-append "http://repo1.maven.org/maven2/" + "net/sf/jopt-simple/jopt-simple/" + version "/jopt-simple-" + version "-sources.jar")) + (sha256 + (base32 + "1v8bzmwmw6qq20gm42xyay6vrd567dra4vqwhgjnqqjz1gs9f8qa")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; there are no tests + #:jar-name "jopt-simple.jar")) + (home-page "https://pholser.github.io/jopt-simple/") + (synopsis "Java library for parsing command line options") + (description "JOpt Simple is a Java library for parsing command line +options, such as those you might pass to an invocation of @code{javac}. In +the interest of striving for simplicity, as closely as possible JOpt Simple +attempts to honor the command line option syntaxes of POSIX @code{getopt} and +GNU @code{getopt_long}. It also aims to make option parser configuration and +retrieval of options and their arguments simple and expressive, without being +overly clever.") + (license license:expat))) + +(define-public java-commons-math3 + (package + (name "java-commons-math3") + (version "3.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/math/source/" + "commons-math3-" version "-src.tar.gz")) + (sha256 + (base32 + "19l6yp44qc5g7wg816nbn5z3zq3xxzwimvbm4a8pczgvpi4i85s6")))) + (build-system ant-build-system) + (arguments + `(#:build-target "jar" + #:test-target "test" + #:make-flags + (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core")) + (junit (assoc-ref %build-inputs "java-junit"))) + (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar") + (string-append "-Dhamcrest.jar=" hamcrest + "/share/java/hamcrest-core.jar"))) + #:phases + (modify-phases %standard-phases + ;; We want to build the jar in the build phase and run the tests + ;; later in a separate phase. + (add-after 'unpack 'untangle-targets + (lambda _ + (substitute* "build.xml" + (("name=\"jar\" depends=\"test\"") + "name=\"jar\" depends=\"compile\"")) + #t)) + ;; There is no install target. + (replace 'install + (install-jars "target"))))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/math/") + (synopsis "Apache Commons mathematics library") + (description "Commons Math is a library of lightweight, self-contained +mathematics and statistics components addressing the most common problems not +available in the Java programming language or Commons Lang.") + (license license:asl2.0))) + +(define-public java-jmh + (package + (name "java-jmh") + (version "1.17.5") + (source (origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.openjdk.java.net/code-tools/jmh/") + (changeset version))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1fxyxhg9famwcg1prc4cgwb5wzyxqavn3cjm5vz8605xz7x5k084")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "jmh-core.jar" + #:source-dir "jmh-core/src/main" + #:test-dir "jmh-core/src/test" + #:phases + (modify-phases %standard-phases + ;; This seems to be a bug in the JDK. It may not be necessary in + ;; future versions of the JDK. + (add-after 'unpack 'fix-bug + (lambda _ + (with-directory-excursion + "jmh-core/src/main/java/org/openjdk/jmh/runner/options" + (substitute* '("IntegerValueConverter.java" + "ThreadsValueConverter.java") + (("public Class<Integer> valueType") + "public Class<? extends Integer> valueType"))) + #t))))) + (inputs + `(("java-jopt-simple" ,java-jopt-simple) + ("java-commons-math3" ,java-commons-math3))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://openjdk.java.net/projects/code-tools/jmh/") + (synopsis "Benchmark harness for the JVM") + (description "JMH is a Java harness for building, running, and analysing +nano/micro/milli/macro benchmarks written in Java and other languages +targetting the JVM.") + ;; GPLv2 only + (license license:gpl2))) + +(define-public java-commons-collections4 + (package + (name "java-commons-collections4") + (version "4.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/collections/source/" + "commons-collections4-" version "-src.tar.gz")) + (sha256 + (base32 + "1krfhvggympq4avk7gh6qafzf6b9ip6r1m4lmacikyx04039m0wl")))) + (build-system ant-build-system) + (arguments + `(#:test-target "test" + #:make-flags + (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core")) + (junit (assoc-ref %build-inputs "java-junit")) + (easymock (assoc-ref %build-inputs "java-easymock"))) + (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar") + (string-append "-Dhamcrest.jar=" hamcrest + "/share/java/hamcrest-core.jar") + (string-append "-Deasymock.jar=" easymock + "/share/java/easymock.jar"))) + #:phases + (modify-phases %standard-phases + (replace 'install + (install-jars "target"))))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-easymock" ,java-easymock))) + (home-page "http://commons.apache.org/collections/") + (synopsis "Collections framework") + (description "The Java Collections Framework is the recognised standard +for collection handling in Java. Commons-Collections seek to build upon the +JDK classes by providing new interfaces, implementations and utilities. There +are many features, including: + +@itemize +@item @code{Bag} interface for collections that have a number of copies of + each object +@item @code{BidiMap} interface for maps that can be looked up from value to + key as well and key to value +@item @code{MapIterator} interface to provide simple and quick iteration over + maps +@item Transforming decorators that alter each object as it is added to the + collection +@item Composite collections that make multiple collections look like one +@item Ordered maps and sets that retain the order elements are added in, + including an LRU based map +@item Reference map that allows keys and/or values to be garbage collected + under close control +@item Many comparator implementations +@item Many iterator implementations +@item Adapter classes from array and enumerations to collections +@item Utilities to test or create typical set-theory properties of collections + such as union, intersection, and closure. +@end itemize\n") + (license license:asl2.0))) + +(define-public java-commons-io + (package + (name "java-commons-io") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/io/source/" + "commons-io-" version "-src.tar.gz")) + (sha256 + (base32 + "0q5y41jrcjvx9hzs47x5kdhnasdy6rm4bzqd2jxl02w717m7a7v3")))) + (build-system ant-build-system) + (outputs '("out" "doc")) + (arguments + `(#:test-target "test" + #:make-flags + (list (string-append "-Djunit.jar=" + (assoc-ref %build-inputs "java-junit") + "/share/java/junit.jar")) + #:phases + (modify-phases %standard-phases + (add-after 'build 'build-javadoc ant-build-javadoc) + (replace 'install (install-jars "target")) + (add-after 'install 'install-doc (install-javadoc "target/apidocs"))))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/io/") + (synopsis "Common useful IO related classes") + (description "Commons-IO contains utility classes, stream implementations, +file filters and endian classes.") + (license license:asl2.0))) + +(define-public java-commons-lang + (package + (name "java-commons-lang") + (version "2.6") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/lang/source/" + "commons-lang-" version "-src.tar.gz")) + (sha256 + (base32 "1mxwagqadzx1b2al7i0z1v0r235aj2njdyijf02szq0vhmqrfiq5")))) + (build-system ant-build-system) + (outputs '("out" "doc")) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'build 'build-javadoc ant-build-javadoc) + (add-before 'check 'disable-failing-test + (lambda _ + ;; Disable a failing test + (substitute* "src/test/java/org/apache/commons/lang/\ +time/FastDateFormatTest.java" + (("public void testFormat\\(\\)") + "public void disabled_testFormat()")) + #t)) + (replace 'install (install-jars "target")) + (add-after 'install 'install-doc (install-javadoc "target/apidocs"))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://commons.apache.org/lang/") + (synopsis "Extension of the java.lang package") + (description "The Commons Lang components contains a set of Java classes +that provide helper methods for standard Java classes, especially those found +in the @code{java.lang} package in the Sun JDK. The following classes are +included: + +@itemize +@item StringUtils - Helper for @code{java.lang.String}. +@item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets + of characters such as @code{[a-z]} and @code{[abcdez]}. +@item RandomStringUtils - Helper for creating randomised strings. +@item NumberUtils - Helper for @code{java.lang.Number} and its subclasses. +@item NumberRange - A range of numbers with an upper and lower bound. +@item ObjectUtils - Helper for @code{java.lang.Object}. +@item SerializationUtils - Helper for serializing objects. +@item SystemUtils - Utility class defining the Java system properties. +@item NestedException package - A sub-package for the creation of nested + exceptions. +@item Enum package - A sub-package for the creation of enumerated types. +@item Builder package - A sub-package for the creation of @code{equals}, + @code{hashCode}, @code{compareTo} and @code{toString} methods. +@end itemize\n") + (license license:asl2.0))) + +(define-public java-commons-lang3 + (package + (name "java-commons-lang3") + (version "3.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/lang/source/" + "commons-lang3-" version "-src.tar.gz")) + (sha256 + (base32 "0xpshb9spjhplq5a7mr0y1bgfw8190ik4xj8f569xidfcki1d6kg")))) + (build-system ant-build-system) + (outputs '("out" "doc")) + (arguments + `(#:test-target "test" + #:make-flags + (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-all")) + (junit (assoc-ref %build-inputs "java-junit")) + (easymock (assoc-ref %build-inputs "java-easymock")) + (io (assoc-ref %build-inputs "java-commons-io"))) + (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar") + (string-append "-Dhamcrest.jar=" hamcrest + "/share/java/hamcrest-all.jar") + (string-append "-Dcommons-io.jar=" io + "/share/java/commons-io-" + ,(package-version java-commons-io) + "-SNAPSHOT.jar") + (string-append "-Deasymock.jar=" easymock + "/share/java/easymock.jar"))) + #:phases + (modify-phases %standard-phases + (add-after 'build 'build-javadoc ant-build-javadoc) + (replace 'install (install-jars "target")) + (add-after 'install 'install-doc (install-javadoc "target/apidocs"))))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-commons-io" ,java-commons-io) + ("java-hamcrest-all" ,java-hamcrest-all) + ("java-easymock" ,java-easymock))) + (home-page "http://commons.apache.org/lang/") + (synopsis "Extension of the java.lang package") + (description "The Commons Lang components contains a set of Java classes +that provide helper methods for standard Java classes, especially those found +in the @code{java.lang} package. The following classes are included: + +@itemize +@item StringUtils - Helper for @code{java.lang.String}. +@item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets of + characters such as @code{[a-z]} and @code{[abcdez]}. +@item RandomStringUtils - Helper for creating randomised strings. +@item NumberUtils - Helper for @code{java.lang.Number} and its subclasses. +@item NumberRange - A range of numbers with an upper and lower bound. +@item ObjectUtils - Helper for @code{java.lang.Object}. +@item SerializationUtils - Helper for serializing objects. +@item SystemUtils - Utility class defining the Java system properties. +@item NestedException package - A sub-package for the creation of nested + exceptions. +@item Enum package - A sub-package for the creation of enumerated types. +@item Builder package - A sub-package for the creation of @code{equals}, + @code{hashCode}, @code{compareTo} and @code{toString} methods. +@end itemize\n") + (license license:asl2.0))) + +(define-public java-jsr305 + (package + (name "java-jsr305") + (version "3.0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "com/google/code/findbugs/" + "jsr305/" version "/jsr305-" + version "-sources.jar")) + (sha256 + (base32 + "1rh6jin9v7jqpq3kf1swl868l8i94r636n03pzpsmgr8v0lh9j2n")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "jsr305.jar")) + (home-page "http://findbugs.sourceforge.net/") + (synopsis "Annotations for the static analyzer called findbugs") + (description "This package provides annotations for the findbugs package. +It provides packages in the @code{javax.annotations} namespace.") + (license license:asl2.0))) + +(define-public java-guava + (package + (name "java-guava") + ;; This is the last release of Guava that can be built with Java 7. + (version "20.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/google/guava/" + "releases/download/v" version + "/guava-" version "-sources.jar")) + (sha256 + (base32 + "1gawrs5gi6j5hcfxdgpnfli75vb9pfi4sn09pnc8xacr669yajwr")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "guava.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'trim-sources + (lambda _ + (with-directory-excursion "src/com/google/common" + ;; Remove annotations to avoid extra dependencies: + ;; * "j2objc" annotations are used when converting Java to + ;; Objective C; + ;; * "errorprone" annotations catch common Java mistakes at + ;; compile time; + ;; * "IgnoreJRERequirement" is used for Android. + (substitute* (find-files "." "\\.java$") + (("import com.google.j2objc.*") "") + (("import com.google.errorprone.annotation.*") "") + (("import org.codehaus.mojo.animal_sniffer.*") "") + (("@CanIgnoreReturnValue") "") + (("@LazyInit") "") + (("@WeakOuter") "") + (("@RetainedWith") "") + (("@Weak") "") + (("@ForOverride") "") + (("@J2ObjCIncompatible") "") + (("@IgnoreJRERequirement") ""))) + #t))))) + (inputs + `(("java-jsr305" ,java-jsr305))) + (home-page "https://github.com/google/guava") + (synopsis "Google core libraries for Java") + (description "Guava is a set of core libraries that includes new +collection types (such as multimap and multiset), immutable collections, a +graph library, functional types, an in-memory cache, and APIs/utilities for +concurrency, I/O, hashing, primitives, reflection, string processing, and much +more!") + (license license:asl2.0))) + +;; The java-commons-logging package provides adapters to many different +;; logging frameworks. To avoid an excessive dependency graph we try to build +;; it with only a minimal set of adapters. +(define-public java-commons-logging-minimal + (package + (name "java-commons-logging-minimal") + (version "1.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/logging/source/" + "commons-logging-" version "-src.tar.gz")) + (sha256 + (base32 + "10bwcy5w8d7y39n0krlwhnp8ds3kj5zhmzj0zxnkw0qdlsjmsrj9")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; avoid dependency on logging frameworks + #:jar-name "commons-logging-minimal.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-adapters-and-tests + (lambda _ + ;; Delete all adapters except for NoOpLog, SimpleLog, and + ;; LogFactoryImpl. NoOpLog is required to build; LogFactoryImpl + ;; is used by applications; SimpleLog is the only actually usable + ;; implementation that does not depend on another logging + ;; framework. + (for-each + (lambda (file) + (delete-file (string-append + "src/main/java/org/apache/commons/logging/impl/" file))) + (list "Jdk13LumberjackLogger.java" + "WeakHashtable.java" + "Log4JLogger.java" + "ServletContextCleaner.java" + "Jdk14Logger.java" + "AvalonLogger.java" + "LogKitLogger.java")) + (delete-file-recursively "src/test") + #t))))) + (home-page "http://commons.apache.org/logging/") + (synopsis "Common API for logging implementations") + (description "The Logging package is a thin bridge between different +logging implementations. A library that uses the commons-logging API can be +used with any logging implementation at runtime.") + (license license:asl2.0))) + +;; This is the last release of the 1.x series. +(define-public java-mockito-1 + (package + (name "java-mockito") + (version "1.10.19") + (source (origin + (method url-fetch) + (uri (string-append "http://repo1.maven.org/maven2/" + "org/mockito/mockito-core/" version + "/mockito-core-" version "-sources.jar")) + (sha256 + (base32 + "0vmiwnwpf83g2q7kj1rislmja8fpvqkixjhawh7nxnygx6pq11kc")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "mockito.jar" + #:tests? #f ; no tests included + ;; FIXME: patch-and-repack does not support jars, so we have to apply + ;; patches in build phases. + #:phases + (modify-phases %standard-phases + ;; Mockito was developed against a different version of hamcrest, + ;; which does not require matcher implementations to provide an + ;; implementation of the "describeMismatch" method. We add this + ;; simple definition to pass the build with our version of hamcrest. + (add-after 'unpack 'fix-hamcrest-build-error + (lambda _ + (substitute* "src/org/mockito/internal/matchers/LocalizedMatcher.java" + (("public Matcher getActualMatcher\\(\\) .*" line) + (string-append " + public void describeMismatch(Object item, Description description) { + actualMatcher.describeMismatch(item, description); + }" + line))) + #t)) + ;; Mockito bundles cglib. We have a cglib package, so let's use + ;; that instead. + (add-after 'unpack 'use-system-libraries + (lambda _ + (with-directory-excursion "src/org/mockito/internal/creation/cglib" + (substitute* '("CGLIBHacker.java" + "CglibMockMaker.java" + "ClassImposterizer.java" + "DelegatingMockitoMethodProxy.java" + "MethodInterceptorFilter.java" + "MockitoNamingPolicy.java" + "SerializableMockitoMethodProxy.java" + "SerializableNoOp.java") + (("import org.mockito.cglib") "import net.sf.cglib"))) + #t))))) + (inputs + `(("java-junit" ,java-junit) + ("java-objenesis" ,java-objenesis) + ("java-cglib" ,java-cglib) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://mockito.org") + (synopsis "Mockito is a mock library for Java") + (description "Mockito is a mocking library for Java which lets you write +tests with a clean and simple API. It generates mocks using reflection, and +it records all mock invocations, including methods arguments.") + (license license:asl2.0))) + +(define-public java-httpcomponents-httpcore + (package + (name "java-httpcomponents-httpcore") + (version "4.4.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache//httpcomponents/httpcore/" + "source/httpcomponents-core-" + version "-src.tar.gz")) + (sha256 + (base32 + "02bwcf38y4vgwq7kj2s6q7qrmma641r5lacivm16kgxvb2j6h1vy")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "httpcomponents-httpcore.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "httpcore") #t))))) + (inputs + `(("java-commons-logging-minimal" ,java-commons-logging-minimal) + ("java-commons-lang3" ,java-commons-lang3))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-mockito" ,java-mockito-1))) + (home-page "https://hc.apache.org/httpcomponents-core-4.4.x/index.html") + (synopsis "Low level HTTP transport components") + (description "HttpCore is a set of low level HTTP transport components +that can be used to build custom client and server side HTTP services with a +minimal footprint. HttpCore supports two I/O models: blocking I/O model based +on the classic Java I/O and non-blocking, event driven I/O model based on Java +NIO. + +This package provides the blocking I/O model library.") + (license license:asl2.0))) + +(define-public java-httpcomponents-httpcore-nio + (package (inherit java-httpcomponents-httpcore) + (name "java-httpcomponents-httpcore-nio") + (arguments + `(#:jar-name "httpcomponents-httpcore-nio.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "httpcore-nio") #t))))) + (inputs + `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) + ("java-hamcrest-core" ,java-hamcrest-core) + ,@(package-inputs java-httpcomponents-httpcore))) + (description "HttpCore is a set of low level HTTP transport components +that can be used to build custom client and server side HTTP services with a +minimal footprint. HttpCore supports two I/O models: blocking I/O model based +on the classic Java I/O and non-blocking, event driven I/O model based on Java +NIO. + +This package provides the non-blocking I/O model library based on Java +NIO."))) + +(define-public java-httpcomponents-httpcore-ab + (package (inherit java-httpcomponents-httpcore) + (name "java-httpcomponents-httpcore-ab") + (arguments + `(#:jar-name "httpcomponents-httpcore-ab.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "httpcore-ab") #t))))) + (inputs + `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) + ("java-commons-cli" ,java-commons-cli) + ("java-hamcrest-core" ,java-hamcrest-core) + ,@(package-inputs java-httpcomponents-httpcore))) + (synopsis "Apache HttpCore benchmarking tool") + (description "This package provides the HttpCore benchmarking tool. It is +an Apache AB clone based on HttpCore."))) + +(define-public java-httpcomponents-httpclient + (package + (name "java-httpcomponents-httpclient") + (version "4.5.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/httpcomponents/httpclient/" + "source/httpcomponents-client-" + version "-src.tar.gz")) + (sha256 + (base32 + "1428399s7qy3cim5wc6f3ks4gl9nf9vkjpfmnlap3jflif7g2pj1")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "httpcomponents-httpclient.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "httpclient") #t))))) + (inputs + `(("java-commons-logging-minimal" ,java-commons-logging-minimal) + ("java-commons-codec" ,java-commons-codec) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) + ("java-mockito" ,java-mockito-1) + ("java-junit" ,java-junit))) + (home-page "https://hc.apache.org/httpcomponents-client-ga/") + (synopsis "HTTP client library for Java") + (description "Although the @code{java.net} package provides basic +functionality for accessing resources via HTTP, it doesn't provide the full +flexibility or functionality needed by many applications. @code{HttpClient} +seeks to fill this void by providing an efficient, up-to-date, and +feature-rich package implementing the client side of the most recent HTTP +standards and recommendations.") + (license license:asl2.0))) + +(define-public java-httpcomponents-httpmime + (package (inherit java-httpcomponents-httpclient) + (name "java-httpcomponents-httpmime") + (arguments + `(#:jar-name "httpcomponents-httpmime.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "httpmime") #t))))) + (inputs + `(("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient) + ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) + ("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))))) + +(define-public java-commons-net + (package + (name "java-commons-net") + (version "3.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/net/source/" + "commons-net-" version "-src.tar.gz")) + (sha256 + (base32 + "0n0cmnddk9qdqhjvka8pc6hd9mn2qi3166f1s6xk32h7rfy1adxr")))) + (build-system ant-build-system) + (arguments + `(;; FIXME: MainTest.java tries to read "examples.properties" (which + ;; should be "resources/examples/examples.properties"), but gets "null" + ;; instead. + #:tests? #f + #:jar-name "commons-net.jar")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/net/") + (synopsis "Client library for many basic Internet protocols") + (description "The Apache Commons Net library implements the client side of +many basic Internet protocols. The purpose of the library is to provide +fundamental protocol access, not higher-level abstractions.") + (license license:asl2.0))) + +(define-public java-jsch + (package + (name "java-jsch") + (version "0.1.54") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/jsch/jsch/" + version "/jsch-" version ".zip")) + (sha256 + (base32 + "029rdddyq1mh3ghryh3ki99kba1xkf1d1swjv2vi6lk6zzjy2wdb")))) + (build-system ant-build-system) + (arguments + `(#:build-target "dist" + #:tests? #f ; no tests included + #:phases + (modify-phases %standard-phases + (replace 'install (install-jars "dist"))))) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://www.jcraft.com/jsch/") + (synopsis "Pure Java implementation of SSH2") + (description "JSch is a pure Java implementation of SSH2. JSch allows you +to connect to an SSH server and use port forwarding, X11 forwarding, file +transfer, etc., and you can integrate its functionality into your own Java +programs.") + (license license:bsd-3))) + +(define-public java-commons-compress + (package + (name "java-commons-compress") + (version "1.13") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/compress/source/" + "commons-compress-" version "-src.tar.gz")) + (sha256 + (base32 + "1vjqvavrn0babffn1kciz6v52ibwq2vwhzlb95hazis3lgllnxc8")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "commons-compress.jar" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bad-tests + (lambda _ + (with-directory-excursion "src/test/java/org/apache/commons/compress/" + ;; FIXME: These tests really should not fail. Maybe they are + ;; indicative of problems with our Java packaging work. + + ;; This test fails with a null pointer exception. + (delete-file "archivers/sevenz/SevenZOutputFileTest.java") + ;; This test fails to open test resources. + (delete-file "archivers/zip/ExplodeSupportTest.java") + + ;; FIXME: This test adds a dependency on powermock, which is hard to + ;; package at this point. + ;; https://github.com/powermock/powermock + (delete-file "archivers/sevenz/SevenZNativeHeapTest.java")) + #t))))) + (inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-mockito" ,java-mockito-1) + ("java-xz" ,java-xz))) + (home-page "https://commons.apache.org/proper/commons-compress/") + (synopsis "Java library for working with compressed files") + (description "The Apache Commons Compress library defines an API for +working with compressed files such as ar, cpio, Unix dump, tar, zip, gzip, XZ, +Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE, lz4 and Z files.") + (license license:asl2.0))) + +(define-public java-commons-net + (package + (name "java-commons-net") + (version "3.6") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/net/source/" + "commons-net-" version "-src.tar.gz")) + (sha256 + (base32 + "0n0cmnddk9qdqhjvka8pc6hd9mn2qi3166f1s6xk32h7rfy1adxr")))) + (build-system ant-build-system) + (arguments + `(;; FIXME: MainTest.java tries to read "examples.properties" (which + ;; should be "resources/examples/examples.properties"), but gets "null" + ;; instead. + #:tests? #f + #:jar-name "commons-net.jar")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/net/") + (synopsis "Client library for many basic Internet protocols") + (description "The Apache Commons Net library implements the client side of +many basic Internet protocols. The purpose of the library is to provide +fundamental protocol access, not higher-level abstractions.") + (license license:asl2.0))) + +(define-public java-osgi-annotation + (package + (name "java-osgi-annotation") + (version "6.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/osgi/org.osgi.annotation/" version "/" + "org.osgi.annotation-" version "-sources.jar")) + (sha256 + (base32 + "1q718mb7gqg726rh6pc2hcisn8v50nv35abbir0jypmffhiii85w")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests + #:jar-name "osgi-annotation.jar")) + (home-page "http://www.osgi.org") + (synopsis "Annotation module of OSGi framework") + (description + "OSGi, for Open Services Gateway initiative framework, is a module system +and service platform for the Java programming language. This package contains +the OSGi annotation module, providing additional services to help dynamic +components.") + (license license:asl2.0))) + +(define-public java-osgi-core + (package + (name "java-osgi-core") + (version "6.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/osgi/org.osgi.core/" version "/" + "org.osgi.core-" version "-sources.jar")) + (sha256 + (base32 + "19bpf5jx32jq9789gyhin35q5v7flmw0p9mk7wbgqpxqfmxyiabv")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests + #:jar-name "osgi-core.jar")) + (inputs + `(("java-osgi-annotation" ,java-osgi-annotation))) + (home-page "http://www.osgi.org") + (synopsis "Core module of OSGi framework") + (description + "OSGi, for Open Services Gateway initiative framework, is a module system +and service platform for the Java programming language. This package contains +the OSGi Core module.") + (license license:asl2.0))) + +(define-public java-osgi-service-event + (package + (name "java-osgi-service-event") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/osgi/org.osgi.service.event/" + version "/org.osgi.service.event-" + version "-sources.jar")) + (sha256 + (base32 + "1nyhlgagwym75bycnjczwbnpymv2iw84zbhvvzk84g9q736i6qxm")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests + #:jar-name "osgi-service-event.jar")) + (inputs + `(("java-osgi-annotation" ,java-osgi-annotation) + ("java-osgi-core" ,java-osgi-core))) + (home-page "http://www.osgi.org") + (synopsis "OSGi service event module") + (description + "OSGi, for Open Services Gateway initiative framework, is a module system +and service platform for the Java programming language. This package contains +the OSGi @code{org.osgi.service.event} module.") + (license license:asl2.0))) + +(define-public java-eclipse-osgi + (package + (name "java-eclipse-osgi") + (version "3.11.3") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.osgi/" + version "/org.eclipse.osgi-" + version "-sources.jar")) + (sha256 + (base32 + "00cqc6lb29n0zv68b4l842vzkwawvbr7gshfdygsk8sicvcq2c7b")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-equinox-osgi.jar")) + (inputs + `(("java-osgi-annotation" ,java-osgi-annotation))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Eclipse Equinox OSGi framework") + (description "This package provides an implementation of the OSGi Core +specification.") + (license license:epl1.0))) + +(define-public java-eclipse-equinox-common + (package + (name "java-eclipse-equinox-common") + (version "3.8.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.equinox.common/" + version "/org.eclipse.equinox.common-" + version "-sources.jar")) + (sha256 + (base32 + "12aazpkgw46r1qj0pr421jzwhbmsizd97r37krd7njnbrdgfzksc")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-equinox-common.jar")) + (inputs + `(("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Common Eclipse runtime") + (description "This package provides the common Eclipse runtime.") + (license license:epl1.0))) + +(define-public java-eclipse-core-jobs + (package + (name "java-eclipse-core-jobs") + (version "3.8.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.jobs/" + version "/org.eclipse.core.jobs-" + version "-sources.jar")) + (sha256 + (base32 + "0395b8lh0km8vhzjnchvs1rii1qz48hyvb2wqfaq4yhklbwihq4b")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-jobs.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Eclipse jobs mechanism") + (description "This package provides the Eclipse jobs mechanism.") + (license license:epl1.0))) + +(define-public java-eclipse-equinox-registry + (package + (name "java-eclipse-equinox-registry") + (version "3.6.100") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.equinox.registry/" + version "/org.eclipse.equinox.registry-" + version "-sources.jar")) + (sha256 + (base32 + "1i9sgymh2fy5vdgk5y7s3qvrlbgh4l93ddqi3v4zmca7hwrlhf9k")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-equinox-registry.jar")) + (inputs + `(("java-eclipse-core-jobs" ,java-eclipse-core-jobs) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Eclipse extension registry support") + (description "This package provides support for the Eclipse extension +registry.") + (license license:epl1.0))) + +(define-public java-eclipse-equinox-app + (package + (name "java-eclipse-equinox-app") + (version "1.3.400") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.equinox.app/" + version "/org.eclipse.equinox.app-" + version "-sources.jar")) + (sha256 + (base32 + "0nhvbp93y203ar7y59gb0mz3w2d3jlqhr0c9hii9bcfpmr7imdab")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-equinox-app.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-osgi" ,java-eclipse-osgi) + ("java-osgi-service-event" ,java-osgi-service-event))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Equinox application container") + (description "This package provides the Equinox application container for +Eclipse.") + (license license:epl1.0))) + +(define-public java-eclipse-equinox-preferences + (package + (name "java-eclipse-equinox-preferences") + (version "3.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.equinox.preferences/" + version "/org.eclipse.equinox.preferences-" + version "-sources.jar")) + (sha256 + (base32 + "0k7w6c141sqym4fy3af0qkwpy4pdh2vsjpjba6rp5fxyqa24v0a2")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-equinox-preferences.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "http://www.eclipse.org/equinox/") + (synopsis "Eclipse preferences mechanism") + (description "This package provides the Eclipse preferences mechanism with +the module @code{org.eclipse.equinox.preferences}.") + (license license:epl1.0))) + +(define-public java-eclipse-core-contenttype + (package + (name "java-eclipse-core-contenttype") + (version "3.5.100") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.contenttype/" + version "/org.eclipse.core.contenttype-" + version "-sources.jar")) + (sha256 + (base32 + "1wcqcv7ijwv5rh748vz3x9pkmjl9w1r0k0026k56n8yjl4rrmspi")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-contenttype.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "http://www.eclipse.org/") + (synopsis "Eclipse content mechanism") + (description "This package provides the Eclipse content mechanism in the +@code{org.eclipse.core.contenttype} module.") + (license license:epl1.0))) + +(define-public java-eclipse-core-runtime + (package + (name "java-eclipse-core-runtime") + (version "3.12.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.runtime/" + version "/org.eclipse.core.runtime-" + version "-sources.jar")) + (sha256 + (base32 + "16mkf8jgj35pgzms7w1gyfq0gfm4ixw6c5xbbxzdj1la56c758ya")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-runtime.jar")) + (inputs + `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) + ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) + ("java-eclipse-equinox-app" ,java-eclipse-equinox-app) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/") + (synopsis "Eclipse core runtime") + (description "This package provides the Eclipse core runtime with the +module @code{org.eclipse.core.runtime}.") + (license license:epl1.0))) + +(define-public java-eclipse-core-filesystem + (package + (name "java-eclipse-core-filesystem") + (version "1.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.filesystem/" + version "/org.eclipse.core.filesystem-" + version "-sources.jar")) + (sha256 + (base32 + "0km1bhwjim4rfy3pkvjhvy31kgsyf2ncx0mlkmbf5n6g57pphdyj")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-filesystem.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/") + (synopsis "Eclipse core file system") + (description "This package provides the Eclipse core file system with the +module @code{org.eclipse.core.filesystem}.") + (license license:epl1.0))) + +(define-public java-eclipse-core-expressions + (package + (name "java-eclipse-core-expressions") + (version "3.5.100") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.expressions/" + version "/org.eclipse.core.expressions-" + version "-sources.jar")) + (sha256 + (base32 + "18bw2l875gmygvpagpgk9l24qzbdjia4ag12nw6fi8v8yaq4987f")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-expressions.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/") + (synopsis "Eclipse core expression language") + (description "This package provides the Eclipse core expression language +with the @code{org.eclipse.core.expressions} module.") + (license license:epl1.0))) + +(define-public java-eclipse-core-variables + (package + (name "java-eclipse-core-variables") + (version "3.3.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.variables/" + version "/org.eclipse.core.variables-" + version "-sources.jar")) + (sha256 + (base32 + "12dirh03zi4n5x5cj07vzrhkmnqy6h9q10h9j605pagmpmifyxmy")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-variables.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/platform") + (synopsis "Eclipse core variables") + (description "This package provides the Eclipse core variables module +@code{org.eclipse.core.variables}.") + (license license:epl1.0))) + +(define-public java-eclipse-ant-core + (package + (name "java-eclipse-ant-core") + (version "3.4.100") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.ant.core/" + version "/org.eclipse.ant.core-" + version "-sources.jar")) + (sha256 + (base32 + "11g3if794qjlk98mz9zch22rr56sd7z63vn4i7k2icr8cq5bfqg7")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-ant-core.jar")) + (inputs + `(("java-eclipse-equinox-app" ,java-eclipse-equinox-app) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-core-variables" ,java-eclipse-core-variables) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/platform") + (synopsis "Ant build tool core libraries") + (description "This package provides the ant build tool core libraries with +the module @code{org.eclipse.ant.core}.") + (license license:epl1.0))) + +(define-public java-eclipse-core-resources + (package + (name "java-eclipse-core-resources") + (version "3.11.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.resources/" + version "/org.eclipse.core.resources-" + version "-sources.jar")) + (sha256 + (base32 + "1hrfxrll6cpcagfksk2na1ypvkcnsp0fk6n3vcsrn97qayf9mx9l")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-resources.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) + ("java-eclipse-core-expressions" ,java-eclipse-core-expressions) + ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) + ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-ant-core" ,java-eclipse-ant-core) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/") + (synopsis "Eclipse core resource management") + (description "This package provides the Eclipse core resource management +module @code{org.eclipse.core.resources}.") + (license license:epl1.0))) + +(define-public java-eclipse-compare-core + (package + (name "java-eclipse-compare-core") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.compare.core/" + version "/org.eclipse.compare.core-" + version "-sources.jar")) + (sha256 + (base32 + "10g37r0pbiffyv2wk35c6g5lwzkdipkl0kkjp41v84dln46xm4dg")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-compare-core.jar")) + (inputs + `(("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-osgi" ,java-eclipse-osgi) + ("java-icu4j" ,java-icu4j))) + (home-page "https://www.eclipse.org/") + (synopsis "Eclipse core compare support") + (description "This package provides the Eclipse core compare support +module @code{org.eclipse.compare.core}.") + (license license:epl1.0))) + +(define-public java-eclipse-team-core + (package + (name "java-eclipse-team-core") + (version "3.8.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.team.core/" + version "/org.eclipse.team.core-" + version "-sources.jar")) + (sha256 + (base32 + "02j2jzqgb26zx2d5ahxmvijw6j4r0la90zl5c3i65x6z19ciyam7")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-team-core.jar")) + (inputs + `(("java-eclipse-compare-core" ,java-eclipse-compare-core) + ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) + ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) + ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) + ("java-eclipse-core-resources" ,java-eclipse-core-resources) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-osgi" ,java-eclipse-osgi))) + (home-page "https://www.eclipse.org/platform") + (synopsis "Eclipse team support core") + (description "This package provides the Eclipse team support core module +@code{org.eclipse.team.core}.") + (license license:epl1.0))) + +(define-public java-eclipse-core-commands + (package + (name "java-eclipse-core-commands") + (version "3.8.1") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.core.commands/" + version "/org.eclipse.core.commands-" + version "-sources.jar")) + (sha256 + (base32 + "0yjn482qndcfrsq3jd6vnhcylp16420f5aqkrwr8spsprjigjcr9")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-core-commands.jar")) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common))) + (home-page "https://www.eclipse.org/platform") + (synopsis "Eclipse core commands") + (description "This package provides Eclipse core commands in the module +@code{org.eclipse.core.commands}.") + (license license:epl1.0))) + +(define-public java-eclipse-text + (package + (name "java-eclipse-text") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/platform/org.eclipse.text/" + version "/org.eclipse.text-" + version "-sources.jar")) + (sha256 + (base32 + "0scz70vzz5qs5caji9f5q01vkqnvip7dpri1q07l8wbbdcxn4cq1")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-text.jar" + #:phases + (modify-phases %standard-phases + ;; When creating a new category we must make sure that the new list + ;; matches List<Position>. By default it seems to be too generic + ;; (ArrayList<Object>), so we specialize it to ArrayList<Position>. + ;; Without this we get this error: + ;; + ;; [javac] .../src/org/eclipse/jface/text/AbstractDocument.java:376: + ;; error: method put in interface Map<K,V> cannot be applied to given types; + ;; [javac] fPositions.put(category, new ArrayList<>()); + ;; [javac] ^ + ;; [javac] required: String,List<Position> + ;; [javac] found: String,ArrayList<Object> + ;; [javac] reason: actual argument ArrayList<Object> cannot be converted + ;; to List<Position> by method invocation conversion + ;; [javac] where K,V are type-variables: + ;; [javac] K extends Object declared in interface Map + ;; [javac] V extends Object declared in interface Map + ;; + ;; I don't know if this is a good fix. I suspect it is not, but it + ;; seems to work. + (add-after 'unpack 'fix-compilation-error + (lambda _ + (substitute* "src/org/eclipse/jface/text/AbstractDocument.java" + (("Positions.put\\(category, new ArrayList<>\\(\\)\\);") + "Positions.put(category, new ArrayList<Position>());")) + #t))))) + (inputs + `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-core-commands" ,java-eclipse-core-commands) + ("java-icu4j" ,java-icu4j))) + (home-page "http://www.eclipse.org/platform") + (synopsis "Eclipse text library") + (description "Platform Text is part of the Platform UI project and +provides the basic building blocks for text and text editors within Eclipse +and contributes the Eclipse default text editor.") + (license license:epl1.0))) + +(define-public java-eclipse-jdt-core + (package + (name "java-eclipse-jdt-core") + (version "3.12.3") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/jdt/org.eclipse.jdt.core/" + version "/org.eclipse.jdt.core-" + version "-sources.jar")) + (sha256 + (base32 + "191xw4lc7mjjkprh4ji5vnpjvr5r4zvbpwkriy4bvsjqrz35vh1j")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jar-name "eclipse-jdt-core.jar")) + (inputs + `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) + ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) + ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) + ("java-eclipse-core-resources" ,java-eclipse-core-resources) + ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) + ("java-eclipse-equinox-app" ,java-eclipse-equinox-app) + ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) + ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) + ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) + ("java-eclipse-osgi" ,java-eclipse-osgi) + ("java-eclipse-text" ,java-eclipse-text))) + (home-page "https://www.eclipse.org/jdt") + (synopsis "Java development tools core libraries") + (description "This package provides the core libraries of the Eclipse Java +development tools.") + (license license:epl1.0))) + +(define-public java-javax-mail + (package + (name "java-javax-mail") + (version "1.5.6") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "com/sun/mail/javax.mail/" + version "/javax.mail-" + version "-sources.jar")) + (sha256 + (base32 + "0sdlfgsc2b5s89xv1261y8i0jijcja019k2x1c8ngfn582w4jly9")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests + #:jar-name "javax-mail.jar")) + (home-page "https://javamail.java.net") + (synopsis "Reference implementation of the JavaMail API") + (description + "This package provides versions of the JavaMail API implementation, IMAP, +SMTP, and POP3 service providers, some examples, and documentation for the +JavaMail API.") + ;; GPLv2 only with "classpath exception". + (license license:gpl2))) + +(define-public java-log4j-api + (package + (name "java-log4j-api") + (version "2.4.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/logging/log4j/" version + "/apache-log4j-" version "-src.tar.gz")) + (sha256 + (base32 + "0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; tests require unpackaged software + #:jar-name "log4j-api.jar" + #:make-flags + (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out") + "/share/java")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-dir + (lambda _ (chdir "log4j-api") #t)) + ;; FIXME: The tests require additional software that has not been + ;; packaged yet, such as + ;; * org.apache.maven + ;; * org.apache.felix + (add-after 'enter-dir 'delete-tests + (lambda _ (delete-file-recursively "src/test") #t))))) + (inputs + `(("java-osgi-core" ,java-osgi-core) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-junit" ,java-junit))) + (home-page "http://logging.apache.org/log4j/2.x/") + (synopsis "API module of the Log4j logging framework for Java") + (description + "This package provides the API module of the Log4j logging framework for +Java.") + (license license:asl2.0))) + +(define-public java-commons-cli + (package + (name "java-commons-cli") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/cli/source/" + "commons-cli-" version "-src.tar.gz")) + (sha256 + (base32 + "1fkjn552i12vp3xxk21ws4p70fi0lyjm004vzxsdaz7gdpgyxxyl")))) + (build-system ant-build-system) + ;; TODO: javadoc + (arguments + `(#:jar-name "commons-cli.jar")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/cli/") + (synopsis "Command line arguments and options parsing library") + (description "The Apache Commons CLI library provides an API for parsing +command line options passed to programs. It is also able to print help +messages detailing the options available for a command line tool. + +Commons CLI supports different types of options: + +@itemize +@item POSIX like options (ie. tar -zxvf foo.tar.gz) +@item GNU like long options (ie. du --human-readable --max-depth=1) +@item Java like properties (ie. java -Djava.awt.headless=true Foo) +@item Short options with value attached (ie. gcc -O2 foo.c) +@item long options with single hyphen (ie. ant -projecthelp) +@end itemize + +This is a part of the Apache Commons Project.") + (license license:asl2.0))) + +(define-public java-commons-codec + (package + (name "java-commons-codec") + (version "1.10") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/codec/source/" + "commons-codec-" version "-src.tar.gz")) + (sha256 + (base32 + "1w9qg30y4s0x8gnmr2fgj4lyplfn788jqxbcz27lf5kbr6n8xr65")))) + (build-system ant-build-system) + (outputs '("out" "doc")) + (arguments + `(#:test-target "test" + #:make-flags + (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core")) + (junit (assoc-ref %build-inputs "java-junit"))) + (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar") + (string-append "-Dhamcrest.jar=" hamcrest + "/share/java/hamcrest-core.jar") + ;; Do not append version to jar. + "-Dfinal.name=commons-codec")) + #:phases + (modify-phases %standard-phases + (add-after 'build 'build-javadoc ant-build-javadoc) + (replace 'install (install-jars "dist")) + (add-after 'install 'install-doc (install-javadoc "dist/docs/api"))))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://commons.apache.org/codec/") + (synopsis "Common encoders and decoders such as Base64, Hex, Phonetic and URLs") + (description "The codec package contains simple encoder and decoders for +various formats such as Base64 and Hexadecimal. In addition to these widely +used encoders and decoders, the codec package also maintains a collection of +phonetic encoding utilities. + +This is a part of the Apache Commons Project.") + (license license:asl2.0))) + +(define-public java-commons-daemon + (package + (name "java-commons-daemon") + (version "1.0.15") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/daemon/source/" + "commons-daemon-" version "-src.tar.gz")) + (sha256 + (base32 + "0ci46kq8jpz084ccwq0mmkahcgsmh20ziclp2jf5i0djqv95gvhi")))) + (build-system ant-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'build 'build-javadoc ant-build-javadoc) + (replace 'install (install-jars "dist")) + (add-after 'install 'install-doc (install-javadoc "dist/docs/api"))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://commons.apache.org/daemon/") + (synopsis "Library to launch Java applications as daemons") + (description "The Daemon package from Apache Commons can be used to +implement Java applications which can be launched as daemons. For example the +program will be notified about a shutdown so that it can perform cleanup tasks +before its process of execution is destroyed by the operation system. + +This package contains the Java library. You will also need the actual binary +for your architecture which is provided by the jsvc package. + +This is a part of the Apache Commons Project.") + (license license:asl2.0))) + +(define-public antlr2 + (package + (name "antlr2") + (version "2.7.7") + (source (origin + (method url-fetch) + (uri (string-append "http://www.antlr2.org/download/antlr-" + version ".tar.gz")) + (sha256 + (base32 + "1ffvcwdw73id0dk6pj2mlxjvbg0662qacx4ylayqcxgg381fnfl5")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file "antlr.jar") + (substitute* "lib/cpp/antlr/CharScanner.hpp" + (("#include <map>") + (string-append + "#include <map>\n" + "#define EOF (-1)\n" + "#include <strings.h>"))) + (substitute* "configure" + (("/bin/sh") "sh")) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no test target + #:imported-modules ((guix build ant-build-system) + (guix build syscalls) + ,@%gnu-build-system-modules) + #:modules (((guix build ant-build-system) #:prefix ant:) + (guix build gnu-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'strip-jar-timestamps + (assoc-ref ant:%standard-phases 'strip-jar-timestamps)) + (add-after 'configure 'fix-bin-ls + (lambda _ + (substitute* (find-files "." "Makefile") + (("/bin/ls") "ls")) + #t))))) + (native-inputs + `(("which" ,which) + ("zip" ,zip) + ("java" ,icedtea "jdk"))) + (inputs + `(("java" ,icedtea))) + (home-page "http://www.antlr2.org") + (synopsis "Framework for constructing recognizers, compilers, and translators") + (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) +is a language tool that provides a framework for constructing recognizers, +compilers, and translators from grammatical descriptions containing Java, C#, +C++, or Python actions. ANTLR provides excellent support for tree construction, +tree walking, and translation.") + (license license:public-domain))) + +(define-public java-stringtemplate-3 + (package + (name "java-stringtemplate") + (version "3.2.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/website-st4/raw/" + "gh-pages/download/stringtemplate-" + version ".tar.gz")) + (sha256 + (base32 + "086yj68np1vqhkj7483diz3km6s6y4gmwqswa7524a0ca6vxn2is")))) + (build-system ant-build-system) + (arguments + `(#:jar-name (string-append ,name "-" ,version ".jar") + #:test-dir "test" + #:modules ((guix build ant-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + (add-before 'check 'fix-tests + (lambda _ + (substitute* "build.xml" + (("\\$\\{test.home\\}/java") + "${test.home}/org")) + #t)) + (add-before 'build 'generate-grammar + (lambda _ + (with-directory-excursion "src/org/antlr/stringtemplate/language/" + (every (lambda (file) + (format #t "~a\n" file) + (zero? (system* "antlr" file))) + '("template.g" "angle.bracket.template.g" "action.g" + "eval.g" "group.g" "interface.g")))))))) + (native-inputs + `(("antlr" ,antlr2) + ("java-junit" ,java-junit))) + (home-page "http://www.stringtemplate.org") + (synopsis "Template engine to generate formatted text output") + (description "StringTemplate is a java template engine (with ports for C#, +Objective-C, JavaScript, Scala) for generating source code, web pages, emails, +or any other formatted text output. StringTemplate is particularly good at +code generators, multiple site skins, and internationalization / localization. +StringTemplate also powers ANTLR.") + (license license:bsd-3))) + +;; antlr3 is partially written using antlr3 grammar files. It also depends on +;; ST4 (stringtemplate4), which is also partially written using antlr3 grammar +;; files and uses antlr3 at runtime. The latest version requires a recent version +;; of antlr3 at runtime. +;; Fortunately, ST4 4.0.6 can be built with an older antlr3, and we use antlr3.3. +;; This version of ST4 is sufficient for the latest antlr3. +;; We use ST4 4.0.6 to build a boostrap antlr3 (latest version), and build +;; the latest ST4 with it. Then we build our final antlr3 that will be linked +;; against the latest ST4. +;; antlr3.3 still depends on antlr3 to generate some files, so we use an +;; even older version, antlr3.1, to generate them. Fortunately antlr3.1 uses +;; only grammar files with the antlr2 syntax. +;; So we build antlr3.1 -> antlr3.3 -> ST4.0.6 -> antlr3-bootstrap -> ST4 -> antlr3. + +(define-public java-stringtemplate + (package (inherit java-stringtemplate-3) + (name "java-stringtemplate") + (version "4.0.8") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/stringtemplate4/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1pri8hqa95rfdkjy55icl5q1m09zwp5k67ib14abas39s4v3w087")))) + (build-system ant-build-system) + (arguments + `(#:jar-name (string-append ,name "-" ,version ".jar") + #:tests? #f ; FIXME: tests fail for unknown reasons + #:test-dir "test" + #:modules ((guix build ant-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + (add-before 'check 'fix-test-target + (lambda _ + (substitute* "build.xml" + (("\\$\\{test.home\\}/java") "${test.home}/") + (("\\*Test.java") "Test*.java")) + #t)) + (add-before 'build 'generate-grammar + (lambda _ + (with-directory-excursion "src/org/stringtemplate/v4/compiler/" + (every (lambda (file) + (format #t "~a\n" file) + (zero? (system* "antlr3" file))) + '("STParser.g" "Group.g" "CodeGenerator.g")))))))) + (inputs + `(("antlr3" ,antlr3-bootstrap) + ("antlr2" ,antlr2) + ("java-stringtemplate" ,java-stringtemplate-3) + ("java-junit" ,java-junit))))) + +(define java-stringtemplate-4.0.6 + (package (inherit java-stringtemplate) + (name "java-stringtemplate") + (version "4.0.6") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/stringtemplate4/archive/ST-" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hjmh1ahdsh3w825i67mli9l4nncc4l6hdbf9ma91jvlj590sljp")))) + (inputs + `(("antlr3" ,antlr3-3.3) + ("antlr2" ,antlr2) + ("java-stringtemplate" ,java-stringtemplate-3))))) + +(define-public antlr3 + (package + (name "antlr3") + (version "3.5.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/antlr3/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "07zff5frmjd53rnqdx31h0pmswz1lv0p2lp28cspfszh25ysz6sj")))) + (build-system ant-build-system) + (arguments + `(#:jar-name (string-append ,name "-" ,version ".jar") + #:source-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3" + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'install 'bin-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((jar (string-append (assoc-ref outputs "out") "/share/java")) + (bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (with-output-to-file (string-append bin "/antlr3") + (lambda _ + (display + (string-append "#!" (which "sh") "\n" + "java -cp " jar "/" ,name "-" ,version ".jar:" + (string-concatenate + (find-files (assoc-ref inputs "stringtemplate") + ".*\\.jar")) + ":" + (string-concatenate + (find-files (assoc-ref inputs "stringtemplate4") + ".*\\.jar")) + ":" + (string-concatenate + (find-files (string-append + (assoc-ref inputs "antlr") + "/lib") + ".*\\.jar")) + " org.antlr.Tool $*")))) + (chmod (string-append bin "/antlr3") #o755)))) + (add-before 'build 'generate-grammar + (lambda _ + (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/") + (for-each (lambda (file) + (display file) + (newline) + (system* "antlr3" file)) + '("ANTLR.g" "ANTLRTreePrinter.g" "ActionAnalysis.g" + "AssignTokenTypesWalker.g" + "ActionTranslator.g" "TreeToNFAConverter.g" + "ANTLRv3.g" "ANTLRv3Tree.g" "LeftRecursiveRuleWalker.g" + "CodeGenTreeWalker.g" "DefineGrammarItemsWalker.g")) + (substitute* "ANTLRParser.java" + (("public Object getTree") "public GrammarAST getTree")) + (substitute* "ANTLRv3Parser.java" + (("public Object getTree") "public CommonTree getTree")) + (chdir "../../../../../java") + (system* "antlr" "-o" "org/antlr/tool" + "org/antlr/tool/serialize.g") + (substitute* "org/antlr/tool/LeftRecursiveRuleAnalyzer.java" + (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*; +import org.antlr.grammar.v3.ANTLRTreePrinter;")) + (substitute* "org/antlr/tool/ErrorManager.java" + (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") "")) + (chdir "../../../.."))) + (add-before 'build 'fix-build-xml + (lambda _ + (substitute* "build.xml" + (("<exec") "<copy todir=\"${classes.dir}\"> +<fileset dir=\"tool/src/main/resources\"> +<include name=\"**/*.stg\"/> +<include name=\"**/*.st\"/> +<include name=\"**/*.sti\"/> +<include name=\"**/STLexer.tokens\"/> +</fileset> +</copy><exec"))))))) + (native-inputs + `(("antlr" ,antlr2) + ("antlr3" ,antlr3-bootstrap))) + (inputs + `(("junit" ,java-junit) + ("stringtemplate" ,java-stringtemplate-3) + ("stringtemplate4" ,java-stringtemplate))) + (propagated-inputs + `(("stringtemplate" ,java-stringtemplate-3) + ("antlr" ,antlr2) + ("stringtemplate4" ,java-stringtemplate-4.0.6))) + (home-page "http://www.antlr3.org") + (synopsis "Framework for constructing recognizers, compilers, and translators") + (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS) +is a language tool that provides a framework for constructing recognizers, +compilers, and translators from grammatical descriptions containing Java, C#, +C++, or Python actions. ANTLR provides excellent support for tree construction, +tree walking, and translation.") + (license license:bsd-3))) + +(define antlr3-bootstrap + (package + (inherit antlr3) + (name "antlr3-bootstrap") + (native-inputs + `(("antlr" ,antlr2) + ("antlr3" ,antlr3-3.3))) + (inputs + `(("junit" ,java-junit))))) + +(define antlr3-3.3 + (package + (inherit antlr3) + (name "antlr3") + (version "3.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/website-antlr3/raw/" + "gh-pages/download/antlr-" + version ".tar.gz")) + (sha256 + (base32 + "0qgg5vgsm4l1d6dj9pfbaa25dpv2ry2gny8ajy4vvgvfklw97b3m")))) + (arguments + `(#:jar-name (string-append ,name "-" ,version ".jar") + #:source-dir (string-append "tool/src/main/java:runtime/Java/src/main/java:" + "tool/src/main/antlr2:tool/src/main/antlr3") + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'install 'bin-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((jar (string-append (assoc-ref outputs "out") "/share/java")) + (bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (with-output-to-file (string-append bin "/antlr3") + (lambda _ + (display + (string-append "#!" (which "sh") "\n" + "java -cp " jar "/antlr3-3.3.jar:" + (string-concatenate + (find-files (assoc-ref inputs "java-stringtemplate") + ".*\\.jar")) + ":" + (string-concatenate + (find-files (string-append + (assoc-ref inputs "antlr") + "/lib") + ".*\\.jar")) + " org.antlr.Tool $*")))) + (chmod (string-append bin "/antlr3") #o755)))) + (add-before 'build 'generate-grammar + (lambda _ + (let ((dir "tool/src/main/antlr2/org/antlr/grammar/v2/")) + (for-each (lambda (file) + (display file) + (newline) + (system* "antlr" "-o" dir (string-append dir file))) + '("antlr.g" "antlr.print.g" "assign.types.g" + "buildnfa.g" "codegen.g" "define.g"))) + (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/") + (for-each (lambda (file) + (display file) + (newline) + (system* "antlr3" file)) + '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g" + "ANTLRv3Tree.g")) + (chdir "../../../../../../../..") + (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java" + (("import org.antlr.grammar.v2.\\*;") + "import org.antlr.grammar.v2.*;\n +import org.antlr.grammar.v2.TreeToNFAConverter;\n +import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n +import org.antlr.grammar.v2.ANTLRTreePrinter;")))) + (add-before 'build 'fix-build-xml + (lambda _ + (substitute* "build.xml" + (("<exec") "<copy todir=\"${classes.dir}\"> +<fileset dir=\"tool/src/main/resources\"> +<include name=\"**/*.stg\"/> +<include name=\"**/*.st\"/> +<include name=\"**/*.sti\"/> +<include name=\"**/STLexer.tokens\"/> +</fileset> +</copy><exec"))))))) + (native-inputs + `(("antlr" ,antlr2) + ("antlr3" ,antlr3-3.1))) + (inputs + `(("junit" ,java-junit))) + (propagated-inputs + `(("java-stringtemplate" ,java-stringtemplate-3) + ("antlr" ,antlr2) + ("antlr3" ,antlr3-3.1))))) + +(define antlr3-3.1 + (package + (inherit antlr3) + (name "antlr3-3.1") + (version "3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/antlr/website-antlr3/raw/" + "gh-pages/download/antlr-" + version ".tar.gz")) + (sha256 + (base32 + "0sfimc9cpbgrihz4giyygc8afgpma2c93yqpwb951giriri6x66z")))) + (arguments + `(#:jar-name (string-append ,name "-" ,version ".jar") + #:source-dir "src:runtime/Java/src" + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'install 'bin-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((jar (string-append (assoc-ref outputs "out") "/share/java")) + (bin (string-append (assoc-ref outputs "out") "/bin"))) + (mkdir-p bin) + (with-output-to-file (string-append bin "/antlr3") + (lambda _ + (display + (string-append "#!" (which "sh") "\n" + "java -cp " jar "/antlr3-3.1-3.1.jar:" + (string-concatenate + (find-files (assoc-ref inputs "stringtemplate") + ".*\\.jar")) + ":" + (string-concatenate + (find-files (string-append + (assoc-ref inputs "antlr") + "/lib") + ".*\\.jar")) + " org.antlr.Tool $*")))) + (chmod (string-append bin "/antlr3") #o755)))) + (add-before 'build 'generate-grammar + (lambda _ + (let ((dir "src/org/antlr/tool/")) + (for-each (lambda (file) + (display file) + (newline) + (system* "antlr" "-o" dir (string-append dir file))) + '("antlr.g" "antlr.print.g" "assign.types.g" + "buildnfa.g" "define.g"))) + (format #t "codegen.g\n") + (system* "antlr" "-o" "src/org/antlr/codegen" + "src/org/antlr/codegen/codegen.g"))) + (add-before 'build 'fix-build-xml + (lambda _ + (substitute* "build.xml" + (("<exec") "<copy todir=\"${classes.dir}\"> +<fileset dir=\"src\"> +<include name=\"**/*.stg\"/> +<include name=\"**/*.st\"/> +<include name=\"**/*.sti\"/> +<include name=\"**/STLexer.tokens\"/> +</fileset> +</copy><exec"))))))) + (native-inputs + `(("antlr" ,antlr2))) + (inputs + `(("junit" ,java-junit))) + (propagated-inputs + `(("stringtemplate" ,java-stringtemplate-3))))) + +(define-public java-asm + (package + (name "java-asm") + (version "5.2") + (source (origin + (method url-fetch) + (uri (string-append "http://download.forge.ow2.org/asm/" + "asm-" version ".tar.gz")) + (sha256 + (base32 + "0kxvmv5275rnjl7jv0442k3wjnq03ngkb7sghs78avf45pzm4qgr")))) + (build-system ant-build-system) + (arguments + `(#:build-target "compile" + #:test-target "test" + ;; The tests require an old version of Janino, which no longer compiles + ;; with the JDK7. + #:tests? #f + ;; We don't need these extra ant tasks, but the build system asks us to + ;; provide a path anyway. + #:make-flags (list (string-append "-Dobjectweb.ant.tasks.path=foo")) + #:phases + (modify-phases %standard-phases + (add-before 'install 'build-jars + (lambda* (#:key make-flags #:allow-other-keys) + ;; We cannot use the "jar" target because it depends on a couple + ;; of unpackaged, complicated tools. + (mkdir "dist") + (zero? (system* "jar" + "-cf" (string-append "dist/asm-" ,version ".jar") + "-C" "output/build/tmp" ".")))) + (replace 'install + (install-jars "dist"))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://asm.ow2.org/") + (synopsis "Very small and fast Java bytecode manipulation framework") + (description "ASM is an all purpose Java bytecode manipulation and +analysis framework. It can be used to modify existing classes or dynamically +generate classes, directly in binary form. The provided common +transformations and analysis algorithms allow to easily assemble custom +complex transformations and code analysis tools.") + (license license:bsd-3))) diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm index fcc9cc8082..27fb46e59d 100644 --- a/gnu/packages/jemalloc.scm +++ b/gnu/packages/jemalloc.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,6 +18,8 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages jemalloc) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module ((guix licenses) #:select (bsd-2)) #:use-module (guix packages) #:use-module (guix download) @@ -37,6 +40,22 @@ (base32 "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-thp-test + ;; This test does not check if transparent huge pages are supported + ;; on the system before running the test. + (lambda _ + (substitute* "Makefile.in" + (("\\$\\(srcroot\\)test/unit/pages.c \\\\") "\\")) + #t))) + ,@(if (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("x64_64" "i686")) + ;; Transparent huge pages are only enabled by default on Intel processors + '() + '(#:configure-flags (list "--disable-thp"))))) (home-page "http://jemalloc.net/") (synopsis "General-purpose scalable concurrent malloc implementation") (description diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index a6664a54c2..722e3ed138 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. @@ -83,7 +83,7 @@ (define-public julia (package (name "julia") - (version "0.5.0") + (version "0.5.1") (source (origin (method url-fetch) (uri (string-append @@ -91,7 +91,7 @@ version "/julia-" version ".tar.gz")) (sha256 (base32 - "0bhickil88lalp9jdj1kmf4is70zinhx8ha9rng0g3z50r4a2qmv")))) + "1a9m7hzzrwk71gvwwrd1p45s64yid61i41n95gm5pzbry6p9fpl0")))) (build-system gnu-build-system) (arguments `(#:test-target "test" diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 1001813db3..07943e1e5e 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2016,2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; @@ -44,13 +44,18 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) #:use-module (gnu packages gstreamer) + #:use-module (gnu packages image) #:use-module (gnu packages linux) + #:use-module (gnu packages mp3) + #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages python) #:use-module (gnu packages qt) + #:use-module (gnu packages textutils) #:use-module (gnu packages version-control) + #:use-module (gnu packages video) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -59,7 +64,7 @@ (define-public extra-cmake-modules (package (name "extra-cmake-modules") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -68,7 +73,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "0yi60qd08x5093wb8dv9cx370iaabn44hzcang92g9ssfmz0zd2h")))) + "1r3dyvrv77xrpjlzpa6yazwkknirvx1ccvdyj9x0mlk4vfi05nh5")))) (build-system cmake-build-system) (native-inputs `(("qtbase" ,qtbase))) ; For tests (needs qmake) @@ -103,7 +108,7 @@ common build settings used in software produced by the KDE community.") (define-public phonon (package (name "phonon") - (version "4.9.0") + (version "4.9.1") (source (origin (method url-fetch) (uri (string-append @@ -112,7 +117,7 @@ common build settings used in software produced by the KDE community.") name "-" version ".tar.xz")) (sha256 (base32 - "1q5hvsk4sfcb91625wcmldy7kgjmfpmpmkgzi6mxkqdd307v8x5v")))) + "177647r2jqfm32hqcz2nqfqv6v48hn5ab2vc31svba2wz23fkgk7")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -240,7 +245,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.") (define-public attica (package (name "attica") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -249,7 +254,7 @@ Phonon-GStreamer is a backend based on the GStreamer multimedia library.") name "-" version ".tar.xz")) (sha256 (base32 - "14v6vi8awk1m58l9svpjd54ckd6milzavgfbkdspsz0km1cpqlks")))) + "0l8gmsmpwzg6nzwwlnsdl6r6qkhnhirpmrkag9xpd2sbmy734x53")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -272,7 +277,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/") (define-public bluez-qt (package (name "bluez-qt") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -281,7 +286,7 @@ http://freedesktop.org/wiki/Specifications/open-collaboration-services/") name "-" version ".tar.xz")) (sha256 (base32 - "1rfzwrvvkc5f4l943f4r235gdniqc7njyw4fx36v00daj2r4aqi9")))) + "040gs2a1fx996gqdx2pwxh00szb1vb85055z946nqvqfn01921df")))) (build-system cmake-build-system) (native-inputs `(("dbus" ,dbus) @@ -306,7 +311,7 @@ Bluetooth stack. It is used by the KDE Bluetooth stack, BlueDevil.") (define-public breeze-icons (package (name "breeze-icons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -315,7 +320,7 @@ Bluetooth stack. It is used by the KDE Bluetooth stack, BlueDevil.") name "-" version ".tar.xz")) (sha256 (base32 - "06zwg2g0157ac6xsgxs5f8s1sk8rh2j3y057iqmfg2ng2sh9byh2")))) + "1znzlggb6yrkw5rr2n75g7cfv9x5p9d55hss09c4i79lxrh1bk4a")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -323,11 +328,6 @@ Bluetooth stack. It is used by the KDE Bluetooth stack, BlueDevil.") ("libxml2" ,libxml2))) (inputs `(("qtbase" ,qtbase))) - ;; FIXME: Dupes test fails. Issue is fixed upstream - ;; Remove when updating to 5.28. - ;; https://github.com/KDE/breeze-icons/commit/22b383359e3a0e02d4828e6fa8ed8a3d213440b1 - (arguments - `(#:tests? #f)) (home-page "https://community.kde.org/Frameworks") (synopsis "Default KDE Plasma 5 icon theme") (description "Breeze provides a freedesktop.org compatible icon theme. @@ -340,7 +340,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.") (define-public kapidox (package (name "kapidox") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -349,7 +349,7 @@ It is the default icon theme for the KDE Plasma 5 desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "1whkl9rzhjnnmpj532d23mlrwhp5wcfxfvq4z4bxyr64g9plbzyq")))) + "190d5z6i71jrvfna6vnlim2p9rgc33s1fxl0zarn276683i1rwvg")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; has no test target @@ -382,7 +382,7 @@ documentation.") (define-public karchive (package (name "karchive") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -391,7 +391,7 @@ documentation.") name "-" version ".tar.xz")) (sha256 (base32 - "1s068z0ih6qk3m4lm10wm28y0nq5qwn4gpnx9vckar51xbrl4bb7")))) + "0g8jskdar2znviwh9bs3kia093wgfnhl04x4jcg2rvh78ylkpvxw")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -416,7 +416,7 @@ GZip format, via a subclass of QIODevice.") (define-public kcodecs (package (name "kcodecs") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -425,7 +425,7 @@ GZip format, via a subclass of QIODevice.") name "-" version ".tar.xz")) (sha256 (base32 - "0r01raiva4iddiz5qqshmbmidgkf4q6illanz6zwmc4n66c6s3q3")))) + "0k51s4qlf0kq6i8f3wrsz5lrkzjqb1j26hrmlmg57vn91r58iash")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -451,7 +451,7 @@ Internet).") (define-public kconfig (package (name "kconfig") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -460,7 +460,7 @@ Internet).") name "-" version ".tar.xz")) (sha256 (base32 - "0kdsaqv880wihxv6il8wailmymh0rh0jrbhg8iz2ljf3ir7g56zy")))) + "0blbx6b3fk6p8cv2iywk2avn9w1411bb0g5wwv456a9ggi01988x")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -518,7 +518,7 @@ propagate their changes to their respective configuration files.") (define-public kcoreaddons (package (name "kcoreaddons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -527,7 +527,7 @@ propagate their changes to their respective configuration files.") name "-" version ".tar.xz")) (sha256 (base32 - "10x2sgd1acsg1kmb741zk8sbss1j9nncfr1ac2pq0fc236ivkiyb")))) + "1ybr4bv8rhp4cxpf8mfsc4dk0klzrfh1z8g2cw6zasmksxmmwi90")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -541,7 +541,6 @@ propagate their changes to their respective configuration files.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; enable debug output (setenv "HOME" (getcwd)) (setenv "TMPDIR" (getcwd)) #t))))) @@ -557,7 +556,7 @@ many more.") (define-public kdbusaddons (package (name "kdbusaddons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -566,7 +565,7 @@ many more.") name "-" version ".tar.xz")) (sha256 (base32 - "07mzb1xr8wyiid25p8kg6mjp6vq8ngvv1ikhq75zvd2cbax530c8")) + "1skblxfnjhbyiwavsfhksc2ybc2sikw3xr0js6mlfbpmvqzghn6h")) (patches (search-patches "kdbusaddons-kinit-file-name.patch")))) (build-system cmake-build-system) (native-inputs @@ -602,7 +601,7 @@ as well as an API to create KDED modules.") (define-public kdnssd (package (name "kdnssd") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -611,7 +610,7 @@ as well as an API to create KDED modules.") name "-" version ".tar.xz")) (sha256 (base32 - "1gkqfcz8glfa6krbayaay4kyq3zazcyr21zjg78la76vfnranh0r")))) + "082mdim9wykdap4fmjfayk443rbarsk1p8cn3mspx2nw047yja80")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -629,7 +628,7 @@ infrastructure.") (define-public kguiaddons (package (name "kguiaddons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -638,7 +637,7 @@ infrastructure.") name "-" version ".tar.xz")) (sha256 (base32 - "1f3k6g8cqgq49ka9wsfflp0vnqgk81nlp012lb5v875yil6f9m3f")))) + "1nmlwvy2jdmh0m6bmahvk68vl2rs9s28c10dkncpi6gvhsdkigqx")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -662,7 +661,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.") (define-public ki18n (package (name "ki18n") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -671,7 +670,7 @@ interfaces in the areas of colors, fonts, text, images, keyboard input.") name "-" version ".tar.xz")) (sha256 (base32 - "0ymg8mnpvas101war3pgm3wv8ssf1wxa6mxg9ym1xx24mx7xzhzw")))) + "0glvmmy01mp6hnix79aichgwjq842kgf5q5zynkg6mch85y4ary7")))) (build-system cmake-build-system) (propagated-inputs `(("gettext" ,gettext-minimal) @@ -705,7 +704,7 @@ translation scripting.") (define-public kidletime (package (name "kidletime") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -714,7 +713,7 @@ translation scripting.") name "-" version ".tar.xz")) (sha256 (base32 - "0cwq8jvsimxriiazivls8yix9jyglk2giqwv34a1ic1cnackhwq7")))) + "0z8x6iz52y2m8llsp2q4qayxswkzay7ksimzy47crfag442bw24g")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -732,7 +731,7 @@ or user activity.") (define-public kitemmodels (package (name "kitemmodels") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -741,7 +740,7 @@ or user activity.") name "-" version ".tar.xz")) (sha256 (base32 - "0zi7wsqcmjd7fms8r2vqvwwvzw75p275qyn6whpgblb09l0pn78z")))) + "1liq1ppa7xb1dcncv25c2a0xy3l9bvb2a56cff90c0b0vwr239q5")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -793,7 +792,7 @@ model to observers (define-public kitemviews (package (name "kitemviews") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -802,7 +801,7 @@ model to observers name "-" version ".tar.xz")) (sha256 (base32 - "0wrlwawgnz1yjav4hfirc3lcki0hqy0cgr8bwhr9nhm27ndgv28p")))) + "054accbis471zj1gbfxbc99062r2hvpb04i6w3r8fa4ml8s6brqk")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -834,7 +833,7 @@ to flat and hierarchical lists.") (define-public kplotting (package (name "kplotting") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -843,7 +842,7 @@ to flat and hierarchical lists.") name "-" version ".tar.xz")) (sha256 (base32 - "1vmwxj03qhrfnz3jg30ka28afpqg0hlgm46dbzyg86kg8hc2hgb2")))) + "1ffy9b08128ym024wlfgnzk52vpy0mbaa91dhndpr40qcz0i67sh")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -872,7 +871,7 @@ pixel units.") (define-public ksyntaxhighlighting (package (name "ksyntaxhighlighting") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -881,11 +880,12 @@ pixel units.") "syntax-highlighting-" version ".tar.xz")) (sha256 (base32 - "0gf1ldlk4gav6bg5b1231hphaal4simyngirvr1yizcb1rrlygdy")))) + "0ryfwblvzj9rd5jj7l8scmbb49ygzk77ng05hrznsipczin2cjw8")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) ("perl" ,perl) + ("qttools" ,qttools) ;; Optional, for compile-time validation of syntax definition files: ("qtxmlpatterns" ,qtxmlpatterns))) (inputs @@ -906,10 +906,6 @@ pixel units.") (substitute* '("autotests/input/highlight.pl" "autotests/folding/highlight.pl.fold") (((which "perl")) "/usr/bin/perl")) - #t)) - (add-before 'check 'check-setup - (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; enable debug info #t))))) (home-page "https://community.kde.org/Frameworks") (synopsis "Syntax highlighting engine for Kate syntax definitions") @@ -923,7 +919,7 @@ integration with a custom editor as well as a ready-to-use (define-public kwayland (package (name "kwayland") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -932,7 +928,7 @@ integration with a custom editor as well as a ready-to-use name "-" version ".tar.xz")) (sha256 (base32 - "0xm4agsv8hyx8aaiv4zpa121s08ayhbps3pbfbds2ckk57k6ba8k")))) + "1zxb9ram47vbiik8h0czyvacrdiijhnslkpcm61l4r1rb0ybb0ib")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -962,7 +958,7 @@ represented by a QPoint or a QSize.") (define-public kwidgetsaddons (package (name "kwidgetsaddons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -971,7 +967,7 @@ represented by a QPoint or a QSize.") name "-" version ".tar.xz")) (sha256 (base32 - "1p22s1cbwpwbm03qxs0wqb1i7w1s19b119diwkmb8xl90cqfdwnn")))) + "0hw87iig75mfgl5p3ph6zkwap31h357bm7rlyv5d9nnp10bq0hfg")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -987,7 +983,6 @@ represented by a QPoint or a QSize.") (lambda _ ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; enable debug info (setenv "DBUS_FATAL_WARNINGS" "0") #t)) (add-before 'check 'start-xorg-server @@ -1011,7 +1006,7 @@ configuration pages, message boxes, and password requests.") (define-public kwindowsystem (package (name "kwindowsystem") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1020,7 +1015,7 @@ configuration pages, message boxes, and password requests.") name "-" version ".tar.xz")) (sha256 (base32 - "0lzafiwj58gg5vccnvwrhiwjq67y8cn3gllirgw13vz3f69sbr3i")))) + "1sp2x7afhw19vmhdp2qyrmljz8h0875xjk95n8c5gzypk7sr0l83")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1051,7 +1046,7 @@ lower level classes for interaction with the X Windowing System.") (define-public modemmanager-qt (package (name "modemmanager-qt") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1060,7 +1055,7 @@ lower level classes for interaction with the X Windowing System.") name "-" version ".tar.xz")) (sha256 (base32 - "1yfqqp596srvsi0yqrkpm5gzlwjf4szk6hy0wszr12gjjzqprilq")))) + "1cf5nsc8h7djvr19fm5dphzplh1wm3asvn0a7r71spg0i7lzi89h")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1089,7 +1084,7 @@ messages.") (define-public networkmanager-qt (package (name "networkmanager-qt") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1098,7 +1093,7 @@ messages.") name "-" version ".tar.xz")) (sha256 (base32 - "1iq8xrw55k2k9af57l4lfrw72gjxgk7pp7k3m7amjfp0hdqw8602")))) + "05s0irvkg0g57acriablyha2wb9c7w3xhq223vdddjqpcdx0pnkl")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1128,7 +1123,7 @@ which are used in DBus communication.") (define-public oxygen-icons (package (name "oxygen-icons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1137,7 +1132,7 @@ which are used in DBus communication.") name "5" "-" version ".tar.xz")) (sha256 (base32 - "05bypc4k86lsjp7d4lpbpsnms7k1gnjyahdbks420585ca0v4qkp")))) + "0cmxxssir5zbp5nlxq81h2xfd6wrxbbkydyw93dby7r56isl7ga5")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1153,7 +1148,7 @@ which are used in DBus communication.") (define-public solid (package (name "solid") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1162,10 +1157,18 @@ which are used in DBus communication.") name "-" version ".tar.xz")) (sha256 (base32 - "0g6frc7hckbkvzgq40qrymllgp56a3v39l5d2ajqipwb4kabhdpy")))) + "02kz21p3p1s1rg7gf34fr6ynhji6x97yvsfdpvbfxbhijabbh4ib")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (setenv "DBUS_FATAL_WARNINGS" "0") + (zero? (system* "dbus-launch" "ctest" "."))))))) (native-inputs `(("bison" ,bison) + ("dbus" ,dbus) ("extra-cmake-modules" ,extra-cmake-modules) ("flex" ,flex) ("qttools" ,qttools))) @@ -1182,7 +1185,7 @@ system.") (define-public sonnet (package (name "sonnet") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1191,7 +1194,7 @@ system.") name "-" version ".tar.xz")) (sha256 (base32 - "1vzn3kvi126jnkq2s5110yii8946kaxp452735fx0l0jqjn92dy8")))) + "06gxrh8rb75ydkqxk5dhlmwndnczp264jx588ryfwlf3vlnk99vs")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1208,7 +1211,7 @@ ASpell and HUNSPELL.") (define-public threadweaver (package (name "threadweaver") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1217,7 +1220,7 @@ ASpell and HUNSPELL.") name "-" version ".tar.xz")) (sha256 (base32 - "10hy4pvw84l2z8778gsfv5i8pqrfjidvlgd5rc8xffx65s3f28b5")))) + "1gylpl283qf1jcfyib4q5xwnpdq13hnd2cp2i7xjazdw2jp40zhr")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1238,7 +1241,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way." (define-public kauth (package (name "kauth") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1247,7 +1250,7 @@ uses a job-based interface to queue tasks and execute them in an efficient way." name "-" version ".tar.xz")) (sha256 (base32 - "09m7dipkykw75dbka6mhsvrikbniwshl1l0qxcny3ywc0fkzgf40")))) + "06cw1bsp7inh5wglajm8aahy17p35ixgnijb7d74gjqzbj4cv93d")))) (build-system cmake-build-system) (native-inputs `(("dbus" ,dbus) @@ -1285,7 +1288,7 @@ utilities.") (define-public kcompletion (package (name "kcompletion") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1294,7 +1297,7 @@ utilities.") name "-" version ".tar.xz")) (sha256 (base32 - "1yrlhf6n7xlkid3xbpirf8n6kybc3sqp5fnb01kr1rcl89qs273f")))) + "18hvdk5b1nkh6b3vx0jajri57rl266b0qjsiwirh5wmjc81xbpcw")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1322,7 +1325,7 @@ integrated it into your application's other widgets.") (define-public kcrash (package (name "kcrash") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1331,7 +1334,7 @@ integrated it into your application's other widgets.") name "-" version ".tar.xz")) (sha256 (base32 - "0gsly5wvyh0d6yfk5yyv1pgaazwlwvahz245y9sliwzrbxhgj1yv")))) + "1cshay7dhbqgh62nq85vd9sm20gq9s9f70mdnzjjh1q7cajybkp3")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1360,7 +1363,7 @@ application crashes.") (define-public kdoctools (package (name "kdoctools") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1369,7 +1372,7 @@ application crashes.") name "-" version ".tar.xz")) (sha256 (base32 - "1mndmxy7vgdkii8axzkzclqqimg0ksn2dmwiqsljcjcik0zfx47c")))) + "145jjhsd0whmcj91zbjz2b1jyj4wasw60hbwyd4xvqds8cp0l02h")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1408,7 +1411,7 @@ from DocBook files.") (define-public kfilemetadata (package (name "kfilemetadata") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1417,8 +1420,23 @@ from DocBook files.") name "-" version ".tar.xz")) (sha256 (base32 - "0sxifxzyqq0haxfira8ldq9gwali7p5vbbh8jslj8wlxm0dczyw6")))) + "1rvlg6by8daiq5ff3qlxcw9k2iq4qicsj0c8a00xfy3w4h9ip9h5")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Need to check after install and to set QT_PLUGIN_PATH for the test + ;; suite to finds the plugins. + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'check 'check-setup + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "QT_PLUGIN_PATH" + (string-append out "/lib/plugins:" + (getenv "QT_PLUGIN_PATH")))) + #t))))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) ("python-2" ,python-2))) @@ -1426,19 +1444,26 @@ from DocBook files.") `(("attr" ,attr) ("karchive" ,karchive) ("ki18n" ,ki18n) - ("qtbase" ,qtbase))) + ("qtbase" ,qtbase) + ;; Required run-time packages + ("catdoc" ,catdoc) + ;; Optional run-time packages + ("exiv2" ,exiv2) + ("ffmpeg" ,ffmpeg) + ("poppler" ,poppler) + ("taglib" ,taglib))) (home-page "https://community.kde.org/Frameworks") (synopsis "Extract metadata from different fileformats") (description "KFileMetaData provides a simple library for extracting the text and metadata from a number of different files. This library is typically -used by file indexers to retreive the metadata. This library can also be used +used by file indexers to retrieve the metadata. This library can also be used by applications to write metadata.") (license (list license:lgpl2.0 license:lgpl2.1 license:lgpl3)))) (define-public kimageformats (package (name "kimageformats") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1447,7 +1472,7 @@ by applications to write metadata.") name "-" version ".tar.xz")) (sha256 (base32 - "1h17jm55r9ijmng5mb1w9nqk2hw6h965j9c2nrd8wl9dzy616kra")))) + "0q9ng4clqk2dqw43nk1pmq1d61rahc3qr4dmg4y3kjvz3ahnnijw")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1475,7 +1500,7 @@ formats.") (define-public kjobwidgets (package (name "kjobwidgets") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1484,7 +1509,7 @@ formats.") name "-" version ".tar.xz")) (sha256 (base32 - "0xh62bjd6qqbmx1jbv9qac1ng0h056mwrs8rkdqd8k10ghmsfx6a")))) + "0lrx761vf947mb2q1l2jgi0wgwj8cz2nn1xg0j38bh99sgddmzpf")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1503,7 +1528,7 @@ asynchronous jobs.") (define-public knotifications (package (name "knotifications") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1512,7 +1537,7 @@ asynchronous jobs.") name "-" version ".tar.xz")) (sha256 (base32 - "1a55c0abs9yg7qaajgidj8bmfbwkysf24300532lnia71n1ms25s")))) + "12z5hza0n5zr6mv3gkwhzb8zkrmk6dvgq8hrzwm8rzkgphjr6pi9")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -1546,7 +1571,7 @@ covers feedback and persistent events.") (define-public kpackage (package (name "kpackage") - (version "5.28.1") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1555,7 +1580,7 @@ covers feedback and persistent events.") name "-" version ".tar.xz")) (sha256 (base32 - "0ym5fhhigp7argk7c1zyn2fvfjykgxh3miipidf142c8y3d98vbp")))) + "0wdymhcrjggxb7andz36cfk9f240vvbq5yahlxyhfp9z69lriw5q")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1571,7 +1596,6 @@ covers feedback and persistent events.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; enable debug output (setenv "HOME" (getcwd)) #t))))) (home-page "https://community.kde.org/Frameworks") @@ -1584,7 +1608,7 @@ were traditional plugins.") (define-public kpty (package (name "kpty") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1593,7 +1617,7 @@ were traditional plugins.") name "-" version ".tar.xz")) (sha256 (base32 - "1q22wzx5xpmbj56xg4miiscb1xqqk2lfkljfdi87zl05vwmnc7hn")))) + "00k5hhz7nf3nf47xb003ni1chi03imyrfajap6ay4zp90l8fr950")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1607,7 +1631,6 @@ were traditional plugins.") (modify-phases %standard-phases (add-after 'unpack 'patch-tests (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") (substitute* "autotests/kptyprocesstest.cpp" (("/bin/bash") (which "bash"))) #t))))) @@ -1621,7 +1644,7 @@ and communicating with them using a pty.") (define-public kunitconversion (package (name "kunitconversion") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1630,8 +1653,18 @@ and communicating with them using a pty.") name "-" version ".tar.xz")) (sha256 (base32 - "0n6ndy1yarilnk2l09h92qk32v02hknafif1i9mmwcibldvc963q")))) + "0v4x0flbfavrzfiqh71mdkqgp1fzk4f52msvq6w60i2s3sz7hcsm")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-a-failing-test-case + (lambda _ + ;; TODO: Re-enable this test-case. It was committed with the + ;; message: "tsan says it's clean, apart from issues in Qt + ;; (reported upstream)" + (substitute* "autotests/convertertest.cpp" + (("const int numThreads = 2") "const int numThreads = 0"))))))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) (inputs @@ -1654,7 +1687,7 @@ gallons).") (define-public baloo (package (name "baloo") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1663,7 +1696,7 @@ gallons).") name "-" version ".tar.xz")) (sha256 (base32 - "071in785y1qplm59fmsmifzbmczvlvkf5gxdb6d0iw93pb36r7h5")))) + "0z53lnniq9xdk09d73z0p1xs1qmaf71m4znm4hmq956yg4yqa1ya")))) (build-system cmake-build-system) (propagated-inputs `(("kcoreaddons" ,kcoreaddons) @@ -1712,7 +1745,7 @@ maintaining an index of the contents of your files.") (define-public kactivities (package (name "kactivities") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1721,7 +1754,7 @@ maintaining an index of the contents of your files.") name "-" version ".tar.xz")) (sha256 (base32 - "162ilqcfp8b3lb3gpzbw94ppsdqzn6i6ymiwh12xy5nrxixdpagb")))) + "0dg6bkdxf4sicij4szmi55npn6chp0sfmw27qi1s582ymqzjgf5m")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1747,7 +1780,7 @@ maintaining an index of the contents of your files.") (home-page "https://community.kde.org/Frameworks") (synopsis "Core components for the KDE Activity concept") (description "KActivities provides the infrastructure needed to manage a -user's activites, allowing them to switch between tasks, and for applications +user's activities, allowing them to switch between tasks, and for applications to update their state to match the user's current activity. This includes a daemon, a library for interacting with that daemon, and plugins for integration with other frameworks.") @@ -1759,7 +1792,7 @@ with other frameworks.") (define-public kactivities-stats (package (name "kactivities-stats") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1768,7 +1801,7 @@ with other frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "0pjgjl5bwmq0n23nwcqjp3b412fsibnvwsr3s3l67k9scmdpbm4v")))) + "1dfaq4hsd9wm1ka45dkxbl9wwr7s5ixbnnghqwxhl7a60imc680r")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -1789,7 +1822,7 @@ by which applications, and what documents have been linked to which activity.") (define-public kbookmarks (package (name "kbookmarks") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1798,7 +1831,7 @@ by which applications, and what documents have been linked to which activity.") name "-" version ".tar.xz")) (sha256 (base32 - "1lfvps0xzpzn42n7rpsdcmsiryclykz6h1hk8sp6nsbhqwzd0r65")))) + "0ggn4rz8ch82ph64q6yik9fb1mp6kmsd7n33p769zl1lw7fldn0v")))) (build-system cmake-build-system) (propagated-inputs `(("kwidgetsaddons" ,kwidgetsaddons))) @@ -1832,7 +1865,7 @@ using the XBEL format.") (define-public kcmutils (package (name "kcmutils") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1841,7 +1874,7 @@ using the XBEL format.") name "-" version ".tar.xz")) (sha256 (base32 - "0wj3f5ykzb7q9536y9wk8mnfcb6zay2mmc25dg67mdznzwdy36aa")))) + "1b52lwn7qjqrn06va7j1jswlzs6bx0drs90myf3607k52ffbf4hy")))) (build-system cmake-build-system) (propagated-inputs `(("kconfigwidgets" ,kconfigwidgets) @@ -1871,7 +1904,7 @@ KCModules can be created with the KConfigWidgets framework.") (define-public kconfigwidgets (package (name "kconfigwidgets") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1880,7 +1913,7 @@ KCModules can be created with the KConfigWidgets framework.") name "-" version ".tar.xz")) (sha256 (base32 - "0cy53jaq15n8hw2m67l0y6x722ywg0ijfz5ak5vq3fjjhc9fmq8d")))) + "0h4kappsffrp2qgg8wza1ybgah2dlcgpz591llfvaz31ldsml9hk")))) (build-system cmake-build-system) (propagated-inputs `(("kauth" ,kauth) @@ -1913,7 +1946,7 @@ their settings.") (define-public kdeclarative (package (name "kdeclarative") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1922,7 +1955,7 @@ their settings.") name "-" version ".tar.xz")) (sha256 (base32 - "1g7bf3smdiwgfhdzwskp3l7l4bn838q1cdy4hp9mzqdssz956wmn")))) + "1mfj32p631zvwz9ldk8536ifb4n825zxbhx69bfllhw2vn1am7z2")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -1973,7 +2006,7 @@ that offer bindings to some of the Frameworks.") (define-public kded (package (name "kded") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -1982,7 +2015,7 @@ that offer bindings to some of the Frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "115ywk3vdyhwzna59bpiqfffcc128vafl823yh5fzkwbp8w7qdn5")))) + "0qy4w7bcg60gyf6y6c11kqcshnld55a8w4fzglpwgqfbliyi5yzq")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2006,7 +2039,7 @@ started on demand.") (define-public kdesignerplugin (package (name "kdesignerplugin") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2015,7 +2048,7 @@ started on demand.") name "-" version ".tar.xz")) (sha256 (base32 - "12v9pbfniljp23bllxxq6hfv6qnp2q8yjsix6fy6hwf8yrsq42m3")))) + "1jnarg7wrhdjfq73q4wplazxsz927mpf0l6m0i4akq4dlp1b7aah")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2044,7 +2077,7 @@ ini-style description files.") (define-public kdesu (package (name "kdesu") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2053,7 +2086,7 @@ ini-style description files.") name "-" version ".tar.xz")) (sha256 (base32 - "1f6awbnqs14si13n1ryibb0z3mj90bg0vk320hgabd2zxma00vwp")))) + "04mx0d6kf8slgkkgbna3cyv4c491jvlwcwqxc7zikz0i03l341id")))) (build-system cmake-build-system) (propagated-inputs `(("kpty" ,kpty))) @@ -2075,7 +2108,7 @@ with su and ssh respectively.") (define-public kemoticons (package (name "kemoticons") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2084,7 +2117,7 @@ with su and ssh respectively.") name "-" version ".tar.xz")) (sha256 (base32 - "10qxm9q7bsbbg419f8d0703mikd8w99a8fh501fpm3sgh6k7pbyv")))) + "02h12qy0w6mcgkczi3md1znnvp7r47l8h416nd080ljpsydalgx8")))) (build-system cmake-build-system) (propagated-inputs `(("kservice" ,kservice))) @@ -2102,7 +2135,6 @@ with su and ssh respectively.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2117,7 +2149,7 @@ emoticons coming from different providers.") (define-public kglobalaccel (package (name "kglobalaccel") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2126,7 +2158,7 @@ emoticons coming from different providers.") name "-" version ".tar.xz")) (sha256 (base32 - "0a60f2bs7dhx0rsrgva2p97dcala6jrjfg4z2nv0m4bv82i4kchc")))) + "1i32dq70qxjbfvlw0wqxvqvl6ysydmpg3zbiflff4z1qrmvmpw6a")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2160,7 +2192,7 @@ window does not need focus for them to be activated.") (define-public kiconthemes (package (name "kiconthemes") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2169,7 +2201,7 @@ window does not need focus for them to be activated.") name "-" version ".tar.xz")) (sha256 (base32 - "1i5cpsqfn1vcch8izbrgig2km580gdxf02qmib4ynbwzcfvrnbqc")))) + "0hbl82r6qc8dh9v9n9xjkx966czkq5yjxx2rx7sbilj2p9v3saii")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -2196,7 +2228,6 @@ window does not need focus for them to be activated.") (string-append (assoc-ref inputs "shared-mime-info") "/share")) (setenv "HOME" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2209,7 +2240,7 @@ in applications using the KDE Frameworks.") (define-public kinit (package (name "kinit") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2218,7 +2249,7 @@ in applications using the KDE Frameworks.") name "-" version ".tar.xz")) (sha256 (base32 - "0hwa4anljh5v53gswziacwr6ryvhp136k6y85d10074lrckdr912")))) + "08429kjihpaip73wszr3rsii8sdlwgm3kxx7g0hpjhkj9d2jq3m1")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2253,17 +2284,16 @@ makes starting KDE applications faster and reduces memory consumption.") (define-public kio (package (name "kio") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://kde/stable/frameworks/" (version-major+minor version) "/" name "-" version ".tar.xz")) - (patches (search-patches "kio-CVE-2017-6410.patch")) (sha256 (base32 - "1hqc88c2idi9fkb7jy82csb0i740lghv0p2fg1gaglcarjdz7nia")))) + "1i23ld5b9gafh2x3lv79jbggbd92xyhk7rg3n765w3bsfpg2ijva")))) (build-system cmake-build-system) (propagated-inputs `(("kbookmarks" ,kbookmarks) @@ -2306,7 +2336,6 @@ makes starting KDE applications faster and reduces memory consumption.") (lambda _ (setenv "HOME" (getcwd)) (setenv "XDG_RUNTIME_DIR" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2328,7 +2357,7 @@ KIO enabled infrastructure.") (define-public knewstuff (package (name "knewstuff") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2337,7 +2366,7 @@ KIO enabled infrastructure.") name "-" version ".tar.xz")) (sha256 (base32 - "0p5a6zprqfnhiim0l0qigjy7kky0m4w2nykhllwvr6lda1rg8qs3")))) + "19d53ylwr92dzl9agk4j765zvb897rcm55z7pr6841aj58jk9b82")))) (build-system cmake-build-system) (propagated-inputs `(("attica" ,attica) @@ -2362,6 +2391,7 @@ KIO enabled infrastructure.") ("ktextwidgets" ,ktextwidgets) ("kwidgetsaddons" ,kwidgetsaddons) ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) ("solid" ,solid) ("sonnet" ,sonnet))) (arguments @@ -2371,7 +2401,6 @@ KIO enabled infrastructure.") (add-before 'check 'check-setup (lambda _ ; XDG_DATA_DIRS isn't set (setenv "HOME" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2385,7 +2414,7 @@ specification.") (define-public knotifyconfig (package (name "knotifyconfig") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2394,7 +2423,7 @@ specification.") name "-" version ".tar.xz")) (sha256 (base32 - "0riia9lvp33lqh8ld5r1r0adnfnxikbvmdi4k7kfc4pzra93h10f")))) + "0lwl22vq770jyp45j32s0ss8yiqdwbink6cdhkbapg3pzbiwklyk")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2427,7 +2456,7 @@ notifications which can be embedded in your application.") (define-public kparts (package (name "kparts") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2436,7 +2465,7 @@ notifications which can be embedded in your application.") name "-" version ".tar.xz")) (sha256 (base32 - "1jghgddgz0ghq6n51l1i6jc1s10g0ckda5nlwh4myziv229g9pik")))) + "1a5n0f7ljdc2bm6vggzwbvpblyxjqn9m9pam70iab964pqqalgp7")))) (build-system cmake-build-system) (propagated-inputs `(("kio" ,kio) @@ -2478,7 +2507,7 @@ widgets with a user-interface defined in terms of actions.") (define-public kpeople (package (name "kpeople") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2487,7 +2516,7 @@ widgets with a user-interface defined in terms of actions.") name "-" version ".tar.xz")) (sha256 (base32 - "0dqz6varz3nrnp8jfysdsp2r2mm46hn3vfcqcyyqk3nmv6sd9mpp")))) + "0krm74dl80s48nhiygga4dvkvqqimxdx4nczbk4qvj7j1g9p2rsh")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2506,7 +2535,6 @@ widgets with a user-interface defined in terms of actions.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2522,7 +2550,7 @@ to easily extend the contacts collection.") (define-public krunner (package (name "krunner") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2531,7 +2559,7 @@ to easily extend the contacts collection.") name "-" version ".tar.xz")) (sha256 (base32 - "1mmbrpgw090z41l2vg350hmm3ya2qkfkjmq7v5d90jpb7z7y6pr9")))) + "0n527p708k719zgmvvbmp20xmg72f85cll05q05p4h317g7wz6i5")))) (build-system cmake-build-system) (propagated-inputs `(("plasma-framework" ,plasma-framework))) @@ -2563,7 +2591,6 @@ to easily extend the contacts collection.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2578,7 +2605,7 @@ typed.") (define-public kservice (package (name "kservice") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2587,7 +2614,7 @@ typed.") name "-" version ".tar.xz")) (sha256 (base32 - "0mlc3vw0vq1rwcg803dsybzlwxj1n6hg13z9sg0h28wsbyss3l4l")))) + "0sikwn49s2iq1nj518q55m2p0hvdvwm98cpf0dkjb1z1v6fgjc37")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -2609,7 +2636,6 @@ typed.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) @@ -2624,7 +2650,7 @@ types or handled by application specific code.") (define-public ktexteditor (package (name "ktexteditor") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2633,7 +2659,7 @@ types or handled by application specific code.") name "-" version ".tar.xz")) (sha256 (base32 - "1sl152xasbhgpph4f6apkc54b26smgxbd3cxbvch2hfi5cxgb8fq")))) + "182a0swfgdqr0faq3ksk6hlfvdi1afd0hpys5vayjjf263m19xxw")))) (build-system cmake-build-system) (propagated-inputs `(("kparts" ,kparts))) @@ -2655,6 +2681,7 @@ types or handled by application specific code.") ("ki18n" ,ki18n) ("kjobwidgets" ,kjobwidgets) ("kservice" ,kservice) + ("ksyntaxhighlighting" ,ksyntaxhighlighting) ("ktextwidgets" ,ktextwidgets) ("kwidgetsaddons" ,kwidgetsaddons) ("kxmlgui" ,kxmlgui) @@ -2679,7 +2706,6 @@ types or handled by application specific code.") (setenv "HOME" (getcwd)) ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") #t))))) (home-page "https://community.kde.org/Frameworks") (synopsis "Full text editor component") @@ -2692,7 +2718,7 @@ library.") (define-public ktextwidgets (package (name "ktextwidgets") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2701,7 +2727,7 @@ library.") name "-" version ".tar.xz")) (sha256 (base32 - "0gwjb0isjfrqd15lvln6bwql1lpk2r1vp5f72zxygz2ay8ar1wxp")))) + "1hri34b373bww5gv14qli2nm77k05pk170nbb2vv2zvzv93g25gw")))) (build-system cmake-build-system) (propagated-inputs `(("ki18n" ,ki18n) @@ -2738,7 +2764,7 @@ It supports rich text as well as plain text.") (define-public kwallet (package (name "kwallet") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2747,7 +2773,7 @@ It supports rich text as well as plain text.") name "-" version ".tar.xz")) (sha256 (base32 - "0n25mvjwy3sv5bg2x75psz6d6f8yl53j3wfmx9ayh57jk4rq24rm")))) + "08z3ddsam5n5qn2svscp4hgksf6qd1h8lqw1v382p01nnmhxadz5")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) @@ -2779,7 +2805,7 @@ the passwords on KDE work spaces.") (define-public kxmlgui (package (name "kxmlgui") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2788,7 +2814,7 @@ the passwords on KDE work spaces.") name "-" version ".tar.xz")) (sha256 (base32 - "0plw6fckpssgwf18f5i4vhfp55jmdvfh2rc5lg8fwmlqgqkvrbac")))) + "1v8m6qzjqg3ic14a5ki37bf13kifzcbhly68zcxgs5b92hr953iy")))) (build-system cmake-build-system) (propagated-inputs `(("kconfig" ,kconfig) @@ -2818,7 +2844,6 @@ the passwords on KDE work spaces.") (setenv "HOME" (getcwd)) ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") #t))))) (home-page "https://community.kde.org/Frameworks") (synopsis "Framework for managing menu and toolbar actions") @@ -2832,7 +2857,7 @@ descriptions for integrating actions from plugins.") (define-public kxmlrpcclient (package (name "kxmlrpcclient") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2841,7 +2866,7 @@ descriptions for integrating actions from plugins.") name "-" version ".tar.xz")) (sha256 (base32 - "1xrdh5ipldahcv0pxp7dnzjz1ihnkg4r2hpylg6bwvq81clw8xd1")))) + "0kp3ab50m5jl2jgw883ip67s6gs0l3saprzrqa9r3hydn2c4s3md")))) (build-system cmake-build-system) (propagated-inputs `(("kio" ,kio))) @@ -2875,7 +2900,7 @@ setUrl, setUserAgent and call.") (define-public plasma-framework (package (name "plasma-framework") - (version "5.28.0") + (version "5.34.0") (source (origin (method url-fetch) (uri (string-append @@ -2884,7 +2909,7 @@ setUrl, setUserAgent and call.") name "-" version ".tar.xz")) (sha256 (base32 - "0j4mfd8wzrspvyy281lww981fly2rkbhnixb9b0pj5k9i8gvkh7q")))) + "0waicqskfwc8xpmrym165hwlfv6nzbwc783sac5vrhbyk4bwk8x9")))) (build-system cmake-build-system) (propagated-inputs `(("kpackage" ,kpackage) @@ -2928,7 +2953,6 @@ setUrl, setUserAgent and call.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) - (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index 03cfd0ee7b..b481bb98db 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. @@ -39,7 +39,7 @@ (define-public kdevelop (package (name "kdevelop") - (version "5.0.4") + (version "5.1.0") (source (origin (method url-fetch) @@ -48,7 +48,7 @@ version ".tar.xz")) (sha256 (base32 - "0max4g1i8xf5g7a8zm60qkr2j8w5bsqzxz914z43fj5ipnr4448r")))) + "1s4cbkx2a0p73b52yxmf5dhv08xk9pxgrkjsnbzy76ssfr545g60")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -148,7 +148,7 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).") (define-public kdevplatform (package (name "kdevplatform") - (version "5.0.4") + (version "5.1.0") (source (origin (method url-fetch) (uri (string-append "mirror://kde/stable/kdevelop" @@ -156,7 +156,7 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).") version ".tar.xz")) (sha256 (base32 - "0wfl5azblnpmc7hydfvm7450343m1v7cr2g9gw0qs1432gbzraq1")))) + "1nxf66vk6p7lmckdsha9fpq3zchwbg79qhy49f4hndlxgj03p7zh")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -308,7 +308,7 @@ with a ksysguardd daemon, which may also run on a remote system.") (define-public qca (package (name "qca") - (version "2.1.1") + (version "2.1.3") (source (origin (method url-fetch) @@ -316,14 +316,14 @@ with a ksysguardd daemon, which may also run on a remote system.") "/src/qca-" version ".tar.xz")) (sha256 (base32 - "10z9icq28fww4qbzwra8d9z55ywbv74qk68nhiqfrydm21wkxplm")))) + "0lz3n652z208daxypdcxiybl0a9fnn6ida0q7fh5f42269mdhgq0")))) (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("openssl" ,openssl) ("qtbase" ,qtbase))) - (home-page "http://delta.affinix.com/qca/") + (home-page "https://userbase.kde.org/QCA") (synopsis "Libraries for the Qt Cryptographic Architecture") (description "The Qt Cryptographic Architecture (QCA) provides a straightforward and cross-platform API for a range of cryptographic features, diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index b5d86b5636..260ca947bd 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -239,8 +239,8 @@ generator library for C++.") (define-public kodi ;; We package the git version because the current released ;; version was cut while the cmake transition was in turmoil. - (let ((commit "ec5d53da72868ad37df8bc005452a6daaa20f20b") - (revision "1")) + (let ((commit "b8ad238aa8010063eaf7d608d139002a50075e8d") + (revision "4")) (package (name "kodi") (version (string-append "18.0_alpha-" revision "-" (string-take commit 7))) @@ -252,7 +252,7 @@ generator library for C++.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "05f0bip0w784ya72plw3p2bism5m501q07si2xbmg03vhqsagjl5")) + "192agb8lpbajljbnnpn7y1pk2c6bvqbcpqhlgq4pja4pdf664xzg")) (snippet '(begin (use-modules (guix build utils)) @@ -263,7 +263,6 @@ generator library for C++.") ;; And these sources: ;; "tools/depend/native/JsonSchemaBuilder" ;; "tools/depend/native/TexturePacker" - ;; "lib/UnrarXlib" ;; "lib/gtest" ;; "lib/cpluff" ;; "lib/libexif" @@ -287,8 +286,7 @@ generator library for C++.") (string-append "-Dlibdvdcss_URL=" (assoc-ref %build-inputs "libdvdcss-bootstrapped")) (string-append "-DSYSTEM_LDFLAGS=-Wl,-rpath=" - (assoc-ref %build-inputs "curl") "/lib") - "-DENABLE_NONFREE=OFF") + (assoc-ref %build-inputs "curl") "/lib")) #:phases (modify-phases %standard-phases ;; The build system tries to bootstrap these bundled components diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm index 6c837948c0..ee0c5c0d89 100644 --- a/gnu/packages/language.scm +++ b/gnu/packages/language.scm @@ -22,13 +22,13 @@ #:use-module (gnu packages web) #:use-module (guix packages) #:use-module (guix build-system perl) - #:use-module ((guix licenses) #:select (gpl2 gpl3)) + #:use-module ((guix licenses) #:select (gpl2 gpl3 perl-license)) #:use-module (guix download)) (define-public perl-lingua-en-findnumber (package (name "perl-lingua-en-findnumber") - (version "1.30") + (version "1.32") (source (origin (method url-fetch) @@ -36,7 +36,7 @@ "Lingua-EN-FindNumber-" version ".tar.gz")) (sha256 (base32 - "0g5h6bwwggizwh3dd3xyx92537s4qy8nspshp1lrm9qlxh3prc28")))) + "015ximzdp42v824llwlg2pd77vd0d172lb4xs55q9f9zhqf6s5qx")))) (build-system perl-build-system) (propagated-inputs `(("perl-lingua-en-words2nums" ,perl-lingua-en-words2nums))) @@ -45,12 +45,12 @@ (description "This module provides a regular expression for finding numbers in English text. It also provides functions for extracting and manipulating such numbers.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-en-inflect (package (name "perl-lingua-en-inflect") - (version "1.895") + (version "1.901") (source (origin (method url-fetch) @@ -58,7 +58,7 @@ manipulating such numbers.") "Lingua-EN-Inflect-" version ".tar.gz")) (sha256 (base32 - "0drzg9a2dkjxgf00n6jg0jzhd8972bh3j4wdnmdxpqi3zmfqhwcy")))) + "0mcwlgf6hkh4zm3s1x899f25xj4hyzrc2vssiwfxysqja36yf5ys")))) (build-system perl-build-system) (native-inputs `(("perl-module-build" ,perl-module-build))) (home-page "http://search.cpan.org/dist/Lingua-EN-Inflect") @@ -68,12 +68,12 @@ manipulating such numbers.") words. Plural forms of all nouns, most verbs, and some adjectives are provided. Where appropriate, \"classical\" variants (for example: \"brother\" -> \"brethren\", \"dogma\" -> \"dogmata\", etc.) are also provided.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-en-inflect-number (package (name "perl-lingua-en-inflect-number") - (version "1.11") + (version "1.12") (source (origin (method url-fetch) @@ -81,7 +81,7 @@ provided. Where appropriate, \"classical\" variants (for example: \"brother\" "Lingua-EN-Inflect-Number-" version ".tar.gz")) (sha256 (base32 - "0rvgrff96ja7fqr79dszmiyv2wz4izw82znah0mx9szkir657gfz")))) + "1gxccynkaqav43ww43jp4rzkyr36x97jd03yb5f6yx0jhn1k7yv6")))) (build-system perl-build-system) (propagated-inputs `(("perl-lingua-en-inflect" ,perl-lingua-en-inflect))) @@ -90,7 +90,7 @@ provided. Where appropriate, \"classical\" variants (for example: \"brother\" (description "This module extends the functionality of Lingua::EN::Inflect with three new functions for determining plurality of a word and forcefully converting a word to singular or plural.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-en-inflect-phrase (package @@ -117,12 +117,12 @@ converting a word to singular or plural.") (synopsis "Inflect short English phrases") (description "This module attempts to pluralize or singularize short English phrases.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-en-number-isordinal (package (name "perl-lingua-en-number-isordinal") - (version "0.04") + (version "0.05") (source (origin (method url-fetch) @@ -130,7 +130,7 @@ English phrases.") "Lingua-EN-Number-IsOrdinal-" version ".tar.gz")) (sha256 (base32 - "1321fm4pyqcamffd0qsjm1gb07ijqndlb29qkcqf22kaibngfm4i")))) + "1mhqjvh2ad30gjab5b3a6mbr4aysyrscp4wp42yy5x6001a6km98")))) (build-system perl-build-system) (native-inputs `(("perl-try-tiny" ,perl-try-tiny) @@ -141,12 +141,12 @@ English phrases.") (synopsis "Detect if English number is ordinal or cardinal") (description "This module will tell you if a number, either in words or as digits, is a cardinal or ordinal number.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-en-tagger (package (name "perl-lingua-en-tagger") - (version "0.24") + (version "0.28") (source (origin (method url-fetch) @@ -154,7 +154,7 @@ digits, is a cardinal or ordinal number.") "Lingua-EN-Tagger-" version ".tar.gz")) (sha256 (base32 - "0qksqh1zi8fz76a29s2ll4g6yr8y6agmzgq7ngccvgj3gza5q241")))) + "1rm223d871s150dgnhbar71w56bim950cp45f0904w6px5fifcqa")))) (build-system perl-build-system) (propagated-inputs `(("perl-memoize-expirelru" ,perl-memoize-expirelru) @@ -190,7 +190,7 @@ using a set of regular expressions.") (synopsis "Convert English text to numbers") (description "This module converts English text into numbers. It supports both ordinal and cardinal numbers, negative numbers, and very large numbers.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-pt-stemmer (package @@ -210,7 +210,7 @@ both ordinal and cardinal numbers, negative numbers, and very large numbers.") (description "This module implements a Portuguese stemming algorithm proposed in the paper A Stemming Algorithm for the Portuguese Language by Moreira, V. and Huyck, C.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-stem (package @@ -240,7 +240,7 @@ Moreira, V. and Huyck, C.") (synopsis "Stemming of words in various languages") (description "This routine applies stemming algorithms to its parameters, returning the stemmed words as appropriate to the selected locale.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-stem-fr (package @@ -259,7 +259,7 @@ returning the stemmed words as appropriate to the selected locale.") (synopsis "Porter's stemming algorithm for French") (description "This module uses a modified version of the Porter Stemming Algorithm to return a stemmed French word.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-stem-it (package @@ -278,7 +278,7 @@ Algorithm to return a stemmed French word.") (synopsis "Porter's stemming algorithm for Italian") (description "This module applies the Porter Stemming Algorithm to its parameters, returning the stemmed Italian word.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-stem-ru (package @@ -297,7 +297,7 @@ parameters, returning the stemmed Italian word.") (synopsis "Porter's stemming algorithm for Russian") (description "This module applies the Porter Stemming Algorithm to its parameters, returning the stemmed Russian (KOI8-R only) word.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-lingua-stem-snowball-da (package @@ -337,7 +337,7 @@ Lingua::Stem::Snowball::Se.") (synopsis "Porters stemming algorithm for Norwegian") (description "Lingua::Stem::Snowball::No is a perl port of the norwegian stemmer at http://snowball.tartarus.org.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-snowball-swedish (package @@ -357,7 +357,7 @@ stemmer at http://snowball.tartarus.org.") (synopsis "Porters stemming algorithm for Swedish") (description "Lingua::Stem::Snowball::Se is a perl port of the swedish stemmer at http://snowball.sourceforge.net.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-string-toidentifier-en (package @@ -383,7 +383,7 @@ converting an arbitrary string into a readable representation using the ASCII subset of \"\\w\" for use as an identifier in a computer program. The intent is to make unique identifier names from which the content of the original string can be easily inferred by a human just by reading the identifier.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-text-german (package @@ -402,4 +402,4 @@ string can be easily inferred by a human just by reading the identifier.") (synopsis "German grundform reduction") (description "This module is a rather incomplete implementation of work done by Gudrun Putze-Meier.") - (license (package-license perl)))) + (license perl-license))) diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm index fd4d60e8b8..59036a5315 100644 --- a/gnu/packages/ldc.scm +++ b/gnu/packages/ldc.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2015, 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -120,6 +122,8 @@ and freshness without requiring additional information from the user.") (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))) (substitute* "tests/d2/dmd-testsuite/Makefile" (("/bin/bash") (which "bash"))) + ;; FIXME: this test cannot be linked. + (delete-file "tests/d2/dmd-testsuite/runnable/cppa.d") #t))))) (inputs `(("libconfig" ,libconfig) @@ -276,7 +280,7 @@ latest DMD frontend and uses LLVM as backend.") (define-public dub (package (name "dub") - (version "1.2.2") + (version "1.3.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/dlang/dub/archive/" @@ -284,28 +288,33 @@ latest DMD frontend and uses LLVM as backend.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "02k11x34nck0lbv13ww103niiswnwnslbnswj3b5faszzadbi1v4")))) + "056mvf01z51qc3i1qnx7yaqr728q8pss8zabiv5zpfx2ynfsw3k7")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc) #:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (replace 'build (lambda _ (zero? (system* "./build.sh")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (outbin (string-append out "/bin"))) - (mkdir-p outbin) - (install-file "bin/dub" outbin) + (bin (string-append out "/bin"))) + (install-file "bin/dub" bin) #t)))))) (inputs `(("curl" ,curl))) (native-inputs `(("ldc" ,ldc))) (home-page "https://code.dlang.org/getting_started") - (synopsis "DUB package manager") - (description "This package provides the D package manager.") + (synopsis "Package and build manager for D projects") + (description + "DUB is a package and build manager for applications and libraries written +in the D programming language. It can automatically retrieve a project's +dependencies and integrate them in the build process. + +The design emphasis is on maximum simplicity for simple projects, while +providing the opportunity to customize things when needed. ") (license license:expat))) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index 1bfdefd7b5..c903352bbc 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,6 +52,9 @@ ;; https://github.com/libevent/libevent/issues/452 "libevent-2.1-skip-failing-test.patch")))) (build-system gnu-build-system) + (arguments + ;; This skips some of the tests which fail on armhf and aarch64. + '(#:configure-flags '("--disable-libevent-regress"))) (inputs `(("python" ,python-2))) ; for 'event_rpcgen.py' (native-inputs @@ -87,7 +91,8 @@ loop.") "libevent-2.0-CVE-2016-10195.patch" "libevent-2.0-CVE-2016-10196.patch" "libevent-2.0-CVE-2016-10197.patch" - "libevent-2.0-evbuffer-add-use-last-with-datap.patch")))))) + "libevent-2.0-evbuffer-add-use-last-with-datap.patch")))) + (arguments '()))) (define-public libev (package @@ -182,12 +187,12 @@ resolution, asynchronous file system operations, and threading primitives.") "API for I/O, timer, signal, child process and completion events") (description "This module allows using a variety of events without forcing module -authors to pick a specific event loop, and without noticable overhead. +authors to pick a specific event loop, and without noticeable overhead. Currently supported event loops are EV, Event, Glib/Gtk2, Tk, Qt, @code{Event::Lib}, Irssi, @code{IO::Async} and POE (and thus also WxWidgets and Prima). It also comes with a very fast Pure Perl event loop that does not rely on XS.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-ev (package @@ -228,4 +233,4 @@ not rely on XS.") "This module provides an interface to @code{libev}, a high performance full-featured event loop. It can be used through the @code{AnyEvent} module and still be faster than other event loops currently supported in Perl.") - (license (package-license perl)))) + (license perl-license))) diff --git a/gnu/packages/libffcall.scm b/gnu/packages/libffcall.scm index 6ff40c8a10..e4babfed2c 100644 --- a/gnu/packages/libffcall.scm +++ b/gnu/packages/libffcall.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Joshua S. Grant <jgrant@parenthetical.io> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,27 +20,27 @@ (define-module (gnu packages libffcall) #:use-module ((guix licenses) #:prefix l:) + #:use-module (guix utils) ; string-replace-substring #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix cvs-download) + #:use-module (guix git-download) #:use-module (guix build-system gnu)) (define-public libffcall (package (name "libffcall") - (version "1.10+cvs-2015-01-15") + (version "1.12") (source (origin - (method cvs-fetch) - (uri (cvs-reference - (root-directory - ":pserver:anonymous@cvs.savannah.gnu.org:/sources/libffcall") - (module "ffcall") - (revision "2015-01-15"))) + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/r/libffcall.git") + (commit (string-append + "ffcall-" (string-replace-substring version "." "-"))))) (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1lwdskc2w4rr98x9flr2726lmj4190l16r0izg7gqxy50801wwgd")))) + "0p7gg5k4ifcqpmrmdfmr2r4x909cn35g87iff539p6i8891fdfxf")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f)) (synopsis "Foreign function calls from interpreters") diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 215cecee1f..ffbe5b1a88 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org> ;;; @@ -27,12 +27,16 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system ant) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system python) #:use-module (gnu packages autotools) #:use-module (gnu packages gnupg) #:use-module (gnu packages gtk) + #:use-module (gnu packages java) #:use-module (gnu packages linux) #:use-module (gnu packages mp3) #:use-module (gnu packages pkg-config) @@ -42,7 +46,7 @@ (define-public libusb (package (name "libusb") - (version "1.0.19") + (version "1.0.21") (source (origin (method url-fetch) @@ -50,7 +54,7 @@ "libusb-" version "/libusb-" version ".tar.bz2")) (sha256 (base32 - "0h38p9rxfpg9vkrbyb120i1diq57qcln82h5fr7hvy82c20jql3c")))) + "0jw2n5kdnrqvp7zh792fd6mypzzfap6jp4gfcmq4n6c1kb79rkkx")))) (build-system gnu-build-system) ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on @@ -58,7 +62,7 @@ (arguments `(#:configure-flags '("--disable-udev"))) ;; (inputs `(("eudev" ,eudev))) - (home-page "http://www.libusb.org") + (home-page "http://libusb.info") (synopsis "User-space USB library") (description "Libusb is a library that gives applications easy access to USB @@ -91,6 +95,100 @@ devices on various operating systems.") version of libusb to run with newer libusb.") (license lgpl2.1+))) +(define-public libusb4java + ;; There is no public release so we take the latest version from git. + (let ((commit "396d642a57678a0d9663b062c980fe100cc0ea1e") + (revision "1")) + (package + (name "libusb4java") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/usb4java/libusb4java.git") + (commit commit))) + (sha256 + (base32 + "0wqgapalhfh9v38ycbl6i2f5lh1wpr6fzwn5dwd0rdacypkd1gml")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; there are no tests + #:phases + (modify-phases %standard-phases + (add-before 'configure 'set-JAVA_HOME + (lambda* (#:key inputs #:allow-other-keys) + (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) + #t))))) + (inputs + `(("libusb" ,libusb))) + (native-inputs + `(("jdk" ,icedtea "jdk"))) + (home-page "https://github.com/usb4java/libusb4java/") + (synopsis "JNI bindings to libusb") + (description + "This package provides Java JNI bindings to the libusb library for use +with usb4java.") + (license expat)))) + +(define-public java-usb4java + (package + (name "java-usb4java") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/usb4java/usb4java/" + "archive/usb4java-" version ".tar.gz")) + (sha256 + (base32 + "0gzpsnzwgsdyra3smq288yvxnwrgvdwxr6g8jbknnsk56kv6wc34")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "usb4java.jar" + #:phases + (modify-phases %standard-phases + ;; Usually, native libusb4java libraries for all supported systems + ;; would be included in the jar and extracted at runtime. Since we + ;; build everything from source we cannot just bundle pre-built + ;; binaries for other systems. Instead, we patch the loader to + ;; directly return the appropriate library for this system. The + ;; downside is that the jar will only work on the same architecture + ;; that it was built on. + (add-after 'unpack 'copy-libusb4java + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/main/java/org/usb4java/Loader.java" + (("private static String extractLibrary" line) + (string-append + line "(final String a, final String b) {" + "return \"" + (assoc-ref inputs "libusb4java") "/lib/libusb4java.so" + "\"; }\n" + "private static String _extractLibrary"))) + #t)) + (add-after 'unpack 'disable-broken-tests + (lambda _ + (with-directory-excursion "src/test/java/org/usb4java" + ;; These tests should only be run when USB devices are present. + (substitute* '("LibUsbGlobalTest.java" + "TransferTest.java") + (("this.context = new Context\\(\\);") + "this.context = null;") + (("LibUsb.init") "//")) + (substitute* "DeviceListIteratorTest.java" + (("this.iterator.remove" line) + (string-append "assumeUsbTestsEnabled();" line)))) + #t))))) + (inputs + `(("libusb4java" ,libusb4java) + ("java-commons-lang3" ,java-commons-lang3) + ("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "http://usb4java.org/") + (synopsis "USB library for Java") + (description + "This package provides a USB library for Java based on libusb and +implementing @code{javax.usb} (JSR-80).") + (license expat))) + (define-public python-pyusb (package (name "python-pyusb") @@ -136,14 +234,14 @@ version of libusb to run with newer libusb.") (define-public libmtp (package (name "libmtp") - (version "1.1.11") + (version "1.1.13") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libmtp/libmtp/" version "/libmtp-" version ".tar.gz")) (sha256 (base32 - "1sc768q2cixwanlwrz95mp389iaadl4s95486caavxx4g7znvn8m")))) + "0h3dv9py5mmvxhfxmkr8ky4s80hgq3d66cmrfnnnlcdwpwpy0kj9")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/links.scm b/gnu/packages/links.scm deleted file mode 100644 index 145ed761ee..0000000000 --- a/gnu/packages/links.scm +++ /dev/null @@ -1,81 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 John Darrington <jmd@gnu.org> -;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages links) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (gnu packages) - #: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) - #:use-module (guix build-system gnu)) - -(define-public links - (package - (name "links") - (version "2.14") - (source (origin - (method url-fetch) - (uri (string-append "http://links.twibright.com/download/" - name "-" version ".tar.bz2")) - (sha256 - (base32 "1f24y83wa1vzzjq5kp857gjqdpnmf8pb29yw7fam0m8wxxw0c3gp")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (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 understands. - (let ((out (assoc-ref outputs "out"))) - ;; 'configure' doesn't understand '--host'. - ,@(if (%current-target-system) - `((setenv "CHOST" ,(%current-target-system))) - '()) - (setenv "CONFIG_SHELL" (which "bash")) - (zero? - (system* "./configure" - (string-append "--prefix=" out) - "--enable-graphics")))))))) - (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: - ;; "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+))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 6aee9cd525..bfe6b64ffe 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -80,12 +80,14 @@ #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages rrdtool) + #:use-module (gnu packages samba) #:use-module (gnu packages slang) #:use-module (gnu packages storage) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages video) + #:use-module (gnu packages web) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xdisorg) @@ -352,8 +354,8 @@ It has been modified to remove all non-free binary blobs.") (define %intel-compatible-systems '("x86_64-linux" "i686-linux")) -(define %linux-libre-version "4.10.8") -(define %linux-libre-hash "0936i2h9l4gn67gby9kx70w6zqv1nbzbgwssry6k11wrjwa2p8n4") +(define %linux-libre-version "4.11.2") +(define %linux-libre-hash "0vp6hjc7cb6q6bhbg6jcf08r27xbf293cdib2vfng15ygvxpyfij") (define-public linux-libre (make-linux-libre %linux-libre-version @@ -362,14 +364,14 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.9 - (make-linux-libre "4.9.20" - "0hnxylfnyz3xf7k3qcq2wri2wpbi2islngxjmqp445v1pzr4k9xp" + (make-linux-libre "4.9.29" + "0yj4gajdzilxnh9lhb2zl0hs654lagdfx8cp7bv2w4q41bnmc3l9" %intel-compatible-systems #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.59" - "1nrg7mg6cn0xzsdklg24aj5fqx05hab11j9nq4b8dabjf4crlkx5" + (make-linux-libre "4.4.69" + "14q5lqsfmwyiilbhffr3bwsm6i3z1jv6y09rg8x3faibcg766wny" %intel-compatible-systems #:configuration-file kernel-config)) @@ -466,7 +468,7 @@ at login. Local and dynamic reconfiguration are its key features.") (define-public psmisc (package (name "psmisc") - (version "22.20") + (version "22.21") (source (origin (method url-fetch) @@ -474,10 +476,10 @@ at login. Local and dynamic reconfiguration are its key features.") version ".tar.gz")) (sha256 (base32 - "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi")))) + "0nhlm1vrrwn4a845p6y4nnnb4liq70n74zbdd5dq844jc6nkqclp")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) - (home-page "http://psmisc.sourceforge.net/") + (home-page "https://gitlab.com/psmisc/psmisc") (synopsis "Small utilities that use the proc file system") (description @@ -645,7 +647,7 @@ slabtop, and skill.") (define-public e2fsprogs (package (name "e2fsprogs") - (version "1.42.13") + (version "1.43.4") (source (origin (method url-fetch) (uri (string-append @@ -654,79 +656,66 @@ slabtop, and skill.") name "-" version ".tar.xz")) (sha256 (base32 - "1ix0b83zgw5n0p2grh2961c6796m92yr2jqc2sbr23x3lfsp8r71")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "MCONFIG.in" - (("INSTALL_SYMLINK = /bin/sh") - "INSTALL_SYMLINK = sh")) - - ;; Do not include a timestamp in libext2fs.info.gz. - (substitute* "doc/Makefile.in" - (("gzip -9") - "gzip -9n")))))) + "092absr4vrlqrkdf9nwh4ykj40ab6hhwrkdr6sjsccd54c8z5csl")))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux))) (native-inputs `(("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) ;for the libext2fs Info manual + ("texinfo" ,texinfo) ;for the libext2fs Info manual + + ;; For tests. + ("perl" ,perl) + ("procps" ,procps))) (arguments - '(;; Parallel building reliably yields a failure like this: - ;; "make[2]: *** No rule to make target '../lib/libss.so', needed by - ;; 'debugfs'. Stop." - #:parallel-build? #f - ;; util-linux is the preferred source for some of the libraries and + '(;; util-linux is the preferred source for some of the libraries and ;; commands, so disable them (see, e.g., ;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b33633>.) - #:configure-flags '("--disable-libblkid" - "--disable-libuuid" "--disable-uuidd" - "--disable-fsck" + #:configure-flags (list "--disable-libblkid" + "--disable-libuuid" "--disable-uuidd" + "--disable-fsck" - ;; Use symlinks instead of hard links for - ;; 'fsck.extN' etc. This makes the resulting nar - ;; smaller and is preserved across copies. - "--enable-symlink-install" + ;; Use symlinks instead of hard links for + ;; 'fsck.extN' etc. This makes the resulting nar + ;; smaller and is preserved across copies. + "--enable-symlink-install" - ;; Install libext2fs et al. - "--enable-elf-shlibs") + (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") + "/lib") - #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") - "/lib")) + ;; Install libext2fs et al. + "--enable-elf-shlibs") - #:phases (alist-cons-before - 'configure 'patch-shells - (lambda _ - (substitute* "configure" - (("/bin/sh (.*)parse-types.sh" _ dir) - (string-append (which "sh") " " dir - "parse-types.sh"))) - (substitute* (find-files "." "^Makefile.in$") - (("#!/bin/sh") - (string-append "#!" (which "sh"))))) - (alist-cons-after - 'install 'install-libs - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - (and (zero? (system* "make" "install-libs")) - - ;; Make the .a writable so that 'strip' works. - ;; Failing to do that, due to debug symbols, we - ;; retain a reference to the final - ;; linux-libre-headers, which refer to the - ;; bootstrap binaries. - (let ((archives (find-files lib "\\.a$"))) - (for-each (lambda (file) - (chmod file #o666)) - archives) - #t)))) - %standard-phases)) - - ;; FIXME: Tests work by comparing the stdout/stderr of programs, that - ;; they fail because we get an extra line that says "Can't check if - ;; file system is mounted due to missing mtab file". - #:tests? #f)) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-shells + (lambda _ + (substitute* "configure" + (("/bin/sh (.*)parse-types.sh" _ dir) + (string-append (which "sh") " " dir + "parse-types.sh"))) + (substitute* "MCONFIG.in" + (("INSTALL_SYMLINK = /bin/sh") + "INSTALL_SYMLINK = sh")) + (substitute* (find-files "." "^Makefile.in$") + (("#!/bin/sh") + (string-append "#!" (which "sh")))) + #t)) + (add-after 'install 'install-libs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (and (zero? (system* "make" "install-libs")) + + ;; Make the .a writable so that 'strip' works. + ;; Failing to do that, due to debug symbols, we + ;; retain a reference to the final + ;; linux-libre-headers, which refer to the + ;; bootstrap binaries. + (let ((archives (find-files lib "\\.a$"))) + (for-each (lambda (file) + (chmod file #o666)) + archives) + #t)))))))) (home-page "http://e2fsprogs.sourceforge.net/") (synopsis "Creating and checking ext2/ext3/ext4 file systems") (description @@ -1016,21 +1005,28 @@ external rate conversion.") (define-public iptables (package (name "iptables") - (version "1.4.21") + (version "1.6.1") (source (origin (method url-fetch) (uri (string-append - "http://www.netfilter.org/projects/iptables/files/iptables-" + "mirror://netfilter.org/iptables/iptables-" version ".tar.bz2")) (sha256 (base32 - "1q6kg7sf0pgpq0qhab6sywl23cngxxfzc9zdzscsba8x09l4q02j")))) + "1x8c9y340x79djsq54bc1674ryv59jfphrk4f88i7qbvbnyxghhg")))) (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("flex" ,flex) + ("bison" ,bison))) + (inputs + `(("libmnl" ,libmnl) + ("libnftnl" ,libnftnl))) (arguments '(#:tests? #f ; no test suite #:configure-flags ; add $libdir to the RUNPATH of executables (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")))) - (home-page "http://www.netfilter.org/projects/iptables/index.html") + (home-page "https://www.netfilter.org/projects/iptables/index.html") (synopsis "Program to configure the Linux IP packet filtering rules") (description "iptables is the userspace command line program used to configure the @@ -1443,7 +1439,7 @@ processes currently causing I/O.") (define-public fuse (package (name "fuse") - (version "2.9.6") + (version "2.9.7") (source (origin (method url-fetch) (uri (string-append "https://github.com/libfuse/libfuse/releases/" @@ -1451,7 +1447,8 @@ processes currently causing I/O.") "/fuse-" version ".tar.gz")) (sha256 (base32 - "0szi2vlsjxg03y4ji51jks34p269jqj5ify6l0ajsqq6f6y8pd0c")))) + "0x486nri30f7cgy0acj87v9sjxsjrr0cymrvw4h3r0sgmp8k4943")) + (patches (search-patches "fuse-overlapping-headers.patch")))) (build-system gnu-build-system) (inputs `(("util-linux" ,util-linux))) (arguments @@ -1502,19 +1499,28 @@ user-space processes.") (define-public unionfs-fuse (package (name "unionfs-fuse") - (version "0.26") + (version "2.0") (source (origin (method url-fetch) (uri (string-append - "http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-" - version ".tar.xz")) + "https://github.com/rpodgorny/unionfs-fuse/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d")))) + "0hsn8l1iblvx27bpd4dvnvnbh9ri3sv2f9xzpsnfz3379kb7skgj")))) (build-system cmake-build-system) + (native-inputs + `(("python" ,python) + ("python-pytest" ,python-pytest))) (inputs `(("fuse" ,fuse))) - (arguments '(#:tests? #f)) ; no tests - (home-page "http://podgorny.cz/moin/UnionFsFuse") + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + ;; Borrowed from the Makefile + (lambda _ (zero? (system* "python3" "-m" "pytest"))))))) + (home-page "https://github.com/rpodgorny/unionfs-fuse") (synopsis "User-space union file system") (description "UnionFS-FUSE is a flexible union file system implementation in user @@ -1562,29 +1568,34 @@ UnionFS-FUSE additionally supports copy-on-write.") (exe (string-append out "/bin/unionfs"))) ;; By default, 'unionfs' keeps references to ;; $glibc/share/locale and similar stuff. Remove them. - (remove-store-references exe))) + (remove-store-references exe) + + ;; 'unionfsctl' has references to glibc as well. Since + ;; we don't need it, remove it. + (delete-file (string-append out "/bin/unionfsctl")) + #t)) %standard-phases))) (inputs `(("fuse" ,fuse-static))))) (define-public sshfs-fuse (package (name "sshfs-fuse") - (version "2.8") + (version "2.9") (source (origin (method url-fetch) (uri (string-append "https://github.com/libfuse/sshfs/releases/" - "download/sshfs_" version - "/sshfs-" version ".tar.gz")) + "download/sshfs-" version "/sshfs-" version + ".tar.gz")) (sha256 (base32 - "08mdd4rs7yys7hmyig6i08qlid76p17xlvrh64k7wsrfs1s92s3z")))) + "1pp5wsl1jx11apkv2fpp559miifqhi8ka400npy5awp9ghlf3la6")))) (build-system gnu-build-system) (inputs `(("fuse" ,fuse) ("glib" ,glib))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "http://fuse.sourceforge.net/sshfs.html") + (home-page "https://github.com/libfuse/sshfs") (synopsis "Mount remote file systems over SSH") (description "This is a file system client based on the SSH File Transfer Protocol. @@ -1679,7 +1690,7 @@ system.") ("bzip2" ,bzip2) ("pam" ,linux-pam))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "ftp://ftp.kernel.org/pub/linux/utils/kbd/") + (home-page "http://kbd-project.org/") (synopsis "Linux keyboard utilities and keyboard maps") (description "This package contains keytable files and keyboard utilities compatible @@ -1802,14 +1813,14 @@ time.") (define-public lvm2 (package (name "lvm2") - (version "2.02.168") + (version "2.02.171") (source (origin (method url-fetch) (uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2." version ".tgz")) (sha256 (base32 - "03b62hcsj9z37ckd8c21wwpm07s9zblq7grfh58yzcs1vp6x38r3")) + "0r4r9fsvpj9hjmf0zz7h4prz12r6y16jhjhsvk1sbfpsl88sf5dq")) (modules '((guix build utils))) (snippet '(begin @@ -1865,7 +1876,7 @@ time.") ;; The tests use 'mknod', which requires root access. #:tests? #f)) - (home-page "http://sourceware.org/lvm2/") + (home-page "https://sourceware.org/lvm2/") (synopsis "Logical volume management for Linux") (description "LVM2 is the logical volume management tool set for Linux-based systems. @@ -2224,6 +2235,7 @@ in a digital read-out.") ;; ("newt" ,newt) ("python" ,python-2) ;'perf' links against libpython ("elfutils" ,elfutils) + ("libiberty" ,libiberty) ;used alongside BDF for symbol demangling ;; Documentation. ("libxml2" ,libxml2) ;for $XML_CATALOG_FILES @@ -2267,14 +2279,14 @@ thanks to the use of namespaces.") (define-public hdparm (package (name "hdparm") - (version "9.51") + (version "9.52") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" name "-" version ".tar.gz")) (sha256 (base32 - "14ax5lyzhigx58ing7adbfyzisv0fqajbmzphg149rnb3s4xiyhs")))) + "1djgxhfadd865dcrl6dp7dvjxpaisy7mk17mbdbglwg24ga9qhn3")))) (build-system gnu-build-system) (arguments `(#:make-flags (let ((out (assoc-ref %outputs "out"))) @@ -2598,7 +2610,7 @@ arrays when needed.") (define-public multipath-tools (package (name "multipath-tools") - (version "0.6.4") + (version "0.7.1") (source (origin (method url-fetch) (uri (string-append "http://git.opensvc.com/?p=multipath-tools/" @@ -2606,7 +2618,7 @@ arrays when needed.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "12smwmljrkl2afc06dghd2253rqnfawvzr818a2xpxr06f44f9qy")) + "0w0rgi3lqksaki30yvd4l5rgjqb0d7js1sh7masl8aw6xbrsm26p")) (modules '((guix build utils))) (snippet '(begin @@ -2622,20 +2634,36 @@ arrays when needed.") '(#:tests? #f ; No tests. #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")) + "SYSTEMDPATH=lib" (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + (let ((lvm2 (assoc-ref inputs "lvm2")) + (udev (assoc-ref inputs "udev"))) + (substitute* "Makefile.inc" + (("\\$\\(prefix\\)/usr") "$(prefix)")) + (substitute* '("kpartx/Makefile" "libmultipath/Makefile") + (("/usr/include/libdevmapper.h") + (string-append lvm2 "/include/libdevmapper.h")) + (("/usr/include/libudev.h") + (string-append udev "/include/libudev.h"))) + #t))) (delete 'configure) (add-before 'build 'set-CC (lambda _ (setenv "CC" "gcc") #t))))) (native-inputs - `(("valgrind" ,valgrind))) + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("valgrind" ,valgrind))) (inputs `(("ceph:lib" ,ceph "lib") + ("json-c" ,json-c) ("libaio" ,libaio) ("liburcu" ,liburcu) ("lvm2" ,lvm2) @@ -2664,9 +2692,7 @@ Linux Device Mapper multipathing driver: (method url-fetch) (uri (list (string-append "mirror://debian/pool/main/liba/libaio/" - name "_" version ".orig.tar.gz") - (string-append "https://fedorahosted.org/releases/l/i/libaio/" - name "-" version ".tar.gz"))) + name "_" version ".orig.tar.gz"))) (sha256 (base32 "0zjzfkwd1kdvq6zpawhzisv7qbq1ffs343i5fs9p498pcf7046g0")))) @@ -2838,7 +2864,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "4.10.2") + (version "4.11") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -2846,7 +2872,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "02p63nz78lrr156cmbb759z76cn95hv6mmz7v592lmiq0dkxy2gd")))) + "03mzv89f08gdsqv4ima793g44kdavcfyjialf5dr0zd2ab66hyp1")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of binaries in "out" (~16MiB!) @@ -3299,14 +3325,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.") (define-public mcelog (package (name "mcelog") - (version "149") + (version "150") (source (origin (method url-fetch) (uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/" "mcelog.git/snapshot/v" version ".tar.gz")) (sha256 (base32 - "08hd8bl9rgss990icb69srarrfwcg8k7py979ak753j92ybbkhdm")) + "1skfiracl3a1afmml8mvnccr4rym4ibv33c342rkyxn0j3088h24")) (file-name (string-append name "-" version ".tar.gz")) (modules '((guix build utils))) (snippet @@ -3394,15 +3420,15 @@ developers.") (define-public radeontop (package (name "radeontop") - (version "0.9") + (version "1.0") (home-page "https://github.com/clbr/radeontop/") (source (origin (method url-fetch) - (uri (string-append home-page "/archive/v" version ".tar.gz")) + (uri (string-append home-page "archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "07fnimn6wwablmdjw0av11hk9a6xilbryh09izq4b2ic4b8md2p7")))) + "1z38nibirqxrbsfyhfcrnzlcw16cqjp4ds6qnjfxalwayf9fm5x9")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -3422,6 +3448,7 @@ developers.") (inputs `(("libdrm" ,libdrm) ("libpciaccess" ,libpciaccess) + ("libxcb" ,libxcb) ("ncurses" ,ncurses))) (synopsis "Usage monitor for AMD Radeon graphics") (description "RadeonTop monitors resource consumption on supported AMD @@ -3622,7 +3649,7 @@ Light is the successor of lightscript.") (arguments `(#:phases (modify-phases %standard-phases - (delete 'configure) + (delete 'configure) ; no configure script (add-before 'build 'setenv (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -3637,10 +3664,14 @@ Light is the successor of lightscript.") (setenv "TLP_SHCPL" (string-append out "/share/bash-completion/completions")) (setenv "TLP_MAN" (string-append out "/share/man"))))) - (delete 'check) + (delete 'check) ; no tests + (add-before 'install 'fix-installation + (lambda _ + ;; Stop the Makefile from trying to create system directories. + (substitute* "Makefile" (("\\[ -f \\$\\(_CONF\\) \\]") "#")))) (replace 'install (lambda _ - (system "make install-tlp install-man"))) + (zero? (system* "make" "install-tlp" "install-man")))) (add-after 'install 'wrap (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((bin (string-append (assoc-ref outputs "out") "/bin")) @@ -3710,3 +3741,174 @@ and more on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC machines (PowerMac G4 is known to work).") (home-page "https://www.ezix.org/project/wiki/HardwareLiSter") (license license:gpl2+))) + +(define-public libmnl + (package + (name "libmnl") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://netfilter.org/libmnl/" + "libmnl-" version ".tar.bz2")) + (sha256 + (base32 + "108zampspaalv44zn0ar9h386dlfixpd149bnxa5hsi8kxlqj7qp")))) + (build-system gnu-build-system) + (home-page "https://www.netfilter.org/projects/libmnl/") + (synopsis "Netlink utility library") + (description "Libmnl is a minimalistic user-space library oriented to +Netlink developers. There are a lot of common tasks in parsing, validating, +constructing of both the Netlink header and TLVs that are repetitive and easy to +get wrong. This library aims to provide simple helpers that allows you to +re-use code and to avoid re-inventing the wheel.") + (license license:lgpl2.1+))) + +(define-public libnftnl + (package + (name "libnftnl") + (version "1.0.7") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://netfilter.org/libnftnl/" + "libnftnl-" version ".tar.bz2")) + (sha256 + (base32 + "10irjrylcfkbp11617yr19vpfhgl54w0kw02jhj0i1abqv5nxdlv")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libmnl" ,libmnl))) + (home-page "https://www.netfilter.org/projects/libnftnl/index.html") + (synopsis "Netlink programming interface to the Linux nf_tables subsystem") + (description "Libnftnl is a userspace library providing a low-level netlink +programming interface to the in-kernel nf_tables subsystem. The library +libnftnl has been previously known as libnftables. This library is currently +used by nftables.") + (license license:gpl2+))) + +(define-public proot + (package + (name "proot") + (version "5.1.0") + (home-page "https://github.com/proot-me/PRoot") + (source (origin + (method url-fetch) + (uri (string-append home-page "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "11h30i83vdhc3khlj6hrh3a21sbmmz8nhfv09vkf6b9bcs1biz2h")) + (patches (search-patches "proot-test-fhs.patch")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags '("-C" "src") + + #:phases (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'set-shell-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* (find-files "src" "\\.[ch]$") + (("\"/bin/sh\"") + (string-append "\"" + (assoc-ref inputs "bash") + "/bin/sh\""))) + #t)) + (add-before 'check 'fix-fhs-assumptions-in-tests + (lambda _ + (substitute* "tests/test-c6b77b77.mk" + (("/bin/bash") (which "bash")) + (("/usr/bin/test") (which "test"))) + (substitute* '("tests/test-16573e73.c") + (("/bin/([a-z-]+)" _ program) + (which program))) + + (substitute* (find-files "tests" "\\.sh$") + ;; Some of the tests try to "bind-mount" /bin/true. + (("-b /bin/true:") + (string-append "-b " (which "true") ":")) + ;; Likewise for /bin. + (("-b /bin:") "-b /gnu:") + ;; Others try to run /bin/sh. + (("/bin/sh") (which "sh")) + ;; Others assume /etc/fstab exists. + (("/etc/fstab") "/etc/passwd")) + + (substitute* "tests/GNUmakefile" + (("-b /bin:") "-b /gnu:")) + + ;; XXX: This test fails in an obscure corner case, just + ;; skip it. + (delete-file "tests/test-kkkkkkkk.c") + + #t)) + (replace 'check + (lambda _ + (let ((n (parallel-job-count))) + ;; For some reason we get lots of segfaults with + ;; seccomp support (x86_64, Linux-libre 4.11.0). + (setenv "PROOT_NO_SECCOMP" "1") + + ;; Most of the tests expect "/bin" to be in $PATH so + ;; they can run things that live in $ROOTFS/bin. + (setenv "PATH" + (string-append (getenv "PATH") ":/bin")) + + (zero? (system* "make" "check" "-C" "tests" + ;;"V=1" + "-j" (number->string n)))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + ;; The 'install' rule does nearly nothing. + (let ((out (assoc-ref outputs "out"))) + (and (zero? + ;; TODO: 'make install-care' (does not even + ;; build currently.) + (system* "make" "-C" "src" "install" + (string-append "PREFIX=" out))) + (begin + (install-file "doc/proot/man.1" + (string-append out "/share" + "/man/man1")) + #t)))))))) + (native-inputs `(("which" ,which) + + ;; For 'mcookie', used by some of the tests. + ("util-linux" ,util-linux))) + (inputs `(("talloc" ,talloc))) + (synopsis "Unprivileged chroot, bind mount, and binfmt_misc") + (description + "PRoot is a user-space implementation of @code{chroot}, @code{mount --bind}, +and @code{binfmt_misc}. This means that users don't need any privileges or +setup to do things like using an arbitrary directory as the new root +filesystem, making files accessible somewhere else in the file system +hierarchy, or executing programs built for another CPU architecture +transparently through QEMU user-mode. Also, developers can use PRoot as a +generic process instrumentation engine thanks to its extension mechanism. +Technically PRoot relies on @code{ptrace}, an unprivileged system-call +available in the kernel Linux.") + (license license:gpl2+))) + +(define-public proot-static + (package + (inherit proot) + (name "proot-static") + (synopsis + "Unprivileged chroot, bind mount, and binfmt_misc (statically linked)") + (inputs `(("talloc" ,talloc/static))) + (arguments + (substitute-keyword-arguments (package-arguments proot) + ((#:make-flags flags) + `(cons "LDFLAGS = -ltalloc -static -static-libgcc" ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'strip 'remove-store-references + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (with-directory-excursion out + (remove-store-references "bin/proot") + #t)))))) + ((#:allowed-references _ '("out")) + '("out")))))) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 889073edba..64acc75e59 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -4,8 +4,9 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> -;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> +;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,34 +88,32 @@ `(#:parallel-build? #f ; The build system seems not to be thread safe. #:tests? #f ; There does not seem to be make check or anything similar. #:configure-flags '("--enable-ansi") ; required for use by the maxima package - #:phases (alist-cons-before - 'configure 'pre-conf - (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 = rl_completion;")) - (substitute* - (append - '("pcl/impl/kcl/makefile.akcl" - "add-defs" - "unixport/makefile.dos" - "add-defs.bat" - "gcl-tk/makefile.prev" - "add-defs1") - (find-files "h" "\\.defs")) - (("SHELL=/bin/(ba)?sh") - (string-append "SHELL=" (which "bash"))))) - ;; drop strip phase to make maxima build, see - ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html - (alist-delete 'strip - %standard-phases)))) + #:phases (modify-phases %standard-phases + (add-before 'configure 'pre-conf + (lambda _ + (substitute* + (append + '("pcl/impl/kcl/makefile.akcl" + "add-defs" + "unixport/makefile.dos" + "add-defs.bat" + "gcl-tk/makefile.prev" + "add-defs1") + (find-files "h" "\\.defs")) + (("SHELL=/bin/bash") + (string-append "SHELL=" (which "bash"))) + (("SHELL=/bin/sh") + (string-append "SHELL=" (which "sh")))) + #t)) + ;; drop strip phase to make maxima build, see + ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html + (delete 'strip)))) + (inputs + `(("gmp" ,gmp) + ("readline" ,readline))) (native-inputs - `(("m4" ,m4) - ("readline" ,readline) + `(("gcc" ,gcc-4.9) + ("m4" ,m4) ("texinfo" ,texinfo) ("texlive" ,texlive))) (home-page "https://www.gnu.org/software/gcl/") @@ -522,7 +521,7 @@ interface.") ;; https://github.com/JeffBezanson/femtolisp/issues/25 (supported-systems (fold delete %supported-systems - '("armhf-linux" "mips64el-linux"))) + '("armhf-linux" "mips64el-linux" "aarch64-linux"))) (build-system gnu-build-system) (arguments `(#:make-flags '("CC=gcc" "release") @@ -660,7 +659,7 @@ portable between implementations.") (sha256 (base32 "0f48pcbhqs3wwwzjl5nk57d4hcbib4l9xblxc66b8c2fhvhmhxnv")) (file-name (string-append "fiveam-" version ".tar.gz")))) - (inputs `(("sbcl-alexandria" ,sbcl-alexandria))) + (inputs `(("alexandria" ,sbcl-alexandria))) (build-system asdf-build-system/sbcl) (synopsis "Common Lisp testing framework") (description "FiveAM is a simple (as far as writing and running tests @@ -688,8 +687,8 @@ interactive development model in mind.") (base32 "10ryrcx832fwqdawb6jmknymi7wpdzhi30qzx7cbrk0cpnka71w2")) (file-name (string-append "bordeaux-threads-" version ".tar.gz")))) - (inputs `(("sbcl-alexandria" ,sbcl-alexandria))) - (native-inputs `(("tests:cl-fiveam" ,sbcl-fiveam))) + (inputs `(("alexandria" ,sbcl-alexandria))) + (native-inputs `(("fiveam" ,sbcl-fiveam))) (build-system asdf-build-system/sbcl) (synopsis "Portable shared-state concurrency library for Common Lisp") (description "BORDEAUX-THREADS is a proposed standard for a minimal @@ -750,7 +749,7 @@ thin compatibility layer for gray streams.") (base32 "16grnxvs7vqm5s6myf8a5s7vwblzq1kgwj8i7ahz8vwvihm9gzfi")) (file-name (string-append "flexi-streams-" version ".tar.gz")))) (build-system asdf-build-system/sbcl) - (inputs `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams))) + (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams))) (synopsis "Implementation of virtual bivalent streams for Common Lisp") (description "Flexi-streams is an implementation of \"virtual\" bivalent streams that can be layered atop real binary or bivalent streams and that can @@ -780,7 +779,7 @@ streams which are similar to string streams.") (base32 "1i7daxf0wnydb0pgwiym7qh2wy70n14lxd6dyv28sy0naa8p31gd")) (file-name (string-append "cl-ppcre-" version ".tar.gz")))) (build-system asdf-build-system/sbcl) - (native-inputs `(("tests:cl-flexi-streams" ,sbcl-flexi-streams))) + (native-inputs `(("flexi-streams" ,sbcl-flexi-streams))) (synopsis "Portable regular expression library for Common Lisp") (description "CL-PPCRE is a portable regular expression library for Common Lisp, which is compatible with perl. It is pretty fast, thread-safe, and @@ -794,6 +793,51 @@ compatible with ANSI-compliant Common Lisp implementations.") (define-public ecl-cl-ppcre (sbcl-package->ecl-package sbcl-cl-ppcre)) +(define sbcl-cl-unicode-base + (let ((revision "1") + (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea")) + (package + (name "sbcl-cl-unicode-base") + (version (string-append "0.1.5-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edicl/cl-unicode.git") + (commit commit))) + (file-name (string-append "cl-unicode-" version "-checkout")) + (sha256 + (base32 + "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki")))) + (build-system asdf-build-system/sbcl) + (arguments + '(#:asd-file "cl-unicode.asd" + #:asd-system-name "cl-unicode/base")) + (inputs + `(("cl-ppcre" ,sbcl-cl-ppcre))) + (home-page "http://weitz.de/cl-unicode/") + (synopsis "Portable Unicode library for Common Lisp") + (description "CL-UNICODE is a portable Unicode library Common Lisp, which +is compatible with perl. It is pretty fast, thread-safe, and compatible with +ANSI-compliant Common Lisp implementations.") + (license license:bsd-2)))) + +(define-public sbcl-cl-unicode + (package + (inherit sbcl-cl-unicode-base) + (name "sbcl-cl-unicode") + (inputs + `(("cl-unicode/base" ,sbcl-cl-unicode-base) + ,@(package-inputs sbcl-cl-unicode-base))) + (native-inputs + `(("flexi-streams" ,sbcl-flexi-streams))) + (arguments '()))) + +(define-public ecl-cl-unicode + (sbcl-package->ecl-package sbcl-cl-unicode)) + +(define-public cl-unicode + (sbcl-package->cl-source-package sbcl-cl-unicode)) + (define-public sbcl-clx (let ((revision "1") (commit "1c62774b03c1cf3fe6e5cb532df8b14b44c96b95")) @@ -823,8 +867,6 @@ compatible with ANSI-compliant Common Lisp implementations.") (substitute* "clx.asd" (("\\(:file \"trapezoid\"\\)") "")))))) (build-system asdf-build-system/sbcl) - (arguments - '(#:special-dependencies '("sb-bsd-sockets"))) (home-page "http://www.cliki.net/portable-clx") (synopsis "X11 client library for Common Lisp") (description "CLX is an X11 client library for Common Lisp. The code was @@ -852,31 +894,27 @@ from other CLXes around the net.") (base32 "1maxp98gh64az3d9vz9br6zdd6rc9fmj2imvax4by85g6kxvdz1i")) (file-name (string-append "stumpwm-" version ".tar.gz")))) (build-system asdf-build-system/sbcl) - (inputs `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre) - ("sbcl-clx" ,sbcl-clx))) - (outputs '("out" "bin")) + (inputs `(("cl-ppcre" ,sbcl-cl-ppcre) + ("clx" ,sbcl-clx))) + (outputs '("out" "lib")) (arguments - '(#:special-dependencies '("sb-posix") - #:phases + '(#:phases (modify-phases %standard-phases (add-after 'create-symlinks 'build-program - (lambda* (#:key lisp outputs inputs #:allow-other-keys) + (lambda* (#:key outputs #:allow-other-keys) (build-program - lisp - (string-append (assoc-ref outputs "bin") "/bin/stumpwm") - #:inputs inputs + (string-append (assoc-ref outputs "out") "/bin/stumpwm") + outputs #:entry-program '((stumpwm:stumpwm) 0)))) (add-after 'build-program 'create-desktop-file - (lambda* (#:key outputs lisp binary? #:allow-other-keys) - (let ((output (or (assoc-ref outputs "bin") - (assoc-ref outputs "out"))) - (xsessions "/share/xsessions")) - (mkdir-p (string-append output xsessions)) - (with-output-to-file - (string-append output xsessions - "/stumpwm.desktop") - (lambda _ - (format #t + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (xsessions (string-append out "/share/xsessions"))) + (mkdir-p xsessions) + (call-with-output-file + (string-append xsessions "/stumpwm.desktop") + (lambda (file) + (format file "[Desktop Entry]~@ Name=stumpwm~@ Comment=The Stump Window Manager~@ @@ -884,7 +922,7 @@ from other CLXes around the net.") TryExec=~@*~a/bin/stumpwm~@ Icon=~@ Type=Application~%" - output))) + out))) #t)))))) (synopsis "Window manager written in Common Lisp") (description "Stumpwm is a window manager written entirely in Common Lisp. @@ -905,11 +943,15 @@ productive, customizable lisp based systems.") (outputs '("out")) (arguments '())))) +;; The slynk that users expect to install includes all of slynk's contrib +;; modules. Therefore, we build the base module and all contribs first; then +;; we expose the union of these as `sbcl-slynk'. The following variable +;; describes the base module. (define sbcl-slynk-boot0 (let ((revision "1") (commit "5706cd45d484a4f25795abe8e643509d31968aa2")) (package - (name "sbcl-slynk") + (name "sbcl-slynk-boot0") (version (string-append "1.0.0-beta-" revision "." (string-take commit 7))) (source (origin @@ -949,19 +991,22 @@ productive, customizable lisp based systems.") (scandir "slynk")))))) (build-system asdf-build-system/sbcl) (arguments - `(#:tests? #f)) ; No test suite + `(#:tests? #f ; No test suite + #:asd-system-name "slynk")) (synopsis "Common Lisp IDE for Emacs") - (description "SLY is a fork of SLIME. It also features a completely -redesigned REPL based on Emacs's own full-featured comint.el, live code -annotations, and a consistent interactive button interface. Everything can be -copied to the REPL. One can create multiple inspectors with independent -history.") + (description "SLY is a fork of SLIME, an IDE backend for Common Lisp. +It also features a completely redesigned REPL based on Emacs's own +full-featured comint.el, live code annotations, and a consistent interactive +button interface. Everything can be copied to the REPL. One can create +multiple inspectors with independent history.") (home-page "https://github.com/joaotavora/sly") (license license:public-domain) (properties `((cl-source-variant . ,(delay cl-slynk))))))) (define-public cl-slynk - (sbcl-package->cl-source-package sbcl-slynk-boot0)) + (package + (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0)) + (name "cl-slynk"))) (define ecl-slynk-boot0 (sbcl-package->ecl-package sbcl-slynk-boot0)) @@ -970,10 +1015,11 @@ history.") (package (inherit sbcl-slynk-boot0) (name "sbcl-slynk-arglists") - (inputs `(("sbcl-slynk" ,sbcl-slynk-boot0))) + (inputs `(("slynk" ,sbcl-slynk-boot0))) (arguments - `(#:asd-file "slynk.asd" - ,@(package-arguments sbcl-slynk-boot0))))) + (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0) + ((#:asd-file _ "") "slynk.asd") + ((#:asd-system-name _ #f) #f))))) (define ecl-slynk-arglists (sbcl-package->ecl-package sbcl-slynk-arglists)) @@ -990,7 +1036,7 @@ history.") (package (inherit sbcl-slynk-arglists) (name "sbcl-slynk-fancy-inspector") - (inputs `(("sbcl-slynk-util" ,sbcl-slynk-util) + (inputs `(("slynk-util" ,sbcl-slynk-util) ,@(package-inputs sbcl-slynk-arglists))))) (define ecl-slynk-fancy-inspector @@ -1068,6 +1114,7 @@ history.") (define-public sbcl-slynk (package (inherit sbcl-slynk-boot0) + (name "sbcl-slynk") (inputs `(("slynk" ,sbcl-slynk-boot0) ("slynk-util" ,sbcl-slynk-util) @@ -1105,12 +1152,15 @@ history.") (prepend-to-source-registry (string-append (assoc-ref %outputs "out") "//")) - (build-image "sbcl" - (string-append - (assoc-ref %outputs "image") - "/bin/slynk") - #:inputs %build-inputs - #:dependencies ',slynk-systems)))))) + + (parameterize ((%lisp-type "sbcl") + (%lisp (string-append (assoc-ref %build-inputs "sbcl") + "/bin/sbcl"))) + (build-image (string-append + (assoc-ref %outputs "image") + "/bin/slynk") + %outputs + #:dependencies ',slynk-systems))))))) (define-public ecl-slynk (package @@ -1139,28 +1189,30 @@ history.") (inherit sbcl-stumpwm) (name "sbcl-stumpwm-with-slynk") (outputs '("out")) - (native-inputs - `(("stumpwm" ,sbcl-stumpwm) + (inputs + `(("stumpwm" ,sbcl-stumpwm "lib") ("slynk" ,sbcl-slynk))) (arguments (substitute-keyword-arguments (package-arguments sbcl-stumpwm) ((#:phases phases) `(modify-phases ,phases (replace 'build-program - (lambda* (#:key lisp inputs outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (program (string-append out "/bin/stumpwm"))) - (build-program lisp program - #:inputs inputs + (build-program program outputs #:entry-program '((stumpwm:stumpwm) 0) #:dependencies '("stumpwm" - ,@slynk-systems)) + ,@slynk-systems) + #:dependency-prefixes + (map (lambda (input) (assoc-ref inputs input)) + '("stumpwm" "slynk"))) ;; Remove unneeded file. (delete-file (string-append out "/bin/stumpwm-exec.fasl")) #t))) (delete 'copy-source) (delete 'build) (delete 'check) - (delete 'link-dependencies) + (delete 'create-asd-file) (delete 'cleanup) (delete 'create-symlinks))))))) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 04a2b39af9..4702a342a0 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -218,6 +219,29 @@ code analysis tools.") "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" #:patches '("clang-3.8-libc-search-path.patch"))) +(define-public llvm-3.9.1 + (package (inherit llvm) + (name "llvm") + (version "3.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://llvm.org/releases/" + version "/llvm-" version ".src.tar.xz")) + (sha256 + (base32 + "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z")))))) + +(define-public clang-runtime-3.9.1 + (clang-runtime-from-llvm + llvm-3.9.1 + "16gc2gdmp5c800qvydrdhsp0bzb97s8wrakl6i8a4lgslnqnf2fk")) + +(define-public clang-3.9.1 + (clang-from-llvm llvm-3.9.1 clang-runtime-3.9.1 + "0qsyyb40iwifhhlx9a3drf8z6ni6zwyk3bvh0kx2gs6yjsxwxi76" + #:patches '())) + (define-public llvm-3.7 (package (inherit llvm) (version "3.7.1") @@ -268,6 +292,8 @@ code analysis tools.") (method url-fetch) (uri (string-append "http://llvm.org/releases/" version "/llvm-" version ".src.tar.xz")) + (patches + (search-patches "llvm-3.5-fix-clang-build-with-gcc5.patch")) (sha256 (base32 "0xf5q17kkxsrm2gsi93h4pwlv663kji73r2g4asb97klsmb626a4")))))) diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm index c40d6ebbaf..7501f1e5db 100644 --- a/gnu/packages/logging.scm +++ b/gnu/packages/logging.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,7 +24,10 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (gnu packages) #:use-module (gnu packages perl) + #:use-module (gnu packages python) #:use-module (gnu packages autotools)) (define-public log4cpp @@ -62,7 +65,8 @@ staying as close to their API as is reasonable.") (sha256 (base32 "0ym5g15m7c8kjfr2c3zq6bz08ghin2d1r1nb6v2vnkfh1vn945x1")) - (file-name (string-append name "-" version "-checkout")))) + (file-name (string-append name "-" version "-checkout")) + (patches (search-patches "glog-gcc-5-demangling.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ;for tests @@ -88,3 +92,42 @@ helper macros. You can log a message by simply streaming things to log at a particular severity level. It allows logging to be controlled from the command line.") (license license:bsd-3))) + +(define-public tailon + (package + (name "tailon") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri name version)) + (sha256 + (base32 + "08clrwpfdxcv2z2b5ardpmim4alahbw4l7631dhw62xhbcf6wjzz")))) + (build-system python-build-system) + (inputs + `(("python-pyyaml" ,python-pyyaml) + ("python-sockjs-tornado" ,python-sockjs-tornado) + ("python-tornado" ,python-tornado))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-commands.py + (lambda args + (substitute* "tailon/commands.py" + (("self\\.first_in_path\\('grep'\\)") + (string-append"'" (which "grep") "'")) + (("self\\.first_in_path\\('gawk', 'awk'\\)") + (string-append"'" (which "gawk") "'")) + (("self\\.first_in_path\\('gsed', 'sed'\\)") + (string-append"'" (which "sed") "'")) + (("self\\.first_in_path\\('gtail', 'tail'\\)") + (string-append"'" (which "tail") "'"))) + #t))))) + (home-page "https://tailon.readthedocs.io/") + (synopsis + "Webapp for looking at and searching through log files") + (description + "Tailon provides a web interface around the tail, grep, awk and sed +commands, displaying the results via a web interface.") + (license license:bsd-3))) diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm index da42957fee..0c1d950d4c 100644 --- a/gnu/packages/lsof.scm +++ b/gnu/packages/lsof.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,7 +30,7 @@ (define-public lsof (package (name "lsof") - (version "4.88") + (version "4.89") (source (origin (method url-fetch) (uri (list (string-append %ftp-base "lsof_" @@ -44,41 +45,36 @@ "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/lsof_" version ".tar.bz2") (string-append + "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/OLD/lsof_" + version ".tar.bz2") + (string-append "ftp://sunsite.ualberta.ca/pub/Mirror/lsof/lsof_" version ".tar.bz2"))) (sha256 (base32 - "16y9wm26rg81mihnzcbdg8h8vhxmq8kn62ssxb8cqydp4q79nvzy")))) + "061p18v0mhzq517791xkjs8a5dfynq1418a1mwxpji69zp2jzb41")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (arguments `(#:tests? #f ; no test target #:phases - (alist-replace - 'unpack - (lambda* (#:key source #:allow-other-keys) - (let ((unpack (assoc-ref %standard-phases 'unpack))) - (unpack #:source source) - (unpack #:source (car (find-files "." "\\.tar$"))))) - (alist-replace - 'configure - (lambda _ - (setenv "LSOF_CC" "gcc") - (setenv "LSOF_MAKE" "make") - (system* "./Configure" "linux")) - (alist-replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir out) - (mkdir (string-append out "/bin")) - (copy-file "lsof" (string-append out "/bin/lsof")) - (mkdir (string-append out "/share")) - (mkdir (string-append out "/share/man")) - (mkdir (string-append out "/share/man/man8")) - (copy-file "lsof.8" (string-append out "/share/man/man8/lsof.8")) - )) - %standard-phases))))) + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (let ((unpack (assoc-ref %standard-phases 'unpack))) + (unpack #:source source) + (unpack #:source (car (find-files "." "\\.tar$")))))) + (replace 'configure + (lambda _ + (setenv "LSOF_CC" "gcc") + (setenv "LSOF_MAKE" "make") + (zero? (system* "./Configure" "linux")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "lsof" (string-append out "/bin")) + (install-file "lsof.8" (string-append out "/share/man/man8"))) + #t))))) (synopsis "Display information about open files") (description "Lsof stands for LiSt Open Files, and it does just that. diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index e7654053d8..bf70bd6013 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,10 +27,12 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) + #:use-module (gnu packages image-viewers) #:use-module (gnu packages linux) #:use-module (gnu packages openbox) #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) + #:use-module (gnu packages text-editors) #:use-module (gnu packages wm) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -159,6 +162,7 @@ toolkit. It allows users to monitor and control of running processes.") (uri (string-append "mirror://sourceforge/lxde/LXTerminal" "%20%28terminal%20emulator%29/LXTerminal%20" version "/" name "-" version ".tar.xz")) + (patches (search-patches "lxterminal-CVE-2016-10369.patch")) (sha256 (base32 "1yf76s15zvfw0h42b0ay1slpq47khgjmcry8ki2z812zar9lchia")))) @@ -285,11 +289,26 @@ menu spec-compliant desktop menus for LXDE.") (base32 "0mj84fa3f4ak1jjslrwc2q3ci9zxrxpciggviza9bjb0168brn8w")))) (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'set-lxsession + (lambda* (#:key inputs #:allow-other-keys) + ;; Set the right file name for 'lxsession'. + (let ((lxsession (assoc-ref inputs "lxsession"))) + (substitute* "startlxde.in" + (("^exec .*/bin/lxsession") + (string-append "exec " lxsession + "/bin/lxsession"))) + #t)))))) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool) ("lxmenu-data" ,lxmenu-data) ("lxde-icon-theme" ,lxde-icon-theme))) + (inputs + `(("lxsession" ,lxsession) + ;; ("lxlock" ,lxlock) ;for 'lxde-screenlock.desktop' + )) (synopsis "Common files of the LXDE Desktop") (description "Lxde-common provides common files of the LXDE Desktop.") @@ -433,9 +452,11 @@ in LXDE.") (arguments '(#:builder (mkdir %output))) (propagated-inputs ;; TODO: - ;; lxshortcut, lxsession-edit, gpicview, leafpad, + ;; lxshortcut, lxsession-edit ;; lxappearance-obconf `(("menu-cache" ,menu-cache) + ("gpicview" ,gpicview) + ("leafpad" ,leafpad) ("lxappearance" ,lxappearance) ("lxde-icon-theme" ,lxde-icon-theme) ("lxde-common" ,lxde-common) diff --git a/gnu/packages/lynx.scm b/gnu/packages/lynx.scm deleted file mode 100644 index b212dca388..0000000000 --- a/gnu/packages/lynx.scm +++ /dev/null @@ -1,91 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages lynx) - #:use-module ((guix licenses) #:select (gpl2)) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages perl) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages libidn) - #:use-module (gnu packages gnupg) - #:use-module (gnu packages tls) - #:use-module (gnu packages zip) - #:use-module (gnu packages compression)) - -(define-public lynx - (package - (name "lynx") - (version "2.8.9dev.11") - (source (origin - (method url-fetch) - (uri (string-append - "http://invisible-mirror.net/archives/lynx/tarballs" - "/lynx" version ".tar.bz2")) - (sha256 - (base32 - "1cqm1i7d209brkrpzaqqf2x951ra3l67dw8x9yg10vz7rpr9441a")))) - (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config) - ("perl" ,perl))) - (inputs `(("ncurses" ,ncurses) - ("libidn" ,libidn) - ("gnutls" ,gnutls) - ("libgcrypt" ,libgcrypt) - ("unzip" ,unzip) - ("zlib" ,zlib) - ("gzip" ,gzip) - ("bzip2" ,bzip2))) - (arguments - `(#:configure-flags - (let ((gnutls (assoc-ref %build-inputs "gnutls"))) - `("--with-pkg-config" - "--with-screen=ncurses" - "--with-zlib" - "--with-bzlib" - ,(string-append "--with-gnutls=" gnutls) - ;; "--with-socks5" ; XXX TODO - "--enable-widec" - "--enable-ascii-ctypes" - "--enable-local-docs" - "--enable-htmlized-cfg" - "--enable-gzip-help" - "--enable-nls" - "--enable-ipv6")) - #:tests? #f ; no check target - #:phases (alist-replace - 'install - (lambda* (#:key (make-flags '()) #:allow-other-keys) - (zero? (apply system* "make" "install-full" make-flags))) - %standard-phases))) - (synopsis "Text Web Browser") - (description - "Lynx is a fully-featured World Wide Web (WWW) client for users running -cursor-addressable, character-cell display devices. It will display Hypertext -Markup Language (HTML) documents containing links to files on the local -system, as well as files on remote systems running http, gopher, ftp, wais, -nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on -the WWW, or to build information systems intended primarily for local -access.") - (home-page "http://lynx.isc.org/") - (license gpl2))) - -;;; lynx.scm ends here diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 30f005a331..d39e77d978 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -207,7 +207,7 @@ classification.") (description "The General Hidden Markov Model library (GHMM) is a C library with additional Python bindings implementing a wide range of types of @dfn{Hidden -Markov Models} (HMM) and algorithms: discrete, continous emissions, basic +Markov Models} (HMM) and algorithms: discrete, continuous emissions, basic training, HMM clustering, HMM mixtures.") (license license:lgpl2.0+)))) @@ -274,6 +274,9 @@ networks) based on simulation of (stochastic) flow in graphs.") algorithm.") (license license:gpl3))) +(define-public ocaml4.01-mcl + (package-with-ocaml4.01 ocaml-mcl)) + (define-public randomjungle (package (name "randomjungle") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 5826c42843..b4dfef6ec0 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -15,13 +15,15 @@ ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> -;;; Copyright © 2016, 2017 <contact.ng0@cryptolab.net> +;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,6 +42,7 @@ (define-module (gnu packages mail) #:use-module (gnu packages) + #:use-module (gnu packages aspell) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages backup) @@ -50,11 +53,13 @@ #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) #:use-module (gnu packages dejagnu) + #:use-module (gnu packages django) #:use-module (gnu packages dns) #:use-module (gnu packages documentation) #:use-module (gnu packages emacs) #:use-module (gnu packages enchant) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) @@ -63,6 +68,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages flex) + #:use-module (gnu packages kerberos) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) @@ -70,6 +76,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages m4) #:use-module (gnu packages ncurses) + #:use-module (gnu packages openldap) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages python) @@ -85,9 +92,11 @@ #:use-module (gnu packages ruby) #:use-module (gnu packages samba) #:use-module (gnu packages screen) + #:use-module (gnu packages tcl) #:use-module (gnu packages tls) #:use-module (gnu packages networking) #:use-module (gnu packages web) + #:use-module (gnu packages webkit) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages docbook) @@ -95,7 +104,7 @@ #:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ non-copyleft (expat . license:expat) bsd-3 public-domain bsd-4 isc (openssl . license:openssl) - bsd-2 x11-style agpl3)) + bsd-2 x11-style agpl3 asl2.0 perl-license)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -216,14 +225,14 @@ aliasing facilities to work just as they would on normal mail.") (define-public mutt (package (name "mutt") - (version "1.8.0") + (version "1.8.2") (source (origin (method url-fetch) - (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-" - version ".tar.gz")) + (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/" + "mutt-" version ".tar.gz")) (sha256 (base32 - "1axdcylyv0p194y6lj1jx127g5yc74zqzzxdc014cjw02bd1x125")) + "0dgjjryp1ggbc6ivy9cfz5jl3gnbahb6d6hcwn7c7wk5npqpn18x")) (patches (search-patches "mutt-store-references.patch")))) (build-system gnu-build-system) (inputs @@ -256,16 +265,15 @@ operating systems.") (package (inherit mutt) (name "neomutt") - (version "20170306") + (version "20170428") (source (origin (method url-fetch) (uri (string-append "https://github.com/" name "/" name "/archive/" name "-" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0qwcbjm9j1hgzmybw15w53pvfbqcdf47d4sw21s6r2yaj8kx1hag")))) + "01nkq0lyxcs0pk2i3rvzplg8bi1ga7kcm6hfh6r6w2qjzdm0q466")))) (inputs `(("cyrus-sasl" ,cyrus-sasl) ("gdbm" ,gdbm) @@ -284,6 +292,7 @@ operating systems.") (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) + ("gettext-minimal" ,gettext-minimal) ("pkg-config" ,pkg-config))) (arguments `(#:configure-flags @@ -330,8 +339,7 @@ operating systems.") (synopsis "Command-line mail reader based on Mutt") (description "NeoMutt is a command-line mail reader which is based on mutt. -It adds a large amount of features to mutt, and they all find their way -into mutt, so it is not a fork but a large set of feature patches."))) +It adds a large amount of new and improved features to mutt."))) (define-public gmime (package @@ -413,7 +421,7 @@ and corrections. It is based on a Bayesian filter.") (define-public offlineimap (package (name "offlineimap") - (version "7.0.14") + (version "7.1.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/OfflineIMAP/offlineimap/" @@ -421,7 +429,7 @@ and corrections. It is based on a Bayesian filter.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0i5dvygps1ai2qwgamab8kngrp0c5m3bgaw0jk34l8ypsk54wj8r")))) + "1r0sbgwyirpbks82ri9g88raf3mp8shq9rg0r92gkr7h6888v6fw")))) (build-system python-build-system) (native-inputs `(("asciidoc" ,asciidoc))) @@ -829,14 +837,14 @@ useful features.") (define-public libetpan (package (name "libetpan") - (version "1.7.2") + (version "1.8") (source (origin (method url-fetch) (uri (string-append "https://github.com/dinhviethoa/" name "/archive/" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "081ixgj3skglq9i7v0jb835lmfx21zi4i5b7997igwr0lj174y9j")))) + (base32 "1sxnaglp5hb0z78sgnfzva4x8m4flqhicvm1dz0krkxdmfsafrsf")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,(autoconf-wrapper)) ("automake" ,automake) @@ -867,7 +875,7 @@ useful features.") framework for different kinds of mail access: IMAP, SMTP, POP and NNTP. It provides an API for C language. It's the low-level API used by MailCore and MailCore 2.") - (license (non-copyleft "file://COPYING")))) + (license bsd-3))) (define-public compface (package @@ -1081,7 +1089,7 @@ facilities for checking incoming mail.") (define-public dovecot (package (name "dovecot") - (version "2.2.28") + (version "2.2.29.1") (source (origin (method url-fetch) @@ -1089,7 +1097,7 @@ facilities for checking incoming mail.") (version-major+minor version) "/" name "-" version ".tar.gz")) (sha256 (base32 - "098zpkmkk93372qnv6drgbfg8hp5mynspzc1735qgar6wdcqya70")))) + "127kn3fgmahw9fvgz2w3zaghq98ip4j8640wqa3rw7mrgvxrzync")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1132,44 +1140,41 @@ It supports mbox/Maildir and its own dbox/mdbox formats.") (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING"))))) (define-public dovecot-trees - (let ((commit "006059c8a47d68f14f73c09743e45b9a73014dbf") - (revision "1")) - (package - (name "dovecot-trees") - (version (string-append "2.0.0-" revision "." (string-take commit 7))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://0xacab.org/riseuplabs/trees.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0ax90bzc66x179wi1m7ywqwa8nssyhjngs7ij109hqqxg5ymfp73")))) - (build-system gnu-build-system) - (native-inputs - `(("automake" ,automake) - ("autoconf" ,autoconf) - ("libtool" ,libtool) - ("dovecot" ,dovecot) - ("pkg-config" ,pkg-config))) - (inputs - `(("libsodium" ,libsodium))) - (arguments - `(#:tests? #f ;No tests exist. - #:configure-flags (list (string-append "--with-dovecot=" - (assoc-ref %build-inputs "dovecot") - "/lib/dovecot")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'autogen - (lambda _ - (zero? (system* "./autogen.sh"))))))) - (home-page "https://0xacab.org/riseuplabs/trees") - (synopsis "NaCL-based Dovecot email storage encryption plugin") - (description - "Technology for Resting Email Encrypted Storage (TREES) is a NaCL-based + (package + (name "dovecot-trees") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://0xacab.org/riseuplabs/trees/repository/" + "archive.tar.gz?ref=v" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rkk10b1bsjz979sc864vpgcdchy7yxwmyv4ik50lar1h6awdnrf")))) + (build-system gnu-build-system) + (native-inputs + `(("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool) + ("dovecot" ,dovecot) + ("pkg-config" ,pkg-config))) + (inputs + `(("libsodium" ,libsodium))) + (arguments + `(#:tests? #f ;No tests exist. + #:configure-flags (list (string-append "--with-dovecot=" + (assoc-ref %build-inputs "dovecot") + "/lib/dovecot")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'autogen + (lambda _ + (zero? (system* "./autogen.sh"))))))) + (home-page "https://0xacab.org/riseuplabs/trees") + (synopsis "NaCL-based Dovecot email storage encryption plugin") + (description + "Technology for Resting Email Encrypted Storage (TREES) is a NaCL-based Dovecot encryption plugin. This plugin adds individually encrypted mail storage to the Dovecot IMAP server. It is inspired by Posteo's scrambler which uses OpenSSL and RSA keypairs. TREES works in a similar way, but uses @@ -1185,7 +1190,7 @@ How it works: using lidsodium sealed boxes. @item New mail is encrypted as it arrives using the Curve25519 public key. @end enumerate\n") - (license agpl3)))) + (license agpl3))) (define-public dovecot-libsodium-plugin (let ((commit "044de73c01c35385df0105f6b387bec5d5317ce7") @@ -1272,7 +1277,7 @@ mailboxes. Currently Maildir and IMAP are supported types.") (synopsis "Interface to mail representations") (description "Email::Abstract provides module writers with the ability to write simple, representation-independent mail handling code.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-address (package @@ -1292,7 +1297,7 @@ write simple, representation-independent mail handling code.") (description "Email::Address implements a regex-based RFC 2822 parser that locates email addresses in strings and returns a list of Email::Address objects found. Alternatively you may construct objects manually.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-date-format (package @@ -1311,7 +1316,7 @@ objects found. Alternatively you may construct objects manually.") (synopsis "Produce RFC 2822 date strings") (description "Email::Date::Format provides a means for generating an RFC 2822 compliant datetime string.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-messageid (package @@ -1330,12 +1335,12 @@ objects found. Alternatively you may construct objects manually.") (synopsis "Generate world unique message-ids") (description "Email::MessageID generates recommended message-ids to identify a message uniquely.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-mime (package (name "perl-email-mime") - (version "1.937") + (version "1.940") (source (origin (method url-fetch) @@ -1343,7 +1348,7 @@ identify a message uniquely.") "Email-MIME-" version ".tar.gz")) (sha256 (base32 - "0s50i3nxi9dr81p4rn017nrarc40yrwz0qcw34q8k3pvdf46fr9n")))) + "0pnxbr16cn5qy96xqhp9zmd94ashc9ivqh10qbgbc3f637a0mfir")))) (build-system perl-build-system) (propagated-inputs `(("perl-email-address" ,perl-email-address) @@ -1358,7 +1363,7 @@ identify a message uniquely.") handle MIME encoded messages. It takes a message as a string, splits it up into its constituent parts, and allows you access to various parts of the message. Headers are decoded from MIME encoding.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-mime-contenttype (package @@ -1379,7 +1384,7 @@ message. Headers are decoded from MIME encoding.") (synopsis "Parse MIME Content-Type headers") (description "Email::MIME::ContentType parses a MIME Content-Type header.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-mime-encodings (package @@ -1399,7 +1404,7 @@ header.") (home-page "http://search.cpan.org/dist/Email-MIME-Encodings") (synopsis "Unified interface to MIME encoding and decoding") (description "This module wraps MIME::Base64 and MIME::QuotedPrint.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-sender (package @@ -1431,12 +1436,12 @@ header.") (synopsis "Perl library for sending email") (description "Email::Sender replaces the old and sometimes problematic Email::Send library.") - (license (package-license perl)))) + (license perl-license))) (define-public perl-email-simple (package (name "perl-email-simple") - (version "2.211") + (version "2.213") (source (origin (method url-fetch) @@ -1444,7 +1449,7 @@ Email::Send library.") "Email-Simple-" version ".tar.gz")) (sha256 (base32 - "1if4a2wh4iwlcycqrd2fhkx04ngmd75q444gh43w0r9p15ym5f8w")))) + "1ibwsng63gvqqc6r2135mjwfdzazxkb1x8q7f87wqcbjcjfpmffd")))) (build-system perl-build-system) (propagated-inputs `(("perl-email-date-format" ,perl-email-date-format))) @@ -1452,7 +1457,7 @@ Email::Send library.") (synopsis "Parsing of RFC 2822 messages") (description "Email::Simple provides simple parsing of RFC 2822 message format and headers.") - (license (package-license perl)))) + (license perl-license))) (define-public libesmtp (package @@ -1603,13 +1608,13 @@ maintained.") (define-public khard (package (name "khard") - (version "0.11.3") + (version "0.11.4") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "1v66khq5w17xdbkpb00pf9xbl84dlzx4lq286fvzskb949b3y4yn")))) + "1shhlq6ljbd8095hd82v4mw56rjcfxf1ymmgknbgh8gix02nsxw1")))) (build-system python-build-system) (arguments `(#:phases @@ -2050,7 +2055,7 @@ the GNU Mailman 3 REST API.") (description "Mlmmj is a simple and slim mailing list manager (MLM) inspired by ezmlm. It works with many different Mail Transport Agents (MTAs) and is simple for a -system adminstrator to install, configure and integrate with other software. +system administrator to install, configure and integrate with other software. As it uses very few resources, and requires no daemons, it is ideal for installation on systems where resources are limited. Its features include: @enumerate @@ -2065,6 +2070,74 @@ installation on systems where resources are limited. Its features include: @end enumerate\n") (license license:expat))) +(define-public python-django-mailman3 + (package + (name "python-django-mailman3") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "django-mailman3" version)) + (sha256 + (base32 + "1adxyh8knw9knjlh73xq0jpn5adml0ck4alsv0swakm95wfyx46z")))) + (build-system python-build-system) + (inputs + `(("python-django" ,python-django))) + (propagated-inputs + `(("python-requests" ,python-requests) + ("python-requests-oauthlib" ,python-requests-oauthlib) + ("python-openid" ,python-openid) + ("python-mailmanclient" ,python-mailmanclient) + ("python-django-allauth" ,python-django-allauth) + ("python-django-gravatar2" ,python-django-gravatar2) + ("python-pytz" ,python-pytz))) + (home-page "https://gitlab.com/mailman/django-mailman3") + (synopsis "Django library for Mailman UIs") + (description + "Libraries and templates for Django-based interfaces +interacting with Mailman.") + (license gpl3+))) + +(define-public python2-django-mailman3 + (let ((base (package-with-python2 + python-django-mailman3))) + (package + (inherit base) + (propagated-inputs + `(("python2-openid" ,python2-openid) + ,@(package-propagated-inputs base)))))) + +(define-public postorius + (package + (name "postorius") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "postorius" version "+post2.tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1wymcpv2icjjy8h1ni52p6dr7wwxf71ivqgbqhzx4i82yqphcaq5")))) + (build-system python-build-system) + (arguments + `(; One test dependency relies on Persona, which was shut down in + ;; November 2016. + #:tests? #f + ;; The part of the frontend of Mailman is still python 2.7. + #:python ,python-2)) + (inputs + `(("python2-django" ,python2-django) + ("python2-django-mailman3" ,python2-django-mailman3) + ("python2-mailmanclient" ,python2-mailmanclient))) + (home-page "https://gitlab.com/mailman/postorius") + (synopsis "Web user interface for GNU Mailman") + (description + "Postorius is a Django app which provides a web user interface +to access GNU Mailman.") + (license (list gpl3+ lgpl3+)))) + (define-public blists (package (name "blists") @@ -2148,3 +2221,123 @@ Options can be specified in environment variables, configuration files, and the command line allowing maximum configurability and ease of use for operators and scripters.") (license gpl2+))) + +(define-public alpine + (package + (name "alpine") + (version "2.21") + (source + (origin + (method url-fetch) + ;; There are two versions: the plain continuation of Alpine without extra + ;; patches and the version which adds extra fixes. Every distro uses + ;; the patched version, and so do we to not break expectations. + ;; http://patches.freeiz.com/alpine/readme/README.patches + (uri (string-append "http://patches.freeiz.com/alpine/patches/alpine-" + version "/alpine-" version ".tar.xz")) + (sha256 + (base32 + "1k9hcfjywfk3mpsl71hjza3nk6icgf1b6xxzgx10kdzg5yci5x5m")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list "CC=gcc") + #:configure-flags (list (string-append "--with-ssl-include-dir=" + (assoc-ref %build-inputs "openssl") + "/include/openssl") + (string-append "--with-ssl-dir=" + (assoc-ref %build-inputs "openssl")) + (string-append "--with-ssl-certs-dir=" + "/etc/ssl/certs/") + (string-append "--with-ssl-lib-dir=" + (assoc-ref %build-inputs "openssl") + "/lib") + (string-append "--with-interactive-spellcheck=" + (assoc-ref %build-inputs "aspell") + "/bin/aspell")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-reproducible + (lambda _ + ;; This removes time-dependent code to make alpine reproducible. + (substitute* "pico/blddate.c" + (("%02d-%s-%d") "1970-01-01")) + (substitute* (list "alpine/Makefile.in" + "web/src/alpined.d/Makefile.in") + (("`date`") "1970-01-01")) + #t))))) + (inputs + `(("ncurses" ,ncurses) + ("openssl" ,openssl) + ("gnutls" ,gnutls) + ("openldap" ,openldap) + ("cyrus-sasl" ,cyrus-sasl) + ("mit-krb5" ,mit-krb5) + ("aspell" ,aspell) + ("tcl" ,tcl) + ("linux-pam" ,linux-pam))) + (home-page "http://patches.freeiz.com/alpine/") + (synopsis "Alternatively Licensed Program for Internet News and Email") + (description + "Alpine is a text-based mail and news client. Alpine includes several +tools and applications: +@enumerate +@item alpine, the Alpine mailer +@item pico, the standalone text editor, GNU nano's predecessor +@item pilot, the standalone file system navigator +@end enumerate\n") + (license asl2.0))) + +(define-public balsa + (package + (name "balsa") + (version "2.5.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://pawsa.fedorapeople.org/balsa/balsa-" + version ".tar.bz2")) + (sha256 + (base32 + "15jkwp3ylbwd8iha4dr37z1xb6mkk31ym90vv3h2a5xk2rmym5mq")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + '(;; Balsa tries to install additional MIME icons + ;; under gtk+ directory. + "--enable-extra-mimeicons=no" + "--with-gtksourceview" + "--with-canberra" + "--with-spell-checker=gtkspell" + "--with-gpgme" + "--with-sqlite" + "--with-compface" + "--with-ldap"))) + (inputs + `(("cyrus-sasl" ,cyrus-sasl) + ("enchant" ,enchant) + ("gdk-pixbuf" ,gdk-pixbuf) + ("gmime" ,gmime) + ("gnutls" ,gnutls) + ("gpgme" ,gpgme) + ("gtk+" ,gtk+) + ("gtksourceview" ,gtksourceview) + ("gtkspell3" ,gtkspell3) + ("libcanberra" ,libcanberra) + ("libesmtp" ,libesmtp) + ("libnotify" ,libnotify) + ("openldap" ,openldap) + ("sqlite" ,sqlite) + ("webkitgtk" ,webkitgtk))) + (native-inputs + `(("compface" ,compface) + ("glib" ,glib "bin") + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ("yelp-tools" ,yelp-tools))) + (home-page "https://pawsa.fedorapeople.org/balsa") + (synopsis "E-mail client for GNOME") + (description "Balsa is a highly configurable and robust mail client for +the GNOME desktop. It supports both POP3 and IMAP servers as well as the +mbox, maildir and mh local mailbox formats. Balsa also supports SMTP and/or +the use of a local MTA such as Sendemail.") + (license gpl3+))) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index a2e435e999..8319a7e41b 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -30,7 +30,6 @@ #:use-module (gnu packages gawk) #:use-module (gnu packages groff) #:use-module (gnu packages less) - #:use-module (gnu packages lynx) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages linux)) @@ -134,7 +133,7 @@ the traditional flat-text whatis databases.") (define-public man-pages (package (name "man-pages") - (version "4.10") + (version "4.11") (source (origin (method url-fetch) (uri @@ -147,7 +146,7 @@ the traditional flat-text whatis databases.") "man-pages-" version ".tar.xz"))) (sha256 (base32 - "1yk3ibmbc1wamw798lqw8lh203xnrjddy8wdk5d3hifmj71xz5bk")))) + "097m0gsbaz0gf9ir4lmph3h5jj6wmydk1rglfz82dysybx4q1pmd")))) (build-system gnu-build-system) (arguments '(#:phases (alist-delete 'configure %standard-phases) diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 8600539adf..c8c7c63ee5 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -61,16 +61,15 @@ (define-public mate-themes (package (name "mate-themes") - (version (package-version gtk+)) + (version "3.22.10") (source (origin (method url-fetch) (uri (string-append "http://pub.mate-desktop.org/releases/themes/" - (version-major+minor (package-version gtk+)) - "/mate-themes-" (package-version gtk+) - ".tar.xz")) + (version-major+minor version) "/mate-themes-" + version ".tar.xz")) (sha256 (base32 - "1gsfzrcbwp7835pbilk7cvda8hjsf9g3gl4llbm61y9j7a4x2kn6")))) + "03ficjfxa4qpx4vcshhk2zxryivckxpw7wcjgbn8xqnjk3lgzjcb")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index a4505c7b6f..16896502ea 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -311,6 +311,9 @@ numbers.") the OCaml language.") (license license:gpl3+))) +(define-public ocaml4.01-gsl + (package-with-ocaml4.01 ocaml-gsl)) + (define-public glpk (package (name "glpk") @@ -489,7 +492,7 @@ singular value problems.") (define-public gnuplot (package (name "gnuplot") - (version "5.0.5") + (version "5.0.6") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/" @@ -497,7 +500,7 @@ singular value problems.") version ".tar.gz")) (sha256 (base32 - "0lr065qdlgss8lmy31l7hkmnk9fp4lvqq9qgb1f1209f36zy1wr5")))) + "0q5lr6nala3ln6f3yp6g17ziymb9r9gx9zylnw1y3hjmwl9lggjv")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) ("cairo" ,cairo) @@ -850,6 +853,30 @@ sharing of scientific data.") "--disable-shared" "--with-pic" ,flags)))))) +(define-public netcdf-fortran + (package + (name "netcdf-fortran") + (version "4.4.4") + (source (origin + (method url-fetch) + (uri (string-append + "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-" + version ".tar.gz")) + (sha256 + (base32 + "0xaxdcg1p83zmypwml3swsnr3ccn38inwldyr1l3wa4dbwbrblxj")))) + (build-system gnu-build-system) + (arguments + `(#:parallel-tests? #f)) + (inputs + `(("netcdf" ,netcdf))) + (native-inputs + `(("gfortran" ,gfortran))) + (synopsis "Fortran interface for the netCDF library") + (description (package-description netcdf)) + (home-page (package-home-page netcdf)) + (license (package-license netcdf)))) + (define-public nlopt (package (name "nlopt") @@ -1001,6 +1028,7 @@ can solve two kinds of problems: (inputs `(("lapack" ,lapack) ("readline" ,readline) + ("gl2ps" ,gl2ps) ("glpk" ,glpk) ("fftw" ,fftw) ("fftwf" ,fftwf) @@ -1583,12 +1611,12 @@ programming problems.") (define-public r-pracma (package (name "r-pracma") - (version "1.9.5") + (version "2.0.4") (source (origin (method url-fetch) (uri (cran-uri "pracma" version)) (sha256 - (base32 "19nr2jlkbcdgvw3gx5hry12av565lmvqd5q4h7zlch3q13avwwl2")))) + (base32 "1z3i90mkzwvp9di17caf4934z2xlb2imm3hwxllcrbwvmnmhrwyc")))) (build-system r-build-system) (propagated-inputs `(("r-quadprog" ,r-quadprog))) @@ -2159,14 +2187,14 @@ full text searching.") (define-public armadillo (package (name "armadillo") - (version "7.600.2") + (version "7.800.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/arma/armadillo-" version ".tar.xz")) (sha256 (base32 - "0bac9y46m61zxinj51l82w06v01ra9vw7a9j6rrwdjhznkkdb437")))) + "1qqzy7dp891j9v7062mv1599hdwr97vqzrd3j2fl8c3gmc00dmzg")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no test target (inputs @@ -2183,18 +2211,7 @@ environments. It can be used for machine learning, pattern recognition, signal processing, bioinformatics, statistics, econometrics, etc. The library provides efficient classes for vectors, matrices and cubes, as well as 150+ associated functions (eg. contiguous and non-contiguous submatrix views).") - (license license:mpl2.0))) - -(define-public armadillo-for-rcpparmadillo - (package (inherit armadillo) - (version "7.600.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/arma/armadillo-" - version ".tar.xz")) - (sha256 - (base32 - "1dxgfd2r9lbh24nszvqm2lag439s0srxaf1l86f6ww6waqm5r8zk")))))) + (license license:asl2.0))) (define-public muparser ;; When switching download sites, muparser re-issued a 2.2.5 release with a @@ -2730,6 +2747,8 @@ in finite element programs.") (base32 "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")))) (build-system cmake-build-system) + (outputs '("out" + "octave")) ;46 MiB .mex file that pulls Octave (native-inputs `(("unzip" ,unzip))) (inputs @@ -2747,6 +2766,14 @@ in finite element programs.") ;; Save 12 MiB by not installing .a files. Passing ;; '-DBUILD_STATIC_LIBS=OFF' has no effect. #:phases (modify-phases %standard-phases + (add-before 'configure 'set-octave-directory + (lambda* (#:key outputs #:allow-other-keys) + ;; Install the .mex file in the "octave" output. + (let ((out (assoc-ref outputs "octave"))) + (substitute* "src/matlab/CMakeLists.txt" + (("share/flann/octave") + (string-append out "/share/flann/octave"))) + #t))) (add-after 'install 'remove-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3003,7 +3030,7 @@ compilers and compiler versions as well as portability between different vector instruction sets. Thus, an application written with Vc can be compiled for: @enumerate @item AVX and AVX2 -@item SSE2 upto SSE4.2 or SSE4a +@item SSE2 up to SSE4.2 or SSE4a @item Scalar @item MIC @item NEON (in development) diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm index 3cdc542157..bae12439f1 100644 --- a/gnu/packages/mc.scm +++ b/gnu/packages/mc.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 ng0 <ng0@libertad.pw> +;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +30,8 @@ #:use-module (gnu packages ssh) #:use-module (gnu packages pkg-config) #:use-module (gnu packages check) - #:use-module (gnu packages perl)) + #:use-module (gnu packages perl) + #:use-module (gnu packages zip)) (define-public mc (package @@ -51,7 +52,8 @@ ("ncurses" ,ncurses) ("libssh2" ,libssh2) ("glib" ,glib) - ("check" ,check))) + ("check" ,check) + ("unzip" ,unzip))) (arguments `(#:configure-flags '("--with-screen=ncurses" "--enable-aspell") diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm new file mode 100644 index 0000000000..1e233a852d --- /dev/null +++ b/gnu/packages/mes.scm @@ -0,0 +1,102 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages mes) + #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages commencement) + #:use-module (gnu packages cross-base) + #:use-module (gnu packages gcc) + #:use-module (gnu packages guile) + #:use-module (gnu packages package-management) + #:use-module (gnu packages perl) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix licenses) + #:use-module (guix packages)) + +(define-public nyacc + (package + (name "nyacc") + (version "0.78.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/nyacc/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0xrnl2hl9rpl50n8cihvclcd951zj640fj5kpi3d6ihwcqjcdi0a")))) + (build-system gnu-build-system) + (native-inputs + `(("guile" ,guile-2.2))) + (synopsis "LALR(1) Parser Generator in Guile") + (description + "NYACC is an LALR(1) parser generator implemented in Guile. +The syntax and nomenclature should be considered not stable. It comes with +extensive examples, including parsers for the Javascript and C99 languages.") + (home-page "https://savannah.nongnu.org/projects/nyacc") + (license (list gpl3+ lgpl3+)))) + +(define-public mes + (let ((commit "d4420bbcc9f994e2cce430cf156f383dc4092bca") + (revision "0") + (triplet "i686-unknown-linux-gnu") + (version "0.6")) + (package + (name "mes") + (version (string-append version "-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/janneke/mes") + (commit commit))) + (file-name (string-append name "-" version)) + (sha256 + (base32 "0qqywk3siyhf08v7xac08lqldklrqfndlp495wgy6ii9fn93197k")))) + (build-system gnu-build-system) + (supported-systems '("i686-linux" "x86_64-linux")) + (propagated-inputs + `(("nyacc" ,nyacc))) + (native-inputs + `(("guile" ,guile-2.2) + ,@(if (string-prefix? "x86_64-linux" (or (%current-target-system) + (%current-system))) + ;; Use cross-compiler rather than #:system "i686-linux" to get + ;; MesCC 64 bit .go files installed ready for use with Guile. + `(("i686-linux-binutils" ,(cross-binutils triplet)) + ("i686-linux-gcc" ,(cross-gcc triplet))) + '()) + ("perl" ,perl))) ;build-aux/gitlog-to-changelog + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'generate-changelog + (lambda _ + (with-output-to-file "ChangeLog" + (lambda () + (display "Please run + build-aux/gitlog-to-changelog --srcdir=<git-checkout> > ChangeLog\n"))) + #t))))) + (synopsis "Maxwell Equations of Software") + (description + "Mes aims to create full source bootstrapping for GuixSD. It +consists of a mutual self-hosting [close to Guile-] Scheme interpreter +prototype in C and a Nyacc-based C compiler in [Guile] Scheme.") + (home-page "https://gitlab.com/janneke/mes") + (license gpl3+)))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index cbb4d4eaba..89df0970d6 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> @@ -166,17 +166,31 @@ identi.ca and status.net).") (define-public hexchat (package (name "hexchat") - (version "2.12.2") + (version "2.12.4") (source (origin (method url-fetch) (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-" version ".tar.xz")) (sha256 (base32 - "1xnclfbrgbkqndxygi5f27q00jd7yy54jbd1061jmhxa6wzpibbd")))) + "0ficrx56knz5y297qb0x5y02339yvyv734z7kpcx1ixvb0qr2dgs")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete dangling symlinks to a non-existent ‘/usr’. + (with-directory-excursion "m4" + (for-each (lambda (f) (delete-file f)) + '("intltool.m4" "libtool.m4" "lt~obsolete.m4" + "ltoptions.m4" "ltsugar.m4" "ltversion.m4"))) + (delete-file-recursively "build-aux") + (delete-file "po/Makefile.in.in"))))) (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config) - ("intltool" ,intltool))) + (native-inputs `(("autoconf" ,autoconf) + ("autoconf-archive" ,autoconf-archive) + ("automake" ,automake) + ("intltool" ,intltool) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) (inputs `(("dbus-glib" ,dbus-glib) ("dbus" ,dbus) ("enchant" ,enchant) @@ -190,6 +204,17 @@ identi.ca and status.net).") ("luajit" ,luajit) ("perl-xml-parser" ,perl-xml-parser) ("python-2" ,python-2))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Release 2.12.4 wasn't properly bootstrapped. Later ones might be! + (add-after 'unpack 'bootstrap + (lambda* (#:key inputs #:allow-other-keys) + ;; This file is still required for autoreconf. + (copy-file (string-append (assoc-ref inputs "intltool") + "/share/intltool/Makefile.in.in") + "po/Makefile.in.in") + (zero? (system* "autoreconf" "-fiv"))))))) (synopsis "Graphical IRC Client") (description "HexChat lets you connect to multiple IRC networks at once. The main @@ -434,24 +459,23 @@ simultaneously and therefore appear under the same nickname on IRC.") (define-public python-nbxmpp (package (name "python-nbxmpp") - (version "0.5.3") + (version "0.5.5") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/n/nbxmpp/" - "nbxmpp-" version ".tar.gz")) + (uri (pypi-uri "nbxmpp" version)) (sha256 (base32 - "0dcr786dyips1fdvgsn8yvpgcz5j7217fi05c29cfypdl8jnp6mp")))) + "1gnzrzrdl4nii1sc5x8p5iw2ya5sl70j3nn34abqsny51p2pzmv6")))) (build-system python-build-system) - ;; No tests included - (arguments `(#:tests? #f)) - (home-page "http://python-nbxmpp.gajim.org") + (arguments + `(#:tests? #f)) ; no tests + (home-page "https://dev.gajim.org/gajim/python-nbxmpp") (synopsis "Non-blocking Jabber/XMPP module") (description "The goal of this python library is to provide a way for Python applications to use Jabber/XMPP networks in a non-blocking way. This library -was initially a fork of xmpppy, but is using non-blocking sockets.") +was initially a fork of xmpppy, but uses non-blocking sockets.") (license license:gpl3+))) (define-public python2-nbxmpp @@ -1002,7 +1026,7 @@ for @uref{https://torproject.org,tor} router) and many more.") (synopsis "Perl implementation of PSYC protocol") (home-page "http://perlpsyc.psyc.eu/") (license (list license:gpl2 - (package-license perl) + license:perl-license ;; contrib/irssi-psyc.pl: license:public-domain ;; bin/psycplay states AGPL with no version: diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm index 965876b971..b343a8db6d 100644 --- a/gnu/packages/moreutils.scm +++ b/gnu/packages/moreutils.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -30,21 +30,21 @@ (define-public moreutils (package (name "moreutils") - (version "0.59") + (version "0.60") (source (origin (method url-fetch) (uri (list (string-append "mirror://debian/pool/main/m/moreutils/moreutils_" - version ".orig.tar.gz") + version ".orig.tar.xz") ;; The main Debian mirrors only hold the current packages. (string-append - "http://snapshot.debian.org/archive/debian/20161223T212806Z" - "/pool/main/m/moreutils/moreutils_0.59.orig.tar.gz"))) + "http://snapshot.debian.org/archive/debian-debug/20170109T210531Z" + "/pool/main/m/moreutils/moreutils_0.60.orig.tar.xz"))) (sha256 (base32 - "1d6ik3j4lwp90vb93p7yv60k6vk2chz448d1z9xrmxvv371i33m4")))) + "1i8pphg5i5y4x1s1hz73gqhispgspr13bysmk9vh7l6jrfx1hbg4")))) (build-system gnu-build-system) ;; For building the manual pages. (native-inputs diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index db37814463..1ed8e967ef 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -54,7 +54,7 @@ (define-public libmpdclient (package (name "libmpdclient") - (version "2.10") + (version "2.11") (source (origin (method url-fetch) (uri @@ -63,7 +63,7 @@ "/libmpdclient-" version ".tar.xz")) (sha256 (base32 - "10pzs9z815a8hgbbbiliapyiw82bnplsccj5irgqjw5f5plcs22g")))) + "1xms8q44g6zc7sc212qpcihq6ch3pmph3i1m9hzymmy0jcw6kzhm")))) (build-system gnu-build-system) (native-inputs `(("doxygen" ,doxygen))) (synopsis "Music Player Daemon client library") @@ -172,7 +172,7 @@ player daemon.") (define-public ncmpc (package (name "ncmpc") - (version "0.25") + (version "0.27") (source (origin (method url-fetch) (uri @@ -181,7 +181,7 @@ player daemon.") "/ncmpc-" version ".tar.xz")) (sha256 (base32 - "196f9s0qmc4srr10n4vk3amvqy5f52y9kvgwqpkfjsnhf75qlckf")))) + "1n8m7syhpgx24hfipixv66h2izn229jkxsmh2q5dzkv9r0znm8pr")))) (build-system gnu-build-system) (inputs `(("glib" ,glib) ("libmpdclient" ,libmpdclient) diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm index 68937a26f5..3de49ddeeb 100644 --- a/gnu/packages/mpi.scm +++ b/gnu/packages/mpi.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> ;;; @@ -41,7 +41,7 @@ (define-public hwloc (package (name "hwloc") - (version "1.11.2") + (version "1.11.7") (source (origin (method url-fetch) (uri (string-append "https://www.open-mpi.org/software/hwloc/v" @@ -49,7 +49,7 @@ "/downloads/hwloc-" version ".tar.bz2")) (sha256 (base32 - "1y7c3ysiin0rw0sj6dbxkvjg92j4by36rykvf0vmh91q2rmrn0lc")))) + "0acph1mf7588hfx8ds26ncr6nw5fd9x92adm11fwin7f93i10sdb")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 6f42160f77..5c0be39c27 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org> +;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,6 +50,7 @@ #:use-module (gnu packages cdrom) #:use-module (gnu packages code) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) @@ -582,6 +584,50 @@ for path in [path for path in sys.path if 'site-packages' in path]: site.addsite interface. It is implemented as a frontend to @code{klick}.") (license license:gpl2+))) +(define-public libgme + (package + (name "libgme") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/mpyne/game-music-emu/" + "downloads/game-music-emu-" version + ".tar.bz2")) + (sha256 + (base32 + "08fk7zddpn7v93d0fa7fcypx7hvgwx9b5psj9l6m8b87k2hbw4fw")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no check target + (home-page "https://bitbucket.org/mpyne/game-music-emu") + (synopsis "Video game music file playback library") + (description + "Game-music-emu is a collection of video game music file emulators that +support the following formats and systems: +@table @code +@item AY +ZX Spectrum/Asmtrad CPC +@item GBS +Nintendo Game Boy +@item GYM +Sega Genesis/Mega Drive +@item HES +NEC TurboGrafx-16/PC Engine +@item KSS +MSX Home Computer/other Z80 systems (doesn't support FM sound) +@item NSF/NSFE +Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound) +@item SAP +Atari systems using POKEY sound chip +@item SPC +Super Nintendo/Super Famicom +@item VGM/VGZ +Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro +@end table") + (license (list license:lgpl2.1+ + ;; demo and player directories are under the Expat license + license:expat)))) + (define-public lilypond (package (name "lilypond") @@ -742,6 +788,57 @@ session management. NSM clients use a well-specified OSC protocol to communicate with the session management daemon.") (license license:gpl2+))) +(define-public non-mixer + (package (inherit non-sequencer) + (name "non-mixer") + (arguments + (substitute-keyword-arguments (package-arguments non-sequencer) + ((#:configure-flags flags) + `(cons "--project=mixer" + (delete "--project=sequencer" ,flags))))) + (inputs + `(("jack" ,jack-1) + ("liblo" ,liblo) + ("ladspa" ,ladspa) + ("lrdf" ,lrdf) + ("ntk" ,ntk))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://non.tuxfamily.org/wiki/Non%20Mixer") + (synopsis "Modular digital audio mixer") + (description + "The Non Mixer is a powerful, reliable and fast modular digital audio +mixer. It utilizes JACK for inter-application audio I/O and the NTK GUI +toolkit for a fast and lightweight user interface. Non Mixer can be used +alone or in concert with Non Timeline and Non Sequencer to form a complete +studio.") + (license license:gpl2+))) + +(define-public non-timeline + (package (inherit non-sequencer) + (name "non-timeline") + (arguments + (substitute-keyword-arguments (package-arguments non-sequencer) + ((#:configure-flags flags) + `(cons "--project=timeline" + (delete "--project=sequencer" ,flags))))) + (inputs + `(("jack" ,jack-1) + ("liblo" ,liblo) + ("libsndfile" ,libsndfile) + ("ntk" ,ntk))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://non.tuxfamily.org/wiki/Non%20Timeline") + (synopsis "Modular digital audio timeline arranger") + (description + "The Non Timeline is a powerful, reliable and fast modular digital audio +timeline arranger. It utilizes JACK for inter-application audio I/O and the +NTK GUI toolkit for a fast and lightweight user interface. Non Timeline can +be used alone or in concert with Non Mixer and Non Sequencer to form a +complete studio.") + (license license:gpl2+))) + (define-public solfege (package (name "solfege") @@ -943,14 +1040,14 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.") (define-public jalv-select (package (name "jalv-select") - (version "0.7") + (version "0.8") (source (origin (method url-fetch) (uri (string-append "https://github.com/brummer10/jalv_select/" "archive/V" version ".tar.gz")) (sha256 (base32 - "01y93l5c1f8za04a0y4b3v0nhsm1lhj6rny9xpdgd7jz6sl6w581")))) + "0zraagwr681b5s3qifxf399c7q93jz23c8sr42gmff9zqnvxc75q")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -961,7 +1058,7 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.") (add-after 'unpack 'ignore-PATH (lambda* (#:key inputs #:allow-other-keys) (substitute* "jalv.select.cpp" - (("echo \\$PATH | tr ':' '\\\n' | xargs ls") + (("echo \\$PATH.*tr ':'.*xargs ls") (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin"))) (substitute* "jalv.select.h" (("gtkmm.h") "gtkmm-2.4/gtkmm.h")) @@ -983,7 +1080,7 @@ users to select LV2 plugins and run them with jalv.") (define-public synthv1 (package (name "synthv1") - (version "0.8.1") + (version "0.8.2") (source (origin (method url-fetch) (uri @@ -991,7 +1088,7 @@ users to select LV2 plugins and run them with jalv.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "0rzkr8mgy28j5kg56qqrdm05ml2wlm651yk27c2mn5ql7v92gdx3")))) + "0lmblhk0728bxi7cixc2j9p6gisicy6alybga9vwmg453snrsybr")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; There are no tests. @@ -1014,7 +1111,7 @@ oscillators and stereo effects.") (define-public drumkv1 (package (name "drumkv1") - (version "0.8.1") + (version "0.8.2") (source (origin (method url-fetch) (uri @@ -1022,7 +1119,7 @@ oscillators and stereo effects.") "/drumkv1-" version ".tar.gz")) (sha256 (base32 - "0l6kjb1q9vslwy56836a0c65mf8z8ycam5vzz3k4qvd8g74bs1zq")))) + "0lf9x99gmmk64xq73lcwpwqznh8s79qy2fjjjzzw6sbw99w8qyz4")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; There are no tests. @@ -1048,7 +1145,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.8.1") + (version "0.8.2") (source (origin (method url-fetch) (uri @@ -1056,7 +1153,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "15rp9d1jbb56idyrnn9cqi1i7a70z1a1qdyz7ryn0bla0ghjnich")))) + "11mxn3ff9g0x1rl4jl5rngmwlb8dmkbzsjhxb8gqhmlpfj24wl7l")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; There are no tests. @@ -1513,7 +1610,7 @@ using a system-independent interface.") (define-public frescobaldi (package (name "frescobaldi") - (version "2.19.0") + (version "3.0.0") (source (origin (method url-fetch) (uri (string-append @@ -1521,17 +1618,17 @@ using a system-independent interface.") version "/frescobaldi-" version ".tar.gz")) (sha256 (base32 - "1rnk8i8dlshzx16n2qxcsqcs7kywgyazzyzw2vy4vp2gsm9vs9ml")))) + "15cqhbjbjikr7ljgiq56bz2gxrr38j8p0f78p2vhyzydaviy9a2z")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; no tests included (inputs `(("lilypond" ,lilypond) ("portmidi" ,portmidi) - ("python-pyqt-4" ,python-pyqt-4) + ("python-pyqt" ,python-pyqt) ("python-ly" ,python-ly) ("python-pyportmidi" ,python-pyportmidi) ("poppler" ,poppler) - ("python-poppler-qt4" ,python-poppler-qt4) + ("python-poppler-qt5" ,python-poppler-qt5) ("python-sip" ,python-sip))) (home-page "http://www.frescobaldi.org/") (synopsis "LilyPond sheet music text editor") @@ -1639,7 +1736,7 @@ capabilities, custom envelopes, effects, etc.") (define-public yoshimi (package (name "yoshimi") - (version "1.5.1") + (version "1.5.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/yoshimi/" @@ -1647,7 +1744,7 @@ capabilities, custom envelopes, effects, etc.") "/yoshimi-" version ".tar.bz2")) (sha256 (base32 - "09kmq5bwgwwpa5z2mm1pxhnqcryd0cm5ixlafb3g6d3aspja2mkn")))) + "1gjanmbn08x11iz4bjlkx3m66x0yk401ddkz8fqkj7y3p5ih1kna")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; there are no tests @@ -1824,7 +1921,7 @@ follows a traditional multi-track tape recorder control paradigm.") (define-public ams-lv2 (package (name "ams-lv2") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) @@ -1833,7 +1930,7 @@ follows a traditional multi-track tape recorder control paradigm.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1392spswkhfd38fggf584wb3m8aqpg7csfrs9zxnzyvhgmp0fgqk")))) + "1xacxyzqcj83g9c1gwfn36gg1c6yi15v7km4vidfidrjzb4x27fq")))) (build-system waf-build-system) (arguments `(#:phases @@ -1866,7 +1963,7 @@ and hold, etc.") (define-public gxtuner (package (name "gxtuner") - (version "2.3") + (version "2.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/brummer10/gxtuner/" @@ -1874,7 +1971,7 @@ and hold, etc.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1abpxiydn4c9wssz6895hnad9ipkcy3rkgzbnanvwb46nm44x6if")))) + "1hn5qjac7qd00v0sp7ijhhc3sb26ks9bni06nngivva21h61xrjr")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -1886,7 +1983,7 @@ and hold, etc.") (modify-phases %standard-phases (delete 'configure)))) (inputs - `(("gtk+" ,gtk+-2) + `(("gtk+" ,gtk+) ("jack" ,jack-1) ("fftwf" ,fftwf) ("cairo" ,cairo) @@ -1902,8 +1999,8 @@ analogue-like user interface.") (define-public mod-host ;; The last release was in 2014 but since then more than 140 commits have ;; been made. - (let ((commit "72aca771e3a4e3889641b9bab84985586c9bb926") - (revision "1")) + (let ((commit "299a3977476e8eb0285837fbd7522cec506a11de") + (revision "2")) (package (name "mod-host") (version (string-append "0.10.6-" revision "." (string-take commit 9))) @@ -1914,7 +2011,7 @@ analogue-like user interface.") (commit commit))) (sha256 (base32 - "19szi8cy65jlchbrmbjbma03g6gxj9zyyp4dgw1k06r0cxbx82gq")) + "128q7p5mph086v954rqnafalfbkyvhgwclaq6ks6swrhj45wnag6")) (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -1951,7 +2048,7 @@ socket or command line.") (define-public pianobar (package (name "pianobar") - (version "2015.11.22") + (version "2016.06.02") (source (origin (method url-fetch) (uri (string-append "https://github.com/PromyLOPh/" @@ -1959,7 +2056,7 @@ socket or command line.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "022df19bhxqvkhy0qy21xahba5s1fm17b13y0p9p9dnf2yl44wfv")))) + "1hi5rr6jcr0kwf4xfz007ndwkjkp287lhwlsgfz6iryqa5n6jzcp")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests @@ -2187,7 +2284,7 @@ for improved Amiga ProTracker 2/3 compatibility.") (define-public schismtracker (package (name "schismtracker") - (version "20160913") + (version "20170420") (source (origin (method url-fetch) (uri (string-append @@ -2196,7 +2293,7 @@ for improved Amiga ProTracker 2/3 compatibility.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1sc813qi4gl6mf7xp8rrarvyigzhxv3qdrryqsy42yxsb2jcwbrw")) + "0k06vri29ayaq7mzsik3yywh6zdar2nfpkav2sp6g2rjl6k6vi5z")) (modules '((guix build utils))) (snippet ;; Remove use of __DATE__ and __TIME__ for reproducibility. @@ -2261,6 +2358,8 @@ with a number of bugfixes and changes to improve IT playback.") ("libmodplug" ,libmodplug) ("libmpcdec" ,libmpcdec) ("libmad" ,libmad) + ("libogg" ,libogg) + ("libvorbis" ,libvorbis) ("ncurses" ,ncurses) ("openssl" ,openssl) ("sasl" ,cyrus-sasl) @@ -2305,44 +2404,39 @@ standard MIDI file with the csvmidi program.") (license license:public-domain))) (define-public gx-guvnor-lv2 - (let ((commit "9f528a7623a201383e119bb6a2df32b18396a9d5") - (revision "1")) - (package - (name "gx-guvnor-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxGuvnor.lv2") - (commit commit))) - (sha256 - (base32 - "10zx84p2vd7i1yqc5ma9p17927265j4g0zfwv9rxladw0nm8y45k")) - (file-name (string-append name "-" version "-checkout")))) - (build-system gnu-build-system) - (arguments - `(;; The check target is used only to output a warning. - #:tests? #f - #:make-flags - (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda _ - (substitute* "Makefile" - (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n") - ;; Avoid rebuilding everything - (("install : all") "install:")) - #t))))) - (inputs - `(("lv2" ,lv2))) - (home-page "https://github.com/brummer10/GxGuvnor.lv2") - (synopsis "Overdrive/distortion pedal simulation") - (description "This package provides the LV2 plugin \"GxGuvnor\", a + (package + (name "gx-guvnor-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/GxGuvnor.lv2/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rnfvrvs8qmmldyfmx4llyly33zp68448gx40ywdwj42x0mam92p")))) + (build-system gnu-build-system) + (arguments + `(;; The check target is used only to output a warning. + #:tests? #f + #:make-flags + (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")) + #t))))) + (inputs + `(("lv2" ,lv2))) + (home-page "https://github.com/brummer10/GxGuvnor.lv2") + (synopsis "Overdrive/distortion pedal simulation") + (description "This package provides the LV2 plugin \"GxGuvnor\", a simulation of an overdrive or distortion pedal for guitars.") - ;; The LICENSE file says GPLv3 but the license headers in the files say - ;; GPLv2 or later. - (license license:gpl2+)))) + ;; The LICENSE file says GPLv3 but the license headers in the files say + ;; GPLv2 or later. + (license license:gpl2+))) (define-public gx-vbass-preamp-lv2 (let ((commit "0e599abab10c7669dd444e5d06f671c2fc1b9c6c") @@ -2359,6 +2453,16 @@ simulation of an overdrive or distortion pedal for guitars.") (base32 "1dzksdfrva666gpi62fd2ni9rhf18sl917f1894qr0b17pbdh9k1")) (file-name (string-append name "-" version "-checkout")))) + (arguments + (substitute-keyword-arguments (package-arguments gx-guvnor-lv2) + ((#:phases phases) + `(modify-phases ,phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n") + (("install : all") "install :")) + #t)))))) (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2") (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section") (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a @@ -2368,7 +2472,7 @@ Section.")))) (define-public gx-overdriver-lv2 (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce") (revision "1")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-overdriver-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2388,7 +2492,7 @@ overdrive effect.")))) (define-public gx-tone-mender-lv2 (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f") (revision "1")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-tone-mender-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2408,7 +2512,7 @@ clean boost effect with a 3-knob tonestack.")))) (define-public gx-push-pull-lv2 (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5") (revision "1")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-push-pull-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2426,30 +2530,28 @@ clean boost effect with a 3-knob tonestack.")))) simulation of a push pull transistor fuzz effect with added high octave.")))) (define-public gx-suppa-tone-bender-lv2 - (let ((commit "4e6dc713ec24e7fcf5ea23b7e685af627c01b9c9") - (revision "1")) - (package (inherit gx-guvnor-lv2) - (name "gx-suppa-tone-bender-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxSuppaToneBender.lv2") - (commit commit))) - (sha256 - (base32 - "1i22xr252nkbazkwidll2zb3i96610gx65qn5djdkijlz7j77138")) - (file-name (string-append name "-" version "-checkout")))) - (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2") - (synopsis "Simulation of the Vox Suppa Tone Bender pedal") - (description "This package provides the LV2 plugin + (package (inherit gx-guvnor-lv2) + (name "gx-suppa-tone-bender-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/" + "GxSuppaToneBender.lv2/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "1j90fns87035sfr6bxs4cvqxbyy3pqjhihx1nis8xajn202nl1hx")) + (file-name (string-append name "-" version ".tar.gz")))) + (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2") + (synopsis "Simulation of the Vox Suppa Tone Bender pedal") + (description "This package provides the LV2 plugin \"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender -pedal.")))) +pedal."))) (define-public gx-saturator-lv2 (let ((commit "0b581ac85c515325b9f16e51937cae6e1bf81a0a") (revision "2")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-saturator-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2467,93 +2569,85 @@ pedal.")))) saturation effect.")))) (define-public gx-hyperion-lv2 - (let ((commit "6a096a664e553e551e179e85cf390bd1683410fb") - (revision "2")) - (package (inherit gx-guvnor-lv2) - (name "gx-hyperion-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxHyperion.lv2") - (commit commit))) - (sha256 - (base32 - "1ksv3wmylhwbf6kjl2lnhr14h9rfl291cfm21471gnb1r68yqfxh")) - (file-name (string-append name "-" version "-checkout")))) - (home-page "https://github.com/brummer10/GxHyperion.lv2") - (synopsis "Simulation of the Hyperion Fuzz pedal") - (description "This package provides the LV2 plugin \"GxHyperion\", a -simulation of the Hyperion Fuzz pedal.")))) + (package (inherit gx-guvnor-lv2) + (name "gx-hyperion-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/" + "GxHyperion.lv2/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "1pd7l33a14kq73wavgqq7csw4n3mwjz9d5rxaj0jgsyxd3llp3wh")) + (file-name (string-append name "-" version ".tar.gz")))) + (home-page "https://github.com/brummer10/GxHyperion.lv2") + (synopsis "Simulation of the Hyperion Fuzz pedal") + (description "This package provides the LV2 plugin \"GxHyperion\", a +simulation of the Hyperion Fuzz pedal."))) (define-public gx-voodoo-fuzz-lv2 - (let ((commit "aec7889b489385e8add06126e7a36ae2e26254b1") - (revision "2")) - (package (inherit gx-guvnor-lv2) - (name "gx-voodoo-fuzz-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxVoodoFuzz.lv2") - (commit commit))) - (sha256 - (base32 - "0mc41ldlv89069iaysnfiqxy5h5sr8mdi5cxm3ij5q5v4jv3viwx")) - (file-name (string-append name "-" version "-checkout")))) - (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2") - (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz") - (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a + (package (inherit gx-guvnor-lv2) + (name "gx-voodoo-fuzz-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/" + "GxVoodoFuzz.lv2/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "0cc8sg7q493bs6pcq4ipqp6czpxv04nh9yvn8kq2x65ni2208n2f")) + (file-name (string-append name "-" version ".tar.gz")))) + (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2") + (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz") + (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a Bosstone circuit, followed by the tone control of the FoxToneMachine in -parallel with a DarkBooster, followed by a volume control.")))) +parallel with a DarkBooster, followed by a volume control."))) (define-public gx-super-fuzz-lv2 - (let ((commit "f40389575812c909007d140d327ce579930b71f7") - (revision "2")) - (package (inherit gx-guvnor-lv2) - (name "gx-super-fuzz-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxSuperFuzz.lv2") - (commit commit))) - (sha256 - (base32 - "174bibj8qzm8zr6f5h8bcj94iry17zravk8flpdy84n6yg7cixji")) - (file-name (string-append name "-" version "-checkout")))) - (home-page "https://github.com/brummer10/GxSuperFuzz.lv2") - (synopsis "Fuzz effect modelled after the UniVox SuperFuzz") - (description "This package provides the LV2 plugin \"GxVoodooFuzz\", an + (package (inherit gx-guvnor-lv2) + (name "gx-super-fuzz-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/" + "GxSuperFuzz.lv2/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "0pnivq05f1kji8c5jxsqdzhdfk3xn422v2d1x20x3jfsxnaf115x")) + (file-name (string-append name "-" version ".tar.gz")))) + (home-page "https://github.com/brummer10/GxSuperFuzz.lv2") + (synopsis "Fuzz effect modelled after the UniVox SuperFuzz") + (description "This package provides the LV2 plugin \"GxSuperFuzz\", an analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim -pot, which is usualy in the housing, is exposed as a control parameter. It -adjusts the amount of harmonics.")))) +pot, which is usually in the housing, is exposed as a control parameter. It +adjusts the amount of harmonics."))) (define-public gx-vintage-fuzz-master-lv2 - (let ((commit "0fec0bc1e8a8ba909a68e916e036138a3425d7db") - (revision "2")) - (package (inherit gx-guvnor-lv2) - (name "gx-vintage-fuzz-master-lv2") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2") - (commit commit))) - (sha256 - (base32 - "06szi6d2iwkygbw5azhwzhcl2as4lmk2gs9hanngsf46a1zbdcp7")) - (file-name (string-append name "-" version "-checkout")))) - (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2") - (synopsis "Fuzz effect simulation of the vintage Fuzz Master") - (description "This package provides the LV2 plugin -\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))) + (package (inherit gx-guvnor-lv2) + (name "gx-vintage-fuzz-master-lv2") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/brummer10/" + "GxVintageFuzzMaster.lv2/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "0bdkfj6xi2g4izfw3pmr4i0nqzg8jnkdwc23x9ifxwc6p1kbayzk")) + (file-name (string-append name "-" version ".tar.gz")))) + (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2") + (synopsis "Fuzz effect simulation of the vintage Fuzz Master") + (description "This package provides the LV2 plugin +\"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal."))) (define-public gx-slow-gear-lv2 (let ((commit "cb852e0426f4e6fe077e7f1ede73a4da335cfc5e") (revision "2")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-slow-gear-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2573,7 +2667,7 @@ slow gear audio effect to produce volume swells.")))) (define-public gx-switchless-wah-lv2 (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665") (revision "2")) - (package (inherit gx-guvnor-lv2) + (package (inherit gx-vbass-preamp-lv2) (name "gx-switchless-wah-lv2") (version (string-append "0-" revision "." (string-take commit 9))) (source (origin @@ -2898,3 +2992,91 @@ are a C compiler and glib. Full API documentation and examples are included.") melodies and beats and for mixing and arranging songs. LMMS includes instruments based on audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.") (license license:gpl2+))) + +(define-public musescore + (package + (name "musescore") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/musescore/MuseScore/archive/" + "v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0irwsq6ihfz3y3b943cwqy29g3si7gqbgxdscgw53vwv9vfvi085")) + (modules '((guix build utils))) + (snippet + ;; Un-bundle OpenSSL and remove unused libraries. + '(begin + (substitute* "thirdparty/kQOAuth/CMakeLists.txt" + (("-I \\$\\{PROJECT_SOURCE_DIR\\}/thirdparty/openssl/include ") + "")) + (substitute* "thirdparty/kQOAuth/kqoauthutils.cpp" + (("#include <openssl/.*") "")) + (for-each delete-file-recursively + '("thirdparty/freetype" + "thirdparty/openssl" + "thirdparty/portmidi")) + #t)))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))) + ;; There are tests, but no simple target to run. The command + ;; used to run them is: + ;; + ;; make debug && sudo make installdebug && cd \ + ;; build.debug/mtest && make && ctest + ;; + ;; Basically, it requires to start a whole new build process. + ;; So we simply skip them. + #:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'use-system-freetype + (lambda _ + ;; XXX: For the time being, we grossly insert the CMake + ;; option needed to ignore bundled freetype. However, + ;; there's a pending PR to have it as a regular make + ;; option, in a future release. + (substitute* "Makefile" + (("cmake -DCMAKE") "cmake -DUSE_SYSTEM_FREETYPE=ON -DCMAKE")) + #t))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("freetype" ,freetype) + ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache + ("jack" ,jack-1) + ("lame" ,lame) + ("libogg" ,libogg) + ("libsndfile" ,libsndfile) + ("libvorbis" ,libvorbis) + ("portaudio" ,portaudio) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtscript" ,qtscript) + ("qtsvg" ,qtsvg) + ("qtwebkit" ,qtwebkit) + ("qtxmlpatterns" ,qtxmlpatterns))) + (native-inputs + `(("cmake" ,cmake) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (synopsis "Music composition and notation software") + (description "MuseScore is a music score typesetter. Its main purpose is +the creation of high-quality engraved musical scores in a WYSIWYG environment. + +It supports unlimited staves, linked parts and part extraction, tablature, +MIDI input, percussion notation, cross-staff beaming, automatic transposition, +lyrics (multiple verses), fretboard diagrams, and in general everything +commonly used in sheet music. Style options and style sheets to change the +appearance and layout are provided. + +MuseScore can also play back scores through the built-in sequencer and SoundFont +sample library.") + (home-page "https://musescore.org") + (license license:gpl2))) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 36909032a1..61ff3ced06 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -29,15 +29,15 @@ (define-public nano (package (name "nano") - (version "2.8.0") + (version "2.8.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/nano/nano-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "0dlid11c8jkv0b9n73lc3mj274y5c7y08n7pzv947qz50m446yqb")))) + "04bvmimrw40cbcnm3xm5l5lir0qy7cncfkmwrlzg8jiy1x7jdky7")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index a494679651..44a79e7186 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -252,7 +252,7 @@ curses widgets, such as dialog boxes.") (description "@code{Curses} is the interface between Perl and the curses library of your system.") - (license (package-license perl)))) + (license perl-license))) (define-public stfl (package diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 0c7dcd0fc3..94152226da 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com> @@ -12,6 +12,7 @@ ;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch> ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -304,14 +305,14 @@ receiving NDP messages.") (define-public ethtool (package (name "ethtool") - (version "4.8") + (version "4.10") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/network/" name "/" name "-" version ".tar.xz")) (sha256 (base32 - "0hsaxcka0ks76k23sb65c46i53hjm465sgxyn3m3301diqlgwga0")))) + "1fklbjwr41cvd5b7d1qvpl3bqzc4aak732r3m2wjhhgkxhk9f07h")))) (build-system gnu-build-system) (home-page "https://www.kernel.org/pub/software/network/ethtool/") (synopsis "Display or change Ethernet device settings") @@ -379,7 +380,7 @@ intended as a substitute for the PPPStatus and EthStatus projects.") (description "Nload is a console application which monitors network traffic and bandwidth usage in real time. It visualizes the in- and outgoing traffic using -two graphs and provides additional info like total amount of transfered data +two graphs, and provides additional info like total amount of transferred data and min/max network usage.") (license license:gpl2+))) @@ -470,7 +471,7 @@ which can be used to encrypt a password with @code{crypt(3)}.") (define-public wireshark (package (name "wireshark") - (version "2.2.5") + (version "2.2.6") (synopsis "Network traffic analyzer") (source (origin @@ -479,7 +480,7 @@ which can be used to encrypt a password with @code{crypt(3)}.") version ".tar.bz2")) (sha256 (base32 - "1j4sc3pmy8l6k41007spglcqiabjlzc7f85pn3jmjr9ksv9qipbm")))) + "0jd89i9si43lyv3hsl6p1lkjmz4zagvc37wcbigsxxc5v8gda9zn")))) (build-system glib-or-gtk-build-system) (inputs `(("bison" ,bison) ("c-ares" ,c-ares) @@ -726,8 +727,7 @@ definitions and structure manipulators for Perl.") (base32 "1v3nl2kaj4fs55n1617n53q8sa3mir06898vpy1rq98zjih24h4d")) (patches - (search-patches - "perl-net-dns-resolver-programmable-Fix-broken-interface.patch")))) + (search-patches "perl-net-dns-resolver-programmable-fix.patch")))) (build-system perl-build-system) (native-inputs `(("perl-module-build" ,perl-module-build))) @@ -738,7 +738,7 @@ definitions and structure manipulators for Perl.") "Programmable DNS resolver class for offline emulation of DNS") (description "Net::DNS::Resolver::Programmable is a programmable DNS resolver for offline emulation of DNS.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-netaddr-ip (package @@ -771,7 +771,7 @@ offline emulation of DNS.") (synopsis "Manages IPv4 and IPv6 addresses and subnets") (description "NetAddr::IP manages IPv4 and IPv6 addresses and subsets.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-net-patricia (package @@ -845,7 +845,7 @@ offline emulation of DNS.") "Look up location and network information by IP Address in Perl") (description "The Perl module 'Geo::IP'. It looks up location and network information by IP Address.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-io-socket-inet6 (package @@ -875,7 +875,7 @@ information by IP Address.") "Perl object interface for AF_INET/AF_INET6 domain sockets") (description "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain sockets in Perl.") - (license (package-license perl)))) + (license license:perl-license))) (define-public proxychains-ng (package @@ -1121,10 +1121,28 @@ IPFIX, RSPAN, CLI, LACP, 802.1ag).") license:bsd-2 license:bsd-3 license:asl2.0)))) ; all other +(define-public python-ipy + (package + (name "python-ipy") + (version "0.83") + (source (origin + (method url-fetch) + (uri (pypi-uri "IPy" version)) + (sha256 + (base32 + "1f6sdrxclifky4gvkf4gvyv5hx3fjh8vzspnfrqki6qm5d9mmnk1")))) + (build-system python-build-system) + (home-page "https://github.com/autocracy/python-ipy/") + (synopsis "Python class and tools for handling IP addresses and networks") + (description "The @code{IP} class allows a comfortable parsing and +handling for most notations in use for IPv4 and IPv6 addresses and +networks.") + (license license:bsd-3))) + (define-public speedtest-cli (package (name "speedtest-cli") - (version "1.0.2") + (version "1.0.6") (source (origin (method url-fetch) @@ -1133,7 +1151,7 @@ IPFIX, RSPAN, CLI, LACP, 802.1ag).") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1ir9fqwr7cl9kfq7dgh9vkydkwf59wsx0cwbzbffw8i313xhzxa1")))) + "1alambi1ljng6j04k7pq58jqwd0wh1q9630f17nl34ljabji5lwy")))) (build-system python-build-system) (home-page "https://github.com/sivel/speedtest-cli") (synopsis "Internet bandwidth tester") diff --git a/gnu/packages/nfs.scm b/gnu/packages/nfs.scm index f18fe6cb51..28751c4004 100644 --- a/gnu/packages/nfs.scm +++ b/gnu/packages/nfs.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,7 +21,6 @@ #:use-module (gnu packages) #:use-module (gnu packages linux) #:use-module (gnu packages databases) - #:use-module (gnu packages gsasl) #:use-module (gnu packages libevent) #:use-module (gnu packages kerberos) #:use-module (gnu packages onc-rpc) @@ -41,7 +41,7 @@ (define-public nfs-utils (package (name "nfs-utils") - (version "1.3.4") + (version "2.1.1") (source (origin (method url-fetch) (uri (string-append @@ -49,7 +49,7 @@ "/nfs-utils-" version ".tar.xz")) (sha256 (base32 - "0xarqhwy757vazv9gqhyrgxsrx083yhvkkih01jh83fqm305naml")))) + "1vqrqzhg9nh2wj1icp7k8v9dibgnn521b45np79nnkmqf16bbbhg")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -57,48 +57,47 @@ ,(string-append "--with-start-statd=" (assoc-ref %outputs "out") "/sbin/start-statd") ,(string-append "--with-krb5=" (assoc-ref %build-inputs "mit-krb5"))) - #:phases (modify-phases %standard-phases - (add-before - 'configure 'adjust-command-file-names - (lambda _ - ;; Remove assumptions of FHS from start-statd script - (substitute* `("utils/statd/start-statd") - (("^PATH=.*") "") - (("^flock") - (string-append - (assoc-ref %build-inputs "util-linux") - "/bin/flock")) - (("^exec rpc.statd") - (string-append "exec " - (assoc-ref %outputs "out") "/sbin/rpc.statd"))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'adjust-command-file-names + (lambda _ + ;; Remove assumptions of FHS from start-statd script + (substitute* `("utils/statd/start-statd") + (("^PATH=.*") "") + (("^flock") + (string-append + (assoc-ref %build-inputs "util-linux") + "/bin/flock")) + (("^exec rpc.statd") + (string-append "exec " + (assoc-ref %outputs "out") "/sbin/rpc.statd"))) - ;; This hook tries to write to /var - ;; That needs to be done by a service too. - (substitute* `("Makefile.in") - (("^install-data-hook:") - "install-data-hook-disabled-for-guix:")) + ;; This hook tries to write to /var + ;; That needs to be done by a service too. + (substitute* `("Makefile.in") + (("^install-data-hook:") + "install-data-hook-disabled-for-guix:")) - ;; Replace some hard coded paths. - (substitute* `("utils/nfsd/nfssvc.c") - (("/bin/mount") - (string-append - (assoc-ref %build-inputs "util-linux") - "/bin/mount"))) - (substitute* `("utils/statd/statd.c") - (("/usr/sbin/") - (string-append (assoc-ref %outputs "out") "/sbin/"))) - (substitute* `("utils/osd_login/Makefile.in" - "utils/mount/Makefile.in" - "utils/nfsdcltrack/Makefile.in") - (("^sbindir = /sbin") - (string-append "sbindir = " - (assoc-ref %outputs "out") "/sbin"))) - #t))))) + ;; Replace some hard coded paths. + (substitute* `("utils/nfsd/nfssvc.c") + (("/bin/mount") + (string-append + (assoc-ref %build-inputs "util-linux") + "/bin/mount"))) + (substitute* `("utils/statd/statd.c") + (("/usr/sbin/") + (string-append (assoc-ref %outputs "out") "/sbin/"))) + (substitute* `("utils/osd_login/Makefile.in" + "utils/mount/Makefile.in" + "utils/nfsdcltrack/Makefile.in") + (("^sbindir = /sbin") + (string-append "sbindir = " + (assoc-ref %outputs "out") "/sbin"))) + #t))))) (inputs `(("libevent" ,libevent) ("libnfsidmap" ,libnfsidmap) ("sqlite" ,sqlite) ("lvm2" ,lvm2) - ("gss" ,gss) ("util-linux" ,util-linux) ("mit-krb5" ,mit-krb5) ("libtirpc" ,libtirpc))) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 2df7816b59..69bd928833 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -26,6 +26,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages adns) #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -33,27 +34,30 @@ #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages python) - #:use-module (gnu packages tls)) + #:use-module (gnu packages tls) + #:use-module (gnu packages web)) (define-public node (package (name "node") - (version "6.8.0") + (version "7.10.0") (source (origin (method url-fetch) (uri (string-append "http://nodejs.org/dist/v" version "/node-v" version ".tar.gz")) (sha256 (base32 - "0lj3250hglz4w5ic4svd7wlg2r3qc49hnasvbva1v69l8yvx98m8")) + "00vdmb0z8b2sd547bkksgy9dfq5gi5xfd9b3f0rc4ngvpzl3z164")) ;; https://github.com/nodejs/node/pull/9077 (patches (search-patches "node-9077.patch")))) (build-system gnu-build-system) (arguments - ;; TODO: Package http_parser and add --shared-http-parser. + ;; TODO: Purge the bundled copies from the source. '(#:configure-flags '("--shared-openssl" "--shared-zlib" "--shared-libuv" + "--shared-cares" + "--shared-http-parser" "--without-snapshot") #:phases (modify-phases %standard-phases @@ -62,6 +66,7 @@ ;; Fix hardcoded /bin/sh references. (substitute* '("lib/child_process.js" "lib/internal/v8_prof_polyfill.js" + "test/parallel/test-child-process-spawnsync-shell.js" "test/parallel/test-stdio-closed.js") (("'/bin/sh'") (string-append "'" (which "sh") "'"))) @@ -85,7 +90,9 @@ "test/parallel/test-cluster-master-error.js" "test/parallel/test-cluster-master-kill.js" "test/parallel/test-npm-install.js" - "test/sequential/test-child-process-emfile.js")) + "test/sequential/test-child-process-emfile.js" + "test/sequential/test-benchmark-child-process.js" + "test/sequential/test-http-regr-gh-2928.js")) #t)) (replace 'configure ;; Node's configure script is actually a python script, so we can't @@ -120,7 +127,9 @@ ("util-linux" ,util-linux) ("which" ,which))) (inputs - `(("libuv" ,libuv) + `(("c-ares" ,c-ares) + ("http-parser" ,http-parser) + ("libuv" ,libuv) ("openssl" ,openssl) ("zlib" ,zlib))) (synopsis "Evented I/O for V8 JavaScript") @@ -130,4 +139,5 @@ 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.") (home-page "http://nodejs.org/") - (license expat))) + (license expat) + (properties '((timeout . 3600))))) ; 1 h diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 169e42236f..b9f1d53cf6 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,7 +38,6 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages libevent) - #:use-module (gnu packages lynx) #:use-module (gnu packages m4) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -50,6 +50,7 @@ #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) + #:use-module (gnu packages web-browsers) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (guix build-system gnu) @@ -58,7 +59,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix svn-download) - #:use-module (guix utils)) + #:use-module (guix utils) + #:use-module (srfi srfi-1)) ;; A shortcut for files from ocaml forge. Downloaded files are computed from ;; their number, not their name. @@ -212,6 +214,36 @@ functional, imperative and object-oriented styles of programming.") ;; distributed under lgpl2.0. (license (list license:qpl license:lgpl2.0)))) +(define-public ocaml-4.01 + (package + (inherit ocaml) + (version "4.01.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://caml.inria.fr/pub/distrib/ocaml-" + (version-major+minor version) + "/ocaml-" version ".tar.xz")) + (sha256 + (base32 + "03d7ida94s1gpr3gadf4jyhmh5rrszd5s4m4z59daaib25rvfyv7")))) + (arguments + (substitute-keyword-arguments (package-arguments ocaml) + ((#:phases phases) + `(modify-phases ,phases + (replace 'build + (lambda _ + ;; Specifying '-j' at all causes the build to fail. + (zero? (system* "make" "world.opt")))) + (replace 'check + (lambda _ + (with-directory-excursion "testsuite" + (zero? (system* + "make" + "all" + (string-append + "TOPDIR=" (getcwd) "/..")))))))))))) + (define-public opam (package (name "opam") @@ -807,6 +839,14 @@ compilation and linkage, there are new frontends of the various OCaml compilers that can directly deal with packages.") (license license:x11))) +(define-public ocaml4.01-findlib + (package + (inherit ocaml-findlib) + (name "ocaml4.01-findlib") + (native-inputs + `(("m4" ,m4) + ("ocaml" ,ocaml-4.01))))) + ;; note that some tests may hang for no obvious reason. (define-public ocaml-ounit (package @@ -832,6 +872,9 @@ compilers that can directly deal with packages.") other XUnit testing frameworks.") (license license:expat))) +(define-public ocaml4.01-ounit + (package-with-ocaml4.01 ocaml-ounit)) + (define-public camlzip (package (name "camlzip") @@ -874,6 +917,24 @@ JAR format. It provides functions for reading from and writing to compressed files in these formats.") (license license:lgpl2.1+))) +(define-public ocaml4.01-camlzip + (let ((base (package-with-ocaml4.01 camlzip))) + (package + (inherit base) + (name "ocaml4.01-camlzip") + ;; Version 1.05 is the last version to support OCaml 4.01.0. + (version "1.05") + (source + (origin + (method url-fetch) + (uri + (string-append + "http://forge.ocamlcore.org/frs/download.php/1037/camlzip-" + version ".tar.gz")) + (sha256 + (base32 + "0syh72jk9s0qwjmmfrkqchaj98m020ii082jn38pwnmb6v3p02wk"))))))) + (define-public ocamlmod (package (name "ocamlmod") @@ -969,6 +1030,29 @@ It provides support for ANSI C syntax, old-C K&R style syntax and the standard GNU CC attributes. It provides also a C pretty printer as an example of use.") (license license:lgpl2.1))) +(define-public ocaml-qcheck + (package + (name "ocaml-qcheck") + (version "0.5.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/c-cube/qcheck/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zs1pg5cb1iry554v3cdmmiglsrwmsqa9x8zxmzb118fnk5d3ha6")))) + (build-system ocaml-build-system) + (native-inputs + `(("ounit" ,ocaml-ounit))) + (home-page "https://github.com/c-cube/qcheck") + (synopsis "QuickCheck inspired property-based testing for OCaml") + (description "QuickCheck inspired property-based testing for OCaml. This +module allows to check invariants (properties of some types) over randomly +generated instances of the type. It provides combinators for generating +instances and printing them.") + (license license:lgpl3+))) + (define-public ocaml-qtest (package (name "ocaml-qtest") @@ -984,7 +1068,8 @@ GNU CC attributes. It provides also a C pretty printer as an example of use.") (native-inputs `(("findlib" ,ocaml-findlib))) (propagated-inputs - `(("ounit" ,ocaml-ounit))) + `(("ounit" ,ocaml-ounit) + ("qcheck" ,ocaml-qcheck))) (arguments `(#:tests? #f ; No test target. #:make-flags @@ -1000,6 +1085,9 @@ qcheck library. The possibilities range from trivial tests -- extremely simple to use -- to sophisticated random generation of test cases.") (license license:lgpl3+))) +(define-public ocaml4.01-qtest + (package-with-ocaml4.01 ocaml-qtest)) + (define-public ocaml-stringext (package (name "ocaml-stringext") @@ -1063,8 +1151,22 @@ a camlp4-based tool that allows to instrument your application before running tests. After application execution, it is possible to generate a report in HTML format that is the replica of the application source code annotated with code coverage information.") + (properties `((ocaml4.01-variant . ,(delay ocaml4.01-bisect)))) (license license:gpl3+))) +(define-public ocaml4.01-bisect + (let ((base (package-with-ocaml4.01 (strip-ocaml4.01-variant ocaml-bisect)))) + (package + (inherit base) + (arguments + `(#:ocaml ,ocaml-4.01 + ;; Camlp4 is included with OCaml 4.01, so do not include it as a + ;; separate input. + ,@(strip-keyword-arguments '(#:make-flags) (package-arguments base)))) + (native-inputs `(,@(alist-delete "camlp4" (package-native-inputs base)))) + (propagated-inputs + `(,@(alist-delete "camlp4" (package-propagated-inputs base))))))) + (define-public ocaml-bitstring (package (name "ocaml-bitstring") @@ -1243,6 +1345,9 @@ coexistence with the old (version 2) SQLite and its OCaml wrapper @code{ocaml-sqlite}.") (license license:expat))) +(define-public ocaml4.01-sqlite3 + (package-with-ocaml4.01 ocaml-sqlite3)) + (define-public ocaml-csv (package (name "ocaml-csv") @@ -1267,6 +1372,9 @@ read and write files in this format as well as some convenience functions to manipulate such data.") (license (package-license camlp4)))) +(define-public ocaml4.01-csv + (package-with-ocaml4.01 ocaml-csv)) + (define-public ocaml-mtime (package (name "ocaml-mtime") @@ -1656,6 +1764,9 @@ format. It can process XML documents without a complete in-memory representation of the data.") (license license:isc))) +(define-public ocaml4.01-xmlm + (package-with-ocaml4.01 ocaml-xmlm)) + (define-public ocaml-ulex (package (name "ocaml-ulex") @@ -1921,6 +2032,9 @@ every compliant installation of OCaml and organize these libraries into a hierarchy of modules.") (license license:lgpl2.1+))) +(define-public ocaml4.01-batteries + (package-with-ocaml4.01 ocaml-batteries)) + (define-public ocaml-pcre (package (name "ocaml-pcre") diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm index ddae1a7f88..2b67ed1908 100644 --- a/gnu/packages/ocr.scm +++ b/gnu/packages/ocr.scm @@ -28,14 +28,14 @@ (define-public ocrad (package (name "ocrad") - (version "0.25") + (version "0.26") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ocrad/ocrad-" version ".tar.lz")) (sha256 (base32 - "1m2dblgvvjs48rsglfdwq0ib9zk8h9n34xsh67ibrg0g0ffbw477")))) + "0g4fq7maybdnd1471kd05a3f5sb7spa3d26k706rk85sd5wd70y3")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (home-page "https://www.gnu.org/software/ocrad/") diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm index 5f67823a40..a76ac36eab 100644 --- a/gnu/packages/onc-rpc.scm +++ b/gnu/packages/onc-rpc.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +22,7 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (gnu packages) #:use-module (gnu packages kerberos) #:use-module (gnu packages pkg-config) #:use-module (guix build-system gnu)) @@ -28,15 +30,16 @@ (define-public libtirpc (package (name "libtirpc") - (version "0.2.4") + (version "1.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libtirpc/libtirpc/" version "/libtirpc-" version ".tar.bz2")) + (patches (search-patches "libtirpc-CVE-2017-8779.patch")) (sha256 (base32 - "18a337wa4amf0k21wnimp3yzs5l3cxqndz4x3x8bm993zhfy5hs5")))) + "17mqrdgsgp9m92pmq7bvr119svdg753prqqxmg4cnz5y657rfmji")))) (build-system gnu-build-system) (arguments `(#:phases @@ -66,16 +69,17 @@ IPv4 and IPv6. ONC RPC is notably used by the network file system (NFS).") (define-public rpcbind (package (name "rpcbind") - (version "0.2.3") + (version "0.2.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" version "/" name "-" version ".tar.bz2")) + (patches (search-patches "rpcbind-CVE-2017-8779.patch")) (sha256 (base32 - "0yyjzv4161rqxrgjcijkrawnk55rb96ha0pav48s03l2klx855wq")))) + "0rjc867mdacag4yqvs827wqhkh27135rp9asj06ixhf71m9rljh7")))) (build-system gnu-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index 627319bda8..987719492f 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,8 +27,11 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages groff) #:use-module (gnu packages icu4c) + #:use-module (gnu packages kerberos) + #:use-module (gnu packages linux) + #:use-module (gnu packages python) #:use-module (gnu packages tls) - #:use-module ((guix licenses) #:select (openldap2.8)) + #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu)) @@ -74,3 +78,51 @@ "OpenLDAP is a free implementation of the Lightweight Directory Access Protocol.") (license openldap2.8) (home-page "http://www.openldap.org/"))) + +(define-public nss-pam-ldapd + (package + (name "nss-pam-ldapd") + (version "0.9.7") + (source (origin + (method url-fetch) + (uri (string-append "https://arthurdejong.org/nss-pam-ldapd/" + "nss-pam-ldapd-" version ".tar.gz")) + (sha256 + (base32 + "1sw36w6zkzvabvjckqick032j5p5xi0qi3sgnh0znzxz31jqvf0d")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-pam-seclib-dir=" + (assoc-ref %outputs "out") "/lib/security/") + ;; nslcd cannot be convinced to look at run-time for its + ;; configuration file at a location that differs from the + ;; configured location. + "--with-ldap-conf-file=/etc/nslcd.conf") + #:phases + (modify-phases %standard-phases + ;; This is necessary because we tell nslcd with configure flags that + ;; it should look for its configuration file at /etc/nslcd.conf. The + ;; build system tries to install a default configuration to that very + ;; location. + (add-after 'unpack 'override-nslcd.conf-install-path + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile.in" + (("\\$\\(DESTDIR\\)\\$\\(NSLCD_CONF_PATH\\)") + (string-append (assoc-ref outputs "out") + "/etc/nslcd.conf.example"))) + #t))))) + (inputs + `(("linux-pam" ,linux-pam) + ("openldap" ,openldap) + ("mit-krb5" ,mit-krb5) + ("python" ,python-2))) + (home-page "https://arthurdejong.org/nss-pam-ldapd") + (synopsis "NSS and PAM modules for LDAP") + (description "nss-pam-ldapd provides a @dfn{Name Service Switch} (NSS) +module that allows your LDAP server to provide user account, group, host name, +alias, netgroup, and basically any other information that you would normally +get from @file{/etc} flat files or NIS. It also provides a @dfn{Pluggable +Authentication Module} (PAM) to do identity and authentication management with +an LDAP server.") + (license lgpl2.1+))) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 2760d4d2fb..12e1f9e6c0 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -52,6 +52,7 @@ #:use-module (gnu packages tls) #:use-module (gnu packages ssh) #:use-module (gnu packages vim) + #:use-module (srfi srfi-1) #:use-module (ice-9 match)) (define (boot-guile-uri arch) @@ -61,204 +62,221 @@ arch "-linux" "/20150101/guile-2.0.11.tar.xz")) ((string=? "aarch64" arch) - (let ((suffix "/bootstrap/aarch64-linux/20170217/guile-2.0.14.tar.xz")) - (list (string-append "http://alpha.gnu.org/gnu/guix" suffix) - (string-append "http://flashner.co.il/guix" suffix)))) + (string-append "http://alpha.gnu.org/gnu/guix/bootstrap/" + arch "-linux/20170217/guile-2.0.14.tar.xz")) (else (string-append "http://alpha.gnu.org/gnu/guix/bootstrap/" arch "-linux" "/20131110/guile-2.0.9.tar.xz")))) -(define-public guix-0.12.0 - (package - (name "guix") - (version "0.12.0") - (source (origin - (method url-fetch) - (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" - version ".tar.gz")) - (sha256 - (base32 - "1jgy5mlygmhxdqhrp6vr8w83ndcm5mk64xfravr8l2d7hq8y40b2")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags (list - "--localstatedir=/var" - "--sysconfdir=/etc" - (string-append "--with-bash-completion-dir=" - (assoc-ref %outputs "out") - "/etc/bash_completion.d") - (string-append "--with-libgcrypt-prefix=" - (assoc-ref %build-inputs - "libgcrypt"))) - #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097> - #:phases (modify-phases %standard-phases - (add-before - 'configure 'copy-bootstrap-guile - (lambda* (#:key system inputs #:allow-other-keys) - (define (boot-guile-version arch) - (cond ((string=? "armhf" arch) "2.0.11") - ((string=? "aarch64" arch) "2.0.14") - (else "2.0.9"))) +(define-public guix + ;; Latest version of Guix, which may or may not correspond to a release. + ;; Note: the 'update-guix-package.scm' script expects this definition to + ;; start precisely like this. + (let ((version "0.13.0") + (commit "a6d728b7aaee09892b0b420d07ed2dbb7de5e63f") + (revision 1)) + (package + (name "guix") - (define (copy arch) - (let ((guile (assoc-ref inputs - (string-append "boot-guile/" - arch))) - (target (string-append "gnu/packages/bootstrap/" - arch "-linux/" - "/guile-" - (boot-guile-version arch) - ".tar.xz"))) - (mkdir-p (dirname target)) ;XXX: eventually unneeded - (copy-file guile target))) + (version (if (zero? revision) + version + (string-append version "-" + (number->string revision) + "." (string-take commit 7)))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/r/guix.git") + (commit commit))) + (sha256 + (base32 + "1nrskyk8z6w5i9cdfh5zxfgsrqf744sb30ssqi2g5xhijwagr1yq")) + (file-name (string-append "guix-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list + "--localstatedir=/var" + "--sysconfdir=/etc" + (string-append "--with-bash-completion-dir=" + (assoc-ref %outputs "out") + "/etc/bash_completion.d") + (string-append "--with-libgcrypt-prefix=" + (assoc-ref %build-inputs + "libgcrypt")) - (copy "i686") - (copy "x86_64") - (copy "mips64el") - (copy "armhf") - (copy "aarch64") - #t)) - (add-after - 'unpack 'disable-container-tests - ;; XXX FIXME: These tests fail within the build container. - (lambda _ - (substitute* "tests/syscalls.scm" - (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all) - (string-append "(test-skip 1)\n" all))) - (substitute* "tests/containers.scm" - (("^\\(test-(assert|equal)" 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) - ;; Make sure the 'guix' command finds GnuTLS and - ;; Guile-JSON automatically. - (let* ((out (assoc-ref outputs "out")) - (json (assoc-ref inputs "guile-json")) - (ssh (assoc-ref inputs "guile-ssh")) - (gnutls (assoc-ref inputs "gnutls")) - (path (string-append - json "/share/guile/site/2.0:" - ssh "/share/guile/site/2.0:" - gnutls "/share/guile/site/2.0"))) + ;; 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.) + "ac_cv_path_DOT_USER_PROGRAM=dot" - (wrap-program (string-append out "/bin/guix") - `("GUILE_LOAD_PATH" ":" prefix (,path)) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path))) + ;; To avoid problems with the length of shebangs, + ;; choose a fixed-width and short directory name + ;; for tests. + "ac_cv_guix_test_root=/tmp/guix-tests") + #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097> - #t)))))) - (native-inputs `(("pkg-config" ,pkg-config) + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 popen) + (ice-9 rdelim)) - ;; XXX: Keep the development inputs here even though - ;; they're unnecessary, just so that 'guix environment - ;; guix' always contains them. - ("autoconf" ,(autoconf-wrapper)) - ("automake" ,automake) - ("gettext" ,gettext-minimal) - ("texinfo" ,texinfo) - ("graphviz" ,graphviz) - ("help2man" ,help2man))) - (inputs - (let ((boot-guile (lambda (arch hash) - (origin - (method url-fetch) - (uri (boot-guile-uri arch)) - (sha256 hash))))) - `(("bzip2" ,bzip2) - ("gzip" ,gzip) - ("zlib" ,zlib) ;for 'guix publish' + #:phases (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ + ;; Make sure 'msgmerge' can modify the PO files. + (for-each (lambda (po) + (chmod po #o666)) + (find-files "." "\\.po$")) - ("sqlite" ,sqlite) - ("libgcrypt" ,libgcrypt) - ("guile" ,guile-2.0) + (zero? (system* "sh" "bootstrap")))) + (add-before + 'configure 'copy-bootstrap-guile + (lambda* (#:key system inputs #:allow-other-keys) + (define (boot-guile-version arch) + (cond ((string=? "armhf" arch) "2.0.11") + ((string=? "aarch64" arch) "2.0.14") + (else "2.0.9"))) - ("boot-guile/i686" - ,(boot-guile "i686" - (base32 - "0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp"))) - ("boot-guile/x86_64" - ,(boot-guile "x86_64" - (base32 - "1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3"))) - ("boot-guile/mips64el" - ,(boot-guile "mips64el" - (base32 - "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr"))) - ("boot-guile/armhf" - ,(boot-guile "armhf" - (base32 - "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5"))) - ("boot-guile/aarch64" - ,(boot-guile "aarch64" - (base32 - "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")))))) - (propagated-inputs - `(("gnutls" ,gnutls) ;for 'guix download' & co. - ("guile-json" ,guile-json) - ("guile-ssh" ,guile-ssh))) + (define (copy arch) + (let ((guile (assoc-ref inputs + (string-append "boot-guile/" + arch))) + (target (string-append "gnu/packages/bootstrap/" + arch "-linux/" + "/guile-" + (boot-guile-version arch) + ".tar.xz"))) + (mkdir-p (dirname target)) ;XXX: eventually unneeded + (copy-file guile target))) - (home-page "https://www.gnu.org/software/guix/") - (synopsis "Functional package manager for installed software packages and versions") - (description - "GNU Guix is a functional package manager for the GNU system, and is + (copy "i686") + (copy "x86_64") + (copy "mips64el") + (copy "armhf") + (copy "aarch64") + #t)) + (add-after + 'unpack 'disable-container-tests + ;; XXX FIXME: These tests fail within the build container. + (lambda _ + (substitute* "tests/syscalls.scm" + (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all) + (string-append "(test-skip 1)\n" all))) + (substitute* "tests/containers.scm" + (("^\\(test-(assert|equal)" 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) + ;; Make sure the 'guix' command finds GnuTLS and + ;; Guile-JSON automatically. + (let* ((out (assoc-ref outputs "out")) + (guile (assoc-ref inputs "guile")) + (json (assoc-ref inputs "guile-json")) + (ssh (assoc-ref inputs "guile-ssh")) + (gnutls (assoc-ref inputs "gnutls")) + (effective + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (path (string-append + json "/share/guile/site/" effective ":" + ssh "/share/guile/site/" effective ":" + gnutls "/share/guile/site/" effective))) + + (wrap-program (string-append out "/bin/guix") + `("GUILE_LOAD_PATH" ":" prefix (,path)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path))) + + #t)))))) + (native-inputs `(("pkg-config" ,pkg-config) + + ;; XXX: Keep the development inputs here even though + ;; they're unnecessary, just so that 'guix environment + ;; guix' always contains them. + ("autoconf" ,(autoconf-wrapper)) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("texinfo" ,texinfo) + ("graphviz" ,graphviz) + ("help2man" ,help2man))) + (inputs + (let ((boot-guile (lambda (arch hash) + (origin + (method url-fetch) + (uri (boot-guile-uri arch)) + (sha256 hash))))) + `(("bzip2" ,bzip2) + ("gzip" ,gzip) + ("zlib" ,zlib) ;for 'guix publish' + + ("sqlite" ,sqlite) + ("libgcrypt" ,libgcrypt) + ("guile" ,guile-2.2) + + ("boot-guile/i686" + ,(boot-guile "i686" + (base32 + "0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp"))) + ("boot-guile/x86_64" + ,(boot-guile "x86_64" + (base32 + "1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3"))) + ("boot-guile/mips64el" + ,(boot-guile "mips64el" + (base32 + "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr"))) + ("boot-guile/armhf" + ,(boot-guile "armhf" + (base32 + "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5"))) + ("boot-guile/aarch64" + ,(boot-guile "aarch64" + (base32 + "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")))))) + (propagated-inputs + `(("gnutls" ,gnutls/guile-2.2) ;for 'guix download' & co. + ("guile-json" ,guile-json) + ("guile-ssh" ,guile-ssh))) + + (home-page "https://www.gnu.org/software/guix/") + (synopsis "Functional package manager for installed software packages and versions") + (description + "GNU Guix is a functional package manager for the GNU system, and is also a distribution thereof. It includes a virtual machine image. Besides the usual package management features, it also supports transactional upgrades and roll-backs, per-user profiles, and much more. It is based on the Nix package manager.") - (license gpl3+) - (properties '((ftp-server . "alpha.gnu.org"))))) + (license gpl3+) + (properties '((ftp-server . "alpha.gnu.org")))))) -(define guix-devel - ;; Development version of Guix. - ;; - ;; Note: use a very short commit id; with a longer one, the limit on - ;; hash-bang lines would be exceeded while running the tests. - (let ((commit "aabece2ef8f87c35ceb3678f39fcfd244b15bb0f")) - (package (inherit guix-0.12.0) - (version (string-append "0.12.0-7." (string-take commit 4))) - (source (origin - (method git-fetch) - (uri (git-reference - ;; "git://git.sv.gnu.org/guix.git" temporarily - ;; unavailable (XXX). - (url "http://git.savannah.gnu.org/r/guix.git") - (commit commit))) - (sha256 - (base32 - "0n8rrwwax9g6i38vq4y2xwb30irkv4c53mqcm5hqv78rb33x8z1l")) - (file-name (string-append "guix-" version "-checkout")))) - (arguments - (substitute-keyword-arguments (package-arguments guix-0.12.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 - 'unpack 'bootstrap - (lambda _ - ;; Make sure 'msgmerge' can modify the PO files. - (for-each (lambda (po) - (chmod po #o666)) - (find-files "." "\\.po$")) +;; Alias for backward compatibility. +(define-public guix-devel guix) - (zero? (system* "sh" "bootstrap"))))))))))) - -(define-public guix guix-devel) +(define-public guile2.0-guix + (package + (inherit guix) + (name "guile2.0-guix") + (inputs + `(("guile" ,guile-2.0) + ,@(alist-delete "guile" (package-inputs guix)))) + (propagated-inputs + `(("gnutls" ,gnutls) + ("guile-json" ,guile2.0-json) + ("guile-ssh" ,guile2.0-ssh))))) (define (source-file? file stat) "Return true if FILE is likely a source file, false if it is a typical @@ -300,14 +318,14 @@ out) and returning a package that uses that as its 'source'." (define-public nix (package (name "nix") - (version "1.11.6") + (version "1.11.9") (source (origin (method url-fetch) (uri (string-append "http://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "18xjg7cfvqzhsmvir6xmw95jxvl2w7icphbbll462xbnj9ddaag7")))) + "1qg7qrfr60dysmyfg3ijgani71l23p1kqadhjs8kz11pgwkkx50f")))) (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 @@ -451,16 +469,17 @@ transactions from C or Python.") (define-public diffoscope (package (name "diffoscope") - (version "78") + (version "81") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "1bx8i6sx2mcvm166nhw0i5442ld6wigkwav8dsnv22y7gnsl9d7n")))) + "093lxy6zj69i19fxdkj3jnai3b1ajqbksyqcvy8wqj3plaaxjna5")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases + (add-before 'unpack 'n (lambda _ #t)) ;; setup.py mistakenly requires python-magic from PyPi, even ;; though the Python bindings of `file` are sufficient. ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844 diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 0c40fe933e..66b67eac6d 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -45,7 +45,7 @@ (define-public parallel (package (name "parallel") - (version "20170322") + (version "20170422") (source (origin (method url-fetch) @@ -53,7 +53,7 @@ version ".tar.bz2")) (sha256 (base32 - "1xjk6np0gwa6p5j26camwybx1n0vqz0f0bksi593rgw800211y7q")))) + "0afk1q8mqzz02h6imyykgi9gwk5gj08hzs6lwgd65ilj4slkh93s")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 66d5f8cf88..f6af6a6519 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -197,8 +197,9 @@ passwords that could be guessed by crack by filtering them out, at source.") (source (origin (method url-fetch) (uri (list - (string-append "https://fedorahosted.org/releases/l/i/" - name "/" name "-" version ".tar.bz2") + (string-append "https://github.com/" name "/" name + "/releases/download/" name "-" version + "/" name "-" version ".tar.bz2") (string-append "https://launchpad.net/libpwquality/trunk/" version "/+download/" name "-" version ".tar.bz2"))) @@ -212,7 +213,7 @@ passwords that could be guessed by crack by filtering them out, at source.") (inputs `(("cracklib" ,cracklib))) (synopsis "Password quality checker") - (home-page "https://fedorahosted.org/libpwquality/") + (home-page "https://github.com/libpwquality/libpwquality") (description "Libpwquality is a library for password quality checking and generation of random passwords that pass the checks.") @@ -284,7 +285,7 @@ any X11 window.") (define-public password-store (package (name "password-store") - (version "1.7") + (version "1.7.1") (source (origin (method url-fetch) (uri @@ -292,8 +293,7 @@ any X11 window.") name "-" version ".tar.xz")) (sha256 (base32 - "002mw7j0m33bw483rllzhcf41wp3ixka8yma6kqrfaj57jyw66hn")) - (patches (search-patches "password-store-gnupg-compat.patch")))) + "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/patches/abiword-black-drawing-with-gtk322.patch b/gnu/packages/patches/abiword-black-drawing-with-gtk322.patch new file mode 100644 index 0000000000..88a5ca4c38 --- /dev/null +++ b/gnu/packages/patches/abiword-black-drawing-with-gtk322.patch @@ -0,0 +1,49 @@ +commit 2ee38d1881aeea27bb49acc450631d813d1f28ba +Author: Hubert Figuière <hub@figuiere.net> +Date: Wed Dec 7 09:44:01 2016 -0500 + + Bug 13815 - draw event should return TRUE + + This fix the black drawing regression witj Gtk3.22 + +diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.cpp b/src/af/xap/gtk/xap_UnixFrameImpl.cpp +index 780000e..10f8e00 100644 +--- a/src/af/xap/gtk/xap_UnixFrameImpl.cpp ++++ b/src/af/xap/gtk/xap_UnixFrameImpl.cpp +@@ -1208,9 +1208,9 @@ gint XAP_UnixFrameImpl::_fe::delete_event(GtkWidget * w, GdkEvent * /*event*/, g + } + + #if GTK_CHECK_VERSION(3,0,0) +-gint XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr) ++gboolean XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr) + #else +-gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) ++gboolean XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) + #endif + { + XAP_UnixFrameImpl * pUnixFrameImpl = static_cast<XAP_UnixFrameImpl *>(g_object_get_data(G_OBJECT(w), "user_data")); +@@ -1243,7 +1243,7 @@ gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) + pView->draw(&rClip); + #endif + } +- return FALSE; ++ return TRUE; + } + + static bool bScrollWait = false; +diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.h b/src/af/xap/gtk/xap_UnixFrameImpl.h +index 30ee5d8..a0ff57f 100644 +--- a/src/af/xap/gtk/xap_UnixFrameImpl.h ++++ b/src/af/xap/gtk/xap_UnixFrameImpl.h +@@ -152,9 +152,9 @@ protected: + static gint key_release_event(GtkWidget* w, GdkEventKey* e); + static gint delete_event(GtkWidget * w, GdkEvent * /*event*/, gpointer /*data*/); + #if GTK_CHECK_VERSION(3,0,0) +- static gint draw(GtkWidget * w, cairo_t * cr); ++ static gboolean draw(GtkWidget * w, cairo_t * cr); + #else +- static gint expose(GtkWidget * w, GdkEventExpose* pExposeEvent); ++ static gboolean expose(GtkWidget * w, GdkEventExpose* pExposeEvent); + #endif + static gint do_ZoomUpdate( gpointer /* xap_UnixFrame * */ p); + static void vScrollChanged(GtkAdjustment * w, gpointer /*data*/); diff --git a/gnu/packages/patches/abiword-explictly-cast-bools.patch b/gnu/packages/patches/abiword-explictly-cast-bools.patch index 7927a180ba..97ae6653c2 100644 --- a/gnu/packages/patches/abiword-explictly-cast-bools.patch +++ b/gnu/packages/patches/abiword-explictly-cast-bools.patch @@ -2,18 +2,18 @@ As of JPEG-9, the type 'boolean' is an enumeration, but since glib defines TRUE and FALSE as numeric constants and this is C++, they need to be explicitly casted. ---- a/src/af/util/xp/ut_jpeg.cpp 2009-07-08 19:33:53.000000000 +0200 -+++ b/src/af/util/xp/ut_jpeg.cpp 2014-09-06 19:55:55.876997404 +0200 -@@ -102,7 +102,7 @@ +--- a/src/af/util/xp/ut_jpeg.cpp ++++ b/src/af/util/xp/ut_jpeg.cpp +@@ -102,7 +102,7 @@ static boolean _jpegFillInputBuffer (j_decompress_ptr cinfo) src->pub.next_input_byte = src->sourceBuf->getPointer (src->pos); src->pub.bytes_in_buffer = src->sourceBuf->getLength (); - -- return TRUE; + +- return 1; // boolean is a libjpeg type that is an int. + return (boolean)TRUE; } /* -@@ -161,7 +161,7 @@ +@@ -161,7 +161,7 @@ bool UT_JPEG_getDimensions(const UT_ByteBuf* pBB, UT_sint32& iImageWidth, /* set the data source */ _JPEG_ByteBufSrc (&cinfo, pBB); @@ -22,7 +22,7 @@ casted. jpeg_start_decompress(&cinfo); iImageWidth = cinfo.output_width; iImageHeight = cinfo.output_height; -@@ -189,7 +189,7 @@ +@@ -189,7 +189,7 @@ bool UT_JPEG_getRGBData(const UT_ByteBuf* pBB, UT_Byte* pDest, UT_sint32 iDestRo /* set the data source */ _JPEG_ByteBufSrc (&cinfo, pBB); diff --git a/gnu/packages/patches/aspell-default-dict-dir.patch b/gnu/packages/patches/aspell-default-dict-dir.patch new file mode 100644 index 0000000000..17a6ff606f --- /dev/null +++ b/gnu/packages/patches/aspell-default-dict-dir.patch @@ -0,0 +1,20 @@ +This patch changes the default value of 'dict-dir' to correspond +to ~/.guix-profile/lib/aspell rather than $prefix/lib/aspell-X.Y. + +This is not strictly necessary for the 'aspell' program itself since +one can simply set "ASPELL_CONF=dict-dir $HOME/.guix-profile/lib/aspell". +However it is necessary for applications that use libaspell since +'ASPELL_CONF' is not honored in this case. See <https://bugs.gnu.org/25836>. + +--- a/common/config.cpp ++++ b/common/config.cpp +@@ -1349,6 +1349,9 @@ namespace acommon { + # define REPL ".aspell.<lang>.prepl" + #endif + ++#undef DICT_DIR ++#define DICT_DIR "<$ASPELL_DICT_DIR|home-dir/.guix-profile/lib/aspell>" ++ + static const KeyInfo config_keys[] = { + // the description should be under 50 chars + {"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0} diff --git a/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch b/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch deleted file mode 100644 index d6d65338d9..0000000000 --- a/gnu/packages/patches/audacity-fix-ffmpeg-binding.patch +++ /dev/null @@ -1,32 +0,0 @@ -This resolves some "declaration of C function conflicts with previous -declaration" errors during compilation. - ---- a/src/FFmpeg.h 2015-02-21 00:33:33.853857529 +0100 -+++ b/src/FFmpeg.h 2015-02-21 00:35:09.626497205 +0100 -@@ -688,7 +688,7 @@ - FFMPEG_FUNCTION_WITH_RETURN( - AVOutputFormat*, - av_oformat_next, -- (AVOutputFormat *f), -+ (const AVOutputFormat *f), - (f) - ); - FFMPEG_FUNCTION_WITH_RETURN( -@@ -755,7 +755,7 @@ - FFMPEG_FUNCTION_WITH_RETURN( - int, - av_fifo_size, -- (AVFifoBuffer *f), -+ (const AVFifoBuffer *f), - (f) - ); - FFMPEG_FUNCTION_WITH_RETURN( -@@ -801,7 +801,7 @@ - FFMPEG_FUNCTION_WITH_RETURN( - AVDictionaryEntry *, - av_dict_get, -- (AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags), -+ (const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags), - (m, key, prev, flags) - ); - FFMPEG_FUNCTION_WITH_RETURN( diff --git a/gnu/packages/patches/calibre-dont-load-remote-icons.patch b/gnu/packages/patches/calibre-dont-load-remote-icons.patch new file mode 100644 index 0000000000..2168263072 --- /dev/null +++ b/gnu/packages/patches/calibre-dont-load-remote-icons.patch @@ -0,0 +1,45 @@ +From: Martin Pitt <mpitt@debian.org> +Date: Mon, 14 Nov 2016 22:41:24 +0100 +Subject: content-server: Don't load external URLs for privacy + +Spotted by lintian. +--- + resources/content_server/browse/browse.html | 4 +--- + resources/content_server/index.html | 2 +- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/resources/content_server/browse/browse.html b/resources/content_server/browse/browse.html +index 36f7199..e615707 100644 +--- a/resources/content_server/browse/browse.html ++++ b/resources/content_server/browse/browse.html +@@ -7,7 +7,7 @@ + <title>..:: calibre {library} ::.. {title}</title> + <meta http-equiv="X-UA-Compatible" content="IE=100" /> + <meta name="robots" content="noindex" /> +- <link rel="icon" type="image/x-icon" href="//calibre-ebook.com/favicon.ico" /> ++ <link rel="icon" type="image/x-icon" href="favicon.ico" /> + + <link rel="stylesheet" type="text/css" href="{prefix}/static/browse/browse.css" /> + <link type="text/css" href="{prefix}/static/jquery_ui/css/humanity-custom/jquery-ui-1.8.5.custom.css" rel="stylesheet" /> +@@ -63,8 +63,6 @@ + <input type="image" + src="{prefix}/static/button-donate.png" + name="submit"></input> +- <img alt="" src="https://www.paypal.com/en_US/i/scr/pixel.gif" +- width="1" height="1"></img> + </div> + </form> + <div id="calibre-home-link" title="Go to the calibre website"></div> +diff --git a/resources/content_server/index.html b/resources/content_server/index.html +index 51cc33a..e71d0e8 100644 +--- a/resources/content_server/index.html ++++ b/resources/content_server/index.html +@@ -9,7 +9,7 @@ + <script type="text/javascript" src="{prefix}/static/date.js" charset="utf-8"></script> + <script type="text/javascript" src="{prefix}/static/jquery.js" charset="utf-8"></script> + <script type="text/javascript" src="{prefix}/static/gui.js" charset="utf-8"></script> +- <link rel="icon" href="//calibre-ebook.com/favicon.ico" type="image/x-icon" /> ++ <link rel="icon" href="favicon.ico" type="image/x-icon" /> + </head> + <body> + <div id="banner"> diff --git a/gnu/packages/patches/calibre-drop-unrar.patch b/gnu/packages/patches/calibre-drop-unrar.patch index 4eb64404f6..adf977b183 100644 --- a/gnu/packages/patches/calibre-drop-unrar.patch +++ b/gnu/packages/patches/calibre-drop-unrar.patch @@ -1,15 +1,20 @@ -Taken from Debian. Updated by Alex Griffin. +Recreated old debian patch on the latest calibre version -Author: Dmitry Shachnev <mitya57@gmail.com> -Description: do not build unrar extension as we strip unrar from the tarball -Forwarded: not-needed -Last-Update: 2013-04-04 +From 6764e4c211e50d4f4633dbabfba7cbc3089c51dc Mon Sep 17 00:00:00 2001 +From: Brendan Tildesley <brendan.tildesley@openmailbox.org> +Date: Sat, 13 May 2017 21:12:12 +1000 +Subject: [PATCH] Remove unrar extension -Index: calibre/setup/extensions.py -=================================================================== ---- calibre.orig/setup/extensions.json 2016-07-21 21:21:05.000000000 -0500 -+++ calibre/setup/extensions.json 2016-07-27 11:22:17.167710112 -0500 -@@ -211,14 +211,5 @@ +--- + setup/extensions.json | 11 ----------- + src/calibre/ebooks/metadata/archive.py | 2 +- + 2 files changed, 1 insertion(+), 12 deletions(-) + +diff --git a/setup/extensions.json b/setup/extensions.json +index 1f6d1fb5fd..127390450f 100644 +--- a/setup/extensions.json ++++ b/setup/extensions.json +@@ -211,16 +211,5 @@ "sources": "calibre/devices/mtp/unix/devices.c calibre/devices/mtp/unix/libmtp.c", "headers": "calibre/devices/mtp/unix/devices.h calibre/devices/mtp/unix/upstream/music-players.h calibre/devices/mtp/unix/upstream/device-flags.h", "libraries": "mtp" @@ -20,22 +25,25 @@ Index: calibre/setup/extensions.py - "inc_dirs": "unrar", - "defines": "SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE", - "windows_defines": "SILENT RARDLL UNRAR", +- "haiku_defines": "LITTLE_ENDIAN SILENT RARDLL UNRAR _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _BSD_SOURCE", +- "haiku_libraries": "bsd", - "optimize_level": 2, - "windows_libraries": "User32 Advapi32 kernel32 Shell32" } ] - - -Index: calibre/src/calibre/ebooks/metadata/archive.py -=================================================================== ---- calibre.orig/src/calibre/ebooks/metadata/archive.py 2016-07-21 21:21:05.000000000 -0500 -+++ calibre/src/calibre/ebooks/metadata/archive.py 2016-07-27 11:21:07.793616039 -0500 -@@ -42,7 +42,7 @@ - description = _('Extract common e-book formats from archives ' - '(zip/rar) files. Also try to autodetect if they are actually ' - 'cbz/cbr files.') +diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py +index f5c0b7bed3..32257dcdae 100644 +--- a/src/calibre/ebooks/metadata/archive.py ++++ b/src/calibre/ebooks/metadata/archive.py +@@ -44,7 +44,7 @@ class ArchiveExtract(FileTypePlugin): + description = _('Extract common e-book formats from archive files ' + '(ZIP/RAR). Also try to autodetect if they are actually ' + 'CBZ/CBR files.') - file_types = set(['zip', 'rar']) + file_types = set(['zip']) supported_platforms = ['windows', 'osx', 'linux'] on_import = True +-- +2.12.2 + diff --git a/gnu/packages/patches/calibre-use-packaged-feedparser.patch b/gnu/packages/patches/calibre-use-packaged-feedparser.patch new file mode 100644 index 0000000000..8f4bbc8248 --- /dev/null +++ b/gnu/packages/patches/calibre-use-packaged-feedparser.patch @@ -0,0 +1,51 @@ +From: Martin Pitt <mpitt@debian.org> +Date: Mon, 14 Nov 2016 22:41:23 +0100 +Subject: Use packaged instead of bundled feedparser Python module + +--- + recipes/lenta_ru.recipe | 4 +++- + src/calibre/web/feeds/__init__.py | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/recipes/lenta_ru.recipe b/recipes/lenta_ru.recipe +index aa4dac4..4b6710c 100644 +--- a/recipes/lenta_ru.recipe ++++ b/recipes/lenta_ru.recipe +@@ -4,11 +4,13 @@ + Lenta.ru + ''' + +-from calibre.web.feeds.feedparser import parse + from calibre.ebooks.BeautifulSoup import Tag + from calibre.web.feeds.news import BasicNewsRecipe ++from feedparser import parse ++from functools import partial + import re + ++parse = partial(parse, agent='Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11') + + class LentaRURecipe(BasicNewsRecipe): + title = u'Lenta.ru: \u041d\u043e\u0432\u043e\u0441\u0442\u0438' +diff --git a/src/calibre/web/feeds/__init__.py b/src/calibre/web/feeds/__init__.py +index 8c9d748..f262604 100644 +--- a/src/calibre/web/feeds/__init__.py ++++ b/src/calibre/web/feeds/__init__.py +@@ -11,7 +11,10 @@ from calibre.utils.logging import default_log + from calibre import entity_to_unicode, strftime, force_unicode + from calibre.utils.date import dt_factory, utcnow, local_tz + from calibre.utils.cleantext import clean_ascii_chars, clean_xml_chars ++from feedparser import parse ++from functools import partial + ++parse = partial(parse, agent='Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11') + + class Article(object): + +@@ -334,7 +337,6 @@ def feed_from_xml(raw_xml, title=None, oldest_article=7, + max_articles_per_feed=100, + get_article_url=lambda item: item.get('link', None), + log=default_log): +- from calibre.web.feeds.feedparser import parse + # Handle unclosed escaped entities. They trip up feedparser and HBR for one + # generates them + raw_xml = re.sub(r'(&#\d+)([^0-9;])', r'\1;\2', raw_xml) diff --git a/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch new file mode 100644 index 0000000000..9c817d4198 --- /dev/null +++ b/gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch @@ -0,0 +1,514 @@ +Patch for version 3.01, taken from upstream at +https://sourceforge.net/projects/cdrtools/files/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch + +--- cdrtools-3.01.orig/mkisofs/diag/isoinfo.c 2015-07-22 20:36:45.000000000 +0000 ++++ cdrtools-3.01/mkisofs/diag/isoinfo.c 2015-11-17 19:35:40.000000000 +0000 +@@ -1,8 +1,8 @@ +-/* @(#)isoinfo.c 1.95 15/07/22 joerg */ ++/* @(#)isoinfo.c 1.100 15/11/17 joerg */ + #include <schily/mconfig.h> + #ifndef lint + static UConst char sccsid[] = +- "@(#)isoinfo.c 1.95 15/07/22 joerg"; ++ "@(#)isoinfo.c 1.100 15/11/17 joerg"; + #endif + /* + * File isodump.c - dump iso9660 directory information. +@@ -148,8 +148,10 @@ LOCAL char er_id[256]; + LOCAL int su_version = 0; + LOCAL int rr_version = 0; + LOCAL int aa_version = 0; ++LOCAL int cl_extent = 0; + LOCAL int ucs_level = 0; + LOCAL BOOL iso9660_inodes = FALSE; ++LOCAL uid_t myuid; + + #ifdef USE_FIND + LOCAL findn_t *find_node; /* syntaxtree from find_parse() */ +@@ -208,6 +210,9 @@ LOCAL void extract __PR((char *rootname + LOCAL void extract_file __PR((int f, + struct iso_directory_record * idr, + char *fname)); ++LOCAL void parse_cl_dir __PR((struct iso_directory_record *idr, ++ int extent)); ++LOCAL BOOL parse_de __PR((struct iso_directory_record *idr)); + LOCAL void parse_dir __PR((char * rootname, int extent, int len)); + LOCAL void usage __PR((int excode)); + EXPORT int main __PR((int argc, char *argv[])); +@@ -459,7 +464,6 @@ parse_rr(pnt, len, cont_flag) + int slen; + int xlen; + int ncount; +- int cl_extent; + int pl_extent; + int cont_extent, cont_offset, cont_size; + int flag1, flag2; +@@ -469,7 +473,7 @@ parse_rr(pnt, len, cont_flag) + + symlinkname[0] = 0; + +- cont_extent = cont_offset = cont_size = 0; ++ cl_extent = cont_extent = cont_offset = cont_size = 0; + + ncount = 0; + flag1 = -1; +@@ -714,6 +718,7 @@ struct todo + }; + + LOCAL struct todo *todo_idr = NULL; ++LOCAL struct todo **todo_pp = &todo_idr; + + LOCAL char *months[12] = {"Jan", "Feb", "Mar", "Apr", + "May", "Jun", "Jul", +@@ -962,8 +967,14 @@ static BOOL isfirst = TRUE; + close(f); + return; + setmode: +- fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW); + fchownat(AT_FDCWD, fname, fstat_buf.st_uid, fstat_buf.st_gid, AT_SYMLINK_NOFOLLOW); ++ if (myuid != 0 && S_ISDIR(fstat_buf.st_mode)) { ++ /* ++ * Temporary hack until we have a dirstack like star. ++ */ ++ fstat_buf.st_mode |= S_IWUSR; ++ } ++ fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW); + times[0].tv_sec = fstat_buf.st_atime; + times[0].tv_nsec = stat_ansecs(&fstat_buf); + times[1].tv_sec = fstat_buf.st_mtime; +@@ -1001,6 +1012,143 @@ extract_file(f, idr, fname) + } + } + ++ ++LOCAL void ++parse_cl_dir(idr, extent) ++ struct iso_directory_record *idr; ++ int extent; ++{ ++ char cl_name_buf[256*3]; ++ ++ strlcpy(cl_name_buf, name_buf, sizeof (cl_name_buf)); ++#ifdef USE_SCG ++ readsecs(extent - sector_offset, idr, 1); ++#else ++ lseek(fileno(infile), ((off_t)(extent - sector_offset)) << 11, SEEK_SET); ++ read(fileno(infile), idr, 2048); ++#endif ++ ++ if (parse_de(idr) && use_rock) ++ dump_rr(idr); ++ strlcpy(name_buf, cl_name_buf, sizeof (name_buf)); ++} ++ ++LOCAL BOOL ++parse_de(idr) ++ struct iso_directory_record *idr; ++{ ++ unsigned char uc; ++ ++ if (idr->length[0] == 0) ++ return (FALSE); ++ memset(&fstat_buf, 0, sizeof (fstat_buf)); ++ found_rr = 0; ++ name_buf[0] = xname[0] = 0; ++ fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size); ++ if (idr->flags[0] & 2) ++ fstat_buf.st_mode |= S_IFDIR; ++ else ++ fstat_buf.st_mode |= S_IFREG; ++ if (idr->name_len[0] == 1 && idr->name[0] == 0) ++ strcpy(name_buf, "."); ++ else if (idr->name_len[0] == 1 && idr->name[0] == 1) ++ strcpy(name_buf, ".."); ++ else { ++ switch (ucs_level) { ++ case 3: ++ case 2: ++ case 1: ++ /* ++ * Unicode name. Convert as best we can. ++ */ ++ { ++ int j; ++ name_buf[0] = '\0'; ++#ifdef USE_ICONV ++ if (use_iconv(unls)) { ++ int u; ++ char *to = name_buf; ++ ++ for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) { ++ char *ibuf = (char *)&idr->name[j*2]; ++ size_t isize = 2; /* UCS-2 character size */ ++ size_t osize = 4; ++ ++ if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize, ++ (char **)&to, &osize) == -1) { ++ int err = geterrno(); ++ ++ if ((err == EINVAL || err == EILSEQ) && ++ osize == 4) { ++ *to = '_'; ++ u += 1; ++ to++; ++ } ++ } else { ++ u += 4 - osize; ++ to = &name_buf[u]; ++ } ++ } ++ j = u; ++ } else ++#endif ++ for (j = 0; j < (int)idr->name_len[0] / 2; j++) { ++ UInt16_t unichar; ++ ++ unichar = (idr->name[j*2] & 0xFF) * 256 + ++ (idr->name[j*2+1] & 0xFF); ++ ++ /* ++ * Get the backconverted char ++ */ ++ if (unls) ++ uc = sic_uni2c(unls, unichar); ++ else ++ uc = unichar > 255 ? '_' : unichar; ++ ++ name_buf[j] = uc ? uc : '_'; ++ } ++ name_buf[j] = '\0'; ++ } ++ break; ++ case 0: ++ /* ++ * Normal non-Unicode name. ++ */ ++ strncpy(name_buf, idr->name, idr->name_len[0]); ++ name_buf[idr->name_len[0]] = 0; ++ break; ++ default: ++ /* ++ * Don't know how to do these yet. Maybe they are the same ++ * as one of the above. ++ */ ++ exit(1); ++ } ++ } ++ memcpy(date_buf, idr->date, 9); ++ /* ++ * Always first set up time stamps and file modes from ++ * ISO-9660. This is used as a fallback in case that ++ * there is no related Rock Ridge based data. ++ */ ++ fstat_buf.st_atime = ++ fstat_buf.st_mtime = ++ fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE); ++ fstat_buf.st_mode |= S_IRUSR|S_IXUSR | ++ S_IRGRP|S_IXGRP | ++ S_IROTH|S_IXOTH; ++ fstat_buf.st_nlink = 1; ++ fstat_buf.st_ino = 0; ++ fstat_buf.st_uid = 0; ++ fstat_buf.st_gid = 0; ++ if (iso9660_inodes) { ++ fstat_buf.st_ino = (unsigned long) ++ isonum_733((unsigned char *)idr->extent); ++ } ++ return (TRUE); ++} ++ + LOCAL void + parse_dir(rootname, extent, len) + char *rootname; +@@ -1012,12 +1160,13 @@ parse_dir(rootname, extent, len) + struct iso_directory_record * idr; + struct iso_directory_record didr; + struct stat dstat; +- unsigned char uc; ++ unsigned char cl_buffer[2048]; + unsigned char flags = 0; + Llong size = 0; + int sextent = 0; + int rlen; + int blen; ++ int rr_flags = 0; + static char *n = 0; + static int nlen = 0; + +@@ -1039,115 +1188,23 @@ static int nlen = 0; + i = 0; + while (1 == 1) { + idr = (struct iso_directory_record *) &buffer[i]; +- if (idr->length[0] == 0) break; +- memset(&fstat_buf, 0, sizeof (fstat_buf)); +- found_rr = 0; +- name_buf[0] = xname[0] = 0; +- fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size); +- if (idr->flags[0] & 2) +- fstat_buf.st_mode |= S_IFDIR; +- else +- fstat_buf.st_mode |= S_IFREG; +- if (idr->name_len[0] == 1 && idr->name[0] == 0) +- strcpy(name_buf, "."); +- else if (idr->name_len[0] == 1 && idr->name[0] == 1) +- strcpy(name_buf, ".."); +- else { +- switch (ucs_level) { +- case 3: +- case 2: +- case 1: +- /* +- * Unicode name. Convert as best we can. +- */ +- { +- int j; +- +- name_buf[0] = '\0'; +-#ifdef USE_ICONV +- if (use_iconv(unls)) { +- int u; +- char *to = name_buf; +- +- for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) { +- char *ibuf = (char *)&idr->name[j*2]; +- size_t isize = 2; /* UCS-2 character size */ +- size_t osize = 4; +- +- if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize, +- (char **)&to, &osize) == -1) { +- int err = geterrno(); +- +- if ((err == EINVAL || err == EILSEQ) && +- osize == 4) { +- *to = '_'; +- u += 1; +- to++; +- } +- } else { +- u += 4 - osize; +- to = &name_buf[u]; +- } +- } +- j = u; +- } else +-#endif +- for (j = 0; j < (int)idr->name_len[0] / 2; j++) { +- UInt16_t unichar; +- +- unichar = (idr->name[j*2] & 0xFF) * 256 + +- (idr->name[j*2+1] & 0xFF); +- +- /* +- * Get the backconverted char +- */ +- if (unls) +- uc = sic_uni2c(unls, unichar); +- else +- uc = unichar > 255 ? '_' : unichar; ++ if (idr->length[0] == 0) ++ break; ++ parse_de(idr); ++ if (use_rock) { ++ rr_flags = dump_rr(idr); + +- name_buf[j] = uc ? uc : '_'; +- } +- name_buf[j] = '\0'; +- } +- break; +- case 0: ++ if (rr_flags & RR_FLAG_CL) { + /* +- * Normal non-Unicode name. ++ * Need to reparse the child link ++ * but note that we parse "CL/." ++ * so we get no usable file name. + */ +- strncpy(name_buf, idr->name, idr->name_len[0]); +- name_buf[idr->name_len[0]] = 0; +- break; +- default: +- /* +- * Don't know how to do these yet. Maybe they are the same +- * as one of the above. +- */ +- exit(1); +- } ++ idr = (struct iso_directory_record *) cl_buffer; ++ parse_cl_dir(idr, cl_extent); ++ } else if (rr_flags & RR_FLAG_RE) ++ goto cont; /* skip rr_moved */ + } +- memcpy(date_buf, idr->date, 9); +- /* +- * Always first set up time stamps and file modes from +- * ISO-9660. This is used as a fallback in case that +- * there is no related Rock Ridge based data. +- */ +- fstat_buf.st_atime = +- fstat_buf.st_mtime = +- fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE); +- fstat_buf.st_mode |= S_IRUSR|S_IXUSR | +- S_IRGRP|S_IXGRP | +- S_IROTH|S_IXOTH; +- fstat_buf.st_nlink = 1; +- fstat_buf.st_ino = 0; +- fstat_buf.st_uid = 0; +- fstat_buf.st_gid = 0; +- if (iso9660_inodes) { +- fstat_buf.st_ino = (unsigned long) +- isonum_733((unsigned char *)idr->extent); +- } +- if (use_rock) +- dump_rr(idr); + if (Xtract && + (idr->flags[0] & 2) != 0 && + idr->name_len[0] == 1 && +@@ -1170,30 +1227,30 @@ static int nlen = 0; + n[rlen] = '\0'; + + if ((idr->flags[0] & 2) != 0 && +- (idr->name_len[0] != 1 || ++ ((rr_flags & RR_FLAG_CL) || ++ idr->name_len[0] != 1 || + (idr->name[0] != 0 && idr->name[0] != 1))) { + /* + * This is a plain directory (neither "xxx/." + * nor "xxx/.."). + * Add this directory to the todo list. + */ +- td = todo_idr; +- if (td != NULL) { +- while (td->next != NULL) +- td = td->next; +- td->next = (struct todo *) malloc(sizeof (*td)); +- td = td->next; +- } else { +- todo_idr = td = (struct todo *) malloc(sizeof (*td)); +- } ++ td = (struct todo *) malloc(sizeof (*td)); ++ if (td == NULL) ++ comerr(_("No memory.\n")); + td->next = NULL; + td->extent = isonum_733((unsigned char *)idr->extent); + td->length = isonum_733((unsigned char *)idr->size); + td->name = (char *) malloc(strlen(rootname) + + strlen(name_buf) + 2); ++ if (td->name == NULL) ++ comerr(_("No memory.\n")); + strcpy(td->name, rootname); + strcat(td->name, name_buf); + strcat(td->name, "/"); ++ ++ *todo_pp = td; ++ todo_pp = &td->next; + } else { + if (xtract && strcmp(xtract, n) == 0) { + extract_file(STDOUT_FILENO, idr, "stdout"); +@@ -1253,6 +1310,7 @@ static int nlen = 0; + if ((idr->flags[0] & ISO_MULTIEXTENT) == 0) + size = 0; + } ++ cont: + i += buffer[i]; + if (i > 2048 - offsetof(struct iso_directory_record, name[0])) break; + } +@@ -1381,12 +1439,13 @@ main(argc, argv) + usage(0); + if (prvers) { + printf(_("isoinfo %s (%s-%s-%s) Copyright (C) 1993-1999 %s (C) 1999-2015 %s\n"), +- VERSION, ++ "3.02a02", + HOST_CPU, HOST_VENDOR, HOST_OS, + _("Eric Youngdale"), + _("Joerg Schilling")); + exit(0); + } ++ myuid = getuid(); + #ifdef USE_FIND + if (do_find) { + finda_t fa; +--- cdrtools-3.01.orig/mkisofs/udf.c 2013-04-24 20:45:18.000000000 +0000 ++++ cdrtools-3.01/mkisofs/udf.c 2015-11-25 22:07:30.000000000 +0000 +@@ -1,15 +1,15 @@ +-/* @(#)udf.c 1.42 13/04/24 Copyright 2001-2013 J. Schilling */ ++/* @(#)udf.c 1.43 15/11/25 Copyright 2001-2015 J. Schilling */ + #include <schily/mconfig.h> + #ifndef lint + static UConst char sccsid[] = +- "@(#)udf.c 1.42 13/04/24 Copyright 2001-2013 J. Schilling"; ++ "@(#)udf.c 1.43 15/11/25 Copyright 2001-2015 J. Schilling"; + #endif + /* + * udf.c - UDF support for mkisofs + * + * Written by Ben Rudiak-Gould (2001). + * +- * Copyright 2001-2013 J. Schilling. ++ * Copyright 2001-2015 J. Schilling. + */ + /* + * This program is free software; you can redistribute it and/or modify +@@ -98,7 +98,7 @@ static UConst char sccsid[] = + extern int use_sparcboot; + + extern struct directory *root; +-extern time_t begun; ++extern struct timeval tv_begun; + + static unsigned lba_main_seq; + static unsigned lba_main_seq_copy; +@@ -110,7 +110,7 @@ static unsigned lba_end_anchor_vol_desc; + static unsigned num_udf_files; + static unsigned num_udf_directories; + +-static unsigned volume_set_id[2]; ++static unsigned volume_set_id[2] = { 0, 0 }; + + #define UDF_MAIN_SEQ_LENGTH (16) + #define UDF_INTEG_SEQ_LENGTH (2) +@@ -723,7 +723,7 @@ set_primary_vol_desc(buf, lba) + /*pvd->volume_abstract;*/ + /*pvd->volume_copyright_notice;*/ + /*pvd->application_ident;*/ +- set_timestamp_from_time_t(&pvd->recording_date_and_time, begun); ++ set_timestamp_from_time_t(&pvd->recording_date_and_time, tv_begun.tv_sec); + set_impl_ident(&pvd->impl_ident); + set_tag(&pvd->desc_tag, UDF_TAGID_PRIMARY_VOLUME_DESC, lba, 512); + } +@@ -831,7 +831,7 @@ set_logical_vol_integrity_desc(buf, lba) + udf_logical_volume_integrity_desc *lvid = + (udf_logical_volume_integrity_desc *)buf; + +- set_timestamp_from_time_t(&lvid->recording_date, begun); ++ set_timestamp_from_time_t(&lvid->recording_date, tv_begun.tv_sec); + set32(&lvid->integrity_type, UDF_INTEGRITY_TYPE_CLOSE); + /*lvid->next_integrity_extent;*/ + set64(&lvid->logical_volume_contents_use.unique_id, +@@ -859,7 +859,7 @@ set_file_set_desc(buf, rba) + { + udf_file_set_desc *fsd = (udf_file_set_desc *)buf; + +- set_timestamp_from_time_t(&fsd->recording_date_and_time, begun); ++ set_timestamp_from_time_t(&fsd->recording_date_and_time, tv_begun.tv_sec); + set16(&fsd->interchange_level, 3); + set16(&fsd->maximum_interchange_level, 3); + set32(&fsd->character_set_list, 1); +@@ -1986,8 +1986,10 @@ udf_main_seq_write(out) + * volume_set_id needs to be set to a (64-bit) "unique" number. + * This will have to do for now. + */ +- volume_set_id[0] = begun; +- volume_set_id[1] = (unsigned)clock(); /* XXX Maybe non-portable */ ++ if (volume_set_id[0] == 0) { ++ volume_set_id[0] = tv_begun.tv_sec; ++ volume_set_id[1] = (unsigned)tv_begun.tv_usec; ++ } + + memset(buf, 0, sizeof (buf)); + set_primary_vol_desc(buf, last_extent_written++); +--- cdrtools-3.01.orig/mkisofs/mkisofs.c 2015-01-01 14:19:51.000000000 +0000 ++++ cdrtools-3.01/mkisofs/mkisofs.c +@@ -69 +69 @@ int path_ind; +-char version_string[] = VERSION; ++char version_string[] = "3.01-fix-20151126"; diff --git a/gnu/packages/patches/ceph-disable-cpu-optimizations.patch b/gnu/packages/patches/ceph-disable-cpu-optimizations.patch index 6d20fe3da4..f33eb629d6 100644 --- a/gnu/packages/patches/ceph-disable-cpu-optimizations.patch +++ b/gnu/packages/patches/ceph-disable-cpu-optimizations.patch @@ -1,12 +1,13 @@ -Disable CPU optimizations not supported by the vast majority of -x86_64 systems. Also don't add anything for i686. +Disable CPU optimizations not supported by all x86_64 systems. Also +don't add anything for i686. --- a/cmake/modules/SIMDExt.cmake 2017-03-23 22:22:58.254071694 +0100 +++ b/cmake/modules/SIMDExt.cmake 2017-03-23 22:23:22.446848845 +0100 -@@ -6,10 +6,6 @@ +@@ -5,11 +5,6 @@ + # HAVE_ARM_NEON # HAVE_INTEL_SSE # HAVE_INTEL_SSE2 - # HAVE_INTEL_SSE3 +-# HAVE_INTEL_SSE3 -# HAVE_INTEL_SSSE3 -# HAVE_INTEL_PCLMUL -# HAVE_INTEL_SSE4_1 @@ -14,19 +15,23 @@ x86_64 systems. Also don't add anything for i686. # # SIMD_COMPILE_FLAGS # -@@ -56,7 +53,7 @@ - if(HAVE_ARM_NEON) +@@ -73,7 +68,7 @@ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon") endif() + -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") set(HAVE_INTEL 1) CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE) if(HAVE_INTEL_SSE) -@@ -70,20 +67,4 @@ - if(HAVE_INTEL_SSE3) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") +@@ -83,26 +78,6 @@ + if(HAVE_INTEL_SSE2) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2") endif() +- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3) +- if(HAVE_INTEL_SSE3) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") +- endif() - CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3) - if(HAVE_INTEL_SSSE3) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3") @@ -43,4 +48,6 @@ x86_64 systems. Also don't add anything for i686. - if(HAVE_INTEL_SSE4_2) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2") - endif() - endif() + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64le") + set(HAVE_PPC64LE 1) + message(STATUS " we are ppc64le") diff --git a/gnu/packages/patches/ceph-disable-unittest-throttle.patch b/gnu/packages/patches/ceph-disable-unittest-throttle.patch new file mode 100644 index 0000000000..08ae5f9e24 --- /dev/null +++ b/gnu/packages/patches/ceph-disable-unittest-throttle.patch @@ -0,0 +1,52 @@ +FIXME: This test broke after the gcc-5/glibc-2.25 core-updates merge. +Not sure what's going on here, it hangs after spawning the first thread. + +diff --git a/src/test/common/Throttle.cc b/src/test/common/Throttle.cc +index 5b6d73217d..40a477b2a3 100644 +--- a/src/test/common/Throttle.cc ++++ b/src/test/common/Throttle.cc +@@ -216,44 +216,6 @@ TEST_F(ThrottleTest, wait) { + } while(!waited); + } + +-TEST_F(ThrottleTest, destructor) { +- Thread_get *t; +- { +- int64_t throttle_max = 10; +- Throttle *throttle = new Throttle(g_ceph_context, "throttle", throttle_max); +- +- ASSERT_FALSE(throttle->get(5)); +- +- t = new Thread_get(*throttle, 7); +- t->create("t_throttle"); +- bool blocked; +- useconds_t delay = 1; +- do { +- usleep(delay); +- if (throttle->get_or_fail(1)) { +- throttle->put(1); +- blocked = false; +- } else { +- blocked = true; +- } +- delay *= 2; +- } while(!blocked); +- delete throttle; +- } +- +- { // +- // The thread is left hanging, otherwise it will abort(). +- // Deleting the Throttle on which it is waiting creates a +- // inconsistency that will be detected: the Throttle object that +- // it references no longer exists. +- // +- pthread_t id = t->get_thread_id(); +- ASSERT_EQ(pthread_kill(id, 0), 0); +- delete t; +- ASSERT_EQ(pthread_kill(id, 0), 0); +- } +-} +- + std::pair<double, std::chrono::duration<double> > test_backoff( + double low_threshhold, + double high_threshhold, diff --git a/gnu/packages/patches/cool-retro-term-dont-check-uninit-member.patch b/gnu/packages/patches/cool-retro-term-dont-check-uninit-member.patch new file mode 100644 index 0000000000..c6e1d27315 --- /dev/null +++ b/gnu/packages/patches/cool-retro-term-dont-check-uninit-member.patch @@ -0,0 +1,33 @@ +From 126a97d1f22f7d784d392b2b7d5aadf0a4e18c0d Mon Sep 17 00:00:00 2001 +From: Petter <petter@mykolab.ch> +Date: Thu, 27 Apr 2017 20:28:02 +0200 +Subject: [PATCH] Avoid checking uninitialized member + simplify condition + +--- + qmltermwidget/lib/TerminalDisplay.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/qmltermwidget/lib/TerminalDisplay.cpp b/qmltermwidget/lib/TerminalDisplay.cpp +index 189a609..36d2cd2 100644 +--- a/qmltermwidget/lib/TerminalDisplay.cpp ++++ b/qmltermwidget/lib/TerminalDisplay.cpp +@@ -325,6 +325,7 @@ TerminalDisplay::TerminalDisplay(QQuickItem *parent) + ,_terminalSizeHint(false) + ,_terminalSizeStartup(true) + ,_bidiEnabled(false) ++,_mouseMarks(false) + ,_actSel(0) + ,_wordSelectionMode(false) + ,_lineSelectionMode(false) +@@ -1846,7 +1847,7 @@ void TerminalDisplay::mousePressEvent(QMouseEvent* ev) + } + else if ( ev->button() == Qt::MidButton ) + { +- if ( _mouseMarks || (!_mouseMarks && (ev->modifiers() & Qt::ShiftModifier)) ) ++ if ( _mouseMarks || (ev->modifiers() & Qt::ShiftModifier) ) + emitSelection(true,ev->modifiers() & Qt::ControlModifier); + else + emit mouseSignal( 1, charColumn +1, charLine +1 +_scrollBar->value() -_scrollBar->maximum() , 0); +-- +2.12.2 + diff --git a/gnu/packages/patches/cool-retro-term-fix-array-size.patch b/gnu/packages/patches/cool-retro-term-fix-array-size.patch new file mode 100644 index 0000000000..04a2a27971 --- /dev/null +++ b/gnu/packages/patches/cool-retro-term-fix-array-size.patch @@ -0,0 +1,25 @@ +From c91d7ae5dbb00c8392a9f93283dc56c3e296cccd Mon Sep 17 00:00:00 2001 +From: Petter <petter@mykolab.ch> +Date: Thu, 27 Apr 2017 20:19:21 +0200 +Subject: [PATCH] Fix size of the array passed to memset() + +--- + qmltermwidget/lib/History.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/qmltermwidget/lib/History.cpp b/qmltermwidget/lib/History.cpp +index 0f9c13f..ab6f7be 100644 +--- a/qmltermwidget/lib/History.cpp ++++ b/qmltermwidget/lib/History.cpp +@@ -515,7 +515,7 @@ void HistoryScrollBlockArray::addCells(const Character a[], int count) + // put cells in block's data + assert((count * sizeof(Character)) < ENTRIES); + +- memset(b->data, 0, ENTRIES); ++ memset(b->data, 0, sizeof(b->data)); + + memcpy(b->data, a, count * sizeof(Character)); + b->size = count * sizeof(Character); +-- +2.12.2 + diff --git a/gnu/packages/patches/cool-retro-term-memory-leak-1.patch b/gnu/packages/patches/cool-retro-term-memory-leak-1.patch new file mode 100644 index 0000000000..f3fbac17de --- /dev/null +++ b/gnu/packages/patches/cool-retro-term-memory-leak-1.patch @@ -0,0 +1,32 @@ +From 08628fda19128b75248548357e416bc373f14f91 Mon Sep 17 00:00:00 2001 +From: Yen Chi Hsuan <yan12125@gmail.com> +Date: Sat, 18 Mar 2017 02:50:34 +0800 +Subject: [PATCH] Fix memory leak in hotspot (URLs & emails) detection + +--- + qmltermwidget/lib/Filter.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/qmltermwidget/lib/Filter.cpp b/qmltermwidget/lib/Filter.cpp +index 5ca7bee..2e8d2fb 100644 +--- a/qmltermwidget/lib/Filter.cpp ++++ b/qmltermwidget/lib/Filter.cpp +@@ -26,6 +26,7 @@ + // Qt + #include <QAction> + #include <QApplication> ++#include <QtAlgorithms> + #include <QClipboard> + #include <QString> + #include <QTextStream> +@@ -194,6 +195,7 @@ Filter::~Filter() + } + void Filter::reset() + { ++ qDeleteAll(_hotspotList); + _hotspots.clear(); + _hotspotList.clear(); + } +-- +2.12.2 + diff --git a/gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch b/gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch new file mode 100644 index 0000000000..7a033df413 --- /dev/null +++ b/gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch @@ -0,0 +1,205 @@ +From 96ceffdfdcedd3ae33c46b11357aa2518e0a6152 Mon Sep 17 00:00:00 2001 +From: Petter <petter@mykolab.ch> +Date: Thu, 27 Apr 2017 18:55:10 +0200 +Subject: [PATCH] Remove non-free fonts from settings menu + +--- a/app/qml/ApplicationSettings.qml ++++ b/app/qml/ApplicationSettings.qml +@@ -409,7 +409,7 @@ + obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"TERMINUS_SCALED","fontColor":"#0ccc68","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.16,"jitter":0.18,"burnIn":0.45,"staticNoise":0.1,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}' + builtin: true + } +- ListElement{ ++ /*ListElement{ + text: "Default Scanlines" + obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.1,"contrast":0.85,"fontName":"COMMODORE_PET","fontColor":"#00ff5b","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.2,"horizontalSync":0.14,"jitter":0.11,"burnIn":0.4,"staticNoise":0.05,"rasterization":1,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}' + builtin: true +@@ -433,7 +433,7 @@ + text: "IBM Dos" + obj_string: '{"ambientLight":0.16,"backgroundColor":"#000000","bloom":0.4,"brightness":0.5,"flickering":0.07,"contrast":0.85,"fontName":"IBM_DOS","fontColor":"#ffffff","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0.13,"horizontalSync":0,"jitter":0.16,"burnIn":0.3,"staticNoise":0.03,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":1,"saturationColor":0,"rbgShift":0.35,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}' + builtin: true +- } ++ }*/ + ListElement{ + text: "IBM 3278" + obj_string: '{"ambientLight":0.1,"backgroundColor":"#000000","bloom":0.15,"brightness":0.5,"flickering":0,"contrast":0.85,"fontName":"IBM_3278","fontColor":"#0ccc68","frameName":"SIMPLE_WHITE_FRAME","glowingLine":0,"horizontalSync":0,"jitter":0,"burnIn":0.6,"staticNoise":0,"rasterization":0,"screenCurvature":0.1,"windowOpacity":1,"chromaColor":0,"saturationColor":0,"rbgShift":0,"fontWidth":1.0,"useCustomCommand":false,"customCommand":""}' +diff --git a/app/qml/FontPixels.qml b/app/qml/FontPixels.qml +index 6ff85da..6f0d0ba 100644 +--- a/app/qml/FontPixels.qml ++++ b/app/qml/FontPixels.qml +@@ -32,7 +32,7 @@ QtObject{ + property bool lowResolutionFont: true + + property ListModel fontlist: ListModel{ +- ListElement{ ++ /*ListElement{ + name: "COMMODORE_PET" + text: "Commodore PET (1977)" + source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" +@@ -40,7 +40,7 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.8 +- } ++ }*/ + ListElement{ + name: "PROGGY_TINY" + text: "Proggy Tiny (Modern)" +@@ -68,7 +68,7 @@ QtObject{ + baseScaling: 3.0 + fontWidth: 1.0 + } +- ListElement{ ++ /*ListElement{ + name: "APPLE_II" + text: "Apple ][ (1977)" + source: "fonts/1977-apple2/PrintChar21.ttf" +@@ -76,8 +76,8 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.9 +- } +- ListElement{ ++ }*/ ++ /*ListElement{ + name: "ATARI_400" + text: "Atari 400-800 (1979)" + source: "fonts/1979-atari-400-800/ATARI400800_original.TTF" +@@ -85,8 +85,8 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.8 +- } +- ListElement{ ++ }*/ ++ /*ListElement{ + name: "COMMODORE_64" + text: "Commodore 64 (1982)" + source: "fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf" +@@ -94,6 +94,6 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.8 +- } ++ }*/ + } + } +diff --git a/app/qml/FontScanlines.qml b/app/qml/FontScanlines.qml +index eebf00b..410d7b6 100644 +--- a/app/qml/FontScanlines.qml ++++ b/app/qml/FontScanlines.qml +@@ -32,7 +32,7 @@ QtObject{ + property bool lowResolutionFont: true + + property ListModel fontlist: ListModel{ +- ListElement{ ++ /*ListElement{ + name: "COMMODORE_PET" + text: "Commodore PET (1977)" + source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" +@@ -40,7 +40,7 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.7 +- } ++ }*/ + ListElement{ + name: "PROGGY_TINY" + text: "Proggy Tiny (Modern)" +@@ -68,7 +68,7 @@ QtObject{ + baseScaling: 3.0 + fontWidth: 1.0 + } +- ListElement{ ++ /*ListElement{ + name: "APPLE_II" + text: "Apple ][ (1977)" + source: "fonts/1977-apple2/PrintChar21.ttf" +@@ -76,8 +76,8 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.8 +- } +- ListElement{ ++ }*/ ++ /*ListElement{ + name: "ATARI_400" + text: "Atari 400-800 (1979)" + source: "fonts/1979-atari-400-800/ATARI400800_original.TTF" +@@ -85,8 +85,8 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.7 +- } +- ListElement{ ++ }*/ ++ /*ListElement{ + name: "COMMODORE_64" + text: "Commodore 64 (1982)" + source: "fonts/1982-commodore64/C64_Pro_Mono_v1.0-STYLE.ttf" +@@ -94,6 +94,6 @@ QtObject{ + pixelSize: 8 + baseScaling: 4.0 + fontWidth: 0.7 +- } ++ }*/ + } + } +diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml +index ad20844..882808a 100644 +--- a/app/qml/Fonts.qml ++++ b/app/qml/Fonts.qml +@@ -80,7 +80,7 @@ + fontWidth: 1.0 + lowResolutionFont: true + } +- ListElement{ ++ /*ListElement{ + name: "COMMODORE_PET_SCALED" + text: "Commodore PET (1977)" + source: "fonts/1977-commodore-pet/COMMODORE_PET.ttf" +@@ -89,7 +89,7 @@ + baseScaling: 3.5 + fontWidth: 0.7 + lowResolutionFont: true +- } ++ }*/ + ListElement{ + name: "PROGGY_TINY_SCALED" + text: "Proggy Tiny (Modern)" +@@ -100,7 +100,7 @@ + fontWidth: 0.9 + lowResolutionFont: true + } +- ListElement{ ++ /*ListElement{ + name: "APPLE_II_SCALED" + text: "Apple ][ (1977)" + source: "fonts/1977-apple2/PrintChar21.ttf" +@@ -149,7 +149,7 @@ + baseScaling: 2.0 + fontWidth: 1.0 + lowResolutionFont: true +- } ++ }*/ + ListElement{ + name: "HERMIT" + text: "HD: Hermit (Modern)" +@@ -177,7 +177,7 @@ + fontWidth: 1.0 + lowResolutionFont: false + } +- ListElement{ ++ /*ListElement{ + name: "MONACO" + text: "HD: Monaco (Modern)" + source: "fonts/modern-monaco/monaco.ttf" +@@ -185,7 +185,7 @@ + pixelSize: 30 + fontWidth: 1.0 + lowResolutionFont: false +- } ++ }*/ + ListElement{ + name: "INCONSOLATA" + text: "HD: Inconsolata (Modern)" diff --git a/gnu/packages/patches/dvd+rw-tools-add-include.patch b/gnu/packages/patches/dvd+rw-tools-add-include.patch new file mode 100644 index 0000000000..800f8f30ba --- /dev/null +++ b/gnu/packages/patches/dvd+rw-tools-add-include.patch @@ -0,0 +1,14 @@ +Without <limits.h>, INT_MAX is not defined. + +diff --git a/transport.hxx b/transport.hxx +index 35a57a7..838add6 100644 +--- a/transport.hxx ++++ b/transport.hxx +@@ -11,6 +11,7 @@ + #include <stdlib.h> + #include <unistd.h> + #include <string.h> ++#include <limits.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <fcntl.h> diff --git a/gnu/packages/patches/elixir-disable-failing-tests.patch b/gnu/packages/patches/elixir-disable-failing-tests.patch index 0c67562f8d..547598b292 100644 --- a/gnu/packages/patches/elixir-disable-failing-tests.patch +++ b/gnu/packages/patches/elixir-disable-failing-tests.patch @@ -16,7 +16,7 @@ index 3ffd56c..1232d19 100644 @@ -39,6 +39,7 @@ end defmodule Kernel.CLI.OptionParsingTest do use ExUnit.Case, async: true - + + @tag :skip test "properly parses paths" do root = fixture_path("../../..") |> to_charlist @@ -24,7 +24,7 @@ index 3ffd56c..1232d19 100644 @@ -57,6 +58,7 @@ end defmodule Kernel.CLI.AtExitTest do use ExUnit.Case, async: true - + + @tag :skip test "invokes at_exit callbacks" do assert elixir(fixture_path("at_exit.exs") |> to_charlist) == @@ -32,7 +32,7 @@ index 3ffd56c..1232d19 100644 @@ -66,6 +68,7 @@ end defmodule Kernel.CLI.ErrorTest do use ExUnit.Case, async: true - + + @tag :skip test "properly format errors" do assert :string.str('** (throw) 1', elixir('-e "throw 1"')) == 0 @@ -40,7 +40,7 @@ index 3ffd56c..1232d19 100644 @@ -86,6 +89,7 @@ defmodule Kernel.CLI.CompileTest do {:ok, [tmp_dir_path: tmp_dir_path, beam_file_path: beam_file_path, fixture: fixture]} end - + + @tag :skip test "compiles code", context do assert elixirc('#{context[:fixture]} -o #{context[:tmp_dir_path]}') == '' @@ -48,7 +48,7 @@ index 3ffd56c..1232d19 100644 @@ -96,6 +100,7 @@ defmodule Kernel.CLI.CompileTest do Code.delete_path context[:tmp_dir_path] end - + + @tag :skip test "fails on missing patterns", context do output = elixirc('#{context[:fixture]} non_existing.ex -o #{context[:tmp_dir_path]}') @@ -56,11 +56,11 @@ index 3ffd56c..1232d19 100644 @@ -103,6 +108,7 @@ defmodule Kernel.CLI.CompileTest do refute File.exists?(context[:beam_file_path]), "expected the sample to not be compiled" end - + + @tag :skip test "fails on missing write access to .beam file", context do compilation_args = '#{context[:fixture]} -o #{context[:tmp_dir_path]}' - + diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs index 801d852..40fc5bc 100644 --- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs @@ -68,19 +68,19 @@ index 801d852..40fc5bc 100644 @@ -60,16 +60,19 @@ defmodule Kernel.DialyzerTest do assert_dialyze_no_warnings! context end - + + @tag :skip test "no warnings on rewrites", context do copy_beam! context, Dialyzer.Rewrite assert_dialyze_no_warnings! context end - + + @tag :skip test "no warnings on raise", context do copy_beam! context, Dialyzer.Raise assert_dialyze_no_warnings! context end - + + @tag :skip test "no warnings on macrocallback", context do copy_beam! context, Dialyzer.Macrocallback @@ -94,7 +94,7 @@ index aafa559..0f9c178 100644 assert System.endianness == System.compiled_endianness end - -+ ++ + @tag :skip test "argv/0" do list = elixir('-e "IO.inspect System.argv" -- -o opt arg1 arg2 --long-opt 10') @@ -106,7 +106,7 @@ index fff3351..d6ed1b3 100644 @@ -244,6 +244,7 @@ defmodule Mix.DepTest do end end - + + @tag :skip test "remote converger" do deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, @@ -114,39 +114,12 @@ index fff3351..d6ed1b3 100644 @@ -301,6 +302,7 @@ defmodule Mix.DepTest do end end - + + @tag :skip test "remote converger is not invoked if deps diverge" do deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo"), only: :test}] -diff --git a/lib/mix/test/mix/rebar_test.exs b/lib/mix/test/mix/rebar_test.exs -index d2dd098..12cef15 100644 ---- a/lib/mix/test/mix/rebar_test.exs -+++ b/lib/mix/test/mix/rebar_test.exs -@@ -120,6 +120,7 @@ defmodule Mix.RebarTest do - assert Enum.all?(deps, &(&1.manager == :rebar3)) - end - -+ @tag :skip - test "Rebar overrides" do - Mix.Project.push(RebarOverrideAsDep) - -@@ -150,6 +151,7 @@ defmodule Mix.RebarTest do - end - end - -+ @tag :skip - test "get and compile dependencies for Rebar" do - Mix.Project.push(RebarAsDep) - -@@ -180,6 +182,7 @@ defmodule Mix.RebarTest do - end - end - -+ @tag :skip - test "get and compile dependencies for rebar3" do - Mix.Project.push(Rebar3AsDep) - + diff --git a/lib/mix/test/mix/shell/io_test.exs b/lib/mix/test/mix/shell/io_test.exs index 9bfb6b4..d982ef3 100644 --- a/lib/mix/test/mix/shell/io_test.exs @@ -154,11 +127,11 @@ index 9bfb6b4..d982ef3 100644 @@ -29,6 +29,7 @@ defmodule Mix.Shell.IOTest do assert capture_io("", fn -> refute yes?("Ok?") end) end - + + @tag :skip test "runs a given command" do assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "hello\n" - + diff --git a/lib/mix/test/mix/shell/quiet_test.exs b/lib/mix/test/mix/shell/quiet_test.exs index 626429b..99fab35 100644 --- a/lib/mix/test/mix/shell/quiet_test.exs @@ -166,11 +139,11 @@ index 626429b..99fab35 100644 @@ -29,6 +29,7 @@ defmodule Mix.Shell.QuietTest do assert capture_io("", fn -> refute yes?("Ok?") end) end - + + @tag :skip test "runs a given command" do assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "" - + diff --git a/lib/mix/test/mix/tasks/cmd_test.exs b/lib/mix/test/mix/tasks/cmd_test.exs index db4bf06..4d441f7 100644 --- a/lib/mix/test/mix/tasks/cmd_test.exs @@ -178,7 +151,7 @@ index db4bf06..4d441f7 100644 @@ -3,6 +3,7 @@ Code.require_file "../../test_helper.exs", __DIR__ defmodule Mix.Tasks.CmdTest do use MixTest.Case - + + @tag :skip test "runs the command for each app" do in_fixture "umbrella_dep/deps/umbrella", fn -> @@ -190,19 +163,19 @@ index 4f09ff3..c371997 100644 @@ -29,6 +29,7 @@ defmodule Mix.Tasks.Deps.TreeTest do end end - + + @tag :skip test "shows the dependency tree", context do Mix.Project.push ConvergedDepsApp - + @@ -109,6 +110,7 @@ defmodule Mix.Tasks.Deps.TreeTest do end end - + + @tag :skip test "shows the dependency tree in DOT graph format", context do Mix.Project.push ConvergedDepsApp - + diff --git a/lib/mix/test/mix/tasks/deps_test.exs b/lib/mix/test/mix/tasks/deps_test.exs index b061777..cc45cf8 100644 --- a/lib/mix/test/mix/tasks/deps_test.exs @@ -210,43 +183,43 @@ index b061777..cc45cf8 100644 @@ -96,6 +96,7 @@ end end - + + @tag :skip test "prints list of dependencies and their lock status" do Mix.Project.push DepsApp - + @@ -409,6 +409,7 @@ defmodule Mix.Tasks.DepsTest do end end - + + @tag :skip test "fails on diverged dependencies by requirement" do Mix.Project.push ConvergedDepsApp - + @@ -440,6 +441,7 @@ defmodule Mix.Tasks.DepsTest do end end - + + @tag :skip test "fails on diverged dependencies even when optional" do Mix.Project.push ConvergedDepsApp - + @@ -469,6 +471,7 @@ defmodule Mix.Tasks.DepsTest do end end - + + @tag :skip test "works with converged dependencies" do Mix.Project.push ConvergedDepsApp - + @@ -491,6 +494,7 @@ defmodule Mix.Tasks.DepsTest do purge [GitRepo, GitRepo.Mixfile] end - + + @tag :skip test "works with overridden dependencies" do Mix.Project.push OverriddenDepsApp - + diff --git a/lib/mix/test/mix/umbrella_test.exs b/lib/mix/test/mix/umbrella_test.exs index 69f9428..406668a 100644 --- a/lib/mix/test/mix/umbrella_test.exs @@ -254,8 +227,58 @@ index 69f9428..406668a 100644 @@ -98,6 +98,7 @@ defmodule Mix.UmbrellaTest do end end - + + @tag :skip test "loads umbrella child dependencies in all environments" do in_fixture "umbrella_dep/deps/umbrella", fn -> Mix.Project.in_project :umbrella, ".", fn _ -> + +diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs +index 792222c..e90beb9 100644 +--- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs ++++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs +@@ -54,6 +54,7 @@ defmodule Kernel.DialyzerTest do + {:ok, [outdir: dir, dialyzer: dialyzer]} + end + ++ @tag :skip + test "no warnings on valid remote calls", context do + copy_beam! context, Dialyzer.RemoteCall + assert_dialyze_no_warnings! context +@@ -78,11 +79,13 @@ defmodule Kernel.DialyzerTest do + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on struct update", context do + copy_beam! context, Dialyzer.StructUpdate + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on protocol calls with opaque types", context do + copy_beam! context, Dialyzer.ProtocolOpaque + copy_beam! context, Dialyzer.ProtocolOpaque.Entity +@@ -90,6 +93,7 @@ defmodule Kernel.DialyzerTest do + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on and/2 and or/2", context do + copy_beam! context, Dialyzer.BooleanCheck + assert_dialyze_no_warnings! context + +diff --git a/Makefile b/Makefile +index 2fc4f9a..aef8366 100644 +--- a/Makefile ++++ b/Makefile +@@ -201,7 +201,7 @@ $(TEST_EBIN)/%.beam: $(TEST_ERL)/%.erl + $(Q) mkdir -p $(TEST_EBIN) + $(Q) $(ERLC) -o $(TEST_EBIN) $< + +-test_elixir: test_stdlib test_ex_unit test_logger test_mix test_eex test_iex ++test_elixir: test_stdlib test_ex_unit test_logger test_eex test_iex + + test_stdlib: compile + @ echo "==> elixir (exunit)" + diff --git a/gnu/packages/patches/fabric-tests.patch b/gnu/packages/patches/fabric-tests.patch new file mode 100644 index 0000000000..4a0ca9f8f1 --- /dev/null +++ b/gnu/packages/patches/fabric-tests.patch @@ -0,0 +1,15 @@ +The `fab` excecutable doesn't exist during the test phase as it is created +dynamically during installation. Refer to the equivalent Python module +directly. + +--- a/tests/test_utils.py ++++ b/tests/test_utils.py +@@ -93,7 +93,7 @@ + # perform when they are allowed to bubble all the way to the top. So, we + # invoke a subprocess and look at its stderr instead. + with quiet(): +- result = local("fab -f tests/support/aborts.py kaboom", capture=True) ++ result = local("python -m fabric -f tests/support/aborts.py kaboom", capture=True) + # When error in #1318 is present, this has an extra "It burns!" at end of + # stderr string. + eq_(result.stderr, "Fatal error: It burns!\n\nAborting.") \ No newline at end of file diff --git a/gnu/packages/patches/fuse-overlapping-headers.patch b/gnu/packages/patches/fuse-overlapping-headers.patch new file mode 100644 index 0000000000..54f9c0e709 --- /dev/null +++ b/gnu/packages/patches/fuse-overlapping-headers.patch @@ -0,0 +1,28 @@ +This patch is from Debian, named '0006-arm64.patch' + +Author: Riku Voipio <riku.voipio@linaro.org> +Description: fuse_kernel.h: clean includes + Use <linux/types.h> for linux and define types used for other operating systems + using <stdint.h> types (Closes: #752081). + +diff -Naurp fuse.orig/include/fuse_kernel.h fuse/include/fuse_kernel.h +--- fuse.orig/include/fuse_kernel.h ++++ fuse/include/fuse_kernel.h +@@ -88,12 +88,16 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include <sys/types.h> ++#ifdef __linux__ ++#include <linux/types.h> ++#else ++#include <stdint.h> + #define __u64 uint64_t + #define __s64 int64_t + #define __u32 uint32_t + #define __s32 int32_t + #define __u16 uint16_t ++#endif + + /* + * Version negotiation: diff --git a/gnu/packages/patches/gcc-libiberty-printf-decl.patch b/gnu/packages/patches/gcc-libiberty-printf-decl.patch deleted file mode 100644 index a612c9e00e..0000000000 --- a/gnu/packages/patches/gcc-libiberty-printf-decl.patch +++ /dev/null @@ -1,28 +0,0 @@ -This patch makes the exeception specifier of libiberty's 'asprintf' -and 'vasprintf' declarations match those of glibc to work around the -problem described at <https://gcc.gnu.org/ml/gcc-help/2016-04/msg00039.html>. - -The problem in part stems from the fact that libiberty is configured -without _GNU_SOURCE (thus, it sets HAVE_DECL_ASPRINTF to 0), whereas libcc1 -is configured and built with _GNU_SOURCE, hence the conflicting declarations. - ---- gcc-5.3.0/include/libiberty.h 2016-04-23 22:45:46.262709079 +0200 -+++ gcc-5.3.0/include/libiberty.h 2016-04-23 22:45:37.110635439 +0200 -@@ -625,7 +625,7 @@ extern int pwait (int, int *, int); - /* Like sprintf but provides a pointer to malloc'd storage, which must - be freed by the caller. */ - --extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2; -+extern int asprintf (char **, const char *, ...) __THROWNL ATTRIBUTE_PRINTF_2; - #endif - - /* Like asprintf but allocates memory without fail. This works like -@@ -637,7 +637,7 @@ extern char *xasprintf (const char *, .. - /* Like vsprintf but provides a pointer to malloc'd storage, which - must be freed by the caller. */ - --extern int vasprintf (char **, const char *, va_list) ATTRIBUTE_PRINTF(2,0); -+extern int vasprintf (char **, const char *, va_list) __THROWNL ATTRIBUTE_PRINTF(2,0); - #endif - - /* Like vasprintf but allocates memory without fail. This works like diff --git a/gnu/packages/patches/gcj-arm-mode.patch b/gnu/packages/patches/gcj-arm-mode.patch deleted file mode 100644 index a3f999f7e9..0000000000 --- a/gnu/packages/patches/gcj-arm-mode.patch +++ /dev/null @@ -1,36 +0,0 @@ -Taken from -https://sources.debian.net/data/main/g/gcc-4.9/4.9.2-10/debian/patches/gcj-arm-mode.diff - -# DP: For armhf, force arm mode instead of thumb mode - ---- a/libjava/configure.host -+++ b/libjava/configure.host -@@ -66,6 +66,9 @@ - ;; - esac - -+# on armhf force arm mode -+libgcj_flags="${libgcj_flags} -marm" -+ - AM_RUNTESTFLAGS= - - # Set any host dependent compiler flags. ---- a/gcc/java/lang-specs.h -+++ b/gcc/java/lang-specs.h -@@ -47,7 +47,7 @@ - %{.class|.zip|.jar|!fsyntax-only:jc1 \ - %{.java|fsaw-java-file:%U.jar -fsource-filename=%i %<ffilelist-file} \ - %{.class|.zip|.jar|ffilelist-file|fcompile-resource*:%i} \ -- %(jc1) %(cc1_options) %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \ -+ %(jc1) %(cc1_options) -marm %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \ - %{MD:-MD_} %{MMD:-MMD_} %{M} %{MM} %{MA} %{MT*} %{MF*}\ - %(invoke_as)}", - 0, 0, 0}, ---- a/libjava/libgcj.spec.in -+++ b/libjava/libgcj.spec.in -@@ -9,4 +9,4 @@ - %rename lib liborig - *lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ @LIBMATHSPEC@ @LDLIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig) - --*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions -+*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions -marm diff --git a/gnu/packages/patches/ghostscript-CVE-2017-8291.patch b/gnu/packages/patches/ghostscript-CVE-2017-8291.patch new file mode 100644 index 0000000000..db80b6ddec --- /dev/null +++ b/gnu/packages/patches/ghostscript-CVE-2017-8291.patch @@ -0,0 +1,73 @@ +Fix CVE-2017-8291: + +https://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-8291 + +This patch is adapted from these two Artifex Ghostscript commits by Leo +Famulari <leo@famulari.name>: + +https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=04b37bbce174eed24edec7ad5b920eb93db4d47d;hp=4f83478c88c2e05d6e8d79ca4557eb039354d2f3 +https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=4f83478c88c2e05d6e8d79ca4557eb039354d2f3;hp=5603e8fc3e59c435318877efe627967ee6baebb8 + +diff --git a/psi/zfrsd.c b/psi/zfrsd.c +index fb4bce9..2629afa 100644 +--- a/psi/zfrsd.c ++++ b/psi/zfrsd.c +@@ -49,13 +49,20 @@ zrsdparams(i_ctx_t *i_ctx_p) + ref *pFilter; + ref *pDecodeParms; + int Intent = 0; +- bool AsyncRead; ++ bool AsyncRead = false; + ref empty_array, filter1_array, parms1_array; + uint i; +- int code; ++ int code = 0; ++ ++ if (ref_stack_count(&o_stack) < 1) ++ return_error(e_stackunderflow); ++ if (!r_has_type(op, t_dictionary) && !r_has_type(op, t_null)) { ++ return_error(e_typecheck); ++ } + + make_empty_array(&empty_array, a_readonly); +- if (dict_find_string(op, "Filter", &pFilter) > 0) { ++ if (r_has_type(op, t_dictionary) ++ && dict_find_string(op, "Filter", &pFilter) > 0) { + if (!r_is_array(pFilter)) { + if (!r_has_type(pFilter, t_name)) + return_error(e_typecheck); +@@ -94,12 +101,13 @@ zrsdparams(i_ctx_t *i_ctx_p) + return_error(e_typecheck); + } + } +- code = dict_int_param(op, "Intent", 0, 3, 0, &Intent); ++ if (r_has_type(op, t_dictionary)) ++ code = dict_int_param(op, "Intent", 0, 3, 0, &Intent); + if (code < 0 && code != e_rangecheck) /* out-of-range int is ok, use 0 */ + return code; +- if ((code = dict_bool_param(op, "AsyncRead", false, &AsyncRead)) < 0 +- ) +- return code; ++ if (r_has_type(op, t_dictionary)) ++ if ((code = dict_bool_param(op, "AsyncRead", false, &AsyncRead)) < 0) ++ return code; + push(1); + op[-1] = *pFilter; + if (pDecodeParms) +diff --git a/psi/zmisc3.c b/psi/zmisc3.c +index 54b3042..0d357f1 100644 +--- a/psi/zmisc3.c ++++ b/psi/zmisc3.c +@@ -56,6 +56,12 @@ zeqproc(i_ctx_t *i_ctx_p) + ref2_t stack[MAX_DEPTH + 1]; + ref2_t *top = stack; + ++ if (ref_stack_count(&o_stack) < 2) ++ return_error(e_stackunderflow); ++ if (!r_is_array(op - 1) || !r_is_array(op)) { ++ return_error(e_typecheck); ++ } ++ + make_array(&stack[0].proc1, 0, 1, op - 1); + make_array(&stack[0].proc2, 0, 1, op); + for (;;) { diff --git a/gnu/packages/patches/glibc-memchr-overflow-i686.patch b/gnu/packages/patches/glibc-memchr-overflow-i686.patch new file mode 100644 index 0000000000..0b1b5b9f96 --- /dev/null +++ b/gnu/packages/patches/glibc-memchr-overflow-i686.patch @@ -0,0 +1,74 @@ +Extracted from glibc upstream git repository. Changes to the ChangeLog have +been removed. This patch is needed to fix spurious segmentation faults on +i686. + +From 3abeeec5f46ff036bd9df60bb096e20314ccd078 Mon Sep 17 00:00:00 2001 +From: Adhemerval Zanella <adhemerval.zanella@linaro.org> +Date: Tue, 14 Mar 2017 14:16:13 -0300 +Subject: [PATCH] Fix i686 memchr overflow calculation (BZ#21182) + +This patch fixes the regression added by 23d2770 for final address +overflow calculation. The subtraction of the considered size (16) +at line 120 is at wrong place, for sizes less than 16 subsequent +overflow check will not take in consideration an invalid size (since +the subtraction will be negative). Also, the lea instruction also +does not raise the carry flag (CF) that is used in subsequent jbe +to check for overflow. + +The fix is to follow x86_64 logic from 3daef2c where the overflow +is first check and a sub instruction is issued. In case of resulting +negative size, CF will be set by the sub instruction and a NULL +result will be returned. The patch also add similar tests reported +in bug report. + +Checked on i686-linux-gnu and x86_64-linux-gnu. + + * string/test-memchr.c (do_test): Add BZ#21182 checks for address + near end of a page. + * sysdeps/i386/i686/multiarch/memchr-sse2.S (__memchr): Fix + overflow calculation. +--- + string/test-memchr.c | 6 ++++++ + sysdeps/i386/i686/multiarch/memchr-sse2.S | 2 +- + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/string/test-memchr.c b/string/test-memchr.c +index 2403c9242b..669e092e7d 100644 +--- a/string/test-memchr.c ++++ b/string/test-memchr.c +@@ -210,6 +210,12 @@ test_main (void) + do_test (0, i, i + 1, i + 1, 0); + } + ++ /* BZ#21182 - wrong overflow calculation for i686 implementation ++ with address near end of the page. */ ++ for (i = 2; i < 16; ++i) ++ /* page_size is in fact getpagesize() * 2. */ ++ do_test (page_size / 2 - i, i, i, 1, 0x9B); ++ + do_random_tests (); + return ret; + } +diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2.S b/sysdeps/i386/i686/multiarch/memchr-sse2.S +index 910679cfc0..e41f324a77 100644 +--- a/sysdeps/i386/i686/multiarch/memchr-sse2.S ++++ b/sysdeps/i386/i686/multiarch/memchr-sse2.S +@@ -117,7 +117,6 @@ L(crosscache): + + # ifndef USE_AS_RAWMEMCHR + jnz L(match_case2_prolog1) +- lea -16(%edx), %edx + /* Calculate the last acceptable address and check for possible + addition overflow by using satured math: + edx = ecx + edx +@@ -125,6 +124,7 @@ L(crosscache): + add %ecx, %edx + sbb %eax, %eax + or %eax, %edx ++ sub $16, %edx + jbe L(return_null) + lea 16(%edi), %edi + # else +-- +2.12.2 + diff --git a/gnu/packages/patches/glog-gcc-5-demangling.patch b/gnu/packages/patches/glog-gcc-5-demangling.patch new file mode 100644 index 0000000000..7f3f42ceca --- /dev/null +++ b/gnu/packages/patches/glog-gcc-5-demangling.patch @@ -0,0 +1,64 @@ +Fix symbol demangling for GCC 5, as reported at: + + https://github.com/google/glog/issues/14 + +Patch from: + + https://github.com/google/glog/pull/50 + +From b1639e3014996fbc7635870e013559c54e7e3b2f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Mart=C3=ADnez=20Moreno?= <ender@debian.org> +Date: Thu, 13 Aug 2015 09:31:26 -0700 +Subject: [PATCH] Fix ABI demangling for the GCC 5.x case. + +When glog is compiled with gcc-5.2 in cxx11 ABI mode, it barfs about unmangled symbols. This patches it getting inspiration from binutils and demangle.cc itself, although it may be totally wrong or maybe have to use ParseAbiTag in more places. I haven't read the spec for the symbols, though. + +This patch makes the demangle unit test pass correctly. +--- + src/demangle.cc | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/demangle.cc b/src/demangle.cc +index e858181..0f0c831 100644 +--- a/src/demangle.cc ++++ b/src/demangle.cc +@@ -439,6 +439,7 @@ static bool ParseExprPrimary(State *state); + static bool ParseLocalName(State *state); + static bool ParseDiscriminator(State *state); + static bool ParseSubstitution(State *state); ++static bool ParseAbiTag(State *state); + + // Implementation note: the following code is a straightforward + // translation of the Itanium C++ ABI defined in BNF with a couple of +@@ -567,6 +568,8 @@ static bool ParseNestedName(State *state) { + static bool ParsePrefix(State *state) { + bool has_something = false; + while (true) { ++ if (ParseAbiTag(state)) ++ continue; + MaybeAppendSeparator(state); + if (ParseTemplateParam(state) || + ParseSubstitution(state) || +@@ -585,6 +588,22 @@ static bool ParsePrefix(State *state) { + return true; + } + ++// <abi-tag> ::= B <source-name> ++static bool ParseAbiTag(State *state) { ++ State copy = *state; ++ ++ Append(state, "[", 1); ++ if (ParseOneCharToken(state, 'B') && ++ ParseSourceName(state)) ++ { ++ Append(state, "]", 1); ++ return true; ++ } ++ ++ *state = copy; ++ return false; ++} ++ + // <unqualified-name> ::= <operator-name> + // ::= <ctor-dtor-name> + // ::= <source-name> diff --git a/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch b/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch new file mode 100644 index 0000000000..5d8e31563f --- /dev/null +++ b/gnu/packages/patches/gnome-shell-CVE-2017-8288.patch @@ -0,0 +1,54 @@ +Fix CVE-2017-8288: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8288 +http://seclists.org/oss-sec/2017/q2/136 + +Patch copied from upstream source repository: + +https://git.gnome.org/browse/gnome-shell/commit/?id=ff425d1db7082e2755d2a405af53861552acf2a1 + +From ff425d1db7082e2755d2a405af53861552acf2a1 Mon Sep 17 00:00:00 2001 +From: Emilio Pozuelo Monfort <pochu27@gmail.com> +Date: Tue, 25 Apr 2017 17:27:42 +0200 +Subject: extensionSystem: handle reloading broken extensions + +Some extensions out there may fail to reload. When that happens, +we need to catch any exceptions so that we don't leave things in +a broken state that could lead to leaving extensions enabled in +the screen shield. + +https://bugzilla.gnome.org/show_bug.cgi?id=781728 +--- + js/ui/extensionSystem.js | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js +index a4dc29e..fc352b8 100644 +--- a/js/ui/extensionSystem.js ++++ b/js/ui/extensionSystem.js +@@ -282,12 +282,20 @@ function _onVersionValidationChanged() { + // temporarily disable them all + enabledExtensions = []; + for (let uuid in ExtensionUtils.extensions) +- reloadExtension(ExtensionUtils.extensions[uuid]); ++ try { ++ reloadExtension(ExtensionUtils.extensions[uuid]); ++ } catch(e) { ++ logExtensionError(uuid, e); ++ } + enabledExtensions = getEnabledExtensions(); + + if (Main.sessionMode.allowExtensions) { + enabledExtensions.forEach(function(uuid) { +- enableExtension(uuid); ++ try { ++ enableExtension(uuid); ++ } catch(e) { ++ logExtensionError(uuid, e); ++ } + }); + } + } +-- +cgit v0.12 + diff --git a/gnu/packages/patches/gnupg-2.1-fix-Y2038-test-failure.patch b/gnu/packages/patches/gnupg-2.1-fix-Y2038-test-failure.patch deleted file mode 100644 index b3a198c499..0000000000 --- a/gnu/packages/patches/gnupg-2.1-fix-Y2038-test-failure.patch +++ /dev/null @@ -1,67 +0,0 @@ -Fix a Y2038 test failure on systems where time_t is a signed 32-bit value: - -https://bugs.gnupg.org/gnupg/issue2988 - -Patch copied from upstream source repository: - -https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=de3838372ae3cdecbd83eea2c53c8e2656d93052 - -From de3838372ae3cdecbd83eea2c53c8e2656d93052 Mon Sep 17 00:00:00 2001 -From: Justus Winter <justus@g10code.com> -Date: Tue, 7 Mar 2017 12:18:59 +0100 -Subject: [PATCH] tests: Avoid overflowing signed 32 bit time_t. - -* tests/openpgp/quick-key-manipulation.scm: Use expiration times in -the year 2038 instead of 2105 to avoid overflowing 32 bit time_t. -time_t is used internally to parse the expiraton time from the iso -timestamp. - -GnuPG-bug-id: 2988 -Signed-off-by: Justus Winter <justus@g10code.com> ---- - tests/openpgp/quick-key-manipulation.scm | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/tests/openpgp/quick-key-manipulation.scm b/tests/openpgp/quick-key-manipulation.scm -index 10f0bfe21..08ef62613 100755 ---- a/tests/openpgp/quick-key-manipulation.scm -+++ b/tests/openpgp/quick-key-manipulation.scm -@@ -125,8 +125,13 @@ - (default default never) - (rsa "sign auth encr" "seconds=600") ;; GPGME uses this - (rsa "auth,encr" "2") ;; "without a letter, days is assumed" -- (rsa "sign" "2105-01-01") ;; "last year GnuPG can represent is 2105" -- (rsa "sign" "21050101T115500") ;; "last year GnuPG can represent is 2105" -+ ;; Sadly, the timestamp is truncated by the use of time_t on -+ ;; systems where time_t is a signed 32 bit value. -+ (rsa "sign" "2038-01-01") ;; unix millennium -+ (rsa "sign" "20380101T115500") ;; unix millennium -+ ;; Once fixed, we can use later timestamps: -+ ;; (rsa "sign" "2105-01-01") ;; "last year GnuPG can represent is 2105" -+ ;; (rsa "sign" "21050101T115500") ;; "last year GnuPG can represent is 2105" - (rsa sign "2d") - (rsa1024 sign "2w") - (rsa2048 encr "2m") -@@ -157,7 +162,8 @@ - (lambda (subkey) - (assert (= 1 (:alg subkey))) - (assert (string-contains? (:cap subkey) "s")) -- (assert (time-matches? 4260207600 ;; 2105-01-01 -+ (assert (time-matches? 2145916800 ;; 2038-01-01 -+ ;; 4260207600 ;; 2105-01-01 - (string->number (:expire subkey)) - ;; This is off by 12h, but I guess it just - ;; choses the middle of the day. -@@ -165,7 +171,8 @@ - (lambda (subkey) - (assert (= 1 (:alg subkey))) - (assert (string-contains? (:cap subkey) "s")) -- (assert (time-matches? 4260254100 ;; UTC 2105-01-01 11:55:00 -+ (assert (time-matches? 2145959700 ;; UTC 2038-01-01 11:55:00 -+ ;; 4260254100 ;; UTC 2105-01-01 11:55:00 - (string->number (:expire subkey)) - (minutes->seconds 5)))) - (lambda (subkey) --- -2.12.0 - diff --git a/gnu/packages/patches/graphite2-CVE-2017-5436.patch b/gnu/packages/patches/graphite2-CVE-2017-5436.patch new file mode 100644 index 0000000000..d7383ec8de --- /dev/null +++ b/gnu/packages/patches/graphite2-CVE-2017-5436.patch @@ -0,0 +1,25 @@ +From 1ce331d5548b98ed8b818532b2556d6f2c7a3b83 Mon Sep 17 00:00:00 2001 +From: Martin Hosken <martin_hosken@sil.org> +Date: Thu, 9 Mar 2017 22:04:04 +0000 +Subject: [PATCH] Ensure features have enough space. Fix from Mozilla + +--- + src/FeatureMap.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/FeatureMap.cpp b/src/FeatureMap.cpp +index b8c8405..83bd5f6 100644 +--- a/src/FeatureMap.cpp ++++ b/src/FeatureMap.cpp +@@ -275,7 +275,7 @@ bool FeatureRef::applyValToFeature(uint32 val, Features & pDest) const + else + if (pDest.m_pMap!=&m_pFace->theSill().theFeatureMap()) + return false; //incompatible +- pDest.reserve(m_index); ++ pDest.reserve(m_index+1); + pDest[m_index] &= ~m_mask; + pDest[m_index] |= (uint32(val) << m_bits); + return true; +-- +2.12.2 + diff --git a/gnu/packages/patches/graphite2-check-code-point-limit.patch b/gnu/packages/patches/graphite2-check-code-point-limit.patch new file mode 100644 index 0000000000..a9b6caf53f --- /dev/null +++ b/gnu/packages/patches/graphite2-check-code-point-limit.patch @@ -0,0 +1,50 @@ +From 348c11e4571b534efdbd58a575bbea979c880b2f Mon Sep 17 00:00:00 2001 +From: Tim Eves <tim_eves@sil.org> +Date: Wed, 1 Mar 2017 14:23:46 +0700 +Subject: [PATCH] Fix decoding of USV greater than U+110000 + +Add test cases too +--- + src/inc/UtfCodec.h | 4 ++-- + tests/utftest/utftest.cpp | 3 +++ + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/inc/UtfCodec.h b/src/inc/UtfCodec.h +index 3417bac..9dc760f 100644 +--- a/src/inc/UtfCodec.h ++++ b/src/inc/UtfCodec.h +@@ -124,7 +124,7 @@ struct _utf_codec<8> + private: + static const int8 sz_lut[16]; + static const byte mask_lut[5]; +- ++ static const uchar_t limit = 0x110000; + + public: + typedef uint8 codeunit_t; +@@ -157,7 +157,7 @@ public: + case 0: l = -1; return 0xFFFD; + } + +- if (l != seq_sz || toolong) ++ if (l != seq_sz || toolong || u >= limit) + { + l = -l; + return 0xFFFD; +diff --git a/tests/utftest/utftest.cpp b/tests/utftest/utftest.cpp +index 21cb188..a23553a 100644 +--- a/tests/utftest/utftest.cpp ++++ b/tests/utftest/utftest.cpp +@@ -8,6 +8,9 @@ struct test8 + unsigned char str[12]; + }; + struct test8 tests8[] = { ++ { 0, 0, {0xF4, 0x90, 0x80, 0x80, 0, 0, 0, 0, 0, 0, 0, 0} }, // bad(4) [U+110000] ++ { 0, 0, {0xC0, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, // bad(4) [U+110000] ++ { 0, 0, {0xA0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, // bad(4) [U+110000] + { 4, -1, {0x7F, 0xDF, 0xBF, 0xEF, 0xBF, 0xBF, 0xF4, 0x8F, 0xBF, 0xBF, 0, 0} }, // U+7F, U+7FF, U+FFFF, U+10FFF + { 2, 3, {0x7F, 0xDF, 0xBF, 0xF0, 0x8F, 0xBF, 0xBF, 0xF4, 0x8F, 0xBF, 0xBF, 0} }, // U+7F, U+7FF, long(U+FFFF), U+10FFF + { 1, 1, {0x7F, 0xE0, 0x9F, 0xBF, 0xEF, 0xBF, 0xBF, 0xF4, 0x8F, 0xBF, 0xBF, 0} }, // U+7F, long(U+7FF), U+FFFF, U+10FFF +-- +2.12.2 + diff --git a/gnu/packages/patches/graphite2-fix-32-bit-wrap-arounds.patch b/gnu/packages/patches/graphite2-fix-32-bit-wrap-arounds.patch new file mode 100644 index 0000000000..57d4ce2c6e --- /dev/null +++ b/gnu/packages/patches/graphite2-fix-32-bit-wrap-arounds.patch @@ -0,0 +1,93 @@ +This patch incorporates the following 6 consecutive commits from the upstream +graphite2 repository: + +75b83cd..: Martin Hosken 2017-03-28 Fix 32-bit wrap arounds +1f97e36..: Martin Hosken 2017-03-28 balance comparisons in decompressor +9493785..: Martin Hosken 2017-03-29 Speculative rounding fix +09af043..: Tim Eves 2017-03-31 Move a MINMATCH to rhs of a comparisio +28cc60d..: Tim Eves 2017-03-31 Deal with similar wrap around in literal_len +8afc7d0..: Martin Hosken 2017-04-03 Fix 32-bit rollover in decompressor, again + +This diff was generated by the following command: + + git diff 1ce331d5548b98ed..8afc7d0081959866 + + +diff --git a/src/Decompressor.cpp b/src/Decompressor.cpp +index 084570f..56d531f 100644 +--- a/src/Decompressor.cpp ++++ b/src/Decompressor.cpp +@@ -51,7 +51,7 @@ bool read_sequence(u8 const * &src, u8 const * const end, u8 const * &literal, u + literal = src; + src += literal_len; + +- if (src > end - 2) ++ if (src > end - 2 || src < literal) + return false; + + match_dist = *src++; +@@ -85,7 +85,7 @@ int lz4::decompress(void const *in, size_t in_size, void *out, size_t out_size) + { + // Copy in literal. At this point the last full sequence must be at + // least MINMATCH + 5 from the end of the output buffer. +- if (dst + align(literal_len) > dst_end - (MINMATCH+5)) ++ if (align(literal_len) > unsigned(dst_end - dst - (MINMATCH+5)) || dst_end - dst < MINMATCH + 5) + return -1; + dst = overrun_copy(dst, literal, literal_len); + } +@@ -94,7 +94,8 @@ int lz4::decompress(void const *in, size_t in_size, void *out, size_t out_size) + // decoded output. + u8 const * const pcpy = dst - match_dist; + if (pcpy < static_cast<u8*>(out) +- || dst + match_len + MINMATCH > dst_end - 5) ++ || match_len > unsigned(dst_end - dst - (MINMATCH+5)) ++ || dst_end - dst < MINMATCH + 5) + return -1; + if (dst > pcpy+sizeof(unsigned long) + && dst + align(match_len + MINMATCH) <= dst_end) +@@ -103,8 +104,8 @@ int lz4::decompress(void const *in, size_t in_size, void *out, size_t out_size) + dst = safe_copy(dst, pcpy, match_len + MINMATCH); + } + +- if (literal + literal_len > src_end +- || dst + literal_len > dst_end) ++ if (literal_len > src_end - literal ++ || literal_len > dst_end - dst) + return -1; + dst = fast_copy(dst, literal, literal_len); + +diff --git a/src/Pass.cpp b/src/Pass.cpp +index a4bac2e..683143c 100644 +--- a/src/Pass.cpp ++++ b/src/Pass.cpp +@@ -171,7 +171,7 @@ bool Pass::readPass(const byte * const pass_start, size_t pass_length, size_t su + const uint16 * const o_actions = reinterpret_cast<const uint16 *>(p); + be::skip<uint16>(p, m_numRules + 1); + const byte * const states = p; +- if (e.test(p + 2u*m_numTransition*m_numColumns >= pass_end, E_BADPASSLENGTH)) return face.error(e); ++ if (e.test(2u*m_numTransition*m_numColumns >= (unsigned)(pass_end - p), E_BADPASSLENGTH)) return face.error(e); + be::skip<int16>(p, m_numTransition*m_numColumns); + be::skip<uint8>(p); + if (e.test(p != pcCode, E_BADPASSCCODEPTR)) return face.error(e); +@@ -192,7 +192,7 @@ bool Pass::readPass(const byte * const pass_start, size_t pass_length, size_t su + m_cPConstraint = vm::Machine::Code(true, pcCode, pcCode + pass_constraint_len, + precontext[0], be::peek<uint16>(sort_keys), *m_silf, face, PASS_TYPE_UNKNOWN); + if (e.test(!m_cPConstraint, E_OUTOFMEM) +- || e.test(!m_cPConstraint, m_cPConstraint.status() + E_CODEFAILURE)) ++ || e.test(m_cPConstraint.status() != Code::loaded, m_cPConstraint.status() + E_CODEFAILURE)) + return face.error(e); + face.error_context(face.error_context() - 1); + } +diff --git a/src/Silf.cpp b/src/Silf.cpp +index 72a22cd..d661992 100644 +--- a/src/Silf.cpp ++++ b/src/Silf.cpp +@@ -191,7 +191,7 @@ bool Silf::readGraphite(const byte * const silf_start, size_t lSilf, Face& face, + + const size_t clen = readClassMap(p, passes_start - p, version, e); + m_passes = new Pass[m_numPasses]; +- if (e || e.test(p + clen > passes_start, E_BADPASSESSTART) ++ if (e || e.test(clen > unsigned(passes_start - p), E_BADPASSESSTART) + || e.test(!m_passes, E_OUTOFMEM)) + { releaseBuffers(); return face.error(e); } + diff --git a/gnu/packages/patches/graphite2-non-linear-classes-even-number.patch b/gnu/packages/patches/graphite2-non-linear-classes-even-number.patch new file mode 100644 index 0000000000..2bb1c9f94e --- /dev/null +++ b/gnu/packages/patches/graphite2-non-linear-classes-even-number.patch @@ -0,0 +1,26 @@ +From 0646e4ee471183994f78a759269f0505617711f3 Mon Sep 17 00:00:00 2001 +From: Martin Hosken <martin_hosken@sil.org> +Date: Tue, 18 Apr 2017 13:17:14 +0100 +Subject: [PATCH] Ensure non linear classes have even number of elements + +--- + src/Silf.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/Silf.cpp b/src/Silf.cpp +index d661992..9f2f954 100644 +--- a/src/Silf.cpp ++++ b/src/Silf.cpp +@@ -293,7 +293,8 @@ size_t Silf::readClassMap(const byte *p, size_t data_len, uint32 version, Error + if (e.test(*o + 4 > max_off, E_HIGHCLASSOFFSET) // LookupClass doesn't stretch over max_off + || e.test(lookup[0] == 0 // A LookupClass with no looks is a suspicious thing ... + || lookup[0] * 2 + *o + 4 > max_off // numIDs lookup pairs fits within (start of LookupClass' lookups array, max_off] +- || lookup[3] + lookup[1] != lookup[0], E_BADCLASSLOOKUPINFO)) // rangeShift: numIDs - searchRange ++ || lookup[3] + lookup[1] != lookup[0], E_BADCLASSLOOKUPINFO) // rangeShift: numIDs - searchRange ++ || e.test(((o[1] - *o) & 1) != 0, ERROROFFSET)) // glyphs are in pairs so difference must be even. + return ERROROFFSET; + } + +-- +2.12.2 + diff --git a/gnu/packages/patches/grub-CVE-2015-8370.patch b/gnu/packages/patches/grub-CVE-2015-8370.patch deleted file mode 100644 index 5701b54759..0000000000 --- a/gnu/packages/patches/grub-CVE-2015-8370.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 88c9657960a6c5d3673a25c266781e876c181add Mon Sep 17 00:00:00 2001 -From: Hector Marco-Gisbert <hecmargi@upv.es> -Date: Fri, 13 Nov 2015 16:21:09 +0100 -Subject: [PATCH] Fix security issue when reading username and password - - This patch fixes two integer underflows at: - * grub-core/lib/crypto.c - * grub-core/normal/auth.c - -Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es> -Signed-off-by: Ismael Ripoll-Ripoll <iripoll@disca.upv.es> ---- - grub-core/lib/crypto.c | 2 +- - grub-core/normal/auth.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/grub-core/lib/crypto.c b/grub-core/lib/crypto.c -index 010e550..524a3d8 100644 ---- a/grub-core/lib/crypto.c -+++ b/grub-core/lib/crypto.c -@@ -468,7 +468,7 @@ grub_password_get (char buf[], unsigned buf_size) - break; - } - -- if (key == '\b') -+ if (key == '\b' && cur_len) - { - cur_len--; - continue; -diff --git a/grub-core/normal/auth.c b/grub-core/normal/auth.c -index c6bd96e..5782ec5 100644 ---- a/grub-core/normal/auth.c -+++ b/grub-core/normal/auth.c -@@ -172,7 +172,7 @@ grub_username_get (char buf[], unsigned buf_size) - break; - } - -- if (key == '\b') -+ if (key == '\b' && cur_len) - { - cur_len--; - grub_printf ("\b"); --- -1.9.1 - diff --git a/gnu/packages/patches/grub-freetype.patch b/gnu/packages/patches/grub-freetype.patch deleted file mode 100644 index 286830ccf8..0000000000 --- a/gnu/packages/patches/grub-freetype.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit fd0df6d098b1e6a4f60275c48a3ec88d15ba1fbb -Author: Colin Watson <cjwatson@ubuntu.com> -Date: Fri Nov 29 12:19:36 2013 +0000 - - Fix build with FreeType 2.5.1 - - * util/grub-gen-asciih.c: Include FT_SYNTHESIS_H rather than - <freetype/ftsynth.h>, fixing build with FreeType 2.5.1. - * util/grub-gen-widthspec.c: Likewise. - * util/grub-mkfont.c: Likewise. - -diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c -index 0d8eb78..242dd01 100644 ---- a/util/grub-mkfont.c -+++ b/util/grub-mkfont.c -@@ -43,7 +43,7 @@ - #include FT_FREETYPE_H - #include FT_TRUETYPE_TAGS_H - #include FT_TRUETYPE_TABLES_H --#include <freetype/ftsynth.h> -+#include FT_SYNTHESIS_H - - #undef __FTERRORS_H__ - #define FT_ERROR_START_LIST const char *ft_errmsgs[] = { diff --git a/gnu/packages/patches/grub-gets-undeclared.patch b/gnu/packages/patches/grub-gets-undeclared.patch deleted file mode 100644 index 41dddbd9d0..0000000000 --- a/gnu/packages/patches/grub-gets-undeclared.patch +++ /dev/null @@ -1,42 +0,0 @@ -This patch is needed to allow builds with newer versions of -the GNU libc (2.16+). - - -commit 66712c23388e93e5c518ebc8515140fa0c807348 -Author: Eric Blake <eblake@redhat.com> -Date: Thu Mar 29 13:30:41 2012 -0600 - - stdio: don't assume gets any more - - Gnulib intentionally does not have a gets module, and now that C11 - and glibc have dropped it, we should be more proactive about warning - any user on a platform that still has a declaration of this dangerous - interface. - - * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets - support. - * modules/stdio (Makefile.am): Likewise. - * lib/stdio-read.c (gets): Likewise. - * tests/test-stdio-c++.cc: Likewise. - * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. - * lib/stdio.in.h (gets): Make warning occur in more places. - * doc/posix-functions/gets.texi (gets): Update documentation. - Reported by Christer Solskogen. - - Signed-off-by: Eric Blake <eblake@redhat.com> - ---- grub-2.00/grub-core/gnulib/stdio.in.h 2013-02-10 16:17:09.000000000 +0100 -+++ grub-2.00/grub-core/gnulib/stdio.in.h 2013-02-10 16:17:11.000000000 +0100 -@@ -137,12 +137,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not - "use gnulib module fflush for portable POSIX compliance"); - #endif - --/* It is very rare that the developer ever has full control of stdin, -- so any use of gets warrants an unconditional warning. Assume it is -- always declared, since it is required by C89. */ --#undef gets --_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); -- - #if @GNULIB_FOPEN@ - # if @REPLACE_FOPEN@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) diff --git a/gnu/packages/patches/gspell-dash-test.patch b/gnu/packages/patches/gspell-dash-test.patch new file mode 100644 index 0000000000..e737921c4b --- /dev/null +++ b/gnu/packages/patches/gspell-dash-test.patch @@ -0,0 +1,16 @@ +Somehow, Aspell 0.60.6.1 and aspell-dict-en-2016.11.20-0 don't consider +this a valid spelling. Skip it. + +--- gspell-1.3.2/testsuite/test-checker.c 2017-05-17 16:02:40.832415940 +0200 ++++ gspell-1.3.2/testsuite/test-checker.c 2017-05-17 16:02:50.768351895 +0200 +@@ -101,9 +101,6 @@ test_dashes (void) + + checker = gspell_checker_new (lang); + +- correctly_spelled = gspell_checker_check_word (checker, "spell-checking", -1, &error); +- g_assert_no_error (error); +- g_assert (correctly_spelled); + + correctly_spelled = gspell_checker_check_word (checker, "nrst-auie", -1, &error); + g_assert_no_error (error); + diff --git a/gnu/packages/patches/guile-arm-fixes.patch b/gnu/packages/patches/guile-arm-fixes.patch deleted file mode 100644 index 62bcf0fa7b..0000000000 --- a/gnu/packages/patches/guile-arm-fixes.patch +++ /dev/null @@ -1,203 +0,0 @@ -Apply fixes for ARM to Guile. - -From df8c52e93dfa3965e4714275f4b8cea2c8e0170b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org> -Date: Fri, 4 Jul 2014 15:35:06 +0200 -Subject: [PATCH] Recognize arm-* target triplets. - -Reported by Sylvain Beucler <beuc@beuc.net>. - -* module/system/base/target.scm (cpu-endianness): Add case where CPU is - "arm". -* test-suite/tests/asm-to-bytecode.test ("cross-compilation")["arm-unknown-linux-androideabi"]: - New test. ---- - module/system/base/target.scm | 4 +++- - test-suite/tests/asm-to-bytecode.test | 5 ++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/module/system/base/target.scm b/module/system/base/target.scm -index c74ae67..cefa951 100644 ---- a/module/system/base/target.scm -+++ b/module/system/base/target.scm -@@ -1,6 +1,6 @@ - ;;; Compilation targets - --;; Copyright (C) 2011, 2012, 2013 Free Software Foundation, Inc. -+;; Copyright (C) 2011, 2012, 2013, 2014 Free Software Foundation, Inc. - - ;; This library is free software; you can redistribute it and/or - ;; modify it under the terms of the GNU Lesser General Public -@@ -72,6 +72,8 @@ - (endianness big)) - ((string-match "^arm.*el" cpu) - (endianness little)) -+ ((string=? "arm" cpu) ;ARMs are LE by default -+ (endianness little)) - (else - (error "unknown CPU endianness" cpu))))) - -diff --git a/test-suite/tests/asm-to-bytecode.test b/test-suite/tests/asm-to-bytecode.test -index 6d2f20e..62ea0ed 100644 ---- a/test-suite/tests/asm-to-bytecode.test -+++ b/test-suite/tests/asm-to-bytecode.test -@@ -1,6 +1,6 @@ - ;;;; Assembly to bytecode compilation -*- mode: scheme; coding: utf-8; -*- - ;;;; --;;;; Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc. -+;;;; Copyright (C) 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. - ;;;; - ;;;; This library is free software; you can redistribute it and/or - ;;;; modify it under the terms of the GNU Lesser General Public -@@ -205,6 +205,9 @@ - (test-target "x86_64-unknown-linux-gnux32" ; x32 ABI (Debian tuplet) - (endianness little) 4) - -+ (test-target "arm-unknown-linux-androideabi" -+ (endianness little) 4) -+ - (pass-if-exception "unknown target" - exception:miscellaneous-error - (call-with-values (lambda () --- -2.1.2 - -From ffd3e55cfd12a3559621e3130d613d319243512d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org> -Date: Fri, 4 Jul 2014 17:26:41 +0200 -Subject: [PATCH] Recognize more ARM targets. - -Suggested by Dale P. Smith. - -* module/system/base/target.scm (cpu-endianness): Add cases for - "arm.*eb", "^aarch64.*be", and "aarch64". Change "arm" case to - "arm.*". - (triplet-pointer-size): Allow underscore as in 'aarch64_be'. -* test-suite/tests/asm-to-bytecode.test ("cross-compilation")["armeb-unknown-linux-gnu", - "aarch64-linux-gnu", "aarch64_be-linux-gnu"]: New tests. ---- - module/system/base/target.scm | 10 ++++++++-- - test-suite/tests/asm-to-bytecode.test | 6 ++++++ - 2 files changed, 14 insertions(+), 2 deletions(-) - -diff --git a/module/system/base/target.scm b/module/system/base/target.scm -index cefa951..31e3fea 100644 ---- a/module/system/base/target.scm -+++ b/module/system/base/target.scm -@@ -72,7 +72,13 @@ - (endianness big)) - ((string-match "^arm.*el" cpu) - (endianness little)) -- ((string=? "arm" cpu) ;ARMs are LE by default -+ ((string-match "^arm.*eb" cpu) -+ (endianness big)) -+ ((string-prefix? "arm" cpu) ;ARMs are LE by default -+ (endianness little)) -+ ((string-match "^aarch64.*be" cpu) -+ (endianness big)) -+ ((string=? "aarch64" cpu) - (endianness little)) - (else - (error "unknown CPU endianness" cpu))))) -@@ -97,7 +103,7 @@ - ((string-match "^x86_64-.*-gnux32" triplet) 4) ; x32 - - ((string-match "64$" cpu) 8) -- ((string-match "64[lbe][lbe]$" cpu) 8) -+ ((string-match "64_?[lbe][lbe]$" cpu) 8) - ((member cpu '("sparc" "powerpc" "mips" "mipsel")) 4) - ((string-match "^arm.*" cpu) 4) - (else (error "unknown CPU word size" cpu))))) -diff --git a/test-suite/tests/asm-to-bytecode.test b/test-suite/tests/asm-to-bytecode.test -index 62ea0ed..8aeba84 100644 ---- a/test-suite/tests/asm-to-bytecode.test -+++ b/test-suite/tests/asm-to-bytecode.test -@@ -207,6 +207,12 @@ - - (test-target "arm-unknown-linux-androideabi" - (endianness little) 4) -+ (test-target "armeb-unknown-linux-gnu" -+ (endianness big) 4) -+ (test-target "aarch64-linux-gnu" -+ (endianness little) 8) -+ (test-target "aarch64_be-linux-gnu" -+ (endianness big) 8) - - (pass-if-exception "unknown target" - exception:miscellaneous-error --- -2.1.2 - -From a85c78ea1393985fdb6e6678dea19135c553d341 Mon Sep 17 00:00:00 2001 -From: Mark H Weaver <mhw@netris.org> -Date: Fri, 19 Sep 2014 21:18:09 -0400 -Subject: [PATCH] VM: ASM_MUL for ARM: Add earlyclobber constraint to the SMULL - outputs. - -Reported by Rob Browning <rlb@defaultvalue.org>. - -* libguile/vm-i-scheme.c (ASM_MUL)[ARM]: Add earlyclobber (&) constraint - to the SMULL output registers. ---- - libguile/vm-i-scheme.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/libguile/vm-i-scheme.c b/libguile/vm-i-scheme.c -index 587aa95..162efab 100644 ---- a/libguile/vm-i-scheme.c -+++ b/libguile/vm-i-scheme.c -@@ -1,5 +1,4 @@ --/* Copyright (C) 2001, 2009, 2010, 2011, 2012, 2013, -- * 2014 Free Software Foundation, Inc. -+/* Copyright (C) 2001, 2009-2014 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License -@@ -363,7 +362,7 @@ VM_DEFINE_FUNCTION (149, ge, "ge?", 2) - { \ - scm_t_signed_bits rlo, rhi; \ - asm ("smull %0, %1, %2, %3\n" \ -- : "=r" (rlo), "=r" (rhi) \ -+ : "=&r" (rlo), "=&r" (rhi) \ - : "r" (SCM_UNPACK (x) - scm_tc2_int), \ - "r" (SCM_I_INUM (y))); \ - if (SCM_LIKELY (SCM_SRS (rlo, 31) == rhi)) \ --- -2.1.2 - -From bed025bd2569b1c033f24d7d9e660e39ebf65cac Mon Sep 17 00:00:00 2001 -From: Mark H Weaver <mhw@netris.org> -Date: Sat, 20 Sep 2014 03:59:51 -0400 -Subject: [PATCH] VM: Allow the C compiler to choose FP_REG on ARM. - -Reported by Rob Browning <rlb@defaultvalue.org>. - -* libguile/vm-engine.h (IP_REG)[__arm__]: Remove explicit register - choice ("r7") for FP_REG, which was reported to cause compilation - failures on ARM. ---- - libguile/vm-engine.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libguile/vm-engine.h b/libguile/vm-engine.h -index 46d4cff..e618be7 100644 ---- a/libguile/vm-engine.h -+++ b/libguile/vm-engine.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 2001, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -+/* Copyright (C) 2001, 2009-2012, 2014 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License -@@ -81,7 +81,7 @@ - #ifdef __arm__ - #define IP_REG asm("r9") - #define SP_REG asm("r8") --#define FP_REG asm("r7") -+#define FP_REG - #endif - #endif - --- -2.1.2 - diff --git a/gnu/packages/patches/guile-ssh-double-free.patch b/gnu/packages/patches/guile-ssh-double-free.patch new file mode 100644 index 0000000000..9692b81d39 --- /dev/null +++ b/gnu/packages/patches/guile-ssh-double-free.patch @@ -0,0 +1,37 @@ +Fix a double-free or use-after-free issue with Guile-SSH used +with Guile 2.2. See <https://bugs.gnu.org/26976>. + +diff --git a/libguile-ssh/channel-type.c b/libguile-ssh/channel-type.c +index 3dd641f..0839854 100644 +--- a/libguile-ssh/channel-type.c ++++ b/libguile-ssh/channel-type.c +@@ -229,10 +229,11 @@ ptob_close (SCM channel) + ssh_channel_free (ch->ssh_channel); + } + ++ SCM_SETSTREAM (channel, NULL); ++ + #if USING_GUILE_BEFORE_2_2 + scm_gc_free (pt->write_buf, pt->write_buf_size, "port write buffer"); + scm_gc_free (pt->read_buf, pt->read_buf_size, "port read buffer"); +- SCM_SETSTREAM (channel, NULL); + + return 0; + #endif +diff --git a/libguile-ssh/sftp-file-type.c b/libguile-ssh/sftp-file-type.c +index 8879924..f87cf03 100644 +--- a/libguile-ssh/sftp-file-type.c ++++ b/libguile-ssh/sftp-file-type.c +@@ -224,10 +224,11 @@ ptob_close (SCM sftp_file) + sftp_close (fd->file); + } + ++ SCM_SETSTREAM (sftp_file, NULL); ++ + #if USING_GUILE_BEFORE_2_2 + scm_gc_free (pt->write_buf, pt->write_buf_size, "port write buffer"); + scm_gc_free (pt->read_buf, pt->read_buf_size, "port read buffer"); +- SCM_SETSTREAM (sftp_file, NULL); + + return 1; + #endif diff --git a/gnu/packages/patches/guile-ssh-rexec-bug.patch b/gnu/packages/patches/guile-ssh-rexec-bug.patch new file mode 100644 index 0000000000..363fea38c9 --- /dev/null +++ b/gnu/packages/patches/guile-ssh-rexec-bug.patch @@ -0,0 +1,16 @@ +Fix a bug whereby 'node-guile-version' would pass a node instead of +a session to 'rexec'. + +diff --git a/modules/ssh/dist/node.scm b/modules/ssh/dist/node.scm +index 9c065c7..29a3906 100644 +--- a/modules/ssh/dist/node.scm ++++ b/modules/ssh/dist/node.scm +@@ -411,7 +411,8 @@ procedure returns the 1st evaluated value if multiple values were returned." + "Get Guile version installed on a NODE, return the version string. Return + #f if Guile is not installed." + (receive (result rc) +- (rexec node "which guile > /dev/null && guile --version") ++ (rexec (node-session node) ++ "which guile > /dev/null && guile --version") + (and (zero? rc) + (car result)))) diff --git a/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch b/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch new file mode 100644 index 0000000000..5f0da3eab3 --- /dev/null +++ b/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch @@ -0,0 +1,26 @@ +From ef0399bad41e60cb30d5073129abeb206076394a Mon Sep 17 00:00:00 2001 +From: Manolis Ragkousis <manolis837@gmail.com> +Date: Sat, 8 Apr 2017 16:44:52 +0300 +Subject: [PATCH] eth-multiplexer: Fix iohelp missing dependency. + +* eth-multiplexer/Makefile (HURDLIBS): Add iohelp. +--- + eth-multiplexer/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/eth-multiplexer/Makefile b/eth-multiplexer/Makefile +index 07f909e7..cefa0abd 100644 +--- a/eth-multiplexer/Makefile ++++ b/eth-multiplexer/Makefile +@@ -26,7 +26,7 @@ MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h + device-MIGSFLAGS="-DMACH_PAYLOAD_TO_PORT=ports_payload_get_name" + OBJS = $(SRCS:.c=.o) $(MIGSTUBS) + LCLHDRS = ethernet.h util.h vdev.h netfs_impl.h +-HURDLIBS = ports ihash fshelp shouldbeinlibc netfs bpf ++HURDLIBS = ports ihash iohelp fshelp shouldbeinlibc netfs bpf + LDLIBS = -lpthread + + CFLAGS += -I$(top_srcdir)/libbpf +-- +2.12.2 + diff --git a/gnu/packages/patches/hypre-doc-tables.patch b/gnu/packages/patches/hypre-doc-tables.patch deleted file mode 100644 index 6a852ee78e..0000000000 --- a/gnu/packages/patches/hypre-doc-tables.patch +++ /dev/null @@ -1,25 +0,0 @@ -Fixes doc++'s treatment of tabular within a parameter block. - -From commit 883925f8a at http://github.com/LLNL/hypre - ---- hypre-2.10.1/src/parcsr_ls/HYPRE_parcsr_ls.h 2015-12-04 22:12:19.000000000 -0600 -+++ hypre-2.10.1/src/parcsr_ls/HYPRE_parcsr_ls.h 2016-03-16 09:02:58.547501336 -0500 -@@ -1154,8 +1154,6 @@ - * Set the symmetry parameter for the - * ParaSails preconditioner. - * -- * @param solver [IN] Preconditioner object for which to set symmetry parameter. -- * @param sym [IN] Value of the symmetry parameter: - * \begin{tabular}{|c|l|} \hline - * value & meaning \\ \hline - * 0 & nonsymmetric and/or indefinite problem, and nonsymmetric preconditioner\\ -@@ -1163,6 +1161,9 @@ - * 2 & nonsymmetric, definite problem, and SPD (factored) preconditioner \\ - * \hline - * \end{tabular} -+ * -+ * @param solver [IN] Preconditioner object for which to set symmetry parameter. -+ * @param sym [IN] Value of the symmetry parameter: - **/ - HYPRE_Int HYPRE_ParaSailsSetSym(HYPRE_Solver solver, - HYPRE_Int sym); diff --git a/gnu/packages/patches/hypre-ldflags.patch b/gnu/packages/patches/hypre-ldflags.patch deleted file mode 100644 index a94fafa463..0000000000 --- a/gnu/packages/patches/hypre-ldflags.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- hypre-2.10.1/src/lib/Makefile.orig 2016-03-11 16:04:03.740259228 -0600 -+++ hypre-2.10.1/src/lib/Makefile 2016-03-11 16:04:57.296260190 -0600 -@@ -107,5 +107,5 @@ - - libHYPRE.so: ${FILES_HYPRE} - @echo "Building $@ ... " -- ${BUILD_CC_SHARED} -o ${SONAME} ${FILES_HYPRE} ${SOLIBS} ${SHARED_SET_SONAME}${SONAME} ${SHARED_OPTIONS} -+ ${BUILD_CC_SHARED} ${LDFLAGS} -o ${SONAME} ${FILES_HYPRE} ${SOLIBS} ${SHARED_SET_SONAME}${SONAME} ${SHARED_OPTIONS} - ln -s ${SONAME} $@ diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch index 267f7b8aac..114631517a 100644 --- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch +++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch @@ -1,8 +1,8 @@ Fixes needed when avoiding bundled libraries. ---- icecat-45.3.0/xpcom/build/moz.build.orig -+++ icecat-45.3.0/xpcom/build/moz.build -@@ -92,10 +92,5 @@ +--- icecat-52.0.2/xpcom/build/moz.build.orig ++++ icecat-52.0.2/xpcom/build/moz.build +@@ -93,10 +93,5 @@ '/docshell/base', ] @@ -13,38 +13,23 @@ Fixes needed when avoiding bundled libraries. - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': CXXFLAGS += CONFIG['TK_CFLAGS'] ---- icecat-45.3.0/storage/moz.build.orig -+++ icecat-45.3.0/storage/moz.build -@@ -108,7 +108,6 @@ - DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000 +--- icecat-52.0.2/storage/moz.build.orig ++++ icecat-52.0.2/storage/moz.build +@@ -114,7 +114,6 @@ + DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True LOCAL_INCLUDES += [ - '/db/sqlite3/src', '/dom/base', ] ---- icecat-45.3.0/dom/indexedDB/moz.build.orig -+++ icecat-45.3.0/dom/indexedDB/moz.build -@@ -96,7 +96,6 @@ - SOURCES['Key.cpp'].flags += ['-Wno-error=type-limits'] +--- icecat-52.0.2/dom/indexedDB/moz.build.orig ++++ icecat-52.0.2/dom/indexedDB/moz.build +@@ -101,7 +101,6 @@ + CXXFLAGS += ['-Wno-error=shadow'] LOCAL_INCLUDES += [ - '/db/sqlite3/src', '/dom/base', '/dom/storage', '/dom/workers', ---- icecat-45.3.0/modules/libmar/tests/Makefile.in.orig -+++ icecat-45.3.0/modules/libmar/tests/Makefile.in -@@ -10,12 +10,5 @@ - ifndef MOZ_PROFILE_GENERATE - libs:: - $(INSTALL) ../tool/signmar$(BIN_SUFFIX) $(TESTROOT)/unit -- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nss3$(DLL_SUFFIX) $(TESTROOT)/unit --ifndef MOZ_FOLD_LIBS -- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nssutil3$(DLL_SUFFIX) $(TESTROOT)/unit -- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)plc4$(DLL_SUFFIX) $(TESTROOT)/unit -- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nspr4$(DLL_SUFFIX) $(TESTROOT)/unit -- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)plds4$(DLL_SUFFIX) $(TESTROOT)/unit --endif - endif - endif # Not Android diff --git a/gnu/packages/patches/icecat-binutils.patch b/gnu/packages/patches/icecat-binutils.patch deleted file mode 100644 index 53a3ed9bb0..0000000000 --- a/gnu/packages/patches/icecat-binutils.patch +++ /dev/null @@ -1,40 +0,0 @@ - -# HG changeset patch -# User J. Brown <jb999@gmx.de> -# Date 1476951900 14400 -# Node ID cca249d09ef600650e6127c18be438a37e9d4587 -# Parent d8bbf1a3957fd25ff24bfee51331c150b154cc39 -Bug 1242901 - Fix linking libxul.so with binutils/GNU ld >= 2.26. r=glandium - -The build fails with: - - /usr/bin/ld: ../../xpcom/components/nsComponentManager.o: relocation R_386_GOTOFF against protected data `start_kPStaticModules_NSModule' can not be used when making a shared object - /usr/bin/ld: final link failed: Bad value - collect2: error: ld returned 1 exit status - -This is a patch from 2016/04/27 16:36:50 ryoon found on -http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/firefox45/patches/#dirlist. - -diff --git a/xpcom/components/Module.h b/xpcom/components/Module.h ---- a/xpcom/components/Module.h -+++ b/xpcom/components/Module.h -@@ -133,17 +133,17 @@ struct Module - #if defined(MOZILLA_INTERNAL_API) - # define NSMODULE_NAME(_name) _name##_NSModule - # if defined(_MSC_VER) - # pragma section(".kPStaticModules$M", read) - # pragma comment(linker, "/merge:.kPStaticModules=.rdata") - # define NSMODULE_SECTION __declspec(allocate(".kPStaticModules$M"), dllexport) - # elif defined(__GNUC__) - # if defined(__ELF__) --# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("protected"))) -+# define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), visibility("default"))) - # elif defined(__MACH__) - # define NSMODULE_SECTION __attribute__((section("__DATA, .kPStaticModules"), visibility("default"))) - # elif defined (_WIN32) - # define NSMODULE_SECTION __attribute__((section(".kPStaticModules"), dllexport)) - # endif - # endif - # if !defined(NSMODULE_SECTION) - # error Do not know how to define sections. - diff --git a/gnu/packages/patches/icu4c-CVE-2014-6585.patch b/gnu/packages/patches/icu4c-CVE-2014-6585.patch deleted file mode 100644 index d21a0d0ba1..0000000000 --- a/gnu/packages/patches/icu4c-CVE-2014-6585.patch +++ /dev/null @@ -1,21 +0,0 @@ -Copied from Debian. - -description: out-of-bounds read -origin: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6585 - ---- a/source/layout/LETableReference.h -+++ b/source/layout/LETableReference.h -@@ -322,7 +322,12 @@ LE_TRACE_TR("INFO: new RTAO") - } - - const T& operator()(le_uint32 i, LEErrorCode &success) const { -- return *getAlias(i,success); -+ const T *ret = getAlias(i,success); -+ if (LE_FAILURE(success) || ret==NULL) { -+ return *(new T()); -+ } else { -+ return *ret; -+ } - } - - size_t getOffsetFor(le_uint32 i, LEErrorCode &success) const { diff --git a/gnu/packages/patches/icu4c-CVE-2015-1270.patch b/gnu/packages/patches/icu4c-CVE-2015-1270.patch deleted file mode 100644 index 2a7658d36e..0000000000 --- a/gnu/packages/patches/icu4c-CVE-2015-1270.patch +++ /dev/null @@ -1,15 +0,0 @@ -Copied from Debian. - -diff --git a/source/common/ucnv_io.cpp b/source/common/ucnv_io.cpp -index 5dd35d8..4424664 100644 ---- a/source/common/ucnv_io.cpp -+++ b/source/common/ucnv_io.cpp -@@ -744,7 +744,7 @@ ucnv_io_getConverterName(const char *alias, UBool *containsOption, UErrorCode *p - * the name begins with 'x-'. If it does, strip it off and try - * again. This behaviour is similar to how ICU4J does it. - */ -- if (aliasTmp[0] == 'x' || aliasTmp[1] == '-') { -+ if (aliasTmp[0] == 'x' && aliasTmp[1] == '-') { - aliasTmp = aliasTmp+2; - } else { - break; diff --git a/gnu/packages/patches/icu4c-CVE-2015-4760.patch b/gnu/packages/patches/icu4c-CVE-2015-4760.patch deleted file mode 100644 index 77da283b7b..0000000000 --- a/gnu/packages/patches/icu4c-CVE-2015-4760.patch +++ /dev/null @@ -1,189 +0,0 @@ -Copied from Debian. - -Description: missing boundary checks in layout engine - It was discovered that ICU Layout Engine was missing multiple boundary checks. - These could lead to buffer overflows and memory corruption. A specially - crafted file could cause an application using ICU to parse untrusted font - files to crash and, possibly, execute arbitrary code. -Author: Laszlo Boszormenyi (GCS) <gcs@debian.org> -Origin: upstream, http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/3f9845510b47 -Reviewed-By: srl, bae, mschoene -Forwarded: not-needed -Last-Update: 2015-07-30 - ---- - ---- icu-52.1.orig/source/layout/ContextualGlyphInsertionProc2.cpp -+++ icu-52.1/source/layout/ContextualGlyphInsertionProc2.cpp -@@ -82,6 +82,10 @@ le_uint16 ContextualGlyphInsertionProces - - le_int16 markIndex = SWAPW(entry->markedInsertionListIndex); - if (markIndex > 0) { -+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - le_int16 count = (flags & cgiMarkedInsertCountMask) >> 5; - le_bool isKashidaLike = (flags & cgiMarkedIsKashidaLike); - le_bool isBefore = (flags & cgiMarkInsertBefore); -@@ -90,6 +94,10 @@ le_uint16 ContextualGlyphInsertionProces - - le_int16 currIndex = SWAPW(entry->currentInsertionListIndex); - if (currIndex > 0) { -+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - le_int16 count = flags & cgiCurrentInsertCountMask; - le_bool isKashidaLike = (flags & cgiCurrentIsKashidaLike); - le_bool isBefore = (flags & cgiCurrentInsertBefore); ---- icu-52.1.orig/source/layout/ContextualGlyphSubstProc.cpp -+++ icu-52.1/source/layout/ContextualGlyphSubstProc.cpp -@@ -51,6 +51,10 @@ ByteOffset ContextualGlyphSubstitutionPr - WordOffset currOffset = SWAPW(entry->currOffset); - - if (markOffset != 0 && LE_SUCCESS(success)) { -+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - LEGlyphID mGlyph = glyphStorage[markGlyph]; - TTGlyphID newGlyph = SWAPW(int16Table.getObject(markOffset + LE_GET_GLYPH(mGlyph), success)); // whew. - -@@ -58,6 +62,10 @@ ByteOffset ContextualGlyphSubstitutionPr - } - - if (currOffset != 0) { -+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - LEGlyphID thisGlyph = glyphStorage[currGlyph]; - TTGlyphID newGlyph = SWAPW(int16Table.getObject(currOffset + LE_GET_GLYPH(thisGlyph), success)); // whew. - ---- icu-52.1.orig/source/layout/ContextualGlyphSubstProc2.cpp -+++ icu-52.1/source/layout/ContextualGlyphSubstProc2.cpp -@@ -45,17 +45,25 @@ le_uint16 ContextualGlyphSubstitutionPro - if(LE_FAILURE(success)) return 0; - le_uint16 newState = SWAPW(entry->newStateIndex); - le_uint16 flags = SWAPW(entry->flags); -- le_int16 markIndex = SWAPW(entry->markIndex); -- le_int16 currIndex = SWAPW(entry->currIndex); -+ le_uint16 markIndex = SWAPW(entry->markIndex); -+ le_uint16 currIndex = SWAPW(entry->currIndex); - -- if (markIndex != -1) { -+ if (markIndex != 0x0FFFF) { -+ if (markGlyph < 0 || markGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - le_uint32 offset = SWAPL(perGlyphTable(markIndex, success)); - LEGlyphID mGlyph = glyphStorage[markGlyph]; - TTGlyphID newGlyph = lookup(offset, mGlyph, success); - glyphStorage[markGlyph] = LE_SET_GLYPH(mGlyph, newGlyph); - } - -- if (currIndex != -1) { -+ if (currIndex != 0x0FFFF) { -+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } - le_uint32 offset = SWAPL(perGlyphTable(currIndex, success)); - LEGlyphID thisGlyph = glyphStorage[currGlyph]; - TTGlyphID newGlyph = lookup(offset, thisGlyph, success); ---- icu-52.1.orig/source/layout/IndicRearrangementProcessor.cpp -+++ icu-52.1/source/layout/IndicRearrangementProcessor.cpp -@@ -45,6 +45,11 @@ ByteOffset IndicRearrangementProcessor:: - ByteOffset newState = SWAPW(entry->newStateOffset); - IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags); - -+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } -+ - if (flags & irfMarkFirst) { - firstGlyph = currGlyph; - } ---- icu-52.1.orig/source/layout/IndicRearrangementProcessor2.cpp -+++ icu-52.1/source/layout/IndicRearrangementProcessor2.cpp -@@ -43,6 +43,11 @@ le_uint16 IndicRearrangementProcessor2:: - le_uint16 newState = SWAPW(entry->newStateIndex); // index to the new state - IndicRearrangementFlags flags = (IndicRearrangementFlags) SWAPW(entry->flags); - -+ if (currGlyph < 0 || currGlyph >= glyphStorage.getGlyphCount()) { -+ success = LE_INDEX_OUT_OF_BOUNDS_ERROR; -+ return 0; -+ } -+ - if (flags & irfMarkFirst) { - firstGlyph = currGlyph; - } ---- icu-52.1.orig/source/layout/LigatureSubstProc.cpp -+++ icu-52.1/source/layout/LigatureSubstProc.cpp -@@ -48,7 +48,7 @@ ByteOffset LigatureSubstitutionProcessor - const LigatureSubstitutionStateEntry *entry = entryTable.getAlias(index, success); - - ByteOffset newState = SWAPW(entry->newStateOffset); -- le_int16 flags = SWAPW(entry->flags); -+ le_uint16 flags = SWAPW(entry->flags); - - if (flags & lsfSetComponent) { - if (++m >= nComponents) { ---- icu-52.1.orig/source/layout/StateTableProcessor.cpp -+++ icu-52.1/source/layout/StateTableProcessor.cpp -@@ -60,6 +60,7 @@ void StateTableProcessor::process(LEGlyp - if (currGlyph == glyphCount) { - // XXX: How do we handle EOT vs. EOL? - classCode = classCodeEOT; -+ break; - } else { - TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]); - ---- icu-52.1.orig/source/layout/StateTableProcessor2.cpp -+++ icu-52.1/source/layout/StateTableProcessor2.cpp -@@ -78,6 +78,7 @@ void StateTableProcessor2::process(LEGly - if (currGlyph == glyphCount || currGlyph == -1) { - // XXX: How do we handle EOT vs. EOL? - classCode = classCodeEOT; -+ break; - } else { - LEGlyphID gid = glyphStorage[currGlyph]; - TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); -@@ -109,6 +110,7 @@ void StateTableProcessor2::process(LEGly - if (currGlyph == glyphCount || currGlyph == -1) { - // XXX: How do we handle EOT vs. EOL? - classCode = classCodeEOT; -+ break; - } else { - LEGlyphID gid = glyphStorage[currGlyph]; - TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(gid); -@@ -146,6 +148,7 @@ void StateTableProcessor2::process(LEGly - if (currGlyph == glyphCount || currGlyph == -1) { - // XXX: How do we handle EOT vs. EOL? - classCode = classCodeEOT; -+ break; - } else if(currGlyph > glyphCount) { - // note if > glyphCount, we've run off the end (bad font) - currGlyph = glyphCount; -@@ -186,6 +189,7 @@ void StateTableProcessor2::process(LEGly - if (currGlyph == glyphCount || currGlyph == -1) { - // XXX: How do we handle EOT vs. EOL? - classCode = classCodeEOT; -+ break; - } else { - TTGlyphID glyphCode = (TTGlyphID) LE_GET_GLYPH(glyphStorage[currGlyph]); - if (glyphCode == 0xFFFF) { ---- icu-52.1.orig/source/layout/StateTables.h -+++ icu-52.1/source/layout/StateTables.h -@@ -101,7 +101,7 @@ typedef le_uint8 EntryTableIndex; - struct StateEntry - { - ByteOffset newStateOffset; -- le_int16 flags; -+ le_uint16 flags; - }; - - typedef le_uint16 EntryTableIndex2; diff --git a/gnu/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch b/gnu/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch new file mode 100644 index 0000000000..4db8f27998 --- /dev/null +++ b/gnu/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch @@ -0,0 +1,164 @@ +Fix CVE-2017-7867 and CVE-2017-7868: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7867 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7868 + +Patch copied from upstream source repository: + +http://bugs.icu-project.org/trac/changeset/39671 + +Index: icu/source/common/utext.cpp +=================================================================== +--- icu/source/common/utext.cpp (revision 39670) ++++ icu/source/common/utext.cpp (revision 39671) +@@ -848,7 +848,13 @@ + + // Chunk size. +-// Must be less than 85, because of byte mapping from UChar indexes to native indexes. +-// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes +-// to two UChars.) ++// Must be less than 42 (256/6), because of byte mapping from UChar indexes to native indexes. ++// Worst case there are six UTF-8 bytes per UChar. ++// obsolete 6 byte form fd + 5 trails maps to fffd ++// obsolete 5 byte form fc + 4 trails maps to fffd ++// non-shortest 4 byte forms maps to fffd ++// normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit ++// mapToUChars array size must allow for the worst case, 6. ++// This could be brought down to 4, by treating fd and fc as pure illegal, ++// rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros. + // + enum { UTF8_TEXT_CHUNK_SIZE=32 }; +@@ -890,5 +896,5 @@ + // one for a supplementary starting in the last normal position, + // and one for an entry for the buffer limit position. +- uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to ++ uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to + // correspoding offset in filled part of buf. + int32_t align; +@@ -1033,4 +1039,5 @@ + u8b = (UTF8Buf *)ut->p; // the current buffer + mapIndex = ix - u8b->toUCharsMapStart; ++ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars)); + ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx; + return TRUE; +@@ -1299,4 +1306,8 @@ + // If index is at the end, there is no character there to look at. + if (ix != ut->b) { ++ // Note: this function will only move the index back if it is on a trail byte ++ // and there is a preceding lead byte and the sequence from the lead ++ // through this trail could be part of a valid UTF-8 sequence ++ // Otherwise the index remains unchanged. + U8_SET_CP_START(s8, 0, ix); + } +@@ -1312,5 +1323,8 @@ + uint8_t *mapToNative = u8b->mapToNative; + uint8_t *mapToUChars = u8b->mapToUChars; +- int32_t toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1); ++ int32_t toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1; ++ // Note that toUCharsMapStart can be negative. Happens when the remaining ++ // text from current position to the beginning is less than the buffer size. ++ // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry. + int32_t destIx = UTF8_TEXT_CHUNK_SIZE+2; // Start in the overflow region + // at end of buffer to leave room +@@ -1339,4 +1353,5 @@ + // Special case ASCII range for speed. + buf[destIx] = (UChar)c; ++ U_ASSERT(toUCharsMapStart <= srcIx); + mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx; + mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart); +@@ -1368,4 +1383,5 @@ + mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx; + } while (sIx >= srcIx); ++ U_ASSERT(toUCharsMapStart <= (srcIx+1)); + + // Set native indexing limit to be the current position. +@@ -1542,4 +1558,5 @@ + U_ASSERT(index<=ut->chunkNativeLimit); + int32_t mapIndex = index - u8b->toUCharsMapStart; ++ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars)); + int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx; + U_ASSERT(offset>=0 && offset<=ut->chunkLength); +Index: icu/source/test/intltest/utxttest.cpp +=================================================================== +--- icu/source/test/intltest/utxttest.cpp (revision 39670) ++++ icu/source/test/intltest/utxttest.cpp (revision 39671) +@@ -68,4 +68,6 @@ + case 7: name = "Ticket12130"; + if (exec) Ticket12130(); break; ++ case 8: name = "Ticket12888"; ++ if (exec) Ticket12888(); break; + default: name = ""; break; + } +@@ -1584,2 +1586,62 @@ + utext_close(&ut); + } ++ ++// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal, ++// six byte utf-8 forms. Original implementation had an assumption that ++// there would be at most three utf-8 bytes per UTF-16 code unit. ++// The five and six byte sequences map to a single replacement character. ++ ++void UTextTest::Ticket12888() { ++ const char *badString = ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80" ++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"; ++ ++ UErrorCode status = U_ZERO_ERROR; ++ LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status)); ++ TEST_SUCCESS(status); ++ for (;;) { ++ UChar32 c = utext_next32(ut.getAlias()); ++ if (c == U_SENTINEL) { ++ break; ++ } ++ } ++ int32_t endIdx = utext_getNativeIndex(ut.getAlias()); ++ if (endIdx != (int32_t)strlen(badString)) { ++ errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx); ++ return; ++ } ++ ++ for (int32_t prevIndex = endIdx; prevIndex>0;) { ++ UChar32 c = utext_previous32(ut.getAlias()); ++ int32_t currentIndex = utext_getNativeIndex(ut.getAlias()); ++ if (c != 0xfffd) { ++ errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n", ++ __FILE__, __LINE__, 0xfffd, c, currentIndex); ++ break; ++ } ++ if (currentIndex != prevIndex - 6) { ++ errln("%s:%d: wrong index. Expected, actual = %d, %d", ++ __FILE__, __LINE__, prevIndex - 6, currentIndex); ++ break; ++ } ++ prevIndex = currentIndex; ++ } ++} +Index: icu/source/test/intltest/utxttest.h +=================================================================== +--- icu/source/test/intltest/utxttest.h (revision 39670) ++++ icu/source/test/intltest/utxttest.h (revision 39671) +@@ -39,4 +39,5 @@ + void Ticket10983(); + void Ticket12130(); ++ void Ticket12888(); + + private: diff --git a/gnu/packages/patches/icu4c-reset-keyword-list-iterator.patch b/gnu/packages/patches/icu4c-reset-keyword-list-iterator.patch new file mode 100644 index 0000000000..17970aa4a8 --- /dev/null +++ b/gnu/packages/patches/icu4c-reset-keyword-list-iterator.patch @@ -0,0 +1,130 @@ +Copied from upstream: http://bugs.icu-project.org/trac/changeset/39484/. + +Fixes <http://bugs.gnu.org/26462> (crashes). + +Paths and line endings have been adapted. + +Index: icu/source/common/ulist.c +=================================================================== +--- icu/source/common/ulist.c (revision 39483) ++++ icu/source/common/ulist.c (revision 39484) +@@ -30,5 +30,4 @@ + + int32_t size; +- int32_t currentIndex; + }; + +@@ -52,5 +51,4 @@ + newList->tail = NULL; + newList->size = 0; +- newList->currentIndex = -1; + + return newList; +@@ -81,6 +79,7 @@ + p->next->previous = p->previous; + } +- list->curr = NULL; +- list->currentIndex = 0; ++ if (p == list->curr) { ++ list->curr = p->next; ++ } + --list->size; + if (p->forceDelete) { +@@ -151,5 +150,4 @@ + list->head->previous = newItem; + list->head = newItem; +- list->currentIndex++; + } + +@@ -194,5 +192,4 @@ + curr = list->curr; + list->curr = curr->next; +- list->currentIndex++; + + return curr->data; +@@ -210,5 +207,4 @@ + if (list != NULL) { + list->curr = list->head; +- list->currentIndex = 0; + } + } +@@ -273,3 +269,2 @@ + return (UList *)(en->context); + } +- +Index: icu/source/i18n/ucol_res.cpp +=================================================================== +--- icu/source/i18n/ucol_res.cpp (revision 39483) ++++ icu/source/i18n/ucol_res.cpp (revision 39484) +@@ -681,4 +681,5 @@ + } + memcpy(en, &defaultKeywordValues, sizeof(UEnumeration)); ++ ulist_resetList(sink.values); // Initialize the iterator. + en->context = sink.values; + sink.values = NULL; // Avoid deletion in the sink destructor. +Index: icu/source/test/intltest/apicoll.cpp +=================================================================== +--- icu/source/test/intltest/apicoll.cpp (revision 39483) ++++ icu/source/test/intltest/apicoll.cpp (revision 39484) +@@ -82,14 +82,7 @@ + col = Collator::createInstance(Locale::getEnglish(), success); + if (U_FAILURE(success)){ +- errcheckln(success, "Default Collator creation failed. - %s", u_errorName(success)); +- return; +- } +- +- StringEnumeration* kwEnum = col->getKeywordValuesForLocale("", Locale::getEnglish(),true,success); +- if (U_FAILURE(success)){ +- errcheckln(success, "Get Keyword Values for Locale failed. - %s", u_errorName(success)); +- return; +- } +- delete kwEnum; ++ errcheckln(success, "English Collator creation failed. - %s", u_errorName(success)); ++ return; ++ } + + col->getVersion(versionArray); +@@ -230,4 +223,27 @@ + delete aFrCol; + delete junk; ++} ++ ++void CollationAPITest::TestKeywordValues() { ++ IcuTestErrorCode errorCode(*this, "TestKeywordValues"); ++ LocalPointer<Collator> col(Collator::createInstance(Locale::getEnglish(), errorCode)); ++ if (errorCode.logIfFailureAndReset("English Collator creation failed")) { ++ return; ++ } ++ ++ LocalPointer<StringEnumeration> kwEnum( ++ col->getKeywordValuesForLocale("collation", Locale::getEnglish(), TRUE, errorCode)); ++ if (errorCode.logIfFailureAndReset("Get Keyword Values for English Collator failed")) { ++ return; ++ } ++ assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0); ++ const char *kw; ++ UBool hasStandard = FALSE; ++ while ((kw = kwEnum->next(NULL, errorCode)) != NULL) { ++ if (strcmp(kw, "standard") == 0) { ++ hasStandard = TRUE; ++ } ++ } ++ assertTrue("expect at least the 'standard' collation tailoring for English", hasStandard); + } + +@@ -2467,4 +2483,5 @@ + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO(TestProperty); ++ TESTCASE_AUTO(TestKeywordValues); + TESTCASE_AUTO(TestOperators); + TESTCASE_AUTO(TestDuplicate); +Index: icu/source/test/intltest/apicoll.h +=================================================================== +--- icu/source/test/intltest/apicoll.h (revision 39483) ++++ icu/source/test/intltest/apicoll.h (revision 39484) +@@ -36,4 +36,5 @@ + */ + void TestProperty(/* char* par */); ++ void TestKeywordValues(); + + /** diff --git a/gnu/packages/patches/jasper-CVE-2017-6850.patch b/gnu/packages/patches/jasper-CVE-2017-6850.patch new file mode 100644 index 0000000000..07672762a1 --- /dev/null +++ b/gnu/packages/patches/jasper-CVE-2017-6850.patch @@ -0,0 +1,284 @@ +This patch is from upstream and should be fixed included in the next release + +From e96fc4fdd525fa0ede28074a7e2b1caf94b58b0d Mon Sep 17 00:00:00 2001 +From: Michael Adams <mdadams@ece.uvic.ca> +Date: Sat, 4 Mar 2017 14:43:24 -0800 +Subject: [PATCH] Fixed bugs due to uninitialized data in the JP2 decoder. + Also, added some comments marking I/O stream interfaces that probably need to + be changed (in the long term) to fix integer overflow problems. + +--- + src/libjasper/base/jas_stream.c | 18 +++++++++++++++++ + src/libjasper/jp2/jp2_cod.c | 44 ++++++++++++++++++++++++++++------------- + 2 files changed, 48 insertions(+), 14 deletions(-) + +diff --git a/src/libjasper/base/jas_stream.c b/src/libjasper/base/jas_stream.c +index 327ee57..d70408f 100644 +--- a/src/libjasper/base/jas_stream.c ++++ b/src/libjasper/base/jas_stream.c +@@ -664,6 +664,7 @@ int jas_stream_ungetc(jas_stream_t *stream, int c) + return 0; + } + ++/* FIXME integral type */ + int jas_stream_read(jas_stream_t *stream, void *buf, int cnt) + { + int n; +@@ -690,6 +691,7 @@ int jas_stream_read(jas_stream_t *stream, void *buf, int cnt) + return n; + } + ++/* FIXME integral type */ + int jas_stream_write(jas_stream_t *stream, const void *buf, int cnt) + { + int n; +@@ -742,6 +744,7 @@ int jas_stream_puts(jas_stream_t *stream, const char *s) + return 0; + } + ++/* FIXME integral type */ + char *jas_stream_gets(jas_stream_t *stream, char *buf, int bufsize) + { + int c; +@@ -765,6 +768,7 @@ char *jas_stream_gets(jas_stream_t *stream, char *buf, int bufsize) + return buf; + } + ++/* FIXME integral type */ + int jas_stream_gobble(jas_stream_t *stream, int n) + { + int m; +@@ -783,6 +787,7 @@ int jas_stream_gobble(jas_stream_t *stream, int n) + return n; + } + ++/* FIXME integral type */ + int jas_stream_pad(jas_stream_t *stream, int n, int c) + { + int m; +@@ -885,6 +890,7 @@ long jas_stream_tell(jas_stream_t *stream) + * Buffer initialization code. + \******************************************************************************/ + ++/* FIXME integral type */ + static void jas_stream_initbuf(jas_stream_t *stream, int bufmode, char *buf, + int bufsize) + { +@@ -1060,6 +1066,7 @@ static int jas_strtoopenmode(const char *s) + return openmode; + } + ++/* FIXME integral type */ + int jas_stream_copy(jas_stream_t *out, jas_stream_t *in, int n) + { + int all; +@@ -1085,6 +1092,7 @@ int jas_stream_copy(jas_stream_t *out, jas_stream_t *in, int n) + return 0; + } + ++/* FIXME integral type */ + long jas_stream_setrwcount(jas_stream_t *stream, long rwcnt) + { + int old; +@@ -1094,6 +1102,7 @@ long jas_stream_setrwcount(jas_stream_t *stream, long rwcnt) + return old; + } + ++/* FIXME integral type */ + int jas_stream_display(jas_stream_t *stream, FILE *fp, int n) + { + unsigned char buf[16]; +@@ -1168,6 +1177,7 @@ long jas_stream_length(jas_stream_t *stream) + * Memory stream object. + \******************************************************************************/ + ++/* FIXME integral type */ + static int mem_read(jas_stream_obj_t *obj, char *buf, int cnt) + { + ssize_t n; +@@ -1209,6 +1219,7 @@ static int mem_resize(jas_stream_memobj_t *m, size_t bufsize) + return 0; + } + ++/* FIXME integral type */ + static int mem_write(jas_stream_obj_t *obj, char *buf, int cnt) + { + size_t n; +@@ -1264,6 +1275,7 @@ static int mem_write(jas_stream_obj_t *obj, char *buf, int cnt) + return ret; + } + ++/* FIXME integral type */ + static long mem_seek(jas_stream_obj_t *obj, long offset, int origin) + { + jas_stream_memobj_t *m = (jas_stream_memobj_t *)obj; +@@ -1310,6 +1322,7 @@ static int mem_close(jas_stream_obj_t *obj) + * File stream object. + \******************************************************************************/ + ++/* FIXME integral type */ + static int file_read(jas_stream_obj_t *obj, char *buf, int cnt) + { + jas_stream_fileobj_t *fileobj; +@@ -1318,6 +1331,7 @@ static int file_read(jas_stream_obj_t *obj, char *buf, int cnt) + return read(fileobj->fd, buf, cnt); + } + ++/* FIXME integral type */ + static int file_write(jas_stream_obj_t *obj, char *buf, int cnt) + { + jas_stream_fileobj_t *fileobj; +@@ -1326,6 +1340,7 @@ static int file_write(jas_stream_obj_t *obj, char *buf, int cnt) + return write(fileobj->fd, buf, cnt); + } + ++/* FIXME integral type */ + static long file_seek(jas_stream_obj_t *obj, long offset, int origin) + { + jas_stream_fileobj_t *fileobj; +@@ -1352,6 +1367,7 @@ static int file_close(jas_stream_obj_t *obj) + * Stdio file stream object. + \******************************************************************************/ + ++/* FIXME integral type */ + static int sfile_read(jas_stream_obj_t *obj, char *buf, int cnt) + { + FILE *fp; +@@ -1367,6 +1383,7 @@ static int sfile_read(jas_stream_obj_t *obj, char *buf, int cnt) + return result; + } + ++/* FIXME integral type */ + static int sfile_write(jas_stream_obj_t *obj, char *buf, int cnt) + { + FILE *fp; +@@ -1377,6 +1394,7 @@ static int sfile_write(jas_stream_obj_t *obj, char *buf, int cnt) + return (n != JAS_CAST(size_t, cnt)) ? (-1) : cnt; + } + ++/* FIXME integral type */ + static long sfile_seek(jas_stream_obj_t *obj, long offset, int origin) + { + FILE *fp; +diff --git a/src/libjasper/jp2/jp2_cod.c b/src/libjasper/jp2/jp2_cod.c +index 7f3608a..8d98a2c 100644 +--- a/src/libjasper/jp2/jp2_cod.c ++++ b/src/libjasper/jp2/jp2_cod.c +@@ -183,15 +183,28 @@ jp2_boxinfo_t jp2_boxinfo_unk = { + * Box constructor. + \******************************************************************************/ + +-jp2_box_t *jp2_box_create(int type) ++jp2_box_t *jp2_box_create0() + { + jp2_box_t *box; +- jp2_boxinfo_t *boxinfo; +- + if (!(box = jas_malloc(sizeof(jp2_box_t)))) { + return 0; + } + memset(box, 0, sizeof(jp2_box_t)); ++ box->type = 0; ++ box->len = 0; ++ // Mark the box data as never having been constructed ++ // so that we will not errantly attempt to destroy it later. ++ box->ops = &jp2_boxinfo_unk.ops; ++ return box; ++} ++ ++jp2_box_t *jp2_box_create(int type) ++{ ++ jp2_box_t *box; ++ jp2_boxinfo_t *boxinfo; ++ if (!(box = jp2_box_create0())) { ++ return 0; ++ } + box->type = type; + box->len = 0; + if (!(boxinfo = jp2_boxinfolookup(type))) { +@@ -248,14 +261,9 @@ jp2_box_t *jp2_box_get(jas_stream_t *in) + box = 0; + tmpstream = 0; + +- if (!(box = jas_malloc(sizeof(jp2_box_t)))) { ++ if (!(box = jp2_box_create0())) { + goto error; + } +- +- // Mark the box data as never having been constructed +- // so that we will not errantly attempt to destroy it later. +- box->ops = &jp2_boxinfo_unk.ops; +- + if (jp2_getuint32(in, &len) || jp2_getuint32(in, &box->type)) { + goto error; + } +@@ -263,10 +271,12 @@ jp2_box_t *jp2_box_get(jas_stream_t *in) + box->info = boxinfo; + box->len = len; + JAS_DBGLOG(10, ( +- "preliminary processing of JP2 box: type=%c%s%c (0x%08x); length=%d\n", ++ "preliminary processing of JP2 box: " ++ "type=%c%s%c (0x%08x); length=%"PRIuFAST32"\n", + '"', boxinfo->name, '"', box->type, box->len + )); + if (box->len == 1) { ++ JAS_DBGLOG(10, ("big length\n")); + if (jp2_getuint64(in, &extlen)) { + goto error; + } +@@ -382,6 +392,7 @@ static int jp2_bpcc_getdata(jp2_box_t *box, jas_stream_t *in) + { + jp2_bpcc_t *bpcc = &box->data.bpcc; + unsigned int i; ++ bpcc->bpcs = 0; + bpcc->numcmpts = box->datalen; + if (!(bpcc->bpcs = jas_alloc2(bpcc->numcmpts, sizeof(uint_fast8_t)))) { + return -1; +@@ -462,6 +473,7 @@ static int jp2_cdef_getdata(jp2_box_t *box, jas_stream_t *in) + jp2_cdef_t *cdef = &box->data.cdef; + jp2_cdefchan_t *chan; + unsigned int channo; ++ cdef->ents = 0; + if (jp2_getuint16(in, &cdef->numchans)) { + return -1; + } +@@ -518,7 +530,9 @@ int jp2_box_put(jp2_box_t *box, jas_stream_t *out) + } + + if (dataflag) { +- if (jas_stream_copy(out, tmpstream, box->len - JP2_BOX_HDRLEN(false))) { ++ if (jas_stream_copy(out, tmpstream, box->len - ++ JP2_BOX_HDRLEN(false))) { ++ jas_eprintf("cannot copy box data\n"); + goto error; + } + jas_stream_close(tmpstream); +@@ -777,6 +791,7 @@ static int jp2_cmap_getdata(jp2_box_t *box, jas_stream_t *in) + jp2_cmap_t *cmap = &box->data.cmap; + jp2_cmapent_t *ent; + unsigned int i; ++ cmap->ents = 0; + + cmap->numchans = (box->datalen) / 4; + if (!(cmap->ents = jas_alloc2(cmap->numchans, sizeof(jp2_cmapent_t)))) { +@@ -835,6 +850,7 @@ static int jp2_pclr_getdata(jp2_box_t *box, jas_stream_t *in) + int_fast32_t x; + + pclr->lutdata = 0; ++ pclr->bpc = 0; + + if (jp2_getuint16(in, &pclr->numlutents) || + jp2_getuint8(in, &pclr->numchans)) { +@@ -869,9 +885,9 @@ static int jp2_pclr_putdata(jp2_box_t *box, jas_stream_t *out) + #if 0 + jp2_pclr_t *pclr = &box->data.pclr; + #endif +-/* Eliminate warning about unused variable. */ +-box = 0; +-out = 0; ++ /* Eliminate warning about unused variable. */ ++ box = 0; ++ out = 0; + return -1; + } + diff --git a/gnu/packages/patches/jbig2dec-CVE-2017-7885.patch b/gnu/packages/patches/jbig2dec-CVE-2017-7885.patch new file mode 100644 index 0000000000..a598392765 --- /dev/null +++ b/gnu/packages/patches/jbig2dec-CVE-2017-7885.patch @@ -0,0 +1,38 @@ +Fix CVE-2017-7885: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7885 +https://bugs.ghostscript.com/show_bug.cgi?id=697703 + +Patch copied from upstream source repository: + +https://git.ghostscript.com/?p=jbig2dec.git;a=commit;h=258290340bb657c9efb44457f717b0d8b49f4aa3 + +From 258290340bb657c9efb44457f717b0d8b49f4aa3 Mon Sep 17 00:00:00 2001 +From: Shailesh Mistry <shailesh.mistry@hotmail.co.uk> +Date: Wed, 3 May 2017 22:06:01 +0100 +Subject: [PATCH] Bug 697703: Prevent integer overflow vulnerability. + +Add extra check for the offset being greater than the size +of the image and hence reading off the end of the buffer. + +Thank you to Dai Ge for finding this issue and suggesting a patch. +--- + jbig2_symbol_dict.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/jbig2_symbol_dict.c b/jbig2_symbol_dict.c +index 4acaba9..36225cb 100644 +--- a/jbig2_symbol_dict.c ++++ b/jbig2_symbol_dict.c +@@ -629,7 +629,7 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx, + byte *dst = image->data; + + /* SumatraPDF: prevent read access violation */ +- if (size - jbig2_huffman_offset(hs) < image->height * stride) { ++ if ((size - jbig2_huffman_offset(hs) < image->height * stride) || (size < jbig2_huffman_offset(hs))) { + jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "not enough data for decoding (%d/%d)", image->height * stride, + size - jbig2_huffman_offset(hs)); + jbig2_image_release(ctx, image); +-- +2.13.0 + diff --git a/gnu/packages/patches/jbig2dec-CVE-2017-7975.patch b/gnu/packages/patches/jbig2dec-CVE-2017-7975.patch new file mode 100644 index 0000000000..c83fe9d9f2 --- /dev/null +++ b/gnu/packages/patches/jbig2dec-CVE-2017-7975.patch @@ -0,0 +1,40 @@ +Fix CVE-2017-7975: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7975 +https://bugs.ghostscript.com/show_bug.cgi?id=697693 + +Patch copied from upstream source repository: + +https://git.ghostscript.com/?p=jbig2dec.git;a=commit;h=f8992b8fe65c170c8624226f127c5c4bfed42c66 + +From f8992b8fe65c170c8624226f127c5c4bfed42c66 Mon Sep 17 00:00:00 2001 +From: Shailesh Mistry <shailesh.mistry@hotmail.co.uk> +Date: Wed, 26 Apr 2017 22:12:14 +0100 +Subject: [PATCH] Bug 697693: Prevent SEGV due to integer overflow. + +While building a Huffman table, the start and end points were susceptible +to integer overflow. + +Thank you to Jiaqi for finding this issue and suggesting a patch. +--- + jbig2_huffman.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/jbig2_huffman.c b/jbig2_huffman.c +index 511e461..b4189a1 100644 +--- a/jbig2_huffman.c ++++ b/jbig2_huffman.c +@@ -421,8 +421,8 @@ jbig2_build_huffman_table(Jbig2Ctx *ctx, const Jbig2HuffmanParams *params) + + if (PREFLEN == CURLEN) { + int RANGELEN = lines[CURTEMP].RANGELEN; +- int start_j = CURCODE << shift; +- int end_j = (CURCODE + 1) << shift; ++ uint32_t start_j = CURCODE << shift; ++ uint32_t end_j = (CURCODE + 1) << shift; + byte eflags = 0; + + if (end_j > max_j) { +-- +2.13.0 + diff --git a/gnu/packages/patches/jbig2dec-CVE-2017-7976.patch b/gnu/packages/patches/jbig2dec-CVE-2017-7976.patch new file mode 100644 index 0000000000..2fe02358b8 --- /dev/null +++ b/gnu/packages/patches/jbig2dec-CVE-2017-7976.patch @@ -0,0 +1,122 @@ +Fix CVE-2017-7976: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7976 +https://bugs.ghostscript.com/show_bug.cgi?id=697683 + +In order to make the bug-fix patch apply, we also include an earlier commit +that it depends on. + +Patches copied from upstream source repository: + +Earlier commit, creating context for the CVE fix: +https://git.ghostscript.com/?p=jbig2dec.git;a=commit;h=9d2c4f3bdb0bd003deae788e7187c0f86e624544 + +CVE-2017-7976 bug fix: +https://git.ghostscript.com/?p=jbig2dec.git;a=commit;h=cfa054925de49675ac5445515ebf036fa9379ac6 + +From 9d2c4f3bdb0bd003deae788e7187c0f86e624544 Mon Sep 17 00:00:00 2001 +From: Tor Andersson <tor.andersson@artifex.com> +Date: Wed, 14 Dec 2016 15:56:31 +0100 +Subject: [PATCH] Fix warnings: remove unsigned < 0 tests that are always + false. + +--- + jbig2_image.c | 2 +- + jbig2_mmr.c | 2 +- + jbig2_symbol_dict.c | 9 ++------- + 3 files changed, 4 insertions(+), 9 deletions(-) + +diff --git a/jbig2_image.c b/jbig2_image.c +index 94e5a4c..00f966b 100644 +--- a/jbig2_image.c ++++ b/jbig2_image.c +@@ -256,7 +256,7 @@ jbig2_image_compose(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int + /* general OR case */ + s = ss; + d = dd = dst->data + y * dst->stride + leftbyte; +- if (d < dst->data || leftbyte > dst->stride || h * dst->stride < 0 || d - leftbyte + h * dst->stride > dst->data + dst->height * dst->stride) { ++ if (d < dst->data || leftbyte > dst->stride || d - leftbyte + h * dst->stride > dst->data + dst->height * dst->stride) { + return jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "preventing heap overflow in jbig2_image_compose"); + } + if (leftbyte == rightbyte) { +diff --git a/jbig2_mmr.c b/jbig2_mmr.c +index 390e27c..da54934 100644 +--- a/jbig2_mmr.c ++++ b/jbig2_mmr.c +@@ -977,7 +977,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst) + if (b1 < 2) + break; + if (c) { +- if (b1 - 2 < a0 || a0 < 0) ++ if (a0 == MINUS1 || b1 - 2 < a0) + return -1; + jbig2_set_bits(dst, a0, b1 - 2); + } +diff --git a/jbig2_symbol_dict.c b/jbig2_symbol_dict.c +index 11a2252..4acaba9 100644 +--- a/jbig2_symbol_dict.c ++++ b/jbig2_symbol_dict.c +@@ -92,11 +92,6 @@ jbig2_sd_new(Jbig2Ctx *ctx, uint32_t n_symbols) + { + Jbig2SymbolDict *new_dict = NULL; + +- if (n_symbols < 0) { +- jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "Negative number of symbols in symbol dict: %d", n_symbols); +- return NULL; +- } +- + new_dict = jbig2_new(ctx, Jbig2SymbolDict, 1); + if (new_dict != NULL) { + new_dict->glyphs = jbig2_new(ctx, Jbig2Image *, n_symbols); +@@ -613,7 +608,7 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx, + uint32_t j; + int x; + +- if (code || (BMSIZE < 0)) { ++ if (code) { + jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "error decoding size of collective bitmap!"); + goto cleanup4; + } +@@ -716,7 +711,7 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx, + code = jbig2_arith_int_decode(IAEX, as, (int32_t *)&exrunlength); + /* prevent infinite loop */ + zerolength = exrunlength > 0 ? 0 : zerolength + 1; +- if (code || (exrunlength > limit - i) || (exrunlength < 0) || (zerolength > 4) || (exflag && (exrunlength + j > params->SDNUMEXSYMS))) { ++ if (code || (exrunlength > limit - i) || (zerolength > 4) || (exflag && (exrunlength + j > params->SDNUMEXSYMS))) { + if (code) + jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "failed to decode exrunlength for exported symbols"); + else if (exrunlength <= 0) +-- +2.13.0 + +From cfa054925de49675ac5445515ebf036fa9379ac6 Mon Sep 17 00:00:00 2001 +From: Shailesh Mistry <shailesh.mistry@hotmail.co.uk> +Date: Wed, 10 May 2017 17:50:39 +0100 +Subject: [PATCH] Bug 697683: Bounds check before reading from image source + data. + +Add extra check to prevent reading off the end of the image source +data buffer. + +Thank you to Dai Ge for finding this issue and suggesting a patch. +--- + jbig2_image.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/jbig2_image.c b/jbig2_image.c +index 661d0a5..ae161b9 100644 +--- a/jbig2_image.c ++++ b/jbig2_image.c +@@ -263,7 +263,8 @@ jbig2_image_compose(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int + /* general OR case */ + s = ss; + d = dd = dst->data + y * dst->stride + leftbyte; +- if (d < dst->data || leftbyte > dst->stride || d - leftbyte + h * dst->stride > dst->data + dst->height * dst->stride) { ++ if (d < dst->data || leftbyte > dst->stride || d - leftbyte + h * dst->stride > dst->data + dst->height * dst->stride || ++ s - leftbyte + (h - 1) * src->stride + rightbyte > src->data + src->height * src->stride) { + return jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "preventing heap overflow in jbig2_image_compose"); + } + if (leftbyte == rightbyte) { +-- +2.13.0 + diff --git a/gnu/packages/patches/kiki-level-selection-crash.patch b/gnu/packages/patches/kiki-level-selection-crash.patch new file mode 100644 index 0000000000..8cc6478509 --- /dev/null +++ b/gnu/packages/patches/kiki-level-selection-crash.patch @@ -0,0 +1,19 @@ +Downloaded from https://anonscm.debian.org/viewvc/pkg-games/packages/trunk/kiki-the-nano-bot/debian/patches/level-selection-with-no-levels-solved.patch?revision=8291&view=co + +Kiki crashes if the user tries to use the level selection menu before +finishing any level. + +Peter De Wachter (pdewacht@gmail.com) +placed in the public domain + +--- a/py/levelselection.py ++++ b/py/levelselection.py +@@ -25,6 +25,8 @@ + # ............................................................................................................ + + last_level = highscore.getLastAvailableLevel() ++ if last_level < 0: ++ last_level = 0 + current_level = (level_index >= 0) and level_index or last_level + + world.max_level_index = last_level diff --git a/gnu/packages/patches/kiki-makefile.patch b/gnu/packages/patches/kiki-makefile.patch new file mode 100644 index 0000000000..7329301f2c --- /dev/null +++ b/gnu/packages/patches/kiki-makefile.patch @@ -0,0 +1,57 @@ +Downloaded from https://anonscm.debian.org/viewvc/pkg-games/packages/trunk/kiki-the-nano-bot/debian/patches/Makefile.patch?revision=15681&view=co + +Makefile fixes: + - Make CXXFLAGS, CPPFLAGS, LDFLAGS available for user-specified flags. + - run SWIG before compiling + +Peter De Wachter (pdewacht@gmail.com) +placed in the public domain + +--- a/kodilib/linux/Makefile ++++ b/kodilib/linux/Makefile +@@ -21,7 +21,7 @@ + + INCLUDES = $(KODI_INCLUDES) $(X11_INCLUDES) $(SDL_INCLUDES) + +-CXXFLAGS = $(INCLUDES) $(SDL_CFLAGS) ++CXXOPTS = -Wall $(INCLUDES) $(SDL_CFLAGS) $(CPPFLAGS) $(CXXFLAGS) + + src = \ + $(KODISRCDIR)/handler/KEventHandler.cpp \ +@@ -95,4 +95,4 @@ + $(RM) -f $(obj) libkodi.a + + %.o: %.cpp +- $(CXX) -c $(CXXFLAGS) -o $@ $< ++ $(CXX) -c $(CXXOPTS) -o $@ $< +--- a/linux/Makefile ++++ b/linux/Makefile +@@ -46,7 +46,7 @@ + + INCLUDES = $(KIKI_INCLUDES) $(X11_INCLUDES) $(PYTHON_INCLUDES) + +-CXXFLAGS = $(INCLUDES) $(SDLCFLAGS) ++CXXOPTS = -Wall $(INCLUDES) $(SDLCFLAGS) $(CPPFLAGS) $(CXXFLAGS) + + src = \ + $(KIKISRC)/base/KikiAction.cpp \ +@@ -105,8 +105,10 @@ + obj = $(src:.cpp=.o) + + kiki: $(KIKISRC)/../SWIG/KikiPy_wrap.cpp $(obj) +- -(cd ../SWIG; swig -c++ -python -globals kiki -o KikiPy_wrap.cpp KikiPy.i; cp kiki.py ../py) +- $(CXX) $(obj) $(KODILIB) -o kiki $(GLLIBS) $(SDLLIBS) $(PYTHONLIBS) ++ $(CXX) $(LDFLAGS) $(obj) $(KODILIB) -o kiki $(GLLIBS) $(SDLLIBS) $(PYTHONLIBS) ++ ++$(KIKISRC)/../SWIG/KikiPy_wrap.cpp: $(wildcard ../SWIG/*.i) ++ (cd ../SWIG && swig -c++ -python -globals kiki -DSWIG_PYTHON_LEGACY_BOOL -o KikiPy_wrap.cpp KikiPy.i && cp kiki.py ../py) + + obj-clean: + $(RM) -f $(obj) +@@ -115,5 +117,5 @@ + $(RM) -f $(obj) kiki + + %.o: %.cpp +- $(CXX) -c $(CXXFLAGS) -o $@ $< ++ $(CXX) -c $(CXXOPTS) -o $@ $< + diff --git a/gnu/packages/patches/kiki-missing-includes.patch b/gnu/packages/patches/kiki-missing-includes.patch new file mode 100644 index 0000000000..e5ee74f3ee --- /dev/null +++ b/gnu/packages/patches/kiki-missing-includes.patch @@ -0,0 +1,55 @@ +Downloaded from https://anonscm.debian.org/viewvc/pkg-games/packages/trunk/kiki-the-nano-bot/debian/patches/missing-includes.patch?revision=7984&view=co + +Status: in upstream CVS + +--- a/kodilib/src/handler/KPickable.h ++++ b/kodilib/src/handler/KPickable.h +@@ -8,6 +8,7 @@ + + #include "KIntrospection.h" + #include <vector> ++#include <limits.h> + + #define DEBUG_PICKING false + +--- a/kodilib/src/tools/KIntrospection.h ++++ b/kodilib/src/tools/KIntrospection.h +@@ -11,6 +11,7 @@ + #endif + + #include <string> ++#include <string.h> + + // -------------------------------------------------------------------------------------------------------- + class KClassInfo +--- a/kodilib/src/tools/KStringTools.cpp ++++ b/kodilib/src/tools/KStringTools.cpp +@@ -6,7 +6,7 @@ + #include "KStringTools.h" + #include "KVector.h" + +-#include <sys/types.h> // INT_MAX ++#include <limits.h> // INT_MAX + #include <stdio.h> + + // -------------------------------------------------------------------------------------------------------- +--- a/kodilib/src/tools/KStringTools.h ++++ b/kodilib/src/tools/KStringTools.h +@@ -9,6 +9,7 @@ + #include <string> + #include <vector> + #include <stdarg.h> ++#include <string.h> + + // -------------------------------------------------------------------------------------------------------- + +--- a/kodilib/src/tools/KXMLTools.cpp ++++ b/kodilib/src/tools/KXMLTools.cpp +@@ -7,6 +7,7 @@ + #include "KConsole.h" + #include "KSeparatedMatrix.h" + #include <stdio.h> ++#include <stdlib.h> + + // -------------------------------------------------------------------------------------------------------- + std::string kXMLTag ( const std::string & name, const std::string & attributes, int depth ) diff --git a/gnu/packages/patches/kiki-portability-64bit.patch b/gnu/packages/patches/kiki-portability-64bit.patch new file mode 100644 index 0000000000..456c008915 --- /dev/null +++ b/gnu/packages/patches/kiki-portability-64bit.patch @@ -0,0 +1,328 @@ +This patch was downloaded from Debian: +https://anonscm.debian.org/viewvc/pkg-games/packages/trunk/kiki-the-nano-bot/debian/patches/portability-64bit.patch?revision=7984&view=co + +Make 64-bit clean (string positions don't fit in an int on 64-bit machines) + +Peter De Wachter (pdewacht@gmail.com) +placed in the public domain + +Status: in upstream CVS + +--- a/kodilib/src/tools/KFileTools.cpp ++++ b/kodilib/src/tools/KFileTools.cpp +@@ -214,8 +214,8 @@ + // -------------------------------------------------------------------------------------------------------- + string kFileSuffix ( const string & path ) + { +- unsigned int lastDotPos = path.rfind("."); +- unsigned int lastSlashPos = path.rfind(kPathSep); ++ std::string::size_type lastDotPos = path.rfind("."); ++ std::string::size_type lastSlashPos = path.rfind(kPathSep); + + if (lastDotPos < path.size() - 1 && (lastDotPos > lastSlashPos || lastSlashPos == string::npos)) + { +@@ -228,7 +228,7 @@ + string kFileDirName ( const string & path ) + { + string native = kFileNativePath(path); +- unsigned int lastSlashPos = native.rfind(kPathSep); ++ std::string::size_type lastSlashPos = native.rfind(kPathSep); + if (lastSlashPos < native.size()) + { + return native.substr(0, lastSlashPos+1); +@@ -241,7 +241,7 @@ + { + string native = kFileNativePath(path); + string baseName = native; +- unsigned int lastSlashPos = native.rfind(kPathSep); ++ std::string::size_type lastSlashPos = native.rfind(kPathSep); + if (lastSlashPos < native.size() - 1) + { + baseName = native.substr(lastSlashPos+1); +--- a/kodilib/src/tools/KKeyTools.cpp ++++ b/kodilib/src/tools/KKeyTools.cpp +@@ -170,7 +170,7 @@ + // -------------------------------------------------------------------------------------------------------- + int kKeyGetDisplayWidthForKey ( const std::string & keyName ) + { +- unsigned int keyPos = keyName.find('_', 0); ++ std::string::size_type keyPos = keyName.find('_', 0); + if (keyPos == std::string::npos) + { + return kKeyGetDisplayWidthForPureKey(keyName) + KDL_MOD_KEY_SPACING; +@@ -313,7 +313,7 @@ + int kKeyDisplayKey ( const std::string & keyName, const KPosition & pos ) + { + KPosition start = pos; +- unsigned int keyPos = keyName.find('_', 0); ++ std::string::size_type keyPos = keyName.find('_', 0); + if (keyPos == std::string::npos) + { + return start.x + kKeyDisplayPureKey(keyName, start) + KDL_MOD_KEY_SPACING; +@@ -380,7 +380,7 @@ + // -------------------------------------------------------------------------------------------------------- + SDL_keysym kKeyGetKeysymForKeyName ( const std::string & keyName ) + { +- unsigned int pos = keyName.find('_'); ++ std::string::size_type pos = keyName.find('_'); + + std::string modString; + std::string symString = keyName; +--- a/kodilib/src/tools/KStringTools.cpp ++++ b/kodilib/src/tools/KStringTools.cpp +@@ -13,7 +13,7 @@ + void kStringInsertStringBehindTags ( std::string & str, const std::string & insertString, + const std::string & tag ) + { +- unsigned int oldPos = 0; ++ std::string::size_type oldPos = 0; + while ((oldPos = str.find(tag, oldPos)) != std::string::npos) + { + oldPos += tag.size(); +@@ -34,8 +34,8 @@ + { + std::vector<std::string> components; + +- unsigned int dividerLength = divider.size(); +- unsigned int oldpos = 0, pos; ++ std::string::size_type dividerLength = divider.size(); ++ std::string::size_type oldpos = 0, pos; + + while ((pos = str.find(divider, oldpos)) != std::string::npos) + { +@@ -50,7 +50,7 @@ + // -------------------------------------------------------------------------------------------------------- + void kStringReplace ( std::string & str, const std::string & toReplace, const std::string & replacement ) + { +- unsigned int pos = 0, chars = toReplace.size(); ++ std::string::size_type pos = 0, chars = toReplace.size(); + while ((pos = str.find(toReplace, pos)) != std::string::npos) + { + str.replace(pos, chars, replacement); +@@ -60,11 +60,11 @@ + // -------------------------------------------------------------------------------------------------------- + void kStringReplaceTabs ( std::string & str, unsigned int tabWidth ) + { +- unsigned int tabPos; ++ std::string::size_type tabPos; + while ((tabPos = str.find('\t')) != std::string::npos) + { +- unsigned int lastNewlinePos = str.rfind('\n', tabPos-1); +- unsigned int relPos = (lastNewlinePos == std::string::npos) ? tabPos : tabPos - lastNewlinePos; ++ std::string::size_type lastNewlinePos = str.rfind('\n', tabPos-1); ++ std::string::size_type relPos = (lastNewlinePos == std::string::npos) ? tabPos : tabPos - lastNewlinePos; + str.replace(tabPos, 1, std::string(tabWidth-(relPos % tabWidth), ' ')); + } + } +@@ -114,7 +114,7 @@ + // -------------------------------------------------------------------------------------------------------- + unsigned int kStringNthCharPos ( const std::string & str, unsigned int n, char c ) + { +- unsigned int loc = n, oloc = 0; ++ std::string::size_type loc = n, oloc = 0; + while (n > 0 && (loc = str.find(c, oloc)) != std::string::npos) + { + n--; +@@ -138,7 +138,7 @@ + // -------------------------------------------------------------------------------------------------------- + void kStringCropCols ( std::string & str, unsigned int columns ) + { +- unsigned int oloc = 0, nloc = 0; ++ std::string::size_type oloc = 0, nloc = 0; + while ((nloc = str.find('\n', oloc)) != std::string::npos) + { + if ((nloc - oloc) > columns) +@@ -160,10 +160,10 @@ + unsigned int kStringCols ( const std::string & str ) + { + if (str.size() == 0) return 0; +- int oloc = 0, nloc; ++ long oloc = 0, nloc; + std::string substring; + int maxlength = 0, length; +- while ((nloc = str.find('\n', oloc)) != (int)std::string::npos) ++ while ((nloc = str.find('\n', oloc)) != (long)std::string::npos) + { + substring = str.substr(oloc, nloc - oloc); + length = substring.size(); +@@ -181,7 +181,7 @@ + unsigned int kStringRows ( const std::string & str ) + { + if (str.size() == 0) return 1; +- unsigned int loc = 0, lines = 0; ++ std::string::size_type loc = 0, lines = 0; + while ((loc = str.find('\n', loc)) != std::string::npos) { lines++; loc++; } + if (str[str.size()-1] == '\n') return lines; + return lines+1; +@@ -204,8 +204,8 @@ + { + static char str[256]; + std::string format(fmt), subformat, text; +- unsigned int oloc = 0; +- unsigned int nloc = 0; ++ std::string::size_type oloc = 0; ++ std::string::size_type nloc = 0; + + kStringReplaceTabs(format); + +@@ -260,7 +260,7 @@ + // -------------------------------------------------------------------------------------------------------- + bool kStringHasSuffix ( const std::string & str, const std::string & suffix ) + { +- unsigned int result = str.rfind(suffix); ++ std::string::size_type result = str.rfind(suffix); + if (result == std::string::npos) return false; + return (result == str.size()-suffix.size()); + } +--- a/kodilib/src/tools/KXMLTools.cpp ++++ b/kodilib/src/tools/KXMLTools.cpp +@@ -58,11 +58,11 @@ + std::string kXMLParseToTagsInVector ( std::string & xml, const std::vector<std::string> & tags ) + { + std::string open("<"); +- unsigned int minLoc = std::string::npos; ++ std::string::size_type minLoc = std::string::npos; + std::vector<std::string>::const_iterator iter = tags.begin(); + while (iter != tags.end()) + { +- unsigned int loc = xml.find(open+(*iter)); ++ std::string::size_type loc = xml.find(open+(*iter)); + if (loc < minLoc) minLoc = loc; + iter++; + } +@@ -77,7 +77,7 @@ + std::string value; + std::string nameStr(name); + nameStr += "='"; +- unsigned int loc = xml.find(nameStr); ++ std::string::size_type loc = xml.find(nameStr); + if (loc != std::string::npos) + { + loc += nameStr.size(); +@@ -90,7 +90,7 @@ + // -------------------------------------------------------------------------------------------------------- + bool kXMLParseNamedCloseTag ( std::string & xml, const std::string & name, bool printError ) + { +- unsigned int loc = xml.find('<'); ++ std::string::size_type loc = xml.find('<'); + if (loc == std::string::npos) + { + if (printError) KConsole::printError(kStringPrintf("invalid XML:\nmissing close tag '%s'", +@@ -117,7 +117,7 @@ + // -------------------------------------------------------------------------------------------------------- + bool kXMLReadNamedOpenTag ( const std::string & xml, const std::string & name, std::string * attributes ) + { +- unsigned int loc = xml.find('<'), endloc; ++ std::string::size_type loc = xml.find('<'), endloc; + + if (loc == std::string::npos || xml[loc+1] == '/') return false; + +@@ -140,7 +140,7 @@ + // -------------------------------------------------------------------------------------------------------- + std::string kXMLParseNamedOpenTag ( std::string & xml, const std::string & name, std::string * attributes, bool printError ) + { +- unsigned int loc = xml.find('<'); ++ std::string::size_type loc = xml.find('<'); + if (loc == std::string::npos || xml[loc+1] == '/') + { + if (printError) KConsole::printError(kStringPrintf("invalid XML:\nmissing tag '%s'", name.c_str())); +@@ -191,7 +191,7 @@ + // -------------------------------------------------------------------------------------------------------- + bool kXMLParseOpenTag ( std::string & xml, std::string & name, std::string * attributes, bool printError ) + { +- unsigned int loc = xml.find('<'); ++ std::string::size_type loc = xml.find('<'); + if (loc == std::string::npos || xml[loc+1] == '/') + { + if (printError) KConsole::printError("invalid XML:\nmissing open tag"); +@@ -295,7 +295,7 @@ + // -------------------------------------------------------------------------------------------------------- + bool kXMLParseValue( std::string & xml, const std::string & name, int type, void * value, bool printError ) + { +- unsigned int loc = xml.find('<'); ++ std::string::size_type loc = xml.find('<'); + if (loc == std::string::npos || xml[loc+1] == '/') + { + if (printError) KConsole::printError(kStringPrintf("invalid XML:\nmissing value '%s'", name.c_str())); +@@ -379,8 +379,8 @@ + } + else if (typeString == "string") + { +- unsigned int first = substring.find("\"")+1; +- unsigned int last = substring.rfind("\"", std::string::npos); ++ std::string::size_type first = substring.find("\"")+1; ++ std::string::size_type last = substring.rfind("\"", std::string::npos); + *((std::string*)value) = substring.substr(first, last-first); + } + +--- a/kodilib/src/types/KKey.cpp ++++ b/kodilib/src/types/KKey.cpp +@@ -31,7 +31,7 @@ + // -------------------------------------------------------------------------------------------------------- + std::string KKey::getUnmodifiedName () const + { +- unsigned int keyPos = name.find('_', 0); ++ std::string::size_type keyPos = name.find('_', 0); + if (keyPos == std::string::npos) + { + return name; +@@ -42,7 +42,7 @@ + // -------------------------------------------------------------------------------------------------------- + std::string KKey::getModifierName () const + { +- unsigned int keyPos = name.find('_', 0); ++ std::string::size_type keyPos = name.find('_', 0); + if (keyPos == std::string::npos) + { + return ""; +--- a/kodilib/src/widgets/KFileNameField.cpp ++++ b/kodilib/src/widgets/KFileNameField.cpp +@@ -41,7 +41,7 @@ + std::string restPath; // path behind cursor + + // map cropped path to current directory and rest path to file prefix +- unsigned int lastSlashPos = croppedPath.rfind("/"); ++ std::string::size_type lastSlashPos = croppedPath.rfind("/"); + if (lastSlashPos < croppedPath.size()-1) + { + restPath = croppedPath.substr(lastSlashPos+1); +@@ -88,7 +88,7 @@ + } + + // ............................collect list of entries in searchDir that match prefix restPath +- unsigned int restLength = restPath.size(); ++ std::string::size_type restLength = restPath.size(); + std::vector<std::string> matchingEntries; + std::vector<std::string>::iterator iter = dir_entries.begin(); + while (iter != dir_entries.end()) +@@ -223,7 +223,7 @@ + // -------------------------------------------------------------------------------------------------------- + void KFileNameField::selectLastPathComponent () + { +- unsigned int lastSlashPos = text.rfind("/"); ++ std::string::size_type lastSlashPos = text.rfind("/"); + if (lastSlashPos == text.size()-1) lastSlashPos = text.rfind("/", lastSlashPos-1); + if (lastSlashPos < text.size()) cursor_pos = lastSlashPos+1; + else cursor_pos = 0; +--- a/src/gui/KikiMenu.cpp ++++ b/src/gui/KikiMenu.cpp +@@ -54,7 +54,7 @@ + { + std::string item_text (itemText); + std::string event_name (itemText); +- unsigned int pos; ++ std::string::size_type pos; + float scale_factor = 1.0; + + KikiMenuItem * menu_item = new KikiMenuItem (); +--- a/src/gui/KikiTextLine.cpp ++++ b/src/gui/KikiTextLine.cpp +@@ -46,7 +46,7 @@ + void KikiTextLine::setText ( const std::string & str ) + { + text = str; +- unsigned int pos; ++ std::string::size_type pos; + + if ((pos = text.find ("$scale(")) != std::string::npos) + { diff --git a/gnu/packages/patches/kio-CVE-2017-6410.patch b/gnu/packages/patches/kio-CVE-2017-6410.patch deleted file mode 100644 index 748636f806..0000000000 --- a/gnu/packages/patches/kio-CVE-2017-6410.patch +++ /dev/null @@ -1,53 +0,0 @@ -Fix CVE-2017-6410, "Information Leak when accessing https when using a -malicious PAC file": - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6410 -https://www.kde.org/info/security/advisory-20170228-1.txt - -Patch copied from upstream source repository: - -https://cgit.kde.org/kio.git/commit/?id=f9d0cb47cf94e209f6171ac0e8d774e68156a6e4 - -From f9d0cb47cf94e209f6171ac0e8d774e68156a6e4 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <aacid@kde.org> -Date: Tue, 28 Feb 2017 19:00:48 +0100 -Subject: Sanitize URLs before passing them to FindProxyForURL - -Remove user/password information -For https: remove path and query - -Thanks to safebreach.com for reporting the problem - -CCMAIL: yoni.fridburg@safebreach.com -CCMAIL: amit.klein@safebreach.com -CCMAIL: itzik.kotler@safebreach.com ---- - src/kpac/script.cpp | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/src/kpac/script.cpp b/src/kpac/script.cpp -index a0235f7..2485c54 100644 ---- a/src/kpac/script.cpp -+++ b/src/kpac/script.cpp -@@ -754,9 +754,16 @@ QString Script::evaluate(const QUrl &url) - } - } - -+ QUrl cleanUrl = url; -+ cleanUrl.setUserInfo(QString()); -+ if (cleanUrl.scheme() == QLatin1String("https")) { -+ cleanUrl.setPath(QString()); -+ cleanUrl.setQuery(QString()); -+ } -+ - QScriptValueList args; -- args << url.url(); -- args << url.host(); -+ args << cleanUrl.url(); -+ args << cleanUrl.host(); - - QScriptValue result = func.call(QScriptValue(), args); - if (result.isError()) { --- -cgit v0.11.2 - diff --git a/gnu/packages/patches/libbase-fix-includes.patch b/gnu/packages/patches/libbase-fix-includes.patch new file mode 100644 index 0000000000..3071a0c400 --- /dev/null +++ b/gnu/packages/patches/libbase-fix-includes.patch @@ -0,0 +1,71 @@ +This patch fixes the build of adb on linux. + +Copied from archlinux repository: +https://git.archlinux.org/svntogit/community.git/tree/trunk/fix_build.patch?h=packages/android-tools + +diff --git a/adb/sysdeps.h b/adb/sysdeps.h +index 75dcc86..867f3ec 100644 +--- a/adb/sysdeps.h ++++ b/adb/sysdeps.h +@@ -25,6 +25,7 @@ + #endif + + #include <errno.h> ++#include <sys/syscall.h> + + #include <string> + #include <vector> +@@ -831,7 +832,16 @@ static __inline__ int adb_is_absolute_host_path(const char* path) { + + static __inline__ unsigned long adb_thread_id() + { +- return (unsigned long)gettid(); ++ // TODO: this function should be merged with GetThreadId ++#if defined(__BIONIC__) ++ return gettid(); ++#elif defined(__APPLE__) ++ return syscall(SYS_thread_selfid); ++#elif defined(__linux__) ++ return syscall(__NR_gettid); ++#elif defined(_WIN32) ++ return GetCurrentThreadId(); ++#endif + } + + #endif /* !_WIN32 */ +diff --git a/base/errors_unix.cpp b/base/errors_unix.cpp +index 296995e..48269b6 100644 +--- a/base/errors_unix.cpp ++++ b/base/errors_unix.cpp +@@ -17,6 +17,7 @@ + #include "android-base/errors.h" + + #include <errno.h> ++#include <string.h> + + namespace android { + namespace base { +diff --git a/base/file.cpp b/base/file.cpp +index da1adba..91a3901 100644 +--- a/base/file.cpp ++++ b/base/file.cpp +@@ -20,6 +20,7 @@ + #include <fcntl.h> + #include <sys/stat.h> + #include <sys/types.h> ++#include <string.h> + + #include <string> + +diff --git a/base/logging.cpp b/base/logging.cpp +index 1741871..e97c7f1 100644 +--- a/base/logging.cpp ++++ b/base/logging.cpp +@@ -21,6 +21,7 @@ + #include "android-base/logging.h" + + #include <libgen.h> ++#include <string.h> + + // For getprogname(3) or program_invocation_short_name. + #if defined(__ANDROID__) || defined(__APPLE__) diff --git a/gnu/packages/patches/libbase-use-own-logging.patch b/gnu/packages/patches/libbase-use-own-logging.patch new file mode 100644 index 0000000000..f755bf9722 --- /dev/null +++ b/gnu/packages/patches/libbase-use-own-logging.patch @@ -0,0 +1,80 @@ +Patch copied from: +https://android.googlesource.com/platform/system/core/+/e5dd71a290f664d3f3bf0dd8a4bad411dc7ad416 + +From e5dd71a290f664d3f3bf0dd8a4bad411dc7ad416 Mon Sep 17 00:00:00 2001 +From: Elliott Hughes <enh@google.com> +Date: Thu, 28 Jul 2016 15:15:28 -0700 +Subject: [PATCH] libbase should use its own logging! + +Not doing so led to us using a bogus log tag. + +Bug: http://b/30281203 +Change-Id: I3ac91758a1a043146c65f2ae0f36fcfbe372c30f +--- + base/file.cpp | 11 +++++------ + base/logging.cpp | 3 +-- + 2 files changed, 6 insertions(+), 8 deletions(-) + +diff --git a/base/file.cpp b/base/file.cpp +index da1adba19..4e7ac82d1 100644 +--- a/base/file.cpp ++++ b/base/file.cpp +@@ -24,9 +24,8 @@ + #include <string> + + #include "android-base/macros.h" // For TEMP_FAILURE_RETRY on Darwin. ++#include "android-base/logging.h" + #include "android-base/utf8.h" +-#define LOG_TAG "base.file" +-#include "cutils/log.h" + #include "utils/Compat.h" + + namespace android { +@@ -86,22 +85,22 @@ bool WriteStringToFile(const std::string& content, const std::string& path, + int flags = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW | O_BINARY; + int fd = TEMP_FAILURE_RETRY(open(path.c_str(), flags, mode)); + if (fd == -1) { +- ALOGE("android::WriteStringToFile open failed: %s", strerror(errno)); ++ PLOG(ERROR) << "android::WriteStringToFile open failed"; + return false; + } + + // We do an explicit fchmod here because we assume that the caller really + // meant what they said and doesn't want the umask-influenced mode. + if (fchmod(fd, mode) == -1) { +- ALOGE("android::WriteStringToFile fchmod failed: %s", strerror(errno)); ++ PLOG(ERROR) << "android::WriteStringToFile fchmod failed"; + return CleanUpAfterFailedWrite(path); + } + if (fchown(fd, owner, group) == -1) { +- ALOGE("android::WriteStringToFile fchown failed: %s", strerror(errno)); ++ PLOG(ERROR) << "android::WriteStringToFile fchown failed"; + return CleanUpAfterFailedWrite(path); + } + if (!WriteStringToFd(content, fd)) { +- ALOGE("android::WriteStringToFile write failed: %s", strerror(errno)); ++ PLOG(ERROR) << "android::WriteStringToFile write failed"; + return CleanUpAfterFailedWrite(path); + } + close(fd); +diff --git a/base/logging.cpp b/base/logging.cpp +index 769c266c9..959bb8b05 100644 +--- a/base/logging.cpp ++++ b/base/logging.cpp +@@ -43,12 +43,11 @@ + + #include "android-base/macros.h" + #include "android-base/strings.h" +-#include "cutils/threads.h" + + // Headers for LogMessage::LogLine. + #ifdef __ANDROID__ + #include <android/set_abort_message.h> +-#include "cutils/log.h" ++#include "log/log.h" + #else + #include <sys/types.h> + #include <unistd.h> +-- +2.11.0 + diff --git a/gnu/packages/patches/libcroco-CVE-2017-7960.patch b/gnu/packages/patches/libcroco-CVE-2017-7960.patch new file mode 100644 index 0000000000..0319c7389f --- /dev/null +++ b/gnu/packages/patches/libcroco-CVE-2017-7960.patch @@ -0,0 +1,66 @@ +Fix CVE-2017-7960: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7960 + +Patch copied from upstream source repository: + +https://git.gnome.org/browse/libcroco/commit/?id=898e3a8c8c0314d2e6b106809a8e3e93cf9d4394 + +From 898e3a8c8c0314d2e6b106809a8e3e93cf9d4394 Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro <qignacio@amazon.com> +Date: Sun, 16 Apr 2017 13:13:43 +0200 +Subject: input: check end of input before reading a byte + +When reading bytes we weren't check that the index wasn't +out of bound and this could produce an invalid read which +could deal to a security bug. +--- + src/cr-input.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/cr-input.c b/src/cr-input.c +index 49000b1..3b63a88 100644 +--- a/src/cr-input.c ++++ b/src/cr-input.c +@@ -256,7 +256,7 @@ cr_input_new_from_uri (const gchar * a_file_uri, enum CREncoding a_enc) + *we should free buf here because it's own by CRInput. + *(see the last parameter of cr_input_new_from_buf(). + */ +- buf = NULL ; ++ buf = NULL; + } + + cleanup: +@@ -404,6 +404,8 @@ cr_input_get_nb_bytes_left (CRInput const * a_this) + enum CRStatus + cr_input_read_byte (CRInput * a_this, guchar * a_byte) + { ++ gulong nb_bytes_left = 0; ++ + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_byte, CR_BAD_PARAM_ERROR); + +@@ -413,6 +415,12 @@ cr_input_read_byte (CRInput * a_this, guchar * a_byte) + if (PRIVATE (a_this)->end_of_input == TRUE) + return CR_END_OF_INPUT_ERROR; + ++ nb_bytes_left = cr_input_get_nb_bytes_left (a_this); ++ ++ if (nb_bytes_left < 1) { ++ return CR_END_OF_INPUT_ERROR; ++ } ++ + *a_byte = PRIVATE (a_this)->in_buf[PRIVATE (a_this)->next_byte_index]; + + if (PRIVATE (a_this)->nb_bytes - +@@ -477,7 +485,6 @@ cr_input_read_char (CRInput * a_this, guint32 * a_char) + if (*a_char == '\n') { + PRIVATE (a_this)->end_of_line = TRUE; + } +- + } + + return status; +-- +cgit v0.12 + diff --git a/gnu/packages/patches/libcroco-CVE-2017-7961.patch b/gnu/packages/patches/libcroco-CVE-2017-7961.patch new file mode 100644 index 0000000000..675dbe4f08 --- /dev/null +++ b/gnu/packages/patches/libcroco-CVE-2017-7961.patch @@ -0,0 +1,50 @@ +Fix CVE-2017-7961: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7961 + +Patch copied from upstream source repository: + +https://git.gnome.org/browse/libcroco/commit/?id=9ad72875e9f08e4c519ef63d44cdbd94aa9504f7 + +From 9ad72875e9f08e4c519ef63d44cdbd94aa9504f7 Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro <qignacio@amazon.com> +Date: Sun, 16 Apr 2017 13:56:09 +0200 +Subject: tknzr: support only max long rgb values + +This fixes a possible out of bound when reading rgbs which +are longer than the support MAXLONG +--- + src/cr-tknzr.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/cr-tknzr.c b/src/cr-tknzr.c +index 1a7cfeb..1548c35 100644 +--- a/src/cr-tknzr.c ++++ b/src/cr-tknzr.c +@@ -1279,6 +1279,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + red = num->val; + cr_num_destroy (num); + num = NULL; +@@ -1298,6 +1303,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + PEEK_BYTE (a_this, 1, &next_bytes[0]); + if (next_bytes[0] == '%') { + SKIP_CHARS (a_this, 1); +-- +cgit v0.12 + diff --git a/gnu/packages/patches/libdrm-symbol-check.patch b/gnu/packages/patches/libdrm-symbol-check.patch index 69c67e778d..0a77763a4f 100644 --- a/gnu/packages/patches/libdrm-symbol-check.patch +++ b/gnu/packages/patches/libdrm-symbol-check.patch @@ -174,26 +174,21 @@ mips64el-linux, armhf-linux and aarch64-linux. @@ -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 +-# The following symbols (past the first nine) are taken from tegra.h. ++# The following symbols (past the first 12) are taken from tegra.h. 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 + ( grep -q "^$func$" || echo $func ) <<EOF +@@ -9,6 +9,9 @@ + __bss_start + __end__ + _bss_end__ +_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 - + _edata + _end + _fini --- libdrm-2.4.65/radeon/radeon-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 +++ libdrm-2.4.65/radeon/radeon-symbol-check 2015-10-18 23:57:00.756759698 -0400 @@ -1,6 +1,6 @@ diff --git a/gnu/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch b/gnu/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch new file mode 100644 index 0000000000..5f63231af0 --- /dev/null +++ b/gnu/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch @@ -0,0 +1,77 @@ +Fix CVE-2017-{8361,8363,8365}: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8361 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8363 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8365 + +Patch copied from upstream source repository: + +https://github.com/erikd/libsndfile/commit/fd0484aba8e51d16af1e3a880f9b8b857b385eb3 + +From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Wed, 12 Apr 2017 19:45:30 +1000 +Subject: [PATCH] FLAC: Fix a buffer read overrun + +Buffer read overrun occurs when reading a FLAC file that switches +from 2 channels to one channel mid-stream. Only option is to +abort the read. + +Closes: https://github.com/erikd/libsndfile/issues/230 +--- + src/common.h | 1 + + src/flac.c | 13 +++++++++++++ + src/sndfile.c | 1 + + 3 files changed, 15 insertions(+) + +diff --git a/src/common.h b/src/common.h +index 0bd810c3..e2669b6a 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -725,6 +725,7 @@ enum + SFE_FLAC_INIT_DECODER, + SFE_FLAC_LOST_SYNC, + SFE_FLAC_BAD_SAMPLE_RATE, ++ SFE_FLAC_CHANNEL_COUNT_CHANGED, + SFE_FLAC_UNKOWN_ERROR, + + SFE_WVE_NOT_WVE, +diff --git a/src/flac.c b/src/flac.c +index 84de0e26..986a7b8f 100644 +--- a/src/flac.c ++++ b/src/flac.c +@@ -434,6 +434,19 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_ + + switch (metadata->type) + { case FLAC__METADATA_TYPE_STREAMINFO : ++ if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels) ++ { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n" ++ "Nothing to be but to error out.\n" , ++ psf->sf.channels, metadata->data.stream_info.channels) ; ++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; ++ return ; ++ } ; ++ ++ if (psf->sf.channels > 0 && psf->sf.samplerate != (int) metadata->data.stream_info.sample_rate) ++ { psf_log_printf (psf, "Warning: FLAC stream changed sample rates from %d to %d.\n" ++ "Carrying on as if nothing happened.", ++ psf->sf.samplerate, metadata->data.stream_info.sample_rate) ; ++ } ; + psf->sf.channels = metadata->data.stream_info.channels ; + psf->sf.samplerate = metadata->data.stream_info.sample_rate ; + psf->sf.frames = metadata->data.stream_info.total_samples ; +diff --git a/src/sndfile.c b/src/sndfile.c +index 41875610..e2a87be8 100644 +--- a/src/sndfile.c ++++ b/src/sndfile.c +@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] = + { SFE_FLAC_INIT_DECODER , "Error : problem with initialization of the flac decoder." }, + { SFE_FLAC_LOST_SYNC , "Error : flac decoder lost sync." }, + { SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." }, ++ { SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed mid stream." }, + { SFE_FLAC_UNKOWN_ERROR , "Error : unknown error in flac decoder." }, + + { SFE_WVE_NOT_WVE , "Error : not a WVE file." }, +-- +2.12.2 + diff --git a/gnu/packages/patches/libsndfile-CVE-2017-8362.patch b/gnu/packages/patches/libsndfile-CVE-2017-8362.patch new file mode 100644 index 0000000000..5fc52a377a --- /dev/null +++ b/gnu/packages/patches/libsndfile-CVE-2017-8362.patch @@ -0,0 +1,61 @@ +Fix CVE-2017-8362: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8362 + +Patch copied from upstream source repository: + +https://github.com/erikd/libsndfile/commit/ef1dbb2df1c0e741486646de40bd638a9c4cd808 + +From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Fri, 14 Apr 2017 15:19:16 +1000 +Subject: [PATCH] src/flac.c: Fix a buffer read overflow + +A file (generated by a fuzzer) which increased the number of channels +from one frame to the next could cause a read beyond the end of the +buffer provided by libFLAC. Only option is to abort the read. + +Closes: https://github.com/erikd/libsndfile/issues/231 +--- + src/flac.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/flac.c b/src/flac.c +index 5a4f8c21..e4f9aaa0 100644 +--- a/src/flac.c ++++ b/src/flac.c +@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf) + const int32_t* const *buffer = pflac->wbuffer ; + unsigned i = 0, j, offset, channels, len ; + ++ if (psf->sf.channels != (int) frame->header.channels) ++ { psf_log_printf (psf, "Error: FLAC frame changed from %d to %d channels\n" ++ "Nothing to do but to error out.\n" , ++ psf->sf.channels, frame->header.channels) ; ++ psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; ++ return 0 ; ++ } ; ++ + /* + ** frame->header.blocksize is variable and we're using a constant blocksize + ** of FLAC__MAX_BLOCK_SIZE. +@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf) + return 0 ; + } ; + +- + len = SF_MIN (pflac->len, frame->header.blocksize) ; + + if (pflac->remain % channels != 0) +@@ -436,7 +443,7 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_ + { case FLAC__METADATA_TYPE_STREAMINFO : + if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels) + { psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n" +- "Nothing to be but to error out.\n" , ++ "Nothing to do but to error out.\n" , + psf->sf.channels, metadata->data.stream_info.channels) ; + psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ; + return ; +-- +2.12.2 + diff --git a/gnu/packages/patches/libsndfile-armhf-type-checks.patch b/gnu/packages/patches/libsndfile-armhf-type-checks.patch new file mode 100644 index 0000000000..7e0c71c3f6 --- /dev/null +++ b/gnu/packages/patches/libsndfile-armhf-type-checks.patch @@ -0,0 +1,42 @@ +This is a regression in 1.0.28 that causes a test failure on armhf. + +Upstream bug URL: + +https://github.com/erikd/libsndfile/issues/229 + +Patch copied from upstream source repository: + +https://github.com/erikd/libsndfile/commit/9d470ee5577d3ccedb1c28c7e0a7295ba17feaf5 + +From 9d470ee5577d3ccedb1c28c7e0a7295ba17feaf5 Mon Sep 17 00:00:00 2001 +From: Erik de Castro Lopo <erikd@mega-nerd.com> +Date: Sun, 16 Apr 2017 17:54:17 +1000 +Subject: [PATCH] src/rf64.c: Fix varargs related bug + +C's <stargs.h> functionality isn't type checked so that passing an +`sf_count_t` (64 bits) by mistake in place of a `unit32_t` can cause +errors. This would be fine if it was an error on every architecture +and platform, but its not. This particular problem only manifested +on armhf and some other Arm architectures. It was not an issue on +32 bit x86. + +I have now fixed variants of this same bug several times. + +Closes: https://github.com/erikd/libsndfile/issues/229 +--- + src/rf64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/rf64.c b/src/rf64.c +index b3d637f..02dd904 100644 +--- a/src/rf64.c ++++ b/src/rf64.c +@@ -742,7 +742,7 @@ rf64_write_header (SF_PRIVATE *psf, int calc_length) + + pad_size = psf->dataoffset - 16 - psf->header.indx ; + if (pad_size >= 0) +- psf_binheader_writef (psf, "m4z", PAD_MARKER, pad_size, make_size_t (pad_size)) ; ++ psf_binheader_writef (psf, "m4z", PAD_MARKER, (unsigned int) pad_size, make_size_t (pad_size)) ; + + if (wpriv->rf64_downgrade && (psf->filelength < RIFF_DOWNGRADE_BYTES)) + psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ; diff --git a/gnu/packages/patches/libtiff-CVE-2017-7593.patch b/gnu/packages/patches/libtiff-CVE-2017-7593.patch new file mode 100644 index 0000000000..496efb73b9 --- /dev/null +++ b/gnu/packages/patches/libtiff-CVE-2017-7593.patch @@ -0,0 +1,113 @@ +Fixes CVE-2017-7593 (Potential uninitialized-memory access from tif_rawdata): + +http://bugzilla.maptools.org/show_bug.cgi?id=2651 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7593 +https://security-tracker.debian.org/tracker/CVE-2017-7593 + +2017-01-11 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tiffio.h, tif_unix.c, tif_win32.c, tif_vms.c: add + _TIFFcalloc() + + * libtiff/tif_read.c: TIFFReadBufferSetup(): use _TIFFcalloc() to zero + initialize tif_rawdata. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2651 + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1208; previous revision: 1.1207 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_read.c,v <-- libtiff/tif_read.c +new revision: 1.53; previous revision: 1.52 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_unix.c,v <-- libtiff/tif_unix.c +new revision: 1.28; previous revision: 1.27 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_vms.c,v <-- libtiff/tif_vms.c +new revision: 1.14; previous revision: 1.13 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_win32.c,v <-- libtiff/tif_win32.c +new revision: 1.42; previous revision: 1.41 +/cvs/maptools/cvsroot/libtiff/libtiff/tiffio.h,v <-- libtiff/tiffio.h +new revision: 1.94; previous revision: 1.93 + +diff -ru tiff-4.0.7/libtiff/tiffio.h tiff-4.0.7.new/libtiff/tiffio.h +--- tiff-4.0.7/libtiff/tiffio.h 1969-12-31 19:00:00.000000000 -0500 ++++ tiff-4.0.7.new/libtiff/tiffio.h 2017-05-05 19:08:03.772999790 -0400 +@@ -1,4 +1,4 @@ +-/* $Id: tiffio.h,v 1.92 2016-01-23 21:20:34 erouault Exp $ */ ++/* $Id: tiffio.h,v 1.94 2017-01-11 19:02:49 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -293,6 +293,7 @@ + */ + + extern void* _TIFFmalloc(tmsize_t s); ++extern void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz); + extern void* _TIFFrealloc(void* p, tmsize_t s); + extern void _TIFFmemset(void* p, int v, tmsize_t c); + extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c); +diff -ru tiff-4.0.7/libtiff/tif_read.c tiff-4.0.7.new/libtiff/tif_read.c +--- tiff-4.0.7/libtiff/tif_read.c 2017-05-05 19:04:09.740966642 -0400 ++++ tiff-4.0.7.new/libtiff/tif_read.c 2017-05-05 18:59:11.070709441 -0400 +@@ -1,4 +1,4 @@ +-/* $Id: tif_read.c,v 1.50 2016-12-02 21:56:56 erouault Exp $ */ ++/* $Id: tif_read.c,v 1.53 2017-01-11 19:02:49 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -976,7 +976,9 @@ + "Invalid buffer size"); + return (0); + } +- tif->tif_rawdata = (uint8*) _TIFFmalloc(tif->tif_rawdatasize); ++ /* Initialize to zero to avoid uninitialized buffers in case of */ ++ /* short reads (http://bugzilla.maptools.org/show_bug.cgi?id=2651) */ ++ tif->tif_rawdata = (uint8*) _TIFFcalloc(1, tif->tif_rawdatasize); + tif->tif_flags |= TIFF_MYBUFFER; + } + if (tif->tif_rawdata == NULL) { +diff -ru tiff-4.0.7/libtiff/tif_unix.c tiff-4.0.7.new/libtiff/tif_unix.c +--- tiff-4.0.7/libtiff/tif_unix.c 1969-12-31 19:00:00.000000000 -0500 ++++ tiff-4.0.7.new/libtiff/tif_unix.c 2017-05-05 19:10:48.302645187 -0400 +@@ -1,4 +1,4 @@ +-/* $Id: tif_unix.c,v 1.27 2015-08-19 02:31:04 bfriesen Exp $ */ ++/* $Id: tif_unix.c,v 1.28 2017-01-11 19:02:49 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -316,6 +316,14 @@ + return (malloc((size_t) s)); + } + ++void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz) ++{ ++ if( nmemb == 0 || siz == 0 ) ++ return ((void *) NULL); ++ ++ return calloc((size_t) nmemb, (size_t)siz); ++} ++ + void + _TIFFfree(void* p) + { +diff -ru tiff-4.0.7/libtiff/tif_win32.c tiff-4.0.7.new/libtiff/tif_win32.c +--- tiff-4.0.7/libtiff/tif_win32.c 1969-12-31 19:00:00.000000000 -0500 ++++ tiff-4.0.7.new/libtiff/tif_win32.c 2017-05-05 19:13:06.903399627 -0400 +@@ -1,4 +1,4 @@ +-/* $Id: tif_win32.c,v 1.41 2015-08-23 20:12:44 bfriesen Exp $ */ ++/* $Id: tif_win32.c,v 1.42 2017-01-11 19:02:49 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -360,6 +360,14 @@ + return (malloc((size_t) s)); + } + ++void* _TIFFcalloc(tmsize_t nmemb, tmsize_t siz) ++{ ++ if( nmemb == 0 || siz == 0 ) ++ return ((void *) NULL); ++ ++ return calloc((size_t) nmemb, (size_t)siz); ++} ++ + void + _TIFFfree(void* p) + { diff --git a/gnu/packages/patches/libtiff-CVE-2017-7594.patch b/gnu/packages/patches/libtiff-CVE-2017-7594.patch new file mode 100644 index 0000000000..d17997d447 --- /dev/null +++ b/gnu/packages/patches/libtiff-CVE-2017-7594.patch @@ -0,0 +1,54 @@ +Fixes CVE-2017-7594 (Direct leak in tif_ojpeg.c): + +http://bugzilla.maptools.org/show_bug.cgi?id=2659 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7594 +https://security-tracker.debian.org/tracker/CVE-2017-7594 + +2017-01-12 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tif_ojpeg.c: fix leak in OJPEGReadHeaderInfoSecTablesAcTable + when read fails. + Patch by Nicolás Peña. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2659 + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1212; previous revision: 1.1211 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_ojpeg.c,v <-- libtiff/tif_ojpeg.c +new revision: 1.67; previous revision: 1.66 + +Index: libtiff/libtiff/tif_ojpeg.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_ojpeg.c,v +retrieving revision 1.67 +retrieving revision 1.68 +diff -u -r1.67 -r1.68 +--- libtiff/libtiff/tif_ojpeg.c 12 Jan 2017 17:43:26 -0000 1.67 ++++ libtiff/libtiff/tif_ojpeg.c 12 Jan 2017 19:23:20 -0000 1.68 +@@ -1,4 +1,4 @@ +-/* $Id: tif_ojpeg.c,v 1.66 2016-12-03 11:15:18 erouault Exp $ */ ++/* $Id: tif_ojpeg.c,v 1.68 2017-01-12 19:23:20 erouault Exp $ */ + + /* WARNING: The type of JPEG encapsulation defined by the TIFF Version 6.0 + specification is now totally obsolete and deprecated for new applications and +@@ -1790,7 +1790,10 @@ + TIFFSeekFile(tif,sp->qtable_offset[m],SEEK_SET); + p=(uint32)TIFFReadFile(tif,&ob[sizeof(uint32)+5],64); + if (p!=64) ++ { ++ _TIFFfree(ob); + return(0); ++ } + sp->qtable[m]=ob; + sp->sof_tq[m]=m; + } +@@ -1854,7 +1857,10 @@ + rb[sizeof(uint32)+5+n]=o[n]; + p=(uint32)TIFFReadFile(tif,&(rb[sizeof(uint32)+21]),q); + if (p!=q) ++ { ++ _TIFFfree(rb); + return(0); ++ } + sp->dctable[m]=rb; + sp->sos_tda[m]=(m<<4); + } diff --git a/gnu/packages/patches/libtiff-multiple-UBSAN-crashes.patch b/gnu/packages/patches/libtiff-multiple-UBSAN-crashes.patch new file mode 100644 index 0000000000..2f4509f386 --- /dev/null +++ b/gnu/packages/patches/libtiff-multiple-UBSAN-crashes.patch @@ -0,0 +1,449 @@ +Fixes CVE-2017-{7595,7596,7597,7598,7599,7600,7601,7602}: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7595 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7596 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7597 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7598 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7599 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7600 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7601 +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7602 + +2017-01-11 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tif_dir.c, tif_dirread.c, tif_dirwrite.c: implement various + clampings + of double to other data types to avoid undefined behaviour if the + output range + isn't big enough to hold the input value. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2643 + http://bugzilla.maptools.org/show_bug.cgi?id=2642 + http://bugzilla.maptools.org/show_bug.cgi?id=2646 + http://bugzilla.maptools.org/show_bug.cgi?id=2647 + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1204; previous revision: 1.1203 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v <-- libtiff/tif_dir.c +new revision: 1.129; previous revision: 1.128 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v <-- libtiff/tif_dirread.c +new revision: 1.207; previous revision: 1.206 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_dirwrite.c,v <-- libtiff/tif_dirwrite.c +new revision: 1.85; previous revision: 1.84 + +2017-01-11 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tif_dirread.c: avoid division by floating point 0 in + TIFFReadDirEntryCheckedRational() and + TIFFReadDirEntryCheckedSrational(), + and return 0 in that case (instead of infinity as before presumably) + Apparently some sanitizers do not like those divisions by zero. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2644 + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1203; previous revision: 1.1202 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v <-- libtiff/tif_dirread.c +new revision: 1.206; previous revision: 1.205 + +2017-01-11 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tif_jpeg.c: validate BitsPerSample in JPEGSetupEncode() to + avoid undefined behaviour caused by invalid shift exponent. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2648 + + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1205; previous revision: 1.1204 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_jpeg.c,v <-- libtiff/tif_jpeg.c +new revision: 1.126; previous revision: 1.125 + +2017-01-11 Even Rouault <even.rouault at spatialys.com> + + * libtiff/tif_read.c: avoid potential undefined behaviour on signed + integer addition in TIFFReadRawStrip1() in isMapped() case. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2650 + +/cvs/maptools/cvsroot/libtiff/ChangeLog,v <-- ChangeLog +new revision: 1.1206; previous revision: 1.1205 +/cvs/maptools/cvsroot/libtiff/libtiff/tif_read.c,v <-- libtiff/tif_read.c +new revision: 1.51; previous revision: 1.50 + +Index: libtiff/libtiff/tif_dir.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v +retrieving revision 1.128 +retrieving revision 1.129 +diff -u -r1.128 -r1.129 +--- libtiff/libtiff/tif_dir.c 3 Dec 2016 15:30:31 -0000 1.128 ++++ libtiff/libtiff/tif_dir.c 11 Jan 2017 16:09:02 -0000 1.129 +@@ -1,4 +1,4 @@ +-/* $Id: tif_dir.c,v 1.128 2016-12-03 15:30:31 erouault Exp $ */ ++/* $Id: tif_dir.c,v 1.129 2017-01-11 16:09:02 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -31,6 +31,7 @@ + * (and also some miscellaneous stuff) + */ + #include "tiffiop.h" ++#include <float.h> + + /* + * These are used in the backwards compatibility code... +@@ -154,6 +155,15 @@ + return (0); + } + ++static float TIFFClampDoubleToFloat( double val ) ++{ ++ if( val > FLT_MAX ) ++ return FLT_MAX; ++ if( val < -FLT_MAX ) ++ return -FLT_MAX; ++ return (float)val; ++} ++ + static int + _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap) + { +@@ -312,13 +322,13 @@ + dblval = va_arg(ap, double); + if( dblval < 0 ) + goto badvaluedouble; +- td->td_xresolution = (float) dblval; ++ td->td_xresolution = TIFFClampDoubleToFloat( dblval ); + break; + case TIFFTAG_YRESOLUTION: + dblval = va_arg(ap, double); + if( dblval < 0 ) + goto badvaluedouble; +- td->td_yresolution = (float) dblval; ++ td->td_yresolution = TIFFClampDoubleToFloat( dblval ); + break; + case TIFFTAG_PLANARCONFIG: + v = (uint16) va_arg(ap, uint16_vap); +@@ -327,10 +337,10 @@ + td->td_planarconfig = (uint16) v; + break; + case TIFFTAG_XPOSITION: +- td->td_xposition = (float) va_arg(ap, double); ++ td->td_xposition = TIFFClampDoubleToFloat( va_arg(ap, double) ); + break; + case TIFFTAG_YPOSITION: +- td->td_yposition = (float) va_arg(ap, double); ++ td->td_yposition = TIFFClampDoubleToFloat( va_arg(ap, double) ); + break; + case TIFFTAG_RESOLUTIONUNIT: + v = (uint16) va_arg(ap, uint16_vap); +Index: libtiff/libtiff/tif_dirread.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v +retrieving revision 1.206 +retrieving revision 1.207 +diff -u -r1.206 -r1.207 +--- libtiff/libtiff/tif_dirread.c 11 Jan 2017 13:28:01 -0000 1.206 ++++ libtiff/libtiff/tif_dirread.c 11 Jan 2017 16:09:02 -0000 1.207 +@@ -1,4 +1,4 @@ +-/* $Id: tif_dirread.c,v 1.205 2016-12-03 11:02:15 erouault Exp $ */ ++/* $Id: tif_dirread.c,v 1.207 2017-01-11 16:09:02 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -40,6 +40,7 @@ + */ + + #include "tiffiop.h" ++#include <float.h> + + #define IGNORE 0 /* tag placeholder used below */ + #define FAILED_FII ((uint32) -1) +@@ -2406,7 +2407,14 @@ + ma=(double*)origdata; + mb=data; + for (n=0; n<count; n++) +- *mb++=(float)(*ma++); ++ { ++ double val = *ma++; ++ if( val > FLT_MAX ) ++ val = FLT_MAX; ++ else if( val < -FLT_MAX ) ++ val = -FLT_MAX; ++ *mb++=(float)val; ++ } + } + break; + } +Index: libtiff/libtiff/tif_dirwrite.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirwrite.c,v +retrieving revision 1.84 +retrieving revision 1.85 +diff -u -r1.84 -r1.85 +--- libtiff/libtiff/tif_dirwrite.c 11 Jan 2017 12:51:59 -0000 1.84 ++++ libtiff/libtiff/tif_dirwrite.c 11 Jan 2017 16:09:02 -0000 1.85 +@@ -1,4 +1,4 @@ +-/* $Id: tif_dirwrite.c,v 1.83 2016-10-25 21:35:15 erouault Exp $ */ ++/* $Id: tif_dirwrite.c,v 1.85 2017-01-11 16:09:02 erouault Exp $ */ + + /* + * Copyright (c) 1988-1997 Sam Leffler +@@ -30,6 +30,7 @@ + * Directory Write Support Routines. + */ + #include "tiffiop.h" ++#include <float.h> + + #ifdef HAVE_IEEEFP + #define TIFFCvtNativeToIEEEFloat(tif, n, fp) +@@ -939,6 +940,69 @@ + return(0); + } + ++static float TIFFClampDoubleToFloat( double val ) ++{ ++ if( val > FLT_MAX ) ++ return FLT_MAX; ++ if( val < -FLT_MAX ) ++ return -FLT_MAX; ++ return (float)val; ++} ++ ++static int8 TIFFClampDoubleToInt8( double val ) ++{ ++ if( val > 127 ) ++ return 127; ++ if( val < -128 || val != val ) ++ return -128; ++ return (int8)val; ++} ++ ++static int16 TIFFClampDoubleToInt16( double val ) ++{ ++ if( val > 32767 ) ++ return 32767; ++ if( val < -32768 || val != val ) ++ return -32768; ++ return (int16)val; ++} ++ ++static int32 TIFFClampDoubleToInt32( double val ) ++{ ++ if( val > 0x7FFFFFFF ) ++ return 0x7FFFFFFF; ++ if( val < -0x7FFFFFFF-1 || val != val ) ++ return -0x7FFFFFFF-1; ++ return (int32)val; ++} ++ ++static uint8 TIFFClampDoubleToUInt8( double val ) ++{ ++ if( val < 0 ) ++ return 0; ++ if( val > 255 || val != val ) ++ return 255; ++ return (uint8)val; ++} ++ ++static uint16 TIFFClampDoubleToUInt16( double val ) ++{ ++ if( val < 0 ) ++ return 0; ++ if( val > 65535 || val != val ) ++ return 65535; ++ return (uint16)val; ++} ++ ++static uint32 TIFFClampDoubleToUInt32( double val ) ++{ ++ if( val < 0 ) ++ return 0; ++ if( val > 0xFFFFFFFFU || val != val ) ++ return 0xFFFFFFFFU; ++ return (uint32)val; ++} ++ + static int + TIFFWriteDirectoryTagSampleformatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value) + { +@@ -959,7 +1023,7 @@ + if (tif->tif_dir.td_bitspersample<=32) + { + for (i = 0; i < count; ++i) +- ((float*)conv)[i] = (float)value[i]; ++ ((float*)conv)[i] = TIFFClampDoubleToFloat(value[i]); + ok = TIFFWriteDirectoryTagFloatArray(tif,ndir,dir,tag,count,(float*)conv); + } + else +@@ -971,19 +1035,19 @@ + if (tif->tif_dir.td_bitspersample<=8) + { + for (i = 0; i < count; ++i) +- ((int8*)conv)[i] = (int8)value[i]; ++ ((int8*)conv)[i] = TIFFClampDoubleToInt8(value[i]); + ok = TIFFWriteDirectoryTagSbyteArray(tif,ndir,dir,tag,count,(int8*)conv); + } + else if (tif->tif_dir.td_bitspersample<=16) + { + for (i = 0; i < count; ++i) +- ((int16*)conv)[i] = (int16)value[i]; ++ ((int16*)conv)[i] = TIFFClampDoubleToInt16(value[i]); + ok = TIFFWriteDirectoryTagSshortArray(tif,ndir,dir,tag,count,(int16*)conv); + } + else + { + for (i = 0; i < count; ++i) +- ((int32*)conv)[i] = (int32)value[i]; ++ ((int32*)conv)[i] = TIFFClampDoubleToInt32(value[i]); + ok = TIFFWriteDirectoryTagSlongArray(tif,ndir,dir,tag,count,(int32*)conv); + } + break; +@@ -991,19 +1055,19 @@ + if (tif->tif_dir.td_bitspersample<=8) + { + for (i = 0; i < count; ++i) +- ((uint8*)conv)[i] = (uint8)value[i]; ++ ((uint8*)conv)[i] = TIFFClampDoubleToUInt8(value[i]); + ok = TIFFWriteDirectoryTagByteArray(tif,ndir,dir,tag,count,(uint8*)conv); + } + else if (tif->tif_dir.td_bitspersample<=16) + { + for (i = 0; i < count; ++i) +- ((uint16*)conv)[i] = (uint16)value[i]; ++ ((uint16*)conv)[i] = TIFFClampDoubleToUInt16(value[i]); + ok = TIFFWriteDirectoryTagShortArray(tif,ndir,dir,tag,count,(uint16*)conv); + } + else + { + for (i = 0; i < count; ++i) +- ((uint32*)conv)[i] = (uint32)value[i]; ++ ((uint32*)conv)[i] = TIFFClampDoubleToUInt32(value[i]); + ok = TIFFWriteDirectoryTagLongArray(tif,ndir,dir,tag,count,(uint32*)conv); + } + break; +@@ -2102,7 +2102,7 @@ + m[0]=0; + m[1]=1; + } +- else if (value==(double)(uint32)value) ++ else if (value <= 0xFFFFFFFFU && value==(double)(uint32)value) + { + m[0]=(uint32)value; + m[1]=1; +@@ -2148,12 +2217,13 @@ + } + for (na=value, nb=m, nc=0; nc<count; na++, nb+=2, nc++) + { +- if (*na<=0.0) ++ if (*na<=0.0 || *na != *na) + { + nb[0]=0; + nb[1]=1; + } +- else if (*na==(float)(uint32)(*na)) ++ else if (*na >= 0 && *na <= (float)0xFFFFFFFFU && ++ *na==(float)(uint32)(*na)) + { + nb[0]=(uint32)(*na); + nb[1]=1; +Index: libtiff/libtiff/tif_dirread.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v +retrieving revision 1.205 +retrieving revision 1.206 +diff -u -r1.205 -r1.206 +--- libtiff/libtiff/tif_dirread.c 3 Dec 2016 11:02:15 -0000 1.205 ++++ libtiff/libtiff/tif_dirread.c 11 Jan 2017 13:28:01 -0000 1.206 +@@ -2872,7 +2872,10 @@ + m.l = direntry->tdir_offset.toff_long8; + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabArrayOfLong(m.i,2); +- if (m.i[0]==0) ++ /* Not completely sure what we should do when m.i[1]==0, but some */ ++ /* sanitizers do not like division by 0.0: */ ++ /* http://bugzilla.maptools.org/show_bug.cgi?id=2644 */ ++ if (m.i[0]==0 || m.i[1]==0) + *value=0.0; + else + *value=(double)m.i[0]/(double)m.i[1]; +@@ -2900,7 +2903,10 @@ + m.l=direntry->tdir_offset.toff_long8; + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabArrayOfLong(m.i,2); +- if ((int32)m.i[0]==0) ++ /* Not completely sure what we should do when m.i[1]==0, but some */ ++ /* sanitizers do not like division by 0.0: */ ++ /* http://bugzilla.maptools.org/show_bug.cgi?id=2644 */ ++ if ((int32)m.i[0]==0 || m.i[1]==0) + *value=0.0; + else + *value=(double)((int32)m.i[0])/(double)m.i[1]; +Index: libtiff/libtiff/tif_jpeg.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_jpeg.c,v +retrieving revision 1.125 +retrieving revision 1.126 +diff -u -r1.125 -r1.126 +--- libtiff/libtiff/tif_jpeg.c 11 Jan 2017 12:15:01 -0000 1.125 ++++ libtiff/libtiff/tif_jpeg.c 11 Jan 2017 16:13:50 -0000 1.126 +@@ -1,4 +1,4 @@ +-/* $Id: tif_jpeg.c,v 1.123 2016-01-23 21:20:34 erouault Exp $ */ ++/* $Id: tif_jpeg.c,v 1.126 2017-01-11 16:13:50 erouault Exp $ */ + + /* + * Copyright (c) 1994-1997 Sam Leffler +@@ -1632,6 +1632,13 @@ + "Invalig horizontal/vertical sampling value"); + return (0); + } ++ if( td->td_bitspersample > 16 ) ++ { ++ TIFFErrorExt(tif->tif_clientdata, module, ++ "BitsPerSample %d not allowed for JPEG", ++ td->td_bitspersample); ++ return (0); ++ } + + /* + * A ReferenceBlackWhite field *must* be present since the +Index: libtiff/libtiff/tif_read.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_read.c,v +retrieving revision 1.50 +retrieving revision 1.51 +diff -u -r1.50 -r1.51 +--- libtiff/libtiff/tif_read.c 2 Dec 2016 21:56:56 -0000 1.50 ++++ libtiff/libtiff/tif_read.c 11 Jan 2017 16:33:34 -0000 1.51 +@@ -420,16 +420,25 @@ + return ((tmsize_t)(-1)); + } + } else { +- tmsize_t ma,mb; ++ tmsize_t ma; + tmsize_t n; +- ma=(tmsize_t)td->td_stripoffset[strip]; +- mb=ma+size; +- if ((td->td_stripoffset[strip] > (uint64)TIFF_TMSIZE_T_MAX)||(ma>tif->tif_size)) +- n=0; +- else if ((mb<ma)||(mb<size)||(mb>tif->tif_size)) +- n=tif->tif_size-ma; +- else +- n=size; ++ if ((td->td_stripoffset[strip] > (uint64)TIFF_TMSIZE_T_MAX)|| ++ ((ma=(tmsize_t)td->td_stripoffset[strip])>tif->tif_size)) ++ { ++ n=0; ++ } ++ else if( ma > TIFF_TMSIZE_T_MAX - size ) ++ { ++ n=0; ++ } ++ else ++ { ++ tmsize_t mb=ma+size; ++ if (mb>tif->tif_size) ++ n=tif->tif_size-ma; ++ else ++ n=size; ++ } + if (n!=size) { + #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) + TIFFErrorExt(tif->tif_clientdata, module, diff --git a/gnu/packages/patches/libtirpc-CVE-2017-8779.patch b/gnu/packages/patches/libtirpc-CVE-2017-8779.patch new file mode 100644 index 0000000000..742e64df25 --- /dev/null +++ b/gnu/packages/patches/libtirpc-CVE-2017-8779.patch @@ -0,0 +1,263 @@ +Fix CVE-2017-8779: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779 + +Patch copied from the bug reporter's 3rd-party repository: + +https://github.com/guidovranken/rpcbomb/blob/master/libtirpc_patch.txt + +diff --git a/src/rpc_generic.c b/src/rpc_generic.c +index 2f09a8f..589cbd5 100644 +--- a/src/rpc_generic.c ++++ b/src/rpc_generic.c +@@ -615,6 +615,9 @@ __rpc_taddr2uaddr_af(int af, const struct netbuf *nbuf) + + switch (af) { + case AF_INET: ++ if (nbuf->len < sizeof(*sin)) { ++ return NULL; ++ } + sin = nbuf->buf; + if (inet_ntop(af, &sin->sin_addr, namebuf, sizeof namebuf) + == NULL) +@@ -626,6 +629,9 @@ __rpc_taddr2uaddr_af(int af, const struct netbuf *nbuf) + break; + #ifdef INET6 + case AF_INET6: ++ if (nbuf->len < sizeof(*sin6)) { ++ return NULL; ++ } + sin6 = nbuf->buf; + if (inet_ntop(af, &sin6->sin6_addr, namebuf6, sizeof namebuf6) + == NULL) +@@ -667,6 +673,8 @@ __rpc_uaddr2taddr_af(int af, const char *uaddr) + + port = 0; + sin = NULL; ++ if (uaddr == NULL) ++ return NULL; + addrstr = strdup(uaddr); + if (addrstr == NULL) + return NULL; +diff --git a/src/rpcb_prot.c b/src/rpcb_prot.c +index 43fd385..a923c8e 100644 +--- a/src/rpcb_prot.c ++++ b/src/rpcb_prot.c +@@ -41,6 +41,7 @@ + #include <rpc/types.h> + #include <rpc/xdr.h> + #include <rpc/rpcb_prot.h> ++#include "rpc_com.h" + + bool_t + xdr_rpcb(xdrs, objp) +@@ -53,13 +54,13 @@ xdr_rpcb(xdrs, objp) + if (!xdr_u_int32_t(xdrs, &objp->r_vers)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_netid, RPC_MAXDATASIZE)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_addr, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_addr, RPC_MAXDATASIZE)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_owner, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_owner, RPC_MAXDATASIZE)) { + return (FALSE); + } + return (TRUE); +@@ -159,19 +160,19 @@ xdr_rpcb_entry(xdrs, objp) + XDR *xdrs; + rpcb_entry *objp; + { +- if (!xdr_string(xdrs, &objp->r_maddr, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_maddr, RPC_MAXDATASIZE)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_nc_netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_nc_netid, RPC_MAXDATASIZE)) { + return (FALSE); + } + if (!xdr_u_int32_t(xdrs, &objp->r_nc_semantics)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_nc_protofmly, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_nc_protofmly, RPC_MAXDATASIZE)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->r_nc_proto, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->r_nc_proto, RPC_MAXDATASIZE)) { + return (FALSE); + } + return (TRUE); +@@ -292,7 +293,7 @@ xdr_rpcb_rmtcallres(xdrs, p) + bool_t dummy; + struct r_rpcb_rmtcallres *objp = (struct r_rpcb_rmtcallres *)(void *)p; + +- if (!xdr_string(xdrs, &objp->addr, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->addr, RPC_MAXDATASIZE)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->results.results_len)) { +@@ -312,6 +313,11 @@ xdr_netbuf(xdrs, objp) + if (!xdr_u_int32_t(xdrs, (u_int32_t *) &objp->maxlen)) { + return (FALSE); + } ++ ++ if (objp->maxlen > RPC_MAXDATASIZE) { ++ return (FALSE); ++ } ++ + dummy = xdr_bytes(xdrs, (char **)&(objp->buf), + (u_int *)&(objp->len), objp->maxlen); + return (dummy); +diff --git a/src/rpcb_st_xdr.c b/src/rpcb_st_xdr.c +index 08db745..28e6a48 100644 +--- a/src/rpcb_st_xdr.c ++++ b/src/rpcb_st_xdr.c +@@ -37,6 +37,7 @@ + + + #include <rpc/rpc.h> ++#include "rpc_com.h" + + /* Link list of all the stats about getport and getaddr */ + +@@ -58,7 +59,7 @@ xdr_rpcbs_addrlist(xdrs, objp) + if (!xdr_int(xdrs, &objp->failure)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) { + return (FALSE); + } + +@@ -109,7 +110,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp) + IXDR_PUT_INT32(buf, objp->failure); + IXDR_PUT_INT32(buf, objp->indirect); + } +- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) { + return (FALSE); + } + if (!xdr_pointer(xdrs, (char **)&objp->next, +@@ -147,7 +148,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp) + objp->failure = (int)IXDR_GET_INT32(buf); + objp->indirect = (int)IXDR_GET_INT32(buf); + } +- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) { + return (FALSE); + } + if (!xdr_pointer(xdrs, (char **)&objp->next, +@@ -175,7 +176,7 @@ xdr_rpcbs_rmtcalllist(xdrs, objp) + if (!xdr_int(xdrs, &objp->indirect)) { + return (FALSE); + } +- if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { ++ if (!xdr_string(xdrs, &objp->netid, RPC_MAXDATASIZE)) { + return (FALSE); + } + if (!xdr_pointer(xdrs, (char **)&objp->next, +diff --git a/src/xdr.c b/src/xdr.c +index f3fb9ad..b9a1558 100644 +--- a/src/xdr.c ++++ b/src/xdr.c +@@ -42,8 +42,10 @@ + #include <stdlib.h> + #include <string.h> + ++#include <rpc/rpc.h> + #include <rpc/types.h> + #include <rpc/xdr.h> ++#include <rpc/rpc_com.h> + + typedef quad_t longlong_t; /* ANSI long long type */ + typedef u_quad_t u_longlong_t; /* ANSI unsigned long long type */ +@@ -53,7 +55,6 @@ typedef u_quad_t u_longlong_t; /* ANSI unsigned long long type */ + */ + #define XDR_FALSE ((long) 0) + #define XDR_TRUE ((long) 1) +-#define LASTUNSIGNED ((u_int) 0-1) + + /* + * for unit alignment +@@ -629,6 +630,7 @@ xdr_bytes(xdrs, cpp, sizep, maxsize) + { + char *sp = *cpp; /* sp is the actual string pointer */ + u_int nodesize; ++ bool_t ret, allocated = FALSE; + + /* + * first deal with the length since xdr bytes are counted +@@ -652,6 +654,7 @@ xdr_bytes(xdrs, cpp, sizep, maxsize) + } + if (sp == NULL) { + *cpp = sp = mem_alloc(nodesize); ++ allocated = TRUE; + } + if (sp == NULL) { + warnx("xdr_bytes: out of memory"); +@@ -660,7 +663,14 @@ xdr_bytes(xdrs, cpp, sizep, maxsize) + /* FALLTHROUGH */ + + case XDR_ENCODE: +- return (xdr_opaque(xdrs, sp, nodesize)); ++ ret = xdr_opaque(xdrs, sp, nodesize); ++ if ((xdrs->x_op == XDR_DECODE) && (ret == FALSE)) { ++ if (allocated == TRUE) { ++ free(sp); ++ *cpp = NULL; ++ } ++ } ++ return (ret); + + case XDR_FREE: + if (sp != NULL) { +@@ -754,6 +764,7 @@ xdr_string(xdrs, cpp, maxsize) + char *sp = *cpp; /* sp is the actual string pointer */ + u_int size; + u_int nodesize; ++ bool_t ret, allocated = FALSE; + + /* + * first deal with the length since xdr strings are counted-strings +@@ -793,8 +804,10 @@ xdr_string(xdrs, cpp, maxsize) + switch (xdrs->x_op) { + + case XDR_DECODE: +- if (sp == NULL) ++ if (sp == NULL) { + *cpp = sp = mem_alloc(nodesize); ++ allocated = TRUE; ++ } + if (sp == NULL) { + warnx("xdr_string: out of memory"); + return (FALSE); +@@ -803,7 +816,14 @@ xdr_string(xdrs, cpp, maxsize) + /* FALLTHROUGH */ + + case XDR_ENCODE: +- return (xdr_opaque(xdrs, sp, size)); ++ ret = xdr_opaque(xdrs, sp, size); ++ if ((xdrs->x_op == XDR_DECODE) && (ret == FALSE)) { ++ if (allocated == TRUE) { ++ free(sp); ++ *cpp = NULL; ++ } ++ } ++ return (ret); + + case XDR_FREE: + mem_free(sp, nodesize); +@@ -823,7 +843,7 @@ xdr_wrapstring(xdrs, cpp) + XDR *xdrs; + char **cpp; + { +- return xdr_string(xdrs, cpp, LASTUNSIGNED); ++ return xdr_string(xdrs, cpp, RPC_MAXDATASIZE); + } + + /* diff --git a/gnu/packages/patches/lierolibre-check-unaligned-access.patch b/gnu/packages/patches/lierolibre-check-unaligned-access.patch new file mode 100644 index 0000000000..b720c9eb3b --- /dev/null +++ b/gnu/packages/patches/lierolibre-check-unaligned-access.patch @@ -0,0 +1,30 @@ +Patch copied from Debian: + +https://anonscm.debian.org/cgit/pkg-games/lierolibre.git/tree/debian/patches/0001-Use-unaligned-access-define-over-checking-arch.patch?id=82910748906855f6e6bfe30b3f077e8c793ae424 + +From 396f19b6b7743d394307f70f0c0108419824437b Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner <martinerikwerner@gmail.com> +Date: Sun, 28 Jun 2015 16:31:34 +0200 +Subject: [PATCH 1/3] Use unaligned access define over checking arch + +This todo item seems like it done, and just needed implementing... +--- + io/encoding.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gvl/io/encoding.hpp b/src/gvl/io/encoding.hpp +index c491677..89bb612 100644 +--- a/src/gvl/io/encoding.hpp ++++ b/src/gvl/io/encoding.hpp +@@ -374,7 +374,7 @@ struct octet_stream_writer + // inlining of the common case + if(std::size_t(end_ - cur_) >= len) + { +-#if GVL_X86 || GVL_X86_64 // TODO: A define that says whether unaligned access is allowed ++#if GVL_UNALIGNED_ACCESS + if(len < 64) // TODO: Tweak this limit + { + while(len > 4) +-- +2.4.6 + diff --git a/gnu/packages/patches/lierolibre-is-free-software.patch b/gnu/packages/patches/lierolibre-is-free-software.patch new file mode 100644 index 0000000000..626a24dd8c --- /dev/null +++ b/gnu/packages/patches/lierolibre-is-free-software.patch @@ -0,0 +1,38 @@ +Remove outdated license text. See COPYING and the description +at http://liero.be/ for more information. + +--- a/data/LIEROENG.TXT ++++ b/data/LIEROENG.TXT +@@ -11,14 +11,6 @@ + ----------------------------------------------------------------------------- + + GENERAL STUFF +- +- Liero is freeware. What that means is that you don't have to pay +- for it and using it has not been restricted in any way. You may +- distribute it to anyone and anyhow WITHOUT ANY CHANGES MADE TO IT'S +- CONTAINMENTS. +- +- The source code of this game is not distributed freely (neither +- commercially). So if you thought that maybe you could... forget it. + + Liero is a wormgame with weapons for 2 players. The object of the + game is definately what you think it is. Liero is excellent for +--- a/data/LIERO.TXT ++++ b/data/LIERO.TXT +@@ -12,15 +12,6 @@ + + YLEIST + +- Liero on freeware, mik tarkoittaa ett sen kytst ei tarvitse +- maksaa mitn eik kytt ole rajoitettu mitenkn. Lieroa saa +- kopioida kelle tahansa ja miten tahansa SISLT MITENKN +- MUUTTAMATTA. +- +- Todettakoon tss ett Lieron lhdekoodi ei ole vapaassa (sen +- enenp kuin kaupallisessakaan) jakelussa. Joten jos ajattelit +- ett... niin jt ajatukset sikseen. +- + Liero on kahden pelattava aseellinen matosimulaatiopeli. Pelin + pmrn on epilemtt se mit luuletkin. Liero sopii + erinomaisen hyvin aggressioiden purkuun ja kaverin rokittmiseen diff --git a/gnu/packages/patches/lierolibre-newer-libconfig.patch b/gnu/packages/patches/lierolibre-newer-libconfig.patch new file mode 100644 index 0000000000..662d0f90fa --- /dev/null +++ b/gnu/packages/patches/lierolibre-newer-libconfig.patch @@ -0,0 +1,190 @@ +Fix compatibility with newer libconfig. + +Patch copied from upstream source repository: + +https://gitlab.com/lierolibre/lierolibre/commit/b27e3604aa6bfbfcc50db1000b394d06c87ae2f2 + +diff --git a/src/common.cpp b/src/common.cpp +index 2d6ada5..4942b05 100644 +--- a/src/common.cpp ++++ b/src/common.cpp +@@ -162,7 +162,7 @@ void Texts::loadFromCFG(std::string cfgFilePath) + const libconfig::Setting &sgmodes = texts["gameModes"]; + for(int i = 0; i < 4; ++i) + { +- gameModes[i] = (char const*)sgmodes["gameModes" + to_string(i)]; ++ gameModes[i] = (char const*)sgmodes[("gameModes" + to_string(i)).c_str()]; + } + + const libconfig::Setting &sgmspec = texts["gameModeSpec"]; +@@ -181,13 +181,13 @@ void Texts::loadFromCFG(std::string cfgFilePath) + const libconfig::Setting &swstates = texts["weapStates"]; + for(int i = 0; i < 3; ++i) + { +- weapStates[i] = (char const*)swstates["weapStates" + to_string(i)]; ++ weapStates[i] = (char const*)swstates[("weapStates" + to_string(i)).c_str()]; + } + + const libconfig::Setting &sknames = texts["keyNames"]; + for(int i = 1; i < 177; ++i) // First key starts at 1 + { +- keyNames[i] = (char const*)sknames["keyNames" + to_string(i)]; ++ keyNames[i] = (char const*)sknames[("keyNames" + to_string(i)).c_str()]; + } + + selWeap = (char const*)texts["selWeap"]; +@@ -315,8 +315,8 @@ void Common::loadPaletteFromCFG(std::string cfgFilePath) + const libconfig::Setting &scanim = palette["colorAnim"]; + for(int i = 0; i < 4; ++i) + { +- colorAnim[i].from = (int)scanim["colorAnim" + to_string(i) + "from"]; +- colorAnim[i].to = (int)scanim["colorAnim" + to_string(i) + "to"]; ++ colorAnim[i].from = (int)scanim[("colorAnim" + to_string(i) + "from").c_str()]; ++ colorAnim[i].to = (int)scanim[("colorAnim" + to_string(i) + "to").c_str()]; + } + } + +@@ -383,7 +383,7 @@ void Common::loadMaterialsFromCFG(std::string cfgFilePath) + + for(int i = 0; i < 256; ++i) + { +- const libconfig::Setting &smflags = smaterials["flags" + to_string(i)]; ++ const libconfig::Setting &smflags = smaterials[("flags" + to_string(i)).c_str()]; + materials[i].flags = smflags; + } + } +diff --git a/src/configCompat.cpp b/src/configCompat.cpp +index 1aeb262..a72c40f 100644 +--- a/src/configCompat.cpp ++++ b/src/configCompat.cpp +@@ -160,19 +160,19 @@ void Common::loadConstantsFromCFGVer0(string cfgFilePath) + const Setting &vconstants = constants["Values"]; + for(int i = 0; i < MaxC; ++i) + { +- C[i] = (int)vconstants[valueConstantsNamesCFGVer0[i]]; ++ C[i] = (int)vconstants[valueConstantsNamesCFGVer0[i].c_str()]; + } + + const Setting &sconstants = constants["Strings"]; + for(int i = 0; i < MaxS; ++i) + { +- S[i]= (char const*)sconstants[stringConstantsNamesCFGVer0[i]]; ++ S[i]= (char const*)sconstants[stringConstantsNamesCFGVer0[i].c_str()]; + } + + const Setting &hconstants = constants["Hacks"]; + for(int i = 0; i < MaxH; ++i) + { +- H[i] = (bool)hconstants[hackConstantsNamesVer0[i]]; ++ H[i] = (bool)hconstants[hackConstantsNamesVer0[i].c_str()]; + } + } + +diff --git a/src/configHelper.cpp b/src/configHelper.cpp +index fcd1f3f..a63bddc 100644 +--- a/src/configHelper.cpp ++++ b/src/configHelper.cpp +@@ -54,15 +54,11 @@ template Uint8 ConfigHelper::getValue<Uint8, const Setting, int>(const Setting & + + template Uint8 ConfigHelper::getValue<Uint8, const Setting, char const*>(const Setting &node, char const* index); + +-template Uint8 ConfigHelper::getValue<Uint8, const Setting, string>(const Setting &node, string index); +- + // Non-const + template Uint8 ConfigHelper::getValue<Uint8, Setting, int>(Setting &node, int index); + + template Uint8 ConfigHelper::getValue<Uint8, Setting, char const*>(Setting &node, char const* index); + +-template Uint8 ConfigHelper::getValue<Uint8, Setting, string>(Setting &node, string index); +- + + // Since we still need specialisation per value type (Setting::Type), + // no need to templateify these +@@ -72,7 +68,7 @@ void ConfigHelper::put(Setting &node, string variable, string value) + { + node.add(variable, Setting::TypeString) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -83,7 +79,7 @@ void ConfigHelper::put(Setting &node, string variable, int value) + { + node.add(variable, Setting::TypeInt) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -94,7 +90,7 @@ void ConfigHelper::put(Setting &node, string variable, Uint8 value) + { + node.add(variable, Setting::TypeInt) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -105,7 +101,7 @@ void ConfigHelper::put(Setting &node, string variable, bool value) + { + node.add(variable, Setting::TypeBoolean) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -135,6 +131,6 @@ Setting& ConfigHelper::getSubgroup(Setting &node, string groupName) + { + node.add(groupName, Setting::TypeGroup); + } +- return node[groupName]; ++ return node[groupName.c_str()]; + } + +diff --git a/src/constants.cpp b/src/constants.cpp +index 7fced6a..cf7bbfc 100644 +--- a/src/constants.cpp ++++ b/src/constants.cpp +@@ -523,19 +523,19 @@ void Common::loadConstantsFromCFG(std::string cfgFilePath) + const libconfig::Setting &vconstants = constants["Values"]; + for(int i = 0; i < MaxC; ++i) + { +- C[i] = (int)vconstants[valueConstantsNames[i]]; ++ C[i] = (int)vconstants[valueConstantsNames[i].c_str()]; + } + + const libconfig::Setting &sconstants = constants["Strings"]; + for(int i = 0; i < MaxS; ++i) + { +- S[i]= (char const*)sconstants[stringConstantsNames[i]]; ++ S[i]= (char const*)sconstants[stringConstantsNames[i].c_str()]; + } + + const libconfig::Setting &hconstants = constants["Hacks"]; + for(int i = 0; i < MaxH; ++i) + { +- H[i] = (bool)hconstants[hackConstantsNames[i]]; ++ H[i] = (bool)hconstants[hackConstantsNames[i].c_str()]; + } + } + +diff --git a/src/gfx/palette.cpp b/src/gfx/palette.cpp +index 3fd08c4..3d3bf22 100644 +--- a/src/gfx/palette.cpp ++++ b/src/gfx/palette.cpp +@@ -124,9 +124,9 @@ void Palette::readFromCFG(std::string cfgFilePath) + + for(int i = 0; i < 256; ++i) + { +- entries[i].r = cfgHelp.getValue<Uint8>(spentries, "entries" + to_string(i) + "r"); +- entries[i].g = cfgHelp.getValue<Uint8>(spentries, "entries" + to_string(i) + "g"); +- entries[i].b = cfgHelp.getValue<Uint8>(spentries, "entries" + to_string(i) + "b"); ++ entries[i].r = cfgHelp.getValue<Uint8>(spentries, ("entries" + to_string(i) + "r").c_str()); ++ entries[i].g = cfgHelp.getValue<Uint8>(spentries, ("entries" + to_string(i) + "g").c_str()); ++ entries[i].b = cfgHelp.getValue<Uint8>(spentries, ("entries" + to_string(i) + "b").c_str()); + } + } + diff --git a/gnu/packages/patches/lierolibre-remove-arch-warning.patch b/gnu/packages/patches/lierolibre-remove-arch-warning.patch new file mode 100644 index 0000000000..ca92b72546 --- /dev/null +++ b/gnu/packages/patches/lierolibre-remove-arch-warning.patch @@ -0,0 +1,30 @@ +Copied from Debian: + +https://anonscm.debian.org/cgit/pkg-games/lierolibre.git/tree/debian/patches/0003-Remove-unknown-arch-warning.patch?id=82910748906855f6e6bfe30b3f077e8c793ae424 + +From a9592533eeabed075b13d11c64f63f503dc13343 Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner <martinerikwerner@gmail.com> +Date: Sun, 28 Jun 2015 19:31:30 +0200 +Subject: [PATCH 3/3] Remove unknown arch warning + +The warning was just excessivley spammy, remove it. +--- + support/platform.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/gvl/support/platform.h b/src/gvl/support/platform.h +index 1857b7c..ff6a7d2 100644 +--- a/src/gvl/support/platform.h ++++ b/src/gvl/support/platform.h +@@ -87,8 +87,6 @@ + # define GVL_X86_64 1 + # elif defined(__i386__) || defined(_M_IX86) || defined(i386) || defined(i486) || defined(intel) || defined(x86) || defined(i86pc) + # define GVL_X86 1 +-# else +-# warning "Unknown architecture, please add it" + # endif + #endif + +-- +2.4.6 + diff --git a/gnu/packages/patches/lierolibre-try-building-other-arch.patch b/gnu/packages/patches/lierolibre-try-building-other-arch.patch new file mode 100644 index 0000000000..a40dfe6110 --- /dev/null +++ b/gnu/packages/patches/lierolibre-try-building-other-arch.patch @@ -0,0 +1,56 @@ +Copied from Debian: + +https://anonscm.debian.org/cgit/pkg-games/lierolibre.git/tree/debian/patches/0001-Use-unaligned-access-define-over-checking-arch.patch?id=82910748906855f6e6bfe30b3f077e8c793ae424 + +From a70691fb003cae1a33f06d682269285f9baa2dd9 Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner <martinerikwerner@gmail.com> +Date: Sun, 28 Jun 2015 19:00:23 +0200 +Subject: [PATCH 2/3] At least try building for other archs than x86* + +Allow attempting to build for other architectures than x86 and x86_64, +whether or not the build will succeed or produce sane output is another +question... It emits plenty of warnings about it now though... + +Configuration of the FPU controller is disabled on all but x86*, and the +uninformed hope and prayer is that defaults will be fine without messing +with them. +--- + math/ieee.cpp | 2 ++ + support/platform.h | 4 ++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/gvl/math/ieee.cpp b/src/gvl/math/ieee.cpp +index 8b740d4..e0803d2 100644 +--- a/src/gvl/math/ieee.cpp ++++ b/src/gvl/math/ieee.cpp +@@ -54,6 +54,8 @@ void gvl_init_ieee() + { + #if GVL_MSVCPP + // Nothing needs to be done, TODO: we should however check that the x87 state is right ++#elif !GVL_X86 && !GVL_X86_64 ++// No idea what to do, but run with defaults and pray it doesn't mess things up + #elif GVL_GCC && GVL_WIN32 + unsigned int const flags = _RC_NEAR | _PC_53 | _EM_INVALID | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_OVERFLOW | _EM_UNDERFLOW | _EM_INEXACT; + _control87(flags, _MCW_EM | _MCW_PC | _MCW_RC); +diff --git a/src/gvl/support/platform.h b/src/gvl/support/platform.h +index 86dcaa6..1857b7c 100644 +--- a/src/gvl/support/platform.h ++++ b/src/gvl/support/platform.h +@@ -88,12 +88,12 @@ + # elif defined(__i386__) || defined(_M_IX86) || defined(i386) || defined(i486) || defined(intel) || defined(x86) || defined(i86pc) + # define GVL_X86 1 + # else +-# error "Unknown architecture, please add it" ++# warning "Unknown architecture, please add it" + # endif + #endif + + #if !GVL_LITTLE_ENDIAN && !GVL_BIG_ENDIAN +-# if GVL_X86 || GVL_X86_64 ++# if GVL_X86 || GVL_X86_64 || __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN + # define GVL_LITTLE_ENDIAN 1 + # else + # define GVL_BIG_ENDIAN 1 +-- +2.4.6 + diff --git a/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch b/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch new file mode 100644 index 0000000000..faa8252c43 --- /dev/null +++ b/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch @@ -0,0 +1,35 @@ +This patch was downloaded from https://sft.its.cern.ch/jira/browse/ROOT-7047. +It fixes the build of clang 3.5 with GCC 5. File paths have been adjusted. + +From 00f3ed6eee41da871799ad0fd19153c7682d61fe Mon Sep 17 00:00:00 2001 +From: Alexander Klimov <alserkli@inbox.ru> +Date: Mon, 26 Jan 2015 18:45:23 +0200 +Subject: [PATCH] [ADT/IntrusiveRefCntPtr] Give friend access to + IntrusiveRefCntPtr<X> so the relevant move constructor can + access 'Obj'. + +From LLVM upstream: +Author: Argyrios Kyrtzidis <akyrtzi@gmail.com> +Date: Tue Sep 23 06:06:43 2014 +0000 +git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218295 91177308-0d34-0410-b5e6-96231b3b80d8 +--- + interpreter/llvm/src/include/llvm/ADT/IntrusiveRefCntPtr.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/llvm/ADT/IntrusiveRefCntPtr.h b/include/llvm/ADT/IntrusiveRefCntPtr.h +index f9df378..c859c98 100644 +--- a/include/llvm/ADT/IntrusiveRefCntPtr.h ++++ b/include/llvm/ADT/IntrusiveRefCntPtr.h +@@ -197,6 +197,9 @@ public: + private: + void retain() { if (Obj) IntrusiveRefCntPtrInfo<T>::retain(Obj); } + void release() { if (Obj) IntrusiveRefCntPtrInfo<T>::release(Obj); } ++ ++ template <typename X> ++ friend class IntrusiveRefCntPtr; + }; + + template<class T, class U> +-- +1.7.10.4 + diff --git a/gnu/packages/patches/luminance-hdr-qt-printer.patch b/gnu/packages/patches/luminance-hdr-qt-printer.patch new file mode 100644 index 0000000000..c65f9537cd --- /dev/null +++ b/gnu/packages/patches/luminance-hdr-qt-printer.patch @@ -0,0 +1,28 @@ +Allow the 'QtPrinter' header to be found, as described +at <https://github.com/LuminanceHDR/LuminanceHDR/issues/11>. + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fbad8a2..8379c8a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -29,6 +29,7 @@ find_package(Qt5Xml) + find_package(Qt5Sql) + find_package(Qt5Network) + find_package(Qt5LinguistTools) ++find_package(Qt5PrintSupport REQUIRED) + IF(WIN32) + find_package(Qt5WinExtras) + ENDIF() +diff --git a/src/HelpBrowser/CMakeLists.txt b/src/HelpBrowser/CMakeLists.txt +index 04319a8..5537dae 100644 +--- a/src/HelpBrowser/CMakeLists.txt ++++ b/src/HelpBrowser/CMakeLists.txt +@@ -29,7 +29,7 @@ QT5_WRAP_UI(FILES_UI_H ${FILES_UI}) + + + ADD_LIBRARY(helpbrowser ${FILES_H} ${FILES_CPP} ${FILES_MOC} ${FILES_UI_H} ${FILES_HXX}) +-qt5_use_modules(helpbrowser Core Concurrent Gui Widgets Xml WebKit WebKitWidgets) ++qt5_use_modules(helpbrowser Core Concurrent Gui Widgets Xml WebKit WebKitWidgets PrintSupport) + + SET(FILES_TO_TRANSLATE ${FILES_TO_TRANSLATE} ${FILES_CPP} ${FILES_H} ${FILES_UI} ${FILES_HXX} PARENT_SCOPE) + SET(LUMINANCE_MODULES_GUI ${LUMINANCE_MODULES_GUI} helpbrowser PARENT_SCOPE) diff --git a/gnu/packages/patches/lvm2-static-link.patch b/gnu/packages/patches/lvm2-static-link.patch index b4b1dd92e1..6adf6891bb 100644 --- a/gnu/packages/patches/lvm2-static-link.patch +++ b/gnu/packages/patches/lvm2-static-link.patch @@ -1,5 +1,5 @@ Fix static linking of 'lvm.static', which indirectly depend on libpthread -via libdevmapper.a. +and libm via libdevmapper.a. --- LVM2.2.02.166/tools/Makefile.in 2016-11-22 21:31:15.521045149 +0100 +++ LVM2.2.02.166/tools/Makefile.in 2016-11-22 21:31:24.085082767 +0100 @@ -8,7 +8,7 @@ via libdevmapper.a. lvm.static: $(OBJECTS) lvm-static.o $(top_builddir)/lib/liblvm-internal.a $(interfacebuilddir)/libdevmapper.a $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) -o $@ \ - $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS) -+ $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS) $(PTHREAD_LIBS) ++ $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS) $(PTHREAD_LIBS) $(M_LIBS) liblvm2cmd.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o cat $(top_builddir)/lib/liblvm-internal.a > $@ diff --git a/gnu/packages/patches/lxterminal-CVE-2016-10369.patch b/gnu/packages/patches/lxterminal-CVE-2016-10369.patch new file mode 100644 index 0000000000..809eef08da --- /dev/null +++ b/gnu/packages/patches/lxterminal-CVE-2016-10369.patch @@ -0,0 +1,37 @@ +Fix CVE-2016-10369: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10369 + +Patch copied from upstream source repository: + +https://git.lxde.org/gitweb/?p=lxde/lxterminal.git;a=commit;h=f99163c6ff8b2f57c5f37b1ce5d62cf7450d4648 + +From f99163c6ff8b2f57c5f37b1ce5d62cf7450d4648 Mon Sep 17 00:00:00 2001 +From: Yao Wei <mwei@lxde.org> +Date: Mon, 8 May 2017 00:47:55 +0800 +Subject: [PATCH] fix: use g_get_user_runtime_dir for socket directory + +This bug is pointed out by stackexchange user that putting socket file in +/tmp is a potential risk. Putting the socket dir in user directory could +mitigate the risk. +--- + src/unixsocket.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/unixsocket.c b/src/unixsocket.c +index 4c660ac..f88284c 100644 +--- a/src/unixsocket.c ++++ b/src/unixsocket.c +@@ -140,7 +140,8 @@ gboolean lxterminal_socket_initialize(LXTermWindow * lxtermwin, gint argc, gchar + * This function returns TRUE if this process should keep running and FALSE if it should exit. */ + + /* Formulate the path for the Unix domain socket. */ +- gchar * socket_path = g_strdup_printf("/tmp/.lxterminal-socket%s-%s", gdk_display_get_name(gdk_display_get_default()), g_get_user_name()); ++ gchar * socket_path = g_strdup_printf("%s/.lxterminal-socket-%s", g_get_user_runtime_dir(), gdk_display_get_name(gdk_display_get_default())); ++ printf("%s\n", socket_path); + + /* Create socket. */ + int fd = socket(PF_UNIX, SOCK_STREAM, 0); +-- +2.1.4 + diff --git a/gnu/packages/patches/lz4-fix-test-failures.patch b/gnu/packages/patches/lz4-fix-test-failures.patch new file mode 100644 index 0000000000..d38357d402 --- /dev/null +++ b/gnu/packages/patches/lz4-fix-test-failures.patch @@ -0,0 +1,136 @@ +These two patches fix some bugs in lz4's test suite: + +https://github.com/lz4/lz4/issues/308 + +Patches copied from upstream source repository: + +https://github.com/lz4/lz4/commit/b89cac7b2e92b792af98bb0a12e4d14684d07629 +https://github.com/lz4/lz4/commit/0dfb0b9dad2a8cb7cc347d2139bf9b84de7e1481 + +From b89cac7b2e92b792af98bb0a12e4d14684d07629 Mon Sep 17 00:00:00 2001 +From: Eric Siegerman <pub08-git@davor.org> +Date: Tue, 14 Feb 2017 14:17:06 -0500 +Subject: [PATCH] Don't use "foo && false || true" + +Replace it with either: + test ! -f $FILE_THAT_SHOULD_NOT_EXIST +or: + ! $COMMAND_THAT_SHOULD_FAIL + +as appropriate. +--- + tests/Makefile | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +diff --git a/tests/Makefile b/tests/Makefile +index 77e6ae7..ebab278 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -236,17 +236,17 @@ test-lz4-basic: lz4 datagen unlz4 lz4cat + ./datagen -g256MB | $(LZ4) -vqB4D | $(LZ4) -t + @echo "hello world" > tmp + $(LZ4) --rm -f tmp +- ls -ls tmp && false || true # must fail (--rm) +- ls -ls tmp.lz4 +- $(PRGDIR)/lz4cat tmp.lz4 # must display hello world +- ls -ls tmp.lz4 ++ test ! -f tmp # must fail (--rm) ++ test -f tmp.lz4 ++ $(PRGDIR)/lz4cat tmp.lz4 # must display hello world ++ test -f tmp.lz4 + $(PRGDIR)/unlz4 --rm tmp.lz4 +- ls -ls tmp +- ls -ls tmp.lz4 && false || true # must fail (--rm) +- ls -ls tmp.lz4.lz4 && false || true # must fail (unlz4) +- $(PRGDIR)/lz4cat tmp # pass-through mode +- ls -ls tmp +- ls -ls tmp.lz4 && false || true # must fail (lz4cat) ++ test -f tmp ++ test ! -f tmp.lz4 # must fail (--rm) ++ test ! -f tmp.lz4.lz4 # must fail (unlz4) ++ $(PRGDIR)/lz4cat tmp # pass-through mode ++ test -f tmp ++ test ! -f tmp.lz4 # must fail (lz4cat) + $(LZ4) tmp # creates tmp.lz4 + $(PRGDIR)/lz4cat < tmp.lz4 > tmp3 # checks lz4cat works with stdin (#285) + $(DIFF) -q tmp tmp3 +@@ -262,22 +262,22 @@ test-lz4-hugefile: lz4 datagen + + test-lz4-testmode: lz4 datagen + @echo "\n ---- bench mode ----" +- $(LZ4) -bi1 ++ $(LZ4) -bi1 + @echo "\n ---- test mode ----" +- ./datagen | $(LZ4) -t && false || true +- ./datagen | $(LZ4) -tf && false || true ++ ! ./datagen | $(LZ4) -t ++ ! ./datagen | $(LZ4) -tf + @echo "\n ---- pass-through mode ----" +- ./datagen | $(LZ4) -d > $(VOID) && false || true +- ./datagen | $(LZ4) -df > $(VOID) ++ ! ./datagen | $(LZ4) -d > $(VOID) ++ ./datagen | $(LZ4) -df > $(VOID) + @echo "Hello World !" > tmp1 + $(LZ4) -dcf tmp1 + @echo "from underground..." > tmp2 + $(LZ4) -dcfm tmp1 tmp2 + @echo "\n ---- test cli ----" +- $(LZ4) file-does-not-exist && false || true +- $(LZ4) -f file-does-not-exist && false || true +- $(LZ4) -fm file1-dne file2-dne && false || true +- $(LZ4) -fm file1-dne file2-dne && false || true ++ ! $(LZ4) file-does-not-exist ++ ! $(LZ4) -f file-does-not-exist ++ ! $(LZ4) -fm file1-dne file2-dne ++ ! $(LZ4) -fm file1-dne file2-dne + + test-lz4-opt-parser: lz4 datagen + @echo "\n ---- test opt-parser ----" +-- +2.12.2 + +From 0dfb0b9dad2a8cb7cc347d2139bf9b84de7e1481 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" <ldv@altlinux.org> +Date: Sun, 5 Mar 2017 23:20:10 +0000 +Subject: [PATCH] Fix test-lz4-basic + +When no output filename is specified and stdout is not a terminal, +lz4 doesn't attempt to guess an output filename and uses stdout for +output. + +This change fixes test-lz4-basic when run without a terminal +by specifying output filenames. +--- + tests/Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/Makefile b/tests/Makefile +index ebab278..d68c700 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -235,19 +235,19 @@ test-lz4-basic: lz4 datagen unlz4 lz4cat + ./datagen -g33M | $(LZ4) --no-frame-crc | $(LZ4) -t + ./datagen -g256MB | $(LZ4) -vqB4D | $(LZ4) -t + @echo "hello world" > tmp +- $(LZ4) --rm -f tmp ++ $(LZ4) --rm -f tmp tmp.lz4 + test ! -f tmp # must fail (--rm) + test -f tmp.lz4 + $(PRGDIR)/lz4cat tmp.lz4 # must display hello world + test -f tmp.lz4 +- $(PRGDIR)/unlz4 --rm tmp.lz4 ++ $(PRGDIR)/unlz4 --rm tmp.lz4 tmp + test -f tmp + test ! -f tmp.lz4 # must fail (--rm) + test ! -f tmp.lz4.lz4 # must fail (unlz4) + $(PRGDIR)/lz4cat tmp # pass-through mode + test -f tmp + test ! -f tmp.lz4 # must fail (lz4cat) +- $(LZ4) tmp # creates tmp.lz4 ++ $(LZ4) tmp tmp.lz4 # creates tmp.lz4 + $(PRGDIR)/lz4cat < tmp.lz4 > tmp3 # checks lz4cat works with stdin (#285) + $(DIFF) -q tmp tmp3 + $(PRGDIR)/lz4cat < tmp > tmp2 # checks lz4cat works with stdin (#285) +-- +2.12.2 + diff --git a/gnu/packages/patches/mesa-fix-32bit-test-failures.patch b/gnu/packages/patches/mesa-fix-32bit-test-failures.patch new file mode 100644 index 0000000000..e21e87cef6 --- /dev/null +++ b/gnu/packages/patches/mesa-fix-32bit-test-failures.patch @@ -0,0 +1,58 @@ +Fix a test failure when building for 32 bit architectures: + +http://lists.gnu.org/archive/html/guix-devel/2017-04/msg00381.html + +Patch copied from upstream source repository: + +https://cgit.freedesktop.org/mesa/mesa/commit/?id=61bbb25a080e48a8ca897ba7f6e73cc6a8e9b5b8 + +From 61bbb25a080e48a8ca897ba7f6e73cc6a8e9b5b8 Mon Sep 17 00:00:00 2001 +From: Grazvydas Ignotas <notasas@gmail.com> +Date: Thu, 9 Mar 2017 02:54:53 +0200 +Subject: [PATCH] util/disk_cache: fix size subtraction on 32bit + +Negating size_t on 32bit produces a 32bit result. This was effectively +adding values close to UINT_MAX to the cache size (the files are usually +small) instead of intended subtraction. +Fixes 'make check' disk_cache failures on 32bit. + +Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> +Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> +--- + src/util/disk_cache.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c +index 5470688df3..facdcecf7c 100644 +--- a/src/util/disk_cache.c ++++ b/src/util/disk_cache.c +@@ -603,7 +603,7 @@ evict_random_item(struct disk_cache *cache) + free(dir_path); + + if (size) { +- p_atomic_add(cache->size, - size); ++ p_atomic_add(cache->size, - (uint64_t)size); + return; + } + +@@ -624,7 +624,7 @@ evict_random_item(struct disk_cache *cache) + free(dir_path); + + if (size) +- p_atomic_add(cache->size, - size); ++ p_atomic_add(cache->size, - (uint64_t)size); + } + + void +#@@ -646,7 +646,7 @@ disk_cache_remove(struct disk_cache *cache, const cache_key key) +# free(filename); +# +# if (sb.st_size) +#- p_atomic_add(cache->size, - sb.st_size); +#+ p_atomic_add(cache->size, - (uint64_t)sb.st_size); +# } +# +# /* From the zlib docs: +-- +2.12.2 + diff --git a/gnu/packages/patches/mesa-skip-disk-cache-test.patch b/gnu/packages/patches/mesa-skip-disk-cache-test.patch new file mode 100644 index 0000000000..4377110475 --- /dev/null +++ b/gnu/packages/patches/mesa-skip-disk-cache-test.patch @@ -0,0 +1,20 @@ +disk_cache_create() here looks up the users home directory from <pwd.h> +which resolves to "/" in the build environment. I could not find an easy +way to set the home directory to something else, so we disable this test +for now. + +--- a/src/compiler/glsl/tests/cache_test.c ++++ b/src/compiler/glsl/tests/cache_test.c +@@ -137,11 +137,6 @@ + unsetenv("MESA_GLSL_CACHE_DIR"); + unsetenv("XDG_CACHE_HOME"); + +- cache = disk_cache_create(); +- expect_non_null(cache, "disk_cache_create with no environment variables"); +- +- disk_cache_destroy(cache); +- + /* Test with XDG_CACHE_HOME set */ + setenv("XDG_CACHE_HOME", CACHE_TEST_TMP "/xdg-cache-home", 1); + cache = disk_cache_create(); + diff --git a/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch b/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch new file mode 100644 index 0000000000..24eed60af9 --- /dev/null +++ b/gnu/packages/patches/miniupnpc-CVE-2017-8798.patch @@ -0,0 +1,55 @@ +Fix CVE-2017-8798. + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8798 +http://seclists.org/oss-sec/2017/q2/247 + +Patch copied from upstream source repository, with Changelog entry removed: + +https://github.com/miniupnp/miniupnp/commit/f0f1f4b22d6a98536377a1bb07e7c20e4703d229 + +diff --git a/miniwget.c b/miniwget.c +index 37cb47b..1eda57c 100644 +--- a/miniwget.c ++++ b/miniwget.c +@@ -284,11 +284,12 @@ getHTTPResponse(int s, int * size, int * status_code) + goto end_of_stream; + } + } +- bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i); ++ /* it is guaranteed that (n >= i) */ ++ bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i); + if((content_buf_used + bytestocopy) > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + bytestocopy)) { ++ if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + bytestocopy; +@@ -313,14 +314,15 @@ getHTTPResponse(int s, int * size, int * status_code) + { + /* not chunked */ + if(content_length > 0 +- && (int)(content_buf_used + n) > content_length) { ++ && (content_buf_used + n) > (unsigned int)content_length) { + /* skipping additional bytes */ + n = content_length - content_buf_used; + } + if(content_buf_used + n > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + n)) { ++ if(content_length >= 0 ++ && (unsigned int)content_length >= (content_buf_used + n)) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + n; +@@ -340,7 +342,7 @@ getHTTPResponse(int s, int * size, int * status_code) + } + } + /* use the Content-Length header value if available */ +- if(content_length > 0 && (int)content_buf_used >= content_length) ++ if(content_length > 0 && content_buf_used >= (unsigned int)content_length) + { + #ifdef DEBUG + printf("End of HTTP content\n"); diff --git a/gnu/packages/patches/mozjs38-pkg-config-version.patch b/gnu/packages/patches/mozjs38-pkg-config-version.patch new file mode 100644 index 0000000000..49ff6f6f8d --- /dev/null +++ b/gnu/packages/patches/mozjs38-pkg-config-version.patch @@ -0,0 +1,24 @@ +Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837770. + +Add major version to pkg-config filename. +Author: Rico Tzschichholz <ricotz@ubuntu.com> +Forwarded: no +Last-Update: 2015-05-04 + +Index: b/js/src/Makefile.in +=================================================================== +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -214,10 +214,10 @@ + $(JS_CONFIG_NAME): js-config + cp $^ $@ + +-$(LIBRARY_NAME).pc: js.pc ++$(JS_LIBRARY_NAME).pc: js.pc + cp $^ $@ + +-install:: $(LIBRARY_NAME).pc ++install:: $(JS_LIBRARY_NAME).pc + $(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig + + install:: js-config.h diff --git a/gnu/packages/patches/mozjs38-shell-version.patch b/gnu/packages/patches/mozjs38-shell-version.patch new file mode 100644 index 0000000000..e7d3d19c85 --- /dev/null +++ b/gnu/packages/patches/mozjs38-shell-version.patch @@ -0,0 +1,67 @@ +Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837771. + +# HG changeset patch +# Parent 4732a0e5d22bc7e5c1f1ace7a182d537d9cc2c6a +Add major version to shell and js-config filenames. +Author: Rico Tzschichholz <ricotz@ubuntu.com> +Forwarded: no +Last-Update: 2014-10-29 + +--- +diff --git a/js/src/configure b/js/src/configure +--- a/js/src/configure ++++ b/js/src/configure +@@ -1696,8 +1696,13 @@ + MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` + IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` + ++if test -n "$JS_STANDALONE"; then ++JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION ++JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config ++else + JS_SHELL_NAME=js + JS_CONFIG_NAME=js-config ++fi + + + if test -n "$IS_ALPHA"; then + +diff --git a/js/src/configure.in b/js/src/configure.in +--- a/js/src/configure.in ++++ b/js/src/configure.in +@@ -234,16 +234,13 @@ MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSI + MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` + IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` + +-dnl XXX in a temporary bid to avoid developer anger at renaming files +-dnl XXX before "js" symlinks exist, don't change names. +-dnl +-dnl if test -n "$JS_STANDALONE"; then +-dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION +-dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config +-dnl else ++if test -n "$JS_STANDALONE"; then ++JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION ++JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config ++else + JS_SHELL_NAME=js + JS_CONFIG_NAME=js-config +-dnl fi ++fi + + changequote([,]) + if test -n "$IS_ALPHA"; then + +diff -r 80a9e64d75f5 js/src/Makefile.in +--- a/js/src/Makefile.in Wed Jun 25 15:11:42 2014 +0200 ++++ b/js/src/Makefile.in Sat Jul 05 14:08:38 2014 +0200 +@@ -273,6 +273,9 @@ + SCRIPTS = $(JS_CONFIG_NAME) + SDK_BINARY = $(JS_CONFIG_NAME) + ++$(JS_CONFIG_NAME): js-config ++ cp $^ $@ ++ + $(JS_LIBRARY_NAME).pc: js.pc + cp $^ $@ + diff --git a/gnu/packages/patches/mozjs38-tracelogger.patch b/gnu/packages/patches/mozjs38-tracelogger.patch new file mode 100644 index 0000000000..0375ec36cc --- /dev/null +++ b/gnu/packages/patches/mozjs38-tracelogger.patch @@ -0,0 +1,608 @@ +Squashed version of several commits to fix the tracelogger. + +Taken from +https://github.com/GNOME/jhbuild/blob/master/patches/mozjs38-fix-tracelogger.patch. + +# === Fix the SM38 tracelogger === +# This patch is a squashed version of several patches that were adapted +# to fix failing hunks. +# +# Applied in the following order, they are: +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223767 +# Assertion failure: i < size_, at js/src/vm/TraceLoggingTypes.h:210 +# Also fix stop-information to make reduce.py work correctly. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227914 +# Limit the memory tracelogger can take. +# This causes tracelogger to flush data to the disk regularly and prevents out of +# memory issues if a lot of data gets logged. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1155618 +# Fix tracelogger destructor that touches possibly uninitialised hash table. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223636 +# Don't treat extraTextId as containing only extra ids. +# This fixes an assertion failure: id == nextTextId at js/src/vm/TraceLoggingGraph.cpp +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227028 +# Fix when to keep the payload of a TraceLogger event. +# This fixes an assertion failure: textId < uint32_t(1 << 31) at js/src/vm/TraceLoggingGraph.h +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1266649 +# Handle failing to add to pointermap gracefully. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1280648 +# Don't cache based on pointers to movable GC things. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1224123 +# Fix the use of LastEntryId in tracelogger.h. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1231170 +# Use size in debugger instead of the current id to track last logged item. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1221844 +# Move TraceLogger_Invalidation to LOG_ITEM. +# Add some debug checks to logTimestamp. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1255766 +# Also mark resizing of memory. +# * https://bugzilla.mozilla.org/show_bug.cgi?id=1259403 +# Only increase capacity by multiples of 2. +# Always make sure there are 3 free slots for events. +# === + +diff --git a/js/src/jit-test/tests/tracelogger/bug1231170.js b/js/src/jit-test/tests/tracelogger/bug1231170.js +new file mode 100644 +index 0000000..023e93e +--- /dev/null ++++ b/js/src/jit-test/tests/tracelogger/bug1231170.js +@@ -0,0 +1,3 @@ ++var du = new Debugger(); ++if (typeof du.drainTraceLogger === "function") ++ du.drainTraceLogger(); +diff --git a/js/src/jit-test/tests/tracelogger/bug1266649.js b/js/src/jit-test/tests/tracelogger/bug1266649.js +new file mode 100644 +index 0000000..81ae7ad +--- /dev/null ++++ b/js/src/jit-test/tests/tracelogger/bug1266649.js +@@ -0,0 +1,10 @@ ++ ++var du = new Debugger(); ++if (typeof du.setupTraceLogger === "function" && ++ typeof oomTest === 'function') ++{ ++ du.setupTraceLogger({ ++ Scripts: true ++ }) ++ oomTest(() => function(){}); ++} +diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp +index 93e2fda..09049d6 100644 +--- a/js/src/jit/Ion.cpp ++++ b/js/src/jit/Ion.cpp +@@ -1055,6 +1055,8 @@ IonScript::Destroy(FreeOp* fop, IonScript* script) + + script->destroyCaches(); + script->unlinkFromRuntime(fop); ++ // Frees the potential event we have set. ++ script->traceLoggerScriptEvent_ = TraceLoggerEvent(); + fop->free_(script); + } + +diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp +index 26262fd..af7f313 100644 +--- a/js/src/vm/Debugger.cpp ++++ b/js/src/vm/Debugger.cpp +@@ -369,10 +369,10 @@ Debugger::Debugger(JSContext* cx, NativeObject* dbg) + objects(cx), + environments(cx), + #ifdef NIGHTLY_BUILD +- traceLoggerLastDrainedId(0), ++ traceLoggerLastDrainedSize(0), + traceLoggerLastDrainedIteration(0), + #endif +- traceLoggerScriptedCallsLastDrainedId(0), ++ traceLoggerScriptedCallsLastDrainedSize(0), + traceLoggerScriptedCallsLastDrainedIteration(0) + { + assertSameCompartment(cx, dbg); +@@ -3907,9 +3907,9 @@ Debugger::drainTraceLogger(JSContext* cx, unsigned argc, Value* vp) + size_t num; + TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); + bool lostEvents = logger->lostEvents(dbg->traceLoggerLastDrainedIteration, +- dbg->traceLoggerLastDrainedId); ++ dbg->traceLoggerLastDrainedSize); + EventEntry* events = logger->getEventsStartingAt(&dbg->traceLoggerLastDrainedIteration, +- &dbg->traceLoggerLastDrainedId, ++ &dbg->traceLoggerLastDrainedSize, + &num); + + RootedObject array(cx, NewDenseEmptyArray(cx)); +@@ -4002,10 +4002,10 @@ Debugger::drainTraceLoggerScriptCalls(JSContext* cx, unsigned argc, Value* vp) + size_t num; + TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); + bool lostEvents = logger->lostEvents(dbg->traceLoggerScriptedCallsLastDrainedIteration, +- dbg->traceLoggerScriptedCallsLastDrainedId); ++ dbg->traceLoggerScriptedCallsLastDrainedSize); + EventEntry* events = logger->getEventsStartingAt( + &dbg->traceLoggerScriptedCallsLastDrainedIteration, +- &dbg->traceLoggerScriptedCallsLastDrainedId, ++ &dbg->traceLoggerScriptedCallsLastDrainedSize, + &num); + + RootedObject array(cx, NewDenseEmptyArray(cx)); +diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h +index 8cac36a..c92d685 100644 +--- a/js/src/vm/Debugger.h ++++ b/js/src/vm/Debugger.h +@@ -314,10 +314,10 @@ class Debugger : private mozilla::LinkedListElement<Debugger> + * lost events. + */ + #ifdef NIGHTLY_BUILD +- uint32_t traceLoggerLastDrainedId; ++ uint32_t traceLoggerLastDrainedSize; + uint32_t traceLoggerLastDrainedIteration; + #endif +- uint32_t traceLoggerScriptedCallsLastDrainedId; ++ uint32_t traceLoggerScriptedCallsLastDrainedSize; + uint32_t traceLoggerScriptedCallsLastDrainedIteration; + + class FrameRange; +diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp +index 6715b36..9766a6f 100644 +--- a/js/src/vm/TraceLogging.cpp ++++ b/js/src/vm/TraceLogging.cpp +@@ -131,7 +131,7 @@ TraceLoggerThread::init() + { + if (!pointerMap.init()) + return false; +- if (!extraTextId.init()) ++ if (!textIdPayloads.init()) + return false; + if (!events.init()) + return false; +@@ -185,10 +185,10 @@ TraceLoggerThread::~TraceLoggerThread() + graph = nullptr; + } + +- for (TextIdHashMap::Range r = extraTextId.all(); !r.empty(); r.popFront()) +- js_delete(r.front().value()); +- extraTextId.finish(); +- pointerMap.finish(); ++ if (textIdPayloads.initialized()) { ++ for (TextIdHashMap::Range r = textIdPayloads.all(); !r.empty(); r.popFront()) ++ js_delete(r.front().value()); ++ } + } + + bool +@@ -287,7 +287,7 @@ TraceLoggerThread::eventText(uint32_t id) + if (id < TraceLogger_Last) + return TLTextIdString(static_cast<TraceLoggerTextId>(id)); + +- TextIdHashMap::Ptr p = extraTextId.lookup(id); ++ TextIdHashMap::Ptr p = textIdPayloads.lookup(id); + MOZ_ASSERT(p); + + return p->value()->string(); +@@ -341,13 +341,15 @@ TraceLoggerThread::extractScriptDetails(uint32_t textId, const char** filename, + TraceLoggerEventPayload* + TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId textId) + { +- TextIdHashMap::AddPtr p = extraTextId.lookupForAdd(textId); +- if (p) ++ TextIdHashMap::AddPtr p = textIdPayloads.lookupForAdd(textId); ++ if (p) { ++ MOZ_ASSERT(p->value()->textId() == textId); // Sanity check. + return p->value(); ++ } + + TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, (char*)nullptr); + +- if (!extraTextId.add(p, textId, payload)) ++ if (!textIdPayloads.add(p, textId, payload)) + return nullptr; + + return payload; +@@ -357,8 +359,10 @@ TraceLoggerEventPayload* + TraceLoggerThread::getOrCreateEventPayload(const char* text) + { + PointerHashMap::AddPtr p = pointerMap.lookupForAdd((const void*)text); +- if (p) ++ if (p) { ++ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. + return p->value(); ++ } + + size_t len = strlen(text); + char* str = js_pod_malloc<char>(len + 1); +@@ -369,7 +373,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) + MOZ_ASSERT(ret == len); + MOZ_ASSERT(strlen(str) == len); + +- uint32_t textId = extraTextId.count() + TraceLogger_Last; ++ uint32_t textId = nextTextId; + + TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, str); + if (!payload) { +@@ -377,17 +381,19 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) + return nullptr; + } + +- if (!extraTextId.putNew(textId, payload)) { ++ if (!textIdPayloads.putNew(textId, payload)) { + js_delete(payload); + return nullptr; + } + +- if (!pointerMap.add(p, text, payload)) +- return nullptr; +- + if (graph.get()) + graph->addTextId(textId, str); + ++ nextTextId++; ++ ++ if (!pointerMap.add(p, text, payload)) ++ return nullptr; ++ + return payload; + } + +@@ -407,9 +413,14 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f + if (!traceLoggerState->isTextIdEnabled(type)) + return getOrCreateEventPayload(type); + +- PointerHashMap::AddPtr p = pointerMap.lookupForAdd(ptr); +- if (p) +- return p->value(); ++ PointerHashMap::AddPtr p; ++ if (ptr) { ++ p = pointerMap.lookupForAdd(ptr); ++ if (p) { ++ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. ++ return p->value(); ++ } ++ } + + // Compute the length of the string to create. + size_t lenFilename = strlen(filename); +@@ -428,24 +439,28 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f + MOZ_ASSERT(ret == len); + MOZ_ASSERT(strlen(str) == len); + +- uint32_t textId = extraTextId.count() + TraceLogger_Last; ++ uint32_t textId = nextTextId; + TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, str); + if (!payload) { + js_free(str); + return nullptr; + } + +- if (!extraTextId.putNew(textId, payload)) { ++ if (!textIdPayloads.putNew(textId, payload)) { + js_delete(payload); + return nullptr; + } + +- if (!pointerMap.add(p, ptr, payload)) +- return nullptr; +- + if (graph.get()) + graph->addTextId(textId, str); + ++ nextTextId++; ++ ++ if (ptr) { ++ if (!pointerMap.add(p, ptr, payload)) ++ return nullptr; ++ } ++ + return payload; + } + +@@ -453,14 +468,14 @@ TraceLoggerEventPayload* + TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, JSScript* script) + { + return getOrCreateEventPayload(type, script->filename(), script->lineno(), script->column(), +- script); ++ nullptr); + } + + TraceLoggerEventPayload* + TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, + const JS::ReadOnlyCompileOptions& script) + { +- return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, &script); ++ return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, nullptr); + } + + void +@@ -485,7 +500,7 @@ TraceLoggerThread::startEvent(uint32_t id) + if (!traceLoggerState->isTextIdEnabled(id)) + return; + +- logTimestamp(id); ++ log(id); + } + + void +@@ -510,7 +525,7 @@ TraceLoggerThread::stopEvent(uint32_t id) + if (!traceLoggerState->isTextIdEnabled(id)) + return; + +- logTimestamp(TraceLogger_Stop); ++ log(TraceLogger_Stop); + } + + void +@@ -522,23 +537,57 @@ TraceLoggerThread::logTimestamp(TraceLoggerTextId id) + void + TraceLoggerThread::logTimestamp(uint32_t id) + { ++ MOZ_ASSERT(id > TraceLogger_LastTreeItem && id < TraceLogger_Last); ++ log(id); ++} ++ ++void ++TraceLoggerThread::log(uint32_t id) ++{ + if (enabled == 0) + return; + + MOZ_ASSERT(traceLoggerState); +- if (!events.ensureSpaceBeforeAdd()) { ++ ++ // We request for 3 items to add, since if we don't have enough room ++ // we record the time it took to make more place. To log this information ++ // we need 2 extra free entries. ++ if (!events.hasSpaceForAdd(3)) { + uint64_t start = rdtsc() - traceLoggerState->startupTime; + +- if (graph.get()) +- graph->log(events); ++ if (!events.ensureSpaceBeforeAdd(3)) { ++ if (graph.get()) ++ graph->log(events); ++ ++ iteration_++; ++ events.clear(); ++ ++ // Remove the item in the pointerMap for which the payloads ++ // have no uses anymore ++ for (PointerHashMap::Enum e(pointerMap); !e.empty(); e.popFront()) { ++ if (e.front().value()->uses() != 0) ++ continue; ++ ++ TextIdHashMap::Ptr p = textIdPayloads.lookup(e.front().value()->textId()); ++ MOZ_ASSERT(p); ++ textIdPayloads.remove(p); ++ ++ e.removeFront(); ++ } + +- iteration_++; +- events.clear(); ++ // Free all payloads that have no uses anymore. ++ for (TextIdHashMap::Enum e(textIdPayloads); !e.empty(); e.popFront()) { ++ if (e.front().value()->uses() == 0) { ++ js_delete(e.front().value()); ++ e.removeFront(); ++ } ++ } ++ } + + // Log the time it took to flush the events as being from the + // Tracelogger. + if (graph.get()) { +- MOZ_ASSERT(events.capacity() > 2); ++ MOZ_ASSERT(events.hasSpaceForAdd(2)); + EventEntry& entryStart = events.pushUninitialized(); + entryStart.time = start; + entryStart.textId = TraceLogger_Internal; +@@ -548,13 +597,6 @@ TraceLoggerThread::logTimestamp(uint32_t id) + entryStop.textId = TraceLogger_Stop; + } + +- // Free all TextEvents that have no uses anymore. +- for (TextIdHashMap::Enum e(extraTextId); !e.empty(); e.popFront()) { +- if (e.front().value()->uses() == 0) { +- js_delete(e.front().value()); +- e.removeFront(); +- } +- } + } + + uint64_t time = rdtsc() - traceLoggerState->startupTime; +@@ -956,3 +998,16 @@ TraceLoggerEvent::~TraceLoggerEvent() + if (payload_) + payload_->release(); + } ++ ++TraceLoggerEvent& ++TraceLoggerEvent::operator=(const TraceLoggerEvent& other) ++{ ++ if (hasPayload()) ++ payload()->release(); ++ if (other.hasPayload()) ++ other.payload()->use(); ++ ++ payload_ = other.payload_; ++ ++ return *this; ++} +diff --git a/js/src/vm/TraceLogging.h b/js/src/vm/TraceLogging.h +index a124dcb..91a1eb0 100644 +--- a/js/src/vm/TraceLogging.h ++++ b/js/src/vm/TraceLogging.h +@@ -110,6 +110,9 @@ class TraceLoggerEvent { + bool hasPayload() const { + return !!payload_; + } ++ ++ TraceLoggerEvent& operator=(const TraceLoggerEvent& other); ++ TraceLoggerEvent(const TraceLoggerEvent& event) = delete; + }; + + /** +@@ -130,6 +133,10 @@ class TraceLoggerEventPayload { + uses_(0) + { } + ++ ~TraceLoggerEventPayload() { ++ MOZ_ASSERT(uses_ == 0); ++ } ++ + uint32_t textId() { + return textId_; + } +@@ -166,7 +173,8 @@ class TraceLoggerThread + mozilla::UniquePtr<TraceLoggerGraph> graph; + + PointerHashMap pointerMap; +- TextIdHashMap extraTextId; ++ TextIdHashMap textIdPayloads; ++ uint32_t nextTextId; + + ContinuousSpace<EventEntry> events; + +@@ -181,6 +189,7 @@ class TraceLoggerThread + : enabled(0), + failed(false), + graph(), ++ nextTextId(TraceLogger_Last), + iteration_(0), + top(nullptr) + { } +@@ -195,22 +204,22 @@ class TraceLoggerThread + bool enable(JSContext* cx); + bool disable(); + +- // Given the previous iteration and lastEntryId, return an array of events ++ // Given the previous iteration and size, return an array of events + // (there could be lost events). At the same time update the iteration and +- // lastEntry and gives back how many events there are. +- EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastEntryId, size_t* num) { ++ // size and gives back how many events there are. ++ EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastSize, size_t* num) { + EventEntry* start; + if (iteration_ == *lastIteration) { +- MOZ_ASSERT(events.lastEntryId() >= *lastEntryId); +- *num = events.lastEntryId() - *lastEntryId; +- start = events.data() + *lastEntryId + 1; ++ MOZ_ASSERT(*lastSize <= events.size()); ++ *num = events.size() - *lastSize; ++ start = events.data() + *lastSize; + } else { +- *num = events.lastEntryId() + 1; ++ *num = events.size(); + start = events.data(); + } + + *lastIteration = iteration_; +- *lastEntryId = events.lastEntryId(); ++ *lastSize = events.size(); + return start; + } + +@@ -220,16 +229,16 @@ class TraceLoggerThread + const char** lineno, size_t* lineno_len, const char** colno, + size_t* colno_len); + +- bool lostEvents(uint32_t lastIteration, uint32_t lastEntryId) { ++ bool lostEvents(uint32_t lastIteration, uint32_t lastSize) { + // If still logging in the same iteration, there are no lost events. + if (lastIteration == iteration_) { +- MOZ_ASSERT(lastEntryId <= events.lastEntryId()); ++ MOZ_ASSERT(lastSize <= events.size()); + return false; + } + +- // When proceeded to the next iteration and lastEntryId points to +- // the maximum capacity there are no logs that are lost. +- if (lastIteration + 1 == iteration_ && lastEntryId == events.capacity()) ++ // If we are in a consecutive iteration we are only sure we didn't lose any events, ++ // when the lastSize equals the maximum size 'events' can get. ++ if (lastIteration == iteration_ - 1 && lastSize == events.maxSize()) + return false; + + return true; +@@ -268,6 +277,7 @@ class TraceLoggerThread + void stopEvent(uint32_t id); + private: + void stopEvent(); ++ void log(uint32_t id); + + public: + static unsigned offsetOfEnabled() { +diff --git a/js/src/vm/TraceLoggingGraph.cpp b/js/src/vm/TraceLoggingGraph.cpp +index d1b7f2e..a4eb273 100644 +--- a/js/src/vm/TraceLoggingGraph.cpp ++++ b/js/src/vm/TraceLoggingGraph.cpp +@@ -276,7 +276,7 @@ TraceLoggerGraph::flush() + if (bytesWritten < tree.size()) + return false; + +- treeOffset += tree.lastEntryId(); ++ treeOffset += tree.size(); + tree.clear(); + } + +@@ -359,7 +359,7 @@ TraceLoggerGraph::startEventInternal(uint32_t id, uint64_t timestamp) + + if (parent.lastChildId() == 0) { + MOZ_ASSERT(!entry.hasChildren()); +- MOZ_ASSERT(parent.treeId() == tree.lastEntryId() + treeOffset); ++ MOZ_ASSERT(parent.treeId() == treeOffset + tree.size() - 1); + + if (!updateHasChildren(parent.treeId())) + return false; +diff --git a/js/src/vm/TraceLoggingTypes.h b/js/src/vm/TraceLoggingTypes.h +index f1c9d0c..10b76d6 100644 +--- a/js/src/vm/TraceLoggingTypes.h ++++ b/js/src/vm/TraceLoggingTypes.h +@@ -21,7 +21,6 @@ + _(Internal) \ + _(Interpreter) \ + _(InlinedScripts) \ +- _(Invalidation) \ + _(IonCompilation) \ + _(IonCompilationPaused) \ + _(IonLinking) \ +@@ -60,6 +59,7 @@ + + #define TRACELOGGER_LOG_ITEMS(_) \ + _(Bailout) \ ++ _(Invalidation) \ + _(Disable) \ + _(Enable) \ + _(Stop) +@@ -130,6 +130,9 @@ class ContinuousSpace { + uint32_t size_; + uint32_t capacity_; + ++ // The maximum amount of ram memory a continuous space structure can take (in bytes). ++ static const uint32_t LIMIT = 200 * 1024 * 1024; ++ + public: + ContinuousSpace () + : data_(nullptr) +@@ -151,6 +154,10 @@ class ContinuousSpace { + data_ = nullptr; + } + ++ static uint32_t maxSize() { ++ return LIMIT / sizeof(T); ++ } ++ + T* data() { + return data_; + } +@@ -187,11 +194,14 @@ class ContinuousSpace { + if (hasSpaceForAdd(count)) + return true; + ++ // Limit the size of a continuous buffer. ++ if (size_ + count > maxSize()) ++ return false; ++ + uint32_t nCapacity = capacity_ * 2; +- if (size_ + count > nCapacity) +- nCapacity = size_ + count; +- T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T)); ++ nCapacity = (nCapacity < maxSize()) ? nCapacity : maxSize(); + ++ T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T)); + if (!entries) + return false; + diff --git a/gnu/packages/patches/mozjs38-version-detection.patch b/gnu/packages/patches/mozjs38-version-detection.patch new file mode 100644 index 0000000000..ec2d264ccc --- /dev/null +++ b/gnu/packages/patches/mozjs38-version-detection.patch @@ -0,0 +1,180 @@ +Taken from +https://trac.wildfiregames.com/export/18656/ps/trunk/libraries/source/spidermonkey/FixVersionDetectionConfigure.diff. + +Fixes a version detection issue in 0ad. See +https://lists.gnu.org/archive/html/guix-devel/2017-01/msg00625.html. + +diff --git a/js/src/configure b/js/src/configure +--- a/js/src/configure ++++ b/js/src/configure +@@ -1662,70 +1662,6 @@ esac + + fi + +-MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` +-MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` +-MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` +- +-cat >> confdefs.pytmp <<EOF +- (''' MOZILLA_VERSION ''', r''' "$MOZILLA_VERSION" ''') +-EOF +-cat >> confdefs.h <<EOF +-#define MOZILLA_VERSION "$MOZILLA_VERSION" +-EOF +- +-cat >> confdefs.pytmp <<EOF +- (''' MOZILLA_VERSION_U ''', r''' $MOZILLA_VERSION ''') +-EOF +-cat >> confdefs.h <<EOF +-#define MOZILLA_VERSION_U $MOZILLA_VERSION +-EOF +- +-cat >> confdefs.pytmp <<EOF +- (''' MOZILLA_UAVERSION ''', r''' "$MOZILLA_UAVERSION" ''') +-EOF +-cat >> confdefs.h <<EOF +-#define MOZILLA_UAVERSION "$MOZILLA_UAVERSION" +-EOF +- +- +- +-# Separate version into components for use in shared object naming etc +- +-MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"` +-MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"` +-MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` +-IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` +- +-JS_SHELL_NAME=js +-JS_CONFIG_NAME=js-config +- +- +-if test -n "$IS_ALPHA"; then +- +- MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"` +- +-fi +-cat >> confdefs.pytmp <<EOF +- (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''') +-EOF +-cat >> confdefs.h <<EOF +-#define MOZJS_MAJOR_VERSION $MOZJS_MAJOR_VERSION +-EOF +- +-cat >> confdefs.pytmp <<EOF +- (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''') +-EOF +-cat >> confdefs.h <<EOF +-#define MOZJS_MINOR_VERSION $MOZJS_MINOR_VERSION +-EOF +- +- +- +- +- +- +- +- + + AR_FLAGS='crs $@' + +@@ -5731,6 +5565,71 @@ XCFLAGS="$X_CFLAGS" + + fi # COMPILE_ENVIRONMENT + ++MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` ++MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` ++MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` ++ ++cat >> confdefs.pytmp <<EOF ++ (''' MOZILLA_VERSION ''', r''' "$MOZILLA_VERSION" ''') ++EOF ++cat >> confdefs.h <<EOF ++#define MOZILLA_VERSION "$MOZILLA_VERSION" ++EOF ++ ++cat >> confdefs.pytmp <<EOF ++ (''' MOZILLA_VERSION_U ''', r''' $MOZILLA_VERSION ''') ++EOF ++cat >> confdefs.h <<EOF ++#define MOZILLA_VERSION_U $MOZILLA_VERSION ++EOF ++ ++cat >> confdefs.pytmp <<EOF ++ (''' MOZILLA_UAVERSION ''', r''' "$MOZILLA_UAVERSION" ''') ++EOF ++cat >> confdefs.h <<EOF ++#define MOZILLA_UAVERSION "$MOZILLA_UAVERSION" ++EOF ++ ++ ++ ++# Separate version into components for use in shared object naming etc ++ ++MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"` ++MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"` ++MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` ++IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` ++ ++JS_SHELL_NAME=js ++JS_CONFIG_NAME=js-config ++ ++ ++if test -n "$IS_ALPHA"; then ++ ++ MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"` ++ ++fi ++cat >> confdefs.pytmp <<EOF ++ (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''') ++EOF ++cat >> confdefs.h <<EOF ++#define MOZJS_MAJOR_VERSION $MOZJS_MAJOR_VERSION ++EOF ++ ++cat >> confdefs.pytmp <<EOF ++ (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''') ++EOF ++cat >> confdefs.h <<EOF ++#define MOZJS_MINOR_VERSION $MOZJS_MINOR_VERSION ++EOF ++ ++ ++ ++ ++ ++ ++ ++ ++ + AS_BIN=$AS + AR_LIST='$(AR) t' + AR_EXTRACT='$(AR) x' +@@ -16003,13 +15908,6 @@ sed 's/$/,/' >> $CONFIG_STATUS <<EOF + (''' ANDROID_NDK ''', r''' $ANDROID_NDK ''') + (''' ANDROID_TOOLCHAIN ''', r''' $ANDROID_TOOLCHAIN ''') + (''' ANDROID_PLATFORM ''', r''' $ANDROID_PLATFORM ''') +- (''' MOZILLA_SYMBOLVERSION ''', r''' $MOZILLA_SYMBOLVERSION ''') +- (''' JS_SHELL_NAME ''', r''' $JS_SHELL_NAME ''') +- (''' JS_CONFIG_NAME ''', r''' $JS_CONFIG_NAME ''') +- (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''') +- (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''') +- (''' MOZJS_PATCH_VERSION ''', r''' $MOZJS_PATCH_VERSION ''') +- (''' MOZJS_ALPHA ''', r''' $MOZJS_ALPHA ''') + (''' HOST_CC ''', r''' $HOST_CC ''') + (''' HOST_CXX ''', r''' $HOST_CXX ''') + (''' HOST_RANLIB ''', r''' $HOST_RANLIB ''') +@@ -16061,6 +15959,13 @@ sed 's/$/,/' >> $CONFIG_STATUS <<EOF + (''' X_PRE_LIBS ''', r''' $X_PRE_LIBS ''') + (''' X_LIBS ''', r''' $X_LIBS ''') + (''' X_EXTRA_LIBS ''', r''' $X_EXTRA_LIBS ''') ++ (''' MOZILLA_SYMBOLVERSION ''', r''' $MOZILLA_SYMBOLVERSION ''') ++ (''' JS_SHELL_NAME ''', r''' $JS_SHELL_NAME ''') ++ (''' JS_CONFIG_NAME ''', r''' $JS_CONFIG_NAME ''') ++ (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''') ++ (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''') ++ (''' MOZJS_PATCH_VERSION ''', r''' $MOZJS_PATCH_VERSION ''') ++ (''' MOZJS_ALPHA ''', r''' $MOZJS_ALPHA ''') + (''' SOLARIS_SUNPRO_CC ''', r''' $SOLARIS_SUNPRO_CC ''') + (''' SOLARIS_SUNPRO_CXX ''', r''' $SOLARIS_SUNPRO_CXX ''') + (''' MOZ_THUMB2 ''', r''' $MOZ_THUMB2 ''') diff --git a/gnu/packages/patches/mplayer2-theora-fix.patch b/gnu/packages/patches/mplayer2-theora-fix.patch deleted file mode 100644 index 982db5f57c..0000000000 --- a/gnu/packages/patches/mplayer2-theora-fix.patch +++ /dev/null @@ -1,286 +0,0 @@ -Fix libtheora linking issue with modern theora versions. - -Adapted from: -http://git.buildroot.net/buildroot/commit/?id=46b71cb0be27c0e6b7c93afb49fc80779bf310e3 - ---- a/libmpcodecs/vd_theora.c -+++ b/libmpcodecs/vd_theora.c -@@ -39,22 +39,23 @@ - - LIBVD_EXTERN(theora) - --#include <theora/theora.h> -+#include <theora/theoradec.h> - - #define THEORA_NUM_HEADER_PACKETS 3 - - typedef struct theora_struct_st { -- theora_state st; -- theora_comment cc; -- theora_info inf; -+ th_setup_info *tsi; -+ th_dec_ctx *tctx; -+ th_comment tc; -+ th_info ti; - } theora_struct_t; - - /** Convert Theora pixelformat to the corresponding IMGFMT_ */ --static uint32_t theora_pixelformat2imgfmt(theora_pixelformat fmt){ -+static uint32_t theora_pixelformat2imgfmt(th_pixel_fmt fmt){ - switch(fmt) { -- case OC_PF_420: return IMGFMT_YV12; -- case OC_PF_422: return IMGFMT_422P; -- case OC_PF_444: return IMGFMT_444P; -+ case TH_PF_420: return IMGFMT_YV12; -+ case TH_PF_422: return IMGFMT_422P; -+ case TH_PF_444: return IMGFMT_444P; - } - return 0; - } -@@ -64,7 +65,7 @@ - theora_struct_t *context = sh->context; - switch(cmd) { - case VDCTRL_QUERY_FORMAT: -- if (*(int*)arg == theora_pixelformat2imgfmt(context->inf.pixelformat)) -+ if (*(int*)arg == theora_pixelformat2imgfmt(context->ti.pixel_fmt)) - return CONTROL_TRUE; - return CONTROL_FALSE; - } -@@ -88,8 +89,9 @@ - if (!context) - goto err_out; - -- theora_info_init(&context->inf); -- theora_comment_init(&context->cc); -+ th_info_init(&context->ti); -+ th_comment_init(&context->tc); -+ context->tsi = NULL; - - /* Read all header packets, pass them to theora_decode_header. */ - for (i = 0; i < THEORA_NUM_HEADER_PACKETS; i++) -@@ -109,7 +111,7 @@ - op.b_o_s = 1; - } - -- if ( (errorCode = theora_decode_header (&context->inf, &context->cc, &op)) ) -+ if ( (errorCode = th_decode_headerin (&context->ti, &context->tc, &context->tsi, &op)) < 0) - { - mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Broken Theora header; errorCode=%i!\n", errorCode); - goto err_out; -@@ -117,23 +119,25 @@ - } - - /* now init codec */ -- errorCode = theora_decode_init (&context->st, &context->inf); -- if (errorCode) -+ context->tctx = th_decode_alloc (&context->ti, context->tsi); -+ if (!context->tctx) - { -- mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode init failed: %i \n", errorCode); -+ mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode init failed\n"); - goto err_out; - } -+ /* free memory used for decoder setup information */ -+ th_setup_free(context->tsi); - -- if(sh->aspect==0.0 && context->inf.aspect_denominator!=0) -+ if(sh->aspect==0.0 && context->ti.aspect_denominator!=0) - { -- sh->aspect = ((double)context->inf.aspect_numerator * context->inf.width)/ -- ((double)context->inf.aspect_denominator * context->inf.height); -+ sh->aspect = ((double)context->ti.aspect_numerator * context->ti.frame_width)/ -+ ((double)context->ti.aspect_denominator * context->ti.frame_height); - } - - mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Theora video init ok!\n"); -- mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Frame: %dx%d, Picture %dx%d, Offset [%d,%d]\n", context->inf.width, context->inf.height, context->inf.frame_width, context->inf.frame_height, context->inf.offset_x, context->inf.offset_y); -+ mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Frame: %dx%d, Picture %dx%d, Offset [%d,%d]\n", context->ti.frame_width, context->ti.frame_height, context->ti.pic_width, context->ti.pic_height, context->ti.pic_x, context->ti.pic_y); - -- return mpcodecs_config_vo (sh,context->inf.width,context->inf.height,theora_pixelformat2imgfmt(context->inf.pixelformat)); -+ return mpcodecs_config_vo (sh,context->ti.frame_width,context->ti.frame_height,theora_pixelformat2imgfmt(context->ti.pixel_fmt)); - - err_out: - free(context); -@@ -150,9 +154,9 @@ - - if (context) - { -- theora_info_clear(&context->inf); -- theora_comment_clear(&context->cc); -- theora_clear (&context->st); -+ th_info_clear(&context->ti); -+ th_comment_clear(&context->tc); -+ th_decode_free (context->tctx); - free (context); - } - } -@@ -165,7 +169,7 @@ - theora_struct_t *context = sh->context; - int errorCode = 0; - ogg_packet op; -- yuv_buffer yuv; -+ th_ycbcr_buffer ycbcrbuf; - mp_image_t* mpi; - - // no delayed frames -@@ -177,31 +181,31 @@ - op.packet = data; - op.granulepos = -1; - -- errorCode = theora_decode_packetin (&context->st, &op); -- if (errorCode) -+ errorCode = th_decode_packetin (context->tctx, &op, NULL); -+ if (errorCode < 0) - { - mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode packetin failed: %i \n", - errorCode); - return NULL; - } - -- errorCode = theora_decode_YUVout (&context->st, &yuv); -- if (errorCode) -+ errorCode = th_decode_ycbcr_out (context->tctx, ycbcrbuf); -+ if (errorCode < 0) - { - mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Theora decode YUVout failed: %i \n", - errorCode); - return NULL; - } - -- mpi = mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, yuv.y_width, yuv.y_height); -+ mpi = mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, ycbcrbuf[0].width, ycbcrbuf[0].height); - if(!mpi) return NULL; - -- mpi->planes[0]=yuv.y; -- mpi->stride[0]=yuv.y_stride; -- mpi->planes[1]=yuv.u; -- mpi->stride[1]=yuv.uv_stride; -- mpi->planes[2]=yuv.v; -- mpi->stride[2]=yuv.uv_stride; -+ mpi->planes[0]=ycbcrbuf[0].data; -+ mpi->stride[0]=ycbcrbuf[0].stride; -+ mpi->planes[1]=ycbcrbuf[1].data; -+ mpi->stride[1]=ycbcrbuf[1].stride; -+ mpi->planes[2]=ycbcrbuf[2].data; -+ mpi->stride[2]=ycbcrbuf[2].stride; - - return mpi; - } ---- a/libmpdemux/demux_ogg.c -+++ b/libmpdemux/demux_ogg.c -@@ -49,21 +49,21 @@ - #endif - - #ifdef CONFIG_OGGTHEORA --#include <theora/theora.h> --int _ilog (unsigned int); /* defined in many places in theora/lib/ */ -+#include <theora/theoradec.h> - #endif - - #define BLOCK_SIZE 4096 - - /* Theora decoder context : we won't be able to interpret granule positions -- * without using theora_granule_time with the theora_state of the stream. -+ * without using th_granule_time with the th_dec_ctx of the stream. - * This is duplicated in `vd_theora.c'; put this in a common header? - */ - #ifdef CONFIG_OGGTHEORA - typedef struct theora_struct_st { -- theora_state st; -- theora_comment cc; -- theora_info inf; -+ th_setup_info *tsi; -+ th_dec_ctx *tctx; -+ th_comment tc; -+ th_info ti; - } theora_struct_t; - #endif - -@@ -116,7 +116,7 @@ - float samplerate; /// granulpos 2 time - int64_t lastpos; - int32_t lastsize; -- int keyframe_frequency_force; -+ int keyframe_granule_shift; - - // Logical stream state - ogg_stream_state stream; -@@ -299,11 +299,10 @@ - have theora_state st, until all header packets were passed to the - decoder. */ - if (!pack->bytes || !(*data&0x80)) { -- int keyframe_granule_shift = _ilog(os->keyframe_frequency_force - 1); -- int64_t iframemask = (1 << keyframe_granule_shift) - 1; -+ int64_t iframemask = (1 << os->keyframe_granule_shift) - 1; - - if (pack->granulepos >= 0) { -- os->lastpos = pack->granulepos >> keyframe_granule_shift; -+ os->lastpos = pack->granulepos >> os->keyframe_granule_shift; - os->lastpos += pack->granulepos & iframemask; - *flags = (pack->granulepos & iframemask) == 0; - } else { -@@ -892,14 +891,15 @@ - #ifdef CONFIG_OGGTHEORA - } else if (pack.bytes >= 7 && !strncmp (&pack.packet[1], "theora", 6)) { - int errorCode = 0; -- theora_info inf; -- theora_comment cc; -+ th_info ti; -+ th_comment tc; -+ th_setup_info *tsi = NULL; - -- theora_info_init (&inf); -- theora_comment_init (&cc); -+ th_info_init (&ti); -+ th_comment_init (&tc); - -- errorCode = theora_decode_header (&inf, &cc, &pack); -- if (errorCode) { -+ errorCode = th_decode_headerin(&ti, &tc, &tsi, &pack); -+ if (errorCode < 0) { - mp_msg(MSGT_DEMUX, MSGL_ERR, - "Theora header parsing failed: %i \n", errorCode); - } else { -@@ -908,30 +908,32 @@ - sh_v->bih = calloc(1, sizeof(*sh_v->bih)); - sh_v->bih->biSize = sizeof(*sh_v->bih); - sh_v->bih->biCompression = sh_v->format = FOURCC_THEORA; -- sh_v->fps = ((double)inf.fps_numerator) / (double)inf.fps_denominator; -- sh_v->frametime = ((double)inf.fps_denominator) / (double)inf.fps_numerator; -- sh_v->disp_w = sh_v->bih->biWidth = inf.frame_width; -- sh_v->disp_h = sh_v->bih->biHeight = inf.frame_height; -+ sh_v->fps = ((double)ti.fps_numerator) / (double)ti.fps_denominator; -+ sh_v->frametime = ((double)ti.fps_denominator) / (double)ti.fps_numerator; -+ sh_v->i_bps = ti.target_bitrate / 8; -+ sh_v->disp_w = sh_v->bih->biWidth = ti.frame_width; -+ sh_v->disp_h = sh_v->bih->biHeight = ti.frame_height; - sh_v->bih->biBitCount = 24; - sh_v->bih->biPlanes = 3; - sh_v->bih->biSizeImage = ((sh_v->bih->biBitCount / 8) * sh_v->bih->biWidth * sh_v->bih->biHeight); - ogg_d->subs[ogg_d->num_sub].samplerate = sh_v->fps; - ogg_d->subs[ogg_d->num_sub].theora = 1; -- ogg_d->subs[ogg_d->num_sub].keyframe_frequency_force = inf.keyframe_frequency_force; -+ ogg_d->subs[ogg_d->num_sub].keyframe_granule_shift = ti.keyframe_granule_shift; - ogg_d->subs[ogg_d->num_sub].id = n_video; - n_video++; - mp_msg(MSGT_DEMUX, MSGL_INFO, - "[Ogg] stream %d: video (Theora v%d.%d.%d), -vid %d\n", - ogg_d->num_sub, -- (int)inf.version_major, -- (int)inf.version_minor, -- (int)inf.version_subminor, -+ (int)ti.version_major, -+ (int)ti.version_minor, -+ (int)ti.version_subminor, - n_video - 1); - if (mp_msg_test(MSGT_HEADER, MSGL_V)) - print_video_header(sh_v->bih, MSGL_V); - } -- theora_comment_clear(&cc); -- theora_info_clear(&inf); -+ th_comment_clear(&tc); -+ th_info_clear(&ti); -+ th_setup_free(tsi); - #endif /* CONFIG_OGGTHEORA */ - } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) { - sh_a = new_sh_audio_aid(demuxer, ogg_d->num_sub, n_audio, NULL); diff --git a/gnu/packages/patches/mupdf-CVE-2017-5896.patch b/gnu/packages/patches/mupdf-CVE-2017-5896.patch deleted file mode 100644 index 1537ecc896..0000000000 --- a/gnu/packages/patches/mupdf-CVE-2017-5896.patch +++ /dev/null @@ -1,63 +0,0 @@ -Fix CVE-2017-5896: - -https://bugs.ghostscript.com/show_bug.cgi?id=697515 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5896 -http://www.openwall.com/lists/oss-security/2017/02/10/1 -https://security-tracker.debian.org/tracker/CVE-2017-5896 -https://blogs.gentoo.org/ago/2017/02/09/mupdf-use-after-free-in-fz_subsample_pixmap-pixmap-c/ - -Patch lifted from upstream source repository: - -http://git.ghostscript.com/?p=mupdf.git;h=2c4e5867ee699b1081527bc6c6ea0e99a35a5c27 - -From 2c4e5867ee699b1081527bc6c6ea0e99a35a5c27 Mon Sep 17 00:00:00 2001 -From: Robin Watts <Robin.Watts@artifex.com> -Date: Thu, 9 Feb 2017 07:12:16 -0800 -Subject: [PATCH] bug 697515: Fix out of bounds read in fz_subsample_pixmap - -Pointer arithmetic for final special case was going wrong. ---- - source/fitz/pixmap.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/source/fitz/pixmap.c b/source/fitz/pixmap.c -index a8317127..f1291dc2 100644 ---- a/source/fitz/pixmap.c -+++ b/source/fitz/pixmap.c -@@ -1104,6 +1104,7 @@ fz_subsample_pixmap_ARM(unsigned char *ptr, int w, int h, int f, int factor, - "@STACK:r1,<9>,factor,n,fwd,back,back2,fwd2,divX,back4,fwd4,fwd3,divY,back5,divXY\n" - "ldr r4, [r13,#4*22] @ r4 = divXY \n" - "ldr r5, [r13,#4*11] @ for (nn = n; nn > 0; n--) { \n" -+ "ldr r8, [r13,#4*17] @ r8 = back4 \n" - "18: @ \n" - "mov r14,#0 @ r14= v = 0 \n" - "sub r5, r5, r1, LSL #8 @ for (xx = x; xx > 0; x--) { \n" -@@ -1120,7 +1121,7 @@ fz_subsample_pixmap_ARM(unsigned char *ptr, int w, int h, int f, int factor, - "mul r14,r4, r14 @ r14= v *= divX \n" - "mov r14,r14,LSR #16 @ r14= v >>= 16 \n" - "strb r14,[r9], #1 @ *d++ = r14 \n" -- "sub r0, r0, r8 @ s -= back2 \n" -+ "sub r0, r0, r8 @ s -= back4 \n" - "subs r5, r5, #1 @ n-- \n" - "bgt 18b @ } \n" - "21: @ \n" -@@ -1249,6 +1250,7 @@ fz_subsample_pixmap(fz_context *ctx, fz_pixmap *tile, int factor) - x += f; - if (x > 0) - { -+ int back4 = x * n - 1; - div = x * y; - for (nn = n; nn > 0; nn--) - { -@@ -1263,7 +1265,7 @@ fz_subsample_pixmap(fz_context *ctx, fz_pixmap *tile, int factor) - s -= back5; - } - *d++ = v / div; -- s -= back2; -+ s -= back4; - } - } - } --- -2.12.0 - diff --git a/gnu/packages/patches/mupdf-CVE-2017-5991.patch b/gnu/packages/patches/mupdf-CVE-2017-5991.patch deleted file mode 100644 index 1fa6dc3466..0000000000 --- a/gnu/packages/patches/mupdf-CVE-2017-5991.patch +++ /dev/null @@ -1,101 +0,0 @@ -Fix CVE-2017-5991: - -https://bugs.ghostscript.com/show_bug.cgi?id=697500 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5991 -https://security-tracker.debian.org/tracker/CVE-2017-5991 - -Patch lifted from upstream source repository: - -http://git.ghostscript.com/?p=mupdf.git;h=1912de5f08e90af1d9d0a9791f58ba3afdb9d465 - -From 1912de5f08e90af1d9d0a9791f58ba3afdb9d465 Mon Sep 17 00:00:00 2001 -From: Robin Watts <robin.watts@artifex.com> -Date: Thu, 9 Feb 2017 15:49:15 +0000 -Subject: [PATCH] Bug 697500: Fix NULL ptr access. - -Cope better with errors during rendering - avoid letting the -gstate stack get out of sync. - -This avoids us ever getting into the situation of popping -a clip when we should be popping a mask or a group. This was -causing an unexpected case in the painting. ---- - source/pdf/pdf-op-run.c | 26 ++++++++++++++++++-------- - 1 file changed, 18 insertions(+), 8 deletions(-) - -diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c -index a3ea895d..f1eac8d3 100644 ---- a/source/pdf/pdf-op-run.c -+++ b/source/pdf/pdf-op-run.c -@@ -1213,6 +1213,7 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf - pdf_run_processor *pr = (pdf_run_processor *)proc; - pdf_gstate *gstate = NULL; - int oldtop = 0; -+ int oldbot = -1; - fz_matrix local_transform = *transform; - softmask_save softmask = { NULL }; - int gparent_save; -@@ -1232,16 +1233,17 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf - fz_var(cleanup_state); - fz_var(gstate); - fz_var(oldtop); -+ fz_var(oldbot); - - gparent_save = pr->gparent; - pr->gparent = pr->gtop; -+ oldtop = pr->gtop; - - fz_try(ctx) - { - pdf_gsave(ctx, pr); - - gstate = pr->gstate + pr->gtop; -- oldtop = pr->gtop; - - pdf_xobject_bbox(ctx, xobj, &xobj_bbox); - pdf_xobject_matrix(ctx, xobj, &xobj_matrix); -@@ -1302,12 +1304,25 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf - - doc = pdf_get_bound_document(ctx, xobj->obj); - -+ oldbot = pr->gbot; -+ pr->gbot = pr->gtop; -+ - pdf_process_contents(ctx, (pdf_processor*)pr, doc, resources, xobj->obj, NULL); - } - fz_always(ctx) - { -+ /* Undo any gstate mismatches due to the pdf_process_contents call */ -+ if (oldbot != -1) -+ { -+ while (pr->gtop > pr->gbot) -+ { -+ pdf_grestore(ctx, pr); -+ } -+ pr->gbot = oldbot; -+ } -+ - if (cleanup_state >= 3) -- pdf_grestore(ctx, pr); /* Remove the clippath */ -+ pdf_grestore(ctx, pr); /* Remove the state we pushed for the clippath */ - - /* wrap up transparency stacks */ - if (transparency) -@@ -1341,13 +1356,8 @@ pdf_run_xobject(fz_context *ctx, pdf_run_processor *proc, pdf_xobject *xobj, pdf - pr->gstate[pr->gparent].ctm = gparent_save_ctm; - pr->gparent = gparent_save; - -- if (gstate) -- { -- while (oldtop < pr->gtop) -- pdf_grestore(ctx, pr); -- -+ while (oldtop < pr->gtop) - pdf_grestore(ctx, pr); -- } - - pdf_unmark_obj(ctx, xobj->obj); - } --- -2.12.0 - diff --git a/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch b/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch index d97c1cb348..0b5b735ff3 100644 --- a/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch +++ b/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch @@ -13,17 +13,15 @@ diff --git a/source/fitz/load-jpx.c b/source/fitz/load-jpx.c index 6b92e5c..72dea50 100644 --- a/source/fitz/load-jpx.c +++ b/source/fitz/load-jpx.c -@@ -1,13 +1,5 @@ - #include "mupdf/fitz.h" +@@ -444,11 +444,6 @@ + + #else /* HAVE_LURATECH */ --/* Without the definition of OPJ_STATIC, compilation fails on windows -- * due to the use of __stdcall. We believe it is required on some -- * linux toolchains too. */ -#define OPJ_STATIC --#ifndef _MSC_VER +-#define OPJ_HAVE_INTTYPES_H +-#if !defined(_WIN32) && !defined(_WIN64) -#define OPJ_HAVE_STDINT_H -#endif -- - #include <openjpeg.h> + #define USE_JPIP - static void fz_opj_error_callback(const char *msg, void *client_data) + #include <openjpeg.h> diff --git a/gnu/packages/patches/mupdf-mujs-CVE-2016-10132.patch b/gnu/packages/patches/mupdf-mujs-CVE-2016-10132.patch deleted file mode 100644 index e752e57ec5..0000000000 --- a/gnu/packages/patches/mupdf-mujs-CVE-2016-10132.patch +++ /dev/null @@ -1,188 +0,0 @@ -Fix CVE-2016-10132: - -https://bugs.ghostscript.com/show_bug.cgi?id=697381 -http://seclists.org/oss-sec/2017/q1/74 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10132 - -Patch lifted from upstream source repository: - -http://git.ghostscript.com/?p=mujs.git;h=fd003eceda531e13fbdd1aeb6e9c73156496e569 - -From fd003eceda531e13fbdd1aeb6e9c73156496e569 Mon Sep 17 00:00:00 2001 -From: Tor Andersson <tor@ccxvii.net> -Date: Fri, 2 Dec 2016 14:56:20 -0500 -Subject: [PATCH] Fix 697381: check allocation when compiling regular - expressions. - -Also use allocator callback function. ---- - thirdparty/mujs/jsgc.c | 2 +- - thirdparty/mujs/jsregexp.c | 2 +- - thirdparty/mujs/jsstate.c | 6 ------ - thirdparty/mujs/regexp.c | 45 +++++++++++++++++++++++++++++++++++---------- - thirdparty/mujs/regexp.h | 7 +++++++ - 5 files changed, 44 insertions(+), 18 deletions(-) - -diff --git a/thirdparty/mujs/jsgc.c b/thirdparty/mujs/jsgc.c -index 4f7e7dc..f80111e 100644 ---- a/thirdparty/mujs/jsgc.c -+++ b/thirdparty/mujs/jsgc.c -@@ -46,7 +46,7 @@ static void jsG_freeobject(js_State *J, js_Object *obj) - jsG_freeproperty(J, obj->head); - if (obj->type == JS_CREGEXP) { - js_free(J, obj->u.r.source); -- js_regfree(obj->u.r.prog); -+ js_regfreex(J->alloc, J->actx, obj->u.r.prog); - } - if (obj->type == JS_CITERATOR) - jsG_freeiterator(J, obj->u.iter.head); -diff --git a/thirdparty/mujs/jsregexp.c b/thirdparty/mujs/jsregexp.c -index a2d5156..7b09c06 100644 ---- a/thirdparty/mujs/jsregexp.c -+++ b/thirdparty/mujs/jsregexp.c -@@ -16,7 +16,7 @@ void js_newregexp(js_State *J, const char *pattern, int flags) - if (flags & JS_REGEXP_I) opts |= REG_ICASE; - if (flags & JS_REGEXP_M) opts |= REG_NEWLINE; - -- prog = js_regcomp(pattern, opts, &error); -+ prog = js_regcompx(J->alloc, J->actx, pattern, opts, &error); - if (!prog) - js_syntaxerror(J, "regular expression: %s", error); - -diff --git a/thirdparty/mujs/jsstate.c b/thirdparty/mujs/jsstate.c -index 638cab3..fd5bcf6 100644 ---- a/thirdparty/mujs/jsstate.c -+++ b/thirdparty/mujs/jsstate.c -@@ -9,12 +9,6 @@ - - static void *js_defaultalloc(void *actx, void *ptr, int size) - { -- if (size == 0) { -- free(ptr); -- return NULL; -- } -- if (!ptr) -- return malloc((size_t)size); - return realloc(ptr, (size_t)size); - } - -diff --git a/thirdparty/mujs/regexp.c b/thirdparty/mujs/regexp.c -index 9852be2..01c18a3 100644 ---- a/thirdparty/mujs/regexp.c -+++ b/thirdparty/mujs/regexp.c -@@ -807,23 +807,31 @@ static void dumpprog(Reprog *prog) - } - #endif - --Reprog *regcomp(const char *pattern, int cflags, const char **errorp) -+Reprog *regcompx(void *(*alloc)(void *ctx, void *p, int n), void *ctx, -+ const char *pattern, int cflags, const char **errorp) - { - struct cstate g; - Renode *node; - Reinst *split, *jump; - int i; - -- g.prog = malloc(sizeof (Reprog)); -- g.pstart = g.pend = malloc(sizeof (Renode) * strlen(pattern) * 2); -+ g.pstart = NULL; -+ g.prog = NULL; - - if (setjmp(g.kaboom)) { - if (errorp) *errorp = g.error; -- free(g.pstart); -- free(g.prog); -+ alloc(ctx, g.pstart, 0); -+ alloc(ctx, g.prog, 0); - return NULL; - } - -+ g.prog = alloc(ctx, NULL, sizeof (Reprog)); -+ if (!g.prog) -+ die(&g, "cannot allocate regular expression"); -+ g.pstart = g.pend = alloc(ctx, NULL, sizeof (Renode) * strlen(pattern) * 2); -+ if (!g.pstart) -+ die(&g, "cannot allocate regular expression parse list"); -+ - g.source = pattern; - g.ncclass = 0; - g.nsub = 1; -@@ -840,7 +848,9 @@ Reprog *regcomp(const char *pattern, int cflags, const char **errorp) - die(&g, "syntax error"); - - g.prog->nsub = g.nsub; -- g.prog->start = g.prog->end = malloc((count(node) + 6) * sizeof (Reinst)); -+ g.prog->start = g.prog->end = alloc(ctx, NULL, (count(node) + 6) * sizeof (Reinst)); -+ if (!g.prog->start) -+ die(&g, "cannot allocate regular expression instruction list"); - - split = emit(g.prog, I_SPLIT); - split->x = split + 3; -@@ -859,20 +869,35 @@ Reprog *regcomp(const char *pattern, int cflags, const char **errorp) - dumpprog(g.prog); - #endif - -- free(g.pstart); -+ alloc(ctx, g.pstart, 0); - - if (errorp) *errorp = NULL; - return g.prog; - } - --void regfree(Reprog *prog) -+void regfreex(void *(*alloc)(void *ctx, void *p, int n), void *ctx, Reprog *prog) - { - if (prog) { -- free(prog->start); -- free(prog); -+ alloc(ctx, prog->start, 0); -+ alloc(ctx, prog, 0); - } - } - -+static void *default_alloc(void *ctx, void *p, int n) -+{ -+ return realloc(p, (size_t)n); -+} -+ -+Reprog *regcomp(const char *pattern, int cflags, const char **errorp) -+{ -+ return regcompx(default_alloc, NULL, pattern, cflags, errorp); -+} -+ -+void regfree(Reprog *prog) -+{ -+ regfreex(default_alloc, NULL, prog); -+} -+ - /* Match */ - - static int isnewline(int c) -diff --git a/thirdparty/mujs/regexp.h b/thirdparty/mujs/regexp.h -index 4bb4615..6bb73e8 100644 ---- a/thirdparty/mujs/regexp.h -+++ b/thirdparty/mujs/regexp.h -@@ -1,6 +1,8 @@ - #ifndef regexp_h - #define regexp_h - -+#define regcompx js_regcompx -+#define regfreex js_regfreex - #define regcomp js_regcomp - #define regexec js_regexec - #define regfree js_regfree -@@ -8,6 +10,11 @@ - typedef struct Reprog Reprog; - typedef struct Resub Resub; - -+Reprog *regcompx(void *(*alloc)(void *ctx, void *p, int n), void *ctx, -+ const char *pattern, int cflags, const char **errorp); -+void regfreex(void *(*alloc)(void *ctx, void *p, int n), void *ctx, -+ Reprog *prog); -+ - Reprog *regcomp(const char *pattern, int cflags, const char **errorp); - int regexec(Reprog *prog, const char *string, Resub *sub, int eflags); - void regfree(Reprog *prog); --- -2.9.1 - diff --git a/gnu/packages/patches/mupdf-mujs-CVE-2016-10133.patch b/gnu/packages/patches/mupdf-mujs-CVE-2016-10133.patch deleted file mode 100644 index d73849262c..0000000000 --- a/gnu/packages/patches/mupdf-mujs-CVE-2016-10133.patch +++ /dev/null @@ -1,36 +0,0 @@ -Fix CVE-2016-10133: - -https://bugs.ghostscript.com/show_bug.cgi?id=697401 -http://seclists.org/oss-sec/2017/q1/74 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10133 - -Patch lifted from upstream source repository: - -https://git.ghostscript.com/?p=mujs.git;h=77ab465f1c394bb77f00966cd950650f3f53cb24 - -From 77ab465f1c394bb77f00966cd950650f3f53cb24 Mon Sep 17 00:00:00 2001 -From: Tor Andersson <tor.andersson@gmail.com> -Date: Thu, 12 Jan 2017 14:47:01 +0100 -Subject: [PATCH] Fix 697401: Error when dropping extra arguments to - lightweight functions. - ---- - thirdparty/mujs/jsrun.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/thirdparty/mujs/jsrun.c b/thirdparty/mujs/jsrun.c -index ee80845..782a6f9 100644 ---- a/thirdparty/mujs/jsrun.c -+++ b/thirdparty/mujs/jsrun.c -@@ -937,7 +937,7 @@ static void jsR_calllwfunction(js_State *J, int n, js_Function *F, js_Environmen - jsR_savescope(J, scope); - - if (n > F->numparams) { -- js_pop(J, F->numparams - n); -+ js_pop(J, n - F->numparams); - n = F->numparams; - } - for (i = n; i < F->varlen; ++i) --- -2.9.1 - diff --git a/gnu/packages/patches/node-9077.patch b/gnu/packages/patches/node-9077.patch index e57f5caac7..6b71d48c0e 100644 --- a/gnu/packages/patches/node-9077.patch +++ b/gnu/packages/patches/node-9077.patch @@ -12,19 +12,20 @@ zlib. Using a shared zlib results in build breakage: ^ ~~~~~~~~~~~~~~~~~ 1 error generated. --- - node.gyp | 2 ++ - 1 file changed, 2 insertions(+) + node.gyp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/node.gyp b/node.gyp -index fa98547..d799ba1 100644 +index 272dc98..667c260 100644 --- a/node.gyp +++ b/node.gyp -@@ -480,6 +480,8 @@ - }], - [ 'node_shared_zlib=="false"', { - 'dependencies': [ 'deps/zlib/zlib.gyp:zlib' ], -+ }, { -+ 'defines': [ 'ZLIB_CONST' ], - }], - - [ 'node_shared_http_parser=="false"', { +@@ -653,7 +653,8 @@ + [ 'node_shared_zlib=="false"', { + 'dependencies': [ + 'deps/zlib/zlib.gyp:zlib', +- ] ++ ]}, { ++ 'defines': [ 'ZLIB_CONST' ], + }], + [ 'node_shared_openssl=="false"', { + 'dependencies': [ diff --git a/gnu/packages/patches/nss-disable-long-b64-tests.patch b/gnu/packages/patches/nss-disable-long-b64-tests.patch new file mode 100644 index 0000000000..612d94128d --- /dev/null +++ b/gnu/packages/patches/nss-disable-long-b64-tests.patch @@ -0,0 +1,34 @@ +Disable long b64 tests, which consistently fail on armhf. +This is based on an excerpt of the following upstream patch: + + https://hg.mozilla.org/projects/nss/rev/00b2cc2b33c7 + +(we exclude the part of the upstream patch that reverts +an earlier failed attempt, and adapt the file names) + +diff --git a/gtests/util_gtest/util_b64_unittest.cc b/gtests/util_gtest/util_b64_unittest.cc +--- a/nss/gtests/util_gtest/util_b64_unittest.cc ++++ b/nss/gtests/util_gtest/util_b64_unittest.cc +@@ -63,17 +63,19 @@ TEST_F(B64EncodeDecodeTest, EncDecTest) + + TEST_F(B64EncodeDecodeTest, FakeDecTest) { EXPECT_TRUE(TestFakeDecode(100)); } + + TEST_F(B64EncodeDecodeTest, FakeEncDecTest) { + EXPECT_TRUE(TestFakeEncode(100)); + } + + // These takes a while ... +-TEST_F(B64EncodeDecodeTest, LongFakeDecTest1) { ++TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeDecTest1) { + EXPECT_TRUE(TestFakeDecode(0x66666666)); + } +-TEST_F(B64EncodeDecodeTest, LongFakeEncDecTest1) { TestFakeEncode(0x3fffffff); } +-TEST_F(B64EncodeDecodeTest, LongFakeEncDecTest2) { ++TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeEncDecTest1) { ++ TestFakeEncode(0x3fffffff); ++} ++TEST_F(B64EncodeDecodeTest, DISABLED_LongFakeEncDecTest2) { + EXPECT_FALSE(TestFakeEncode(0x40000000)); + } + + } // namespace nss_test diff --git a/gnu/packages/patches/nss-increase-test-timeout.patch b/gnu/packages/patches/nss-increase-test-timeout.patch index c6aac6ac00..1e24940322 100644 --- a/gnu/packages/patches/nss-increase-test-timeout.patch +++ b/gnu/packages/patches/nss-increase-test-timeout.patch @@ -14,12 +14,12 @@ Increase timeouts to increase chances of a successful build. } void TlsConnectTestBase::EnableExtendedMasterSecret() { -@@ -387,7 +387,7 @@ - } else { - fail_agent = server_; +@@ -385,7 +385,7 @@ + if (failing_side == TlsAgent::CLIENT) { + failing_agent = client_; } -- ASSERT_TRUE_WAIT(fail_agent->state() == TlsAgent::STATE_ERROR, 5000); -+ ASSERT_TRUE_WAIT(fail_agent->state() == TlsAgent::STATE_ERROR, 25000); +- ASSERT_TRUE_WAIT(failing_agent->state() == TlsAgent::STATE_ERROR, 5000); ++ ASSERT_TRUE_WAIT(failing_agent->state() == TlsAgent::STATE_ERROR, 25000); } void TlsConnectTestBase::ConfigureVersion(uint16_t version) { diff --git a/gnu/packages/patches/password-store-gnupg-compat.patch b/gnu/packages/patches/password-store-gnupg-compat.patch deleted file mode 100644 index c314ba6647..0000000000 --- a/gnu/packages/patches/password-store-gnupg-compat.patch +++ /dev/null @@ -1,53 +0,0 @@ -Copied from upstream mailing list: -https://lists.zx2c4.com/pipermail/password-store/2017-March/002844.html. - -The patch actually restores compatibility with GnuPG 2.1.19, the '2.2.19' in -the commit message is a typo. - -From 8723d8e8192683891904aff321446b0fac37d1ad Mon Sep 17 00:00:00 2001 -From: Andreas Stieger <astieger@suse.com> -Date: Fri, 10 Mar 2017 15:43:26 +0100 -Subject: [PATCH] Fix compatibility with GnuPG 2.2.19 - -GnuPG 2.2.19 added a warning when no command was given. - -* src/password-store.sh (reencrypt_path): Add --decrypt to --list-only -* tests/t0300-reencryption.sh (gpg_keys_from_encrypted_file): same - -https://bugs.gnupg.org/gnupg/msg9873 -http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=810adfd47801fc01e45fb71af9f05c91f7890cdb -https://bugzilla.suse.com/show_bug.cgi?id=1028867 ---- - src/password-store.sh | 2 +- - tests/t0300-reencryption.sh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/password-store.sh b/src/password-store.sh -index 1ab6fb5..bad8d4f 100755 ---- a/src/password-store.sh -+++ b/src/password-store.sh -@@ -125,7 +125,7 @@ reencrypt_path() { - done - gpg_keys="$($GPG $PASSWORD_STORE_GPG_OPTS --list-keys --with-colons "${GPG_RECIPIENTS[@]}" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u)" - fi -- current_keys="$($GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u)" -+ current_keys="$($GPG $PASSWORD_STORE_GPG_OPTS -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u)" - - if [[ $gpg_keys != "$current_keys" ]]; then - echo "$passfile_display: reencrypting to ${gpg_keys//$'\n'/ }" -diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh -index 9d46580..6d5811d 100755 ---- a/tests/t0300-reencryption.sh -+++ b/tests/t0300-reencryption.sh -@@ -10,7 +10,7 @@ canonicalize_gpg_keys() { - $GPG --list-keys --with-colons "$@" | sed -n 's/sub:[^:]*:[^:]*:[^:]*:\([^:]*\):[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[a-zA-Z]*e[a-zA-Z]*:.*/\1/p' | LC_ALL=C sort -u - } - gpg_keys_from_encrypted_file() { -- $GPG -v --no-secmem-warning --no-permission-warning --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u -+ $GPG -v --no-secmem-warning --no-permission-warning --decrypt --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | LC_ALL=C sort -u - } - gpg_keys_from_group() { - local output="$($GPG --list-config --with-colons | sed -n "s/^cfg:group:$1:\\(.*\\)/\\1/p" | head -n 1)" --- -2.12.0 - diff --git a/gnu/packages/patches/pcre-CVE-2017-7186.patch b/gnu/packages/patches/pcre-CVE-2017-7186.patch new file mode 100644 index 0000000000..d23aa10374 --- /dev/null +++ b/gnu/packages/patches/pcre-CVE-2017-7186.patch @@ -0,0 +1,56 @@ +Patch for <https://nvd.nist.gov/vuln/detail?vulnId=CVE-2017-7186> +from <https://vcs.pcre.org/pcre?view=revision&revision=1688>. + +--- trunk/pcre_internal.h 2016/05/21 13:34:44 1649 ++++ trunk/pcre_internal.h 2017/02/24 17:30:30 1688 +@@ -2772,6 +2772,9 @@ + extern const pcre_uint16 PRIV(ucd_stage2)[]; + extern const pcre_uint32 PRIV(ucp_gentype)[]; + extern const pcre_uint32 PRIV(ucp_gbtable)[]; ++#ifdef COMPILE_PCRE32 ++extern const ucd_record PRIV(dummy_ucd_record)[]; ++#endif + #ifdef SUPPORT_JIT + extern const int PRIV(ucp_typerange)[]; + #endif +@@ -2780,9 +2783,15 @@ + /* UCD access macros */ + + #define UCD_BLOCK_SIZE 128 +-#define GET_UCD(ch) (PRIV(ucd_records) + \ ++#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \ + PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \ + UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE]) ++ ++#ifdef COMPILE_PCRE32 ++#define GET_UCD(ch) ((ch > 0x10ffff)? PRIV(dummy_ucd_record) : REAL_GET_UCD(ch)) ++#else ++#define GET_UCD(ch) REAL_GET_UCD(ch) ++#endif + + #define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype + #define UCD_SCRIPT(ch) GET_UCD(ch)->script + +--- trunk/pcre_ucd.c 2014/06/19 07:51:39 1490 ++++ trunk/pcre_ucd.c 2017/02/24 17:30:30 1688 +@@ -38,6 +38,20 @@ + const pcre_uint32 PRIV(ucd_caseless_sets)[] = {0}; + #else + ++/* If the 32-bit library is run in non-32-bit mode, character values ++greater than 0x10ffff may be encountered. For these we set up a ++special record. */ ++ ++#ifdef COMPILE_PCRE32 ++const ucd_record PRIV(dummy_ucd_record)[] = {{ ++ ucp_Common, /* script */ ++ ucp_Cn, /* type unassigned */ ++ ucp_gbOther, /* grapheme break property */ ++ 0, /* case set */ ++ 0, /* other case */ ++ }}; ++#endif ++ + /* When recompiling tables with a new Unicode version, please check the + types in this structure definition from pcre_internal.h (the actual + field names will be different): diff --git a/gnu/packages/patches/pcre2-CVE-2017-7186.patch b/gnu/packages/patches/pcre2-CVE-2017-7186.patch new file mode 100644 index 0000000000..5c16955aaa --- /dev/null +++ b/gnu/packages/patches/pcre2-CVE-2017-7186.patch @@ -0,0 +1,68 @@ +Patch for <https://nvd.nist.gov/vuln/detail?vulnId=CVE-2017-7186> +taken from <https://vcs.pcre.org/pcre2?view=revision&revision=670>. + +--- trunk/src/pcre2_internal.h 2016/11/19 12:46:24 600 ++++ trunk/src/pcre2_internal.h 2017/02/24 18:25:32 670 +@@ -1774,10 +1774,17 @@ + /* UCD access macros */ + + #define UCD_BLOCK_SIZE 128 +-#define GET_UCD(ch) (PRIV(ucd_records) + \ ++#define REAL_GET_UCD(ch) (PRIV(ucd_records) + \ + PRIV(ucd_stage2)[PRIV(ucd_stage1)[(int)(ch) / UCD_BLOCK_SIZE] * \ + UCD_BLOCK_SIZE + (int)(ch) % UCD_BLOCK_SIZE]) + ++#if PCRE2_CODE_UNIT_WIDTH == 32 ++#define GET_UCD(ch) ((ch > MAX_UTF_CODE_POINT)? \ ++ PRIV(dummy_ucd_record) : REAL_GET_UCD(ch)) ++#else ++#define GET_UCD(ch) REAL_GET_UCD(ch) ++#endif ++ + #define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype + #define UCD_SCRIPT(ch) GET_UCD(ch)->script + #define UCD_CATEGORY(ch) PRIV(ucp_gentype)[UCD_CHARTYPE(ch)] +@@ -1834,6 +1841,9 @@ + #define _pcre2_default_compile_context PCRE2_SUFFIX(_pcre2_default_compile_context_) + #define _pcre2_default_match_context PCRE2_SUFFIX(_pcre2_default_match_context_) + #define _pcre2_default_tables PCRE2_SUFFIX(_pcre2_default_tables_) ++#if PCRE2_CODE_UNIT_WIDTH == 32 ++#define _pcre2_dummy_ucd_record PCRE2_SUFFIX(_pcre2_dummy_ucd_record_) ++#endif + #define _pcre2_hspace_list PCRE2_SUFFIX(_pcre2_hspace_list_) + #define _pcre2_vspace_list PCRE2_SUFFIX(_pcre2_vspace_list_) + #define _pcre2_ucd_caseless_sets PCRE2_SUFFIX(_pcre2_ucd_caseless_sets_) +@@ -1858,6 +1868,9 @@ + extern const uint32_t PRIV(vspace_list)[]; + extern const uint32_t PRIV(ucd_caseless_sets)[]; + extern const ucd_record PRIV(ucd_records)[]; ++#if PCRE2_CODE_UNIT_WIDTH == 32 ++extern const ucd_record PRIV(dummy_ucd_record)[]; ++#endif + extern const uint8_t PRIV(ucd_stage1)[]; + extern const uint16_t PRIV(ucd_stage2)[]; + extern const uint32_t PRIV(ucp_gbtable)[]; + +--- trunk/src/pcre2_ucd.c 2015/07/17 15:44:51 316 ++++ trunk/src/pcre2_ucd.c 2017/02/24 18:25:32 670 +@@ -41,6 +41,20 @@ + + const char *PRIV(unicode_version) = "8.0.0"; + ++/* If the 32-bit library is run in non-32-bit mode, character values ++greater than 0x10ffff may be encountered. For these we set up a ++special record. */ ++ ++#if PCRE2_CODE_UNIT_WIDTH == 32 ++const ucd_record PRIV(dummy_ucd_record)[] = {{ ++ ucp_Common, /* script */ ++ ucp_Cn, /* type unassigned */ ++ ucp_gbOther, /* grapheme break property */ ++ 0, /* case set */ ++ 0, /* other case */ ++ }}; ++#endif ++ + /* When recompiling tables with a new Unicode version, please check the + types in this structure definition from pcre2_internal.h (the actual + field names will be different): diff --git a/gnu/packages/patches/pcre2-CVE-2017-8786.patch b/gnu/packages/patches/pcre2-CVE-2017-8786.patch new file mode 100644 index 0000000000..6071d58f07 --- /dev/null +++ b/gnu/packages/patches/pcre2-CVE-2017-8786.patch @@ -0,0 +1,155 @@ +Fix CVE-2017-8786: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8786 +https://bugs.exim.org/show_bug.cgi?id=2079 +https://blogs.gentoo.org/ago/2017/04/29/libpcre-heap-based-buffer-overflow-write-in-pcre2test-c/ + +Patch copied from upstream source repository: + +https://vcs.pcre.org/pcre2?view=revision&revision=696 +https://vcs.pcre.org/pcre2?view=revision&revision=697 + +--- trunk/doc/pcre2api.3 2017/03/21 16:48:40 695 ++++ trunk/doc/pcre2api.3 2017/03/21 17:46:21 696 +@@ -1,4 +1,4 @@ +-.TH PCRE2API 3 "24 December 2016" "PCRE2 10.23" ++.TH PCRE2API 3 "21 March 2017" "PCRE2 10.30" + .SH NAME + PCRE2 - Perl-compatible regular expressions (revised API) + .sp +@@ -2633,8 +2633,8 @@ + A text message for an error code from any PCRE2 function (compile, match, or + auxiliary) can be obtained by calling \fBpcre2_get_error_message()\fP. The code + is passed as the first argument, with the remaining two arguments specifying a +-code unit buffer and its length, into which the text message is placed. Note +-that the message is returned in code units of the appropriate width for the ++code unit buffer and its length in code units, into which the text message is ++placed. The message is returned in code units of the appropriate width for the + library that is being used. + .P + The returned message is terminated with a trailing zero, and the function +@@ -3321,6 +3321,6 @@ + .rs + .sp + .nf +-Last updated: 23 December 2016 +-Copyright (c) 1997-2016 University of Cambridge. ++Last updated: 21 March 2017 ++Copyright (c) 1997-2017 University of Cambridge. + .fi +--- trunk/src/pcre2_error.c 2017/03/21 16:48:40 695 ++++ trunk/src/pcre2_error.c 2017/03/21 17:46:21 696 +@@ -271,7 +271,7 @@ + Arguments: + enumber error number + buffer where to put the message (zero terminated) +- size size of the buffer ++ size size of the buffer in code units + + Returns: length of message if all is well + negative on error +--- trunk/src/pcre2test.c 2017/03/21 17:46:21 696 ++++ trunk/src/pcre2test.c 2017/03/21 18:36:13 697 +@@ -1017,9 +1017,9 @@ + if (test_mode == PCRE8_MODE) \ + r = pcre2_get_error_message_8(a,G(b,8),G(G(b,8),_size)); \ + else if (test_mode == PCRE16_MODE) \ +- r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size)); \ ++ r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size/2)); \ + else \ +- r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size)) ++ r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size/4)) + + #define PCRE2_GET_OVECTOR_COUNT(a,b) \ + if (test_mode == PCRE8_MODE) \ +@@ -1399,6 +1399,9 @@ + + /* ----- Common macros for two-mode cases ----- */ + ++#define BYTEONE (BITONE/8) ++#define BYTETWO (BITTWO/8) ++ + #define CASTFLD(t,a,b) \ + ((test_mode == G(G(PCRE,BITONE),_MODE))? (t)(G(a,BITONE)->b) : \ + (t)(G(a,BITTWO)->b)) +@@ -1481,9 +1484,9 @@ + + #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \ + if (test_mode == G(G(PCRE,BITONE),_MODE)) \ +- r = G(pcre2_get_error_message_,BITONE)(a,G(b,BITONE),G(G(b,BITONE),_size)); \ ++ r = G(pcre2_get_error_message_,BITONE)(a,G(b,BITONE),G(G(b,BITONE),_size/BYTEONE)); \ + else \ +- r = G(pcre2_get_error_message_,BITTWO)(a,G(b,BITTWO),G(G(b,BITTWO),_size)) ++ r = G(pcre2_get_error_message_,BITTWO)(a,G(b,BITTWO),G(G(b,BITTWO),_size/BYTETWO)) + + #define PCRE2_GET_OVECTOR_COUNT(a,b) \ + if (test_mode == G(G(PCRE,BITONE),_MODE)) \ +@@ -1904,7 +1907,7 @@ + #define PCRE2_DFA_MATCH(a,b,c,d,e,f,g,h,i,j) \ + a = pcre2_dfa_match_16(G(b,16),(PCRE2_SPTR16)c,d,e,f,G(g,16),h,i,j) + #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \ +- r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size)) ++ r = pcre2_get_error_message_16(a,G(b,16),G(G(b,16),_size/2)) + #define PCRE2_GET_OVECTOR_COUNT(a,b) a = pcre2_get_ovector_count_16(G(b,16)) + #define PCRE2_GET_STARTCHAR(a,b) a = pcre2_get_startchar_16(G(b,16)) + #define PCRE2_JIT_COMPILE(r,a,b) r = pcre2_jit_compile_16(G(a,16),b) +@@ -2000,7 +2003,7 @@ + #define PCRE2_DFA_MATCH(a,b,c,d,e,f,g,h,i,j) \ + a = pcre2_dfa_match_32(G(b,32),(PCRE2_SPTR32)c,d,e,f,G(g,32),h,i,j) + #define PCRE2_GET_ERROR_MESSAGE(r,a,b) \ +- r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size)) ++ r = pcre2_get_error_message_32(a,G(b,32),G(G(b,32),_size/4)) + #define PCRE2_GET_OVECTOR_COUNT(a,b) a = pcre2_get_ovector_count_32(G(b,32)) + #define PCRE2_GET_STARTCHAR(a,b) a = pcre2_get_startchar_32(G(b,32)) + #define PCRE2_JIT_COMPILE(r,a,b) r = pcre2_jit_compile_32(G(a,32),b) +--- trunk/src/pcre2test.c 2017/03/21 16:48:40 695 ++++ trunk/src/pcre2test.c 2017/03/21 17:46:21 696 +@@ -2889,7 +2889,7 @@ + { + if (pbuffer32 != NULL) free(pbuffer32); + pbuffer32_size = 4*len + 4; +- if (pbuffer32_size < 256) pbuffer32_size = 256; ++ if (pbuffer32_size < 512) pbuffer32_size = 512; + pbuffer32 = (uint32_t *)malloc(pbuffer32_size); + if (pbuffer32 == NULL) + { +@@ -7600,7 +7600,8 @@ + int errcode; + char *endptr; + +-/* Ensure the relevant non-8-bit buffer is available. */ ++/* Ensure the relevant non-8-bit buffer is available. Ensure that it is at ++least 128 code units, because it is used for retrieving error messages. */ + + #ifdef SUPPORT_PCRE2_16 + if (test_mode == PCRE16_MODE) +@@ -7620,7 +7621,7 @@ + #ifdef SUPPORT_PCRE2_32 + if (test_mode == PCRE32_MODE) + { +- pbuffer32_size = 256; ++ pbuffer32_size = 512; + pbuffer32 = (uint32_t *)malloc(pbuffer32_size); + if (pbuffer32 == NULL) + { +--- trunk/testdata/testinput2 2017/03/21 16:48:40 695 ++++ trunk/testdata/testinput2 2017/03/21 17:46:21 696 +@@ -5017,4 +5017,6 @@ + + /(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended + ++/\g{3/ ++ + # End of testinput2 +--- trunk/testdata/testoutput2 2017/03/21 16:48:40 695 ++++ trunk/testdata/testoutput2 2017/03/21 17:46:21 696 +@@ -15570,6 +15570,9 @@ + + /(?<!\1((?U)1((?U))))(*F)/never_backslash_c,alt_bsux,anchored,extended + ++/\g{3/ ++Failed: error 157 at offset 2: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number ++ + # End of testinput2 + Error -63: PCRE2_ERROR_BADDATA (unknown error number) + Error -62: bad serialized data diff --git a/gnu/packages/patches/perl-net-dns-resolver-programmable-Fix-broken-interface.patch b/gnu/packages/patches/perl-net-dns-resolver-programmable-fix.patch index 371693dca1..371693dca1 100644 --- a/gnu/packages/patches/perl-net-dns-resolver-programmable-Fix-broken-interface.patch +++ b/gnu/packages/patches/perl-net-dns-resolver-programmable-fix.patch diff --git a/gnu/packages/patches/policycoreutils-make-sepolicy-use-python3.patch b/gnu/packages/patches/policycoreutils-make-sepolicy-use-python3.patch new file mode 100644 index 0000000000..befe9fbb2a --- /dev/null +++ b/gnu/packages/patches/policycoreutils-make-sepolicy-use-python3.patch @@ -0,0 +1,335 @@ +Downloaded from https://anonscm.debian.org/cgit/selinux/policycoreutils.git/plain/debian/patches/policycoreutils-Make-sepolicy-work-with-python3.patch + +From 2d7ca0b862a35196d562f59bd098df011fd7f0e6 Mon Sep 17 00:00:00 2001 +From: Laurent Bigonville <bigon@bigon.be> +Date: Mon, 7 Nov 2016 10:51:08 +0100 +Subject: [PATCH] policycoreutils: Make sepolicy work with python3 + +Add python3 support for sepolicy + +Signed-off-by: Laurent Bigonville <bigon@bigon.be> +--- + policycoreutils/sepolicy/selinux_client.py | 6 ++-- + policycoreutils/sepolicy/sepolicy.py | 38 ++++++++++++------------ + policycoreutils/sepolicy/sepolicy/__init__.py | 16 ++++++---- + policycoreutils/sepolicy/sepolicy/communicate.py | 4 +-- + policycoreutils/sepolicy/sepolicy/generate.py | 30 +++++++++---------- + policycoreutils/sepolicy/sepolicy/interface.py | 14 ++++++--- + policycoreutils/sepolicy/sepolicy/manpage.py | 7 +++-- + 7 files changed, 65 insertions(+), 50 deletions(-) + +diff --git a/policycoreutils/sepolicy/selinux_client.py b/policycoreutils/sepolicy/selinux_client.py +index 7f4a91c..dc29f28 100644 +--- a/sepolicy/selinux_client.py ++++ b/sepolicy/selinux_client.py +@@ -39,6 +39,6 @@ if __name__ == "__main__": + try: + dbus_proxy = SELinuxDBus() + resp = dbus_proxy.customized() +- print convert_customization(resp) +- except dbus.DBusException, e: +- print e ++ print(convert_customization(resp)) ++ except dbus.DBusException as e: ++ print(e) +diff --git a/policycoreutils/sepolicy/sepolicy.py b/policycoreutils/sepolicy/sepolicy.py +index 3e502a7..5bf9b52 100755 +--- a/sepolicy/sepolicy.py ++++ b/sepolicy/sepolicy.py +@@ -262,7 +262,7 @@ def _print_net(src, protocol, perm): + if len(portdict) > 0: + bold_start = "\033[1m" + bold_end = "\033[0;0m" +- print "\n" + bold_start + "%s: %s %s" % (src, protocol, perm) + bold_end ++ print("\n" + bold_start + "%s: %s %s" % (src, protocol, perm) + bold_end) + port_strings = [] + boolean_text = "" + for p in portdict: +@@ -275,7 +275,7 @@ def _print_net(src, protocol, perm): + port_strings.append("%s (%s)" % (", ".join(recs), t)) + port_strings.sort(numcmp) + for p in port_strings: +- print "\t" + p ++ print("\t" + p) + + + def network(args): +@@ -286,7 +286,7 @@ def network(args): + if i[0] not in all_ports: + all_ports.append(i[0]) + all_ports.sort() +- print "\n".join(all_ports) ++ print("\n".join(all_ports)) + + for port in args.port: + found = False +@@ -297,18 +297,18 @@ def network(args): + else: + range = "%s-%s" % (i[0], i[1]) + found = True +- print "%d: %s %s %s" % (port, i[2], portrecsbynum[i][0], range) ++ print("%d: %s %s %s" % (port, i[2], portrecsbynum[i][0], range)) + if not found: + if port < 500: +- print "Undefined reserved port type" ++ print("Undefined reserved port type") + else: +- print "Undefined port type" ++ print("Undefined port type") + + for t in args.type: + if (t, 'tcp') in portrecs.keys(): +- print "%s: tcp: %s" % (t, ",".join(portrecs[t, 'tcp'])) ++ print("%s: tcp: %s" % (t, ",".join(portrecs[t, 'tcp']))) + if (t, 'udp') in portrecs.keys(): +- print "%s: udp: %s" % (t, ",".join(portrecs[t, 'udp'])) ++ print( "%s: udp: %s" % (t, ",".join(portrecs[t, 'udp']))) + + for a in args.applications: + d = sepolicy.get_init_transtype(a) +@@ -357,7 +357,7 @@ def manpage(args): + + for domain in test_domains: + m = ManPage(domain, path, args.root, args.source_files, args.web) +- print m.get_man_page_path() ++ print(m.get_man_page_path()) + + if args.web: + HTMLManPages(manpage_roles, manpage_domains, path, args.os) +@@ -418,7 +418,7 @@ def communicate(args): + out = list(set(writable) & set(readable)) + + for t in out: +- print t ++ print(t) + + + def gen_communicate_args(parser): +@@ -445,7 +445,7 @@ def booleans(args): + args.booleans.sort() + + for b in args.booleans: +- print "%s=_(\"%s\")" % (b, boolean_desc(b)) ++ print("%s=_(\"%s\")" % (b, boolean_desc(b))) + + + def gen_booleans_args(parser): +@@ -484,16 +484,16 @@ def print_interfaces(interfaces, args, append=""): + for i in interfaces: + if args.verbose: + try: +- print get_interface_format_text(i + append) ++ print(get_interface_format_text(i + append)) + except KeyError: +- print i ++ print(i) + if args.compile: + try: + interface_compile_test(i) + except KeyError: +- print i ++ print(i) + else: +- print i ++ print(i) + + + def interface(args): +@@ -565,7 +565,7 @@ def generate(args): + if args.policytype in APPLICATIONS: + mypolicy.gen_writeable() + mypolicy.gen_symbols() +- print mypolicy.generate(args.path) ++ print(mypolicy.generate(args.path)) + + + def gen_interface_args(parser): +@@ -698,12 +698,12 @@ if __name__ == '__main__': + args = parser.parse_args(args=parser_args) + args.func(args) + sys.exit(0) +- except ValueError, e: ++ except ValueError as e: + sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) + sys.exit(1) +- except IOError, e: ++ except IOError as e: + sys.stderr.write("%s: %s\n" % (e.__class__.__name__, str(e))) + sys.exit(1) + except KeyboardInterrupt: +- print "Out" ++ print("Out") + sys.exit(0) +diff --git a/policycoreutils/sepolicy/sepolicy/__init__.py b/policycoreutils/sepolicy/sepolicy/__init__.py +index 8fbd5b4..fee6438 100644 +--- a/sepolicy/sepolicy/__init__.py ++++ b/sepolicy/sepolicy/__init__.py +@@ -695,7 +695,7 @@ def get_methods(): + # List of per_role_template interfaces + ifs = interfaces.InterfaceSet() + ifs.from_file(fd) +- methods = ifs.interfaces.keys() ++ methods = list(ifs.interfaces.keys()) + fd.close() + except: + sys.stderr.write("could not open interface info [%s]\n" % fn) +@@ -752,7 +752,10 @@ def get_all_entrypoint_domains(): + + + def gen_interfaces(): +- import commands ++ try: ++ from commands import getstatusoutput ++ except ImportError: ++ from subprocess import getstatusoutput + ifile = defaults.interface_info() + headers = defaults.headers() + try: +@@ -763,7 +766,7 @@ def gen_interfaces(): + + if os.getuid() != 0: + raise ValueError(_("You must regenerate interface info by running /usr/bin/sepolgen-ifgen")) +- print(commands.getstatusoutput("/usr/bin/sepolgen-ifgen")[1]) ++ print(getstatusoutput("/usr/bin/sepolgen-ifgen")[1]) + + + def gen_port_dict(): +@@ -1085,8 +1088,11 @@ def get_os_version(): + os_version = "" + pkg_name = "selinux-policy" + try: +- import commands +- rc, output = commands.getstatusoutput("rpm -q '%s'" % pkg_name) ++ try: ++ from commands import getstatusoutput ++ except ImportError: ++ from subprocess import getstatusoutput ++ rc, output = getstatusoutput("rpm -q '%s'" % pkg_name) + if rc == 0: + os_version = output.split(".")[-2] + except: +diff --git a/policycoreutils/sepolicy/sepolicy/communicate.py b/policycoreutils/sepolicy/sepolicy/communicate.py +index b96c4b9..299316e 100755 +--- a/sepolicy/sepolicy/communicate.py ++++ b/sepolicy/sepolicy/communicate.py +@@ -34,8 +34,8 @@ def usage(parser, msg): + + def expand_attribute(attribute): + try: +- return sepolicy.info(sepolicy.ATTRIBUTE, attribute)[0]["types"] +- except RuntimeError: ++ return list(next(sepolicy.info(sepolicy.ATTRIBUTE, attribute))["types"]) ++ except StopIteration: + return [attribute] + + +diff --git a/policycoreutils/sepolicy/sepolicy/generate.py b/policycoreutils/sepolicy/sepolicy/generate.py +index 65b33b6..5696110 100644 +--- a/sepolicy/sepolicy/generate.py ++++ b/sepolicy/sepolicy/generate.py +@@ -31,21 +31,21 @@ import time + import types + import platform + +-from templates import executable +-from templates import boolean +-from templates import etc_rw +-from templates import unit_file +-from templates import var_cache +-from templates import var_spool +-from templates import var_lib +-from templates import var_log +-from templates import var_run +-from templates import tmp +-from templates import rw +-from templates import network +-from templates import script +-from templates import spec +-from templates import user ++from .templates import executable ++from .templates import boolean ++from .templates import etc_rw ++from .templates import unit_file ++from .templates import var_cache ++from .templates import var_spool ++from .templates import var_lib ++from .templates import var_log ++from .templates import var_run ++from .templates import tmp ++from .templates import rw ++from .templates import network ++from .templates import script ++from .templates import spec ++from .templates import user + import sepolgen.interfaces as interfaces + import sepolgen.defaults as defaults + +diff --git a/policycoreutils/sepolicy/sepolicy/interface.py b/policycoreutils/sepolicy/sepolicy/interface.py +index c2cb971..8956f39 100644 +--- a/sepolicy/sepolicy/interface.py ++++ b/sepolicy/sepolicy/interface.py +@@ -192,10 +192,13 @@ def generate_compile_te(interface, idict, name="compiletest"): + def get_xml_file(if_file): + """ Returns xml format of interfaces for given .if policy file""" + import os +- import commands ++ try: ++ from commands import getstatusoutput ++ except ImportError: ++ from subprocess import getstatusoutput + basedir = os.path.dirname(if_file) + "/" + filename = os.path.basename(if_file).split(".")[0] +- rc, output = commands.getstatusoutput("python /usr/share/selinux/devel/include/support/segenxml.py -w -m %s" % basedir + filename) ++ rc, output = getstatusoutput("python /usr/share/selinux/devel/include/support/segenxml.py -w -m %s" % basedir + filename) + if rc != 0: + sys.stderr.write("\n Could not proceed selected interface file.\n") + sys.stderr.write("\n%s" % output) +@@ -208,7 +211,10 @@ def interface_compile_test(interface, path="/usr/share/selinux/devel/policy.xml" + exclude_interfaces = ["userdom", "kernel", "corenet", "files", "dev"] + exclude_interface_type = ["template"] + +- import commands ++ try: ++ from commands import getstatusoutput ++ except ImportError: ++ from subprocess import getstatusoutput + import os + policy_files = {'pp': "compiletest.pp", 'te': "compiletest.te", 'fc': "compiletest.fc", 'if': "compiletest.if"} + idict = get_interface_dict(path) +@@ -219,7 +225,7 @@ def interface_compile_test(interface, path="/usr/share/selinux/devel/policy.xml" + fd = open(policy_files['te'], "w") + fd.write(generate_compile_te(interface, idict)) + fd.close() +- rc, output = commands.getstatusoutput("make -f /usr/share/selinux/devel/Makefile %s" % policy_files['pp']) ++ rc, output = getstatusoutput("make -f /usr/share/selinux/devel/Makefile %s" % policy_files['pp']) + if rc != 0: + sys.stderr.write(output) + sys.stderr.write(_("\nCompile test for %s failed.\n") % interface) +diff --git a/policycoreutils/sepolicy/sepolicy/manpage.py b/policycoreutils/sepolicy/sepolicy/manpage.py +index 7365f93..773a9ab 100755 +--- a/sepolicy/sepolicy/manpage.py ++++ b/sepolicy/sepolicy/manpage.py +@@ -27,7 +27,6 @@ __all__ = ['ManPage', 'HTMLManPages', 'manpage_domains', 'manpage_roles', 'gen_d + import string + import selinux + import sepolicy +-import commands + import os + import time + +@@ -162,7 +161,11 @@ def get_alphabet_manpages(manpage_list): + + + def convert_manpage_to_html(html_manpage, manpage): +- rc, output = commands.getstatusoutput("/usr/bin/groff -man -Thtml %s 2>/dev/null" % manpage) ++ try: ++ from commands import getstatusoutput ++ except ImportError: ++ from subprocess import getstatusoutput ++ rc, output = getstatusoutput("/usr/bin/groff -man -Thtml %s 2>/dev/null" % manpage) + if rc == 0: + print(html_manpage, "has been created") + fd = open(html_manpage, 'w') +-- +2.10.2 + diff --git a/gnu/packages/patches/portaudio-audacity-compat.patch b/gnu/packages/patches/portaudio-audacity-compat.patch index 9f239ada35..513d08bcea 100644 --- a/gnu/packages/patches/portaudio-audacity-compat.patch +++ b/gnu/packages/patches/portaudio-audacity-compat.patch @@ -7,27 +7,27 @@ See <http://music.columbia.edu/pipermail/portaudio/2015-March/016611.html>. --- a/include/pa_win_ds.h +++ b/include/pa_win_ds.h @@ -89,6 +89,21 @@ - - }PaWinDirectSoundStreamInfo; - -+/** Retrieve the GUID of the input device. -+ -+ @param stream The stream to query. -+ -+ @return A pointer to the GUID, or NULL if none. -+*/ -+LPGUID PaWinDS_GetStreamInputGUID( PaStream* s ); -+ -+/** Retrieve the GUID of the output device. -+ -+ @param stream The stream to query. -+ -+ @return A pointer to the GUID, or NULL if none. -+*/ -+LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s ); - - - #ifdef __cplusplus + + }PaWinDirectSoundStreamInfo; + ++/** Retrieve the GUID of the input device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamInputGUID( PaStream* s ); ++ ++/** Retrieve the GUID of the output device. ++ ++ @param stream The stream to query. ++ ++ @return A pointer to the GUID, or NULL if none. ++*/ ++LPGUID PaWinDS_GetStreamOutputGUID( PaStream* s ); + + + #ifdef __cplusplus --- a/include/portaudio.h +++ b/include/portaudio.h @@ -1146,6 +1146,15 @@ @@ -224,15 +224,15 @@ See <http://music.columbia.edu/pipermail/portaudio/2015-March/016611.html>. --- a/src/hostapi/coreaudio/pa_mac_core_blocking.c +++ b/src/hostapi/coreaudio/pa_mac_core_blocking.c @@ -66,6 +66,9 @@ - #ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS - # define OSAtomicOr32( a, b ) ( (*(b)) |= (a) ) - # define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) ) -+#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 -+# define OSAtomicOr32( a, b ) BitOrAtomic( a, (UInt32 *) b ) -+# define OSAtomicAnd32( a, b ) BitAndAtomic( a, (UInt32 *) b ) - #else - # include <libkern/OSAtomic.h> - #endif + #ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS + # define OSAtomicOr32( a, b ) ( (*(b)) |= (a) ) + # define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) ) ++#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3 ++# define OSAtomicOr32( a, b ) BitOrAtomic( a, (UInt32 *) b ) ++# define OSAtomicAnd32( a, b ) BitAndAtomic( a, (UInt32 *) b ) + #else + # include <libkern/OSAtomic.h> + #endif --- a/src/hostapi/alsa/pa_linux_alsa.c +++ b/src/hostapi/alsa/pa_linux_alsa.c @@ -611,6 +611,7 @@ diff --git a/gnu/packages/patches/proot-test-fhs.patch b/gnu/packages/patches/proot-test-fhs.patch new file mode 100644 index 0000000000..d3896addd6 --- /dev/null +++ b/gnu/packages/patches/proot-test-fhs.patch @@ -0,0 +1,98 @@ +The test suite of PRoot makes many FHS assumptions, such as assuming +that /bin, /bin/true, and /usr exist. This patch fixes these assumptions. + +--- source/tests/GNUmakefile 2017-05-11 15:26:36.899115484 +0200 ++++ source/tests/GNUmakefile 2017-05-11 15:26:46.143063166 +0200 +@@ -121,7 +121,7 @@ $(ROOTFS_DIR): + setup: $(ROOTFS_BIN) + + $(ROOTFS)/bin/abs-true: +- @ln -fs /bin/true $@ ++ @ln -fs `which true` $@ + + $(ROOTFS)/bin/rel-true: + @ln -fs ./true $@ + +--- source/tests/test-d2175fc3.sh 2017-05-11 15:36:53.727617010 +0200 ++++ source/tests/test-d2175fc3.sh 2017-05-11 15:37:10.155523637 +0200 +@@ -2,8 +2,8 @@ if [ ! -x ${ROOTFS}/bin/readlink ] || [ + exit 125; + fi + +-${PROOT} -r ${ROOTFS} /bin/readlink /bin/abs-true | grep '^/bin/true$' ++${PROOT} -r ${ROOTFS} /bin/readlink /bin/abs-true | grep "`which true`" + ${PROOT} -r ${ROOTFS} /bin/readlink /bin/rel-true | grep '^\./true$' + +-${PROOT} -b /:/host-rootfs -r ${ROOTFS} /bin/readlink /bin/abs-true | grep '^/bin/true$' ++${PROOT} -b /:/host-rootfs -r ${ROOTFS} /bin/readlink /bin/abs-true | grep "`which true`" + ${PROOT} -b /:/host-rootfs -r ${ROOTFS} /bin/readlink /bin/rel-true | grep '^./true$' + +--- source/tests/test-d1be631a.sh 2017-05-11 15:41:36.458008715 +0200 ++++ source/tests/test-d1be631a.sh 2017-05-11 15:41:38.921994686 +0200 +@@ -1,4 +1,4 @@ +-if [ -z `which mknod`] || [ `id -u` -eq 0 ]; then ++if [ -z `which mknod` ] || [ `id -u` -eq 0 ]; then + exit 125; + fi + +--- source/tests/test-5bed7141.c 2017-05-11 15:34:23.088472743 +0200 ++++ source/tests/test-5bed7141.c 2017-05-11 15:34:27.052450235 +0200 +@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) + exit(EXIT_FAILURE); + + case 0: /* child */ +- status = chdir("/usr"); ++ status = chdir("/gnu"); + if (status < 0) { + perror("chdir"); + exit(EXIT_FAILURE); + +--- a/tests/test-092c5e26.sh ++++ b/tests/test-092c5e26.sh +@@ -24,7 +24,7 @@ fi + + unset LD_LIBRARY_PATH + +-env PROOT_FORCE_FOREIGN_BINARY=1 PATH=/tmp:/bin:/usr/bin ${PROOT} -r ${ROOTFS} -q echo ${TMP} | grep "^-U LD_LIBRARY_PATH ${EXTRA}-0 /bin/argv0 /bin/argv0 ${TMP_ABS}$" ++env PROOT_FORCE_FOREIGN_BINARY=1 PATH=/tmp:/bin:/usr/bin:$(dirname $(which echo)) ${PROOT} -r ${ROOTFS} -q echo ${TMP} | grep "^-U LD_LIBRARY_PATH ${EXTRA}-0 /bin/argv0 /bin/argv0 ${TMP_ABS}$" + env PROOT_FORCE_FOREIGN_BINARY=1 ${PROOT} -r ${ROOTFS} -q echo ${TMP_ABS} | grep "^-U LD_LIBRARY_PATH ${EXTRA}-0 /bin/argv0 /bin/argv0 ${TMP_ABS}$" + + cat > ${ROOTFS}/${TMP_ABS} <<EOF +@@ -34,7 +34,7 @@ chmod +x ${ROOTFS}/${TMP_ABS} + + # Valgrind prepends "/bin/sh" in front of foreign binaries. + if ! $(echo ${PROOT} | grep -q valgrind); then +- env PATH=/tmp:/bin:/usr/bin ${PROOT} -r ${ROOTFS} -q echo ${TMP} | grep "^-U LD_LIBRARY_PATH -0 ${TMP} ${TMP_ABS}$" ++ env PATH=/tmp:/bin:/usr/bin:$(dirname $(which echo)) ${PROOT} -r ${ROOTFS} -q echo ${TMP} | grep "^-U LD_LIBRARY_PATH -0 ${TMP} ${TMP_ABS}$" + ${PROOT} -r ${ROOTFS} -q echo ${TMP_ABS} | grep "^-U LD_LIBRARY_PATH -0 ${TMP_ABS} ${TMP_ABS}$" + fi + +diff --git a/tests/test-5467b986.sh b/tests/test-5467b986.sh +index c6ac71a..f616f1e 100644 +--- a/tests/test-5467b986.sh ++++ b/tests/test-5467b986.sh +@@ -30,8 +30,8 @@ ${PROOT} -v -1 -b /tmp:/b -b /tmp:/a -r ${ROOTFS} fchdir_getcwd /b | grep '^/[ab + ! ${PROOT} -w /bin -r ${ROOTFS} fchdir_getcwd true + [ $? -eq 0 ] + +-${PROOT} -v -1 -w /usr -r / ${ROOTFS}/bin/chdir_getcwd share | grep '^/usr/share$' +-${PROOT} -v -1 -w /usr -r / ${ROOTFS}/bin/fchdir_getcwd share | grep '^/usr/share$' ++${PROOT} -v -1 -w /gnu -r / ${ROOTFS}/bin/chdir_getcwd store | grep '^/gnu/store$' ++${PROOT} -v -1 -w /gnu -r / ${ROOTFS}/bin/fchdir_getcwd store | grep '^/gnu/store$' + +-(cd /; ${PROOT} -v -1 -w usr -r / ${ROOTFS}/bin/chdir_getcwd share | grep '^/usr/share$') +-(cd /; ${PROOT} -v -1 -w usr -r / ${ROOTFS}/bin/fchdir_getcwd share | grep '^/usr/share$') ++(cd /; ${PROOT} -v -1 -w gnu -r / ${ROOTFS}/bin/chdir_getcwd store | grep '^/gnu/store$') ++(cd /; ${PROOT} -v -1 -w gnu -r / ${ROOTFS}/bin/fchdir_getcwd store | grep '^/gnu/store$') + +--- a/tests/test-c15999f9.sh ++++ b/tests/test-c15999f9.sh +@@ -5,7 +5,7 @@ fi + TMP=/tmp/$(mcookie) + mkdir ${TMP} + +-${PROOT} -b /bin/true:${TMP}/true /bin/true ++${PROOT} -b `which true`:${TMP}/true `which true` + ! test -e ${TMP}/true + [ $? -eq 0 ] + diff --git a/gnu/packages/patches/python-cython-fix-tests-32bit.patch b/gnu/packages/patches/python-cython-fix-tests-32bit.patch new file mode 100644 index 0000000000..7ccc11dd4c --- /dev/null +++ b/gnu/packages/patches/python-cython-fix-tests-32bit.patch @@ -0,0 +1,27 @@ +This fixes a test failure on 32-bit platforms. + +Upstream bug URL: https://github.com/cython/cython/issues/1548 + +Patch copied from upstream source repository: + +https://github.com/cython/cython/commit/d92a718a26c9354fbf35f31a17de5c069865a447 + +From d92a718a26c9354fbf35f31a17de5c069865a447 Mon Sep 17 00:00:00 2001 +From: Robert Bradshaw <robertwb@gmail.com> +Date: Tue, 24 Jan 2017 16:57:00 -0800 +Subject: [PATCH] Normalize possible L suffix. + +--- + tests/run/cpdef_enums.pyx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/run/cpdef_enums.pyx b/tests/run/cpdef_enums.pyx +index 167c762..c264ec5 100644 +--- a/tests/run/cpdef_enums.pyx ++++ b/tests/run/cpdef_enums.pyx +@@ -93,4 +93,4 @@ def verify_resolution_GH1533(): + 3 + """ + THREE = 100 +- return PyxEnum.THREE ++ return int(PyxEnum.THREE) diff --git a/gnu/packages/patches/python-pyopenssl-skip-network-test.patch b/gnu/packages/patches/python-pyopenssl-skip-network-test.patch index a24eaf69a0..1ac7324c8b 100644 --- a/gnu/packages/patches/python-pyopenssl-skip-network-test.patch +++ b/gnu/packages/patches/python-pyopenssl-skip-network-test.patch @@ -7,20 +7,14 @@ diff --git a/tests/test_ssl.py b/tests/test_ssl.py index ee849fd..60048b8 100644 --- a/tests/test_ssl.py +++ b/tests/test_ssl.py -@@ -1180,40 +1180,6 @@ class ContextTests(TestCase, _LoopbackMixin): - TypeError, context.load_verify_locations, None, None, None - ) - -- @pytest.mark.skipif( -- platform == "win32", -- reason="set_default_verify_paths appears not to work on Windows. " -- "See LP#404343 and LP#404344." -- ) +@@ -1113,33 +1113,6 @@ class TestContext(object): + reason="set_default_verify_paths appears not to work on Windows. " + "See LP#404343 and LP#404344." + ) - def test_set_default_verify_paths(self): - """ -- :py:obj:`Context.set_default_verify_paths` causes the -- platform-specific CA certificate locations to be used for -- verification purposes. +- `Context.set_default_verify_paths` causes the platform-specific CA +- certificate locations to be used for verification purposes. - """ - # Testing this requires a server with a certificate signed by one - # of the CAs in the platform CA location. Getting one of those @@ -43,8 +37,7 @@ index ee849fd..60048b8 100644 - clientSSL.set_connect_state() - clientSSL.do_handshake() - clientSSL.send(b"GET / HTTP/1.0\r\n\r\n") -- self.assertTrue(clientSSL.recv(1024)) -- - def test_set_default_verify_paths_signature(self): +- assert clientSSL.recv(1024) + + def test_add_extra_chain_cert_invalid_cert(self): """ - :py:obj:`Context.set_default_verify_paths` takes no arguments and diff --git a/gnu/packages/patches/qemu-CVE-2016-10155.patch b/gnu/packages/patches/qemu-CVE-2016-10155.patch deleted file mode 100644 index 825edaa815..0000000000 --- a/gnu/packages/patches/qemu-CVE-2016-10155.patch +++ /dev/null @@ -1,49 +0,0 @@ -From eb7a20a3616085d46aa6b4b4224e15587ec67e6e Mon Sep 17 00:00:00 2001 -From: Li Qiang <liqiang6-s@360.cn> -Date: Mon, 28 Nov 2016 17:49:04 -0800 -Subject: [PATCH] watchdog: 6300esb: add exit function - -When the Intel 6300ESB watchdog is hot unplug. The timer allocated -in realize isn't freed thus leaking memory leak. This patch avoid -this through adding the exit function. - -http://git.qemu.org/?p=qemu.git;a=patch;h=eb7a20a3616085d46aa6b4b4224e15587ec67e6e -this patch is from qemu-git. - -Signed-off-by: Li Qiang <liqiang6-s@360.cn> -Message-Id: <583cde9c.3223ed0a.7f0c2.886e@mx.google.com> -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> ---- - hw/watchdog/wdt_i6300esb.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c -index a83d951..49b3cd1 100644 ---- a/hw/watchdog/wdt_i6300esb.c -+++ b/hw/watchdog/wdt_i6300esb.c -@@ -428,6 +428,14 @@ static void i6300esb_realize(PCIDevice *dev, Error **errp) - /* qemu_register_coalesced_mmio (addr, 0x10); ? */ - } - -+static void i6300esb_exit(PCIDevice *dev) -+{ -+ I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); -+ -+ timer_del(d->timer); -+ timer_free(d->timer); -+} -+ - static WatchdogTimerModel model = { - .wdt_name = "i6300esb", - .wdt_description = "Intel 6300ESB", -@@ -441,6 +449,7 @@ static void i6300esb_class_init(ObjectClass *klass, void *data) - k->config_read = i6300esb_config_read; - k->config_write = i6300esb_config_write; - k->realize = i6300esb_realize; -+ k->exit = i6300esb_exit; - k->vendor_id = PCI_VENDOR_ID_INTEL; - k->device_id = PCI_DEVICE_ID_INTEL_ESB_9; - k->class_id = PCI_CLASS_SYSTEM_OTHER; --- -1.7.0.4 - diff --git a/gnu/packages/patches/qemu-CVE-2017-2615.patch b/gnu/packages/patches/qemu-CVE-2017-2615.patch deleted file mode 100644 index ede1f8c89d..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-2615.patch +++ /dev/null @@ -1,52 +0,0 @@ -http://git.qemu.org/?p=qemu.git;a=patch;h=62d4c6bd5263bb8413a06c80144fc678df6dfb64 -this patch is from qemu-git. - - -From 62d4c6bd5263bb8413a06c80144fc678df6dfb64 Mon Sep 17 00:00:00 2001 -From: Li Qiang <liqiang6-s@360.cn> -Date: Wed, 1 Feb 2017 09:35:01 +0100 -Subject: [PATCH] cirrus: fix oob access issue (CVE-2017-2615) - -When doing bitblt copy in backward mode, we should minus the -blt width first just like the adding in the forward mode. This -can avoid the oob access of the front of vga's vram. - -Signed-off-by: Li Qiang <liqiang6-s@360.cn> - -{ kraxel: with backward blits (negative pitch) addr is the topmost - address, so check it as-is against vram size ] - -Cc: qemu-stable@nongnu.org -Cc: P J P <ppandit@redhat.com> -Cc: Laszlo Ersek <lersek@redhat.com> -Cc: Paolo Bonzini <pbonzini@redhat.com> -Cc: Wolfgang Bumiller <w.bumiller@proxmox.com> -Fixes: d3532a0db02296e687711b8cdc7791924efccea0 (CVE-2014-8106) -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> -Message-id: 1485938101-26602-1-git-send-email-kraxel@redhat.com -Reviewed-by: Laszlo Ersek <lersek@redhat.com> ---- - hw/display/cirrus_vga.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c -index 7db6409dc5..16f27e8ac5 100644 ---- a/hw/display/cirrus_vga.c -+++ b/hw/display/cirrus_vga.c -@@ -274,10 +274,9 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s, - { - if (pitch < 0) { - int64_t min = addr -- + ((int64_t)s->cirrus_blt_height-1) * pitch; -- int32_t max = addr -- + s->cirrus_blt_width; -- if (min < 0 || max > s->vga.vram_size) { -+ + ((int64_t)s->cirrus_blt_height - 1) * pitch -+ - s->cirrus_blt_width; -+ if (min < -1 || addr >= s->vga.vram_size) { - return true; - } - } else { --- -2.11.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-2620.patch b/gnu/packages/patches/qemu-CVE-2017-2620.patch deleted file mode 100644 index d3111827b7..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-2620.patch +++ /dev/null @@ -1,134 +0,0 @@ -Fix CVE-2017-2620: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2620 -https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg04700.html - -Both patches copied from upstream source repository: - -Fixes CVE-2017-2620: -http://git.qemu-project.org/?p=qemu.git;a=commit;h=92f2b88cea48c6aeba8de568a45f2ed958f3c298 - -The CVE-2017-2620 bug-fix depends on this earlier patch: -http://git.qemu-project.org/?p=qemu.git;a=commit;h=913a87885f589d263e682c2eb6637c6e14538061 - -From 92f2b88cea48c6aeba8de568a45f2ed958f3c298 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann <kraxel@redhat.com> -Date: Wed, 8 Feb 2017 11:18:36 +0100 -Subject: [PATCH] cirrus: add blit_is_unsafe call to cirrus_bitblt_cputovideo - (CVE-2017-2620) - -CIRRUS_BLTMODE_MEMSYSSRC blits do NOT check blit destination -and blit width, at all. Oops. Fix it. - -Security impact: high. - -The missing blit destination check allows to write to host memory. -Basically same as CVE-2014-8106 for the other blit variants. - -Cc: qemu-stable@nongnu.org -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/display/cirrus_vga.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c -index 1deb52070a..b9e7cb1df1 100644 ---- a/hw/display/cirrus_vga.c -+++ b/hw/display/cirrus_vga.c -@@ -900,6 +900,10 @@ static int cirrus_bitblt_cputovideo(CirrusVGAState * s) - { - int w; - -+ if (blit_is_unsafe(s, true)) { -+ return 0; -+ } -+ - s->cirrus_blt_mode &= ~CIRRUS_BLTMODE_MEMSYSSRC; - s->cirrus_srcptr = &s->cirrus_bltbuf[0]; - s->cirrus_srcptr_end = &s->cirrus_bltbuf[0]; -@@ -925,6 +929,10 @@ static int cirrus_bitblt_cputovideo(CirrusVGAState * s) - } - s->cirrus_srccounter = s->cirrus_blt_srcpitch * s->cirrus_blt_height; - } -+ -+ /* the blit_is_unsafe call above should catch this */ -+ assert(s->cirrus_blt_srcpitch <= CIRRUS_BLTBUFSIZE); -+ - s->cirrus_srcptr = s->cirrus_bltbuf; - s->cirrus_srcptr_end = s->cirrus_bltbuf + s->cirrus_blt_srcpitch; - cirrus_update_memory_access(s); --- -2.12.0 - -From 913a87885f589d263e682c2eb6637c6e14538061 Mon Sep 17 00:00:00 2001 -From: Bruce Rogers <brogers@suse.com> -Date: Mon, 9 Jan 2017 13:35:20 -0700 -Subject: [PATCH] display: cirrus: ignore source pitch value as needed in - blit_is_unsafe - -Commit 4299b90 added a check which is too broad, given that the source -pitch value is not required to be initialized for solid fill operations. -This patch refines the blit_is_unsafe() check to ignore source pitch in -that case. After applying the above commit as a security patch, we -noticed the SLES 11 SP4 guest gui failed to initialize properly. - -Signed-off-by: Bruce Rogers <brogers@suse.com> -Message-id: 20170109203520.5619-1-brogers@suse.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/display/cirrus_vga.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c -index bdb092ee9d..379910db2d 100644 ---- a/hw/display/cirrus_vga.c -+++ b/hw/display/cirrus_vga.c -@@ -294,7 +294,7 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s, - return false; - } - --static bool blit_is_unsafe(struct CirrusVGAState *s) -+static bool blit_is_unsafe(struct CirrusVGAState *s, bool dst_only) - { - /* should be the case, see cirrus_bitblt_start */ - assert(s->cirrus_blt_width > 0); -@@ -308,6 +308,9 @@ static bool blit_is_unsafe(struct CirrusVGAState *s) - s->cirrus_blt_dstaddr & s->cirrus_addr_mask)) { - return true; - } -+ if (dst_only) { -+ return false; -+ } - if (blit_region_is_unsafe(s, s->cirrus_blt_srcpitch, - s->cirrus_blt_srcaddr & s->cirrus_addr_mask)) { - return true; -@@ -673,7 +676,7 @@ static int cirrus_bitblt_common_patterncopy(CirrusVGAState * s, - - dst = s->vga.vram_ptr + (s->cirrus_blt_dstaddr & s->cirrus_addr_mask); - -- if (blit_is_unsafe(s)) -+ if (blit_is_unsafe(s, false)) - return 0; - - (*s->cirrus_rop) (s, dst, src, -@@ -691,7 +694,7 @@ static int cirrus_bitblt_solidfill(CirrusVGAState *s, int blt_rop) - { - cirrus_fill_t rop_func; - -- if (blit_is_unsafe(s)) { -+ if (blit_is_unsafe(s, true)) { - return 0; - } - rop_func = cirrus_fill[rop_to_index[blt_rop]][s->cirrus_blt_pixelwidth - 1]; -@@ -795,7 +798,7 @@ static int cirrus_do_copy(CirrusVGAState *s, int dst, int src, int w, int h) - - static int cirrus_bitblt_videotovideo_copy(CirrusVGAState * s) - { -- if (blit_is_unsafe(s)) -+ if (blit_is_unsafe(s, false)) - return 0; - - return cirrus_do_copy(s, s->cirrus_blt_dstaddr - s->vga.start_addr, --- -2.12.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-2630.patch b/gnu/packages/patches/qemu-CVE-2017-2630.patch deleted file mode 100644 index b154d171f1..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-2630.patch +++ /dev/null @@ -1,47 +0,0 @@ -Fix CVE-2017-2630: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2630 -https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg01246.html - -Patch copied from upstream source repository: - -http://git.qemu-project.org/?p=qemu.git;a=commit;h=2563c9c6b8670400c48e562034b321a7cf3d9a85 - -From 2563c9c6b8670400c48e562034b321a7cf3d9a85 Mon Sep 17 00:00:00 2001 -From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> -Date: Tue, 7 Mar 2017 09:16:27 -0600 -Subject: [PATCH] nbd/client: fix drop_sync [CVE-2017-2630] -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Comparison symbol is misused. It may lead to memory corruption. -Introduced in commit 7d3123e. - -Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> -Message-Id: <20170203154757.36140-6-vsementsov@virtuozzo.com> -[eblake: add CVE details, update conditional] -Signed-off-by: Eric Blake <eblake@redhat.com> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Message-Id: <20170307151627.27212-1-eblake@redhat.com> -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> ---- - nbd/client.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/nbd/client.c b/nbd/client.c -index 5c9dee37fa..3dc2564cd0 100644 ---- a/nbd/client.c -+++ b/nbd/client.c -@@ -94,7 +94,7 @@ static ssize_t drop_sync(QIOChannel *ioc, size_t size) - char small[1024]; - char *buffer; - -- buffer = sizeof(small) < size ? small : g_malloc(MIN(65536, size)); -+ buffer = sizeof(small) >= size ? small : g_malloc(MIN(65536, size)); - while (size > 0) { - ssize_t count = read_sync(ioc, buffer, MIN(65536, size)); - --- -2.12.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5525.patch b/gnu/packages/patches/qemu-CVE-2017-5525.patch deleted file mode 100644 index d0c0c82a4a..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5525.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 12351a91da97b414eec8cdb09f1d9f41e535a401 Mon Sep 17 00:00:00 2001 -From: Li Qiang <liqiang6-s@360.cn> -Date: Wed, 14 Dec 2016 18:30:21 -0800 -Subject: [PATCH] audio: ac97: add exit function -MIME-Version: 1.0 -Content-Type: text/plain; charset=utf8 -Content-Transfer-Encoding: 8bit - -http://git.qemu.org/?p=qemu.git;a=patch;h=12351a91da97b414eec8cdb09f1d9f41e535a401 -this patch is from qemu-git - -Currently the ac97 device emulation doesn't have a exit function, -hot unplug this device will leak some memory. Add a exit function to -avoid this. - -Signed-off-by: Li Qiang <liqiang6-s@360.cn> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Message-id: 58520052.4825ed0a.27a71.6cae@mx.google.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/audio/ac97.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c -index cbd959e..c306575 100644 ---- a/hw/audio/ac97.c -+++ b/hw/audio/ac97.c -@@ -1387,6 +1387,16 @@ static void ac97_realize(PCIDevice *dev, Error **errp) - ac97_on_reset (&s->dev.qdev); - } - -+static void ac97_exit(PCIDevice *dev) -+{ -+ AC97LinkState *s = DO_UPCAST(AC97LinkState, dev, dev); -+ -+ AUD_close_in(&s->card, s->voice_pi); -+ AUD_close_out(&s->card, s->voice_po); -+ AUD_close_in(&s->card, s->voice_mc); -+ AUD_remove_card(&s->card); -+} -+ - static int ac97_init (PCIBus *bus) - { - pci_create_simple (bus, -1, "AC97"); -@@ -1404,6 +1414,7 @@ static void ac97_class_init (ObjectClass *klass, void *data) - PCIDeviceClass *k = PCI_DEVICE_CLASS (klass); - - k->realize = ac97_realize; -+ k->exit = ac97_exit; - k->vendor_id = PCI_VENDOR_ID_INTEL; - k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5; - k->revision = 0x01; --- -1.7.0.4 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5526.patch b/gnu/packages/patches/qemu-CVE-2017-5526.patch deleted file mode 100644 index 5a6d796458..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5526.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 069eb7b2b8fc47c7cb52e5a4af23ea98d939e3da Mon Sep 17 00:00:00 2001 -From: Li Qiang <liqiang6-s@360.cn> -Date: Wed, 14 Dec 2016 18:32:22 -0800 -Subject: [PATCH] audio: es1370: add exit function -MIME-Version: 1.0 -Content-Type: text/plain; charset=utf8 -Content-Transfer-Encoding: 8bit - -http://git.qemu.org/?p=qemu.git;a=patch;h=069eb7b2b8fc47c7cb52e5a4af23ea98d939e3da -this patch is from qemu-git. - -Currently the es1370 device emulation doesn't have a exit function, -hot unplug this device will leak some memory. Add a exit function to -avoid this. - -Signed-off-by: Li Qiang <liqiang6-s@360.cn> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Message-id: 585200c9.a968ca0a.1ab80.4c98@mx.google.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/audio/es1370.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c -index 8449b5f..883ec69 100644 ---- a/hw/audio/es1370.c -+++ b/hw/audio/es1370.c -@@ -1041,6 +1041,19 @@ static void es1370_realize(PCIDevice *dev, Error **errp) - es1370_reset (s); - } - -+static void es1370_exit(PCIDevice *dev) -+{ -+ ES1370State *s = ES1370(dev); -+ int i; -+ -+ for (i = 0; i < 2; ++i) { -+ AUD_close_out(&s->card, s->dac_voice[i]); -+ } -+ -+ AUD_close_in(&s->card, s->adc_voice); -+ AUD_remove_card(&s->card); -+} -+ - static int es1370_init (PCIBus *bus) - { - pci_create_simple (bus, -1, TYPE_ES1370); -@@ -1053,6 +1066,7 @@ static void es1370_class_init (ObjectClass *klass, void *data) - PCIDeviceClass *k = PCI_DEVICE_CLASS (klass); - - k->realize = es1370_realize; -+ k->exit = es1370_exit; - k->vendor_id = PCI_VENDOR_ID_ENSONIQ; - k->device_id = PCI_DEVICE_ID_ENSONIQ_ES1370; - k->class_id = PCI_CLASS_MULTIMEDIA_AUDIO; --- -1.7.0.4 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5552.patch b/gnu/packages/patches/qemu-CVE-2017-5552.patch deleted file mode 100644 index 50911f4f36..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5552.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 33243031dad02d161225ba99d782616da133f689 Mon Sep 17 00:00:00 2001 -From: Li Qiang <liq3ea@gmail.com> -Date: Thu, 29 Dec 2016 03:11:26 -0500 -Subject: [PATCH] virtio-gpu-3d: fix memory leak in resource attach backing -MIME-Version: 1.0 -Content-Type: text/plain; charset=utf8 -Content-Transfer-Encoding: 8bit - -If the virgl_renderer_resource_attach_iov function fails the -'res_iovs' will be leaked. Add check of the return value to -free the 'res_iovs' when failing. - -http://git.qemu.org/?p=qemu.git;a=patch;h=33243031dad02d161225ba99d782616da133f689 -this patch is from qemu-git. - -Signed-off-by: Li Qiang <liq3ea@gmail.com> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Message-id: 1482999086-59795-1-git-send-email-liq3ea@gmail.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/display/virtio-gpu-3d.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c -index e29f099..b13ced3 100644 ---- a/hw/display/virtio-gpu-3d.c -+++ b/hw/display/virtio-gpu-3d.c -@@ -291,8 +291,11 @@ static void virgl_resource_attach_backing(VirtIOGPU *g, - return; - } - -- virgl_renderer_resource_attach_iov(att_rb.resource_id, -- res_iovs, att_rb.nr_entries); -+ ret = virgl_renderer_resource_attach_iov(att_rb.resource_id, -+ res_iovs, att_rb.nr_entries); -+ -+ if (ret != 0) -+ virtio_gpu_cleanup_mapping_iov(res_iovs, att_rb.nr_entries); - } - - static void virgl_resource_detach_backing(VirtIOGPU *g, --- -1.7.0.4 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5578.patch b/gnu/packages/patches/qemu-CVE-2017-5578.patch deleted file mode 100644 index 05655bcd98..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5578.patch +++ /dev/null @@ -1,39 +0,0 @@ -http://git.qemu.org/?p=qemu.git;a=patch;h=204f01b30975923c64006f8067f0937b91eea68b -this patch is from qemu-git. - - -From 204f01b30975923c64006f8067f0937b91eea68b Mon Sep 17 00:00:00 2001 -From: Li Qiang <liq3ea@gmail.com> -Date: Thu, 29 Dec 2016 04:28:41 -0500 -Subject: [PATCH] virtio-gpu: fix memory leak in resource attach backing - -In the resource attach backing function, everytime it will -allocate 'res->iov' thus can leading a memory leak. This -patch avoid this. - -Signed-off-by: Li Qiang <liq3ea@gmail.com> -Message-id: 1483003721-65360-1-git-send-email-liq3ea@gmail.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/display/virtio-gpu.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c -index 6a26258cac..ca88cf478d 100644 ---- a/hw/display/virtio-gpu.c -+++ b/hw/display/virtio-gpu.c -@@ -714,6 +714,11 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g, - return; - } - -+ if (res->iov) { -+ cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; -+ return; -+ } -+ - ret = virtio_gpu_create_mapping_iov(&ab, cmd, &res->addrs, &res->iov); - if (ret != 0) { - cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC; --- -2.11.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5579.patch b/gnu/packages/patches/qemu-CVE-2017-5579.patch deleted file mode 100644 index 7630012d54..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5579.patch +++ /dev/null @@ -1,44 +0,0 @@ -http://git.qemu.org/?p=qemu.git;a=patch;h=8409dc884a201bf74b30a9d232b6bbdd00cb7e2b -this patch is from qemu-git. - - -From 8409dc884a201bf74b30a9d232b6bbdd00cb7e2b Mon Sep 17 00:00:00 2001 -From: Li Qiang <liqiang6-s@360.cn> -Date: Wed, 4 Jan 2017 00:43:16 -0800 -Subject: [PATCH] serial: fix memory leak in serial exit - -The serial_exit_core function doesn't free some resources. -This can lead memory leak when hotplug and unplug. This -patch avoid this. - -Signed-off-by: Li Qiang <liqiang6-s@360.cn> -Message-Id: <586cb5ab.f31d9d0a.38ac3.acf2@mx.google.com> -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> ---- - hw/char/serial.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/hw/char/serial.c b/hw/char/serial.c -index ffbacd8227..67b18eda12 100644 ---- a/hw/char/serial.c -+++ b/hw/char/serial.c -@@ -906,6 +906,16 @@ void serial_realize_core(SerialState *s, Error **errp) - void serial_exit_core(SerialState *s) - { - qemu_chr_fe_deinit(&s->chr); -+ -+ timer_del(s->modem_status_poll); -+ timer_free(s->modem_status_poll); -+ -+ timer_del(s->fifo_timeout_timer); -+ timer_free(s->fifo_timeout_timer); -+ -+ fifo8_destroy(&s->recv_fifo); -+ fifo8_destroy(&s->xmit_fifo); -+ - qemu_unregister_reset(serial_reset, s); - } - --- -2.11.0 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5667.patch b/gnu/packages/patches/qemu-CVE-2017-5667.patch deleted file mode 100644 index 5adea0d278..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5667.patch +++ /dev/null @@ -1,46 +0,0 @@ -Fix CVE-2017-5667 (sdhci OOB access during multi block SDMA transfer): - -http://seclists.org/oss-sec/2017/q1/243 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5667 - -Patch copied from upstream source repository: - -http://git.qemu-project.org/?p=qemu.git;a=commitdiff;h=42922105beb14c2fc58185ea022b9f72fb5465e9 - -From 42922105beb14c2fc58185ea022b9f72fb5465e9 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Tue, 7 Feb 2017 18:29:59 +0000 -Subject: [PATCH] sd: sdhci: check data length during dma_memory_read - -While doing multi block SDMA transfer in routine -'sdhci_sdma_transfer_multi_blocks', the 's->fifo_buffer' starting -index 'begin' and data length 's->data_count' could end up to be same. -This could lead to an OOB access issue. Correct transfer data length -to avoid it. - -Cc: qemu-stable@nongnu.org -Reported-by: Jiang Xin <jiangxin1@huawei.com> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -Message-id: 20170130064736.9236-1-ppandit@redhat.com -Signed-off-by: Peter Maydell <peter.maydell@linaro.org> ---- - hw/sd/sdhci.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c -index 01fbf228be..5bd5ab6319 100644 ---- a/hw/sd/sdhci.c -+++ b/hw/sd/sdhci.c -@@ -536,7 +536,7 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) - boundary_count -= block_size - begin; - } - dma_memory_read(&address_space_memory, s->sdmasysad, -- &s->fifo_buffer[begin], s->data_count); -+ &s->fifo_buffer[begin], s->data_count - begin); - s->sdmasysad += s->data_count - begin; - if (s->data_count == block_size) { - for (n = 0; n < block_size; n++) { --- -2.11.1 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5856.patch b/gnu/packages/patches/qemu-CVE-2017-5856.patch deleted file mode 100644 index bee0824c0a..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5856.patch +++ /dev/null @@ -1,68 +0,0 @@ -http://git.qemu.org/?p=qemu.git;a=patch;h=765a707000e838c30b18d712fe6cb3dd8e0435f3 -this patch is from qemu-git. - - -From 765a707000e838c30b18d712fe6cb3dd8e0435f3 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini <pbonzini@redhat.com> -Date: Mon, 2 Jan 2017 11:03:33 +0100 -Subject: [PATCH] megasas: fix guest-triggered memory leak - -If the guest sets the sglist size to a value >=2GB, megasas_handle_dcmd -will return MFI_STAT_MEMORY_NOT_AVAILABLE without freeing the memory. -Avoid this by returning only the status from map_dcmd, and loading -cmd->iov_size in the caller. - -Reported-by: Li Qiang <liqiang6-s@360.cn> -Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> ---- - hw/scsi/megasas.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c -index 67fc1e7..6233865 100644 ---- a/hw/scsi/megasas.c -+++ b/hw/scsi/megasas.c -@@ -683,14 +683,14 @@ static int megasas_map_dcmd(MegasasState *s, MegasasCmd *cmd) - trace_megasas_dcmd_invalid_sge(cmd->index, - cmd->frame->header.sge_count); - cmd->iov_size = 0; -- return -1; -+ return -EINVAL; - } - iov_pa = megasas_sgl_get_addr(cmd, &cmd->frame->dcmd.sgl); - iov_size = megasas_sgl_get_len(cmd, &cmd->frame->dcmd.sgl); - pci_dma_sglist_init(&cmd->qsg, PCI_DEVICE(s), 1); - qemu_sglist_add(&cmd->qsg, iov_pa, iov_size); - cmd->iov_size = iov_size; -- return cmd->iov_size; -+ return 0; - } - - static void megasas_finish_dcmd(MegasasCmd *cmd, uint32_t iov_size) -@@ -1559,19 +1559,20 @@ static const struct dcmd_cmd_tbl_t { - - static int megasas_handle_dcmd(MegasasState *s, MegasasCmd *cmd) - { -- int opcode, len; -+ int opcode; - int retval = 0; -+ size_t len; - const struct dcmd_cmd_tbl_t *cmdptr = dcmd_cmd_tbl; - - opcode = le32_to_cpu(cmd->frame->dcmd.opcode); - trace_megasas_handle_dcmd(cmd->index, opcode); -- len = megasas_map_dcmd(s, cmd); -- if (len < 0) { -+ if (megasas_map_dcmd(s, cmd) < 0) { - return MFI_STAT_MEMORY_NOT_AVAILABLE; - } - while (cmdptr->opcode != -1 && cmdptr->opcode != opcode) { - cmdptr++; - } -+ len = cmd->iov_size; - if (cmdptr->opcode == -1) { - trace_megasas_dcmd_unhandled(cmd->index, opcode, len); - retval = megasas_dcmd_dummy(s, cmd); --- -1.7.0.4 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5898.patch b/gnu/packages/patches/qemu-CVE-2017-5898.patch deleted file mode 100644 index 5a94bb1ae4..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5898.patch +++ /dev/null @@ -1,44 +0,0 @@ -Fix CVE-2017-5898 (integer overflow in emulated_apdu_from_guest): - -http://seclists.org/oss-sec/2017/q1/328 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5898 - -Patch copied from upstream source repository: - -http://git.qemu-project.org/?p=qemu.git;a=commitdiff;h=c7dfbf322595ded4e70b626bf83158a9f3807c6a - -From c7dfbf322595ded4e70b626bf83158a9f3807c6a Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Fri, 3 Feb 2017 00:52:28 +0530 -Subject: [PATCH] usb: ccid: check ccid apdu length - -CCID device emulator uses Application Protocol Data Units(APDU) -to exchange command and responses to and from the host. -The length in these units couldn't be greater than 65536. Add -check to ensure the same. It'd also avoid potential integer -overflow in emulated_apdu_from_guest. - -Reported-by: Li Qiang <liqiang6-s@360.cn> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Message-id: 20170202192228.10847-1-ppandit@redhat.com -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - hw/usb/dev-smartcard-reader.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c -index 89e11b68c4..1325ea1659 100644 ---- a/hw/usb/dev-smartcard-reader.c -+++ b/hw/usb/dev-smartcard-reader.c -@@ -967,7 +967,7 @@ static void ccid_on_apdu_from_guest(USBCCIDState *s, CCID_XferBlock *recv) - DPRINTF(s, 1, "%s: seq %d, len %d\n", __func__, - recv->hdr.bSeq, len); - ccid_add_pending_answer(s, (CCID_Header *)recv); -- if (s->card) { -+ if (s->card && len <= BULK_OUT_DATA_SIZE) { - ccid_card_apdu_from_guest(s->card, recv->abData, len); - } else { - DPRINTF(s, D_WARN, "warning: discarded apdu\n"); --- -2.11.1 - diff --git a/gnu/packages/patches/qemu-CVE-2017-5931.patch b/gnu/packages/patches/qemu-CVE-2017-5931.patch deleted file mode 100644 index 08910e5fac..0000000000 --- a/gnu/packages/patches/qemu-CVE-2017-5931.patch +++ /dev/null @@ -1,55 +0,0 @@ -Fix CVE-2017-5931 (integer overflow in handling virtio-crypto requests): - -http://seclists.org/oss-sec/2017/q1/337 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5931 - -Patch copied from upstream source repository: - -http://git.qemu-project.org/?p=qemu.git;a=commit;h=a08aaff811fb194950f79711d2afe5a892ae03a4 - -From a08aaff811fb194950f79711d2afe5a892ae03a4 Mon Sep 17 00:00:00 2001 -From: Gonglei <arei.gonglei@huawei.com> -Date: Tue, 3 Jan 2017 14:50:03 +0800 -Subject: [PATCH] virtio-crypto: fix possible integer and heap overflow - -Because the 'size_t' type is 4 bytes in 32-bit platform, which -is the same with 'int'. It's easy to make 'max_len' to zero when -integer overflow and then cause heap overflow if 'max_len' is zero. - -Using uint_64 instead of size_t to avoid the integer overflow. - -Cc: qemu-stable@nongnu.org -Reported-by: Li Qiang <liqiang6-s@360.cn> -Signed-off-by: Gonglei <arei.gonglei@huawei.com> -Tested-by: Li Qiang <liqiang6-s@360.cn> -Reviewed-by: Michael S. Tsirkin <mst@redhat.com> -Signed-off-by: Michael S. Tsirkin <mst@redhat.com> ---- - hw/virtio/virtio-crypto.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c -index 2f2467e859..c23e1ad458 100644 ---- a/hw/virtio/virtio-crypto.c -+++ b/hw/virtio/virtio-crypto.c -@@ -416,7 +416,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev, - uint32_t hash_start_src_offset = 0, len_to_hash = 0; - uint32_t cipher_start_src_offset = 0, len_to_cipher = 0; - -- size_t max_len, curr_size = 0; -+ uint64_t max_len, curr_size = 0; - size_t s; - - /* Plain cipher */ -@@ -441,7 +441,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev, - return NULL; - } - -- max_len = iv_len + aad_len + src_len + dst_len + hash_result_len; -+ max_len = (uint64_t)iv_len + aad_len + src_len + dst_len + hash_result_len; - if (unlikely(max_len > vcrypto->conf.max_size)) { - virtio_error(vdev, "virtio-crypto too big length"); - return NULL; --- -2.11.1 - diff --git a/gnu/packages/patches/qemu-CVE-2017-7493.patch b/gnu/packages/patches/qemu-CVE-2017-7493.patch new file mode 100644 index 0000000000..67b26fad81 --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2017-7493.patch @@ -0,0 +1,182 @@ +Fix CVE-2017-7493: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7493 + +Patch copied from upstream source repository: + +http://git.qemu.org/?p=qemu.git;a=commit;h=7a95434e0ca8a037fd8aa1a2e2461f92585eb77b + +From 7a95434e0ca8a037fd8aa1a2e2461f92585eb77b Mon Sep 17 00:00:00 2001 +From: Greg Kurz <groug@kaod.org> +Date: Fri, 5 May 2017 14:48:08 +0200 +Subject: [PATCH] 9pfs: local: forbid client access to metadata (CVE-2017-7493) + +When using the mapped-file security mode, we shouldn't let the client mess +with the metadata. The current code already tries to hide the metadata dir +from the client by skipping it in local_readdir(). But the client can still +access or modify it through several other operations. This can be used to +escalate privileges in the guest. + +Affected backend operations are: +- local_mknod() +- local_mkdir() +- local_open2() +- local_symlink() +- local_link() +- local_unlinkat() +- local_renameat() +- local_rename() +- local_name_to_path() + +Other operations are safe because they are only passed a fid path, which +is computed internally in local_name_to_path(). + +This patch converts all the functions listed above to fail and return +EINVAL when being passed the name of the metadata dir. This may look +like a poor choice for errno, but there's no such thing as an illegal +path name on Linux and I could not think of anything better. + +This fixes CVE-2017-7493. + +Reported-by: Leo Gaspard <leo@gaspard.io> +Signed-off-by: Greg Kurz <groug@kaod.org> +Reviewed-by: Eric Blake <eblake@redhat.com> +--- + hw/9pfs/9p-local.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 56 insertions(+), 2 deletions(-) + +diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c +index f3ebca4f7a..a2486566af 100644 +--- a/hw/9pfs/9p-local.c ++++ b/hw/9pfs/9p-local.c +@@ -452,6 +452,11 @@ static off_t local_telldir(FsContext *ctx, V9fsFidOpenState *fs) + return telldir(fs->dir.stream); + } + ++static bool local_is_mapped_file_metadata(FsContext *fs_ctx, const char *name) ++{ ++ return !strcmp(name, VIRTFS_META_DIR); ++} ++ + static struct dirent *local_readdir(FsContext *ctx, V9fsFidOpenState *fs) + { + struct dirent *entry; +@@ -465,8 +470,8 @@ again: + if (ctx->export_flags & V9FS_SM_MAPPED) { + entry->d_type = DT_UNKNOWN; + } else if (ctx->export_flags & V9FS_SM_MAPPED_FILE) { +- if (!strcmp(entry->d_name, VIRTFS_META_DIR)) { +- /* skp the meta data directory */ ++ if (local_is_mapped_file_metadata(ctx, entry->d_name)) { ++ /* skip the meta data directory */ + goto again; + } + entry->d_type = DT_UNKNOWN; +@@ -559,6 +564,12 @@ static int local_mknod(FsContext *fs_ctx, V9fsPath *dir_path, + int err = -1; + int dirfd; + ++ if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(fs_ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + dirfd = local_opendir_nofollow(fs_ctx, dir_path->data); + if (dirfd == -1) { + return -1; +@@ -605,6 +616,12 @@ static int local_mkdir(FsContext *fs_ctx, V9fsPath *dir_path, + int err = -1; + int dirfd; + ++ if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(fs_ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + dirfd = local_opendir_nofollow(fs_ctx, dir_path->data); + if (dirfd == -1) { + return -1; +@@ -694,6 +711,12 @@ static int local_open2(FsContext *fs_ctx, V9fsPath *dir_path, const char *name, + int err = -1; + int dirfd; + ++ if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(fs_ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + /* + * Mark all the open to not follow symlinks + */ +@@ -752,6 +775,12 @@ static int local_symlink(FsContext *fs_ctx, const char *oldpath, + int err = -1; + int dirfd; + ++ if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(fs_ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + dirfd = local_opendir_nofollow(fs_ctx, dir_path->data); + if (dirfd == -1) { + return -1; +@@ -826,6 +855,12 @@ static int local_link(FsContext *ctx, V9fsPath *oldpath, + int ret = -1; + int odirfd, ndirfd; + ++ if (ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + odirfd = local_opendir_nofollow(ctx, odirpath); + if (odirfd == -1) { + goto out; +@@ -1096,6 +1131,12 @@ static int local_lremovexattr(FsContext *ctx, V9fsPath *fs_path, + static int local_name_to_path(FsContext *ctx, V9fsPath *dir_path, + const char *name, V9fsPath *target) + { ++ if (ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + if (dir_path) { + v9fs_path_sprintf(target, "%s/%s", dir_path->data, name); + } else if (strcmp(name, "/")) { +@@ -1116,6 +1157,13 @@ static int local_renameat(FsContext *ctx, V9fsPath *olddir, + int ret; + int odirfd, ndirfd; + ++ if (ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ (local_is_mapped_file_metadata(ctx, old_name) || ++ local_is_mapped_file_metadata(ctx, new_name))) { ++ errno = EINVAL; ++ return -1; ++ } ++ + odirfd = local_opendir_nofollow(ctx, olddir->data); + if (odirfd == -1) { + return -1; +@@ -1206,6 +1254,12 @@ static int local_unlinkat(FsContext *ctx, V9fsPath *dir, + int ret; + int dirfd; + ++ if (ctx->export_flags & V9FS_SM_MAPPED_FILE && ++ local_is_mapped_file_metadata(ctx, name)) { ++ errno = EINVAL; ++ return -1; ++ } ++ + dirfd = local_opendir_nofollow(ctx, dir->data); + if (dirfd == -1) { + return -1; +-- +2.13.0 + diff --git a/gnu/packages/patches/qtscript-disable-tests.patch b/gnu/packages/patches/qtscript-disable-tests.patch new file mode 100644 index 0000000000..41a017d864 --- /dev/null +++ b/gnu/packages/patches/qtscript-disable-tests.patch @@ -0,0 +1,64 @@ +In all of these tests the result wraps around and comes out the negative of the exptected value. + +--- + tests/auto/qscriptjstestsuite/tests/ecma/Expressions/11.4.7-02.js | 2 +- + tests/auto/qscriptjstestsuite/tests/ecma/TypeConversion/9.3.1-3.js | 5 ++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/tests/auto/qscriptjstestsuite/tests/ecma/Expressions/11.4.7-02.js b/tests/auto/qscriptjstestsuite/tests/ecma/Expressions/11.4.7-02.js +index 43bd923..103f251 100644 +--- a/tests/auto/qscriptjstestsuite/tests/ecma/Expressions/11.4.7-02.js ++++ b/tests/auto/qscriptjstestsuite/tests/ecma/Expressions/11.4.7-02.js +@@ -74,7 +74,7 @@ test_negation(-1073741823, 1073741823); + + //2147483648 == (1 << 31) + test_negation(2147483648, -2147483648); +-test_negation(-2147483648, 2147483648); ++//test_negation(-2147483648, 2147483648); + + //2147483648 == (1 << 31) - 1 + test_negation(2147483647, -2147483647); +diff --git a/tests/auto/qscriptjstestsuite/tests/ecma/TypeConversion/9.3.1-3.js b/tests/auto/qscriptjstestsuite/tests/ecma/TypeConversion/9.3.1-3.js +index dc56427..c1a4bf3 100644 +--- a/tests/auto/qscriptjstestsuite/tests/ecma/TypeConversion/9.3.1-3.js ++++ b/tests/auto/qscriptjstestsuite/tests/ecma/TypeConversion/9.3.1-3.js +@@ -86,11 +86,12 @@ new TestCase( + // test cases from bug http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122882 + + +- ++/* + new TestCase( SECTION, + '- -"0x80000000"', + 2147483648, + - -"0x80000000" ); ++*/ + + new TestCase( SECTION, + '- -"0x100000000"', +@@ -280,10 +281,12 @@ new TestCase( SECTION, + 305419896, + 0x12345678 ); + ++/* + new TestCase( SECTION, + "0x80000000", + 2147483648, + 0x80000000 ); ++*/ + + new TestCase( SECTION, + "0xffffffff", +@@ -681,10 +681,12 @@ new TestCase( SECTION, + NaN, + -"+Infiniti" ); + ++/* + new TestCase( SECTION, + "- -\"0x80000000\"", + 2147483648, + - -"0x80000000" ); ++*/ + + new TestCase( SECTION, + "- -\"0x100000000\"", diff --git a/gnu/packages/patches/reptyr-fix-gcc-7.patch b/gnu/packages/patches/reptyr-fix-gcc-7.patch new file mode 100644 index 0000000000..5e0e581218 --- /dev/null +++ b/gnu/packages/patches/reptyr-fix-gcc-7.patch @@ -0,0 +1,38 @@ +This patch allows reptyr to build with gcc 7. It is taken from reptyr mainline patches +fa0d63f and b45fd92. + +https://github.com/nelhage/reptyr/commit/fa0d63ff8c488be15976e5353580b565e85586a1 +https://github.com/nelhage/reptyr/commit/b45fd9238958fcf2d8f3d6fc23e6d491febea2ac + +Patch by Nelson Elhage <nelhage@nelhage.com>. + +diff --git a/attach.c b/attach.c +index bd8ef8c..8d9cbf8 100644 +--- a/attach.c ++++ b/attach.c +@@ -389,8 +389,11 @@ int setup_steal_socket(struct steal_pty_state *steal) { + return errno; + + steal->addr_un.sun_family = AF_UNIX; +- snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path), +- "%s/reptyr.sock", steal->tmpdir); ++ if (snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path), ++ "%s/reptyr.sock", steal->tmpdir) >= sizeof(steal->addr_un.sun_path)) { ++ error("tmpdir path too long!"); ++ return ENAMETOOLONG; ++ } + + if ((steal->sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) + return errno; +diff --git a/platform/linux/linux.h b/platform/linux/linux.h +index 9e6b78a..3ec5a99 100644 +--- a/platform/linux/linux.h ++++ b/platform/linux/linux.h +@@ -40,6 +40,7 @@ + #include <sys/ptrace.h> + #include <asm/ptrace.h> + #include <sys/types.h> ++#include <sys/sysmacros.h> + #include <sys/user.h> + #include <unistd.h> + #include <stdlib.h> diff --git a/gnu/packages/patches/rpcbind-CVE-2017-8779.patch b/gnu/packages/patches/rpcbind-CVE-2017-8779.patch new file mode 100644 index 0000000000..6ca93ff12b --- /dev/null +++ b/gnu/packages/patches/rpcbind-CVE-2017-8779.patch @@ -0,0 +1,29 @@ +Fix CVE-2017-8779: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779 + +Patch copied from the bug reporter's 3rd-party repository: + +https://github.com/guidovranken/rpcbomb/blob/master/rpcbind_patch.txt + +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 5862c26..e11f61b 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -48,6 +48,7 @@ + #include <rpc/rpc.h> + #include <rpc/rpcb_prot.h> + #include <rpc/svc_dg.h> ++#include <rpc/rpc_com.h> + #include <netconfig.h> + #include <errno.h> + #include <syslog.h> +@@ -432,7 +433,7 @@ rpcbproc_taddr2uaddr_com(void *arg, struct svc_req *rqstp /*__unused*/, + static bool_t + xdr_encap_parms(XDR *xdrs, struct encap_parms *epp) + { +- return (xdr_bytes(xdrs, &(epp->args), (u_int *) &(epp->arglen), ~0)); ++ return (xdr_bytes(xdrs, &(epp->args), (u_int *) &(epp->arglen), RPC_MAXDATASIZE)); + } + + /* diff --git a/gnu/packages/patches/ruby-concurrent-test-arm.patch b/gnu/packages/patches/ruby-concurrent-test-arm.patch index 75e6365565..06d5657814 100644 --- a/gnu/packages/patches/ruby-concurrent-test-arm.patch +++ b/gnu/packages/patches/ruby-concurrent-test-arm.patch @@ -5,27 +5,27 @@ Work around two test suite failures on ARM: The regexps here assume addresses like "0x1234" but on ARM (32-bit) we get something like "0x-7db1e810" (notice the dash). -diff --git a/spec/concurrent/edge/future_spec.rb b/spec/concurrent/edge/future_spec.rb -index a48fd29..4344d7e 100644 ---- b/spec/concurrent/edge/future_spec.rb -+++ a/spec/concurrent/edge/future_spec.rb -@@ -322,9 +322,9 @@ +diff --git a/spec/concurrent/edge/promises_spec.rb b/spec/concurrent/edge/promises_spec.rb +index 727210f..149f7cd 100644 +--- a/spec/concurrent/edge/promises_spec.rb ++++ b/spec/concurrent/edge/promises_spec.rb +@@ -371,9 +371,9 @@ describe 'Concurrent::Promises' do four = three.delay.then(&:succ) # meaningful to_s and inspect defined for Future and Promise -- expect(head.to_s).to match /<#Concurrent::Edge::Future:0x[\da-f]+ pending>/ -+ expect(head.to_s).to match /<#Concurrent::Edge::Future:0x-?[\da-f]+ pending>/ +- expect(head.to_s).to match /<#Concurrent::Promises::Future:0x[\da-f]+ pending>/ ++ expect(head.to_s).to match /<#Concurrent::Promises::Future:0x-?[\da-f]+ pending>/ expect(head.inspect).to( -- match(/<#Concurrent::Edge::Future:0x[\da-f]+ pending blocks:\[<#Concurrent::Edge::ThenPromise:0x[\da-f]+ pending>\]>/)) -+ match(/<#Concurrent::Edge::Future:0x-?[\da-f]+ pending blocks:\[<#Concurrent::Edge::ThenPromise:0x-?[\da-f]+ pending>\]>/)) +- match(/<#Concurrent::Promises::Future:0x[\da-f]+ pending>/)) ++ match(/<#Concurrent::Promises::Future:0x-?[\da-f]+ pending>/)) # evaluates only up to three, four is left unevaluated expect(three.value!).to eq 3 diff --git a/spec/concurrent/map_spec.rb b/spec/concurrent/map_spec.rb -index 13fd5b7..1c82ebe 100644 ---- b/spec/concurrent/map_spec.rb -+++ a/spec/concurrent/map_spec.rb -@@ -827,7 +827,7 @@ +index c4050be..0a9095d 100644 +--- a/spec/concurrent/map_spec.rb ++++ b/spec/concurrent/map_spec.rb +@@ -794,7 +794,7 @@ module Concurrent end it '#inspect' do diff --git a/gnu/packages/patches/screen-fix-info-syntax-error.patch b/gnu/packages/patches/screen-fix-info-syntax-error.patch new file mode 100644 index 0000000000..6ee9091daa --- /dev/null +++ b/gnu/packages/patches/screen-fix-info-syntax-error.patch @@ -0,0 +1,47 @@ +Fix errors when building the info manual: + +[...] +./screen.texinfo:5799: unknown command `suse' +./screen.texinfo:5800: unknown command `deuxchevaux' +make[2]: *** [Makefile:31: screen.info] Error 1 +[...] + +Patch copied from upstream source repository: + +http://git.savannah.gnu.org/cgit/screen.git/commit/?id=a7d2f9e6ecfa794dd0bd3dbeaf6780c88a6f3152 + +From a7d2f9e6ecfa794dd0bd3dbeaf6780c88a6f3152 Mon Sep 17 00:00:00 2001 +From: Andreas Stieger <astieger@suse.com> +Date: Tue, 28 Feb 2017 19:23:01 +0100 +Subject: [PATCH] fix texinfo syntax errors + +thanks to Andreas Stieger <astieger@suse.com> +--- + src/doc/screen.texinfo | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/doc/screen.texinfo b/src/doc/screen.texinfo +index bc4cbae..aadad33 100644 +--- a/doc/screen.texinfo ++++ b/doc/screen.texinfo +@@ -5795,7 +5795,7 @@ and Alexander Naumov <alexander_naumov@@opensuse.org>. + Contributors @* + ============ + +-@example ++@verbatim + Thomas Renninger <treen@suse.com>, + Axel Beckert <abe@deuxchevaux.org>, + Ken Beal <kbeal@@amber.ssd.csd.harris.com>, +@@ -5826,7 +5826,7 @@ Contributors @* + Jason Merrill <jason@@jarthur.Claremont.EDU>, + Johannes Zellner <johannes@@zellner.org>, + Pablo Averbuj <pablo@@averbuj.com>. +-@end example ++@end verbatim + + @noindent + Version @* +-- +cgit v1.0-41-gc330 + diff --git a/gnu/packages/patches/serf-comment-style-fix.patch b/gnu/packages/patches/serf-comment-style-fix.patch deleted file mode 100644 index 5d336fb3c8..0000000000 --- a/gnu/packages/patches/serf-comment-style-fix.patch +++ /dev/null @@ -1,23 +0,0 @@ -r2443 | andreas.stieger@gmx.de | 2014-10-21 17:42:56 -0400 (Tue, 21 Oct 2014) | 7 lines - -Follow-up to r2419: Correct comment style - -* test/test_buckets.c - (deflate_compress): Correct comment style not supported by strict - compilers, fails on /branches/1.3.x - -Index: test/test_buckets.c -=================================================================== ---- test/test_buckets.c (revision 2442) -+++ test/test_buckets.c (revision 2443) -@@ -1323,9 +1323,9 @@ - - /* The largest buffer we should need is 0.1% larger than the - uncompressed data, + 12 bytes. This info comes from zlib.h. -+ buf_size = orig_len + (orig_len / 1000) + 12; - Note: This isn't sufficient when using Z_NO_FLUSH and extremely compressed - data. Use a buffer bigger than what we need. */ --// buf_size = orig_len + (orig_len / 1000) + 12; - buf_size = 100000; - - write_buf = apr_palloc(pool, buf_size); diff --git a/gnu/packages/patches/serf-deflate-buckets-test-fix.patch b/gnu/packages/patches/serf-deflate-buckets-test-fix.patch deleted file mode 100644 index be8be1b1e8..0000000000 --- a/gnu/packages/patches/serf-deflate-buckets-test-fix.patch +++ /dev/null @@ -1,69 +0,0 @@ -r2445 | chemodax | 2014-10-23 12:15:22 -0400 (Thu, 23 Oct 2014) | 6 lines - -Reduce memory usage by deflate buckets test. - -* test/test_buckets.c - (deflate_buckets): Add POOL argument and use it instead of tb->pool. - (test_deflate_buckets): Use iterpool for deflate_buckets() call. - -Index: test/test_buckets.c -=================================================================== ---- test/test_buckets.c (revision 2444) -+++ test/test_buckets.c (revision 2445) -@@ -1400,12 +1400,12 @@ - expected_len); - } - --static void deflate_buckets(CuTest *tc, int nr_of_loops) -+static void deflate_buckets(CuTest *tc, int nr_of_loops, apr_pool_t *pool) - { - const char *msg = "12345678901234567890123456789012345678901234567890"; - - test_baton_t *tb = tc->testBaton; -- serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(tb->pool, NULL, -+ serf_bucket_alloc_t *alloc = serf_bucket_allocator_create(pool, NULL, - NULL); - z_stream zdestr; - int i; -@@ -1424,8 +1424,8 @@ - { - serf_config_t *config; - -- serf_context_t *ctx = serf_context_create(tb->pool); -- /* status = */ serf__config_store_get_config(ctx, NULL, &config, tb->pool); -+ serf_context_t *ctx = serf_context_create(pool); -+ /* status = */ serf__config_store_get_config(ctx, NULL, &config, pool); - - serf_bucket_set_config(defbkt, config); - } -@@ -1447,11 +1447,11 @@ - if (i == nr_of_loops - 1) { - CuAssertIntEquals(tc, APR_SUCCESS, - deflate_compress(&data, &len, &zdestr, msg, -- strlen(msg), 1, tb->pool)); -+ strlen(msg), 1, pool)); - } else { - CuAssertIntEquals(tc, APR_SUCCESS, - deflate_compress(&data, &len, &zdestr, msg, -- strlen(msg), 0, tb->pool)); -+ strlen(msg), 0, pool)); - } - - if (len == 0) -@@ -1469,10 +1469,15 @@ - static void test_deflate_buckets(CuTest *tc) - { - int i; -+ apr_pool_t *iterpool; -+ test_baton_t *tb = tc->testBaton; - -+ apr_pool_create(&iterpool, tb->pool); - for (i = 1; i < 1000; i++) { -- deflate_buckets(tc, i); -+ apr_pool_clear(iterpool); -+ deflate_buckets(tc, i, iterpool); - } -+ apr_pool_destroy(iterpool); - } - - static apr_status_t discard_data(serf_bucket_t *bkt, diff --git a/gnu/packages/patches/shadow-4.4-su-snprintf-fix.patch b/gnu/packages/patches/shadow-4.4-su-snprintf-fix.patch deleted file mode 100644 index 3f357c4924..0000000000 --- a/gnu/packages/patches/shadow-4.4-su-snprintf-fix.patch +++ /dev/null @@ -1,31 +0,0 @@ -Patch copied from upstream source repository: - -https://github.com/shadow-maint/shadow/commit/67d2bb6e0a5ac124ce1f026dd5723217b1493194 - -From 67d2bb6e0a5ac124ce1f026dd5723217b1493194 Mon Sep 17 00:00:00 2001 -From: Serge Hallyn <serge@hallyn.com> -Date: Sun, 18 Sep 2016 21:31:18 -0500 -Subject: [PATCH] su.c: fix missing length argument to snprintf - ---- - src/su.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/su.c b/src/su.c -index 0c50a9456afd..93ffd2fbe2b4 100644 ---- a/src/su.c -+++ b/src/su.c -@@ -373,8 +373,8 @@ static void prepare_pam_close_session (void) - stderr); - (void) kill (-pid_child, caught); - -- snprintf (kill_msg, _(" ...killed.\n")); -- snprintf (wait_msg, _(" ...waiting for child to terminate.\n")); -+ snprintf (kill_msg, 256, _(" ...killed.\n")); -+ snprintf (wait_msg, 256, _(" ...waiting for child to terminate.\n")); - - (void) signal (SIGALRM, kill_child); - (void) alarm (2); --- -2.11.0.rc2 - diff --git a/gnu/packages/patches/shadow-CVE-2017-2616.patch b/gnu/packages/patches/shadow-CVE-2017-2616.patch deleted file mode 100644 index f88aac40bc..0000000000 --- a/gnu/packages/patches/shadow-CVE-2017-2616.patch +++ /dev/null @@ -1,72 +0,0 @@ -Fix CVE-2017-2616: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2616 -http://seclists.org/oss-sec/2017/q1/490 -http://seclists.org/oss-sec/2017/q1/474 - -Patch copied from upstream source repository: - -https://github.com/shadow-maint/shadow/commit/08fd4b69e84364677a10e519ccb25b71710ee686 - -From 08fd4b69e84364677a10e519ccb25b71710ee686 Mon Sep 17 00:00:00 2001 -From: Tobias Stoeckmann <tobias@stoeckmann.org> -Date: Thu, 23 Feb 2017 09:47:29 -0600 -Subject: [PATCH] su: properly clear child PID - -If su is compiled with PAM support, it is possible for any local user -to send SIGKILL to other processes with root privileges. There are -only two conditions. First, the user must be able to perform su with -a successful login. This does NOT have to be the root user, even using -su with the same id is enough, e.g. "su $(whoami)". Second, SIGKILL -can only be sent to processes which were executed after the su process. -It is not possible to send SIGKILL to processes which were already -running. I consider this as a security vulnerability, because I was -able to write a proof of concept which unlocked a screen saver of -another user this way. ---- - src/su.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -diff --git a/src/su.c b/src/su.c -index f20d230..d86aa86 100644 ---- a/src/su.c -+++ b/src/su.c -@@ -379,11 +379,13 @@ static void prepare_pam_close_session (void) - /* wake child when resumed */ - kill (pid, SIGCONT); - stop = false; -+ } else { -+ pid_child = 0; - } - } while (!stop); - } - -- if (0 != caught) { -+ if (0 != caught && 0 != pid_child) { - (void) fputs ("\n", stderr); - (void) fputs (_("Session terminated, terminating shell..."), - stderr); -@@ -393,9 +395,22 @@ static void prepare_pam_close_session (void) - snprintf (wait_msg, sizeof wait_msg, _(" ...waiting for child to terminate.\n")); - - (void) signal (SIGALRM, kill_child); -+ (void) signal (SIGCHLD, catch_signals); - (void) alarm (2); - -- (void) wait (&status); -+ sigemptyset (&ourset); -+ if ((sigaddset (&ourset, SIGALRM) != 0) -+ || (sigprocmask (SIG_BLOCK, &ourset, NULL) != 0)) { -+ fprintf (stderr, _("%s: signal masking malfunction\n"), Prog); -+ kill_child (0); -+ } else { -+ while (0 == waitpid (pid_child, &status, WNOHANG)) { -+ sigsuspend (&ourset); -+ } -+ pid_child = 0; -+ (void) sigprocmask (SIG_UNBLOCK, &ourset, NULL); -+ } -+ - (void) fputs (_(" ...terminated.\n"), stderr); - } - diff --git a/gnu/packages/patches/soprano-find-clucene.patch b/gnu/packages/patches/soprano-find-clucene.patch deleted file mode 100644 index cc2707853a..0000000000 --- a/gnu/packages/patches/soprano-find-clucene.patch +++ /dev/null @@ -1,15 +0,0 @@ -Search for clucene include file in the clucene include directory. - -diff -u -r soprano-2.9.4.orig/cmake/modules/FindCLucene.cmake soprano-2.9.4/cmake/modules/FindCLucene.cmake ---- soprano-2.9.4.orig/cmake/modules/FindCLucene.cmake 2013-10-09 19:22:28.000000000 +0200 -+++ soprano-2.9.4/cmake/modules/FindCLucene.cmake 2014-04-28 20:08:11.000000000 +0200 -@@ -77,7 +77,8 @@ - - get_filename_component(TRIAL_LIBRARY_DIR ${CLUCENE_LIBRARY} PATH) - find_path(CLUCENE_LIBRARY_DIR -- NAMES CLucene/clucene-config.h PATHS ${TRIAL_LIBRARY_DIR} ${TRIAL_LIBRARY_PATHS} ${TRIAL_INCLUDE_PATHS} NO_DEFAULT_PATH) -+ NAMES CLucene/clucene-config.h PATHS ${TRIAL_LIBRARY_DIR} ${TRIAL_LIBRARY_PATHS} ${TRIAL_INCLUDE_PATHS} ${CLUCENE_INCLUDE_DIR} NO_DEFAULT_PATH) -+message (STATUS "XXX ${CLUCENE_LIBRARY_DIR}") - if(CLUCENE_LIBRARY_DIR) - message(STATUS "Found CLucene library dir: ${CLUCENE_LIBRARY_DIR}") - file(READ ${CLUCENE_LIBRARY_DIR}/CLucene/clucene-config.h CLCONTENT) diff --git a/gnu/packages/patches/teeworlds-use-latest-wavpack.patch b/gnu/packages/patches/teeworlds-use-latest-wavpack.patch new file mode 100644 index 0000000000..e9fd991087 --- /dev/null +++ b/gnu/packages/patches/teeworlds-use-latest-wavpack.patch @@ -0,0 +1,84 @@ +Downloaded from https://anonscm.debian.org/cgit/pkg-games/teeworlds.git/plain/debian/patches/new-wavpack.patch. + +This patch lets us build teeworlds with wavpack 5.1.0. + +--- a/src/engine/client/sound.cpp ++++ b/src/engine/client/sound.cpp +@@ -328,17 +328,14 @@ void CSound::RateConvert(int SampleID) + pSample->m_NumFrames = NumFrames; + } + +-int CSound::ReadData(void *pBuffer, int Size) +-{ +- return io_read(ms_File, pBuffer, Size); +-} +- + int CSound::LoadWV(const char *pFilename) + { + CSample *pSample; + int SampleID = -1; + char aError[100]; + WavpackContext *pContext; ++ char aWholePath[1024]; ++ IOHANDLE File; + + // don't waste memory on sound when we are stress testing + if(g_Config.m_DbgStress) +@@ -351,19 +348,23 @@ int CSound::LoadWV(const char *pFilename + if(!m_pStorage) + return -1; + +- ms_File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL); +- if(!ms_File) ++ File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL, aWholePath, sizeof(aWholePath)); ++ if(!File) + { + dbg_msg("sound/wv", "failed to open file. filename='%s'", pFilename); + return -1; + } ++ else ++ { ++ io_close(File); ++ } + + SampleID = AllocID(); + if(SampleID < 0) + return -1; + pSample = &m_aSamples[SampleID]; + +- pContext = WavpackOpenFileInput(ReadData, aError); ++ pContext = WavpackOpenFileInput(aWholePath, aError, OPEN_2CH_MAX, 0); + if (pContext) + { + int m_aSamples = WavpackGetNumSamples(pContext); +@@ -419,9 +420,6 @@ int CSound::LoadWV(const char *pFilename + dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError); + } + +- io_close(ms_File); +- ms_File = NULL; +- + if(g_Config.m_Debug) + dbg_msg("sound/wv", "loaded %s", pFilename); + +@@ -527,7 +525,5 @@ void CSound::StopAll() + lock_unlock(m_SoundLock); + } + +-IOHANDLE CSound::ms_File = 0; +- + IEngineSound *CreateEngineSound() { return new CSound; } + +--- a/src/engine/client/sound.h ++++ b/src/engine/client/sound.h +@@ -21,10 +21,6 @@ public: + + static void RateConvert(int SampleID); + +- // TODO: Refactor: clean this mess up +- static IOHANDLE ms_File; +- static int ReadData(void *pBuffer, int Size); +- + virtual bool IsSoundEnabled() { return m_SoundEnabled != 0; } + + virtual int LoadWV(const char *pFilename); diff --git a/gnu/packages/patches/util-linux-CVE-2017-2616.patch b/gnu/packages/patches/util-linux-CVE-2017-2616.patch deleted file mode 100644 index 2c82fb06d2..0000000000 --- a/gnu/packages/patches/util-linux-CVE-2017-2616.patch +++ /dev/null @@ -1,65 +0,0 @@ -Fix CVE-2017-2616: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2616 -http://seclists.org/oss-sec/2017/q1/474 - -Patch copied from upstream source repository: - -https://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=dffab154d29a288aa171ff50263ecc8f2e14a891 - -From b018571132cb8c9fece3d75ed240cc74cdb5f0f7 Mon Sep 17 00:00:00 2001 -From: Karel Zak <kzak@redhat.com> -Date: Wed, 1 Feb 2017 11:58:09 +0100 -Subject: [PATCH] su: properly clear child PID -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Reported-by: Tobias Stöckmann <tobias@stoeckmann.org> -Signed-off-by: Karel Zak <kzak@redhat.com> ---- - login-utils/su-common.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -diff --git a/login-utils/su-common.c b/login-utils/su-common.c -index 0ea4e40bd..b1720f037 100644 ---- a/login-utils/su-common.c -+++ b/login-utils/su-common.c -@@ -376,6 +376,9 @@ create_watching_parent (void) - } - else - status = WEXITSTATUS (status); -+ -+ /* child is gone, don't use the PID anymore */ -+ child = (pid_t) -1; - } - else if (caught_signal) - status = caught_signal + 128; -@@ -385,7 +388,7 @@ create_watching_parent (void) - else - status = 1; - -- if (caught_signal) -+ if (caught_signal && child != (pid_t)-1) - { - fprintf (stderr, _("\nSession terminated, killing shell...")); - kill (child, SIGTERM); -@@ -395,9 +398,12 @@ create_watching_parent (void) - - if (caught_signal) - { -- sleep (2); -- kill (child, SIGKILL); -- fprintf (stderr, _(" ...killed.\n")); -+ if (child != (pid_t)-1) -+ { -+ sleep (2); -+ kill (child, SIGKILL); -+ fprintf (stderr, _(" ...killed.\n")); -+ } - - /* Let's terminate itself with the received signal. - * --- -2.11.1 - diff --git a/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch b/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch new file mode 100644 index 0000000000..51d6c3e791 --- /dev/null +++ b/gnu/packages/patches/wmfire-update-for-new-gdk-versions.patch @@ -0,0 +1,144 @@ +This patch comes from Debian and was modified by Kei Kebreau <kei@openmailbox.org>. +Link: https://anonscm.debian.org/cgit/pkg-wmaker/wmfire.git/plain/debian/patches/gdk_updates.patch?h=debian/1.2.4-2&id=a272234fc5eecdbfc469adb12133196bc62f3059 + +Description: Update for newer versions of GDK. + In particular, the icon window was not receiving enter and leave events from + the pointer. To fix this, we get rid of the second GdkWindow iconwin entirely + and set win to be its own icon. + . + This also removes the need for the "broken window manager" fix, so we remove it + and all references to it. +Author: Doug Torrance <dtorrance@piedmont.edu> + +diff -ur wmfire-1.2.4.old/src/wmfire.c wmfire-1.2.4/src/wmfire.c +--- wmfire-1.2.4.old/src/wmfire.c 2017-04-23 14:26:58.449487117 -0400 ++++ wmfire-1.2.4/src/wmfire.c 2017-04-23 14:32:10.785238671 -0400 +@@ -77,7 +77,6 @@ + typedef struct { + Display *display; /* X11 display */ + GdkWindow *win; /* Main window */ +- GdkWindow *iconwin; /* Icon window */ + GdkGC *gc; /* Drawing GC */ + GdkPixmap *pixmap; /* Main pixmap */ + GdkBitmap *mask; /* Dockapp mask */ +@@ -141,7 +140,6 @@ + int cmap = 0; + int lock = 0; + int proximity = 0; +-int broken_wm = 0; + + /******************************************/ + /* Main */ +@@ -262,12 +260,8 @@ + usleep(REFRESH); + + /* Draw the rgb buffer to screen */ +- if (!broken_wm) +- gdk_draw_rgb_image(bm.iconwin, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3); +- else +- gdk_draw_rgb_image(bm.win, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3); ++ gdk_draw_rgb_image(bm.win, bm.gc, 4, 4, XMAX, YMAX, GDK_RGB_DITHER_NONE, bm.rgb, XMAX * 3); + } +- + return 0; + } + +@@ -556,9 +550,7 @@ + #define MASK GDK_BUTTON_PRESS_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_HINT_MASK + + GdkWindowAttr attr; +- GdkWindowAttr attri; + Window win; +- Window iconwin; + + GdkPixmap *icon; + +@@ -578,10 +570,6 @@ + attr.wmclass_class = "wmfire"; + attr.window_type = GDK_WINDOW_TOPLEVEL; + +- /* Make a copy for the iconwin - parameters are the same */ +- memcpy(&attri, &attr, sizeof (GdkWindowAttr)); +- attri.window_type = GDK_WINDOW_CHILD; +- + sizehints.flags = USSize; + sizehints.width = 64; + sizehints.height = 64; +@@ -592,18 +580,11 @@ + exit(1); + } + +- bm.iconwin = gdk_window_new(bm.win, &attri, GDK_WA_TITLE | GDK_WA_WMCLASS); +- if (!bm.iconwin) { +- fprintf(stderr, "FATAL: Cannot make icon window\n"); +- exit(1); +- } +- + win = GDK_WINDOW_XWINDOW(bm.win); +- iconwin = GDK_WINDOW_XWINDOW(bm.iconwin); + XSetWMNormalHints(GDK_WINDOW_XDISPLAY(bm.win), win, &sizehints); + + wmhints.initial_state = WithdrawnState; +- wmhints.icon_window = iconwin; ++ wmhints.icon_window = win; + wmhints.icon_x = 0; + wmhints.icon_y = 0; + wmhints.window_group = win; +@@ -613,10 +594,8 @@ + + bm.pixmap = gdk_pixmap_create_from_xpm_d(bm.win, &(bm.mask), NULL, master_xpm); + gdk_window_shape_combine_mask(bm.win, bm.mask, 0, 0); +- gdk_window_shape_combine_mask(bm.iconwin, bm.mask, 0, 0); + + gdk_window_set_back_pixmap(bm.win, bm.pixmap, False); +- gdk_window_set_back_pixmap(bm.iconwin, bm.pixmap, False); + + #if 0 + gdk_window_set_type_hint(bm.win, GDK_WINDOW_TYPE_HINT_DOCK); +@@ -626,7 +605,6 @@ + #endif + + icon = gdk_pixmap_create_from_xpm_d(bm.win, NULL, NULL, icon_xpm); +- gdk_window_set_icon(bm.win, bm.iconwin, icon, NULL); + + gdk_window_show(bm.win); + +@@ -721,9 +699,6 @@ + case 'l': + lock = 1; + break; +- case 'b': +- broken_wm = 1; +- break; + case 'h': + default: + do_help(); +@@ -766,6 +741,5 @@ + for (i = 0; i < NFLAMES; i++) + fprintf(stderr, "%d:%s ", i + 1, fire[i].text); + fprintf(stderr, "\n\t-l\t\t\tlock flame colour and monitor\n"); +- fprintf(stderr, "\t-b\t\t\tactivate broken window manager fix\n"); + fprintf(stderr, "\t-h\t\t\tprints this help\n"); + } +Only in wmfire-1.2.4/src: wmfire.c~ +diff -ur wmfire-1.2.4.old/wmfire.1 wmfire-1.2.4/wmfire.1 +--- wmfire-1.2.4.old/wmfire.1 2017-04-23 14:26:58.449487117 -0400 ++++ wmfire-1.2.4/wmfire.1 2017-04-23 14:41:20.697186114 -0400 +@@ -8,7 +8,6 @@ + + .SH SYNOPSIS + .B wmfire +-[-b] + [-c CPU] + [-f COLOUR] + [-F FILE] +@@ -54,9 +53,6 @@ + + .SH OPTIONS + .TP +-.B -b +-Activate broken window manager fix (if grey box diplayed) +-.TP + .B -c [0..3] + .br + Monitor SMP CPU number X diff --git a/gnu/packages/patches/xf86-video-intel-compat-api.patch b/gnu/packages/patches/xf86-video-intel-compat-api.patch deleted file mode 100644 index 786de5c45d..0000000000 --- a/gnu/packages/patches/xf86-video-intel-compat-api.patch +++ /dev/null @@ -1,13 +0,0 @@ -This patch was copied from Debian. - ---- xserver-xorg-video-intel-2.21.15.orig/src/compat-api.h -+++ xserver-xorg-video-intel-2.21.15/src/compat-api.h -@@ -158,4 +158,8 @@ - if ((d)->pScreen->SourceValidate) (d)->pScreen->SourceValidate(d, x, y, w, h) - #endif - -+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,14,99,2,0) -+#define DamageUnregister(d, dd) DamageUnregister(dd) -+#endif -+ - #endif diff --git a/gnu/packages/patches/xf86-video-intel-glibc-2.20.patch b/gnu/packages/patches/xf86-video-intel-glibc-2.20.patch deleted file mode 100644 index aeebfacdcd..0000000000 --- a/gnu/packages/patches/xf86-video-intel-glibc-2.20.patch +++ /dev/null @@ -1,15 +0,0 @@ -Allow builds with glibc 2.20. -Based on a patch by Peter Hutterer <peter.hutterer@who-t.net>. -See <https://raw.githubusercontent.com/openembedded/oe-core/master/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/always_include_xorg_server.h.patch>. - ---- xf86-video-intel-2.21.15/src/intel_device.c.~1~ 2013-08-09 16:58:48.000000000 -0400 -+++ xf86-video-intel-2.21.15/src/intel_device.c 2014-12-18 00:03:54.700759577 -0500 -@@ -33,6 +33,8 @@ - - #include <sys/ioctl.h> - -+#include <xorg-server.h> -+ - #include <pciaccess.h> - #include <xf86.h> - #include <xf86drm.h> diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index 011a30dd38..61aaf7c153 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,6 +42,7 @@ "pcre-" version ".tar.bz2") (string-append "mirror://sourceforge/pcre/pcre/" version "/pcre-" version ".tar.bz2"))) + (patches (search-patches "pcre-CVE-2017-7186.patch")) (sha256 (base32 "1x7lpjn7jhk0n3sdvggxrlrhab8kkfjwl7qix0ypw9nlx8lpmqh0")))) @@ -81,17 +83,18 @@ POSIX regular expression API.") (sha256 (base32 - "0vn5g0mkkp99mmzpissa06hpyj6pk9s4mlwbjqrjvw3ihy8rpiyz")))) + "0vn5g0mkkp99mmzpissa06hpyj6pk9s4mlwbjqrjvw3ihy8rpiyz")) + (patches (search-patches "pcre2-CVE-2017-7186.patch" + "pcre2-CVE-2017-8786.patch")))) (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-pcre2grep-libz" + "--enable-pcre2grep-libbz2" + "--enable-pcre2test-libreadline" "--enable-pcre2-16" "--enable-pcre2-32" "--enable-jit") diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 7f3dccc8ba..5ccaa38eea 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -184,6 +184,53 @@ Poppler PDF rendering library.") (license license:lgpl2.1+))) +(define-public python-poppler-qt5 + (package + (name "python-poppler-qt5") + (version "0.24.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-poppler-qt5" version)) + (sha256 + (base32 + "0l69llw1fzwz8y90q0qp9q5pifbrqjjbwii7di54dwghw5fc6w1r")))) + (build-system python-build-system) + (arguments + `(;; There are no tests. The check phase just causes a rebuild. + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "setup.py" + ;; This check always fails, so disable it. + (("if not check_qtxml\\(\\)") + "if True") + ;; Enable C++11, which is needed because of Qt5. + (("\\*\\*ext_args" line) + (string-append "extra_compile_args=['-std=gnu++11'], " line))) + ;; We need to pass an extra flag here. This cannot be in + ;; configure-flags because it should not be passed for the + ;; installation phase. + ((@@ (guix build python-build-system) call-setuppy) + "build_ext" (list (string-append "--pyqt-sip-dir=" + (assoc-ref inputs "python-pyqt") + "/share/sip")) #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("python-sip" ,python-sip) + ("python-pyqt" ,python-pyqt) + ("poppler-qt5" ,poppler-qt5) + ("qtbase" ,qtbase))) + (home-page "https://pypi.python.org/pypi/python-poppler-qt5") + (synopsis "Python bindings for Poppler-Qt5") + (description + "This package provides Python bindings for the Qt5 interface of the +Poppler PDF rendering library.") + (license license:lgpl2.1+))) + (define-public libharu (package (name "libharu") @@ -484,7 +531,7 @@ extracting content or merging files.") (define-public mupdf (package (name "mupdf") - (version "1.10a") + (version "1.11") (source (origin (method url-fetch) @@ -492,10 +539,8 @@ extracting content or merging files.") name "-" version "-source.tar.gz")) (sha256 (base32 - "0dm8wcs8i29aibzkqkrn8kcnk4q0kd1v66pg48h5c3qqp4v1zk5a")) - (patches (search-patches "mupdf-build-with-openjpeg-2.1.patch" - "mupdf-mujs-CVE-2016-10132.patch" - "mupdf-mujs-CVE-2016-10133.patch")) + "02phamcchgsmvjnb3ir7r5sssvx9fcrscn297z73b82n1jl79510")) + (patches (search-patches "mupdf-build-with-openjpeg-2.1.patch")) (modules '((guix build utils))) (snippet ;; Delete all the bundled libraries except for mujs, which is @@ -507,7 +552,7 @@ extracting content or merging files.") "thirdparty/glfw" "thirdparty/harfbuzz" "thirdparty/jbig2dec" - "thirdparty/jpeg" + "thirdparty/libjpeg" "thirdparty/openjpeg" "thirdparty/zlib"))))) (build-system gnu-build-system) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index e513292214..db76160062 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -14,7 +14,8 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com> +;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -6122,9 +6123,8 @@ statements: @code{switch} and @code{case}.") (build-system perl-build-system) (synopsis "Perl extension for getting CPU information") (description - "In responce to a post on perlmonks.org, a module for counting the number -of CPU's on a system. Support has now also been added for type of CPU and -clock speed.") + "Sys::CPU is a module for counting the number of CPUs on a system, and +determining their type and clock speed.") (home-page (string-append "http://search.cpan.org/~mzsanford/" "Sys-CPU-" version)) (license (package-license perl)))) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index c782ecf47f..b68aea9d7b 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -32,18 +32,24 @@ #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gl) + #:use-module (gnu packages gnome) #:use-module (gnu packages glib) #:use-module (gnu packages graphics) + #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages libusb) + #:use-module (gnu packages llvm) #:use-module (gnu packages man) #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) + #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages tex) #:use-module (gnu packages web) @@ -192,7 +198,7 @@ MTP, and much more.") (description "This package provides the @code{exiftool} command and the @code{Image::ExifTool} Perl library to manipulate EXIF tags of digital images and a wide variety of other metadata.") - (license (package-license perl)))) + (license license:perl-license))) (define-public libpano13 (package @@ -300,3 +306,71 @@ photographic equipment.") ;; licensed GPL3, and the database is license CC-BY-SA 3.0. See the ;; README.md file for this clarification. (license (list license:lgpl3 license:gpl3 license:cc-by-sa3.0)))) + +(define-public darktable + (package + (name "darktable") + (version "2.2.4") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/darktable-org/darktable/releases/" + "download/release-" + version "/darktable-" version ".tar.xz")) + (sha256 + (base32 + "1n7rddkxwcifc3kcdlnar9w562xv4h78fqkkn27jihqzp3b4am5x")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; There are no tests. + #:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib") + #:make-flags + (list + (string-append "CPATH=" (assoc-ref %build-inputs "ilmbase") + "/include/OpenEXR:" (or (getenv "CPATH") ""))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append + "-Wl,-rpath=" + (assoc-ref outputs "out") "/lib/darktable")) + #t))))) + (native-inputs + `(("llvm" ,llvm-3.9.1) + ("clang" ,clang-3.9.1))) + (inputs + `(("libxslt" ,libxslt) + ("libxml2" ,libxml2) + ("pugixml" ,pugixml) + ("gtk+" ,gtk+) + ("sqlite" ,sqlite) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("cairo" ,cairo) + ("lcms" ,lcms) + ("exiv2" ,exiv2) + ("libtiff" ,libtiff) + ("curl" ,curl) + ("libgphoto2" ,libgphoto2) + ("dbus-glib" ,dbus-glib) + ("openexr" ,openexr) + ("ilmbase" ,ilmbase) + ("libsoup" ,libsoup) + ("python-jsonschema" ,python-jsonschema) + ("intltool" ,intltool) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("libwebp" ,libwebp) + ("lensfun" ,lensfun) + ("librsvg" ,librsvg) + ("json-glib" ,json-glib) + ("freeimage" ,freeimage))) + (home-page "https://www.darktable.org") + (synopsis "Virtual lighttable and darkroom for photographers") + (description "Darktable is a photography workflow application and RAW +developer. It manages your digital negatives in a database, lets you view +them through a zoomable lighttable and enables you to develop raw images +and enhance them.") + (license license:gpl3+))) diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm index 071820ecb3..1b55cd4eb9 100644 --- a/gnu/packages/php.scm +++ b/gnu/packages/php.scm @@ -53,7 +53,7 @@ (define-public php (package (name "php") - (version "7.1.3") + (version "7.1.5") (home-page "https://secure.php.net/") (source (origin (method url-fetch) @@ -61,7 +61,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "1c0brdq5aqh4i127pq1g904dfb6klz2gbg9gjvykg3kp6hk7r274")) + "1b7njiqgy66ga5c8wsm78mqqjr7lj3hlpwbbvksi2mn4jv1s6jfi")) (modules '((guix build utils))) (snippet '(with-directory-excursion "ext" @@ -119,6 +119,7 @@ ;; extension of php. "--with-iconv" "--with-openssl" + "--with-mysqli" ; Required for, e.g. wordpress "--with-pdo-mysql" "--with-zlib" "--enable-calendar" @@ -130,8 +131,7 @@ "--enable-inifile" "--enable-mbstring" "--enable-pcntl" - "--enable-sockets" - "--enable-threads")) + "--enable-sockets")) #:phases (modify-phases %standard-phases (add-after 'unpack 'do-not-record-build-flags @@ -169,12 +169,6 @@ "ext/standard/tests/general_functions/proc_open.phpt") (("/bin/cat") (which "cat"))) - ;; These tests fail because they include a file whose modification - ;; time is 0. Touch them to make the test pass. The issue is reported - ;; upstream as #74137. - (utime "sapi/phpdbg/tests/include.inc" 1 1) - (utime "sapi/phpdbg/tests/phpdbg_get_executable_stream_wrapper.inc" 1 1) - ;; The encoding of this file is not recognized, so we simply drop it. (delete-file "ext/mbstring/tests/mb_send_mail07.phpt") diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 6d84bf2db6..f94d56992e 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -173,14 +173,14 @@ colors, styles, options and details.") (define-public asymptote (package (name "asymptote") - (version "2.40") + (version "2.41") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asymptote/" version "/asymptote-" version ".src.tgz")) (sha256 (base32 - "08hy8hgh217df9kwznr22mg8vxxh3rbmbxgx3nqhxyggc9xqy544")))) + "1w7fbq6gy65g0mxg6wdxi7v178c5yxvh9yrnv3bzm4sjzf4pwvhx")))) (build-system gnu-build-system) ;; Note: The 'asy' binary retains a reference to docdir for use with its ;; "help" command in interactive mode, so adding a "doc" output is not diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index a12f8d8494..846c174fa7 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -3,6 +3,9 @@ ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> +;;; Copyright © 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,14 +45,17 @@ (define-public libsndfile (package (name "libsndfile") - (version "1.0.27") + (version "1.0.28") (source (origin (method url-fetch) (uri (string-append "http://www.mega-nerd.com/libsndfile/files/libsndfile-" version ".tar.gz")) + (patches (search-patches "libsndfile-armhf-type-checks.patch" + "libsndfile-CVE-2017-8361-8363-8365.patch" + "libsndfile-CVE-2017-8362.patch")) (sha256 (base32 - "1h7s61nhf7vklh9sdsbbqzb6x287q4x4j1jc5gmjragl4wprb4d3")))) + "1afzm7jx34jhqn32clc5xghyjglccam2728yxlx37yj2y0lkkwqz")))) (build-system gnu-build-system) (inputs `(("libvorbis" ,libvorbis) @@ -75,14 +81,14 @@ for reading and writing new sound file formats.") (define-public libsamplerate (package (name "libsamplerate") ; aka. Secret Rabbit Code (SRC) - (version "0.1.8") + (version "0.1.9") (source (origin (method url-fetch) (uri (string-append "http://www.mega-nerd.com/SRC/libsamplerate-" version ".tar.gz")) (sha256 (base32 - "01hw5xjbjavh412y63brcslj5hi9wdgkjd3h9csx5rnm8vglpdck")))) + "1ha46i0nbibq0pl0pjwcqiyny4hj8lp1bnl4dpxm64zjw9lb2zha")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -108,7 +114,7 @@ against computation cost. The current best converter provides a signal-to-noise ratio of 145dB with -3dB passband extending from DC to 96% of the theoretical best bandwidth for a given pair of input and output sample rates.") - (license l:gpl2+))) + (license l:bsd-2))) (define-public pulseaudio (package @@ -218,3 +224,38 @@ sound server.") graphical user interface to connect to a PulseAudio server and easily control the volume of all clients, sinks, etc.") (license l:gpl2+))) + +(define-public ponymix + (package + (name "ponymix") + (version "5") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/falconindy/ponymix/" + "archive/" version ".tar.gz")) + (sha256 + (base32 + "1c0ch98zry3c4ixywwynjid1n1nh4xl4l1p548giq2w3zwflaghn")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; There is no test suite. + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list (string-append "DESTDIR=" out))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda _ + (substitute* "Makefile" + (("/usr") "")))) + (delete 'configure)))) ; There's no configure phase. + (inputs + `(("pulseaudio" ,pulseaudio))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/falconindy/ponymix") + (synopsis "Console-based PulseAudio mixer") + (description "Ponymix is a PulseAudio mixer and volume controller with a +command-line interface. In addition, it is possible to use named sources and +sinks.") + (license l:expat))) diff --git a/gnu/packages/pv.scm b/gnu/packages/pv.scm index 9328da3533..59a0853a0e 100644 --- a/gnu/packages/pv.scm +++ b/gnu/packages/pv.scm @@ -29,13 +29,13 @@ (source (origin (method url-fetch) - (uri (string-append "http://www.ivarch.com/programs/sources/pv-" + (uri (string-append "https://www.ivarch.com/programs/sources/pv-" version ".tar.bz2")) (sha256 (base32 "13gg6r84pkvznpd1l11qw1jw9yna40gkgpni256khyx21m785khf")))) (build-system gnu-build-system) - (home-page "http://www.ivarch.com/programs/pv.shtml") + (home-page "https://www.ivarch.com/programs/pv.shtml") (synopsis "Pipeline progress indicator") (description "pv (Pipe Viewer) is a terminal-based tool for monitoring the progress diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 9863d1cf6b..54dc493904 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -36,7 +36,9 @@ ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> -;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com> +;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> +;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -529,14 +531,14 @@ John the Ripper).") (define-public python-paramiko (package (name "python-paramiko") - (version "1.16.0") + (version "1.17.4") (source (origin (method url-fetch) (uri (pypi-uri "paramiko" version)) (sha256 (base32 - "14k8z7ndc3zk5xivnm4d8lncchx475ll5izpf8vmfbq7rp9yp5rj")))) + "1rs2qcmskcmq66q6g5al08wa41l9am0fad5r719m8wf91msyylqw")))) (build-system python-build-system) (arguments '(;; FIXME: One test fails with "EOFError not raised by connect". @@ -1107,14 +1109,14 @@ Python file, so it can be easily copied into your project.") (define-public python-dateutil (package (name "python-dateutil") - (version "2.5.3") + (version "2.6.0") (source (origin (method url-fetch) (uri (pypi-uri "python-dateutil" version)) (sha256 (base32 - "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l")))) + "1lhq0hxjc3cfha101q02ld5ijlpfyjn2w1yh7wvpiy367pgzi8k2")))) (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six))) @@ -1352,7 +1354,8 @@ Python 3.3+.") (build-system python-build-system) (arguments `(#:python ,python-2 #:tests? #f)) ; invalid command "test" - (home-page "https://fedorahosted.org/dogtail/") + ;; Currently no offical homepage. + (home-page "https://pypi.python.org/pypi/dogtail/") (synopsis "GUI test tool and automation framework written in Python") (description "Dogtail is a GUI test tool and automation framework written in Python. @@ -1842,14 +1845,14 @@ and many external plugins.") (define-public python-pytest-cov (package (name "python-pytest-cov") - (version "2.2.1") + (version "2.4.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest-cov" version)) (sha256 (base32 - "1yl4nbhzfgsxqlsyk4clafgp9x11zvgrkprm9i2p3fgkwx9jxcm8")))) + "03c2qc42r4bczyw93gd7n0qi1h1jfhw7fnbhi33c3vp1hs81gm2k")))) (build-system python-build-system) (arguments `(#:phases @@ -1878,14 +1881,14 @@ supports coverage of subprocesses.") (define-public python-pytest-runner (package (name "python-pytest-runner") - (version "2.6.2") + (version "2.11.1") (source (origin (method url-fetch) (uri (pypi-uri "pytest-runner" version)) (sha256 (base32 - "1nwcqx0l3fv52kv8526wy8ypzghbq96c96di318d98d3wh7a8xg7")))) + "1cw978kqqcq916b9gfns1qjqvg33c5ail5jhw9054dsynkm32flq")))) (build-system python-build-system) (arguments `(#:phases @@ -2640,7 +2643,7 @@ version numbers.") (build-system python-build-system) (propagated-inputs `(("python-chardet" ,python-chardet))) - (home-page "https://fedorahosted.org/kitchen") + (home-page "https://github.com/fedora-infra/kitchen") (synopsis "Python API for snippets") (description "@code{kitchen} module provides a python API for all sorts of little useful snippets of code that everybody ends up writing for their projects @@ -3374,15 +3377,13 @@ mining and data analysis.") (define-public python-rq (package (name "python-rq") - (version "0.5.2") + (version "0.7.1") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/r/rq/rq-" - version ".tar.gz")) + (uri (pypi-uri "rq" version)) (sha256 - (base32 "0b0z5hn8wkfg300hx7816csgv3bcfamlr29fi3yzgqmpqxwj3fix")))) + (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh")))) (build-system python-build-system) (propagated-inputs `(("python-click" ,python-click) @@ -3401,14 +3402,15 @@ is designed to have a low barrier to entry.") (define-public python-cython (package (name "python-cython") - (version "0.24.1") + (version "0.25.2") (source (origin (method url-fetch) (uri (pypi-uri "Cython" version)) + (patches (search-patches "python-cython-fix-tests-32bit.patch")) (sha256 (base32 - "1fg7fmpvfcq9md4ncyqnnylyjy4z3ksdrshzis95g1sh03d8z044")))) + "01h3lrf6d98j07iakifi81qjszh6faa37ibx7ylva1vsqbwx2hgi")))) (build-system python-build-system) ;; we need the full python package and not just the python-wrapper ;; because we need libpython3.3m.so @@ -4215,6 +4217,38 @@ routines such as routines for numerical integration and optimization.") (package-with-python2 (strip-python2-variant python-scipy))) +(define-public python-sockjs-tornado + (package + (name "python-sockjs-tornado") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sockjs-tornado" version)) + (sha256 + (base32 + "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd")))) + (build-system python-build-system) + (arguments + `(;; There are no tests, and running the test phase requires missing + ;; dependencies + #:tests? #f)) + (propagated-inputs + `(("python-tornado" ,python-tornado))) + (home-page "http://github.com/mrjoes/sockjs-tornado/") + (synopsis + "SockJS python server implementation on top of Tornado framework") + (description + "SockJS-tornado provides the server side counterpart to a SockJS client +library, through the Tornado framework. + +SockJS provides a low latency, full duplex, cross-domain communication channel +between a web browser and web server.") + (license license:expat))) + +(define-public python2-sockjs-tornado + (package-with-python2 python-sockjs-tornado)) + (define-public python-socksipy-branch (package (name "python-socksipy-branch") @@ -4905,7 +4939,7 @@ cluster without needing to write any wrapper code yourself.") (replace 'check (lambda _ (zero? (system* "nosetests" "-v"))))))) (native-inputs `(("python-nose" ,python-nose) - ("python-pytest" ,python-pytest) + ("python-pytest" ,python-pytest-3.0) ("man-db" ,man-db) ("which" ,which))) (propagated-inputs @@ -5507,7 +5541,18 @@ features useful for text console applications.") (license license:lgpl2.1+))) (define-public python2-urwid - (package-with-python2 python-urwid)) + (let ((python2-urwid (package-with-python2 python-urwid))) + (package + (inherit python2-urwid) + (arguments + (append + '(#:phases + (modify-phases %standard-phases + ;; Disable the vterm tests because of non-deterministic failures + ;; with Python 2. See https://github.com/urwid/urwid/issues/230. + (add-after 'unpack 'delete-test_vterm.py + (delete-file "urwid/tests/test_vterm.py")))) + (package-arguments python-urwid)))))) (define-public python-openid (package @@ -5521,6 +5566,18 @@ features useful for text console applications.") (base32 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "./admin/runtests"))))))) + (properties `((python2-variant . ,(delay python2-openid)))) + (propagated-inputs + `(("python-defusedxml" ,python-defusedxml))) + (native-inputs + `(("python-psycopg2" ,python-psycopg2) + ("python-django" ,python-django))) (home-page "https://github.com/necaris/python3-openid") (synopsis "OpenID support for servers and consumers") (description "This library provides OpenID authentication for Python, both @@ -6092,13 +6149,13 @@ It is written entirely in Python.") (define-public python-tornado (package (name "python-tornado") - (version "4.3") + (version "4.5.1") (source (origin (method url-fetch) (uri (pypi-uri "tornado" version)) (sha256 - (base32 "1gzgwayl6hmc9jfcl88bni4jcsk2jcca9dn1rvrfsvnijcjx7hn9")))) + (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv")))) (build-system python-build-system) (arguments '(;; FIXME: Two tests error out with: @@ -6785,7 +6842,7 @@ should be stored on various operating systems.") (define-public python-llfuse (package (name "python-llfuse") - (version "1.1.1") + (version "1.2") (source (origin (method url-fetch) (uri (string-append @@ -6793,7 +6850,7 @@ should be stored on various operating systems.") "llfuse-" version ".tar.bz2")) (sha256 (base32 - "0v6vj9mb286njgd1szg9hz2qdh5f3vkhsvajripfcqg458av310v")))) + "11hms1x68bf1bqbqy7w3wpffqsd3jkgricmzrc1hrnwkswfzzlr4")))) (build-system python-build-system) (inputs `(("fuse" ,fuse) @@ -7088,7 +7145,7 @@ printing of sub-tables by specifying a row range.") (home-page "http://www.pytables.org/") (synopsis "Hierarchical datasets for Python") (description "PyTables is a package for managing hierarchical datasets and -designed to efficently cope with extremely large amounts of data.") +designed to efficiently cope with extremely large amounts of data.") (license license:bsd-3))) (define-public python2-tables @@ -7321,14 +7378,14 @@ message digests and key derivation functions.") (define-public python-pyopenssl (package (name "python-pyopenssl") - (version "16.2.0") + (version "17.0.0") (source (origin (method url-fetch) (uri (pypi-uri "pyOpenSSL" version)) (sha256 (base32 - "0vji4yrfshs15xpczbhzhasnjrwcarsqg87n98ixnyafnyxs6ybp")) + "1pdg1gpmkzj8yasg6cmkhcivxcdp4c12nif88y4qvsxq5ffzxas8")) (patches (search-patches "python-pyopenssl-skip-network-test.patch")))) (build-system python-build-system) @@ -7346,7 +7403,7 @@ message digests and key derivation functions.") (inputs `(("openssl" ,openssl))) (native-inputs - `(("python-pytest" ,python-pytest))) + `(("python-pytest" ,python-pytest-3.0))) (home-page "https://github.com/pyca/pyopenssl") (synopsis "Python wrapper module around the OpenSSL library") (description @@ -7433,7 +7490,7 @@ a hash value.") (source (origin (method url-fetch) - (uri (pypi-uri "python-termcolor" version)) + (uri (pypi-uri "termcolor" version)) (sha256 (base32 "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x")))) @@ -8690,7 +8747,7 @@ pure Python module that works on virtually all Python versions.") (description "Execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many Python interpreters across version, platform and network barriers. It has a -minimal and fast API targetting the following uses: +minimal and fast API targeting the following uses: @enumerate @item distribute tasks to (many) local or remote CPUs @item write and deploy hybrid multi-process applications @@ -8837,13 +8894,13 @@ processes across test runs.") (define-public python-icalendar (package (name "python-icalendar") - (version "3.11.3") + (version "3.11.4") (source (origin (method url-fetch) (uri (pypi-uri "icalendar" version)) (sha256 (base32 - "086jslw8cg2hni79j267p1dy6d27m7q5hi39ni2clh9waqbdf5v3")))) + "0ix3xxykz8hs8mx4f2063djawmd888y3vsl75fbvbfqvg67v35jn")))) (build-system python-build-system) (propagated-inputs `(("python-dateutil" ,python-dateutil) @@ -9371,6 +9428,7 @@ interface to the Amazon Web Services (AWS) API.") ("python-botocore" ,python-botocore) ("python-s3transfer" ,python-s3transfer) ("python-docutils" ,python-docutils) + ("python-pyyaml" ,python-pyyaml) ("python-rsa" ,python-rsa))) (arguments ;; FIXME: The 'pypi' release does not contain tests. @@ -10019,13 +10077,13 @@ programmatically interfacing with your system's $EDITOR.") (define-public python-sphinxcontrib-programoutput (package (name "python-sphinxcontrib-programoutput") - (version "0.8") + (version "0.10") (source (origin (method url-fetch) (uri (pypi-uri "sphinxcontrib-programoutput" version)) (sha256 (base32 - "098as6z1s0gb4dh5xcr1fd2vpm91zj93jzvgawspxf5s4hqs0xhp")))) + "153hhnlbx4688zj9wd64819ps5znc2jlyp5crkgzvn5hxgy99vpx")))) (build-system python-build-system) (arguments ;; FIXME: Many tests are failing and the upstream is gone. @@ -10659,14 +10717,14 @@ development version of CPython that are not available in older releases.") (define-public python-future (package (name "python-future") - (version "0.15.2") + (version "0.16.0") (source (origin (method url-fetch) (uri (pypi-uri "future" version)) (sha256 (base32 - "15wvcfzssc68xqnqi1dq4fhd0848hwi9jn42hxyvlqna40zijfrx")))) + "1nzy1k4m9966sikp0qka7lirh8sqrsyainyf8rk97db7nwdfv773")))) (build-system python-build-system) ;; Many tests connect to the network or are otherwise flawed. ;; https://github.com/PythonCharmers/python-future/issues/210 @@ -10789,7 +10847,7 @@ Python. It generates C++ code and a Makefile.")) (description "Rope is a refactoring library for Python. It facilitates the renaming, moving and extracting of attributes, functions, modules, fields and parameters in Python 2 source code. These refactorings can also be applied -to occurences in strings and comments.") +to occurrences in strings and comments.") (license license:gpl2))) (define-public python-py3status @@ -13831,7 +13889,7 @@ in other versions.") (home-page "https://liw.fi/coverage-test-runner/") (synopsis "Python module for running unit tests") (description "@code{CoverageTestRunner} is a python module for running -unit tests and failing them if the unit test module does not excercise all +unit tests and failing them if the unit test module does not exercise all statements in the module it tests.") (license license:gpl3+))) @@ -13947,3 +14005,620 @@ recognize TestCases.") (define-public python2-mando (package-with-python2 python-mando)) + +(define-public python-mando-0.3.1 + ;; python-radon (version 1.5.0) has a requirement + ;; for mando<0.4,>=0.3 + (package + (inherit python-mando) + (name "python-mando") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/rubik/mando/archive/v" + version + ".tar.gz")) + (sha256 + (base32 + "17jlkdpqw22z1nyml5ybslilqkzmnk0dxxjml8bfghav1l5hbwd2")))))) + +(define-public python-fudge + (package + (name "python-fudge") + ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2 + ;; package, which is currently the only use of this package. + (version "0.9.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fudge" version)) + (sha256 + (base32 + "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package. + (home-page "https://github.com/fudge-py/fudge") + (synopsis "Replace real objects with fakes/mocks/stubs while testing") + (description + "Fudge is a Python module for using fake objects (mocks and stubs) to +test real ones. + +In readable Python code, you declare the methods available on your fake object +and how they should be called. Then you inject that into your application and +start testing. This declarative approach means you don’t have to record and +playback actions and you don’t have to inspect your fakes after running code. +If the fake object was used incorrectly then you’ll see an informative +exception message with a traceback that points to the culprit.") + (license license:expat))) + +(define-public python2-fudge + (package-with-python2 python-fudge)) + +(define-public python-oauth2client + (package + (name "python-oauth2client") + (version "4.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "oauth2client" version)) + (sha256 + (base32 + "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) + (propagated-inputs + `(("python-httplib2" ,python-httplib2) + ("python-pyasn1" ,python-pyasn1) + ("python-pyasn1-modules" ,python-pyasn1-modules) + ("python-rsa" ,python-rsa) + ("python-six" ,python-six))) + (home-page "http://github.com/google/oauth2client/") + (synopsis "OAuth 2.0 client library") + (description "@code{python-oauth2client} provides an OAuth 2.0 client +library for Python") + (license license:asl2.0))) + +(define-public python-flask-oidc + (package + (name "python-flask-oidc") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flask-oidc" version)) + (sha256 + (base32 + "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2")))) + (build-system python-build-system) + (propagated-inputs + `(("python-flask" ,python-flask) + ("python-itsdangerous" ,python-itsdangerous) + ("python-oauth2client" ,python-oauth2client) + ("python-six" ,python-six))) + (native-inputs + `(("python-nose" ,python-nose) + ("python-mock" ,python-mock))) + (home-page "https://github.com/puiterwijk/flask-oidc") + (synopsis "OpenID Connect extension for Flask") + (description "@code{python-flask-oidc} provides an OpenID Connect extension +for Flask.") + (license license:bsd-2))) + +(define-public python-mwclient + (package + (name "python-mwclient") + (version "0.8.4") + (source + (origin + (method url-fetch) + ;; The PyPI version wouldn't contain tests. + (uri (string-append "https://github.com/mwclient/mwclient/archive/" + "v" version ".tar.gz")) + (sha256 + (base32 + "1jj0yhilkjir00719fc7w133x7hdyhkxhk6xblla4asig45klsfv")))) + (build-system python-build-system) + (propagated-inputs + `(("python-requests" ,python-requests) + ("python-requests-oauthlib" + ,python-requests-oauthlib) + ("python-six" ,python-six))) + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-pytest-pep8" ,python-pytest-pep8) + ("python-pytest-cache" ,python-pytest-cache) + ("python-pytest-cov" ,python-pytest-cov) + ("python-responses" ,python-responses))) + (home-page "https://github.com/btongminh/mwclient") + (synopsis "MediaWiki API client") + (description "This package provides a MediaWiki API client.") + (license license:expat))) + +(define-public python2-mwclient + (package-with-python2 python-mwclient)) + +(define-public python-pytest-warnings + (package + (name "python-pytest-warnings") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-warnings" version)) + (sha256 + (base32 + "0gf2dpahpl5igb7jh1sr9acj3z3gp7zahqdqb69nk6wx01c8kc1g")))) + (build-system python-build-system) + (propagated-inputs + `(("pytest" ,python-pytest-3.0))) + (home-page "https://github.com/fschulze/pytest-warnings") + (synopsis "Pytest plugin to list Python warnings in pytest report") + (description + "Python-pytest-warnings is a pytest plugin to list Python warnings in +pytest report.") + (license license:expat))) + +(define-public python2-pytest-warnings + (package-with-python2 python-pytest-warnings)) + +(define-public python-pytest-catchlog + (package + (name "python-pytest-catchlog") + (version "1.2.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-catchlog" version ".zip")) + (sha256 + (base32 + "1w7wxh27sbqwm4jgwrjr9c2gy384aca5jzw9c0wzhl0pmk2mvqab")))) + (build-system python-build-system) + (native-inputs + `(("unzip" ,unzip))) + (propagated-inputs + `(("pytest" ,python-pytest-3.0))) + (home-page "https://github.com/eisensheng/pytest-catchlog") + (synopsis "Pytest plugin to catch log messages") + (description + "Python-pytest-catchlog is a pytest plugin to catch log messages. This is +a fork of pytest-capturelog.") + (license license:expat))) + +(define-public python2-pytest-catchlog + (package-with-python2 python-pytest-catchlog)) + +(define-public python-utils + (package + (name "python-utils") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "python-utils" version)) + (sha256 + (base32 + "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p")))) + (build-system python-build-system) + (native-inputs + `(("pytest-runner" ,python-pytest-runner) + ("pytest" ,python-pytest) + ("six" ,python-six))) + (home-page "https://github.com/WoLpH/python-utils") + (synopsis "Convenient utilities not included with the standard Python install") + (description + "Python Utils is a collection of small Python functions and classes which +make common patterns shorter and easier.") + (license license:bsd-2))) + +(define-public python2-utils + (package-with-python2 python-utils)) + +(define-public python-webassets + (package + (name "python-webassets") + (version "0.12.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "webassets" version)) + (sha256 + (base32 + "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7")))) + (build-system python-build-system) + (native-inputs + `(("python-jinja2" ,python-jinja2) + ("python-mock" ,python-mock) + ("python-nose" ,python-nose) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/miracle2k/webassets") + (synopsis "Media asset management") + (description "Merges, minifies and compresses Javascript and CSS files, +supporting a variety of different filters, including YUI, jsmin, jspacker or +CSS tidy. Also supports URL rewriting in CSS files.") + (license license:bsd-2))) + +(define-public python-sphinx-me + (package + (name "python-sphinx-me") + (version "0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sphinx-me" version)) + (sha256 + (base32 + "06jzgp213zihnvpcy2y5jy3ykid3apc2ncp2pg6a2g05lhiziglq")))) + (build-system python-build-system) + (home-page "https://github.com/stephenmcd/sphinx-me") + (synopsis "Create a Sphinx documentation shell") + (description + "Create a Sphinx documentation shell for your project and include the +README file as the documentation index. It handles extracting the required +meta data such as the project name, author and version from your project for +use in your Sphinx docs.") + (license license:bsd-2))) + +(define-public python2-sphinx-me + (package-with-python2 python-sphinx-me)) + +(define-public python-cssmin + (package + (name "python-cssmin") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cssmin" version)) + (sha256 + (base32 + "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0")))) + (build-system python-build-system) + (home-page "https://github.com/zacharyvoase/cssmin") + (synopsis "Python port of the YUI CSS Compressor") + (description "Python port of the YUI CSS Compressor.") + (license (list license:expat license:bsd-3)))) + +(define-public python2-cssmin + (package-with-python2 python-cssmin)) + +(define-public python-diff-match-patch + (package + (name "python-diff-match-patch") + (version "20121119") + (source + (origin + (method url-fetch) + (uri (pypi-uri "diff-match-patch" version)) + (sha256 + (base32 + "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx")))) + (build-system python-build-system) + (home-page "https://code.google.com/p/google-diff-match-patch") + (synopsis "Synchronize plain text") + (description "Diff Match and Patch libraries offer robust algorithms to +perform the operations required for synchronizing plain text.") + (license license:asl2.0))) + +(define-public python2-diff-match-patch + (package-with-python2 python-diff-match-patch)) + +(define-public python-dirsync + (package + (name "python-dirsync") + (version "2.2.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "dirsync" version ".zip")) + (sha256 + (base32 + "1hcdvmkwd5512zbxpin0k7bx5bkgzy3swjx7d0kj1y45af6r75v2")))) + (build-system python-build-system) + (native-inputs + `(("unzip" ,unzip))) + (propagated-inputs + `(("six" ,python-six))) + (home-page "https://bitbucket.org/tkhyn/dirsync") + (synopsis "Advanced directory tree synchronisation tool") + (description "Advanced directory tree synchronisation tool.") + (license license:expat))) + +(define-public python2-dirsync + (package-with-python2 python-dirsync)) + +(define-public python-nosexcover + (package + (name "python-nosexcover") + (version "1.0.11") + (source (origin + (method url-fetch) + (uri (pypi-uri "nosexcover" version)) + (sha256 + (base32 + "10xqr12qv62k2flxwqhh8cr00cjhn7sfjrm6p35gd1x5bmjkr319")))) + (build-system python-build-system) + (propagated-inputs + `(("python-coverage" ,python-coverage) + ("python-nose" ,python-nose))) + (home-page "http://github.com/cmheisel/nose-xcover") + (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports") + (description "Nose-xcover is a companion to the built-in +@code{nose.plugins.cover}. This plugin will write out an XML coverage report +to a file named coverage.xml. + +It will honor all the options you pass to the Nose coverage plugin, +especially -cover-package.") + (license license:expat))) + +(define-public python2-nosexcover + (package-with-python2 python-nosexcover)) + +(define-public python-elasticsearch + (package + (name "python-elasticsearch") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "elasticsearch" version)) + (sha256 + (base32 + "1sdw1r05cw7ihnmng8ra9v968fj7bq6sji8i1dikymsnkcpgc69g")))) + (build-system python-build-system) + (native-inputs + `(("python-mock" ,python-mock) + ("python-nosexcover" ,python-nosexcover) + ("python-pyaml" ,python-pyaml) + ("python-requests" ,python-requests))) + (propagated-inputs + `(("urllib3" ,python-urllib3))) + (arguments + ;; tests require the test_elasticsearch module but it is not distributed. + `(#:tests? #f)) + (home-page "https://github.com/elastic/elasticsearch-py") + (synopsis "Low-level client for Elasticsearch") + (description "Official low-level client for Elasticsearch. Its goal is to +provide common ground for all Elasticsearch-related code in Python; because of +this it tries to be opinion-free and very extendable.") + (license license:expat))) + +(define-public python2-elasticsearch + (package-with-python2 python-elasticsearch)) + +(define-public python-levenshtein + (package + (name "python-levenshtein") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-Levenshtein" version)) + (sha256 + (base32 + "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3")))) + (build-system python-build-system) + (home-page "https://github.com/ztane/python-Levenshtein") + (synopsis "Fast computation of Levenshtein distance and string similarity") + (description + "The Levenshtein Python C extension module contains functions for fast computation of +@enumerate +@item Levenshtein (edit) distance, and edit operations +@item string similarity +@item approximate median strings, and generally string averaging +@item string sequence and set similarity +@end enumerate +It supports both normal and Unicode strings.") + (license license:gpl2+))) + +(define-public python2-levenshtein + (package-with-python2 python-levenshtein)) + +(define-public python-scandir + (package + (name "python-scandir") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "scandir" version)) + (sha256 + (base32 "0yjrgp0mxp3d8bjkq2m1ac2ys8n76wykksvgyjrnil9gr3fx7a5d")))) + (build-system python-build-system) + (home-page "https://github.com/benhoyt/scandir") + (synopsis "Directory iteration function") + (description + "Directory iteration function like os.listdir(), except that instead of +returning a list of bare filenames, it yields DirEntry objects that include +file type and stat information along with the name. Using scandir() increases +the speed of os.walk() by 2-20 times (depending on the platform and file +system) by avoiding unnecessary calls to os.stat() in most cases.") + (license license:bsd-3))) + +(define-public python2-scandir + (package-with-python2 python-scandir)) + +(define-public python2-stemming + (package + (name "python2-stemming") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "stemming" version)) + (sha256 + (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2)) + (home-page "https://bitbucket.org/mchaput/stemming/overview") + (synopsis "Python implementations of various stemming algorithms") + (description + "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins +stemming algorithms for English. These implementations are straightforward and +efficient, unlike some Python versions of the same algorithms available on the +Web. This package is an extraction of the stemming code included in the Whoosh +search engine.") + (license license:public-domain))) + +(define-public python-factory-boy + (package + (name "python-factory-boy") + (version "2.8.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "factory_boy" version)) + (sha256 + (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56")))) + (build-system python-build-system) + (arguments + ;; Tests are not included in the tarball. + `(#:tests? #f)) + (propagated-inputs + `(("faker" ,python-faker))) + (home-page "https://github.com/benhoyt/scandir") + (synopsis "Versatile test fixtures replacement") + (description + "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl. + +As a fixtures replacement tool, it aims to replace static, hard to maintain +fixtures with easy-to-use factories for complex object. + +Instead of building an exhaustive test setup with every possible combination +of corner cases, factory_boy allows you to use objects customized for the +current test, while only declaring the test-specific fields") + (license license:expat))) + +(define-public python2-factory-boy + (package-with-python2 python-factory-boy)) + +(define-public python-translate-toolkit + (package + (name "python-translate-toolkit") + (version "2.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "translate-toolkit" version ".tar.bz2")) + (sha256 + (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq")))) + (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-sphinx" ,python-sphinx))) + (propagated-inputs + `(("python-babel" ,python-babel) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-chardet" ,python-chardet) + ("python-diff-match-patch" ,python-diff-match-patch) + ("python-levenshtein" ,python-levenshtein) + ("python-lxml" ,python-lxml) + ("python-six" ,python-six) + ("python-vobject" ,python-vobject) + ("python-pyyaml" ,python-pyyaml))) + (arguments + ;; TODO: tests are not run, because they end with + ;; TypeError: parse() missing 2 required positional arguments: 'tree' and + ;; 'parse_funcs' + ;; during test setup. + `(#:tests? #f)) + (home-page "http://toolkit.translatehouse.org") + (synopsis "Tools and API for translation and localization engineering") + (description + "Tools and API for translation and localization engineering. It contains +several utilities, as well as an API for building localization tools.") + (license license:gpl2+))) + +(define-public python2-translate-toolkit + (package-with-python2 python-translate-toolkit)) + +(define-public python-mysqlclient + (package + (name "python-mysqlclient") + (version "1.3.10") + (source + (origin + (method url-fetch) + (uri (pypi-uri "mysqlclient" version)) + (sha256 + (base32 + "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5")))) + (build-system python-build-system) + (native-inputs + `(("mariadb" ,mariadb) + ("nose" ,python-nose) + ("mock" ,python-mock) + ("py.test" ,python-pytest))) + (inputs + `(("mysql" ,mysql) + ("libz" ,zlib) + ("openssl" ,openssl))) + (home-page "https://github.com/PyMySQL/mysqlclient-python") + (synopsis "MySQLdb is an interface to the popular MySQL database server for Python") + (description "MySQLdb is an interface to the popular MySQL database server +for Python. The design goals are: +@enumerate +@item Compliance with Python database API version 2.0 [PEP-0249], +@item Thread-safety, +@item Thread-friendliness (threads will not block each other). +@end enumerate") + (license license:gpl2))) + +(define-public python2-mysqlclient + (package-with-python2 python-mysqlclient)) + +(define-public python-hiredis + (package + (name "python-hiredis") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hiredis" version)) + (sha256 + (base32 + "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa")))) + (build-system python-build-system) + (arguments + ;; no tests + `(#:tests? #f)) + (home-page "https://github.com/redis/hiredis-py") + (synopsis "Python extension that wraps protocol parsing code in hiredis") + (description "Python-hiredis is a python extension that wraps protocol +parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.") + (license license:bsd-3))) + +(define-public python2-hiredis + (package-with-python2 python-hiredis)) + +(define-public python-fakeredis + (package + (name "python-fakeredis") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "fakeredis" version)) + (sha256 + (base32 + "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r")))) + (build-system python-build-system) + (arguments + ;; no tests + `(#:tests? #f)) + (home-page "https://github.com/jamesls/fakeredis") + (synopsis "Fake implementation of redis API for testing purposes") + (description "Fakeredis is a pure python implementation of the redis-py +python client that simulates talking to a redis server. This was created for a +single purpose: to write unittests. Setting up redis is not hard, but many time + you want to write unittests that do not talk to an external server (such as +redis). This module now allows tests to simply use this module as a reasonable +substitute for redis.") + (license license:bsd-3))) + +(define-public python2-fakeredis + (package-with-python2 python-fakeredis)) diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index aa12b2c493..0734b6d0f7 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -69,27 +69,15 @@ (define-public qemu (package (name "qemu") - (version "2.8.0") + (version "2.9.0") (source (origin (method url-fetch) (uri (string-append "http://wiki.qemu-project.org/download/qemu-" - version ".tar.bz2")) + version ".tar.xz")) + (patches (search-patches "qemu-CVE-2017-7493.patch")) (sha256 (base32 - "0qjy3rcrn89n42y5iz60kgr0rrl29hpnj8mq2yvbc1wrcizmvzfs")) - (patches (search-patches "qemu-CVE-2016-10155.patch" - "qemu-CVE-2017-2615.patch" - "qemu-CVE-2017-2620.patch" - "qemu-CVE-2017-2630.patch" - "qemu-CVE-2017-5525.patch" - "qemu-CVE-2017-5526.patch" - "qemu-CVE-2017-5552.patch" - "qemu-CVE-2017-5578.patch" - "qemu-CVE-2017-5579.patch" - "qemu-CVE-2017-5667.patch" - "qemu-CVE-2017-5856.patch" - "qemu-CVE-2017-5898.patch" - "qemu-CVE-2017-5931.patch")))) + "08mhfs0ndbkyqgw7fjaa9vjxf4dinrly656f6hjzvmaz7hzc677h")))) (build-system gnu-build-system) (arguments '(;; Running tests in parallel can occasionally lead to failures, like: @@ -275,14 +263,14 @@ all common programming languages. Vala bindings are also provided.") (define-public libvirt (package (name "libvirt") - (version "2.1.0") + (version "3.2.0") (source (origin (method url-fetch) (uri (string-append "http://libvirt.org/sources/libvirt-" version ".tar.xz")) (sha256 (base32 - "0sriasjc573c519yqw1hcfb3qqjcsm9hm8vayw0anwkl6di9ay8s")))) + "17i08v3836c9w4dwcklvbgzin3aw1gbksm9ry8kpk837nn1s10cl")))) (build-system gnu-build-system) (arguments `(;; FAIL: virshtest @@ -346,14 +334,14 @@ to integrate other virtualization mechanisms if needed.") (define-public libvirt-glib (package (name "libvirt-glib") - (version "0.2.3") + (version "1.0.0") (source (origin (method url-fetch) (uri (string-append "ftp://libvirt.org/libvirt/glib/" "libvirt-glib-" version ".tar.gz")) (sha256 (base32 - "1pahj8qa7k2307sd57rwqwq1hijya02v0sxk91hl3cw48niimcf3")))) + "0iwa5sdbii52pjpdm5j37f67sdmf0kpcky4liwhy1nf43k85i4fa")))) (build-system gnu-build-system) (arguments `(#:phases @@ -394,13 +382,13 @@ three libraries: (define-public python-libvirt (package (name "python-libvirt") - (version "2.0.0") + (version "3.2.0") (source (origin (method url-fetch) (uri (pypi-uri "libvirt-python" version)) (sha256 (base32 - "0h0x5lpsx97bvw20pzfcsdmmivximddq4qmn8fk0n55dqv0wn5kq")))) + "0g80vhjss1a48w60zw0pd5fhpwfjw2dqhh0fbs730brkxj6xv1dc")))) (build-system python-build-system) (arguments `(#:phases @@ -408,9 +396,10 @@ three libraries: (add-after 'unpack 'patch-nosetests-path (lambda* (#:key inputs #:allow-other-keys) (substitute* "setup.py" - (("sys.executable, \"/usr/bin/nosetests\"") - (string-append "\"" (which "bash") "\", \"" - (which "nosetests") "\""))) + (("\"/usr/bin/nosetests\"") + (string-append "\"" (which "nosetests") "\"")) + (("self\\.spawn\\(\\[sys\\.executable, nose\\]\\)") + (format #f "self.spawn([\"~a\", nose])" (which "bash")))) #t))))) (inputs `(("libvirt" ,libvirt))) @@ -431,7 +420,7 @@ virtualization library.") (define-public virt-manager (package (name "virt-manager") - (version "1.4.0") + (version "1.4.1") (source (origin (method url-fetch) (uri (string-append "https://virt-manager.org/download/sources" @@ -439,7 +428,7 @@ virtualization library.") version ".tar.gz")) (sha256 (base32 - "1jnawqjmcqd2db78ngx05x7cxxn3iy1sb4qfgbwcn045qh6a8cdz")))) + "0i1rkxz730vw1nqghrp189jhhp53pw81k0h71hhxmyqlkyclkig6")))) (build-system python-build-system) (arguments `(#:python ,python-2 diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index fb242a01da..d94c652ab2 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -47,7 +47,7 @@ #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages linux) - #:use-module (gnu packages databases) + #:use-module (gnu packages maths) #:use-module (gnu packages pciutils) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -349,7 +349,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtbase (package (name "qtbase") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -358,7 +358,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0zjmcrmnnmaz1lr9wc5i6y565hsvl8ycn790ivqaz62dv54zbkgd")) + "01f07yjly7y24njl2h4hyknmi7pf8yd9gky23szcfkd40ap12wf1")) (modules '((guix build utils))) (snippet '(begin @@ -375,6 +375,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") `(("alsa-lib" ,alsa-lib) ("cups" ,cups) ("dbus" ,dbus) + ("double-conversion" ,double-conversion) ("eudev" ,eudev) ("expat" ,expat) ("fontconfig" ,fontconfig) @@ -467,19 +468,15 @@ developers using C++ or QML, a CSS & JavaScript like language.") "-openssl-linked" ;; explicitly link with dbus instead of dlopening it "-dbus-linked" - ;; drop special machine instructions not supported - ;; on all instances of the target + ;; don't use the precompiled headers + "-no-pch" + ;; drop special machine instructions that do not have + ;; runtime detection ,@(if (string-prefix? "x86_64" (or (%current-target-system) (%current-system))) '() '("-no-sse2")) - "-no-sse3" - "-no-ssse3" - "-no-sse4.1" - "-no-sse4.2" - "-no-avx" - "-no-avx2" "-no-mips_dsp" "-no-mips_dspr2"))))) (add-after 'install 'patch-qt_config.prf @@ -532,7 +529,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtsvg (package (inherit qtbase) (name "qtsvg") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -541,7 +538,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0irr9h566hl9nx8p919rz276zbfvvd6vqdb6i9g6b3piikdigw5h")))) + "12fwzbp28szqw1sk3flb8i6xnxgl94siwyy41ffdmd0s44f1jwwq")))) (propagated-inputs `()) (native-inputs `(("perl" ,perl))) (inputs @@ -575,7 +572,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtimageformats (package (inherit qtsvg) (name "qtimageformats") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -584,11 +581,10 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1x3p1xmw7spxa4bwriyrwsfrq31jabsdjsi5fras9y39naia55sg")) + "0vv0wh5q5sih294x661djzwvgdwy7r6xpnxsc111k5hwq7m5w13m")) (modules '((guix build utils))) (snippet - '(begin - (delete-file-recursively "src/3rdparty"))))) + '(delete-file-recursively "src/3rdparty")))) (native-inputs `()) (inputs `(("jasper" ,jasper) @@ -602,7 +598,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtx11extras (package (inherit qtsvg) (name "qtx11extras") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -611,7 +607,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "09z49jm70f5i0gcdz9a16z00pg96x8pz7vri5wpirh3fqqn0qnjz")))) + "03i8lk9qcdf8h2k4f3rkqqkzbrlnyaspv9mgjkn4k61s2asz5mxy")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -623,7 +619,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtxmlpatterns (package (inherit qtsvg) (name "qtxmlpatterns") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -632,7 +628,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1rgqnpg64gn5agmvjwy0am8hp5fpxl3cdkixr1yrsdxi5a6961d8")))) + "016s75j2cml7kc8scdm9a6pmxm8jhs424lml2h9znm1flmgadzvv")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -640,7 +636,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (add-after 'unpack 'disable-network-tests (lambda _ (substitute* "tests/auto/auto.pro" (("qxmlquery") "# qxmlquery") - (("xmlpatterns") "# xmlpatterns")) + (("xmlpatterns ") "# xmlpatterns")) #t)))))) (native-inputs `(("perl" ,perl))) (inputs `(("qtbase" ,qtbase))))) @@ -648,7 +644,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtdeclarative (package (inherit qtsvg) (name "qtdeclarative") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -657,7 +653,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0mjxfwnplpx60jc6y94krg00isddl9bfwc7dayl981njb4qds4zx")))) + "0ilaf2sprpk9fg2j3905hxnhm0xbnm88ppk4zifp7n0jmnwix51j")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -674,7 +670,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtconnectivity (package (inherit qtsvg) (name "qtconnectivity") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -683,7 +679,18 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0rmr7bd4skby7bax9hpj2sid2bq3098nkw7xm02mdp04hc3bks5k")))) + "1w97na5s420y08dcydqinbqb0rd9h4pfdnjbwslr0qvzsvlh2bbv")))) + (arguments + (substitute-keyword-arguments (package-arguments qtsvg) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'disable-failing-tests + ;; this test fails on armhf and aarch64 + (lambda _ + (substitute* "tests/auto/qndefnfcsmartposterrecord/tst_qndefnfcsmartposterrecord.cpp" + (("QCOMPARE\\(record.action\\(\\), QNdefNfcSmartPosterRecord::UnspecifiedAction") + "//QCOMPARE(record.action(), QNdefNfcSmartPosterRecord::UnspecifiedAction")) + #t)))))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) @@ -695,7 +702,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtwebsockets (package (inherit qtsvg) (name "qtwebsockets") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -704,7 +711,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1laj0slwibs0bg69kgrdhc9k1s6yisq3pcsr0r9rhbkzisv7aajw")))) + "1xa5p36grqxz3fa08amn7r3dy6k28g6y0gkc6jgj7lyhjzr0l4da")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -716,7 +723,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtsensors (package (inherit qtsvg) (name "qtsensors") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -725,7 +732,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "041v1x8pwfzpyk6y0sy5zgm915pi15xdhiy18fd5wqayvcp99cyc")))) + "15p7bp21yj4cdl5yfc9qnn4lhhiwiwx3b71lrb431kgqxhwhcp9s")))) (native-inputs `(("perl" ,perl) ("qtdeclarative" ,qtdeclarative))) @@ -734,7 +741,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtmultimedia (package (inherit qtsvg) (name "qtmultimedia") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -743,7 +750,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1vvxmgmvjnz9w1h2ph1j2fy77ij141ycx5fric60lq02pxzifax5")) + "01sakngvsqr90qhrxyghfqdpddpxwbjyzzhm34k0hlpr6i409g58")) (modules '((guix build utils))) (snippet '(begin @@ -769,7 +776,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtwayland (package (inherit qtsvg) (name "qtwayland") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -778,7 +785,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1iq1c89y4ggq0dxjlf62jyhh8a9l3x7y914x84w5pby8h3hwagzj")))) + "06ilh55vaxbkyv7irw0n11gxgc34ypx2qhqawxzy7kllzg9zcl7z")))) (native-inputs `(("glib" ,glib) ("perl" ,perl) @@ -800,7 +807,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtserialport (package (inherit qtsvg) (name "qtserialport") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -809,7 +816,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "09jsryc0z49cz9783kq48rkn42f10c6krzivp812ddwjsfdy3mbn")))) + "1b86al3zn1pxyk0n59vh8bqxrpz2m0j33ygclaqbxl1sszg7ycaj")))) (native-inputs `(("perl" ,perl))) (inputs `(("qtbase" ,qtbase) @@ -818,7 +825,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtserialbus (package (inherit qtsvg) (name "qtserialbus") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -827,7 +834,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0mxi43l2inpbar8rmg21qjg33bv3f1ycxjgvzjf12ncnybhdnzkj")))) + "02n1b1wrvfg6c7z15c5c5gv9r5gd4pp58jrd1a8d8fg3ybcksd2q")))) (inputs `(("qtbase" ,qtbase) ("qtserialport" ,qtserialport))))) @@ -835,7 +842,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtwebchannel (package (inherit qtsvg) (name "qtwebchannel") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -844,7 +851,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "16rij92dxy4k5231l3dpmhy7cnz0cjkn50cpzaf014zrdz3kmav3")))) + "0jhbgp9rdp5lpwjrykxmg4lb60wk7gm3dldz5kp3b8ms2dab3xav")))) (native-inputs `(("perl" ,perl) ("qtdeclarative" ,qtdeclarative) @@ -854,7 +861,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtlocation (package (inherit qtsvg) (name "qtlocation") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -863,7 +870,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "17zkzffzwbg6aqhsggs23cmwzq4y45m938842lsc423hfm7fdsgr")))) + "1fqssa8rhq83lnxjcdh4ijqck3lmqglpk8yax8x17w49v6gf78a8")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -877,7 +884,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qttools (package (inherit qtsvg) (name "qttools") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -886,7 +893,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1b6zqa5690b8lqms7rrhb8rcq0xg5hp117v3m08qngbcd0i706b4")))) + "10wx4vydj91yag30457c7azx4ihrwky42l7zzwkbmdlksdv8xv4m")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -900,7 +907,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtscript (package (inherit qtsvg) (name "qtscript") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -909,7 +916,8 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "09m41n95448pszr7inlg03ycb66s1a9hzfylaka92382acf1myav")))) + "1lssbsjf2p2ag02fjq6k6vk7vywhj4jsl286r2fqi78q5lfvjfi9")) + (patches (search-patches "qtscript-disable-tests.patch")))) (native-inputs `(("perl" ,perl) ("qttools" ,qttools))) @@ -919,7 +927,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtquickcontrols (package (inherit qtsvg) (name "qtquickcontrols") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -928,7 +936,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "17cyfyqzjbm9dhq9pjscz36y84y16rmxwk6h826gjfprddrimsvg")))) + "09mkswxw7wa2l8xz9fbblxr1pbi86hggis55j4k8ifnrrw60vrq4")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -939,7 +947,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtquickcontrols2 (package (inherit qtsvg) (name "qtquickcontrols2") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -948,7 +956,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1v77ydy4k15lksp3bi2kgha2h7m79g4n7c2qhbr09xnvpb8ars7j")))) + "06yy98x4vic2yrlpp83gf4kvl7kd93q62k178w0cy4sgqxp8d6dh")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -959,7 +967,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtgraphicaleffects (package (inherit qtsvg) (name "qtgraphicaleffects") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -968,7 +976,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1j2drnx7zp3w6cgvy7bn00fyk5v7vw1j1hidaqcg78lzb6zgls1c")))) + "06frknb7m8bgg55rs7jjm61iziisy2ykzrrc5dy3vj0aad89najz")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -977,6 +985,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ("qtdeclarative" ,qtdeclarative))))) (define-public qtdeclarative-render2d + ;; As of Qt-5.8.0 this module has been merged into qtdeclarative (package (inherit qtsvg) (name "qtdeclarative-render2d") (version "5.7.1") @@ -995,12 +1004,13 @@ developers using C++ or QML, a CSS & JavaScript like language.") (native-inputs `()) (inputs `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative))))) + ("qtdeclarative" ,qtdeclarative))) + (properties `((superseded . ,qtdeclarative))))) (define-public qtgamepad (package (inherit qtsvg) (name "qtgamepad") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1009,7 +1019,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "10lijbsg9xx5ddbbjymdgl41nxz99yn1qgiww2kkggxwwdjj2axv")))) + "0dwcrq60h802z694h4108figlr3yvp8fpzhwjzbjm503v8yaxw5j")))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config))) @@ -1024,7 +1034,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtscxml (package (inherit qtsvg) (name "qtscxml") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1033,7 +1043,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "135kknqdmib2cjryfmvfgv7a2qx9pyba3m7i7nkbc5d742r4mbcx")) + "1i4xl24q4i32mbhyndrwaz0xj79d9n84s320gmkf5rwnfcwrvfxn")) (modules '((guix build utils))) (snippet '(begin @@ -1048,7 +1058,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtpurchasing (package (inherit qtsvg) (name "qtpurchasing") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1057,7 +1067,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "0hkvrgafz1hx9q4yc3nskv3pd3fszghvvd5a7mj33ynf55wpb57n")))) + "0mdkw73yx1csz9mf3wl0w1x1b8cv9j5px4nvakrknkjzaa9qgzdk")))) (inputs `(("qtbase" ,qtbase) ("qtdeclarative" ,qtdeclarative))))) @@ -1065,7 +1075,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtcanvas3d (package (inherit qtsvg) (name "qtcanvas3d") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1074,7 +1084,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1d5xpq3mhjg4ipxzap7s2vnlfcd02d3yq720npv10xxp2ww0i1x8")) + "18yaikbwk4d7sh09psi3kjn1mxjp4d2f3qchfzgq5x96yn8gfijl")) (modules '((guix build utils))) (snippet '(delete-file-recursively "examples/canvas3d/3rdparty")))) @@ -1099,7 +1109,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtcharts (package (inherit qtsvg) (name "qtcharts") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1108,7 +1118,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1qrzcddwff2hxsbxrraff16j4abah2zkra2756s1mvydj9lyxzl5")))) + "11m5g1fxip6z2xk1z6g6h4rq7v282qbkxflan8hs87hadnzars03")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1119,7 +1129,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtdatavis3d (package (inherit qtsvg) (name "qtdatavis3d") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" @@ -1128,7 +1138,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") version ".tar.xz")) (sha256 (base32 - "1y00p0wyj5cw9c2925y537vpmmg9q3kpf7qr1s7sv67dvvf8bzqv")))) + "1n2vdf6n7pr9xrjwbvbar899q74shx6cy19x32adxfn2iilygwbp")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1139,7 +1149,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public python-sip (package (name "python-sip") - (version "4.18.1") + (version "4.19.2") (source (origin (method url-fetch) @@ -1148,7 +1158,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") "sip-" version "/sip-" version ".tar.gz")) (sha256 (base32 - "1452zy3g0qv4fpd9c0y4gq437kn0xf7bbfniibv5n43zpwnpmklv")))) + "0cq5r21fmjyw5v7a6l4sfbaj3zgm7k5b2cryj6bnjki54nnllas3")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-wrapper))) @@ -1202,7 +1212,7 @@ module provides support functions to the automatically generated code.") (define-public python-pyqt (package (name "python-pyqt") - (version "5.7") + (version "5.8.2") (source (origin (method url-fetch) @@ -1212,7 +1222,7 @@ module provides support functions to the automatically generated code.") version ".tar.gz")) (sha256 (base32 - "01avscn1bir0h8zzfh1jvpljgwg6qkax5nk142xrm63rbyx969l9")) + "1s1nalcspam9dc7f63jkqn1i2sv9lrqn57p2zsc61g8bncahbmzb")) (patches (search-patches "pyqt-configure.patch")))) (build-system gnu-build-system) (native-inputs @@ -1292,17 +1302,17 @@ contain over 620 classes.") (define-public python-pyqt-4 (package (inherit python-pyqt) (name "python-pyqt") - (version "4.11.4") + (version "4.12") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/pyqt/PyQt4/" - "PyQt-" version "/PyQt-x11-gpl-" + "PyQt-" version "/PyQt4_gpl_x11-" version ".tar.gz")) (sha256 (base32 - "01zlviy5lq8g6db84wnvvpsrfnip9lbcpxagsyqa6as3jmsff7zw")))) + "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w")))) (native-inputs `(("python-sip" ,python-sip) ("qt" ,qt-4))) @@ -1347,7 +1357,7 @@ contain over 620 classes.") (define-public qtkeychain (package (name "qtkeychain") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) @@ -1355,7 +1365,7 @@ contain over 620 classes.") "archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0fka5q5cdzlf79igcjgbnb2smvwbwfasqawkzkbr34whispgm6lz")))) + (base32 "0bxi5pfhxdvwk8yxa06lk2d7lcibmfqhahbin82bqf3m341zd4ml")))) (build-system cmake-build-system) (native-inputs `(("qttools" ,qttools))) @@ -1370,7 +1380,8 @@ contain over 620 classes.") (lambda _ (substitute* "CMakeLists.txt" (("\\$\\{qt_translations_dir\\}") - "${CMAKE_INSTALL_PREFIX}/share/qt/translations"))))))) + "${CMAKE_INSTALL_PREFIX}/share/qt/translations")) + #t))))) (home-page "https://github.com/frankosterfeld/qtkeychain") (synopsis "Qt API to store passwords") (description @@ -1430,19 +1441,19 @@ different kinds of sliders, and much more.") (define-public qtwebkit (package (name "qtwebkit") - (version "5.7.1") + (version "5.8.0") (source (origin (method url-fetch) (uri (string-append "http://download.qt.io/community_releases/" (version-major+minor version) - "/" version "/qtwebkit-opensource-src-" version - ".tar.xz")) + "/" version "-final/qtwebkit-opensource-src-" + version ".tar.xz")) ;; Note: since Qt 5.6, Qt no longer officially supports qtwebkit: ;; <http://lists.qt-project.org/pipermail/development/2016-May/025923.html>. (sha256 (base32 - "00szgcra6pf2myfjrdbsr1gmrxycpbjqlzkplna5yr1rjg4gfv54")))) + "1v0vj6slyh19mjrrpbqdzb47fr0f4xk7bc8803xjzybb11h8dbkr")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm index 23adf859a7..e68b345b06 100644 --- a/gnu/packages/ratpoison.scm +++ b/gnu/packages/ratpoison.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,14 +44,14 @@ (define-public ratpoison (package (name "ratpoison") - (version "1.4.8") + (version "1.4.9") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/ratpoison/ratpoison-" version ".tar.xz")) (sha256 (base32 - "1w502z55vv7zs45l80nsllqh9fvfwjfdfi11xy1qikhzdmirains")) + "1wfir1gvh5h7izgvx2kd1pr2k7wlncd33zq7qi9s9k2y0aza93yr")) (patches (search-patches "ratpoison-shell.patch")))) (build-system gnu-build-system) (arguments @@ -70,7 +71,7 @@ ("freetype" ,freetype) ("libXft" ,libxft) ("libXi" ,libxi) - ("libxinerama" ,libxinerama) + ("libxrandr" ,libxrandr) ("libXpm" ,libxpm) ("libXt" ,libxt) ("libXtst" ,libxtst) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index 97e6b881cc..7b7fe60855 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -233,15 +233,14 @@ and triple stores.") (define-public serd (package (name "serd") - (version "0.22.0") + (version "0.26.0") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/serd-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 - "1lmgca2s6r7ysakcld2lrj06bgn0pr45c51b47k3apxpnj3h40vv")))) + "164j43am4hka2vbzw4n52zy7rafgp6kmkgbcbvap368az644mr73")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target @@ -267,15 +266,14 @@ ideal (e.g. in LV2 implementations or embedded applications).") (define-public sord (package (name "sord") - (version "0.14.0") + (version "0.16.0") (source (origin (method url-fetch) (uri (string-append "http://download.drobilla.net/sord-" - version - ".tar.bz2")) + version ".tar.bz2")) (sha256 (base32 - "16piw1s3l95cf9x3rdcplp9l52k2lxq8drwg2q50ygm4avndhmkn")))) + "0nh3i867g9z4kdlnk82cg2kcw8r02qgifxvkycvzb4vfjv4v4g4x")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index 7790505250..2b32aa3381 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -28,7 +28,7 @@ (define-public re2 (package (name "re2") - (version "2017-03-01") + (version "2017-05-01") (source (origin (method url-fetch) (uri @@ -38,7 +38,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1s3kdcrz2mwi30k6pz9jkv5vk8b704bz65xgcr67wbn2pn3hpnqr")))) + "19glvic4ipd122yhcavf7ifg7ms5k61398vq7gyb90wggf2w0z9k")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 0d4ae1dbb0..14511d0c32 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -447,13 +447,13 @@ expectations and mocks frameworks.") (define-public bundler (package (name "bundler") - (version "1.14.5") + (version "1.14.6") (source (origin (method url-fetch) (uri (rubygems-uri "bundler" version)) (sha256 (base32 - "0635s6naz9hn4iqbvkhnm1by4j4spvv13mb7nzwwimnpbqgx663i")))) + "0h3x2csvlz99v2ryj1w72vn6kixf7rl35lhdryvh7s49brnj0cgl")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; avoid dependency cycles @@ -2911,7 +2911,7 @@ differences (added or removed nodes) between two XML/HTML documents.") (define-public ruby-rack (package (name "ruby-rack") - (version "2.0.1") + (version "2.0.3") (source (origin (method url-fetch) @@ -2923,7 +2923,7 @@ differences (added or removed nodes) between two XML/HTML documents.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "00k62v8lpyjzghkn0h0awrnqj1jmlcs2wp57py27m43y65v89cp3")) + "12bnqrcg43x9hsswjqg31qqwk8cwj2fh0d2m179y20bjghhn54kx")) ;; Ignore test which fails inside the build environment but works ;; outside. (patches (search-patches "ruby-rack-ignore-failing-test.patch")))) @@ -4107,7 +4107,7 @@ call.") (define-public ruby-concurrent (package (name "ruby-concurrent") - (version "1.0.2") + (version "1.0.5") (source (origin (method url-fetch) @@ -4120,7 +4120,7 @@ call.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1x3g2admp14ykwfxidsicqbhlfsnxh9wyc806np4i15hws4if1d8")) + "0qhv0qzsby4iijgwa4s9r88zj8123pmyz1dwaqzdk57xgqll9pny")) ;; Exclude failing test reported at ;; https://github.com/ruby-concurrency/concurrent-ruby/issues/534 (patches (search-patches "ruby-concurrent-ignore-broken-test.patch" diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 9a56b1ffed..1217ec71ff 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -44,7 +44,7 @@ #:use-module (srfi srfi-26)) ;; Should be one less than the current released version. -(define %rust-bootstrap-binaries-version "1.14.0") +(define %rust-bootstrap-binaries-version "1.15.0") (define %rust-bootstrap-binaries (origin @@ -55,7 +55,7 @@ "-i686-unknown-linux-gnu.tar.gz")) (sha256 (base32 - "0h384prpabcl08mxs1bilyb0dbk0knpdylcnz4b84ij4idr7ap4d")))) + "0wmkfx8pxmkkw021mrq9s3xhra8f0daqdl6j56pxyn4w39i0rzrw")))) (define (increment-rust-version rust-version major patch) (match (string-split rust-version #\.) @@ -205,7 +205,7 @@ rustc-bootstrap and cargo-bootstrap packages.") "rustc-" version "-src.tar.gz")) (sha256 (base32 - "0wvn8m1nfg664b95qrdpfh72q1a6ir09rqkrnlzbkay2r7xf8mgn")))) + "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr")))) (build-system gnu-build-system) (native-inputs `(("cmake" ,cmake) @@ -226,7 +226,22 @@ rustc-bootstrap and cargo-bootstrap packages.") (lambda _ (substitute* "configure" (("/usr/bin/env") (which "env")) ; Detect target CPU correctly. - (("probe_need CFG_CURL curl") "")) ; Avoid curl as a build dependency. + (("probe_need CFG_CURL curl") "") ; Avoid curl build dependency. + ;; Newer LLVM has a NVPTX (NVIDIA) backend which the Rust + ;; Makefiles don't know about, causing a linker failure + ;; if we don't intervene. + ;; Therefore, we add NVPTX here. + ;; See <https://github.com/rust-lang/rust/issues/40698>. + ;; For the next release, we will have to use rustbuild. + ;; Right now, rustbuild doesn't work yet. + (("-DLLVM_TARGETS_TO_BUILD='") + "-DLLVM_TARGETS_TO_BUILD='NVPTX;")) ; Make LLVM >= 3.8.1 work. + (substitute* "src/tools/compiletest/src/util.rs" + (("(\"amd64\", \"x86_64\"),") "(\"amd64\", \"x86_64\"), +(\"nvptx\", \"nvptx\"),")) ; Make LLVM >= 3.8.1 work. + (substitute* "mk/main.mk" + (("LLVM_OPTIONAL_COMPONENTS=") + "LLVM_OPTIONAL_COMPONENTS=nvptx ")) ; Make LLVM >= 3.8.1 work. #t)) (add-after 'unpack 'set-env (lambda _ @@ -263,7 +278,7 @@ rustc-bootstrap and cargo-bootstrap packages.") "--release-channel=stable" "--enable-rpath" "--enable-local-rust" - "--disable-rustbuild" ; use Makefiles + "--disable-rustbuild" ; rustbuild doesn't work yet. "--disable-manage-submodules"))) ;; Rust uses a custom configure script (no autoconf). (zero? (apply system* "./configure" flags))))) @@ -286,6 +301,8 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) +;; This tries very hard not to get into a cyclic dependency like this: +;; cargo <- cargo-build-system <- cargo. (define-public cargo (package (name "cargo") @@ -297,7 +314,7 @@ safety and thread safety guarantees.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "194i06y9nql0p93gahh0vm4qwv6c1kpd9rprpf22w5gav9lpcyjz")))) + "1y0zy8gk1ly0wh57y78fisk7cdd92qk0x7z664f6l7lzl2krqs7w")))) (build-system cargo-build-system) (propagated-inputs `(("cmake" ,cmake) @@ -313,10 +330,10 @@ safety and thread safety guarantees.") `(("rust-openssl" ,(origin (method url-fetch) - (uri (crate-uri "openssl" "0.9.1")) + (uri (crate-uri "openssl" "0.9.6")) (sha256 (base32 - "1m2mhiar87qnw4gxci286q9g85ljafbc41salbj2hmcgh8aagchy")))) + "0g28g692gby6izp9qmnwnyxyhf9b0870yhd500p18j9l69lxl00c")))) ("rust-strsim" ,(origin (method url-fetch) @@ -411,17 +428,17 @@ safety and thread safety guarantees.") ("rust-libssh2-sys" ,(origin (method url-fetch) - (uri (crate-uri "libssh2-sys" "0.2.4")) + (uri (crate-uri "libssh2-sys" "0.2.5")) (sha256 (base32 - "1pmmh0hcx14856wg9bp740yf618qfl2765vhf67sfs5lmf39227d")))) + "0d2r36hrh9vc1821r0v4kywv30svpf37d31calwql69fbij3bqci")))) ("rust-libz-sys" ,(origin (method url-fetch) - (uri (crate-uri "libz-sys" "1.0.10")) + (uri (crate-uri "libz-sys" "1.0.13")) (sha256 (base32 - "1rl85x045sk5d345hgcahx99plpbdg2a3bx5vjfxig30qah74p4h")))) + "034pgvxzgsv37iafgs0lmvd1ifm0bg0zm1xcsn9x71nn8lm93vp5")))) ("rust-curl-sys" ,(origin (method url-fetch) @@ -429,13 +446,27 @@ safety and thread safety guarantees.") (sha256 (base32 "0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1")))) + ("rust-error-chain" + ,(origin + (method url-fetch) + (uri (crate-uri "error-chain" "0.7.2")) + (sha256 + (base32 + "03qjh6l2a9fkiyg0428p7q3dcpi47cbmrqf9zmlymkg43v3v731i")))) + ("rust-metadeps" + ,(origin + (method url-fetch) + (uri (crate-uri "metadeps" "1.1.1")) + (sha256 + (base32 + "0l818461bslb7nrs7r1amkqv45n53fcp5sabyqipwx0xxbkzz7w2")))) ("rust-openssl-sys" ,(origin (method url-fetch) - (uri (crate-uri "openssl-sys" "0.9.1")) + (uri (crate-uri "openssl-sys" "0.9.6")) (sha256 (base32 - "1sdhgalfm2zdqf144xhdnxdha7ifjgsfbmlrqbx0j9f3mh4gpscm")))) + "1hzpyf9z8xg1yn5r9g17bl5j20nifd6s2zp10xh90v7m0sd2yj5i")))) ("rust-fs2" ,(origin (method url-fetch) @@ -635,10 +666,10 @@ safety and thread safety guarantees.") ("rust-libgit2-sys" ,(origin (method url-fetch) - (uri (crate-uri "libgit2-sys" "0.6.5")) + (uri (crate-uri "libgit2-sys" "0.6.6")) (sha256 (base32 - "0yl80n12ih4jh1halpbj3zqlqvw5zxdr6m6xdcvdz67svjy50bjh")))) + "074h9q4p60xh6canb0sj4vrc801wqv6p53l9lp0q724bkwzf7967")))) ("rust-env_logger" ,(origin (method url-fetch) @@ -785,10 +816,22 @@ safety and thread safety guarantees.") (uri (crate-uri "num-complex" "0.1.35")) (sha256 (base32 - "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh")))))) + "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh")))) + ("rust-shell-escape" + ,(origin + (method url-fetch) + (uri (crate-uri "shell-escape" "0.1.3")) + (sha256 + (base32 + "1y2fp2brv639icv4a0fdqs1zhlrxq8qbz27ygfa86ifmh5jcjp6x")))))) (arguments `(#:cargo ,cargo-bootstrap #:tests? #f ; FIXME + #:modules + ((ice-9 match) + (srfi srfi-1) ; 'every + (guix build utils) + (guix build cargo-build-system)) #:phases (modify-phases %standard-phases ;; Avoid cargo complaining about missmatched checksums. @@ -797,30 +840,36 @@ safety and thread safety guarantees.") (delete 'patch-usr-bin-file) (add-after 'unpack 'unpack-submodule-sources (lambda* (#:key inputs #:allow-other-keys) - (let ((unpack (lambda (source target) - (mkdir-p target) - (with-directory-excursion target - (zero? (system* "tar" "xf" - source - "--strip-components=1")))))) + (define (unpack source target) + (mkdir-p target) + (with-directory-excursion target + (zero? (system* "tar" "xf" + source + "--strip-components=1")))) + (define (touch file-name) + (call-with-output-file file-name (const #t))) + (define (install-rust-library entry) + (match entry + ((name . src) + (if (string-prefix? "rust-" name) + (let* ((rust-length (string-length "rust-")) + (rust-name (string-drop name + rust-length)) + (rsrc (string-append "vendor/" + rust-name)) + (unpack-status (unpack src rsrc))) + (touch (string-append rsrc "/.cargo-ok")) + (generate-checksums rsrc src) + unpack-status))) + (_ #t))) (mkdir "vendor") - (for-each (lambda (p) - (let ((name (car p))) - (if (string-prefix? "rust-" name) - (let ((rsrc (string-append "vendor/" - (string-drop name - (string-length "rust-"))))) - (unpack (assoc-ref inputs name) rsrc) - (system* "touch" (string-append rsrc "/.cargo-ok")) - (generate-checksums rsrc (assoc-ref inputs name)))))) inputs)))) - ;; Set CARGO_HOME to use the vendored dependencies. - (add-after 'unpack 'set-cargo-home + (every install-rust-library inputs))) + (add-after 'unpack 'set-environment-up (lambda* (#:key inputs #:allow-other-keys) (let* ((gcc (assoc-ref inputs "gcc")) (cc (string-append gcc "/bin/gcc"))) - (mkdir "cargohome") - (setenv "CARGO_HOME" (string-append (getcwd) "/cargohome")) - (call-with-output-file "cargohome/config" + (mkdir ".cargo") + (call-with-output-file ".cargo/config" (lambda (p) (format p " [source.crates-io] @@ -832,7 +881,8 @@ directory = 'vendor' "))) (setenv "CMAKE_C_COMPILER" cc) (setenv "CC" cc)) - #t))))) + #t)) + (delete 'configure)))) (home-page "https://github.com/rust-lang/cargo") (synopsis "Build tool and package manager for Rust") (description "Cargo is a tool that allows Rust projects to declare their diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 3b2a6868d8..623ef93a4e 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -1,8 +1,9 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,8 +25,11 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix licenses) + #:use-module (guix utils) #:use-module (gnu packages acl) #:use-module (gnu packages admin) + #:use-module (gnu packages autotools) + #:use-module (gnu packages crypto) #:use-module (gnu packages cups) #:use-module (gnu packages databases) #:use-module (gnu packages tls) @@ -33,10 +37,54 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages openldap) #:use-module (gnu packages readline) + #:use-module (gnu packages kerberos) #:use-module (gnu packages linux) #:use-module (gnu packages perl) #:use-module (gnu packages python)) +(define-public cifs-utils + (package + (name "cifs-utils") + (version "6.7") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.samba.org/pub/linux-cifs/" + name "/" name "-" version ".tar.bz2")) + (sha256 (base32 + "1ayghnkryy1n1zm5dyvyyr7n3807nsm6glfcbbki5c2a8w91dwmj")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("keytuils" ,keyutils) + ("linux-pam" ,linux-pam) + ("libcap-ng" ,libcap-ng) + ("mit-krb5" ,mit-krb5) + ("samba" ,samba) + ("talloc" ,talloc))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; The 6.7 tarball is missing ‘install.sh’. Create it. + (add-before 'configure 'autoreconf + (lambda _ + (zero? (system* "autoreconf" "-i")))) + (add-before 'configure 'set-root-sbin + (lambda _ ; Don't try to install in "/sbin". + (setenv "ROOTSBINDIR" + (string-append (assoc-ref %outputs "out") "/sbin")) + #t))))) + (synopsis "User-space utilities for Linux CIFS (Samba) mounts") + (description "@code{cifs-utils} is a set of user-space utilities for +mounting and managing @dfn{Common Internet File System} (CIFS) shares using +the Linux kernel CIFS client.") + (home-page "https://wiki.samba.org/index.php/LinuxCIFS_utils") + ;; cifs-utils is licensed as GPL3 or later, but 3 files contain LGPL code. + (license gpl3+))) + (define-public iniparser (package (name "iniparser") @@ -99,14 +147,14 @@ anywhere.") (define-public samba (package (name "samba") - (version "4.5.7") + (version "4.5.8") (source (origin (method url-fetch) (uri (string-append "https://download.samba.org/pub/samba/stable/" "samba-" version ".tar.gz")) (sha256 (base32 - "004lzl059bc2wvkmivxiy96y87l4ajjw16qvkqcdhf86z2dg0w5c")))) + "1w41pxszv5z6gjclg6zymn47mk8n51lnpgcx1k2q18i3i1nnafzn")))) (build-system gnu-build-system) (arguments '(#:phases @@ -205,6 +253,44 @@ Desktops into Active Directory environments using the winbind daemon.") destructors. It is the core memory allocator used in Samba.") (license gpl3+))) ;; The bundled "replace" library uses LGPL3. +(define-public talloc/static + (package + (inherit talloc) + (name "talloc-static") + (synopsis + "Hierarchical, reference counted memory pool system (static library)") + (arguments + (substitute-keyword-arguments (package-arguments talloc) + ((#:phases phases) + ;; Since Waf, the build system talloc uses, apparently does not + ;; support building static libraries from a ./configure flag, roll our + ;; own build process. No need to be ashamed, we're not the only ones + ;; doing that: + ;; <https://github.com/proot-me/proot-static-build/blob/master/GNUmakefile>. + ;; :-) + `(modify-phases ,phases + (replace 'build + (lambda _ + (letrec-syntax ((shell (syntax-rules () + ((_ (command ...) rest ...) + (and (zero? (system* command ...)) + (shell rest ...))) + ((_) + #t)))) + (shell ("gcc" "-c" "-Ibin/default" "-I" "lib/replace" + "-I." "-Wall" "-g" "talloc.c") + ("ar" "rc" "libtalloc.a" "talloc.o"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (include (string-append out "/include"))) + (mkdir-p lib) + (install-file "libtalloc.a" lib) + (install-file "talloc.h" include) + #t))) + (delete 'check))))))) ;XXX: tests rely on Python modules + (define-public tevent (package (name "tevent") diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 1ccf62586f..f6aee005c4 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -392,7 +392,7 @@ implementation techniques and as an expository tool.") (define-public racket (package (name "racket") - (version "6.6") + (version "6.8") (source (origin (method url-fetch) (uri (list (string-append "http://mirror.racket-lang.org/installers/" @@ -402,7 +402,7 @@ implementation techniques and as an expository tool.") version "/racket/racket-" version "-src-unix.tgz"))) (sha256 (base32 - "1kzdi1n6h6hmz8zd9k8r5a5yp2ryi4w3c2fjm1k6cqicn18cwaxz")))) + "1l9z1a0r5zydr50cklx9xjw3l0pwnf64i10xq7112fl1r89q3qgv")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm index f5c914e88a..49584662b1 100644 --- a/gnu/packages/screen.scm +++ b/gnu/packages/screen.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +22,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages screen) + #:use-module (srfi srfi-1) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -40,6 +42,7 @@ (method url-fetch) (uri (string-append "mirror://gnu/screen/screen-" version ".tar.gz")) + (patches (search-patches "screen-fix-info-syntax-error.patch")) (sha256 (base32 "0bbv16gpxrh64sn4bvjy3qjy7jsxjlqlilyysin02fwnvla23nwp")))) (build-system gnu-build-system) @@ -153,6 +156,8 @@ window manager as well as the Tmux terminal multiplexer.") (method url-fetch) (uri (string-append "https://github.com/nelhage/reptyr/archive" "/reptyr-" version ".tar.gz")) + ;; XXX: To be removed on next reptyr release. + (patches (search-patches "reptyr-fix-gcc-7.patch")) (sha256 (base32 "07pfl0rkgm8m3f3jy8r9l2yvnhf8lgllpsk3mh57mhzdxq8fagf7")))) @@ -169,6 +174,7 @@ window manager as well as the Tmux terminal multiplexer.") it to a new terminal. Started a long-running process over @code{ssh}, but have to leave and don't want to interrupt it? Just start a @code{screen}, use reptyr to grab it, and then kill the @code{ssh} session and head on home.") - ;; Reptyr currently does not support mips. - (supported-systems (delete "mips64el-linux" %supported-systems)) + ;; Reptyr currently does not support mips or aarch64. + (supported-systems (fold delete %supported-systems + '("mips64el-linux" "aarch64-linux"))) (license expat))) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index f73a26cff4..9e2d81f182 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +22,8 @@ (define-module (gnu packages sdl) #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (gnu packages) #:use-module ((guix licenses) #:hide (freetype)) #:use-module (guix packages) @@ -140,7 +142,7 @@ system, such as sound redirection over the network.") (define-public sdl-gfx (package (name "sdl-gfx") - (version "2.0.24") + (version "2.0.26") (source (origin (method url-fetch) (uri @@ -148,18 +150,21 @@ system, such as sound redirection over the network.") version ".tar.gz")) (sha256 (base32 - "064islldm4r42lgj9fr4kbk66r7jmmakk9745hhyb1kmw71kib9h")))) + "0ijljhs0v99dj6y27hc10z6qchyp8gdp4199y6jzngy6dzxlzsvw")))) (build-system gnu-build-system) + (arguments + `(,@(if (any (cute string-prefix? <> (or (%current-system) + (%current-target-system))) + '("x86_64" "i686")) + ;; mmx is supported only on Intel processors. + '() + '(#:configure-flags '("--disable-mmx"))))) (propagated-inputs `(("sdl" ,sdl))) (synopsis "SDL graphics primitives library") (description "SDL_gfx provides graphics drawing primitives, rotozoom and other supporting functions for SDL.") (home-page "http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx") - (license zlib) - - ;; The code apparently includes Intel assembly, which fails to build on - ;; MIPS, at least. - (supported-systems '("i686-linux" "x86_64-linux")))) + (license zlib))) (define-public sdl-image (package diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index eae9f373d6..8651b985e3 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -36,13 +36,13 @@ (define-public xapian (package (name "xapian") - (version "1.4.3") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://oligarchy.co.uk/xapian/" version "/xapian-core-" version ".tar.xz")) (sha256 - (base32 "0xg444bnxikqnxs31wsv930mvpwk4dm5zrr979371pm23i8ralkx")))) + (base32 "1n9j2w2as0flih3hgim7gprfxsx6gimijs91rxsjsi8shjlqbad6")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) ("util-linux" ,util-linux))) diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index 7bce8c5aa7..5873d85b55 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -35,15 +35,15 @@ (define-public ccid (package (name "ccid") - (version "1.4.26") + (version "1.4.27") (source (origin (method url-fetch) (uri (string-append - "https://alioth.debian.org/frs/download.php/file/4205/" + "https://alioth.debian.org/frs/download.php/file/4218/" "ccid-" version ".tar.bz2")) (sha256 (base32 - "0bxy835c133ajalpj4gx60nqkjvpf9y1n97n04pw105pi9qbyrrj")))) + "0dyikpmhsph36ndgd61bs4yx437v5y0bmm8ahjacp1k9c1ly4q56")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "--enable-usbdropdir=" %output @@ -93,15 +93,15 @@ the low-level development kit for the Yubico YubiKey authentication device.") (define-public pcsc-lite (package (name "pcsc-lite") - (version "1.8.20") + (version "1.8.21") (source (origin (method url-fetch) (uri (string-append - "https://alioth.debian.org/frs/download.php/file/4203/" + "https://alioth.debian.org/frs/download.php/file/4216/" "pcsc-lite-" version ".tar.bz2")) (sha256 (base32 - "1ckb0jf4n585a4j26va3jm2nrv3c1y38974514f8qy3c04a02zgc")))) + "1b8kwl81f6s3y7qh68ahr8sp8a0w6m464v9b3s4zxq2cgpmnaczy")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"))) diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm new file mode 100644 index 0000000000..81c899f841 --- /dev/null +++ b/gnu/packages/selinux.scm @@ -0,0 +1,481 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages selinux) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (gnu packages) + #:use-module (gnu packages admin) + #:use-module (gnu packages bison) + #:use-module (gnu packages docbook) + #:use-module (gnu packages flex) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages linux) + #:use-module (gnu packages networking) + #:use-module (gnu packages pcre) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages swig) + #:use-module (gnu packages textutils) + #:use-module (gnu packages xml)) + +;; Update the SELinux packages together! + +(define-public libsepol + (package + (name "libsepol") + (version "2.6") + (source (let ((release "20161014")) + (origin + (method url-fetch) + (uri (string-append "https://github.com/SELinuxProject/selinux/" + "archive/" release ".tar.gz")) + (file-name (string-append "selinux-" release ".tar.gz")) + (sha256 + (base32 + "1dpwynfb6n31928343blac4159g4jbrwxdp61q5yffmxpy3c3czi"))))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; tests require checkpolicy, which requires libsepol + #:test-target "test" + #:make-flags + (let ((out (assoc-ref %outputs "out"))) + (list (string-append "PREFIX=" out) + (string-append "DESTDIR=" out) + (string-append "MAN3DIR=" out "/share/man/man3") + (string-append "MAN5DIR=" out "/share/man/man5") + (string-append "MAN8DIR=" out "/share/man/man8") + (string-append "LDFLAGS=-Wl,-rpath=" out "/lib") + "CC=gcc")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'enter-dir + (lambda _ (chdir ,name) #t))))) + (native-inputs + `(("flex" ,flex))) + (home-page "https://selinuxproject.org/") + (synopsis "Library for manipulating SELinux policies") + (description + "The libsepol library provides an API for the manipulation of SELinux +binary policies. It is used by @code{checkpolicy} (the policy compiler) and +similar tools, and programs such as @code{load_policy}, which must perform +specific transformations on binary policies (for example, customizing policy +boolean settings).") + (license license:lgpl2.1+))) + +(define-public checkpolicy + (package (inherit libsepol) + (name "checkpolicy") + (arguments + `(#:tests? #f ; there is no check target + #:make-flags + (let ((out (assoc-ref %outputs "out"))) + (list (string-append "PREFIX=" out) + (string-append "LDLIBS=" + (assoc-ref %build-inputs "libsepol") + "/lib/libsepol.a " + (assoc-ref %build-inputs "flex") + "/lib/libfl.a") + "CC=gcc")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'enter-dir + (lambda _ (chdir ,name) #t))))) + (inputs + `(("libsepol" ,libsepol))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex))) + (synopsis "Check SELinux security policy configurations and modules") + (description + "This package provides the tools \"checkpolicy\" and \"checkmodule\". +Checkpolicy is a program that checks and compiles a SELinux security policy +configuration into a binary representation that can be loaded into the kernel. +Checkmodule is a program that checks and compiles a SELinux security policy +module into a binary representation.") + ;; GPLv2 only + (license license:gpl2))) + +(define-public libselinux + (package (inherit libsepol) + (name "libselinux") + (arguments + (substitute-keyword-arguments (package-arguments libsepol) + ((#:make-flags flags) + `(cons* "PYTHON=python3" + (string-append "PYSITEDIR=" + (assoc-ref %outputs "out") + "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages/") + ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (replace 'enter-dir + (lambda _ (chdir ,name) #t)) + ;; libsepol.a is not located in this package's LIBDIR. + (add-after 'enter-dir 'patch-libsepol-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/Makefile" + (("\\$\\(LIBDIR\\)/libsepol.a") + (string-append (assoc-ref inputs "libsepol") + "/lib/libsepol.a"))) + #t)) + (add-after 'enter-dir 'remove-Werror + (lambda _ + ;; GCC complains about the fact that the output does not (yet) + ;; have an "include" directory, even though it is referenced. + (substitute* '("src/Makefile" + "utils/Makefile") + (("-Werror ") "")) + #t)) + (add-after 'build 'pywrap + (lambda* (#:key make-flags #:allow-other-keys) + (zero? (apply system* "make" "pywrap" make-flags)))) + (add-after 'install 'install-pywrap + (lambda* (#:key make-flags #:allow-other-keys) + (zero? (apply system* "make" "install-pywrap" make-flags)))))))) + (inputs + `(("libsepol" ,libsepol) + ("pcre" ,pcre) + ;; For pywrap phase + ("python" ,python-wrapper))) + ;; These inputs are only needed for the pywrap phase. + (native-inputs + `(("swig" ,swig) + ("pkg-config" ,pkg-config))) + (synopsis "SELinux core libraries and utilities") + (description + "The libselinux library provides an API for SELinux applications to get +and set process and file security contexts, and to obtain security policy +decisions. It is required for any applications that use the SELinux API, and +used by all applications that are SELinux-aware. This package also includes +the core SELinux management utilities.") + (license license:public-domain))) + +(define-public libsemanage + (package (inherit libsepol) + (name "libsemanage") + (arguments + (substitute-keyword-arguments (package-arguments libsepol) + ((#:make-flags flags) + `(cons* "PYTHON=python3" + (string-append "PYSITEDIR=" + (assoc-ref %outputs "out") + "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages/") + ,flags)) + ((#:phases phases) + `(modify-phases ,phases + (replace 'enter-dir + (lambda _ (chdir ,name) #t)) + (add-after 'build 'pywrap + (lambda* (#:key make-flags #:allow-other-keys) + (zero? (apply system* "make" "pywrap" make-flags)))) + (add-after 'install 'install-pywrap + (lambda* (#:key make-flags #:allow-other-keys) + (zero? (apply system* "make" "install-pywrap" make-flags)))))))) + (inputs + `(("libsepol" ,libsepol) + ("libselinux" ,libselinux) + ("audit" ,audit) + ("ustr" ,ustr) + ;; For pywrap phase + ("python" ,python-wrapper))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ;; For pywrap phase + ("swig" ,swig) + ("pkg-config" ,pkg-config))) + (synopsis "SELinux policy management libraries") + (description + "The libsemanage library provides an API for the manipulation of SELinux +binary policies.") + (license license:lgpl2.1+))) + +(define-public secilc + (package (inherit libsepol) + (name "secilc") + (arguments + (substitute-keyword-arguments (package-arguments libsepol) + ((#:make-flags flags) + `(let ((docbook (assoc-ref %build-inputs "docbook-xsl"))) + (cons (string-append "XMLTO=xmlto --skip-validation -x " + docbook "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/manpages/docbook.xsl") + ,flags))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'enter-dir + (lambda _ (chdir ,name) #t)))))) + (inputs + `(("libsepol" ,libsepol))) + (native-inputs + `(("xmlto" ,xmlto) + ("docbook-xsl" ,docbook-xsl))) + (synopsis "SELinux common intermediate language (CIL) compiler") + (description "The SELinux CIL compiler is a compiler that converts the +@dfn{common intermediate language} (CIL) into a kernel binary policy file.") + (license license:bsd-2))) + +(define-public python-sepolgen + (package (inherit libsepol) + (name "python-sepolgen") + (arguments + `(#:modules ((srfi srfi-1) + (guix build gnu-build-system) + (guix build utils)) + ,@(substitute-keyword-arguments (package-arguments libsepol) + ((#:phases phases) + `(modify-phases ,phases + (replace 'enter-dir + (lambda _ (chdir "sepolgen") #t)) + ;; By default all Python files would be installed to + ;; $out/gnu/store/...-python-.../, so we override the + ;; PACKAGEDIR to fix this. + (add-after 'enter-dir 'fix-target-path + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((get-python-version + ;; FIXME: copied from python-build-system + (lambda (python) + (let* ((version (last (string-split python #\-))) + (components (string-split version #\.)) + (major+minor (take components 2))) + (string-join major+minor "."))))) + (substitute* "src/sepolgen/Makefile" + (("^PACKAGEDIR.*") + (string-append "PACKAGEDIR=" + (assoc-ref outputs "out") + "/lib/python" + (get-python-version + (assoc-ref inputs "python")) + "/site-packages/sepolgen"))) + (substitute* "src/share/Makefile" + (("\\$\\(DESTDIR\\)") (assoc-ref outputs "out")))) + #t))))))) + (inputs + `(("python" ,python-wrapper))) + (native-inputs '()) + (synopsis "Python module for generating SELinux policies") + (description + "This package contains a Python module that forms the core of +@code{audit2allow}, a part of the package @code{policycoreutils}. The +sepolgen library contains: Reference Policy Representation, which are Objects +for representing policies and the reference policy interfaces. It has objects +and algorithms for representing access and sets of access in an abstract way +and searching that access. It also has a parser for reference policy +\"headers\". It contains infrastructure for parsing SELinux related messages +as produced by the audit system. It has facilities for generating policy +based on required access.") + ;; GPLv2 only + (license license:gpl2))) + +;; The latest 4.1.x version does not work with the latest 2.6 release of +;; policycoreutils, so we use the last 4.0.x release. +(define-public python-setools + (package + (name "python-setools") + (version "4.0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/TresysTechnology/" + "setools/archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zndpl4ck5c23p7s4sci06db89q1w87jig3jbd4f8s1ggy3lj82c")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; the test target causes a rebuild + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-SEPOL-variable + (lambda* (#:key inputs #:allow-other-keys) + (setenv "SEPOL" + (string-append (assoc-ref inputs "libsepol") + "/lib/libsepol.a")))) + (add-after 'unpack 'remove-Werror + (lambda _ + (substitute* "setup.py" + (("'-Werror',") "")) + #t)) + (add-after 'unpack 'fix-target-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "setup.py" + (("join\\(sys.prefix") + (string-append "join(\"" (assoc-ref outputs "out") "/\""))) + #t))))) + (propagated-inputs + `(("python-networkx" ,python-networkx))) + (inputs + `(("libsepol" ,libsepol) + ("libselinux" ,libselinux))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ("swig" ,swig))) + (home-page "https://github.com/TresysTechnology/setools") + (synopsis "Tools for SELinux policy analysis") + (description "SETools is a collection of graphical tools, command-line +tools, and libraries designed to facilitate SELinux policy analysis.") + ;; Some programs are under GPL, all libraries under LGPL. + (license (list license:lgpl2.1+ + license:gpl2+)))) + +(define-public policycoreutils + (package (inherit libsepol) + (name "policycoreutils") + (source + (origin (inherit (package-source libsepol)) + (patches (search-patches "policycoreutils-make-sepolicy-use-python3.patch")) + (patch-flags '("-p1" "-d" "policycoreutils")))) + (arguments + `(#:test-target "test" + #:make-flags + (let ((out (assoc-ref %outputs "out"))) + (list "CC=gcc" + (string-append "PREFIX=" out) + (string-append "LOCALEDIR=" out "/share/locale") + (string-append "BASHCOMPLETIONDIR=" out + "/share/bash-completion/completions") + "INSTALL=install -c -p" + "INSTALL_DIR=install -d" + ;; These ones are needed because some Makefiles define the + ;; directories relative to DESTDIR, not relative to PREFIX. + (string-append "SBINDIR=" out "/sbin") + (string-append "ETCDIR=" out "/etc") + (string-append "SYSCONFDIR=" out "/etc/sysconfig") + (string-append "MAN5DIR=" out "/share/man/man5") + (string-append "INSTALL_NLS_DIR=" out "/share/locale") + (string-append "AUTOSTARTDIR=" out "/etc/xdg/autostart") + (string-append "DBUSSERVICEDIR=" out "/share/dbus-1/services") + (string-append "SYSTEMDDIR=" out "/lib/systemd") + (string-append "INITDIR=" out "/etc/rc.d/init.d") + (string-append "SELINUXDIR=" out "/etc/selinux"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'enter-dir + (lambda _ (chdir ,name) #t)) + (add-after 'enter-dir 'ignore-/usr-tests + (lambda* (#:key inputs #:allow-other-keys) + ;; The Makefile decides to build restorecond only if it finds the + ;; inotify header somewhere under /usr. + (substitute* "Makefile" + (("ifeq.*") "") + (("endif.*") "")) + ;; Rewrite lookup paths for header files. + (substitute* '("newrole/Makefile" + "setfiles/Makefile" + "run_init/Makefile") + (("/usr(/include/security/pam_appl.h)" _ file) + (string-append (assoc-ref inputs "pam") file)) + (("/usr(/include/libaudit.h)" _ file) + (string-append (assoc-ref inputs "audit") file))) + #t)) + (add-after 'enter-dir 'fix-glib-cflags + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "restorecond/Makefile" + (("/usr(/include/glib-2.0|/lib/glib-2.0/include)" _ path) + (string-append (assoc-ref inputs "glib") path)) + (("/usr(/include/dbus-1.0|/lib/dbus-1.0/include)" _ path) + (string-append (assoc-ref inputs "dbus") path + " -I" + (assoc-ref inputs "dbus-glib") path))) + #t)) + (add-after 'enter-dir 'fix-linkage-with-libsepol + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("semodule_deps/Makefile" + "sepolgen-ifgen/Makefile") + (("\\$\\(LIBDIR\\)") + (string-append (assoc-ref inputs "libsepol") "/lib/"))))) + (add-after 'enter-dir 'fix-target-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "audit2allow/sepolgen-ifgen" + (("ATTR_HELPER = \"/usr/bin/sepolgen-ifgen-attr-helper\"") + (string-append "ATTR_HELPER = \"" out + "/bin/sepolgen-ifgen-attr-helper\""))) + (substitute* "sepolicy/sepolicy/__init__.py" + (("/usr/bin/sepolgen-ifgen") + (string-append out "/bin/sepolgen-ifgen"))) + (substitute* "sepolicy/Makefile" + ;; By default all Python files would be installed to + ;; $out/gnu/store/...-python-.../. + (("setup.py install.*$") + (string-append "setup.py install --prefix=" out "\n")) + (("\\$\\(DESTDIR\\)/etc") + (string-append out "/etc")) + (("\\$\\(DESTDIR\\)/usr") out))) + #t)) + (add-after 'install 'wrap-python-tools + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (var (string-append out "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages:" + (getenv "PYTHONPATH")))) + ;; The scripts' shebangs tell Python to ignore the PYTHONPATH, + ;; so we need to patch them before wrapping. + (for-each (lambda (file) + (let ((path (string-append out "/" file))) + (substitute* path + (("bin/python -Es") "bin/python -s")) + (wrap-program path + `("PYTHONPATH" ":" prefix (,var))))) + '("bin/audit2allow" + "bin/chcat" + "bin/sandbox" + "bin/sepolgen-ifgen" + "bin/sepolicy" + "sbin/semanage"))) + #t))))) + (inputs + `(("python" ,python-wrapper) + ("audit" ,audit) + ("pam" ,linux-pam) + ("libsepol" ,libsepol) + ("libselinux" ,libselinux) + ("libsemanage" ,libsemanage) + ("python-sepolgen" ,python-sepolgen) + ("python-setools" ,python-setools) + ("python-ipy" ,python-ipy) + ("libcap-ng" ,libcap-ng) + ("pcre" ,pcre) + ("dbus" ,dbus) + ("dbus-glib" ,dbus-glib) + ("glib" ,glib))) + (native-inputs + `(("gettext" ,gettext-minimal))) + (synopsis "SELinux core utilities") + (description "The policycoreutils package contains the core utilities that +are required for the basic operation of an SELinux-enabled GNU system and its +policies. These utilities include @code{load_policy} to load policies, +@code{setfiles} to label file systems, @code{newrole} to switch roles, and +@code{run_init} to run service scripts in their proper context.") + (license license:gpl2+))) diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 9e073b7a98..a6b5270199 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,7 +36,8 @@ #:use-module (gnu packages documentation) #:use-module (gnu packages lua) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python)) + #:use-module (gnu packages python) + #:use-module (gnu packages perl)) (define-public cereal (package @@ -90,7 +92,7 @@ such as compact binary encodings, XML, or JSON.") (define-public msgpack (package (name "msgpack") - (version "1.4.1") + (version "1.4.2") (source (origin (method url-fetch) @@ -106,7 +108,7 @@ such as compact binary encodings, XML, or JSON.") (close-output-port p)))) (sha256 (base32 - "0bpjfh9vz0n2k93mph3x15clmigkgs223xfn8h12ymrh5gsi5ica")))) + "18hzmyfg3mvnp7ab03nqdzzvqagkl42gygjpi4zv4i7aca2dmwf0")))) (build-system gnu-build-system) (native-inputs `(("googletest" ,googletest) @@ -134,14 +136,15 @@ serialization.") (define-public libmpack (package (name "libmpack") - (version "1.0.3") + (version "1.0.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/tarruda/libmpack/" "archive/" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "08kfdl55yf66xk57aqsbf8n45f2jsw2v7qwnaan08ciim77j3sv5")))) + (base32 + "0ml922gv8y99lbldqb9ykpjndla0hlprdjyl79yskkhwv2ai7sac")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -162,6 +165,14 @@ that implements both the msgpack and msgpack-rpc specifications.") (define-public lua-libmpack (package (inherit libmpack) (name "lua-libmpack") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/libmpack/libmpack-lua/" + "archive/" (package-version libmpack) ".tar.gz")) + (file-name (string-append name "-" (package-version libmpack) ".tar.gz")) + (sha256 + (base32 + "153zrrbyxhf71dgzjjhrk56rfwk3nisslpgcqyg44v8fnz1xpk6i")))) (build-system gnu-build-system) (arguments `(;; FIXME: tests require "busted", which is not yet available in Guix. @@ -171,26 +182,35 @@ that implements both the msgpack and msgpack-rpc specifications.") (let* ((lua-version ,(package-version lua)) (lua-major+minor ,(version-major+minor (package-version lua)))) (list "CC=gcc" + "FETCH=echo" ; don't fetch anything from the web + "UNTGZ=echo" ; and don't try to unpack it "USE_SYSTEM_LUA=yes" - (string-append "LUA_VERSION=" lua-version) - (string-append "LUA_VERSION_MAJ_MIN=" lua-major+minor) + (string-append "MPACK_LUA_VERSION=" lua-version) + (string-append "MPACK_LUA_VERSION_NOPATCH=" lua-major+minor) (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "LUA_CMOD_INSTALLDIR=" (assoc-ref %outputs "out") - "/lib/lua/" lua-major+minor) - ;; This is unnecessary as of upstream commit 02886c13ff8a2, - ;; which is not part of the current release. - "CFLAGS=-DLUA_C89_NUMBERS -fPIC")) + "/lib/lua/" lua-major+minor))) #:phases (modify-phases %standard-phases (delete 'configure) - (add-after 'unpack 'chdir - (lambda _ (chdir "binding/lua") #t))))) + (add-after 'unpack 'unpack-mpack-sources + (lambda* (#:key inputs #:allow-other-keys) + ;; This is broken because mpack-src is not a file, but all + ;; prerequisites are added to the inputs of the gcc invocation. + (substitute* "Makefile" + (("\\$\\(MPACK\\): mpack-src") "$(MPACK): ")) + (mkdir-p "mpack-src") + (zero? (system* "tar" "-C" "mpack-src" + "--strip-components=1" + "-xvf" (assoc-ref inputs "libmpack")))))))) (inputs `(("lua" ,lua))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("libmpack" ,(package-source libmpack)))) + (home-page "https://github.com/libmpack/libmpack-lua") (synopsis "Lua bindings for the libmpack binary serialization library"))) (define-public lua5.2-libmpack @@ -203,8 +223,8 @@ that implements both the msgpack and msgpack-rpc specifications.") (lua-major+minor ,(version-major+minor (package-version lua-5.2)))) (list "CC=gcc" "USE_SYSTEM_LUA=yes" - (string-append "LUA_VERSION=" lua-version) - (string-append "LUA_VERSION_MAJ_MIN=" lua-major+minor) + (string-append "MPACK_LUA_VERSION=" lua-version) + (string-append "MPACK_LUA_VERSION_NOPATCH=" lua-major+minor) (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "LUA_CMOD_INSTALLDIR=" @@ -262,7 +282,7 @@ it a convenient format to store user input files.") (define-public capnproto (package (name "capnproto") - (version "0.5.3") + (version "0.6.0") (source (origin (method url-fetch) (uri (string-append @@ -270,7 +290,7 @@ it a convenient format to store user input files.") version ".tar.gz")) (sha256 (base32 - "1yvaadhgakskqq5wpv53hd6fc3pp17mrdldw4i5cvgck4iwprcfd")))) + "0gpp1cxsb9nfd7qkjjykzknx03y0z0n4bq5q0fmxci7w38ci22g5")))) (build-system gnu-build-system) (arguments `(#:phases @@ -287,3 +307,24 @@ it a convenient format to store user input files.") "Cap'n Proto is a very fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except faster.") (license license:expat))) + +(define-public libbson + (package + (name "libbson") + (version "1.6.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/mongodb/libbson/releases/" + "download/" version "/libbson-" version ".tar.gz")) + (sha256 + (base32 + "1fj4554msq0rrz14snbj908dzqj46gh7jg9w9j0akn2b7q911m5a")))) + (build-system gnu-build-system) + (native-inputs `(("perl" ,perl))) + (home-page "http://mongoc.org/libbson/current/index.html") + (synopsis "C BSON library") + (description "Libbson can create and parse BSON documents. It can also +convert JSON documents to BSON and the opposite. BSON stands for Binary JSON, +it is comparable to protobuf.") + (license license:asl2.0))) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 012f272ca4..47d3a46148 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; ;;; This file is part of GNU Guix. @@ -31,6 +31,8 @@ #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages documentation) + #:use-module (gnu packages groff) + #:use-module (gnu packages libbsd) #:use-module (gnu packages libedit) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) @@ -116,6 +118,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") (inputs `(("bc" ,bc) ("ncurses" ,ncurses) + ("groff" ,groff) ;for 'fish --help' ("pcre2" ,pcre2) ;don't use the bundled PCRE2 ("python" ,python-wrapper))) ;for fish_config and manpage completions (arguments @@ -133,6 +136,8 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") "/bin/bc"))) (substitute* "share/functions/fish_update_completions.fish" (("python") (which "python"))) + (substitute* "share/functions/__fish_print_help.fish" + (("nroff") (which "nroff"))) #t))))) (synopsis "The friendly interactive shell") (description @@ -147,6 +152,32 @@ highlighting.") (home-page "https://fishshell.com/") (license gpl2))) +(define-public fish-guix + (package + (name "fish-guix") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://dist.pragmatique.xyz/fish-guix/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0xi0j9lvzh43lrj82gz52n2cjln0i0pgayngrg4hy5w4449biy0z")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No checks. + #:make-flags (list + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ; No configure script. + (home-page "https://pragmatique.xyz/software/fish-guix.html") + (synopsis "Fish completions for Guix") + (description + "Fish-guix provides completions for Guix for users of the fish shell.") + (license public-domain))) + (define-public rc (package (name "rc") @@ -427,3 +458,39 @@ components: a process notation for running programs and setting up pipelines and redirections, and a complete syscall library for low-level access to the operating system.") (license bsd-3)))) + +(define-public loksh + (package + (name "loksh") + (version "6.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/dimkr/loksh/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1wg7ds56yr8fgg1m149bi53bvrwccwiashmwknggza1sqgj9m2lq")))) + (build-system gnu-build-system) + (inputs + `(("libbsd" ,libbsd))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (arguments + `(#:tests? #f ;No tests included + #:make-flags (list "CC=gcc" "HAVE_LIBBSD=1" + (string-append "DESTDIR=" + (assoc-ref %outputs "out")) + "PREFIX=") + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ;No configure script + (home-page "https://github.com/dimkr/loksh") + (synopsis "Korn Shell from OpenBSD") + (description + "loksh is a Linux port of OpenBSD's @command{ksh}. It is a small, +interactive POSIX shell targeted at resource-constrained systems.") + ;; The file 'LEGAL' says it is the public domain, and the 2 + ;; exceptions which are listed are not included in this port. + (license public-domain))) diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm index 1d903520e7..53303d28d7 100644 --- a/gnu/packages/speech.scm +++ b/gnu/packages/speech.scm @@ -24,11 +24,13 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages gcc) #:use-module (gnu packages glib) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) #:use-module (gnu packages textutils)) (define-public mitlm @@ -75,9 +77,12 @@ efficiency through the use of a compact vector representation of n-grams.") ("pkg-config" ,pkg-config))) (inputs `(("dotconf" ,dotconf) + ("espeak" ,espeak) ("glib" ,glib) ("libltdl" ,libltdl) - ("libsndfile" ,libsndfile))) + ("libsndfile" ,libsndfile) + ("pulseaudio" ,pulseaudio) + ("python" ,python))) (synopsis "Common interface to speech synthesizers") (description "The Speech Dispatcher project provides a high-level device independent layer for access to speech synthesis through a simple, diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 9c18a7ab39..c96ed0a72b 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -52,7 +52,8 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages)) + #:use-module (guix packages) + #:use-module (srfi srfi-1)) (define-public libssh (package @@ -67,6 +68,7 @@ (base32 "03bcp9ksqp0s1pmwfmzhcknvkxay5k0mjzzxp3rjlifbng1vxq9r")))) (build-system cmake-build-system) + (outputs '("out" "debug")) (arguments '(#:configure-flags '("-DWITH_GCRYPT=ON") @@ -134,8 +136,8 @@ a server that supports the SSH-2 protocol.") (sha256 (base32 "1w7rb5gbrikxdkp8w7zxnci4549gk4bw1lml01s59w5rzb2y6ilq")))) (build-system gnu-build-system) - (inputs `(("groff" ,groff) - ("openssl" ,openssl) + (native-inputs `(("groff" ,groff))) + (inputs `(("openssl" ,openssl) ("pam" ,linux-pam) ("mit-krb5" ,mit-krb5) ("zlib" ,zlib) @@ -212,7 +214,7 @@ Additionally, various channel-specific options can be negotiated.") (define-public guile-ssh (package (name "guile-ssh") - (version "0.10.2") + (version "0.11.0") (home-page "https://github.com/artyom-poptsov/guile-ssh") (source (origin ;; ftp://memory-heap.org/software/guile-ssh/guile-ssh-VERSION.tar.gz @@ -224,8 +226,20 @@ Additionally, various channel-specific options can be negotiated.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0pkiq3fm15pr4w1r420rrwwfmi4jz492r6l6vzjk6v73xlyfyfl3")))) + "0r261i8kc3avbmbwgyzak2vnqwssjlgz37g2y2fwm80w9bmn2m7j")) + (patches (search-patches "guile-ssh-rexec-bug.patch" + "guile-ssh-double-free.patch")) + (modules '((guix build utils))) + (snippet + ;; 'configure.ac' mistakenly tries to link files from examples/ + ;; that are not instantiated yet. Work around it. + '(substitute* "configure.ac" + (("AC_CONFIG_LINKS\\(\\[examples/([^:]+):.*" _ file) + (string-append "AC_CONFIG_FILES([examples/" file + "], [chmod +x examples/" + file "])\n")))))) (build-system gnu-build-system) + (outputs '("out" "debug")) (arguments '(#:phases (modify-phases %standard-phases (add-after 'unpack 'autoreconf @@ -255,7 +269,7 @@ Additionally, various channel-specific options can be negotiated.") ("texinfo" ,texinfo) ("pkg-config" ,pkg-config) ("which" ,which))) - (inputs `(("guile" ,guile-2.0) + (inputs `(("guile" ,guile-2.2) ("libssh" ,libssh) ("libgcrypt" ,libgcrypt))) (synopsis "Guile bindings to libssh") @@ -265,6 +279,16 @@ programs written in GNU Guile interpreter. It is a wrapper to the underlying libssh library.") (license license:gpl3+))) +(define-public guile2.2-ssh + (deprecated-package "guile2.2-ssh" guile-ssh)) + +(define-public guile2.0-ssh + (package + (inherit guile-ssh) + (name "guile2.0-ssh") + (inputs `(("guile" ,guile-2.0) + ,@(alist-delete "guile" (package-inputs guile-ssh)))))) + (define-public corkscrew (package (name "corkscrew") @@ -358,7 +382,7 @@ especially over Wi-Fi, cellular, and long-distance links.") (define-public dropbear (package (name "dropbear") - (version "2016.74") + (version "2017.75") (source (origin (method url-fetch) (uri (string-append @@ -366,7 +390,7 @@ especially over Wi-Fi, cellular, and long-distance links.") name "-" version ".tar.bz2")) (sha256 (base32 - "14c8f4gzixf0j9fkx68jgl85q7b05852kk0vf09gi6h0xmafl817")))) + "1309cm2aw62n9m3h38prvgsqr8bj85hfasgnvwkd42cp3k5ivg3c")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; There is no "make check" or anything similar (inputs `(("zlib" ,zlib))) diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm new file mode 100644 index 0000000000..2afef03055 --- /dev/null +++ b/gnu/packages/sssd.scm @@ -0,0 +1,173 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages sssd) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages) + #:use-module (gnu packages adns) + #:use-module (gnu packages augeas) + #:use-module (gnu packages check) + #:use-module (gnu packages curl) + #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages databases) + #:use-module (gnu packages dns) + #:use-module (gnu packages docbook) + #:use-module (gnu packages documentation) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages libunistring) + #:use-module (gnu packages linux) + #:use-module (gnu packages kerberos) + #:use-module (gnu packages openldap) + #:use-module (gnu packages tls) + #:use-module (gnu packages pcre) + #:use-module (gnu packages popt) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages samba) + #:use-module (gnu packages selinux) + #:use-module (gnu packages web) + #:use-module (gnu packages xml)) + +(define-public ding-libs + (package + (name "ding-libs") + (version "0.6.0") + (source (origin + (method url-fetch) + (uri (string-append "https://releases.pagure.org/SSSD/ding-libs/" + "ding-libs-" version ".tar.gz")) + (sha256 + (base32 + "1bczkvq7cblp75kqn6r2d7j5x7brfw6wxirzc6d2rkyb80gj2jkn")))) + (build-system gnu-build-system) + (home-page "https://pagure.io/SSSD/ding-libs/") + (synopsis "Libraries for SSSD") + (description + "DING-LIBS (DING Is Not Glib) are a set of small, useful libraries that +the @dfn{System Security Services Daemon} (SSSD) uses and makes available to +other projects. They include: libdhash, an implementation of a dynamic hash +table which will dynamically resize to achieve optimal storage and access time +properties; ini_config, a library for parsing and managing @code{INI} files; +path_utils, a library to manage UNIX paths and subsets of paths; collection, a +generic, hierarchical grouping mechanism for complex data sets; ref_array, a +dynamically-growing, reference-counted array; libbasicobjects, a set of +fundamental object types for C.") + (license license:lgpl3+))) + +;; Note: This package installs modules for ldb and nss. For the former we +;; need to set LDB_MODULES_PATH. For the latter LD_PRELOAD or LD_LIBRARY_PATH +;; is needed. +(define-public sssd + (package + (name "sssd") + (version "1.15.2") + (source (origin + (method url-fetch) + (uri (string-append "http://releases.pagure.org/SSSD/sssd/" + "sssd-" version ".tar.gz")) + (sha256 + (base32 + "0r6j28f7vjb1aw65gkw4nz2l3jy605h7wsr1k815hynp2jrzrmac")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "DOCBOOK_XSLT=" + (assoc-ref %build-inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/manpages/docbook.xsl") + ;; Remove "--postvalid" option, because that requires access to + ;; online DTDs. + "XMLLINT_FLAGS = --catalogs --nonet --noent --xinclude --noout") + #:configure-flags + (list "--disable-cifs-idmap-plugin" + "--without-nfsv4-idmapd-plugin" + "--without-python2-bindings" + "--without-python3-bindings" + (string-append "--with-plugin-path=" + (assoc-ref %outputs "out") + "/lib/sssd") + (string-append "--with-krb5-plugin-path=" + (assoc-ref %outputs "out") + "/lib/krb5/plugins/libkrb5") + (string-append "--with-cifs-plugin-path=" + (assoc-ref %outputs "out") + "/lib/cifs-utils") + (string-append "--with-init-dir=" + (assoc-ref %outputs "out") + "/etc/init.d") + (string-append "--with-ldb-lib-dir=" + (assoc-ref %outputs "out") + "/lib/ldb/modules/ldb") + (string-append "--with-xml-catalog-path=" + (assoc-ref %build-inputs "docbook-xml") + "/xml/dtd/docbook/catalog.xml")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-test + (lambda _ + (substitute* "src/tests/responder_socket_access-tests.c" + (("tcase_add_test\\(tc_utils, resp_str_to_array_test\\);") "")) + #t))))) + (inputs + `(("augeas" ,augeas) + ("bind" ,isc-bind "utils") + ("c-ares" ,c-ares) + ("curl" ,curl) + ("cyrus-sasl" ,cyrus-sasl) + ("dbus" ,dbus) + ("ding-libs" ,ding-libs) + ("glib" ,glib) + ("gnutls" ,gnutls) + ("http-parser" ,http-parser) + ("jansson" ,jansson) + ("ldb" ,ldb) + ("libselinux" ,libselinux) + ("libsemanage" ,libsemanage) + ("libunistring" ,libunistring) + ("linux-pam" ,linux-pam) + ("mit-krb5" ,mit-krb5) + ("nss" ,nss) + ("openldap" ,openldap) + ("openssl" ,openssl) + ("pcre" ,pcre) + ("popt" ,popt) + ("samba" ,samba) + ("talloc" ,talloc) + ("tdb" ,tdb) + ("tevent" ,tevent))) + (native-inputs + `(("check" ,check) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml) + ("libxslt" ,libxslt) + ("pkg-config" ,pkg-config))) + (home-page "https://pagure.io/SSSD/sssd/") + (synopsis "System security services daemon") + (description "SSSD is a system daemon. Its primary function is to provide +access to identity and authentication remote resource through a common +framework that can provide caching and offline support to the system. It +provides PAM and NSS modules, and in the future will D-BUS based interfaces +for extended user information. It also provides a better database to store +local users as well as extended user data.") + (license license:gpl3+))) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 86646fcfe3..b81bb42073 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -106,7 +106,7 @@ be output in text, PostScript, PDF or HTML.") (define-public r-minimal (package (name "r-minimal") - (version "3.3.3") + (version "3.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://cran/src/base/R-" @@ -114,7 +114,7 @@ be output in text, PostScript, PDF or HTML.") version ".tar.gz")) (sha256 (base32 - "0v7wpj89b0i3ad3fi1wak5c93hywmbxv8sdnixhq8l17782nidss")))) + "14cb8bwi3akvdb6934kqic2862f2qgav6cq4g0h7gi2p4ka9x3i8")))) (build-system gnu-build-system) (arguments `(#:disallowed-references (,tzdata-2017a) @@ -184,13 +184,15 @@ be output in text, PostScript, PDF or HTML.") ;; making "help()" print nothing at all. (lambda _ (setenv "PAGER" "cat") #t)) (add-before 'check 'set-timezone - ;; Some tests require the timezone to be set. - (lambda* (#:key inputs #:allow-other-keys) - (setenv "TZ" "UTC") - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) - #t)) + ;; Some tests require the timezone to be set. However, the + ;; timezone may not just be "UTC", or else a brittle regression + ;; test in reg-tests-1d will fail. + (lambda* (#:key inputs #:allow-other-keys) + (setenv "TZ" "UTC+1") + (setenv "TZDIR" + (string-append (assoc-ref inputs "tzdata") + "/share/zoneinfo")) + #t)) (add-after 'build 'make-info (lambda _ (zero? (system* "make" "info")))) (add-after 'build 'install-info @@ -262,14 +264,14 @@ available, greatly increasing its breadth and scope.") (define-public r-boot (package (name "r-boot") - (version "1.3-18") + (version "1.3-19") (source (origin (method url-fetch) (uri (cran-uri "boot" version)) (sha256 (base32 - "0pi348vvgzn1ny54yxhw6kq6nl7rx9bpr9ji1a6wqs8ah5zj7z8j")))) + "16hsw4bw9pkfc2lqxfwycm1sbvbrm4linvm0ci71n8sxc7srvkis")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/boot") (synopsis "Bootstrap functions for R") @@ -283,14 +285,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.") (define-public r-mass (package (name "r-mass") - (version "7.3-45") + (version "7.3-47") (source (origin (method url-fetch) (uri (cran-uri "MASS" version)) (sha256 (base32 - "13lp5919h2bnpmf8rbmkar8a41yx62fnx66pkvljvqf60wa29qsx")))) + "1gy6z7ly9wn86rfn9xrmqiqq1ijw3pkasrr2299kbzsgx2mwsi7d")))) (properties `((upstream-name . "MASS"))) (build-system r-build-system) (home-page "http://www.stats.ox.ac.uk/pub/MASS4/") @@ -406,13 +408,13 @@ estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) (define-public r-lattice (package (name "r-lattice") - (version "0.20-34") + (version "0.20-35") (source (origin (method url-fetch) (uri (cran-uri "lattice" version)) (sha256 (base32 - "0615h69czr73k47whhzimf1qxv5qk0cabcrkljwhyrn6m6piq6ja")))) + "0pcnmaz3lr62ly0dcy5hnnqxshc4yqd43hrvlz3almgc9l7sna88")))) (build-system r-build-system) (home-page "http://lattice.r-forge.r-project.org/") (synopsis "High-level data visualization system") @@ -426,14 +428,14 @@ also flexible enough to handle most nonstandard requirements.") (define-public r-matrix (package (name "r-matrix") - (version "1.2-7.1") + (version "1.2-8") (source (origin (method url-fetch) (uri (cran-uri "Matrix" version)) (sha256 (base32 - "09rd51na9spz0lm1lylkfhw43w7c922b83m4jsggmpg3pbd6dssa")))) + "1dyv42d7ranb85y8hvi57hbg5xnvhdzqn56wcq3qmhazqj3s3liw")))) (properties `((upstream-name . "Matrix"))) (build-system r-build-system) (propagated-inputs @@ -471,14 +473,14 @@ nonlinear mixed-effects models.") (define-public r-mgcv (package (name "r-mgcv") - (version "1.8-16") + (version "1.8-17") (source (origin (method url-fetch) (uri (cran-uri "mgcv" version)) (sha256 (base32 - "0pj31gdwra7nv8spys4pfcbmsik99q1y1d0d2g37ywc3sz5s0rlj")))) + "1zj223l4a3j15d3c01wv7dkzn9w6084gxrq5600ck9rvr0lfpwwg")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix) @@ -514,14 +516,14 @@ single hidden layer, and for multinomial log-linear models.") (define-public r-rpart (package (name "r-rpart") - (version "4.1-10") + (version "4.1-11") (source (origin (method url-fetch) (uri (cran-uri "rpart" version)) (sha256 (base32 - "119dvh2cpab4vq9blvbkil5hgq6w018amiwlda3ii0fki39axpf5")))) + "165djqj7lk81jr7z5fwccq3h7ayys26hx1kj9hndvg2rkyaq1arq")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/rpart") (synopsis "Recursive partitioning and regression trees") @@ -553,14 +555,14 @@ analysis.") (define-public r-survival (package (name "r-survival") - (version "2.40-1") + (version "2.41-3") (source (origin (method url-fetch) (uri (cran-uri "survival" version)) (sha256 (base32 - "10pf0kq0g66k5rgizrvh29mq3r84acljw2jgrv5yp6z38xw23mci")))) + "07cnr0hnki6ybbjll54l4s5lllhk19vni5f8m0mvsfp99ls7qygk")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix))) @@ -684,13 +686,13 @@ effects of different types of color-blindness.") (define-public r-digest (package (name "r-digest") - (version "0.6.10") + (version "0.6.12") (source (origin (method url-fetch) (uri (cran-uri "digest" version)) (sha256 - (base32 "07825781nl85gx3pqskc04ywgs0f874qj9z2nyrwz7h0aqks0l8c")))) + (base32 "1awy9phxdvqnadby7rvwy2hkbrj210bqf4xvi27asdq028zlcyd4")))) (build-system r-build-system) ;; Vignettes require r-knitr, which requires r-digest, so we have to ;; disable them and the tests. @@ -814,13 +816,13 @@ Munsell colour system.") (define-public r-rcpp (package (name "r-rcpp") - (version "0.12.8") + (version "0.12.10") (source (origin (method url-fetch) (uri (cran-uri "Rcpp" version)) (sha256 - (base32 "0is1vql1q82g7yakad4skx707ip0fx3rgdwv9a8mi8259gly2qji")))) + (base32 "108p485agxwgmnl9p54vsyy94w96lcimlk08v71ddm77gfl13y2f")))) (build-system r-build-system) (home-page "http://www.rcpp.org") (synopsis "Seamless R and C++ Integration") @@ -943,14 +945,14 @@ solution for sending email, including attachments, from within R.") (define-public r-stringi (package (name "r-stringi") - (version "1.1.2") + (version "1.1.5") (source (origin (method url-fetch) (uri (cran-uri "stringi" version)) (sha256 (base32 - "13i1p6j8mx31hsw2s4c2phm2llrrdakzixkm6i0axsxprri722z5")))) + "1wh20is24lmzhcd9487ckv7r19009fyz4is3ianp3ky69vy8a7k5")))) (build-system r-build-system) (inputs `(("icu4c" ,icu4c))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -969,13 +971,13 @@ transliteration, concatenation, date-time formatting and parsing, etc.") (define-public r-stringr (package (name "r-stringr") - (version "1.1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "stringr" version)) (sha256 - (base32 "0css5j4psl80br75chg6s1s3ipzf89f71bnbys34flp9yghg1cfc")))) + (base32 "16hj2rmv8x03lp6cp2jk0k2plibvbggf444kp05przdvd03v7l31")))) (build-system r-build-system) (propagated-inputs `(("r-magrittr" ,r-magrittr) @@ -1073,14 +1075,14 @@ aesthetic attributes.") (define-public r-gdtools (package (name "r-gdtools") - (version "0.1.3") + (version "0.1.4") (source (origin (method url-fetch) (uri (cran-uri "gdtools" version)) (sha256 (base32 - "1prh814lw3qkgnf0760cvpic1k68jhlkpcxlksv8chjkvsrnnf09")))) + "0l8c4bh6765x9s6rw3mfm1bgicdzdngir1kxh9pxx4sidrdndcip")))) (build-system r-build-system) (native-inputs `(("r-rcpp" ,r-rcpp) @@ -1124,13 +1126,13 @@ considerably faster, produces smaller files, and leaves text as is.") (define-public r-assertthat (package (name "r-assertthat") - (version "0.1") + (version "0.2.0") (source (origin (method url-fetch) (uri (cran-uri "assertthat" version)) (sha256 (base32 - "0dwsqajyglfscqilj843qfqn1ndbqpswa7b4l1d633qjk9d68qqk")))) + "1wp5znk3xy338x6hknppk702jn596yr735d9i7c3wabm3sdzfgnp")))) (build-system r-build-system) (home-page "https://github.com/hadley/assertthat") (synopsis "Easy pre and post assertions") @@ -1162,13 +1164,13 @@ evaluation (NSE) in R.") (define-public r-dbi (package (name "r-dbi") - (version "0.5-1") + (version "0.6-1") (source (origin (method url-fetch) (uri (cran-uri "DBI" version)) (sha256 (base32 - "1idwm9lkmz6ns6h0vvgml18mg0k7vjqiv9p5svrdcmx7r1rirpdi")))) + "1fg158k4n6l3rzx9nrwhp4nwkwpbmv1q7z2xz5rw138zws68fkgr")))) (build-system r-build-system) (home-page "https://github.com/rstats-db/DBI") (synopsis "R database interface") @@ -1279,13 +1281,13 @@ data derived from /etc/mime.types in UNIX-type systems.") (define-public r-markdown (package (name "r-markdown") - (version "0.7.7") + (version "0.8") (source (origin (method url-fetch) (uri (cran-uri "markdown" version)) (sha256 (base32 - "00j1hlib3il50azs2vlcyhi0bjpx1r50mxr9w9dl5g1bwjjc71hb")))) + "1vcgsh2m2f5kfgappgg71nbf04ff0j1sbk668krjs3r2n89dk3sk")))) (build-system r-build-system) ;; Skip check phase because the tests require the r-knitr package to be ;; installed. This prevents installation failures. Knitr normally @@ -1417,13 +1419,13 @@ understand the language at a deeper level.") (define-public r-memoise (package (name "r-memoise") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "memoise" version)) (sha256 (base32 - "0sq2dhpvxy17v1baj256r0jnygdy3m5a8x4zh6vhv29957qnq6zx")))) + "034qfc2xlh30x1q2vya239w34a3ir3y2fwnx2agbgbi6592zjxmj")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest))) @@ -1525,18 +1527,17 @@ defined in different packages.") (define-public r-tibble (package (name "r-tibble") - (version "1.2") + (version "1.3.0") (source (origin (method url-fetch) (uri (cran-uri "tibble" version)) (sha256 (base32 - "011i352ylq9b4xfcj7h10h7qsqd9qkc1rzc0pr1gf8qjb788p2pd")))) + "1q25i1cv3qms6d3lw7jd3z142w188znkcbyam460gn9si8l8g2bk")))) (build-system r-build-system) (propagated-inputs - `(("r-assertthat" ,r-assertthat) - ("r-lazyeval" ,r-lazyeval) + `(("r-lazyeval" ,r-lazyeval) ("r-rcpp" ,r-rcpp))) (home-page "https://github.com/hadley/tibble") (synopsis "Simple data frames") @@ -1602,14 +1603,14 @@ transformations.") (define-public r-cluster (package (name "r-cluster") - (version "2.0.5") + (version "2.0.6") (source (origin (method url-fetch) (uri (cran-uri "cluster" version)) (sha256 (base32 - "1bkvqmv8h2c423q9ag2afb6s9j2vcdlxsf559zzbimraphrr2c2b")))) + "1z4gbz7chxxi4ly6c0yjlikwgf8aa8dlg05cn5cd6pjr21zvh97l")))) (build-system r-build-system) (inputs `(("gfortran" ,gfortran))) @@ -1687,13 +1688,13 @@ and density estimation.") (define-public r-chron (package (name "r-chron") - (version "2.3-48") + (version "2.3-50") (source (origin (method url-fetch) (uri (cran-uri "chron" version)) (sha256 (base32 - "1q1d0p2wq19w3mpfqnrg8nmspxqmhv4ap52r393s6y3abl36ccac")))) + "1w3sl60gsirniqslb3pa75caiqbzbvc44phpd4czvwkb62xx1vx9")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/chron") (synopsis "Chronological R objects which can handle dates and times") @@ -1705,13 +1706,13 @@ times.") (define-public r-data-table (package (name "r-data-table") - (version "1.10.0") + (version "1.10.4") (source (origin (method url-fetch) (uri (cran-uri "data.table" version)) (sha256 (base32 - "1168arn4wjd1jj7kgr4sb8xd52hr8p8iqp85g5jwp3mkz4p76qfg")))) + "0ykbjr1x50ajxbri385vi3mnxj7zg1dcgh9y0snp341qmmmdypw6")))) (build-system r-build-system) (home-page "https://github.com/Rdatatable/data.table/wiki") (synopsis "Enhanced version of data.frame R object") @@ -1867,14 +1868,14 @@ chain.") (define-public r-ade4 (package (name "r-ade4") - (version "1.7-5") + (version "1.7-6") (source (origin (method url-fetch) (uri (cran-uri "ade4" version)) (sha256 (base32 - "0aaqbnydm5fb37nrvqj4bx6hxax7255j426cwh2lh88nyvznbq37")))) + "0lnc37d6waajmagy8qvw206pyc4vgrpzl3hk3j9frh6wa0b8x140")))) (build-system r-build-system) (home-page "http://pbil.univ-lyon1.fr/ADE-4") (synopsis "Multivariate data analysis and graphical display") @@ -1886,14 +1887,14 @@ and environmental data in the framework of Euclidean exploratory methods.") (define-public r-xml2 (package (name "r-xml2") - (version "1.0.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (cran-uri "xml2" version)) (sha256 (base32 - "0f2alsrk3yykznbhnz4pcsg9mb72cv607vbapqx5kqfv39772kgr")))) + "05iifrcgzx53w5ciw8bbm4vdwc3giv4xsvazv8chqxkndfvf7wq0")))) (build-system r-build-system) (inputs `(("libxml2" ,libxml2))) @@ -1910,14 +1911,14 @@ files in R. It is built on top of the libxml2 C library.") (define-public r-multitaper (package (name "r-multitaper") - (version "1.0-12") + (version "1.0-13") (source (origin (method url-fetch) (uri (cran-uri "multitaper" version)) (sha256 (base32 - "011qpkwpjclfc24y2qqigmdnikqwdnanflfhihigh5b5k7qwgm5j")))) + "1ckf9bhvd5k7ypaw2viqh3cyj9jij0ygcp4q9pxwqs508s6yx3a5")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -1976,14 +1977,14 @@ limited to R.") (define-public r-backports (package (name "r-backports") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) (uri (cran-uri "backports" version)) (sha256 (base32 - "0fssh5rnnvpp8wm0ml9gk765idwrgj07xyxpkhpidl9zwydxzif2")))) + "1pn1ii8vbkgxcqvx52kzsbwf9gkn9fp33388087zky2hmdzdirn0")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/backports") (synopsis "Reimplementations of functions introduced since R 3.0.0") @@ -2021,14 +2022,14 @@ worries about execution time overhead.") (define-public r-bbmisc (package (name "r-bbmisc") - (version "1.10") + (version "1.11") (source (origin (method url-fetch) (uri (cran-uri "BBmisc" version)) (sha256 (base32 - "0cw2mhw7qhdrx91zzd5iwyh7ch9fy4wxga8j63731q6sxr1airjl")))) + "1lh1n4bvxzivb5rbz69mvd8xdgr3gr2bnqd68a39sd1530l8r90y")))) (properties `((upstream-name . "BBmisc"))) (build-system r-build-system) (propagated-inputs @@ -2112,23 +2113,76 @@ 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-desc + (package + (name "r-desc") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "desc" version)) + (sha256 + (base32 + "0mc1jmiwqyj7s6gzxz6fyamzjpmdn3rpfpllby2fq11ml30c6jpr")))) + (build-system r-build-system) + (propagated-inputs + `(("r-assertthat" ,r-assertthat) + ("r-crayon" ,r-crayon) + ("r-r6" ,r-r6) + ("r-rprojroot" ,r-rprojroot))) + (home-page "https://github.com/r-pkgs/desc") + (synopsis "Manipulate DESCRIPTION Files") + (description + "This package provides tools to read, write, create, and manipulate +DESCRIPTION files. It is intended for packages that create or manipulate +other packages.") + (license license:expat))) + +(define-public r-commonmark + (package + (name "r-commonmark") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "commonmark" version)) + (sha256 + (base32 + "12q5mncxvkwdxc35is6y5idx8a1h99hyz5x6ri0arni6k25krchk")))) + (build-system r-build-system) + ;;(inputs `(("zlib" ,zlib))) + (home-page "http://cran.r-project.org/web/packages/commonmark") + (synopsis "CommonMark and Github Markdown Rendering in R") + (description + "The CommonMark specification defines a rationalized version of markdown +syntax. This package uses the 'cmark' reference implementation for converting +markdown text into various formats including HTML, LaTeX and groff man. In +addition, it exposes the markdown parse tree in XML format. The latest +version of this package also adds support for Github extensions including +tables, autolinks and strikethrough text.") + (license license:bsd-2))) + (define-public r-roxygen2 (package (name "r-roxygen2") - (version "5.0.1") + (version "6.0.1") (source (origin (method url-fetch) (uri (cran-uri "roxygen2" version)) (sha256 (base32 - "19gblyrrn29msbpawcb1hn5m1rshiqwxy0lby0vf92rm13fmsxcz")))) + "0xpzziminf225kjwhyl51kgkzhplyzhk5farhf5s822krl2xqbfj")))) (build-system r-build-system) (propagated-inputs `(("r-brew" ,r-brew) + ("r-commonmark" ,r-commonmark) + ("r-desc" ,r-desc) ("r-digest" ,r-digest) + ("r-r6" ,r-r6) ("r-rcpp" ,r-rcpp) ("r-stringi" ,r-stringi) - ("r-stringr" ,r-stringr))) + ("r-stringr" ,r-stringr) + ("r-xml2" ,r-xml2))) (home-page "https://github.com/klutometis/roxygen") (synopsis "In-source documentation system for R") (description @@ -2308,17 +2362,16 @@ time-of-day values, based on the @code{difftime} class.") (define-public r-readr (package (name "r-readr") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "readr" version)) (sha256 (base32 - "0xji0dbal6xcxnsmjj678fw29n7wrj45wrd5ng99yhqqijcm9f6g")))) + "1g7g3gdmvq7nj8asw6fi13k38c420sy9696nqgkrhlvv5h13yqs7")))) (build-system r-build-system) (propagated-inputs - `(("r-curl" ,r-curl) - ("r-rcpp" ,r-rcpp) + `(("r-rcpp" ,r-rcpp) ("r-hms" ,r-hms) ("r-tibble" ,r-tibble) ("r-r6" ,r-r6) @@ -2392,32 +2445,17 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.7.600.1.0") + (version "0.7.800.2.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "0k1wniip184j0ckcg9kcjy2q4mcfj5jpd1nkk4l0ab75ad8znywv")) - (modules '((guix build utils))) - ;; Remove bundled armadillo sources - (snippet - '(begin - (delete-file-recursively "inst/include/armadillo_bits") - (delete-file "inst/include/armadillo"))))) + "025lh504nw7ir1f2xsqnvfkq9rg0rb2xzfn3a2s0b2a9snqdzzwr")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'link-against-armadillo - (lambda _ - (substitute* "src/Makevars" - (("PKG_LIBS=" prefix) - (string-append prefix "-larmadillo")))))))) (propagated-inputs - `(("r-rcpp" ,r-rcpp) - ("armadillo" ,armadillo-for-rcpparmadillo))) + `(("r-rcpp" ,r-rcpp))) (home-page "https://github.com/RcppCore/RcppArmadillo") (synopsis "Rcpp integration for the Armadillo linear algebra library") (description @@ -2476,14 +2514,14 @@ encoder/decoder, round-off-error-free sum and cumsum, etc.") (define-public r-rprojroot (package (name "r-rprojroot") - (version "1.1") + (version "1.2") (source (origin (method url-fetch) (uri (cran-uri "rprojroot" version)) (sha256 (base32 - "04ywfpar4d2hyi4rh4fbixrbzd665gpa2jhx67g8857cr70pp0nh")))) + "1fgyxv1zv04sllcclzz089xl6hpdzac7xk61l0l4acb7rqsx5d18")))) (build-system r-build-system) (propagated-inputs `(("r-backports" ,r-backports))) @@ -2499,14 +2537,14 @@ certain criterion, e.g., it contains a certain regular file.") (define-public r-rmarkdown (package (name "r-rmarkdown") - (version "1.3") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "rmarkdown" version)) (sha256 (base32 - "1vvxyf3zhyxx6k697lia299456hryp8nh3zr0fc27f3107a8mcjf")))) + "1dvs9cq88g61wfimifagq6y98yxavxzjan39jvpdsg98mafckq9g")))) (properties `((upstream-name . "rmarkdown"))) (build-system r-build-system) (propagated-inputs @@ -2592,13 +2630,13 @@ error stream.") (define-public r-rsqlite (package (name "r-rsqlite") - (version "1.1-1") + (version "1.1-2") (source (origin (method url-fetch) (uri (cran-uri "RSQLite" version)) (sha256 (base32 - "11vnzds5gidgakdmsbdn0bvnsz064ym1savwb7l6gc1bjn7xa2k4")))) + "0mg9yhdvny3vjn72agai5ghqxd3vk8cd4x1lsc0gzc2b2dm2w0p4")))) (properties `((upstream-name . "RSQLite"))) (build-system r-build-system) (propagated-inputs @@ -2649,13 +2687,13 @@ ldap, and also supports cookies, redirects, authentication, etc.") (define-public r-xml (package (name "r-xml") - (version "3.98-1.5") + (version "3.98-1.6") (source (origin (method url-fetch) (uri (cran-uri "XML" version)) (sha256 (base32 - "0dcdj7ryn8lm7wmv4hqhh9jxa5k97l6ad8xyvb932yfkwj1g1byy")))) + "1amxx7fpik162nimrr7m5lvv6rhx9cwdyg44fxp1i5wm3y4skwnz")))) (properties `((upstream-name . "XML"))) (build-system r-build-system) @@ -2808,13 +2846,13 @@ worker processes and collect and return the results on the master.") (define-public r-sparsem (package (name "r-sparsem") - (version "1.74") + (version "1.76") (source (origin (method url-fetch) (uri (cran-uri "SparseM" version)) (sha256 (base32 - "1fpfhld887y5lyb8jydprmv5krqm1fk6n53z942b4g4z1v4g04j7")))) + "16xnl9cacim35aawq6bmd2y6rrhnh1kg6dwsy3k5yslkfr1y9j62")))) (properties `((upstream-name . "SparseM"))) (inputs @@ -3115,14 +3153,14 @@ the way current RNG settings can be changed.") (define-public r-rtsne (package (name "r-rtsne") - (version "0.11") + (version "0.13") (source (origin (method url-fetch) (uri (cran-uri "Rtsne" version)) (sha256 (base32 - "0zi4nxgpiv1gpdmcnqdhz5kymzp8m5xj02zpf290p1yyydl76bhy")))) + "17crbdi80q4g2pwp9v7j3bdaznk96qlrqx01zvj3wwqippizyfqw")))) (properties `((upstream-name . "Rtsne"))) (build-system r-build-system) (propagated-inputs @@ -3139,14 +3177,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.") (define-public r-e1071 (package (name "r-e1071") - (version "1.6-7") + (version "1.6-8") (source (origin (method url-fetch) (uri (cran-uri "e1071" version)) (sha256 (base32 - "1069qwj9gsjq6par2cgfah8nn5x2w38830761x1f7mqpmk0gnj3h")))) + "08n6i26nfckjpxjkzi8phhanc3ahsrirkv5rz38y2jcv7ds031pn")))) (build-system r-build-system) (propagated-inputs `(("r-class" ,r-class))) @@ -3395,13 +3433,13 @@ persistent (on the file system).") (define-public r-r-rsp (package (name "r-r-rsp") - (version "0.40.0") + (version "0.41.0") (source (origin (method url-fetch) (uri (cran-uri "R.rsp" version)) (sha256 (base32 - "1hz5fnxz30m3cc7x7ha1swx4pn8c2244z6ka6v9m3l5lpdgc1367")))) + "01l430avj5ggmdsla2kiriix72g0dlzx9klniq321bs0za808v3c")))) (properties `((upstream-name . "R.rsp"))) (build-system r-build-system) (propagated-inputs @@ -3426,13 +3464,13 @@ vignettes.") (define-public r-mvtnorm (package (name "r-mvtnorm") - (version "1.0-5") + (version "1.0-6") (source (origin (method url-fetch) (uri (cran-uri "mvtnorm" version)) (sha256 (base32 - "1pc1mi2h063gh4a40009xk5j6pf5bm4274i5kycln38dixsry3yh")))) + "0i74s9dl4jf1gln6agra8h38qn9ifd5v0gi13caj1da5nrbmn0aa")))) (build-system r-build-system) (inputs `(("gfortran" ,gfortran))) @@ -3445,13 +3483,13 @@ t-probabilities, quantiles, random deviates and densities.") (define-public r-matrixstats (package (name "r-matrixstats") - (version "0.51.0") + (version "0.52.2") (source (origin (method url-fetch) (uri (cran-uri "matrixStats" version)) (sha256 (base32 - "0bsalx605kgb9nl7mfnq1qinkyd9s97p8plymsyfja1gmcnjrcpj")))) + "19fjf19cr0p3j9pj17myz39zpi5bh7ci72db3la9my09n6k6mnir")))) (properties `((upstream-name . "matrixStats"))) (build-system r-build-system) (native-inputs @@ -3469,17 +3507,18 @@ memory usage.") (define-public r-viridis (package (name "r-viridis") - (version "0.3.4") + (version "0.4.0") (source (origin (method url-fetch) (uri (cran-uri "viridis" version)) (sha256 (base32 - "1a9hqn2pccpc51vh8ghw698ni6xzdnp8v0n8kgjh51nlz5hhc87j")))) + "03mha2935k1mw7mjjkq7mrx185hl0m3vq3967iiwbknpivbdxllk")))) (build-system r-build-system) (propagated-inputs `(("r-ggplot2" ,r-ggplot2) - ("r-gridextra" ,r-gridextra))) + ("r-gridextra" ,r-gridextra) + ("r-viridislite" ,r-viridislite))) (home-page "https://github.com/sjmgarnier/viridis") (synopsis "Matplotlib default color map") (description @@ -3495,14 +3534,14 @@ most common form of color blindness.") (define-public r-viridislite (package (name "r-viridislite") - (version "0.1.3") + (version "0.2.0") (source (origin (method url-fetch) (uri (cran-uri "viridisLite" version)) (sha256 (base32 - "1b0fhj8i1m9jsz91gzag60k7vy7kk5xkdg31rc3h3spq96l66psp")))) + "1546h44ng4dxs130jkh6lkh990hmp90m1w45sq5p47n546gr0k9d")))) (properties `((upstream-name . "viridisLite"))) (build-system r-build-system) (home-page "https://github.com/sjmgarnier/viridisLite") @@ -3520,21 +3559,22 @@ the 'lite' version of the more complete @code{viridis} package.") (define-public r-tidyr (package (name "r-tidyr") - (version "0.6.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (cran-uri "tidyr" version)) (sha256 (base32 - "1bpwbphgl43ym433b0nrshwhr7pprmj1wkpkamdzix1zvf9dcbc2")))) + "11hs3gqpbaw3w281as4m7j9n594ix5axfpwbyjsd0l62pwnzj217")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) ("r-lazyeval" ,r-lazyeval) ("r-magrittr" ,r-magrittr) ("r-rcpp" ,r-rcpp) - ("r-stringi" ,r-stringi))) + ("r-stringi" ,r-stringi) + ("r-tibble" ,r-tibble))) (home-page "https://github.com/hadley/tidyr") (synopsis "Tidy data with `spread()` and `gather()` functions") (description @@ -3891,14 +3931,14 @@ hierarchical clustering dendrograms.") (define-public r-preprocesscore (package (name "r-preprocesscore") - (version "1.36.0") + (version "1.38.0") (source (origin (method url-fetch) (uri (bioconductor-uri "preprocessCore" version)) (sha256 (base32 - "1n8y12q7145f385gm2k3c6y3vwvin7jlb47la4mnl7mar6pq9kmp")))) + "1vq8hwxz73j93q0ldw5bnhbas1f2ha5q1lr9pp4l8gp8zdwzfrjn")))) (properties `((upstream-name . "preprocessCore"))) (build-system r-build-system) @@ -4112,13 +4152,13 @@ estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) (define-public r-zoo (package (name "r-zoo") - (version "1.7-14") + (version "1.8-0") (source (origin (method url-fetch) (uri (cran-uri "zoo" version)) (sha256 (base32 - "167m142rwwfy8b9hnfc3fi28dcsdjk61g1crqhll6sh5xmgnfn28")))) + "0mqklbx92ifwa0awm7gpm4r9dvwa09p55zjxjnypiqsxy532r4h9")))) (build-system r-build-system) (propagated-inputs `(("r-lattice" ,r-lattice))) @@ -4153,13 +4193,13 @@ with alternating row colors) in LaTeX and HTML formats easily from (define-public r-vipor (package (name "r-vipor") - (version "0.4.4") + (version "0.4.5") (source (origin (method url-fetch) (uri (cran-uri "vipor" version)) (sha256 (base32 - "0p1z9a3fazl78pj8a1i2n62v8hrs8cinq82j9wpawhmfkn3dggss")))) + "112gc0d7f8iavgf56pnzfxb7hy75yhd0zlyjzshdcfbnqcd2a6bx")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/vipor") (synopsis "Plot categorical data using noise and density estimates") @@ -4191,14 +4231,14 @@ closely-packed, non-overlapping points.") (define-public r-sourcetools (package (name "r-sourcetools") - (version "0.1.5") + (version "0.1.6") (source (origin (method url-fetch) (uri (cran-uri "sourcetools" version)) (sha256 (base32 - "0jx6kslygfqaic3cmjwag3dy98q1a2dw20cz7z8agsknmmbk6dy2")))) + "0l8c6fql82cb246qh7hfgxb4s35qn0qfgy6dzvkx0zkz1cpqvx69")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/sourcetools") (synopsis "Tools for reading, tokenizing and parsing R code") @@ -4234,13 +4274,13 @@ data at that region, and avoids over-plotting.") (define-public r-ggthemes (package (name "r-ggthemes") - (version "3.3.0") + (version "3.4.0") (source (origin (method url-fetch) (uri (cran-uri "ggthemes" version)) (sha256 (base32 - "1qdxg2siwsiq32fmgcxn4vihgxad9v8q0aqigl7a94c26bwxs7y2")))) + "1jj8lp7jbk3489kpgbw4b5phpn01gkfmksc21c6sn3x6wmzyn6hs")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -4259,13 +4299,13 @@ Wall Street Journal, among others. This package also provides (define-public r-statmod (package (name "r-statmod") - (version "1.4.27") + (version "1.4.29") (source (origin (method url-fetch) (uri (cran-uri "statmod" version)) (sha256 (base32 - "14yilq9d3z20hig4rs8bjqyydw3dfx90mhmzvw9w8p16h0s595sn")))) + "1fgzkwriba39d7946lq892f0si2fjdy37pvxki6ix8xyj8qgnci4")))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/statmod") (native-inputs @@ -4333,14 +4373,14 @@ published by the statistics blog FiveThirtyEight.") (define-public r-compquadform (package (name "r-compquadform") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) (uri (cran-uri "CompQuadForm" version)) (sha256 (base32 - "0bsgbdblxpv57mbwnf51xyiydp2bqyxkg4zzwqki85cv5xqlrq1n")))) + "1i30hrqdk64q17vsn918c3q79brchgx2wzh1gbsgbn0dh1ncabq4")))) (properties `((upstream-name . "CompQuadForm"))) (build-system r-build-system) (home-page "http://cran.r-project.org/web/packages/CompQuadForm") @@ -4378,19 +4418,19 @@ letters, as is often required for scientific publications.") (define-public r-mixtools (package (name "r-mixtools") - (version "1.0.4") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "mixtools" version)) (sha256 (base32 - "133rr17ywmlhsc6457hs8qxi8ng443ql9ashxpwc8875gjhv1x32")))) + "13wdm0xs5bakhpa8ypg6lvhjaqkxyabwz4glxdwn0jwdvkcdhgsl")))) (build-system r-build-system) (propagated-inputs - `(("r-boot" ,r-boot) - ("r-mass" ,r-mass) - ("r-segmented" ,r-segmented))) + `(("r-mass" ,r-mass) + ("r-segmented" ,r-segmented) + ("r-survival" ,r-survival))) (home-page "http://cran.r-project.org/web/packages/mixtools") (synopsis "Tools for analyzing finite mixture models") (description @@ -4536,14 +4576,14 @@ models, generalized linear models and model-based clustering.") (define-public r-mclust (package (name "r-mclust") - (version "5.2.2") + (version "5.2.3") (source (origin (method url-fetch) (uri (cran-uri "mclust" version)) (sha256 (base32 - "19cbg7p5h2b6h9mvcx9rjppyd3awma18ymaljakbnclpvhwbqpwd")))) + "0045msdw1xndfmlylbnm1ss716iiqzqwj454a97gmcq5kph86qzz")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -4772,14 +4812,14 @@ based on an interface to Fortran implementations by M. J. D. Powell.") (define-public r-rcppeigen (package (name "r-rcppeigen") - (version "0.3.2.9.0") + (version "0.3.2.9.1") (source (origin (method url-fetch) (uri (cran-uri "RcppEigen" version)) (sha256 (base32 - "0fy9kr03160f1ywzff3p380s8a59jz7d2d0rggb14g2y0slzpbr5")))) + "1ih940yjbc530cmpl6kx1jic7pz2ps1w5vrvy32qizh6m5s3lk7x")))) (properties `((upstream-name . "RcppEigen"))) (build-system r-build-system) (propagated-inputs @@ -4841,19 +4881,20 @@ using modular prediction and response module classes.") (define-public r-quantreg (package (name "r-quantreg") - (version "5.29") + (version "5.33") (source (origin (method url-fetch) (uri (cran-uri "quantreg" version)) (sha256 (base32 - "098gy8xv9kcl5y0cm93b8chr5sm6crrdxi20bkx9lmwmybl3himv")))) + "1dirmxa4cd05nb0yv0ga6ivw5hkr2zr2cb2lixl1nb6amqn024is")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) (propagated-inputs - `(("r-matrixmodels" ,r-matrixmodels) + `(("r-matrix" ,r-matrix) + ("r-matrixmodels" ,r-matrixmodels) ("r-sparsem" ,r-sparsem))) (home-page "http://www.r-project.org") (synopsis "Quantile regression") @@ -4894,20 +4935,22 @@ algorithms.") (define-public r-lme4 (package (name "r-lme4") - (version "1.1-12") + (version "1.1-13") (source (origin (method url-fetch) (uri (cran-uri "lme4" version)) (sha256 (base32 - "0j60l5kgx1wvw2wm3jwfqwi63hammaq8gfcxzwa4h552likvaxi9")))) + "13j4a721rx0272pdxrz6nabjv56xb6srklq5w4z1abc82lyvda2z")))) (build-system r-build-system) (native-inputs `(("r-rcpp" ,r-rcpp) ("r-rcppeigen" ,r-rcppeigen))) (propagated-inputs - `(("r-minqa" ,r-minqa) + `(("r-lattice" ,r-lattice) + ("r-matrix" ,r-matrix) + ("r-minqa" ,r-minqa) ("r-nloptr" ,r-nloptr) ("r-mass" ,r-mass) ("r-nlme" ,r-nlme))) @@ -4923,14 +4966,14 @@ C++ library for numerical linear algebra and RcppEigen glue.") (define-public r-pbkrtest (package (name "r-pbkrtest") - (version "0.4-6") + (version "0.4-7") (source (origin (method url-fetch) (uri (cran-uri "pbkrtest" version)) (sha256 (base32 - "00cw18q7wvddzjrbxz917wkix6r7672vi2wmsp4gwgzady8vha4x")))) + "1si3bhi59xc51a0pgjjglccq3h4aljyhw2k1b8574s145fnh7fsw")))) (build-system r-build-system) (propagated-inputs `(("r-lme4" ,r-lme4) @@ -4972,20 +5015,22 @@ to Applied regression, Second Edition, Sage, 2011.") (define-public r-caret (package (name "r-caret") - (version "6.0-73") + (version "6.0-76") (source (origin (method url-fetch) (uri (cran-uri "caret" version)) (sha256 (base32 - "1jzaqwv4glyqqnfbpalgajd0ag866247vvdh5i83ffqs1yhs984h")))) + "1w31xzpmj8p6r6s7s1vwnjxainq54bbh4cqm177ba0myv69hh8cc")))) (build-system r-build-system) (propagated-inputs `(("r-car" ,r-car) ("r-foreach" ,r-foreach) ("r-ggplot2" ,r-ggplot2) + ("r-lattice" ,r-lattice) ("r-modelmetrics" ,r-modelmetrics) + ("r-nlme" ,r-nlme) ("r-plyr" ,r-plyr) ("r-reshape2" ,r-reshape2))) (home-page "https://github.com/topepo/caret") @@ -5114,14 +5159,14 @@ diagnostic tools (@code{ctlcurves} and @code{DiscrFact}).") (define-public r-ranger (package (name "r-ranger") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "ranger" version)) (sha256 (base32 - "1fwqwbi0dnla16x6zj14rf95qr5gmilfmlrwnv7s960h4yiw4n97")))) + "0g1rnpk4c06lmy0r5n0j7i2xna190kqalmxp42d9gnk3drnb1x43")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp))) diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm index 7288a0f790..5d647bcd34 100644 --- a/gnu/packages/storage.scm +++ b/gnu/packages/storage.scm @@ -48,17 +48,18 @@ (define-public ceph (package (name "ceph") - (version "12.0.1") + (version "12.0.2") (source (origin (method url-fetch) (uri (string-append "https://download.ceph.com/tarballs/ceph-" version ".tar.gz")) (sha256 (base32 - "1mgd7iqx9zgwims2bb8dbzhzv0p6z9vjxavbv8dampa34fzac3xc")) + "0l9v072ba28i984y5rwny9i11nmpyx5bl7awxg48plyadm2l3g14")) (patches (search-patches "ceph-skip-unittest_blockdev.patch" "ceph-skip-collect-sys-info-test.patch" + "ceph-disable-unittest-throttle.patch" "ceph-disable-cpu-optimizations.patch")) (modules '((guix build utils))) (snippet @@ -222,6 +223,7 @@ (substitute* "src/test/osd/CMakeLists.txt" (("^add_ceph_test\\(osd-bench\\.sh.*$") "\n") (("^add_ceph_test\\(osd-config\\.sh.*$") "\n") + (("add_ceph_test\\(osd-dup\\.sh.*$") "\n") (("^add_ceph_test\\(osd-markdown\\.sh.*$") "\n") (("^add_ceph_test\\(osd-reactivate\\.sh.*$") "\n") (("^add_ceph_test\\(osd-reuse-id\\.sh.*$") "\n") diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index ca4cbec91f..1d3d1d367f 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2016 Al McElrath <hello@yrns.org> -;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; Copyright © 2015 Dmitry Bogatov <KAction@gnu.org> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> @@ -137,14 +137,14 @@ optimising the environment for the application in use and the task performed.") (define-public dmenu (package (name "dmenu") - (version "4.6") + (version "4.7") (source (origin (method url-fetch) (uri (string-append "http://dl.suckless.org/tools/dmenu-" version ".tar.gz")) (sha256 (base32 - "1cwnvamqqlgczvd5dv5rsgqbhv8kp0ddjnhmavb3q732i8028yja")))) + "1fgph549i0yw62x02jhfc8qmqk2rnzcnm46bxq6jig1cvkw3amm7")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests @@ -174,7 +174,7 @@ numbers of user-defined menu items efficiently.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -189,7 +189,7 @@ numbers of user-defined menu items efficiently.") ("libxkbfile" ,libxkbfile) ("alsa-lib" ,alsa-lib) ("libmpdclient" ,libmpdclient))) - (home-page "http://git.2f30.org/spoon/") + (home-page "https://git.2f30.org/spoon/") (synopsis "Set dwm status") (description "Spoon can be used to set the dwm status.") @@ -266,7 +266,7 @@ drawing.") (define-public surf (package (name "surf") - (version "0.7") + (version "2.0") (source (origin (method url-fetch) @@ -274,7 +274,7 @@ drawing.") version ".tar.gz")) (sha256 (base32 - "0jj93izd8fizxfa6ln9w1h9bwki81sz5dhskh5x1rl34zd38aq4m")))) + "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps")))) (build-system glib-or-gtk-build-system) (arguments '(#:tests? #f ; no tests @@ -294,7 +294,7 @@ drawing.") `(("dmenu" ,dmenu) ("glib-networking" ,glib-networking) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk/gtk+-2) + ("webkitgtk" ,webkitgtk) ("xprop" ,xprop))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -355,7 +355,7 @@ few minutes.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -367,7 +367,7 @@ few minutes.") (string-append "PREFIX=" %output)))) (inputs `(("libx11" ,libx11))) - (home-page "http://git.2f30.org/xbattmon/") + (home-page "https://git.2f30.org/xbattmon/") (synopsis "Simple battery monitor for X") (description "Xbattmon is a simple battery monitor for X.") @@ -380,7 +380,7 @@ few minutes.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -393,7 +393,7 @@ few minutes.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; No configure script - (home-page "http://git.2f30.org/wificurse/") + (home-page "https://git.2f30.org/wificurse/") (synopsis "Wifi DoS attack tool") (description "Wificurses listens for beacons sent from wireless access points @@ -413,7 +413,7 @@ drivers capable of injecting packets in wireless networks.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -426,7 +426,7 @@ drivers capable of injecting packets in wireless networks.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; No configure script - (home-page "http://2f30.org") + (home-page "https://2f30.org/") (synopsis "Commandline utility which scrolls text") (description "Skroll is a small utility that you can use to make a text scroll. @@ -441,7 +441,7 @@ left.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -454,7 +454,7 @@ left.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; No configure script - (home-page "http://git.2f30.org/sbm/") + (home-page "https://git.2f30.org/sbm/") (synopsis "Simple bandwidth monitor") (description "Sbm is a simple bandwidth monitor.") @@ -467,7 +467,7 @@ left.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -483,7 +483,7 @@ left.") (inputs `(("cups-minimal" ,cups-minimal) ("zlib" ,zlib))) - (home-page "http://git.2f30.org/prout/") + (home-page "https://git.2f30.org/prout/") (synopsis "Smaller lp command") (description "Prout (PRint OUT) is a small utility one can use to send @@ -500,7 +500,7 @@ cups server to be installed.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -519,7 +519,7 @@ cups server to be installed.") (("lcurses") "lncurses"))))))) (inputs `(("ncurses" ,ncurses))) - (home-page "http://git.2f30.org/noice/") + (home-page "https://git.2f30.org/noice/") (synopsis "Small file browser") (description "Noice is a small curses-based file browser.") @@ -550,7 +550,7 @@ cups server to be installed.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; No configure script - (home-page "http://git.2f30.org/human/") + (home-page "https://git.2f30.org/human/") (synopsis "Convert bytes to human readable formats") (description "Human is a small program which translate numbers into a @@ -567,7 +567,7 @@ environment variable.") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -580,22 +580,22 @@ environment variable.") #:phases (modify-phases %standard-phases (delete 'configure)))) ; No configure script - (home-page "http://git.2f30.org/fortify-headers/") + (home-page "https://git.2f30.org/fortify-headers/") (synopsis "Standalone fortify-source implementation") (description "This is a standalone implementation of fortify source. It provides compile time buffer checks. It is libc-agnostic and simply overlays the system headers by using the @code{#include_next} extension found in GCC. It was -initially intended to be used on musl based Linux distributions. +initially intended to be used on musl-based Linux distributions. @itemize @item It is portable, works on *BSD, Linux, Solaris and possibly others. @item It will only trap non-conformant programs. This means that fortify level 2 is treated in the same way as level 1. @item Avoids making function calls when undefined behaviour has already been - invoked. This is handled by using __builtin_trap(). -@item Support for out-of-bounds read interfaces, such as send(), write(), - fwrite() etc. + invoked. This is handled by using @code{__builtin_trap()}. +@item Support for out-of-bounds read interfaces, such as @code{send()}, + @code{write()}, @code{fwrite()}, etc. @item No ABI is enforced. All of the fortify check functions are inlined into the resulting binary. @end itemize\n") @@ -608,7 +608,7 @@ initially intended to be used on musl based Linux distributions. (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -623,7 +623,7 @@ initially intended to be used on musl based Linux distributions. (delete 'configure)))) ; No configure script (inputs `(("libpng" ,libpng))) - (home-page "http://git.2f30.org/colors/") + (home-page "https://git.2f30.org/colors/") (synopsis "Extract colors from pictures") (description "Extract colors from PNG files. It is similar to @@ -681,8 +681,8 @@ as -1, to be used instead of U+FFFD. ;; No release tarballs so far. (define-public lchat - (let ((revision "1") - (commit "bbde23732f8c7769b982f0c1bda9b99fbf93f932")) + (let ((revision "2") + (commit "25d90f4630b45e2b609d2e3daecb32cf5ff065fd")) (package (name "lchat") (version (string-append "0.0.0-" revision "." (string-take commit 7))) @@ -695,7 +695,7 @@ as -1, to be used instead of U+FFFD. (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "00q3rc0aa5416jvjvrj71x1wnr0331kxhvjjs7pyxgnq4xf36k63")))) + "0dvljyq3m7rxxkqv7rkmijak6vj8i4db3iq2z988bvf76chz268b")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No tests diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm index 4b026b93cb..91f4b3d0ed 100644 --- a/gnu/packages/sync.scm +++ b/gnu/packages/sync.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -35,14 +35,14 @@ (define-public owncloud-client (package (name "owncloud-client") - (version "2.2.4") + (version "2.3.1") (source (origin (method url-fetch) (uri (string-append "https://download.owncloud.com/desktop/stable/" "owncloudclient-" version ".tar.xz")) (sha256 - (base32 "1lz7v5sscj5489panz5ng372g9l66ng0srx6xaz8drnsgi7m64zk")) + (base32 "051rky4rpm73flxxkhfdxqq23ncnk4ixhscbg74w82sa4d93f54k")) (modules '((guix build utils))) (snippet '(begin @@ -75,11 +75,9 @@ (("\\/\\$\\{APPLICATION_EXECUTABLE\\}\\\"") "\"")) #t)) (add-after 'unpack 'delete-failing-tests - ;; These tests fail for no apparent reason + ;; "Could not create autostart folder" (lambda _ (substitute* "test/CMakeLists.txt" - (("owncloud_add_test\\(FileSystem \"\"\\)" test) - (string-append "#" test)) (("owncloud_add_test\\(Utility \"\"\\)" test) (string-append "#" test))) #t))) diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm index 7f8a30fa33..b971cbe3a9 100644 --- a/gnu/packages/synergy.scm +++ b/gnu/packages/synergy.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,7 +34,7 @@ (define-public synergy (package (name "synergy") - (version "1.8.2") + (version "1.8.8") (source (origin (method url-fetch) @@ -42,7 +43,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1ym9lmnm64i1bw4spxq40drb4nvzsq5z7zq1935aq0kgccccg11g")) + "16vxbly4a33c63da3kmj7j47cam583l7bip33jc43mw173wqihw5")) (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 f9a23c3230..de888891c4 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2017 Kei Kebreau <kei@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -219,7 +220,7 @@ interfaces (GUIs) in the Tcl language.") ;; those of the orignal Tix4.1.3 or Tk8.4.* sources. See the files ;; pTk/license.terms, pTk/license.html_lib, and pTk/Tix.license for ;; details of this license." - (license (package-license perl)))) + (license perl-license))) (define-public tcllib (package @@ -290,3 +291,35 @@ callback is evaluated.") (license (non-copyleft "file://LICENCE" "See LICENCE in the distribution.")))) + +(define-public tclx + (package + (name "tclx") + (version "8.4.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tclx/TclX/" + version "/tclx" version ".tar.bz2")) + (sha256 + (base32 + "1v2qwzzidz0is58fd1p7wfdbscxm3ip2wlbqkj5jdhf6drh1zd59")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; a test named profile.test segfaults + #:configure-flags (list (string-append "--with-tcl=" + (assoc-ref %build-inputs "tcl") + "/lib") + (string-append "--libdir=" + (assoc-ref %outputs "out") + "/lib")))) + (inputs + `(("tcl" ,tcl) + ("tk" ,tk))) + (home-page "http://tclx.sourceforge.net/") + (synopsis "System programming extensions for Tcl") + (description + "Extended Tcl is oriented towards system programming tasks and large +application development. TclX provides additional interfaces to the operating +system, and adds many new programming constructs, text manipulation tools, and +debugging tools.") + (license tcl/tk))) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 7dcd164dc6..a8007586c9 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) + #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) @@ -49,6 +51,7 @@ #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages docbook) + #:use-module (gnu packages qt) #:use-module (srfi srfi-26)) (define-public tilda @@ -85,7 +88,7 @@ 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.") +configurable through a graphical wizard.") (home-page "https://github.com/lanoxx/tilda") (license license:gpl2+))) @@ -433,3 +436,110 @@ its embedding program should provide it to draw on its behalf. It avoids calling @code{malloc} during normal running state, allowing it to be used in embedded kernel situations.") (license license:expat))) + +(define-public cool-retro-term + (let ((commit "e48719fa44e5307df71dbd0fad234f8a6a53f863") + (revision "1")) + (package + (name "cool-retro-term") + (version (string-append "1.0.0-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (file-name (string-append name "-" version "-checkout")) + (uri (git-reference + (url (string-append "https://github.com/Swordfish90/" name)) + (commit commit) + (recursive? #t))) + (sha256 + (base32 "1sgqbirninkvgwchr35zgn5vzqvsmrf3cp7lqady1xgrawb8lsz3")) + (patches + (search-patches "cool-retro-term-remove-non-free-fonts.patch" + "cool-retro-term-fix-array-size.patch" + "cool-retro-term-dont-check-uninit-member.patch" + "cool-retro-term-memory-leak-1.patch")) + (modules '((guix build utils))) + (snippet + '(for-each (lambda (font) + (delete-file-recursively + (string-append "app/qml/fonts/" font)) + (substitute* '("app/qml/resources.qrc") + (((string-append "<file>fonts/" font ".*")) + ""))) + '(;"1971-ibm-3278" ; BSD 3-clause + "1977-apple2" ; Non-Free + "1977-commodore-pet" ; Non-Free + "1979-atari-400-800" ; Non-Free + "1982-commodore64" ; Non-Free + "1985-atari-st" ; ? + "1985-ibm-pc-vga" ; Unclear + ;"modern-fixedsys-excelsior" ; Redistributable + ;"modern-hermit" ; SIL + ;"modern-inconsolata"; SIL + ;"modern-pro-font-win-tweaked" ; X11 + ;"modern-proggy-tiny"; X11 + ;"modern-terminus" ; SIL + "modern-monaco"))))) ; Apple non-free + (build-system gnu-build-system) + (inputs + `(("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtgraphicaleffects" ,qtgraphicaleffects) + ("qtquickcontrols" ,qtquickcontrols))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (substitute* '("qmltermwidget/qmltermwidget.pro") + (("INSTALL_DIR = \\$\\$\\[QT_INSTALL_QML\\]") + (string-append "INSTALL_DIR = " out "/qml"))) + (substitute* '("app/app.pro") + (("target.path \\+= /usr") + (string-append "target.path += " out)) + (("icon32.path = /usr/share") + (string-append "icon32.path = " share)) + (("icon64.path = /usr/share") + (string-append "icon64.path = " share)) + (("icon128.path = /usr/share") + (string-append "icon128.path = " share)) + (("icon256.path = /usr/share") + (string-append "icon256.path = " share))) + (zero? (system* "qmake"))))) + (add-before 'install 'fix-Makefiles + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (substitute* '("Makefile") + (("\\$\\(INSTALL_ROOT\\)/usr") out))))) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (qml "/qml")) + (wrap-program (string-append out "/bin/cool-retro-term") + `("QML2_IMPORT_PATH" ":" prefix + (,(string-append out qml) + ,(string-append + (assoc-ref inputs "qtdeclarative") qml) + ,(string-append + (assoc-ref inputs "qtgraphicaleffects") qml) + ,(string-append + (assoc-ref inputs "qtquickcontrols") qml))))))) + (add-after 'install 'add-alternate-name + (lambda* (#:key outputs #:allow-other-keys) + (let* ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (symlink (string-append bin "/cool-retro-term") + (string-append bin "/crt")))))))) + (synopsis "Terminal emulator") + (description + "Cool-retro-term (crt) is a terminal emulator which mimics the look and +feel of the old cathode ray tube (CRT) screens. It has been designed to be +eye-candy, customizable, and reasonably lightweight.") + (home-page "https://github.com/Swordfish90/cool-retro-term") + (license (list + license:gpl2+ ; qmltermwidget + license:gpl3+ ; cool-retro-term + ;; Fonts + license:silofl1.1 + license:x11 + license:bsd-3))))) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 46c578f14b..7839e16b27 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -428,7 +428,7 @@ and processing BibTeX files. @code{Text::BibTeX} gives you access to the data at many different levels: you may work with BibTeX entries as simple field to string mappings, or get at the original form of the data as a list of simple values (strings, macros, or numbers) pasted together.") - (license (package-license perl)))) + (license license:perl-license))) (define-public biber (package diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index f860b0e8a8..98df48119a 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2016 José Miguel Sánchez García <jmi2k@openmailbox.org> ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2017 Feng Shu <tumashu@163.com> +;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,11 +28,15 @@ #:use-module (guix build-system gnu) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) + #:use-module (gnu packages assembly) #:use-module (gnu packages boost) #:use-module (gnu packages documentation) #:use-module (gnu packages gcc) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) #:use-module (gnu packages lua) #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages ruby) #:use-module (gnu packages terminals) #:use-module (gnu packages xml)) @@ -38,18 +44,17 @@ (define-public vis (package (name "vis") - (version "0.2") + (version "0.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/martanne/" name "/archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "0bbmkblpndc53pvr8xcfywdn8g351yxfj8c46zp5d744c3bq2nry")))) + (base32 "0xvhkj4j8pcmpnsx7f93d6n2f068xnl7wacfs97vr0agxwrfvn5y")))) (build-system gnu-build-system) (arguments - `(#:make-flags '("CFLAGS=-pie") - #:tests? #f ; No tests. + `(#:tests? #f ; No tests. #:phases (modify-phases %standard-phases (add-after 'install 'wrap-binary @@ -161,3 +166,64 @@ competitive (as in keystroke count) with Vim.") interface similar to many user-friendly editors. JOE has some of the key bindings and many of the powerful features of GNU Emacs.") (license license:gpl3+))) + +(define-public leafpad + (package + (name "leafpad") + (version "0.8.18.1") + (source (origin + (method url-fetch) + (uri (string-append "https://download.savannah.gnu.org/releases/" + "leafpad/leafpad-" version ".tar.gz")) + (sha256 + (base32 + "0b0az2wvqgvam7w0ns1j8xp2llslm1rx6h7zcsy06a7j0yp257cm")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("gtk+" ,gtk+-2))) + (home-page "http://tarot.freeshell.org/leafpad/") + (synopsis "GTK+ based text editor") + (description "Leafpad is a GTK+ text editor that emphasizes simplicity. As +development focuses on keeping weight down to a minimum, only the most essential +features are implemented in the editor. Leafpad is simple to use, is easily +compiled, requires few libraries, and starts up quickly. ") + (license license:gpl2+))) + +(define-public e3 + (package + (name "e3") + (version "2.82") + (source (origin + (method url-fetch) + (uri (string-append "https://sites.google.com/site/e3editor/Home/" + "e3-" version ".tgz")) + (sha256 + (base32 + "0919kadkas020maqq37852isnzp053q2fnws2zh3mz81d1jiviak")) + (modules '((guix build utils))) + + ;; Remove pre-built binaries. + (snippet '(delete-file-recursively "bin")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (native-inputs + `(("nasm" ,nasm))) + (home-page "https://sites.google.com/site/e3editor/") + (synopsis "Tiny text editor written in assembly") + (description + "e3 is a micro text editor with an executable code size between 3800 and +35000 bytes. Except for ``syntax highlighting'', the e3 binary supports all +of the basic functions one expects plus built in arithmetic calculations. +UTF-8 coding of unicode characters is supported as well. e3 can use +Wordstar-, EMACS-, Pico, Nedit or vi-like key bindings. e3 can be used on +16, 32, and 64-bit CPUs.") + (supported-systems '("x86_64-linux" "i686-linux")) + (license license:gpl2+))) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index dbd71c2e8f..7bc2fc47fa 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2015 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> @@ -10,6 +10,7 @@ ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> +;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,11 +32,13 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix build-system ant) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages autotools) + #:use-module (gnu packages java) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -368,6 +371,45 @@ to everybody, because they believe that everybody runs Windows and therefore runs Word\".") (license license:gpl2+))) +(define-public catdoc + (package + (name "catdoc") + (version "0.95") + (source (origin + (method url-fetch) + (uri (string-append "http://ftp.wagner.pp.ru/pub/catdoc/" + "catdoc-" version ".tar.gz")) + (sha256 + (base32 + "15h7v3bmwfk4z8r78xs5ih6vd0pskn0rj90xghvbzdjj0cc88jji")))) + (build-system gnu-build-system) + ;; TODO: Also build `wordview` which requires `tk` – make a separate + ;; package for this. + (arguments + '(#:tests? #f ; There are no tests + #:configure-flags '("--disable-wordview") + #:phases + (modify-phases %standard-phases + (add-before 'install 'fix-install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/share/man/man1")))))))) + (home-page "http://www.wagner.pp.ru/~vitus/software/catdoc/") + (synopsis "MS-Word to TeX or plain text converter") + (description "@command{catdoc} extracts text from MS-Word files, trying to +preserve as many special printable characters as possible. It supports +everything up to Word-97. Also supported are MS Write documents and RTF files. + +@command{catdoc} does not preserve complex word formatting, but it can +translate some non-ASCII characters into TeX escape codes. It's goal is to +extract plain text and allow you to read it and, probably, reformat with TeX, +according to TeXnical rules. + +This package also provides @command{xls2csv}, which extracts data from Excel +spreadsheets and outputs it in comma-separated-value format, and +@command{catppt}, which extracts data from PowerPoint presentations.") + (license license:gpl2+))) + (define-public utfcpp (package (name "utfcpp") @@ -518,3 +560,35 @@ categories.") "C library for creating and parsing configuration files.") (license (list license:lgpl2.1 ; Main distribution. license:asl1.1)))) ; src/readdir.{c,h} + +(define-public java-rsyntaxtextarea + (package + (name "java-rsyntaxtextarea") + (version "2.6.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/bobbylight/" + "RSyntaxTextArea/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0c5mqg2klj5rvf8fhycrli8rf6s37l9p7a8knw9gpp65r1c120q2")))) + (build-system ant-build-system) + (arguments + `(;; FIXME: some tests fail because locale resources cannot be found. + ;; Even when I add them to the class path, + ;; RSyntaxTextAreaEditorKitDumbCompleteWordActionTest fails. + #:tests? #f + #:jar-name "rsyntaxtextarea.jar")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "https://bobbylight.github.io/RSyntaxTextArea/") + (synopsis "Syntax highlighting text component for Java Swing") + (description "RSyntaxTextArea is a syntax highlighting, code folding text +component for Java Swing. It extends @code{JTextComponent} so it integrates +completely with the standard @code{javax.swing.text} package. It is fast and +efficient, and can be used in any application that needs to edit or view +source code.") + (license license:bsd-3))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 5acb1ff785..144d8962f2 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; @@ -431,7 +431,7 @@ required structures.") (define-public libressl (package (name "libressl") - (version "2.5.2") + (version "2.5.4") (source (origin (method url-fetch) @@ -440,8 +440,13 @@ required structures.") version ".tar.gz")) (sha256 (base32 - "10hw434azw0gvfkmfm46r85r7my1c6592rg9jsna914jh1q7vyhg")))) + "1ykf6dqlbafafhbdfmcj19pjj1z6wmsq0rmyqga1i0xv5x95nyhh")))) (build-system gnu-build-system) + (arguments + ;; Do as if 'getentropy' was missing since older Linux kernels lack it + ;; and libc would return ENOSYS, which is not properly handled. + ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00235.html>. + '(#:configure-flags '("ac_cv_func_getentropy=no"))) (native-search-paths ;; FIXME: These two variables must designate a single file or directory ;; and are not actually "search paths." In practice it works OK in @@ -453,7 +458,7 @@ required structures.") (search-path-specification (variable "SSL_CERT_FILE") (files '("etc/ssl/certs/ca-certificates.crt"))))) - (home-page "http://www.libressl.org/") + (home-page "https://www.libressl.org/") (synopsis "SSL/TLS implementation") (description "LibreSSL is a version of the TLS/crypto stack forked from OpenSSL in 2014, with the goals of modernizing the codebase, improving @@ -469,26 +474,36 @@ security, and applying best practice development processes.") (package (name "python-acme") ;; Remember to update the hash of certbot when updating python-acme. - (version "0.12.0") + (version "0.14.1") (source (origin (method url-fetch) (uri (pypi-uri "acme" version)) (sha256 (base32 - "1pzv8fcfwdqzvvpyhgjz412is0b98yj9495k8sidzzqgbdmvlp50")))) + "0asmkfkzbswnkrvbj5m01xgy4f6g1fjbj2nir1hhrn3ipcdrsv8f")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'install 'docs + (add-after 'unpack 'patch-dependency + ;; This module is part of the Python standard library, so we don't + ;; need to use an external package. + ;; https://github.com/certbot/certbot/pull/2249 + (lambda _ + (substitute* "setup.py" + (("'argparse',") "")) + #t)) + (add-after 'build 'build-documentation + (lambda _ + (zero? (system* "make" "-C" "docs" "man" "info")))) + (add-after 'install 'install-documentation (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (man (string-append out "/share/man/man1")) (info (string-append out "/info"))) - (and (zero? (system* "make" "-C" "docs" "man" "info")) - (install-file "docs/_build/texinfo/acme-python.info" info) - (install-file "docs/_build/man/acme-python.1" man) - #t))))))) + (install-file "docs/_build/texinfo/acme-python.info" info) + (install-file "docs/_build/man/acme-python.1" man) + #t)))))) ;; TODO: Add optional inputs for testing. (native-inputs `(("python-mock" ,python-mock) @@ -498,9 +513,7 @@ security, and applying best practice development processes.") ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) ("texinfo" ,texinfo))) (propagated-inputs - `(("python-ndg-httpsclient" ,python-ndg-httpsclient) - ("python-werkzeug" ,python-werkzeug) - ("python-six" ,python-six) + `(("python-six" ,python-six) ("python-requests" ,python-requests) ("python-pytz" ,python-pytz) ("python-pyrfc3339" ,python-pyrfc3339) @@ -526,24 +539,23 @@ security, and applying best practice development processes.") (uri (pypi-uri name version)) (sha256 (base32 - "1dw86gb8lyap5ckjawmli1hxgbchw2g62g1lqfvxyqjv0df94waa")))) + "0rdby57hw35qdrbl7kigscphnz4kqb608bqzrcb73nb99092i6si")))) (build-system python-build-system) (arguments `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - (add-after 'build 'docs - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (man1 (string-append out "/share/man/man1")) - (man7 (string-append out "/share/man/man7")) - (info (string-append out "/info"))) - (and - (zero? (system* "make" "-C" "docs" "man" "info")) - (install-file "docs/_build/texinfo/Certbot.info" info) - (install-file "docs/_build/man/certbot.1" man1) - (install-file "docs/_build/man/certbot.7" man7) - #t))))))) + ,@(substitute-keyword-arguments (package-arguments python-acme) + ((#:phases phases) + `(modify-phases ,phases + (replace 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man1 (string-append out "/share/man/man1")) + (man7 (string-append out "/share/man/man7")) + (info (string-append out "/info"))) + (install-file "docs/_build/texinfo/Certbot.info" info) + (install-file "docs/_build/man/certbot.1" man1) + (install-file "docs/_build/man/certbot.7" man7) + #t)))))))) ;; TODO: Add optional inputs for testing. (native-inputs `(("python2-nose" ,python2-nose) @@ -557,7 +569,6 @@ security, and applying best practice development processes.") (propagated-inputs `(("python2-acme" ,python2-acme) ("python2-zope-interface" ,python2-zope-interface) - ("python2-pythondialog" ,python2-pythondialog) ("python2-pyrfc3339" ,python2-pyrfc3339) ("python2-pyopenssl" ,python2-pyopenssl) ("python2-configobj" ,python2-configobj) @@ -622,7 +633,7 @@ web pages on SSL servers (for symmetry, the same API is offered for accessing http servers, too), an sslcat() function for writing your own clients, and finally access to the SSL api of the SSLeay/OpenSSL package so you can write servers or clients for more complicated applications.") - (license (package-license perl)) + (license license:perl-license) (home-page "http://search.cpan.org/~mikem/Net-SSLeay-1.66/"))) (define-public perl-crypt-openssl-rsa @@ -651,7 +662,7 @@ servers or clients for more complicated applications.") "RSA encoding and decoding, using the openSSL libraries") (description "Crypt::OpenSSL::RSA does RSA encoding and decoding (using the OpenSSL libraries).") - (license (package-license perl)))) + (license license:perl-license))) (define perl-crypt-arguments `(#:phases (modify-phases %standard-phases @@ -687,7 +698,7 @@ OpenSSL libraries).") (description "Crypt::OpenSSL::Bignum provides multiprecision integer arithmetic in Perl.") ;; At your option either gpl1+ or the Artistic License - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-crypt-openssl-random (package @@ -712,7 +723,7 @@ arithmetic in Perl.") "OpenSSL/LibreSSL pseudo-random number generator access") (description "Crypt::OpenSSL::Random is a OpenSSL/LibreSSL pseudo-random number generator") - (license (package-license perl)))) + (license license:perl-license))) (define-public acme-client (package diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm index c6a9ca8cae..5b92df88ae 100644 --- a/gnu/packages/tmux.scm +++ b/gnu/packages/tmux.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> +;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,7 +33,7 @@ (define-public tmux (package (name "tmux") - (version "2.3") + (version "2.4") (source (origin (method url-fetch) (uri (string-append @@ -40,7 +41,7 @@ version "/tmux-" version ".tar.gz")) (sha256 (base32 - "0aw5fcav8pa70ym391n4g6mh5vir34x35xhb09zdwhhg5w9kwcam")))) + "0jdkk7vncwabrp85lw3msh2y02dc2k0qz5h4hka9s38x4c9nnzbm")))) (build-system gnu-build-system) (inputs `(("libevent" ,libevent) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index e48017e640..b31b58a26f 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -1,9 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,7 +29,9 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages libevent) + #:use-module (gnu packages linux) #:use-module (gnu packages compression) #:use-module (gnu packages pcre) #:use-module (gnu packages python) @@ -40,14 +43,14 @@ (define-public tor (package (name "tor") - (version "0.2.9.10") + (version "0.3.0.7") (source (origin (method url-fetch) (uri (string-append "https://dist.torproject.org/tor-" version ".tar.gz")) (sha256 (base32 - "0h8kpn42mgpkzmnga143hi8nh0ai65ypxh7qhkwbb15j3wz2h4fn")))) + "00kxa83bn0axh7479fynp6r8znq5wy26kvb8ghixgjpkir2c8h4n")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-expensive-hardening" @@ -88,6 +91,19 @@ the application layer) you need to install @code{torsocks}.") (base32 "0byr9ga9w79qz4vp0m11sbmspad7fsal9wm67r4znzb7zb7cis19")))) (build-system gnu-build-system) + (inputs + `(("which" ,which) + ("libcap" ,libcap))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'build 'absolutize + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/bin/torsocks" + (("getcap=`.*`") + (string-append "getcap=" (which "getcap"))) + (("`which") + (string-append "`" (which "which")))) + #t))))) (home-page "https://www.torproject.org/") (synopsis "Use socks-friendly applications with Tor") (description diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index 9be9741202..645e9a6573 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -28,14 +28,15 @@ (define-public miniupnpc (package (name "miniupnpc") - (version "2.0.20161216") + (version "2.0.20170421") (source (origin (method url-fetch) (uri (string-append "https://miniupnp.tuxfamily.org/files/" name "-" version ".tar.gz")) + (patches (search-patches "miniupnpc-CVE-2017-8798.patch")) (sha256 - (base32 "0gpxva9jkjvqwawff5y51r6bmsmdhixl3i5bmzlqsqpwsq449q81")))) + (base32 "0n11m2wq812zms5b21h8ihw1kbyaihj9nqjiida0hskf4dmw4m13")))) (build-system gnu-build-system) (native-inputs `(("python" ,python-2))) @@ -45,8 +46,7 @@ ;; the configure phase. '(#:make-flags (list - (string-append - "SH=" (assoc-ref %build-inputs "bash") "/bin/sh") + (string-append "SH=" (assoc-ref %build-inputs "bash") "/bin/sh") (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out")) "CC=gcc" @@ -65,11 +65,12 @@ (synopsis "UPnP protocol client library") (description "The MiniUPnPc client library facilitates access to the services provided -by any Universal Plug and Play (UPnP) Internet Gateway Device (IGD) present on -the network. In UPnP terminology, MiniUPnPc is a UPnP Control Point. It is -useful whenever an application needs to listen for incoming connections while -running behind a UPnP-enabled router or firewall. Such applications include -peer-to-peer applications, active-mode FTP clients, DCC file transfers over -IRC, instant messaging, network games, and most server software.") +by any @dfn{Universal Plug and Play} (UPnP) @dfn{Internet Gateway Device} (IGD) +present on the network. In UPnP terminology, MiniUPnPc is a UPnP Control Point. + +It is useful whenever an application needs to listen for incoming connections +while running behind a UPnP-enabled router or firewall. Such applications +include peer-to-peer applications, active-mode FTP clients, DCC file transfers +over IRC, instant messaging, network games, and most server software.") (license (x11-style "file://LICENSE" "See 'LICENSE' file in the distribution")))) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 6d94170f3c..cd684c04e7 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -11,6 +11,9 @@ ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +38,7 @@ #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) + #:use-module (guix build-system haskell) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (gnu packages apr) @@ -50,6 +54,7 @@ #:use-module (gnu packages flex) #:use-module (gnu packages gettext) #:use-module (gnu packages groff) + #:use-module (gnu packages haskell) #:use-module (gnu packages linux) #:use-module (gnu packages nano) #:use-module (gnu packages ncurses) @@ -112,14 +117,14 @@ as well as the classic centralized workflow.") (define-public git (package (name "git") - (version "2.12.2") + (version "2.13.0") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "0jlccxx7l4c76h830y8lhrxr4kqksrxqlnmj3xb8sqbfa0irw6nj")))) + "0n0j36rapw31zb0sabap88ffncv8jg3nwc4miyim64ilyav2mgsb")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -132,7 +137,7 @@ as well as the classic centralized workflow.") version ".tar.xz")) (sha256 (base32 - "0n4mgw5mbrr1hm0y7xgwixf9p6gy61m6qm67ldagpxxhwq2dmlby")))))) + "1jcp5bjam0cqzc41bvd3qwzv2f35zdajr8icxb89q29b5v3gj544")))))) (inputs `(("curl" ,curl) ("expat" ,expat) @@ -165,7 +170,7 @@ as well as the classic centralized workflow.") ;; By default 'make install' creates hard links for ;; things in 'libexec/git-core', which leads to huge - ;; nars; see <http://bugs.gnu.org/21949>. + ;; nars; see <https://bugs.gnu.org/21949>. "NO_INSTALL_HARDLINKS=indeed") #:test-target "test" #:tests? #f ; FIXME: Many tests are failing @@ -303,21 +308,21 @@ as well as the classic centralized workflow.") "Git is a free distributed version control system designed to handle everything from small to very large projects with speed and efficiency.") (license license:gpl2) - (home-page "http://git-scm.com/"))) + (home-page "https://git-scm.com/"))) ;; Some dependent packages directly access internal interfaces which -;; have changed in 2.10 -(define-public git@2.9 +;; have changed in 2.12 +(define-public git@2.10 (package (inherit git) - (version "2.9.3") + (version "2.10.3") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "0qzs681a64k3shh5p0rg41l1z16fbk5sj0xga45k34hp1hsp654z")))))) + "02mb7yi49algsya3hnkcxdslwb6p1bi7c732z1g8kzq4hs838m7z")))))) (define-public libgit2 (package @@ -409,11 +414,11 @@ write native speed custom Git applications in any language with bindings.") (home-page "https://www.agwa.name/projects/git-crypt") (synopsis "Transparent encryption of files in a git repository") (description "git-crypt enables transparent encryption and decryption of -files in a git repository. Files which you choose to protect are encrypted when -committed, and decrypted when checked out. git-crypt lets you freely share a -repository containing a mix of public and private content. git-crypt gracefully +files in a git repository. Files which you choose to protect are encrypted when +committed, and decrypted when checked out. git-crypt lets you freely share a +repository containing a mix of public and private content. git-crypt gracefully degrades, so developers without the secret key can still clone and commit to a -repository with encrypted files. This lets you store your secret material (such +repository with encrypted files. This lets you store your secret material (such as keys or passwords) in the same repository as your code, without requiring you to lock down your entire repository.") (license license:gpl3+))) @@ -421,7 +426,7 @@ to lock down your entire repository.") (define-public cgit (package (name "cgit") - (version "1.0") + (version "1.1") (source (origin (method url-fetch) (uri (string-append @@ -429,7 +434,7 @@ to lock down your entire repository.") version ".tar.xz")) (sha256 (base32 - "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8")))) + "142qcgs8dwnzhymn0a7xx47p9fc2z5wrb86ah4a9iz0mpqlsz288")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; XXX: fail to build the in-source git. @@ -465,7 +470,7 @@ to lock down your entire repository.") ;; For building manpage. `(("asciidoc" ,asciidoc))) (inputs - `(("git:src" ,(package-source git@2.9)) + `(("git:src" ,(package-source git@2.10)) ("openssl" ,openssl) ("zlib" ,zlib))) (home-page "https://git.zx2c4.com/cgit/") @@ -624,7 +629,13 @@ also walk each side of a merge and test those changes individually.") ;; invokes Perl. (substitute* (find-files "." ".*") ((" perl -") - (string-append " " perl " -")))))) + (string-append " " perl " -"))) + + ;; Avoid references to the store in authorized_keys. + ;; This works because gitolite-shell is in the PATH. + (substitute* "src/triggers/post-compile/ssh-authkeys" + (("\\$glshell \\$user") + "gitolite-shell $user"))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((output (assoc-ref outputs "out")) @@ -683,14 +694,14 @@ and offers an easy and intuitive interface.") (define-public neon (package (name "neon") - (version "0.30.1") + (version "0.30.2") (source (origin (method url-fetch) (uri (string-append "http://www.webdav.org/neon/neon-" version ".tar.gz")) (sha256 (base32 - "1pawhk02x728xn396a1kcivy9gqm94srmgad6ymr9l0qvk02dih0")))) + "1jpvczcx658vimqm7c8my2q41fnmjaf1j03g7bsli6rjxk6xh2yv")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) @@ -710,22 +721,25 @@ and offers an easy and intuitive interface.") "--with-ssl=openssl"))) (home-page "http://www.webdav.org/neon/") (synopsis "HTTP and WebDAV client library") - (description "Neon is an HTTP and WebDAV client library, with a -C interface. Features: -High-level wrappers for common HTTP and WebDAV operations (GET, MOVE, -DELETE, etc.); -low-level interface to the HTTP request/response engine, allowing the use -of arbitrary HTTP methods, headers, etc.; -authentication support including Basic and Digest support, along with -GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32; -SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for -verifying server certificates, handling client certificates, and examining -certificate properties, smartcard-based client certificates are also -supported via a PKCS#11 wrapper interface; -abstract interface to parsing XML using libxml2 or expat, and wrappers for -simplifying handling XML HTTP response bodies; -WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify -property manipulation.") + (description + "Neon is an HTTP and WebDAV client library, with a C interface and the +following features: +@enumerate +@item High-level wrappers for common HTTP and WebDAV operations (GET, MOVE, + DELETE, etc.); +@item low-level interface to the HTTP request/response engine, allowing the use + of arbitrary HTTP methods, headers, etc.; +@item authentication support including Basic and Digest support, along with + GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32; +@item SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for + verifying server certificates, handling client certificates, and examining + certificate properties, smartcard-based client certificates are also + supported via a PKCS#11 wrapper interface; +@item abstract interface to parsing XML using libxml2 or expat, and wrappers for + simplifying handling XML HTTP response bodies; +@item WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify + property manipulation. +@end enumerate\n") (license license:gpl2+))) ; for documentation and tests; source under lgpl2.0+ (define-public subversion @@ -827,7 +841,7 @@ machine.") (source (origin (method url-fetch) (uri (string-append - "http://ftp.gnu.org/non-gnu/cvs/source/feature/" + "https://ftp.gnu.org/non-gnu/cvs/source/feature/" version "/cvs-" version ".tar.bz2")) (sha256 (base32 @@ -912,22 +926,25 @@ standards-compliant ChangeLog entries based on the changes that it detects.") (define-public diffstat (package (name "diffstat") - (version "1.58") + (version "1.61") (source (origin (method url-fetch) - (uri (string-append - "ftp://invisible-island.net/diffstat/diffstat-" - version ".tgz")) + (uri + (list + (string-append "ftp://invisible-island.net/diffstat/" + name "-" version ".tgz") + (string-append "http://invisible-mirror.net/archives/diffstat/" + name "-" version ".tgz"))) (sha256 (base32 - "14rpf5c05ff30f6vn6pn6pzy0k4g4is5im656ahsxff3k58i7mgs")))) + "1vjmda2zfjxg0qkaj8hfqa8g6bfwnn1ja8696rxrjgqq4w69wd95")))) (build-system gnu-build-system) (home-page "http://invisible-island.net/diffstat/") - (synopsis "Make histograms from the output of 'diff'") + (synopsis "Make histograms from the output of @command{diff}") (description - "Diffstat reads the output of 'diff' and displays a histogram of the -insertions, deletions, and modifications per-file. It is useful for reviewing -large, complex patch files.") + "Diffstat reads the output of @command{diff} and displays a histogram of +the insertions, deletions, and modifications per file. It is useful for +reviewing large, complex patch files.") (license (license:x11-style "file://COPYING")))) (define-public cssc @@ -1171,24 +1188,24 @@ modification time.") (define-public myrepos (package (name "myrepos") - (version "1.20160123") + (version "1.20170129") (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")) + (method git-fetch) + (uri (git-reference + (url "git://myrepos.branchable.com/myrepos") + (commit version))) + (file-name (string-append name "-" version "-checkout")) (sha256 - (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk")))) + (base32 "15i9bs2i25l7ibv530ghy8280kklcgm5kr6j86s7iwcqqckd0czp")))) (build-system gnu-build-system) (inputs `(("perl" ,perl))) (arguments - `(#:test-target "test" - #:phases (alist-delete 'configure %standard-phases) + '(#:test-target "test" + #:phases (modify-phases %standard-phases (delete 'configure)) #:make-flags (list (string-append "PREFIX=" %output)))) - (home-page "http://myrepos.branchable.com/") + (home-page "https://myrepos.branchable.com/") (synopsis "Multiple repository management tool") (description "Myrepos provides the @code{mr} command, which maps an operation (e.g., @@ -1287,7 +1304,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (version "0.5") (source (origin (method url-fetch) - (uri (string-append "http://dl.2f30.org/releases/" + (uri (string-append "https://dl.2f30.org/releases/" name "-" version ".tar.gz")) (sha256 (base32 @@ -1302,8 +1319,109 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (delete 'configure)))) ; No configure script (inputs `(("libgit2" ,libgit2))) - (home-page "http://2f30.org") + (home-page "https://2f30.org/") (synopsis "Static git page generator") (description "Stagit creates static pages for git repositories, the results can be served with a HTTP file server of your choice.") (license license:expat))) + +;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17 +;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000 +;; and results of search engines will show that if the protocol is http, https +;; is never mentioned. +(define-public darcs + (package + (name "darcs") + (version "2.12.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/darcs/" + "darcs-" version ".tar.gz")) + (sha256 + (base32 + "0jfwiwl5k8wspciq1kpmvh5yap4japrf97s9pvhcybxxhaj3ds28")) + (modules '((guix build utils))) + ;; Remove time-dependent code for reproducibility. + (snippet + '(begin + (substitute* "darcs/darcs.hs" + (("__DATE__") "\"1970-01-01\"") + (("__TIME__") "\"00:00:00\"")) + (substitute* "src/impossible.h" + (("__DATE__") "\"\"") + (("__TIME__") "\"\"")))))) + (build-system haskell-build-system) + (arguments + `(#:configure-flags '("-fpkgconfig" "-fcurl" "-flibiconv" "-fthreaded" + "-fnetwork-uri" "-fhttp" "--flag=executable" + "--flag=library") + #:tests? #f)) ; 20 failing shell tests out of over 400 + (inputs + `(("ghc-cmdargs" ,ghc-cmdargs) + ("ghc-split" ,ghc-split) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-findbin" ,ghc-findbin) + ("ghc-hunit" ,ghc-hunit) + ("ghc-array" ,ghc-array) + ("ghc-async" ,ghc-async) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-base16-bytestring" ,ghc-base16-bytestring) + ("ghc-binary" ,ghc-binary) + ("ghc-bytestring-builder" ,ghc-bytestring-builder) + ("ghc-cryptohash" ,ghc-cryptohash) + ("ghc-data-ordlist" ,ghc-data-ordlist) + ("ghc-directory" ,ghc-directory) + ("ghc-fgl" ,ghc-fgl) + ("ghc-system-filepath" ,ghc-system-filepath) + ("ghc-graphviz" ,ghc-graphviz) + ("ghc-hashable" ,ghc-hashable) + ("ghc-haskeline" ,ghc-haskeline) + ("ghc-html" ,ghc-html) + ("ghc-mmap" ,ghc-mmap) + ("ghc-mtl" ,ghc-mtl) + ("ghc-old-time" ,ghc-old-time) + ("ghc-parsec" ,ghc-parsec) + ("ghc-process" ,ghc-process) + ("ghc-random" ,ghc-random) + ("ghc-regex-applicative" ,ghc-regex-applicative) + ("ghc-regex-compat-tdfa" ,ghc-regex-compat-tdfa) + ("ghc-sandi" ,ghc-sandi) + ("ghc-shelly" ,ghc-shelly) + ("ghc-tar" ,ghc-tar) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-vector" ,ghc-vector) + ("ghc-zip-archive" ,ghc-zip-archive) + ("ghc-zlib" ,ghc-zlib) + ("ghc-http" ,ghc-http) + ("curl" ,curl) + ("ghc" ,ghc) + ("ncurses" ,ncurses) + ("perl" ,perl) + ("libiconv" ,libiconv) + ("ghc-network" ,ghc-network) + ("ghc-network-uri" ,ghc-network-uri))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://darcs.net") + (synopsis "Distributed Revision Control System") + (description + "Darcs is a revision control system. It is: + +@enumerate +@item Distributed: Every user has access to the full command set, removing boundaries +between server and client or committer and non-committers. +@item Interactive: Darcs is easy to learn and efficient to use because it asks you +questions in response to simple commands, giving you choices in your work flow. +You can choose to record one change in a file, while ignoring another. As you update +from upstream, you can review each patch name, even the full diff for interesting +patches. +@item Smart: Originally developed by physicist David Roundy, darcs is based on a +unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. +@end enumerate") + (license license:gpl2))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index b29f6cc9f4..b7c26a0424 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -14,6 +14,10 @@ ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2017 Feng Shu <tumashu@163.com> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,7 +37,6 @@ (define-module (gnu packages video) #:use-module (ice-9 match) #:use-module (srfi srfi-1) - #:use-module (srfi srfi-26) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) #:use-module (guix packages) @@ -73,6 +76,7 @@ #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages m4) @@ -94,6 +98,7 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages webkit) + #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) @@ -268,7 +273,7 @@ H.264 (MPEG-4 AVC) video streams.") (define-public x265 (package (name "x265") - (version "2.3") + (version "2.4") (source (origin (method url-fetch) @@ -276,7 +281,7 @@ H.264 (MPEG-4 AVC) video streams.") "x265_" version ".tar.gz")) (sha256 (base32 - "07z4ydxg0lk6j43h0wlh2xddb91cy4y4mny2ln71d4278b1hllj7")) + "0afp0xlk0fb4q6j4sh3hyvjnjccdp61sn21zg3fyqvwgswcafalw")) (modules '((guix build utils))) (snippet '(delete-file-recursively "source/compat/getopt")))) @@ -364,13 +369,13 @@ canvas operations.") (source (origin (method url-fetch) (uri (string-append - "http://download.videolan.org/pub/videolan/libdca/" + "https://download.videolan.org/pub/videolan/libdca/" version "/libdca-" version ".tar.bz2")) (sha256 (base32 "0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v")))) (build-system gnu-build-system) - (home-page "http://www.videolan.org/developers/libdca.html") + (home-page "https://www.videolan.org/developers/libdca.html") (synopsis "DTS Coherent Acoustics decoder") (description "libdca is a library for decoding DTS Coherent Acoustics streams.") @@ -403,7 +408,7 @@ SMPTE 314M.") (define-public libva (package (name "libva") - (version "1.7.3") + (version "1.8.1") (source (origin (method url-fetch) @@ -411,7 +416,7 @@ SMPTE 314M.") "https://www.freedesktop.org/software/vaapi/releases/libva/libva-" version".tar.bz2")) (sha256 - (base32 "1ndrf136rlw03xag7j1xpmf9015d1h0dpnv6v587jnh6k2a17g12")))) + (base32 "0wswfznj93jpnxhc3jwdk5j3pmyki0rs6k9vk4vnzds0dddximf1")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -453,14 +458,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (define-public ffmpeg (package (name "ffmpeg") - (version "3.2.4") + (version "3.3.1") (source (origin (method url-fetch) (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" version ".tar.xz")) (sha256 (base32 - "0ymg1mkg1n0770gmjfqp79p5ijxq04smfrsrrxc8pjc0y0agyf3f")))) + "0bwgm6z6k3khb91qh9xv15inykkfchpkm0lcdckkxhkacpyaf0mp")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) @@ -573,7 +578,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") "--enable-libx265" "--enable-openal" "--enable-opengl" - "--enable-x11grab" "--enable-runtime-cpudetect" @@ -642,7 +646,7 @@ audio/video codec library.") (define-public vlc (package (name "vlc") - (version "2.2.4") + (version "2.2.5.1") (source (origin (method url-fetch) (uri (string-append @@ -650,14 +654,7 @@ audio/video codec library.") version "/vlc-" version ".tar.xz")) (sha256 (base32 - "1gjkrwlg8ab3skzl67cxb9qzg4187ifckd1z9kpy11q058fyjchn")) - (modules '((guix build utils))) - (snippet - ;; There are two occurrences where __DATE__ and __TIME__ are - ;; used to capture the build time and show it to the user. - '(substitute* (find-files "." "help\\.c(pp)?$") - (("__DATE__") "\"2016\"") - (("__TIME__") "\"00:00\""))))) + "1k51vm6piqlrnld7sxyg0s4kdkd3lan97lmy3v5wdh3qyll8m2xj")))) (build-system gnu-build-system) (native-inputs `(("git" ,git) ; needed for a test @@ -846,7 +843,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (define-public mpv (package (name "mpv") - (version "0.24.0") + (version "0.25.0") (source (origin (method url-fetch) (uri (string-append @@ -854,7 +851,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") ".tar.gz")) (sha256 (base32 - "059zblcj98fhrns1rwa66mf4km68czpam4nnk8q9qny31bx58654")) + "1khb7c4fdj1aak46lwyb3lq14w5jpxzws0zp6bdc87ljsvx3yhh7")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs @@ -904,6 +901,9 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") (copy-file (assoc-ref inputs "waf") "waf") (setenv "CC" "gcc")))) #:configure-flags (list "--enable-libmpv-shared" + "--enable-cdda" + "--enable-dvdread" + "--enable-dvdnav" "--enable-zsh-comp" "--disable-build-date") ;; No check function defined. @@ -984,7 +984,7 @@ access to mpv's powerful playback capabilities.") (define-public youtube-dl (package (name "youtube-dl") - (version "2017.03.26") + (version "2017.05.07") (source (origin (method url-fetch) (uri (string-append "https://yt-dl.org/downloads/" @@ -992,7 +992,7 @@ access to mpv's powerful playback capabilities.") version ".tar.gz")) (sha256 (base32 - "00ysv18p4rqg7sswbpjpmmvaih6nm135bpllqdlj4ns8kjqmh59j")))) + "1q3b9xkbk1lmy1wxm1jcnmaj70sdksqbc8zsqxz6b6z4nmv8qc25")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion @@ -1023,6 +1023,106 @@ YouTube.com and a few more sites.") (home-page "https://yt-dl.org") (license license:public-domain))) +(define-public youtube-dl-gui + (package + (name "youtube-dl-gui") + (version "0.3.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Youtube-DLG" version)) + (sha256 + (base32 + "0napxwzgls5ik1bxbp99vly32l23xpc4ng5kr24hfhf21ypjyadb")))) + (build-system python-build-system) + (arguments + ;; In Guix, wxpython has not yet been packaged for Python 3. + `(#:python ,python-2 + ;; This package has no tests. + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'patch-source + (lambda* (#:key inputs #:allow-other-keys) + ;; The youtube-dl-gui program lets you configure options. Some of + ;; them are problematic, so we change their defaults. + (substitute* "youtube_dl_gui/optionsmanager.py" + ;; When this is true, the builder process will try (and fail) to + ;; write logs to the builder user's home directory. + (("'enable_log': True") "'enable_log': False") + ;; This determines which youtube-dl program youtube-dl-gui will + ;; run. If we don't set this, then youtube-dl-gui might download + ;; an arbitrary copy from the Internet into the user's home + ;; directory and run it, so let's make sure youtube-dl-gui uses + ;; the youtube-dl from the inputs by default. + (("'youtubedl_path': self.config_path") + (string-append "'youtubedl_path': '" + (assoc-ref inputs "youtube-dl") + "/bin'")) + ;; When this is True, when youtube-dl-gui is finished downloading + ;; a file, it will try (and possibly fail) to open the directory + ;; containing the downloaded file. This can fail because it + ;; assumes that xdg-open is in PATH. Unfortunately, simply + ;; adding xdg-utils to the propagated inputs is not enough to + ;; make this work, so for now we set the default to False. + (("'open_dl_dir': True") "'open_dl_dir': False")) + ;; The youtube-dl program from the inputs is actually a wrapper + ;; script written in bash, so attempting to invoke it as a python + ;; script will fail. + (substitute* "youtube_dl_gui/downloaders.py" + (("cmd = \\['python', self\\.youtubedl_path\\]") + "cmd = [self.youtubedl_path]")) + ;; Use relative paths for installing data files so youtube-dl-gui + ;; installs the files relative to its prefix in the store, rather + ;; than relative to /. Also, instead of installing data files into + ;; $prefix/usr/share, install them into $prefix/share for + ;; consistency (see: (standards) Directory Variables). + (substitute* "setup.py" + (("= '/usr/share") "= 'share")) + ;; Update get_locale_file() so it finds the installed localization + ;; files. + (substitute* "youtube_dl_gui/utils.py" + (("os\\.path\\.join\\('/usr', 'share'") + (string-append "os.path.join('" + (assoc-ref %outputs "out") + "', 'share'")))))))) + (inputs + `(("python2-wxpython" ,python2-wxpython) + ("youtube-dl" ,youtube-dl))) + (home-page "https://github.com/MrS0m30n3/youtube-dl-gui") + (synopsis + "GUI (Graphical User Interface) for @command{youtube-dl}") + (description + "Youtube-dlG is a GUI (Graphical User Interface) for +@command{youtube-dl}. You can use it to download videos from YouTube and any +other site that youtube-dl supports.") + (license license:unlicense))) + +(define-public you-get + (package + (name "you-get") + (version "0.4.715") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/soimort/you-get/releases/download/v" + version "/you-get-" version ".tar.gz")) + (sha256 + (base32 + "043122hfh56fbbszp1kwd1f65asgyn60j1ijday93hf2dkhvbrnh")))) + (build-system python-build-system) + (arguments + ;; no tests + '(#:tests? #f)) + (inputs + `(("ffmpeg" ,ffmpeg))) + (synopsis "Download videos, audios, or images from Web sites") + (description + "You-Get is a command-line utility to download media contents (videos, +audio, images) from the Web. It can use either mpv or vlc for playback.") + (home-page "https://you-get.org/") + (license license:expat))) + (define-public libbluray (package (name "libbluray") @@ -1071,7 +1171,7 @@ players, like VLC or MPlayer.") (version "5.0.3") (source (origin (method url-fetch) - (uri (string-append "http://download.videolan.org/videolan/" + (uri (string-append "https://download.videolan.org/videolan/" name "/" version "/" name "-" version ".tar.bz2")) (sha256 @@ -1088,13 +1188,40 @@ authentication and descrambling (if an external libdvdcss library is installed).") (license license:gpl2+))) +(define-public dvdauthor + (package + (name "dvdauthor") + (version "0.7.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/dvdauthor/dvdauthor-" + version ".tar.gz")) + (sha256 + (base32 + "1drfc47hikfzc9d7hjk34rw10iqw01d2vwmn91pv73ppx4nsj81h")))) + (build-system gnu-build-system) + (inputs + `(("libdvdread" ,libdvdread) + ("libpng" ,libpng) + ("imagemagick" ,imagemagick) + ("libxml2" ,libxml2) + ("freetype" ,freetype))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Generates a DVD-Video movie from a MPEG-2 stream") + (description "@command{dvdauthor} will generate a DVD-Video movie from a +MPEG-2 stream containing VOB packets.") + (home-page "http://dvdauthor.sourceforge.net") + (license license:gpl3+))) + (define-public libdvdnav (package (name "libdvdnav") (version "5.0.3") (source (origin (method url-fetch) - (uri (string-append "http://download.videolan.org/videolan/" + (uri (string-append "https://download.videolan.org/videolan/" name "/" version "/" name "-" version ".tar.bz2")) (sha256 @@ -1128,7 +1255,7 @@ encapsulated.") (method url-fetch) (uri (string-append - "http://download.videolan.org/videolan/libdvdnav/libdvdnav-" + "https://download.videolan.org/videolan/libdvdnav/libdvdnav-" version ".tar.xz")) (sha256 (base32 @@ -1152,14 +1279,14 @@ encapsulated.") (version "1.4.0") (source (origin (method url-fetch) - (uri (string-append "http://download.videolan.org/pub/" + (uri (string-append "https://download.videolan.org/pub/" name "/" version "/" name "-" version ".tar.bz2")) (sha256 (base32 "0nl45ifc4xcb196snv9d6hinfw614cqpzcqp92dg43c0hickg290")))) (build-system gnu-build-system) - (home-page "http://www.videolan.org/developers/libdvdcss.html") + (home-page "https://www.videolan.org/developers/libdvdcss.html") (synopsis "Library for accessing DVDs as block devices") (description "libdvdcss is a simple library designed for accessing DVDs like a block @@ -1465,14 +1592,14 @@ tools, XML authoring components, and an extensible plug-in based API.") (define-public v4l-utils (package (name "v4l-utils") - (version "1.10.1") + (version "1.12.5") (source (origin (method url-fetch) (uri (string-append "https://linuxtv.org/downloads/v4l-utils" "/v4l-utils-" version ".tar.bz2")) (sha256 (base32 - "1h1nhg5cmmzlbipak526nk4bm6d0yb217mll75f3rpg7kz1cqiv1")))) + "03g2b4rivrilimcp57mwrlsa3qvrxmk4sza08mygwmqbvcnic606")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -1481,7 +1608,8 @@ tools, XML authoring components, and an extensible plug-in based API.") "/lib/udev") "CXXFLAGS=-std=gnu++11"))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("perl" ,perl) + ("pkg-config" ,pkg-config))) (inputs `(("alsa-lib" ,alsa-lib) ("glu" ,glu) @@ -1499,7 +1627,7 @@ be used for realtime video capture via Linux-specific APIs.") (define-public obs (package (name "obs") - (version "18.0.1") + (version "18.0.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/jp9000/obs-studio" @@ -1507,23 +1635,10 @@ be used for realtime video capture via Linux-specific APIs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "043f8mfdh4ll0hpivpyg3iniirckwsgri0gzamyrba1yhf2c2ibr")))) + "02pbiyvf5x0zh448h5rpmyn33qnsqk694xxlyns83mdi74savyqw")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; no tests - ,@(if (any (cute string-prefix? <> (or (%current-target-system) - (%current-system))) - '("arm" "mips")) - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-architecture-specific-instructions - ;; non-Intel platforms fail to build with the architecture - ;; specific compiler flags included by default. - (lambda _ - (substitute* "libobs/CMakeLists.txt" - (("if\\(NOT MSVC\\)") "if(MSVC)")) - #t)))) - '()))) + `(#:tests? #f)) ; no tests (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -1550,6 +1665,7 @@ video recording and live streaming. OBS supports capturing audio and video from many input sources such as webcams, X11 (for screencasting), PulseAudio, and JACK.") (home-page "https://obsproject.com") + (supported-systems '("x86_64-linux" "i686-linux")) (license license:gpl2+))) (define-public libvdpau @@ -1642,6 +1758,7 @@ making @dfn{screencasts}.") (uri (svn-reference (url "svn://svn.icculus.org/smpeg/trunk/") (revision 401))) ; last revision before smpeg2 (for SDL 2.0) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn")))) @@ -1683,7 +1800,7 @@ and MPEG system streams.") (inputs `(("libgcrypt" ,libgcrypt))) (build-system gnu-build-system) - (home-page "http://www.videolan.org/developers/libbdplus.html") + (home-page "https://www.videolan.org/developers/libbdplus.html") (synopsis "Library for decrypting certain Blu-Ray discs") (description "libbdplus is a library which implements the BD+ System specifications.") @@ -1692,21 +1809,21 @@ specifications.") (define-public libaacs (package (name "libaacs") - (version "0.8.1") + (version "0.9.0") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.videolan.org/pub/videolan/libaacs/" version "/" name "-" version ".tar.bz2")) (sha256 - (base32 "1s5v075hnbs57995r6lljm79wgrip3gnyf55a0y7bja75jh49hwm")))) + (base32 "1kms92i0c7i1yl659kqjf19lm8172pnpik5lsxp19xphr74vvq27")))) (inputs `(("libgcrypt" ,libgcrypt))) (native-inputs `(("bison" ,bison) ("flex" ,flex))) (build-system gnu-build-system) - (home-page "http://www.videolan.org/developers/libaacs.html") + (home-page "https://www.videolan.org/developers/libaacs.html") (synopsis "Library for decrypting certain Blu-Ray discs") (description "libaacs is a library which implements the Advanced Access Content System specification.") diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 3dbd6d952b..27c0b0da9c 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2016, 2017 ng0 <ng0@no-reply.pragmatique.xyz> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; @@ -60,7 +60,7 @@ (define-public vim (package (name "vim") - (version "8.0.0494") + (version "8.0.0600") (source (origin (method url-fetch) (uri (string-append "https://github.com/vim/vim/archive/v" @@ -68,7 +68,7 @@ (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "08kzimdyla35ndrbn68jf8pmzm7nd2qrydnvk57j089m6ajic62r")))) + "1ifaj0lfzqn06snkcd83l58m9r6lg7lk3wspx71k5ycvypyfi67s")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -138,6 +138,10 @@ configuration files.") ;; https://github.com/vim/vim/issues/1460 (substitute* "src/testdir/test_cmdline.vim" (("call assert_equal\\(.+getcmd.+\\(\\)\\)") "")) + ;; FIXME: This test broke after GCC-5 core-updates merge. + ;; "Test_system_exmode line 7: Expected '0' but got '/'" + (substitute* "src/testdir/test_system.vim" + (("call assert_equal\\('0', a\\[0\\]\\)") "")) #t)) (add-before 'check 'start-xserver (lambda* (#:key inputs #:allow-other-keys) @@ -512,10 +516,82 @@ and powerline symbols, etc.") (home-page "https://github.com/vim-airline/vim-airline-themes") (license license:expat)))) +(define-public vim-syntastic + (package + (name "vim-syntastic") + (version "3.8.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/vim-syntastic/syntastic/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0wsnd9bsp5x6yiw96h1bnd1vyxdkh130hb82kyyxydgsplx92ima")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (vimfiles (string-append out "/share/vim/vimfiles")) + (doc (string-append vimfiles "/doc")) + (plugin (string-append vimfiles "/plugin")) + (autoload (string-append vimfiles "/autoload")) + (syntax-checkers (string-append vimfiles "/syntax_checkers"))) + (copy-recursively "doc" doc) + (copy-recursively "autoload" autoload) + (copy-recursively "plugin" plugin) + (copy-recursively "syntax_checkers" syntax-checkers) + #t)))))) + (synopsis "Syntax checking plugin for Vim") + (description + "Vim-syntastic is a syntax checking plugin for Vim. It runs files through +external syntax checkers and displays any resulting errors to the user. This +can be done on demand, or automatically as files are saved. If syntax errors +are detected, the user is notified.") + (home-page "https://github.com/vim-syntastic/syntastic") + (license license:wtfpl2))) + +(define-public neovim-syntastic + (package + (inherit vim-syntastic) + (name "neovim-syntastic") + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (vimfiles (string-append out "/share/nvim/site")) + (doc (string-append vimfiles "/doc")) + (plugin (string-append vimfiles "/plugin")) + (autoload (string-append vimfiles "/autoload")) + (syntax-checkers (string-append vimfiles "/syntax_checkers"))) + (copy-recursively "doc" doc) + (copy-recursively "autoload" autoload) + (copy-recursively "plugin" plugin) + (copy-recursively "syntax_checkers" syntax-checkers) + #t)))))) + (synopsis "Syntax checking plugin for Neovim") + (description + "Vim-syntastic is a syntax checking plugin for Neovim. It runs files through +external syntax checkers and displays any resulting errors to the user. This +can be done on demand, or automatically as files are saved. If syntax errors +are detected, the user is notified."))) + (define-public neovim (package (name "neovim") - (version "0.1.7") + (version "0.2.0") (source (origin (method url-fetch) @@ -524,7 +600,7 @@ and powerline symbols, etc.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0zjbpc4rhv5bcr353xqnbrc36zjvn7qvh8xf6s7n1bdi3788by6q")))) + "1db27zm6cldm1aw0570vii1bxc16a34x8lissl1h9rizsbwn7qkj")))) (build-system cmake-build-system) (arguments `(#:modules ((srfi srfi-26) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index efb46f73d4..98d8bd115d 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -153,7 +153,7 @@ and probably others.") (define-public openvpn (package (name "openvpn") - (version "2.4.0") + (version "2.4.2") (source (origin (method url-fetch) (uri (string-append @@ -161,7 +161,7 @@ and probably others.") version ".tar.xz")) (sha256 (base32 - "0zpqnbhjaifdalyxwmvk5kcyd7cpxbcigbn7967nbsyvl54vl8vg")))) + "1ydzy5i7yaifz0v1ivrckksvm0nkkx5sia3g5y5b1xkx9cw4yp6z")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-iproute2=yes"))) diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm new file mode 100644 index 0000000000..a10b1367ef --- /dev/null +++ b/gnu/packages/web-browsers.scm @@ -0,0 +1,245 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 John Darrington <jmd@gnu.org> +;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages web-browsers) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages compression) + #:use-module (gnu packages documentation) + #:use-module (gnu packages fltk) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages libevent) + #:use-module (gnu packages libidn) + #:use-module (gnu packages ncurses) + #: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 image) + #:use-module (gnu packages tls) + #:use-module (gnu packages xorg) + #:use-module (gnu packages zip) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python)) + +(define-public dillo + (package + (name "dillo") + (version "3.0.5") + (source (origin + (method url-fetch) + (uri (string-append "http://www.dillo.org/download/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv")))) + (build-system gnu-build-system) + (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6"))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("fltk" ,fltk) + ("fontconfig" ,fontconfig) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libxcursor" ,libxcursor) + ("libxft" ,libxft) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("openssl" ,openssl) + ("perl" ,perl) + ("zlib" ,zlib))) + (synopsis "Very small and fast graphical web browser") + (description "Dillo is a minimalistic web browser particularly intended for +older or slower computers and embedded systems.") + (home-page "http://www.dillo.org") + (license license:gpl3+))) + +(define-public links + (package + (name "links") + (version "2.14") + (source (origin + (method url-fetch) + (uri (string-append "http://links.twibright.com/download/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1f24y83wa1vzzjq5kp857gjqdpnmf8pb29yw7fam0m8wxxw0c3gp")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (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 understands. + (let ((out (assoc-ref outputs "out"))) + ;; 'configure' doesn't understand '--host'. + ,@(if (%current-target-system) + `((setenv "CHOST" ,(%current-target-system))) + '()) + (setenv "CONFIG_SHELL" (which "bash")) + (zero? + (system* "./configure" + (string-append "--prefix=" out) + "--enable-graphics")))))))) + (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: + ;; "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+))) + +(define-public lynx + (package + (name "lynx") + (version "2.8.9dev.11") + (source (origin + (method url-fetch) + (uri (string-append + "http://invisible-mirror.net/archives/lynx/tarballs" + "/lynx" version ".tar.bz2")) + (sha256 + (base32 + "1cqm1i7d209brkrpzaqqf2x951ra3l67dw8x9yg10vz7rpr9441a")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config) + ("perl" ,perl))) + (inputs `(("ncurses" ,ncurses) + ("libidn" ,libidn) + ("gnutls" ,gnutls) + ("libgcrypt" ,libgcrypt) + ("unzip" ,unzip) + ("zlib" ,zlib) + ("gzip" ,gzip) + ("bzip2" ,bzip2))) + (arguments + `(#:configure-flags + (let ((gnutls (assoc-ref %build-inputs "gnutls"))) + `("--with-pkg-config" + "--with-screen=ncurses" + "--with-zlib" + "--with-bzlib" + ,(string-append "--with-gnutls=" gnutls) + ;; "--with-socks5" ; XXX TODO + "--enable-widec" + "--enable-ascii-ctypes" + "--enable-local-docs" + "--enable-htmlized-cfg" + "--enable-gzip-help" + "--enable-nls" + "--enable-ipv6")) + #:tests? #f ; no check target + #:phases (alist-replace + 'install + (lambda* (#:key (make-flags '()) #:allow-other-keys) + (zero? (apply system* "make" "install-full" make-flags))) + %standard-phases))) + (synopsis "Text Web Browser") + (description + "Lynx is a fully-featured World Wide Web (WWW) client for users running +cursor-addressable, character-cell display devices. It will display Hypertext +Markup Language (HTML) documents containing links to files on the local +system, as well as files on remote systems running http, gopher, ftp, wais, +nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on +the WWW, or to build information systems intended primarily for local +access.") + (home-page "http://lynx.isc.org/") + (license license:gpl2))) + +(define-public qutebrowser + (package + (name "qutebrowser") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/The-Compiler/" + "qutebrowser/releases/download/v" version "/" + "qutebrowser-" version ".tar.gz")) + (sha256 + (base32 + "05qryn56w2pbqhir4pl99idx7apx2xqw9f8wmbrhj59b1xgr3x2p")))) + (build-system python-build-system) + (native-inputs + `(("asciidoc" ,asciidoc))) + (inputs + `(("python-colorama" ,python-colorama) + ("python-cssutils" ,python-cssutils) + ("python-jinja2" ,python-jinja2) + ("python-markupsafe" ,python-markupsafe) + ("python-pygments" ,python-pygments) + ("python-pypeg2" ,python-pypeg2) + ("python-pyyaml" ,python-pyyaml) + ("python-pyqt" ,python-pyqt) + ("qtwebkit" ,qtwebkit))) + (arguments + `(#:tests? #f ;no tests + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-more + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (app (string-append out "/share/applications")) + (hicolor (string-append out "/share/icons/hicolor"))) + (system* "a2x" "-f" "manpage" "doc/qutebrowser.1.asciidoc") + (install-file "doc/qutebrowser.1" + (string-append out "/share/man/man1")) + + (for-each + (lambda (i) + (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i)) + (dest (format #f "~a/~dx~d/apps/qutebrowser.png" + hicolor i i))) + (mkdir-p (dirname dest)) + (copy-file src dest))) + '(16 24 32 48 64 128 256 512)) + (install-file "icons/qutebrowser.svg" + (string-append hicolor "/scalable/apps")) + + (substitute* "qutebrowser.desktop" + (("Exec=qutebrowser") + (string-append "Exec=" out "/bin/qutebrowser"))) + (install-file "qutebrowser.desktop" app) + #t)))))) + (home-page "https://qutebrowser.org/") + (synopsis "Minimal, keyboard-focused, vim-like web browser") + (description "qutebrowser is a keyboard-focused browser with a minimal +GUI. It is based on PyQt5 and QtWebKit.") + (license license:gpl3+))) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 24141b5ecf..bcc20bfdde 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de> ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> @@ -14,10 +14,11 @@ ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> -;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -79,7 +80,6 @@ #:use-module (gnu packages python) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages qt) #:use-module (gnu packages valgrind) #:use-module (gnu packages xml) #:use-module (gnu packages curl) @@ -130,14 +130,14 @@ and its related documentation.") (define-public nginx (package (name "nginx") - (version "1.11.11") + (version "1.12.0") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "0qkj4xqv2f986dwqwlkidmr6jpxhv3ds67pxd1pd4a4f4j0c8yjs")))) + "0c2vg6530qplwk8rhldww5r3cwcbw1avka53qg9sh85nzlk2w8ml")))) (build-system gnu-build-system) (inputs `(("pcre" ,pcre) ("openssl" ,openssl) @@ -300,7 +300,7 @@ servers that may need it).") (description "Starman is a PSGI perl web server that has unique features such as high performance, preforking, signal support, superdaemon awareness, and UNIX socket support.") - (license (package-license perl)))) + (license l:perl-license))) (define-public jansson (package @@ -808,17 +808,14 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.") (define-public serf (package (name "serf") - (version "1.3.8") + (version "1.3.9") (source (origin (method url-fetch) (uri (string-append "https://archive.apache.org/dist/serf/serf-" version ".tar.bz2")) (sha256 - (base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70")) - (patches (search-patches "serf-comment-style-fix.patch" - "serf-deflate-buckets-test-fix.patch")) - (patch-flags '("-p0")))) + (base32 "1k47gbgpp52049andr28y28nbwh9m36bbb0g8p0aka3pqlhjv72l")))) (build-system gnu-build-system) (native-inputs `(("scons" ,scons) @@ -864,6 +861,33 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.") ;;(string-append "GSSAPI=" gss) (string-append "ZLIB=" zlib) (string-append "PREFIX=" out)))))) + (add-before 'check 'disable-broken-tests + (lambda _ + ;; These tests rely on SSL certificates that expired 2017-04-18. + ;; While there are newer certs available upstream, we don't want + ;; this package to suddenly "expire" some time in the future. + ;; https://bugs.gnu.org/26671 + (let ((broken-tests + '("test_ssl_trust_rootca" + "test_ssl_certificate_chain_with_anchor" + "test_ssl_certificate_chain_all_from_server" + "test_ssl_no_servercert_callback_allok" + "test_ssl_large_response" + "test_ssl_large_request" + "test_ssl_client_certificate" + "test_ssl_future_server_cert" + "test_setup_ssltunnel" + "test_ssltunnel_basic_auth" + "test_ssltunnel_basic_auth_server_has_keepalive_off" + "test_ssltunnel_basic_auth_proxy_has_keepalive_off" + "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp" + "test_ssltunnel_digest_auth"))) + (for-each + (lambda (test) + (substitute* "test/test_context.c" + (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) ""))) + broken-tests) + #t))) (replace 'check (lambda _ (zero? (system* "scons" "check")))) (replace 'install (lambda _ (zero? (system* "scons" "install"))))))) (home-page "https://serf.apache.org/") @@ -957,7 +981,7 @@ language known as SASS.") (synopsis "Compile a log format string to perl-code") (description "This module provides methods to compile a log format string to perl-code, for faster generation of access_log lines.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-authen-sasl (package @@ -978,7 +1002,7 @@ to perl-code, for faster generation of access_log lines.") (home-page "http://search.cpan.org/dist/Authen-SASL") (synopsis "SASL authentication framework") (description "Authen::SASL provides an SASL authentication framework.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-action-renderview (package @@ -1004,7 +1028,7 @@ to perl-code, for faster generation of access_log lines.") (synopsis "Sensible default Catalyst action") (description "This Catalyst action implements a sensible default end action, which will forward to the first available view.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-action-rest (package @@ -1039,7 +1063,7 @@ REST requests. It takes a normal Catalyst action, and changes the dispatch to append an underscore and method name. First it will try dispatching to an action with the generated name, and failing that it will try to dispatch to a regular method.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-authentication-store-dbix-class (package @@ -1074,7 +1098,7 @@ regular method.") (description "The Catalyst::Authentication::Store::DBIx::Class class provides access to authentication information stored in a database via DBIx::Class.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-component-instancepercontext (package @@ -1098,7 +1122,7 @@ DBIx::Class.") (synopsis "Create only one instance of Moose component per context") (description "Catalyst::Component::InstancePerContext returns a new instance of a component on each request.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-devel (package @@ -1140,7 +1164,7 @@ to run them. Catalyst-Devel includes the Catalyst::Helper system, which autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install extension for Catalyst; and requirements for a variety of development-related modules.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-dispatchtype-regex (package @@ -1170,7 +1194,7 @@ core. It is recommend that you use Chained methods or other techniques instead. As part of the refactoring, the dispatch priority of Regex vs Regexp vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by when the dispatch type is first seen in your application.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-model-dbic-schema (package @@ -1215,7 +1239,7 @@ when the dispatch type is first seen in your application.") (synopsis "DBIx::Class::Schema Model Class") (description "This is a Catalyst Model for DBIx::Class::Schema-based Models.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-accesslog (package @@ -1240,7 +1264,7 @@ Models.") (description "This Catalyst plugin enables you to create \"access logs\" from within a Catalyst application instead of requiring a webserver to do it for you. It will work even with Catalyst debug logging turned off.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-authentication (package @@ -1274,7 +1298,7 @@ for you. It will work even with Catalyst debug logging turned off.") Catalyst apps. It is the basis for both authentication (checking the user is who they claim to be), and authorization (allowing the user to do what the system authorises them to do).") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-authorization-roles (package @@ -1303,7 +1327,7 @@ system authorises them to do).") (synopsis "Role-based authorization for Catalyst") (description "Catalyst::Plugin::Authorization::Roles provides role-based authorization for Catalyst based on Catalyst::Plugin::Authentication.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-captcha (package @@ -1327,7 +1351,7 @@ authorization for Catalyst based on Catalyst::Plugin::Authentication.") (synopsis "Captchas for Catalyst") (description "This plugin creates and validates Captcha images for Catalyst.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-configloader (package @@ -1355,7 +1379,7 @@ Catalyst.") (description "This module will attempt to load find and load configuration files of various types. Currently it supports YAML, JSON, XML, INI and Perl formats.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-session (package @@ -1386,7 +1410,7 @@ formats.") (synopsis "Catalyst generic session plugin") (description "This plugin links the two pieces required for session management in web applications together: the state, and the store.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-session-state-cookie (package @@ -1415,7 +1439,7 @@ management in web applications together: the state, and the store.") ID needs to be stored on the client, and the session data needs to be stored on the server. This plugin stores the session ID on the client using the cookie mechanism.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-session-store-fastmmap (package @@ -1445,7 +1469,7 @@ cookie mechanism.") (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session storage plugin for Catalyst that uses an mmap'ed file to act as a shared memory interprocess cache. It is based on Cache::FastMmap.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-stacktrace (package @@ -1470,7 +1494,7 @@ memory interprocess cache. It is based on Cache::FastMmap.") including a stack trace of your application up to the point where the error occurred. Each stack frame is displayed along with the package name, line number, file name, and code context surrounding the line number.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-plugin-static-simple (package @@ -1500,7 +1524,7 @@ looking at the file extension in the URL (such as .css or .png or .js). The plugin uses the lightweight MIME::Types module to map file extensions to IANA-registered MIME types, and will serve your static files with the correct MIME type directly to the browser, without being processed through Catalyst.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-runtime (package @@ -1565,7 +1589,7 @@ MIME type directly to the browser, without being processed through Catalyst.") It is designed to make it easy to manage the various tasks you need to do to run an application on the web, either by doing them itself, or by letting you \"plug in\" existing Perl modules that do what you need.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-traitfor-request-proxybase (package @@ -1596,7 +1620,7 @@ run an application on the web, either by doing them itself, or by letting you flexibility in your application's deployment configurations when deployed behind a proxy. Using this module, the request base ($c->req->base) is replaced with the contents of the X-Request-Base header.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-view-download (package @@ -1622,7 +1646,7 @@ replaced with the contents of the X-Request-Base header.") (description "The purpose of this module is to provide a method for downloading data into many supportable formats. For example, downloading a table based report in a variety of formats (CSV, HTML, etc.).") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-view-json (package @@ -1647,7 +1671,7 @@ table based report in a variety of formats (CSV, HTML, etc.).") (synopsis "Catalyst JSON view") (description "Catalyst::View::JSON is a Catalyst View handler that returns stash data in JSON format.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalyst-view-tt (package @@ -1674,7 +1698,7 @@ stash data in JSON format.") (synopsis "Template View Class") (description "This module is a Catalyst view class for the Template Toolkit.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalystx-component-traits (package @@ -1707,7 +1731,7 @@ Catalyst component base class that reads the optional \"traits\" parameter from app and component config and instantiates the component subclass with those traits using \"new_with_traits\" in MooseX::Traits from MooseX::Traits::Pluggable.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalystx-roleapplicator (package @@ -1730,7 +1754,7 @@ MooseX::Traits::Pluggable.") (synopsis "Apply roles to Catalyst classes") (description "CatalystX::RoleApplicator applies roles to Catalyst application classes.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-catalystx-script-server-starman (package @@ -1757,7 +1781,7 @@ application classes.") (synopsis "Catalyst development server with Starman") (description "This module provides a Catalyst extension to replace the development server with Starman.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-cgi (package @@ -1785,7 +1809,7 @@ processing and preparing HTTP requests and responses. Major features include processing form submissions, file uploads, reading and writing cookies, query string generation and manipulation, and processing and preparing HTTP headers.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-cgi-simple (package @@ -1808,7 +1832,7 @@ headers.") (description "CGI::Simple provides a relatively lightweight drop in replacement for CGI.pm. It shares an identical OO interface to CGI.pm for parameter parsing, file upload, cookie handling and header generation.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-cgi-struct (package @@ -1853,7 +1877,7 @@ inputs, in a manner reminiscent of how PHP does.") (synopsis "Date conversion routines") (description "This module provides functions that deal with the date formats used by the HTTP protocol.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-digest-md5-file (package @@ -1874,7 +1898,7 @@ formats used by the HTTP protocol.") (synopsis "MD5 sums for files and urls") (description "Digest::MD5::File is a Perl extension for getting MD5 sums for files and urls.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-encode-locale (package @@ -1889,7 +1913,7 @@ for files and urls.") (base32 "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl locale encoding determination") (description "The POSIX locale system is used to specify both the language @@ -1927,7 +1951,7 @@ with Encode::decode(locale => $string).") (description "@code{Feed::Find} implements feed auto-discovery for finding syndication feeds, given a URI. It will discover the following feed formats: RSS 0.91, RSS 1.0, RSS 2.0, Atom.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-file-listing (package @@ -1944,7 +1968,7 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom.") (build-system perl-build-system) (propagated-inputs `(("perl-http-date" ,perl-http-date))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl directory listing parser") (description "The File::Listing module exports a single function called parse_dir(), @@ -2006,7 +2030,7 @@ Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.") (synopsis "Perl extension providing access to the GSSAPIv2 library") (description "This is a Perl extension for using GSSAPI C bindings as described in RFC 2744.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-html-element-extended (package @@ -2028,7 +2052,7 @@ described in RFC 2744.") (description "HTML::Element::Extended is a Perl extension for manipulating a table composed of HTML::Element style components.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-html-form (package @@ -2053,7 +2077,7 @@ composed of HTML::Element style components.") (synopsis "Perl class representing an HTML form element") (description "Objects of the HTML::Form class represents a single HTML <form> ... </form> instance.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-html-lint (package @@ -2099,7 +2123,7 @@ syntactic legitmacy.") (description "HTML::TableExtract is a Perl module for extracting the content contained in tables within an HTML document, either as text or encoded element trees.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-html-tree (package @@ -2125,7 +2149,7 @@ in tables within an HTML document, either as text or encoded element trees.") (synopsis "Work with HTML in a DOM-like tree structure") (description "This distribution contains a suite of modules for representing, creating, and extracting information from HTML syntax trees.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-html-parser (package @@ -2143,7 +2167,7 @@ representing, creating, and extracting information from HTML syntax trees.") (inputs `(("perl-html-tagset" ,perl-html-tagset) ("perl-http-message" ,perl-http-message))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl HTML parser class") (description "Objects of the HTML::Parser class will recognize markup and separate @@ -2165,7 +2189,7 @@ are invoked.") (base32 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl data tables useful in parsing HTML") (description "The HTML::Tagset module contains several data tables useful in various @@ -2196,7 +2220,7 @@ It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>}, these new tags is called a template. Using this module you fill in the values for the variables, loops and branches declared in the template. This allows you to separate design from the data.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-body (package @@ -2221,7 +2245,7 @@ you to separate design from the data.") (description "HTTP::Body parses chunks of HTTP POST data and supports application/octet-stream, application/json, application/x-www-form-urlencoded, and multipart/form-data.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-cookiejar (package @@ -2265,7 +2289,7 @@ jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.") (build-system perl-build-system) (propagated-inputs `(("perl-http-message" ,perl-http-message))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl HTTP cookie jars") (description "The HTTP::Cookies class is for objects that represent a cookie jar, @@ -2289,7 +2313,7 @@ object knows about.") (propagated-inputs `(("perl-http-message" ,perl-http-message) ("perl-lwp-mediatypes" ,perl-lwp-mediatypes))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl simple http server class") (description "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen @@ -2310,7 +2334,7 @@ IO::Socket::INET, so you can perform socket operations directly on it too.") (base32 "0cz357kafhhzw7w59iyi0wvhw7rlh5g1lh38230ckw7rl0fr9fg8")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl date conversion routines") (description "The HTTP::Date module provides functions that deal with date formats @@ -2336,7 +2360,7 @@ used by the HTTP protocol (and then some more).") ("perl-io-html" ,perl-io-html) ("perl-lwp-mediatypes" ,perl-lwp-mediatypes) ("perl-uri" ,perl-uri))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl HTTP style message") (description "An HTTP::Message object contains some headers and a content body.") @@ -2357,7 +2381,7 @@ used by the HTTP protocol (and then some more).") (build-system perl-build-system) (propagated-inputs `(("perl-http-message" ,perl-http-message))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl http content negotiation") (description "The HTTP::Negotiate module provides a complete implementation of the @@ -2390,7 +2414,7 @@ fields in the request.") received and returns a 'hint' as to what is required, or returns the HTTP::Request when a complete request has been read. HTTP/1.1 chunking is supported.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-parser-xs (package @@ -2409,7 +2433,7 @@ supported.") (synopsis "Fast HTTP request parser") (description "HTTP::Parser::XS is a fast, primitive HTTP request/response parser.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-request-ascgi (package @@ -2431,7 +2455,7 @@ parser.") (synopsis "Set up a CGI environment from an HTTP::Request") (description "This module provides a convenient way to set up a CGI environment from an HTTP::Request.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-server-simple (package @@ -2457,7 +2481,7 @@ environment from an HTTP::Request.") (description "HTTP::Server::Simple is a simple standalone HTTP daemon with no non-core module dependencies. It can be used for building a standalone http-based UI to your existing tools.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-http-tiny (package @@ -2483,7 +2507,7 @@ http-based UI to your existing tools.") (description "This is a very simple HTTP/1.1 client, designed for doing simple requests without the overhead of a large framework like LWP::UserAgent. It supports proxies and redirection. It also correctly resumes after EINTR.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-io-html (package @@ -2498,7 +2522,7 @@ It supports proxies and redirection. It also correctly resumes after EINTR.") (base32 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl module to open an HTML file with automatic charset detection") (description "IO::HTML provides an easy way to open a file containing HTML while @@ -2524,7 +2548,7 @@ algorithm specified in section 8.2.2.1 of the draft standard.") (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6") (description "This module provides a protocol-independent way to use IPv4 and IPv6 sockets, intended as a replacement for IO::Socket::INET.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-io-socket-ssl (package @@ -2551,7 +2575,7 @@ necessary functionality into the familiar IO::Socket interface and providing secure defaults whenever possible. This way existing applications can be made SSL-aware without much effort, at least if you do blocking I/O and don't use select or poll.") - (license (package-license perl)) + (license l:perl-license) (home-page "https://github.com/noxxi/p5-io-socket-ssl"))) (define-public perl-libwww @@ -2579,7 +2603,7 @@ select or poll.") ("perl-net-http" ,perl-net-http) ("perl-uri" ,perl-uri) ("perl-www-robotrules" ,perl-www-robotrules))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl modules for the WWW") (description "The libwww-perl collection is a set of Perl modules which provides a @@ -2603,7 +2627,7 @@ help you implement simple HTTP servers.") (base32 "0xmnblp962qy02akah30sji8bxrqcyqlff2w95l199ghql60ny8q")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl module to guess the media type for a file or a URL") (description "The LWP::MediaTypes module provides functions for handling media (also @@ -2635,7 +2659,7 @@ exists it is used instead.") (synopsis "HTTPS support for LWP::UserAgent") (description "The LWP::Protocol::https module provides support for using https schemed URLs with LWP.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-lwp-useragent-determined (package @@ -2658,7 +2682,7 @@ https schemed URLs with LWP.") except that when you use it to get a web page but run into a possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds and retry a few times.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-net-amazon-s3 (package @@ -2701,7 +2725,7 @@ and retry a few times.") (home-page "http://search.cpan.org/dist/Net-Amazon-S3") (synopsis "Perl interface to Amazon S3") (description "This module provides a Perlish interface to Amazon S3.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-net-http (package @@ -2719,7 +2743,7 @@ and retry a few times.") (propagated-inputs `(("perl-io-socket-ssl" ,perl-io-socket-ssl) ("perl-uri" ,perl-uri))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl low-level HTTP connection (client)") (description "The Net::HTTP class is a low-level HTTP client. An instance of the @@ -2753,7 +2777,7 @@ children (Net::Server::PreForkSimple), or as a managed preforking server which maintains the number of children based on server load (Net::Server::PreFork). In all but the inetd type, the server provides the ability to connect to one or to multiple server ports.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-net-smtp-ssl (package @@ -2773,7 +2797,7 @@ or to multiple server ports.") (home-page "http://search.cpan.org/dist/Net-SMTP-SSL") (synopsis "SSL support for Net::SMTP") (description "SSL support for Net::SMTP.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack (package @@ -2811,7 +2835,7 @@ or to multiple server ports.") contains middleware components, a reference server, and utilities for Web application frameworks. Plack is like Ruby's Rack or Python's Paste for WSGI.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack-middleware-fixmissingbodyinredirect (package @@ -2836,7 +2860,7 @@ WSGI.") (synopsis "Plack::Middleware which sets body for redirect response") (description "This module sets the body in redirect response, if it's not already set.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack-middleware-methodoverride (package @@ -2862,7 +2886,7 @@ already set.") something else: by adding either a header named X-HTTP-Method-Override to the request, or a query parameter named x-tunneled-method to the URI, the client can say what method it actually meant.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack-middleware-removeredundantbody (package @@ -2885,7 +2909,7 @@ can say what method it actually meant.") (synopsis "Plack::Middleware which removes body for HTTP response") (description "This module removes the body in an HTTP response if it's not required.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack-middleware-reverseproxy (package @@ -2908,7 +2932,7 @@ required.") (description "Plack::Middleware::ReverseProxy resets some HTTP headers, which are changed by reverse-proxy. You can specify the reverse proxy address and stop fake requests using 'enable_if' directive in your app.psgi.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-plack-test-externalserver (package @@ -2930,7 +2954,7 @@ and stop fake requests using 'enable_if' directive in your app.psgi.") (description "This module allows your to run your Plack::Test tests against an external server instead of just against a local application through either mocked HTTP or a locally spawned server.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-test-tcp (package @@ -2951,7 +2975,7 @@ either mocked HTTP or a locally spawned server.") (home-page "http://search.cpan.org/dist/Test-TCP") (synopsis "Testing TCP programs") (description "Test::TCP is test utilities for TCP/IP programs.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-test-www-mechanize (package @@ -3016,7 +3040,7 @@ WWW::Mechanize that incorporates features for web application testing.") (description "The Test::WWW::Mechanize::Catalyst module meshes the Test::WWW:Mechanize module and the Catalyst web application framework to allow testing of Catalyst applications without needing to start up a web server.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-test-www-mechanize-psgi (package @@ -3043,7 +3067,7 @@ from web application framework code. Test::WWW::Mechanize is a subclass of WWW::Mechanize that incorporates features for web application testing. The Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI applications.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-uri (package @@ -3057,7 +3081,7 @@ applications.") (base32 "05a1ck1bhvqkkk690xhsxf7276dnagk96qkh2jy4prrrgw6wm3lw")))) (build-system perl-build-system) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl Uniform Resource Identifiers (absolute and relative)") (description "The URI module implements the URI class. Objects of this class @@ -3088,7 +3112,7 @@ and updated by RFC 2732.") (description "@code{URI::Fetch} is a smart client for fetching HTTP pages, notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth- and time-saving way.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-uri-find (package @@ -3113,7 +3137,7 @@ and time-saving way.") considers a URI) in plain text. It only finds URIs which include a scheme (http:// or the like), for something a bit less strict, consider URI::Find::Schemeless. For a command-line interface, urifind is provided.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-uri-ws (package @@ -3134,7 +3158,7 @@ URI::Find::Schemeless. For a command-line interface, urifind is provided.") (synopsis "WebSocket support for URI package") (description "With this module, the URI package provides the same set of methods for WebSocket URIs as it does for HTTP URIs.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-uri-template (package @@ -3158,7 +3182,7 @@ methods for WebSocket URIs as it does for HTTP URIs.") (synopsis "Object for handling URI templates") (description "This perl module provides a wrapper around URI templates as described in RFC 6570.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-www-curl (package @@ -3181,7 +3205,7 @@ RFC 6570.") (description "This is a Perl extension interface for the libcurl file downloading library.") - (license (package-license perl)) + (license l:perl-license) (home-page "http://search.cpan.org/~szbalint/WWW-Curl-4.17/lib/WWW/Curl.pm"))) (define-public perl-www-mechanize @@ -3211,7 +3235,7 @@ library.") (synopsis "Web browsing in a Perl object") (description "WWW::Mechanize is a Perl module for stateful programmatic web browsing, used for automating interaction with websites.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-www-opensearch (package @@ -3239,7 +3263,7 @@ web browsing, used for automating interaction with websites.") (description "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch, http://opensearch.a9.com} compatible search engines.") - (license (package-license perl)))) + (license l:perl-license))) (define-public perl-www-robotrules (package @@ -3256,7 +3280,7 @@ http://opensearch.a9.com} compatible search engines.") (build-system perl-build-system) (propagated-inputs `(("perl-uri" ,perl-uri))) - (license (package-license perl)) + (license l:perl-license) (synopsis "Perl database of robots.txt-derived permissions") (description "The WWW::RobotRules module parses /robots.txt files as specified in @@ -3319,13 +3343,13 @@ particularly easy to create complete web applications using httpuv alone.") (define-public r-jsonlite (package (name "r-jsonlite") - (version "1.2") + (version "1.4") (source (origin (method url-fetch) (uri (cran-uri "jsonlite" version)) (sha256 (base32 - "0k966hzp3qnwck7fgd76w49zrz39s7pqyywws17bhbcd8rh4csyb")))) + "11rgkjp5qir79niad0aizjxvjzyvkl6l9nsrv3ikv446vllmrasn")))) (build-system r-build-system) (home-page "http://arxiv.org/abs/1403.2805") (synopsis "Robust, high performance JSON parser and generator for R") @@ -3425,18 +3449,20 @@ applications.") (define-public r-htmltable (package (name "r-htmltable") - (version "1.7") + (version "1.9") (source (origin (method url-fetch) (uri (cran-uri "htmlTable" version)) (sha256 (base32 - "0x2f2hrbhvm53zqwn0ny9wxbk34nwf6zww8cx4bjy5ax15asdllm")))) + "0ciic1f4iczq14j81fg7kxibn65sy8z1zxkvk1yxnxxg6dzplj2v")))) (properties `((upstream-name . "htmlTable"))) (build-system r-build-system) (propagated-inputs - `(("r-knitr" ,r-knitr) + `(("r-checkmate" ,r-checkmate) + ("r-htmlwidgets" ,r-htmlwidgets) + ("r-knitr" ,r-knitr) ("r-magrittr" ,r-magrittr) ("r-stringr" ,r-stringr))) (home-page "http://gforge.se/packages/") @@ -3454,13 +3480,13 @@ LaTeX.") (define-public r-curl (package (name "r-curl") - (version "2.3") + (version "2.5") (source (origin (method url-fetch) (uri (cran-uri "curl" version)) (sha256 (base32 - "0gbw5l0wnsw26fbr08gj9vgxrzxg8axvqxfshmd8g9khpgbdl0gr")))) + "09p86i5f88gx1i7cidm1ka56g0jjkghqfam96p1jhwlh2fv6nrks")))) (build-system r-build-system) (arguments `(#:phases @@ -4221,17 +4247,12 @@ and similar services.") (version "1.12") (source (origin - ;; The darkhttpd release tarball URL fails to download with a - ;; 'TLS warning alert'. Download from the darkhttpd git repo - ;; until the problem has been fixed upstream. - (method git-fetch) - (uri (git-reference - (url (string-append "https://unix4lyfe.org/git/darkhttpd")) - (commit "41b68476c35270f47dcd2ddebe27cbcd87e43d41"))) + (method url-fetch) + (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-" + version ".tar.bz2")) (sha256 (base32 - "0wi8dfgj4ic0fsy4dszl69xgxdxlwxz4c30vsw2i2dpnczgjm04k")) - (file-name (string-append name "-" version "-checkout")))) + "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155")))) (build-system gnu-build-system) (arguments `(#:make-flags '("CC=gcc") @@ -4474,63 +4495,92 @@ Features include the ability to stop SQL injections, XSS and CSRF attacks and exploit attempts.") (license l:gpl2))) -(define-public qutebrowser +(define-public python-httpbin (package - (name "qutebrowser") - (version "0.10.1") + (name "python-httpbin") + (version "0.5.0") (source (origin (method url-fetch) - (uri (string-append "https://github.com/The-Compiler/" - "qutebrowser/releases/download/v" version "/" - "qutebrowser-" version ".tar.gz")) + (uri (pypi-uri "httpbin" version)) (sha256 (base32 - "05qryn56w2pbqhir4pl99idx7apx2xqw9f8wmbrhj59b1xgr3x2p")))) + "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr")))) (build-system python-build-system) - (native-inputs - `(("asciidoc" ,asciidoc))) - (inputs - `(("python-colorama" ,python-colorama) - ("python-cssutils" ,python-cssutils) - ("python-jinja2" ,python-jinja2) + (propagated-inputs + `(("python-decorator" ,python-decorator) + ("python-flask" ,python-flask) + ("python-itsdangerous" ,python-itsdangerous) ("python-markupsafe" ,python-markupsafe) - ("python-pygments" ,python-pygments) - ("python-pypeg2" ,python-pypeg2) - ("python-pyyaml" ,python-pyyaml) - ("python-pyqt" ,python-pyqt) - ("qtwebkit" ,qtwebkit))) + ("python-six" ,python-six))) + (home-page "https://github.com/Runscope/httpbin") + (synopsis "HTTP request and response service") + (description "Testing an HTTP Library can become difficult sometimes. +@code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the +response. This exists to cover all kinds of HTTP scenarios. All endpoint responses are +JSON-encoded.") + (license l:isc))) + +(define-public python2-httpbin + (package-with-python2 python-httpbin)) + +(define-public python-pytest-httpbin + (package + (name "python-pytest-httpbin") + (version "0.2.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-httpbin" version)) + (sha256 + (base32 + "1y0v2v7xpzpyd4djwp7ad8ifnlxp8r1y6dfbxg5ckzvllkgridn5")))) + (build-system python-build-system) + (propagated-inputs + `(("python-six" ,python-six) + ("python-httpbin" ,python-httpbin) + ("python-pytest" ,python-pytest))) + (home-page + "https://github.com/kevin1024/pytest-httpbin") + (synopsis + "Test your HTTP library against a local copy of httpbin") + (description + "@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected +into your tests. It automatically starts up a HTTP server in a separate thread running +@code{httpbin} and provides your test with the URL in the fixture.") + (license l:expat))) + +(define-public python2-pytest-httpbin + (package-with-python2 python-pytest-httpbin)) + +(define-public http-parser + (package + (name "http-parser") + (version "2.7.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/nodejs/http-parser/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cw6nf8xy4jhib1w0jd2y0gpqjbdasg8b7pkl2k2vpp54k9rlh3h")))) + (build-system gnu-build-system) (arguments - `(#:tests? #f ;no tests + `(#:test-target "test" + #:make-flags + (list (string-append "PREFIX=" + (assoc-ref %outputs "out")) + "CC=gcc" "library") #:phases (modify-phases %standard-phases - (add-after 'install 'install-more - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (app (string-append out "/share/applications")) - (hicolor (string-append out "/share/icons/hicolor"))) - (system* "a2x" "-f" "manpage" "doc/qutebrowser.1.asciidoc") - (install-file "doc/qutebrowser.1" - (string-append out "/share/man/man1")) - - (for-each - (lambda (i) - (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i)) - (dest (format #f "~a/~dx~d/apps/qutebrowser.png" - hicolor i i))) - (mkdir-p (dirname dest)) - (copy-file src dest))) - '(16 24 32 48 64 128 256 512)) - (install-file "icons/qutebrowser.svg" - (string-append hicolor "/scalable/apps")) - - (substitute* "qutebrowser.desktop" - (("Exec=qutebrowser") - (string-append "Exec=" out "/bin/qutebrowser"))) - (install-file "qutebrowser.desktop" app) - #t)))))) - (home-page "https://qutebrowser.org/") - (synopsis "Minimal, keyboard-focused, vim-like web browser") - (description "qutebrowser is a keyboard-focused browser with a minimal -GUI. It is based on PyQt5 and QtWebKit.") - (license l:gpl3+))) + (delete 'configure)))) + (home-page "https://github.com/nodejs/http-parser") + (synopsis "HTTP request/response parser for C") + (description "This is a parser for HTTP messages written in C. It parses +both requests and responses. The parser is designed to be used in +high-performance HTTP applications. It does not make any syscalls nor +allocations, it does not buffer data, it can be interrupted at anytime. +Depending on your architecture, it only requires about 40 bytes of data per +message stream (in a web server that is per connection).") + (license l:expat))) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index b90bd4d449..e343f40cab 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -53,14 +53,14 @@ (define-public webkitgtk (package (name "webkitgtk") - (version "2.16.0") + (version "2.16.2") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 (base32 - "1p3w23n5bq30xg4qg0i9lmrk13vgck2l4wh8gmzwxwqfj7c738sy")))) + "0lpj14cfr8p0ys6z1ych0zcwxbc86asvgs7v3qa72azb0ai8kxjy")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no tests diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index d758f264a1..3cf74c4ca8 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -243,7 +243,7 @@ developers.") based IPC interface it provides (if enabled in the configuration file). You can then subscribe to events or send messages and receive their replies.") ;; Can be used with either license. - (license (list license:gpl3+ (package-license perl))))) + (license (list license:gpl3+ license:perl-license)))) (define-public python-i3-py (package diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 077195cca7..5610a0f3b2 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -4,6 +4,8 @@ ;;; Copyright © 2016 Theodoros Foradis <theodoros.for@openmailbox.org> ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +29,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system python) #:use-module (guix build utils) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages databases) @@ -34,6 +37,8 @@ #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages photo) + #:use-module (gnu packages video) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages sdl) @@ -70,12 +75,16 @@ (native-inputs `(("pkg-config" ,pkg-config))) (arguments - '(#:configure-flags + `(#:configure-flags '("--with-regex" "--with-libmspack" "--with-sdl" "--enable-webview" "--enable-webkit" - "--enable-webviewwebkit") + "--enable-webviewwebkit" + ,@(if (string=? "aarch64-linux" + (%current-system)) + '("--build=aarch64-unknown-linux-gnu") + '())) #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) @@ -97,6 +106,27 @@ and many other languages.") (package-inputs wxwidgets)))) (name "wxwidgets-gtk2"))) +;; Development version of wxWidgets, required to build against gstreamer-1.x. +;; This can be removed when wxWidgets is updated to the next stable version. +(define-public wxwidgets-3.1 + (package (inherit wxwidgets) + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/wxWidgets/wxWidgets/archive/v" + version ".tar.gz")) + (file-name (string-append "wxwidgets-" version ".tar.gz")) + (sha256 + (base32 "1yan5ysjwh6a7xw82sfjd1xn0nsy1dn2s0cx9ac7cw19191blc3y")))) + (inputs `(("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ,@(package-inputs wxwidgets))) + (arguments + (substitute-keyword-arguments (package-arguments wxwidgets) + ((#:configure-flags flags) + `(cons "--enable-mediactrl" ,flags)))))) + (define-public python2-wxpython (package (name "python2-wxpython") @@ -167,3 +197,33 @@ and many other languages.") (description "@code{wxpython} provides Python 2 bindings for wxWidgets.") (home-page "http://wxpython.org/") (license (package-license wxwidgets)))) + +(define-public wxsvg + (package + (name "wxsvg") + (version "1.5.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/wxsvg/wxsvg/" + version "/wxsvg-" version ".tar.bz2")) + (sha256 + (base32 + "0m3ff8mjiq4hvy8rmxyc9fkpf24xwxhvr3a6jmvr2q5zc41xhz7x")))) + (build-system glib-or-gtk-build-system) + (inputs + `(("wxwidgets" ,wxwidgets-3.1) + ("cairo" ,cairo) + ("pango" ,pango) + ("libexif" ,libexif) + ("ffmpeg" ,ffmpeg))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "C++ library to create, manipulate and render SVG files") + (description "wxSVG is a C++ library to create, manipulate and render +@dfn{Scalable Vector Graphics} (SVG) files with the wxWidgets toolkit.") + (home-page "http://wxsvg.sourceforge.net") + + ;; wxSVG is licenced under the "wxWindows library licence", which is + ;; the LGPL2.0+, with a few extra permissions. + (license (list l:lgpl2.0+ (l:fsf-free "file://COPYING"))))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 0467d5b357..8d7f2195c2 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -277,7 +277,7 @@ rasterisation.") (define-public libdrm (package (name "libdrm") - (version "2.4.75") + (version "2.4.80") (source (origin (method url-fetch) @@ -287,7 +287,7 @@ rasterisation.") ".tar.bz2")) (sha256 (base32 - "0kq5hmck0gq7b29fr8jp94njc7jpkpbyws12s63w4b21xw750nid")) + "1wa9cnzf60xwx67zq9ay48xr3j3sn1z80q77jpbzmkg906b52am8")) (patches (search-patches "libdrm-symbol-check.patch")))) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index fce47d93ce..c8786dd69b 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Florian Paul Schmidt <mista.tapas@gmx.net> ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix utils) + #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (gnu packages) @@ -850,3 +852,33 @@ calendar applications. It also includes a panel clock plugin and an international clock application capable of simultaneously showing clocks from several different time zones.") (license gpl2+))) + +(define-public xfce4-notifyd + (package + (name "xfce4-notifyd") + (version "0.3.6") + (source (origin + (method url-fetch) + (uri (string-append "http://archive.xfce.org/src/apps/" + name "/" (version-major+minor version) "/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1ybcfqfynr33g5hp2lgq17s8qyx7rq6fd2iwrpwcvm6kml6prjpl")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (inputs + `(("libxfce4ui" ,libxfce4ui) + ("libnotify" ,libnotify))) + (home-page "https://goodies.xfce.org/projects/applications/xfce4-notifyd") + (synopsis "Show notification bubbles on Xfce") + (description + "The Xfce Notify Daemon (xfce4-notifyd for short) is a smallish program +that implements the “server-side” portion of the Freedesktop desktop +notifications specification. Applications that wish to pop up a notification +bubble in a standard way can implicitly make use of xfce4-notifyd to do so by +sending standard messages over D-Bus using the +@code{org.freedesktop.Notifications} interface.") + (license gpl2))) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index b2e8959df0..9635413b8f 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com> @@ -11,9 +11,10 @@ ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> +;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,9 +40,11 @@ #:use-module (gnu packages python) #:use-module (gnu packages tls) #:use-module (gnu packages web) + #:use-module (gnu packages zip) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix build-system ant) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -187,7 +190,7 @@ There are two base classes. @code{Graph::Reader} is the base class for classes which read a graph file and create an instance of the Graph class. @code{Graph::Writer} is the base class for classes which take an instance of the @code{Graph} class and write it out in a specific file format.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-atom (package @@ -219,7 +222,7 @@ the @code{Graph} class and write it out in a specific file format.") (description "Atom is a syndication, API, and archiving format for weblogs and other data. @code{XML::Atom} implements the feed format as well as a client for the API.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-descent (package @@ -247,7 +250,7 @@ the @code{Graph} class and write it out in a specific file format.") XML grammar is recursive - so it's nice to be able to write recursive parsers for it. @code{XML::Descent} allows such parsers to be created.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-parser (package @@ -267,7 +270,7 @@ parsers for it. @code{XML::Descent} allows such parsers to be created.") (list (string-append "EXPATLIBPATH=" expat "/lib") (string-append "EXPATINCPATH=" expat "/include"))))) (inputs `(("expat" ,expat))) - (license (package-license perl)) + (license license:perl-license) (synopsis "Perl bindings to the Expat XML parsing library") (description "This module provides ways to parse XML documents. It is built on top of @@ -301,7 +304,7 @@ to @code{XML::Parser} in much the same way that Gisle Aas' @code{HTML::TokeParser} provides a procedural interface to @code{HTML::Parser}. @code{XML::TokeParser} splits its XML input up into \"tokens\", each corresponding to an @code{XML::Parser} event.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-libxml (package @@ -318,7 +321,7 @@ corresponding to an @code{XML::Parser} event.") (build-system perl-build-system) (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser))) - (license (package-license perl)) + (license license:perl-license) (synopsis "Perl SAX parser using XML::Parser") (description "XML::Parser::PerlSAX is a PerlSAX parser using the XML::Parser @@ -349,7 +352,7 @@ module.") library which provides interfaces for parsing and manipulating XML files. This module allows Perl programmers to make use of the highly capable validating XML parser and the high performance DOM implementation.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-libxml-simple (package @@ -371,7 +374,7 @@ XML parser and the high performance DOM implementation.") (description "This package provides the same API as @code{XML::Simple} but is based on @code{XML::LibXML}.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-libxslt (package @@ -394,7 +397,7 @@ XML parser and the high performance DOM implementation.") (synopsis "Perl bindings to GNOME libxslt library") (description "This Perl module is an interface to the GNOME project's libxslt library.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-namespacesupport (package @@ -415,7 +418,7 @@ libxslt library.") names (unames) from within any application that may need them. It also helps maintain a prefix to namespace URI map, and provides a number of basic checks.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-rss (package @@ -450,7 +453,7 @@ checks.") RDF Site Summary (RSS) files. This distribution also contains many examples that allow you to generate HTML from an RSS, convert between 0.9, 0.91, and 1.0 version, and more.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-sax (package @@ -484,7 +487,7 @@ that allow you to generate HTML from an RSS, convert between 0.9, 0.91, and (synopsis "Perl API for XML") (description "XML::SAX consists of several framework classes for using and building Perl SAX2 XML parsers, filters, and drivers.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-sax-base (package @@ -506,7 +509,7 @@ PerlSAX drivers and filters. It's default behaviour is to pass the input directly to the output unchanged. It can be useful to use this module as a base class so you don't have to, for example, implement the characters() callback.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-simple (package @@ -524,7 +527,7 @@ callback.") (propagated-inputs `(("perl-xml-parser" ,perl-xml-parser) ("perl-xml-sax" ,perl-xml-sax))) - (license (package-license perl)) + (license license:perl-license) (synopsis "Perl module for easy reading/writing of XML files") (description "The XML::Simple module provides a simple API layer on top of an @@ -547,7 +550,7 @@ parser modules).") (build-system perl-build-system) (inputs `(("perl-xml-parser" ,perl-xml-parser))) - (license (package-license perl)) + (license license:perl-license) (synopsis "Perl regular expressions for XML tokens") (description "XML::RegExp contains regular expressions for the following XML tokens: @@ -573,7 +576,7 @@ EntityRef, CharRef, Reference, Name, NmToken, and AttValue.") ("perl-libxml" ,perl-libxml) ("perl-xml-parser" ,perl-xml-parser) ("perl-xml-regexp" ,perl-xml-regexp))) - (license (package-license perl)) + (license license:perl-license) (synopsis "Perl module for building DOM Level 1 compliant document structures") (description @@ -605,7 +608,7 @@ that conforms to the API of the Document Object Model.") "The @code{XML::Compile} module suite has extensive regression testing. This module provide functions which simplify writing tests for @code{XML::Compile} related distributions.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-compile (package @@ -630,7 +633,7 @@ This module provide functions which simplify writing tests for "@code{XML::Compile} can be used to translate a Perl data-structure into XML or XML into a Perl data-structure, both directions under rigid control by a schema.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-compile-cache (package @@ -653,7 +656,7 @@ a schema.") (synopsis "Cache compiled XML translators") (description "This package provides methods to cache compiled XML translators.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-compile-soap (package @@ -681,7 +684,7 @@ a schema.") implementation is @url{SOAP1.1, http://www.w3.org/TR/2000/NOTE-SOAP-20000508/}, which is still most often used.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-compile-wsdl11 (package @@ -707,7 +710,7 @@ used.") messages to be send and received over SOAP connections. This involves encoding of the message to be send into XML, sending the message to the server, collect the answer, and finally decoding the XML to Perl.") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-feed (package @@ -746,7 +749,7 @@ server, collect the answer, and finally decoding the XML to Perl.") Atom feeds. It also implements feed auto-discovery for finding feeds, given a URI. @code{XML::Feed} supports the following syndication feed formats: RSS 0.91, RSS 1.0, RSS 2.0, Atom") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-xml-xpath (package @@ -770,7 +773,7 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom") "This module aims to comply exactly to the @url{XPath specification, https://www.w3.org/TR/xpath} and yet allow extensions to be added in the form of functions.") - (license (package-license perl)))) + (license license:perl-license))) (define-public pugixml (package @@ -893,18 +896,19 @@ Libxml2).") (define-public minixml (package (name "minixml") - (version "2.9") + (version "2.10") (source (origin (method url-fetch) - (uri (string-append "http://www.msweet.org/files/project3/mxml-" - version ".tar.gz")) + (uri (string-append "https://github.com/michaelrsweet/mxml/" + "releases/download/release-" version + "/mxml-" version ".tar.gz")) (sha256 (base32 - "14pzhlfidj5v1qbxy7a59yn4jz9pnjrs2zwalz228jsq7ijm9vfd")))) + "14bqfq4lymhb31snz6wsvzhlavy0573v1nki1lbngiyxcj5zazr6")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ;no "check" target - (home-page "http://www.minixml.org/") + (home-page "https://michaelrsweet.github.io/mxml") (synopsis "Small XML parsing library") (description "Mini-XML is a small C library to read and write XML files and strings in @@ -1068,3 +1072,137 @@ XSLT and EXSLT.") XLSM) format spreadsheets into plaintext @dfn{comma separated values} (CSV) files. It is designed to be fast and to handle large input files.") (license license:gpl2+))) + +(define-public python-defusedxml + (package + (name "python-defusedxml") + (version "0.4.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "defusedxml" version)) + (sha256 + (base32 + "0y147zy3jqmk6ly7fbhqmzn1hf41xcb53f2vcc3m8x4ba5d1smfd")))) + (build-system python-build-system) + (home-page "https://bitbucket.org/tiran/defusedxml") + (synopsis "XML bomb protection for Python stdlib modules") + (description + "Defusedxml provides XML bomb protection for Python stdlib modules.") + (license license:psfl))) + +(define-public python2-defusedxml + (package-with-python2 python-defusedxml)) + +(define-public libxls + (package + (name "libxls") + (version "1.4.0") + (source (origin + (method url-fetch) + (uri (string-append "https://sourceforge.net/projects/" + name "/files/" name "-" + version ".zip")) + (sha256 + (base32 + "1g8ds7wbhsa4hdcn77xc2c0l3vvz5bx2hx9ng9c9n7aii92ymfnk")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Bootstrapping is required in order to fix the test driver script. + (add-after 'unpack 'bootstrap + (lambda _ + (zero? (system* "bash" "bootstrap"))))))) + (native-inputs + `(("unzip" ,unzip) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (home-page "http://libxls.sourceforge.net/") + (synopsis "Read Excel files") + (description + "libxls is a C library which can read Excel (xls) files since Excel 97 (the BIFF8 format). +libxls cannot write Excel files.") + (license license:bsd-2))) + +(define-public freexl + (package + (name "freexl") + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (string-append "http://www.gaia-gis.it/gaia-sins/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "17a0yrjb0gln7819j0vp7y25imhvwpil2b0rm44mwgzml0a4i6mk")))) + (build-system gnu-build-system) + (home-page "https://www.gaia-gis.it/fossil/freexl/index") + (synopsis "Read Excel files") + (description + "FreeXL is a C library to extract valid data from within an Excel (.xls) +spreadsheet.") + ;; Any of these licenses may be picked. + (license (list license:gpl2+ + license:lgpl2.1+ + license:mpl1.1)))) + +(define-public xerces-c + (package + (name "xerces-c") + (version "3.1.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/xerces/c/3/sources/" + "xerces-c-" version ".tar.xz")) + (sha256 + (base32 + "0hb29c0smqlpxj0zdm09s983z5jx37szlliccnvgh0qq91wwqwwr")))) + (build-system gnu-build-system) + (arguments + (let ((system (or (%current-target-system) + (%current-system)))) + (if (string-prefix? "x86_64" system) + '() + '(#:configure-flags '("--disable-sse2"))))) + (native-inputs + `(("perl" ,perl))) + (home-page "http://xerces.apache.org/xerces-c/") + (synopsis "Validating XML parser library for C++") + (description "Xerces-C++ is a validating XML parser written in a portable +subset of C++. Xerces-C++ makes it easy to give your application the ability +to read and write XML data. A shared library is provided for parsing, +generating, manipulating, and validating XML documents using the DOM, SAX, and +SAX2 APIs.") + (license license:asl2.0))) + +(define-public java-simple-xml + (package + (name "java-simple-xml") + (version "2.7.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/simple/simple-xml-" + version ".zip")) + (sha256 + (base32 + "0w19k1awslmihpwsxwjbg89hv0vjhk4k3i0vrfchy3mqknd988y5")))) + (build-system ant-build-system) + (arguments + `(#:build-target "build" + #:test-target "test" + #:phases + (modify-phases %standard-phases + (replace 'install (install-jars "jar"))))) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://simple.sourceforge.net/") + (synopsis "XML serialization framework for Java") + (description "Simple is a high performance XML serialization and +configuration framework for Java. Its goal is to provide an XML framework +that enables rapid development of XML configuration and communication systems. +This framework aids the development of XML systems with minimal effort and +reduced errors. It offers full object serialization and deserialization, +maintaining each reference encountered.") + (license license:asl2.0))) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 5f9a59f54e..239b6ff2fe 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -1095,7 +1095,7 @@ themselves.") (define-public libpciaccess (package (name "libpciaccess") - (version "0.13.4") + (version "0.13.5") (source (origin (method url-fetch) @@ -1105,7 +1105,7 @@ themselves.") ".tar.bz2")) (sha256 (base32 - "1krgryi9ngjr66242v0v5mczihgv0y7rrvx0563arr318mjn9y07")))) + "16dr80rdw5bzdyhahvilfjrflj7scs2yl2mmghsb84f3nglm8b3m")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) @@ -2393,7 +2393,7 @@ including most mice, keyboards, tablets and touchscreens.") (define-public xf86-input-libinput (package (name "xf86-input-libinput") - (version "0.25.0") + (version "0.25.1") (source (origin (method url-fetch) (uri (string-append @@ -2401,7 +2401,7 @@ including most mice, keyboards, tablets and touchscreens.") name "-" version ".tar.bz2")) (sha256 (base32 - "0vsmijamfzf6vcljrr0am2qcz33zl2l0lj2mzmbwgrm7ixjx2zxv")))) + "1q67hjd67ni1nq7kgxdrrdgkyhzaqvvn2vlnsiiq9w4y3icpv7s8")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -2812,10 +2812,10 @@ X server.") (define-public xf86-video-intel - (let ((commit "7e9e92c86b0fc4c848d164fe571798add5e1e36e")) + (let ((commit "b57abe20e81f4b8e4dd203b6a9eda7ff441bc8ce")) (package (name "xf86-video-intel") - (version (string-append "2.99.917-4-" (string-take commit 7))) + (version (string-append "2.99.917-5-" (string-take commit 7))) (source (origin ;; there's no current tarball @@ -2825,7 +2825,7 @@ X server.") (commit commit))) (sha256 (base32 - "0igfw8vpz1q0a2526j81fl65z6avfh6lzzrijcs72gwihqqhb1sv")) + "1l08jdrqrpaj2168hlz0hwlx27bm7n7lnv82jjyvy884v47gn2ay")) (file-name (string-append name "-" version)))) (build-system gnu-build-system) (inputs `(("mesa" ,mesa) @@ -2995,7 +2995,7 @@ supported, and the RENDER extension is not accelerated by this driver.") (define-public xf86-video-nouveau (package (name "xf86-video-nouveau") - (version "1.0.14") + (version "1.0.15") (source (origin (method url-fetch) @@ -3005,11 +3005,11 @@ supported, and the RENDER extension is not accelerated by this driver.") ".tar.bz2")) (sha256 (base32 - "1h9izq510m2pvg77d0y9krc0cvvbhp2y3xlrrz6id7y47jdzkpsd")))) + "0k0xah72ryjwak4dc4crszxrlkmi9x1s7p3sd4la642n77yi1pmf")))) (build-system gnu-build-system) (inputs `(("xorg-server" ,xorg-server))) (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "http://nouveau.freedesktop.org") + (home-page "https://nouveau.freedesktop.org") (synopsis "NVIDIA video driver for X server") (description "This package provides modern, high-quality Xorg drivers for NVIDIA @@ -4985,7 +4985,7 @@ over Xlib, including: (define-public xorg-server (package (name "xorg-server") - (version "1.19.2") + (version "1.19.3") (source (origin (method url-fetch) @@ -4994,7 +4994,7 @@ over Xlib, including: name "-" version ".tar.bz2")) (sha256 (base32 - "1fw4b2lf75nsqkiyhn95b1c2if1l3cw5a188a1szx1d8l7sbk2jg")))) + "162s1v901djr57gxmmk4airk8hiwcz79dqyz72972x1lw1k82yk7")))) (build-system gnu-build-system) (propagated-inputs `(("dri2proto" ,dri2proto) @@ -5053,12 +5053,7 @@ over Xlib, including: ("xcb-util-wm" ,xcb-util-wm))) (native-inputs `(("python" ,python-minimal-wrapper) - ("pkg-config" ,pkg-config) - ;; XXX Bootstrapping inputs for 1.19.2. Remove for > 1.19.2. - ("font-util" ,font-util) - ("libtool" ,libtool) - ("autoconf" ,autoconf) - ("automake" ,automake))) + ("pkg-config" ,pkg-config))) (arguments `(#:parallel-tests? #f #:configure-flags @@ -5085,10 +5080,6 @@ over Xlib, including: #:phases (modify-phases %standard-phases - ;; XXX The 1.19.2 release of xorg-server was not bootstrapped: - ;; <https://lists.x.org/archives/xorg-announce/2017-March/002780.html> - (add-before 'configure 'bootstrap - (lambda _ (zero? (system* "autoreconf" "-vfi")))) (add-before 'configure 'pre-configure (lambda _ @@ -5114,13 +5105,16 @@ communicates with the user via graphical controls such as buttons and draggable titlebars and borders.") (license license:x11))) -;;; This package is intended to be used when building GTK+. -(define-public xorg-server-1.19.2 - (package - (inherit xorg-server) - (name "xorg-server") - (version "1.19.2") - (source +;; This package is intended to be used when building GTK+. +;; Note: It's currently marked as "hidden" to avoid having two non-eq? +;; packages with the same name and version. +(define-public xorg-server-1.19.3 + (hidden-package + (package + (inherit xorg-server) + (name "xorg-server") + (version "1.19.3") + (source (origin (method url-fetch) (uri (string-append @@ -5128,7 +5122,7 @@ draggable titlebars and borders.") name "-" version ".tar.bz2")) (sha256 (base32 - "1fw4b2lf75nsqkiyhn95b1c2if1l3cw5a188a1szx1d8l7sbk2jg")))))) + "162s1v901djr57gxmmk4airk8hiwcz79dqyz72972x1lw1k82yk7"))))))) (define-public xorg-server-xwayland (package @@ -5726,7 +5720,7 @@ programs that cannot use the window system directly.") "These bindings wrap @code{libxcb} (a C library to speak with X11, in many cases better than @code{Xlib}), and provides an object oriented interface to its methods (using @code{Mouse}).") - (license (package-license perl)))) + (license license:perl-license))) (define-public perl-x11-protocol (package @@ -5754,7 +5748,7 @@ perl programs to display windows and graphics on X11 servers.") ;; distribution, has another, less restrictive copying policy, as do some ;; of the extension modules in the directory Protocol/Ext: see those files ;; for details)." - (license (package-license perl)))) + (license license:perl-license))) (define-public xcompmgr (package diff --git a/gnu/packages/zip.scm b/gnu/packages/zip.scm index cd16f5ad43..8feb4fea21 100644 --- a/gnu/packages/zip.scm +++ b/gnu/packages/zip.scm @@ -174,4 +174,4 @@ recreates the stored directory structure by default.") (description "The Archive::Zip module allows a Perl program to create, manipulate, read, and write Zip archive files.") (home-page "http://search.cpan.org/~adamk/Archive-Zip-1.30/") - (license (package-license perl)))) + (license license:perl-license))) diff --git a/gnu/services.scm b/gnu/services.scm index 6c88f2621b..5c314748da 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -25,6 +25,7 @@ #:use-module (guix profiles) #:use-module (guix sets) #:use-module (guix ui) + #:use-module ((guix utils) #:select (source-properties->location)) #:use-module (guix modules) #:use-module (gnu packages base) #:use-module (gnu packages bash) @@ -47,11 +48,13 @@ service-type-extensions service-type-compose service-type-extend + service-type-default-value service service? service-kind - service-parameters + service-value + service-parameters ;deprecated simple-service modify-services @@ -59,6 +62,9 @@ fold-services service-error? + missing-value-service-error? + missing-value-service-error-type + missing-value-service-error-location missing-target-service-error? missing-target-service-error-service missing-target-service-error-target-type @@ -118,6 +124,10 @@ (target service-extension-target) ;<service-type> (compute service-extension-compute)) ;params -> params +(define &no-default-value + ;; Value used to denote service types that have no associated default value. + '(no default value)) + (define-record-type* <service-type> service-type make-service-type service-type? (name service-type-name) ;symbol (for debugging) @@ -131,7 +141,11 @@ ;; Extend the services' own parameters with the extension composition. (extend service-type-extend ;list of Any -> parameters - (default #f))) + (default #f)) + + ;; Optional default value for instances of this type. + (default-value service-type-default-value ;Any + (default &no-default-value))) (define (write-service-type type port) (format port "#<service-type ~a ~a>" @@ -142,10 +156,56 @@ ;; Services of a given type. (define-record-type <service> - (service type parameters) + (make-service type value) service? (type service-kind) - (parameters service-parameters)) + (value service-value)) + +(define-syntax service + (syntax-rules () + "Return a service instance of TYPE. The service value is VALUE or, if +omitted, TYPE's default value." + ((_ type value) + (make-service type value)) + ((_ type) + (%service-with-default-value (current-source-location) + type)))) + +(define (%service-with-default-value location type) + "Return a instance of service type TYPE with its default value, if any. If +TYPE does not have a default value, an error is raised." + ;; TODO: Currently this is a run-time error but with a little bit macrology + ;; we could turn it into an expansion-time error. + (let ((default (service-type-default-value type))) + (if (eq? default &no-default-value) + (let ((location (source-properties->location location))) + (raise + (condition + (&missing-value-service-error (type type) (location location)) + (&message + (message (format #f (G_ "~a: no value specified \ +for service of type '~a'") + (location->string location) + (service-type-name type))))))) + (service type default)))) + +(define-condition-type &service-error &error + service-error?) + +(define-condition-type &missing-value-service-error &service-error + missing-value-service-error? + (type missing-value-service-error-type) + (location missing-value-service-error-location)) + + + +;;; +;;; Helpers. +;;; + +(define service-parameters + ;; Deprecated alias. + service-value) (define (simple-service name target value) "Return a service that extends TARGET with VALUE. This works by creating a @@ -161,7 +221,7 @@ singleton service type NAME, of which the returned service is an instance." service) ((_ svc (kind param => exp ...) clauses ...) (if (eq? (service-kind svc) kind) - (let ((param (service-parameters svc))) + (let ((param (service-value svc))) (service (service-kind svc) (begin exp ...))) (%modify-service svc clauses ...))))) @@ -321,7 +381,7 @@ file." (define* (activation-service->script service) "Return as a monadic value the activation script for SERVICE, a service of ACTIVATION-SCRIPT-TYPE." - (activation-script (service-parameters service))) + (activation-script (service-value service))) (define (activation-script gexps) "Return the system's activation script, which evaluates GEXPS." @@ -403,16 +463,13 @@ ACTIVATION-SCRIPT-TYPE." ;; 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)) + (simple-service 'linux-bare-metal + activation-service-type + %linux-kernel-activation)) + (define special-files-service-type ;; Service to install "special files" such as /bin/sh and /usr/bin/env. @@ -435,7 +492,7 @@ and FILE could be \"/usr/bin/env\"." (define (etc-directory service) "Return the directory for SERVICE, a service of type ETC-SERVICE-TYPE." - (files->etc-directory (service-parameters service))) + (files->etc-directory (service-value service))) (define (files->etc-directory files) (file-union "etc" files)) @@ -539,9 +596,6 @@ kernel." ;;; Service folding. ;;; -(define-condition-type &service-error &error - service-error?) - (define-condition-type &missing-target-service-error &service-error missing-target-service-error? (service missing-target-service-error-service) @@ -570,7 +624,7 @@ kernel." (target-type target-type)) (&message (message - (format #f (_ "no target of type '~a' for service ~s") + (format #f (G_ "no target of type '~a' for service ~s") (service-type-name target-type) service)))))) (x @@ -581,7 +635,7 @@ kernel." (&message (message (format #f - (_ "more than one target service of type '~a'") + (G_ "more than one target service of type '~a'") (service-type-name target-type)))))))))) (fold add-edge edges (service-type-extensions (service-kind service)))) @@ -608,7 +662,7 @@ TARGET-TYPE; return the root service adjusted accordingly." (match (find (matching-extension target) (service-type-extensions (service-kind service))) (($ <service-extension> _ compute) - (compute (service-parameters service)))))) + (compute (service-value service)))))) (match (filter (lambda (service) (eq? (service-kind service) target-type)) @@ -619,7 +673,7 @@ TARGET-TYPE; return the root service adjusted accordingly." (extensions (map (apply-extension sink) dependents)) (extend (service-type-extend (service-kind sink))) (compose (service-type-compose (service-kind sink))) - (params (service-parameters sink))) + (params (service-value sink))) ;; We distinguish COMPOSE and EXTEND because PARAMS typically has a ;; different type than the elements of EXTENSIONS. (if extend @@ -632,7 +686,7 @@ TARGET-TYPE; return the root service adjusted accordingly." (service #f) (target-type target-type)) (&message - (message (format #f (_ "service of type '~a' not found") + (message (format #f (G_ "service of type '~a' not found") (service-type-name target-type))))))) (x (raise @@ -642,7 +696,7 @@ TARGET-TYPE; return the root service adjusted accordingly." (&message (message (format #f - (_ "more than one target service of type '~a'") + (G_ "more than one target service of type '~a'") (service-type-name target-type))))))))) ;;; services.scm ends here. diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm index deaf677bd9..6ac24e32b0 100644 --- a/gnu/services/admin.scm +++ b/gnu/services/admin.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -115,6 +115,7 @@ ;; Add Rottlog to the global profile so users can access ;; the documentation. (service-extension profile-service-type - (compose list rottlog-rottlog)))))) + (compose list rottlog-rottlog)))) + (default-value (rottlog-configuration)))) ;;; admin.scm ends here diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 95a1ba2a6c..7cd9a34ca2 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -129,6 +129,8 @@ guix-publish-configuration-host guix-publish-configuration-compression-level guix-publish-configuration-nar-path + guix-publish-configuration-cache + guix-publish-configuration-ttl guix-publish-service guix-publish-service-type @@ -1147,7 +1149,16 @@ the tty to run, among other things." #~(begin (use-modules (guix build utils)) (mkdir-p "/var/run/nscd") - (mkdir-p "/var/db/nscd"))) ;for the persistent cache + (mkdir-p "/var/db/nscd") ;for the persistent cache + + ;; In libc 2.25 nscd uses inotify to watch /etc/resolv.conf, but only if + ;; that file exists when it is started. Thus create it here. Note: on + ;; some systems, such as when NetworkManager is used, /etc/resolv.conf + ;; is a symlink, hence 'lstat'. + (unless (false-if-exception (lstat "/etc/resolv.conf")) + (call-with-output-file "/etc/resolv.conf" + (lambda (port) + (display "# This is a placeholder.\n" port)))))) (define nscd-service-type (service-type (name 'nscd) @@ -1321,7 +1332,8 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (define %default-authorized-guix-keys ;; List of authorized substitute keys. - (list (file-append guix "/share/guix/hydra.gnu.org.pub"))) + (list (file-append guix "/share/guix/hydra.gnu.org.pub") + (file-append guix "/share/guix/bayfront.guixsd.org.pub"))) (define-record-type* <guix-configuration> guix-configuration make-guix-configuration @@ -1424,7 +1436,8 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (service-extension account-service-type guix-accounts) (service-extension activation-service-type guix-activation) (service-extension profile-service-type - (compose list guix-configuration-guix)))))) + (compose list guix-configuration-guix)))) + (default-value (guix-configuration)))) (define* (guix-service #:optional (config %default-guix-configuration)) "Return a service that runs the Guix build daemon according to @@ -1441,14 +1454,21 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (default 80)) (host guix-publish-configuration-host ;string (default "localhost")) - (compression-level guix-publish-compression-level ;integer + (compression-level guix-publish-configuration-compression-level ;integer (default 3)) - (nar-path guix-publish-nar-path ;string - (default "nar"))) + (nar-path guix-publish-configuration-nar-path ;string + (default "nar")) + (cache guix-publish-configuration-cache ;#f | string + (default #f)) + (workers guix-publish-configuration-workers ;#f | integer + (default #f)) + (ttl guix-publish-configuration-ttl ;#f | integer + (default #f))) (define guix-publish-shepherd-service (match-lambda - (($ <guix-publish-configuration> guix port host compression nar-path) + (($ <guix-publish-configuration> guix port host compression + nar-path cache workers ttl) (list (shepherd-service (provision '(guix-publish)) (requirement '(guix-daemon)) @@ -1458,7 +1478,20 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) "-p" #$(number->string port) "-C" #$(number->string compression) (string-append "--nar-path=" #$nar-path) - (string-append "--listen=" #$host)))) + (string-append "--listen=" #$host) + #$@(if workers + #~((string-append "--workers=" + #$(number->string + workers))) + #~()) + #$@(if ttl + #~((string-append "--ttl=" + #$(number->string ttl) + "s")) + #~()) + #$@(if cache + #~((string-append "--cache=" #$cache)) + #~())))) (stop #~(make-kill-destructor))))))) (define %guix-publish-accounts @@ -1471,13 +1504,30 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin"))))) +(define (guix-publish-activation config) + (let ((cache (guix-publish-configuration-cache config))) + (if cache + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + (mkdir-p #$cache) + (let* ((pw (getpw "guix-publish")) + (uid (passwd:uid pw)) + (gid (passwd:gid pw))) + (chown #$cache uid gid)))) + #t))) + (define guix-publish-service-type (service-type (name 'guix-publish) (extensions (list (service-extension shepherd-root-service-type guix-publish-shepherd-service) (service-extension account-service-type - (const %guix-publish-accounts)))))) + (const %guix-publish-accounts)) + (service-extension activation-service-type + guix-publish-activation))) + (default-value (guix-publish-configuration)))) (define* (guix-publish-service #:key (guix guix) (port 80) (host "localhost")) "Return a service that runs @command{guix publish} listening on @var{host} diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 237f71a09b..6beabc4b3b 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -87,7 +87,7 @@ (list (shepherd-service (documentation "Run Cuirass.") (provision '(cuirass)) - (requirement '(guix-daemon)) + (requirement '(guix-daemon networking)) (start #~(make-forkexec-constructor (list (string-append #$cuirass "/bin/cuirass") "--cache-directory" #$cache-directory diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 70a71eff0a..4c62e6a6f7 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -1022,7 +1022,9 @@ extensions that it uses." (inherit config) (extensions (append (opaque-cups-configuration-extensions config) - extensions))))))))) + extensions))))))) + + (default-value (cups-configuration)))) ;; A little helper to make it easier to document all those fields. (define (generate-cups-documentation) diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm index 64de111511..69eadafd2e 100644 --- a/gnu/services/dict.scm +++ b/gnu/services/dict.scm @@ -162,7 +162,8 @@ database { (service-extension activation-service-type (const %dicod-activation)) (service-extension shepherd-root-service-type - dicod-shepherd-service))))) + dicod-shepherd-service))) + (default-value (dicod-configuration)))) (define* (dicod-service #:key (config (dicod-configuration))) "Return a service that runs the @command{dicod} daemon, an implementation diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm index 03bfbf1d78..f8d60a4802 100644 --- a/gnu/services/herd.scm +++ b/gnu/services/herd.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,7 +24,9 @@ #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (ice-9 match) - #:export (shepherd-error? + #:export (%shepherd-socket-file + + shepherd-error? service-not-found-error? service-not-found-error-service action-not-found-error? @@ -58,9 +61,9 @@ ;;; Code: (define %shepherd-socket-file - "/var/run/shepherd/socket") + (make-parameter "/var/run/shepherd/socket")) -(define* (open-connection #:optional (file %shepherd-socket-file)) +(define* (open-connection #:optional (file (%shepherd-socket-file))) "Open a connection to the daemon, using the Unix-domain socket at FILE, and return the socket." ;; The protocol is sexp-based and UTF-8-encoded. diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index 20043d7518..6305f06f85 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -35,6 +35,7 @@ #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 format) + #:use-module (srfi srfi-1) #:export (dovecot-service dovecot-service-type dovecot-configuration @@ -57,6 +58,8 @@ opensmtpd-service-type %default-opensmtpd-config-file + mail-aliases-service-type + exim-configuration exim-configuration? exim-service-type @@ -1662,6 +1665,31 @@ accept from local for any relay ;;; +;;; mail aliases. +;;; + +(define (mail-aliases-etc aliases) + `(("aliases" ,(plain-file "aliases" + ;; Ideally we'd use a format string like + ;; "~:{~a: ~{~a~^,~}\n~}", but it gives a + ;; warning that I can't figure out how to fix, + ;; so we'll just use string-join below instead. + (format #f "~:{~a: ~a\n~}" + (map (match-lambda + ((alias addresses ...) + (list alias (string-join addresses ",")))) + aliases)))))) + +(define mail-aliases-service-type + (service-type + (name 'mail-aliases) + (extensions + (list (service-extension etc-service-type mail-aliases-etc))) + (compose concatenate) + (extend append))) + + +;;; ;;; Exim. ;;; @@ -1671,9 +1699,7 @@ accept from local for any relay (package exim-configuration-package ;<package> (default exim)) (config-file exim-configuration-config-file ;file-like - (default #f)) - (aliases exim-configuration-aliases ;; list of lists - (default '()))) + (default #f))) (define %exim-accounts (list (user-group @@ -1700,7 +1726,7 @@ exim_group = exim (define exim-shepherd-service (match-lambda - (($ <exim-configuration> package config-file aliases) + (($ <exim-configuration> package config-file) (list (shepherd-service (provision '(exim mta)) (documentation "Run the exim daemon.") @@ -1713,7 +1739,7 @@ exim_group = exim (define exim-activation (match-lambda - (($ <exim-configuration> package config-file aliases) + (($ <exim-configuration> package config-file) (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils)) @@ -1726,20 +1752,6 @@ exim_group = exim (zero? (system* #$(file-append package "/bin/exim") "-bV" "-C" #$(exim-computed-config-file package config-file)))))))) -(define exim-etc - (match-lambda - (($ <exim-configuration> package config-file aliases) - `(("aliases" ,(plain-file "aliases" - ;; Ideally we'd use a format string like - ;; "~:{~a: ~{~a~^,~}\n~}", but it gives a - ;; warning that I can't figure out how to fix, - ;; so we'll just use string-join below instead. - (format #f "~:{~a: ~a\n~}" - (map (lambda (entry) - (list (car entry) - (string-join (cdr entry) ","))) - aliases)))))))) - (define exim-profile (compose list exim-configuration-package)) @@ -1751,4 +1763,4 @@ exim_group = exim (service-extension account-service-type (const %exim-accounts)) (service-extension activation-service-type exim-activation) (service-extension profile-service-type exim-profile) - (service-extension etc-service-type exim-etc))))) + (service-extension mail-aliases-service-type (const '())))))) diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm index 313c8364f8..b6cb8bc726 100644 --- a/gnu/services/mcron.scm +++ b/gnu/services/mcron.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -97,7 +97,8 @@ (mcron-configuration (inherit config) (jobs (append (mcron-configuration-jobs config) - jobs))))))) + jobs))))) + (default-value (mcron-configuration)))) ;empty job list (define* (mcron-service jobs #:optional (mcron mcron2)) "Return an mcron service running @var{mcron} that schedules @var{jobs}, a diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 85fc0b843a..99a3d493c5 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -529,7 +529,8 @@ make an initial adjustment of more than 1,000 seconds." tor-configuration? (tor tor-configuration-tor (default tor)) - (config-file tor-configuration-config-file) + (config-file tor-configuration-config-file + (default (plain-file "empty" ""))) (hidden-services tor-configuration-hidden-services (default '()))) @@ -595,17 +596,31 @@ HiddenServicePort ~a ~a~%" (match config (($ <tor-configuration> tor) (let ((torrc (tor-configuration->torrc config))) - (list (shepherd-service - (provision '(tor)) + (with-imported-modules (source-module-closure + '((gnu build shepherd) + (gnu system file-systems))) + (list (shepherd-service + (provision '(tor)) - ;; Tor needs at least one network interface to be up, hence the - ;; dependency on 'loopback'. - (requirement '(user-processes loopback syslogd)) + ;; 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."))))))) + (modules '((gnu build shepherd) + (gnu system file-systems))) + + (start #~(make-forkexec-constructor/container + (list #$(file-append tor "/bin/tor") "-f" #$torrc) + + #:mappings (list (file-system-mapping + (source "/var/lib/tor") + (target source) + (writable? #t)) + (file-system-mapping + (source "/dev/log") ;for syslog + (target source))))) + (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." @@ -652,7 +667,8 @@ HiddenServicePort ~a ~a~%" (inherit config) (hidden-services (append (tor-configuration-hidden-services config) - services))))))) + services))))) + (default-value (tor-configuration)))) (define* (tor-service #:optional (config-file (plain-file "empty" "")) @@ -705,9 +721,12 @@ project's documentation} for more information." bitlbee-configuration? (bitlbee bitlbee-configuration-bitlbee (default bitlbee)) - (interface bitlbee-configuration-interface) - (port bitlbee-configuration-port) - (extra-settings bitlbee-configuration-extra-settings)) + (interface bitlbee-configuration-interface + (default "127.0.0.1")) + (port bitlbee-configuration-port + (default 6667)) + (extra-settings bitlbee-configuration-extra-settings + (default ""))) (define bitlbee-shepherd-service (match-lambda @@ -775,7 +794,8 @@ project's documentation} for more information." (service-extension account-service-type (const %bitlbee-accounts)) (service-extension activation-service-type - (const %bitlbee-activation)))))) + (const %bitlbee-activation)))) + (default-value (bitlbee-configuration)))) (define* (bitlbee-service #:key (bitlbee bitlbee) (interface "127.0.0.1") (port 6667) @@ -988,7 +1008,8 @@ dns=" dns " (list (service-extension shepherd-root-service-type wpa-supplicant-shepherd-service) (service-extension dbus-root-service-type list) - (service-extension profile-service-type list))))) + (service-extension profile-service-type list))) + (default-value wpa-supplicant))) ;;; diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm index fe55647eef..d40cb993e2 100644 --- a/gnu/services/pm.scm +++ b/gnu/services/pm.scm @@ -20,6 +20,7 @@ #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix records) + #:use-module (gnu packages admin) #:use-module (gnu packages linux) #:use-module (gnu services) #:use-module (gnu services base) @@ -27,7 +28,10 @@ #:use-module (gnu services shepherd) #:use-module (gnu system shadow) #:export (tlp-service-type - tlp-configuration)) + tlp-configuration + + thermald-configuration + thermald-service-type)) (define (uglify-field-name field-name) (let ((str (symbol->string field-name))) @@ -396,9 +400,45 @@ shutdown on system startup.")) (service-extension udev-service-type (compose list tlp-configuration-tlp)) (service-extension activation-service-type - tlp-activation))))) + tlp-activation))) + (default-value (tlp-configuration)))) (define (generate-tlp-documentation) (generate-documentation `((tlp-configuration ,tlp-configuration-fields)) 'tlp-configuration)) + + + +;;; +;;; thermald +;;; +;;; This service implements cpu scaling. Helps prevent overheating! + +(define-record-type* <thermald-configuration> + thermald-configuration make-thermald-configuration + thermald-configuration? + (ignore-cpuid-check? thermald-ignore-cpuid-check? ;boolean + (default #f)) + (thermald thermald-thermald ;package + (default thermald))) + +(define (thermald-shepherd-service config) + (list + (shepherd-service + (provision '(thermald)) + (documentation "Run thermald cpu frequency scaling.") + (start #~(make-forkexec-constructor + '(#$(file-append (thermald-thermald config) "/sbin/thermald") + "--no-daemon" + #$@(if (thermald-ignore-cpuid-check? config) + '("--ignore-cpuid-check") + '())))) + (stop #~(make-kill-destructor))))) + +(define thermald-service-type + (service-type + (name 'thermald) + (extensions (list (service-extension shepherd-root-service-type + thermald-shepherd-service))) + (default-value (thermald-configuration)))) diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 5831220541..7281746ab2 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -163,7 +163,7 @@ assertion failure." (raise (condition (&message (message - (format #f (_ "service '~a' provided more than once") + (format #f (G_ "service '~a' provided more than once") symbol))))))) (for-each assert-unique (shepherd-service-provision service)) @@ -178,7 +178,7 @@ assertion failure." (raise (condition (&message (message - (format #f (_ "service '~a' requires '~a', \ + (format #f (G_ "service '~a' requires '~a', \ which is not provided by any service") (match (shepherd-service-provision service) ((head . _) head) diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index b7f9887b30..2a6c8d45c2 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> @@ -385,7 +385,7 @@ The other options should be self-descriptive." (list (shepherd-service (documentation "OpenSSH server.") - (requirement '(networking syslogd)) + (requirement '(syslogd)) (provision '(ssh-daemon)) (start #~(make-forkexec-constructor #$openssh-command #:pid-file #$pid-file)) @@ -408,7 +408,8 @@ The other options should be self-descriptive." (service-extension activation-service-type openssh-activation) (service-extension account-service-type - (const %openssh-accounts)))))) + (const %openssh-accounts)))) + (default-value (openssh-configuration)))) ;;; diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 11408d7b0e..f85b412159 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> -;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; ;;; This file is part of GNU Guix. @@ -154,12 +154,16 @@ of index files." (nginx-server-configuration-server-name server)) ";\n" (if (nginx-server-configuration-ssl-certificate server) - (string-append " ssl_certificate " - (nginx-server-configuration-ssl-certificate server) ";\n") + (let ((certificate (nginx-server-configuration-ssl-certificate server))) + ;; lstat fails when the certificate file does not exist: it aborts + ;; and lets the user fix their configuration. + (lstat certificate) + (string-append " ssl_certificate " certificate ";\n")) "") (if (nginx-server-configuration-ssl-certificate-key server) - (string-append " ssl_certificate_key " - (nginx-server-configuration-ssl-certificate-key server) ";\n") + (let ((key (nginx-server-configuration-ssl-certificate-key server))) + (lstat key) + (string-append " ssl_certificate_key " key ";\n")) "") " root " (nginx-server-configuration-root server) ";\n" " index " (config-index-strings (nginx-server-configuration-index server)) ";\n" @@ -180,7 +184,7 @@ of index files." (nginx-upstream-configuration-servers upstream))) " }\n")) -(define (default-nginx-config log-directory run-directory server-list upstream-list) +(define (default-nginx-config nginx log-directory run-directory server-list upstream-list) (mixed-text-file "nginx.conf" "user nginx nginx;\n" "pid " run-directory "/pid;\n" @@ -192,6 +196,7 @@ of index files." " uwsgi_temp_path " run-directory "/uwsgi_temp;\n" " scgi_temp_path " run-directory "/scgi_temp;\n" " access_log " log-directory "/access.log;\n" + " include " nginx "/share/nginx/conf/mime.types;\n" "\n" (string-join (filter (lambda (section) (not (null? section))) @@ -232,10 +237,13 @@ of index files." (mkdir-p (string-append #$run-directory "/fastcgi_temp")) (mkdir-p (string-append #$run-directory "/uwsgi_temp")) (mkdir-p (string-append #$run-directory "/scgi_temp")) + ;; Start-up logs. Once configuration is loaded, nginx switches to + ;; log-directory. + (mkdir-p (string-append #$run-directory "/logs")) ;; Check configuration file syntax. (system* (string-append #$nginx "/sbin/nginx") "-c" #$(or config-file - (default-nginx-config log-directory + (default-nginx-config nginx log-directory run-directory server-blocks upstream-blocks)) "-t"))))) @@ -250,7 +258,7 @@ of index files." (zero? (system* #$nginx-binary "-c" #$(or config-file - (default-nginx-config log-directory + (default-nginx-config nginx log-directory run-directory server-blocks upstream-blocks)) #$@args)))))) diff --git a/gnu/system.scm b/gnu/system.scm index 0f52351cf0..0076f2fcb1 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,7 +48,7 @@ #:use-module (gnu services) #:use-module (gnu services shepherd) #:use-module (gnu services base) - #:use-module (gnu system grub) + #:use-module (gnu bootloader) #:use-module (gnu system shadow) #:use-module (gnu system nss) #:use-module (gnu system locale) @@ -92,7 +93,7 @@ operating-system-derivation operating-system-profile - operating-system-grub.cfg + operating-system-bootcfg operating-system-etc-directory operating-system-locale-directory operating-system-boot-script @@ -103,12 +104,14 @@ boot-parameters? boot-parameters-label boot-parameters-root-device + boot-parameters-boot-name boot-parameters-store-device boot-parameters-store-mount-point boot-parameters-kernel boot-parameters-kernel-arguments boot-parameters-initrd read-boot-parameters + read-boot-parameters-file local-host-aliases %setuid-programs @@ -121,6 +124,14 @@ ;;; ;;; Code: +(define (bootable-kernel-arguments kernel-arguments system.drv root-device) + "Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be +booted from ROOT-DEVICE" + (cons* (string-append "--root=" root-device) + #~(string-append "--system=" #$system.drv) + #~(string-append "--load=" #$system.drv "/boot") + kernel-arguments)) + ;; System-wide configuration. ;; TODO: Add per-field docstrings/stexi. (define-record-type* <operating-system> operating-system @@ -128,9 +139,9 @@ operating-system? (kernel operating-system-kernel ; package (default linux-libre)) - (kernel-arguments operating-system-kernel-arguments + (kernel-arguments operating-system-user-kernel-arguments (default '())) ; list of gexps/strings - (bootloader operating-system-bootloader) ; <grub-configuration> + (bootloader operating-system-bootloader) ; <bootloader-configuration> (initrd operating-system-initrd ; (list fs) -> M derivation (default base-initrd)) @@ -181,6 +192,113 @@ (sudoers-file operating-system-sudoers-file ; file-like (default %sudoers-specification))) +(define (operating-system-kernel-arguments os system.drv root-device) + "Return all the kernel arguments, including the ones not specified +directly by the user." + (bootable-kernel-arguments (operating-system-user-kernel-arguments os) + system.drv + root-device)) + + +;;; +;;; Boot parameters +;;; + +(define-record-type* <boot-parameters> + boot-parameters make-boot-parameters boot-parameters? + (label boot-parameters-label) + ;; Because we will use the 'store-device' to create the GRUB search command, + ;; the 'store-device' has slightly different semantics than 'root-device'. + ;; The 'store-device' can be a file system uuid, a file system label, or #f, + ;; but it cannot be a device path such as "/dev/sda3", since GRUB would not + ;; understand that. The 'root-device', on the other hand, corresponds + ;; exactly to the device field of the <file-system> object representing the + ;; OS's root file system, so it might be a device path like "/dev/sda3". + (root-device boot-parameters-root-device) + (boot-name boot-parameters-boot-name) + (store-device boot-parameters-store-device) + (store-mount-point boot-parameters-store-mount-point) + (kernel boot-parameters-kernel) + (kernel-arguments boot-parameters-kernel-arguments) + (initrd boot-parameters-initrd)) + +(define (read-boot-parameters port) + "Read boot parameters from PORT and return the corresponding +<boot-parameters> 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) + + (boot-name + (match (assq 'boot-name rest) + ((_ args) args) + (#f 'grub))) ; for compatibility reasons. + + ;; In the past, we would store the directory name of the kernel instead + ;; of the absolute file name of its image. Detect that and correct it. + (kernel (if (string=? linux (direct-store-path linux)) + (string-append linux "/" + (system-linux-image-file-name)) + linux)) + + (kernel-arguments + (match (assq 'kernel-arguments rest) + ((_ args) args) + (#f '()))) ;the old format + + (initrd + (match (assq 'initrd rest) + (('initrd ('string-append directory file)) ;the old format + (string-append directory file)) + (('initrd (? string? file)) + file))) + + (store-device + (match (assq 'store rest) + (('store ('device device) _ ...) + device) + (_ ;the old format + ;; Root might be a device path like "/dev/sda1", which is not a + ;; suitable GRUB device identifier. + (if (string-prefix? "/" root) + #f + root)))) + + (store-mount-point + (match (assq 'store rest) + (('store ('device _) ('mount-point mount-point) _ ...) + mount-point) + (_ ;the old format + "/"))))) + (x ;unsupported format + (warning (G_ "unrecognized boot parameters for '~a'~%") + system) + #f))) + +(define (read-boot-parameters-file system) + "Read boot parameters from SYSTEM's (system or generation) \"parameters\" +file and returns the corresponding <boot-parameters> object or #f if the +format is unrecognized. +The object has its kernel-arguments extended in order to make it bootable." + (let* ((file (string-append system "/parameters")) + (params (call-with-input-file file read-boot-parameters)) + (root (boot-parameters-root-device params)) + (root-device (if (bytevector? root) + (uuid->string root) + root)) + (kernel-arguments (boot-parameters-kernel-arguments params))) + (if params + (boot-parameters + (inherit params) + (kernel-arguments (bootable-kernel-arguments kernel-arguments + system + root-device))) + #f))) ;;; ;;; Services. @@ -277,7 +395,7 @@ value of the SYSTEM-SERVICE-TYPE service." (mlet %store-monad ((kernel -> (operating-system-kernel os)) (initrd (operating-system-initrd-file os)) - (params (operating-system-parameters-file os))) + (params (operating-system-boot-parameters-file os))) (return `(("kernel" ,kernel) ("parameters" ,params) ("initrd" ,initrd) @@ -384,7 +502,7 @@ explicitly appear in OS." ;; The packages below are also in %FINAL-INPUTS, so take them from ;; there to avoid duplication. (map canonical-package - (list guile-2.0 bash coreutils findutils grep sed + (list guile-2.2 bash coreutils-8.27 findutils grep sed diffutils patch gawk tar gzip bzip2 xz lzip)))) (define %default-issue @@ -521,7 +639,7 @@ This is for backward-compatibility of fields that used to be strings and are now file-like objects.." (match thing ((? string?) - (warning (_ "using a string for file '~a' is deprecated; \ + (warning (G_ "using a string for file '~a' is deprecated; \ use 'plain-file' instead~%") file-name) (plain-file file-name thing)) @@ -537,7 +655,7 @@ and are now file-like objects." (with-monad %store-monad (match thing ((? procedure?) - (warning (_ "using a monadic value for '~a' is deprecated; \ + (warning (G_ "using a monadic value for '~a' is deprecated; \ use 'plain-file' instead~%") file-name) thing) @@ -614,7 +732,7 @@ hardware-related operations as necessary when booting a Linux container." (let* ((services (operating-system-services os #:container? container?)) (boot (fold-services services #:target-type boot-service-type))) ;; BOOT is the script as a monadic value. - (service-parameters boot))) + (service-value boot))) (define (operating-system-user-accounts os) "Return the list of user accounts of OS." @@ -622,12 +740,12 @@ hardware-related operations as necessary when booting a Linux container." (account (fold-services services #:target-type account-service-type))) (filter user-account? - (service-parameters account)))) + (service-value account)))) (define (operating-system-shepherd-service-names os) "Return the list of Shepherd service names for OS." (append-map shepherd-service-provision - (service-parameters + (service-value (fold-services (operating-system-services os) #:target-type shepherd-root-service-type)))) @@ -637,7 +755,7 @@ hardware-related operations as necessary when booting a Linux container." (let* ((services (operating-system-services os #:container? container?)) (system (fold-services services))) ;; SYSTEM contains the derivation as a monadic value. - (service-parameters system))) + (service-value system))) (define* (operating-system-profile os #:key container?) "Return a derivation that builds the system profile of OS." @@ -679,7 +797,7 @@ hardware-related operations as necessary when booting a Linux container." (#f (raise (condition (&message - (message (format #f (_ "~a: invalid locale name") name)))))) + (message (format #f (G_ "~a: invalid locale name") name)))))) (def def))) (define (operating-system-locale-directory os) @@ -700,8 +818,8 @@ listed in OS. The C library expects to find it under (locale-directory definitions #:libcs (operating-system-locale-libcs os))) -(define (kernel->grub-label kernel) - "Return a label for the GRUB menu entry that boots KERNEL." +(define (kernel->boot-label kernel) + "Return a label for the bootloader menu entry that boots KERNEL." (string-append "GNU with " (string-titlecase (package-name kernel)) " " (package-version kernel) @@ -728,39 +846,22 @@ listed in OS. The C library expects to find it under "Return the file system that contains the store of OS." (store-file-system (operating-system-file-systems os))) -(define* (operating-system-grub.cfg os #:optional (old-entries '())) - "Return the GRUB configuration file for OS. Use OLD-ENTRIES to populate the -\"old entries\" menu." +(define* (operating-system-bootcfg os #:optional (old-entries '())) + "Return the bootloader configuration file for OS. Use OLD-ENTRIES to +populate the \"old entries\" menu." (mlet* %store-monad ((system (operating-system-derivation os)) (root-fs -> (operating-system-root-file-system os)) - (store-fs -> (operating-system-store-file-system os)) - (label -> (kernel->grub-label (operating-system-kernel os))) - (kernel -> (operating-system-kernel-file os)) - (initrd (operating-system-initrd-file os)) (root-device -> (if (eq? 'uuid (file-system-title root-fs)) (uuid->string (file-system-device root-fs)) (file-system-device root-fs))) - (entries -> (list (menu-entry - (label label) - - ;; The device where the kernel and initrd live. - (device (grub-device store-fs)) - (device-mount-point - (file-system-mount-point store-fs)) - - (linux kernel) - (linux-arguments - (cons* (string-append "--root=" root-device) - #~(string-append "--system=" #$system) - #~(string-append "--load=" #$system - "/boot") - (operating-system-kernel-arguments os))) - (initrd initrd))))) - (grub-configuration-file (operating-system-bootloader os) entries - #:old-entries old-entries))) - -(define (grub-device fs) + (entry (operating-system-boot-parameters os system root-device)) + (bootloader-conf -> (operating-system-bootloader os))) + ((bootloader-configuration-file-generator + (bootloader-configuration-bootloader bootloader-conf)) + bootloader-conf (list entry) #:old-entries old-entries))) + +(define (fs->boot-device fs) "Given FS, a <file-system> object, return a value suitable for use as the device in a <menu-entry>." (case (file-system-title fs) @@ -768,101 +869,56 @@ device in a <menu-entry>." ((label) (file-system-device fs)) (else #f))) -(define (operating-system-parameters-file os) - "Return a file that describes the boot parameters of OS. The primary use of -this file is the reconstruction of GRUB menu entries for old configurations." - (mlet %store-monad ((initrd (operating-system-initrd-file os)) - (root -> (operating-system-root-file-system os)) - (store -> (operating-system-store-file-system os)) - (label -> (kernel->grub-label - (operating-system-kernel os)))) - (gexp->file "parameters" - #~(boot-parameters - (version 0) - (label #$label) - (root-device #$(file-system-device root)) - (kernel #$(operating-system-kernel-file os)) - (kernel-arguments - #$(operating-system-kernel-arguments os)) - (initrd #$initrd) - (store - (device #$(grub-device store)) - (mount-point #$(file-system-mount-point store)))) - #:set-load-path? #f))) - - -;;; -;;; Boot parameters -;;; - -(define-record-type* <boot-parameters> - boot-parameters make-boot-parameters boot-parameters? - (label boot-parameters-label) - ;; Because we will use the 'store-device' to create the GRUB search command, - ;; the 'store-device' has slightly different semantics than 'root-device'. - ;; The 'store-device' can be a file system uuid, a file system label, or #f, - ;; but it cannot be a device path such as "/dev/sda3", since GRUB would not - ;; understand that. The 'root-device', on the other hand, corresponds - ;; exactly to the device field of the <file-system> object representing the - ;; OS's root file system, so it might be a device path like "/dev/sda3". - (root-device boot-parameters-root-device) - (store-device boot-parameters-store-device) - (store-mount-point boot-parameters-store-mount-point) - (kernel boot-parameters-kernel) - (kernel-arguments boot-parameters-kernel-arguments) - (initrd boot-parameters-initrd)) - -(define (read-boot-parameters port) - "Read boot parameters from PORT and return the corresponding -<boot-parameters> 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) - - ;; In the past, we would store the directory name of the kernel instead - ;; of the absolute file name of its image. Detect that and correct it. - (kernel (if (string=? linux (direct-store-path linux)) - (string-append linux "/" - (system-linux-image-file-name)) - linux)) - - (kernel-arguments - (match (assq 'kernel-arguments rest) - ((_ args) args) - (#f '()))) ;the old format - - (initrd - (match (assq 'initrd rest) - (('initrd ('string-append directory file)) ;the old format - (string-append directory file)) - (('initrd (? string? file)) - file))) - - (store-device - (match (assq 'store rest) - (('store ('device device) _ ...) - device) - (_ ;the old format - ;; Root might be a device path like "/dev/sda1", which is not a - ;; suitable GRUB device identifier. - (if (string-prefix? "/" root) - #f - root)))) - - (store-mount-point - (match (assq 'store rest) - (('store ('device _) ('mount-point mount-point) _ ...) - mount-point) - (_ ;the old format - "/"))))) - (x ;unsupported format - (warning (_ "unrecognized boot parameters for '~a'~%") - system) - #f))) +(define (operating-system-boot-parameters os system.drv root-device) + "Return a monadic <boot-parameters> record that describes the boot parameters +of OS. SYSTEM.DRV is either a derivation or #f. If it's a derivation, adds +kernel arguments for that derivation to <boot-parameters>." + (mlet* %store-monad + ((initrd (operating-system-initrd-file os)) + (store -> (operating-system-store-file-system os)) + (bootloader -> (bootloader-configuration-bootloader + (operating-system-bootloader os))) + (boot-name -> (bootloader-name bootloader)) + (label -> (kernel->boot-label (operating-system-kernel os)))) + (return (boot-parameters + (label label) + (root-device root-device) + (kernel (operating-system-kernel-file os)) + (kernel-arguments + (if system.drv + (operating-system-kernel-arguments os system.drv root-device) + (operating-system-user-kernel-arguments os))) + (initrd initrd) + (boot-name boot-name) + (store-device (fs->boot-device store)) + (store-mount-point (file-system-mount-point store)))))) + +(define* (operating-system-boot-parameters-file os #:optional (system.drv #f)) + "Return a file that describes the boot parameters of OS. The primary use of +this file is the reconstruction of GRUB menu entries for old configurations. +SYSTEM.DRV is optional. If given, adds kernel arguments for that system to the +returned file (since the returned file is then usually stored into the +content-addressed \"system\" directory, it's usually not a good idea +to give it because the content hash would change by the content hash +being stored into the \"parameters\" file)." + (mlet* %store-monad ((root -> (operating-system-root-file-system os)) + (device -> (file-system-device root)) + (params (operating-system-boot-parameters os + system.drv + device))) + (gexp->file "parameters" + #~(boot-parameters + (version 0) + (label #$(boot-parameters-label params)) + (root-device #$(boot-parameters-root-device params)) + (kernel #$(boot-parameters-kernel params)) + (kernel-arguments + #$(boot-parameters-kernel-arguments params)) + (initrd #$(boot-parameters-initrd params)) + (boot-name #$(boot-parameters-boot-name params)) + (store + (device #$(boot-parameters-store-device params)) + (mount-point #$(boot-parameters-store-mount-point params)))) + #:set-load-path? #f))) ;;; system.scm ends here diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index 222ddda579..f7b8823d4f 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -43,5 +43,7 @@ ;; Add services to the baseline: a DHCP client and ;; an SSH server. (services (cons* (dhcp-client-service) - (lsh-service #:port-number 2222) + (service openssh-service-type + (openssh-configuration + (port-number 2222))) %base-services))) diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index 389ec8574b..6fb6283d29 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -4,23 +4,31 @@ (use-modules (gnu) (gnu system nss)) (use-service-modules desktop) -(use-package-modules wm ratpoison certs suckless) +(use-package-modules bootloaders certs ratpoison suckless wm) (operating-system (host-name "antelope") (timezone "Europe/Paris") (locale "en_US.utf8") - ;; Assuming /dev/sdX is the target hard disk, and "my-root" - ;; is the label of the target root file system. - (bootloader (grub-configuration (device "/dev/sdX"))) - - (file-systems (cons (file-system - (device "my-root") - (title 'label) - (mount-point "/") - (type "ext4")) - %base-file-systems)) + ;; Use the UEFI variant of GRUB with the EFI System + ;; Partition on /dev/sda1. + (bootloader (grub-configuration (grub grub-efi) + (device "/dev/sda1"))) + + ;; Assume the target root file system is labelled "my-root". + (file-systems (cons* (file-system + (device "my-root") + (title 'label) + (mount-point "/") + (type "ext4")) + (file-system + ;; Specify partition here since FAT + ;; labels are currently unsupported. + (device "/dev/sda1") + (mount-point "/boot/efi") + (type "vfat")) + %base-file-systems)) (users (cons (user-account (name "alice") diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl new file mode 100644 index 0000000000..57ac71c535 --- /dev/null +++ b/gnu/system/examples/vm-image.tmpl @@ -0,0 +1,53 @@ +;;; This is an operating system configuration template for a "bare-bones" setup, +;;; suitable for booting in a virtualized environment, including virtual private +;;; servers (VPS). + +(use-modules (gnu)) +(use-package-modules bootloaders disk nvi) + +(define vm-image-motd (plain-file "motd" " +This is the GNU system. Welcome! + +This instance of GuixSD is a bare-bones template for virtualized environments. + +You will probably want to do these things first if you booted in a virtual +private server (VPS): + +* Set a password for 'root'. +* Set up networking. +* Expand the root partition to fill the space available by 0) deleting and +recreating the partition with fdisk, 1) reloading the partition table with +partprobe, and then 2) resizing the filesystem with resize2fs.\n")) + +(operating-system + (host-name "gnu") + (timezone "Etc/UTC") + (locale "en_US.utf8") + + ;; Assuming /dev/sdX is the target hard disk, and "my-root" is + ;; the label of the target root file system. + (bootloader (grub-configuration (device "/dev/sda") + (terminal-outputs '(console)))) + (file-systems (cons (file-system + (device "my-root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + + ;; This is where user accounts are specified. The "root" + ;; account is implicit, and is initially created with the + ;; empty password. + (users %base-user-accounts) + + ;; Globally-installed packages. + (packages (cons* nvi fdisk + grub ; mostly so xrefs to its manual work + parted ; partprobe + %base-packages)) + + (services (modify-services %base-services + (login-service-type config => + (login-configuration + (inherit config) + (motd vm-image-motd)))))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 191ccf1680..0a78d030dd 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ #:use-module (guix monads) #:use-module ((guix store) #:select (%store-prefix)) #:use-module (gnu services shepherd) + #:use-module (gnu services ssh) #:use-module (gnu packages admin) #:use-module (gnu packages bash) #:use-module (gnu packages bootloaders) @@ -262,6 +264,16 @@ You have been warned. Thanks for being so brave. ;; To facilitate copy/paste. (gpm-service) + ;; Add an SSH server to facilitate remote installs. + (service openssh-service-type + (openssh-configuration + (port-number 22) + (permit-root-login #t) + ;; The root account is passwordless, so make sure + ;; a password is set before allowing logins. + (allow-empty-passwords? #f) + (password-authentication? #t))) + ;; 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 @@ -329,6 +341,7 @@ Use Alt-F2 for documentation. (base-pam-services #:allow-empty-passwords? #t)) (packages (cons* (canonical-package glibc) ;for 'tzselect' & co. + shadow ;'passwd', for easy SSH access parted gptfdisk ddrescue grub ;mostly so xrefs to its manual work cryptsetup diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index dfe198e43e..3a5e76034a 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -268,6 +268,7 @@ loaded at boot time in the order in which they appear." "usbhid" "hid-generic" "hid-apple" ;keyboards during early boot "dm-crypt" "xts" "serpent_generic" "wp512" ;for encrypted root partitions "nvme" ;for new SSD NVMe devices + "nls_iso8859-1" ;for `mkfs.fat`, et.al ,@(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 @@ -281,9 +282,6 @@ loaded at boot time in the order in which they appear." ,@(if (find (file-system-type-predicate "9p") file-systems) virtio-9p-modules '()) - ,@(if (find (file-system-type-predicate "vfat") file-systems) - '("nls_iso8859-1") - '()) ,@(if (find (file-system-type-predicate "btrfs") file-systems) '("btrfs") '()) diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm index 4546c1a73a..eedf933946 100644 --- a/gnu/system/pam.scm +++ b/gnu/system/pam.scm @@ -204,21 +204,27 @@ dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE." (env (pam-entry ; to honor /etc/environment. (control "required") (module "pam_env.so")))) - (lambda* (name #:key allow-empty-passwords? motd) + (lambda* (name #:key allow-empty-passwords? (allow-root? #f) motd) "Return a standard Unix-style PAM service for NAME. When -ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it -should be a file-like object used as the message-of-the-day." +ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When ALLOW-ROOT? is +true, allow root to run the command without authentication. When MOTD is +true, it should be a file-like object used as the message-of-the-day." ;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>. (let ((name* name)) (pam-service (name name*) (account (list unix)) - (auth (list (if allow-empty-passwords? - (pam-entry - (control "required") - (module "pam_unix.so") - (arguments '("nullok"))) - unix))) + (auth (append (if allow-root? + (list (pam-entry + (control "sufficient") + (module "pam_rootok.so"))) + '()) + (list (if allow-empty-passwords? + (pam-entry + (control "required") + (module "pam_unix.so") + (arguments '("nullok"))) + unix)))) (password (list (pam-entry (control "required") (module "pam_unix.so") @@ -256,7 +262,12 @@ authenticate to run COMMAND." ;; These programs are setuid-root. (map (cut unix-pam-service <> #:allow-empty-passwords? allow-empty-passwords?) - '("su" "passwd" "sudo")) + '("passwd" "sudo")) + ;; This is setuid-root, as well. Allow root to run "su" without + ;; authenticating. + (list (unix-pam-service "su" + #:allow-empty-passwords? allow-empty-passwords? + #:allow-root? #t)) ;; 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 1acfcc4866..b30ef8e390 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -220,7 +220,7 @@ set debug-file-directory ~/.guix-profile/lib/debug\n"))) (raise (condition (&message (message - (format #f (_ "supplementary group '~a' \ + (format #f (G_ "supplementary group '~a' \ of user '~a' is undeclared") group (user-account-name user)))))))) @@ -230,7 +230,7 @@ of user '~a' is undeclared") (raise (condition (&message (message - (format #f (_ "primary group '~a' \ + (format #f (G_ "primary group '~a' \ of user '~a' is undeclared") (user-account-group user) (user-account-name user))))))) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 5c6e7f684a..ad5e6b75bb 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,10 +47,11 @@ #:select (%guile-static-stripped)) #:use-module (gnu packages admin) + #:use-module (gnu bootloader) #:use-module (gnu system shadow) #:use-module (gnu system pam) #:use-module (gnu system linux-initrd) - #:use-module (gnu system grub) + #:use-module (gnu bootloader) #:use-module (gnu system file-systems) #:use-module (gnu system) #:use-module (gnu services) @@ -175,8 +178,9 @@ made available under the /xchg CIFS share." (disk-image-format "qcow2") (file-system-type "ext4") file-system-label - os-derivation - grub-configuration + os-drv + bootcfg-drv + bootloader (register-closures? #t) (inputs '()) copy-inputs?) @@ -200,7 +204,7 @@ the image." (guix build utils)) (let ((inputs - '#$(append (list qemu parted grub e2fsprogs) + '#$(append (list qemu parted e2fsprogs dosfstools) (map canonical-package (list sed grep coreutils findutils gawk)) (if register-closures? (list guix) '()))) @@ -222,17 +226,36 @@ the image." #:closures graphs #:copy-closures? #$copy-inputs? #:register-closures? #$register-closures? - #:system-directory #$os-derivation)) + #:system-directory #$os-drv)) (partitions (list (partition (size #$(- disk-image-size - (* 10 (expt 2 20)))) + (* 50 (expt 2 20)))) (label #$file-system-label) (file-system #$file-system-type) - (bootable? #t) - (initializer initialize))))) + (flags '(boot)) + (initializer initialize)) + ;; Append a small EFI System Partition for + ;; use with UEFI bootloaders. + (partition + ;; The standalone grub image is about 10MiB, but + ;; leave some room for custom or multiple images. + (size (* 40 (expt 2 20))) + (label "GNU-ESP") ;cosmetic only + ;; Use "vfat" here since this property is used + ;; when mounting. The actual FAT-ness is based + ;; on filesystem size (16 in this case). + (file-system "vfat") + (flags '(esp)))))) (initialize-hard-disk "/dev/vda" #:partitions partitions - #:grub.cfg #$grub-configuration) + #:grub-efi #$grub-efi + #:bootloader-package + #$(bootloader-package bootloader) + #:bootcfg #$bootcfg-drv + #:bootcfg-location + #$(bootloader-configuration-file bootloader) + #:bootloader-installer + #$(bootloader-installer bootloader)) (reboot))))) #:system system #:make-disk-image? #t @@ -284,10 +307,12 @@ to USB sticks meant to be read-only." file-systems-to-keep))))) (mlet* %store-monad ((os-drv (operating-system-derivation os)) - (grub.cfg (operating-system-grub.cfg os))) + (bootcfg (operating-system-bootcfg os))) (qemu-image #:name name - #:os-derivation os-drv - #:grub-configuration grub.cfg + #:os-drv os-drv + #:bootcfg-drv bootcfg + #:bootloader (bootloader-configuration-bootloader + (operating-system-bootloader os)) #:disk-image-size disk-image-size #:disk-image-format "raw" #:file-system-type file-system-type @@ -295,7 +320,7 @@ to USB sticks meant to be read-only." #:copy-inputs? #t #:register-closures? #t #:inputs `(("system" ,os-drv) - ("grub.cfg" ,grub.cfg)))))) + ("bootcfg" ,bootcfg)))))) (define* (system-qemu-image os #:key @@ -328,13 +353,15 @@ of the GNU system as described by OS." file-systems-to-keep))))) (mlet* %store-monad ((os-drv (operating-system-derivation os)) - (grub.cfg (operating-system-grub.cfg os))) - (qemu-image #:os-derivation os-drv - #:grub-configuration grub.cfg + (bootcfg (operating-system-bootcfg os))) + (qemu-image #:os-drv os-drv + #:bootcfg-drv bootcfg + #:bootloader (bootloader-configuration-bootloader + (operating-system-bootloader os)) #:disk-image-size disk-image-size #:file-system-type file-system-type #:inputs `(("system" ,os-drv) - ("grub.cfg" ,grub.cfg)) + ("bootcfg" ,bootcfg)) #:copy-inputs? #t)))) @@ -423,16 +450,18 @@ When FULL-BOOT? is true, return an image that does a complete boot sequence, bootloaded included; thus, make a disk image that contains everything the bootloader refers to: OS kernel, initrd, bootloader data, etc." (mlet* %store-monad ((os-drv (operating-system-derivation os)) - (grub.cfg (operating-system-grub.cfg os))) + (bootcfg (operating-system-bootcfg os))) ;; XXX: When FULL-BOOT? is true, we end up creating an image that contains - ;; GRUB.CFG and all its dependencies, including the output of OS-DRV. + ;; BOOTCFG and all its dependencies, including the output of OS-DRV. ;; This is more than needed (we only need the kernel, initrd, GRUB for its ;; font, and the background image), but it's hard to filter that. - (qemu-image #:os-derivation os-drv - #:grub-configuration grub.cfg + (qemu-image #:os-drv os-drv + #:bootcfg-drv bootcfg + #:bootloader (bootloader-configuration-bootloader + (operating-system-bootloader os)) #:disk-image-size disk-image-size #:inputs (if full-boot? - `(("grub.cfg" ,grub.cfg)) + `(("bootcfg" ,bootcfg)) '()) ;; XXX: Passing #t here is too slow, so let it off by default. @@ -470,7 +499,7 @@ with '-virtfs' options for the host file systems listed in SHARED-FS." (mappings '()) full-boot? (disk-image-size - (* (if full-boot? 500 30) + (* (if full-boot? 500 70) (expt 2 20)))) "Return a derivation that builds a script to run a virtual machine image of OS that shares its store with the host. @@ -489,11 +518,8 @@ it is mostly useful when FULL-BOOT? is true." #:full-boot? full-boot? #:disk-image-size disk-image-size))) (define kernel-arguments - #~(list "--root=/dev/vda1" - (string-append "--system=" #$os-drv) - (string-append "--load=" #$os-drv "/boot") - #$@(if graphic? #~() #~("console=ttyS0")) - #+@(operating-system-kernel-arguments os))) + #~(list #$@(if graphic? #~() #~("console=ttyS0")) + #+@(operating-system-kernel-arguments os os-drv "/dev/vda1"))) (define qemu-exec #~(list (string-append #$qemu "/bin/" #$(qemu-command (%current-system))) diff --git a/gnu/tests.scm b/gnu/tests.scm index e84d1ebb20..2886a982f4 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,14 +21,14 @@ #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix records) + #:use-module (gnu bootloader grub) #:use-module (gnu system) - #:use-module (gnu system grub) #:use-module (gnu system file-systems) #:use-module (gnu system shadow) #:use-module (gnu services) #:use-module (gnu services base) #:use-module (gnu services shepherd) - #:use-module ((gnu packages) #:select (scheme-modules)) + #:use-module (guix discovery) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9 gnu) #:use-module (ice-9 match) @@ -263,17 +264,12 @@ the system under test." (define (fold-system-tests proc seed) "Invoke PROC on each system test, passing it the test and the previous result." - (fold (lambda (module result) - (fold (lambda (thing result) - (if (system-test? thing) - (proc thing result) - result)) - result - (module-map (lambda (sym var) - (false-if-exception (variable-ref var))) - module))) - '() - (test-modules))) + (fold-module-public-variables (lambda (obj result) + (if (system-test? obj) + (cons obj result) + result)) + '() + (test-modules))) (define (all-system-tests) "Return the list of system tests." diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index bcb8299c73..e5ac320b74 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -31,6 +31,7 @@ #:use-module (gnu services networking) #:use-module (gnu packages imagemagick) #:use-module (gnu packages ocr) + #:use-module (gnu packages package-management) #:use-module (guix gexp) #:use-module (guix store) #:use-module (guix monads) @@ -56,7 +57,7 @@ passed a gexp denoting the marionette, and it must return gexp that is inserted before the first test. This is used to introduce an extra initialization step, such as entering a LUKS passphrase." (define special-files - (service-parameters + (service-value (fold-services (operating-system-services os) #:target-type special-files-service-type))) @@ -198,6 +199,28 @@ info --version") ',users+homes)) marionette))) + (test-equal "no extra home directories" + '() + + ;; Make sure the home directories that are not supposed to be + ;; created are indeed not created. + (let ((nonexistent + '#$(filter-map (lambda (user) + (and (not + (user-account-create-home-directory? + user)) + (user-account-home-directory user))) + (operating-system-user-accounts os)))) + (marionette-eval + `(begin + (use-modules (srfi srfi-1)) + + ;; Note: Do not flag "/var/empty". + (filter file-exists? + ',(remove (cut string-prefix? "/var/" <>) + nonexistent))) + marionette))) + (test-equal "login on tty1" "root\n" (begin @@ -296,28 +319,24 @@ info --version") (setlocale LC_ALL before)) marionette)) - (test-assert "/run/current-system is a GC root" + (test-eq "/run/current-system is a GC root" + 'success! (marionette-eval '(begin ;; Make sure the (guix …) modules are found. - (eval-when (expand load eval) - (set! %load-path - (cons - (string-append - "/run/current-system/profile/share/guile/site/" - (effective-version)) - %load-path)) - (set! %load-compiled-path - (cons - (string-append - "/run/current-system/profile/share/guile/site/" - (effective-version)) - %load-compiled-path))) + ;; + ;; XXX: Currently shepherd and marionette run + ;; on Guile 2.0 whereas Guix is on 2.2. Yet + ;; we should be able to load the 2.0 Scheme + ;; files since it's pure Scheme. + (add-to-load-path + #+(file-append guix "/share/guile/site/2.2")) (use-modules (srfi srfi-34) (guix store)) (let ((system (readlink "/run/current-system"))) (guard (c ((nix-protocol-error? c) - (file-exists? system))) + (and (file-exists? system) + 'success!))) (with-store store (delete-paths store (list system)) #f)))) diff --git a/gnu/tests/dict.scm b/gnu/tests/dict.scm index f7a48ab634..16b6edbd9e 100644 --- a/gnu/tests/dict.scm +++ b/gnu/tests/dict.scm @@ -97,15 +97,16 @@ '(begin (use-modules (ice-9 rdelim)) (let ((sock (socket PF_INET SOCK_STREAM 0))) - (let loop () - (pk 'try) + (let loop ((i 0)) + (pk 'try i) (catch 'system-error (lambda () (connect sock AF_INET INADDR_LOOPBACK 2628)) (lambda args (pk 'connection-error args) - (sleep 1) - (loop)))) + (when (< i 20) + (sleep 1) + (loop (+ 1 i)))))) (read-line sock 'concat))) marionette)) diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm index d5c08b7f09..247f4f667f 100644 --- a/gnu/tests/mail.scm +++ b/gnu/tests/mail.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> +;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +27,9 @@ #:use-module (guix gexp) #:use-module (guix monads) #:use-module (guix store) - #:export (%test-opensmtpd)) + #:use-module (ice-9 ftw) + #:export (%test-opensmtpd + %test-exim)) (define %opensmtpd-os (simple-operating-system @@ -146,3 +149,133 @@ accept from any for local deliver to mbox (name "opensmtpd") (description "Send an email to a running OpenSMTPD server.") (value (run-opensmtpd-test)))) + + +(define %exim-os + (simple-operating-system + (dhcp-client-service) + (service mail-aliases-service-type '()) + (service exim-service-type + (exim-configuration + (config-file + (plain-file "exim.conf" " +primary_hostname = komputilo +domainlist local_domains = @ +domainlist relay_to_domains = +hostlist relay_from_hosts = localhost + +never_users = + +acl_smtp_rcpt = acl_check_rcpt +acl_smtp_data = acl_check_data + +begin acl + +acl_check_rcpt: + accept +acl_check_data: + accept +")))))) + +(define (run-exim-test) + "Return a test of an OS running an Exim service." + (mlet* %store-monad ((command (system-qemu-image/shared-store-script + (marionette-operating-system + %exim-os + #:imported-modules '((gnu services herd))) + #:graphic? #f))) + (define test + (with-imported-modules '((gnu build marionette) + (ice-9 ftw)) + #~(begin + (use-modules (rnrs base) + (srfi srfi-64) + (ice-9 ftw) + (ice-9 rdelim) + (ice-9 regex) + (gnu build marionette)) + + (define marionette + (make-marionette + ;; Enable TCP forwarding of the guest's port 25. + '(#$command "-net" "user,hostfwd=tcp::1025-:25"))) + + (define (read-reply-code port) + "Read a SMTP reply from PORT and return its reply code." + (let* ((line (read-line port)) + (mo (string-match "([0-9]+)([ -]).*" line)) + (code (string->number (match:substring mo 1))) + (finished? (string= " " (match:substring mo 2)))) + (if finished? + code + (read-reply-code port)))) + + (define smtp (socket AF_INET SOCK_STREAM 0)) + (define addr (make-socket-address AF_INET INADDR_LOOPBACK 1025)) + + (mkdir #$output) + (chdir #$output) + + (test-begin "exim") + + (test-assert "service is running" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (start-service 'exim) + #t) + marionette)) + + (sleep 1) ;; give the service time to start talking + + (connect smtp addr) + ;; Be greeted. + (test-eq "greeting received" + 220 (read-reply-code smtp)) + ;; Greet the server. + (write-line "EHLO somehost" smtp) + (test-eq "greeting successful" + 250 (read-reply-code smtp)) + ;; Set sender email. + (write-line "MAIL FROM: test@example.com" smtp) + (test-eq "sender set" + 250 (read-reply-code smtp)) ;250 + ;; Set recipient email. + (write-line "RCPT TO: root@komputilo" smtp) + (test-eq "recipient set" + 250 (read-reply-code smtp)) ;250 + ;; Send message. + (write-line "DATA" smtp) + (test-eq "data begun" + 354 (read-reply-code smtp)) ;354 + (write-line "Subject: Hello" smtp) + (newline smtp) + (write-line "Nice to meet you!" smtp) + (write-line "." smtp) + (test-eq "message sent" + 250 (read-reply-code smtp)) ;250 + ;; Say goodbye. + (write-line "QUIT" smtp) + (test-eq "quit successful" + 221 (read-reply-code smtp)) ;221 + (close smtp) + + (test-eq "the email is received" + 1 + (marionette-eval + '(begin + (use-modules (ice-9 ftw)) + (length (scandir "/var/spool/exim/msglog" + (lambda (x) (not (string-prefix? "." x)))))) + marionette)) + + (test-end) + (exit (= (test-runner-fail-count (test-runner-current)) 0))))) + + (gexp->derivation "exim-test" test))) + +(define %test-exim + (system-test + (name "exim") + (description "Send an email to a running an Exim server.") + (value (run-exim-test)))) diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm index 1f28f5a5b8..9e1ac1d55a 100644 --- a/gnu/tests/nfs.scm +++ b/gnu/tests/nfs.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,8 +20,8 @@ (define-module (gnu tests nfs) #:use-module (gnu tests) + #:use-module (gnu bootloader grub) #:use-module (gnu system) - #:use-module (gnu system grub) #:use-module (gnu system file-systems) #:use-module (gnu system shadow) #:use-module (gnu system vm) diff --git a/gnu/tests/ssh.scm b/gnu/tests/ssh.scm index 02931e982a..5f06151081 100644 --- a/gnu/tests/ssh.scm +++ b/gnu/tests/ssh.scm @@ -51,7 +51,7 @@ When SFTP? is true, run an SFTP server test." (eval-when (expand load eval) ;; Prepare to use Guile-SSH. (set! %load-path - (cons (string-append #$guile-ssh "/share/guile/site/" + (cons (string-append #+guile2.0-ssh "/share/guile/site/" (effective-version)) %load-path))) diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index cdc5791237..bc7e3b89a9 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -19,7 +19,6 @@ (define-module (gnu tests web) #:use-module (gnu tests) #:use-module (gnu system) - #:use-module (gnu system grub) #:use-module (gnu system file-systems) #:use-module (gnu system shadow) #:use-module (gnu system vm) diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm index 550f92bc7f..228b4e60d2 100644 --- a/guix/build-system/ant.scm +++ b/guix/build-system/ant.scm @@ -39,6 +39,7 @@ (define %ant-build-system-modules ;; Build-side modules imported by default. `((guix build ant-build-system) + (guix build java-utils) (guix build syscalls) ,@%gnu-build-system-modules)) @@ -93,11 +94,13 @@ (define* (ant-build store name inputs #:key (tests? #t) - (test-target "tests") + (test-target "check") (configure-flags ''()) (make-flags ''()) (build-target "jar") (jar-name #f) + (source-dir "src") + (test-dir "src/test") (phases '(@ (guix build ant-build-system) %standard-phases)) (outputs '("out")) @@ -106,6 +109,7 @@ (guile #f) (imported-modules %ant-build-system-modules) (modules '((guix build ant-build-system) + (guix build java-utils) (guix build utils)))) "Build SOURCE with INPUTS." (define builder @@ -126,6 +130,8 @@ #:test-target ,test-target #:build-target ,build-target #:jar-name ,jar-name + #:source-dir ,source-dir + #:test-dir ,test-dir #:phases ,phases #:outputs %outputs #:search-paths ',(map search-path-specification->sexp diff --git a/guix/build-system/asdf.scm b/guix/build-system/asdf.scm index f28c098ea2..ec8b64497f 100644 --- a/guix/build-system/asdf.scm +++ b/guix/build-system/asdf.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> +;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +22,9 @@ #:use-module (guix packages) #:use-module (guix derivations) #:use-module (guix search-paths) + #:use-module ((guix build utils) + #:select ((package-name->name+version + . hyphen-separated-name->name+version))) #:use-module (guix build-system) #:use-module (guix build-system gnu) #:use-module (ice-9 match) @@ -163,39 +166,40 @@ set up using CL source package conventions." (match-lambda ((name content . rest) (let* ((is-package? (package? content)) - (new-content (if is-package? (transform content) content)) - (new-name (if (and is-package? - (string-prefix? from-prefix name)) - (package-name new-content) - name))) - `(,new-name ,new-content ,@rest))))) + (new-content (if is-package? (transform content) content))) + `(,name ,new-content ,@rest))))) ;; Special considerations for source packages: CL inputs become - ;; propagated, and un-handled arguments are removed. Native inputs are - ;; removed as are extraneous outputs. + ;; propagated, and un-handled arguments are removed. + (define new-propagated-inputs (if target-is-source? (map rewrite - (filter (match-lambda - ((_ input . _) - (has-from-build-system? input))) - (package-inputs pkg))) - '())) - - (define new-inputs + (append + (filter (match-lambda + ((_ input . _) + (has-from-build-system? input))) + (append (package-inputs pkg) + ;; The native inputs might be needed just + ;; to load the system. + (package-native-inputs pkg))) + (package-propagated-inputs pkg))) + + (map rewrite (package-propagated-inputs pkg)))) + + (define (new-inputs inputs-getter) (if target-is-source? (map rewrite (filter (match-lambda ((_ input . _) (not (has-from-build-system? input)))) - (package-inputs pkg))) - (map rewrite (package-inputs pkg)))) + (inputs-getter pkg))) + (map rewrite (inputs-getter pkg)))) (define base-arguments (if target-is-source? (strip-keyword-arguments - '(#:tests? #:special-dependencies #:asd-file - #:test-only-systems #:lisp) + '(#:tests? #:asd-file #:lisp #:asd-system-name #:test-asd-file) (package-arguments pkg)) (package-arguments pkg))) @@ -213,11 +217,9 @@ set up using CL source package conventions." (arguments (substitute-keyword-arguments base-arguments ((#:phases phases) (list phases-transformer phases)))) - (inputs new-inputs) + (inputs (new-inputs package-inputs)) (propagated-inputs new-propagated-inputs) - (native-inputs (if target-is-source? - '() - (map rewrite (package-native-inputs pkg)))) + (native-inputs (new-inputs package-native-inputs)) (outputs (if target-is-source? '("out") (package-outputs pkg))))) @@ -233,10 +235,10 @@ set up using CL source package conventions." (properties (alist-delete variant properties))) pkg)) -(define (lower lisp-implementation) +(define (lower lisp-type) (lambda* (name #:key source inputs outputs native-inputs system target - (lisp (default-lisp (string->symbol lisp-implementation))) + (lisp (default-lisp (string->symbol lisp-type))) #:allow-other-keys #:rest arguments) "Return a bag for NAME" @@ -252,20 +254,19 @@ set up using CL source package conventions." '()) ,@inputs ,@(standard-packages))) - (build-inputs `((,lisp-implementation ,lisp) + (build-inputs `((,lisp-type ,lisp) ,@native-inputs)) (outputs outputs) - (build (asdf-build lisp-implementation)) + (build (asdf-build lisp-type)) (arguments (strip-keyword-arguments private-keywords arguments)))))) -(define (asdf-build lisp-implementation) +(define (asdf-build lisp-type) (lambda* (store name inputs #:key source outputs (tests? #t) - (special-dependencies ''()) (asd-file #f) - (test-only-systems ''()) - (lisp lisp-implementation) + (asd-system-name #f) + (test-asd-file #f) (phases '(@ (guix build asdf-build-system) %standard-phases)) (search-paths '()) @@ -274,26 +275,36 @@ set up using CL source package conventions." (imported-modules %asdf-build-system-modules) (modules %asdf-build-modules)) + (define system-name + (or asd-system-name + (string-drop + ;; NAME is the value returned from `package-full-name'. + (hyphen-separated-name->name+version name) + (1+ (string-length lisp-type))))) ; drop the "<lisp>-" prefix. + (define builder `(begin (use-modules ,@modules) - (asdf-build #:name ,name - #:source ,(match (assoc-ref inputs "source") - (((? derivation? source)) - (derivation->output-path source)) - ((source) source) - (source source)) - #:lisp ,lisp - #:special-dependencies ,special-dependencies - #:asd-file ,asd-file - #:test-only-systems ,test-only-systems - #:system ,system - #:tests? ,tests? - #:phases ,phases - #:outputs %outputs - #:search-paths ',(map search-path-specification->sexp - search-paths) - #:inputs %build-inputs))) + (parameterize ((%lisp (string-append + (assoc-ref %build-inputs ,lisp-type) + "/bin/" ,lisp-type)) + (%lisp-type ,lisp-type)) + (asdf-build #:name ,name + #:source ,(match (assoc-ref inputs "source") + (((? derivation? source)) + (derivation->output-path source)) + ((source) source) + (source source)) + #:asd-file ,(or asd-file (string-append system-name ".asd")) + #:asd-system-name ,system-name + #:test-asd-file ,test-asd-file + #:system ,system + #:tests? ,tests? + #:phases ,phases + #:outputs %outputs + #:search-paths ',(map search-path-specification->sexp + search-paths) + #:inputs %build-inputs)))) (define guile-for-build (match guile diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm index a7982002b6..9a46ecfd26 100644 --- a/guix/build-system/emacs.scm +++ b/guix/build-system/emacs.scm @@ -83,6 +83,8 @@ (phases '(@ (guix build emacs-build-system) %standard-phases)) (outputs '("out")) + (include ''("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*\\.info$")) + (exclude ''("^\\.dir-locals\\.el$" "-pkg\\.el$" "^[^/]*tests?\\.el$")) (search-paths '()) (system (%current-system)) (guile #f) @@ -108,6 +110,8 @@ #:tests? ,tests? #:phases ,phases #:outputs %outputs + #:include ,include + #:exclude ,exclude #:search-paths ',(map search-path-specification->sexp search-paths) #:inputs %build-inputs))) diff --git a/guix/build-system/ocaml.scm b/guix/build-system/ocaml.scm index f4f57b5ad5..34a22ecffa 100644 --- a/guix/build-system/ocaml.scm +++ b/guix/build-system/ocaml.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -15,7 +16,6 @@ ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - (define-module (guix build-system ocaml) #:use-module (guix store) #:use-module (guix utils) @@ -25,7 +25,10 @@ #:use-module (guix build-system gnu) #:use-module (guix packages) #:use-module (ice-9 match) + #:use-module (srfi srfi-1) #:export (%ocaml-build-system-modules + package-with-ocaml4.01 + strip-ocaml4.01-variant ocaml-build ocaml-build-system)) @@ -71,6 +74,77 @@ (let ((module (resolve-interface '(gnu packages ocaml)))) (module-ref module 'ocaml-findlib))) +(define (default-ocaml4.01) + (let ((ocaml (resolve-interface '(gnu packages ocaml)))) + (module-ref ocaml 'ocaml-4.01))) + +(define (default-ocaml4.01-findlib) + (let ((module (resolve-interface '(gnu packages ocaml)))) + (module-ref module 'ocaml4.01-findlib))) + +(define* (package-with-explicit-ocaml ocaml findlib old-prefix new-prefix + #:key variant-property) + "Return a procedure of one argument, P. The procedure creates a package +with the same fields as P, which is assumed to use OCAML-BUILD-SYSTEM, such +that it is compiled with OCAML and FINDLIB instead. The inputs are changed +recursively accordingly. If the name of P starts with OLD-PREFIX, this is +replaced by NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name. + +When VARIANT-PROPERTY is present, it is used as a key to search for +pre-defined variants of this transformation recorded in the 'properties' field +of packages. The property value must be the promise of a package. This is a +convenient way for package writers to force the transformation to use +pre-defined variants." + (define package-variant + (if variant-property + (lambda (package) + (assq-ref (package-properties package) + variant-property)) + (const #f))) + + (define (transform p) + (cond + ;; If VARIANT-PROPERTY is present, use that. + ((package-variant p) + => force) + + ;; Otherwise build the new package object graph. + ((eq? (package-build-system p) ocaml-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) + (substring name + (string-length old-prefix)) + name)))) + (arguments + (let ((ocaml (if (promise? ocaml) (force ocaml) ocaml)) + (findlib (if (promise? findlib) (force findlib) findlib))) + (ensure-keyword-arguments (package-arguments p) + `(#:ocaml ,ocaml + #:findlib ,findlib)))))) + (else p))) + + (define (cut? p) + (or (not (eq? (package-build-system p) ocaml-build-system)) + (package-variant p))) + + (package-mapping transform cut?)) + +(define package-with-ocaml4.01 + (package-with-explicit-ocaml (delay (default-ocaml4.01)) + (delay (default-ocaml4.01-findlib)) + "ocaml-" "ocaml4.01-" + #:variant-property 'ocaml4.01-variant)) + +(define (strip-ocaml4.01-variant p) + "Remove the 'ocaml4.01-variant' property from P." + (package + (inherit p) + (properties (alist-delete 'ocaml4.01-variant (package-properties p))))) + (define* (lower name #:key source inputs native-inputs outputs system target (ocaml (default-ocaml)) diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm index 17173f121e..ffed837313 100644 --- a/guix/build-system/python.scm +++ b/guix/build-system/python.scm @@ -83,54 +83,43 @@ pre-defined variants of this transformation recorded in the 'properties' field of packages. The property value must be the promise of a package. This is a convenient way for package writers to force the transformation to use pre-defined variants." - (define transform - ;; Memoize the transformations. Failing to do that, we would build a huge - ;; object graph with lots of duplicates, which in turns prevents us from - ;; benefiting from memoization in 'package-derivation'. - (mlambdaq (p) - (let* ((rewrite-if-package - (lambda (content) - ;; CONTENT may be a file name, in which case it is returned, - ;; or a package, which is rewritten with the new PYTHON and - ;; NEW-PREFIX. - (if (package? content) - (transform content) - content))) - (rewrite - (match-lambda - ((name content . rest) - (append (list name (rewrite-if-package content)) rest))))) - - (cond - ;; If VARIANT-PROPERTY is present, use that. - ((and variant-property - (assoc-ref (package-properties p) variant-property)) - => force) - - ;; Otherwise build the new package object graph. - ((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) - (substring name - (string-length old-prefix)) - name)))) - (arguments - (let ((python (if (promise? python) - (force python) - python))) - (ensure-keyword-arguments (package-arguments p) - `(#:python ,python)))) - (inputs (map rewrite (package-inputs p))) - (propagated-inputs (map rewrite (package-propagated-inputs p))) - (native-inputs (map rewrite (package-native-inputs p))))) - (else - p))))) - - transform) + (define package-variant + (if variant-property + (lambda (package) + (assq-ref (package-properties package) + variant-property)) + (const #f))) + + (define (transform p) + (cond + ;; If VARIANT-PROPERTY is present, use that. + ((package-variant p) + => force) + + ;; Otherwise build the new package object graph. + ((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) + (substring name + (string-length old-prefix)) + name)))) + (arguments + (let ((python (if (promise? python) + (force python) + python))) + (ensure-keyword-arguments (package-arguments p) + `(#:python ,python)))))) + (else p))) + + (define (cut? p) + (or (not (eq? (package-build-system p) python-build-system)) + (package-variant p))) + + (package-mapping transform cut?)) (define package-with-python2 ;; Note: delay call to 'default-python2' until after the 'arguments' field diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm index 00a4a46d81..4042630a10 100644 --- a/guix/build/ant-build-system.scm +++ b/guix/build/ant-build-system.scm @@ -35,7 +35,8 @@ ;; ;; Code: -(define (default-build.xml jar-name prefix) +(define* (default-build.xml jar-name prefix #:optional + (source-dir ".") (test-dir "./test")) "Create a simple build.xml with standard targets for Ant." (call-with-output-file "build.xml" (lambda (port) @@ -47,6 +48,10 @@ (value "${basedir}/build/jar"))) (property (@ (name "dist.dir") (value ,prefix))) + (property (@ (name "test.home") + (value ,test-dir))) + (property (@ (name "test.classes.dir") + (value "${basedir}/build/test-classes"))) ;; respect the CLASSPATH environment variable (property (@ (name "build.sysclasspath") @@ -58,10 +63,39 @@ (target (@ (name "compile")) (mkdir (@ (dir "${classes.dir}"))) (javac (@ (includeantruntime "false") - (srcdir "src") + (srcdir ,source-dir) (destdir "${classes.dir}") (classpath (@ (refid "classpath")))))) + (target (@ (name "compile-tests")) + (mkdir (@ (dir "${test.classes.dir}"))) + (javac (@ (includeantruntime "false") + (srcdir ,test-dir) + (destdir "${test.classes.dir}")) + (classpath + (pathelement (@ (path "${env.CLASSPATH}"))) + (pathelement (@ (location "${classes.dir}"))) + (pathelement (@ (location "${test.classes.dir}")))))) + + (target (@ (name "check") + (depends "compile-tests")) + (mkdir (@ (dir "${test.home}/test-reports"))) + (junit (@ (printsummary "true") + (showoutput "true") + (fork "yes") + (haltonfailure "yes")) + (classpath + (pathelement (@ (path "${env.CLASSPATH}"))) + (pathelement (@ (location "${test.home}/resources"))) + (pathelement (@ (location "${classes.dir}"))) + (pathelement (@ (location "${test.classes.dir}")))) + (formatter (@ (type "plain") + (usefile "true"))) + (batchtest (@ (fork "yes") + (todir "${test.home}/test-reports")) + (fileset (@ (dir "${test.home}/java")) + (include (@ (name "**/*Test.java" ))))))) + (target (@ (name "jar") (depends "compile")) (mkdir (@ (dir "${jar.dir}"))) @@ -98,11 +132,13 @@ to the default GNU unpack strategy." ((assq-ref gnu:%standard-phases 'unpack) #:source source))) (define* (configure #:key inputs outputs (jar-name #f) - #:allow-other-keys) + (source-dir "src") + (test-dir "src/test") #:allow-other-keys) (when jar-name (default-build.xml jar-name (string-append (assoc-ref outputs "out") - "/share/java"))) + "/share/java") + source-dir test-dir)) (setenv "JAVA_HOME" (assoc-ref inputs "jdk")) (setenv "CLASSPATH" (generate-classpath inputs))) diff --git a/guix/build/asdf-build-system.scm b/guix/build/asdf-build-system.scm index 085d073dea..c5e820a00a 100644 --- a/guix/build/asdf-build-system.scm +++ b/guix/build/asdf-build-system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> +;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +21,7 @@ #:use-module (guix build utils) #:use-module (guix build lisp-utils) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (ice-9 rdelim) #:use-module (ice-9 receive) @@ -42,50 +43,42 @@ (define %object-prefix "/lib") -(define (source-install-prefix lisp) - (string-append %install-prefix "/" lisp "-source")) +(define (%lisp-source-install-prefix) + (string-append %source-install-prefix "/" (%lisp-type) "-source")) (define %system-install-prefix - (string-append %install-prefix "/systems")) + (string-append %source-install-prefix "/systems")) -(define (output-path->package-name path) - (package-name->name+version (strip-store-file-name path))) - -(define (outputs->name outputs) - (output-path->package-name - (assoc-ref outputs "out"))) - -(define (lisp-source-directory output lisp name) - (string-append output (source-install-prefix lisp) "/" name)) +(define (lisp-source-directory output name) + (string-append output (%lisp-source-install-prefix) "/" name)) (define (source-directory output name) - (string-append output %install-prefix "/source/" name)) + (string-append output %source-install-prefix "/source/" name)) -(define (library-directory output lisp) +(define (library-directory output) (string-append output %object-prefix - "/" lisp)) + "/" (%lisp-type))) (define (output-translation source-path - object-output - lisp) + object-output) "Return a translation for the system's source path to it's binary output." `((,source-path :**/ :*.*.*) - (,(library-directory object-output lisp) + (,(library-directory object-output) :**/ :*.*.*))) -(define (source-asd-file output lisp name asd-file) - (string-append (lisp-source-directory output lisp name) "/" asd-file)) - -(define (copy-files-to-output outputs output name) - "Copy all files from OUTPUT to \"out\". Create an extra link to any -system-defining files in the source to a convenient location. This is done -before any compiling so that the compiled source locations will be valid." - (let* ((out (assoc-ref outputs output)) - (source (getcwd)) - (target (source-directory out name)) - (system-path (string-append out %system-install-prefix))) +(define (source-asd-file output name asd-file) + (string-append (lisp-source-directory output name) "/" asd-file)) + +(define (copy-files-to-output out name) + "Copy all files from the current directory to OUT. Create an extra link to +any system-defining files in the source to a convenient location. This is +done before any compiling so that the compiled source locations will be +valid." + (let ((source (getcwd)) + (target (source-directory out name)) + (system-path (string-append out %system-install-prefix))) (copy-recursively source target) (mkdir-p system-path) (for-each @@ -97,45 +90,38 @@ before any compiling so that the compiled source locations will be valid." (define* (install #:key outputs #:allow-other-keys) "Copy and symlink all the source files." - (copy-files-to-output outputs "out" (outputs->name outputs))) - -(define* (copy-source #:key outputs lisp #:allow-other-keys) - "Copy the source to \"out\"." - (let* ((out (assoc-ref outputs "out")) - (name (remove-lisp-from-name (output-path->package-name out) lisp)) - (install-path (string-append out %install-prefix))) - (copy-files-to-output outputs "out" name) + (define output (assoc-ref outputs "out")) + (copy-files-to-output output + (package-name->name+version + (strip-store-file-name output)))) + +(define* (copy-source #:key outputs asd-system-name #:allow-other-keys) + "Copy the source to the library output." + (let* ((out (library-output outputs)) + (install-path (string-append out %source-install-prefix))) + (copy-files-to-output out asd-system-name) ;; Hide the files from asdf (with-directory-excursion install-path - (rename-file "source" (string-append lisp "-source")) + (rename-file "source" (string-append (%lisp-type) "-source")) (delete-file-recursively "systems"))) #t) -(define* (build #:key outputs inputs lisp asd-file +(define* (build #:key outputs inputs asd-file asd-system-name #:allow-other-keys) "Compile the system." - (let* ((out (assoc-ref outputs "out")) - (name (remove-lisp-from-name (output-path->package-name out) lisp)) - (source-path (lisp-source-directory out lisp name)) + (let* ((out (library-output outputs)) + (source-path (lisp-source-directory out asd-system-name)) (translations (wrap-output-translations `(,(output-translation source-path - out - lisp)))) - (asd-file (and=> asd-file (cut source-asd-file out lisp name <>)))) + out)))) + (asd-file (source-asd-file out asd-system-name asd-file))) (setenv "ASDF_OUTPUT_TRANSLATIONS" (replace-escaped-macros (format #f "~S" translations))) - ;; We don't need this if we have the asd file, and it can mess with the - ;; load ordering we're trying to enforce - (unless asd-file - (prepend-to-source-registry (string-append source-path "//"))) - (setenv "HOME" out) ; ecl's asdf sometimes wants to create $HOME/.cache - (parameterize ((%lisp (string-append - (assoc-ref inputs lisp) "/bin/" lisp))) - (compile-system name lisp asd-file)) + (compile-system asd-system-name asd-file) ;; As above, ecl will sometimes create this even though it doesn't use it @@ -144,56 +130,48 @@ before any compiling so that the compiled source locations will be valid." (delete-file-recursively cache-directory)))) #t) -(define* (check #:key lisp tests? outputs inputs asd-file +(define* (check #:key tests? outputs inputs asd-file asd-system-name + test-asd-file #:allow-other-keys) "Test the system." - (let* ((name (remove-lisp-from-name (outputs->name outputs) lisp)) - (out (assoc-ref outputs "out")) - (asd-file (and=> asd-file (cut source-asd-file out lisp name <>)))) + (let* ((out (library-output outputs)) + (asd-file (source-asd-file out asd-system-name asd-file)) + (test-asd-file + (and=> test-asd-file + (cut source-asd-file out asd-system-name <>)))) (if tests? - (parameterize ((%lisp (string-append - (assoc-ref inputs lisp) "/bin/" lisp))) - (test-system name lisp asd-file)) + (test-system asd-system-name asd-file test-asd-file) (format #t "test suite not run~%"))) #t) -(define* (patch-asd-files #:key outputs +(define* (create-asd-file #:key outputs inputs - lisp - special-dependencies - test-only-systems + asd-file + asd-system-name #:allow-other-keys) - "Patch any asd files created by the compilation process so that they can -find their dependencies. Exclude any TEST-ONLY-SYSTEMS which were only -included to run tests. Add any SPECIAL-DEPENDENCIES which the LISP -implementation itself provides." - (let* ((out (assoc-ref outputs "out")) - (name (remove-lisp-from-name (output-path->package-name out) lisp)) - (registry (lset-difference - (lambda (input system) - (match input - ((name . path) (string=? name system)))) - (lisp-dependencies lisp inputs) - test-only-systems)) - (lisp-systems (map first registry))) - - (for-each - (lambda (asd-file) - (patch-asd-file asd-file registry lisp - (append lisp-systems special-dependencies))) - (find-files out "\\.asd$"))) + "Create a system definition file for the built system." + (let*-values (((out) (library-output outputs)) + ((_ version) (package-name->name+version + (strip-store-file-name out))) + ((new-asd-file) (string-append + (library-directory out) + "/" (normalize-string asd-system-name) + ".asd"))) + + (make-asd-file new-asd-file + #:system asd-system-name + #:version version + #:inputs inputs + #:system-asd-file asd-file)) #t) -(define* (symlink-asd-files #:key outputs lisp #:allow-other-keys) +(define* (symlink-asd-files #:key outputs #:allow-other-keys) "Create an extra reference to the system in a convenient location." - (let* ((out (assoc-ref outputs "out"))) + (let* ((out (library-output outputs))) (for-each (lambda (asd-file) - (substitute* asd-file - ((";;; Built for.*") "") ; remove potential non-determinism - (("^\\(DEFSYSTEM(.*)$" all end) (string-append "(asdf:defsystem" end))) (receive (new-asd-file asd-file-directory) - (bundle-asd-file out asd-file lisp) + (bundle-asd-file out asd-file) (mkdir-p asd-file-directory) (symlink asd-file new-asd-file) ;; Update the source registry for future phases which might want to @@ -201,15 +179,14 @@ implementation itself provides." (prepend-to-source-registry (string-append asd-file-directory "/")))) - (find-files (string-append out %object-prefix) "\\.asd$")) -) + (find-files (string-append out %object-prefix) "\\.asd$"))) #t) -(define* (cleanup-files #:key outputs lisp - #:allow-other-keys) +(define* (cleanup-files #:key outputs + #:allow-other-keys) "Remove any compiled files which are not a part of the final bundle." - (let ((out (assoc-ref outputs "out"))) - (match lisp + (let ((out (library-output outputs))) + (match (%lisp-type) ("sbcl" (for-each (lambda (file) @@ -219,10 +196,9 @@ implementation itself provides." ("ecl" (for-each delete-file (append (find-files out "\\.fas$") - (find-files out "\\.o$") - (find-files out "\\.a$"))))) + (find-files out "\\.o$"))))) - (with-directory-excursion (library-directory out lisp) + (with-directory-excursion (library-directory out) (for-each (lambda (file) (rename-file file @@ -237,9 +213,9 @@ implementation itself provides." (string<> ".." file))))))) #t) -(define* (strip #:key lisp #:allow-other-keys #:rest args) +(define* (strip #:rest args) ;; stripping sbcl binaries removes their entry program and extra systems - (or (string=? lisp "sbcl") + (or (string=? (%lisp-type) "sbcl") (apply (assoc-ref gnu:%standard-phases 'strip) args))) (define %standard-phases/source @@ -257,8 +233,8 @@ implementation itself provides." (add-before 'build 'copy-source copy-source) (replace 'check check) (replace 'strip strip) - (add-after 'check 'link-dependencies patch-asd-files) - (add-after 'link-dependencies 'cleanup cleanup-files) + (add-after 'check 'create-asd-file create-asd-file) + (add-after 'create-asd-file 'cleanup cleanup-files) (add-after 'cleanup 'create-symlinks symlink-asd-files))) (define* (asdf-build #:key inputs diff --git a/guix/build/bournish.scm b/guix/build/bournish.scm index e948cd03d3..247a687d80 100644 --- a/guix/build/bournish.scm +++ b/guix/build/bournish.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; @@ -48,11 +48,19 @@ refers to." str)) (define* (display-tabulated lst - #:key (columns 3) - (column-width (/ 78 columns))) - "Display the list of string LST in COLUMNS columns of COLUMN-WIDTH -characters." + #:key + (terminal-width 80) + (column-gap 2)) + "Display the list of string LST in as many columns as needed given +TERMINAL-WIDTH. Use COLUMN-GAP spaces between two subsequent columns." (define len (length lst)) + (define column-width + ;; The width of a column. Assume all the columns have the same width + ;; (GNU ls is smarter than that.) + (+ column-gap (reduce max 0 (map string-length lst)))) + (define columns + (max 1 + (quotient terminal-width column-width))) (define pad (if (zero? (modulo len columns)) 0 @@ -81,16 +89,30 @@ characters." (() (display-tabulated (scandir "."))) (files - (let ((files (filter (lambda (file) - (catch 'system-error - (lambda () - (lstat file)) - (lambda args - (let ((errno (system-error-errno args))) - (format (current-error-port) "~a: ~a~%" - file (strerror errno)) - #f)))) - files))) + (let ((files (append-map (lambda (file) + (catch 'system-error + (lambda () + (match (stat:type (lstat file)) + ('directory + ;; Like GNU ls, list the contents of + ;; FILE rather than FILE itself. + (match (scandir file + (match-lambda + ((or "." "..") #f) + (_ #t))) + (#f + (list file)) + ((files ...) + (map (cut string-append file "/" <>) + files)))) + (_ + (list file)))) + (lambda args + (let ((errno (system-error-errno args))) + (format (current-error-port) "~a: ~a~%" + file (strerror errno)) + '())))) + files))) (display-tabulated files))))) (define (ls-command . files) diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm index f11d858749..139b40321f 100644 --- a/guix/build/cargo-build-system.scm +++ b/guix/build/cargo-build-system.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 David Craven <david@craven.ch> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -116,12 +117,12 @@ directory = '" port) (close-pipe port) result))) -;; Example dir-name: "/gnu/store/hwlr49riz3la33m6in2n898ly045ylld-rust-rand-0.3.15". (define (generate-checksums dir-name src-name) - "Given DIR-NAME, checksum all the files in it one by one and put the - result into the file \".cargo-checksum.json\" in the same directory. - Also includes the checksum of an extra file SRC-NAME as if it was - part of the directory DIR-NAME with name \"package\"." + "Given DIR-NAME, a store directory, checksum all the files in it one +by one and put the result into the file \".cargo-checksum.json\" in +the same directory. Also includes the checksum of an extra file +SRC-NAME as if it was part of the directory DIR-NAME with name +\"package\"." (let* ((file-names (find-files dir-name ".")) (dir-prefix-name (string-append dir-name "/")) (dir-prefix-name-len (string-length dir-prefix-name)) diff --git a/guix/build/download.scm b/guix/build/download.scm index e3d5244590..ce4708a873 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -140,6 +140,13 @@ Otherwise return STORE-PATH." (string-drop base 32))) store-path)) +(cond-expand + (guile-2.2 + ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and + ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. + (define time-monotonic time-tai)) + (else #t)) + (define* (progress-proc file size #:optional (log-port (current-output-port)) #:key (abbreviation basename)) @@ -389,7 +396,21 @@ host name without trailing dot." ;;(set-log-level! 10) ;;(set-log-procedure! log) - (handshake session) + (catch 'gnutls-error + (lambda () + (handshake session)) + (lambda (key err proc . rest) + (cond ((eq? err error/warning-alert-received) + ;; Like Wget, do no stop upon non-fatal alerts such as + ;; 'alert-description/unrecognized-name'. + (format (current-error-port) + "warning: TLS warning alert received: ~a~%" + (alert-description->string (alert-get session))) + (handshake session)) + (else + ;; XXX: We'd use 'gnutls_error_is_fatal' but (gnutls) doesn't + ;; provide a binding for this. + (apply throw key err proc rest))))) ;; Verify the server's certificate if needed. (when verify-certificate? diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm index 44e8b0d31e..50af4be363 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -47,10 +47,12 @@ (define (store-file->elisp-source-file file) "Convert FILE, a store file name for an Emacs Lisp source file, into a file name that has been stripped of the hash and version number." - (let-values (((name version) - (package-name->name+version - (strip-store-file-name file)))) - (string-append name ".el"))) + (let ((suffix ".el")) + (let-values (((name version) + (package-name->name+version + (basename + (strip-store-file-name file) suffix)))) + (string-append name suffix)))) (define* (unpack #:key source #:allow-other-keys) "Unpack SOURCE into the build directory. SOURCE may be a compressed @@ -93,14 +95,30 @@ store in '.el' files." (substitute-cmd)))) #t)) -(define* (install #:key outputs #:allow-other-keys) +(define* (install #:key outputs + (include '("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*\\.info$")) + (exclude '("^\\.dir-locals\\.el$" "-pkg\\.el$" "^[^/]*tests?\\.el$")) + #:allow-other-keys) "Install the package contents." + + (define source (getcwd)) + + (define (install-file? file stat) + (let ((stripped-file (string-trim (string-drop file (string-length source)) #\/))) + (and (any (cut string-match <> stripped-file) include) + (not (any (cut string-match <> stripped-file) exclude))))) + (let* ((out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) - (src-dir (getcwd)) - (tgt-dir (string-append out %install-suffix "/" elpa-name-ver))) - (copy-recursively src-dir tgt-dir) - #t)) + (target-directory (string-append out %install-suffix "/" elpa-name-ver))) + (for-each + (lambda (file) + (let* ((stripped-file (string-drop file (string-length source))) + (target-file (string-append target-directory stripped-file))) + (format #t "`~a' -> `~a'~%" file target-file) + (install-file file (dirname target-file)))) + (find-files source install-file?))) + #t) (define* (move-doc #:key outputs #:allow-other-keys) "Move info files from the ELPA package directory to the info directory." diff --git a/guix/build/java-utils.scm b/guix/build/java-utils.scm new file mode 100644 index 0000000000..402d377bf8 --- /dev/null +++ b/guix/build/java-utils.scm @@ -0,0 +1,55 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build java-utils) + #:use-module (guix build utils) + #:export (ant-build-javadoc + install-jars + install-javadoc)) + +;; Copied from haskell-build-system.scm +(define (package-name-version store-dir) + "Given a store directory STORE-DIR return 'name-version' of the package." + (let* ((base (basename store-dir))) + (string-drop base (+ 1 (string-index base #\-))))) + +(define* (ant-build-javadoc #:key (target "javadoc") (make-flags '()) + #:allow-other-keys) + (zero? (apply system* `("ant" ,target ,@make-flags)))) + +(define* (install-jars jar-directory) + "Install jar files from JAR-DIRECTORY to the default target directory. This +is used in case the build.xml does not include an install target." + (lambda* (#:key outputs #:allow-other-keys) + (let ((share (string-append (assoc-ref outputs "out") + "/share/java"))) + (for-each (lambda (f) (install-file f share)) + (find-files jar-directory "\\.jar$")) + #t))) + +(define* (install-javadoc apidoc-directory) + "Install the APIDOC-DIRECTORY to the target directory. This is used to +install javadocs when this is not done by the install target." + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (docs (string-append (or (assoc-ref outputs "doc") out) + "/share/doc/" (package-name-version out) "/"))) + (mkdir-p docs) + (copy-recursively apidoc-directory docs) + #t))) diff --git a/guix/build/lisp-utils.scm b/guix/build/lisp-utils.scm index 55a07c7207..21cb620d59 100644 --- a/guix/build/lisp-utils.scm +++ b/guix/build/lisp-utils.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> +;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,13 +18,15 @@ (define-module (guix build lisp-utils) #:use-module (ice-9 format) + #:use-module (ice-9 hash-table) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (guix build utils) #:export (%lisp - %install-prefix + %lisp-type + %source-install-prefix lisp-eval-program compile-system test-system @@ -32,15 +34,16 @@ generate-executable-wrapper-system generate-executable-entry-point generate-executable-for-system - patch-asd-file - bundle-install-prefix - lisp-dependencies + %bundle-install-prefix bundle-asd-file - remove-lisp-from-name wrap-output-translations prepend-to-source-registry build-program - build-image)) + build-image + make-asd-file + valid-char-set + normalize-string + library-output)) ;;; Commentary: ;;; @@ -54,102 +57,164 @@ ;; File name of the Lisp compiler. (make-parameter "lisp")) -(define %install-prefix "/share/common-lisp") - -(define (bundle-install-prefix lisp) - (string-append %install-prefix "/" lisp "-bundle-systems")) +(define %lisp-type + ;; String representing the class of implementation being used. + (make-parameter "lisp")) -(define (remove-lisp-from-name name lisp) - (string-drop name (1+ (string-length lisp)))) +;; The common parent for Lisp source files, as will as the symbolic +;; link farm for system definition (.asd) files. +(define %source-install-prefix "/share/common-lisp") + +(define (%bundle-install-prefix) + (string-append %source-install-prefix "/" (%lisp-type) "-bundle-systems")) + +(define (library-output outputs) + "If a `lib' output exists, build things there. Otherwise use `out'." + (or (assoc-ref outputs "lib") (assoc-ref outputs "out"))) + +;; See nix/libstore/store-api.cc#checkStoreName. +(define valid-char-set + (string->char-set + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-._?=")) + +(define (normalize-string str) + "Replace invalid characters in STR with a hyphen." + (string-join (string-tokenize str valid-char-set) "-")) + +(define (inputs->asd-file-map inputs) + "Produce a hash table of the form (system . asd-file), where system is the +name of an ASD system, and asd-file is the full path to its definition." + (alist->hash-table + (filter-map + (match-lambda + ((_ . path) + (let ((prefix (string-append path (%bundle-install-prefix)))) + (and (directory-exists? prefix) + (match (find-files prefix "\\.asd$") + ((asd-file) + (cons + (string-drop-right (basename asd-file) 4) ; drop ".asd" + asd-file)) + (_ #f)))))) + inputs))) (define (wrap-output-translations translations) `(:output-translations ,@translations :inherit-configuration)) -(define (lisp-eval-program lisp program) +(define (lisp-eval-program program) "Evaluate PROGRAM with a given LISP implementation." (unless (zero? (apply system* - (lisp-invoke lisp (format #f "~S" program)))) - (error "lisp-eval-program failed!" lisp program))) - -(define (lisp-invoke lisp program) + (lisp-invocation program))) + (error "lisp-eval-program failed!" (%lisp) program))) + +(define (spread-statements program argument-name) + "Return a list with the statements from PROGRAM spread between +ARGUMENT-NAME, a string representing the argument a lisp implementation uses +to accept statements to be evaluated before starting." + (append-map (lambda (statement) + (list argument-name (format #f "~S" statement))) + program)) + +(define (lisp-invocation program) "Return a list of arguments for system* determining how to invoke LISP with PROGRAM." - (match lisp - ("sbcl" `(,(%lisp) "--non-interactive" "--eval" ,program)) - ("ecl" `(,(%lisp) "-eval" ,program "-eval" "(quit)")))) + (match (%lisp-type) + ("sbcl" `(,(%lisp) "--non-interactive" + ,@(spread-statements program "--eval"))) + ("ecl" `(,(%lisp) + ,@(spread-statements program "--eval") + "--eval" "(quit)")) + (_ (error "The LISP provided is not supported at this time.")))) (define (asdf-load-all systems) (map (lambda (system) - `(funcall - (find-symbol - (symbol-name :load-system) - (symbol-name :asdf)) - ,system)) + `(asdf:load-system ,system)) systems)) -(define (compile-system system lisp asd-file) +(define (compile-system system asd-file) "Use a lisp implementation to compile SYSTEM using asdf. Load ASD-FILE -first if SYSTEM is defined there." - (lisp-eval-program lisp - `(progn - (require :asdf) - (in-package :asdf) - ,@(if asd-file - `((load ,asd-file)) - '()) - (in-package :cl-user) - (funcall (find-symbol - (symbol-name :operate) - (symbol-name :asdf)) - (find-symbol - (symbol-name :compile-bundle-op) - (symbol-name :asdf)) - ,system) - (funcall (find-symbol - (symbol-name :operate) - (symbol-name :asdf)) - (find-symbol - (symbol-name :deliver-asd-op) - (symbol-name :asdf)) - ,system)))) - -(define (test-system system lisp asd-file) - "Use a lisp implementation to test SYSTEM using asdf. Load ASD-FILE first -if SYSTEM is defined there." - (lisp-eval-program lisp - `(progn - (require :asdf) - (in-package :asdf) - ,@(if asd-file - `((load ,asd-file)) - '()) - (in-package :cl-user) - (funcall (find-symbol - (symbol-name :test-system) - (symbol-name :asdf)) - ,system)))) +first." + (lisp-eval-program + `((require :asdf) + (let ((*package* (find-package :asdf))) + (load ,asd-file)) + (asdf:operate 'asdf:compile-bundle-op ,system)))) + +(define (system-dependencies system asd-file) + "Return the dependencies of SYSTEM, as reported by +asdf:system-depends-on. First load the system's ASD-FILE." + (define deps-file ".deps.sexp") + (define program + `((require :asdf) + (let ((*package* (find-package :asdf))) + (load ,asd-file)) + (with-open-file + (stream ,deps-file :direction :output) + (format stream + "~s~%" + (asdf:system-depends-on + (asdf:find-system ,system)))))) + + (dynamic-wind + (lambda _ + (lisp-eval-program program)) + (lambda _ + (call-with-input-file deps-file read)) + (lambda _ + (when (file-exists? deps-file) + (delete-file deps-file))))) + +(define (compiled-system system) + (let ((system (basename system))) ; this is how asdf handles slashes + (match (%lisp-type) + ("sbcl" (string-append system "--system")) + (_ system)))) + +(define* (generate-system-definition system + #:key version dependencies) + `(asdf:defsystem + ,(normalize-string system) + :class asdf/bundle:prebuilt-system + :version ,version + :depends-on ,dependencies + :components ((:compiled-file ,(compiled-system system))) + ,@(if (string=? "ecl" (%lisp-type)) + `(:lib ,(string-append system ".a")) + '()))) + +(define (test-system system asd-file test-asd-file) + "Use a lisp implementation to test SYSTEM using asdf. Load ASD-FILE first. +Also load TEST-ASD-FILE if necessary." + (lisp-eval-program + `((require :asdf) + (let ((*package* (find-package :asdf))) + (load ,asd-file) + ,@(if test-asd-file + `((load ,test-asd-file)) + ;; Try some likely files. + (map (lambda (file) + `(when (uiop:file-exists-p ,file) + (load ,file))) + (list + (string-append system "-tests.asd") + (string-append system "-test.asd") + "tests.asd" + "test.asd")))) + (asdf:test-system ,system)))) (define (string->lisp-keyword . strings) "Return a lisp keyword for the concatenation of STRINGS." (string->symbol (apply string-append ":" strings))) -(define (generate-executable-for-system type system lisp) - "Use LISP to generate an executable, whose TYPE can be \"image\" or -\"program\". The latter will always be standalone. Depends on having created -a \"SYSTEM-exec\" system which contains the entry program." +(define (generate-executable-for-system type system) + "Use LISP to generate an executable, whose TYPE can be 'asdf:image-op or +'asdf:program-op. The latter will always be standalone. Depends on having +created a \"SYSTEM-exec\" system which contains the entry program." (lisp-eval-program - lisp - `(progn - (require :asdf) - (funcall (find-symbol - (symbol-name :operate) - (symbol-name :asdf)) - (find-symbol - (symbol-name ,(string->lisp-keyword type "-op")) - (symbol-name :asdf)) - ,(string-append system "-exec"))))) + `((require :asdf) + (asdf:operate ',type ,(string-append system "-exec"))))) (define (generate-executable-wrapper-system system dependencies) "Generates a system which can be used by asdf to produce an image or program @@ -183,65 +248,59 @@ ENTRY-PROGRAM for SYSTEM within the current directory." (declare (ignorable arguments)) ,@entry-program)))))))) -(define (wrap-perform-method lisp registry dependencies file-name) - "Creates a wrapper method which allows the system to locate its dependent -systems from REGISTRY, an alist of the same form as %outputs, which contains -lisp systems which the systems is dependent on. All DEPENDENCIES which the -system depends on will the be loaded before this system." - (let* ((system (string-drop-right (basename file-name) 4)) - (system-symbol (string->lisp-keyword system))) - - `(defmethod asdf:perform :before - (op (c (eql (asdf:find-system ,system-symbol)))) - (asdf/source-registry:ensure-source-registry) - ,@(map (match-lambda - ((name . path) - (let ((asd-file (string-append path - (bundle-install-prefix lisp) - "/" name ".asd"))) - `(setf - (gethash ,name - asdf/source-registry:*source-registry*) - ,(string->symbol "#p") - ,(bundle-asd-file path asd-file lisp))))) - registry) - ,@(map (lambda (system) - `(asdf:load-system ,(string->lisp-keyword system))) - dependencies)))) - -(define (patch-asd-file asd-file registry lisp dependencies) - "Patches ASD-FILE with a perform method as described in WRAP-PERFORM-METHOD." - (chmod asd-file #o644) - (let ((port (open-file asd-file "a"))) - (dynamic-wind - (lambda _ #t) - (lambda _ - (display - (replace-escaped-macros - (format #f "~%~y~%" - (wrap-perform-method lisp registry - dependencies asd-file))) - port)) - (lambda _ (close-port port)))) - (chmod asd-file #o444)) - -(define (lisp-dependencies lisp inputs) - "Determine which inputs are lisp system dependencies, by using the convention -that a lisp system dependency will resemble \"system-LISP\"." - (filter-map (match-lambda - ((name . value) - (and (string-prefix? lisp name) - (string<> lisp name) - `(,(remove-lisp-from-name name lisp) - . ,value)))) - inputs)) - -(define (bundle-asd-file output-path original-asd-file lisp) +(define (generate-dependency-links registry system) + "Creates a program which populates asdf's source registry from REGISTRY, an +alist of dependency names to corresponding asd files. This allows the system +to locate its dependent systems." + `(progn + (asdf/source-registry:ensure-source-registry) + ,@(map (match-lambda + ((name . asd-file) + `(setf + (gethash ,name + asdf/source-registry:*source-registry*) + ,(string->symbol "#p") + ,asd-file))) + registry))) + +(define* (make-asd-file asd-file + #:key system version inputs + (system-asd-file #f)) + "Create an ASD-FILE for SYSTEM@VERSION, appending a program to allow the +system to find its dependencies, as described by GENERATE-DEPENDENCY-LINKS." + (define dependencies + (let ((deps + (system-dependencies system system-asd-file))) + (if (eq? 'NIL deps) + '() + (map normalize-string deps)))) + + (define lisp-input-map + (inputs->asd-file-map inputs)) + + (define registry + (filter-map hash-get-handle + (make-list (length dependencies) + lisp-input-map) + dependencies)) + + (call-with-output-file asd-file + (lambda (port) + (display + (replace-escaped-macros + (format #f "~y~%~y~%" + (generate-system-definition system + #:version version + #:dependencies dependencies) + (generate-dependency-links registry system))) + port)))) + +(define (bundle-asd-file output-path original-asd-file) "Find the symlinked bundle file for ORIGINAL-ASD-FILE by looking in OUTPUT-PATH/share/common-lisp/LISP-bundle-systems/<system>.asd. Returns two values: the asd file itself and the directory in which it resides." (let ((bundle-asd-path (string-append output-path - (bundle-install-prefix lisp)))) + (%bundle-install-prefix)))) (values (string-append bundle-asd-path "/" (basename original-asd-file)) bundle-asd-path))) @@ -256,19 +315,22 @@ which are not nested." (setenv "CL_SOURCE_REGISTRY" (string-append path ":" (or (getenv "CL_SOURCE_REGISTRY") "")))) -(define* (build-program lisp program #:key inputs +(define* (build-program program outputs #:key + (dependency-prefixes (list (library-output outputs))) (dependencies (list (basename program))) entry-program #:allow-other-keys) "Generate an executable program containing all DEPENDENCIES, and which will execute ENTRY-PROGRAM. The result is placed in PROGRAM. When executed, it will run ENTRY-PROGRAM, a list of Common Lisp expressions in which `arguments' -has been bound to the command-line arguments which were passed." - (generate-executable lisp program - #:inputs inputs +has been bound to the command-line arguments which were passed. Link in any +asd files from DEPENDENCY-PREFIXES to ensure references to those libraries are +retained." + (generate-executable program #:dependencies dependencies + #:dependency-prefixes dependency-prefixes #:entry-program entry-program - #:type "program") + #:type 'asdf:program-op) (let* ((name (basename program)) (bin-directory (dirname program))) (with-directory-excursion bin-directory @@ -276,16 +338,18 @@ has been bound to the command-line arguments which were passed." name))) #t) -(define* (build-image lisp image #:key inputs +(define* (build-image image outputs #:key + (dependency-prefixes (list (library-output outputs))) (dependencies (list (basename image))) #:allow-other-keys) "Generate an image, possibly standalone, which contains all DEPENDENCIES, -placing the result in IMAGE.image." - (generate-executable lisp image - #:inputs inputs +placing the result in IMAGE.image. Link in any asd files from +DEPENDENCY-PREFIXES to ensure references to those libraries are retained." + (generate-executable image #:dependencies dependencies + #:dependency-prefixes dependency-prefixes #:entry-program '(nil) - #:type "image") + #:type 'asdf:image-op) (let* ((name (basename image)) (bin-directory (dirname image))) (with-directory-excursion bin-directory @@ -293,14 +357,16 @@ placing the result in IMAGE.image." (string-append name ".image")))) #t) -(define* (generate-executable lisp out-file #:key inputs +(define* (generate-executable out-file #:key dependencies + dependency-prefixes entry-program type #:allow-other-keys) - "Generate an executable by using asdf's TYPE-op, containing whithin the + "Generate an executable by using asdf operation TYPE, containing whithin the image all DEPENDENCIES, and running ENTRY-PROGRAM in the case of an -executable." +executable. Link in any asd files from DEPENDENCY-PREFIXES to ensure +references to those libraries are retained." (let* ((bin-directory (dirname out-file)) (name (basename out-file))) (mkdir-p bin-directory) @@ -319,9 +385,25 @@ executable." `(((,bin-directory :**/ :*.*.*) (,bin-directory :**/ :*.*.*))))))) - (parameterize ((%lisp (string-append - (assoc-ref inputs lisp) "/bin/" lisp))) - (generate-executable-for-system type name lisp)) + (generate-executable-for-system type name) + + (let* ((after-store-prefix-index + (string-index out-file #\/ + (1+ (string-length (%store-directory))))) + (output (string-take out-file after-store-prefix-index)) + (hidden-asd-links (string-append output "/.asd-files"))) + + (mkdir-p hidden-asd-links) + (for-each + (lambda (path) + (for-each + (lambda (asd-file) + (symlink asd-file + (string-append hidden-asd-links + "/" (basename asd-file)))) + (find-files (string-append path (%bundle-install-prefix)) + "\\.asd$"))) + dependency-prefixes)) (delete-file (string-append bin-directory "/" name "-exec.asd")) (delete-file (string-append bin-directory "/" name "-exec.lisp")))) diff --git a/guix/build/profiles.scm b/guix/build/profiles.scm index 42eabfaf19..5c96fe9067 100644 --- a/guix/build/profiles.scm +++ b/guix/build/profiles.scm @@ -75,14 +75,14 @@ definitions for all the SEARCH-PATHS." ;; source ~/.guix-profile/etc/profile ~/.guix-profile ;; ;; However, when 'source' is used with no arguments, $1 refers to the - ;; first positional parameter of the calling scripts, so we can rely on - ;; it. + ;; first positional parameter of the calling script, so we cannot rely + ;; on it. (display "\ # Source this file to define all the relevant environment variables in Bash # for this profile. You may want to define the 'GUIX_PROFILE' environment # variable to point to the \"visible\" name of the profile, like this: # -# GUIX_PROFILE=/path/to/profile +# GUIX_PROFILE=/path/to/profile \\ # source /path/to/profile/etc/profile # # When GUIX_PROFILE is undefined, the various environment variables refer diff --git a/guix/build/pull.scm b/guix/build/pull.scm index 6034e93cbf..d2e0404b14 100644 --- a/guix/build/pull.scm +++ b/guix/build/pull.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -18,6 +18,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (guix build pull) + #:use-module (guix modules) #:use-module (guix build utils) #:use-module (system base compile) #:use-module (ice-9 ftw) @@ -35,6 +36,56 @@ ;;; ;;; Code: +(define (depends-on-guile-ssh? file) + "Return true if FILE is a Scheme source file that depends, directly or +indirectly, on Guile-SSH." + (find (match-lambda + (('ssh _ ...) #t) + (_ #f)) + (source-module-closure file #:select? (const #t)))) + +(define (all-scheme-files directory) + "Return a sorted list of Scheme files found in DIRECTORY." + ;; Load guix/ modules before gnu/ modules to get somewhat steadier + ;; progress reporting. + (sort (filter (cut string-suffix? ".scm" <>) + (find-files directory "\\.scm")) + (let ((guix (string-append directory "/guix")) + (gnu (string-append directory "/gnu"))) + (lambda (a b) + (or (and (string-prefix? guix a) + (string-prefix? gnu b)) + (string<? a b)))))) + +(cond-expand + (guile-2.2 (use-modules (language tree-il optimize) + (language cps optimize))) + (else #f)) + +(define %default-optimizations + ;; Default optimization options (equivalent to -O2 on Guile 2.2). + (cond-expand + (guile-2.2 (append (tree-il-default-optimization-options) + (cps-default-optimization-options))) + (else '()))) + +(define %lightweight-optimizations + ;; Lightweight optimizations (like -O0, but with partial evaluation). + (let loop ((opts %default-optimizations) + (result '())) + (match opts + (() (reverse result)) + ((#:partial-eval? _ rest ...) + (loop rest `(#t #:partial-eval? ,@result))) + ((kw _ rest ...) + (loop rest `(#f ,kw ,@result)))))) + +(define (optimization-options file) + (if (string-contains file "gnu/packages/") + %lightweight-optimizations ;build faster + '())) + + (define* (build-guix out source #:key system @@ -55,7 +106,8 @@ containing the source code. Write any debugging output to DEBUG-PORT." (setvbuf (current-error-port) _IOLBF) (with-directory-excursion source - (format #t "copying and compiling to '~a'...~%" out) + (format #t "copying and compiling to '~a' with Guile ~a...~%" + out (version)) ;; Copy everything under guix/ and gnu/ plus {guix,gnu}.scm. (copy-recursively "guix" (string-append out "/guix") @@ -92,17 +144,12 @@ containing the source code. Write any debugging output to DEBUG-PORT." ;; Compile the .scm files. Load all the files before compiling them to ;; work around <http://bugs.gnu.org/15602> (FIXME). - (let* ((files - ;; Load guix/ modules before gnu/ modules to get somewhat steadier - ;; progress reporting. - (sort (filter (cut string-suffix? ".scm" <>) - (find-files out "\\.scm")) - (let ((guix (string-append out "/guix")) - (gnu (string-append out "/gnu"))) - (lambda (a b) - (or (and (string-prefix? guix a) - (string-prefix? gnu b)) - (string<? a b)))))) + ;; Filter out files depending on Guile-SSH when Guile-SSH is missing. + (let* ((files (remove (if (false-if-exception + (resolve-interface '(ssh session))) + (const #f) + depends-on-guile-ssh?) + (all-scheme-files out))) (total (length files))) (let loop ((files files) (completed 0)) @@ -140,7 +187,7 @@ containing the source code. Write any debugging output to DEBUG-PORT." (parameterize ((current-warning-port (%make-void-port "w"))) (compile-file file #:output-file go - #:opts %auto-compilation-options))) + #:opts (optimization-options file)))) (with-mutex mutex (set! completed (+ 1 completed)))) files)))) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 5aae1530f4..0529c228a5 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,8 +45,6 @@ MNT_EXPIRE UMOUNT_NOFOLLOW restart-on-EINTR - mount - umount mount-points swapon swapoff @@ -83,17 +82,11 @@ PF_PACKET AF_PACKET - IFF_UP - IFF_BROADCAST - IFF_LOOPBACK all-network-interface-names network-interface-names - network-interface-flags network-interface-netmask loopback-network-interface? network-interface-address - set-network-interface-flags - set-network-interface-address set-network-interface-netmask set-network-interface-up configure-network-interface @@ -149,8 +142,19 @@ ;;; Commentary: ;;; ;;; This module provides bindings to libc's syscall wrappers. It uses the -;;; FFI, and thus requires a dynamically-linked Guile. (For statically-linked -;;; Guile, we instead apply 'guile-linux-syscalls.patch'.) +;;; FFI, and thus requires a dynamically-linked Guile. +;;; +;;; Some syscalls are already defined in statically-linked Guile by applying +;;; 'guile-linux-syscalls.patch'. +;;; +;;; Visibility of syscall's symbols shared between this module and static Guile +;;; is a bit delicate. It is handled by 'define-as-needed' macro. +;;; +;;; This macro is used to export symbols in dynamic Guile context, and to +;;; re-export them in static Guile context. +;;; +;;; This way, even if they don't appear in #:export list, it is safe to use +;;; syscalls from this module in static or dynamic Guile context. ;;; ;;; Code: @@ -409,6 +413,25 @@ the returned procedure is called." (error (format #f "~a: syscall->procedure failed: ~s" name args)))))) +(define-syntax define-as-needed + (syntax-rules () + "Define VARIABLE. If VARIABLE already exists in (guile) then re-export it, + otherwise export the newly-defined VARIABLE." + ((_ (proc args ...) body ...) + (define-as-needed proc (lambda* (args ...) body ...))) + ((_ variable value) + (begin + (when (module-defined? the-scm-module 'variable) + (re-export variable)) + + (define variable + (if (module-defined? the-scm-module 'variable) + (module-ref the-scm-module 'variable) + value)) + + (unless (module-defined? the-scm-module 'variable) + (export variable)))))) + ;;; ;;; File systems. @@ -461,48 +484,50 @@ the returned procedure is called." (define MNT_EXPIRE 4) (define UMOUNT_NOFOLLOW 8) -(define mount +(define-as-needed (mount source target type + #:optional (flags 0) options + #:key (update-mtab? #f)) + "Mount device SOURCE on TARGET as a file system TYPE. +Optionally, FLAGS may be a bitwise-or of the MS_* <sys/mount.h> +constants, and OPTIONS may be a string. When FLAGS contains +MS_REMOUNT, SOURCE and TYPE are ignored. When UPDATE-MTAB? is true, +update /etc/mtab. Raise a 'system-error' exception on error." + ;; XXX: '#:update-mtab?' is not implemented by core 'mount'. (let ((proc (syscall->procedure int "mount" `(* * * ,unsigned-long *)))) - (lambda* (source target type #:optional (flags 0) options - #:key (update-mtab? #f)) - "Mount device SOURCE on TARGET as a file system TYPE. Optionally, FLAGS -may be a bitwise-or of the MS_* <sys/mount.h> constants, and OPTIONS may be a -string. When FLAGS contains MS_REMOUNT, SOURCE and TYPE are ignored. When -UPDATE-MTAB? is true, update /etc/mtab. Raise a 'system-error' exception on -error." - (let-values (((ret err) - (proc (if source - (string->pointer source) - %null-pointer) - (string->pointer target) - (if type - (string->pointer type) - %null-pointer) - flags - (if options - (string->pointer options) - %null-pointer)))) - (unless (zero? ret) - (throw 'system-error "mount" "mount ~S on ~S: ~A" - (list source target (strerror err)) - (list err))) - (when update-mtab? - (augment-mtab source target type options)))))) - -(define umount - (let ((proc (syscall->procedure int "umount2" `(* ,int)))) - (lambda* (target #:optional (flags 0) - #:key (update-mtab? #f)) - "Unmount TARGET. Optionally FLAGS may be one of the MNT_* or UMOUNT_* + (let-values (((ret err) + (proc (if source + (string->pointer source) + %null-pointer) + (string->pointer target) + (if type + (string->pointer type) + %null-pointer) + flags + (if options + (string->pointer options) + %null-pointer)))) + (unless (zero? ret) + (throw 'system-error "mount" "mount ~S on ~S: ~A" + (list source target (strerror err)) + (list err))) + (when update-mtab? + (augment-mtab source target type options))))) + +(define-as-needed (umount target + #:optional (flags 0) + #:key (update-mtab? #f)) + "Unmount TARGET. Optionally FLAGS may be one of the MNT_* or UMOUNT_* constants from <sys/mount.h>." - (let-values (((ret err) - (proc (string->pointer target) flags))) - (unless (zero? ret) - (throw 'system-error "umount" "~S: ~A" - (list target (strerror err)) - (list err))) - (when update-mtab? - (remove-from-mtab target)))))) + ;; XXX: '#:update-mtab?' is not implemented by core 'umount'. + (let ((proc (syscall->procedure int "umount2" `(* ,int)))) + (let-values (((ret err) + (proc (string->pointer target) flags))) + (unless (zero? ret) + (throw 'system-error "umount" "~S: ~A" + (list target (strerror err)) + (list err))) + (when update-mtab? + (remove-from-mtab target))))) (define (mount-points) "Return the mounts points for currently mounted file systems." @@ -537,6 +562,34 @@ constants from <sys/mount.h>." (list device (strerror err)) (list err))))))) +(define-as-needed RB_AUTOBOOT #x01234567) +(define-as-needed RB_HALT_SYSTEM #xcdef0123) +(define-as-needed RB_ENABLED_CAD #x89abcdef) +(define-as-needed RB_DISABLE_CAD 0) +(define-as-needed RB_POWER_OFF #x4321fedc) +(define-as-needed RB_SW_SUSPEND #xd000fce2) +(define-as-needed RB_KEXEC #x45584543) + +(define-as-needed (reboot #:optional (cmd RB_AUTOBOOT)) + (let ((proc (syscall->procedure int "reboot" (list int)))) + (let-values (((ret err) (proc cmd))) + (unless (zero? ret) + (throw 'system-error "reboot" "~S: ~A" + (list cmd (strerror err)) + (list err)))))) + +(define-as-needed (load-linux-module data #:optional (options "")) + (let ((proc (syscall->procedure int "init_module" + (list '* unsigned-long '*)))) + (let-values (((ret err) + (proc (bytevector->pointer data) + (bytevector-length data) + (string->pointer options)))) + (unless (zero? ret) + (throw 'system-error "load-linux-module" "~A" + (list (strerror err)) + (list err)))))) + (define (kernel? pid) "Return #t if PID designates a \"kernel thread\" rather than a normal user-land process." @@ -873,9 +926,9 @@ exception if it's already taken." ;; Flags and constants from <net/if.h>. -(define IFF_UP #x1) ;Interface is up -(define IFF_BROADCAST #x2) ;Broadcast address valid. -(define IFF_LOOPBACK #x8) ;Is a loopback net. +(define-as-needed IFF_UP #x1) ;Interface is up +(define-as-needed IFF_BROADCAST #x2) ;Broadcast address valid. +(define-as-needed IFF_LOOPBACK #x8) ;Is a loopback net. (define IF_NAMESIZE 16) ;maximum interface name size @@ -1022,7 +1075,7 @@ that are not up." (else (loop interfaces)))))))) -(define (network-interface-flags socket name) +(define-as-needed (network-interface-flags socket name) "Return a number that is the bit-wise or of 'IFF*' flags for network interface NAME." (let ((req (make-bytevector ifreq-struct-size))) @@ -1033,8 +1086,8 @@ interface NAME." (bytevector->pointer req)))) (if (zero? ret) - ;; The 'ifr_flags' field is IF_NAMESIZE bytes after the beginning of - ;; 'struct ifreq', and it's a short int. + ;; The 'ifr_flags' field is IF_NAMESIZE bytes after the + ;; beginning of 'struct ifreq', and it's a short int. (bytevector-sint-ref req IF_NAMESIZE (native-endianness) (sizeof short)) @@ -1050,7 +1103,7 @@ interface NAME." (close-port sock) (not (zero? (logand flags IFF_LOOPBACK))))) -(define (set-network-interface-flags socket name flags) +(define-as-needed (set-network-interface-flags socket name flags) "Set the flag of network interface NAME to FLAGS." (let ((req (make-bytevector ifreq-struct-size))) (bytevector-copy! (string->utf8 name) 0 req 0 @@ -1067,7 +1120,7 @@ interface NAME." (list name (strerror err)) (list err)))))) -(define (set-network-interface-address socket name sockaddr) +(define-as-needed (set-network-interface-address socket name sockaddr) "Set the address of network interface NAME to SOCKADDR." (let ((req (make-bytevector ifreq-struct-size))) (bytevector-copy! (string->utf8 name) 0 req 0 diff --git a/guix/build/union.scm b/guix/build/union.scm index a2ea72e1f5..18167fa3e3 100644 --- a/guix/build/union.scm +++ b/guix/build/union.scm @@ -47,31 +47,34 @@ (loop (cons file files))))))) (define (file-is-directory? file) - (eq? 'directory (stat:type (stat file)))) + (match (stat file #f) + (#f #f) ;maybe a dangling symlink + (st (eq? 'directory (stat:type st))))) (define (file=? file1 file2) "Return #t if FILE1 and FILE2 are regular files and their contents are identical, #f otherwise." - (let ((st1 (stat file1)) - (st2 (stat file2))) + (let ((st1 (stat file1 #f)) + (st2 (stat file2 #f))) ;; When deduplication is enabled, identical files share the same inode. - (or (= (stat:ino st1) (stat:ino st2)) - (and (eq? (stat:type st1) 'regular) - (eq? (stat:type st2) 'regular) - (= (stat:size st1) (stat:size st2)) - (call-with-input-file file1 - (lambda (port1) - (call-with-input-file file2 - (lambda (port2) - (define len 8192) - (define buf1 (make-bytevector len)) - (define buf2 (make-bytevector len)) - (let loop () - (let ((n1 (get-bytevector-n! port1 buf1 0 len)) - (n2 (get-bytevector-n! port2 buf2 0 len))) - (and (equal? n1 n2) - (or (eof-object? n1) - (loop))))))))))))) + (and st1 st2 + (or (= (stat:ino st1) (stat:ino st2)) + (and (eq? (stat:type st1) 'regular) + (eq? (stat:type st2) 'regular) + (= (stat:size st1) (stat:size st2)) + (call-with-input-file file1 + (lambda (port1) + (call-with-input-file file2 + (lambda (port2) + (define len 8192) + (define buf1 (make-bytevector len)) + (define buf2 (make-bytevector len)) + (let loop () + (let ((n1 (get-bytevector-n! port1 buf1 0 len)) + (n2 (get-bytevector-n! port2 buf2 0 len))) + (and (equal? n1 n2) + (or (eof-object? n1) + (loop)))))))))))))) (define* (union-build output inputs #:key (log-port (current-error-port)) diff --git a/guix/cache.scm b/guix/cache.scm new file mode 100644 index 0000000000..1dc0083f1d --- /dev/null +++ b/guix/cache.scm @@ -0,0 +1,113 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix cache) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match) + #:export (obsolete? + delete-file* + file-expiration-time + remove-expired-cache-entries + maybe-remove-expired-cache-entries)) + +;;; Commentary: +;;; +;;; This module provides tools to manage a simple on-disk cache consisting of +;;; individual files. +;;; +;;; Code: + +(cond-expand + (guile-2.2 + ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and + ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. + (define time-monotonic time-tai)) + (else #t)) + +(define (obsolete? date now ttl) + "Return #t if DATE is obsolete compared to NOW + TTL seconds." + (time>? (subtract-duration now (make-time time-duration 0 ttl)) + (make-time time-monotonic 0 date))) + +(define (delete-file* file) + "Like 'delete-file', but does not raise an error when FILE does not exist." + (catch 'system-error + (lambda () + (delete-file file)) + (lambda args + (unless (= ENOENT (system-error-errno args)) + (apply throw args))))) + +(define (file-expiration-time ttl) + "Return a procedure that, when passed a file, returns its \"expiration +time\" computed as its last-access time + TTL seconds." + (lambda (file) + (match (stat file #f) + (#f 0) ;FILE may have been deleted in the meantime + (st (+ (stat:atime st) ttl))))) + +(define* (remove-expired-cache-entries entries + #:key + (now (current-time time-monotonic)) + (entry-expiration + (file-expiration-time 3600)) + (delete-entry delete-file*)) + "Given ENTRIES, a list of file names, remove those whose expiration time, +as returned by ENTRY-EXPIRATION, has passed. Use DELETE-ENTRY to delete +them." + (for-each (lambda (entry) + (when (<= (entry-expiration entry) (time-second now)) + (delete-entry entry))) + entries)) + +(define* (maybe-remove-expired-cache-entries cache + cache-entries + #:key + (entry-expiration + (file-expiration-time 3600)) + (delete-entry delete-file*) + (cleanup-period (* 24 3600))) + "Remove expired narinfo entries from the cache if deemed necessary. Call +CACHE-ENTRIES with CACHE to retrieve the list of cache entries. + +ENTRY-EXPIRATION must be a procedure that, when passed an entry, returns the +expiration time of that entry in seconds since the Epoch. DELETE-ENTRY is a +procedure that removes the entry passed as an argument. Finally, +CLEANUP-PERIOD denotes the minimum time between two cache cleanups." + (define now + (current-time time-monotonic)) + + (define expiry-file + (string-append cache "/last-expiry-cleanup")) + + (define last-expiry-date + (catch 'system-error + (lambda () + (call-with-input-file expiry-file read)) + (const 0))) + + (when (obsolete? last-expiry-date now cleanup-period) + (remove-expired-cache-entries (cache-entries cache) + #:now now + #:entry-expiration entry-expiration + #:delete-entry delete-entry) + (call-with-output-file expiry-file + (cute write (time-second now) <>)))) + +;;; cache.scm ends here diff --git a/guix/derivations.scm b/guix/derivations.scm index 0846d54fa5..9aaab05ecb 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -76,7 +76,6 @@ derivation-name derivation-output-names fixed-output-derivation? - fixed-output-path offloadable-derivation? substitutable-derivation? substitution-oracle @@ -566,12 +565,14 @@ that form." (write-list env-vars write-env-var port) (display ")" port)))) -(define derivation->string +(define derivation->bytevector (mlambda (drv) - "Return the external representation of DRV as a string." + "Return the external representation of DRV as a UTF-8-encoded string." (with-fluids ((%default-port-encoding "UTF-8")) - (call-with-output-string - (cut write-derivation drv <>))))) + (call-with-values open-bytevector-output-port + (lambda (port get-bytevector) + (write-derivation drv port) + (get-bytevector)))))) (define* (derivation->output-path drv #:optional (output "out")) "Return the store path of its output OUTPUT. Raise a @@ -612,20 +613,6 @@ list of name/path pairs of its outputs." ;;; Derivation primitive. ;;; -(define (compressed-hash bv size) ; `compressHash' - "Given the hash stored in BV, return a compressed version thereof that fits -in SIZE bytes." - (define new (make-bytevector size 0)) - (define old-size (bytevector-length bv)) - (let loop ((i 0)) - (if (= i old-size) - new - (let* ((j (modulo i size)) - (o (bytevector-u8-ref new j))) - (bytevector-u8-set! new j - (logxor o (bytevector-u8-ref bv i))) - (loop (+ 1 i)))))) - (define derivation-path->base16-hash (mlambda (file) "Return a string containing the base16 representation of the hash of the @@ -670,45 +657,7 @@ derivation at FILE." ;; XXX: At this point this remains faster than `port-sha256', because ;; the SHA256 port's `write' method gets called for every single ;; character. - (sha256 - (string->utf8 (derivation->string drv)))))))) - -(define (store-path type hash name) ; makeStorePath - "Return the store path for NAME/HASH/TYPE." - (let* ((s (string-append type ":sha256:" - (bytevector->base16-string hash) ":" - (%store-prefix) ":" name)) - (h (sha256 (string->utf8 s))) - (c (compressed-hash h 20))) - (string-append (%store-prefix) "/" - (bytevector->nix-base32-string c) "-" - name))) - -(define (output-path output hash name) ; makeOutputPath - "Return an output path for OUTPUT (the name of the output as a string) of -the derivation called NAME with hash HASH." - (store-path (string-append "output:" output) hash - (if (string=? output "out") - name - (string-append name "-" output)))) - -(define* (fixed-output-path name hash - #:key - (output "out") - (hash-algo 'sha256) - (recursive? #t)) - "Return an output path for the fixed output OUTPUT defined by HASH of type -HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for -'add-to-store'." - (if (and recursive? (eq? hash-algo 'sha256)) - (store-path "source" hash name) - (let ((tag (string-append "fixed:" output ":" - (if recursive? "r:" "") - (symbol->string hash-algo) ":" - (bytevector->base16-string hash) ":"))) - (store-path (string-append "output:" output) - (sha256 (string->utf8 tag)) - name)))) + (sha256 (derivation->bytevector drv))))))) (define* (derivation store name builder args #:key @@ -872,8 +821,8 @@ output should not be used." system builder args env-vars #f)) (drv (add-output-paths drv-masked))) - (let* ((file (add-text-to-store store (string-append name ".drv") - (derivation->string drv) + (let* ((file (add-data-to-store store (string-append name ".drv") + (derivation->bytevector drv) (map derivation-input-path inputs))) (drv* (set-field drv (derivation-file-name) file))) (hash-set! %derivation-cache file drv*) @@ -1245,15 +1194,15 @@ ALLOWED-REFERENCES, DISALLOWED-REFERENCES, LOCAL-BUILD?, and SUBSTITUTABLE?." (with-fluids ((%default-port-encoding "UTF-8")) (call-with-output-string - (lambda (port) - (write prologue port) - (write - `(exit - ,(match exp - ((_ ...) - (remove module-form? exp)) - (_ `(,exp)))) - port)))) + (lambda (port) + (write prologue port) + (write + `(exit + ,(match exp + ((_ ...) + (remove module-form? exp)) + (_ `(,exp)))) + port)))) ;; The references don't really matter ;; since the builder is always used in diff --git a/guix/discovery.scm b/guix/discovery.scm new file mode 100644 index 0000000000..319ba7c872 --- /dev/null +++ b/guix/discovery.scm @@ -0,0 +1,131 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix discovery) + #:use-module (guix ui) + #:use-module (guix combinators) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match) + #:use-module (ice-9 vlist) + #:use-module (ice-9 ftw) + #:export (scheme-modules + fold-modules + all-modules + fold-module-public-variables)) + +;;; Commentary: +;;; +;;; This module provides tools to discover Guile modules and the variables +;;; they export. +;;; +;;; Code: + +(define* (scheme-files directory) + "Return the list of Scheme files found under DIRECTORY, recursively. The +returned list is sorted in alphabetical order." + + ;; Sort entries so that 'fold-packages' works in a deterministic fashion + ;; regardless of details of the underlying file system. + (sort (file-system-fold (const #t) ;enter? + (lambda (path stat result) ;leaf + (if (string-suffix? ".scm" path) + (cons path result) + result)) + (lambda (path stat result) ;down + result) + (lambda (path stat result) ;up + result) + (const #f) ;skip + (lambda (path stat errno result) + (unless (= ENOENT errno) + (warning (G_ "cannot access `~a': ~a~%") + path (strerror errno))) + result) + '() + directory + stat) + string<?)) + +(define file-name->module-name + (let ((not-slash (char-set-complement (char-set #\/)))) + (lambda (file) + "Return the module name (a list of symbols) corresponding to FILE." + (map string->symbol + (string-tokenize (string-drop-right file 4) not-slash))))) + +(define* (scheme-modules directory #:optional sub-directory) + "Return the list of Scheme modules available under DIRECTORY. +Optionally, narrow the search to SUB-DIRECTORY." + (define prefix-len + (string-length directory)) + + (filter-map (lambda (file) + (let* ((file (substring file prefix-len)) + (module (file-name->module-name file))) + (catch #t + (lambda () + (resolve-interface module)) + (lambda args + ;; Report the error, but keep going. + (warn-about-load-error module args) + #f)))) + (scheme-files (if sub-directory + (string-append directory "/" sub-directory) + directory)))) + +(define (fold-modules proc init path) + "Fold over all the Scheme modules present in PATH, a list of directories. +Call (PROC MODULE RESULT) for each module that is found." + (fold (lambda (spec result) + (match spec + ((? string? directory) + (fold proc result (scheme-modules directory))) + ((directory . sub-directory) + (fold proc result + (scheme-modules directory sub-directory))))) + '() + path)) + +(define (all-modules path) + "Return the list of package modules found in PATH, a list of directories to +search. Entries in PATH can be directory names (strings) or (DIRECTORY +. SUB-DIRECTORY) pairs, in which case modules are searched for beneath +SUB-DIRECTORY." + (fold-modules cons '() path)) + +(define (fold-module-public-variables proc init modules) + "Call (PROC OBJECT RESULT) for each variable exported by one of MODULES, +using INIT as the initial value of RESULT. It is guaranteed to never traverse +the same object twice." + (identity ; discard second return value + (fold2 (lambda (module result seen) + (fold2 (lambda (var result seen) + (if (not (vhash-assq var seen)) + (values (proc var result) + (vhash-consq var #t seen)) + (values result seen))) + result + seen + (module-map (lambda (sym var) + (false-if-exception (variable-ref var))) + module))) + init + vlist-null + modules))) + +;;; discovery.scm ends here diff --git a/guix/download.scm b/guix/download.scm index 3f9263d757..bed1f502cf 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -66,7 +66,7 @@ "ftp://gcc.gnu.org/pub/gcc/" ,@(map (cut string-append <> "/gcc") gnu-mirrors)) (gnupg - "ftp://gd.tuwien.ac.at/privacy/gnupg/" + "http://gd.tuwien.ac.at/privacy/gnupg/" "ftp://mirrors.dotsrc.org/gcrypt/" "ftp://mirror.cict.fr/gnupg/" "http://artfiles.org/gnupg.org" @@ -124,6 +124,11 @@ "http://tenet.dl.sourceforge.net/project/" "http://vorboss.dl.sourceforge.net/project/" "http://netassist.dl.sourceforge.net/project/") + (netfilter.org ; https://www.netfilter.org/mirrors.html + "http://ftp.netfilter.org/pub/" + "ftp://ftp.es.netfilter.org/mirrors/netfilter/" + "ftp://ftp.hu.netfilter.org/" + "ftp://www.lt.netfilter.org/pub/") (kernel.org "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/" "http://linux-kernel.uio.no/pub/" @@ -208,7 +213,6 @@ ;; mirrors keeping old versions at the top level "ftp://sunsite.icm.edu.pl/packages/ImageMagick/" ;; mirrors moving old versions to "legacy" - "http://mirrors-au.go-parts.com/mirrors/ImageMagick/" "ftp://mirror.aarnet.edu.au/pub/imagemagick/" "http://mirror.checkdomain.de/imagemagick/" "ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/" @@ -217,9 +221,7 @@ "http://ftp.surfnet.nl/pub/ImageMagick/" "http://mirror.searchdaimon.com/ImageMagick" "ftp://ftp.tpnet.pl/pub/graphics/ImageMagick/" - "http://mirrors-ru.go-parts.com/mirrors/ImageMagick/" "http://mirror.is.co.za/pub/imagemagick/" - "http://mirrors-uk.go-parts.com/mirrors/ImageMagick/" "http://mirrors-usa.go-parts.com/mirrors/ImageMagick/" "ftp://ftp.fifi.org/pub/ImageMagick/" "http://www.imagemagick.org/download/" diff --git a/guix/gexp.scm b/guix/gexp.scm index 1b8e43e994..d9c4cb461e 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -26,6 +26,8 @@ #:use-module (srfi srfi-9) #:use-module (srfi srfi-9 gnu) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (ice-9 match) #:export (gexp gexp? @@ -84,7 +86,13 @@ gexp-compiler? lower-object - lower-inputs)) + lower-inputs + + &gexp-error + gexp-error? + &gexp-input-error + gexp-input-error? + gexp-error-invalid-input)) ;;; Commentary: ;;; @@ -140,6 +148,14 @@ (lower gexp-compiler-lower) (expand gexp-compiler-expand)) ;#f | DRV -> sexp +(define-condition-type &gexp-error &error + gexp-error?) + +(define-condition-type &gexp-input-error &gexp-error + gexp-input-error? + (input gexp-error-invalid-input)) + + (define %gexp-compilers ;; 'eq?' mapping of record type descriptor to <gexp-compiler>. (make-hash-table 20)) @@ -177,8 +193,11 @@ procedure to expand it; otherwise return #f." corresponding to OBJ for SYSTEM, cross-compiling for TARGET if TARGET is true. OBJ must be an object that has an associated gexp compiler, such as a <package>." - (let ((lower (lookup-compiler obj))) - (lower obj system target))) + (match (lookup-compiler obj) + (#f + (raise (condition (&gexp-input-error (input obj))))) + (lower + (lower obj system target)))) (define-syntax define-gexp-compiler (syntax-rules (=> compiler expander) @@ -440,21 +459,24 @@ whether this should be considered a \"native\" input or not." (set-record-type-printer! <gexp-output> write-gexp-output) (define (gexp-modules gexp) - "Return the list of Guile module names GEXP relies on." - (delete-duplicates - (append (gexp-self-modules gexp) - (append-map (match-lambda - (($ <gexp-input> (? gexp? exp)) - (gexp-modules exp)) - (($ <gexp-input> (lst ...)) - (append-map (lambda (item) - (if (gexp? item) - (gexp-modules item) - '())) - lst)) - (_ - '())) - (gexp-references gexp))))) + "Return the list of Guile module names GEXP relies on. If (gexp? GEXP) is +false, meaning that GEXP is a plain Scheme object, return the empty list." + (if (gexp? gexp) + (delete-duplicates + (append (gexp-self-modules gexp) + (append-map (match-lambda + (($ <gexp-input> (? gexp? exp)) + (gexp-modules exp)) + (($ <gexp-input> (lst ...)) + (append-map (lambda (item) + (if (gexp? item) + (gexp-modules item) + '())) + lst)) + (_ + '())) + (gexp-references gexp)))) + '())) ;plain Scheme data type (define* (lower-inputs inputs #:key system target) diff --git a/guix/git-download.scm b/guix/git-download.scm index 5d86ab2b62..9f6d20ee38 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -145,6 +145,10 @@ absolute file name and STAT is the result of 'lstat'." (reverse lines)) (line (loop (cons line lines)))))) + (inodes (map (lambda (file) + (let ((stat (lstat file))) + (cons (stat:dev stat) (stat:ino stat)))) + files)) (status (close-pipe pipe))) (and (zero? status) (lambda (file stat) @@ -155,8 +159,10 @@ absolute file name and STAT is the result of 'lstat'." (any (lambda (f) (parent-directory? f file)) files)) ((or 'regular 'symlink) - (any (lambda (f) (string-suffix? f file)) - files)) + ;; Comparing file names is always tricky business so we rely on + ;; inode numbers instead + (member (cons (stat:dev stat) (stat:ino stat)) + inodes)) (_ #f)))))) diff --git a/guix/gnupg.scm b/guix/gnupg.scm index ef8f9000dc..ac0ed5ab2d 100644 --- a/guix/gnupg.scm +++ b/guix/gnupg.scm @@ -166,7 +166,7 @@ and 'interactive' (default)." (define (receive?) (let ((answer - (begin (format #t (_ "~a~a~%") + (begin (format #t (G_ "~a~a~%") "Would you like to download this key " "and add it to your keyring?") (read-line)))) diff --git a/guix/graph.scm b/guix/graph.scm index 7af2cd3b80..d7fd5f3e4b 100644 --- a/guix/graph.scm +++ b/guix/graph.scm @@ -229,6 +229,35 @@ nodeArray.push(nodes[\"~a\"]);~%" emit-d3js-prologue emit-d3js-epilogue emit-d3js-node emit-d3js-edge)) + + +;;; +;;; Cypher export. +;;; + +(define (emit-cypher-prologue name port) + (format port "")) + +(define (emit-cypher-epilogue port) + (format port "")) + +(define (emit-cypher-node id label port) + (format port "MERGE (p:Package { id: ~s }) SET p.name = ~s;~%" + id label )) + +(define (emit-cypher-edge id1 id2 port) + (format port "MERGE (a:Package { id: ~s });~%" id1) + (format port "MERGE (b:Package { id: ~s });~%" id2) + (format port "MATCH (a:Package { id: ~s }), (b:Package { id: ~s }) CREATE UNIQUE (a)-[:NEEDS]->(b);~%" + id1 id2)) + +(define %cypher-backend + (graph-backend "cypher" + "Generate Cypher queries." + emit-cypher-prologue emit-cypher-epilogue + emit-cypher-node emit-cypher-edge)) + + ;;; ;;; Shared. @@ -236,7 +265,8 @@ nodeArray.push(nodes[\"~a\"]);~%" (define %graph-backends (list %graphviz-backend - %d3js-backend)) + %d3js-backend + %cypher-backend)) (define* (export-graph sinks port #:key diff --git a/guix/http-client.scm b/guix/http-client.scm index 6874c51db6..3c5441c38c 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -262,7 +262,7 @@ Raise an '&http-get-error' condition if downloading fails." 302) ; found (redirection) (let ((uri (resolve-uri-reference (response-location resp) uri))) (close-port port) - (format #t (_ "following redirection to `~a'...~%") + (format #t (G_ "following redirection to `~a'...~%") (uri->string uri)) (loop uri))) (else @@ -274,7 +274,7 @@ Raise an '&http-get-error' condition if downloading fails." (message (format #f - (_ "~a: HTTP download failed: ~a (~s)") + (G_ "~a: HTTP download failed: ~a (~s)") (uri->string uri) code (response-reason-phrase resp)))))))))))) diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm index b19d56ddcf..32c5c310e1 100644 --- a/guix/import/cpan.scm +++ b/guix/import/cpan.scm @@ -288,7 +288,7 @@ META." ;; Warn about inputs that are part of perl's core (unless (null? core-inputs) (for-each (lambda (module) - (warning (_ "input '~a' of ~a is in Perl core~%") + (warning (G_ "input '~a' of ~a is in Perl core~%") module (package-name package))) core-inputs))) (let ((version (cpan-version meta)) diff --git a/guix/import/cran.scm b/guix/import/cran.scm index a5f91fe8d2..8d963a7475 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,12 @@ bioconductor->guix-package recursive-import %cran-updater - %bioconductor-updater)) + %bioconductor-updater + + cran-package? + bioconductor-package? + bioconductor-data-package? + bioconductor-experiment-package?)) ;;; Commentary: ;;; @@ -122,19 +128,21 @@ package definition." (define %cran-url "http://cran.r-project.org/web/packages/") (define %bioconductor-url "http://bioconductor.org/packages/") -;; The latest Bioconductor release is 3.4. Bioconductor packages should be +;; The latest Bioconductor release is 3.5. Bioconductor packages should be ;; updated together. -(define %bioconductor-svn-url - (string-append "https://readonly:readonly@" - "hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_4/" - "madman/Rpacks/")) - +(define (bioconductor-mirror-url name) + (string-append "https://raw.githubusercontent.com/Bioconductor-mirror/" + name "/release-3.5")) -(define (fetch-description base-url name) +(define (fetch-description repository name) "Return an alist of the contents of the DESCRIPTION file for the R package -NAME, or #f in case of failure. NAME is case-sensitive." +NAME in the given REPOSITORY, or #f in case of failure. NAME is +case-sensitive." ;; This API always returns the latest release of the module. - (let ((url (string-append base-url name "/DESCRIPTION"))) + (let ((url (string-append (case repository + ((cran) (string-append %cran-url name)) + ((bioconductor) (bioconductor-mirror-url name))) + "/DESCRIPTION"))) (guard (c ((http-get-error? c) (format (current-error-port) "error: failed to retrieve package information \ @@ -199,17 +207,16 @@ empty list when the FIELD cannot be found." (check "*.f95") (check "*.f"))) -(define (needs-zlib? tarball) - "Return #T if any of the Makevars files in the src directory of the TARBALL -contain a zlib linker flag." +(define (tarball-files-match-pattern? tarball regexp . file-patterns) + "Return #T if any of the files represented by FILE-PATTERNS in the TARBALL +match the given REGEXP." (call-with-temporary-directory (lambda (dir) - (let ((pattern (make-regexp "-lz"))) + (let ((pattern (make-regexp regexp))) (parameterize ((current-error-port (%make-void-port "rw+"))) - (system* "tar" - "xf" tarball "-C" dir - "--wildcards" - "*/src/Makevars*" "*/src/configure*" "*/configure*")) + (apply system* "tar" + "xf" tarball "-C" dir + `("--wildcards" ,@file-patterns))) (any (lambda (file) (call-with-input-file file (lambda (port) @@ -218,10 +225,23 @@ contain a zlib linker flag." (cond ((eof-object? line) #f) ((regexp-exec pattern line) #t) - (else (loop))))))) - #t) + (else (loop)))))))) (find-files dir)))))) +(define (needs-zlib? tarball) + "Return #T if any of the Makevars files in the src directory of the TARBALL +contain a zlib linker flag." + (tarball-files-match-pattern? + tarball "-lz" + "*/src/Makevars*" "*/src/configure*" "*/configure*")) + +(define (needs-pkg-config? tarball) + "Return #T if any of the Makevars files in the src directory of the TARBALL +reference the pkg-config tool." + (tarball-files-match-pattern? + tarball "pkg-config" + "*/src/Makevars*" "*/src/configure*" "*/configure*")) + (define (description->package repository meta) "Return the `package' s-expression for an R package published on REPOSITORY from the alist META, which was derived from the R package's DESCRIPTION file." @@ -271,11 +291,12 @@ from the alist META, which was derived from the R package's DESCRIPTION file." (build-system r-build-system) ,@(maybe-inputs sysdepends) ,@(maybe-inputs (map guix-name propagate) 'propagated-inputs) - ,@(if (needs-fortran? tarball) - `((native-inputs (,'quasiquote - ,(list "gfortran" - (list 'unquote 'gfortran))))) - '()) + ,@(maybe-inputs + `(,@(if (needs-fortran? tarball) + '("gfortran") '()) + ,@(if (needs-pkg-config? tarball) + '("pkg-config") '())) + 'native-inputs) (home-page ,(if (string-null? home-page) (string-append base-url name) home-page)) @@ -290,11 +311,8 @@ from the alist META, which was derived from the R package's DESCRIPTION file." (lambda* (package-name #:optional (repo 'cran)) "Fetch the metadata for PACKAGE-NAME from REPO and return the `package' s-expression corresponding to that package, or #f on failure." - (let* ((url (case repo - ((cran) %cran-url) - ((bioconductor) %bioconductor-svn-url))) - (module-meta (fetch-description url package-name))) - (and=> module-meta (cut description->package repo <>)))))) + (and=> (fetch-description repo package-name) + (cut description->package repo <>))))) (define* (recursive-import package-name #:optional (repo 'cran)) "Generate a stream of package expressions for PACKAGE-NAME and all its @@ -374,7 +392,7 @@ dependencies." (start (string-rindex url #\/))) ;; The URL ends on ;; (string-append "/" name "_" version ".tar.gz") - (substring url (+ start 1) end))) + (and start end (substring url (+ start 1) end)))) (_ #f))) (_ #f))))) @@ -385,7 +403,7 @@ dependencies." (package->upstream-name package)) (define meta - (fetch-description %cran-url upstream-name)) + (fetch-description 'cran upstream-name)) (and meta (let ((version (assoc-ref meta "Version"))) @@ -402,7 +420,7 @@ dependencies." (package->upstream-name package)) (define meta - (fetch-description %bioconductor-svn-url upstream-name)) + (fetch-description 'bioconductor upstream-name)) (and meta (let ((version (assoc-ref meta "Version"))) @@ -415,6 +433,9 @@ dependencies." (define (cran-package? package) "Return true if PACKAGE is an R package from CRAN." (and (string-prefix? "r-" (package-name package)) + ;; Check if the upstream name can be extracted from package uri. + (package->upstream-name package) + ;; Check if package uri(s) are prefixed by "mirror://cran". (match (and=> (package-source package) origin-uri) ((? string? uri) (string-prefix? "mirror://cran" uri)) @@ -424,13 +445,48 @@ dependencies." (define (bioconductor-package? package) "Return true if PACKAGE is an R package from Bioconductor." - (and (string-prefix? "r-" (package-name package)) - (match (and=> (package-source package) origin-uri) - ((? string? uri) - (string-prefix? "http://bioconductor.org" uri)) - ((? list? uris) - (any (cut string-prefix? "http://bioconductor.org" <>) uris)) - (_ #f)))) + (let ((predicate (lambda (uri) + (and (string-prefix? "http://bioconductor.org" uri) + ;; Data packages are neither listed in SVN nor on + ;; the Github mirror, so we have to exclude them + ;; from the set of bioconductor packages that can be + ;; updated automatically. + (not (string-contains uri "/data/annotation/")) + ;; Experiment packages are in a separate repository. + (not (string-contains uri "/data/experiment/")))))) + (and (string-prefix? "r-" (package-name package)) + (match (and=> (package-source package) origin-uri) + ((? string? uri) + (predicate uri)) + ((? list? uris) + (any predicate uris)) + (_ #f))))) + +(define (bioconductor-data-package? package) + "Return true if PACKAGE is an R data package from Bioconductor." + (let ((predicate (lambda (uri) + (and (string-prefix? "http://bioconductor.org" uri) + (string-contains uri "/data/annotation/"))))) + (and (string-prefix? "r-" (package-name package)) + (match (and=> (package-source package) origin-uri) + ((? string? uri) + (predicate uri)) + ((? list? uris) + (any predicate uris)) + (_ #f))))) + +(define (bioconductor-experiment-package? package) + "Return true if PACKAGE is an R experiment package from Bioconductor." + (let ((predicate (lambda (uri) + (and (string-prefix? "http://bioconductor.org" uri) + (string-contains uri "/data/experiment/"))))) + (and (string-prefix? "r-" (package-name package)) + (match (and=> (package-source package) origin-uri) + ((? string? uri) + (predicate uri)) + ((? list? uris) + (any predicate uris)) + (_ #f))))) (define %cran-updater (upstream-updater diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index b1003304d0..858eea88e2 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -82,7 +82,7 @@ NAMES (strings)." ;; Use a relatively small TTL for the archive itself. (parameterize ((%http-cache-ttl (* 6 3600))) (call-with-downloaded-file url read)) - (leave (_ "~A: currently not supported~%") repo)))) + (leave (G_ "~A: currently not supported~%") repo)))) (define* (call-with-downloaded-file url proc #:optional (error-thunk #f)) "Fetch URL, store the content in a temporary file and call PROC with that @@ -94,7 +94,7 @@ return its value or leave if it's false." (lambda (key . args) (if error-thunk (error-thunk) - (leave (_ "~A: download failed~%") url))))) + (leave (G_ "~A: download failed~%") url))))) (define (is-elpa-package? name elpa-pkg-spec) "Return true if the string NAME corresponds to the name of the package diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm index 1e433e3fb3..9c72e73314 100644 --- a/guix/import/pypi.scm +++ b/guix/import/pypi.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -132,7 +133,7 @@ extracted in the current directory, and will be deleted." (string-drop-right basename 8)) (else (begin - (warning (_ "Unsupported archive format: \ + (warning (G_ "Unsupported archive format: \ cannot determine package dependencies")) #f))))) @@ -215,7 +216,7 @@ cannot determine package dependencies")) (delete-file req-file) (rmdir dirname))) (begin - (warning (_ "'tar xf' failed with exit code ~a\n") + (warning (G_ "'tar xf' failed with exit code ~a\n") exit-code) '()))) '()))) @@ -279,7 +280,7 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (and package (guard (c ((missing-source-error? c) (let ((package (missing-source-error-package c))) - (leave (_ "no source release for pypi package ~a ~a~%") + (leave (G_ "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")) @@ -322,15 +323,17 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE." (define (latest-release package) "Return an <upstream-source> for the latest release of PACKAGE." - (guard (c ((missing-source-error? c) #f)) - (let* ((pypi-name (guix-package->pypi-name package)) - (metadata (pypi-fetch pypi-name)) - (version (assoc-ref* metadata "info" "version")) - (url (assoc-ref (latest-source-release metadata) "url"))) - (upstream-source - (package (package-name package)) - (version version) - (urls (list url)))))) + (let* ((pypi-name (guix-package->pypi-name package)) + (pypi-package (pypi-fetch pypi-name))) + (and pypi-package + (guard (c ((missing-source-error? c) #f)) + (let* ((metadata pypi-package) + (version (assoc-ref* metadata "info" "version")) + (url (assoc-ref (latest-source-release metadata) "url"))) + (upstream-source + (package (package-name package)) + (version version) + (urls (list url)))))))) (define %pypi-updater (upstream-updater diff --git a/guix/licenses.scm b/guix/licenses.scm index 7b2ac2d311..8396b1a3c6 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> @@ -9,6 +9,8 @@ ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016, 2017 ng0 <ng0@libertad.pw> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,10 +39,11 @@ cc0 cc-by2.0 cc-by3.0 cc-by-sa2.0 cc-by-sa3.0 cc-by-sa4.0 cddl1.0 - cecill-c + cecill cecill-b cecill-c artistic2.0 clarified-artistic copyleft-next cpl1.0 + edl1.0 epl1.0 expat freetype @@ -61,6 +64,7 @@ ncsa nmap openldap2.8 openssl + perl-license psfl public-domain qpl repoze @@ -75,7 +79,8 @@ zpl2.1 zlib fsf-free - wtfpl2)) + wtfpl2 + fsdg-compatible)) (define-record-type <license> (license name uri comment) @@ -191,7 +196,17 @@ at URI, which may be a file:// URI pointing the package's tree." "http://directory.fsf.org/wiki/License:CDDLv1.0" "https://www.gnu.org/licenses/license-list#CDDL")) -(define cecill-c +(define cecill ;copyleft + (license "CeCILL" + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + "https://www.gnu.org/licenses/license-list.html#CeCILL")) + +(define cecill-b ;non-copyleft + (license "CeCILL-B" + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + "https://www.gnu.org/licenses/license-list.html#CeCILL")) + +(define cecill-c ;weak copyleft (license "CeCILL-C" "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" "https://www.gnu.org/licenses/license-list.html#CeCILL")) @@ -217,6 +232,11 @@ at URI, which may be a file:// URI pointing the package's tree." "http://directory.fsf.org/wiki/License:CPLv1.0" "https://www.gnu.org/licenses/license-list#CommonPublicLicense10")) +(define edl1.0 + (license "EDL 1.0" + "http://directory.fsf.org/wiki/License:EDLv1.0" + "https://eclipse.org/org/documents/edl-v10.php")) + (define epl1.0 (license "EPL 1.0" "http://directory.fsf.org/wiki/License:EPLv1.0" @@ -395,6 +415,12 @@ at URI, which may be a file:// URI pointing the package's tree." "https://www.gnu.org/licenses/license-list#newOpenLDAP")) ;; lists OpenLDAPv2.7, which is virtually identical +(define perl-license + ;; The license of Perl, GPLv1+ or Artistic (we ignore the latter here). + ;; We define this alias to avoid circular dependencies introduced by the use + ;; of the '(package-license perl)' idiom. + gpl1+) + (define psfl (license "Python Software Foundation License" "http://docs.python.org/license.html" @@ -488,4 +514,13 @@ of licenses, approved as free by the FSF. More details can be found at URI." uri comment)) +(define* (fsdg-compatible uri #:optional (comment "")) + "Return a license that does not fit any of the ones above or a collection +of licenses, not necessarily free, but in accordance with FSDG as Non-functional +Data. More details can be found at URI. See also +https://www.gnu.org/distros/free-system-distribution-guidelines.en.html#non-functional-data." + (license "FSDG-compatible" + uri + comment)) + ;;; licenses.scm ends here diff --git a/guix/modules.scm b/guix/modules.scm index 8c63f21a97..24b5903579 100644 --- a/guix/modules.scm +++ b/guix/modules.scm @@ -95,11 +95,16 @@ depends on." (('gnu _ ...) #t) (_ #f))) +(define %source-less-modules + ;; These are modules that have no corresponding source files or a source + ;; file different from what you'd expect. + '((system syntax) ;2.0, defined in boot-9 + (ice-9 ports internal) ;2.2, defined in (ice-9 ports) + (system syntax internal))) ;2.2, defined in boot-9 + (define* (source-module-dependencies module #:optional (load-path %load-path)) "Return the modules used by MODULE by looking at its source code." - ;; The (system syntax) module is a special-case because it has no - ;; corresponding source file (as of Guile 2.0.) - (if (equal? module '(system syntax)) + (if (member module %source-less-modules) '() (module-file-dependencies (search-path load-path diff --git a/guix/monads.scm b/guix/monads.scm index 0b0ad239de..6ae616aca9 100644 --- a/guix/monads.scm +++ b/guix/monads.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +29,8 @@ monad-bind monad-return + template-directory + ;; Syntax. >>= return @@ -92,6 +94,9 @@ ;; The record type, for use at run time. (make-monad b r)) + ;; Instantiate all the templates, specialized for this monad. + (template-directory instantiations name) + (define-syntax name ;; An "inlined record", for use at expansion time. The goal is ;; to allow 'bind' and 'return' to be resolved at expansion @@ -103,6 +108,172 @@ ((_ %return) #'r) (_ #'rtd)))))))))) +;; Expansion- and run-time state of the template directory. This needs to be +;; available at run time (and not just at expansion time) so we can +;; instantiate templates defined in other modules, or use instances defined +;; elsewhere. +(eval-when (load expand eval) + ;; Mapping of syntax objects denoting the template to a pair containing (1) + ;; the syntax object of the parameter over which it is templated, and (2) + ;; the syntax of its body. + (define-once %templates (make-hash-table)) + + (define (register-template! name param body) + (hash-set! %templates name (cons param body))) + + ;; List of template instances, where each entry is a triplet containing the + ;; syntax of the name, the actual parameter for which the template is + ;; specialized, and the syntax object referring to this specialization (the + ;; procedure's identifier.) + (define-once %template-instances '()) + + (define (register-template-instance! name actual instance) + (set! %template-instances + (cons (list name actual instance) %template-instances)))) + +(define-syntax template-directory + (lambda (s) + "This is a \"stateful macro\" to register and lookup templates and +template instances." + (define location + (syntax-source s)) + + (define current-info-port + ;; Port for debugging info. + (const (%make-void-port "w"))) + + (define location-string + (format #f "~a:~a:~a" + (assq-ref location 'filename) + (and=> (assq-ref location 'line) 1+) + (assq-ref location 'column))) + + (define (matching-instance? name actual) + (match-lambda + ((name* instance-param proc) + (and (free-identifier=? name name*) + (or (equal? actual instance-param) + (and (identifier? actual) + (identifier? instance-param) + (free-identifier=? instance-param + actual))) + proc)))) + + (define (instance-identifier name actual) + (define stem + (string-append + " " + (symbol->string (syntax->datum name)) + (if (identifier? actual) + (string-append " " (symbol->string (syntax->datum actual))) + "") + " instance")) + (datum->syntax actual (string->symbol stem))) + + (define (instance-definition name template actual) + (match template + ((formal . body) + (let ((instance (instance-identifier name actual))) + (format (current-info-port) + "~a: info: specializing '~a' for '~a' as '~a'~%" + location-string + (syntax->datum name) (syntax->datum actual) + (syntax->datum instance)) + + (register-template-instance! name actual instance) + + #`(begin + (define #,instance + (let-syntax ((#,formal (identifier-syntax #,actual))) + #,body)) + + ;; Generate code to register the thing at run time. + (register-template-instance! #'#,name #'#,actual + #'#,instance)))))) + + (syntax-case s (register! lookup exists? instantiations) + ((_ register! name param body) + ;; Register NAME as a template on PARAM with the given BODY. + (begin + (register-template! #'name #'param #'body) + + ;; Generate code to register the template at run time. XXX: Because + ;; of this, BODY must not contain ellipses. + #'(register-template! #'name #'param #'body))) + ((_ lookup name actual) + ;; Search for an instance of template NAME for this ACTUAL parameter. + ;; On success, expand to the identifier of the instance; otherwise + ;; expand to #f. + (any (matching-instance? #'name #'actual) %template-instances)) + ((_ exists? name actual) + ;; Likewise, but return a Boolean. + (let ((result (->bool + (any (matching-instance? #'name #'actual) + %template-instances)))) + (unless result + (format (current-warning-port) + "~a: warning: no specialization of template '~a' for '~a'~%" + location-string + (syntax->datum #'name) (syntax->datum #'actual))) + result)) + ((_ instantiations actual) + ;; Expand to the definitions of all the existing templates + ;; specialized for ACTUAL. + #`(begin + #,@(hash-map->list (cut instance-definition <> <> #'actual) + %templates)))))) + +(define-syntax define-template + (lambda (s) + "Define a template, which is a procedure that can be specialized over its +first argument. In our case, the first argument is typically the identifier +of a monad. + +Defining templates for procedures like 'mapm' allows us to make have a +specialized version of those procedures for each monad that we define, such +that calls to: + + (mapm %state-monad proc lst) + +automatically expand to: + + (#{ mapm %state-monad instance}# proc lst) + +Here, #{ mapm %state-monad instance}# is specialized for %state-monad, and +thus it contains inline calls to %state-bind and %state-return. This avoids +repeated calls to 'struct-ref' to get the 'bind' and 'return' procedure of the +monad, and allows 'bind' and 'return' to be inlined, which in turn allows for +more optimizations." + (syntax-case s () + ((_ (name arg0 args ...) body ...) + (with-syntax ((generic-name (datum->syntax + #'name + (symbol-append '#{ %}# + (syntax->datum #'name) + '-generic))) + (original-name #'name)) + #`(begin + (template-directory register! name arg0 + (lambda (args ...) + body ...)) + (define (generic-name arg0 args ...) + ;; The generic instance of NAME, for when no specialization was + ;; found. + body ...) + + (define-syntax name + (lambda (s) + (syntax-case s () + ((_ arg0* args ...) + ;; Expand to either the specialized instance or the + ;; generic instance of template ORIGINAL-NAME. + #'(if (template-directory exists? original-name arg0*) + ((template-directory lookup original-name arg0*) + args ...) + (generic-name arg0* args ...))) + (_ + #'generic-name)))))))))) + (define-syntax-parameter >>= ;; The name 'bind' is already taken, so we choose this (obscure) symbol. (lambda (s) @@ -185,8 +356,9 @@ form is (VAR -> VAL), bind VAR to the non-monadic value VAL in the same way as (define-syntax mbegin (syntax-rules (%current-monad) - "Bind the given monadic expressions in sequence, returning the result of -the last one." + "Bind MEXP and the following monadic expressions in sequence, returning +the result of the last expression. Every expression in the sequence must be a +monadic expression." ((_ %current-monad mexp) mexp) ((_ %current-monad mexp rest ...) @@ -204,23 +376,27 @@ the last one." (define-syntax mwhen (syntax-rules () - "When CONDITION is true, evaluate EXP0..EXP* as in an 'mbegin'. When -CONDITION is false, return *unspecified* in the current monad." - ((_ condition exp0 exp* ...) + "When CONDITION is true, evaluate the sequence of monadic expressions +MEXP0..MEXP* as in an 'mbegin'. When CONDITION is false, return *unspecified* +in the current monad. Every expression in the sequence must be a monadic +expression." + ((_ condition mexp0 mexp* ...) (if condition (mbegin %current-monad - exp0 exp* ...) + mexp0 mexp* ...) (return *unspecified*))))) (define-syntax munless (syntax-rules () - "When CONDITION is false, evaluate EXP0..EXP* as in an 'mbegin'. When -CONDITION is true, return *unspecified* in the current monad." - ((_ condition exp0 exp* ...) + "When CONDITION is false, evaluate the sequence of monadic expressions +MEXP0..MEXP* as in an 'mbegin'. When CONDITION is true, return *unspecified* +in the current monad. Every expression in the sequence must be a monadic +expression." + ((_ condition mexp0 mexp* ...) (if condition (return *unspecified*) (mbegin %current-monad - exp0 exp* ...))))) + mexp0 mexp* ...))))) (define-syntax define-lift (syntax-rules () @@ -260,7 +436,7 @@ MONAD---i.e., return a monadic function in MONAD." (with-monad monad (return (apply proc args))))) -(define (foldm monad mproc init lst) +(define-template (foldm monad mproc init lst) "Fold MPROC over LST and return a monadic value seeded by INIT. (foldm %state-monad (lift2 cons %state-monad) '() '(a b c)) @@ -272,33 +448,33 @@ MONAD---i.e., return a monadic function in MONAD." (match lst (() (return result)) - ((head tail ...) + ((head . tail) (>>= (mproc head result) (lambda (result) (loop tail result)))))))) -(define (mapm monad mproc lst) +(define-template (mapm monad mproc lst) "Map MPROC over LST and return a monadic list. (mapm %state-monad (lift1 1+ %state-monad) '(0 1 2)) => (1 2 3) ;monadic " - (mlet monad ((result (foldm monad - (lambda (item result) - (>>= (mproc item) - (lambda (item) - (return (cons item result))))) - '() - lst))) - (return (reverse result)))) - -(define-syntax-rule (sequence monad lst) + ;; XXX: We don't use 'foldm' because template specialization wouldn't work + ;; in this context. + (with-monad monad + (let mapm ((lst lst) + (result '())) + (match lst + (() + (return (reverse result))) + ((head . tail) + (>>= (mproc head) + (lambda (head) + (mapm tail (cons head result))))))))) + +(define-template (sequence monad lst) "Turn the list of monadic values LST into a monadic list of values, by evaluating each item of LST in sequence." - ;; XXX: Making it a macro is a bit brutal as it leads to a lot of code - ;; duplication. However, it allows >>= and return to be open-coded, which - ;; avoids struct-ref's to MONAD and a few closure allocations when using - ;; %STATE-MONAD. (with-monad monad (let seq ((lstx lst) (result '())) @@ -310,7 +486,7 @@ evaluating each item of LST in sequence." (lambda (item) (seq tail (cons item result))))))))) -(define (anym monad mproc lst) +(define-template (anym monad mproc lst) "Apply MPROC to the list of values LST; return as a monadic value the first value for which MPROC returns a true monadic value or #f. For example: @@ -322,7 +498,7 @@ value for which MPROC returns a true monadic value or #f. For example: (match lst (() (return #f)) - ((head tail ...) + ((head . tail) (>>= (mproc head) (lambda (result) (if result diff --git a/guix/nar.scm b/guix/nar.scm index 739d3d3a57..9b4c608238 100644 --- a/guix/nar.scm +++ b/guix/nar.scm @@ -208,7 +208,7 @@ s-expression")) (hash (get-hash)) (has-sig? (= 1 (read-int port)))) (format log-port - (_ "importing file or directory '~a'...~%") + (G_ "importing file or directory '~a'...~%") file) ;; The signature may contain characters that are meant to be @@ -219,7 +219,7 @@ s-expression")) (begin (assert-valid-signature sig hash file) (format log-port - (_ "found valid signature for '~a'~%") + (G_ "found valid signature for '~a'~%") file) (finalize-store-file temp file #:references refs diff --git a/guix/packages.scm b/guix/packages.scm index 29351ace1d..97580352e2 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1,8 +1,9 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,7 +32,6 @@ #:use-module (guix memoization) #:use-module (guix build-system) #:use-module (guix search-paths) - #:use-module (guix gexp) #:use-module (guix sets) #:use-module (ice-9 match) #:use-module (ice-9 vlist) @@ -99,12 +99,14 @@ package-transitive-propagated-inputs package-transitive-native-search-paths package-transitive-supported-systems + package-mapping package-input-rewriting package-source-derivation package-derivation package-cross-derivation package-output package-grafts + package/inherit transitive-input-references @@ -223,7 +225,7 @@ name of its URI." (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. - '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")) + '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux")) (define %hurd-systems ;; The GNU/Hurd systems for which support is being developed. @@ -234,7 +236,7 @@ name of its URI." ;; ;; XXX: MIPS is temporarily unavailable on Hydra: ;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>. - (delete "mips64el-linux" %supported-systems)) + (fold delete %supported-systems '("aarch64-linux" "mips64el-linux"))) ;; A package. @@ -747,36 +749,63 @@ dependencies are known to build on SYSTEM." "Return the \"target inputs\" of BAG, recursively." (transitive-inputs (bag-target-inputs bag))) -(define* (package-input-rewriting replacements - #:optional (rewrite-name identity)) - "Return a procedure that, when passed a package, replaces its direct and -indirect dependencies (but not its implicit inputs) according to REPLACEMENTS. -REPLACEMENTS is a list of package pairs; the first element of each pair is the -package to replace, and the second one is the replacement. - -Optionally, REWRITE-NAME is a one-argument procedure that takes the name of a -package and returns its new name after rewrite." +(define* (package-mapping proc #:optional (cut? (const #f))) + "Return a procedure that, given a package, applies PROC to all the packages +depended on and returns the resulting package. The procedure stops recursion +when CUT? returns true for a given package." (define (rewrite input) (match input ((label (? package? package) outputs ...) - (match (assq-ref replacements package) - (#f (cons* label (replace package) outputs)) - (new (cons* label new outputs)))) + (let ((proc (if (cut? package) proc replace))) + (cons* label (proc package) outputs))) (_ input))) (define replace (mlambdaq (p) - ;; Return a variant of P with its inputs rewritten. - (package - (inherit p) - (name (rewrite-name (package-name p))) - (inputs (map rewrite (package-inputs p))) - (native-inputs (map rewrite (package-native-inputs p))) - (propagated-inputs (map rewrite (package-propagated-inputs p)))))) + ;; Return a variant of P with PROC applied to P and its explicit + ;; dependencies, recursively. Memoize the transformations. Failing to + ;; do that, we would build a huge object graph with lots of duplicates, + ;; which in turns prevents us from benefiting from memoization in + ;; 'package-derivation'. + (let ((p (proc p))) + (package + (inherit p) + (location (package-location p)) + (inputs (map rewrite (package-inputs p))) + (native-inputs (map rewrite (package-native-inputs p))) + (propagated-inputs (map rewrite (package-propagated-inputs p))))))) replace) +(define* (package-input-rewriting replacements + #:optional (rewrite-name identity)) + "Return a procedure that, when passed a package, replaces its direct and +indirect dependencies (but not its implicit inputs) according to REPLACEMENTS. +REPLACEMENTS is a list of package pairs; the first element of each pair is the +package to replace, and the second one is the replacement. + +Optionally, REWRITE-NAME is a one-argument procedure that takes the name of a +package and returns its new name after rewrite." + (define (rewrite p) + (match (assq-ref replacements p) + (#f (package + (inherit p) + (name (rewrite-name (package-name p))))) + (new new))) + + (package-mapping rewrite (cut assq <> replacements))) + +(define-syntax-rule (package/inherit p overrides ...) + "Like (package (inherit P) OVERRIDES ...), except that the same +transformation is done to the package replacement, if any. P must be a bare +identifier, and will be bound to either P or its replacement when evaluating +OVERRIDES." + (let loop ((p p)) + (package (inherit p) + overrides ... + (replacement (and=> (package-replacement p) loop))))) + ;;; ;;; Package derivations. @@ -851,7 +880,16 @@ information in exceptions." ;; source. (list name (intern file))) (((? string? name) (? struct? source)) - (list name (package-source-derivation store source system))) + ;; 'package-source-derivation' calls 'lower-object', which can throw + ;; '&gexp-input-error'. However '&gexp-input-error' lacks source + ;; location info, so we catch and rethrow here (XXX: not optimal + ;; performance-wise). + (guard (c ((gexp-input-error? c) + (raise (condition + (&package-input-error + (package package) + (input (gexp-error-invalid-input c))))))) + (list name (package-source-derivation store source system)))) (x (raise (condition (&package-input-error (package package) diff --git a/guix/profiles.scm b/guix/profiles.scm index 795c9447fe..6733f105e3 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com> +;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -946,10 +947,96 @@ files for the fonts of the @var{manifest} entries." #:local-build? #t #:substitutable? #f)) +(define (manual-database manifest) + "Return a derivation that builds the manual page database (\"mandb\") for +the entries in MANIFEST." + (define man-db ;lazy reference + (module-ref (resolve-interface '(gnu packages man)) 'man-db)) + + (define build + #~(begin + (use-modules (guix build utils) + (srfi srfi-1) + (srfi srfi-19) + (srfi srfi-26)) + + (define entries + (filter-map (lambda (directory) + (let ((man (string-append directory "/share/man"))) + (and (directory-exists? man) + man))) + '#$(manifest-inputs manifest))) + + (define manpages-collection-dir + (string-append (getenv "PWD") "/manpages-collection")) + + (define man-directory + (string-append #$output "/share/man")) + + (define (get-manpage-tail-path manpage-path) + (let ((index (string-contains manpage-path "/share/man/"))) + (unless index + (error "Manual path doesn't contain \"/share/man/\":" + manpage-path)) + (string-drop manpage-path (+ index (string-length "/share/man/"))))) + + (define (populate-manpages-collection-dir entries) + (let ((manpages (append-map (cut find-files <> #:stat stat) entries))) + (for-each (lambda (manpage) + (let* ((dest-file (string-append + manpages-collection-dir "/" + (get-manpage-tail-path manpage)))) + (mkdir-p (dirname dest-file)) + (catch 'system-error + (lambda () + (symlink manpage dest-file)) + (lambda args + ;; Different packages may contain the same + ;; manpage. Simply ignore the symlink error. + #t)))) + manpages))) + + (mkdir-p manpages-collection-dir) + (populate-manpages-collection-dir entries) + + ;; Create a mandb config file which contains a custom made + ;; manpath. The associated catpath is the location where the database + ;; gets generated. + (copy-file #+(file-append man-db "/etc/man_db.conf") + "man_db.conf") + (substitute* "man_db.conf" + (("MANDB_MAP /usr/man /var/cache/man/fsstnd") + (string-append "MANDB_MAP " manpages-collection-dir " " + man-directory))) + + (mkdir-p man-directory) + (setenv "MANPATH" (string-join entries ":")) + + (format #t "Creating manual page database for ~a packages... " + (length entries)) + (force-output) + (let* ((start-time (current-time)) + (exit-status (system* #+(file-append man-db "/bin/mandb") + "--quiet" "--create" + "-C" "man_db.conf")) + (duration (time-difference (current-time) start-time))) + (format #t "done in ~,3f s~%" + (+ (time-second duration) + (* (time-nanosecond duration) (expt 10 -9)))) + (force-output) + (zero? exit-status)))) + + (gexp->derivation "manual-database" build + #:modules '((guix build utils) + (srfi srfi-19) + (srfi srfi-26)) + #:local-build? #t)) + (define %default-profile-hooks ;; This is the list of derivation-returning procedures that are called by ;; default when making a non-empty profile. (list info-dir-file + manual-database fonts-dir-file ghc-package-cache-file ca-certificate-bundle diff --git a/guix/records.scm b/guix/records.scm index f3f3aafb04..7de5fccef6 100644 --- a/guix/records.scm +++ b/guix/records.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -134,10 +134,9 @@ fields, and DELAYED is the list of identifiers of delayed fields." ((_ (field value) (... ...)) (let ((fields (map syntax->datum #'(field (... ...))))) (define (field-value f) - (or (and=> (find (lambda (x) - (eq? f (car (syntax->datum x)))) - #'((field value) (... ...))) - car) + (or (find (lambda (x) + (eq? f (syntax->datum x))) + #'(field (... ...))) (wrap-field-value f (field-default-value f)))) (let ((fields (append fields (map car default-values)))) diff --git a/guix/scripts.scm b/guix/scripts.scm index bbee50bc3d..9ff7f25548 100644 --- a/guix/scripts.scm +++ b/guix/scripts.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; @@ -27,13 +27,16 @@ #:use-module (guix packages) #:use-module (guix derivations) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) #:use-module (srfi srfi-37) #:use-module (ice-9 match) #:export (args-fold* parse-command-line maybe-build build-package - build-package-source)) + build-package-source + %distro-age-warning + warn-about-old-distro)) ;;; Commentary: ;;; @@ -50,7 +53,7 @@ reporting." operand-proc seeds)) (lambda (key proc msg args . rest) ;; XXX: MSG is not i18n'd. - (leave (_ "invalid argument: ~a~%") + (leave (G_ "invalid argument: ~a~%") (apply format #f msg args))))) (define (environment-build-options) @@ -76,7 +79,7 @@ parameter of 'args-fold'." ;; Actual parsing takes place here. (apply args-fold* args options (lambda (opt name arg . rest) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) argument-handler seeds)) @@ -136,4 +139,47 @@ Show what and how will/would be built." #:dry-run? dry-run?) (return (show-derivation-outputs derivation)))))) +(define %distro-age-warning + ;; The age (in seconds) above which we warn that the distro is too old. + (make-parameter (match (and=> (getenv "GUIX_DISTRO_AGE_WARNING") + string->duration) + (#f (* 7 24 3600)) + (age (time-second age))))) + +(define* (warn-about-old-distro #:optional (old (%distro-age-warning)) + #:key (suggested-command + "guix package -u")) + "Emit a warning if Guix is older than OLD seconds." + (let-syntax ((false-if-not-found + (syntax-rules () + ((_ exp) + (catch 'system-error + (lambda () + exp) + (lambda args + (if (= ENOENT (system-error-errno args)) + #f + (apply throw args)))))))) + (define (seconds->days seconds) + (round (/ seconds (* 3600 24)))) + + (define age + (match (false-if-not-found + (lstat (string-append (config-directory #:ensure? #f) + "/latest"))) + (#f #f) + (stat (- (time-second (current-time time-utc)) + (stat:mtime stat))))) + + (when (and age (>= age old)) + (warning (N_ "Your Guix installation is ~a day old.\n" + "Your Guix installation is ~a days old.\n" + (seconds->days age)) + (seconds->days age))) + (when (or (not age) (>= age old)) + (warning (G_ "Consider running 'guix pull' followed by +'~a' to get up-to-date packages and security updates.\n") + suggested-command) + (newline (guix-warning-port))))) + ;;; scripts.scm ends here diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm index 8137455a9d..5ea19784dc 100644 --- a/guix/scripts/archive.scm +++ b/guix/scripts/archive.scm @@ -58,41 +58,41 @@ (verbosity . 0))) (define (show-help) - (display (_ "Usage: guix archive [OPTION]... PACKAGE... + (display (G_ "Usage: guix archive [OPTION]... PACKAGE... Export/import one or more packages from/to the store.\n")) - (display (_ " + (display (G_ " --export export the specified files/packages to stdout")) - (display (_ " + (display (G_ " -r, --recursive combined with '--export', include dependencies")) - (display (_ " + (display (G_ " --import import from the archive passed on stdin")) - (display (_ " + (display (G_ " --missing print the files from stdin that are missing")) - (display (_ " + (display (G_ " -x, --extract=DIR extract the archive on stdin to DIR")) (newline) - (display (_ " + (display (G_ " --generate-key[=PARAMETERS] generate a key pair with the given parameters")) - (display (_ " + (display (G_ " --authorize authorize imports signed by the public key on stdin")) (newline) - (display (_ " + (display (G_ " -e, --expression=EXPR build the package or derivation EXPR evaluates to")) - (display (_ " + (display (G_ " -S, --source build the packages' source derivations")) - (display (_ " + (display (G_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) - (display (_ " + (display (G_ " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"")) (newline) (show-build-options-help) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -140,7 +140,7 @@ Export/import one or more packages from/to the store.\n")) (or arg %key-generation-parameters)))) (alist-cons 'generate-key params result))) (lambda (key proc err) - (leave (_ "invalid key generation parameters: ~a: ~a~%") + (leave (G_ "invalid key generation parameters: ~a: ~a~%") (error-source err) (error-string err)))))) (option '("authorize") #f #f @@ -179,7 +179,7 @@ derivation of a package." (let ((source (package-source p))) (if source (package-source-derivation store source) - (leave (_ "package `~a' has no source~%") + (leave (G_ "package `~a' has no source~%") (package-name p)))) (package-derivation store p system))) ((? procedure? proc) @@ -248,25 +248,25 @@ resulting archive to the standard output port." (build-derivations store drv)) (export-paths store files (current-output-port) #:recursive? (assoc-ref opts 'export-recursive?)) - (leave (_ "unable to export the given packages~%"))))) + (leave (G_ "unable to export the given packages~%"))))) (define (generate-key-pair parameters) "Generate a key pair with PARAMETERS, a canonical sexp, and store it in the right place." (when (or (file-exists? %public-key-file) (file-exists? %private-key-file)) - (leave (_ "key pair exists under '~a'; remove it first~%") + (leave (G_ "key pair exists under '~a'; remove it first~%") (dirname %public-key-file))) (format (current-error-port) - (_ "Please wait while gathering entropy to generate the key pair; + (G_ "Please wait while gathering entropy to generate the key pair; this may take time...~%")) (let* ((pair (catch 'gcry-error (lambda () (generate-key parameters)) (lambda (key proc err) - (leave (_ "key generation failed: ~a: ~a~%") + (leave (G_ "key generation failed: ~a: ~a~%") (error-source err) (error-string err))))) (public (find-sexp-token pair 'public-key)) @@ -293,13 +293,13 @@ the input port." (lambda () (string->canonical-sexp (read-string (current-input-port)))) (lambda (key proc err) - (leave (_ "failed to read public key: ~a: ~a~%") + (leave (G_ "failed to read public key: ~a: ~a~%") (error-source err) (error-string err))))) (let ((key (read-key)) (acl (current-acl))) (unless (eq? 'public-key (canonical-sexp-nth-data key 0)) - (leave (_ "s-expression does not denote a public key~%"))) + (leave (G_ "s-expression does not denote a public key~%"))) ;; Add KEY to the ACL and write that. (let ((acl (public-keys->acl (cons key (acl->public-keys acl))))) @@ -345,5 +345,5 @@ the input port." (restore-file (current-input-port) target))) (else (leave - (_ "either '--export' or '--import' \ + (G_ "either '--export' or '--import' \ must be specified~%")))))))))))) diff --git a/guix/scripts/authenticate.scm b/guix/scripts/authenticate.scm index d9a312f1da..8b19dc871b 100644 --- a/guix/scripts/authenticate.scm +++ b/guix/scripts/authenticate.scm @@ -56,7 +56,7 @@ both the hash and the actual signature." ".pub") read-canonical-sexp) (leave - (_ "cannot find public key for secret key '~a'~%") + (G_ "cannot find public key for secret key '~a'~%") key-file))) (data (read-hash-data port (key-type public-key))) (signature (signature-sexp data secret-key public-key))) @@ -76,11 +76,11 @@ to stdout upon success." (let ((hash (hash-data->bytevector data))) (display (bytevector->base16-string hash)) #t) ; success - (leave (_ "error: invalid signature: ~a~%") + (leave (G_ "error: invalid signature: ~a~%") (canonical-sexp->string signature))) - (leave (_ "error: unauthorized public key: ~a~%") + (leave (G_ "error: unauthorized public key: ~a~%") (canonical-sexp->string subject))) - (leave (_ "error: corrupt signature data: ~a~%") + (leave (G_ "error: corrupt signature data: ~a~%") (canonical-sexp->string signature))))) @@ -118,12 +118,12 @@ to stdout upon success." (("rsautl" "-verify" "-inkey" _ "-pubin") (validate-signature (current-input-port))) (("--help") - (display (_ "Usage: guix authenticate OPTION... + (display (G_ "Usage: guix authenticate OPTION... Sign or verify the signature on the given file. This tool is meant to be used internally by 'guix-daemon'.\n"))) (("--version") (show-version-and-exit "guix authenticate")) (else - (leave (_ "wrong arguments")))))) + (leave (G_ "wrong arguments")))))) ;;; authenticate.scm ends here diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 68402fda18..558e8e7719 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -51,7 +51,9 @@ options->transformation show-transformation-options-help - guix-build)) + guix-build + register-root + register-root*)) (define %default-log-urls ;; Default base URLs for build logs. @@ -119,9 +121,12 @@ found. Return #f if no build log was found." 0 paths)))) (lambda args - (leave (_ "failed to create GC root `~a': ~a~%") + (leave (G_ "failed to create GC root `~a': ~a~%") root (strerror (system-error-errno args))))))) +(define register-root* + (store-lift register-root)) + (define (package-with-source store p uri) "Return a package based on P but with its source taken from URI. Extract the new package's version number from URI." @@ -198,7 +203,7 @@ could not be found." (proc (specification->package old) (specification->package new))) (x - (leave (_ "invalid replacement specification: ~s~%") spec)))) + (leave (G_ "invalid replacement specification: ~s~%") spec)))) specs)) (define (transform-package-inputs replacement-specs) @@ -255,13 +260,13 @@ current 'gnutls' package, after which version 3.5.4 is grafted onto them." (parser 'with-graft))))) (define (show-transformation-options-help) - (display (_ " + (display (G_ " --with-source=SOURCE use SOURCE when building the corresponding package")) - (display (_ " + (display (G_ " --with-input=PACKAGE=REPLACEMENT replace dependency PACKAGE by REPLACEMENT")) - (display (_ " + (display (G_ " --with-graft=PACKAGE=REPLACEMENT graft REPLACEMENT on packages that refer to PACKAGE"))) @@ -286,7 +291,7 @@ derivation, etc.), applies the transformations specified by OPTS." (((name . transform) obj) (let ((new (transform store obj))) (when (eq? new obj) - (warning (_ "transformation '~a' had no effect on ~a~%") + (warning (G_ "transformation '~a' had no effect on ~a~%") name (if (package? obj) (package-full-name obj) @@ -304,37 +309,37 @@ derivation, etc.), applies the transformations specified by OPTS." "Display on the current output port help about the standard command-line options handled by 'set-build-options-from-command-line', and listed in '%standard-build-options'." - (display (_ " + (display (G_ " -L, --load-path=DIR prepend DIR to the package module search path")) - (display (_ " + (display (G_ " -K, --keep-failed keep build tree of failed builds")) - (display (_ " + (display (G_ " -k, --keep-going keep going when some of the derivations fail")) - (display (_ " + (display (G_ " -n, --dry-run do not build the derivations")) - (display (_ " + (display (G_ " --fallback fall back to building when the substituter fails")) - (display (_ " + (display (G_ " --no-substitutes build instead of resorting to pre-built substitutes")) - (display (_ " + (display (G_ " --substitute-urls=URLS fetch substitute from URLS if they are authorized")) - (display (_ " + (display (G_ " --no-grafts do not graft packages")) - (display (_ " + (display (G_ " --no-build-hook do not attempt to offload builds via the build hook")) - (display (_ " + (display (G_ " --max-silent-time=SECONDS mark the build as failed after SECONDS of silence")) - (display (_ " + (display (G_ " --timeout=SECONDS mark the build as failed after SECONDS of activity")) - (display (_ " + (display (G_ " --verbosity=LEVEL use the given verbosity LEVEL")) - (display (_ " + (display (G_ " --rounds=N build N times in a row to detect non-determinism")) - (display (_ " + (display (G_ " -c, --cores=N allow the use of up to N CPU cores for the build")) - (display (_ " + (display (G_ " -M, --max-jobs=N allow at most N build jobs"))) (define (set-build-options-from-command-line store opts) @@ -440,14 +445,14 @@ options handled by 'set-build-options-from-command-line', and listed in (let ((c (false-if-exception (string->number arg)))) (if c (apply values (alist-cons 'cores c result) rest) - (leave (_ "not a number: '~a' option argument: ~a~%") + (leave (G_ "not a number: '~a' option argument: ~a~%") name arg))))) (option '(#\M "max-jobs") #t #f (lambda (opt name arg result . rest) (let ((c (false-if-exception (string->number arg)))) (if c (apply values (alist-cons 'max-jobs c result) rest) - (leave (_ "not a number: '~a' option argument: ~a~%") + (leave (G_ "not a number: '~a' option argument: ~a~%") name arg))))))) @@ -466,43 +471,43 @@ options handled by 'set-build-options-from-command-line', and listed in (verbosity . 0))) (define (show-help) - (display (_ "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION... + (display (G_ "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION... Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) - (display (_ " + (display (G_ " -e, --expression=EXPR build the package or derivation EXPR evaluates to")) - (display (_ " + (display (G_ " -f, --file=FILE build the package or derivation that the code within FILE evaluates to")) - (display (_ " + (display (G_ " -S, --source build the packages' source derivations")) - (display (_ " + (display (G_ " --sources[=TYPE] build source derivations; TYPE may optionally be one of \"package\", \"all\" (default), or \"transitive\"")) - (display (_ " + (display (G_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) - (display (_ " + (display (G_ " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"")) - (display (_ " + (display (G_ " -d, --derivations return the derivation paths of the given packages")) - (display (_ " + (display (G_ " --check rebuild items to check for non-determinism issues")) - (display (_ " + (display (G_ " --repair repair the specified items")) - (display (_ " + (display (G_ " -r, --root=FILE make FILE a symlink to the result, and register it as a garbage collector root")) - (display (_ " + (display (G_ " -q, --quiet do not show the build log")) - (display (_ " + (display (G_ " --log-file return the log file names for the given derivations")) (newline) (show-build-options-help) (newline) (show-transformation-options-help) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -529,7 +534,7 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) ("transitive" (alist-cons 'source package-transitive-sources result)) (else - (leave (_ "invalid argument: '~a' option argument: ~a, ~ + (leave (G_ "invalid argument: '~a' option argument: ~a, ~ must be one of 'package', 'all', or 'transitive'~%") name arg))))) (option '("check") #f #f @@ -582,7 +587,7 @@ must be one of 'package', 'all', or 'transitive'~%") build---packages, gexps, derivations, and so on." (define (validate-type x) (unless (or (package? x) (derivation? x) (gexp? x) (procedure? x)) - (leave (_ "~s: not something we can build~%") x))) + (leave (G_ "~s: not something we can build~%") x))) (define (ensure-list x) (let ((lst (match x @@ -636,7 +641,7 @@ build." (match (package-source p) (#f (format (current-error-port) - (_ "~a: warning: \ + (G_ "~a: warning: \ package '~a' has no source~%") (location->string (package-location p)) (package-name p)) @@ -670,7 +675,7 @@ needed." (log-url store file #:base-urls urls)))) (if log (format #t "~a~%" log) - (leave (_ "no build log for '~a'~%") file)))) + (leave (G_ "no build log for '~a'~%") file)))) ;;; diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 815bb789c3..681394f9cf 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -188,10 +188,10 @@ object. When VERBOSE?, display matches in addition to mismatches and inconclusive reports." (define (report-hashes item local narinfos) (if local - (report (_ " local hash: ~a~%") (hash->string local)) - (report (_ " no local build for '~a'~%") item)) + (report (G_ " local hash: ~a~%") (hash->string local)) + (report (G_ " no local build for '~a'~%") item)) (for-each (lambda (narinfo) - (report (_ " ~50a: ~a~%") + (report (G_ " ~50a: ~a~%") (uri->string (narinfo-uri narinfo)) (hash->string (narinfo-hash->sha256 (narinfo-hash narinfo))))) @@ -199,15 +199,15 @@ inconclusive reports." (match comparison-report (($ <comparison-report> item 'mismatch local (narinfos ...)) - (report (_ "~a contents differ:~%") item) + (report (G_ "~a contents differ:~%") item) (report-hashes item local narinfos)) (($ <comparison-report> item 'inconclusive #f narinfos) - (warning (_ "could not challenge '~a': no local build~%") item)) + (warning (G_ "could not challenge '~a': no local build~%") item)) (($ <comparison-report> item 'inconclusive locals ()) - (warning (_ "could not challenge '~a': no substitutes~%") item)) + (warning (G_ "could not challenge '~a': no substitutes~%") item)) (($ <comparison-report> item 'match local (narinfos ...)) (when verbose? - (report (_ "~a contents match:~%") item) + (report (G_ "~a contents match:~%") item) (report-hashes item local narinfos))))) @@ -216,17 +216,17 @@ inconclusive reports." ;;; (define (show-help) - (display (_ "Usage: guix challenge [PACKAGE...] + (display (G_ "Usage: guix challenge [PACKAGE...] Challenge the substitutes for PACKAGE... provided by one or more servers.\n")) - (display (_ " + (display (G_ " --substitute-urls=URLS compare build results with those at URLS")) - (display (_ " + (display (G_ " -v, --verbose show details about successful comparisons")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) diff --git a/guix/scripts/container.scm b/guix/scripts/container.scm index cd9f345b68..10aed2be75 100644 --- a/guix/scripts/container.scm +++ b/guix/scripts/container.scm @@ -22,17 +22,17 @@ #:export (guix-container)) (define (show-help) - (display (_ "Usage: guix container ACTION ARGS... + (display (G_ "Usage: guix container ACTION ARGS... Build and manipulate Linux containers.\n")) (newline) - (display (_ "The valid values for ACTION are:\n")) + (display (G_ "The valid values for ACTION are:\n")) (newline) - (display (_ "\ + (display (G_ "\ exec execute a command inside of an existing container\n")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -50,7 +50,7 @@ Build and manipulate Linux containers.\n")) (match args (() (format (current-error-port) - (_ "guix container: missing action~%"))) + (G_ "guix container: missing action~%"))) ((or ("-h") ("--help")) (show-help) (exit 0)) @@ -60,4 +60,4 @@ Build and manipulate Linux containers.\n")) (if (member action %actions) (apply (resolve-action action) args) (format (current-error-port) - (_ "guix container: invalid action~%"))))))) + (G_ "guix container: invalid action~%"))))))) diff --git a/guix/scripts/container/exec.scm b/guix/scripts/container/exec.scm index d6d267daff..d598f5cac4 100644 --- a/guix/scripts/container/exec.scm +++ b/guix/scripts/container/exec.scm @@ -37,12 +37,12 @@ (show-version-and-exit "guix container exec"))))) (define (show-help) - (display (_ "Usage: guix container exec PID COMMAND [ARGS...] + (display (G_ "Usage: guix container exec PID COMMAND [ARGS...] Execute COMMMAND within the container process PID.\n")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -66,7 +66,7 @@ and the other containing arguments for the command to be executed." (define (guix-container-exec . args) (define (handle-argument arg result) (if (assoc-ref result 'pid) - (leave (_ "~a: extraneous argument~%") arg) + (leave (G_ "~a: extraneous argument~%") arg) (alist-cons 'pid (string->number* arg) result))) (with-error-handling @@ -84,13 +84,13 @@ and the other containing arguments for the command to be executed." '("TERM")))) (unless pid - (leave (_ "no pid specified~%"))) + (leave (G_ "no pid specified~%"))) (when (null? command) - (leave (_ "no command specified~%"))) + (leave (G_ "no command specified~%"))) (unless (file-exists? (string-append "/proc/" (number->string pid))) - (leave (_ "no such process ~d~%") pid)) + (leave (G_ "no such process ~d~%") pid)) (let ((result (container-excursion pid (lambda () @@ -102,4 +102,4 @@ and the other containing arguments for the command to be executed." environment) (apply execlp program program program-args))))))) (unless (zero? result) - (leave (_ "exec failed with status ~d~%") result))))))) + (leave (G_ "exec failed with status ~d~%") result))))))) diff --git a/guix/scripts/copy.scm b/guix/scripts/copy.scm index 624ef73e96..45f7cbbad5 100644 --- a/guix/scripts/copy.scm +++ b/guix/scripts/copy.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,9 +25,6 @@ #:use-module (guix derivations) #:use-module (guix scripts build) #:use-module ((guix scripts archive) #:select (options->derivations+files)) - #:use-module (ssh session) - #:use-module (ssh auth) - #:use-module (ssh key) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) @@ -40,42 +37,6 @@ ;;; Exchanging store items over SSH. ;;; -(define %compression - "zlib@openssh.com,zlib") - -(define* (open-ssh-session host #:key user port) - "Open an SSH session for HOST and return it. When USER and PORT are #f, use -default values or whatever '~/.ssh/config' specifies; otherwise use them. -Throw an error on failure." - (let ((session (make-session #:user user - #:host host - #:port port - #:timeout 10 ;seconds - ;; #:log-verbosity 'protocol - - ;; We need lightweight compression when - ;; exchanging full archives. - #:compression %compression - #:compression-level 3))) - - ;; Honor ~/.ssh/config. - (session-parse-config! session) - - (match (connect! session) - ('ok - ;; Use public key authentication, via the SSH agent if it's available. - (match (userauth-public-key/auto! session) - ('success - session) - (x - (disconnect! session) - (leave (_ "SSH authentication failed for '~a': ~a~%") - host (get-error session))))) - (x - ;; Connection failed or timeout expired. - (leave (_ "SSH connection to '~a' failed: ~a~%") - host (get-error session)))))) - (define (ssh-spec->user+host+port spec) "Parse SPEC, a string like \"user@host:port\" or just \"host\", and return three values: the user name (or #f), the host name, and the TCP port @@ -95,9 +56,9 @@ number (or #f) corresponding to SPEC." ((? integer? port) (values user host port)) (x - (leave (_ "~a: invalid TCP port number~%") port)))) + (leave (G_ "~a: invalid TCP port number~%") port)))) (x - (leave (_ "~a: invalid SSH specification~%") spec)))) + (leave (G_ "~a: invalid SSH specification~%") spec)))) (define (send-to-remote-host target opts) "Send ITEMS to TARGET. ITEMS is a list of store items or package names; for ; @@ -148,18 +109,18 @@ package names, build the underlying packages before sending them." ;;; (define (show-help) - (display (_ "Usage: guix copy [OPTION]... ITEMS... + (display (G_ "Usage: guix copy [OPTION]... ITEMS... Copy ITEMS to or from the specified host over SSH.\n")) - (display (_ " + (display (G_ " --to=HOST send ITEMS to HOST")) - (display (_ " + (display (G_ " --from=HOST receive ITEMS from HOST")) (newline) (show-build-options-help) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -204,4 +165,4 @@ Copy ITEMS to or from the specified host over SSH.\n")) (target (assoc-ref opts 'destination))) (cond (target (send-to-remote-host target opts)) (source (retrieve-from-remote-host source opts)) - (else (leave (_ "use '--to' or '--from'~%"))))))) + (else (leave (G_ "use '--to' or '--from'~%"))))))) diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index 1ddfd648cd..bb3dc76741 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -64,23 +64,23 @@ (download-proc . ,download-to-store*))) (define (show-help) - (display (_ "Usage: guix download [OPTION] URL + (display (G_ "Usage: guix download [OPTION] URL Download the file at URL to the store or to the given file, and print its file name and the hash of its contents. Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) - (format #t (_ " + (format #t (G_ " -f, --format=FMT write the hash in the given format")) - (format #t (_ " + (format #t (G_ " --no-check-certificate do not validate the certificate of HTTPS servers ")) - (format #f (_ " + (format #f (G_ " -o, --output=FILE download to FILE")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -98,7 +98,7 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' ((or "base16" "hex" "hexadecimal") bytevector->base16-string) (x - (leave (_ "unsupported hash format: ~a~%") arg)))) + (leave (G_ "unsupported hash format: ~a~%") arg)))) (alist-cons 'format fmt-proc (alist-delete 'format result)))) @@ -130,10 +130,10 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (when (assq 'argument result) - (leave (_ "~A: extraneous argument~%") arg)) + (leave (G_ "~A: extraneous argument~%") arg)) (alist-cons 'argument arg result)) %default-options)) @@ -141,9 +141,9 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (with-error-handling (let* ((opts (parse-options)) (arg (or (assq-ref opts 'argument) - (leave (_ "no download URI was specified~%")))) + (leave (G_ "no download URI was specified~%")))) (uri (or (string->uri arg) - (leave (_ "~a: failed to parse URI~%") + (leave (G_ "~a: failed to parse URI~%") arg))) (fetch (assq-ref opts 'download-proc)) (path (parameterize ((current-terminal-columns @@ -153,7 +153,7 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (assq-ref opts 'verify-certificate?)))) (hash (call-with-input-file (or path - (leave (_ "~a: download failed~%") + (leave (G_ "~a: download failed~%") arg)) port-sha256)) (fmt (assq-ref opts 'format))) diff --git a/guix/scripts/edit.scm b/guix/scripts/edit.scm index 555796a69c..8b2b61d76a 100644 --- a/guix/scripts/edit.scm +++ b/guix/scripts/edit.scm @@ -38,12 +38,12 @@ (show-version-and-exit "guix edit"))))) (define (show-help) - (display (_ "Usage: guix edit PACKAGE... + (display (G_ "Usage: guix edit PACKAGE... Start $VISUAL or $EDITOR to edit the definitions of PACKAGE...\n")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -59,7 +59,7 @@ Start $VISUAL or $EDITOR to edit the definitions of PACKAGE...\n")) (let ((absolute-file-name (search-path path file))) (unless absolute-file-name ;; Shouldn't happen unless somebody fiddled with the 'location' field. - (leave (_ "file '~a' not found in search path ~s~%") + (leave (G_ "file '~a' not found in search path ~s~%") file path)) absolute-file-name)) @@ -78,7 +78,7 @@ line." ;; Return the list of package names. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) cons '())) @@ -87,7 +87,7 @@ line." (packages (map specification->package specs))) (for-each (lambda (package) (unless (package-location package) - (leave (_ "source location of package '~a' is unknown~%") + (leave (G_ "source location of package '~a' is unknown~%") (package-full-name package)))) packages) @@ -100,5 +100,5 @@ line." (exit (system (string-join (cons (%editor) file-names)))))) (lambda args (let ((errno (system-error-errno args))) - (leave (_ "failed to launch '~a': ~a~%") + (leave (G_ "failed to launch '~a': ~a~%") (%editor) (strerror errno)))))))) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 44f490043c..af69e2b730 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -72,14 +72,16 @@ as 'HOME' and 'USER' are left untouched." (define (create-environment profile paths pure?) "Set the environment variables specified by PATHS for PROFILE. When PURE? is #t, unset the variables in the current environment. Otherwise, augment -existing enviroment variables with additional search paths." +existing environment variables with additional search paths." (when pure? (purify-environment)) (for-each (match-lambda ((($ <search-path-specification> variable _ separator) . value) (let ((current (getenv variable))) (setenv variable (if (and current (not pure?)) - (string-append value separator current) + (if separator + (string-append value separator current) + value) value))))) (evaluate-profile-search-paths profile paths)) @@ -130,45 +132,45 @@ and an output string." (package->bag package))))) (define (show-help) - (display (_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...] + (display (G_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...] Build an environment that includes the dependencies of PACKAGE and execute COMMAND or an interactive shell in that environment.\n")) - (display (_ " + (display (G_ " -e, --expression=EXPR create environment for the package that EXPR evaluates to")) - (display (_ " + (display (G_ " -l, --load=FILE create environment for the package that the code within FILE evaluates to")) - (display (_ " + (display (G_ " --ad-hoc include all specified packages in the environment instead of only their inputs")) - (display (_ " + (display (G_ " --pure unset existing environment variables")) - (display (_ " + (display (G_ " --search-paths display needed environment variable definitions")) - (display (_ " + (display (G_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) - (display (_ " + (display (G_ " -r, --root=FILE make FILE a symlink to the result, and register it as a garbage collector root")) - (display (_ " + (display (G_ " -C, --container run command within an isolated container")) - (display (_ " + (display (G_ " -N, --network allow containers to access the network")) - (display (_ " + (display (G_ " --share=SPEC for containers, share writable host file system according to SPEC")) - (display (_ " + (display (G_ " --expose=SPEC for containers, expose read-only host file system according to SPEC")) - (display (_ " + (display (G_ " --bootstrap use bootstrap binaries to build the environment")) (newline) (show-build-options-help) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -499,16 +501,16 @@ Otherwise, return the derivation for the Bash package." "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"))) + (report-error (G_ "cannot create container: user namespaces unavailable\n")) + (leave (G_ "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"))) + (report-error (G_ "cannot create container: unprivileged user cannot create user namespaces\n")) + (leave (G_ "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")))) + (report-error (G_ "cannot create container: /proc/self/setgroups does not exist\n")) + (leave (G_ "is your kernel version < 3.19?\n")))) (define (register-gc-root target root) "Make ROOT an indirect root to TARGET. This is procedure is idempotent." diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index bdfee4308c..221467a108 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -39,41 +39,41 @@ `((action . collect-garbage))) (define (show-help) - (display (_ "Usage: guix gc [OPTION]... PATHS... + (display (G_ "Usage: guix gc [OPTION]... PATHS... Invoke the garbage collector.\n")) - (display (_ " + (display (G_ " -C, --collect-garbage[=MIN] collect at least MIN bytes of garbage")) - (display (_ " + (display (G_ " -F, --free-space=FREE attempt to reach FREE available space in the store")) - (display (_ " + (display (G_ " -d, --delete attempt to delete PATHS")) - (display (_ " + (display (G_ " --optimize optimize the store by deduplicating identical files")) - (display (_ " + (display (G_ " --list-dead list dead paths")) - (display (_ " + (display (G_ " --list-live list live paths")) (newline) - (display (_ " + (display (G_ " --references list the references of PATHS")) - (display (_ " + (display (G_ " -R, --requisites list the requisites of PATHS")) - (display (_ " + (display (G_ " --referrers list the referrers of PATHS")) (newline) - (display (_ " + (display (G_ " --verify[=OPTS] verify the integrity of the store; OPTS is a comma-separated combination of 'repair' and 'contents'")) - (display (_ " + (display (G_ " --list-failures list cached build failures")) - (display (_ " + (display (G_ " --clear-failures remove PATHS from the set of cached failures")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -97,7 +97,7 @@ Invoke the garbage collector.\n")) (let ((amount (size->number arg))) (if arg (alist-cons 'min-freed amount result) - (leave (_ "invalid amount of storage: ~a~%") + (leave (G_ "invalid amount of storage: ~a~%") arg)))) (#f result))))) (option '(#\F "free-space") #t #f @@ -161,7 +161,7 @@ Invoke the garbage collector.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -188,10 +188,10 @@ Invoke the garbage collector.\n")) (free (* (file-system-block-size fs) (file-system-blocks-available fs)))) (if (> free space) - (info (_ "already ~h bytes available on ~a, nothing to do~%") + (info (G_ "already ~h bytes available on ~a, nothing to do~%") free (%store-prefix)) (let ((to-free (- space free))) - (info (_ "freeing ~h bytes~%") to-free) + (info (G_ "freeing ~h bytes~%") to-free) (collect-garbage store to-free))))) (with-error-handling @@ -203,7 +203,7 @@ Invoke the garbage collector.\n")) opts))) (define (assert-no-extra-arguments) (unless (null? paths) - (leave (_ "extraneous arguments: ~{~a ~}~%") paths))) + (leave (G_ "extraneous arguments: ~{~a ~}~%") paths))) (define (list-relatives relatives) (for-each (compose (lambda (path) @@ -223,10 +223,10 @@ Invoke the garbage collector.\n")) (ensure-free-space store free-space)) (min-freed (let-values (((paths freed) (collect-garbage store min-freed))) - (info (_ "freed ~h bytes~%") freed))) + (info (G_ "freed ~h bytes~%") freed))) (else (let-values (((paths freed) (collect-garbage store))) - (info (_ "freed ~h bytes~%") freed)))))) + (info (G_ "freed ~h bytes~%") freed)))))) ((delete) (delete-paths store (map direct-store-path paths))) ((list-references) diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index 9804d41929..0af1fa3ad3 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -81,7 +81,7 @@ name." (raise (condition (&message - (message (format #f (_ "~a: invalid argument (package name expected)") + (message (format #f (G_ "~a: invalid argument (package name expected)") x)))))))) (define nodes-from-package @@ -305,7 +305,7 @@ substitutes." ((info) (values (substitutable-references info) store)) (() - (leave (_ "references for '~a' are not known~%") + (leave (G_ "references for '~a' are not known~%") item))))) (values (references store item) store)))) @@ -355,18 +355,18 @@ substitutes." (or (find (lambda (type) (string=? (node-type-name type) name)) %node-types) - (leave (_ "~a: unknown node type~%") name))) + (leave (G_ "~a: unknown node type~%") name))) (define (lookup-backend name) "Return the graph backend called NAME. Raise an error if it is not found." (or (find (lambda (backend) (string=? (graph-backend-name backend) name)) %graph-backends) - (leave (_ "~a: unknown backend~%") name))) + (leave (G_ "~a: unknown backend~%") name))) (define (list-node-types) "Print the available node types along with their synopsis." - (display (_ "The available node types are:\n")) + (display (G_ "The available node types are:\n")) (newline) (for-each (lambda (type) (format #t " - ~a: ~a~%" @@ -376,7 +376,7 @@ substitutes." (define (list-backends) "Print the available backends along with their synopsis." - (display (_ "The available backend types are:\n")) + (display (G_ "The available backend types are:\n")) (newline) (for-each (lambda (backend) (format #t " - ~a: ~a~%" @@ -420,22 +420,22 @@ substitutes." (define (show-help) ;; TRANSLATORS: Here 'dot' is the name of a program; it must not be ;; translated. - (display (_ "Usage: guix graph PACKAGE... + (display (G_ "Usage: guix graph PACKAGE... Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n")) - (display (_ " + (display (G_ " -b, --backend=TYPE produce a graph with the given backend TYPE")) - (display (_ " + (display (G_ " --list-backends list the available graph backends")) - (display (_ " + (display (G_ " -t, --type=TYPE represent nodes of the given TYPE")) - (display (_ " + (display (G_ " --list-types list the available graph types")) - (display (_ " + (display (G_ " -e, --expression=EXPR consider the package EXPR evaluates to")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -453,7 +453,7 @@ Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n")) (with-error-handling (let* ((opts (args-fold* args %options (lambda (opt name arg . rest) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm index a048b53461..1fa6bb8d1f 100644 --- a/guix/scripts/hash.scm +++ b/guix/scripts/hash.scm @@ -44,21 +44,21 @@ `((format . ,bytevector->nix-base32-string))) (define (show-help) - (display (_ "Usage: guix hash [OPTION] FILE + (display (G_ "Usage: guix hash [OPTION] FILE Return the cryptographic hash of FILE. Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) - (format #t (_ " + (format #t (G_ " -x, --exclude-vcs exclude version control directories")) - (format #t (_ " + (format #t (G_ " -f, --format=FMT write the hash in the given format")) - (format #t (_ " + (format #t (G_ " -r, --recursive compute the hash on FILE recursively")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -79,7 +79,7 @@ and 'hexadecimal' can be used as well).\n")) ((or "base16" "hex" "hexadecimal") bytevector->base16-string) (x - (leave (_ "unsupported hash format: ~a~%") + (leave (G_ "unsupported hash format: ~a~%") arg)))) (alist-cons 'format fmt-proc @@ -106,7 +106,7 @@ and 'hexadecimal' can be used as well).\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "unrecognized option: ~a~%") + (leave (G_ "unrecognized option: ~a~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) @@ -152,7 +152,7 @@ and 'hexadecimal' can be used as well).\n")) (lambda () (format #t "~a~%" (fmt (file-hash file)))) (lambda args - (leave (_ "~a~%") + (leave (G_ "~a~%") (strerror (system-error-errno args)))))) (x - (leave (_ "wrong number of arguments~%")))))) + (leave (G_ "wrong number of arguments~%")))))) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 8c2f705738..203cda8049 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -83,15 +83,15 @@ rather than \\n." (module-ref module proc))) (define (show-help) - (display (_ "Usage: guix import IMPORTER ARGS ... + (display (G_ "Usage: guix import IMPORTER ARGS ... Run IMPORTER with ARGS.\n")) (newline) - (display (_ "IMPORTER must be one of the importers listed below:\n")) + (display (G_ "IMPORTER must be one of the importers listed below:\n")) (newline) (format #t "~{ ~a~%~}" importers) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -100,7 +100,7 @@ Run IMPORTER with ARGS.\n")) (match args (() (format (current-error-port) - (_ "guix import: missing importer name~%"))) + (G_ "guix import: missing importer name~%"))) ((or ("-h") ("--help")) (show-help) (exit 0)) @@ -120,5 +120,5 @@ Run IMPORTER with ARGS.\n")) (newline)) expressions)) (x - (leave (_ "'~a' import failed~%") importer)))) - (leave (_ "~a: invalid importer~%") importer))))) + (leave (G_ "'~a' import failed~%") importer)))) + (leave (G_ "~a: invalid importer~%") importer))))) diff --git a/guix/scripts/import/cpan.scm b/guix/scripts/import/cpan.scm index 3d470f684d..77ffe1f38e 100644 --- a/guix/scripts/import/cpan.scm +++ b/guix/scripts/import/cpan.scm @@ -38,11 +38,11 @@ '()) (define (show-help) - (display (_ "Usage: guix import cpan PACKAGE-NAME + (display (G_ "Usage: guix import cpan PACKAGE-NAME Import and convert the CPAN package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -68,7 +68,7 @@ Import and convert the CPAN package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -83,10 +83,10 @@ Import and convert the CPAN package for PACKAGE-NAME.\n")) ((package-name) (let ((sexp (cpan->guix-package package-name))) (unless sexp - (leave (_ "failed to download meta-data for package '~a'~%") + (leave (G_ "failed to download meta-data for package '~a'~%") package-name)) sexp)) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm index c9a9eab762..d65c644c05 100644 --- a/guix/scripts/import/cran.scm +++ b/guix/scripts/import/cran.scm @@ -40,13 +40,13 @@ '()) (define (show-help) - (display (_ "Usage: guix import cran PACKAGE-NAME + (display (G_ "Usage: guix import cran PACKAGE-NAME Import and convert the CRAN package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -a, --archive=ARCHIVE specify the archive repository")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -79,7 +79,7 @@ Import and convert the CRAN package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -105,10 +105,10 @@ Import and convert the CRAN package for PACKAGE-NAME.\n")) (let ((sexp (cran->guix-package package-name (or (assoc-ref opts 'repo) 'cran)))) (unless sexp - (leave (_ "failed to download description for package '~a'~%") + (leave (G_ "failed to download description for package '~a'~%") package-name)) sexp))) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/import/crate.scm b/guix/scripts/import/crate.scm index 4337a0b623..cab9a4397b 100644 --- a/guix/scripts/import/crate.scm +++ b/guix/scripts/import/crate.scm @@ -40,11 +40,11 @@ '()) (define (show-help) - (display (_ "Usage: guix import crate PACKAGE-NAME + (display (G_ "Usage: guix import crate PACKAGE-NAME Import and convert the crate.io package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -70,7 +70,7 @@ Import and convert the crate.io package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -85,10 +85,10 @@ Import and convert the crate.io package for PACKAGE-NAME.\n")) ((package-name) (let ((sexp (crate->guix-package package-name))) (unless sexp - (leave (_ "failed to download meta-data for package '~a'~%") + (leave (G_ "failed to download meta-data for package '~a'~%") package-name)) sexp)) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/import/elpa.scm b/guix/scripts/import/elpa.scm index b22a7c4c23..34eb16485e 100644 --- a/guix/scripts/import/elpa.scm +++ b/guix/scripts/import/elpa.scm @@ -38,13 +38,13 @@ '((repo . gnu))) (define (show-help) - (display (_ "Usage: guix import elpa PACKAGE-NAME + (display (G_ "Usage: guix import elpa PACKAGE-NAME Import the latest package named PACKAGE-NAME from an ELPA repository.\n")) - (display (_ " + (display (G_ " -a, --archive=ARCHIVE specify the archive repository")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -74,7 +74,7 @@ Import the latest package named PACKAGE-NAME from an ELPA repository.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -89,11 +89,11 @@ Import the latest package named PACKAGE-NAME from an ELPA repository.\n")) ((package-name) (let ((sexp (elpa->guix-package package-name (assoc-ref opts 'repo)))) (unless sexp - (leave (_ "failed to download package '~a'~%") package-name)) + (leave (G_ "failed to download package '~a'~%") package-name)) sexp)) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) ;;; elpa.scm ends here diff --git a/guix/scripts/import/gem.scm b/guix/scripts/import/gem.scm index a5dd2a7822..349a0a072a 100644 --- a/guix/scripts/import/gem.scm +++ b/guix/scripts/import/gem.scm @@ -38,11 +38,11 @@ '()) (define (show-help) - (display (_ "Usage: guix import gem PACKAGE-NAME + (display (G_ "Usage: guix import gem PACKAGE-NAME Import and convert the RubyGems package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -68,7 +68,7 @@ Import and convert the RubyGems package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -83,10 +83,10 @@ Import and convert the RubyGems package for PACKAGE-NAME.\n")) ((package-name) (let ((sexp (gem->guix-package package-name))) (unless sexp - (leave (_ "failed to download meta-data for package '~a'~%") + (leave (G_ "failed to download meta-data for package '~a'~%") package-name)) sexp)) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/import/gnu.scm b/guix/scripts/import/gnu.scm index 66861f5837..ae98370037 100644 --- a/guix/scripts/import/gnu.scm +++ b/guix/scripts/import/gnu.scm @@ -37,18 +37,18 @@ '((key-download . interactive))) (define (show-help) - (display (_ "Usage: guix import gnu [OPTION...] PACKAGE + (display (G_ "Usage: guix import gnu [OPTION...] PACKAGE Return a package declaration template for PACKAGE, a GNU package.\n")) ;; '--key-download' taken from (guix scripts refresh). - (display (_ " + (display (G_ " --key-download=POLICY handle missing OpenPGP keys according to POLICY: 'always', 'never', and 'interactive', which is also used when 'key-download' is not specified")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -69,7 +69,7 @@ Return a package declaration template for PACKAGE, a GNU package.\n")) (alist-cons 'key-download (string->symbol arg) result)) (x - (leave (_ "unsupported policy: ~a~%") + (leave (G_ "unsupported policy: ~a~%") arg))))) %standard-import-options)) @@ -83,7 +83,7 @@ Return a package declaration template for PACKAGE, a GNU package.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -100,6 +100,6 @@ Return a package declaration template for PACKAGE, a GNU package.\n")) (gnu->guix-package name #:key-download (assoc-ref opts 'key-download)))) (x - (leave (_ "wrong number of arguments~%")))))) + (leave (G_ "wrong number of arguments~%")))))) ;;; gnu.scm ends here diff --git a/guix/scripts/import/hackage.scm b/guix/scripts/import/hackage.scm index f2c20026b6..969f637846 100644 --- a/guix/scripts/import/hackage.scm +++ b/guix/scripts/import/hackage.scm @@ -44,23 +44,23 @@ (cabal-environment . ,`(("impl" . ,ghc-default-version))))) (define (show-help) - (display (_ "Usage: guix import hackage PACKAGE-NAME + (display (G_ "Usage: guix import hackage PACKAGE-NAME Import and convert the Hackage package for PACKAGE-NAME. If PACKAGE-NAME includes a suffix constituted by a at-sign followed by a numerical version (as used with Guix packages), then a definition for the specified version of the package will be generated. If no version suffix is pecified, then the generated package definition will correspond to the latest available version.\n")) - (display (_ " + (display (G_ " -e ALIST, --cabal-environment=ALIST specify environment for Cabal evaluation")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -s, --stdin read from standard input")) - (display (_ " + (display (G_ " -t, --no-test-dependencies don't include test-only dependencies")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -101,7 +101,7 @@ version.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -130,18 +130,18 @@ version.\n")) (() (run-importer "stdin" opts (lambda () - (leave (_ "failed to import cabal file \ + (leave (G_ "failed to import cabal file \ from standard input~%"))))) ((many ...) - (leave (_ "too many arguments~%")))) + (leave (G_ "too many arguments~%")))) (match args ((package-name) (run-importer package-name opts (lambda () - (leave (_ "failed to download cabal file \ + (leave (G_ "failed to download cabal file \ for package '~a'~%") package-name)))) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%"))))))) + (leave (G_ "too many arguments~%"))))))) diff --git a/guix/scripts/import/nix.scm b/guix/scripts/import/nix.scm index 05e6e4b85d..45ca7e3fcf 100644 --- a/guix/scripts/import/nix.scm +++ b/guix/scripts/import/nix.scm @@ -38,11 +38,11 @@ '()) (define (show-help) - (display (_ "Usage: guix import nix NIXPKGS ATTRIBUTE + (display (G_ "Usage: guix import nix NIXPKGS ATTRIBUTE Import and convert the Nix expression ATTRIBUTE of NIXPKGS.\n")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -68,7 +68,7 @@ Import and convert the Nix expression ATTRIBUTE of NIXPKGS.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -87,4 +87,4 @@ Import and convert the Nix expression ATTRIBUTE of NIXPKGS.\n")) (location-file loc) (location-line loc)) expr)) (x - (leave (_ "wrong number of arguments~%")))))) + (leave (G_ "wrong number of arguments~%")))))) diff --git a/guix/scripts/import/pypi.scm b/guix/scripts/import/pypi.scm index 7166b014eb..59a925a3ca 100644 --- a/guix/scripts/import/pypi.scm +++ b/guix/scripts/import/pypi.scm @@ -38,11 +38,11 @@ '()) (define (show-help) - (display (_ "Usage: guix import pypi PACKAGE-NAME + (display (G_ "Usage: guix import pypi PACKAGE-NAME Import and convert the PyPI package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -68,7 +68,7 @@ Import and convert the PyPI package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -83,10 +83,10 @@ Import and convert the PyPI package for PACKAGE-NAME.\n")) ((package-name) (let ((sexp (pypi->guix-package package-name))) (unless sexp - (leave (_ "failed to download meta-data for package '~a'~%") + (leave (G_ "failed to download meta-data for package '~a'~%") package-name)) sexp)) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/import/stackage.scm b/guix/scripts/import/stackage.scm index f91b496d24..e6676e93e8 100644 --- a/guix/scripts/import/stackage.scm +++ b/guix/scripts/import/stackage.scm @@ -40,16 +40,16 @@ (include-test-dependencies? . #t))) (define (show-help) - (display (_ "Usage: guix import stackage PACKAGE-NAME + (display (G_ "Usage: guix import stackage PACKAGE-NAME Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) - (display (_ " + (display (G_ " -r VERSION, --lts-version=VERSION specify the LTS version to use")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -t, --no-test-dependencies don't include test-only dependencies")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -85,7 +85,7 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -105,12 +105,12 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n")) (assoc-ref opts 'include-test-dependencies?) #:lts-version (assoc-ref opts 'lts-version)))) (unless sexp - (leave (_ "failed to download cabal file for package '~a'~%") + (leave (G_ "failed to download cabal file for package '~a'~%") package-name)) sexp))) (() - (leave (_ "too few arguments~%"))) + (leave (G_ "too few arguments~%"))) ((many ...) - (leave (_ "too many arguments~%")))))) + (leave (G_ "too many arguments~%")))))) ;;; stackage.scm ends here diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 811f167067..04ab852999 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -132,11 +132,11 @@ monad." (define (list-checkers-and-exit) ;; Print information about all available checkers and exit. - (format #t (_ "Available checkers:~%")) + (format #t (G_ "Available checkers:~%")) (for-each (lambda (checker) (format #t "- ~a: ~a~%" (lint-checker-name checker) - (_ (lint-checker-description checker)))) + (G_ (lint-checker-description checker)))) %checkers) (exit 0)) @@ -156,7 +156,7 @@ monad." (define (check-not-empty description) (when (string-null? description) (emit-warning package - (_ "description should not be empty") + (G_ "description should not be empty") 'description))) (define (check-texinfo-markup description) @@ -166,7 +166,7 @@ markup is valid return a plain-text version of DESCRIPTION, otherwise #f." (lambda () (texi->plain-text description)) (lambda (keys . args) (emit-warning package - (_ "Texinfo markup in description is invalid") + (G_ "Texinfo markup in description is invalid") 'description) #f))) @@ -176,7 +176,7 @@ http://www.gnu.org/prep/standards/html_node/Trademarks.html." (match (string-index description (char-set #\™ #\®)) ((and (? number?) index) (emit-warning package - (format #f (_ "description should not contain ~ + (format #f (G_ "description should not contain ~ trademark sign '~a' at ~d") (string-ref description index) index) 'description)) @@ -189,14 +189,14 @@ trademark sign '~a' at ~d") ;; TRANSLATORS: '@code' is Texinfo markup and must be kept ;; as is. - (_ "use @code or similar ornament instead of quotes") + (G_ "use @code or similar ornament instead of quotes") 'description))) (define (check-proper-start description) (unless (or (properly-starts-sentence? description) (string-prefix-ci? (package-name package) description)) (emit-warning package - (_ "description should start with an upper-case letter or digit") + (G_ "description should start with an upper-case letter or digit") 'description))) (define (check-end-of-sentence-space description) @@ -212,7 +212,7 @@ trademark sign '~a' at ~d") r (cons (match:start m) r))))))) (unless (null? infractions) (emit-warning package - (format #f (_ "sentences in description should be followed ~ + (format #f (G_ "sentences in description should be followed ~ by two spaces; possible infraction~p at ~{~a~^, ~}") (length infractions) infractions) @@ -230,35 +230,33 @@ by two spaces; possible infraction~p at ~{~a~^, ~}") (and=> (check-texinfo-markup description) check-proper-start)) (emit-warning package - (format #f (_ "invalid description: ~s") description) + (format #f (G_ "invalid description: ~s") description) 'description)))) -(define (warn-if-package-has-input linted inputs-to-check input-names message) - ;; Emit a warning MESSAGE if some of the inputs named in INPUT-NAMES are - ;; contained in INPUTS-TO-CHECK, which are assumed to be inputs of package - ;; LINTED. +(define (package-input-intersection inputs-to-check input-names) + "Return the intersection between INPUTS-TO-CHECK, the list of input tuples +of a package, and INPUT-NAMES, a list of package specifications such as +\"glib:bin\"." (match inputs-to-check (((labels packages . outputs) ...) - (for-each (lambda (package output) - (when (package? package) - (let ((input (string-append - (package-name package) - (if (> (length output) 0) - (string-append ":" (car output)) - "")))) - (when (member input input-names) - (emit-warning linted - (format #f (_ message) input) - 'inputs-to-check))))) - packages outputs)))) + (filter-map (lambda (package output) + (and (package? package) + (let ((input (string-append + (package-name package) + (if (> (length output) 0) + (string-append ":" (car output)) + "")))) + (and (member input input-names) + input)))) + packages outputs)))) (define (check-inputs-should-be-native package) ;; Emit a warning if some inputs of PACKAGE are likely to belong to its ;; native inputs. - (let ((message "'~a' should probably be a native input") - (inputs (package-inputs package)) + (let ((inputs (package-inputs package)) (input-names - '("pkg-config" + '("pkg-config" + "cmake" "extra-cmake-modules" "glib:bin" "intltool" @@ -274,24 +272,29 @@ by two spaces; possible infraction~p at ~{~a~^, ~}") "python-pytest-cov" "python2-pytest-cov" "python-setuptools-scm" "python2-setuptools-scm" "python-sphinx" "python2-sphinx"))) - (warn-if-package-has-input package inputs input-names message))) + (for-each (lambda (input) + (emit-warning + package + (format #f (G_ "'~a' should probably be a native input") + input) + 'inputs-to-check)) + (package-input-intersection inputs input-names)))) (define (check-inputs-should-not-be-an-input-at-all package) ;; Emit a warning if some inputs of PACKAGE are likely to should not be ;; an input at all. - (let ((message "'~a' should probably not be an input at all") - (inputs (package-inputs package)) - (input-names - '("python-setuptools" - "python2-setuptools" - "python-pip" - "python2-pip"))) - (warn-if-package-has-input package (package-inputs package) - input-names message) - (warn-if-package-has-input package (package-native-inputs package) - input-names message) - (warn-if-package-has-input package (package-propagated-inputs package) - input-names message))) + (let ((input-names '("python-setuptools" + "python2-setuptools" + "python-pip" + "python2-pip"))) + (for-each (lambda (input) + (emit-warning + package + (format #f + (G_ "'~a' should probably not be an input at all") + input))) + (package-input-intersection (package-direct-inputs package) + input-names)))) (define (package-name-regexp package) "Return a regexp that matches PACKAGE's name as a word at the beginning of a @@ -305,7 +308,7 @@ line." (define (check-not-empty synopsis) (when (string-null? synopsis) (emit-warning package - (_ "synopsis should not be empty") + (G_ "synopsis should not be empty") 'synopsis))) (define (check-final-period synopsis) @@ -313,7 +316,7 @@ line." (when (and (string-suffix? "." synopsis) (not (string-suffix? "etc." synopsis))) (emit-warning package - (_ "no period allowed at the end of the synopsis") + (G_ "no period allowed at the end of the synopsis") 'synopsis))) (define check-start-article @@ -325,27 +328,27 @@ line." (when (or (string-prefix-ci? "A " synopsis) (string-prefix-ci? "An " synopsis)) (emit-warning package - (_ "no article allowed at the beginning of \ + (G_ "no article allowed at the beginning of \ the synopsis") 'synopsis))))) (define (check-synopsis-length synopsis) (when (>= (string-length synopsis) 80) (emit-warning package - (_ "synopsis should be less than 80 characters long") + (G_ "synopsis should be less than 80 characters long") 'synopsis))) (define (check-proper-start synopsis) (unless (properly-starts-sentence? synopsis) (emit-warning package - (_ "synopsis should start with an upper-case letter or digit") + (G_ "synopsis should start with an upper-case letter or digit") 'synopsis))) (define (check-start-with-package-name synopsis) (when (and (regexp-exec (package-name-regexp package) synopsis) (not (starts-with-abbreviation? synopsis))) (emit-warning package - (_ "synopsis should not start with the package name") + (G_ "synopsis should not start with the package name") 'synopsis))) (define (check-texinfo-markup synopsis) @@ -355,7 +358,7 @@ markup is valid return a plain-text version of SYNOPSIS, otherwise #f." (lambda () (texi->plain-text synopsis)) (lambda (keys . args) (emit-warning package - (_ "Texinfo markup in synopsis is invalid") + (G_ "Texinfo markup in synopsis is invalid") 'synopsis) #f))) @@ -374,7 +377,7 @@ markup is valid return a plain-text version of SYNOPSIS, otherwise #f." (proc synopsis)) checks)) (invalid - (emit-warning package (format #f (_ "invalid synopsis: ~s") invalid) + (emit-warning package (format #f (G_ "invalid synopsis: ~s") invalid) 'synopsis)))) (define* (probe-uri uri #:key timeout) @@ -474,7 +477,7 @@ warning for PACKAGE mentionning the FIELD." (begin (emit-warning package (format #f - (_ "URI ~a returned \ + (G_ "URI ~a returned \ suspiciously small file (~a bytes)") (uri->string uri) length)) @@ -483,7 +486,7 @@ suspiciously small file (~a bytes)") (begin (emit-warning package (format #f - (_ "URI ~a not reachable: ~a (~s)") + (G_ "URI ~a not reachable: ~a (~s)") (uri->string uri) (response-code argument) (response-reason-phrase argument)) @@ -495,14 +498,14 @@ suspiciously small file (~a bytes)") (('error port command code message) (emit-warning package (format #f - (_ "URI ~a not reachable: ~a (~s)") + (G_ "URI ~a not reachable: ~a (~s)") (uri->string uri) code (string-trim-both message))) #f))) ((getaddrinfo-error) (emit-warning package (format #f - (_ "URI ~a domain not found: ~a") + (G_ "URI ~a domain not found: ~a") (uri->string uri) (gai-strerror (car argument))) field) @@ -510,7 +513,7 @@ suspiciously small file (~a bytes)") ((system-error) (emit-warning package (format #f - (_ "URI ~a unreachable: ~a") + (G_ "URI ~a unreachable: ~a") (uri->string uri) (strerror (system-error-errno @@ -519,7 +522,7 @@ suspiciously small file (~a bytes)") #f) ((tls-certificate-error) (emit-warning package - (format #f (_ "TLS certificate error: ~a") + (format #f (G_ "TLS certificate error: ~a") (tls-certificate-error-string argument)))) ((invalid-http-response gnutls-error) ;; Probably a misbehaving server; ignore. @@ -540,10 +543,10 @@ suspiciously small file (~a bytes)") (unless (or (string-contains (package-name package) "bootstrap") (string=? (package-name package) "ld-wrapper")) (emit-warning package - (_ "invalid value for home page") + (G_ "invalid value for home page") 'home-page))) (else - (emit-warning package (format #f (_ "invalid home page URL: ~s") + (emit-warning package (format #f (G_ "invalid home page URL: ~s") (package-home-page package)) 'home-page))))) @@ -563,7 +566,7 @@ patch could not be found." '())) (emit-warning package - (_ "file names of patches should start with the package name") + (G_ "file names of patches should start with the package name") 'patch-file-names)))) (define (escape-quotes str) @@ -601,7 +604,7 @@ descriptions maintained upstream." (or (not (string? downstream)) (not (string=? upstream downstream)))) (format (guix-warning-port) - (_ "~a: ~a: proposed synopsis: ~s~%") + (G_ "~a: ~a: proposed synopsis: ~s~%") (location->string loc) (package-full-name package) upstream))) @@ -614,7 +617,7 @@ descriptions maintained upstream." (not (string=? (fill-paragraph upstream 100) (fill-paragraph downstream 100))))) (format (guix-warning-port) - (_ "~a: ~a: proposed description:~% \"~a\"~%") + (G_ "~a: ~a: proposed description:~% \"~a\"~%") (location->string loc) (package-full-name package) (fill-paragraph (escape-quotes upstream) 77 7))))))) @@ -656,7 +659,7 @@ descriptions maintained upstream." ;; where *all* the URIs are unreachable. (unless success? (emit-warning package - (_ "all the source URIs are unreachable:") + (G_ "all the source URIs are unreachable:") 'source) (for-each (lambda (warning) (display warning (guix-warning-port))) @@ -665,21 +668,20 @@ descriptions maintained upstream." (define (check-source-file-name package) "Emit a warning if PACKAGE's origin has no meaningful file name." (define (origin-file-name-valid? origin) - ;; Return #t if the source file name contains only a version or is #f; + ;; Return #f if the source file name contains only a version or is #f; ;; indicates that the origin needs a 'file-name' field. (let ((file-name (origin-actual-file-name origin)) (version (package-version package))) (and file-name - (not (or (string-prefix? version file-name) - ;; Common in many projects is for the filename to start - ;; with a "v" followed by the version, - ;; e.g. "v3.2.0.tar.gz". - (string-prefix? (string-append "v" version) file-name)))))) + ;; Common in many projects is for the filename to start + ;; with a "v" followed by the version, + ;; e.g. "v3.2.0.tar.gz". + (not (string-match (string-append "^v?" version) file-name))))) (let ((origin (package-source package))) (unless (or (not origin) (origin-file-name-valid? origin)) (emit-warning package - (_ "the source file name should contain the package name") + (G_ "the source file name should contain the package name") 'source)))) (define (check-mirror-url package) @@ -695,7 +697,7 @@ descriptions maintained upstream." (loop rest)) (prefix (emit-warning package - (format #f (_ "URL should be \ + (format #f (G_ "URL should be \ 'mirror://~a/~a'") mirror-id (string-drop uri (string-length prefix))) @@ -713,11 +715,11 @@ descriptions maintained upstream." (lambda () (guard (c ((nix-protocol-error? c) (emit-warning package - (format #f (_ "failed to create derivation: ~a") + (format #f (G_ "failed to create derivation: ~a") (nix-protocol-error-message c)))) ((message-condition? c) (emit-warning package - (format #f (_ "failed to create derivation: ~a") + (format #f (G_ "failed to create derivation: ~a") (condition-message c))))) (with-store store ;; Disable grafts since it can entail rebuilds. @@ -731,7 +733,7 @@ descriptions maintained upstream." (package-derivation store replacement #:graft? #f)))))) (lambda args (emit-warning package - (format #f (_ "failed to create derivation: ~s~%") + (format #f (G_ "failed to create derivation: ~s~%") args))))) (define (check-license package) @@ -741,7 +743,7 @@ descriptions maintained upstream." ((? license?) ...)) #t) (x - (emit-warning package (_ "invalid license field") + (emit-warning package (G_ "invalid license field") 'license)))) (define (patch-file-name patch) @@ -758,26 +760,26 @@ be determined." or HTTP errors. This allows network-less operation and makes problems with the NIST server non-fatal.." (guard (c ((http-get-error? c) - (warning (_ "failed to retrieve CVE vulnerabilities \ + (warning (G_ "failed to retrieve CVE vulnerabilities \ from ~s: ~a (~s)~%") (uri->string (http-get-error-uri c)) (http-get-error-code c) (http-get-error-reason c)) - (warning (_ "assuming no CVE vulnerabilities~%")) + (warning (G_ "assuming no CVE vulnerabilities~%")) '())) (catch #t (lambda () (current-vulnerabilities)) (match-lambda* (('getaddrinfo-error errcode) - (warning (_ "failed to lookup NIST host: ~a~%") + (warning (G_ "failed to lookup NIST host: ~a~%") (gai-strerror errcode)) - (warning (_ "assuming no CVE vulnerabilities~%")) + (warning (G_ "assuming no CVE vulnerabilities~%")) '()) (('tls-certificate-error args ...) - (warning (_ "TLS certificate error: ~a") + (warning (G_ "TLS certificate error: ~a") (tls-certificate-error-string args)) - (warning (_ "assuming no CVE vulnerabilities~%")) + (warning (G_ "assuming no CVE vulnerabilities~%")) '()) (args (apply throw args)))))) @@ -815,7 +817,7 @@ from ~s: ~a (~s)~%") vulnerabilities))) (unless (null? unpatched) (emit-warning package - (format #f (_ "probably vulnerable to ~a") + (format #f (G_ "probably vulnerable to ~a") (string-join (map vulnerability-id unpatched) ", "))))))))) @@ -830,7 +832,7 @@ from ~s: ~a (~s)~%") (#f #t) (index (emit-warning package - (format #f (_ "tabulation on line ~a, column ~a") + (format #f (G_ "tabulation on line ~a, column ~a") line-number index))))) (define (report-trailing-white-space package line line-number) @@ -839,7 +841,7 @@ from ~s: ~a (~s)~%") (string=? line (string #\page))) (emit-warning package (format #f - (_ "trailing white space on line ~a") + (G_ "trailing white space on line ~a") line-number)))) (define (report-long-line package line line-number) @@ -849,7 +851,7 @@ from ~s: ~a (~s)~%") ;; much noise. (when (> (string-length line) 90) (emit-warning package - (format #f (_ "line ~a is way too long (~a characters)") + (format #f (G_ "line ~a is way too long (~a characters)") line-number (string-length line))))) (define %hanging-paren-rx @@ -860,7 +862,7 @@ from ~s: ~a (~s)~%") (when (regexp-exec %hanging-paren-rx line) (emit-warning package (format #f - (_ "line ~a: parentheses feel lonely, \ + (G_ "line ~a: parentheses feel lonely, \ move to the previous or next line") line-number)))) @@ -999,17 +1001,17 @@ or a list thereof") '()) (define (show-help) - (display (_ "Usage: guix lint [OPTION]... [PACKAGE]... + (display (G_ "Usage: guix lint [OPTION]... [PACKAGE]... Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n")) - (display (_ " + (display (G_ " -c, --checkers=CHECKER1,CHECKER2... only run the specified checkers")) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -l, --list-checkers display the list of available lint checkers")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -1027,7 +1029,7 @@ run the checkers on all packages.\n")) (unless (memq c (map lint-checker-name %checkers)) - (leave (_ "~a: invalid checker~%") c))) + (leave (G_ "~a: invalid checker~%") c))) names) (alist-cons 'checkers (filter (lambda (checker) @@ -1056,7 +1058,7 @@ run the checkers on all packages.\n")) ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm index 6a4ae28689..74c0c5484c 100644 --- a/guix/scripts/offload.scm +++ b/guix/scripts/offload.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -130,14 +130,14 @@ determined." ;; Silently ignore missing file since this is a common case. (if (= ENOENT err) '() - (leave (_ "failed to open machine file '~a': ~a~%") + (leave (G_ "failed to open machine file '~a': ~a~%") file (strerror err))))) (('syntax-error proc message properties form . rest) (let ((loc (source-properties->location properties))) - (leave (_ "~a: ~a~%") + (leave (G_ "~a: ~a~%") (location->string loc) message))) (x - (leave (_ "failed to load machine file '~a': ~s~%") + (leave (G_ "failed to load machine file '~a': ~s~%") file args)))))) (define (host-key->type+key host-key) @@ -148,7 +148,7 @@ its key type as a symbol, and the actual base64-encoded string." (string->symbol (string-drop type 4)))) (match (string-tokenize host-key) - ((type key _) + ((type key x) (values (type->symbol type) key)) ((type key) (values (type->symbol type) key)))) @@ -161,7 +161,7 @@ can interpret meaningfully." (private-key-from-file file)) (lambda (key proc str . rest) (raise (condition - (&message (message (format #f (_ "failed to load SSH \ + (&message (message (format #f (G_ "failed to load SSH \ private key from '~a': ~a") file str)))))))) @@ -204,7 +204,7 @@ private key from '~a': ~a") (string=? (public-key->string server) key)) ;; Key mismatch: something's wrong. XXX: It could be that the server ;; provided its Ed25519 key when we where expecting its RSA key. - (leave (_ "server at '~a' returned host key '~a' of type '~a' \ + (leave (G_ "server at '~a' returned host key '~a' of type '~a' \ instead of '~a' of type '~a'~%") (build-machine-name machine) (public-key->string server) (get-key-type server) @@ -213,13 +213,13 @@ instead of '~a' of type '~a'~%") (let ((auth (userauth-public-key! session private))) (unless (eq? 'success auth) (disconnect! session) - (leave (_ "SSH public key authentication failed for '~a': ~a~%") + (leave (G_ "SSH public key authentication failed for '~a': ~a~%") (build-machine-name machine) (get-error session)))) session) (x ;; Connection failed or timeout expired. - (leave (_ "failed to connect to '~a': ~a~%") + (leave (G_ "failed to connect to '~a': ~a~%") (build-machine-name machine) (get-error session)))))) @@ -346,7 +346,7 @@ MACHINE." (guard (c ((nix-protocol-error? c) (format (current-error-port) - (_ "derivation '~a' offloaded to '~a' failed: ~a~%") + (G_ "derivation '~a' offloaded to '~a' failed: ~a~%") (derivation-file-name drv) (build-machine-name machine) (nix-protocol-error-message c)) @@ -403,7 +403,7 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (if (eof-object? line) +inf.0 ;MACHINE does not respond, so assume it is infinitely loaded (match (string-tokenize line) - ((one five fifteen . _) + ((one five fifteen . x) (let* ((raw (string->number five)) (jobs (build-machine-parallel-builds machine)) (normalized (/ raw jobs))) @@ -411,9 +411,9 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (normalized: ~s)~%" (build-machine-name machine) raw normalized) normalized)) - (_ + (x +inf.0))))) ;something's fishy about MACHINE, so avoid it - (_ + (x +inf.0))) ;failed to connect to MACHINE, so avoid it (define (machine-lock-file machine hint) @@ -503,7 +503,7 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (() ;; We'll never be able to match REQS. (display "# decline\n")) - ((_ ...) + ((x ...) (let ((machine (choose-build-machine candidates))) (if machine (begin @@ -530,11 +530,11 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." "Bail out if NODE is not running Guile." (match (node-guile-version node) (#f - (leave (_ "Guile could not be started on '~a'~%") + (leave (G_ "Guile could not be started on '~a'~%") name)) ((? string? version) ;; Note: The version string already contains the word "Guile". - (info (_ "'~a' is running ~a~%") + (info (G_ "'~a' is running ~a~%") name (node-guile-version node))))) (define (assert-node-has-guix node name) @@ -546,10 +546,10 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (add-text-to-store store "test" "Hello, build machine!")))) ((? string? str) - (info (_ "Guix is usable on '~a' (test returned ~s)~%") + (info (G_ "Guix is usable on '~a' (test returned ~s)~%") name str)) (x - (leave (_ "failed to use Guix module on '~a' (test returned ~s)~%") + (leave (G_ "failed to use Guix module on '~a' (test returned ~s)~%") name x)))) (define %random-state @@ -570,9 +570,9 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (send-files local (list item) remote)) (if (valid-path? remote item) - (info (_ "'~a' successfully imported '~a'~%") + (info (G_ "'~a' successfully imported '~a'~%") name item) - (leave (_ "'~a' was not properly imported on '~a'~%") + (leave (G_ "'~a' was not properly imported on '~a'~%") item name)))))) (define (assert-node-can-export node name daemon-socket) @@ -583,9 +583,9 @@ allowed on MACHINE. Return +∞ if MACHINE is unreachable." (with-store store (if (and (retrieve-files store (list item) remote) (valid-path? store item)) - (info (_ "successfully imported '~a' from '~a'~%") + (info (G_ "successfully imported '~a' from '~a'~%") item name) - (leave (_ "failed to import '~a' from '~a'~%") + (leave (G_ "failed to import '~a' from '~a'~%") item name))))) (define (check-machine-availability machine-file pred) @@ -600,7 +600,7 @@ machine." (let ((machines (filter pred (delete-duplicates (build-machines machine-file) build-machine=?)))) - (info (_ "testing ~a build machines defined in '~a'...~%") + (info (G_ "testing ~a build machines defined in '~a'...~%") (length machines) machine-file) (let* ((names (map build-machine-name machines)) (sockets (map build-machine-daemon-socket machines)) @@ -633,8 +633,8 @@ machine." ;; We rely on protocol-level compression from libssh to optimize large data ;; transfers. Warn if it's missing. (unless (zlib-support?) - (warning (_ "Guile-SSH lacks zlib support")) - (warning (_ "data transfers will *not* be compressed!"))) + (warning (G_ "Guile-SSH lacks zlib support")) + (warning (G_ "data transfers will *not* be compressed!"))) (match args ((system max-silent-time print-build-trace? build-timeout) @@ -659,7 +659,7 @@ machine." #:max-silent-time max-silent-time #:build-timeout build-timeout)))) (else - (leave (_ "invalid request line: ~s~%") line))) + (leave (G_ "invalid request line: ~s~%") line))) (loop (read-line))))))) (("test" rest ...) (with-error-handling @@ -671,20 +671,20 @@ machine." build-machine-name))) ((file) (values file (const #t))) (() (values %machine-file (const #t))) - (_ (leave (_ "wrong number of arguments~%")))))) + (x (leave (G_ "wrong number of arguments~%")))))) (check-machine-availability (or file %machine-file) pred)))) (("--version") (show-version-and-exit "guix offload")) (("--help") - (format #t (_ "Usage: guix offload SYSTEM PRINT-BUILD-TRACE + (format #t (G_ "Usage: guix offload SYSTEM PRINT-BUILD-TRACE Process build offload requests written on the standard input, possibly offloading builds to the machines listed in '~a'.~%") %machine-file) - (display (_ " + (display (G_ " This tool is meant to be used internally by 'guix-daemon'.\n")) (show-bug-report-information)) (x - (leave (_ "invalid arguments: ~{~s ~}~%") x)))) + (leave (G_ "invalid arguments: ~{~s ~}~%") x)))) ;;; Local Variables: ;;; eval: (put 'with-machine-lock 'scheme-indent-function 2) diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 9e91bc22ac..1273c09f54 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -35,7 +35,7 @@ #:autoload (gnu packages base) (tar) #:autoload (gnu packages package-management) (guix) #:autoload (gnu packages gnupg) (libgcrypt) - #:autoload (gnu packages guile) (guile-json) + #:autoload (gnu packages guile) (guile2.0-json guile-json) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-37) @@ -71,7 +71,7 @@ found." (($ <compressor> name*) (string=? name* name))) %compressors) - (leave (_ "~a: compressor not found~%") name))) + (leave (G_ "~a: compressor not found~%") name))) (define* (self-contained-tarball name profile #:key target @@ -217,6 +217,13 @@ the image." (define %libgcrypt #+(file-append libgcrypt "/lib/libgcrypt")))))) + (define json + ;; Pick the guile-json package that corresponds to the Guile used to build + ;; derivations. + (if (string-prefix? "2.0" (package-version (default-guile))) + guile2.0-json + guile-json)) + (define build (with-imported-modules `(,@(source-module-closure '((guix docker)) #:select? not-config?) @@ -224,7 +231,7 @@ the image." #~(begin ;; Guile-JSON is required by (guix docker). (add-to-load-path - (string-append #$guile-json "/share/guile/site/" + (string-append #+json "/share/guile/site/" (effective-version))) (use-modules (guix docker) (srfi srfi-19)) @@ -280,6 +287,9 @@ the image." (option '(#\f "format") #t #f (lambda (opt name arg result) (alist-cons 'format (string->symbol arg) result))) + (option '(#\e "expression") #t #f + (lambda (opt name arg result) + (alist-cons 'expression arg result))) (option '(#\s "system") #t #f (lambda (opt name arg result) (alist-cons 'system arg @@ -304,7 +314,7 @@ the image." `((,source -> ,target) ,@symlinks) (alist-delete 'symlinks result eq?)))) (x - (leave (_ "~a: invalid symlink specification~%") + (leave (G_ "~a: invalid symlink specification~%") arg))))) (option '("localstatedir") #f #f (lambda (opt name arg result) @@ -314,28 +324,30 @@ the image." %standard-build-options))) (define (show-help) - (display (_ "Usage: guix pack [OPTION]... PACKAGE... + (display (G_ "Usage: guix pack [OPTION]... PACKAGE... Create a bundle of PACKAGE.\n")) (show-build-options-help) (newline) (show-transformation-options-help) (newline) - (display (_ " + (display (G_ " -f, --format=FORMAT build a pack in the given FORMAT")) - (display (_ " + (display (G_ " + -e, --expression=EXPR consider the package EXPR evaluates to")) + (display (G_ " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) - (display (_ " + (display (G_ " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"")) - (display (_ " + (display (G_ " -C, --compression=TOOL compress using TOOL--e.g., \"lzip\"")) - (display (_ " + (display (G_ " -S, --symlink=SPEC create symlinks to the profile according to SPEC")) - (display (_ " + (display (G_ " --localstatedir include /var/guix in the resulting pack")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -349,20 +361,22 @@ Create a bundle of PACKAGE.\n")) (define opts (parse-command-line args %options (list %default-options))) + (define maybe-package-argument + ;; Given an option pair, return a package, a package/output tuple, or #f. + (match-lambda + (('argument . spec) + (call-with-values + (lambda () + (specification->package+output spec)) + list)) + (('expression . exp) + (read/eval-package-expression exp)) + (x #f))) + (with-error-handling (parameterize ((%graft? (assoc-ref opts 'graft?))) - (let* ((dry-run? (assoc-ref opts 'dry-run?)) - (specs (filter-map (match-lambda - (('argument . name) - name) - (x #f)) - opts)) - (packages (map (lambda (spec) - (call-with-values - (lambda () - (specification->package+output spec)) - list)) - specs)) + (let* ((dry-run? (assoc-ref opts 'dry-run?)) + (packages (filter-map maybe-package-argument opts)) (pack-format (assoc-ref opts 'format)) (name (string-append (symbol->string pack-format) "-pack")) @@ -372,7 +386,7 @@ Create a bundle of PACKAGE.\n")) (build-image (match (assq-ref %formats pack-format) ((? procedure? proc) proc) (#f - (leave (_ "~a: unknown pack format") + (leave (G_ "~a: unknown pack format") format)))) (localstatedir? (assoc-ref opts 'localstatedir?))) (with-store store diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 6be9d00aec..f050fad976 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -104,7 +104,7 @@ indirectly, or PROFILE." (define (rtfm) (format (current-error-port) - (_ "Try \"info '(guix) Invoking guix package'\" for \ + (G_ "Try \"info '(guix) Invoking guix package'\" for \ more information.~%")) (exit 1)) @@ -126,21 +126,21 @@ more information.~%")) ;; parent directory is root-owned and we're running ;; unprivileged. (format (current-error-port) - (_ "error: while creating directory `~a': ~a~%") + (G_ "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.~%") + (G_ "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~%") + (G_ "error: directory `~a' is not owned by you~%") %profile-directory) (format (current-error-port) - (_ "Please change the owner of `~a' to user ~s.~%") + (G_ "Please change the owner of `~a' to user ~s.~%") %profile-directory (or (getenv "USER") (getenv "LOGNAME") (getuid))) @@ -175,17 +175,17 @@ denote ranges as interpreted by 'matching-generations'." => (lambda (numbers) (when (memv current numbers) - (warning (_ "not removing generation ~a, which is current~%") + (warning (G_ "not removing generation ~a, which is current~%") current)) ;; Make sure we don't inadvertently remove the current ;; generation. (let ((numbers (delv current numbers))) (when (null-list? numbers) - (leave (_ "no matching generation~%"))) + (leave (G_ "no matching generation~%"))) (delete-generations store profile numbers)))) (else - (leave (_ "invalid syntax: ~a~%") pattern))))) + (leave (G_ "invalid syntax: ~a~%") pattern))))) (define* (build-and-use-profile store profile manifest #:key @@ -211,7 +211,7 @@ specified in MANIFEST, a manifest object." (dry-run? #t) ((and (file-exists? profile) (and=> (readlink* profile) (cut string=? prof <>))) - (format (current-error-port) (_ "nothing to be done~%"))) + (format (current-error-port) (G_ "nothing to be done~%"))) (else (let* ((number (generation-number profile)) @@ -269,7 +269,7 @@ synopsis or description matches all of REGEXPS." "Return a variant of TRANSACTION that accounts for the upgrade of ENTRY, a <manifest-entry>." (define (supersede old new) - (info (_ "package '~a' has been superseded by '~a'~%") + (info (G_ "package '~a' has been superseded by '~a'~%") (manifest-entry-name old) (package-name new)) (manifest-transaction-install-entry (package->manifest-entry new (manifest-entry-output old)) @@ -341,7 +341,7 @@ ENTRIES, a list of manifest entries, in the context of PROFILE." (settings (search-path-environment-variables entries profiles #:kind kind))) (unless (null? settings) - (format #t (_ "The following environment variable definitions may be needed:~%")) + (format #t (G_ "The following environment variable definitions may be needed:~%")) (format #t "~{ ~a~%~}" settings)))) @@ -357,68 +357,68 @@ ENTRIES, a list of manifest entries, in the context of PROFILE." (substitutes? . #t))) (define (show-help) - (display (_ "Usage: guix package [OPTION]... + (display (G_ "Usage: guix package [OPTION]... Install, remove, or upgrade packages in a single transaction.\n")) - (display (_ " + (display (G_ " -i, --install PACKAGE ... install PACKAGEs")) - (display (_ " + (display (G_ " -e, --install-from-expression=EXP install the package EXP evaluates to")) - (display (_ " + (display (G_ " -f, --install-from-file=FILE install the package that the code within FILE evaluates to")) - (display (_ " + (display (G_ " -r, --remove PACKAGE ... remove PACKAGEs")) - (display (_ " + (display (G_ " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP")) - (display (_ " + (display (G_ " -m, --manifest=FILE create a new profile generation with the manifest from FILE")) - (display (_ " + (display (G_ " --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP")) - (display (_ " + (display (G_ " --roll-back roll back to the previous generation")) - (display (_ " + (display (G_ " --search-paths[=KIND] display needed environment variable definitions")) - (display (_ " + (display (G_ " -l, --list-generations[=PATTERN] list generations matching PATTERN")) - (display (_ " + (display (G_ " -d, --delete-generations[=PATTERN] delete generations matching PATTERN")) - (display (_ " + (display (G_ " -S, --switch-generation=PATTERN switch to a generation matching PATTERN")) - (display (_ " + (display (G_ " -p, --profile=PROFILE use PROFILE instead of the user's default profile")) (newline) - (display (_ " + (display (G_ " --bootstrap use the bootstrap Guile to build the profile")) - (display (_ " + (display (G_ " --verbose produce verbose output")) (newline) - (display (_ " + (display (G_ " -s, --search=REGEXP search in synopsis and description using REGEXP")) - (display (_ " + (display (G_ " -I, --list-installed[=REGEXP] list installed packages matching REGEXP")) - (display (_ " + (display (G_ " -A, --list-available[=REGEXP] list available packages matching REGEXP")) - (display (_ " + (display (G_ " --show=PACKAGE show details about PACKAGE")) (newline) (show-build-options-help) (newline) (show-transformation-options-help) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -504,7 +504,7 @@ Install, remove, or upgrade packages in a single transaction.\n")) (#f 'exact) (x - (leave (_ "~a: unsupported \ + (leave (G_ "~a: unsupported \ kind of search path~%") x))))) (values (cons `(query search-paths ,kind) @@ -681,24 +681,26 @@ processed, #f otherwise." (unless (null-list? (cdr numbers)) (display-profile-content-diff profile (car numbers) (cadr numbers)) (diff-profiles profile (cdr numbers)))) - (cond ((not (file-exists? profile)) ; XXX: race condition - (raise (condition (&profile-not-found-error - (profile profile))))) - ((string-null? pattern) - (list-generation display-profile-content - (car (profile-generations profile))) - (diff-profiles profile (profile-generations profile))) - ((matching-generations pattern profile) - => - (lambda (numbers) - (if (null-list? numbers) - (exit 1) - (leave-on-EPIPE - (list-generation display-profile-content (car numbers)) - (diff-profiles profile numbers))))) - (else - (leave (_ "invalid syntax: ~a~%") - pattern))) + + (leave-on-EPIPE + (cond ((not (file-exists? profile)) ; XXX: race condition + (raise (condition (&profile-not-found-error + (profile profile))))) + ((string-null? pattern) + (list-generation display-profile-content + (car (profile-generations profile))) + (diff-profiles profile (profile-generations profile))) + ((matching-generations pattern profile) + => + (lambda (numbers) + (if (null-list? numbers) + (exit 1) + (begin + (list-generation display-profile-content (car numbers)) + (diff-profiles profile numbers))))) + (else + (leave (G_ "invalid syntax: ~a~%") + pattern)))) #t) (('list-installed regexp) @@ -788,7 +790,7 @@ processed, #f otherwise." (let ((number (relative-generation-spec->number profile spec))) (if number (switch-to-generation* profile number) - (leave (_ "cannot switch to generation '~a'~%") spec))))) + (leave (G_ "cannot switch to generation '~a'~%") spec))))) (define* (delete-generations-action store profile pattern opts #:key dry-run?) @@ -804,9 +806,9 @@ processed, #f otherwise." (bootstrap? (assoc-ref opts 'bootstrap?)) (substitutes? (assoc-ref opts 'substitutes?))) (if dry-run? - (format #t (_ "would install new manifest from '~a' with ~d entries~%") + (format #t (G_ "would install new manifest from '~a' with ~d entries~%") file (length (manifest-entries manifest))) - (format #t (_ "installing new manifest from '~a' with ~d entries~%") + (format #t (G_ "installing new manifest from '~a' with ~d entries~%") file (length (manifest-entries manifest)))) (build-and-use-profile store profile manifest #:bootstrap? bootstrap? @@ -859,6 +861,8 @@ processed, #f otherwise." (manifest-transaction-install step2))))) (new (manifest-perform-transaction manifest step3))) + (warn-about-old-distro) + (unless (manifest-transaction-null? step3) (show-manifest-transaction store manifest step3 #:dry-run? dry-run?) @@ -877,7 +881,7 @@ processed, #f otherwise." ;; Process non-option argument ARG by calling back ARG-HANDLER. (if arg-handler (arg-handler arg result) - (leave (_ "~A: extraneous argument~%") arg))) + (leave (G_ "~A: extraneous argument~%") arg))) (let ((opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument))) diff --git a/guix/scripts/perform-download.scm b/guix/scripts/perform-download.scm index 59ade0a8c1..aee506af46 100644 --- a/guix/scripts/perform-download.scm +++ b/guix/scripts/perform-download.scm @@ -54,7 +54,7 @@ actual output is different from that when we're doing a 'bmCheck' or (mirrors "mirrors") (content-addressed-mirrors "content-addressed-mirrors")) (unless url - (leave (_ "~a: missing URL~%") (derivation-file-name drv))) + (leave (G_ "~a: missing URL~%") (derivation-file-name drv))) (let* ((output (or output output*)) (url (call-with-input-string url read)) @@ -62,7 +62,7 @@ actual output is different from that when we're doing a 'bmCheck' or (algo (derivation-output-hash-algo drv-output)) (hash (derivation-output-hash drv-output))) (unless (and algo hash) - (leave (_ "~a is not a fixed-output derivation~%") + (leave (G_ "~a is not a fixed-output derivation~%") (derivation-file-name drv))) ;; We're invoked by the daemon, which gives us write access to OUTPUT. @@ -86,7 +86,7 @@ actual output is different from that when we're doing a 'bmCheck' or (define (assert-low-privileges) (when (zero? (getuid)) - (leave (_ "refusing to run with elevated privileges (UID ~a)~%") + (leave (G_ "refusing to run with elevated privileges (UID ~a)~%") (getuid)))) (define (guix-perform-download . args) @@ -115,7 +115,7 @@ of GnuTLS over HTTPS, before we have built GnuTLS. See (show-version-and-exit)) (x (leave - (_ "fixed-output derivation and output file name expected~%")))))) + (G_ "fixed-output derivation and output file name expected~%")))))) ;; Local Variables: ;; eval: (put 'derivation-let 'scheme-indent-function 2) diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index d8ac72f4ef..db7f6a957e 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -24,6 +24,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 rdelim) + #:use-module (ice-9 threads) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (srfi srfi-2) @@ -38,6 +39,7 @@ #:use-module (web response) #:use-module (web server) #:use-module (web uri) + #:autoload (sxml simple) (sxml->xml) #:use-module (guix base32) #:use-module (guix base64) #:use-module (guix config) @@ -45,44 +47,52 @@ #:use-module (guix hash) #:use-module (guix pki) #:use-module (guix pk-crypto) + #:use-module (guix workers) #:use-module (guix store) #:use-module ((guix serialization) #:select (write-file)) #:use-module (guix zlib) + #:use-module (guix cache) #:use-module (guix ui) #:use-module (guix scripts) - #:use-module ((guix utils) #:select (compressed-file?)) - #:use-module ((guix build utils) #:select (dump-port)) + #:use-module ((guix utils) + #:select (with-atomic-file-output compressed-file?)) + #:use-module ((guix build utils) + #:select (dump-port mkdir-p find-files)) #:export (%public-key %private-key guix-publish)) (define (show-help) - (format #t (_ "Usage: guix publish [OPTION]... + (format #t (G_ "Usage: guix publish [OPTION]... Publish ~a over HTTP.\n") %store-directory) - (display (_ " + (display (G_ " -p, --port=PORT listen on PORT")) - (display (_ " + (display (G_ " --listen=HOST listen on the network interface for HOST")) - (display (_ " + (display (G_ " -u, --user=USER change privileges to USER as soon as possible")) - (display (_ " + (display (G_ " -C, --compression[=LEVEL] compress archives at LEVEL")) - (display (_ " + (display (G_ " + -c, --cache=DIRECTORY cache published items to DIRECTORY")) + (display (G_ " + --workers=N use N workers to bake items")) + (display (G_ " --ttl=TTL announce narinfos can be cached for TTL seconds")) - (display (_ " + (display (G_ " --nar-path=PATH use PATH as the prefix for nar URLs")) - (display (_ " + (display (G_ " --public-key=FILE use FILE as the public key for signatures")) - (display (_ " + (display (G_ " --private-key=FILE use FILE as the private key for signatures")) - (display (_ " + (display (G_ " -r, --repl[=PORT] spawn REPL server on PORT")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -93,7 +103,7 @@ Publish ~a over HTTP.\n") %store-directory) (lambda () (getaddrinfo host)) (lambda (key error) - (leave (_ "lookup of host '~a' failed: ~a~%") + (leave (G_ "lookup of host '~a' failed: ~a~%") host (gai-strerror error))))) ;; Nar compression parameters. @@ -110,6 +120,13 @@ Publish ~a over HTTP.\n") %store-directory) ;; Since we compress on the fly, default to fast compression. (compression 'gzip 3)) +(define (actual-compression item requested) + "Return the actual compression used for ITEM, which may be %NO-COMPRESSION +if ITEM is already compressed." + (if (compressed-file? item) + %no-compression + requested)) + (define %options (list (option '(#\h "help") #f #f (lambda _ @@ -131,7 +148,7 @@ Publish ~a over HTTP.\n") %store-directory) (alist-cons 'address (addrinfo:addr info) result)) (() - (leave (_ "lookup of host '~a' returned nothing") + (leave (G_ "lookup of host '~a' returned nothing") name))))) (option '(#\C "compression") #f #t (lambda (opt name arg result) @@ -144,14 +161,21 @@ Publish ~a over HTTP.\n") %store-directory) (compression 'gzip level) result) (begin - (warning (_ "zlib support is missing; \ + (warning (G_ "zlib support is missing; \ compression disabled~%")) result)))))) + (option '(#\c "cache") #t #f + (lambda (opt name arg result) + (alist-cons 'cache arg result))) + (option '("workers") #t #f + (lambda (opt name arg result) + (alist-cons 'workers (string->number* arg) + result))) (option '("ttl") #t #f (lambda (opt name arg result) (let ((duration (string->duration arg))) (unless duration - (leave (_ "~a: invalid duration~%") arg)) + (leave (G_ "~a: invalid duration~%") arg)) (alist-cons 'narinfo-ttl (time-second duration) result)))) (option '("nar-path") #t #f @@ -183,6 +207,9 @@ compression disabled~%")) %default-gzip-compression %no-compression)) + ;; Default number of workers when caching is enabled. + (workers . ,(current-processor-count)) + (address . ,(make-socket-address AF_INET INADDR_ANY 0)) (repl . #f))) @@ -213,14 +240,14 @@ compression disabled~%")) (define* (narinfo-string store store-path key #:key (compression %no-compression) - (nar-path "nar")) + (nar-path "nar") file-size) "Generate a narinfo key/value string for STORE-PATH; an exception is raised if STORE-PATH is invalid. Produce a URL that corresponds to COMPRESSION. The -narinfo is signed with KEY. NAR-PATH specifies the prefix for nar URLs." +narinfo is signed with KEY. NAR-PATH specifies the prefix for nar URLs. +Optionally, FILE-SIZE can specify the size in bytes of the compressed NAR; it +informs the client of how much needs to be downloaded." (let* ((path-info (query-path-info store store-path)) - (compression (if (compressed-file? store-path) - %no-compression - compression)) + (compression (actual-compression store-path compression)) (url (encode-and-join-uri-path `(,@(split-and-decode-uri-path nar-path) ,@(match compression @@ -232,6 +259,8 @@ narinfo is signed with KEY. NAR-PATH specifies the prefix for nar URLs." (hash (bytevector->nix-base32-string (path-info-hash path-info))) (size (path-info-nar-size path-info)) + (file-size (or file-size + (and (eq? compression %no-compression) size))) (references (string-join (map basename (path-info-references path-info)) " ")) @@ -243,10 +272,13 @@ URL: ~a Compression: ~a NarHash: sha256:~a NarSize: ~d -References: ~a~%" +References: ~a~%~a" store-path url (compression-type compression) - hash size references)) + hash size references + (if file-size + (format #f "FileSize: ~a~%" file-size) + ""))) ;; Do not render a "Deriver" or "System" line if we are rendering ;; info for a derivation. (info (if (not deriver) @@ -268,10 +300,15 @@ References: ~a~%" (canonical-sexp->string (signed-string info))))) (format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature))) -(define (not-found request) +(define* (not-found request + #:key (phrase "Resource not found") + ttl) "Render 404 response for REQUEST." - (values (build-response #:code 404) - (string-append "Resource not found: " + (values (build-response #:code 404 + #:headers (if ttl + `((cache-control (max-age . ,ttl))) + '())) + (string-append phrase ": " (uri-path (request-uri request))))) (define (render-nix-cache-info) @@ -303,6 +340,151 @@ appropriate duration. NAR-PATH specifies the prefix for nar URLs." #:compression compression) <>))))) +(define* (nar-cache-file directory item + #:key (compression %no-compression)) + (string-append directory "/" + (symbol->string (compression-type compression)) + "/" (basename item) ".nar")) + +(define* (narinfo-cache-file directory item + #:key (compression %no-compression)) + (string-append directory "/" + (symbol->string (compression-type compression)) + "/" (basename item) + ".narinfo")) + +(define run-single-baker + (let ((baking (make-weak-value-hash-table)) + (mutex (make-mutex))) + (lambda (item thunk) + "Run THUNK, which is supposed to bake ITEM, but make sure only one +thread is baking ITEM at a given time." + (define selected? + (with-mutex mutex + (and (not (hash-ref baking item)) + (begin + (hash-set! baking item (current-thread)) + #t)))) + + (when selected? + (dynamic-wind + (const #t) + thunk + (lambda () + (with-mutex mutex + (hash-remove! baking item)))))))) + +(define-syntax-rule (single-baker item exp ...) + "Bake ITEM by evaluating EXP, but make sure there's only one baker for ITEM +at a time." + (run-single-baker item (lambda () exp ...))) + + +(define (narinfo-files cache) + "Return the list of .narinfo files under CACHE." + (if (file-is-directory? cache) + (find-files cache + (lambda (file stat) + (string-suffix? ".narinfo" file))) + '())) + +(define* (render-narinfo/cached store request hash + #:key ttl (compression %no-compression) + (nar-path "nar") + cache pool) + "Respond to the narinfo request for REQUEST. If the narinfo is available in +CACHE, then send it; otherwise, return 404 and \"bake\" that nar and narinfo +requested using POOL." + (define (delete-entry narinfo) + ;; Delete NARINFO and the corresponding nar from CACHE. + (let ((nar (string-append (string-drop-right narinfo + (string-length ".narinfo")) + ".nar"))) + (delete-file* narinfo) + (delete-file* nar))) + + (let* ((item (hash-part->path store hash)) + (compression (actual-compression item compression)) + (cached (and (not (string-null? item)) + (narinfo-cache-file cache item + #:compression compression)))) + (cond ((string-null? item) + (not-found request)) + ((file-exists? cached) + ;; Narinfo is in cache, send it. + (values `((content-type . (application/x-nix-narinfo)) + ,@(if ttl + `((cache-control (max-age . ,ttl))) + '())) + (lambda (port) + (display (call-with-input-file cached + read-string) + port)))) + ((valid-path? store item) + ;; Nothing in cache: bake the narinfo and nar in the background and + ;; return 404. + (eventually pool + (single-baker item + ;; (format #t "baking ~s~%" item) + (bake-narinfo+nar cache item + #:ttl ttl + #:compression compression + #:nar-path nar-path)) + + (when ttl + (single-baker 'cache-cleanup + (maybe-remove-expired-cache-entries cache + narinfo-files + #:entry-expiration + (file-expiration-time ttl) + #:delete-entry delete-entry + #:cleanup-period ttl)))) + (not-found request + #:phrase "We're baking it" + #:ttl 300)) ;should be available within 5m + (else + (not-found request))))) + +(define* (bake-narinfo+nar cache item + #:key ttl (compression %no-compression) + (nar-path "/nar")) + "Write the narinfo and nar for ITEM to CACHE." + (let* ((compression (actual-compression item compression)) + (nar (nar-cache-file cache item + #:compression compression)) + (narinfo (narinfo-cache-file cache item + #:compression compression))) + + (mkdir-p (dirname nar)) + (match (compression-type compression) + ('gzip + ;; Note: the file port gets closed along with the gzip port. + (call-with-gzip-output-port (open-output-file (string-append nar ".tmp")) + (lambda (port) + (write-file item port)) + #:level (compression-level compression) + #:buffer-size (* 128 1024)) + (rename-file (string-append nar ".tmp") nar)) + ('none + ;; When compression is disabled, we retrieve files directly from the + ;; store; no need to cache them. + #t)) + + (mkdir-p (dirname narinfo)) + (with-atomic-file-output narinfo + (lambda (port) + ;; Open a new connection to the store. We cannot reuse the main + ;; thread's connection to the store since we would end up sending + ;; stuff concurrently on the same channel. + (with-store store + (display (narinfo-string store item + (%private-key) + #:nar-path nar-path + #:compression compression + #:file-size (and=> (stat nar #f) + stat:size)) + port)))))) + ;; XXX: Declare the 'Guix-Compression' HTTP header, which is in fact for ;; internal consumption: it allows us to pass the compression info to ;; 'http-write', as part of the workaround to <http://bugs.gnu.org/21093>. @@ -334,6 +516,21 @@ appropriate duration. NAR-PATH specifies the prefix for nar URLs." store-path) (not-found request)))) +(define* (render-nar/cached store cache request store-item + #:key (compression %no-compression)) + "Respond to REQUEST with a nar for STORE-ITEM. If the nar is in CACHE, +return it; otherwise, return 404." + (let ((cached (nar-cache-file cache store-item + #:compression compression))) + (if (file-exists? cached) + (values `((content-type . (application/octet-stream + (charset . "ISO-8859-1")))) + ;; XXX: We're not returning the actual contents, deferring + ;; instead to 'http-write'. This is a hack to work around + ;; <http://bugs.gnu.org/21093>. + cached) + (not-found request)))) + (define (render-content-addressed-file store request name algo hash) "Return the content of the result of the fixed-output derivation NAME that @@ -353,6 +550,22 @@ has the given HASH of type ALGO." (not-found request))) (not-found request))) +(define (render-home-page request) + "Render the home page." + (values `((content-type . (text/html (charset . "UTF-8")))) + (call-with-output-string + (lambda (port) + (sxml->xml '(html + (head (title "GNU Guix Substitute Server")) + (body + (h1 "GNU Guix Substitute Server") + (p "Hi, " + (a (@ (href + "https://gnu.org/s/guix/manual/html_node/Invoking-guix-publish.html")) + (tt "guix publish")) + " speaking. Welcome!"))) + port))))) + (define extract-narinfo-hash (let ((regexp (make-regexp "^([a-df-np-sv-z0-9]{32}).narinfo$"))) (lambda (str) @@ -464,7 +677,9 @@ blocking." size) client)) (output (response-port response))) - (dump-port input output) + (if (file-port? output) + (sendfile output input size) + (dump-port input output)) (close-port output) (values))))) (lambda args @@ -488,6 +703,7 @@ blocking." (define* (make-request-handler store #:key + cache pool narinfo-ttl (nar-path "nar") (compression %no-compression)) @@ -504,14 +720,24 @@ blocking." ;; /nix-cache-info (("nix-cache-info") (render-nix-cache-info)) + ;; / + ((or () ("index.html")) + (render-home-page request)) ;; /<hash>.narinfo (((= extract-narinfo-hash (? string? hash))) ;; TODO: Register roots for HASH that will somehow remain for ;; NARINFO-TTL. - (render-narinfo store request hash - #:ttl narinfo-ttl - #:nar-path nar-path - #:compression compression)) + (if cache + (render-narinfo/cached store request hash + #:cache cache + #:pool pool + #:ttl narinfo-ttl + #:nar-path nar-path + #:compression compression) + (render-narinfo store request hash + #:ttl narinfo-ttl + #:nar-path nar-path + #:compression compression))) ;; /nar/file/NAME/sha256/HASH (("file" name "sha256" hash) (guard (c ((invalid-base32-character? c) @@ -527,13 +753,16 @@ blocking." ;; /nar/gzip/<store-item> ((components ... "gzip" store-item) (if (and (nar-path? components) (zlib-available?)) - (render-nar store request store-item - #:compression - (match compression - (($ <compression> 'gzip) - compression) - (_ - %default-gzip-compression))) + (let ((compression (match compression + (($ <compression> 'gzip) + compression) + (_ + %default-gzip-compression)))) + (if cache + (render-nar/cached store cache request store-item + #:compression compression) + (render-nar store request store-item + #:compression compression))) (not-found request))) ;; /nar/<store-item> @@ -548,8 +777,11 @@ blocking." (define* (run-publish-server socket store #:key (compression %no-compression) - (nar-path "nar") narinfo-ttl) + (nar-path "nar") narinfo-ttl + cache pool) (run-server (make-request-handler store + #:cache cache + #:pool pool #:nar-path nar-path #:narinfo-ttl narinfo-ttl #:compression compression) @@ -572,7 +804,7 @@ blocking." (setgid (passwd:gid user)) (setuid (passwd:uid user)))) (lambda (key proc message args . rest) - (leave (_ "user '~a' not found: ~a~%") + (leave (G_ "user '~a' not found: ~a~%") user (apply format #f message args))))) @@ -584,9 +816,9 @@ blocking." (with-error-handling (let* ((opts (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) - (leave (_ "~A: extraneous argument~%") arg)) + (leave (G_ "~A: extraneous argument~%") arg)) %default-options)) (user (assoc-ref opts 'user)) (port (assoc-ref opts 'port)) @@ -599,6 +831,8 @@ blocking." (socket (open-server-socket address)) (nar-path (assoc-ref opts 'nar-path)) (repl-port (assoc-ref opts 'repl)) + (cache (assoc-ref opts 'cache)) + (workers (assoc-ref opts 'workers)) ;; Read the key right away so that (1) we fail early on if we can't ;; access them, and (2) we can then drop privileges. @@ -611,12 +845,12 @@ blocking." (gather-user-privileges user)) (when (zero? (getuid)) - (warning (_ "server running as root; \ + (warning (G_ "server running as root; \ consider using the '--user' option!~%"))) (parameterize ((%public-key public-key) (%private-key private-key)) - (format #t (_ "publishing ~a on ~a, port ~d~%") + (format #t (G_ "publishing ~a on ~a, port ~d~%") %store-directory (inet-ntop (sockaddr:fam address) (sockaddr:addr address)) (sockaddr:port address)) @@ -624,6 +858,12 @@ consider using the '--user' option!~%"))) (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) (with-store store (run-publish-server socket store + #:cache cache + #:pool (and cache (make-pool workers)) #:nar-path nar-path #:compression compression #:narinfo-ttl ttl)))))) + +;;; Local Variables: +;;; eval: (put 'single-baker 'scheme-indent-function 1) +;;; End: diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 8e31ad620c..58b87d4df4 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. @@ -28,6 +28,7 @@ #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix monads) + #:use-module (guix scripts build) #:use-module ((guix build utils) #:select (with-directory-excursion delete-file-recursively)) #:use-module ((guix build download) @@ -72,45 +73,56 @@ (define %default-options ;; Alist of default option values. - `((tarball-url . ,%snapshot-url))) + `((tarball-url . ,%snapshot-url) + (system . ,(%current-system)) + (substitutes? . #t) + (graft? . #t) + (max-silent-time . 3600) + (verbosity . 0))) (define (show-help) - (display (_ "Usage: guix pull [OPTION]... + (display (G_ "Usage: guix pull [OPTION]... Download and deploy the latest version of Guix.\n")) - (display (_ " + (display (G_ " --verbose produce verbose output")) - (display (_ " + (display (G_ " --url=URL download the Guix tarball from URL")) - (display (_ " + (display (G_ " --bootstrap use the bootstrap Guile to build the new Guix")) (newline) - (display (_ " + (show-build-options-help) + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) (define %options ;; Specifications of the command-line options. - (list (option '("verbose") #f #f - (lambda (opt name arg result) - (alist-cons 'verbose? #t result))) - (option '("url") #t #f - (lambda (opt name arg result) - (alist-cons 'tarball-url arg - (alist-delete 'tarball-url result)))) - (option '("bootstrap") #f #f - (lambda (opt name arg result) - (alist-cons 'bootstrap? #t result))) + (cons* (option '("verbose") #f #f + (lambda (opt name arg result) + (alist-cons 'verbose? #t result))) + (option '("url") #t #f + (lambda (opt name arg result) + (alist-cons 'tarball-url arg + (alist-delete 'tarball-url result)))) + (option '(#\n "dry-run") #f #f + (lambda (opt name arg result) + (alist-cons 'dry-run? #t (alist-cons 'graft? #f result)))) + (option '("bootstrap") #f #f + (lambda (opt name arg result) + (alist-cons 'bootstrap? #t result))) - (option '(#\h "help") #f #f - (lambda args - (show-help) - (exit 0))) - (option '(#\V "version") #f #f - (lambda args - (show-version-and-exit "guix pull"))))) + (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix pull"))) + + %standard-build-options)) (define what-to-build (store-lift show-what-to-build)) @@ -153,7 +165,7 @@ store file name." (mbegin %store-monad (what-to-build (list tar gzip)) (built-derivations (list tar gzip)) - (format #t (_ "unpacking '~a'...~%") tarball) + (format #t (G_ "unpacking '~a'...~%") tarball) (let ((source (temporary-directory))) (with-directory-excursion source @@ -205,26 +217,18 @@ contained therein." (if (and (file-exists? latest) (string=? (readlink latest) source-dir)) (begin - (display (_ "Guix already up to date\n")) + (display (G_ "Guix already up to date\n")) (return #t)) (begin (switch-symlinks latest source-dir) (format #t - (_ "updated ~a successfully deployed under `~a'~%") + (G_ "updated ~a successfully deployed under `~a'~%") %guix-package-name latest) (return #t)))) - (leave (_ "failed to update Guix, check the build log~%"))))) + (leave (G_ "failed to update Guix, check the build log~%"))))) + (define (guix-pull . args) - (define (parse-options) - ;; Return the alist of option values. - (args-fold* args %options - (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) - (lambda (arg result) - (leave (_ "~A: unexpected argument~%") arg)) - %default-options)) - (define (use-le-certs? url) (string-prefix? "https://git.savannah.gnu.org/" url)) @@ -232,28 +236,31 @@ contained therein." (download-to-store store url "guix-latest.tar.gz")) (with-error-handling - (let* ((opts (parse-options)) - (store (open-connection)) + (let* ((opts (parse-command-line args %options + (list %default-options))) (url (assoc-ref opts 'tarball-url))) - (let ((tarball - (if (use-le-certs? url) - (let* ((drv (package-derivation store le-certs)) - (certs (string-append (derivation->output-path drv) - "/etc/ssl/certs"))) - (build-derivations store (list drv)) - (parameterize ((%x509-certificate-directory certs)) - (fetch-tarball store url))) - (fetch-tarball store url)))) - (unless tarball - (leave (_ "failed to download up-to-date source, exiting\n"))) - (parameterize ((%guile-for-build - (package-derivation store - (if (assoc-ref opts 'bootstrap?) - %bootstrap-guile - (canonical-package guile-2.0))))) - (run-with-store store - (build-and-install tarball (config-directory) - #:verbose? (assoc-ref opts 'verbose?)))))))) + (unless (assoc-ref opts 'dry-run?) ;XXX: not very useful + (with-store store + (set-build-options-from-command-line store opts) + (let ((tarball + (if (use-le-certs? url) + (let* ((drv (package-derivation store le-certs)) + (certs (string-append (derivation->output-path drv) + "/etc/ssl/certs"))) + (build-derivations store (list drv)) + (parameterize ((%x509-certificate-directory certs)) + (fetch-tarball store url))) + (fetch-tarball store url)))) + (unless tarball + (leave (G_ "failed to download up-to-date source, exiting\n"))) + (parameterize ((%guile-for-build + (package-derivation store + (if (assoc-ref opts 'bootstrap?) + %bootstrap-guile + (canonical-package guile-2.0))))) + (run-with-store store + (build-and-install tarball (config-directory) + #:verbose? (assoc-ref opts 'verbose?)))))))))) ;; Local Variables: ;; eval: (put 'with-PATH 'scheme-indent-function 1) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 4d3c695aaf..f85d6e5101 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> @@ -28,18 +28,10 @@ #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix upstream) + #:use-module (guix discovery) #:use-module (guix graph) #:use-module (guix scripts graph) #:use-module (guix monads) - #:use-module ((guix gnu-maintenance) - #:select (%gnu-updater - %gnome-updater - %kde-updater - %xorg-updater - %kernel.org-updater)) - #:use-module (guix import elpa) - #:use-module (guix import cran) - #:use-module (guix import hackage) #:use-module (guix gnupg) #:use-module (gnu packages) #:use-module ((gnu packages commencement) #:select (%final-inputs)) @@ -76,7 +68,7 @@ (alist-cons 'select (string->symbol arg) result)) (x - (leave (_ "~a: invalid selection; expected `core' or `non-core'~%") + (leave (G_ "~a: invalid selection; expected `core' or `non-core'~%") arg))))) (option '(#\t "type") #t #f (lambda (opt name arg result) @@ -107,7 +99,7 @@ (alist-cons 'key-download (string->symbol arg) result)) (x - (leave (_ "unsupported policy: ~a~%") + (leave (G_ "unsupported policy: ~a~%") arg))))) (option '(#\h "help") #f #f @@ -119,41 +111,41 @@ (show-version-and-exit "guix refresh"))))) (define (show-help) - (display (_ "Usage: guix refresh [OPTION]... [PACKAGE]... + (display (G_ "Usage: guix refresh [OPTION]... [PACKAGE]... 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 (_ " + (display (G_ " -e, --expression=EXPR consider the package EXPR evaluates to")) - (display (_ " + (display (G_ " -u, --update update source files in place")) - (display (_ " + (display (G_ " -s, --select=SUBSET select all the packages in SUBSET, one of `core' or `non-core'")) - (display (_ " + (display (G_ " -t, --type=UPDATER,... restrict to updates from the specified updaters (e.g., 'gnu')")) - (display (_ " + (display (G_ " -L, --list-updaters list available updaters and exit")) - (display (_ " + (display (G_ " -l, --list-dependent list top-level dependent packages that would need to be rebuilt as a result of upgrading PACKAGE...")) (newline) - (display (_ " + (display (G_ " --key-server=HOST use HOST as the OpenPGP key server")) - (display (_ " + (display (G_ " --gpg=COMMAND use COMMAND as the GnuPG 2.x command")) - (display (_ " + (display (G_ " --key-download=POLICY handle missing OpenPGP keys according to POLICY: 'always', 'never', and 'interactive', which is also used when 'key-download' is not specified")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -163,66 +155,32 @@ 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 (importer-modules) + "Return the list of importer modules." + (cons (resolve-interface '(guix gnu-maintenance)) + (all-modules (map (lambda (entry) + `(,entry . "guix/import")) + %load-path)))) (define %updaters - ;; List of "updaters" used by default. They are consulted in this order. - (list-updaters %gnu-updater - %gnome-updater - %kde-updater - %xorg-updater - %kernel.org-updater - %elpa-updater - %cran-updater - %bioconductor-updater - ((guix import stackage) => %stackage-updater) - %hackage-updater - ((guix import cpan) => %cpan-updater) - ((guix import pypi) => %pypi-updater) - ((guix import gem) => %gem-updater) - ((guix import github) => %github-updater) - ((guix import crate) => %crate-updater))) + ;; The list of publically-known updaters. + (delay (fold-module-public-variables (lambda (obj result) + (if (upstream-updater? obj) + (cons obj result) + result)) + '() + (importer-modules)))) (define (lookup-updater-by-name name) "Return the updater called NAME." (or (find (lambda (updater) (eq? name (upstream-updater-name updater))) - %updaters) - (leave (_ "~a: no such updater~%") name))) + (force %updaters)) + (leave (G_ "~a: no such updater~%") name))) (define (list-updaters-and-exit) "Display available updaters and exit." - (format #t (_ "Available updaters:~%")) + (format #t (G_ "Available updaters:~%")) (newline) (let* ((packages (fold-packages cons '())) @@ -234,22 +192,22 @@ unavailable optional dependencies such as Guile-JSON." ;; TRANSLATORS: The parenthetical expression here is rendered ;; like "(42% coverage)" and denotes the fraction of packages ;; covered by the given updater. - (format #t (_ " - ~a: ~a (~2,1f% coverage)~%") + (format #t (G_ " - ~a: ~a (~2,1f% coverage)~%") (upstream-updater-name updater) - (_ (upstream-updater-description updater)) + (G_ (upstream-updater-description updater)) (* 100. (/ matches total))) (+ covered matches))) 0 - %updaters)) + (force %updaters))) (newline) - (format #t (_ "~2,1f% of the packages are covered by these updaters.~%") + (format #t (G_ "~2,1f% of the packages are covered by these updaters.~%") (* 100. (/ covered total)))) (exit 0)) (define (warn-no-updater package) (format (current-error-port) - (_ "~a: warning: no updater for ~a~%") + (G_ "~a: warning: no updater for ~a~%") (location->string (package-location package)) (package-name package))) @@ -270,14 +228,14 @@ warn about packages that have no matching updater." (if (and=> tarball file-exists?) (begin (format (current-error-port) - (_ "~a: ~a: updating from version ~a to version ~a...~%") + (G_ "~a: ~a: updating from version ~a to version ~a...~%") (location->string loc) (package-name package) (package-version package) version) (let ((hash (call-with-input-file tarball port-sha256))) (update-package-source package version hash))) - (warning (_ "~a: version ~a could not be \ + (warning (G_ "~a: version ~a could not be \ downloaded and authenticated; not updating~%") (package-name package) version)))) (when warn? @@ -293,7 +251,7 @@ WARN? is true and no updater exists for PACKAGE, print a warning." (let ((loc (or (package-field-location package 'version) (package-location package)))) (format (current-error-port) - (_ "~a: ~a would be upgraded from ~a to ~a~%") + (G_ "~a: ~a would be upgraded from ~a to ~a~%") (location->string loc) (package-name package) (package-version package) (upstream-source-version source))))) @@ -315,6 +273,10 @@ WARN? is true and no updater exists for PACKAGE, print a warning." "List all the things that would need to be rebuilt if PACKAGES are changed." ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE ;; because it includes implicit dependencies. + (define (full-name package) + (string-append (package-name package) "@" + (package-version package))) + (mlet %store-monad ((edges (node-back-edges %bag-node-type (all-packages)))) (let* ((dependents (node-transitive-edges packages edges)) @@ -327,12 +289,12 @@ WARN? is true and no updater exists for PACKAGE, print a warning." (N_ "No dependents other than itself: ~{~a~}~%" "No dependents other than themselves: ~{~a~^ ~}~%" (length packages)) - (map package-full-name packages))) + (map full-name packages))) ((x) (format (current-output-port) - (_ "A single dependent package: ~a~%") - (package-full-name x))) + (G_ "A single dependent package: ~a~%") + (full-name x))) (lst (format (current-output-port) (N_ "Building the following package would ensure ~d \ @@ -341,7 +303,7 @@ dependent packages are rebuilt: ~*~{~a~^ ~}~%" dependent packages are rebuilt: ~{~a~^ ~}~%" (length covering)) (length covering) (length dependents) - (map package-full-name covering)))) + (map full-name covering)))) (return #t)))) @@ -354,7 +316,7 @@ dependent packages are rebuilt: ~{~a~^ ~}~%" ;; Return the alist of option values. (args-fold* args %options (lambda (opt name arg result) - (leave (_ "~A: unrecognized option~%") name)) + (leave (G_ "~A: unrecognized option~%") name)) (lambda (arg result) (alist-cons 'argument arg result)) %default-options)) @@ -368,7 +330,7 @@ dependent packages are rebuilt: ~{~a~^ ~}~%" opts) (() ;; Use the default updaters. - %updaters) + (force %updaters)) (lists (concatenate lists)))) diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm index ea259f3758..52f7cdd972 100644 --- a/guix/scripts/size.scm +++ b/guix/scripts/size.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -74,7 +74,7 @@ if ITEM is not in the store." ;; The nar size is an approximation, but a good one. (return (substitutable-nar-size info))) (() - (leave (_ "no available substitute information for '~a'~%") + (leave (G_ "no available substitute information for '~a'~%") item))))))) (define* (display-profile profile #:optional (port (current-output-port))) @@ -82,7 +82,7 @@ if ITEM is not in the store." (define MiB (expt 2 20)) (format port "~64a ~8a ~a\n" - (_ "store item") (_ "total") (_ "self")) + (G_ "store item") (G_ "total") (G_ "self")) (let ((whole (reduce + 0 (map profile-self-size profile)))) (for-each (match-lambda (($ <profile> name self total) @@ -91,9 +91,10 @@ if ITEM is not in the store." (* 100. (/ self whole 1.))))) (sort profile (match-lambda* - ((($ <profile> _ _ total1) ($ <profile> _ _ total2)) + ((($ <profile> name1 self1 total1) + ($ <profile> name2 self2 total2)) (> total1 total2))))) - (format port (_ "total: ~,1f MiB~%") (/ whole MiB 1.)))) + (format port (G_ "total: ~,1f MiB~%") (/ whole MiB 1.)))) (define display-profile* (lift display-profile %store-monad)) @@ -200,13 +201,14 @@ the name of a PNG file." 0 (sort profiles (match-lambda* - ((($ <profile> _ _ total1) ($ <profile> _ _ total2)) + ((($ <profile> name1 self1 total1) + ($ <profile> name2 self2 total2)) (> total1 total2)))))) ;; 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.) - (make-page-map (_ "store profile") data + (make-page-map (G_ "store profile") data #:write-to-png file)) @@ -215,19 +217,19 @@ the name of a PNG file." ;;; (define (show-help) - (display (_ "Usage: guix size [OPTION]... PACKAGE + (display (G_ "Usage: guix size [OPTION]... PACKAGE Report the size of PACKAGE and its dependencies.\n")) - (display (_ " + (display (G_ " --substitute-urls=URLS fetch substitute from URLS if they are authorized")) - (display (_ " + (display (G_ " -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"")) - (display (_ " + (display (G_ " -m, --map-file=FILE write to FILE a graphical map of disk usage")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -276,7 +278,7 @@ Report the size of PACKAGE and its dependencies.\n")) (urls (assoc-ref opts 'substitute-urls))) (match files (() - (leave (_ "missing store item argument\n"))) + (leave (G_ "missing store item argument\n"))) ((files ..1) (leave-on-EPIPE ;; Turn off grafts because (1) hydra.gnu.org does not serve grafted diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index d3bccf4ddb..73d4f6e2eb 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -28,6 +28,7 @@ #:use-module (guix hash) #:use-module (guix base32) #:use-module (guix base64) + #:use-module (guix cache) #:use-module (guix pk-crypto) #:use-module (guix pki) #:use-module ((guix build utils) #:select (mkdir-p dump-port)) @@ -110,7 +111,7 @@ (and (and=> (getenv "GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES") (cut string-ci=? <> "yes")) (begin - (warning (_ "authentication and authorization of substitutes \ + (warning (G_ "authentication and authorization of substitutes \ disabled!~%")) #t))) @@ -185,7 +186,7 @@ provide." (values port (stat:size (stat port))))) ((http https) (guard (c ((http-get-error? c) - (leave (_ "download from '~a' failed: ~a, ~s~%") + (leave (G_ "download from '~a' failed: ~a, ~s~%") (uri->string (http-get-error-uri c)) (http-get-error-code c) (http-get-error-reason c)))) @@ -198,9 +199,9 @@ provide." %fetch-timeout 0) (begin - (warning (_ "while fetching ~a: server is somewhat slow~%") + (warning (G_ "while fetching ~a: server is somewhat slow~%") (uri->string uri)) - (warning (_ "try `--no-substitutes' if the problem persists~%")) + (warning (G_ "try `--no-substitutes' if the problem persists~%")) ;; Before Guile v2.0.9-39-gfe51c7b, EINTR was reported to the user, ;; and thus PORT had to be closed and re-opened. This is not the @@ -218,7 +219,7 @@ provide." (http-fetch uri #:text? #f #:port port #:verify-certificate? #f)))))) (else - (leave (_ "unsupported substitute URI scheme: ~a~%") + (leave (G_ "unsupported substitute URI scheme: ~a~%") (uri->string uri))))) (define-record-type <cache-info> @@ -253,12 +254,12 @@ failure, return #f and #f." #:verify-certificate? #f #:timeout %fetch-timeout))) (guard (c ((http-get-error? c) - (warning (_ "while fetching '~a': ~a (~s)~%") + (warning (G_ "while fetching '~a': ~a (~s)~%") (uri->string (http-get-error-uri c)) (http-get-error-code c) (http-get-error-reason c)) (close-connection port) - (warning (_ "ignoring substitute server at '~s'~%") url) + (warning (G_ "ignoring substitute server at '~s'~%") url) (values #f #f))) (values (read-cache-info (http-fetch uri #:verify-certificate? #f @@ -308,11 +309,11 @@ Otherwise return #f." ((version host-name sig) (let ((maybe-number (string->number version))) (cond ((not (number? maybe-number)) - (leave (_ "signature version must be a number: ~s~%") + (leave (G_ "signature version must be a number: ~s~%") version)) ;; Currently, there are no other versions. ((not (= 1 maybe-number)) - (leave (_ "unsupported signature version: ~a~%") + (leave (G_ "unsupported signature version: ~a~%") maybe-number)) (else (let ((signature (utf8->string (base64-decode sig)))) @@ -320,11 +321,11 @@ Otherwise return #f." (lambda () (string->canonical-sexp signature)) (lambda (key proc err) - (leave (_ "signature is not a valid \ + (leave (G_ "signature is not a valid \ s-expression: ~s~%") signature)))))))) (x - (leave (_ "invalid format of the signature field: ~a~%") x)))) + (leave (G_ "invalid format of the signature field: ~a~%") x)))) (define (narinfo-maker str cache-url) "Return a narinfo constructor for narinfos originating from CACHE-URL. STR @@ -359,13 +360,13 @@ NARINFO, doesn't match HASH, a bytevector containing the hash of NARINFO." (signature-case (signature hash acl) (valid-signature #t) (invalid-signature - (leave (_ "invalid signature for '~a'~%") uri)) + (leave (G_ "invalid signature for '~a'~%") uri)) (hash-mismatch - (leave (_ "hash mismatch for '~a'~%") uri)) + (leave (G_ "hash mismatch for '~a'~%") uri)) (unauthorized-key - (leave (_ "'~a' is signed with an unauthorized key~%") uri)) + (leave (G_ "'~a' is signed with an unauthorized key~%") uri)) (corrupt-signature - (leave (_ "signature on '~a' is corrupt~%") uri))))) + (leave (G_ "signature on '~a' is corrupt~%") uri))))) (define* (read-narinfo port #:optional url #:key size) @@ -403,17 +404,17 @@ or is signed by an unauthorized key." (if (not hash) (if %allow-unauthenticated-substitutes? narinfo - (leave (_ "substitute at '~a' lacks a signature~%") + (leave (G_ "substitute at '~a' lacks a signature~%") (uri->string (narinfo-uri narinfo)))) (let ((signature (narinfo-signature narinfo))) (unless %allow-unauthenticated-substitutes? (assert-valid-signature narinfo signature hash acl) (when verbose? (format (current-error-port) - (_ "Found valid signature for ~a~%") + (G_ "Found valid signature for ~a~%") (narinfo-path narinfo)) (format (current-error-port) - (_ "From ~a~%") + (G_ "From ~a~%") (uri->string (narinfo-uri narinfo))))) narinfo)))) @@ -440,12 +441,6 @@ or is signed by an unauthorized key." the cache STR originates form." (call-with-input-string str (cut read-narinfo <> cache-uri))) -(define (obsolete? date now ttl) - "Return #t if DATE is obsolete compared to NOW + TTL seconds." - (time>? (subtract-duration now (make-time time-duration 0 ttl)) - (make-time time-monotonic 0 date))) - - (define (narinfo-cache-file cache-url path) "Return the name of the local file that contains an entry for PATH. The entry is stored in a sub-directory specific to CACHE-URL." @@ -453,7 +448,7 @@ entry is stored in a sub-directory specific to CACHE-URL." ;; "/gnu/store/foo". Gracefully handle that. (match (store-path-hash-part path) (#f - (leave (_ "'~a' does not name a store item~%") path)) + (leave (G_ "'~a' does not name a store item~%") path)) ((? string? hash-part) (string-append %narinfo-cache-directory "/" (bytevector->base32-string (sha256 (string->utf8 cache-url))) @@ -477,9 +472,9 @@ for PATH." (match (read p) (('narinfo ('version 2) ('cache-uri cache-uri) - ('date date) ('ttl _) ('value #f)) + ('date date) ('ttl ttl) ('value #f)) ;; A cached negative lookup. - (if (obsolete? date now %narinfo-negative-ttl) + (if (obsolete? date now ttl) (values #f #f) (values #t #f))) (('narinfo ('version 2) @@ -601,7 +596,7 @@ if file doesn't exist, and the narinfo otherwise." (display #\cr (current-error-port)) (force-output (current-error-port)) (format (current-error-port) - (_ "updating list of substitutes from '~a'... ~5,1f%") + (G_ "updating list of substitutes from '~a'... ~5,1f%") url (* 100. (/ done (length paths)))) (set! done (+ 1 done))))) @@ -656,7 +651,7 @@ if file doesn't exist, and the narinfo otherwise." paths))) (filter-map (cut narinfo-from-file <> url) files))) (else - (leave (_ "~s: unsupported server URI scheme~%") + (leave (G_ "~s: unsupported server URI scheme~%") (if uri (uri-scheme uri) url))))) (let-values (((cache-info port) @@ -666,7 +661,7 @@ if file doesn't exist, and the narinfo otherwise." (%store-prefix)) (do-fetch (string->uri url) port) ;reuse PORT (begin - (warning (_ "'~a' uses different store '~a'; ignoring it~%") + (warning (G_ "'~a' uses different store '~a'; ignoring it~%") url (cache-info-store-directory cache-info)) (close-connection port) #f))))) @@ -718,43 +713,28 @@ was found." ((answer) answer) (_ #f))) -(define (remove-expired-cached-narinfos directory) - "Remove expired narinfo entries from DIRECTORY. The sole purpose of this -function is to make sure `%narinfo-cache-directory' doesn't grow -indefinitely." - (define now - (current-time time-monotonic)) +(define (cached-narinfo-expiration-time file) + "Return the expiration time for FILE, which is a cached narinfo." + (catch 'system-error + (lambda () + (call-with-input-file file + (lambda (port) + (match (read port) + (('narinfo ('version 2) ('cache-uri uri) + ('date date) ('ttl ttl) ('value #f)) + (+ date ttl)) + (('narinfo ('version 2) ('cache-uri uri) + ('date date) ('ttl ttl) ('value value)) + (+ date ttl)) + (x + 0))))) + (lambda args + ;; FILE may have been deleted. + 0))) - (define (expired? file) - (catch 'system-error - (lambda () - (call-with-input-file file - (lambda (port) - (match (read port) - (('narinfo ('version 2) ('cache-uri _) - ('date date) ('ttl _) ('value #f)) - (obsolete? date now %narinfo-negative-ttl)) - (('narinfo ('version 2) ('cache-uri _) - ('date date) ('ttl ttl) ('value _)) - (obsolete? date now ttl)) - (_ #t))))) - (lambda args - ;; FILE may have been deleted. - #t))) - - (for-each (lambda (file) - (let ((file (string-append directory "/" file))) - (when (expired? file) - ;; Wrap in `false-if-exception' because FILE might have been - ;; deleted in the meantime (TOCTTOU). - (false-if-exception (delete-file file))))) - (scandir directory - (lambda (file) - (= (string-length file) 32))))) - -(define (narinfo-cache-directories) +(define (narinfo-cache-directories directory) "Return the list of narinfo cache directories (one per cache URL.)" - (map (cut string-append %narinfo-cache-directory "/" <>) + (map (cut string-append directory "/" <>) (scandir %narinfo-cache-directory (lambda (item) (and (not (member item '("." ".."))) @@ -762,25 +742,15 @@ indefinitely." (string-append %narinfo-cache-directory "/" item))))))) -(define (maybe-remove-expired-cached-narinfo) - "Remove expired narinfo entries from the cache if deemed necessary." - (define now - (current-time time-monotonic)) - - (define expiry-file - (string-append %narinfo-cache-directory "/last-expiry-cleanup")) - - (define last-expiry-date - (or (false-if-exception - (call-with-input-file expiry-file read)) - 0)) - - (when (obsolete? last-expiry-date now - %narinfo-expired-cache-entry-removal-delay) - (for-each remove-expired-cached-narinfos - (narinfo-cache-directories)) - (call-with-output-file expiry-file - (cute write (time-second now) <>)))) +(define* (cached-narinfo-files #:optional + (directory %narinfo-cache-directory)) + "Return the list of cached narinfo files under DIRECTORY." + (append-map (lambda (directory) + (map (cut string-append directory "/" <>) + (scandir directory + (lambda (file) + (= (string-length file) 32))))) + (narinfo-cache-directories directory))) (define (progress-report-port report-progress port) "Return a port that calls REPORT-PROGRESS every time something is read from @@ -811,12 +781,12 @@ PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by (lambda () exp ...) (match-lambda* (('getaddrinfo-error error) - (leave (_ "host name lookup error: ~a~%") + (leave (G_ "host name lookup error: ~a~%") (gai-strerror error))) (('gnutls-error error proc . rest) (let ((error->string (module-ref (resolve-interface '(gnutls)) 'error->string))) - (leave (_ "TLS error in procedure '~a': ~a~%") + (leave (G_ "TLS error in procedure '~a': ~a~%") proc (error->string error)))) (args (apply throw args))))))) @@ -827,19 +797,19 @@ PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by ;;; (define (show-help) - (display (_ "Usage: guix substitute [OPTION]... + (display (G_ "Usage: guix substitute [OPTION]... Internal tool to substitute a pre-built binary to a local build.\n")) - (display (_ " + (display (G_ " --query report on the availability of substitutes for the store file names passed on the standard input")) - (display (_ " + (display (G_ " --substitute STORE-FILE DESTINATION download STORE-FILE and store it as a Nar in file DESTINATION")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -905,7 +875,7 @@ DESTINATION as a nar file. Verify the substitute against ACL." ;; TRANSLATORS: The second part of this message looks like ;; "(4.1MiB installed)"; it shows the size of the package once ;; installed. - (_ "Downloading ~a~:[~*~; (~a installed)~]...~%") + (G_ "Downloading ~a~:[~*~; (~a installed)~]...~%") (uri->string uri) ;; Use the Nar size as an estimate of the installed size. (narinfo-size narinfo) @@ -962,7 +932,7 @@ DESTINATION as a nar file. Verify the substitute against ACL." (let ((acl (acl->public-keys (current-acl)))) (when (or (null? acl) (singleton? acl)) - (warning (_ "ACL for archive imports seems to be uninitialized, \ + (warning (G_ "ACL for archive imports seems to be uninitialized, \ substitutes may be unavailable\n"))))) (define (daemon-options) @@ -1010,10 +980,19 @@ default value." (and number (max 20 (- number 1)))))) 80)) +(define (validate-uri uri) + (unless (string->uri uri) + (leave (G_ "~a: invalid URI~%") uri))) + (define (guix-substitute . args) "Implement the build daemon's substituter protocol." (mkdir-p %narinfo-cache-directory) - (maybe-remove-expired-cached-narinfo) + (maybe-remove-expired-cache-entries %narinfo-cache-directory + cached-narinfo-files + #:entry-expiration + cached-narinfo-expiration-time + #:cleanup-period + %narinfo-expired-cache-entry-removal-delay) (check-acl-initialized) ;; Starting from commit 22144afa in Nix, we are allowed to bail out directly @@ -1026,6 +1005,9 @@ default value." (newline) (force-output (current-output-port)) + ;; Sanity-check %CACHE-URLS so we can provide a meaningful error message. + (for-each validate-uri %cache-urls) + ;; Attempt to install the client's locale, mostly so that messages are ;; suitably translated. (match (or (find-daemon-option "untrusted-locale") @@ -1058,7 +1040,7 @@ default value." (("--help") (show-help)) (opts - (leave (_ "~a: unrecognized options~%") opts)))))) + (leave (G_ "~a: unrecognized options~%") opts)))))) ;;; Local Variables: ;;; eval: (put 'with-timeout 'scheme-indent-function 1) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 144a7fd377..f71b1d71b8 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -1,7 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> -;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2016, 2017 Chris Marusich <cmmarusich@gmail.com> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,10 +38,10 @@ #:use-module (guix build utils) #:use-module (gnu build install) #:use-module (gnu system) + #:use-module (gnu bootloader) #: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) #:use-module (gnu services shepherd) #:use-module (gnu services herd) @@ -77,6 +78,29 @@ ;;; Installation. ;;; +(define-syntax-rule (save-load-path-excursion body ...) + "Save the current values of '%load-path' and '%load-compiled-path', run +BODY..., and restore them." + (let ((path %load-path) + (cpath %load-compiled-path)) + (dynamic-wind + (const #t) + (lambda () + body ...) + (lambda () + (set! %load-path path) + (set! %load-compiled-path cpath))))) + +(define-syntax-rule (save-environment-excursion body ...) + "Save the current environment variables, run BODY..., and restore them." + (let ((env (environ))) + (dynamic-wind + (const #t) + (lambda () + body ...) + (lambda () + (environ env))))) + (define topologically-sorted* (store-lift topologically-sorted)) @@ -106,7 +130,7 @@ #:prefix target #:state-directory state #:references refs) - (leave (_ "failed to register '~a' under '~a'~%") + (leave (G_ "failed to register '~a' under '~a'~%") item target)) (return #t)))) @@ -123,41 +147,50 @@ TARGET, and register them." (map (cut copy-item <> target #:log-port log-port) to-copy)))) -(define (install-grub* grub.cfg device target) - "This is a variant of 'install-grub' with error handling, lifted in -%STORE-MONAD" - (let* ((gc-root (string-append target %gc-roots-directory - "/grub.cfg")) - (temp-gc-root (string-append gc-root ".new")) - (delete-file (lift1 delete-file %store-monad)) - (make-symlink (lift2 switch-symlinks %store-monad)) - (rename (lift2 rename-file %store-monad))) - (mbegin %store-monad - ;; Prepare the symlink to GRUB.CFG to make sure that it's a GC root when - ;; 'install-grub' completes (being a bit paranoid.) - (make-symlink temp-gc-root grub.cfg) - - (munless (false-if-exception (install-grub grub.cfg device target)) +(define* (install-bootloader installer-drv + #:key + bootcfg bootcfg-file + device target) + "Call INSTALLER-DRV with error handling, in %STORE-MONAD." + (with-monad %store-monad + (let* ((gc-root (string-append target %gc-roots-directory + "/bootcfg")) + (temp-gc-root (string-append gc-root ".new")) + (install (and installer-drv + (derivation->output-path installer-drv))) + (bootcfg (derivation->output-path bootcfg))) + ;; Prepare the symlink to bootloader config file to make sure that it's + ;; a GC root when 'installer-drv' completes (being a bit paranoid.) + (switch-symlinks temp-gc-root bootcfg) + + (unless (false-if-exception + (begin + (install-boot-config bootcfg bootcfg-file target) + (when install + (save-load-path-excursion (primitive-load install))))) (delete-file temp-gc-root) - (leave (_ "failed to install GRUB on device '~a'~%") device)) + (leave (G_ "failed to install bootloader on device ~a '~a'~%") install device)) - ;; Register GRUB.CFG as a GC root so that its dependencies (background - ;; image, font, etc.) are not reclaimed. - (rename temp-gc-root gc-root)))) + ;; Register bootloader config file as a GC root so that its dependencies + ;; (background image, font, etc.) are not reclaimed. + (rename-file temp-gc-root gc-root) + (return #t)))) (define* (install os-drv target #:key (log-port (current-output-port)) - grub? grub.cfg device) - "Copy the closure of GRUB.CFG, which includes the output of OS-DRV, to + bootloader-installer install-bootloader? + bootcfg bootcfg-file + device) + "Copy the closure of BOOTCFG, which includes the output of OS-DRV, to directory TARGET. TARGET must be an absolute directory name since that's what 'guix-register' expects. -When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG." +When INSTALL-BOOTLOADER? is true, install bootloader on DEVICE, using BOOTCFG." (define (maybe-copy to-copy) (with-monad %store-monad (if (string=? target "/") (begin - (warning (_ "initializing the current root file system~%")) + (warning (G_ "initializing the current root file system~%")) (return #t)) (begin ;; Make sure the target store exists. @@ -171,7 +204,7 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG." ;; <http://lists.gnu.org/archive/html/guix-devel/2015-05/msg00452.html>. (if (zero? (geteuid)) (chown target 0 0) - (warning (_ "not running as 'root', so \ + (warning (G_ "not running as 'root', so \ the ownership of '~a' may be incorrect!~%") target)) @@ -181,16 +214,21 @@ the ownership of '~a' may be incorrect!~%") (populate (lift2 populate-root-file-system %store-monad))) (mbegin %store-monad - ;; Copy the closure of GRUB.CFG, which includes OS-DIR, GRUB's - ;; background image and so on. - (maybe-copy grub.cfg) + ;; Copy the closure of BOOTCFG, which includes OS-DIR, + ;; eventual background image and so on. + (maybe-copy + (derivation->output-path bootcfg)) ;; Create a bunch of additional files. (format log-port "populating '~a'...~%" target) (populate os-dir target) - (mwhen grub? - (install-grub* grub.cfg device target))))) + (mwhen install-bootloader? + (install-bootloader bootloader-installer + #:bootcfg bootcfg + #:bootcfg-file bootcfg-file + #:device device + #:target target))))) ;;; @@ -201,29 +239,6 @@ the ownership of '~a' may be incorrect!~%") ;; The system profile. (string-append %state-directory "/profiles/system")) -(define-syntax-rule (save-environment-excursion body ...) - "Save the current environment variables, run BODY..., and restore them." - (let ((env (environ))) - (dynamic-wind - (const #t) - (lambda () - body ...) - (lambda () - (environ env))))) - -(define-syntax-rule (save-load-path-excursion body ...) - "Save the current values of '%load-path' and '%load-compiled-path', run -BODY..., and restore them." - (let ((path %load-path) - (cpath %load-compiled-path)) - (dynamic-wind - (const #t) - (lambda () - body ...) - (lambda () - (set! %load-path path) - (set! %load-compiled-path cpath))))) - (define-syntax-rule (with-shepherd-error-handling mbody ...) "Catch and report Shepherd errors that arise when binding MBODY, a monadic expression in %STORE-MONAD." @@ -235,21 +250,21 @@ expression in %STORE-MONAD." (values (run-with-store store (begin mbody ...)) store))) (lambda (key proc format-string format-args errno . rest) - (warning (_ "while talking to shepherd: ~a~%") + (warning (G_ "while talking to shepherd: ~a~%") (apply format #f format-string format-args)) (values #f store))))) (define (report-shepherd-error error) "Report ERROR, a '&shepherd-error' error condition object." (cond ((service-not-found-error? error) - (report-error (_ "service '~a' could not be found~%") + (report-error (G_ "service '~a' could not be found~%") (service-not-found-error-service error))) ((action-not-found-error? error) - (report-error (_ "service '~a' does not have an action '~a'~%") + (report-error (G_ "service '~a' does not have an action '~a'~%") (action-not-found-error-service error) (action-not-found-error-action error))) ((action-exception-error? error) - (report-error (_ "exception caught while executing '~a' \ + (report-error (G_ "exception caught while executing '~a' \ on service '~a':~%") (action-exception-error-action error) (action-exception-error-service error)) @@ -257,10 +272,10 @@ on service '~a':~%") (action-exception-error-key error) (action-exception-error-arguments error))) ((unknown-shepherd-error? error) - (report-error (_ "something went wrong: ~s~%") + (report-error (G_ "something went wrong: ~s~%") (unknown-shepherd-error-sexp error))) ((shepherd-error? error) - (report-error (_ "shepherd error~%"))) + (report-error (G_ "shepherd error~%"))) ((not error) ;not an error #t))) @@ -277,7 +292,7 @@ unload." to-unload)))) (#f (with-monad %store-monad - (warning (_ "failed to obtain list of shepherd services~%")) + (warning (G_ "failed to obtain list of shepherd services~%")) (return #f))))) (define (upgrade-shepherd-services os) @@ -288,7 +303,7 @@ This is currently very conservative in that it does not stop or unload any running service. Unloading or stopping the wrong service ('udev', say) could bring the system down." (define new-services - (service-parameters + (service-value (fold-services (operating-system-services os) #:target-type shepherd-root-service-type))) @@ -297,7 +312,7 @@ bring the system down." (call-with-service-upgrade-info new-services (lambda (to-load to-unload) (for-each (lambda (unload) - (info (_ "unloading service '~a'...~%") unload) + (info (G_ "unloading service '~a'...~%") unload) (unload-service unload)) to-unload) @@ -305,7 +320,7 @@ bring the system down." (munless (null? to-load) (let ((to-load-names (map shepherd-service-canonical-name to-load)) (to-start (filter shepherd-service-auto-start? to-load))) - (info (_ "loading new services:~{ ~a~}...~%") to-load-names) + (info (G_ "loading new services:~{ ~a~}...~%") to-load-names) (mlet %store-monad ((files (mapm %store-monad shepherd-service-file to-load))) ;; Here we assume that FILES are exactly those that were computed @@ -329,7 +344,7 @@ it atomically, and then run OS's activation script." (switch-symlinks generation system) (switch-symlinks profile generation) - (format #t (_ "activating system...~%")) + (format #t (G_ "activating system...~%")) ;; The activation script may change $PATH, among others, so protect ;; against that. @@ -362,44 +377,26 @@ it atomically, and then run OS's activation script." (date->string (time-utc->date time) "~Y-~m-~d ~H:~M"))) -(define* (profile-grub-entries #:optional (profile %system-profile) +(define* (profile-boot-parameters #:optional (profile %system-profile) (numbers (generation-numbers profile))) - "Return a list of 'menu-entry' for the generations of PROFILE specified by + "Return a list of 'boot-parameters' for the generations of PROFILE specified by NUMBERS, which is a list of generation numbers." - (define (system->grub-entry system number time) + (define (system->boot-parameters system number time) (unless-file-not-found - (let* ((file (string-append system "/parameters")) - (params (call-with-input-file file - read-boot-parameters)) - (label (boot-parameters-label params)) - (root (boot-parameters-root-device params)) - (root-device (if (bytevector? root) - (uuid->string root) - root)) - (kernel (boot-parameters-kernel params)) - (kernel-arguments (boot-parameters-kernel-arguments params)) - (initrd (boot-parameters-initrd params))) - (menu-entry - (label (string-append label " (#" - (number->string number) ", " - (seconds->string time) ")")) - (device (boot-parameters-store-device params)) - (device-mount-point (boot-parameters-store-mount-point params)) - (linux kernel) - (linux-arguments - (cons* (string-append "--root=" root-device) - (string-append "--system=" system) - (string-append "--load=" system "/boot") - kernel-arguments)) - (initrd initrd))))) - + (let* ((params (read-boot-parameters-file system)) + (label (boot-parameters-label params))) + (boot-parameters + (inherit params) + (label (string-append label " (#" + (number->string number) ", " + (seconds->string time) ")")))))) (let* ((systems (map (cut generation-file-name profile <>) numbers)) (times (map (lambda (system) (unless-file-not-found (stat:mtime (lstat system)))) systems))) - (filter-map system->grub-entry systems numbers times))) + (filter-map system->boot-parameters systems numbers times))) ;;; @@ -415,50 +412,58 @@ connection to the store." ;;; (define (switch-to-system-generation store spec) "Switch the system profile to the generation specified by SPEC, and -re-install grub with a grub configuration file that uses the specified system +re-install bootloader with a configuration file that uses the specified system generation as its default entry. STORE is an open connection to the store." (let ((number (relative-generation-spec->number %system-profile spec))) (if number (begin - (reinstall-grub store number) + (reinstall-bootloader store number) (switch-to-generation* %system-profile number)) - (leave (_ "cannot switch to system generation '~a'~%") spec)))) + (leave (G_ "cannot switch to system generation '~a'~%") spec)))) + +(define* (system-bootloader-name #:optional (system %system-profile)) + "Return the bootloader name stored in SYSTEM's \"parameters\" file." + (let ((params (unless-file-not-found + (read-boot-parameters-file system)))) + (boot-parameters-boot-name params))) -(define (reinstall-grub store number) - "Re-install grub for existing system profile generation NUMBER. STORE is an -open connection to the store." +(define (reinstall-bootloader store number) + "Re-install bootloader for existing system profile generation NUMBER. +STORE is an open connection to the store." (let* ((generation (generation-file-name %system-profile number)) - (file (string-append generation "/parameters")) (params (unless-file-not-found - (call-with-input-file file read-boot-parameters))) - (root-device (boot-parameters-root-device params)) - ;; We don't currently keep track of past menu entries' details. The - ;; default values will allow the system to boot, even if they differ - ;; from the actual past values for this generation's entry. - (grub-config (grub-configuration (device root-device))) + (read-boot-parameters-file generation))) + ;; Detect the bootloader used in %system-profile. + (bootloader (lookup-bootloader-by-name (system-bootloader-name))) + + ;; Use the detected bootloader with default configuration. + ;; It will be enough to allow the system to boot. + (bootloader-config (bootloader-configuration + (bootloader bootloader))) + ;; Make the specified system generation the default entry. - (entries (profile-grub-entries %system-profile (list number))) + (entries (profile-boot-parameters %system-profile (list number))) (old-generations (delv number (generation-numbers %system-profile))) - (old-entries (profile-grub-entries %system-profile old-generations)) - (grub.cfg (run-with-store store - (grub-configuration-file grub-config - entries - #:old-entries old-entries)))) - (show-what-to-build store (list grub.cfg)) - (build-derivations store (list grub.cfg)) - ;; This is basically the same as install-grub*, but for now we avoid - ;; re-installing the GRUB boot loader itself onto a device, mainly because - ;; we don't in general have access to the same version of the GRUB package - ;; which was used when installing this other system generation. - (let* ((grub.cfg-path (derivation->output-path grub.cfg)) - (gc-root (string-append %gc-roots-directory "/grub.cfg")) - (temp-gc-root (string-append gc-root ".new"))) - (switch-symlinks temp-gc-root grub.cfg-path) - (unless (false-if-exception (install-grub-config grub.cfg-path "/")) - (delete-file temp-gc-root) - (leave (_ "failed to re-install GRUB configuration file: '~a'~%") - grub.cfg-path)) - (rename-file temp-gc-root gc-root)))) + (old-entries (profile-boot-parameters + %system-profile old-generations))) + (run-with-store store + (mlet* %store-monad + ((bootcfg ((bootloader-configuration-file-generator bootloader) + bootloader-config entries + #:old-entries old-entries)) + (bootcfg-file -> (bootloader-configuration-file bootloader)) + (target -> "/") + (drvs -> (list bootcfg))) + (mbegin %store-monad + (show-what-to-build* drvs) + (built-derivations drvs) + ;; Only install bootloader configuration file. Thus, no installer + ;; nor device is provided here. + (install-bootloader #f + #:bootcfg bootcfg + #:bootcfg-file bootcfg-file + #:device #f + #:target target)))))) ;;; @@ -468,7 +473,7 @@ open connection to the store." (define (service-node-label service) "Return a label to represent SERVICE." (let ((type (service-kind service)) - (value (service-parameters service))) + (value (service-value service))) (string-append (symbol->string (service-type-name type)) (cond ((or (number? value) (symbol? value)) (string-append " " (object->string value))) @@ -514,21 +519,22 @@ list of services." "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)) + (params (read-boot-parameters-file generation)) (label (boot-parameters-label params)) + (boot-name (boot-parameters-boot-name params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root) (uuid->string root) root)) (kernel (boot-parameters-kernel params))) (display-generation profile number) - (format #t (_ " file name: ~a~%") generation) - (format #t (_ " canonical file name: ~a~%") (readlink* generation)) + (format #t (G_ " file name: ~a~%") generation) + (format #t (G_ " canonical file name: ~a~%") (readlink* generation)) ;; TRANSLATORS: Please preserve the two-space indentation. - (format #t (_ " label: ~a~%") label) - (format #t (_ " root device: ~a~%") root-device) - (format #t (_ " kernel: ~a~%") kernel)))) + (format #t (G_ " label: ~a~%") label) + (format #t (G_ " bootloader: ~a~%") boot-name) + (format #t (G_ " root device: ~a~%") root-device) + (format #t (G_ " kernel: ~a~%") kernel)))) (define* (list-generations pattern #:optional (profile %system-profile)) "Display in a human-readable format all the system generations matching @@ -546,7 +552,7 @@ PATTERN, a string. When PATTERN is #f, display all the system generations." (leave-on-EPIPE (for-each display-system-generation numbers))))) (else - (leave (_ "invalid syntax: ~a~%") pattern)))) + (leave (G_ "invalid syntax: ~a~%") pattern)))) ;;; @@ -569,7 +575,7 @@ PATTERN, a string. When PATTERN is #f, display all the system generations." #:disk-image-size (if full-boot? image-size - (* 30 (expt 2 20))) + (* 70 (expt 2 20))) #:mappings mappings)) ((disk-image) (system-disk-image os #:disk-image-size image-size)))) @@ -585,23 +591,39 @@ PATTERN, a string. When PATTERN is #f, display all the system generations." (string-append (config-directory) "/latest")) (unless (file-exists? latest) - (warning (_ "~a not found: 'guix pull' was never run~%") latest) - (warning (_ "Consider running 'guix pull' before 'reconfigure'.~%")) - (warning (_ "Failing to do that may downgrade your system!~%")))) + (warning (G_ "~a not found: 'guix pull' was never run~%") latest) + (warning (G_ "Consider running 'guix pull' before 'reconfigure'.~%")) + (warning (G_ "Failing to do that may downgrade your system!~%")))) + +(define (bootloader-installer-derivation installer + bootloader device target) + "Return a file calling INSTALLER gexp with given BOOTLOADER, DEVICE +and TARGET arguments." + (with-monad %store-monad + (gexp->file "bootloader-installer" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (#$installer #$bootloader #$device #$target)))))) (define* (perform-action action os - #:key grub? dry-run? derivations-only? + #:key install-bootloader? + dry-run? derivations-only? use-substitutes? device target image-size full-boot? - (mappings '())) - "Perform ACTION for OS. GRUB? specifies whether to install GRUB; DEVICE is -the target devices for GRUB; TARGET is the target root directory; IMAGE-SIZE -is the size of the image to be built, for the 'vm-image' and 'disk-image' -actions. FULL-BOOT? is used for the 'vm' action; it determines whether to -boot directly to the kernel or to the bootloader. + (mappings '()) + (gc-root #f)) + "Perform ACTION for OS. INSTALL-BOOTLOADER? specifies whether to install +bootloader; DEVICE is the target devices for bootloader; TARGET is the target +root directory; IMAGE-SIZE is the size of the image to be built, for the +'vm-image' and 'disk-image' actions. FULL-BOOT? is used for the 'vm' action; +it determines whether to boot directly to the kernel or to the bootloader. When DERIVATIONS-ONLY? is true, print the derivation file name(s) without -building anything." +building anything. + +When GC-ROOT is a path, also make that path an indirect root of the build +output when building a system derivation, such as a disk image." (define println (cut format #t "~a~%" <>)) @@ -613,22 +635,37 @@ building anything." #:image-size image-size #:full-boot? full-boot? #:mappings mappings)) - (grub (package->derivation (grub-configuration-grub - (operating-system-bootloader os)))) - (grub.cfg (if (eq? 'container action) - (return #f) - (operating-system-grub.cfg os - (if (eq? 'init action) - '() - (profile-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 <http://bugs.gnu.org/21068>. + (bootloader -> (bootloader-configuration-bootloader + (operating-system-bootloader os))) + (bootloader-package + (let ((package (bootloader-package bootloader))) + (if package + (package->derivation package) + (return #f)))) + (bootcfg (if (eq? 'container action) + (return #f) + (operating-system-bootcfg + os + (if (eq? 'init action) + '() + (profile-boot-parameters))))) + (bootcfg-file -> (bootloader-configuration-file bootloader)) + (bootloader-installer + (let ((installer (bootloader-installer bootloader)) + (target (or target "/"))) + (bootloader-installer-derivation installer + bootloader-package + device target))) + + ;; For 'init' and 'reconfigure', always build BOOTCFG, even if + ;; --no-bootloader is passed, because we then use it as a GC root. + ;; See <http://bugs.gnu.org/21068>. (drvs -> (if (memq action '(init reconfigure)) - (if grub? - (list sys grub.cfg grub) - (list sys grub.cfg)) + (if (and install-bootloader? bootloader-package) + (list sys bootcfg + bootloader-package + bootloader-installer) + (list sys bootcfg)) (list sys))) (% (if derivations-only? (return (for-each (compose println derivation-file-name) @@ -642,31 +679,34 @@ building anything." (for-each (compose println derivation->output-path) drvs) - ;; Make sure GRUB is accessible. - (when grub? - (let ((prefix (derivation->output-path grub))) - (setenv "PATH" - (string-append prefix "/bin:" prefix "/sbin:" - (getenv "PATH"))))) - (case action ((reconfigure) (mbegin %store-monad (switch-to-system os) - (mwhen grub? - (install-grub* (derivation->output-path grub.cfg) - device "/")))) + (mwhen install-bootloader? + (install-bootloader bootloader-installer + #:bootcfg bootcfg + #:bootcfg-file bootcfg-file + #:device device + #:target "/")))) ((init) (newline) - (format #t (_ "initializing operating system under '~a'...~%") + (format #t (G_ "initializing operating system under '~a'...~%") target) (install sys (canonicalize-path target) - #:grub? grub? - #:grub.cfg (derivation->output-path grub.cfg) + #:install-bootloader? install-bootloader? + #:bootcfg bootcfg + #:bootcfg-file bootcfg-file + #:bootloader-installer bootloader-installer #:device device)) (else - ;; All we had to do was to build SYS. - (return (derivation->output-path sys)))))))) + ;; All we had to do was to build SYS and maybe register an + ;; indirect GC root. + (let ((output (derivation->output-path sys))) + (mbegin %store-monad + (mwhen gc-root + (register-root* (list output) gc-root)) + (return output))))))))) (define (export-extension-graph os port) "Export the service extension graph of OS to PORT." @@ -683,7 +723,7 @@ building anything." (let* ((services (operating-system-services os)) (pid1 (fold-services services #:target-type shepherd-root-service-type)) - (shepherds (service-parameters pid1)) ;list of <shepherd-service> + (shepherds (service-value pid1)) ;list of <shepherd-service> (sinks (filter (lambda (service) (null? (shepherd-service-requirement service))) shepherds))) @@ -697,57 +737,61 @@ building anything." ;;; (define (show-help) - (display (_ "Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE] + (display (G_ "Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE] Build the operating system declared in FILE according to ACTION. Some ACTIONS support additional ARGS.\n")) (newline) - (display (_ "The valid values for ACTION are:\n")) + (display (G_ "The valid values for ACTION are:\n")) (newline) - (display (_ "\ + (display (G_ "\ reconfigure switch to a new operating system configuration\n")) - (display (_ "\ + (display (G_ "\ roll-back switch to the previous operating system configuration\n")) - (display (_ "\ + (display (G_ "\ switch-generation switch to an existing operating system configuration\n")) - (display (_ "\ + (display (G_ "\ list-generations list the system generations\n")) - (display (_ "\ + (display (G_ "\ build build the operating system without installing anything\n")) - (display (_ "\ + (display (G_ "\ container build a container that shares the host's store\n")) - (display (_ "\ + (display (G_ "\ vm build a virtual machine image that shares the host's store\n")) - (display (_ "\ + (display (G_ "\ vm-image build a freestanding virtual machine image\n")) - (display (_ "\ + (display (G_ "\ disk-image build a disk image, suitable for a USB stick\n")) - (display (_ "\ + (display (G_ "\ init initialize a root file system to run GNU\n")) - (display (_ "\ + (display (G_ "\ extension-graph emit the service extension graph in Dot format\n")) - (display (_ "\ + (display (G_ "\ shepherd-graph emit the graph of shepherd services in Dot format\n")) (show-build-options-help) - (display (_ " + (display (G_ " -d, --derivation return the derivation of the given system")) - (display (_ " + (display (G_ " --on-error=STRATEGY apply STRATEGY when an error occurs while reading FILE")) - (display (_ " + (display (G_ " --image-size=SIZE for 'vm-image', produce an image of SIZE")) - (display (_ " - --no-grub for 'init', do not install GRUB")) - (display (_ " + (display (G_ " + --no-bootloader for 'init', do not install a bootloader")) + (display (G_ " --share=SPEC for 'vm', share host file system according to SPEC")) - (display (_ " + (display (G_ " + -r, --root=FILE for 'vm', 'vm-image', 'disk-image', 'container', + and 'build', make FILE a symlink to the result, and + register it as a garbage collector root")) + (display (G_ " --expose=SPEC for 'vm', expose host file system according to SPEC")) - (display (_ " + (display (G_ " --full-boot for 'vm', make a full boot sequence")) (newline) - (display (_ " + (display (G_ " -h, --help display this help and exit")) - (display (_ " + (display (G_ " -V, --version display version information and exit")) (newline) (show-bug-report-information)) @@ -772,9 +816,9 @@ Some ACTIONS support additional ARGS.\n")) (lambda (opt name arg result) (alist-cons 'image-size (size->number arg) result))) - (option '("no-grub") #f #f + (option '("no-bootloader" "no-grub") #f #f (lambda (opt name arg result) - (alist-cons 'install-grub? #f result))) + (alist-cons 'install-bootloader? #f result))) (option '("full-boot") #f #f (lambda (opt name arg result) (alist-cons 'full-boot? #t result))) @@ -797,6 +841,9 @@ Some ACTIONS support additional ARGS.\n")) (lambda (opt name arg result) (alist-cons 'system arg (alist-delete 'system result eq?)))) + (option '(#\r "root") #t #f + (lambda (opt name arg result) + (alist-cons 'gc-root arg result))) %standard-build-options)) (define %default-options @@ -808,7 +855,7 @@ Some ACTIONS support additional ARGS.\n")) (max-silent-time . 3600) (verbosity . 0) (image-size . ,(* 900 (expt 2 20))) - (install-grub? . #t))) + (install-bootloader? . #t))) ;;; @@ -820,23 +867,23 @@ Some ACTIONS support additional ARGS.\n")) 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~%")))) - - (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))))) + (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 (G_ "no configuration file specified~%")))) + + (dry? (assoc-ref opts 'dry-run?)) + (bootloader? (assoc-ref opts 'install-bootloader?)) + (target (match args + ((first second) second) + (_ #f))) + (device (and bootloader? + (bootloader-configuration-device + (operating-system-bootloader os))))) (with-store store (set-build-options-from-command-line store opts) @@ -850,6 +897,10 @@ resulting from command-line parsing." ((shepherd-graph) (export-shepherd-graph os (current-output-port))) (else + (unless (memq action '(build init)) + (warn-about-old-distro #:suggested-command + "guix system reconfigure")) + (perform-action action os #:dry-run? dry? #:derivations-only? (assoc-ref opts @@ -862,8 +913,9 @@ resulting from command-line parsing." m) (_ #f)) opts) - #:grub? grub? - #:target target #:device device)))) + #:install-bootloader? bootloader? + #:target target #:device device + #:gc-root (assoc-ref opts 'gc-root))))) #:system system)))) (define (process-command command args opts) @@ -876,21 +928,21 @@ argument list and OPTS is the option alist." (let ((pattern (match args (() "") ((pattern) pattern) - (x (leave (_ "wrong number of arguments~%")))))) + (x (leave (G_ "wrong number of arguments~%")))))) (list-generations pattern))) ;; The following commands need to use the store, but they do not need an ;; operating system configuration file. ((switch-generation) (let ((pattern (match args ((pattern) pattern) - (x (leave (_ "wrong number of arguments~%")))))) + (x (leave (G_ "wrong number of arguments~%")))))) (with-store store (set-build-options-from-command-line store opts) (switch-to-system-generation store pattern)))) ((roll-back) (let ((pattern (match args (() "") - (x (leave (_ "wrong number of arguments~%")))))) + (x (leave (G_ "wrong number of arguments~%")))))) (with-store store (set-build-options-from-command-line store opts) (roll-back-system store)))) @@ -909,7 +961,7 @@ argument list and OPTS is the option alist." extension-graph shepherd-graph list-generations roll-back switch-generation) (alist-cons 'action action result)) - (else (leave (_ "~a: unknown action~%") action)))))) + (else (leave (G_ "~a: unknown action~%") action)))))) (define (match-pair car) ;; Return a procedure that matches a pair with CAR. @@ -924,14 +976,14 @@ argument list and OPTS is the option alist." (count (length args)) (action (assoc-ref opts 'action))) (define (fail) - (leave (_ "wrong number of arguments for action '~a'~%") + (leave (G_ "wrong number of arguments for action '~a'~%") action)) (unless action (format (current-error-port) - (_ "guix system: missing command name~%")) + (G_ "guix system: missing command name~%")) (format (current-error-port) - (_ "Try 'guix system --help' for more information.~%")) + (G_ "Try 'guix system --help' for more information.~%")) (exit 1)) (case action diff --git a/guix/serialization.scm b/guix/serialization.scm index 4a8cd2086e..e6ae2fc307 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -214,9 +214,8 @@ substitute invalid byte sequences with question marks. This is a (write-string "contents" p) (write-long-long size p) (call-with-binary-input-file file - ;; Use `sendfile' when available (Guile 2.0.8+). - (if (and (compile-time-value (defined? 'sendfile)) - (file-port? p)) + ;; Use 'sendfile' when P is a file port. + (if (file-port? p) (cut sendfile p <> size 0) (cut dump <> p size))) (write-padding size p)) diff --git a/guix/ssh.scm b/guix/ssh.scm index 3548243839..4fb145230d 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,7 +18,10 @@ (define-module (guix ssh) #:use-module (guix store) - #:autoload (guix ui) (N_) + #:use-module ((guix ui) #:select (G_ N_)) + #:use-module (ssh session) + #:use-module (ssh auth) + #:use-module (ssh key) #:use-module (ssh channel) #:use-module (ssh popen) #:use-module (ssh session) @@ -29,7 +32,9 @@ #:use-module (srfi srfi-35) #:use-module (ice-9 match) #:use-module (ice-9 binary-ports) - #:export (connect-to-remote-daemon + #:export (open-ssh-session + remote-daemon-channel + connect-to-remote-daemon send-files retrieve-files remote-store-host @@ -43,11 +48,52 @@ ;;; ;;; Code: -(define* (connect-to-remote-daemon session - #:optional - (socket-name "/var/guix/daemon-socket/socket")) - "Connect to the remote build daemon listening on SOCKET-NAME over SESSION, -an SSH session. Return a <nix-server> object." +(define %compression + "zlib@openssh.com,zlib") + +(define* (open-ssh-session host #:key user port + (compression %compression)) + "Open an SSH session for HOST and return it. When USER and PORT are #f, use +default values or whatever '~/.ssh/config' specifies; otherwise use them. +Throw an error on failure." + (let ((session (make-session #:user user + #:host host + #:port port + #:timeout 10 ;seconds + ;; #:log-verbosity 'protocol + + ;; We need lightweight compression when + ;; exchanging full archives. + #:compression compression + #:compression-level 3))) + + ;; Honor ~/.ssh/config. + (session-parse-config! session) + + (match (connect! session) + ('ok + ;; Use public key authentication, via the SSH agent if it's available. + (match (userauth-public-key/auto! session) + ('success + session) + (x + (disconnect! session) + (raise (condition + (&message + (message (format #f (G_ "SSH authentication failed for '~a': ~a~%") + host (get-error session))))))))) + (x + ;; Connection failed or timeout expired. + (raise (condition + (&message + (message (format #f (G_ "SSH connection to '~a' failed: ~a~%") + host (get-error session)))))))))) + +(define* (remote-daemon-channel session + #:optional + (socket-name + "/var/guix/daemon-socket/socket")) + "Return an input/output port (an SSH channel) to the daemon at SESSION." (define redirect ;; Code run in SESSION to redirect the remote process' stdin/stdout to the ;; daemon's socket, à la socat. The SSH protocol supports forwarding to @@ -82,13 +128,20 @@ an SSH session. Return a <nix-server> object." (_ (primitive-exit 1))))))) - (let ((channel - (open-remote-pipe* session OPEN_BOTH - ;; Sort-of shell-quote REDIRECT. - "guile" "-c" - (object->string - (object->string redirect))))) - (open-connection #:port channel))) + (open-remote-pipe* session OPEN_BOTH + ;; Sort-of shell-quote REDIRECT. + "guile" "-c" + (object->string + (object->string redirect)))) + +(define* (connect-to-remote-daemon session + #:optional + (socket-name + "/var/guix/daemon-socket/socket")) + "Connect to the remote build daemon listening on SOCKET-NAME over SESSION, +an SSH session. Return a <nix-server> object." + (open-connection #:port (remote-daemon-channel session))) + (define (store-import-channel session) "Return an output port to which archives to be exported to SESSION's store @@ -216,7 +269,7 @@ LOCAL. When RECURSIVE? is true, retrieve the closure of FILES." (&message (message (format #f - (_ "failed to retrieve store items from '~a'") + (G_ "failed to retrieve store items from '~a'") (remote-store-host remote))))))) (let ((result (import-paths local port))) diff --git a/guix/store.scm b/guix/store.scm index 2f05351767..c94dfea959 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -23,7 +23,8 @@ #:use-module (guix serialization) #:use-module (guix monads) #:use-module (guix base16) - #:autoload (guix base32) (bytevector->base32-string) + #:use-module (guix base32) + #:use-module (guix hash) #:autoload (guix build syscalls) (terminal-columns) #:use-module (rnrs bytevectors) #:use-module (ice-9 binary-ports) @@ -39,7 +40,8 @@ #:use-module (ice-9 regex) #:use-module (ice-9 vlist) #:use-module (ice-9 popen) - #:export (%daemon-socket-file + #:use-module (web uri) + #:export (%daemon-socket-uri %gc-roots-directory %default-substitute-urls @@ -132,6 +134,9 @@ interned-file %store-prefix + store-path + output-path + fixed-output-path store-path? direct-store-path? derivation-path? @@ -216,8 +221,8 @@ (define %default-socket-path (string-append %state-directory "/daemon-socket/socket")) -(define %daemon-socket-file - ;; File name of the socket the daemon listens too. +(define %daemon-socket-uri + ;; URI or file name of the socket the daemon listens too. (make-parameter (or (getenv "GUIX_DAEMON_SOCKET") %default-socket-path))) @@ -350,6 +355,18 @@ (message nix-protocol-error-message) (status nix-protocol-error-status)) +(define-syntax-rule (system-error-to-connection-error file exp ...) + "Catch 'system-error' exceptions and translate them to +'&nix-connection-error'." + (catch 'system-error + (lambda () + exp ...) + (lambda args + (let ((errno (system-error-errno args))) + (raise (condition (&nix-connection-error + (file file) + (errno errno)))))))) + (define (open-unix-domain-socket file) "Connect to the Unix-domain socket at FILE and return it. Raise a '&nix-connection-error' upon error." @@ -358,21 +375,99 @@ (socket PF_UNIX SOCK_STREAM 0))) (a (make-socket-address PF_UNIX file))) - (catch 'system-error - (lambda () - (connect s a) - s) - (lambda args - ;; Translate the error to something user-friendly. - (let ((errno (system-error-errno args))) - (raise (condition (&nix-connection-error - (file file) - (errno errno))))))))) + (system-error-to-connection-error file + (connect s a) + s))) -(define* (open-connection #:optional (file (%daemon-socket-file)) +(define (open-inet-socket host port) + "Connect to the Unix-domain socket at HOST:PORT and return it. Raise a +'&nix-connection-error' upon error." + ;; Define 'TCP_NODELAY' on Guile 2.0. The value is the same on all GNU + ;; systems. + (cond-expand (guile-2.2 #t) + (else (define TCP_NODELAY 1))) + + (let ((sock (with-fluids ((%default-port-encoding #f)) + ;; This trick allows use of the `scm_c_read' optimization. + (socket PF_UNIX SOCK_STREAM 0)))) + (define addresses + (getaddrinfo host + (if (number? port) (number->string port) port) + (if (number? port) + (logior AI_ADDRCONFIG AI_NUMERICSERV) + AI_ADDRCONFIG))) + + (let loop ((addresses addresses)) + (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)) + + ;; Setting this option makes a dramatic difference because it + ;; avoids the "ACK delay" on our RPC messages. + (setsockopt s IPPROTO_TCP TCP_NODELAY 1) + s) + (lambda args + ;; Connection failed, so try one of the other addresses. + (close s) + (if (null? rest) + (raise (condition (&nix-connection-error + (file host) + (errno (system-error-errno args))))) + (loop rest)))))))))) + +(define (connect-to-daemon uri) + "Connect to the daemon at URI, a string that may be an actual URI or a file +name." + (define (not-supported) + (raise (condition (&nix-connection-error + (file uri) + (errno ENOTSUP))))) + + (define connect + (match (string->uri uri) + (#f ;URI is a file name + open-unix-domain-socket) + ((? uri? uri) + (match (uri-scheme uri) + ((or #f 'file 'unix) + (lambda (_) + (open-unix-domain-socket (uri-path uri)))) + ('guix + (lambda (_) + (unless (uri-port uri) + (raise (condition (&nix-connection-error + (file (uri->string uri)) + (errno EBADR))))) ;bah! + + (open-inet-socket (uri-host uri) (uri-port uri)))) + ((? symbol? scheme) + ;; Try to dynamically load a module for SCHEME. + ;; XXX: Errors are swallowed. + (match (false-if-exception + (resolve-interface `(guix store ,scheme))) + ((? module? module) + (match (false-if-exception + (module-ref module 'connect-to-daemon)) + ((? procedure? connect) + (lambda (_) + (connect uri))) + (x (not-supported)))) + (#f (not-supported)))) + (x + (not-supported)))))) + + (connect uri)) + +(define* (open-connection #:optional (uri (%daemon-socket-uri)) #:key port (reserve-space? #t) cpu-affinity) - "Connect to the daemon over the Unix-domain socket at FILE, or, if PORT is -not #f, use it as the I/O port over which to communicate to a build daemon. + "Connect to the daemon at URI (a string), or, if PORT is not #f, use it as +the I/O port over which to communicate to a build daemon. 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, @@ -383,10 +478,10 @@ for this connection will be pinned. Return a server object." ;; One of the 'write-' or 'read-' calls below failed, but this is ;; really a connection error. (raise (condition - (&nix-connection-error (file (or port file)) + (&nix-connection-error (file (or port uri)) (errno EPROTO)) (&message (message "build daemon handshake failed")))))) - (let ((port (or port (open-unix-domain-socket file)))) + (let ((port (or port (connect-to-daemon uri)))) (write-int %worker-magic-1 port) (let ((r (read-int port))) (and (eqv? r %worker-magic-2) @@ -495,9 +590,7 @@ encoding conversion errors." (let* ((max-len (read-int p)) (data (make-bytevector max-len)) (len (get-bytevector-n! user-port data 0 max-len))) - (write-int len p) - (put-bytevector p data 0 len) - (write-padding len p) + (write-bytevector data p) #f)) ((= k %stderr-next) ;; Log a string. Build logs are usually UTF-8-encoded, but they @@ -1155,6 +1248,10 @@ be used internally by the daemon's build hook." (define-alias store-return state-return) (define-alias store-bind state-bind) +;; Instantiate templates for %STORE-MONAD since it's syntactically different +;; from %STATE-MONAD. +(template-directory instantiations %store-monad) + (define (preserve-documentation original proc) "Return PROC with documentation taken from ORIGINAL." (set-object-property! proc 'documentation @@ -1261,6 +1358,57 @@ connection, and return the result." ;; Absolute path to the Nix store. (make-parameter %store-directory)) +(define (compressed-hash bv size) ; `compressHash' + "Given the hash stored in BV, return a compressed version thereof that fits +in SIZE bytes." + (define new (make-bytevector size 0)) + (define old-size (bytevector-length bv)) + (let loop ((i 0)) + (if (= i old-size) + new + (let* ((j (modulo i size)) + (o (bytevector-u8-ref new j))) + (bytevector-u8-set! new j + (logxor o (bytevector-u8-ref bv i))) + (loop (+ 1 i)))))) + +(define (store-path type hash name) ; makeStorePath + "Return the store path for NAME/HASH/TYPE." + (let* ((s (string-append type ":sha256:" + (bytevector->base16-string hash) ":" + (%store-prefix) ":" name)) + (h (sha256 (string->utf8 s))) + (c (compressed-hash h 20))) + (string-append (%store-prefix) "/" + (bytevector->nix-base32-string c) "-" + name))) + +(define (output-path output hash name) ; makeOutputPath + "Return an output path for OUTPUT (the name of the output as a string) of +the derivation called NAME with hash HASH." + (store-path (string-append "output:" output) hash + (if (string=? output "out") + name + (string-append name "-" output)))) + +(define* (fixed-output-path name hash + #:key + (output "out") + (hash-algo 'sha256) + (recursive? #t)) + "Return an output path for the fixed output OUTPUT defined by HASH of type +HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for +'add-to-store'." + (if (and recursive? (eq? hash-algo 'sha256)) + (store-path "source" hash name) + (let ((tag (string-append "fixed:" output ":" + (if recursive? "r:" "") + (symbol->string hash-algo) ":" + (bytevector->base16-string hash) ":"))) + (store-path (string-append "output:" output) + (sha256 (string->utf8 tag)) + name)))) + (define (store-path? path) "Return #t if PATH is a store path." ;; This is a lightweight check, compared to using a regexp, but this has to @@ -1330,3 +1478,7 @@ must be an absolute store file name, or a derivation file name." ;; Return the first that works. (any (cut log-file store <>) derivers)) (_ #f))))) + +;;; Local Variables: +;;; eval: (put 'system-error-to-connection-error 'scheme-indent-function 1) +;;; End: diff --git a/guix/store/ssh.scm b/guix/store/ssh.scm new file mode 100644 index 0000000000..09c0832505 --- /dev/null +++ b/guix/store/ssh.scm @@ -0,0 +1,39 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix store ssh) + #:use-module (guix ssh) + #:use-module (web uri) + #:export (connect-to-daemon)) + +;;; Commentary: +;;; +;;; This modules provides the entry point for 'open-connection' in (guix +;;; store). Passing an 'ssh://' URI to 'open-connection' triggers the use of +;;; the code in this module. +;;; +;;; End: + +(define (connect-to-daemon uri) + "Connect to the SSH daemon at URI, a URI object with the 'ssh' scheme." + (remote-daemon-channel + (open-ssh-session (uri-host uri) + #:port (or (uri-port uri) 22) + #:user (uri-userinfo uri)))) + +;;; ssh.scm ends here diff --git a/guix/tests.scm b/guix/tests.scm index 5110075e7d..34e3e0fc2a 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -56,13 +56,13 @@ (or (and=> (getenv "GUIX_BINARY_SUBSTITUTE_URL") list) '()))) -(define* (open-connection-for-tests #:optional (file (%daemon-socket-file))) +(define* (open-connection-for-tests #:optional (uri (%daemon-socket-uri))) "Open a connection to the build daemon for tests purposes and return it." (guard (c ((nix-error? c) (format (current-error-port) "warning: build daemon error: ~s~%" c) #f)) - (let ((store (open-connection file))) + (let ((store (open-connection uri))) ;; Make sure we build everything by ourselves. (set-build-options store #:use-substitutes? #f diff --git a/guix/ui.scm b/guix/ui.scm index 345bf490b2..9e0fa26d19 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -26,6 +26,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (guix ui) + #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix store) #:use-module (guix config) @@ -54,7 +55,7 @@ #:use-module (texinfo) #:use-module (texinfo plain-text) #:use-module (texinfo string-utils) - #:export (_ + #:export (G_ N_ P_ report-error @@ -116,7 +117,7 @@ ;; Text domain for package synopses and descriptions. "guix-packages") -(define _ (cut gettext <> %gettext-domain)) +(define G_ (cut gettext <> %gettext-domain)) (define N_ (cut ngettext <> <> <> %gettext-domain)) (define (P_ msgid) @@ -139,7 +140,7 @@ messages." (syntax-case x () ((name (underscore fmt) args (... ...)) (and (string? (syntax->datum #'fmt)) - (free-identifier=? #'underscore #'_)) + (free-identifier=? #'underscore #'G_)) (with-syntax ((fmt* (augmented-format-string #'fmt)) (prefix (datum->syntax x prefix))) #'(format (guix-warning-port) (gettext fmt*) @@ -237,7 +238,7 @@ messages." (case on-error ((debug) (newline) - (display (_ "entering debugger; type ',bt' for a backtrace\n")) + (display (G_ "entering debugger; type ',bt' for a backtrace\n")) (start-repl #:debug (make-debug (stack->vector stack) 0 (error-string frame args) #f))) @@ -253,15 +254,19 @@ ARGS is the list of arguments received by the 'throw' handler." (match args (('system-error . rest) (let ((err (system-error-errno args))) - (report-error (_ "failed to load '~a': ~a~%") file (strerror err)))) + (report-error (G_ "failed to load '~a': ~a~%") file (strerror err)))) (('syntax-error proc message properties form . rest) (let ((loc (source-properties->location properties))) - (format (current-error-port) (_ "~a: error: ~a~%") + (format (current-error-port) (G_ "~a: error: ~a~%") (location->string loc) message))) (('srfi-34 obj) - (report-error (_ "exception thrown: ~s~%") obj)) + (if (message-condition? obj) + (report-error (G_ "~a~%") + (gettext (condition-message obj) + %gettext-domain)) + (report-error (G_ "exception thrown: ~s~%") obj))) ((error args ...) - (report-error (_ "failed to load '~a':~%") file) + (report-error (G_ "failed to load '~a':~%") file) (apply display-error frame (current-error-port) args)))) (define (warn-about-load-error file args) ;FIXME: factorize with ↑ @@ -270,16 +275,20 @@ exiting. ARGS is the list of arguments received by the 'throw' handler." (match args (('system-error . rest) (let ((err (system-error-errno args))) - (warning (_ "failed to load '~a': ~a~%") file (strerror err)))) + (warning (G_ "failed to load '~a': ~a~%") file (strerror err)))) (('syntax-error proc message properties form . rest) (let ((loc (source-properties->location properties))) - (format (current-error-port) (_ "~a: warning: ~a~%") + (format (current-error-port) (G_ "~a: warning: ~a~%") (location->string loc) message))) (('srfi-34 obj) - (warning (_ "failed to load '~a': exception thrown: ~s~%") - file obj)) + (if (message-condition? obj) + (warning (G_ "failed to load '~a': ~a~%") + file + (gettext (condition-message obj) %gettext-domain)) + (warning (G_ "failed to load '~a': exception thrown: ~s~%") + file obj))) ((error args ...) - (warning (_ "failed to load '~a':~%") file) + (warning (G_ "failed to load '~a':~%") file) (apply display-error #f (current-error-port) args)))) (define (install-locale) @@ -288,11 +297,18 @@ exiting. ARGS is the list of arguments received by the 'throw' handler." (lambda _ (setlocale LC_ALL "")) (lambda args - (warning (_ "failed to install locale: ~a~%") + (warning (G_ "failed to install locale: ~a~%") (strerror (system-error-errno args)))))) (define (initialize-guix) "Perform the usual initialization for stand-alone Guix commands." + ;; By default don't annoy users with deprecation warnings. In practice, + ;; 'define-deprecated' in (ice-9 deprecated) arranges so that those warnings + ;; are emitted at expansion-time only, but there are cases where they could + ;; slip through, for instance when interpreting code. + (unless (getenv "GUILE_WARN_DEPRECATED") + (debug-disable 'warn-deprecated)) + (install-locale) (textdomain %gettext-domain) @@ -311,9 +327,9 @@ exiting. ARGS is the list of arguments received by the 'throw' handler." ;; TRANSLATORS: Translate "(C)" to the copyright symbol ;; (C-in-a-circle), if this symbol is available in the user's ;; locale. Otherwise, do not translate "(C)"; leave it as-is. */ - (_ "(C)") - (_ "the Guix authors\n")) - (display (_"\ + (G_ "(C)") + (G_ "the Guix authors\n")) + (display (G_"\ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. @@ -325,11 +341,11 @@ There is NO WARRANTY, to the extent permitted by law. ;; package. Please add another line saying "Report translation bugs to ;; ...\n" with the address for translation bugs (typically your translation ;; team's web or email address). - (format #t (_ " + (format #t (G_ " Report bugs to: ~a.") %guix-bug-report-address) - (format #t (_ " + (format #t (G_ " ~a home page: <~a>") %guix-package-name %guix-home-page-url) - (display (_ " + (display (G_ " General help using GNU software: <http://www.gnu.org/gethelp/>")) (newline)) @@ -374,13 +390,13 @@ nicely." (lambda () (apply make-regexp regexp flags)) (lambda (key proc message . rest) - (leave (_ "'~a' is not a valid regular expression: ~a~%") + (leave (G_ "'~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) - (leave (_ "~a: invalid number~%") str))) + (leave (G_ "~a: invalid number~%") str))) (define (size->number str) "Convert STR, a storage measurement representation such as \"1024\" or @@ -397,7 +413,7 @@ interpreted." str)) (num (string->number numstr))) (unless num - (leave (_ "invalid number: ~a~%") numstr)) + (leave (G_ "invalid number: ~a~%") numstr)) ((compose inexact->exact round) (* num @@ -420,7 +436,7 @@ interpreted." ("YB" (expt 10 24)) ("" 1) (x - (leave (_ "unknown unit: ~a~%") unit))))))) + (leave (G_ "unknown unit: ~a~%") unit))))))) (define (call-with-error-handling thunk) "Call THUNK within a user-friendly error handler." @@ -437,58 +453,62 @@ interpreted." (file (location-file location)) (line (location-line location)) (column (location-column location))) - (leave (_ "~a:~a:~a: package `~a' has an invalid input: ~s~%") + (leave (G_ "~a:~a:~a: package `~a' has an invalid input: ~s~%") file line column (package-full-name package) input))) ((package-cross-build-system-error? c) (let* ((package (package-error-package c)) (loc (package-location package)) (system (package-build-system package))) - (leave (_ "~a: ~a: build system `~a' does not support cross builds~%") + (leave (G_ "~a: ~a: build system `~a' does not support cross builds~%") (location->string loc) (package-full-name package) (build-system-name system)))) + ((gexp-input-error? c) + (let ((input (package-error-invalid-input c))) + (leave (G_ "~s: invalid G-expression input~%") + (gexp-error-invalid-input c)))) ((profile-not-found-error? c) - (leave (_ "profile '~a' does not exist~%") + (leave (G_ "profile '~a' does not exist~%") (profile-error-profile c))) ((missing-generation-error? c) - (leave (_ "generation ~a of profile '~a' does not exist~%") + (leave (G_ "generation ~a of profile '~a' does not exist~%") (missing-generation-error-generation c) (profile-error-profile c))) ((nar-error? c) (let ((file (nar-error-file c)) (port (nar-error-port c))) (if file - (leave (_ "corrupt input while restoring '~a' from ~s~%") + (leave (G_ "corrupt input while restoring '~a' from ~s~%") file (or (port-filename* port) port)) - (leave (_ "corrupt input while restoring archive from ~s~%") + (leave (G_ "corrupt input while restoring archive from ~s~%") (or (port-filename* port) port))))) ((nix-connection-error? c) - (leave (_ "failed to connect to `~a': ~a~%") + (leave (G_ "failed to connect to `~a': ~a~%") (nix-connection-error-file c) (strerror (nix-connection-error-code c)))) ((nix-protocol-error? c) ;; FIXME: Server-provided error messages aren't i18n'd. - (leave (_ "build failed: ~a~%") + (leave (G_ "build failed: ~a~%") (nix-protocol-error-message c))) ((derivation-missing-output-error? c) - (leave (_ "reference to invalid output '~a' of derivation '~a'~%") + (leave (G_ "reference to invalid output '~a' of derivation '~a'~%") (derivation-missing-output c) (derivation-file-name (derivation-error-derivation c)))) ((file-search-error? c) - (leave (_ "file '~a' could not be found in these \ + (leave (G_ "file '~a' could not be found in these \ directories:~{ ~a~}~%") (file-search-error-file-name c) (file-search-error-search-path c))) ((message-condition? c) ;; Normally '&message' error conditions have an i18n'd message. - (leave (_ "~a~%") + (leave (G_ "~a~%") (gettext (condition-message c) %gettext-domain)))) ;; Catch EPIPE and the likes. (catch 'system-error thunk (lambda (key proc format-string format-args . rest) - (leave (_ "~a: ~a~%") proc + (leave (G_ "~a: ~a~%") proc (apply format #f format-string format-args)))))) (define-syntax-rule (leave-on-EPIPE exp ...) @@ -523,18 +543,22 @@ similar." (lambda () (call-with-input-string str read)) (lambda args - (leave (_ "failed to read expression ~s: ~s~%") + (leave (G_ "failed to read expression ~s: ~s~%") str args))))) (catch #t (lambda () (eval exp (force %guix-user-module))) (lambda args - (report-error (_ "failed to evaluate expression '~a':~%") exp) + (report-error (G_ "failed to evaluate expression '~a':~%") exp) (match args (('syntax-error proc message properties form . rest) - (report-error (_ "syntax error: ~a~%") message)) + (report-error (G_ "syntax error: ~a~%") message)) (('srfi-34 obj) - (report-error (_ "exception thrown: ~s~%") obj)) + (if (message-condition? obj) + (report-error (G_ "~a~%") + (gettext (condition-message obj) + %gettext-domain)) + (report-error (G_ "exception thrown: ~s~%") obj))) ((error args ...) (apply display-error #f (current-error-port) args)) (what? #f)) @@ -546,7 +570,7 @@ error." (match (read/eval str) ((? package? p) p) (x - (leave (_ "expression ~s does not evaluate to a package~%") + (leave (G_ "expression ~s does not evaluate to a package~%") str)))) (define (show-derivation-outputs derivation) @@ -754,13 +778,13 @@ replacement if PORT is not Unicode-capable." (define (location->string loc) "Return a human-friendly, GNU-standard representation of LOC." (match loc - (#f (_ "<unknown location>")) + (#f (G_ "<unknown location>")) (($ <location> file line column) (format #f "~a:~a:~a" file line column)))) -(define (config-directory) +(define* (config-directory #:key (ensure? #t)) "Return the name of the configuration directory, after making sure that it -exists. Honor the XDG specs, +exists if ENSURE? is true. Honor the XDG specs, <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>." (let ((dir (and=> (or (getenv "XDG_CONFIG_HOME") (and=> (getenv "HOME") @@ -768,12 +792,13 @@ exists. Honor the XDG specs, (cut string-append <> "/guix")))) (catch 'system-error (lambda () - (mkdir-p dir) + (when ensure? + (mkdir-p dir)) dir) (lambda args (let ((err (system-error-errno args))) ;; ERR is necessarily different from EEXIST. - (leave (_ "failed to create configuration directory `~a': ~a~%") + (leave (G_ "failed to create configuration directory `~a': ~a~%") dir (strerror err))))))) (define* (fill-paragraph str width #:optional (column 0)) @@ -904,7 +929,7 @@ WIDTH columns." (dependencies->recutils (filter package? inputs))))) (format port "location: ~a~%" (or (and=> (package-location p) location->string) - (_ "unknown"))) + (G_ "unknown"))) ;; Note: Starting from version 1.6 or recutils, hyphens are not allowed in ;; field identifiers. @@ -918,7 +943,7 @@ WIDTH columns." ((? license? license) (license-name license)) (x - (_ "unknown")))) + (G_ "unknown")))) (format port "synopsis: ~a~%" (string-map (match-lambda (#\newline #\space) @@ -991,6 +1016,7 @@ following patterns: \"1d\", \"1w\", \"1m\"." (make-time time-duration 0 (string->number (match:substring match 1))))) ((string-match "^([0-9]+)h$" str) + => (lambda (match) (hours->duration 1 match))) ((string-match "^([0-9]+)d$" str) @@ -1076,7 +1102,7 @@ DURATION-RELATION with the current time." (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 + (let ((header (format #f (G_ "Generation ~a\t~a") number (date->string (time-utc->date (generation-time profile number)) @@ -1086,7 +1112,7 @@ DURATION-RELATION with the current time." ;; TRANSLATORS: The word "current" here is an adjective for ;; "Generation", as in "current generation". Use the appropriate ;; gender where applicable. - (format #t (_ "~a\t(current)~%") header) + (format #t (G_ "~a\t(current)~%") header) (format #t "~a~%" header))))) (define (display-profile-content-diff profile gen1 gen2) @@ -1129,7 +1155,7 @@ way." (profile-manifest (generation-file-name profile number)))))) (define (display-generation-change previous current) - (format #t (_ "switched from generation ~a to ~a~%") previous current)) + (format #t (G_ "switched from generation ~a to ~a~%") previous current)) (define (roll-back* store profile) "Like 'roll-back', but display what is happening." @@ -1145,7 +1171,7 @@ way." (define (delete-generation* store profile generation) "Like 'delete-generation', but display what is going on." - (format #t (_ "deleting ~a~%") + (format #t (G_ "deleting ~a~%") (generation-file-name profile generation)) (delete-generation store profile generation)) @@ -1176,7 +1202,7 @@ optionally contain a version number and an output name, as in these examples: (define (show-guix-usage) (format (current-error-port) - (_ "Try `guix --help' for more information.~%")) + (G_ "Try `guix --help' for more information.~%")) (exit 1)) (define (command-files) @@ -1204,10 +1230,10 @@ optionally contain a version number and an output name, as in these examples: (member command '("substitute" "authenticate" "offload" "perform-download"))) - (format #t (_ "Usage: guix COMMAND ARGS... + (format #t (G_ "Usage: guix COMMAND ARGS... Run COMMAND with ARGS.\n")) (newline) - (format #t (_ "COMMAND must be one of the sub-commands listed below:\n")) + (format #t (G_ "COMMAND must be one of the sub-commands listed below:\n")) (newline) ;; TODO: Display a synopsis of each command. (format #t "~{ ~a~%~}" (sort (remove internal? (commands)) @@ -1227,7 +1253,7 @@ found." (resolve-interface `(guix scripts ,command))) (lambda - (format (current-error-port) - (_ "guix: ~a: command not found~%") command) + (G_ "guix: ~a: command not found~%") command) (show-guix-usage)))) (let ((command-main (module-ref module @@ -1246,7 +1272,7 @@ and signal handling has already been set up." (match args (() (format (current-error-port) - (_ "guix: missing command name~%")) + (G_ "guix: missing command name~%")) (show-guix-usage)) ((or ("-h") ("--help")) (show-guix-help)) @@ -1254,7 +1280,7 @@ and signal handling has already been set up." (show-version-and-exit "guix")) (((? option? o) args ...) (format (current-error-port) - (_ "guix: unrecognized option '~a'~%") o) + (G_ "guix: unrecognized option '~a'~%") o) (show-guix-usage)) (("help" command) (apply run-guix-command (string->symbol command) diff --git a/guix/upstream.scm b/guix/upstream.scm index a47a52be3f..5083e6b805 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -209,9 +209,9 @@ values: 'interactive' (default), 'always', and 'never'." (if ret tarball (begin - (warning (_ "signature verification failed for `~a'~%") + (warning (G_ "signature verification failed for `~a'~%") url) - (warning (_ "(could be because the public key is not in your keyring)~%")) + (warning (G_ "(could be because the public key is not in your keyring)~%")) #f)))))) (define (find2 pred lst1 lst2) @@ -290,12 +290,12 @@ if an update was made, and #f otherwise." old-version version old-hash hash)) version) (begin - (warning (_ "~a: could not locate source file") + (warning (G_ "~a: could not locate source file") (location-file loc)) #f))) (begin (format (current-error-port) - (_ "~a: ~a: no `version' field in source; skipping~%") + (G_ "~a: ~a: no `version' field in source; skipping~%") (location->string (package-location package)) name))))) diff --git a/guix/utils.scm b/guix/utils.scm index fb962df8ba..9bf1cc893f 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -155,7 +155,7 @@ a symbol such as 'xz." (match compression ((or #f 'none) (values input '())) ('bzip2 (filtered-port `(,%bzip2 "-dc") input)) - ('xz (filtered-port `(,%xz "-dc -T0") input)) + ('xz (filtered-port `(,%xz "-dc" "-T0") input)) ('gzip (filtered-port `(,%gzip "-dc") input)) (else (error "unsupported compression scheme" compression)))) @@ -165,7 +165,7 @@ a symbol such as 'xz." (match compression ((or #f 'none) (values input '())) ('bzip2 (filtered-port `(,%bzip2 "-c") input)) - ('xz (filtered-port `(,%xz "-c -T0") input)) + ('xz (filtered-port `(,%xz "-c" "-T0") input)) ('gzip (filtered-port `(,%gzip "-c") input)) (else (error "unsupported compression scheme" compression)))) @@ -222,7 +222,7 @@ program--e.g., '(\"--fast\")." (match compression ((or #f 'none) (values output '())) ('bzip2 (filtered-output-port `(,%bzip2 "-c" ,@options) output)) - ('xz (filtered-output-port `(,%xz "-c -T0" ,@options) output)) + ('xz (filtered-output-port `(,%xz "-c" "-T0" ,@options) output)) ('gzip (filtered-output-port `(,%gzip "-c" ,@options) output)) (else (error "unsupported compression scheme" compression)))) @@ -512,7 +512,7 @@ minor version numbers from version-string." (define (compressed-file? file) "Return true if FILE denotes a compressed file." (->bool (member (file-extension file) - '("gz" "bz2" "xz" "lz" "tgz" "tbz2" "zip")))) + '("gz" "bz2" "xz" "lz" "lzma" "tgz" "tbz2" "zip")))) (define (switch-symlinks link target) "Atomically switch LINK, a symbolic link, to point to TARGET. Works diff --git a/guix/workers.scm b/guix/workers.scm new file mode 100644 index 0000000000..e3452d249a --- /dev/null +++ b/guix/workers.scm @@ -0,0 +1,123 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix workers) + #:use-module (ice-9 threads) + #:use-module (ice-9 match) + #:use-module (ice-9 q) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-26) + #:export (pool? + make-pool + pool-enqueue! + pool-idle? + eventually)) + +;;; Commentary: +;;; +;;; This module implements "worker pools". Worker pools are the low-level +;;; mechanism that's behind futures: there's a fixed set of threads +;;; ("workers") that one can submit work to, and one of them will eventually +;;; pick the submitted tasks. +;;; +;;; Unlike futures, these worker pools are meant to be used for tasks that +;;; have a side-effect. Thus, we never "touch" a task that was submitted like +;;; we "touch" a future. Instead, we simply assume that the task will +;;; eventually complete. +;;; +;;; Code: + +(define-record-type <pool> + (%make-pool queue mutex condvar workers) + pool? + (queue pool-queue) + (mutex pool-mutex) + (condvar pool-condition-variable) + (workers pool-workers)) + +(define-syntax-rule (without-mutex mutex exp ...) + (dynamic-wind + (lambda () + (unlock-mutex mutex)) + (lambda () + exp ...) + (lambda () + (lock-mutex mutex)))) + +(define (worker-thunk mutex condvar pop-queue) + "Return the thunk executed by worker threads." + (define (loop) + (match (pop-queue) + (#f ;empty queue + (wait-condition-variable condvar mutex)) + ((? procedure? proc) + ;; Release MUTEX while executing PROC. + (without-mutex mutex + (catch #t proc + (lambda (key . args) + ;; XXX: In Guile 2.0 ports are not thread-safe, so this could + ;; crash (Guile 2.2 is fine). + (display-backtrace (make-stack #t) (current-error-port)) + (print-exception (current-error-port) + (stack-ref (make-stack #t) 0) + key args)))))) + (loop)) + + (lambda () + (with-mutex mutex + (loop)))) + +(define* (make-pool #:optional (count (current-processor-count))) + "Return a pool of COUNT workers." + (let* ((mutex (make-mutex)) + (condvar (make-condition-variable)) + (queue (make-q)) + (procs (unfold (cut >= <> count) + (lambda (n) + (worker-thunk mutex condvar + (lambda () + (and (not (q-empty? queue)) + (q-pop! queue))))) + 1+ + 0)) + (threads (map (lambda (proc) + (call-with-new-thread proc)) + procs))) + (%make-pool queue mutex condvar threads))) + +(define (pool-enqueue! pool thunk) + "Enqueue THUNK for future execution by POOL." + (with-mutex (pool-mutex pool) + (enq! (pool-queue pool) thunk) + (signal-condition-variable (pool-condition-variable pool)))) + +(define (pool-idle? pool) + "Return true if POOL doesn't have any task in its queue." + (with-mutex (pool-mutex pool) + (q-empty? (pool-queue pool)))) + +(define-syntax-rule (eventually pool exp ...) + "Run EXP eventually on one of the workers of POOL." + (pool-enqueue! pool (lambda () exp ...))) + +;;; Local Variables: +;;; eval: (put 'without-mutex 'scheme-indent-function 1) +;;; End: + +;;; workers.scm ends here diff --git a/po/guix/Makevars b/po/guix/Makevars index 8ec7d8aed6..adbc8e246c 100644 --- a/po/guix/Makevars +++ b/po/guix/Makevars @@ -10,7 +10,7 @@ top_builddir = ../.. # we use 'n_' instead of the more usual 'N_' for no-ops. XGETTEXT_OPTIONS = \ --from-code=UTF-8 \ - --keyword=_ --keyword=N_:1,2 \ + --keyword=G_ --keyword=N_:1,2 \ --keyword=message \ --keyword=description \ --keyword=n_ @@ -20,3 +20,8 @@ COPYRIGHT_HOLDER = Ludovic Courtès MSGID_BUGS_ADDRESS = ludo@gnu.org EXTRA_LOCALE_CATEGORIES = + +# Disable PO update upon "make dist", which sometimes fails when doing +# "make distcheck -j4". +# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>. +DIST_DEPENDS_ON_UPDATE_PO = no diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index bc78c3e303..6ec3e8d405 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -7,6 +7,7 @@ gnu/services/shepherd.scm gnu/system/shadow.scm guix/scripts.scm guix/scripts/build.scm +guix/discovery.scm guix/scripts/download.scm guix/scripts/package.scm guix/scripts/gc.scm diff --git a/po/guix/da.po b/po/guix/da.po index cf42db8658..b55db1731f 100644 --- a/po/guix/da.po +++ b/po/guix/da.po @@ -1,22 +1,23 @@ # Danish translation guix. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. -# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016. +# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016, 2017. # # build -> kompilering # derivation -> derivat # emit -> opret # garbage -> affald (spild, bedre forslag?) # in a row -> i træk +# item -> element # specify -> angiv # unloading -> afslutter # msgid "" msgstr "" -"Project-Id-Version: guix 0.12.0\n" +"Project-Id-Version: guix 0.13.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2016-12-18 15:32+0100\n" -"PO-Revision-Date: 2016-12-18 19:31+01:00\n" +"POT-Creation-Date: 2017-05-10 23:29+0200\n" +"PO-Revision-Date: 2017-05-21 19:31+01:00\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language: da\n" @@ -26,140 +27,146 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gnu/packages.scm:79 +#: gnu/packages.scm:90 #, scheme-format msgid "~a: patch not found" msgstr "~a: rettelse blev ikke fundet" -#: gnu/packages.scm:95 +#: gnu/packages.scm:106 #, 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:147 -#, scheme-format -msgid "cannot access `~a': ~a~%" -msgstr "kan ikke tilgå »~a«: ~a~%" - -#: gnu/packages.scm:301 +#: gnu/packages.scm:236 #, scheme-format msgid "ambiguous package specification `~a'~%" msgstr "tvetydig pakkespecifikation »~a«~%" -#: gnu/packages.scm:302 +#: gnu/packages.scm:237 #, scheme-format -msgid "choosing ~a from ~a~%" -msgstr "vælger ~a fra ~a~%" +msgid "choosing ~a@~a from ~a~%" +msgstr "vælger ~a@~a fra ~a~%" -#: gnu/packages.scm:306 -#, scheme-format -msgid "deprecated NAME-VERSION syntax; use NAME@VERSION instead~%" -msgstr "forældet NAVN-VERSION-syntaks; brug NAVN@VERSION i stedet for~%" - -#: gnu/packages.scm:311 guix/scripts/package.scm:272 +#: gnu/packages.scm:242 guix/scripts/package.scm:272 #, scheme-format msgid "package '~a' has been superseded by '~a'~%" msgstr "pakken »~a« er blevet efterfulgt af »~a«~%" -#: gnu/packages.scm:318 +#: gnu/packages.scm:249 #, scheme-format msgid "~A: package not found for version ~a~%" msgstr "~A: pakke ikke fundet for version ~a~%" -#: gnu/packages.scm:328 +#: gnu/packages.scm:250 #, scheme-format msgid "~A: unknown package~%" msgstr "~A: ukendt pakke~%" -#: gnu/packages.scm:356 +#: gnu/packages.scm:278 #, scheme-format msgid "package `~a' lacks output `~a'~%" msgstr "pakke »~a« mangler uddata »~a«~%" -#: gnu/services.scm:542 +#: gnu/services.scm:186 +#, scheme-format +msgid "~a: no value specified for service of type '~a'" +msgstr "~a: ingen værdi angivet for tjenestetypen »~a«" + +#: gnu/services.scm:627 #, scheme-format msgid "no target of type '~a' for service ~s" msgstr "intet mål af typen »~a« for tjeneste ~s" -#: gnu/services.scm:553 gnu/services.scm:614 +#: gnu/services.scm:638 gnu/services.scm:699 #, scheme-format msgid "more than one target service of type '~a'" msgstr "mere end en måltjeneste af typen »~a«" -#: gnu/services.scm:604 +#: gnu/services.scm:689 #, scheme-format msgid "service of type '~a' not found" msgstr "tjenste af typen »~a« blev ikke fundet" -#: gnu/system.scm:522 +#: gnu/system.scm:270 +#, scheme-format +msgid "unrecognized boot parameters for '~a'~%" +msgstr "ikke genkendte opstartsparametre for »~a«~%" + +#: gnu/system.scm:633 #, 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:538 +#: gnu/system.scm:649 #, 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:680 +#: gnu/system.scm:791 #, scheme-format msgid "~a: invalid locale name" msgstr "~a: ugyldigt navn for regionsindstillinger" -#: gnu/system.scm:860 -msgid "/" -msgstr "/" - -#: gnu/system.scm:862 -#, scheme-format -msgid "unrecognized boot parameters for '~a'~%" -msgstr "ikke genkendte opstartsparametre for »~a«~%" - -#: gnu/services/shepherd.scm:165 +#: gnu/services/shepherd.scm:166 #, scheme-format msgid "service '~a' provided more than once" msgstr "tjenesten »~a« tilbudt mere end en gang" -#: gnu/services/shepherd.scm:180 +#: gnu/services/shepherd.scm:181 #, scheme-format msgid "service '~a' requires '~a', which is not provided by any service" msgstr "tjenesten »~a« kræver »~a«, som ikke tilbydes af nogen tjeneste" -#: gnu/system/shadow.scm:220 +#: gnu/system/shadow.scm:223 #, scheme-format msgid "supplementary group '~a' of user '~a' is undeclared" msgstr "supplerende gruppe »~a« for bruger »~a« er ikke erklæret" -#: gnu/system/shadow.scm:230 +#: gnu/system/shadow.scm:233 #, scheme-format msgid "primary group '~a' of user '~a' is undeclared" msgstr "primær gruppe »~a« for brugeren »~a« er ikke erklæret" -#: guix/scripts.scm:53 +#: guix/scripts.scm:56 #, scheme-format msgid "invalid argument: ~a~%" msgstr "ugyldigt argument: ~a~%" -#: guix/scripts.scm:79 guix/scripts/download.scm:133 guix/scripts/gc.scm:164 +#: guix/scripts.scm:82 guix/scripts/download.scm:133 guix/scripts/gc.scm:164 #: guix/scripts/import/cran.scm:82 guix/scripts/import/elpa.scm:77 -#: guix/scripts/pull.scm:219 guix/scripts/lint.scm:1042 -#: guix/scripts/publish.scm:556 guix/scripts/edit.scm:81 -#: guix/scripts/graph.scm:436 +#: guix/scripts/lint.scm:1061 guix/scripts/publish.scm:811 +#: guix/scripts/edit.scm:81 guix/scripts/graph.scm:456 #, scheme-format msgid "~A: unrecognized option~%" msgstr "~A: ikke genkendt tilvalg~%" -#: guix/scripts/build.scm:121 +#: guix/scripts.scm:174 +#, scheme-format +msgid "Your Guix installation is ~a day old.\n" +msgid_plural "Your Guix installation is ~a days old.\n" +msgstr[0] "Din Guix-installation er ~a dag gammel.\n" +msgstr[1] "Din Guix-installation er ~a dage gammel.\n" + +#: guix/scripts.scm:179 +#, scheme-format +msgid "" +"Consider running 'guix pull' followed by\n" +"'~a' to get up-to-date packages and security updates.\n" +msgstr "" +"Overvej at afvikle »guix pull« efterfulgt af\n" +"»~a« for at få opdaterede pakker og sikkerhedsopdateringer.\n" + +#: guix/scripts/build.scm:124 #, scheme-format msgid "failed to create GC root `~a': ~a~%" msgstr "kunne ikke oprette GC-root »~a«: ~a~%" -#: guix/scripts/build.scm:196 +#: guix/scripts/build.scm:206 #, scheme-format msgid "invalid replacement specification: ~s~%" msgstr "ugyldig erstatningsspecifikation: ~s~%" -#: guix/scripts/build.scm:253 +#: guix/scripts/build.scm:263 msgid "" "\n" " --with-source=SOURCE\n" @@ -169,7 +176,7 @@ msgstr "" " --with-source=KILDE\n" " brug KILDE når den tilsvarende pakke kompileres" -#: guix/scripts/build.scm:256 +#: guix/scripts/build.scm:266 msgid "" "\n" " --with-input=PACKAGE=REPLACEMENT\n" @@ -179,7 +186,7 @@ msgstr "" " --with-input=PAKKE=ERSTATNING\n" " erstat afhængighedsPAKKE med ERSTATNING" -#: guix/scripts/build.scm:259 +#: guix/scripts/build.scm:269 msgid "" "\n" " --with-graft=PACKAGE=REPLACEMENT\n" @@ -189,12 +196,12 @@ msgstr "" " --with-graft=PAKKE=ERSTATNING\n" " pod ERSTATNING på pakker som refererer til PAKKE" -#: guix/scripts/build.scm:284 +#: guix/scripts/build.scm:294 #, scheme-format msgid "transformation '~a' had no effect on ~a~%" msgstr "transformation »~a« havde ingen effekt på ~a~%" -#: guix/scripts/build.scm:302 +#: guix/scripts/build.scm:312 msgid "" "\n" " -L, --load-path=DIR prepend DIR to the package module search path" @@ -202,7 +209,7 @@ msgstr "" "\n" " -L, --load-path=MAPPE foranstil MAPPE til pakkemodulets søgesti" -#: guix/scripts/build.scm:304 +#: guix/scripts/build.scm:314 msgid "" "\n" " -K, --keep-failed keep build tree of failed builds" @@ -210,7 +217,7 @@ msgstr "" "\n" " -K, --keep-failed bevar kompileringstræ for mislykkede kompileringer" -#: guix/scripts/build.scm:306 +#: guix/scripts/build.scm:316 msgid "" "\n" " -k, --keep-going keep going when some of the derivations fail" @@ -218,7 +225,7 @@ msgstr "" "\n" " -k, --keep-going fortsæt når nogle af derivaterne fejler" -#: guix/scripts/build.scm:308 +#: guix/scripts/build.scm:318 msgid "" "\n" " -n, --dry-run do not build the derivations" @@ -226,7 +233,7 @@ msgstr "" "\n" " -n, --dry-run kompiler ikke derivater" -#: guix/scripts/build.scm:310 +#: guix/scripts/build.scm:320 msgid "" "\n" " --fallback fall back to building when the substituter fails" @@ -234,15 +241,16 @@ msgstr "" "\n" " --fallback fald tilbage til kompilering når erstatningen fejler" -#: guix/scripts/build.scm:312 +#: guix/scripts/build.scm:322 msgid "" "\n" " --no-substitutes build instead of resorting to pre-built substitutes" msgstr "" "\n" -" --no-substitutes kompiler i stedet for at bruge prækompilerede substitutter" +" --no-substitutes kompiler i stedet for at bruge prækompilerede\n" +" substitutter" -#: guix/scripts/build.scm:314 guix/scripts/size.scm:220 +#: guix/scripts/build.scm:324 guix/scripts/size.scm:222 msgid "" "\n" " --substitute-urls=URLS\n" @@ -252,7 +260,7 @@ msgstr "" " --substitute-urls=ADRESSER\n" " hent substitut fra ADRESSER hvis de er godkendt" -#: guix/scripts/build.scm:317 +#: guix/scripts/build.scm:327 msgid "" "\n" " --no-grafts do not graft packages" @@ -260,15 +268,16 @@ msgstr "" "\n" " --no-grafts pod ikke pakker" -#: guix/scripts/build.scm:319 +#: guix/scripts/build.scm:329 msgid "" "\n" " --no-build-hook do not attempt to offload builds via the build hook" msgstr "" "\n" -" --no-build-hook forsøg ikke at aflaste kompileringer via kompileringskrogen" +" --no-build-hook forsøg ikke at aflaste kompileringer via\n" +" kompileringskrogen" -#: guix/scripts/build.scm:321 +#: guix/scripts/build.scm:331 msgid "" "\n" " --max-silent-time=SECONDS\n" @@ -276,17 +285,19 @@ msgid "" msgstr "" "\n" " --max-silent-time=SEKUNDER\n" -" marker kompileringen som mislykket efter SEKUNDERs stilhed" +" marker kompileringen som mislykket efter SEKUNDERs\n" +" stilhed" -#: guix/scripts/build.scm:324 +#: guix/scripts/build.scm:334 msgid "" "\n" " --timeout=SECONDS mark the build as failed after SECONDS of activity" msgstr "" "\n" -" --timeout=SEKUNDER marker kompileringen som mislykket efter SEKUNDERs aktivitet" +" --timeout=SEKUNDER marker kompileringen som mislykket efter SEKUNDERs\n" +" aktivitet" -#: guix/scripts/build.scm:326 +#: guix/scripts/build.scm:336 msgid "" "\n" " --verbosity=LEVEL use the given verbosity LEVEL" @@ -294,23 +305,25 @@ msgstr "" "\n" " --verbosity=NIVEAU brug det angivne uddybnings-NIVEAU" -#: guix/scripts/build.scm:328 +#: guix/scripts/build.scm:338 msgid "" "\n" " --rounds=N build N times in a row to detect non-determinism" msgstr "" "\n" -" --rounds=N kompiler N gange i træk for at detektere ikkedeterminisme" +" --rounds=N kompiler N gange i træk for at detektere\n" +" ikkedeterminisme" -#: guix/scripts/build.scm:330 +#: guix/scripts/build.scm:340 msgid "" "\n" " -c, --cores=N allow the use of up to N CPU cores for the build" msgstr "" "\n" -" -c, --cores=N tillad brugen af op til N cpu-kerner til kompileringen" +" -c, --cores=N tillad brugen af op til N cpu-kerner til\n" +" kompileringen" -#: guix/scripts/build.scm:332 +#: guix/scripts/build.scm:342 msgid "" "\n" " -M, --max-jobs=N allow at most N build jobs" @@ -318,12 +331,12 @@ msgstr "" "\n" " -M, --max-jobs=N tillad højst N kompileringsjob" -#: guix/scripts/build.scm:438 guix/scripts/build.scm:445 +#: guix/scripts/build.scm:448 guix/scripts/build.scm:455 #, scheme-format msgid "not a number: '~a' option argument: ~a~%" msgstr "ikke et nummer: »~a« tilvalgsparameter: ~a~%" -#: guix/scripts/build.scm:465 +#: guix/scripts/build.scm:474 msgid "" "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" @@ -331,7 +344,7 @@ msgstr "" "Brug: guix build [TILVALG]... PAKKE-ELLER-DERIVAT...\n" "Kompiler den angivne PAKKE-ELLER-DERIVAT og returner deres uddatastier.\n" -#: guix/scripts/build.scm:467 +#: guix/scripts/build.scm:476 msgid "" "\n" " -e, --expression=EXPR build the package or derivation EXPR evaluates to" @@ -340,17 +353,17 @@ msgstr "" " -e, --expression=UDTRYK\n" " kompiler pakken eller derivatet UDTRYK evaluerer til" -#: guix/scripts/build.scm:469 +#: guix/scripts/build.scm:478 msgid "" "\n" " -f, --file=FILE build the package or derivation that the code within\n" " FILE evaluates to" msgstr "" "\n" -" -f, --file=FIL kompiler pakken eller derivatet som koden i FIL evaluerer\n" -" til" +" -f, --file=FIL kompiler pakken eller derivatet som koden i FIL\n" +" evaluerer til" -#: guix/scripts/build.scm:472 +#: guix/scripts/build.scm:481 msgid "" "\n" " -S, --source build the packages' source derivations" @@ -358,7 +371,7 @@ msgstr "" "\n" " -S, --source kompiler pakkernes kildederivater" -#: guix/scripts/build.scm:474 +#: guix/scripts/build.scm:483 msgid "" "\n" " --sources[=TYPE] build source derivations; TYPE may optionally be one\n" @@ -368,7 +381,7 @@ msgstr "" " --sources[=TYPE] kompileringskildederivater; TYPE kan valgfrit være\n" " »package«, »all« (standard) eller »transitive«" -#: guix/scripts/build.scm:477 +#: guix/scripts/build.scm:486 guix/scripts/pack.scm:330 msgid "" "\n" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" @@ -376,7 +389,7 @@ msgstr "" "\n" " -s, --system=SYSTEM forsøger at kompilere for SYSTEM--f.eks. »i686-linux«" -#: guix/scripts/build.scm:479 +#: guix/scripts/build.scm:488 guix/scripts/pack.scm:332 msgid "" "\n" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" @@ -384,7 +397,7 @@ msgstr "" "\n" " --target=TRIPLET krydskompiler for TRIPLET--f.eks. »armel-linux-gnu«" -#: guix/scripts/build.scm:481 +#: guix/scripts/build.scm:490 msgid "" "\n" " -d, --derivations return the derivation paths of the given packages" @@ -392,15 +405,24 @@ msgstr "" "\n" " -d, --derivations returner de derivate stier for de givne pakker" -#: guix/scripts/build.scm:483 +#: guix/scripts/build.scm:492 msgid "" "\n" " --check rebuild items to check for non-determinism issues" msgstr "" "\n" -" --check kompiler elementer igen for at kontrollere ikkedeterminisme" +" --check kompiler elementer igen for at kontrollere\n" +" ikkedeterminisme" + +#: guix/scripts/build.scm:494 +msgid "" +"\n" +" --repair repair the specified items" +msgstr "" +"\n" +" --repair reparer de specificerede elementer" -#: guix/scripts/build.scm:485 +#: guix/scripts/build.scm:496 msgid "" "\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n" @@ -410,7 +432,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:488 +#: guix/scripts/build.scm:499 msgid "" "\n" " -q, --quiet do not show the build log" @@ -418,7 +440,7 @@ msgstr "" "\n" " -q, --quiet vis ikke kompileringsloggen" -#: guix/scripts/build.scm:490 +#: guix/scripts/build.scm:501 msgid "" "\n" " --log-file return the log file names for the given derivations" @@ -426,14 +448,15 @@ msgstr "" "\n" " --log-file returner logfilnavnen for de givne derivater" -#: guix/scripts/build.scm:497 guix/scripts/download.scm:81 +#: guix/scripts/build.scm:508 guix/scripts/download.scm:81 #: guix/scripts/package.scm:419 guix/scripts/gc.scm:74 -#: guix/scripts/hash.scm:59 guix/scripts/import.scm:91 -#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:83 -#: guix/scripts/substitute.scm:836 guix/scripts/system.scm:748 -#: guix/scripts/lint.scm:991 guix/scripts/publish.scm:74 -#: guix/scripts/edit.scm:44 guix/scripts/size.scm:228 -#: guix/scripts/graph.scm:416 guix/scripts/challenge.scm:182 +#: guix/scripts/hash.scm:59 guix/scripts/import.scm:92 +#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:94 +#: guix/scripts/substitute.scm:810 guix/scripts/system.scm:742 +#: guix/scripts/lint.scm:1010 guix/scripts/publish.scm:93 +#: guix/scripts/edit.scm:44 guix/scripts/size.scm:230 +#: guix/scripts/graph.scm:436 guix/scripts/challenge.scm:227 +#: guix/scripts/copy.scm:121 guix/scripts/pack.scm:341 #: guix/scripts/container.scm:33 guix/scripts/container/exec.scm:43 msgid "" "\n" @@ -442,14 +465,15 @@ msgstr "" "\n" " -h, --help vis denne hjælpetekst og afslut" -#: guix/scripts/build.scm:499 guix/scripts/download.scm:83 +#: guix/scripts/build.scm:510 guix/scripts/download.scm:83 #: guix/scripts/package.scm:421 guix/scripts/gc.scm:76 -#: guix/scripts/hash.scm:61 guix/scripts/import.scm:93 -#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:85 -#: guix/scripts/substitute.scm:838 guix/scripts/system.scm:750 -#: guix/scripts/lint.scm:995 guix/scripts/publish.scm:76 -#: guix/scripts/edit.scm:46 guix/scripts/size.scm:230 -#: guix/scripts/graph.scm:418 guix/scripts/challenge.scm:184 +#: guix/scripts/hash.scm:61 guix/scripts/import.scm:94 +#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:96 +#: guix/scripts/substitute.scm:812 guix/scripts/system.scm:744 +#: guix/scripts/lint.scm:1014 guix/scripts/publish.scm:95 +#: guix/scripts/edit.scm:46 guix/scripts/size.scm:232 +#: guix/scripts/graph.scm:438 guix/scripts/challenge.scm:229 +#: guix/scripts/copy.scm:123 guix/scripts/pack.scm:343 #: guix/scripts/container.scm:35 guix/scripts/container/exec.scm:45 msgid "" "\n" @@ -458,7 +482,7 @@ msgstr "" "\n" " -V, --version vis versioninformation og afslut" -#: guix/scripts/build.scm:526 +#: guix/scripts/build.scm:537 #, scheme-format msgid "" "invalid argument: '~a' option argument: ~a, ~\n" @@ -467,21 +491,26 @@ msgstr "" "ugyldigt argument: »~a« tilvalgsargumentet: ~a, ~\n" "skal være »package«, »all« eller »transitive«~%" -#: guix/scripts/build.scm:573 +#: guix/scripts/build.scm:590 #, scheme-format msgid "~s: not something we can build~%" msgstr "~s: ikke noget vi kan kompilere~%" -#: guix/scripts/build.scm:627 +#: guix/scripts/build.scm:644 #, scheme-format msgid "~a: warning: package '~a' has no source~%" msgstr "~a: advarsel: pakken »~a« har ingen kilde~%" -#: guix/scripts/build.scm:661 +#: guix/scripts/build.scm:678 #, scheme-format msgid "no build log for '~a'~%" msgstr "ingen kompileringslog for »~a«~%" +#: guix/discovery.scm:56 +#, scheme-format +msgid "cannot access `~a': ~a~%" +msgstr "kan ikke tilgå »~a«: ~a~%" + #: guix/scripts/download.scm:67 msgid "" "Usage: guix download [OPTION] URL\n" @@ -529,8 +558,8 @@ msgstr "" msgid "unsupported hash format: ~a~%" msgstr "ikke understøttet hash-format: ~a~%" -#: guix/scripts/download.scm:136 guix/scripts/package.scm:879 -#: guix/scripts/publish.scm:558 +#: guix/scripts/download.scm:136 guix/scripts/package.scm:882 +#: guix/scripts/publish.scm:813 #, scheme-format msgid "~A: extraneous argument~%" msgstr "~A: uvedkommende argument~%" @@ -585,8 +614,8 @@ msgstr "fjerner ikke generation ~a, som er nuværende~%" msgid "no matching generation~%" msgstr "ingen matchende generation~%" -#: guix/scripts/package.scm:188 guix/scripts/package.scm:699 -#: guix/scripts/system.scm:549 +#: guix/scripts/package.scm:188 guix/scripts/package.scm:700 +#: guix/scripts/system.scm:530 #, scheme-format msgid "invalid syntax: ~a~%" msgstr "ugyldig syntaks: ~a~%" @@ -684,7 +713,7 @@ msgid "" " --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP" msgstr "" "\n" -" --do-not--upgrade[=REGUDTRYK] opgrader ikke pakker der matcher REGUDTRYK" +" --do-not-upgrade[=REGUDTRYK] opgrader ikke pakker der matcher REGUDTRYK" #: guix/scripts/package.scm:382 msgid "" @@ -750,7 +779,7 @@ msgstr "" "\n" " --bootstrap brug bootstrap Guile til at kompilere profilen" -#: guix/scripts/package.scm:401 guix/scripts/pull.scm:76 +#: guix/scripts/package.scm:401 guix/scripts/pull.scm:86 msgid "" "\n" " --verbose produce verbose output" @@ -799,17 +828,17 @@ msgstr "" msgid "~a: unsupported kind of search path~%" msgstr "~a: ikke understøttet type af søgesti%" -#: guix/scripts/package.scm:790 +#: guix/scripts/package.scm:791 #, scheme-format msgid "cannot switch to generation '~a'~%" msgstr "kan ikke skifte til generation »~a«~%" -#: guix/scripts/package.scm:806 +#: guix/scripts/package.scm:807 #, scheme-format msgid "would install new manifest from '~a' with ~d entries~%" msgstr "vil installere nyt manifest fra »~a« med ~d poster~%" -#: guix/scripts/package.scm:808 +#: guix/scripts/package.scm:809 #, scheme-format msgid "installing new manifest from '~a' with ~d entries~%" msgstr "installerer nyt manifest fra »~a« med ~d poster~%" @@ -981,18 +1010,18 @@ msgstr "" msgid "unrecognized option: ~a~%" msgstr "tilvalg blev ikke genkendt: ~a~%" -#: guix/scripts/hash.scm:152 guix/ui.scm:478 +#: guix/scripts/hash.scm:155 guix/ui.scm:264 guix/ui.scm:498 guix/ui.scm:551 #, scheme-format msgid "~a~%" msgstr "~a~%" -#: guix/scripts/hash.scm:155 guix/scripts/system.scm:879 +#: guix/scripts/hash.scm:158 guix/scripts/system.scm:879 #: guix/scripts/system.scm:886 guix/scripts/system.scm:893 #, scheme-format msgid "wrong number of arguments~%" msgstr "forkert antal argumenter~%" -#: guix/scripts/import.scm:85 +#: guix/scripts/import.scm:86 msgid "" "Usage: guix import IMPORTER ARGS ...\n" "Run IMPORTER with ARGS.\n" @@ -1000,21 +1029,21 @@ msgstr "" "Brug: guix import IMPORTER ARG ...\n" "Kør IMPORTER med ARG.\n" -#: guix/scripts/import.scm:88 +#: guix/scripts/import.scm:89 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:102 +#: guix/scripts/import.scm:103 #, scheme-format msgid "guix import: missing importer name~%" msgstr "guix import: mangler importørnavn~%" -#: guix/scripts/import.scm:122 +#: guix/scripts/import.scm:123 #, scheme-format msgid "'~a' import failed~%" msgstr "import af »~a« mislykkedes~%" -#: guix/scripts/import.scm:123 +#: guix/scripts/import.scm:124 #, scheme-format msgid "~a: invalid importer~%" msgstr "~a: ugyldigt importprogram~%" @@ -1087,7 +1116,7 @@ msgstr "" msgid "failed to download package '~a'~%" msgstr "kunne ikke hente pakken »~a«:~%" -#: guix/scripts/pull.scm:74 +#: guix/scripts/pull.scm:84 msgid "" "Usage: guix pull [OPTION]...\n" "Download and deploy the latest version of Guix.\n" @@ -1095,7 +1124,7 @@ msgstr "" "Brug: guix pull [TILVALG]...\n" "Hent og udrul den seneste version af Guix.\n" -#: guix/scripts/pull.scm:78 +#: guix/scripts/pull.scm:88 msgid "" "\n" " --url=URL download the Guix tarball from URL" @@ -1103,7 +1132,7 @@ msgstr "" "\n" " --url=URL hent Guix-tarball'en fra ADRESSE" -#: guix/scripts/pull.scm:80 +#: guix/scripts/pull.scm:90 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the new Guix" @@ -1111,163 +1140,158 @@ msgstr "" "\n" " --bootstrap brug bootstrap Guile til at kompilere den nye Guix" -#: guix/scripts/pull.scm:134 +#: guix/scripts/pull.scm:150 msgid "tarball did not produce a single source directory" msgstr "tarball fremstillede ikke en enkel kildemappe" -#: guix/scripts/pull.scm:152 +#: guix/scripts/pull.scm:168 #, scheme-format msgid "unpacking '~a'...~%" msgstr "udpakker »~a«...~%" -#: guix/scripts/pull.scm:161 +#: guix/scripts/pull.scm:177 msgid "failed to unpack source code" msgstr "kunne ikke udpakke kildekode" -#: guix/scripts/pull.scm:204 +#: guix/scripts/pull.scm:220 msgid "Guix already up to date\n" msgstr "Guix er allerede opdateret\n" -#: guix/scripts/pull.scm:209 +#: guix/scripts/pull.scm:225 #, scheme-format msgid "updated ~a successfully deployed under `~a'~%" msgstr "opdaterede ~a der med succes blev udrullet undet »~a«~%" -#: guix/scripts/pull.scm:212 +#: guix/scripts/pull.scm:228 #, scheme-format msgid "failed to update Guix, check the build log~%" msgstr "kunne ikke opdatere Guix; kontroller kompileringsloggen~%" -#: guix/scripts/pull.scm:221 -#, scheme-format -msgid "~A: unexpected argument~%" -msgstr "~A: uventet argument~%" - -#: guix/scripts/pull.scm:230 +#: guix/scripts/pull.scm:255 msgid "failed to download up-to-date source, exiting\n" msgstr "kunne ikke hente opdateret kilde, afslutter\n" -#: guix/scripts/substitute.scm:112 +#: guix/scripts/substitute.scm:114 #, scheme-format msgid "authentication and authorization of substitutes disabled!~%" msgstr "godkendelse og autorisation af substitutter er deaktiveret!~%" -#: guix/scripts/substitute.scm:187 +#: guix/scripts/substitute.scm:189 #, scheme-format msgid "download from '~a' failed: ~a, ~s~%" msgstr "hent fra »~a« mislykkedes: ~a, ~s~%" -#: guix/scripts/substitute.scm:200 +#: guix/scripts/substitute.scm:202 #, scheme-format msgid "while fetching ~a: server is somewhat slow~%" msgstr "under overførsel af ~a: server er noget langsom~%" -#: guix/scripts/substitute.scm:202 +#: guix/scripts/substitute.scm:204 #, scheme-format msgid "try `--no-substitutes' if the problem persists~%" msgstr "prøv »--no-substitutes« hvis problemet fortsætter~%" -#: guix/scripts/substitute.scm:220 +#: guix/scripts/substitute.scm:222 #, scheme-format msgid "unsupported substitute URI scheme: ~a~%" msgstr "ikke understøttet substitut-URI-skema: ~a~%" -#: guix/scripts/substitute.scm:254 +#: guix/scripts/substitute.scm:257 #, scheme-format msgid "while fetching '~a': ~a (~s)~%" msgstr "under overførsel af »~a«: ~a (~s)~%" -#: guix/scripts/substitute.scm:259 +#: guix/scripts/substitute.scm:262 #, scheme-format msgid "ignoring substitute server at '~s'~%" msgstr "ignorerer substitutserver »~s«~%" -#: guix/scripts/substitute.scm:309 +#: guix/scripts/substitute.scm:312 #, scheme-format msgid "signature version must be a number: ~s~%" msgstr "signaturversion skal være et nummer: ~s~%" -#: guix/scripts/substitute.scm:313 +#: guix/scripts/substitute.scm:316 #, scheme-format msgid "unsupported signature version: ~a~%" msgstr "signaturversion er ikke understøttet: ~a~%" -#: guix/scripts/substitute.scm:321 +#: guix/scripts/substitute.scm:324 #, scheme-format msgid "signature is not a valid s-expression: ~s~%" msgstr "signatur er ikke et gyldigt s-udtryk: ~s~%" -#: guix/scripts/substitute.scm:325 +#: guix/scripts/substitute.scm:328 #, scheme-format msgid "invalid format of the signature field: ~a~%" msgstr "ugyldigt format for signaturfeltet: ~a~%" -#: guix/scripts/substitute.scm:360 +#: guix/scripts/substitute.scm:363 #, scheme-format msgid "invalid signature for '~a'~%" msgstr "ugyldig signatur for »~a«~%" -#: guix/scripts/substitute.scm:362 +#: guix/scripts/substitute.scm:365 #, scheme-format msgid "hash mismatch for '~a'~%" msgstr "hash mismatch for »~a«~%" -#: guix/scripts/substitute.scm:364 +#: guix/scripts/substitute.scm:367 #, scheme-format msgid "'~a' is signed with an unauthorized key~%" msgstr "»~a« er underskrevet med en uautoriseret nøgle~%" -#: guix/scripts/substitute.scm:366 +#: guix/scripts/substitute.scm:369 #, scheme-format msgid "signature on '~a' is corrupt~%" msgstr "signatur på »~a« er ødelagt~%" -#: guix/scripts/substitute.scm:404 +#: guix/scripts/substitute.scm:407 #, scheme-format msgid "substitute at '~a' lacks a signature~%" msgstr "substitut på »~a« mangler en signatur~%" -#: guix/scripts/substitute.scm:411 +#: guix/scripts/substitute.scm:414 #, scheme-format msgid "Found valid signature for ~a~%" msgstr "Fandt gyldig signatur for ~a~%" -#: guix/scripts/substitute.scm:414 +#: guix/scripts/substitute.scm:417 #, scheme-format msgid "From ~a~%" msgstr "Fra ~a~%" -#: guix/scripts/substitute.scm:454 +#: guix/scripts/substitute.scm:451 #, scheme-format msgid "'~a' does not name a store item~%" msgstr "»~a« nævner ikke et lagerelement~%" -#: guix/scripts/substitute.scm:600 +#: guix/scripts/substitute.scm:599 #, scheme-format msgid "updating list of substitutes from '~a'... ~5,1f%" msgstr "opdaterer liste af substitutter fra »~a«... ~5,1f%" -#: guix/scripts/substitute.scm:655 +#: guix/scripts/substitute.scm:654 #, scheme-format msgid "~s: unsupported server URI scheme~%" msgstr "~s: ikke understøttet server-URI-skema~%" -#: guix/scripts/substitute.scm:665 +#: guix/scripts/substitute.scm:664 #, scheme-format msgid "'~a' uses different store '~a'; ignoring it~%" msgstr "»~a« bruger et andet lager »~a«; ignorerer~%" -#: guix/scripts/substitute.scm:810 +#: guix/scripts/substitute.scm:784 #, scheme-format msgid "host name lookup error: ~a~%" msgstr "opslagsfejl for værtsnavn: ~a~%" -#: guix/scripts/substitute.scm:815 +#: guix/scripts/substitute.scm:789 #, scheme-format msgid "TLS error in procedure '~a': ~a~%" msgstr "TLS-fejl i proceduren »~a«: ~a~%" -#: guix/scripts/substitute.scm:826 +#: guix/scripts/substitute.scm:800 msgid "" "Usage: guix substitute [OPTION]...\n" "Internal tool to substitute a pre-built binary to a local build.\n" @@ -1275,7 +1299,7 @@ msgstr "" "Brug: guix substitute [TILVALG] ...\n" "Internt værktøj til at erstatte en prækompileret binær fil med en lokal kompilering.\n" -#: guix/scripts/substitute.scm:828 +#: guix/scripts/substitute.scm:802 msgid "" "\n" " --query report on the availability of substitutes for the\n" @@ -1285,7 +1309,7 @@ msgstr "" " --query rapport om tilgængeligheden for substitutter for\n" " lagerfilnavnene sendt til standardind" -#: guix/scripts/substitute.scm:831 +#: guix/scripts/substitute.scm:805 msgid "" "\n" " --substitute STORE-FILE DESTINATION\n" @@ -1300,16 +1324,21 @@ msgstr "" #. TRANSLATORS: The second part of this message looks like #. "(4.1MiB installed)"; it shows the size of the package once #. installed. -#: guix/scripts/substitute.scm:904 +#: guix/scripts/substitute.scm:878 #, scheme-format msgid "Downloading ~a~:[~*~; (~a installed)~]...~%" msgstr "Henter ~a~:[~*~; (~a installeret)~]...~%" -#: guix/scripts/substitute.scm:961 +#: guix/scripts/substitute.scm:935 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:1057 +#: guix/scripts/substitute.scm:985 +#, scheme-format +msgid "~a: invalid URI~%" +msgstr "~a: ugyldig URI~%" + +#: guix/scripts/substitute.scm:1043 #, scheme-format msgid "~a: unrecognized options~%" msgstr "~a: ikke genkendte tilvalg~%" @@ -1348,141 +1377,141 @@ msgstr "" msgid "wrong arguments" msgstr "forkerte argumenter" -#: guix/scripts/system.scm:109 +#: guix/scripts/system.scm:133 #, scheme-format msgid "failed to register '~a' under '~a'~%" msgstr "kunne ikke registrere »~a« under »~a«~%" -#: guix/scripts/system.scm:142 +#: guix/scripts/system.scm:166 #, scheme-format msgid "failed to install GRUB on device '~a'~%" msgstr "kunne ikke installere GRUB på enhed »~a«~%" -#: guix/scripts/system.scm:160 +#: guix/scripts/system.scm:184 #, scheme-format msgid "initializing the current root file system~%" msgstr "initialiserer det nuværende root-filsystem~%" -#: guix/scripts/system.scm:174 +#: guix/scripts/system.scm:198 #, scheme-format 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:238 +#: guix/scripts/system.scm:239 #, scheme-format msgid "while talking to shepherd: ~a~%" msgstr "under kommunikation med shepherd: ~a~%" -#: guix/scripts/system.scm:245 +#: guix/scripts/system.scm:246 #, scheme-format msgid "service '~a' could not be found~%" msgstr "tjensten »~a« blev ikke fundet~%" -#: guix/scripts/system.scm:248 +#: guix/scripts/system.scm:249 #, scheme-format msgid "service '~a' does not have an action '~a'~%" msgstr "tjenesten »~a« har ikke en handling »~a«~%" -#: guix/scripts/system.scm:252 +#: guix/scripts/system.scm:253 #, scheme-format msgid "exception caught while executing '~a' on service '~a':~%" msgstr "undtagelse fanget under kørsel af »~a« på tjenesten »~a«:~%" -#: guix/scripts/system.scm:260 +#: guix/scripts/system.scm:261 #, scheme-format msgid "something went wrong: ~s~%" msgstr "noget gik galt: ~s~%" -#: guix/scripts/system.scm:263 +#: guix/scripts/system.scm:264 #, scheme-format msgid "shepherd error~%" msgstr "shepherd-fejl~%" -#: guix/scripts/system.scm:280 +#: guix/scripts/system.scm:281 #, scheme-format msgid "failed to obtain list of shepherd services~%" msgstr "kunne ikke indhente liste over shepherd-tjenester~%" -#: guix/scripts/system.scm:300 +#: guix/scripts/system.scm:301 #, scheme-format msgid "unloading service '~a'...~%" msgstr "afslutter tjeneste »~a« ...~%" -#: guix/scripts/system.scm:308 +#: guix/scripts/system.scm:309 #, scheme-format msgid "loading new services:~{ ~a~}...~%" msgstr "indlæser nye tjenester:~{ ~a~}...~%" -#: guix/scripts/system.scm:332 +#: guix/scripts/system.scm:333 #, scheme-format msgid "activating system...~%" msgstr "aktiverer system ...~%" -#: guix/scripts/system.scm:425 +#: guix/scripts/system.scm:408 #, scheme-format msgid "cannot switch to system generation '~a'~%" msgstr "kan ikke skifte til systemoprettelse »~a«~%" -#: guix/scripts/system.scm:459 +#: guix/scripts/system.scm:441 #, scheme-format msgid "failed to re-install GRUB configuration file: '~a'~%" msgstr "kunne ikke geninstallere GRUB-konfigurationsfilen: »~a«~%" -#: guix/scripts/system.scm:489 +#: guix/scripts/system.scm:471 msgid "the DAG of services" msgstr "DAGen for tjenester" -#: guix/scripts/system.scm:502 +#: guix/scripts/system.scm:484 msgid "the dependency graph of shepherd services" msgstr "afhængighedsgrafen for shepherd-tjenester" -#: guix/scripts/system.scm:526 +#: guix/scripts/system.scm:507 #, scheme-format msgid " file name: ~a~%" msgstr " filnavn: ~a~%" -#: guix/scripts/system.scm:527 +#: guix/scripts/system.scm:508 #, scheme-format msgid " canonical file name: ~a~%" msgstr " kanonisk filnavn: ~a~%" #. TRANSLATORS: Please preserve the two-space indentation. -#: guix/scripts/system.scm:529 +#: guix/scripts/system.scm:510 #, scheme-format msgid " label: ~a~%" msgstr " etikelt: ~a~%" -#: guix/scripts/system.scm:530 +#: guix/scripts/system.scm:511 #, scheme-format msgid " root device: ~a~%" msgstr " root-enhed: ~a~%" -#: guix/scripts/system.scm:531 +#: guix/scripts/system.scm:512 #, scheme-format msgid " kernel: ~a~%" msgstr " kerne: ~a~%" -#: guix/scripts/system.scm:588 +#: guix/scripts/system.scm:569 #, scheme-format msgid "~a not found: 'guix pull' was never run~%" msgstr "~a blev ikke fundet: »guix pull« blev aldrig kørt~%" -#: guix/scripts/system.scm:589 +#: guix/scripts/system.scm:570 #, scheme-format msgid "Consider running 'guix pull' before 'reconfigure'.~%" msgstr "Overvej at køre »guix pull« før »reconfigure«.~%" -#: guix/scripts/system.scm:590 +#: guix/scripts/system.scm:571 #, scheme-format msgid "Failing to do that may downgrade your system!~%" msgstr "Hvis dette ikke gøres, kan dit system blive nedgraderet!~%" -#: guix/scripts/system.scm:661 +#: guix/scripts/system.scm:646 #, scheme-format msgid "initializing operating system under '~a'...~%" msgstr "initialiserer operativsystem under »~a«...~%" -#: guix/scripts/system.scm:700 +#: guix/scripts/system.scm:690 msgid "" "Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE]\n" "Build the operating system declared in FILE according to ACTION.\n" @@ -1492,59 +1521,59 @@ msgstr "" "Kompiler operativsystemet erklæret i FIL jævnfør HANDLING.\n" "Nogle HANDLINGER understøtter yderligere ARGUMENTER.\n" -#: guix/scripts/system.scm:704 guix/scripts/container.scm:28 +#: guix/scripts/system.scm:694 guix/scripts/container.scm:28 msgid "The valid values for ACTION are:\n" msgstr "De gyldige værdier for HANDLING er:\n" -#: guix/scripts/system.scm:706 +#: guix/scripts/system.scm:696 msgid " reconfigure switch to a new operating system configuration\n" msgstr " reconfigure skift til en ny operativsystemkonfiguration\n" -#: guix/scripts/system.scm:708 +#: guix/scripts/system.scm:698 msgid " roll-back switch to the previous operating system configuration\n" msgstr " roll-back skift til den forrige operativsystemkonfiguration\n" -#: guix/scripts/system.scm:710 +#: guix/scripts/system.scm:700 msgid " switch-generation switch to an existing operating system configuration\n" msgstr " switch-generation skift til en eksisterende operativsystemkonfiguration\n" -#: guix/scripts/system.scm:712 +#: guix/scripts/system.scm:702 msgid " list-generations list the system generations\n" msgstr " list-generations viser systemoprettelserne\n" -#: guix/scripts/system.scm:714 +#: guix/scripts/system.scm:704 msgid " build build the operating system without installing anything\n" msgstr " build kompiler operativsystemet uden at installere noget\n" -#: guix/scripts/system.scm:716 +#: guix/scripts/system.scm:706 msgid " container build a container that shares the host's store\n" msgstr " container kompiler en container som deler værtens lager\n" -#: guix/scripts/system.scm:718 +#: guix/scripts/system.scm:708 msgid " vm build a virtual machine image that shares the host's store\n" msgstr " vm kompiler et virtuelt maskinaftryk som deler værtens lager\n" -#: guix/scripts/system.scm:720 +#: guix/scripts/system.scm:710 msgid " vm-image build a freestanding virtual machine image\n" msgstr " vm-image kompiler et fritstående virtuelt maskinaftryk\n" -#: guix/scripts/system.scm:722 +#: guix/scripts/system.scm:712 msgid " disk-image build a disk image, suitable for a USB stick\n" msgstr " disk-image kompiler et diskaftryk, som egner sig til et USB-drev\n" -#: guix/scripts/system.scm:724 +#: guix/scripts/system.scm:714 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:726 +#: guix/scripts/system.scm:716 msgid " extension-graph emit the service extension graph in Dot format\n" msgstr " extension-graph opret tjenesteudvidelsesgrafen i Dot-format\n" -#: guix/scripts/system.scm:728 +#: guix/scripts/system.scm:718 msgid " shepherd-graph emit the graph of shepherd services in Dot format\n" msgstr " shepherd-graph opret grafen for shepherd-tjenester i Dot-format\n" -#: guix/scripts/system.scm:732 +#: guix/scripts/system.scm:722 msgid "" "\n" " -d, --derivation return the derivation of the given system" @@ -1552,7 +1581,7 @@ msgstr "" "\n" " -d, --derivation returner de derivate stier for det givne system" -#: guix/scripts/system.scm:734 +#: guix/scripts/system.scm:724 msgid "" "\n" " --on-error=STRATEGY\n" @@ -1560,9 +1589,10 @@ msgid "" msgstr "" "\n" " --on-error=STRATEGI\n" -" brug STRATEGI når den opstår en fejl under læsning af FIL" +" brug STRATEGI når den opstår en fejl under læsning\n" +" af FIL" -#: guix/scripts/system.scm:737 +#: guix/scripts/system.scm:727 msgid "" "\n" " --image-size=SIZE for 'vm-image', produce an image of SIZE" @@ -1570,15 +1600,15 @@ msgstr "" "\n" " --image-size=STR for »vm-image«, lav et aftryk af STR" -#: guix/scripts/system.scm:739 +#: guix/scripts/system.scm:729 msgid "" "\n" -" --no-grub for 'init', do not install GRUB" +" --no-bootloader for 'init', do not install a bootloader" msgstr "" "\n" -" --no-grub for »init«, installer ikke GRUB" +" --no-bootloader for »init«, installer ikke en opstartsindlæser" -#: guix/scripts/system.scm:741 +#: guix/scripts/system.scm:731 msgid "" "\n" " --share=SPEC for 'vm', share host file system according to SPEC" @@ -1586,7 +1616,20 @@ msgstr "" "\n" " --share=SPEC for »vm«, del værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:743 +#: guix/scripts/system.scm:733 +msgid "" +"\n" +" -r, --root=FILE for 'vm', 'vm-image', 'disk-image', 'container',\n" +" and 'build', make FILE a symlink to the result, and\n" +" register it as a garbage collector root" +msgstr "" +"\n" +" -r, --root=FIL for »vm«, »vm-image«, »disk-image«, »container«\n" +" og »build«, gør FIL til en symbolsk henvisning for\n" +" resultatet, og registrer den som en\n" +" affaldsindsamlerrod" + +#: guix/scripts/system.scm:737 msgid "" "\n" " --expose=SPEC for 'vm', expose host file system according to SPEC" @@ -1594,7 +1637,7 @@ msgstr "" "\n" " --expose=SPEC for »vm«, fremvis værtsfilsystem jævnfør SPEC" -#: guix/scripts/system.scm:745 +#: guix/scripts/system.scm:739 msgid "" "\n" " --full-boot for 'vm', make a full boot sequence" @@ -1602,7 +1645,7 @@ msgstr "" "\n" " --full-boot for »vm«, lav en fuld opstartssekvens" -#: guix/scripts/system.scm:830 +#: guix/scripts/system.scm:827 #, scheme-format msgid "no configuration file specified~%" msgstr "ingen konfigurationsfil angivet~%" @@ -1627,20 +1670,20 @@ msgstr "guix system: mangler kommandonavn~%" msgid "Try 'guix system --help' for more information.~%" msgstr "Prøv »guix system --help« for yderligere information.~%" -#: guix/scripts/lint.scm:133 +#: guix/scripts/lint.scm:135 #, scheme-format msgid "Available checkers:~%" msgstr "Tilgængelige kontrolprogrammer:~%" -#: guix/scripts/lint.scm:157 +#: guix/scripts/lint.scm:159 msgid "description should not be empty" msgstr "beskrivelse skal være udfyldt" -#: guix/scripts/lint.scm:167 +#: guix/scripts/lint.scm:169 msgid "Texinfo markup in description is invalid" msgstr "Texinfo-opmærkning i beskrivelse er ugyldig" -#: guix/scripts/lint.scm:177 +#: guix/scripts/lint.scm:179 #, scheme-format msgid "" "description should not contain ~\n" @@ -1651,16 +1694,16 @@ msgstr "" #. TRANSLATORS: '@code' is Texinfo markup and must be kept #. as is. -#: guix/scripts/lint.scm:190 +#: guix/scripts/lint.scm:192 msgid "use @code or similar ornament instead of quotes" msgstr "brug @code eller lignende ornament i stedet for citationstegn" -#: guix/scripts/lint.scm:197 +#: guix/scripts/lint.scm:199 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:213 +#: guix/scripts/lint.scm:215 #, scheme-format msgid "" "sentences in description should be followed ~\n" @@ -1669,227 +1712,231 @@ msgstr "" "sætninger i beskrivelsen skal efterfølges ~\n" "af to mellemrum; mulig infraction~p ved ~{~a~^, ~}" -#: guix/scripts/lint.scm:231 +#: guix/scripts/lint.scm:233 #, scheme-format msgid "invalid description: ~s" msgstr "ugyldig beskrivelse: ~s" # native kan evt. være platformsspecifik # Det er dog svært at gætte med sikkerhed hvad det betyder her -#: guix/scripts/lint.scm:256 +#: guix/scripts/lint.scm:277 #, scheme-format msgid "'~a' should probably be a native input" msgstr "»~a« skal sandsynligvis være standarddata" -#: guix/scripts/lint.scm:280 +#: guix/scripts/lint.scm:293 #, scheme-format msgid "'~a' should probably not be an input at all" msgstr "»~a« skal sandsynligvis ikke være inddata" -#: guix/scripts/lint.scm:306 +#: guix/scripts/lint.scm:310 msgid "synopsis should not be empty" msgstr "synopsis skal være udfyldt" -#: guix/scripts/lint.scm:314 +#: guix/scripts/lint.scm:318 msgid "no period allowed at the end of the synopsis" msgstr "ingen periode er tilladt i slutningen af synopsen" -#: guix/scripts/lint.scm:326 +#: guix/scripts/lint.scm:330 msgid "no article allowed at the beginning of the synopsis" msgstr "ingen artikel er tilladt i begyndelsen af synopsen" -#: guix/scripts/lint.scm:333 +#: guix/scripts/lint.scm:337 msgid "synopsis should be less than 80 characters long" msgstr "synopsis skal være mindre end 80 tegn lang" -#: guix/scripts/lint.scm:339 +#: guix/scripts/lint.scm:343 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:346 +#: guix/scripts/lint.scm:350 msgid "synopsis should not start with the package name" msgstr "synopsis skal ikke starte med pakkenavnet" #: guix/scripts/lint.scm:360 +msgid "Texinfo markup in synopsis is invalid" +msgstr "Texinfo-opmærkning i synopsis er ugyldig" + +#: guix/scripts/lint.scm:379 #, scheme-format msgid "invalid synopsis: ~s" msgstr "ugyldig synopsis: ~s" -#: guix/scripts/lint.scm:459 +#: guix/scripts/lint.scm:479 #, scheme-format msgid "URI ~a returned suspiciously small file (~a bytes)" msgstr "URI'en ~a returnerede mistænkelig lille fil (~a byte)" -#: guix/scripts/lint.scm:468 guix/scripts/lint.scm:480 +#: guix/scripts/lint.scm:488 guix/scripts/lint.scm:500 #, scheme-format msgid "URI ~a not reachable: ~a (~s)" msgstr "URI ~a kan ikke nås: ~a (~s)" -#: guix/scripts/lint.scm:487 +#: guix/scripts/lint.scm:507 #, scheme-format msgid "URI ~a domain not found: ~a" msgstr "URI ~a domæne blev ikke fundet: ~a" -#: guix/scripts/lint.scm:495 +#: guix/scripts/lint.scm:515 #, scheme-format msgid "URI ~a unreachable: ~a" msgstr "URI ~a kan ikke nås: ~a" -#: guix/scripts/lint.scm:504 guix/scripts/lint.scm:761 +#: guix/scripts/lint.scm:524 guix/scripts/lint.scm:780 #, scheme-format msgid "TLS certificate error: ~a" msgstr "TLS-certifikatfejl: ~a" -#: guix/scripts/lint.scm:525 +#: guix/scripts/lint.scm:545 msgid "invalid value for home page" msgstr "ugyldig værdi for hjemmeside" -#: guix/scripts/lint.scm:528 +#: guix/scripts/lint.scm:548 #, scheme-format msgid "invalid home page URL: ~s" msgstr "ugyldig hjemmesideadresse: ~s" -#: guix/scripts/lint.scm:548 +#: guix/scripts/lint.scm:568 msgid "file names of patches should start with the package name" msgstr "filnavn for rettelser skal starte med pakkenavnet" -#: guix/scripts/lint.scm:587 +#: guix/scripts/lint.scm:606 #, scheme-format msgid "~a: ~a: proposed synopsis: ~s~%" msgstr "~a: ~a: foreslået synopsis: ~s~%" -#: guix/scripts/lint.scm:600 +#: guix/scripts/lint.scm:619 #, scheme-format msgid "~a: ~a: proposed description:~% \"~a\"~%" msgstr "~a: ~a: foreslået beskrivelse:~% »~a«~%" -#: guix/scripts/lint.scm:642 +#: guix/scripts/lint.scm:661 msgid "all the source URIs are unreachable:" msgstr "alle kilde-URI'erne kan ikke nås:" -#: guix/scripts/lint.scm:665 +#: guix/scripts/lint.scm:684 msgid "the source file name should contain the package name" msgstr "kildefilnavnet skal indeholde pakkenavnet" -#: guix/scripts/lint.scm:681 +#: guix/scripts/lint.scm:700 #, scheme-format msgid "URL should be 'mirror://~a/~a'" msgstr "Adresse skal være »mirror://~a/~a«" -#: guix/scripts/lint.scm:699 guix/scripts/lint.scm:703 +#: guix/scripts/lint.scm:718 guix/scripts/lint.scm:722 #, scheme-format msgid "failed to create derivation: ~a" msgstr "kunne ikke oprette derivat: ~a" -#: guix/scripts/lint.scm:717 +#: guix/scripts/lint.scm:736 #, scheme-format msgid "failed to create derivation: ~s~%" msgstr "kunne ikke oprette derivat: ~s~%" -#: guix/scripts/lint.scm:727 +#: guix/scripts/lint.scm:746 msgid "invalid license field" msgstr "ugyldigt licensfelt" -#: guix/scripts/lint.scm:744 +#: guix/scripts/lint.scm:763 #, scheme-format msgid "failed to retrieve CVE vulnerabilities from ~s: ~a (~s)~%" msgstr "kunne ikke indhente CVE-sårbarheder fra ~s: ~a (~s)~%" -#: guix/scripts/lint.scm:749 guix/scripts/lint.scm:758 -#: guix/scripts/lint.scm:763 +#: guix/scripts/lint.scm:768 guix/scripts/lint.scm:777 +#: guix/scripts/lint.scm:782 #, scheme-format msgid "assuming no CVE vulnerabilities~%" msgstr "antager ingen CVE-sårbarheder~%" -#: guix/scripts/lint.scm:756 +#: guix/scripts/lint.scm:775 #, scheme-format msgid "failed to lookup NIST host: ~a~%" msgstr "kunne ikke slå NIST-vært op: ~a~%" -#: guix/scripts/lint.scm:801 +#: guix/scripts/lint.scm:820 #, scheme-format msgid "probably vulnerable to ~a" msgstr "sandsynligvis sårbar for ~a" -#: guix/scripts/lint.scm:816 +#: guix/scripts/lint.scm:835 #, scheme-format msgid "tabulation on line ~a, column ~a" msgstr "tabulering på linje ~a, kolonne ~a" -#: guix/scripts/lint.scm:825 +#: guix/scripts/lint.scm:844 #, scheme-format msgid "trailing white space on line ~a" msgstr "efterstillet mellemrum på linje ~a" -#: guix/scripts/lint.scm:835 +#: guix/scripts/lint.scm:854 #, scheme-format msgid "line ~a is way too long (~a characters)" msgstr "linjen ~a er alt for lang (~a tegn)" -#: guix/scripts/lint.scm:846 +#: guix/scripts/lint.scm:865 #, 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:901 +#: guix/scripts/lint.scm:920 msgid "Validate package descriptions" msgstr "Valider pakkebeskrivelser" -#: guix/scripts/lint.scm:905 +#: guix/scripts/lint.scm:924 msgid "Validate synopsis & description of GNU packages" msgstr "Valider synopsis og beskrivelse for GNU-pakker" -#: guix/scripts/lint.scm:909 +#: guix/scripts/lint.scm:928 msgid "Identify inputs that should be native inputs" msgstr "Identificer inddata som skal være standarddata" -#: guix/scripts/lint.scm:913 +#: guix/scripts/lint.scm:932 msgid "Identify inputs that should be inputs at all" msgstr "Identificer inddata som skal være inddata" -#: guix/scripts/lint.scm:917 +#: guix/scripts/lint.scm:936 msgid "Validate file names and availability of patches" msgstr "Valider filnavne og tilgængelighed for rettelser" -#: guix/scripts/lint.scm:921 +#: guix/scripts/lint.scm:940 msgid "Validate home-page URLs" msgstr "Valider hjemmesiders adresser" #. TRANSLATORS: <license> is the name of a data type and must not be #. translated. -#: guix/scripts/lint.scm:927 +#: guix/scripts/lint.scm:946 msgid "Make sure the 'license' field is a <license> or a list thereof" msgstr "Sikr at feltet »license« er en <license> eller en liste deraf" -#: guix/scripts/lint.scm:932 +#: guix/scripts/lint.scm:951 msgid "Validate source URLs" msgstr "Valider kildeadresser" -#: guix/scripts/lint.scm:936 +#: guix/scripts/lint.scm:955 msgid "Suggest 'mirror://' URLs" msgstr "Foreslå »mirror://«-adresser" -#: guix/scripts/lint.scm:940 +#: guix/scripts/lint.scm:959 msgid "Validate file names of sources" msgstr "Valider filnavne for kilder" -#: guix/scripts/lint.scm:944 +#: guix/scripts/lint.scm:963 msgid "Report failure to compile a package to a derivation" msgstr "Rapporter mislykket kompilering af en pakke til et derivat" -#: guix/scripts/lint.scm:948 +#: guix/scripts/lint.scm:967 msgid "Validate package synopses" msgstr "Valider pakkesynopser" -#: guix/scripts/lint.scm:952 +#: guix/scripts/lint.scm:971 msgid "Check the Common Vulnerabilities and Exposures (CVE) database" msgstr "Kontroller databasen Common Vulnerabilities and Exposures (CVE)" -#: guix/scripts/lint.scm:957 +#: guix/scripts/lint.scm:976 msgid "Look for formatting issues in the source" msgstr "Kig efter formateringsproblemstillinger i kilden" -#: guix/scripts/lint.scm:985 +#: guix/scripts/lint.scm:1004 msgid "" "Usage: guix lint [OPTION]... [PACKAGE]...\n" "Run a set of checkers on the specified package; if none is specified,\n" @@ -1899,7 +1946,7 @@ msgstr "" "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:988 +#: guix/scripts/lint.scm:1007 msgid "" "\n" " -c, --checkers=CHECKER1,CHECKER2...\n" @@ -1909,7 +1956,7 @@ msgstr "" " -c, --checkers=KONTROL1,KONTROL2...\n" " kør kun de specificerede kontroller" -#: guix/scripts/lint.scm:993 +#: guix/scripts/lint.scm:1012 msgid "" "\n" " -l, --list-checkers display the list of available lint checkers" @@ -1917,12 +1964,12 @@ msgstr "" "\n" " -l, --list-checkers vis listen med tilgængelige lint-kontroller" -#: guix/scripts/lint.scm:1013 +#: guix/scripts/lint.scm:1032 #, scheme-format msgid "~a: invalid checker~%" msgstr "~a: ugyldig kontrol~%" -#: guix/scripts/publish.scm:58 +#: guix/scripts/publish.scm:67 #, scheme-format msgid "" "Usage: guix publish [OPTION]...\n" @@ -1931,7 +1978,7 @@ msgstr "" "Brug: guix publish [TILVALG] ...\n" "Udgiv ~a over HTTP.\n" -#: guix/scripts/publish.scm:60 +#: guix/scripts/publish.scm:69 msgid "" "\n" " -p, --port=PORT listen on PORT" @@ -1939,7 +1986,7 @@ msgstr "" "\n" " -p, --port=PORT lyt på PORT" -#: guix/scripts/publish.scm:62 +#: guix/scripts/publish.scm:71 msgid "" "\n" " --listen=HOST listen on the network interface for HOST" @@ -1947,7 +1994,7 @@ msgstr "" "\n" " --listen=VÆRT lyt på netværksgrænsefladen efter VÆRT" -#: guix/scripts/publish.scm:64 +#: guix/scripts/publish.scm:73 msgid "" "\n" " -u, --user=USER change privileges to USER as soon as possible" @@ -1955,7 +2002,7 @@ msgstr "" "\n" " -u, --user=BRUGER ændr privilegier for BRUGER så snart som muligt" -#: guix/scripts/publish.scm:66 +#: guix/scripts/publish.scm:75 msgid "" "\n" " -C, --compression[=LEVEL]\n" @@ -1965,7 +2012,23 @@ msgstr "" " -C, --compression[=NIVEAU]\n" " komprimer arkiver med NIVEAU" -#: guix/scripts/publish.scm:69 +#: guix/scripts/publish.scm:78 +msgid "" +"\n" +" -c, --cache=DIRECTORY cache published items to DIRECTORY" +msgstr "" +"\n" +" -c, --cache=MAPPE mellemlagr udgivne elementer til MAPPE" + +#: guix/scripts/publish.scm:80 +msgid "" +"\n" +" --workers=N use N workers to bake items" +msgstr "" +"\n" +" --workers=N brug N arbejdere til at bage elementer" + +#: guix/scripts/publish.scm:82 msgid "" "\n" " --ttl=TTL announce narinfos can be cached for TTL seconds" @@ -1973,7 +2036,31 @@ msgstr "" "\n" " --ttl=TTL announce narinfos kan mellemlagres i TTL sekunder" -#: guix/scripts/publish.scm:71 +#: guix/scripts/publish.scm:84 +msgid "" +"\n" +" --nar-path=PATH use PATH as the prefix for nar URLs" +msgstr "" +"\n" +" --nar-path=STI brug STI som præfiks for nar-adresser" + +#: guix/scripts/publish.scm:86 +msgid "" +"\n" +" --public-key=FILE use FILE as the public key for signatures" +msgstr "" +"\n" +" --public-key=FIL brug FIL som offentlig nøgle for signaturer" + +#: guix/scripts/publish.scm:88 +msgid "" +"\n" +" --private-key=FILE use FILE as the private key for signatures" +msgstr "" +"\n" +" --private-key=FIL brug FIL som privat nøgle for signaturer" + +#: guix/scripts/publish.scm:90 msgid "" "\n" " -r, --repl[=PORT] spawn REPL server on PORT" @@ -1981,37 +2068,37 @@ msgstr "" "\n" " -r, --repl[=PORT] udsend REPL-server on PORT" -#: guix/scripts/publish.scm:87 +#: guix/scripts/publish.scm:106 #, scheme-format msgid "lookup of host '~a' failed: ~a~%" msgstr "opslag efter værten »~a« mislykkedes: ~a~%" -#: guix/scripts/publish.scm:125 +#: guix/scripts/publish.scm:151 #, scheme-format msgid "lookup of host '~a' returned nothing" msgstr "opslag efter værten »~a« returnerede intet" -#: guix/scripts/publish.scm:138 +#: guix/scripts/publish.scm:164 #, scheme-format msgid "zlib support is missing; compression disabled~%" msgstr "zlib-understøttelse mangler; komprimering deaktiveret~%" -#: guix/scripts/publish.scm:145 +#: guix/scripts/publish.scm:178 #, scheme-format msgid "~a: invalid duration~%" msgstr "~a: ugyldig varighed~%" -#: guix/scripts/publish.scm:544 +#: guix/scripts/publish.scm:799 #, scheme-format msgid "user '~a' not found: ~a~%" msgstr "brugeren »~a« blev ikke fundet: ~a~%" -#: guix/scripts/publish.scm:581 +#: guix/scripts/publish.scm:840 #, 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:583 +#: guix/scripts/publish.scm:845 #, scheme-format msgid "publishing ~a on ~a, port ~d~%" msgstr "udgiver ~a på ~a, port ~d~%" @@ -2056,7 +2143,7 @@ msgstr "i alt" msgid "self" msgstr "selv" -#: guix/scripts/size.scm:96 +#: guix/scripts/size.scm:97 #, scheme-format msgid "total: ~,1f MiB~%" msgstr "i alt: ~,1f MiB~%" @@ -2064,11 +2151,11 @@ msgstr "i alt: ~,1f MiB~%" #. 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:209 +#: guix/scripts/size.scm:211 msgid "store profile" msgstr "lagerprofil" -#: guix/scripts/size.scm:218 +#: guix/scripts/size.scm:220 msgid "" "Usage: guix size [OPTION]... PACKAGE\n" "Report the size of PACKAGE and its dependencies.\n" @@ -2076,7 +2163,7 @@ msgstr "" "Brug: guix size [TILVALG]... PAKKE\n" "Rapporter størrelsen for PAKKE og dens afhængigheder.\n" -#: guix/scripts/size.scm:223 +#: guix/scripts/size.scm:225 msgid "" "\n" " -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"" @@ -2084,7 +2171,7 @@ msgstr "" "\n" " -s, --system=SYSTEM overvej pakker for SYSTEM--f.eks., »i686-linux«" -#: guix/scripts/size.scm:225 +#: guix/scripts/size.scm:227 msgid "" "\n" " -m, --map-file=FILE write to FILE a graphical map of disk usage" @@ -2092,77 +2179,81 @@ msgstr "" "\n" " -m, --map-file=FIL skriv til FIL et grafisk kort over diskforbrug" -#: guix/scripts/size.scm:279 +#: guix/scripts/size.scm:281 msgid "missing store item argument\n" msgstr "manglende lagerpostargument\n" -#: guix/scripts/graph.scm:83 +#: guix/scripts/graph.scm:84 #, scheme-format msgid "~a: invalid argument (package name expected)" msgstr "~a: ugyldigt argument (forventede et pakkenavn)" -#: guix/scripts/graph.scm:94 +#: guix/scripts/graph.scm:95 msgid "the DAG of packages, excluding implicit inputs" msgstr "DAGen for pakker, eksklusive implicitte inddata" -#: guix/scripts/graph.scm:151 +#: guix/scripts/graph.scm:121 +msgid "the reverse DAG of packages" +msgstr "den omvendte DAG for pakker" + +#: guix/scripts/graph.scm:171 msgid "the DAG of packages, including implicit inputs" msgstr "DAGen for pakker, inklusive implicitte inddata" -#: guix/scripts/graph.scm:161 +#: guix/scripts/graph.scm:181 msgid "the DAG of packages and origins, including implicit inputs" msgstr "DAGen for pakker og oprindelser, inklusive implicitte inddata" -#: guix/scripts/graph.scm:192 +#: guix/scripts/graph.scm:211 msgid "same as 'bag', but without the bootstrap nodes" msgstr "samme som »bag«m uden bootstrap-knuder" -#: guix/scripts/graph.scm:238 +#: guix/scripts/graph.scm:257 msgid "the DAG of derivations" msgstr "DAGen for derivater" -#: guix/scripts/graph.scm:250 +#: guix/scripts/graph.scm:269 msgid "unsupported argument for derivation graph" msgstr "argument for derivatgraf er ikke understøttet" -#: guix/scripts/graph.scm:276 +#: guix/scripts/graph.scm:295 msgid "unsupported argument for this type of graph" msgstr "ikke understøttet argument for denne graftype" -#: guix/scripts/graph.scm:289 +#: guix/scripts/graph.scm:308 #, scheme-format msgid "references for '~a' are not known~%" msgstr "referencer for »~a« er ikke kendt~%" -#: guix/scripts/graph.scm:296 +#: guix/scripts/graph.scm:315 msgid "the DAG of run-time dependencies (store references)" msgstr "DAGen for kørselstidsafhængigheder (lagerreferencer)" -#: guix/scripts/graph.scm:312 +#: guix/scripts/graph.scm:331 msgid "the DAG of referrers in the store" msgstr "DAGen for referencer i lageret" -#: guix/scripts/graph.scm:338 +#: guix/scripts/graph.scm:358 #, scheme-format msgid "~a: unknown node type~%" msgstr "~a: ukendt knudetype~%" -#: guix/scripts/graph.scm:345 +#: guix/scripts/graph.scm:365 #, scheme-format msgid "~a: unknown backend~%" msgstr "~a: ukendt motor~%" -#: guix/scripts/graph.scm:349 +#: guix/scripts/graph.scm:369 msgid "The available node types are:\n" msgstr "De gyldige knudetyper er:\n" -#: guix/scripts/graph.scm:359 +#: guix/scripts/graph.scm:379 msgid "The available backend types are:\n" msgstr "De gyldige motortyper er:\n" #. TRANSLATORS: Here 'dot' is the name of a program; it must not be #. translated. -#: guix/scripts/graph.scm:403 +#: guix/scripts/graph.scm:423 msgid "" "Usage: guix graph PACKAGE...\n" "Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n" @@ -2170,7 +2261,7 @@ msgstr "" "Brug: guix graph PAKKE...\n" "Opret en Graphviz-repræsentation (dot) af afhængighederne for PAKKE...\n" -#: guix/scripts/graph.scm:405 +#: guix/scripts/graph.scm:425 msgid "" "\n" " -b, --backend=TYPE produce a graph with the given backend TYPE" @@ -2178,15 +2269,15 @@ msgstr "" "\n" " -b, --backend=TYPE fremstil en graf med den angivne motor-TYPE" -#: guix/scripts/graph.scm:407 +#: guix/scripts/graph.scm:427 msgid "" "\n" " --list-backends list the available graph backends" msgstr "" "\n" -" --list-backends vis de tilgængelige grafmotorer" +" --list-backends vis de tilgængelige grafmotorer" -#: guix/scripts/graph.scm:409 +#: guix/scripts/graph.scm:429 msgid "" "\n" " -t, --type=TYPE represent nodes of the given TYPE" @@ -2194,7 +2285,7 @@ msgstr "" "\n" " -t, --type=TYPE repræsenter knuder for den givne TYPE" -#: guix/scripts/graph.scm:411 +#: guix/scripts/graph.scm:431 msgid "" "\n" " --list-types list the available graph types" @@ -2202,7 +2293,7 @@ msgstr "" "\n" " --list-types vis de tilgængelige graftyper" -#: guix/scripts/graph.scm:413 +#: guix/scripts/graph.scm:433 guix/scripts/pack.scm:328 msgid "" "\n" " -e, --expression=EXPR consider the package EXPR evaluates to" @@ -2210,42 +2301,42 @@ msgstr "" "\n" " -e, --expression=UDTRYK overvej pakken UDTRYK evaluerer til" -#: guix/scripts/challenge.scm:105 +#: guix/scripts/challenge.scm:191 #, scheme-format -msgid "~a: no substitute at '~a'~%" -msgstr "~a: ingen substitut på »~a«~%" +msgid " local hash: ~a~%" +msgstr " lokal hash: ~a~%" -#: guix/scripts/challenge.scm:121 +#: guix/scripts/challenge.scm:192 #, scheme-format -msgid "no substitutes for '~a'~%" -msgstr "ingen substitutter for »~a«~%" +msgid " no local build for '~a'~%" +msgstr " ingen lokal kompilering for »~a«~%" -#: guix/scripts/challenge.scm:138 guix/scripts/challenge.scm:158 +#: guix/scripts/challenge.scm:194 #, scheme-format -msgid "no local build for '~a'~%" -msgstr "ingen lokal kompilering for »~a«~%" +msgid " ~50a: ~a~%" +msgstr " ~50a: ~a~%" -#: guix/scripts/challenge.scm:155 +#: guix/scripts/challenge.scm:202 #, scheme-format msgid "~a contents differ:~%" msgstr "~a indhold er forskelligt:~%" -#: guix/scripts/challenge.scm:157 +#: guix/scripts/challenge.scm:205 #, scheme-format -msgid " local hash: ~a~%" -msgstr " lokal hash: ~a~%" +msgid "could not challenge '~a': no local build~%" +msgstr "kunne ikke udfordre »~a«: ingen lokal kompilering~%" -#: guix/scripts/challenge.scm:162 +#: guix/scripts/challenge.scm:207 #, scheme-format -msgid " ~50a: ~a~%" -msgstr " ~50a: ~a~%" +msgid "could not challenge '~a': no substitutes~%" +msgstr "kunne ikke udfordre »~a«: ingen substitutter~%" -#: guix/scripts/challenge.scm:166 +#: guix/scripts/challenge.scm:210 #, scheme-format -msgid " ~50a: unavailable~%" -msgstr " ~50a: utilgængelig~%" +msgid "~a contents match:~%" +msgstr "~a indhold mathcer:~%" -#: guix/scripts/challenge.scm:176 +#: guix/scripts/challenge.scm:219 msgid "" "Usage: guix challenge [PACKAGE...]\n" "Challenge the substitutes for PACKAGE... provided by one or more servers.\n" @@ -2253,7 +2344,7 @@ msgstr "" "Brug: guix challenge [PAKKE...]\n" "Ændr substitutterne for PAKKE... tilbudt af en eller flere servere.\n" -#: guix/scripts/challenge.scm:178 +#: guix/scripts/challenge.scm:221 msgid "" "\n" " --substitute-urls=URLS\n" @@ -2263,23 +2354,125 @@ msgstr "" " --substitute-urls=ADRESSER\n" " sammenlign kompileringsresultater med dem på ADRESSER" -#: guix/gnu-maintenance.scm:555 +#: guix/scripts/challenge.scm:224 +msgid "" +"\n" +" -v, --verbose show details about successful comparisons" +msgstr "" +"\n" +" -v, --verbose vis detaljer om succesfulde sammenligninger" + +#: guix/scripts/copy.scm:59 +#, scheme-format +msgid "~a: invalid TCP port number~%" +msgstr "~a: ugyldigt TCP-portnummer~%" + +#: guix/scripts/copy.scm:61 +#, scheme-format +msgid "~a: invalid SSH specification~%" +msgstr "~a: ugyldig SSH-specifikation~%" + +#: guix/scripts/copy.scm:112 +msgid "" +"Usage: guix copy [OPTION]... ITEMS...\n" +"Copy ITEMS to or from the specified host over SSH.\n" +msgstr "" +"Brug: guix copy [TILVALG]... ELEMENTER...\n" +"Kopier ELEMENTER til eller fra den specificerede vært over SSH.\n" + +#: guix/scripts/copy.scm:114 +msgid "" +"\n" +" --to=HOST send ITEMS to HOST" +msgstr "" +"\n" +" --to=VÆRT send ELEMENTER til VÆRT" + +#: guix/scripts/copy.scm:116 +msgid "" +"\n" +" --from=HOST receive ITEMS from HOST" +msgstr "" +"\n" +" --from=VÆRT receive ELEMENTER from HOST" + +#: guix/scripts/copy.scm:168 +#, scheme-format +msgid "use '--to' or '--from'~%" +msgstr "brug »--to« eller »--from«~%" + +#: guix/scripts/pack.scm:74 +#, scheme-format +msgid "~a: compressor not found~%" +msgstr "~a: kompressor blev ikke fundet~%" + +#: guix/scripts/pack.scm:310 +#, scheme-format +msgid "~a: invalid symlink specification~%" +msgstr "~a: ugyldig symbolsk henvisningsspecifikation~%" + +#: guix/scripts/pack.scm:320 +msgid "" +"Usage: guix pack [OPTION]... PACKAGE...\n" +"Create a bundle of PACKAGE.\n" +msgstr "" +"Brug: guix pack [TILVALG]... PAKKE...\n" +"Opret en samling af PAKKE.\n" + +#: guix/scripts/pack.scm:326 +msgid "" +"\n" +" -f, --format=FORMAT build a pack in the given FORMAT" +msgstr "" +"\n" +" -f, --format=FORMAT kompiler en pakke i det givne FORMAT" + +#: guix/scripts/pack.scm:334 +msgid "" +"\n" +" -C, --compression=TOOL compress using TOOL--e.g., \"lzip\"" +msgstr "" +"\n" +" -C, --compression=VÆRKTØJ komprimer via VÆRKTØJ--f.eks., »lzip«" + +#: guix/scripts/pack.scm:336 +msgid "" +"\n" +" -S, --symlink=SPEC create symlinks to the profile according to SPEC" +msgstr "" +"\n" +" -S, --symlink=SPEC opret symbolske henvisninger til profilen jævnfør SPEC" + +#: guix/scripts/pack.scm:338 +msgid "" +"\n" +" --localstatedir include /var/guix in the resulting pack" +msgstr "" +"\n" +" --localstatedir inkluder /var/guix i resultatpakken" + +#: guix/scripts/pack.scm:382 +#, scheme-format +msgid "~a: unknown pack format" +msgstr "~a: ukendt pakkeformat" + +#: guix/gnu-maintenance.scm:562 msgid "Updater for GNU packages" msgstr "Opdater for GNU-pakker" -#: guix/gnu-maintenance.scm:562 +#: guix/gnu-maintenance.scm:569 msgid "Updater for GNOME packages" msgstr "Opdateringsprogram for GNOME-pakker" -#: guix/gnu-maintenance.scm:569 +#: guix/gnu-maintenance.scm:576 msgid "Updater for KDE packages" msgstr "Opdateringsprogram for KDE-pakker" -#: guix/gnu-maintenance.scm:576 +#: guix/gnu-maintenance.scm:583 msgid "Updater for X.org packages" msgstr "Opdateringsprogram for X.org-pakker" -#: guix/gnu-maintenance.scm:583 +#: guix/gnu-maintenance.scm:590 msgid "Updater for packages hosted on kernel.org" msgstr "Opdateringsprogram for pakker fra kernel.org" @@ -2318,22 +2511,22 @@ msgstr "" msgid "~a: extraneous argument~%" msgstr "~a: uvedkommende argument~%" -#: guix/scripts/container/exec.scm:80 +#: guix/scripts/container/exec.scm:87 #, scheme-format msgid "no pid specified~%" msgstr "ingen pid angivet~%" -#: guix/scripts/container/exec.scm:83 +#: guix/scripts/container/exec.scm:90 #, scheme-format msgid "no command specified~%" msgstr "ingen kommando angivet~%" -#: guix/scripts/container/exec.scm:86 +#: guix/scripts/container/exec.scm:93 #, scheme-format msgid "no such process ~d~%" msgstr "ingen sådan proces ~d~%" -#: guix/scripts/container/exec.scm:94 +#: guix/scripts/container/exec.scm:105 #, scheme-format msgid "exec failed with status ~d~%" msgstr "exec mislykkedes med status ~d~%" @@ -2348,10 +2541,6 @@ msgstr "signaturverifikation mislykkedes for »~a«~%" 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/upstream.scm:246 -msgid "gz" -msgstr "gz" - #: guix/upstream.scm:293 #, scheme-format msgid "~a: could not locate source file" @@ -2362,53 +2551,62 @@ msgstr "~a: kunne ikke lokalisere kildefil" msgid "~a: ~a: no `version' field in source; skipping~%" msgstr "~a: ~a: intet »versionsfelt« i kilde; udelader~%" -#: guix/ui.scm:239 +#: guix/ui.scm:241 msgid "entering debugger; type ',bt' for a backtrace\n" msgstr "går i fejlsøger; tast »,bt« for en tilbagesporing\n" -#: guix/ui.scm:255 guix/ui.scm:272 +#: guix/ui.scm:257 guix/ui.scm:278 guix/ui.scm:285 #, scheme-format msgid "failed to load '~a': ~a~%" msgstr "kunne ikke indlæse »~a«: ~a~%" -#: guix/ui.scm:258 +#: guix/ui.scm:260 #, scheme-format msgid "~a: error: ~a~%" msgstr "~a: fejl: ~a~%" -#: guix/ui.scm:261 guix/ui.scm:530 +#: guix/ui.scm:267 guix/ui.scm:554 #, scheme-format msgid "exception thrown: ~s~%" msgstr "undtagelse smidt: ~s~%" -#: guix/ui.scm:263 guix/ui.scm:281 +#: guix/ui.scm:269 guix/ui.scm:291 #, scheme-format msgid "failed to load '~a':~%" msgstr "kunne ikke indlæse »~a«:~%" -#: guix/ui.scm:275 +#: guix/ui.scm:281 #, scheme-format msgid "~a: warning: ~a~%" msgstr "~a: advarsel: ~a~%" -#: guix/ui.scm:278 +#: guix/ui.scm:288 #, scheme-format msgid "failed to load '~a': exception thrown: ~s~%" msgstr "kunne ikke indlæse »~a«: undtagelse smidt: ~s~%" -#: guix/ui.scm:290 +#: guix/ui.scm:300 #, scheme-format msgid "failed to install locale: ~a~%" msgstr "kunne ikke installere sprog: ~a~%" -#: guix/ui.scm:309 +#. TRANSLATORS: Translate "(C)" to the copyright symbol +#. (C-in-a-circle), if this symbol is available in the user's +#. locale. Otherwise, do not translate "(C)"; leave it as-is. */ +#: guix/ui.scm:323 +msgid "(C)" +msgstr "©" + +#: guix/ui.scm:324 +msgid "the Guix authors\n" +msgstr "Guix-forfatterne\n" + +#: guix/ui.scm:325 msgid "" -"Copyright (C) 2016 the Guix authors\n" "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\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 "" -"Ophavsret 2016 Guix-forfatterne\n" "Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/gpl.html>\n" "Dette er et frit program; du kan frit ændre og videredistribuere programmet.\n" "Der er INGEN GARANTI, inden for lovens rammer.\n" @@ -2417,7 +2615,7 @@ msgstr "" #. package. Please add another line saying "Report translation bugs to #. ...\n" with the address for translation bugs (typically your translation #. team's web or email address). -#: guix/ui.scm:321 +#: guix/ui.scm:337 #, scheme-format msgid "" "\n" @@ -2426,7 +2624,7 @@ msgstr "" "\n" "Rapporter fejl til: ~a." -#: guix/ui.scm:323 +#: guix/ui.scm:339 #, scheme-format msgid "" "\n" @@ -2435,7 +2633,7 @@ msgstr "" "\n" "~a hjemmeside: <~a>" -#: guix/ui.scm:325 +#: guix/ui.scm:341 msgid "" "\n" "General help using GNU software: <http://www.gnu.org/gethelp/>" @@ -2443,199 +2641,204 @@ msgstr "" "\n" "Generel hjælp til brugen af GNU-programmer: <http://www.gnu.org/gethelp/>" -#: guix/ui.scm:370 +#: guix/ui.scm:386 #, scheme-format msgid "'~a' is not a valid regular expression: ~a~%" msgstr "»~a« er ikke et gyldigt regulært udtryk: ~a~%" -#: guix/ui.scm:376 +#: guix/ui.scm:392 #, scheme-format msgid "~a: invalid number~%" msgstr "~a: ugyldigt nummer~%" -#: guix/ui.scm:393 +#: guix/ui.scm:409 #, scheme-format msgid "invalid number: ~a~%" msgstr "ugyldigt nummer: ~a~%" -#: guix/ui.scm:416 +#: guix/ui.scm:432 #, scheme-format msgid "unknown unit: ~a~%" msgstr "ukendt enhed: ~a~%" -#: guix/ui.scm:433 +#: guix/ui.scm:449 #, 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:440 +#: guix/ui.scm:456 #, scheme-format msgid "~a: ~a: build system `~a' does not support cross builds~%" msgstr "~a: ~a: kompileringssystem »~a« understøtter ikke krydskompileringer~%" -#: guix/ui.scm:445 +#: guix/ui.scm:462 +#, scheme-format +msgid "~s: invalid G-expression input~%" +msgstr "~s: ugyldige G-udtryksindata~%" + +#: guix/ui.scm:465 #, scheme-format msgid "profile '~a' does not exist~%" msgstr "profilen »~a« findes ikke~%" -#: guix/ui.scm:448 +#: guix/ui.scm:468 #, scheme-format msgid "generation ~a of profile '~a' does not exist~%" msgstr "oprettelse ~a af profilen »~a« findes ikke~%" -#: guix/ui.scm:455 +#: guix/ui.scm:475 #, scheme-format msgid "corrupt input while restoring '~a' from ~s~%" msgstr "ødelagte inddata under gendannelse af »~a« fra ~s~%" -#: guix/ui.scm:457 +#: guix/ui.scm:477 #, scheme-format msgid "corrupt input while restoring archive from ~s~%" msgstr "ødelagte inddata under gendannelse af arkiv fra ~s~%" -#: guix/ui.scm:460 +#: guix/ui.scm:480 #, scheme-format msgid "failed to connect to `~a': ~a~%" msgstr "kunne ikke forbinde til »~a«: ~a~%" -#: guix/ui.scm:465 +#: guix/ui.scm:485 #, scheme-format msgid "build failed: ~a~%" msgstr "kompilering mislykkedes: ~a~%" -#: guix/ui.scm:468 +#: guix/ui.scm:488 #, scheme-format msgid "reference to invalid output '~a' of derivation '~a'~%" msgstr "reference til ugyldige uddata »~a« for derivat »~a«~%" -#: guix/ui.scm:472 +#: guix/ui.scm:492 #, scheme-format msgid "file '~a' could not be found in these directories:~{ ~a~}~%" msgstr "filen »~a« blev ikke fundet i disse mapper:~{ ~a~}~%" -#: guix/ui.scm:484 +#: guix/ui.scm:504 #, scheme-format msgid "~a: ~a~%" msgstr "~a: ~a~%" -#: guix/ui.scm:519 +#: guix/ui.scm:539 #, scheme-format msgid "failed to read expression ~s: ~s~%" msgstr "kunne ikke læse udtryk ~s: ~s~%" -#: guix/ui.scm:525 +#: guix/ui.scm:545 #, scheme-format msgid "failed to evaluate expression '~a':~%" msgstr "kunne ikke evaluere udtryk »~a«:~%" -#: guix/ui.scm:528 +#: guix/ui.scm:548 #, scheme-format msgid "syntax error: ~a~%" msgstr "syntaksfejl: ~a~%" -#: guix/ui.scm:542 +#: guix/ui.scm:566 #, scheme-format msgid "expression ~s does not evaluate to a package~%" msgstr "udtryk ~s evaluerer ikke til en pakke~%" -#: guix/ui.scm:604 +#: guix/ui.scm:628 #, scheme-format msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Det følgende derivat ville blive kompileret:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende derivater ville blive kompileret:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:609 +#: guix/ui.scm:633 #, 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:615 +#: guix/ui.scm:639 #, scheme-format msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Det følgende derivat vil blive kompileret:~%~{ ~a~%~}~;~]" msgstr[1] "~:[De følgende derivater vil blive kompileret:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:620 +#: guix/ui.scm:644 #, 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:675 +#: guix/ui.scm:700 #, 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:680 +#: guix/ui.scm:705 #, 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:693 +#: guix/ui.scm:718 #, 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:698 +#: guix/ui.scm:723 #, 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:711 +#: guix/ui.scm:736 #, 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:716 +#: guix/ui.scm:741 #, 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:727 +#: guix/ui.scm:752 #, 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:732 +#: guix/ui.scm:757 #, 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:749 +#: guix/ui.scm:774 msgid "<unknown location>" msgstr "<ukendt sted>" -#: guix/ui.scm:768 +#: guix/ui.scm:793 #, scheme-format msgid "failed to create configuration directory `~a': ~a~%" msgstr "kunne ikke oprette konfiguratinsmappe »~a«: ~a~%" -#: guix/ui.scm:891 guix/ui.scm:905 +#: guix/ui.scm:924 guix/ui.scm:938 msgid "unknown" msgstr "ukendt" -#: guix/ui.scm:1063 +#: guix/ui.scm:1097 #, scheme-format msgid "Generation ~a\t~a" msgstr "Generation ~a\t~a" @@ -2643,27 +2846,27 @@ msgstr "Generation ~a\t~a" #. TRANSLATORS: The word "current" here is an adjective for #. "Generation", as in "current generation". Use the appropriate #. gender where applicable. -#: guix/ui.scm:1073 +#: guix/ui.scm:1107 #, scheme-format msgid "~a\t(current)~%" msgstr "~a\t(nuværende)~%" -#: guix/ui.scm:1116 +#: guix/ui.scm:1150 #, scheme-format msgid "switched from generation ~a to ~a~%" msgstr "skiftede fra generation ~a til ~a~%" -#: guix/ui.scm:1132 +#: guix/ui.scm:1166 #, scheme-format msgid "deleting ~a~%" msgstr "sletter ~a~%" -#: guix/ui.scm:1163 +#: guix/ui.scm:1197 #, scheme-format msgid "Try `guix --help' for more information.~%" msgstr "Prøv »guix --help« for yderligere information.~%" -#: guix/ui.scm:1191 +#: guix/ui.scm:1225 msgid "" "Usage: guix COMMAND ARGS...\n" "Run COMMAND with ARGS.\n" @@ -2671,33 +2874,34 @@ msgstr "" "Brug: guix KOMMANDO ARG...\n" "Kør KOMMANDO med ARG.\n" -#: guix/ui.scm:1194 +#: guix/ui.scm:1228 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:1214 +#: guix/ui.scm:1248 #, scheme-format msgid "guix: ~a: command not found~%" msgstr "guix: ~a: kommando blev ikke fundet~%" -#: guix/ui.scm:1233 +#: guix/ui.scm:1267 #, scheme-format msgid "guix: missing command name~%" msgstr "guix: mangler kommandonavn~%" -#: guix/ui.scm:1241 +#: guix/ui.scm:1275 #, scheme-format msgid "guix: unrecognized option '~a'~%" msgstr "guix: ikke genkendt tilvalg »~a«~%" -#: guix/http-client.scm:270 +#: guix/http-client.scm:265 #, scheme-format msgid "following redirection to `~a'...~%" msgstr "følger omdirigering til »~a«...~%" -#: guix/http-client.scm:279 -msgid "download failed" -msgstr "overførsel mislykkedes" +#: guix/http-client.scm:277 +#, scheme-format +msgid "~a: HTTP download failed: ~a (~s)" +msgstr "~a: HTTP-overførsel mislykkede: ~a (~s)" #: guix/nar.scm:155 msgid "signature is not a valid s-expression" @@ -2849,22 +3053,38 @@ msgstr "lyt efter forbindelser på SOKKEL" msgid "produce debugging output" msgstr "lav fejlsøgningsinformation" -#: nix/nix-daemon/guix-daemon.cc:201 -#, c-format -msgid "error: %s: invalid number of rounds\n" -msgstr "fejl: %s: ugyldigt antal runder\n" - -#: nix/nix-daemon/guix-daemon.cc:220 nix/nix-daemon/guix-daemon.cc:396 -#, c-format -msgid "error: %s\n" -msgstr "fejl: %s\n" - -#: nix/nix-daemon/guix-daemon.cc:281 -#, c-format -msgid "error: libgcrypt version mismatch\n" -msgstr "fejl: forskellige versioner af libgcrypt\n" - -#: nix/nix-daemon/guix-daemon.cc:372 -#, 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" +#~ msgid "deprecated NAME-VERSION syntax; use NAME@VERSION instead~%" +#~ msgstr "forældet NAVN-VERSION-syntaks; brug NAVN@VERSION i stedet for~%" + +#~ msgid "/" +#~ msgstr "/" + +#~ msgid "~A: unexpected argument~%" +#~ msgstr "~A: uventet argument~%" + +#~ msgid "~a: no substitute at '~a'~%" +#~ msgstr "~a: ingen substitut på »~a«~%" + +#~ msgid "no substitutes for '~a'~%" +#~ msgstr "ingen substitutter for »~a«~%" + +#~ msgid " ~50a: unavailable~%" +#~ msgstr " ~50a: utilgængelig~%" + +#~ msgid "gz" +#~ msgstr "gz" + +#~ msgid "download failed" +#~ msgstr "overførsel mislykkedes" + +#~ msgid "error: %s: invalid number of rounds\n" +#~ msgstr "fejl: %s: ugyldigt antal runder\n" + +#~ msgid "error: %s\n" +#~ msgstr "fejl: %s\n" + +#~ msgid "error: libgcrypt version mismatch\n" +#~ msgstr "fejl: forskellige versioner af libgcrypt\n" + +#~ 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/fr.po b/po/guix/fr.po index 990b83926f..b566d58c0b 100644 --- a/po/guix/fr.po +++ b/po/guix/fr.po @@ -2,7 +2,7 @@ # Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. # Rémy Chevalier <remychevalier@laposte.net>, 2013, 2014. -# Frédéric Marchal <fmarchal@perso.be>, 2016 +# Frédéric Marchal <fmarchal@perso.be>, 2017 # # Note de Frédéric Marchal: Le nom « shepherd » est le nom d'un démon (voir # https://www.gnu.org/software/shepherd/). Je ne l'ai pas traduit dans les @@ -10,10 +10,10 @@ # msgid "" msgstr "" -"Project-Id-Version: guix 0.12.0\n" +"Project-Id-Version: guix 0.13.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2016-12-18 15:32+0100\n" -"PO-Revision-Date: 2016-12-19 07:40+0100\n" +"POT-Creation-Date: 2017-05-10 23:29+0200\n" +"PO-Revision-Date: 2017-05-11 19:11+0200\n" "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -23,140 +23,146 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: gnu/packages.scm:79 +#: gnu/packages.scm:90 #, scheme-format msgid "~a: patch not found" msgstr "~a: correctif introuvable" -#: gnu/packages.scm:95 +#: gnu/packages.scm:106 #, scheme-format msgid "could not find bootstrap binary '~a' for system '~a'" msgstr "impossible de trouver le binaire d'initialisation « ~a » pour le système « ~a »" -#: gnu/packages.scm:147 -#, scheme-format -msgid "cannot access `~a': ~a~%" -msgstr "impossible d'accéder à « ~a »: ~a~%" - -#: gnu/packages.scm:301 +#: gnu/packages.scm:236 #, scheme-format msgid "ambiguous package specification `~a'~%" msgstr "spécification du paquet « ~a » ambiguë~%" -#: gnu/packages.scm:302 +#: gnu/packages.scm:237 #, scheme-format -msgid "choosing ~a from ~a~%" -msgstr "choix de ~a parmi ~a~%" +msgid "choosing ~a@~a from ~a~%" +msgstr "choix de ~a@~a parmi ~a~%" -#: gnu/packages.scm:306 -#, scheme-format -msgid "deprecated NAME-VERSION syntax; use NAME@VERSION instead~%" -msgstr "syntaxe NOM-VERSION dépréciée. Utilisez plutôt NOM@VERSION~%" - -#: gnu/packages.scm:311 guix/scripts/package.scm:272 +#: gnu/packages.scm:242 guix/scripts/package.scm:272 #, scheme-format msgid "package '~a' has been superseded by '~a'~%" msgstr "le paquet « ~a » a été remplacé par « ~a »~%" -#: gnu/packages.scm:318 +#: gnu/packages.scm:249 #, scheme-format msgid "~A: package not found for version ~a~%" msgstr "~A: paquet introuvable pour la version ~a~%" -#: gnu/packages.scm:328 +#: gnu/packages.scm:250 #, scheme-format msgid "~A: unknown package~%" msgstr "~A: paquet inconnu~%" -#: gnu/packages.scm:356 +#: gnu/packages.scm:278 #, scheme-format msgid "package `~a' lacks output `~a'~%" msgstr "le paquet « ~a » requiert la sortie « ~a »~%" -#: gnu/services.scm:542 +#: gnu/services.scm:186 +#, scheme-format +msgid "~a: no value specified for service of type '~a'" +msgstr "~a: aucune valeur spécifiée pour le service de type « ~a »" + +#: gnu/services.scm:627 #, scheme-format msgid "no target of type '~a' for service ~s" msgstr "pas de cible de type « ~a » pour le service ~s" -#: gnu/services.scm:553 gnu/services.scm:614 +#: gnu/services.scm:638 gnu/services.scm:699 #, scheme-format msgid "more than one target service of type '~a'" msgstr "plus d'un service cible de type « ~a »" -#: gnu/services.scm:604 +#: gnu/services.scm:689 #, scheme-format msgid "service of type '~a' not found" msgstr "service de type « ~a » pas trouvé" -#: gnu/system.scm:522 +#: gnu/system.scm:270 +#, scheme-format +msgid "unrecognized boot parameters for '~a'~%" +msgstr "paramètres de démarrage non reconnus pour « ~a »~%" + +#: gnu/system.scm:633 #, scheme-format msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%" msgstr "l'utilisation d'une chaîne pour le fichier « ~a » est dépréciée. Utilisez plutôt « plain-file »~%" -#: gnu/system.scm:538 +#: gnu/system.scm:649 #, scheme-format msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%" msgstr "l'utilisation d'une valeur monadic pour « ~a » est dépréciée. Utilisez plutôt « plain-file »~%" -#: gnu/system.scm:680 +#: gnu/system.scm:791 #, scheme-format msgid "~a: invalid locale name" msgstr "~a: nom d'environnement linguistique non valide" -#: gnu/system.scm:860 -msgid "/" -msgstr "/" - -#: gnu/system.scm:862 -#, scheme-format -msgid "unrecognized boot parameters for '~a'~%" -msgstr "paramètres de démarrage non reconnus pour « ~a »~%" - -#: gnu/services/shepherd.scm:165 +#: gnu/services/shepherd.scm:166 #, scheme-format msgid "service '~a' provided more than once" msgstr "service « ~a » fourni plus d'une fois" -#: gnu/services/shepherd.scm:180 +#: gnu/services/shepherd.scm:181 #, scheme-format msgid "service '~a' requires '~a', which is not provided by any service" msgstr "le service « ~a » requiert « ~a » qui n'est fourni pas aucun service" -#: gnu/system/shadow.scm:220 +#: gnu/system/shadow.scm:223 #, scheme-format msgid "supplementary group '~a' of user '~a' is undeclared" msgstr "le groupe supplémentaire « ~a » de l'utilisateur « ~a » n'est pas déclaré" -#: gnu/system/shadow.scm:230 +#: gnu/system/shadow.scm:233 #, scheme-format msgid "primary group '~a' of user '~a' is undeclared" msgstr "le groupe primaire « ~a » de l'utilisateur « ~a » n'est pas déclaré" -#: guix/scripts.scm:53 +#: guix/scripts.scm:56 #, scheme-format msgid "invalid argument: ~a~%" msgstr "argument non valide: ~a~%" -#: guix/scripts.scm:79 guix/scripts/download.scm:133 guix/scripts/gc.scm:164 +#: guix/scripts.scm:82 guix/scripts/download.scm:133 guix/scripts/gc.scm:164 #: guix/scripts/import/cran.scm:82 guix/scripts/import/elpa.scm:77 -#: guix/scripts/pull.scm:219 guix/scripts/lint.scm:1042 -#: guix/scripts/publish.scm:556 guix/scripts/edit.scm:81 -#: guix/scripts/graph.scm:436 +#: guix/scripts/lint.scm:1061 guix/scripts/publish.scm:811 +#: guix/scripts/edit.scm:81 guix/scripts/graph.scm:456 #, scheme-format msgid "~A: unrecognized option~%" msgstr "~A: option non reconnue~%" -#: guix/scripts/build.scm:121 +#: guix/scripts.scm:174 +#, scheme-format +msgid "Your Guix installation is ~a day old.\n" +msgid_plural "Your Guix installation is ~a days old.\n" +msgstr[0] "Votre installation Guix est vieille de ~a jour.\n" +msgstr[1] "Votre installation Guix est vieille de ~a jours.\n" + +#: guix/scripts.scm:179 +#, scheme-format +msgid "" +"Consider running 'guix pull' followed by\n" +"'~a' to get up-to-date packages and security updates.\n" +msgstr "" +"Envisagez d'exécuter « guix pull » suivi de\n" +"« ~a » pour obtenir des paquets à jour et des mises à jour de sécurité.\n" + +#: guix/scripts/build.scm:124 #, scheme-format msgid "failed to create GC root `~a': ~a~%" msgstr "impossible de créer la racine du GC « ~a »: ~a~%" -#: guix/scripts/build.scm:196 +#: guix/scripts/build.scm:206 #, scheme-format msgid "invalid replacement specification: ~s~%" msgstr "spécification de remplacement invalide: ~s~%" -#: guix/scripts/build.scm:253 +#: guix/scripts/build.scm:263 msgid "" "\n" " --with-source=SOURCE\n" @@ -166,7 +172,7 @@ msgstr "" " --with-source=SOURCE\n" " utiliser la SOURCE donnée pour compiler le paquet correspondant" -#: guix/scripts/build.scm:256 +#: guix/scripts/build.scm:266 msgid "" "\n" " --with-input=PACKAGE=REPLACEMENT\n" @@ -176,7 +182,7 @@ msgstr "" " --with-input=PAQUET=REMPLACEMENT\n" " remplacer le paquet de dépendance PAQUET par REMPLACEMENT" -#: guix/scripts/build.scm:259 +#: guix/scripts/build.scm:269 msgid "" "\n" " --with-graft=PACKAGE=REPLACEMENT\n" @@ -186,12 +192,12 @@ msgstr "" " --with-graft=PAQUET=REMPLACEMENT\n" " greffer le paquet REMPLACEMENT sur les paquets qui font référence à PAQUET" -#: guix/scripts/build.scm:284 +#: guix/scripts/build.scm:294 #, scheme-format msgid "transformation '~a' had no effect on ~a~%" msgstr "la transformation « ~a » n'a pas d'effet sur ~a~%" -#: guix/scripts/build.scm:302 +#: guix/scripts/build.scm:312 msgid "" "\n" " -L, --load-path=DIR prepend DIR to the package module search path" @@ -199,7 +205,7 @@ msgstr "" "\n" " -L, --load-path=REP préfixer le chemin de recherche par REP " -#: guix/scripts/build.scm:304 +#: guix/scripts/build.scm:314 msgid "" "\n" " -K, --keep-failed keep build tree of failed builds" @@ -207,7 +213,7 @@ msgstr "" "\n" " -K, --keep-failed garder l'arbre de compilation pour les compilations ayant échoué" -#: guix/scripts/build.scm:306 +#: guix/scripts/build.scm:316 msgid "" "\n" " -k, --keep-going keep going when some of the derivations fail" @@ -215,7 +221,7 @@ msgstr "" "\n" " -k, --keep-going continuer si certaines dérivations échouent" -#: guix/scripts/build.scm:308 +#: guix/scripts/build.scm:318 msgid "" "\n" " -n, --dry-run do not build the derivations" @@ -223,7 +229,7 @@ msgstr "" "\n" " -n, --dry-run ne pas compiler les dérivations" -#: guix/scripts/build.scm:310 +#: guix/scripts/build.scm:320 msgid "" "\n" " --fallback fall back to building when the substituter fails" @@ -231,7 +237,7 @@ msgstr "" "\n" " --fallback revenir à la compilation quand le substitut échoue" -#: guix/scripts/build.scm:312 +#: guix/scripts/build.scm:322 msgid "" "\n" " --no-substitutes build instead of resorting to pre-built substitutes" @@ -239,7 +245,7 @@ msgstr "" "\n" " --no-substitutes compiler plutôt que recourir à des substituts pré-compilés" -#: guix/scripts/build.scm:314 guix/scripts/size.scm:220 +#: guix/scripts/build.scm:324 guix/scripts/size.scm:222 msgid "" "\n" " --substitute-urls=URLS\n" @@ -249,7 +255,7 @@ msgstr "" " --substitute-urls=URLS\n" " récupérer les substituts depuis les URLS si elles sont autorisées" -#: guix/scripts/build.scm:317 +#: guix/scripts/build.scm:327 msgid "" "\n" " --no-grafts do not graft packages" @@ -257,7 +263,7 @@ msgstr "" "\n" " --no-grafts ne pas greffer les paquets" -#: guix/scripts/build.scm:319 +#: guix/scripts/build.scm:329 msgid "" "\n" " --no-build-hook do not attempt to offload builds via the build hook" @@ -265,7 +271,7 @@ msgstr "" "\n" " --no-build-hook ne pas essayer de décharger les compilations via le hook de compilation" -#: guix/scripts/build.scm:321 +#: guix/scripts/build.scm:331 msgid "" "\n" " --max-silent-time=SECONDS\n" @@ -275,7 +281,7 @@ msgstr "" " --max-silent-time=N\n" " marquer la compilation comme ayant échouée après N secondes de silence" -#: guix/scripts/build.scm:324 +#: guix/scripts/build.scm:334 msgid "" "\n" " --timeout=SECONDS mark the build as failed after SECONDS of activity" @@ -283,7 +289,7 @@ msgstr "" "\n" " --timeout=N marquer la compilation comme ayant échouée après N secondes d'activité" -#: guix/scripts/build.scm:326 +#: guix/scripts/build.scm:336 msgid "" "\n" " --verbosity=LEVEL use the given verbosity LEVEL" @@ -291,7 +297,7 @@ msgstr "" "\n" " --verbosity=NIVEAU utiliser le NIVEAU de verbosité donné" -#: guix/scripts/build.scm:328 +#: guix/scripts/build.scm:338 msgid "" "\n" " --rounds=N build N times in a row to detect non-determinism" @@ -299,7 +305,7 @@ msgstr "" "\n" " --rounds=N compiler N fois de suite pour détecter les non déterminismes" -#: guix/scripts/build.scm:330 +#: guix/scripts/build.scm:340 msgid "" "\n" " -c, --cores=N allow the use of up to N CPU cores for the build" @@ -307,7 +313,7 @@ msgstr "" "\n" " -c, --cores=N utiliser jusqu'à N cœurs CPU pour la compilation" -#: guix/scripts/build.scm:332 +#: guix/scripts/build.scm:342 msgid "" "\n" " -M, --max-jobs=N allow at most N build jobs" @@ -315,12 +321,12 @@ msgstr "" "\n" " -M, --max-jobs=N autoriser au plus N tâches de compilation" -#: guix/scripts/build.scm:438 guix/scripts/build.scm:445 +#: guix/scripts/build.scm:448 guix/scripts/build.scm:455 #, scheme-format msgid "not a number: '~a' option argument: ~a~%" msgstr "pas un nombre: argument d'option « ~a »: ~a~%" -#: guix/scripts/build.scm:465 +#: guix/scripts/build.scm:474 msgid "" "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" @@ -328,7 +334,7 @@ msgstr "" "Usage: guix build [OPTION]... PAQUET-OU-DERIVATION...\n" "Compiler le PAQUET-OU-DERIVATION donné et retourner leur chemin de sortie.\n" -#: guix/scripts/build.scm:467 +#: guix/scripts/build.scm:476 msgid "" "\n" " -e, --expression=EXPR build the package or derivation EXPR evaluates to" @@ -336,7 +342,7 @@ msgstr "" "\n" " -e, --expression=EXPR compiler le paquet ou la dérivation évalué par EXPR" -#: guix/scripts/build.scm:469 +#: guix/scripts/build.scm:478 msgid "" "\n" " -f, --file=FILE build the package or derivation that the code within\n" @@ -346,7 +352,7 @@ msgstr "" " -f, --file=FICHIER compiler le paquet ou la dérivation qui est évaluée\n" " par le code dans FICHIER" -#: guix/scripts/build.scm:472 +#: guix/scripts/build.scm:481 msgid "" "\n" " -S, --source build the packages' source derivations" @@ -354,7 +360,7 @@ msgstr "" "\n" " -S, --source compiler les dérivations de source du paquet" -#: guix/scripts/build.scm:474 +#: guix/scripts/build.scm:483 msgid "" "\n" " --sources[=TYPE] build source derivations; TYPE may optionally be one\n" @@ -364,7 +370,7 @@ msgstr "" " --sources[=TYPE] compiler les dérivations sources. TYPE peut optionnellement\n" " être « package », « all » (défaut) ou « transitive »" -#: guix/scripts/build.scm:477 +#: guix/scripts/build.scm:486 guix/scripts/pack.scm:330 msgid "" "\n" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" @@ -372,7 +378,7 @@ msgstr "" "\n" " -s, --system=SYSTÈME essayer de compiler pour le SYSTÈME donné, par exemple « i686-linux »" -#: guix/scripts/build.scm:479 +#: guix/scripts/build.scm:488 guix/scripts/pack.scm:332 msgid "" "\n" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" @@ -380,7 +386,7 @@ msgstr "" "\n" " --target=TRIPLET effectuer une compilation croisée pour TRIPLET, par exemple « armel-linux-gnu »" -#: guix/scripts/build.scm:481 +#: guix/scripts/build.scm:490 msgid "" "\n" " -d, --derivations return the derivation paths of the given packages" @@ -388,7 +394,7 @@ msgstr "" "\n" " -d, --derivations retourner les chemins de dérivation pour les paquets donnés" -#: guix/scripts/build.scm:483 +#: guix/scripts/build.scm:492 msgid "" "\n" " --check rebuild items to check for non-determinism issues" @@ -396,7 +402,15 @@ msgstr "" "\n" " --check recompiler les éléments pour détecter des problèmes de non déterminisme" -#: guix/scripts/build.scm:485 +#: guix/scripts/build.scm:494 +msgid "" +"\n" +" --repair repair the specified items" +msgstr "" +"\n" +" --repair réparer les éléments spécifiés" + +#: guix/scripts/build.scm:496 msgid "" "\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n" @@ -406,7 +420,7 @@ msgstr "" " -r, --root=FICHIER faire de FICHIER un lien symbolique pointant sur le résultat\n" " et l'enregistrer en tant que racine du garbage collector" -#: guix/scripts/build.scm:488 +#: guix/scripts/build.scm:499 msgid "" "\n" " -q, --quiet do not show the build log" @@ -414,7 +428,7 @@ msgstr "" "\n" " -q, --quiet ne pas montrer le journal de compilation" -#: guix/scripts/build.scm:490 +#: guix/scripts/build.scm:501 msgid "" "\n" " --log-file return the log file names for the given derivations" @@ -422,14 +436,15 @@ msgstr "" "\n" " --log-file retourner les fichiers de journalisation pour les dérivations données" -#: guix/scripts/build.scm:497 guix/scripts/download.scm:81 +#: guix/scripts/build.scm:508 guix/scripts/download.scm:81 #: guix/scripts/package.scm:419 guix/scripts/gc.scm:74 -#: guix/scripts/hash.scm:59 guix/scripts/import.scm:91 -#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:83 -#: guix/scripts/substitute.scm:836 guix/scripts/system.scm:748 -#: guix/scripts/lint.scm:991 guix/scripts/publish.scm:74 -#: guix/scripts/edit.scm:44 guix/scripts/size.scm:228 -#: guix/scripts/graph.scm:416 guix/scripts/challenge.scm:182 +#: guix/scripts/hash.scm:59 guix/scripts/import.scm:92 +#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:94 +#: guix/scripts/substitute.scm:810 guix/scripts/system.scm:742 +#: guix/scripts/lint.scm:1010 guix/scripts/publish.scm:93 +#: guix/scripts/edit.scm:44 guix/scripts/size.scm:230 +#: guix/scripts/graph.scm:436 guix/scripts/challenge.scm:227 +#: guix/scripts/copy.scm:121 guix/scripts/pack.scm:341 #: guix/scripts/container.scm:33 guix/scripts/container/exec.scm:43 msgid "" "\n" @@ -438,14 +453,15 @@ msgstr "" "\n" " -h, --help afficher cette aide et quitter" -#: guix/scripts/build.scm:499 guix/scripts/download.scm:83 +#: guix/scripts/build.scm:510 guix/scripts/download.scm:83 #: guix/scripts/package.scm:421 guix/scripts/gc.scm:76 -#: guix/scripts/hash.scm:61 guix/scripts/import.scm:93 -#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:85 -#: guix/scripts/substitute.scm:838 guix/scripts/system.scm:750 -#: guix/scripts/lint.scm:995 guix/scripts/publish.scm:76 -#: guix/scripts/edit.scm:46 guix/scripts/size.scm:230 -#: guix/scripts/graph.scm:418 guix/scripts/challenge.scm:184 +#: guix/scripts/hash.scm:61 guix/scripts/import.scm:94 +#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:96 +#: guix/scripts/substitute.scm:812 guix/scripts/system.scm:744 +#: guix/scripts/lint.scm:1014 guix/scripts/publish.scm:95 +#: guix/scripts/edit.scm:46 guix/scripts/size.scm:232 +#: guix/scripts/graph.scm:438 guix/scripts/challenge.scm:229 +#: guix/scripts/copy.scm:123 guix/scripts/pack.scm:343 #: guix/scripts/container.scm:35 guix/scripts/container/exec.scm:45 msgid "" "\n" @@ -454,7 +470,7 @@ msgstr "" "\n" " -V, --version afficher les informations sur la version et quitter" -#: guix/scripts/build.scm:526 +#: guix/scripts/build.scm:537 #, scheme-format msgid "" "invalid argument: '~a' option argument: ~a, ~\n" @@ -463,21 +479,26 @@ msgstr "" "argument invalide: argument en option « ~a »: ~a, ~\n" "doit être « package », « all » ou « transitive »~%" -#: guix/scripts/build.scm:573 +#: guix/scripts/build.scm:590 #, scheme-format msgid "~s: not something we can build~%" msgstr "~s: pas quelque chose qu'on sait compiler~%" -#: guix/scripts/build.scm:627 +#: guix/scripts/build.scm:644 #, scheme-format msgid "~a: warning: package '~a' has no source~%" msgstr "~a: attention: le paquet « ~a » n'a pas de source~%" -#: guix/scripts/build.scm:661 +#: guix/scripts/build.scm:678 #, scheme-format msgid "no build log for '~a'~%" msgstr "aucun journal de compilation pour « ~a »~%" +#: guix/discovery.scm:56 +#, scheme-format +msgid "cannot access `~a': ~a~%" +msgstr "impossible d'accéder à « ~a »: ~a~%" + #: guix/scripts/download.scm:67 msgid "" "Usage: guix download [OPTION] URL\n" @@ -526,8 +547,8 @@ msgstr "" msgid "unsupported hash format: ~a~%" msgstr "format d'empreinte non supporté: ~a~%" -#: guix/scripts/download.scm:136 guix/scripts/package.scm:879 -#: guix/scripts/publish.scm:558 +#: guix/scripts/download.scm:136 guix/scripts/package.scm:882 +#: guix/scripts/publish.scm:813 #, scheme-format msgid "~A: extraneous argument~%" msgstr "~A: argument superflu~%" @@ -582,8 +603,8 @@ msgstr "la génération ~a n'est pas supprimée car elle est actuelle~%" msgid "no matching generation~%" msgstr "aucune génération correspondante~%" -#: guix/scripts/package.scm:188 guix/scripts/package.scm:699 -#: guix/scripts/system.scm:549 +#: guix/scripts/package.scm:188 guix/scripts/package.scm:700 +#: guix/scripts/system.scm:530 #, scheme-format msgid "invalid syntax: ~a~%" msgstr "syntaxe non valide: ~a~%" @@ -745,7 +766,7 @@ msgstr "" "\n" " --bootstrap utiliser le programme d'amorçage Guile pour compiler le profil" -#: guix/scripts/package.scm:401 guix/scripts/pull.scm:76 +#: guix/scripts/package.scm:401 guix/scripts/pull.scm:86 msgid "" "\n" " --verbose produce verbose output" @@ -794,17 +815,17 @@ msgstr "" msgid "~a: unsupported kind of search path~%" msgstr "~a: type de chemin de recherche non supporté~%" -#: guix/scripts/package.scm:790 +#: guix/scripts/package.scm:791 #, scheme-format msgid "cannot switch to generation '~a'~%" msgstr "impossible de passer à la génération « ~a »~%" -#: guix/scripts/package.scm:806 +#: guix/scripts/package.scm:807 #, scheme-format msgid "would install new manifest from '~a' with ~d entries~%" msgstr "installerait le nouveau manifeste depuis « ~a » avec ~d entrées~%" -#: guix/scripts/package.scm:808 +#: guix/scripts/package.scm:809 #, scheme-format msgid "installing new manifest from '~a' with ~d entries~%" msgstr "installation du nouveau manifeste depuis « ~a » avec ~d entrées~%" @@ -976,18 +997,18 @@ msgstr "" msgid "unrecognized option: ~a~%" msgstr "option non reconnue: ~a~%" -#: guix/scripts/hash.scm:152 guix/ui.scm:478 +#: guix/scripts/hash.scm:155 guix/ui.scm:264 guix/ui.scm:498 guix/ui.scm:551 #, scheme-format msgid "~a~%" msgstr "~a~%" -#: guix/scripts/hash.scm:155 guix/scripts/system.scm:879 +#: guix/scripts/hash.scm:158 guix/scripts/system.scm:879 #: guix/scripts/system.scm:886 guix/scripts/system.scm:893 #, scheme-format msgid "wrong number of arguments~%" msgstr "nombre d'arguments incorrect~%" -#: guix/scripts/import.scm:85 +#: guix/scripts/import.scm:86 msgid "" "Usage: guix import IMPORTER ARGS ...\n" "Run IMPORTER with ARGS.\n" @@ -995,21 +1016,21 @@ msgstr "" "Usage: guix import IMPORTEUR ARGS...\n" "Lancer IMPORTATEUR avec ARGS.\n" -#: guix/scripts/import.scm:88 +#: guix/scripts/import.scm:89 msgid "IMPORTER must be one of the importers listed below:\n" msgstr "IMPORTATEUR doit être un des importateurs listés ci-dessous:\n" -#: guix/scripts/import.scm:102 +#: guix/scripts/import.scm:103 #, scheme-format msgid "guix import: missing importer name~%" msgstr "guix import: nom d'importateur manquant~%" -#: guix/scripts/import.scm:122 +#: guix/scripts/import.scm:123 #, scheme-format msgid "'~a' import failed~%" msgstr "l'importateur « ~a » a échoué~%" -#: guix/scripts/import.scm:123 +#: guix/scripts/import.scm:124 #, scheme-format msgid "~a: invalid importer~%" msgstr "~a: importateur non valide~%" @@ -1082,7 +1103,7 @@ msgstr "" msgid "failed to download package '~a'~%" msgstr "échec lors du téléchargement du paquet « ~a »~%" -#: guix/scripts/pull.scm:74 +#: guix/scripts/pull.scm:84 msgid "" "Usage: guix pull [OPTION]...\n" "Download and deploy the latest version of Guix.\n" @@ -1090,7 +1111,7 @@ msgstr "" "Usage: guix pull [OPTION]...\n" "Télécharger et déployer la dernière version de Guix.\n" -#: guix/scripts/pull.scm:78 +#: guix/scripts/pull.scm:88 msgid "" "\n" " --url=URL download the Guix tarball from URL" @@ -1098,7 +1119,7 @@ msgstr "" "\n" " --url=URL télécharger le tarball de Guix depuis URL" -#: guix/scripts/pull.scm:80 +#: guix/scripts/pull.scm:90 msgid "" "\n" " --bootstrap use the bootstrap Guile to build the new Guix" @@ -1106,163 +1127,158 @@ msgstr "" "\n" " --bootstrap utiliser le programme d'amorçage Guile pour compiler le nouveau Guix" -#: guix/scripts/pull.scm:134 +#: guix/scripts/pull.scm:150 msgid "tarball did not produce a single source directory" msgstr "la tarball n'a produit aucun répertoire source" -#: guix/scripts/pull.scm:152 +#: guix/scripts/pull.scm:168 #, scheme-format msgid "unpacking '~a'...~%" msgstr "dépaquetage « ~a »...~%" -#: guix/scripts/pull.scm:161 +#: guix/scripts/pull.scm:177 msgid "failed to unpack source code" msgstr "échec du dépaquetage du code source" -#: guix/scripts/pull.scm:204 +#: guix/scripts/pull.scm:220 msgid "Guix already up to date\n" msgstr "Guix est déjà à jour\n" -#: guix/scripts/pull.scm:209 +#: guix/scripts/pull.scm:225 #, scheme-format msgid "updated ~a successfully deployed under `~a'~%" msgstr "~a a été mis à jour et déployé avec succès sous « ~a »~%" -#: guix/scripts/pull.scm:212 +#: guix/scripts/pull.scm:228 #, scheme-format msgid "failed to update Guix, check the build log~%" msgstr "échec de la mise à jour de Guix; consultez le journal de compilation~%" -#: guix/scripts/pull.scm:221 -#, scheme-format -msgid "~A: unexpected argument~%" -msgstr "~A: argument inattendu~%" - -#: guix/scripts/pull.scm:230 +#: guix/scripts/pull.scm:255 msgid "failed to download up-to-date source, exiting\n" msgstr "impossible de télécharger une source à jour; fin\n" -#: guix/scripts/substitute.scm:112 +#: guix/scripts/substitute.scm:114 #, scheme-format msgid "authentication and authorization of substitutes disabled!~%" msgstr "authentification et autorisation des substituts désactivées !~%" -#: guix/scripts/substitute.scm:187 +#: guix/scripts/substitute.scm:189 #, scheme-format msgid "download from '~a' failed: ~a, ~s~%" msgstr "le téléchargement depuis « ~a » a échoué: ~a, ~s~%" -#: guix/scripts/substitute.scm:200 +#: guix/scripts/substitute.scm:202 #, scheme-format msgid "while fetching ~a: server is somewhat slow~%" msgstr "pendant la récupération de ~a: le serveur est plutôt lent~%" -#: guix/scripts/substitute.scm:202 +#: guix/scripts/substitute.scm:204 #, scheme-format msgid "try `--no-substitutes' if the problem persists~%" msgstr "essayez l'option « --no-substitutes » si le problème persiste~%" -#: guix/scripts/substitute.scm:220 +#: guix/scripts/substitute.scm:222 #, scheme-format msgid "unsupported substitute URI scheme: ~a~%" msgstr "schéma de substitution URI non supporté: ~a~%" -#: guix/scripts/substitute.scm:254 +#: guix/scripts/substitute.scm:257 #, scheme-format msgid "while fetching '~a': ~a (~s)~%" msgstr "pendant la récupération de « ~a »: ~a (~s)~%" -#: guix/scripts/substitute.scm:259 +#: guix/scripts/substitute.scm:262 #, scheme-format msgid "ignoring substitute server at '~s'~%" msgstr "ignore le serveur de substitution à « ~s »~%" -#: guix/scripts/substitute.scm:309 +#: guix/scripts/substitute.scm:312 #, scheme-format msgid "signature version must be a number: ~s~%" msgstr "la version de la signature doit être un nombre: ~s~%" -#: guix/scripts/substitute.scm:313 +#: guix/scripts/substitute.scm:316 #, scheme-format msgid "unsupported signature version: ~a~%" msgstr "version de signature non supportée: ~a~%" -#: guix/scripts/substitute.scm:321 +#: guix/scripts/substitute.scm:324 #, scheme-format msgid "signature is not a valid s-expression: ~s~%" msgstr "la signature n'est pas une s-expression valide: ~s~%" -#: guix/scripts/substitute.scm:325 +#: guix/scripts/substitute.scm:328 #, scheme-format msgid "invalid format of the signature field: ~a~%" msgstr "format invalide du champ de signature: ~a~%" -#: guix/scripts/substitute.scm:360 +#: guix/scripts/substitute.scm:363 #, scheme-format msgid "invalid signature for '~a'~%" msgstr "signature non valide pour « ~a »~%" -#: guix/scripts/substitute.scm:362 +#: guix/scripts/substitute.scm:365 #, scheme-format msgid "hash mismatch for '~a'~%" msgstr "l'empreinte ne correspond pas pour « ~a »~%" -#: guix/scripts/substitute.scm:364 +#: guix/scripts/substitute.scm:367 #, scheme-format msgid "'~a' is signed with an unauthorized key~%" msgstr "« ~a » est signé avec une clé non autorisée~%" -#: guix/scripts/substitute.scm:366 +#: guix/scripts/substitute.scm:369 #, scheme-format msgid "signature on '~a' is corrupt~%" msgstr "la signature de « ~a » est corrompue~%" -#: guix/scripts/substitute.scm:404 +#: guix/scripts/substitute.scm:407 #, scheme-format msgid "substitute at '~a' lacks a signature~%" msgstr "le substitut à « ~a » n'a pas de signature~%" -#: guix/scripts/substitute.scm:411 +#: guix/scripts/substitute.scm:414 #, scheme-format msgid "Found valid signature for ~a~%" msgstr "Signature valide trouvée pour ~a~%" -#: guix/scripts/substitute.scm:414 +#: guix/scripts/substitute.scm:417 #, scheme-format msgid "From ~a~%" msgstr "De ~a~%" -#: guix/scripts/substitute.scm:454 +#: guix/scripts/substitute.scm:451 #, scheme-format msgid "'~a' does not name a store item~%" msgstr "« ~a » ne nomme pas un élément du stockage~%" -#: guix/scripts/substitute.scm:600 +#: guix/scripts/substitute.scm:599 #, scheme-format msgid "updating list of substitutes from '~a'... ~5,1f%" msgstr "mise à jour de la liste des substituts depuis « ~a »... ~5,1f%" -#: guix/scripts/substitute.scm:655 +#: guix/scripts/substitute.scm:654 #, scheme-format msgid "~s: unsupported server URI scheme~%" msgstr "~s: schéma de URI serveur non supporté~%" -#: guix/scripts/substitute.scm:665 +#: guix/scripts/substitute.scm:664 #, scheme-format msgid "'~a' uses different store '~a'; ignoring it~%" msgstr "« ~a » utilise un stockage « ~a » différent. Il est ignoré~%" -#: guix/scripts/substitute.scm:810 +#: guix/scripts/substitute.scm:784 #, scheme-format msgid "host name lookup error: ~a~%" msgstr "erreur lors de la consultation du nom d'hôte: ~a~%" -#: guix/scripts/substitute.scm:815 +#: guix/scripts/substitute.scm:789 #, scheme-format msgid "TLS error in procedure '~a': ~a~%" msgstr "erreur TLS dans la procédure « ~a »: ~a~%" -#: guix/scripts/substitute.scm:826 +#: guix/scripts/substitute.scm:800 msgid "" "Usage: guix substitute [OPTION]...\n" "Internal tool to substitute a pre-built binary to a local build.\n" @@ -1270,7 +1286,7 @@ msgstr "" "Usage: guix substitute [OPTION]...\n" "Outil interne pour substituer un binaire pré-compilé à une compilation locale.\n" -#: guix/scripts/substitute.scm:828 +#: guix/scripts/substitute.scm:802 msgid "" "\n" " --query report on the availability of substitutes for the\n" @@ -1281,7 +1297,7 @@ msgstr "" " noms de fichiers de dépôt passés sur l'entrée\n" " standard" -#: guix/scripts/substitute.scm:831 +#: guix/scripts/substitute.scm:805 msgid "" "\n" " --substitute STORE-FILE DESTINATION\n" @@ -1296,16 +1312,21 @@ msgstr "" #. TRANSLATORS: The second part of this message looks like #. "(4.1MiB installed)"; it shows the size of the package once #. installed. -#: guix/scripts/substitute.scm:904 +#: guix/scripts/substitute.scm:878 #, scheme-format msgid "Downloading ~a~:[~*~; (~a installed)~]...~%" msgstr "Téléchargement de ~a~:[~*~; (~a installé)~]...~%" -#: guix/scripts/substitute.scm:961 +#: guix/scripts/substitute.scm:935 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n" msgstr "l'ACL pour l'import d'archives ne semble pas initialisée ; les substituts pourraient être indisponibles\n" -#: guix/scripts/substitute.scm:1057 +#: guix/scripts/substitute.scm:985 +#, scheme-format +msgid "~a: invalid URI~%" +msgstr "~a: URI invalide~%" + +#: guix/scripts/substitute.scm:1043 #, scheme-format msgid "~a: unrecognized options~%" msgstr "~a: options non reconnues~%" @@ -1344,141 +1365,141 @@ msgstr "" msgid "wrong arguments" msgstr "mauvais arguments" -#: guix/scripts/system.scm:109 +#: guix/scripts/system.scm:133 #, scheme-format msgid "failed to register '~a' under '~a'~%" msgstr "impossible d'enregistrer « ~a » sous « ~a »~%" -#: guix/scripts/system.scm:142 +#: guix/scripts/system.scm:166 #, scheme-format msgid "failed to install GRUB on device '~a'~%" msgstr "échec de l'installation de GRUB sur le périphérique « ~a »~%" -#: guix/scripts/system.scm:160 +#: guix/scripts/system.scm:184 #, scheme-format msgid "initializing the current root file system~%" msgstr "initialisation du système de fichier racine courant~%" -#: guix/scripts/system.scm:174 +#: guix/scripts/system.scm:198 #, scheme-format msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%" msgstr "n'est pas exécuté en tant que « root » donc le propriétaire de « ~a » pourrait être incorrect !~%" -#: guix/scripts/system.scm:238 +#: guix/scripts/system.scm:239 #, scheme-format msgid "while talking to shepherd: ~a~%" msgstr "en parlant à shepherd: ~a~%" -#: guix/scripts/system.scm:245 +#: guix/scripts/system.scm:246 #, scheme-format msgid "service '~a' could not be found~%" msgstr "service: « ~a » introuvable~%" -#: guix/scripts/system.scm:248 +#: guix/scripts/system.scm:249 #, scheme-format msgid "service '~a' does not have an action '~a'~%" msgstr "le service « ~a » n'a pas d'action « ~a »~%" -#: guix/scripts/system.scm:252 +#: guix/scripts/system.scm:253 #, scheme-format msgid "exception caught while executing '~a' on service '~a':~%" msgstr "exception interceptée pendant l'exécution de « ~a » sur le service « ~a »:~%" -#: guix/scripts/system.scm:260 +#: guix/scripts/system.scm:261 #, scheme-format msgid "something went wrong: ~s~%" msgstr "quelque chose s'est mal passé: ~s~%" -#: guix/scripts/system.scm:263 +#: guix/scripts/system.scm:264 #, scheme-format msgid "shepherd error~%" msgstr "erreur de shepherd~%" -#: guix/scripts/system.scm:280 +#: guix/scripts/system.scm:281 #, scheme-format msgid "failed to obtain list of shepherd services~%" msgstr "erreur en essayant d'obtenir la liste des services de shepherd~%" -#: guix/scripts/system.scm:300 +#: guix/scripts/system.scm:301 #, scheme-format msgid "unloading service '~a'...~%" msgstr "déchargement du service « ~a »...~%" -#: guix/scripts/system.scm:308 +#: guix/scripts/system.scm:309 #, scheme-format msgid "loading new services:~{ ~a~}...~%" msgstr "Chargement des nouveaux services:~{ ~a~}...~%" -#: guix/scripts/system.scm:332 +#: guix/scripts/system.scm:333 #, scheme-format msgid "activating system...~%" msgstr "activation du système...~%" -#: guix/scripts/system.scm:425 +#: guix/scripts/system.scm:408 #, scheme-format msgid "cannot switch to system generation '~a'~%" msgstr "impossible de passer à la génération « ~a » du système~%" -#: guix/scripts/system.scm:459 +#: guix/scripts/system.scm:441 #, scheme-format msgid "failed to re-install GRUB configuration file: '~a'~%" msgstr "échec à la ré-installation du fichier de configuration de GRUB: « ~a »~%" -#: guix/scripts/system.scm:489 +#: guix/scripts/system.scm:471 msgid "the DAG of services" msgstr "le graphe orienté acyclique (DAG) des services" -#: guix/scripts/system.scm:502 +#: guix/scripts/system.scm:484 msgid "the dependency graph of shepherd services" msgstr "le graphique des dépendances des services de shepherd" -#: guix/scripts/system.scm:526 +#: guix/scripts/system.scm:507 #, scheme-format msgid " file name: ~a~%" msgstr " nom de fichier: ~a~%" -#: guix/scripts/system.scm:527 +#: guix/scripts/system.scm:508 #, scheme-format msgid " canonical file name: ~a~%" msgstr " nom de fichier canonique: ~a~%" #. TRANSLATORS: Please preserve the two-space indentation. -#: guix/scripts/system.scm:529 +#: guix/scripts/system.scm:510 #, scheme-format msgid " label: ~a~%" msgstr " étiquette: ~a~%" -#: guix/scripts/system.scm:530 +#: guix/scripts/system.scm:511 #, scheme-format msgid " root device: ~a~%" msgstr " périphérique racine: ~a~%" -#: guix/scripts/system.scm:531 +#: guix/scripts/system.scm:512 #, scheme-format msgid " kernel: ~a~%" msgstr " noyau: ~a~%" -#: guix/scripts/system.scm:588 +#: guix/scripts/system.scm:569 #, scheme-format msgid "~a not found: 'guix pull' was never run~%" msgstr "~a pas trouvé: « guix pull » n'a jamais été exécuté~%" -#: guix/scripts/system.scm:589 +#: guix/scripts/system.scm:570 #, scheme-format msgid "Consider running 'guix pull' before 'reconfigure'.~%" msgstr "Envisagez d'exécuter « guix pull » avant « reconfigure ».~%" -#: guix/scripts/system.scm:590 +#: guix/scripts/system.scm:571 #, scheme-format msgid "Failing to do that may downgrade your system!~%" msgstr "Si vous ne le faites pas, votre système pourrait être amené à une version inférieure !~%" -#: guix/scripts/system.scm:661 +#: guix/scripts/system.scm:646 #, scheme-format msgid "initializing operating system under '~a'...~%" msgstr "initialisation du système d'exploitation sous « ~a »...~%" -#: guix/scripts/system.scm:700 +#: guix/scripts/system.scm:690 msgid "" "Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE]\n" "Build the operating system declared in FILE according to ACTION.\n" @@ -1488,59 +1509,59 @@ msgstr "" "Compiler le système d'exploitation déclaré dans FICHER en suivant ACTION.\n" "Certaines ACTIONS supportent des ARGUMENTS supplémentaires.\n" -#: guix/scripts/system.scm:704 guix/scripts/container.scm:28 +#: guix/scripts/system.scm:694 guix/scripts/container.scm:28 msgid "The valid values for ACTION are:\n" msgstr "Les valeurs possibles pour ACTION sont:\n" -#: guix/scripts/system.scm:706 +#: guix/scripts/system.scm:696 msgid " reconfigure switch to a new operating system configuration\n" msgstr " reconfigure basculer vers une nouvelle configuration du système d'exploitation\n" -#: guix/scripts/system.scm:708 +#: guix/scripts/system.scm:698 msgid " roll-back switch to the previous operating system configuration\n" msgstr " roll-back basculer vers la configuration du système d'exploitation précédente\n" -#: guix/scripts/system.scm:710 +#: guix/scripts/system.scm:700 msgid " switch-generation switch to an existing operating system configuration\n" msgstr " switch-generation basculer vers une configuration du système d'exploitation existante\n" -#: guix/scripts/system.scm:712 +#: guix/scripts/system.scm:702 msgid " list-generations list the system generations\n" msgstr " list-generations lister les générations du système\n" -#: guix/scripts/system.scm:714 +#: guix/scripts/system.scm:704 msgid " build build the operating system without installing anything\n" msgstr " build compiler le système d'exploitation sans rien installer\n" -#: guix/scripts/system.scm:716 +#: guix/scripts/system.scm:706 msgid " container build a container that shares the host's store\n" msgstr " container compiler un conteneur qui partage le stockage de l'hôte\n" -#: guix/scripts/system.scm:718 +#: guix/scripts/system.scm:708 msgid " vm build a virtual machine image that shares the host's store\n" msgstr " vm compiler une machine virtuelle partageant le dépôt de l'hôte\n" -#: guix/scripts/system.scm:720 +#: guix/scripts/system.scm:710 msgid " vm-image build a freestanding virtual machine image\n" msgstr " vm-image compiler une image autonome de machine virtuelle\n" -#: guix/scripts/system.scm:722 +#: guix/scripts/system.scm:712 msgid " disk-image build a disk image, suitable for a USB stick\n" msgstr " disk-image compiler une image disque adaptée pour une clé USB\n" -#: guix/scripts/system.scm:724 +#: guix/scripts/system.scm:714 msgid " init initialize a root file system to run GNU\n" msgstr " init initialiser un système de fichier racine pour lancer GNU.\n" -#: guix/scripts/system.scm:726 +#: guix/scripts/system.scm:716 msgid " extension-graph emit the service extension graph in Dot format\n" msgstr " extension-graph produire le graphique d'extension de service au format Dot\n" -#: guix/scripts/system.scm:728 +#: guix/scripts/system.scm:718 msgid " shepherd-graph emit the graph of shepherd services in Dot format\n" msgstr " shepherd-graph produire le graphique des services de shepherd au format Dot\n" -#: guix/scripts/system.scm:732 +#: guix/scripts/system.scm:722 msgid "" "\n" " -d, --derivation return the derivation of the given system" @@ -1548,7 +1569,7 @@ msgstr "" "\n" " -d, --derivation retourner les dérivations pour le système donné" -#: guix/scripts/system.scm:734 +#: guix/scripts/system.scm:724 msgid "" "\n" " --on-error=STRATEGY\n" @@ -1558,7 +1579,7 @@ msgstr "" " --on-error=STRATÉGIE\n" " appliquer la STRATÉGIE quand une erreur survient en lisant le FICHIER" -#: guix/scripts/system.scm:737 +#: guix/scripts/system.scm:727 msgid "" "\n" " --image-size=SIZE for 'vm-image', produce an image of SIZE" @@ -1567,15 +1588,15 @@ msgstr "" " --image-size=TAILLE\n" " pour « vm-image », produire une image de TAILLE" -#: guix/scripts/system.scm:739 +#: guix/scripts/system.scm:729 msgid "" "\n" -" --no-grub for 'init', do not install GRUB" +" --no-bootloader for 'init', do not install a bootloader" msgstr "" "\n" -" --no-grub pour « init », ne pas installer GRUB" +" --no-bootloader pour « init », ne pas installer un chargeur de démarrage" -#: guix/scripts/system.scm:741 +#: guix/scripts/system.scm:731 msgid "" "\n" " --share=SPEC for 'vm', share host file system according to SPEC" @@ -1584,7 +1605,20 @@ msgstr "" " --share=SPEC pour « vm », partager le système de fichiers hôte selon\n" " SPEC" -#: guix/scripts/system.scm:743 +#: guix/scripts/system.scm:733 +msgid "" +"\n" +" -r, --root=FILE for 'vm', 'vm-image', 'disk-image', 'container',\n" +" and 'build', make FILE a symlink to the result, and\n" +" register it as a garbage collector root" +msgstr "" +"\n" +" -r, --root=FICHIER pour « vm », « vm-image », « disk-image », « container »\n" +" et « build », faire de FICHIER un lien symbolique pointant\n" +" sur le résultat et l'enregistrer en tant que racine du\n" +" ramasse-miettes" + +#: guix/scripts/system.scm:737 msgid "" "\n" " --expose=SPEC for 'vm', expose host file system according to SPEC" @@ -1593,7 +1627,7 @@ msgstr "" " --expose=SPEC pour « vm », exposer le système de fichiers hôte selon\n" " SPEC" -#: guix/scripts/system.scm:745 +#: guix/scripts/system.scm:739 msgid "" "\n" " --full-boot for 'vm', make a full boot sequence" @@ -1601,7 +1635,7 @@ msgstr "" "\n" " --full-boot pour « vm », accomplir une séquence complète de démarrage" -#: guix/scripts/system.scm:830 +#: guix/scripts/system.scm:827 #, scheme-format msgid "no configuration file specified~%" msgstr "aucun fichier de configuration spécifié~%" @@ -1626,20 +1660,20 @@ msgstr "système guix: nom de commande manquant~%" msgid "Try 'guix system --help' for more information.~%" msgstr "Essayez « guix system --help » pour plus d'informations.~%" -#: guix/scripts/lint.scm:133 +#: guix/scripts/lint.scm:135 #, scheme-format msgid "Available checkers:~%" msgstr "Vérificateurs disponibles:~%" -#: guix/scripts/lint.scm:157 +#: guix/scripts/lint.scm:159 msgid "description should not be empty" msgstr "la description ne devrait pas être vide" -#: guix/scripts/lint.scm:167 +#: guix/scripts/lint.scm:169 msgid "Texinfo markup in description is invalid" msgstr "l'utilisation de balises Texinfo dans la description est invalide" -#: guix/scripts/lint.scm:177 +#: guix/scripts/lint.scm:179 #, scheme-format msgid "" "description should not contain ~\n" @@ -1650,15 +1684,15 @@ msgstr "" #. TRANSLATORS: '@code' is Texinfo markup and must be kept #. as is. -#: guix/scripts/lint.scm:190 +#: guix/scripts/lint.scm:192 msgid "use @code or similar ornament instead of quotes" msgstr "utiliser @code ou une décoration similaire au lieu des guillemets" -#: guix/scripts/lint.scm:197 +#: guix/scripts/lint.scm:199 msgid "description should start with an upper-case letter or digit" msgstr "La description devrait commencer par une majuscule ou un chiffre" -#: guix/scripts/lint.scm:213 +#: guix/scripts/lint.scm:215 #, scheme-format msgid "" "sentences in description should be followed ~\n" @@ -1667,225 +1701,229 @@ msgstr "" "les phrases dans la description devraient être suivies ~\n" "par deux espaces. Infraction probable~p à ~{~a~^, ~}" -#: guix/scripts/lint.scm:231 +#: guix/scripts/lint.scm:233 #, scheme-format msgid "invalid description: ~s" msgstr "description invalide: ~s" -#: guix/scripts/lint.scm:256 +#: guix/scripts/lint.scm:277 #, scheme-format msgid "'~a' should probably be a native input" msgstr "« ~a » devrait sans doute être une entrée native" -#: guix/scripts/lint.scm:280 +#: guix/scripts/lint.scm:293 #, scheme-format msgid "'~a' should probably not be an input at all" msgstr "« ~a » ne devrait probablement pas être une entrée du tout" -#: guix/scripts/lint.scm:306 +#: guix/scripts/lint.scm:310 msgid "synopsis should not be empty" msgstr "le synopsis ne devrait pas être vide" -#: guix/scripts/lint.scm:314 +#: guix/scripts/lint.scm:318 msgid "no period allowed at the end of the synopsis" msgstr "un point n'est pas autorisé à la fin du synopsis" -#: guix/scripts/lint.scm:326 +#: guix/scripts/lint.scm:330 msgid "no article allowed at the beginning of the synopsis" msgstr "les articles ne sont pas permis au début du synopsis" -#: guix/scripts/lint.scm:333 +#: guix/scripts/lint.scm:337 msgid "synopsis should be less than 80 characters long" msgstr "le synopsis devrait être plus court que 80 caractères" -#: guix/scripts/lint.scm:339 +#: guix/scripts/lint.scm:343 msgid "synopsis should start with an upper-case letter or digit" msgstr "le synopsis devrait commencer par une majuscule ou un chiffre" -#: guix/scripts/lint.scm:346 +#: guix/scripts/lint.scm:350 msgid "synopsis should not start with the package name" msgstr "le synopsis ne devrait pas commencer par un nom de paquet" #: guix/scripts/lint.scm:360 +msgid "Texinfo markup in synopsis is invalid" +msgstr "la balise Texinfo dans le synopsis est invalide" + +#: guix/scripts/lint.scm:379 #, scheme-format msgid "invalid synopsis: ~s" msgstr "synopsis non valide: ~s" -#: guix/scripts/lint.scm:459 +#: guix/scripts/lint.scm:479 #, scheme-format msgid "URI ~a returned suspiciously small file (~a bytes)" msgstr "l'URI ~a a renvoyé un fichier étrangement petit (~a octets)" -#: guix/scripts/lint.scm:468 guix/scripts/lint.scm:480 +#: guix/scripts/lint.scm:488 guix/scripts/lint.scm:500 #, scheme-format msgid "URI ~a not reachable: ~a (~s)" msgstr "l'URI ~a n'a pu être atteinte: ~a (~s)" -#: guix/scripts/lint.scm:487 +#: guix/scripts/lint.scm:507 #, scheme-format msgid "URI ~a domain not found: ~a" msgstr "le domaine de l'URI ~a pas trouvé: ~a" -#: guix/scripts/lint.scm:495 +#: guix/scripts/lint.scm:515 #, scheme-format msgid "URI ~a unreachable: ~a" msgstr "l'URI ~a n'a pu être atteinte: ~a" -#: guix/scripts/lint.scm:504 guix/scripts/lint.scm:761 +#: guix/scripts/lint.scm:524 guix/scripts/lint.scm:780 #, scheme-format msgid "TLS certificate error: ~a" msgstr "erreur de certificat TLS: ~a" -#: guix/scripts/lint.scm:525 +#: guix/scripts/lint.scm:545 msgid "invalid value for home page" msgstr "valeur invalide pour la page d'accueil" -#: guix/scripts/lint.scm:528 +#: guix/scripts/lint.scm:548 #, scheme-format msgid "invalid home page URL: ~s" msgstr "URL de la page d'accueil invalide: ~s" -#: guix/scripts/lint.scm:548 +#: guix/scripts/lint.scm:568 msgid "file names of patches should start with the package name" msgstr "les noms de fichiers des correctifs devraient commencer par le nom du paquet" -#: guix/scripts/lint.scm:587 +#: guix/scripts/lint.scm:606 #, scheme-format msgid "~a: ~a: proposed synopsis: ~s~%" msgstr "~a: ~a: synopsis proposé: ~s~%" -#: guix/scripts/lint.scm:600 +#: guix/scripts/lint.scm:619 #, scheme-format msgid "~a: ~a: proposed description:~% \"~a\"~%" msgstr "~a: ~a: description proposée:~% « ~a »~%" -#: guix/scripts/lint.scm:642 +#: guix/scripts/lint.scm:661 msgid "all the source URIs are unreachable:" msgstr "toutes les URI sources sont inatteignables:" -#: guix/scripts/lint.scm:665 +#: guix/scripts/lint.scm:684 msgid "the source file name should contain the package name" msgstr "le nom du fichier source devrait contenir le nom du paquet" -#: guix/scripts/lint.scm:681 +#: guix/scripts/lint.scm:700 #, scheme-format msgid "URL should be 'mirror://~a/~a'" msgstr "l'URL devrait être « mirror://~a/~a »" -#: guix/scripts/lint.scm:699 guix/scripts/lint.scm:703 +#: guix/scripts/lint.scm:718 guix/scripts/lint.scm:722 #, scheme-format msgid "failed to create derivation: ~a" msgstr "échec à la création de la dérivation: ~a" -#: guix/scripts/lint.scm:717 +#: guix/scripts/lint.scm:736 #, scheme-format msgid "failed to create derivation: ~s~%" msgstr "échec à la création de la dérivation: ~s~%" -#: guix/scripts/lint.scm:727 +#: guix/scripts/lint.scm:746 msgid "invalid license field" msgstr "champ de licence invalide" -#: guix/scripts/lint.scm:744 +#: guix/scripts/lint.scm:763 #, scheme-format msgid "failed to retrieve CVE vulnerabilities from ~s: ~a (~s)~%" msgstr "échec de récupération des vulnérabilités CVE depuis ~s: ~a (~s)~%" -#: guix/scripts/lint.scm:749 guix/scripts/lint.scm:758 -#: guix/scripts/lint.scm:763 +#: guix/scripts/lint.scm:768 guix/scripts/lint.scm:777 +#: guix/scripts/lint.scm:782 #, scheme-format msgid "assuming no CVE vulnerabilities~%" msgstr "on suppose qu'il n'y a pas de vulnérabilités CVE~%" -#: guix/scripts/lint.scm:756 +#: guix/scripts/lint.scm:775 #, scheme-format msgid "failed to lookup NIST host: ~a~%" msgstr "impossible de trouver l'hôte NIST: ~a~%" -#: guix/scripts/lint.scm:801 +#: guix/scripts/lint.scm:820 #, scheme-format msgid "probably vulnerable to ~a" msgstr "probablement vulnérable à ~a" -#: guix/scripts/lint.scm:816 +#: guix/scripts/lint.scm:835 #, scheme-format msgid "tabulation on line ~a, column ~a" msgstr "tabulation à la ligne ~a, colonne ~a" -#: guix/scripts/lint.scm:825 +#: guix/scripts/lint.scm:844 #, scheme-format msgid "trailing white space on line ~a" msgstr "espace à la fin de la ligne ~a" -#: guix/scripts/lint.scm:835 +#: guix/scripts/lint.scm:854 #, scheme-format msgid "line ~a is way too long (~a characters)" msgstr "la ligne ~a est beaucoup trop longue (~a caractères)" -#: guix/scripts/lint.scm:846 +#: guix/scripts/lint.scm:865 #, scheme-format msgid "line ~a: parentheses feel lonely, move to the previous or next line" msgstr "ligne ~a: des parenthèses se sentent seules. À déplacer à la ligne suivante ou précédente" -#: guix/scripts/lint.scm:901 +#: guix/scripts/lint.scm:920 msgid "Validate package descriptions" msgstr "Valider des descriptions de paquets" -#: guix/scripts/lint.scm:905 +#: guix/scripts/lint.scm:924 msgid "Validate synopsis & description of GNU packages" msgstr "Valider le synopsis et la description de paquets GNU" -#: guix/scripts/lint.scm:909 +#: guix/scripts/lint.scm:928 msgid "Identify inputs that should be native inputs" msgstr "Identifier les entrées qui devraient être natives" -#: guix/scripts/lint.scm:913 +#: guix/scripts/lint.scm:932 msgid "Identify inputs that should be inputs at all" msgstr "Identifier les entrées qui devraient être des entrées" -#: guix/scripts/lint.scm:917 +#: guix/scripts/lint.scm:936 msgid "Validate file names and availability of patches" msgstr "Valider les noms de fichiers et la disponibilité de correctifs" -#: guix/scripts/lint.scm:921 +#: guix/scripts/lint.scm:940 msgid "Validate home-page URLs" msgstr "Valider les URL des pages d'accueil" #. TRANSLATORS: <license> is the name of a data type and must not be #. translated. -#: guix/scripts/lint.scm:927 +#: guix/scripts/lint.scm:946 msgid "Make sure the 'license' field is a <license> or a list thereof" msgstr "Assurez vous que le champ « licence » est une <licence> ou une telle liste" -#: guix/scripts/lint.scm:932 +#: guix/scripts/lint.scm:951 msgid "Validate source URLs" msgstr "Valider les URL sources" -#: guix/scripts/lint.scm:936 +#: guix/scripts/lint.scm:955 msgid "Suggest 'mirror://' URLs" msgstr "Suggérer les URLs « mirror:// »" -#: guix/scripts/lint.scm:940 +#: guix/scripts/lint.scm:959 msgid "Validate file names of sources" msgstr "Valider les noms des fichiers des sources" -#: guix/scripts/lint.scm:944 +#: guix/scripts/lint.scm:963 msgid "Report failure to compile a package to a derivation" msgstr "Signaler l'échec de la compilation d'un paquet d'une dérivation" -#: guix/scripts/lint.scm:948 +#: guix/scripts/lint.scm:967 msgid "Validate package synopses" msgstr "Valider les synopsis des paquets" -#: guix/scripts/lint.scm:952 +#: guix/scripts/lint.scm:971 msgid "Check the Common Vulnerabilities and Exposures (CVE) database" msgstr "Vérifier la base de données des vulnérabilités et failles connues (CVE)" -#: guix/scripts/lint.scm:957 +#: guix/scripts/lint.scm:976 msgid "Look for formatting issues in the source" msgstr "Rechercher des problèmes de format dans la source" -#: guix/scripts/lint.scm:985 +#: guix/scripts/lint.scm:1004 msgid "" "Usage: guix lint [OPTION]... [PACKAGE]...\n" "Run a set of checkers on the specified package; if none is specified,\n" @@ -1895,7 +1933,7 @@ msgstr "" "Lancer un ensemble de vérificateurs sur le paquet spécifié; si aucun n'est spécifié,\n" "lancer les vérificateurs sur tous les paquets.\n" -#: guix/scripts/lint.scm:988 +#: guix/scripts/lint.scm:1007 msgid "" "\n" " -c, --checkers=CHECKER1,CHECKER2...\n" @@ -1905,7 +1943,7 @@ msgstr "" " -c, --checkers=CHECKER1,CHECKER2...\n" " lancer uniquement les vérificateurs spécifiés" -#: guix/scripts/lint.scm:993 +#: guix/scripts/lint.scm:1012 msgid "" "\n" " -l, --list-checkers display the list of available lint checkers" @@ -1913,12 +1951,12 @@ msgstr "" "\n" " -l, --list-checkers afficher la liste des vérificateurs disponibles" -#: guix/scripts/lint.scm:1013 +#: guix/scripts/lint.scm:1032 #, scheme-format msgid "~a: invalid checker~%" msgstr "~a: vérificateur non valide~%" -#: guix/scripts/publish.scm:58 +#: guix/scripts/publish.scm:67 #, scheme-format msgid "" "Usage: guix publish [OPTION]...\n" @@ -1927,7 +1965,7 @@ msgstr "" "Usage: guix publish [OPTION]...\n" "Diffuser ~a via HTTP.\n" -#: guix/scripts/publish.scm:60 +#: guix/scripts/publish.scm:69 msgid "" "\n" " -p, --port=PORT listen on PORT" @@ -1935,7 +1973,7 @@ msgstr "" "\n" " -p, --port=PORT écouter sur le PORT" -#: guix/scripts/publish.scm:62 +#: guix/scripts/publish.scm:71 msgid "" "\n" " --listen=HOST listen on the network interface for HOST" @@ -1943,7 +1981,7 @@ msgstr "" "\n" " --listen=HÔTE écouter sur l'interface réseau HÔTE" -#: guix/scripts/publish.scm:64 +#: guix/scripts/publish.scm:73 msgid "" "\n" " -u, --user=USER change privileges to USER as soon as possible" @@ -1953,7 +1991,7 @@ msgstr "" " changer les privilèges de UTILISATEUR aussi vite\n" " que possible" -#: guix/scripts/publish.scm:66 +#: guix/scripts/publish.scm:75 msgid "" "\n" " -C, --compression[=LEVEL]\n" @@ -1963,7 +2001,23 @@ msgstr "" " -C, --compression[=NIVEAU]\n" " compresser les archives au NIVEAU" -#: guix/scripts/publish.scm:69 +#: guix/scripts/publish.scm:78 +msgid "" +"\n" +" -c, --cache=DIRECTORY cache published items to DIRECTORY" +msgstr "" +"\n" +" -c, --cache=RÉPERTOIRE mettre les éléments publiés en cache dans le RÉPERTOIRE" + +#: guix/scripts/publish.scm:80 +msgid "" +"\n" +" --workers=N use N workers to bake items" +msgstr "" +"\n" +" --workers=N utiliser N travailleurs pour préparer les éléments" + +#: guix/scripts/publish.scm:82 msgid "" "\n" " --ttl=TTL announce narinfos can be cached for TTL seconds" @@ -1972,7 +2026,31 @@ msgstr "" " --ttl=TTL les annonces narinfos peuvent être mises en cache\n" " pendant TTL secondes" -#: guix/scripts/publish.scm:71 +#: guix/scripts/publish.scm:84 +msgid "" +"\n" +" --nar-path=PATH use PATH as the prefix for nar URLs" +msgstr "" +"\n" +" --nar-path=CHEMIN utiliser le CHEMIN comme préfixe pour les URL nar" + +#: guix/scripts/publish.scm:86 +msgid "" +"\n" +" --public-key=FILE use FILE as the public key for signatures" +msgstr "" +"\n" +" --public-key=FICHIER utiliser le FICHIER comme clé publique pour les signatures" + +#: guix/scripts/publish.scm:88 +msgid "" +"\n" +" --private-key=FILE use FILE as the private key for signatures" +msgstr "" +"\n" +" --private-key=FICHIER utiliser le FICHIER comme clé privée pour les signatures" + +#: guix/scripts/publish.scm:90 msgid "" "\n" " -r, --repl[=PORT] spawn REPL server on PORT" @@ -1980,37 +2058,37 @@ msgstr "" "\n" " -r, --repl[=PORT] créer le serveur REPL sur le PORT" -#: guix/scripts/publish.scm:87 +#: guix/scripts/publish.scm:106 #, scheme-format msgid "lookup of host '~a' failed: ~a~%" msgstr "la recherche de l'hôte « ~a » a échoué: ~a~%" -#: guix/scripts/publish.scm:125 +#: guix/scripts/publish.scm:151 #, scheme-format msgid "lookup of host '~a' returned nothing" msgstr "la recherche de l'hôte « ~a » n'a rien retourné" -#: guix/scripts/publish.scm:138 +#: guix/scripts/publish.scm:164 #, scheme-format msgid "zlib support is missing; compression disabled~%" msgstr "le support zlib est manquant. La compression est désactivée~%" -#: guix/scripts/publish.scm:145 +#: guix/scripts/publish.scm:178 #, scheme-format msgid "~a: invalid duration~%" msgstr "~a: durée non valide~%" -#: guix/scripts/publish.scm:544 +#: guix/scripts/publish.scm:799 #, scheme-format msgid "user '~a' not found: ~a~%" msgstr "utilisateur « ~a » pas trouvé: ~a~%" -#: guix/scripts/publish.scm:581 +#: guix/scripts/publish.scm:840 #, scheme-format msgid "server running as root; consider using the '--user' option!~%" msgstr "le serveur tourne en tant que root. Envisagez d'utiliser l'option « --user » !~%" -#: guix/scripts/publish.scm:583 +#: guix/scripts/publish.scm:845 #, scheme-format msgid "publishing ~a on ~a, port ~d~%" msgstr "diffusion de ~a sur ~a, port ~d~%" @@ -2055,7 +2133,7 @@ msgstr "total" msgid "self" msgstr "lui-même" -#: guix/scripts/size.scm:96 +#: guix/scripts/size.scm:97 #, scheme-format msgid "total: ~,1f MiB~%" msgstr "total: ~,1f MiB~%" @@ -2063,11 +2141,11 @@ msgstr "total: ~,1f MiB~%" #. 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:209 +#: guix/scripts/size.scm:211 msgid "store profile" msgstr "profil stockage" -#: guix/scripts/size.scm:218 +#: guix/scripts/size.scm:220 msgid "" "Usage: guix size [OPTION]... PACKAGE\n" "Report the size of PACKAGE and its dependencies.\n" @@ -2075,7 +2153,7 @@ msgstr "" "Usage: guix size [OPTION]... PAQUET\n" "Rapporter la taille du PAQUET et de ses dépendances.\n" -#: guix/scripts/size.scm:223 +#: guix/scripts/size.scm:225 msgid "" "\n" " -s, --system=SYSTEM consider packages for SYSTEM--e.g., \"i686-linux\"" @@ -2083,7 +2161,7 @@ msgstr "" "\n" " -s, --system=SYSTÈME prend en compte les paquets pour le SYSTÈME, par exemple « i686-linux »" -#: guix/scripts/size.scm:225 +#: guix/scripts/size.scm:227 msgid "" "\n" " -m, --map-file=FILE write to FILE a graphical map of disk usage" @@ -2091,77 +2169,81 @@ msgstr "" "\n" " -m, --map-file=FICHIER écrit dans le FICHIER une carte graphique de l'utilisation du disque" -#: guix/scripts/size.scm:279 +#: guix/scripts/size.scm:281 msgid "missing store item argument\n" msgstr "argument d'élément de stockage manquant\n" -#: guix/scripts/graph.scm:83 +#: guix/scripts/graph.scm:84 #, scheme-format msgid "~a: invalid argument (package name expected)" msgstr "~a: argument invalide (nom de paquet attendu)" -#: guix/scripts/graph.scm:94 +#: guix/scripts/graph.scm:95 msgid "the DAG of packages, excluding implicit inputs" msgstr "le DAG des paquets en excluant les entrées implicites" -#: guix/scripts/graph.scm:151 +#: guix/scripts/graph.scm:121 +msgid "the reverse DAG of packages" +msgstr "le graphe orienté acyclique (DAG) inversé des paquets" + +#: guix/scripts/graph.scm:171 msgid "the DAG of packages, including implicit inputs" msgstr "le DAG des paquets en incluant les entrées implicites" -#: guix/scripts/graph.scm:161 +#: guix/scripts/graph.scm:181 msgid "the DAG of packages and origins, including implicit inputs" msgstr "le DAG des paquets et origines en incluant les entrées implicites" -#: guix/scripts/graph.scm:192 +#: guix/scripts/graph.scm:211 msgid "same as 'bag', but without the bootstrap nodes" msgstr "comme « bag » mais sans les nœuds d'amorçage" -#: guix/scripts/graph.scm:238 +#: guix/scripts/graph.scm:257 msgid "the DAG of derivations" msgstr "le DAG des dérivations" -#: guix/scripts/graph.scm:250 +#: guix/scripts/graph.scm:269 msgid "unsupported argument for derivation graph" msgstr "argument non supporté pour le graphe de dérivation" -#: guix/scripts/graph.scm:276 +#: guix/scripts/graph.scm:295 msgid "unsupported argument for this type of graph" msgstr "argument non supporté pour ce type de graphe" -#: guix/scripts/graph.scm:289 +#: guix/scripts/graph.scm:308 #, scheme-format msgid "references for '~a' are not known~%" msgstr "les références pour « ~a » sont inconnues~%" -#: guix/scripts/graph.scm:296 +#: guix/scripts/graph.scm:315 msgid "the DAG of run-time dependencies (store references)" msgstr "le DAG des dépendances à l'exécution (stockage des références)" -#: guix/scripts/graph.scm:312 +#: guix/scripts/graph.scm:331 msgid "the DAG of referrers in the store" msgstr "le graphe orienté acyclique (DAG) des référents dans le stockage" -#: guix/scripts/graph.scm:338 +#: guix/scripts/graph.scm:358 #, scheme-format msgid "~a: unknown node type~%" msgstr "~a: type de nœud inconnu~%" -#: guix/scripts/graph.scm:345 +#: guix/scripts/graph.scm:365 #, scheme-format msgid "~a: unknown backend~%" msgstr "~a: moteur de graphe inconnu~%" -#: guix/scripts/graph.scm:349 +#: guix/scripts/graph.scm:369 msgid "The available node types are:\n" msgstr "Les types de nœuds disponibles sont:\n" -#: guix/scripts/graph.scm:359 +#: guix/scripts/graph.scm:379 msgid "The available backend types are:\n" msgstr "Les types de moteurs de graphes disponibles sont:\n" #. TRANSLATORS: Here 'dot' is the name of a program; it must not be #. translated. -#: guix/scripts/graph.scm:403 +#: guix/scripts/graph.scm:423 msgid "" "Usage: guix graph PACKAGE...\n" "Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n" @@ -2169,7 +2251,7 @@ msgstr "" "Usage: guix graph PAQUET...\n" "Produit une représentation Graphviz (dot) des dépendances de PAQUET...\n" -#: guix/scripts/graph.scm:405 +#: guix/scripts/graph.scm:425 msgid "" "\n" " -b, --backend=TYPE produce a graph with the given backend TYPE" @@ -2177,7 +2259,7 @@ msgstr "" "\n" " -t, --backend=TYPE produire un graphe avec le TYPE de moteur donné" -#: guix/scripts/graph.scm:407 +#: guix/scripts/graph.scm:427 msgid "" "\n" " --list-backends list the available graph backends" @@ -2185,7 +2267,7 @@ msgstr "" "\n" " --list-backends lister les types de moteurs de graphes disponibles" -#: guix/scripts/graph.scm:409 +#: guix/scripts/graph.scm:429 msgid "" "\n" " -t, --type=TYPE represent nodes of the given TYPE" @@ -2193,7 +2275,7 @@ msgstr "" "\n" " -t, --type=TYPE représenter les nœuds du TYPE donné" -#: guix/scripts/graph.scm:411 +#: guix/scripts/graph.scm:431 msgid "" "\n" " --list-types list the available graph types" @@ -2201,7 +2283,7 @@ msgstr "" "\n" " --list-types lister les types de graphes disponibles" -#: guix/scripts/graph.scm:413 +#: guix/scripts/graph.scm:433 guix/scripts/pack.scm:328 msgid "" "\n" " -e, --expression=EXPR consider the package EXPR evaluates to" @@ -2209,42 +2291,42 @@ msgstr "" "\n" " -e, --expression=EXPR considère le paquet évalué par EXPR" -#: guix/scripts/challenge.scm:105 +#: guix/scripts/challenge.scm:191 #, scheme-format -msgid "~a: no substitute at '~a'~%" -msgstr "~a: pas de substitut à « ~a »~%" +msgid " local hash: ~a~%" +msgstr " hachage local: ~a~%" -#: guix/scripts/challenge.scm:121 +#: guix/scripts/challenge.scm:192 #, scheme-format -msgid "no substitutes for '~a'~%" -msgstr "pas de substitut pour « ~a »~%" +msgid " no local build for '~a'~%" +msgstr " aucune compilation locale pour « ~a »~%" -#: guix/scripts/challenge.scm:138 guix/scripts/challenge.scm:158 +#: guix/scripts/challenge.scm:194 #, scheme-format -msgid "no local build for '~a'~%" -msgstr "aucune compilation locale pour « ~a »~%" +msgid " ~50a: ~a~%" +msgstr " ~50a: ~a~%" -#: guix/scripts/challenge.scm:155 +#: guix/scripts/challenge.scm:202 #, scheme-format msgid "~a contents differ:~%" msgstr "le contenu de ~a diffère:~%" -#: guix/scripts/challenge.scm:157 +#: guix/scripts/challenge.scm:205 #, scheme-format -msgid " local hash: ~a~%" -msgstr " hachage local: ~a~%" +msgid "could not challenge '~a': no local build~%" +msgstr "impossible de mettre « ~a » au défi: aucune construction locale~%" -#: guix/scripts/challenge.scm:162 +#: guix/scripts/challenge.scm:207 #, scheme-format -msgid " ~50a: ~a~%" -msgstr " ~50a: ~a~%" +msgid "could not challenge '~a': no substitutes~%" +msgstr "impossible de mettre « ~a » au défi: aucune substitution~%" -#: guix/scripts/challenge.scm:166 +#: guix/scripts/challenge.scm:210 #, scheme-format -msgid " ~50a: unavailable~%" -msgstr " ~50a: non disponible~%" +msgid "~a contents match:~%" +msgstr "le contenu de ~a correspond:~%" -#: guix/scripts/challenge.scm:176 +#: guix/scripts/challenge.scm:219 msgid "" "Usage: guix challenge [PACKAGE...]\n" "Challenge the substitutes for PACKAGE... provided by one or more servers.\n" @@ -2252,7 +2334,7 @@ msgstr "" "Usage: guix challenge [PAQUET...]\n" "Contrôle les substituts du PAQUET... fourni par un ou plusieurs serveurs.\n" -#: guix/scripts/challenge.scm:178 +#: guix/scripts/challenge.scm:221 msgid "" "\n" " --substitute-urls=URLS\n" @@ -2262,23 +2344,125 @@ msgstr "" " --substitute-urls=URLS\n" " comparer les résultats de compilation avec ceux aux URLS" -#: guix/gnu-maintenance.scm:555 +#: guix/scripts/challenge.scm:224 +msgid "" +"\n" +" -v, --verbose show details about successful comparisons" +msgstr "" +"\n" +" -v, --verbose montrer les détails des comparaisons réussies" + +#: guix/scripts/copy.scm:59 +#, scheme-format +msgid "~a: invalid TCP port number~%" +msgstr "~a: numéro de port TCP invalide~%" + +#: guix/scripts/copy.scm:61 +#, scheme-format +msgid "~a: invalid SSH specification~%" +msgstr "~a: spécification SSH invalide~%" + +#: guix/scripts/copy.scm:112 +msgid "" +"Usage: guix copy [OPTION]... ITEMS...\n" +"Copy ITEMS to or from the specified host over SSH.\n" +msgstr "" +"Usage: guix copy [OPTION]... ÉLÉMENTS...\n" +"Copier les ÉLÉMENTS vers ou depuis l'hôte spécifié en SSH.\n" + +#: guix/scripts/copy.scm:114 +msgid "" +"\n" +" --to=HOST send ITEMS to HOST" +msgstr "" +"\n" +" --to=HÔTE envoyer les ÉLÉMENTS vers l'HÔTE" + +#: guix/scripts/copy.scm:116 +msgid "" +"\n" +" --from=HOST receive ITEMS from HOST" +msgstr "" +"\n" +" --from=HÔTE recevoir les ÉLÉMENTS depuis l'HÔTE" + +#: guix/scripts/copy.scm:168 +#, scheme-format +msgid "use '--to' or '--from'~%" +msgstr "utilisez « --to » ou « --from »~%" + +#: guix/scripts/pack.scm:74 +#, scheme-format +msgid "~a: compressor not found~%" +msgstr "~a: compresseur introuvable~%" + +#: guix/scripts/pack.scm:310 +#, scheme-format +msgid "~a: invalid symlink specification~%" +msgstr "~a: spécification de lien symbolique invalide~%" + +#: guix/scripts/pack.scm:320 +msgid "" +"Usage: guix pack [OPTION]... PACKAGE...\n" +"Create a bundle of PACKAGE.\n" +msgstr "" +"Usage: guix pack [OPTION]... PAQUET...\n" +"Créer un paquet de PAQUET.\n" + +#: guix/scripts/pack.scm:326 +msgid "" +"\n" +" -f, --format=FORMAT build a pack in the given FORMAT" +msgstr "" +"\n" +" -f, --format=FORMAT créer un paquet dans le FORMAT donné" + +#: guix/scripts/pack.scm:334 +msgid "" +"\n" +" -C, --compression=TOOL compress using TOOL--e.g., \"lzip\"" +msgstr "" +"\n" +" -C, --compression=OUTIL compresser en utilisant l'OUTIL, par ex, « lzip »" + +#: guix/scripts/pack.scm:336 +msgid "" +"\n" +" -S, --symlink=SPEC create symlinks to the profile according to SPEC" +msgstr "" +"\n" +" -S, --symlink=SPEC créer des liens symboliques vers le profil selon la SPEC" + +#: guix/scripts/pack.scm:338 +msgid "" +"\n" +" --localstatedir include /var/guix in the resulting pack" +msgstr "" +"\n" +" --localstatedir inclure /var/guix dans le paquet résultant" + +#: guix/scripts/pack.scm:382 +#, scheme-format +msgid "~a: unknown pack format" +msgstr "~a: format de paquet inconnu" + +#: guix/gnu-maintenance.scm:562 msgid "Updater for GNU packages" msgstr "Logiciel de mise à jour des paquets GNU" -#: guix/gnu-maintenance.scm:562 +#: guix/gnu-maintenance.scm:569 msgid "Updater for GNOME packages" msgstr "Logiciel de mise à jour des paquets GNOME" -#: guix/gnu-maintenance.scm:569 +#: guix/gnu-maintenance.scm:576 msgid "Updater for KDE packages" msgstr "Logiciel de mise à jour des paquets KDE" -#: guix/gnu-maintenance.scm:576 +#: guix/gnu-maintenance.scm:583 msgid "Updater for X.org packages" msgstr "Logiciel de mise à jour des paquets X.org" -#: guix/gnu-maintenance.scm:583 +#: guix/gnu-maintenance.scm:590 msgid "Updater for packages hosted on kernel.org" msgstr "Logiciel de mise à jour des paquets hébergés sur kernel.org" @@ -2317,22 +2501,22 @@ msgstr "" msgid "~a: extraneous argument~%" msgstr "~a: argument superflu~%" -#: guix/scripts/container/exec.scm:80 +#: guix/scripts/container/exec.scm:87 #, scheme-format msgid "no pid specified~%" msgstr "aucun pid spécifié~%" -#: guix/scripts/container/exec.scm:83 +#: guix/scripts/container/exec.scm:90 #, scheme-format msgid "no command specified~%" msgstr "aucune commande spécifiée~%" -#: guix/scripts/container/exec.scm:86 +#: guix/scripts/container/exec.scm:93 #, scheme-format msgid "no such process ~d~%" msgstr "aucun processus ~d~%" -#: guix/scripts/container/exec.scm:94 +#: guix/scripts/container/exec.scm:105 #, scheme-format msgid "exec failed with status ~d~%" msgstr "exec a échoué avec le statut ~d~%" @@ -2347,10 +2531,6 @@ msgstr "la vérification de la signature a échoué pour « ~a »~%" msgid "(could be because the public key is not in your keyring)~%" msgstr "(il est possible que la clé publique ne soit pas dans dans votre trousseau)~%" -#: guix/upstream.scm:246 -msgid "gz" -msgstr "gz" - #: guix/upstream.scm:293 #, scheme-format msgid "~a: could not locate source file" @@ -2361,53 +2541,62 @@ msgstr "~a: le fichier source est introuvable" msgid "~a: ~a: no `version' field in source; skipping~%" msgstr "~a: ~a: aucun champ « version » dans la source; ignoré~%" -#: guix/ui.scm:239 +#: guix/ui.scm:241 msgid "entering debugger; type ',bt' for a backtrace\n" msgstr "entrée dans le débogueur; tapez « ,bt » pour la trace inverse\n" -#: guix/ui.scm:255 guix/ui.scm:272 +#: guix/ui.scm:257 guix/ui.scm:278 guix/ui.scm:285 #, scheme-format msgid "failed to load '~a': ~a~%" msgstr "impossible de charger « ~a »: ~a~%" -#: guix/ui.scm:258 +#: guix/ui.scm:260 #, scheme-format msgid "~a: error: ~a~%" msgstr "~a: erreur: ~a~%" -#: guix/ui.scm:261 guix/ui.scm:530 +#: guix/ui.scm:267 guix/ui.scm:554 #, scheme-format msgid "exception thrown: ~s~%" msgstr "exception générée: ~s~%" -#: guix/ui.scm:263 guix/ui.scm:281 +#: guix/ui.scm:269 guix/ui.scm:291 #, scheme-format msgid "failed to load '~a':~%" msgstr "échec lors du chargement de « ~a »:~%" -#: guix/ui.scm:275 +#: guix/ui.scm:281 #, scheme-format msgid "~a: warning: ~a~%" msgstr "~a: avertissement: ~a~%" -#: guix/ui.scm:278 +#: guix/ui.scm:288 #, scheme-format msgid "failed to load '~a': exception thrown: ~s~%" msgstr "échec lors du chargement de « ~a »: exception générée: ~s~%" -#: guix/ui.scm:290 +#: guix/ui.scm:300 #, scheme-format msgid "failed to install locale: ~a~%" msgstr "impossible d'installer l'environnement linguistique: ~a~%" -#: guix/ui.scm:309 +#. TRANSLATORS: Translate "(C)" to the copyright symbol +#. (C-in-a-circle), if this symbol is available in the user's +#. locale. Otherwise, do not translate "(C)"; leave it as-is. */ +#: guix/ui.scm:323 +msgid "(C)" +msgstr "©" + +#: guix/ui.scm:324 +msgid "the Guix authors\n" +msgstr "les auteurs de Guix\n" + +#: guix/ui.scm:325 msgid "" -"Copyright (C) 2016 the Guix authors\n" "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\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) 2016 les auteurs de Guix\n" "Licence GPLv3+: GNU GPL version 3 ou ultérieure <http://www.gnu.org/licenses/gpl.fr.html>\n" "Ceci est un logiciel libre: vous êtes libre de le modifier et de le redistribuer.\n" "Il n'y a AUCUNE GARANTIE, dans les limites permises par la loi.\n" @@ -2416,7 +2605,7 @@ msgstr "" #. package. Please add another line saying "Report translation bugs to #. ...\n" with the address for translation bugs (typically your translation #. team's web or email address). -#: guix/ui.scm:321 +#: guix/ui.scm:337 #, scheme-format msgid "" "\n" @@ -2426,7 +2615,7 @@ msgstr "" "Signalez toute anomalie à : ~a.\n" "Signalez toute erreur de traduction à : traduc@traduc.org" -#: guix/ui.scm:323 +#: guix/ui.scm:339 #, scheme-format msgid "" "\n" @@ -2435,7 +2624,7 @@ msgstr "" "\n" "~a page d'accueil: <~a>" -#: guix/ui.scm:325 +#: guix/ui.scm:341 msgid "" "\n" "General help using GNU software: <http://www.gnu.org/gethelp/>" @@ -2443,199 +2632,204 @@ msgstr "" "\n" "Aide générale sur l'utilisation des logiciels GNU: <http://www.gnu.org/gethelp/>" -#: guix/ui.scm:370 +#: guix/ui.scm:386 #, scheme-format msgid "'~a' is not a valid regular expression: ~a~%" msgstr "« ~a » n'est pas une expression rationnelle valide: ~a~%" -#: guix/ui.scm:376 +#: guix/ui.scm:392 #, scheme-format msgid "~a: invalid number~%" msgstr "~a: nombre non valide~%" -#: guix/ui.scm:393 +#: guix/ui.scm:409 #, scheme-format msgid "invalid number: ~a~%" msgstr "nombre non valide: ~a~%" -#: guix/ui.scm:416 +#: guix/ui.scm:432 #, scheme-format msgid "unknown unit: ~a~%" msgstr "unité inconnue: ~a~%" -#: guix/ui.scm:433 +#: guix/ui.scm:449 #, scheme-format msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" msgstr "~a:~a:~a: le paquet « ~a » a une entrée non valide: ~s~%" -#: guix/ui.scm:440 +#: guix/ui.scm:456 #, scheme-format msgid "~a: ~a: build system `~a' does not support cross builds~%" msgstr "~a: ~a: le système de compilation « ~a » ne supporte pas la compilation croisée~%" -#: guix/ui.scm:445 +#: guix/ui.scm:462 +#, scheme-format +msgid "~s: invalid G-expression input~%" +msgstr "~s: entrée G-expression invalide~%" + +#: guix/ui.scm:465 #, scheme-format msgid "profile '~a' does not exist~%" msgstr "le profile « ~a » n'existe pas~%" -#: guix/ui.scm:448 +#: guix/ui.scm:468 #, scheme-format msgid "generation ~a of profile '~a' does not exist~%" msgstr "la génération ~a du profile « ~a » n'existe pas~%" -#: guix/ui.scm:455 +#: guix/ui.scm:475 #, scheme-format msgid "corrupt input while restoring '~a' from ~s~%" msgstr "entrée corrompue en restaurant « ~a » depuis ~s~%" -#: guix/ui.scm:457 +#: guix/ui.scm:477 #, scheme-format msgid "corrupt input while restoring archive from ~s~%" msgstr "entrée corrompue en restaurant l'archive depuis ~s~%" -#: guix/ui.scm:460 +#: guix/ui.scm:480 #, scheme-format msgid "failed to connect to `~a': ~a~%" msgstr "impossible de se connecter à « ~a »: ~a~%" -#: guix/ui.scm:465 +#: guix/ui.scm:485 #, scheme-format msgid "build failed: ~a~%" msgstr "la compilation a échoué: ~a~%" -#: guix/ui.scm:468 +#: guix/ui.scm:488 #, scheme-format msgid "reference to invalid output '~a' of derivation '~a'~%" msgstr "référence à la sortie invalide « ~a » de la dérivation « ~a »~%" -#: guix/ui.scm:472 +#: guix/ui.scm:492 #, scheme-format msgid "file '~a' could not be found in these directories:~{ ~a~}~%" msgstr "le fichier « ~a » n'a pas été trouvé dans ces répertoires:~{ ~a~}~%" -#: guix/ui.scm:484 +#: guix/ui.scm:504 #, scheme-format msgid "~a: ~a~%" msgstr "~a: ~a~%" -#: guix/ui.scm:519 +#: guix/ui.scm:539 #, scheme-format msgid "failed to read expression ~s: ~s~%" msgstr "impossible de lire l'expression ~s: ~s~%" -#: guix/ui.scm:525 +#: guix/ui.scm:545 #, scheme-format msgid "failed to evaluate expression '~a':~%" msgstr "impossible d'évaluer l'expression « ~a »:~%" -#: guix/ui.scm:528 +#: guix/ui.scm:548 #, scheme-format msgid "syntax error: ~a~%" msgstr "erreur de syntaxe: ~a~%" -#: guix/ui.scm:542 +#: guix/ui.scm:566 #, scheme-format msgid "expression ~s does not evaluate to a package~%" msgstr "l'expression ~s ne correspond à aucun paquet~%" -#: guix/ui.scm:604 +#: guix/ui.scm:628 #, scheme-format msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations would be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[La dérivation suivante serait compilée:~%~{ ~a~%~}~;~]" msgstr[1] "~:[Les dérivations suivantes seraient compilées:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:609 +#: guix/ui.scm:633 #, scheme-format msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files would be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Le fichier suivant serait téléchargé:~%~{ ~a~%~}~;~]" msgstr[1] "~:[Les fichiers suivants seraient téléchargés:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:615 +#: guix/ui.scm:639 #, scheme-format msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following derivations will be built:~%~{ ~a~%~}~;~]" msgstr[0] "~:[La dérivation suivante sera compilée:~%~{ ~a~%~}~;~]" msgstr[1] "~:[Les dérivations suivantes seront compilées:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:620 +#: guix/ui.scm:644 #, scheme-format msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid_plural "~:[The following files will be downloaded:~%~{ ~a~%~}~;~]" msgstr[0] "~:[Le fichier suivant sera téléchargé:~%~{ ~a~%~}~;~]" msgstr[1] "~:[Les fichiers suivants seront téléchargés:~%~{ ~a~%~}~;~]" -#: guix/ui.scm:675 +#: guix/ui.scm:700 #, scheme-format msgid "The following package would be removed:~%~{~a~%~}~%" msgid_plural "The following packages would be removed:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant serait supprimé:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seraient supprimés:~%~{~a~%~}~%" -#: guix/ui.scm:680 +#: guix/ui.scm:705 #, scheme-format msgid "The following package will be removed:~%~{~a~%~}~%" msgid_plural "The following packages will be removed:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant sera supprimé:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seront supprimés:~%~{~a~%~}~%" -#: guix/ui.scm:693 +#: guix/ui.scm:718 #, scheme-format msgid "The following package would be downgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant serait mis à une version inférieure:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seraient mis à des versions inférieures:~%~{~a~%~}~%" -#: guix/ui.scm:698 +#: guix/ui.scm:723 #, scheme-format msgid "The following package will be downgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant sera mis à une version inférieure:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seront mis à des versions inférieures:~%~{~a~%~}~%" -#: guix/ui.scm:711 +#: guix/ui.scm:736 #, scheme-format msgid "The following package would be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant serait mis à jour:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seraient mis à jour:~%~{~a~%~}~%" -#: guix/ui.scm:716 +#: guix/ui.scm:741 #, scheme-format msgid "The following package will be upgraded:~%~{~a~%~}~%" msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant sera mis à jour:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seront mis à jour:~%~{~a~%~}~%" -#: guix/ui.scm:727 +#: guix/ui.scm:752 #, scheme-format msgid "The following package would be installed:~%~{~a~%~}~%" msgid_plural "The following packages would be installed:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant serait installé:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seraient installés:~%~{~a~%~}~%" -#: guix/ui.scm:732 +#: guix/ui.scm:757 #, scheme-format msgid "The following package will be installed:~%~{~a~%~}~%" msgid_plural "The following packages will be installed:~%~{~a~%~}~%" msgstr[0] "Le paquet suivant sera installé:~%~{~a~%~}~%" msgstr[1] "Les paquets suivants seront installés:~%~{~a~%~}~%" -#: guix/ui.scm:749 +#: guix/ui.scm:774 msgid "<unknown location>" msgstr "<emplacement inconnu>" -#: guix/ui.scm:768 +#: guix/ui.scm:793 #, scheme-format msgid "failed to create configuration directory `~a': ~a~%" msgstr "impossible de créer le répertoire de configuration « ~a »: ~a~%" -#: guix/ui.scm:891 guix/ui.scm:905 +#: guix/ui.scm:924 guix/ui.scm:938 msgid "unknown" msgstr "inconnu" -#: guix/ui.scm:1063 +#: guix/ui.scm:1097 #, scheme-format msgid "Generation ~a\t~a" msgstr "Génération ~a\t~a" @@ -2643,27 +2837,27 @@ msgstr "Génération ~a\t~a" #. TRANSLATORS: The word "current" here is an adjective for #. "Generation", as in "current generation". Use the appropriate #. gender where applicable. -#: guix/ui.scm:1073 +#: guix/ui.scm:1107 #, scheme-format msgid "~a\t(current)~%" msgstr "~a\t(actuel)~%" -#: guix/ui.scm:1116 +#: guix/ui.scm:1150 #, scheme-format msgid "switched from generation ~a to ~a~%" msgstr "passé de la génération ~a à ~a~%" -#: guix/ui.scm:1132 +#: guix/ui.scm:1166 #, scheme-format msgid "deleting ~a~%" msgstr "suppression de ~a~%" -#: guix/ui.scm:1163 +#: guix/ui.scm:1197 #, scheme-format msgid "Try `guix --help' for more information.~%" msgstr "Essayez « guix --help » pour plus d'informations.~%" -#: guix/ui.scm:1191 +#: guix/ui.scm:1225 msgid "" "Usage: guix COMMAND ARGS...\n" "Run COMMAND with ARGS.\n" @@ -2671,33 +2865,34 @@ msgstr "" "Usage: guix COMMANDE ARGS...\n" "Lance la COMMANDE avec les arguments ARGS.\n" -#: guix/ui.scm:1194 +#: guix/ui.scm:1228 msgid "COMMAND must be one of the sub-commands listed below:\n" msgstr "COMMANDE doit être une des sous-commandes listées ci-dessous:\n" -#: guix/ui.scm:1214 +#: guix/ui.scm:1248 #, scheme-format msgid "guix: ~a: command not found~%" msgstr "guix: ~a: commande introuvable~%" -#: guix/ui.scm:1233 +#: guix/ui.scm:1267 #, scheme-format msgid "guix: missing command name~%" msgstr "guix: nom de commande manquant~%" -#: guix/ui.scm:1241 +#: guix/ui.scm:1275 #, scheme-format msgid "guix: unrecognized option '~a'~%" msgstr "guix: option « ~a » non reconnue ~%" -#: guix/http-client.scm:270 +#: guix/http-client.scm:265 #, scheme-format msgid "following redirection to `~a'...~%" msgstr "redirection vers « ~a »...~%" -#: guix/http-client.scm:279 -msgid "download failed" -msgstr "le téléchargement a échoué" +#: guix/http-client.scm:277 +#, scheme-format +msgid "~a: HTTP download failed: ~a (~s)" +msgstr "~a: le téléchargement HTTP a échoué: ~a (~s)" #: guix/nar.scm:155 msgid "signature is not a valid s-expression" @@ -2849,25 +3044,41 @@ msgstr "écoute sur SOCKET pour des connexions" msgid "produce debugging output" msgstr "produit une sortie de déboguage" -#: nix/nix-daemon/guix-daemon.cc:201 -#, c-format -msgid "error: %s: invalid number of rounds\n" -msgstr "erreur: %s: nombre de tours invalide\n" - -#: nix/nix-daemon/guix-daemon.cc:220 nix/nix-daemon/guix-daemon.cc:396 -#, c-format -msgid "error: %s\n" -msgstr "erreur: %s\n" - -#: nix/nix-daemon/guix-daemon.cc:281 -#, c-format -msgid "error: libgcrypt version mismatch\n" -msgstr "erreur: désaccord de version de libgcrypt\n" - -#: nix/nix-daemon/guix-daemon.cc:372 -#, c-format -msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" -msgstr "avertissement: le daemon fonctionne en tant que root, l'utilisation de « --build-users-group » est fortement recommandée\n" +#~ msgid "deprecated NAME-VERSION syntax; use NAME@VERSION instead~%" +#~ msgstr "syntaxe NOM-VERSION dépréciée. Utilisez plutôt NOM@VERSION~%" + +#~ msgid "/" +#~ msgstr "/" + +#~ msgid "~A: unexpected argument~%" +#~ msgstr "~A: argument inattendu~%" + +#~ msgid "~a: no substitute at '~a'~%" +#~ msgstr "~a: pas de substitut à « ~a »~%" + +#~ msgid "no substitutes for '~a'~%" +#~ msgstr "pas de substitut pour « ~a »~%" + +#~ msgid " ~50a: unavailable~%" +#~ msgstr " ~50a: non disponible~%" + +#~ msgid "gz" +#~ msgstr "gz" + +#~ msgid "download failed" +#~ msgstr "le téléchargement a échoué" + +#~ msgid "error: %s: invalid number of rounds\n" +#~ msgstr "erreur: %s: nombre de tours invalide\n" + +#~ msgid "error: %s\n" +#~ msgstr "erreur: %s\n" + +#~ msgid "error: libgcrypt version mismatch\n" +#~ msgstr "erreur: désaccord de version de libgcrypt\n" + +#~ msgid "warning: daemon is running as root, so using `--build-users-group' is highly recommended\n" +#~ msgstr "avertissement: le daemon fonctionne en tant que root, l'utilisation de « --build-users-group » est fortement recommandée\n" #~ msgid "unsupported argument for reference graph" #~ msgstr "argument non supporté pour le graphe de référence" diff --git a/po/packages/Makevars b/po/packages/Makevars index 1b4689b7c3..c29f3d306c 100644 --- a/po/packages/Makevars +++ b/po/packages/Makevars @@ -17,3 +17,8 @@ COPYRIGHT_HOLDER = Ludovic Courtès MSGID_BUGS_ADDRESS = ludo@gnu.org EXTRA_LOCALE_CATEGORIES = + +# Disable PO update upon "make dist", which sometimes fails when doing +# "make distcheck -j4". +# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>. +DIST_DEPENDS_ON_UPDATE_PO = no diff --git a/po/packages/da.po b/po/packages/da.po index 286ea70577..d722898845 100644 --- a/po/packages/da.po +++ b/po/packages/da.po @@ -1,14 +1,14 @@ # Danish translation guix-packages. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the guix package. -# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016. +# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016, 2017. # msgid "" msgstr "" -"Project-Id-Version: guix-packages 0.12.0\n" +"Project-Id-Version: guix-packages 0.13.0\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n" -"POT-Creation-Date: 2016-12-18 15:32+0100\n" -"PO-Revision-Date: 2016-12-18 19:30+01:00\n" +"POT-Creation-Date: 2017-05-10 23:22+0200\n" +"PO-Revision-Date: 2017-05-21 19:30+01:00\n" "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language: da\n" @@ -18,7 +18,7 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gnu/packages/abiword.scm:110 +#: gnu/packages/abiword.scm:115 msgid "Word processing program" msgstr "Tekstbehandlingsprogram" @@ -26,7 +26,7 @@ msgstr "Tekstbehandlingsprogram" #. 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:119 +#: gnu/packages/abiword.scm:124 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" @@ -37,7 +37,7 @@ msgstr "" "som kan bruges i dit daglige arbejde, personlige behov, eller bare\n" "god gammeldags skrivning." -#: gnu/packages/aspell.scm:57 gnu/packages/libreoffice.scm:644 +#: gnu/packages/aspell.scm:57 gnu/packages/libreoffice.scm:711 msgid "Spell checker" msgstr "Stavekontrol" @@ -53,15 +53,15 @@ msgstr "" "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:99 +#: gnu/packages/aspell.scm:100 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:123 +#: gnu/packages/audio.scm:124 msgid "Realtime modular synthesizer and effect processor" msgstr "" -#: gnu/packages/audio.scm:125 +#: gnu/packages/audio.scm:126 msgid "" "AlsaModularSynth is a digital implementation of a classical analog\n" "modular synthesizer system. It uses virtual control voltages to control the\n" @@ -70,11 +70,11 @@ msgid "" "Filter) modules follow the convention of 1V / Octave." msgstr "" -#: gnu/packages/audio.scm:162 +#: gnu/packages/audio.scm:163 msgid "Library for audio labelling" msgstr "" -#: gnu/packages/audio.scm:164 +#: gnu/packages/audio.scm:165 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" @@ -82,22 +82,33 @@ msgid "" "streams from live audio." msgstr "" -#: gnu/packages/audio.scm:260 +#: gnu/packages/audio.scm:266 msgid "Digital audio workstation" msgstr "" -#: gnu/packages/audio.scm:262 +#: gnu/packages/audio.scm:268 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:297 +#: gnu/packages/audio.scm:340 +msgid "Software for recording and editing sounds" +msgstr "" + +#: gnu/packages/audio.scm:342 +msgid "" +"Audacity is a multi-track audio editor designed for recording, playing\n" +"and editing digital audio. It features digital effects and spectrum analysis\n" +"tools." +msgstr "" + +#: gnu/packages/audio.scm:377 msgid "Tonewheel organ synthesizer" msgstr "" -#: gnu/packages/audio.scm:299 +#: gnu/packages/audio.scm:379 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" @@ -106,11 +117,11 @@ msgid "" "plugins are provided." msgstr "" -#: gnu/packages/audio.scm:336 +#: gnu/packages/audio.scm:416 msgid "Audio plug-in pack for LV2 and JACK environments" msgstr "Lydudvidelsesmpakke for LV2- og JACK-miljøer" -#: gnu/packages/audio.scm:338 +#: gnu/packages/audio.scm:418 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" @@ -119,11 +130,11 @@ msgid "" "tools (analyzer, mono/stereo tools, crossovers)." msgstr "" -#: gnu/packages/audio.scm:390 +#: gnu/packages/audio.scm:470 msgid "Software speech synthesizer" msgstr "Programsynthesizer for tale" -#: gnu/packages/audio.scm:391 +#: gnu/packages/audio.scm:471 msgid "" "eSpeak is a software speech synthesizer for English and\n" "other languages. eSpeak uses a \"formant synthesis\" method. This allows many\n" @@ -132,22 +143,22 @@ msgid "" "based on human speech recordings." msgstr "" -#: gnu/packages/audio.scm:438 +#: gnu/packages/audio.scm:518 msgid "LV2 plugins for live use" msgstr "LV2-udvidelsesmoduler for live brug" -#: gnu/packages/audio.scm:440 +#: gnu/packages/audio.scm:520 msgid "" "The infamous plugins are a collection of LV2 audio plugins for live\n" "performances. The plugins include a cellular automaton synthesizer, an\n" "envelope follower, distortion effects, tape effects and more." msgstr "" -#: gnu/packages/audio.scm:481 +#: gnu/packages/audio.scm:561 msgid "SWH plugins in LV2 format" msgstr "SWH-udvidelsesmoduler i LV2-format" -#: gnu/packages/audio.scm:483 +#: gnu/packages/audio.scm:563 msgid "" "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin\n" "classes include: dynamics (compressor, limiter), time (delay, chorus,\n" @@ -155,21 +166,21 @@ msgid "" "emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc." msgstr "" -#: gnu/packages/audio.scm:523 +#: gnu/packages/audio.scm:603 msgid "Sound and music computing system" msgstr "Lyd- og musikberegningsystem" -#: gnu/packages/audio.scm:525 +#: gnu/packages/audio.scm:605 msgid "" "Csound is a user-programmable and user-extensible sound processing\n" "language and software synthesizer." msgstr "" -#: gnu/packages/audio.scm:568 gnu/packages/audio.scm:2602 +#: gnu/packages/audio.scm:648 gnu/packages/audio.scm:2712 msgid "C++ wrapper around the ALSA API" msgstr "C++-omslag omkring ALSA API'en" -#: gnu/packages/audio.scm:570 +#: gnu/packages/audio.scm:650 msgid "" "clalsadrv is a C++ wrapper around the ALSA API simplifying access to\n" "ALSA PCM devices." @@ -177,22 +188,22 @@ msgstr "" "Clalsadrv er et C++-omslag omkring ALSA API'en, der forenkler adgang til\n" "ALSA PCM-enheder." -#: gnu/packages/audio.scm:607 +#: gnu/packages/audio.scm:687 msgid "LADSPA ambisonics plugins" msgstr "" -#: gnu/packages/audio.scm:609 +#: gnu/packages/audio.scm:689 msgid "" "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be\n" "used within Ardour. Features include: mono and stereo to B-format panning,\n" "horizontal rotator, square, hexagon and cube decoders." msgstr "" -#: gnu/packages/audio.scm:644 +#: gnu/packages/audio.scm:724 msgid "Chorus, phaser, and vintage high-pass and low-pass filters" msgstr "" -#: gnu/packages/audio.scm:646 +#: gnu/packages/audio.scm:726 msgid "" "This package provides various LADSPA plugins. @code{cs_chorus} and\n" "@code{cs_phaser} provide chorus and phaser effects, respectively;\n" @@ -202,21 +213,21 @@ msgid "" "the non-linear circuit elements of their original analog counterparts." msgstr "" -#: gnu/packages/audio.scm:684 +#: gnu/packages/audio.scm:764 msgid "LADSPA reverb plugin" msgstr "" -#: gnu/packages/audio.scm:686 +#: gnu/packages/audio.scm:766 msgid "" "This package provides a stereo reverb LADSPA plugin based on the\n" "well-known greverb." msgstr "" -#: gnu/packages/audio.scm:720 +#: gnu/packages/audio.scm:800 msgid "LADSPA four-band parametric equalizer plugin" msgstr "" -#: gnu/packages/audio.scm:722 +#: gnu/packages/audio.scm:802 msgid "" "This package provides a LADSPA plugin for a four-band parametric\n" "equalizer. Each section has an active/bypass switch, frequency, bandwidth and\n" @@ -231,11 +242,11 @@ msgid "" "for stage use." msgstr "" -#: gnu/packages/audio.scm:765 +#: gnu/packages/audio.scm:845 msgid "LADSPA stereo width plugin" msgstr "LADSPA-stereo med udvidelsesmodul" -#: gnu/packages/audio.scm:767 +#: gnu/packages/audio.scm:847 msgid "" "This package provides a LADSPA plugin to manipulate the stereo width of\n" "audio signals." @@ -243,11 +254,11 @@ msgstr "" "Denne pakke tilbyder et LADSPA-udvidelsesmodul til at manipulere stereodyben\n" "for lydsignaler." -#: gnu/packages/audio.scm:802 +#: gnu/packages/audio.scm:882 msgid "LADSPA plugin for synthesizer oscillators" msgstr "LADSPA-udvidelsesmodul for synthesizeroscillatorer" -#: gnu/packages/audio.scm:804 +#: gnu/packages/audio.scm:884 msgid "" "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:\n" "\n" @@ -262,11 +273,11 @@ msgid "" "output of analog synthesizers such as the Moog Voyager." msgstr "" -#: gnu/packages/audio.scm:846 +#: gnu/packages/audio.scm:926 msgid "LADSPA Autowah effect plugin" msgstr "" -#: gnu/packages/audio.scm:848 +#: gnu/packages/audio.scm:928 msgid "" "This package provides a LADSPA plugin for a Wah effect with envelope\n" "follower." @@ -274,19 +285,19 @@ msgstr "" "Denne pakke tilbyder et LADSPA-udvidelsesmodul for wn Wah-effekt med\n" "kuvertfølger." -#: gnu/packages/audio.scm:882 +#: gnu/packages/audio.scm:962 msgid "LADSPA stereo reverb plugin" msgstr "" -#: gnu/packages/audio.scm:884 +#: gnu/packages/audio.scm:964 msgid "This package provides a LADSPA plugin for a stereo reverb effect." msgstr "Denne pakke tilbyder et LADSPA-udvidelsesmodul for en stereo reverb-effekt." -#: gnu/packages/audio.scm:918 +#: gnu/packages/audio.scm:998 msgid "SoundFont synthesizer" msgstr "SoundFont-synthesizer" -#: gnu/packages/audio.scm:920 +#: gnu/packages/audio.scm:1000 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" @@ -294,11 +305,11 @@ msgid "" "also play midifiles using a Soundfont." msgstr "" -#: gnu/packages/audio.scm:952 +#: gnu/packages/audio.scm:1032 msgid "MPEG-4 and MPEG-2 AAC decoder" msgstr "MPEG-4- og MPEG-2 AAC-afkoder" -#: gnu/packages/audio.scm:954 +#: gnu/packages/audio.scm:1034 msgid "" "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,\n" "PS, and DAB+." @@ -306,29 +317,29 @@ msgstr "" "FAAD2 er en MPEG-4- og MPEG-2 AAC-afkoder, der understøtter LC, Main, LTP, SBR,\n" "PS og DAB+." -#: gnu/packages/audio.scm:983 +#: gnu/packages/audio.scm:1063 msgid "Signal processing language" msgstr "Signalbehandlingssprog" -#: gnu/packages/audio.scm:985 +#: gnu/packages/audio.scm:1065 msgid "Faust is a programming language for realtime audio signal processing." msgstr "Faust er et programmeringssprog for behandling af lydsignaler i realtid." -#: gnu/packages/audio.scm:1050 +#: gnu/packages/audio.scm:1130 msgid "GUS compatible patches for MIDI players" msgstr "" -#: gnu/packages/audio.scm:1052 +#: gnu/packages/audio.scm:1132 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:1105 +#: gnu/packages/audio.scm:1184 msgid "Virtual guitar amplifier" msgstr "" -#: gnu/packages/audio.scm:1106 +#: gnu/packages/audio.scm:1185 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" @@ -339,11 +350,11 @@ msgid "" "auto-wah." msgstr "" -#: gnu/packages/audio.scm:1162 +#: gnu/packages/audio.scm:1241 msgid "Audio effects processor" msgstr "" -#: gnu/packages/audio.scm:1164 +#: gnu/packages/audio.scm:1243 msgid "" "Rakarrack is a richly featured multi-effects processor emulating a\n" "guitar effects pedalboard. Effects include compressor, expander, noise gate,\n" @@ -355,22 +366,22 @@ msgid "" "well suited to all musical instruments and vocals." msgstr "" -#: gnu/packages/audio.scm:1215 +#: gnu/packages/audio.scm:1294 msgid "LV2 convolution reverb" msgstr "" -#: gnu/packages/audio.scm:1217 +#: gnu/packages/audio.scm:1296 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:1247 +#: gnu/packages/audio.scm:1326 msgid "JACK audio connection kit" msgstr "" -#: gnu/packages/audio.scm:1249 +#: gnu/packages/audio.scm:1328 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" @@ -380,32 +391,32 @@ msgid "" "synchronous execution of all clients, and low latency operation." msgstr "" -#: gnu/packages/audio.scm:1346 +#: gnu/packages/audio.scm:1434 msgid "Simple LV2 host for JACK" msgstr "" -#: gnu/packages/audio.scm:1348 +#: gnu/packages/audio.scm:1436 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:1391 +#: gnu/packages/audio.scm:1479 msgid "Linux Audio Developer's Simple Plugin API (LADSPA)" msgstr "" -#: gnu/packages/audio.scm:1393 +#: gnu/packages/audio.scm:1481 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:1429 +#: gnu/packages/audio.scm:1517 msgid "Audio application session manager" msgstr "" -#: gnu/packages/audio.scm:1431 +#: gnu/packages/audio.scm:1519 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" @@ -413,11 +424,11 @@ msgid "" "connections between them." msgstr "" -#: gnu/packages/audio.scm:1452 +#: gnu/packages/audio.scm:1540 msgid "Bauer stereophonic-to-binaural DSP" msgstr "" -#: gnu/packages/audio.scm:1454 +#: gnu/packages/audio.scm:1542 msgid "" "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is\n" "designed to improve headphone listening of stereo audio records. Recommended\n" @@ -425,21 +436,21 @@ msgid "" "essential distortions." msgstr "" -#: gnu/packages/audio.scm:1477 +#: gnu/packages/audio.scm:1565 msgid "Implementation of the Open Sound Control protocol" msgstr "" -#: gnu/packages/audio.scm:1479 +#: gnu/packages/audio.scm:1567 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:1501 +#: gnu/packages/audio.scm:1589 msgid "Python bindings for liblo" msgstr "" -#: gnu/packages/audio.scm:1503 +#: gnu/packages/audio.scm:1591 msgid "" "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)\n" "library. It supports almost the complete functionality of liblo, allowing you\n" @@ -447,22 +458,22 @@ msgid "" "included are the command line utilities @code{send_osc} and @code{dump_osc}." msgstr "" -#: gnu/packages/audio.scm:1545 +#: gnu/packages/audio.scm:1632 msgid "Library to simplify use of LV2 plugins in applications" msgstr "" -#: gnu/packages/audio.scm:1547 +#: gnu/packages/audio.scm:1634 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:1573 +#: gnu/packages/audio.scm:1660 msgid "LV2 audio plugin specification" msgstr "" -#: gnu/packages/audio.scm:1575 +#: gnu/packages/audio.scm:1662 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" @@ -470,38 +481,38 @@ msgid "" "software." msgstr "" -#: gnu/packages/audio.scm:1610 +#: gnu/packages/audio.scm:1697 msgid "LV2 port of the mda Piano plugin" msgstr "" -#: gnu/packages/audio.scm:1611 +#: gnu/packages/audio.scm:1698 msgid "An LV2 port of the mda Piano VSTi." msgstr "" -#: gnu/packages/audio.scm:1624 +#: gnu/packages/audio.scm:1711 msgid "LV2 port of the mda EPiano plugin" msgstr "" -#: gnu/packages/audio.scm:1625 +#: gnu/packages/audio.scm:1712 msgid "An LV2 port of the mda EPiano VSTi." msgstr "" -#: gnu/packages/audio.scm:1670 +#: gnu/packages/audio.scm:1757 msgid "C++ libraries for LV2 plugins" msgstr "" -#: gnu/packages/audio.scm:1672 +#: gnu/packages/audio.scm:1759 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:1713 +#: gnu/packages/audio.scm:1800 msgid "3D audio API" msgstr "" -#: gnu/packages/audio.scm:1715 +#: gnu/packages/audio.scm:1802 msgid "" "OpenAL provides capabilities for playing audio in a virtual 3D\n" "environment. Distance attenuation, doppler shift, and directional sound\n" @@ -511,70 +522,80 @@ msgid "" "buffers, and audio capture." msgstr "" -#: gnu/packages/audio.scm:1745 +#: gnu/packages/audio.scm:1832 msgid "Free implementation of OpenAL's ALUT standard" msgstr "" -#: gnu/packages/audio.scm:1746 +#: gnu/packages/audio.scm:1833 msgid "freealut is the OpenAL Utility Toolkit." msgstr "" -#: gnu/packages/audio.scm:1775 +#: gnu/packages/audio.scm:1862 msgid "Modular patch bay for audio and MIDI systems" msgstr "" -#: gnu/packages/audio.scm:1777 +#: gnu/packages/audio.scm:1864 msgid "" "Patchage is a modular patch bay for audio and MIDI systems based on JACK\n" "and ALSA." msgstr "" -#: gnu/packages/audio.scm:1802 +#: gnu/packages/audio.scm:1890 +msgid "Jack server control application" +msgstr "" + +#: gnu/packages/audio.scm:1891 +msgid "" +"Control a Jack server. Allows you to plug various sources\n" +"into various outputs and to start, stop and configure jackd" +msgstr "" + +#: gnu/packages/audio.scm:1917 msgid "Real-time audio utility library" msgstr "" -#: gnu/packages/audio.scm:1804 +#: gnu/packages/audio.scm:1919 msgid "" "Raul (Real-time Audio Utility Library) is a C++ utility library primarily\n" "aimed at audio/musical applications." msgstr "" -#: gnu/packages/audio.scm:1847 +#: gnu/packages/audio.scm:1962 msgid "Audio time-stretching and pitch-shifting library" msgstr "" -#: gnu/packages/audio.scm:1849 +#: gnu/packages/audio.scm:1964 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:1897 +#: gnu/packages/audio.scm:2012 msgid "Cross-platform MIDI library for C++" msgstr "" -#: gnu/packages/audio.scm:1899 +#: gnu/packages/audio.scm:2014 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:1925 +#: gnu/packages/audio.scm:2039 msgid "Library for serialising LV2 atoms to/from RDF" msgstr "" -#: gnu/packages/audio.scm:1927 +#: gnu/packages/audio.scm:2041 msgid "" "Sratom is a library for serialising LV2 atoms to/from RDF, particularly\n" "the Turtle syntax." msgstr "" -#: gnu/packages/audio.scm:1952 +#: gnu/packages/audio.scm:2065 msgid "Library for loading and wrapping LV2 plugin UIs" msgstr "" -#: gnu/packages/audio.scm:1954 +#: gnu/packages/audio.scm:2067 msgid "" "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.\n" "\n" @@ -586,11 +607,11 @@ msgid "" "Suil currently supports every combination of Gtk 2, Qt 4, and X11." msgstr "" -#: gnu/packages/audio.scm:2011 +#: gnu/packages/audio.scm:2124 msgid "Software synthesizer for playing MIDI files" msgstr "" -#: gnu/packages/audio.scm:2013 +#: gnu/packages/audio.scm:2126 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" @@ -599,43 +620,43 @@ msgid "" "disks as various audio file formats." msgstr "" -#: gnu/packages/audio.scm:2052 +#: gnu/packages/audio.scm:2165 msgid "Modular and extensible audio processing system" msgstr "" -#: gnu/packages/audio.scm:2054 +#: gnu/packages/audio.scm:2167 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:2093 +#: gnu/packages/audio.scm:2206 msgid "Library for time stretching and pitch scaling of audio" msgstr "" -#: gnu/packages/audio.scm:2095 +#: gnu/packages/audio.scm:2208 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:2118 +#: gnu/packages/audio.scm:2227 msgid "Hybrid lossless audio codec" msgstr "" -#: gnu/packages/audio.scm:2120 +#: gnu/packages/audio.scm:2229 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:2139 +#: gnu/packages/audio.scm:2248 msgid "Mod file playing library" msgstr "" -#: gnu/packages/audio.scm:2141 +#: gnu/packages/audio.scm:2250 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" @@ -643,33 +664,33 @@ msgid "" "surround and reverb." msgstr "" -#: gnu/packages/audio.scm:2160 +#: gnu/packages/audio.scm:2269 msgid "Module player library" msgstr "" -#: gnu/packages/audio.scm:2162 +#: gnu/packages/audio.scm:2271 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:2185 +#: gnu/packages/audio.scm:2294 msgid "Extended module player" msgstr "" -#: gnu/packages/audio.scm:2187 +#: gnu/packages/audio.scm:2296 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:2219 +#: gnu/packages/audio.scm:2328 msgid "Audio processing library for changing tempo, pitch and playback rate" msgstr "" -#: gnu/packages/audio.scm:2221 +#: gnu/packages/audio.scm:2330 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" @@ -677,11 +698,11 @@ msgid "" "control functionality, or just for playing around with the sound effects." msgstr "" -#: gnu/packages/audio.scm:2258 +#: gnu/packages/audio.scm:2367 msgid "Sound processing utility" msgstr "" -#: gnu/packages/audio.scm:2260 +#: gnu/packages/audio.scm:2369 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" @@ -689,92 +710,92 @@ msgid "" "can play and record audio files." msgstr "" -#: gnu/packages/audio.scm:2283 +#: gnu/packages/audio.scm:2392 msgid "One-dimensional sample-rate conversion library" msgstr "" -#: gnu/packages/audio.scm:2285 +#: gnu/packages/audio.scm:2394 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:2315 +#: gnu/packages/audio.scm:2424 msgid "MPEG Audio Layer 2 (MP2) encoder" msgstr "" -#: gnu/packages/audio.scm:2317 +#: gnu/packages/audio.scm:2426 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:2357 +#: gnu/packages/audio.scm:2466 msgid "Audio I/O library" msgstr "" -#: gnu/packages/audio.scm:2359 +#: gnu/packages/audio.scm:2468 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:2388 +#: gnu/packages/audio.scm:2498 msgid "Graphical user interface for FluidSynth" msgstr "" -#: gnu/packages/audio.scm:2390 +#: gnu/packages/audio.scm:2500 msgid "" "Qsynth is a GUI front-end application for the FluidSynth SoundFont\n" "synthesizer written in C++." msgstr "" -#: gnu/packages/audio.scm:2428 +#: gnu/packages/audio.scm:2538 msgid "Networked audio system" msgstr "" -#: gnu/packages/audio.scm:2430 +#: gnu/packages/audio.scm:2540 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:2461 +#: gnu/packages/audio.scm:2571 msgid "JACK audio frequency analyzer and display" msgstr "" -#: gnu/packages/audio.scm:2463 +#: gnu/packages/audio.scm:2573 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:2509 +#: gnu/packages/audio.scm:2619 msgid "Fast, partitioned convolution engine library" msgstr "" -#: gnu/packages/audio.scm:2511 +#: gnu/packages/audio.scm:2621 msgid "" "Zita convolver is a C++ library providing a real-time convolution\n" "engine." msgstr "" -#: gnu/packages/audio.scm:2556 +#: gnu/packages/audio.scm:2666 msgid "C++ library for resampling audio signals" msgstr "" -#: gnu/packages/audio.scm:2558 +#: gnu/packages/audio.scm:2668 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:2604 +#: gnu/packages/audio.scm:2714 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" @@ -782,11 +803,11 @@ msgid "" "point audio data." msgstr "" -#: gnu/packages/audio.scm:2635 +#: gnu/packages/audio.scm:2745 msgid "Cue and toc file parsers and utilities" msgstr "" -#: gnu/packages/audio.scm:2636 +#: gnu/packages/audio.scm:2746 msgid "" "Cuetools is a set of programs that are useful for manipulating\n" "and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC\n" @@ -794,11 +815,11 @@ msgid "" "machine-readable ASCII format." msgstr "" -#: gnu/packages/audio.scm:2655 +#: gnu/packages/audio.scm:2765 msgid "WAVE audio data processing tool" msgstr "" -#: gnu/packages/audio.scm:2656 +#: gnu/packages/audio.scm:2766 msgid "" "shntool is a multi-purpose WAVE data processing and reporting\n" "utility. File formats are abstracted from its core, so it can process any file\n" @@ -806,52 +827,52 @@ msgid "" "module to handle that particular file type." msgstr "" -#: gnu/packages/audio.scm:2693 +#: gnu/packages/audio.scm:2803 msgid "DTS Coherent Acoustics decoder" msgstr "" -#: gnu/packages/audio.scm:2694 +#: gnu/packages/audio.scm:2804 msgid "" "Dcadec is a DTS Coherent Acoustics surround sound decoder\n" "with support for HD extensions." msgstr "" -#: gnu/packages/audio.scm:2715 +#: gnu/packages/audio.scm:2825 msgid "Tool to adjust loudness of media files" msgstr "" -#: gnu/packages/audio.scm:2717 +#: gnu/packages/audio.scm:2827 msgid "" "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its\n" "flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the\n" "loudness of audio and video files to the same level." msgstr "" -#: gnu/packages/audio.scm:2748 +#: gnu/packages/audio.scm:2858 msgid "Lightweight audio filtering library" msgstr "" -#: gnu/packages/audio.scm:2749 +#: gnu/packages/audio.scm:2859 msgid "" "An easy to use audio filtering library made from webrtc\n" "code, used in @code{libtoxcore}." msgstr "" -#: gnu/packages/audio.scm:2793 +#: gnu/packages/audio.scm:2903 msgid "GSM 06.10 lossy speech compression library" msgstr "GSM 06.10-talekomprimeringsbibliotek uden kvalitetestab" -#: gnu/packages/audio.scm:2794 +#: gnu/packages/audio.scm:2904 msgid "" "This C library provides an encoder and a decoder for the GSM\n" "06.10 RPE-LTP lossy speech compression algorithm." msgstr "" -#: gnu/packages/backup.scm:93 +#: gnu/packages/backup.scm:108 msgid "Encrypted backup using rsync algorithm" msgstr "Krypteret sikkerhedskopiering via brug af rsync-algoritmen" -#: gnu/packages/backup.scm:95 +#: gnu/packages/backup.scm:110 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" @@ -868,22 +889,22 @@ msgstr "" "underskrive disse arkiver, så vil de være sikret mod spionage og/eller\n" "ændring af serveren." -#: gnu/packages/backup.scm:132 +#: gnu/packages/backup.scm:147 msgid "File verification and repair tool" msgstr "" -#: gnu/packages/backup.scm:133 +#: gnu/packages/backup.scm:148 msgid "" "Par2cmdline is a tool for generating RAID-like PAR2 recovery\n" "files using Reed-Solomon coding. PAR2 files can be stored along side backups\n" "or distributed files for recovering from bitrot." msgstr "" -#: gnu/packages/backup.scm:164 +#: gnu/packages/backup.scm:179 msgid "Simple incremental backup tool" msgstr "Simpelt værktøj til trinvis sikkerhedskopiering" -#: gnu/packages/backup.scm:166 +#: gnu/packages/backup.scm:181 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" @@ -896,11 +917,11 @@ msgstr "" "sikkerhedskopier, krypterede sikkerhedskopier og opdelte sikkerhedskopier\n" "(kaldt klumper) så der nemt kan brændes til cd/dvd." -#: gnu/packages/backup.scm:224 +#: gnu/packages/backup.scm:235 msgid "Multi-format archive and compression library" msgstr "Arkiv- og komprimeringsbibliotek for flere formater" -#: gnu/packages/backup.scm:226 +#: gnu/packages/backup.scm:237 msgid "" "Libarchive provides a flexible interface for reading and writing\n" "archives in various formats such as tar and cpio. Libarchive also supports\n" @@ -918,11 +939,11 @@ msgstr "" "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:289 +#: gnu/packages/backup.scm:314 msgid "Provide a list of files to backup" msgstr "Tilbyder en liste af filer til sikkerhedskopiering" -#: gnu/packages/backup.scm:291 +#: gnu/packages/backup.scm:316 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" @@ -935,11 +956,11 @@ msgstr "" "skripter er krævet til for det videre arbejde med denne liste og\n" "implementering af sikkerhedskopistrategien." -#: gnu/packages/backup.scm:321 +#: gnu/packages/backup.scm:346 msgid "Tar-compatible archiver" msgstr "Tar-kompatibelt arkivprogram" -#: gnu/packages/backup.scm:323 +#: gnu/packages/backup.scm:348 msgid "" "Btar is a tar-compatible archiver which allows arbitrary compression and\n" "ciphering, redundancy, differential backup, indexed extraction, multicore\n" @@ -951,11 +972,11 @@ msgstr "" "indekseret udtrækning, komprimering med flere kerner, inddata- og uddata-\n" "serialisering, og tolerance for delvise arkivfejl." -#: gnu/packages/backup.scm:349 +#: gnu/packages/backup.scm:374 msgid "Local/remote mirroring+incremental backup" msgstr "Lokal/ekstern spejlning+trinvis sikkerhedskopiering" -#: gnu/packages/backup.scm:351 +#: gnu/packages/backup.scm:376 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" @@ -983,11 +1004,23 @@ msgstr "" "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:393 +#: gnu/packages/backup.scm:418 +msgid "Deduplicating snapshot backup utility based on rsync" +msgstr "" + +#: gnu/packages/backup.scm:419 +msgid "" +"rsnapshot is a filesystem snapshot utility based on rsync.\n" +"rsnapshot makes it easy to make periodic snapshots of local machines, and\n" +"remote machines over SSH. To reduce the disk space required for each backup,\n" +"rsnapshot uses hard links to deduplicate identical files." +msgstr "" + +#: gnu/packages/backup.scm:454 msgid "Tools & library for data backup and distributed storage" msgstr "" -#: gnu/packages/backup.scm:395 +#: gnu/packages/backup.scm:456 msgid "" "Libchop is a set of utilities and library for data backup and\n" "distributed storage. Its main application is @command{chop-backup}, an\n" @@ -998,11 +1031,11 @@ msgid "" "detection, and lossless compression." msgstr "" -#: gnu/packages/backup.scm:491 +#: gnu/packages/backup.scm:553 msgid "Deduplicated, encrypted, authenticated and compressed backups" msgstr "" -#: gnu/packages/backup.scm:492 +#: gnu/packages/backup.scm:554 msgid "" "Borg is a deduplicating backup program. Optionally, it\n" "supports compression and authenticated encryption. The main goal of Borg is to\n" @@ -1012,11 +1045,11 @@ msgid "" "to not fully trusted targets. Borg is a fork of Attic." msgstr "" -#: gnu/packages/backup.scm:538 +#: gnu/packages/backup.scm:600 msgid "Deduplicating backup program" msgstr "" -#: gnu/packages/backup.scm:539 +#: gnu/packages/backup.scm:601 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" @@ -1024,11 +1057,36 @@ msgid "" "changes are stored." msgstr "" -#: gnu/packages/base.scm:70 +#: gnu/packages/backup.scm:631 +msgid "WIM file manipulation library and utilities" +msgstr "" + +#: gnu/packages/backup.scm:632 +msgid "" +"wimlib is a C library and set of command-line utilities for\n" +"creating, modifying, extracting, and mounting archives in the Windows Imaging\n" +"Format (@dfn{WIM files}). It can capture and apply WIMs directly from and to\n" +"NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes." +msgstr "" + +#: gnu/packages/backup.scm:689 +msgid "Easy and secure backup program" +msgstr "" + +#: gnu/packages/backup.scm:690 +msgid "" +"Obnam is an easy, secure backup program. Features\n" +"include snapshot backups, data de-duplication and encrypted backups\n" +"using GnuPG. Backups can be stored on local hard disks, or online via\n" +"the SSH SFTP protocol. The backup server, if used, does not require\n" +"any special software, on top of SSH." +msgstr "" + +#: gnu/packages/base.scm:71 msgid "Hello, GNU world: An example GNU package" msgstr "Hej, GNU-verden: Et eksempel på en GNU-pakke" -#: gnu/packages/base.scm:72 +#: gnu/packages/base.scm:73 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" @@ -1039,11 +1097,11 @@ msgstr "" "sådan understøtter programmer parametre på kommandolinjen, flere\n" "sprog og så videre." -#: gnu/packages/base.scm:106 +#: gnu/packages/base.scm:107 msgid "Print lines matching a pattern" msgstr "Udskriv linjer der matcher et mønster" -#: gnu/packages/base.scm:108 +#: gnu/packages/base.scm:109 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" @@ -1066,7 +1124,7 @@ msgstr "" msgid "Stream editor" msgstr "Strømredigeringsprogram" -#: gnu/packages/base.scm:146 +#: gnu/packages/base.scm:153 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" @@ -1080,11 +1138,11 @@ msgstr "" "tekstmønster i en strøm. GNU-implementeringen tilbyder flere\n" "udvidelser i forhold til standardredskabet." -#: gnu/packages/base.scm:185 +#: gnu/packages/base.scm:193 msgid "Managing tar archives" msgstr "Håndtering af tar-arkiver" -#: gnu/packages/base.scm:187 +#: gnu/packages/base.scm:195 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" @@ -1099,11 +1157,11 @@ msgstr "" "mappestruktur og filinformation såsom rettigheder og oprettelse/ændrings-\n" "datoer bevares. GNU tar tilbyder mange udvidelser over standardredskabet." -#: gnu/packages/base.scm:210 +#: gnu/packages/base.scm:218 msgid "Apply differences to originals, with optional backups" msgstr "Anvend forskelle på originaler, med valgfri sikkerhedskopiering" -#: gnu/packages/base.scm:212 +#: gnu/packages/base.scm:220 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" @@ -1117,11 +1175,11 @@ msgstr "" "forskellige diff-formater. Det kan også bruges til at tilbageføre\n" "tidligere anvendte forskelle." -#: gnu/packages/base.scm:232 +#: gnu/packages/base.scm:240 msgid "Comparing and merging files" msgstr "Sammenligning og sammenføjning af filer" -#: gnu/packages/base.scm:234 +#: gnu/packages/base.scm:242 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" @@ -1135,11 +1193,11 @@ msgstr "" "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:266 +#: gnu/packages/base.scm:274 msgid "Operating on files matching given criteria" msgstr "Operation på filer der matcher angivne kriterier" -#: gnu/packages/base.scm:268 +#: gnu/packages/base.scm:276 msgid "" "Findutils supplies the basic file directory searching utilities of the\n" "GNU system. It consists of two primary searching utilities: \"find\"\n" @@ -1155,11 +1213,11 @@ msgstr "" "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:323 +#: gnu/packages/base.scm:356 msgid "Core GNU utilities (file, text, shell)" msgstr "Core GNU-redskaber (file, text, shell)" -#: gnu/packages/base.scm:325 +#: gnu/packages/base.scm:358 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" @@ -1172,11 +1230,11 @@ msgstr "" "af disse værktøjer tilbyder udvidet funktionalitet udover det skitseret\n" "i POSIX-standarden." -#: gnu/packages/base.scm:367 +#: gnu/packages/base.scm:423 msgid "Remake files automatically" msgstr "Gendan filer automatisk" -#: gnu/packages/base.scm:369 +#: gnu/packages/base.scm:425 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" @@ -1193,11 +1251,11 @@ msgstr "" "gendannes efter at deres kilder har ændret sig. GNU make tilbyder\n" "mange funktionsrige udvidelser der ligger udover standardredskabet." -#: gnu/packages/base.scm:415 +#: gnu/packages/base.scm:471 msgid "Binary utilities: bfd gas gprof ld" msgstr "Binære redskaber: bfd gas gprof ld" -#: gnu/packages/base.scm:417 +#: gnu/packages/base.scm:473 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" @@ -1207,22 +1265,22 @@ msgid "" "included." msgstr "" -#: gnu/packages/base.scm:491 +#: gnu/packages/base.scm:547 msgid "The linker wrapper" msgstr "" -#: gnu/packages/base.scm:493 +#: gnu/packages/base.scm:549 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:667 +#: gnu/packages/base.scm:744 msgid "The GNU C Library" msgstr "" -#: gnu/packages/base.scm:669 +#: gnu/packages/base.scm:746 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" @@ -1232,47 +1290,47 @@ msgid "" "with the Linux kernel." msgstr "" -#: gnu/packages/base.scm:732 +#: gnu/packages/base.scm:826 msgid "The GNU C Library (GNU Hurd variant)" msgstr "GNU C-biblioteket (GNU Hurd-variant)" -#: gnu/packages/base.scm:804 +#: gnu/packages/base.scm:910 msgid "All the locales supported by the GNU C Library" msgstr "" -#: gnu/packages/base.scm:806 +#: gnu/packages/base.scm:912 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:874 +#: gnu/packages/base.scm:980 msgid "Small sample of UTF-8 locales" msgstr "" -#: gnu/packages/base.scm:876 +#: gnu/packages/base.scm:982 msgid "" "This package provides a small sample of UTF-8 locales mostly useful in\n" "test environments." msgstr "" -#: gnu/packages/base.scm:894 +#: gnu/packages/base.scm:1000 msgid "Find full path of shell commands" msgstr "" -#: gnu/packages/base.scm:896 +#: gnu/packages/base.scm:1002 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:1001 +#: gnu/packages/base.scm:1107 msgid "Database of current and historical time zones" msgstr "" -#: gnu/packages/base.scm:1002 +#: gnu/packages/base.scm:1108 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" @@ -1281,22 +1339,22 @@ msgid "" "and daylight-saving rules." msgstr "" -#: gnu/packages/base.scm:1028 +#: gnu/packages/base.scm:1159 msgid "Character set conversion library" msgstr "Bibliotek til konvertering af tegnsæt" -#: gnu/packages/base.scm:1030 +#: gnu/packages/base.scm:1161 msgid "" "libiconv provides an implementation of the iconv function for systems\n" "that lack it. iconv is used to convert between character encodings in a\n" "program. It supports a wide variety of different encodings." msgstr "" -#: gnu/packages/bittorrent.scm:102 +#: gnu/packages/bittorrent.scm:107 msgid "Fast and easy BitTorrent client" msgstr "" -#: gnu/packages/bittorrent.scm:104 +#: gnu/packages/bittorrent.scm:109 msgid "" "Transmission is a BitTorrent client that comes with graphical,\n" "textual, and Web user interfaces. Transmission also has a daemon for\n" @@ -1304,65 +1362,72 @@ msgid "" "DHT, µTP, PEX and Magnet Links." msgstr "" -#: gnu/packages/bittorrent.scm:136 +#: gnu/packages/bittorrent.scm:141 msgid "BitTorrent library of rtorrent" msgstr "BitTorrent-bibliotek for rtorrent" -#: gnu/packages/bittorrent.scm:138 +#: gnu/packages/bittorrent.scm:143 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:165 +#: gnu/packages/bittorrent.scm:170 msgid "BitTorrent client with ncurses interface" msgstr "" -#: gnu/packages/bittorrent.scm:167 +#: gnu/packages/bittorrent.scm:172 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/bittorrent.scm:208 +#: gnu/packages/bittorrent.scm:215 gnu/packages/bittorrent.scm:256 msgid "Console client for the Transmission BitTorrent daemon" msgstr "" -#: gnu/packages/bittorrent.scm:209 +#: gnu/packages/bittorrent.scm:216 +msgid "" +"Tremc is a console client, with a curses interface, for the\n" +"Transmission BitTorrent daemon." +msgstr "" + +#: gnu/packages/bittorrent.scm:257 msgid "" "Transmission-remote-cli is a console client, with a curses\n" -"interface, for the Transmission BitTorrent daemon." +"interface, for the Transmission BitTorrent daemon. This package is no longer\n" +"maintained upstream." msgstr "" -#: gnu/packages/bittorrent.scm:254 +#: gnu/packages/bittorrent.scm:305 msgid "Utility for parallel downloading files" msgstr "Redskab for parallel overførsel af filer" -#: gnu/packages/bittorrent.scm:256 +#: gnu/packages/bittorrent.scm:307 msgid "" "Aria2 is a lightweight, multi-protocol & multi-source command-line\n" "download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.\n" "Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces." msgstr "" -#: gnu/packages/bittorrent.scm:289 +#: gnu/packages/bittorrent.scm:340 msgid "Universal download manager with GTK+ interface" msgstr "" -#: gnu/packages/bittorrent.scm:291 +#: gnu/packages/bittorrent.scm:342 msgid "" "uGet is portable download manager with GTK+ interface supporting\n" "HTTP, HTTPS, BitTorrent and Metalink, supporting multi-connection\n" "downloads, download scheduling, download rate limiting." msgstr "" -#: gnu/packages/bittorrent.scm:319 +#: gnu/packages/bittorrent.scm:370 msgid "Utility to create BitTorrent metainfo files" msgstr "Redskab til at oprette BitTorrent-metainfofiler" -#: gnu/packages/bittorrent.scm:320 +#: gnu/packages/bittorrent.scm:371 msgid "" "mktorrent is a simple command-line utility to create\n" "BitTorrent @dfn{metainfo} files, often known simply as @dfn{torrents}, from\n" @@ -1372,32 +1437,54 @@ msgid "" "and will take advantage of multiple processor cores where possible." msgstr "" -#: gnu/packages/certs.scm:65 +#: gnu/packages/bittorrent.scm:412 +msgid "Feature complete BitTorrent implementation" +msgstr "" + +#: gnu/packages/bittorrent.scm:414 +msgid "" +"libtorrent-rasterbar is a feature complete C++ BitTorrent implementation\n" +"focusing on efficiency and scalability. It runs on embedded devices as well as\n" +"desktops." +msgstr "" + +#: gnu/packages/certs.scm:66 msgid "Python script to extract .pem data from certificate collection" msgstr "" -#: gnu/packages/certs.scm:67 +#: gnu/packages/certs.scm:68 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:136 +#: gnu/packages/certs.scm:137 msgid "CA certificates from Mozilla" msgstr "" -#: gnu/packages/certs.scm:138 +#: gnu/packages/certs.scm:139 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:83 +#: gnu/packages/certs.scm:195 +msgid "Let's Encrypt root and intermediate certificates" +msgstr "" + +#: gnu/packages/certs.scm:196 +msgid "" +"This package provides a certificate store containing only the\n" +"Let's Encrypt root and intermediate certificates. It is intended to be used\n" +"within Guix." +msgstr "" + +#: gnu/packages/compression.scm:88 msgid "Compression library" msgstr "" -#: gnu/packages/compression.scm:85 +#: gnu/packages/compression.scm:90 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" @@ -1410,31 +1497,45 @@ msgid "" "in compression." msgstr "" -#: gnu/packages/compression.scm:110 -msgid "Replacement for Sun's 'jar' utility" +#: gnu/packages/compression.scm:121 +msgid "Zip Compression library" +msgstr "Zip-komprimeringsbibliotek" + +#: gnu/packages/compression.scm:123 +msgid "" +"Minizip is a minimalistic library that supports compressing,\n" +"extracting and viewing ZIP archives. This version is extracted from\n" +"the @code{zlib} source." msgstr "" +"Minizip er et minimalistisk bibliotek, som understøtter komprimering,\n" +"udtrækning og visning af ZIP-arkiver. Denne version er udtrækket fra\n" +"kilden @code{zlib}." -#: gnu/packages/compression.scm:112 +#: gnu/packages/compression.scm:142 +msgid "Replacement for Sun's 'jar' utility" +msgstr "Erstatning for Suns redskab »jar«" + +#: gnu/packages/compression.scm:144 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:146 +#: gnu/packages/compression.scm:178 msgid "C library for manipulating POSIX tar files" -msgstr "" +msgstr "C-bibliotek til at manipulere POSIX-tar-filer" -#: gnu/packages/compression.scm:148 +#: gnu/packages/compression.scm:180 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:165 +#: gnu/packages/compression.scm:197 msgid "General file (de)compression (using lzw)" msgstr "" -#: gnu/packages/compression.scm:170 +#: gnu/packages/compression.scm:202 msgid "" "GNU Gzip provides data compression and decompression utilities; the\n" "typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single\n" @@ -1442,11 +1543,11 @@ msgid "" "\".tar.gz\" or \".tgz\", etc." msgstr "" -#: gnu/packages/compression.scm:246 +#: gnu/packages/compression.scm:278 msgid "High-quality data compression program" msgstr "" -#: gnu/packages/compression.scm:248 +#: gnu/packages/compression.scm:280 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" @@ -1455,11 +1556,11 @@ msgid "" "decompression." msgstr "" -#: gnu/packages/compression.scm:269 +#: gnu/packages/compression.scm:301 msgid "Parallel bzip2 compression utility" msgstr "" -#: gnu/packages/compression.scm:271 +#: gnu/packages/compression.scm:303 msgid "" "lbzip2 is a multi-threaded compression utility with support for the\n" "bzip2 compressed file format. lbzip2 can process standard bz2 files in\n" @@ -1469,11 +1570,11 @@ msgid "" "compatible with bzip2 – both at file format and command line level." msgstr "" -#: gnu/packages/compression.scm:301 +#: gnu/packages/compression.scm:333 msgid "Parallel bzip2 implementation" msgstr "" -#: gnu/packages/compression.scm:303 +#: gnu/packages/compression.scm:335 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" @@ -1481,11 +1582,11 @@ msgid "" "compressed with pbzip2 can be decompressed with bzip2)." msgstr "" -#: gnu/packages/compression.scm:324 +#: gnu/packages/compression.scm:356 msgid "General-purpose data compression" msgstr "" -#: gnu/packages/compression.scm:326 +#: gnu/packages/compression.scm:358 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" @@ -1498,11 +1599,11 @@ msgid "" "than gzip and 15 % smaller output than bzip2." msgstr "" -#: gnu/packages/compression.scm:354 +#: gnu/packages/compression.scm:386 msgid "Data compression library suitable for real-time data de-/compression" msgstr "" -#: gnu/packages/compression.scm:356 +#: gnu/packages/compression.scm:388 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" @@ -1512,11 +1613,22 @@ msgid "" "format are designed to be portable across platforms." msgstr "" -#: gnu/packages/compression.scm:379 -msgid "Compress or expand files" +#: gnu/packages/compression.scm:424 +msgid "Python bindings for the LZO data compression library" +msgstr "Pythonbindinger for LZO-datakomprimeringsbiblioteket" + +#: gnu/packages/compression.scm:426 +msgid "" +"Python-LZO provides Python bindings for LZO, i.e. you can access\n" +"the LZO library from your Python scripts thereby compressing ordinary\n" +"Python strings." msgstr "" -#: gnu/packages/compression.scm:381 +#: gnu/packages/compression.scm:449 +msgid "Compress or expand files" +msgstr "Komprimer eller udvid filer" + +#: gnu/packages/compression.scm:451 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" @@ -1524,11 +1636,11 @@ msgid "" "some compression ratio)." msgstr "" -#: gnu/packages/compression.scm:400 +#: gnu/packages/compression.scm:470 msgid "Lossless data compressor based on the LZMA algorithm" msgstr "" -#: gnu/packages/compression.scm:402 +#: gnu/packages/compression.scm:472 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" @@ -1536,11 +1648,11 @@ msgid "" "archiving. Lzip is a clean implementation of the LZMA algorithm." msgstr "" -#: gnu/packages/compression.scm:434 +#: gnu/packages/compression.scm:504 msgid "Archives in shell scripts, uuencode/uudecode" msgstr "" -#: gnu/packages/compression.scm:436 +#: gnu/packages/compression.scm:506 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" @@ -1548,71 +1660,71 @@ msgid "" "This package is mostly for compatibility and historical interest." msgstr "" -#: gnu/packages/compression.scm:467 +#: gnu/packages/compression.scm:537 msgid "Library for SoundFont decompression" msgstr "" -#: gnu/packages/compression.scm:469 +#: gnu/packages/compression.scm:539 msgid "" "SfArkLib is a C++ library for decompressing SoundFont files compressed\n" "with the sfArk algorithm." msgstr "" -#: gnu/packages/compression.scm:502 +#: gnu/packages/compression.scm:572 msgid "Basic sfArk decompressor" msgstr "" -#: gnu/packages/compression.scm:503 +#: gnu/packages/compression.scm:573 msgid "" "SfArk extractor converts SoundFonts in the compressed legacy\n" "sfArk file format to the uncompressed sf2 format." msgstr "" -#: gnu/packages/compression.scm:520 +#: gnu/packages/compression.scm:590 msgid "Compression tools for some formats used by Microsoft" msgstr "" -#: gnu/packages/compression.scm:522 +#: gnu/packages/compression.scm:592 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:541 +#: gnu/packages/compression.scm:611 msgid "Low-level interface to bzip2 compression library" msgstr "" -#: gnu/packages/compression.scm:542 +#: gnu/packages/compression.scm:612 msgid "" "This module provides a Perl interface to the bzip2\n" "compression library." msgstr "" -#: gnu/packages/compression.scm:576 +#: gnu/packages/compression.scm:646 msgid "Low-level interface to zlib compression library" msgstr "" -#: gnu/packages/compression.scm:577 +#: gnu/packages/compression.scm:647 msgid "" "This module provides a Perl interface to the zlib\n" "compression library." msgstr "" -#: gnu/packages/compression.scm:598 +#: gnu/packages/compression.scm:668 msgid "IO Interface to compressed files/buffers" msgstr "" -#: gnu/packages/compression.scm:599 +#: gnu/packages/compression.scm:669 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:625 +#: gnu/packages/compression.scm:697 msgid "Compression algorithm focused on speed" msgstr "" -#: gnu/packages/compression.scm:626 +#: gnu/packages/compression.scm:698 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" @@ -1621,11 +1733,22 @@ msgid "" "time for compression ratio." msgstr "" -#: gnu/packages/compression.scm:667 +#: gnu/packages/compression.scm:722 +msgid "LZ4 Bindings for Python" +msgstr "" + +#: gnu/packages/compression.scm:724 +msgid "" +"This package provides python bindings for the lz4 compression library\n" +"by Yann Collet. The project contains bindings for the LZ4 block format and\n" +"the LZ4 frame format." +msgstr "" + +#: gnu/packages/compression.scm:764 msgid "Tools to create and extract squashfs file systems" msgstr "" -#: gnu/packages/compression.scm:669 +#: gnu/packages/compression.scm:766 msgid "" "Squashfs is a highly compressed read-only file system for Linux. It uses\n" "zlib to compress files, inodes, and directories. All blocks are packed to\n" @@ -1635,21 +1758,21 @@ msgid "" "extract such file systems." msgstr "" -#: gnu/packages/compression.scm:706 +#: gnu/packages/compression.scm:803 msgid "Parallel implementation of gzip" msgstr "" -#: gnu/packages/compression.scm:708 +#: gnu/packages/compression.scm:805 msgid "" "This package provides a parallel implementation of gzip that exploits\n" "multiple processors and multiple cores when compressing data." msgstr "" -#: gnu/packages/compression.scm:732 +#: gnu/packages/compression.scm:829 msgid "Parallel indexing implementation of LZMA" msgstr "" -#: gnu/packages/compression.scm:734 +#: gnu/packages/compression.scm:831 msgid "" "The existing XZ Utils provide great compression in the .xz file format,\n" "but they produce just one big block of compressed data. Pixz instead produces\n" @@ -1658,11 +1781,11 @@ msgid "" "tarballs." msgstr "" -#: gnu/packages/compression.scm:775 +#: gnu/packages/compression.scm:872 msgid "Implementation of the Brotli compression algorithm" msgstr "" -#: gnu/packages/compression.scm:777 +#: gnu/packages/compression.scm:874 msgid "" "Brotli is a general-purpose lossless compression algorithm. It is\n" "similar in speed to deflate but offers denser compression. This package\n" @@ -1670,19 +1793,19 @@ msgid "" "respectively, based on the reference implementation from Google." msgstr "" -#: gnu/packages/compression.scm:801 +#: gnu/packages/compression.scm:898 msgid "Tool to unpack Cabinet archives" msgstr "" -#: gnu/packages/compression.scm:802 +#: gnu/packages/compression.scm:899 msgid "Extracts files out of Microsoft Cabinet (.cab) archives" msgstr "" -#: gnu/packages/compression.scm:834 +#: gnu/packages/compression.scm:931 msgid "Delta encoder for binary files" msgstr "" -#: gnu/packages/compression.scm:835 +#: gnu/packages/compression.scm:932 msgid "" "xdelta encodes only the differences between two binary files\n" "using the VCDIFF algorithm and patch file format described in RFC 3284. It can\n" @@ -1691,11 +1814,11 @@ msgid "" "human-readable output." msgstr "" -#: gnu/packages/compression.scm:867 +#: gnu/packages/compression.scm:964 msgid "Large file compressor with a very high compression ratio" msgstr "" -#: gnu/packages/compression.scm:868 +#: gnu/packages/compression.scm:965 msgid "" "lrzip is a compression utility that uses long-range\n" "redundancy reduction to improve the subsequent compression ratio of\n" @@ -1706,11 +1829,11 @@ msgid "" "well as bzip2." msgstr "" -#: gnu/packages/compression.scm:892 +#: gnu/packages/compression.scm:989 msgid "Fast compressor/decompressor" msgstr "" -#: gnu/packages/compression.scm:893 +#: gnu/packages/compression.scm:990 msgid "" "Snappy is a compression/decompression library. It does not\n" "aim for maximum compression, or compatibility with any other compression library;\n" @@ -1720,83 +1843,152 @@ msgid "" "100% bigger." msgstr "" -#: gnu/packages/compression.scm:960 +#: gnu/packages/compression.scm:1058 msgid "Command-line file archiver with high compression ratio" msgstr "" -#: gnu/packages/compression.scm:961 +#: gnu/packages/compression.scm:1059 msgid "" "p7zip is a command-line port of 7-Zip, a file archiver that\n" "handles the 7z format which features very high compression ratios." msgstr "" -#: gnu/packages/compression.scm:1000 +#: gnu/packages/compression.scm:1098 msgid "Compressed C++ iostream" msgstr "" -#: gnu/packages/compression.scm:1001 +#: gnu/packages/compression.scm:1099 msgid "" "gzstream is a small library for providing zlib\n" "functionality in a C++ iostream." msgstr "" -#: gnu/packages/databases.scm:116 +#: gnu/packages/compression.scm:1146 +msgid "Incremental journaling archiver" +msgstr "" + +#: gnu/packages/compression.scm:1147 +msgid "" +"ZPAQ is a command-line archiver for realistic situations with\n" +"many duplicate and already compressed files. It backs up only those files\n" +"modified since the last update. All previous versions remain untouched and can\n" +"be independently recovered. Identical files are only stored once (known as\n" +"@dfn{de-duplication}). Archives can also be encrypted.\n" +"\n" +"ZPAQ is intended to back up user data, not entire operating systems. It ignores\n" +"owner and group IDs, ACLs, extended attributes, or special file types like\n" +"devices, sockets, or named pipes. It does not follow or restore symbolic links\n" +"or junctions, and always follows hard links." +msgstr "" + +#: gnu/packages/compression.scm:1175 +msgid "RAR archive extraction tool" +msgstr "" + +#: gnu/packages/compression.scm:1176 +msgid "" +"Unrar is a simple command-line program to list and extract\n" +"RAR archives." +msgstr "" + +#: gnu/packages/compression.scm:1212 +msgid "Zstandard real-time compression algorithm" +msgstr "" + +#: gnu/packages/compression.scm:1213 +msgid "" +"Zstandard (@command{zstd}) is a lossless compression algorithm\n" +"that combines very fast operation with a compression ratio comparable to that of\n" +"zlib. In most scenarios, both compression and decompression can be performed in\n" +"‘real time’. The compressor can be configured to provide the most suitable\n" +"trade-off between compression ratio and speed, without affecting decompression\n" +"speed." +msgstr "" + +#: gnu/packages/compression.scm:1252 +msgid "Threaded implementation of the Zstandard compression algorithm" +msgstr "" + +#: gnu/packages/compression.scm:1253 +msgid "" +"Parallel Zstandard (PZstandard or @command{pzstd}) is a\n" +"multi-threaded implementation of the @uref{http://zstd.net/, Zstandard\n" +"compression algorithm}. It is fully compatible with the original Zstandard file\n" +"format and command-line interface, and can be used as a drop-in replacement.\n" +"\n" +"Compression is distributed over multiple processor cores to improve performance,\n" +"as is the decompression of data compressed in this manner. Data compressed by\n" +"other implementations will only be decompressed by two threads: one performing\n" +"the actual decompression, the other input and output." +msgstr "" + +#: gnu/packages/databases.scm:120 msgid "Clustered RDF storage and query engine" msgstr "" -#: gnu/packages/databases.scm:117 +#: gnu/packages/databases.scm:121 msgid "" "4store is a RDF/SPARQL store written in C, supporting\n" "either single machines or networked clusters." msgstr "" -#: gnu/packages/databases.scm:136 +#: gnu/packages/databases.scm:140 msgid "Hash library of database functions compatible with traditional dbm" msgstr "" -#: gnu/packages/databases.scm:138 +#: gnu/packages/databases.scm:142 msgid "" "GDBM is a library for manipulating hashed databases. It is used to\n" "store key/value pairs in a file in a manner similar to the Unix dbm library\n" "and provides interfaces to the traditional file format." msgstr "" -#: gnu/packages/databases.scm:189 +#: gnu/packages/databases.scm:193 msgid "Berkeley database" msgstr "" -#: gnu/packages/databases.scm:191 +#: gnu/packages/databases.scm:195 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:278 +#: gnu/packages/databases.scm:286 +msgid "Fast key-value storage library" +msgstr "" + +#: gnu/packages/databases.scm:288 +msgid "" +"LevelDB is a fast key-value storage library that provides an ordered\n" +"mapping from string keys to string values." +msgstr "" + +#: gnu/packages/databases.scm:365 msgid "Fast, easy to use, and popular database" msgstr "" -#: gnu/packages/databases.scm:280 +#: gnu/packages/databases.scm:367 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:347 +#: gnu/packages/databases.scm:443 msgid "SQL database server" msgstr "" -#: gnu/packages/databases.scm:349 +#: gnu/packages/databases.scm:445 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:379 +#: gnu/packages/databases.scm:475 msgid "Powerful object-relational database system" msgstr "" -#: gnu/packages/databases.scm:381 +#: gnu/packages/databases.scm:477 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" @@ -1806,11 +1998,25 @@ msgid "" "pictures, sounds, or video." msgstr "" -#: gnu/packages/databases.scm:436 +#: gnu/packages/databases.scm:503 +msgid "Key-value database" +msgstr "" + +#: gnu/packages/databases.scm:504 +msgid "" +"QDBM is a library of routines for managing a\n" +"database. The database is a simple data file containing key-value\n" +"pairs. Every key and value is serial bytes with variable length.\n" +"Binary data as well as character strings can be used as a key or a\n" +"value. There is no concept of data tables or data types. Records are\n" +"organized in a hash table or B+ tree." +msgstr "" + +#: gnu/packages/databases.scm:559 msgid "Manipulate plain text files as databases" msgstr "" -#: gnu/packages/databases.scm:438 +#: gnu/packages/databases.scm:561 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" @@ -1819,11 +2025,26 @@ msgid "" "types are supported, as is encryption." msgstr "" -#: gnu/packages/databases.scm:495 +#: gnu/packages/databases.scm:637 +msgid "Persistent key-value store for fast storage" +msgstr "" + +#: gnu/packages/databases.scm:639 +msgid "" +"RocksDB is a library that forms the core building block for a fast\n" +"key-value server, especially suited for storing data on flash drives. It\n" +"has a @dfn{Log-Structured-Merge-Database} (LSM) design with flexible tradeoffs\n" +"between @dfn{Write-Amplification-Factor} (WAF), @dfn{Read-Amplification-Factor}\n" +"(RAF) and @dfn{Space-Amplification-Factor} (SAF). It has multi-threaded\n" +"compactions, making it specially suitable for storing multiple terabytes of\n" +"data in a single database. RocksDB is partially based on @code{LevelDB}." +msgstr "" + +#: gnu/packages/databases.scm:698 msgid "Command-line tool for accessing SPARQL endpoints over HTTP" msgstr "" -#: gnu/packages/databases.scm:496 +#: gnu/packages/databases.scm:699 msgid "" "Sparql-query is a command-line tool for accessing SPARQL\n" "endpoints over HTTP. It has been intentionally designed to 'feel' similar to\n" @@ -1834,11 +2055,11 @@ msgid "" "for example from a shell script." msgstr "" -#: gnu/packages/databases.scm:553 +#: gnu/packages/databases.scm:741 msgid "The SQLite database management system" msgstr "" -#: gnu/packages/databases.scm:555 +#: gnu/packages/databases.scm:743 msgid "" "SQLite is a software library that implements a self-contained, serverless,\n" "zero-configuration, transactional SQL database engine. SQLite is the most\n" @@ -1846,11 +2067,11 @@ msgid "" "is in the public domain." msgstr "" -#: gnu/packages/databases.scm:610 +#: gnu/packages/databases.scm:778 msgid "Trivial database" msgstr "" -#: gnu/packages/databases.scm:612 +#: gnu/packages/databases.scm:780 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" @@ -1858,19 +2079,19 @@ msgid "" "extremely small." msgstr "" -#: gnu/packages/databases.scm:631 +#: gnu/packages/databases.scm:799 msgid "Database independent interface for Perl" msgstr "" -#: gnu/packages/databases.scm:632 +#: gnu/packages/databases.scm:800 msgid "This package provides an database interface for Perl." msgstr "" -#: gnu/packages/databases.scm:679 +#: gnu/packages/databases.scm:847 msgid "Extensible and flexible object <-> relational mapper" msgstr "" -#: gnu/packages/databases.scm:680 +#: gnu/packages/databases.scm:848 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" @@ -1882,21 +2103,21 @@ msgid "" "\"ORDER BY\" and \"HAVING\" support." msgstr "" -#: gnu/packages/databases.scm:710 +#: gnu/packages/databases.scm:878 msgid "Cursor with built-in caching support" msgstr "" -#: gnu/packages/databases.scm:711 +#: gnu/packages/databases.scm:879 msgid "" "DBIx::Class::Cursor::Cached provides a cursor class with\n" "built-in caching support." msgstr "" -#: gnu/packages/databases.scm:731 +#: gnu/packages/databases.scm:899 msgid "Introspect many-to-many relationships" msgstr "" -#: gnu/packages/databases.scm:732 +#: gnu/packages/databases.scm:900 msgid "" "Because the many-to-many relationships are not real\n" "relationships, they can not be introspected with DBIx::Class. Many-to-many\n" @@ -1906,22 +2127,22 @@ msgid "" "introspected and examined." msgstr "" -#: gnu/packages/databases.scm:789 +#: gnu/packages/databases.scm:957 msgid "Create a DBIx::Class::Schema based on a database" msgstr "Opret et DBIx::Class::Schema baseret på en database" -#: gnu/packages/databases.scm:790 +#: gnu/packages/databases.scm:958 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:814 +#: gnu/packages/databases.scm:982 msgid "DBI PostgreSQL interface" msgstr "DBI PostgreSQL-grænseflade" -#: gnu/packages/databases.scm:815 +#: gnu/packages/databases.scm:983 msgid "" "This package provides a PostgreSQL driver for the Perl5\n" "@dfn{Database Interface} (DBI)." @@ -1929,11 +2150,11 @@ msgstr "" "Denne pakke tilbyder en PostgreSQL-driver for Perl5-\n" "@dfn{Database Interface} (DBI)." -#: gnu/packages/databases.scm:838 +#: gnu/packages/databases.scm:1006 msgid "DBI MySQL interface" msgstr "DBI MySQL-grænseflade" -#: gnu/packages/databases.scm:839 +#: gnu/packages/databases.scm:1007 msgid "" "This package provides a MySQL driver for the Perl5\n" "@dfn{Database Interface} (DBI)." @@ -1941,11 +2162,11 @@ msgstr "" "Denne pakke tilbyder en MySQL-driver for Perl5-\n" "@dfn{Database Interface} (DBI)." -#: gnu/packages/databases.scm:858 +#: gnu/packages/databases.scm:1026 msgid "SQlite interface for Perl" msgstr "SQlite-grænseflade for Perl" -#: gnu/packages/databases.scm:859 +#: gnu/packages/databases.scm:1027 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" @@ -1953,11 +2174,11 @@ msgid "" "module, and nothing else." msgstr "" -#: gnu/packages/databases.scm:889 +#: gnu/packages/databases.scm:1057 msgid "Generate SQL from Perl data structures" msgstr "Opret SQL fra Perldatastrukturer" -#: gnu/packages/databases.scm:890 +#: gnu/packages/databases.scm:1058 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" @@ -1967,43 +2188,43 @@ msgid "" "time your data changes." msgstr "" -#: gnu/packages/databases.scm:919 +#: gnu/packages/databases.scm:1087 msgid "Split SQL code into atomic statements" msgstr "" -#: gnu/packages/databases.scm:920 +#: gnu/packages/databases.scm:1088 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:938 +#: gnu/packages/databases.scm:1106 msgid "SQL tokenizer" msgstr "" -#: gnu/packages/databases.scm:939 +#: gnu/packages/databases.scm:1107 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:957 +#: gnu/packages/databases.scm:1125 msgid "Data source abstraction library" msgstr "Abstraktionsbibliotek for datakilde" -#: gnu/packages/databases.scm:958 +#: gnu/packages/databases.scm:1126 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:982 +#: gnu/packages/databases.scm:1150 msgid "In-memory key/value and document store" msgstr "" -#: gnu/packages/databases.scm:984 +#: gnu/packages/databases.scm:1152 msgid "" "UnQLite is an in-process software library which implements a\n" "self-contained, serverless, zero-configuration, transactional NoSQL\n" @@ -2012,33 +2233,47 @@ msgid "" "similar to BerkeleyDB, LevelDB, etc." msgstr "" -#: gnu/packages/databases.scm:1012 +#: gnu/packages/databases.scm:1180 msgid "Key-value cache and store" msgstr "" -#: gnu/packages/databases.scm:1013 +#: gnu/packages/databases.scm:1181 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/databases.scm:1039 +#: gnu/packages/databases.scm:1207 msgid "Kyoto Cabinet is a modern implementation of the DBM database" msgstr "" -#: gnu/packages/databases.scm:1041 +#: gnu/packages/databases.scm:1209 msgid "" "Kyoto Cabinet is a standalone file-based database that supports Hash\n" "and B+ Tree data storage models. It is a fast key-value lightweight\n" "database and supports many programming languages. It is a NoSQL database." msgstr "" -#: gnu/packages/databases.scm:1073 +#: gnu/packages/databases.scm:1235 +msgid "Tokyo Cabinet is a modern implementation of the DBM database" +msgstr "" + +#: gnu/packages/databases.scm:1237 +msgid "" +"Tokyo Cabinet is a library of routines for managing a database.\n" +"The database is a simple data file containing records, each is a pair of a\n" +"key and a value. Every key and value is serial bytes with variable length.\n" +"Both binary data and character string can be used as a key and a value.\n" +"There is neither concept of data tables nor data types. Records are\n" +"organized in hash table, B+ tree, or fixed-length array." +msgstr "" + +#: gnu/packages/databases.scm:1272 msgid "NoSQL data engine" msgstr "" -#: gnu/packages/databases.scm:1075 +#: gnu/packages/databases.scm:1274 msgid "" "WiredTiger is an extensible platform for data management. It supports\n" "row-oriented storage (where all columns of a row are stored together),\n" @@ -2047,38 +2282,38 @@ msgid "" "trees (LSM), for sustained throughput under random insert workloads." msgstr "" -#: gnu/packages/databases.scm:1111 +#: gnu/packages/databases.scm:1310 msgid "Perl5 access to Berkeley DB version 1.x" msgstr "" -#: gnu/packages/databases.scm:1113 +#: gnu/packages/databases.scm:1312 msgid "The DB::File module provides Perl bindings to the Berkeley DB version 1.x." msgstr "" -#: gnu/packages/databases.scm:1140 +#: gnu/packages/databases.scm:1339 msgid "Lightning memory-mapped database library" msgstr "" -#: gnu/packages/databases.scm:1141 +#: gnu/packages/databases.scm:1340 msgid "Lightning memory-mapped database library." msgstr "" -#: gnu/packages/databases.scm:1162 +#: gnu/packages/databases.scm:1369 msgid "C++ connector for PostgreSQL" msgstr "" -#: gnu/packages/databases.scm:1164 +#: gnu/packages/databases.scm:1371 msgid "" "Libpqxx is a C++ library to enable user programs to communicate with the\n" "PostgreSQL database back-end. The database back-end can be local or it may be\n" "on another machine, accessed via TCP/IP." msgstr "" -#: gnu/packages/databases.scm:1187 +#: gnu/packages/databases.scm:1394 msgid "Small object-relational mapping utility" msgstr "" -#: gnu/packages/databases.scm:1189 +#: gnu/packages/databases.scm:1396 msgid "" "Peewee is a simple and small ORM (object-relation mapping) tool. Peewee\n" "handles converting between pythonic values and those used by databases, so you\n" @@ -2087,11 +2322,11 @@ msgid "" "can autogenerate peewee models using @code{pwiz}, a model generator." msgstr "" -#: gnu/packages/databases.scm:1236 +#: gnu/packages/databases.scm:1443 msgid "Library providing transparent encryption of SQLite database files" msgstr "" -#: gnu/packages/databases.scm:1237 +#: gnu/packages/databases.scm:1444 msgid "" "SQLCipher is an implementation of SQLite, extended to\n" "provide transparent 256-bit AES encryption of database files. Pages are\n" @@ -2100,6 +2335,29 @@ msgid "" "development." msgstr "" +#: gnu/packages/databases.scm:1476 +msgid "Python ODBC Library" +msgstr "" + +#: gnu/packages/databases.scm:1477 +msgid "" +"@code{python-pyodbc-c} provides a Python DB-API driver\n" +"for ODBC." +msgstr "" + +#: gnu/packages/databases.scm:1514 +msgid "Read Microsoft Access databases" +msgstr "" + +#: gnu/packages/databases.scm:1515 +msgid "" +"MDB Tools is a set of tools and applications to read the\n" +"proprietary MDB file format used in Microsoft's Access database package. This\n" +"includes programs to export schema and data from Microsoft's Access database\n" +"file format to other databases such as MySQL, Oracle, Sybase, PostgreSQL,\n" +"etc., and an SQL engine for performing simple SQL queries." +msgstr "" + #: gnu/packages/debug.scm:78 msgid "Heuristical file minimizer" msgstr "" @@ -2127,7 +2385,7 @@ msgstr "" #: gnu/packages/debug.scm:251 msgid "Security-oriented fuzzer" -msgstr "" +msgstr "Sikkerhedsorienteret fuzzer" #: gnu/packages/debug.scm:253 msgid "" @@ -2146,12 +2404,12 @@ msgstr "" #: gnu/packages/debug.scm:307 msgid "" -"Stress Make is a customized GNU Make that explicitely managess the\n" -"order in which concurrent jobs are run in order to provoke erroneous behavior\n" -"into becoming manifest. It can run jobs in the order they're launched, in\n" -"backwards order, or in random order. The thought is that if code builds\n" -"correctly with Stress Make then it is likely that the @code{Makefile} contains\n" -"no race conditions." +"Stress Make is a customized GNU Make that explicitely manages the order\n" +"in which concurrent jobs are run to provoke erroneous behavior into becoming\n" +"manifest. It can run jobs in the order in which they're launched, in backwards\n" +"order, or in random order. The thought is that if code builds correctly with\n" +"Stress Make, then it is likely that the @code{Makefile} contains no race\n" +"conditions." msgstr "" #: gnu/packages/debug.scm:334 @@ -2176,11 +2434,24 @@ msgid "" "multiple test suites, which are then all managed by a single harness." msgstr "" -#: gnu/packages/games.scm:137 +#: gnu/packages/games.scm:196 +msgid "Free content game based on the Doom engine" +msgstr "" + +#: gnu/packages/games.scm:198 +msgid "" +"The Freedoom project aims to create a complete free content first person\n" +"shooter game. Freedoom by itself is just the raw material for a game: it must\n" +"be paired with a compatible game engine (such as @code{prboom-plus}) to be\n" +"played. Freedoom complements the Doom engine with free levels, artwork, sound\n" +"effects and music to make a completely free game." +msgstr "" + +#: gnu/packages/games.scm:229 msgid "Backgammon game" msgstr "Backgammonspil" -#: gnu/packages/games.scm:138 +#: gnu/packages/games.scm:230 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" @@ -2194,11 +2465,11 @@ msgstr "" "avancerede spillere. Udover grænsefladen for kommandolinjen har\n" "spillet også en attraktiv 3D-repræsentation af brættet." -#: gnu/packages/games.scm:167 +#: gnu/packages/games.scm:259 msgid "3d Rubik's cube game" msgstr "" -#: gnu/packages/games.scm:169 +#: gnu/packages/games.scm:261 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" @@ -2207,11 +2478,37 @@ msgid "" "scriptable with Guile." msgstr "" -#: gnu/packages/games.scm:221 +#: gnu/packages/games.scm:283 +msgid "The game of Shogi (Japanese chess)" +msgstr "" + +#: gnu/packages/games.scm:284 +msgid "" +"GNU Shogi is a program that plays the game Shogi (Japanese\n" +"Chess). It is similar to standard chess but this variant is far more complicated." +msgstr "" + +#: gnu/packages/games.scm:327 +msgid "Version of the classic 3D shoot'em'up game Doom" +msgstr "" + +#: gnu/packages/games.scm:329 +msgid "PrBoom+ is a Doom source port developed from the original PrBoom project." +msgstr "PrBoom+ er en Doom-kildeport udviklet fra det oprindelige PrBoom-projekt." + +#: gnu/packages/games.scm:349 +msgid "User interface for gnushogi" +msgstr "Brugergrænseflade for gnushogi" + +#: gnu/packages/games.scm:350 +msgid "A graphical user interface for the package @code{gnushogi}." +msgstr "En grafisk brugerflade for pakken @code{gnushogi}." + +#: gnu/packages/games.scm:399 msgid "GNU/Linux port of the indie game \"l'Abbaye des Morts\"" msgstr "GNU/Linux-port af indiespillet »l'Abbaye des Morts«" -#: gnu/packages/games.scm:222 +#: gnu/packages/games.scm:400 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" @@ -2220,11 +2517,22 @@ msgid "" "that beneath its ruins lay buried an ancient evil." msgstr "" -#: gnu/packages/games.scm:266 +#: gnu/packages/games.scm:452 +msgid "Dungeon exploration roguelike" +msgstr "" + +#: gnu/packages/games.scm:453 +msgid "" +"Angband is a Classic dungeon exploration roguelike. Explore\n" +"the depths below Angband, seeking riches, fighting monsters, and preparing to\n" +"fight Morgoth, the Lord of Darkness." +msgstr "" + +#: gnu/packages/games.scm:493 msgid "Lemmings clone" msgstr "Lemmingsklon" -#: gnu/packages/games.scm:268 +#: gnu/packages/games.scm:495 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" @@ -2234,22 +2542,22 @@ msgid "" "level's exit. The game is presented in a 2D side view." msgstr "" -#: gnu/packages/games.scm:290 +#: gnu/packages/games.scm:517 msgid "Convert English text to humorous dialects" msgstr "" -#: gnu/packages/games.scm:291 +#: gnu/packages/games.scm:518 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:323 +#: gnu/packages/games.scm:550 msgid "Simulate the display from \"The Matrix\"" msgstr "" -#: gnu/packages/games.scm:324 +#: gnu/packages/games.scm:551 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" @@ -2257,22 +2565,22 @@ msgid "" "asynchronously and at a user-defined speed." msgstr "" -#: gnu/packages/games.scm:344 +#: gnu/packages/games.scm:571 msgid "Full chess implementation" msgstr "Fuld skakimplementering" -#: gnu/packages/games.scm:345 +#: gnu/packages/games.scm:572 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:373 +#: gnu/packages/games.scm:600 msgid "Twisted adventures of young pig farmer Dink Smallwood" msgstr "" -#: gnu/packages/games.scm:375 +#: gnu/packages/games.scm:602 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" @@ -2280,19 +2588,19 @@ msgid "" "To that extent, it also includes a front-end for managing all of your D-Mods." msgstr "" -#: gnu/packages/games.scm:397 +#: gnu/packages/games.scm:627 msgid "Game data for GNU Freedink" msgstr "Spildata for GNU Freedink" -#: gnu/packages/games.scm:399 +#: gnu/packages/games.scm:629 msgid "This package contains the game data of GNU Freedink." msgstr "Denne pakke indeholder spildataen for GNU Freedink." -#: gnu/packages/games.scm:451 +#: gnu/packages/games.scm:681 msgid "Graphical user interface for chess programs" msgstr "Grafisk brugerflade for skakprogrammer" -#: gnu/packages/games.scm:452 +#: gnu/packages/games.scm:682 msgid "" "GNU XBoard is a graphical board for all varieties of chess,\n" "including international chess, xiangqi (Chinese chess), shogi (Japanese chess)\n" @@ -2301,11 +2609,11 @@ msgid "" "Portable Game Notation." msgstr "" -#: gnu/packages/games.scm:505 +#: gnu/packages/games.scm:735 msgid "Ball and paddle game" msgstr "" -#: gnu/packages/games.scm:506 +#: gnu/packages/games.scm:736 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" @@ -2313,11 +2621,11 @@ msgid "" "destroy, the better your score. The person with the highest score wins." msgstr "" -#: gnu/packages/games.scm:538 +#: gnu/packages/games.scm:768 msgid "Typing tutor" msgstr "" -#: gnu/packages/games.scm:540 +#: gnu/packages/games.scm:770 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" @@ -2326,11 +2634,11 @@ msgid "" "are primarily in English, however some in other languages are provided." msgstr "" -#: gnu/packages/games.scm:587 +#: gnu/packages/games.scm:817 msgid "3D game engine written in C++" msgstr "3D-spilmotor skrevet i C++" -#: gnu/packages/games.scm:589 +#: gnu/packages/games.scm:819 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" @@ -2338,11 +2646,11 @@ msgid "" "for common mesh file formats, and collision detection." msgstr "" -#: gnu/packages/games.scm:641 +#: gnu/packages/games.scm:871 msgid "2D space shooter" msgstr "2D-rumskyder" -#: gnu/packages/games.scm:643 +#: gnu/packages/games.scm:873 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" @@ -2350,19 +2658,19 @@ msgid "" "match, cannon keep, and grave-itation pit." msgstr "" -#: gnu/packages/games.scm:684 +#: gnu/packages/games.scm:914 msgid "Main game data for the Minetest game engine" msgstr "Spildata for spilmotoren Minetest" -#: gnu/packages/games.scm:686 +#: gnu/packages/games.scm:916 msgid "Game data for the Minetest infinite-world block sandox game." msgstr "" -#: gnu/packages/games.scm:738 +#: gnu/packages/games.scm:968 msgid "Infinite-world block sandbox game" msgstr "" -#: gnu/packages/games.scm:740 +#: gnu/packages/games.scm:970 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" @@ -2371,47 +2679,47 @@ msgid "" "in different ways." msgstr "" -#: gnu/packages/games.scm:779 +#: gnu/packages/games.scm:1009 msgid "Curses Implementation of the Glk API" msgstr "" -#: gnu/packages/games.scm:781 +#: gnu/packages/games.scm:1011 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." +"using the @code{curses.h} library for screen control." msgstr "" -#: gnu/packages/games.scm:818 +#: gnu/packages/games.scm:1049 msgid "Interpreter for Glulx VM" msgstr "Fortolker for Glulx VM" -#: gnu/packages/games.scm:820 +#: gnu/packages/games.scm:1051 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." +"reference interpreter, using the Glk API." msgstr "" -#: gnu/packages/games.scm:856 +#: gnu/packages/games.scm:1087 msgid "Z-machine interpreter" msgstr "" -#: gnu/packages/games.scm:858 +#: gnu/packages/games.scm:1089 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:908 +#: gnu/packages/games.scm:1142 msgid "Reference frontend for the libretro API" msgstr "" -#: gnu/packages/games.scm:910 +#: gnu/packages/games.scm:1144 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" @@ -2420,11 +2728,11 @@ msgid "" "multi-system game/emulator system." msgstr "" -#: gnu/packages/games.scm:930 +#: gnu/packages/games.scm:1164 msgid "Play the game of Go" msgstr "Spil Go" -#: gnu/packages/games.scm:932 +#: gnu/packages/games.scm:1166 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" @@ -2435,11 +2743,11 @@ msgid "" "Protocol)." msgstr "" -#: gnu/packages/games.scm:960 +#: gnu/packages/games.scm:1194 msgid "High speed arctic racing game based on Tux Racer" msgstr "" -#: gnu/packages/games.scm:962 +#: gnu/packages/games.scm:1196 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" @@ -2452,11 +2760,11 @@ msgid "" "This game is based on the GPL version of the famous game TuxRacer." msgstr "" -#: gnu/packages/games.scm:1042 +#: gnu/packages/games.scm:1276 msgid "3D kart racing game" msgstr "" -#: gnu/packages/games.scm:1043 +#: gnu/packages/games.scm:1277 msgid "" "SuperTuxKart is a 3D kart racing game, with a focus on\n" "having fun over realism. You can play with up to 4 friends on one PC, racing\n" @@ -2464,11 +2772,11 @@ msgid "" "also available." msgstr "" -#: gnu/packages/games.scm:1075 +#: gnu/packages/games.scm:1309 msgid "Game of jumping to the next floor, trying not to fall" msgstr "" -#: gnu/packages/games.scm:1077 +#: gnu/packages/games.scm:1311 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" @@ -2476,11 +2784,11 @@ msgid "" "falling, themeable graphics and sounds, and replays." msgstr "" -#: gnu/packages/games.scm:1120 +#: gnu/packages/games.scm:1354 msgid "Turn-based strategy game" msgstr "" -#: gnu/packages/games.scm:1122 +#: gnu/packages/games.scm:1356 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" @@ -2492,11 +2800,11 @@ msgid "" "next campaign." msgstr "" -#: gnu/packages/games.scm:1166 +#: gnu/packages/games.scm:1400 msgid "X86 emulator with CGA/EGA/VGA/etc. graphics and sound" msgstr "X86-emulator med CGA/EGA/VGA/etc. grafik og lyd" -#: gnu/packages/games.scm:1167 +#: gnu/packages/games.scm:1401 msgid "" "DOSBox is a DOS-emulator that uses the SDL library. DOSBox\n" "also emulates CPU:286/386 realmode/protected mode, Directory\n" @@ -2505,22 +2813,22 @@ msgid "" "older games." msgstr "" -#: gnu/packages/games.scm:1212 +#: gnu/packages/games.scm:1446 msgid "Mouse and keyboard discovery for children" msgstr "" -#: gnu/packages/games.scm:1214 +#: gnu/packages/games.scm:1448 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:1246 +#: gnu/packages/games.scm:1480 msgid "Puzzle game with a cat in lead role" msgstr "" -#: gnu/packages/games.scm:1247 +#: gnu/packages/games.scm:1481 msgid "" "Project Raincat is a game developed by Carnegie Mellon\n" "students through GCS during the Fall 2008 semester. Raincat features game\n" @@ -2529,11 +2837,11 @@ msgid "" "is programmed in Haskell." msgstr "" -#: gnu/packages/games.scm:1282 +#: gnu/packages/games.scm:1516 msgid "Client for 'The Mana World' and similar games" msgstr "" -#: gnu/packages/games.scm:1284 +#: gnu/packages/games.scm:1518 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" @@ -2541,96 +2849,96 @@ msgid "" "@uref{http://landoffire.org, Land of fire}." msgstr "" -#: gnu/packages/games.scm:1334 +#: gnu/packages/games.scm:1568 msgid "Nintendo 64 emulator core library" msgstr "Nintendo 64-emulator - grundlæggende bibliotek" -#: gnu/packages/games.scm:1336 +#: gnu/packages/games.scm:1570 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "core library." msgstr "" -#: gnu/packages/games.scm:1380 gnu/packages/games.scm:1425 -#: gnu/packages/games.scm:1467 gnu/packages/games.scm:1509 -#: gnu/packages/games.scm:1825 +#: gnu/packages/games.scm:1614 gnu/packages/games.scm:1659 +#: gnu/packages/games.scm:1701 gnu/packages/games.scm:1743 +#: gnu/packages/games.scm:2059 msgid "Mupen64Plus SDL input plugin" msgstr "" -#: gnu/packages/games.scm:1382 +#: gnu/packages/games.scm:1616 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "SDL audio plugin." msgstr "" -#: gnu/packages/games.scm:1427 +#: gnu/packages/games.scm:1661 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "SDL input plugin." msgstr "" -#: gnu/packages/games.scm:1469 +#: gnu/packages/games.scm:1703 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "high-level emulation (HLE) RSP processor plugin." msgstr "" -#: gnu/packages/games.scm:1511 +#: gnu/packages/games.scm:1745 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Z64 RSP processor plugin." msgstr "" -#: gnu/packages/games.scm:1555 gnu/packages/games.scm:1609 -#: gnu/packages/games.scm:1659 gnu/packages/games.scm:1707 +#: gnu/packages/games.scm:1789 gnu/packages/games.scm:1843 +#: gnu/packages/games.scm:1893 gnu/packages/games.scm:1941 msgid "Mupen64Plus Rice Video plugin" msgstr "" -#: gnu/packages/games.scm:1557 +#: gnu/packages/games.scm:1791 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Arachnoid video plugin." msgstr "" -#: gnu/packages/games.scm:1611 +#: gnu/packages/games.scm:1845 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Glide64 video plugin." msgstr "" -#: gnu/packages/games.scm:1661 +#: gnu/packages/games.scm:1895 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Glide64MK2 video plugin." msgstr "" -#: gnu/packages/games.scm:1709 +#: gnu/packages/games.scm:1943 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Rice Video plugin." msgstr "" -#: gnu/packages/games.scm:1761 +#: gnu/packages/games.scm:1995 msgid "Mupen64Plus Z64 video plugin" msgstr "" -#: gnu/packages/games.scm:1763 +#: gnu/packages/games.scm:1997 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" "Z64 video plugin." msgstr "" -#: gnu/packages/games.scm:1827 +#: gnu/packages/games.scm:2061 msgid "" "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator\n" "which is capable of accurately playing many games. This package contains the\n" @@ -2638,22 +2946,22 @@ msgid "" "towards a working Mupen64Plus for casual users." msgstr "" -#: gnu/packages/games.scm:1884 +#: gnu/packages/games.scm:2118 msgid "Nintendo Entertainment System (NES/Famicom) emulator" msgstr "" -#: gnu/packages/games.scm:1886 +#: gnu/packages/games.scm:2120 msgid "" "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment\n" "System (NES/Famicom) emulator Nestopia, with enhancements from members of the\n" "emulation community. It provides highly accurate emulation." msgstr "" -#: gnu/packages/games.scm:1916 +#: gnu/packages/games.scm:2150 msgid "Video game console emulator front-end" msgstr "" -#: gnu/packages/games.scm:1917 +#: gnu/packages/games.scm:2151 msgid "" "EmulationStation provides a graphical front-end to a large\n" "number of video game console emulators. It features an interface that is\n" @@ -2661,11 +2969,11 @@ msgid "" "and a game metadata scraper." msgstr "" -#: gnu/packages/games.scm:1969 +#: gnu/packages/games.scm:2203 msgid "Transportation economics simulator" msgstr "" -#: gnu/packages/games.scm:1970 +#: gnu/packages/games.scm:2204 msgid "" "OpenTTD is a game in which you transport goods and\n" "passengers by land, water and air. It is a re-implementation of Transport\n" @@ -2675,51 +2983,51 @@ msgid "" "it you will be prompted to download a graphics set." msgstr "" -#: gnu/packages/games.scm:2025 +#: gnu/packages/games.scm:2259 msgid "Pinball simulator" msgstr "Pinball-simulator" -#: gnu/packages/games.scm:2026 +#: gnu/packages/games.scm:2260 msgid "" "The Emilia Pinball Project is a pinball simulator. There\n" "are only two levels to play with, but they are very addictive." msgstr "" -#: gnu/packages/games.scm:2047 +#: gnu/packages/games.scm:2281 msgid "Board game inspired by The Settlers of Catan" msgstr "Brætspil inspireret af The Settlers of Catan" -#: gnu/packages/games.scm:2048 +#: gnu/packages/games.scm:2282 msgid "" "Pioneers is an emulation of the board game The Settlers of\n" "Catan. It can be played on a local network, on the internet, and with AI\n" "players." msgstr "" -#: gnu/packages/games.scm:2082 +#: gnu/packages/games.scm:2316 msgid "Nintendo DS emulator" msgstr "Nintendo DS-emulator" -#: gnu/packages/games.scm:2084 +#: gnu/packages/games.scm:2318 msgid "DeSmuME is an emulator for the Nintendo DS handheld gaming console." msgstr "DeSmuME er en emulator for den håndholdte spilkonsol Nintendo DS." -#: gnu/packages/games.scm:2122 +#: gnu/packages/games.scm:2356 msgid "Logic puzzle game" msgstr "" -#: gnu/packages/games.scm:2123 +#: gnu/packages/games.scm:2357 msgid "" "The goal of this logic game is to open all cards in a 6x6\n" "grid, using a number of hints as to their relative position. The game idea\n" "is attributed to Albert Einstein." msgstr "" -#: gnu/packages/games.scm:2152 +#: gnu/packages/games.scm:2386 msgid "MUD and telnet client" msgstr "" -#: gnu/packages/games.scm:2154 +#: gnu/packages/games.scm:2388 msgid "" "POWWOW is a client software which can be used for telnet as well as for\n" "@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for\n" @@ -2727,22 +3035,22 @@ msgid "" "http://lavachat.symlynx.com/unix/" msgstr "" -#: gnu/packages/games.scm:2296 +#: gnu/packages/games.scm:2533 msgid "Arena shooter derived from the Cube 2 engine" msgstr "Arenaskydespil afledt fra Cube 2-motoren" -#: gnu/packages/games.scm:2298 +#: gnu/packages/games.scm:2535 msgid "" "Red Eclipse is an arena shooter, created from the Cube2 engine.\n" "Offering an innovative parkour system and distinct but all potent weapons,\n" "Red Eclipse provides fast paced and accessible gameplay." msgstr "" -#: gnu/packages/games.scm:2392 +#: gnu/packages/games.scm:2629 msgid "Nintendo multi-system emulator" msgstr "Nintendo multi-system-emulator" -#: gnu/packages/games.scm:2394 +#: gnu/packages/games.scm:2631 msgid "" "higan (formerly bsnes) is an emulator for multiple Nintendo video game\n" "consoles, including the Nintendo Entertainment System (NES/Famicom), Super\n" @@ -2751,22 +3059,22 @@ msgid "" "Super Game Boy, BS-X Satellaview, and Sufami Turbo." msgstr "" -#: gnu/packages/games.scm:2454 +#: gnu/packages/games.scm:2689 msgid "Text adventure game" msgstr "" -#: gnu/packages/games.scm:2456 +#: gnu/packages/games.scm:2691 msgid "" "Grue Hunter is a text adventure game written in Perl. You must make\n" "your way through an underground cave system in search of the Grue. Can you\n" "capture it and get out alive?" msgstr "" -#: gnu/packages/games.scm:2505 +#: gnu/packages/games.scm:2740 msgid "3D Real-time strategy and real-time tactics game" msgstr "" -#: gnu/packages/games.scm:2507 +#: gnu/packages/games.scm:2742 msgid "" "Warzone 2100 offers campaign, multi-player, and single-player skirmish\n" "modes. An extensive tech tree with over 400 different technologies, combined\n" @@ -2774,11 +3082,11 @@ msgid "" "tactics." msgstr "" -#: gnu/packages/games.scm:2550 +#: gnu/packages/games.scm:2775 msgid "2D scrolling shooter game" msgstr "2D-rullende skydespil" -#: gnu/packages/games.scm:2552 +#: gnu/packages/games.scm:2777 msgid "" "In the year 2579, the intergalactic weapons corporation, WEAPCO, has\n" "dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on\n" @@ -2787,11 +3095,11 @@ msgid "" "in strikes against the evil corporation." msgstr "" -#: gnu/packages/games.scm:2583 +#: gnu/packages/games.scm:2808 msgid "Fast-paced, arcade-style, top-scrolling space shooter" msgstr "" -#: gnu/packages/games.scm:2585 +#: gnu/packages/games.scm:2810 msgid "" "In this game you are the captain of the cargo ship Chromium B.S.U. and\n" "are responsible for delivering supplies to the troops on the front line. Your\n" @@ -2799,11 +3107,11 @@ msgid "" "safety of the Chromium vessel." msgstr "" -#: gnu/packages/games.scm:2659 +#: gnu/packages/games.scm:2885 msgid "Drawing software for children" msgstr "" -#: gnu/packages/games.scm:2661 +#: gnu/packages/games.scm:2887 msgid "" "Tux Paint is a free drawing program designed for young children (kids\n" "ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;\n" @@ -2812,40 +3120,40 @@ msgid "" "your child be creative." msgstr "" -#: gnu/packages/games.scm:2699 +#: gnu/packages/games.scm:2925 msgid "Stamp images for Tux Paint" msgstr "" -#: gnu/packages/games.scm:2701 +#: gnu/packages/games.scm:2927 msgid "" "This package contains a set of \"Rubber Stamp\" images which can be used\n" "with the \"Stamp\" tool within Tux Paint." msgstr "" -#: gnu/packages/games.scm:2748 +#: gnu/packages/games.scm:2974 msgid "Configure Tux Paint" msgstr "Konfigurer Tux Paint" -#: gnu/packages/games.scm:2750 +#: gnu/packages/games.scm:2976 msgid "Tux Paint Config is a graphical configuration editor for Tux Paint." msgstr "Tux Paint Config er et grafisk redigeringsprogram til konfigurationen for Tux Paint." -#: gnu/packages/games.scm:2782 +#: gnu/packages/games.scm:3008 msgid "2D platformer game" msgstr "2D-platformsspil" -#: gnu/packages/games.scm:2783 +#: gnu/packages/games.scm:3009 msgid "" "SuperTux is a free classic 2D jump'n run sidescroller game\n" "in a style similar to the original Super Mario games covered under\n" "the GNU GPL." msgstr "" -#: gnu/packages/games.scm:2817 +#: gnu/packages/games.scm:3043 msgid "MUD client" msgstr "MUD-klient" -#: gnu/packages/games.scm:2819 +#: gnu/packages/games.scm:3045 msgid "" "TinTin++ is a MUD client which supports MCCP (Mud Client Compression Protocol),\n" "MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET options used by MUDs,\n" @@ -2853,11 +3161,11 @@ msgid "" "auto mapper with a VT100 map display." msgstr "" -#: gnu/packages/games.scm:2856 +#: gnu/packages/games.scm:3082 msgid "Programming game" msgstr "Programmeringsspil" -#: gnu/packages/games.scm:2857 +#: gnu/packages/games.scm:3083 msgid "" "Learn programming, playing with ants and spider webs ;-)\n" "Your robot ant can be programmed in many languages: OCaml, Python, C, C++,\n" @@ -2865,22 +3173,22 @@ msgid "" "programmers may also add their own favorite language." msgstr "" -#: gnu/packages/games.scm:2901 +#: gnu/packages/games.scm:3127 msgid "Keyboard mashing and doodling game for babies" msgstr "" -#: gnu/packages/games.scm:2902 +#: gnu/packages/games.scm:3128 msgid "" "Bambam is a simple baby keyboard (and gamepad) masher\n" "application that locks the keyboard and mouse and instead displays bright\n" "colors, pictures, and sounds." msgstr "" -#: gnu/packages/games.scm:2945 +#: gnu/packages/games.scm:3171 msgid "Arcade-style fire fighting game" msgstr "" -#: gnu/packages/games.scm:2947 +#: gnu/packages/games.scm:3173 msgid "" "Mr. Rescue is an arcade styled 2d action game centered around evacuating\n" "civilians from burning buildings. The game features fast paced fire\n" @@ -2888,61 +3196,229 @@ msgid "" "throwing people around in pseudo-randomly generated buildings." msgstr "" -#: gnu/packages/games.scm:3023 +#: gnu/packages/games.scm:3279 msgid "Non-euclidean graphical rogue-like game" msgstr "" -#: gnu/packages/games.scm:3025 +#: gnu/packages/games.scm:3281 msgid "" "HyperRogue is a game in which the player collects treasures and fights\n" "monsters -- rogue-like but for the fact that it is played on the hyperbolic\n" "plane and not in euclidean space.\n" "\n" "In HyperRogue, the player can move through different parts of the world, which\n" -"are home to particular creatures and may be subject to own rules of \"physics\".\n" +"are home to particular creatures and may be subject to their own rules of\n" +"\"physics\".\n" "\n" -"While it can use ASCII characters to display the world the classical rogue\n" -"symbols, the game needs graphics to render the non-euclidean world." +"While the game can use ASCII characters to display the the classical rogue\n" +"symbols, it still needs graphics to render the non-euclidean world." msgstr "" -#: gnu/packages/games.scm:3065 +#: gnu/packages/games.scm:3324 msgid "Shooter with space station destruction" msgstr "" -#: gnu/packages/games.scm:3067 +#: gnu/packages/games.scm:3326 msgid "" "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game\n" "for Un*x systems with X11." msgstr "" -#: gnu/packages/gcc.scm:315 +#: gnu/packages/games.scm:3354 +msgid "Turn based empire building strategy game" +msgstr "" + +#: gnu/packages/games.scm:3355 +msgid "" +"Freeciv is a turn based empire building strategy game\n" +"inspired by the history of human civilization. The game commences in\n" +"prehistory and your mission is to lead your tribe from the Stone Age\n" +"to the Space Age." +msgstr "" + +#: gnu/packages/games.scm:3386 +msgid "Recreation of data decryption effect in \"Sneakers\"" +msgstr "" + +#: gnu/packages/games.scm:3388 +msgid "" +"@code{No More Secrets} provides a command line tool called \"nms\"\n" +"that recreates the famous data decryption effect seen on screen in the 1992\n" +"movie \"Sneakers\".\n" +"\n" +"This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and\n" +"it will apply the hollywood effect, initially showing encrypted data, then\n" +"starting a decryption sequence to reveal the original plaintext characters." +msgstr "" + +#: gnu/packages/games.scm:3415 +msgid "Data files for MegaGlest" +msgstr "Datafiler for MegaClest" + +#: gnu/packages/games.scm:3416 +msgid "This package contains the data files required for MegaGlest." +msgstr "Denne pakke indeholder spildataene krævet for MegaGlest." + +#: gnu/packages/games.scm:3469 +msgid "3D real-time strategy (RTS) game" +msgstr "" + +#: gnu/packages/games.scm:3470 +msgid "" +"MegaGlest is a cross-platform 3D real-time strategy (RTS)\n" +"game, where you control the armies of one of seven different factions: Tech,\n" +"Magic, Egypt, Indians, Norsemen, Persian or Romans." +msgstr "" + +#: gnu/packages/games.scm:3520 +msgid "Side-scrolling physics platformer with a ball of tar" +msgstr "" + +#: gnu/packages/games.scm:3521 +msgid "" +"In FreeGish you control Gish, a ball of tar who lives\n" +"happily with his girlfriend Brea, until one day a mysterious dark creature\n" +"emerges from a sewer hole and pulls her below ground." +msgstr "" + +#: gnu/packages/games.scm:3555 +msgid "Classic overhead run-and-gun game" +msgstr "" + +#: gnu/packages/games.scm:3556 +msgid "" +"C-Dogs SDL is a classic overhead run-and-gun game,\n" +"supporting up to 4 players in co-op and deathmatch modes. Customize your\n" +"player, choose from many weapons, and blast, slide and slash your way through\n" +"over 100 user-created campaigns." +msgstr "" + +#: gnu/packages/games.scm:3656 +msgid "3D puzzle game" +msgstr "3D-puslespil" + +#: gnu/packages/games.scm:3657 +msgid "" +"Kiki the nano bot is a 3D puzzle game. It is basically a\n" +"mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a\n" +"small robot living in the nano world, repair its maker." +msgstr "" + +#: gnu/packages/games.scm:3747 +msgid "2D retro multiplayer shooter game" +msgstr "2D-retro skydespil for flere spillere" + +#: gnu/packages/games.scm:3748 +msgid "" +"Teeworlds is an online multiplayer game. Battle with up to\n" +"16 players in a variety of game modes, including Team Deathmatch and Capture\n" +"The Flag. You can even design your own maps!" +msgstr "" + +#: gnu/packages/games.scm:3801 +msgid "Puzzle game with a dexterity component" +msgstr "" + +#: gnu/packages/games.scm:3802 +msgid "" +"Enigma is a puzzle game with 550 unique levels. The object\n" +"of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.\n" +"Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,\n" +"and most of all, countless hairy puzzles usually block your direct way to the\n" +"Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you\n" +"get bored) interact in many unexpected ways, and since many of them follow the\n" +"laws of physics (Enigma’s special laws of physics, that is), controlling them\n" +"with the mouse isn’t always trivial." +msgstr "" + +#: gnu/packages/games.scm:3873 +msgid "Puzzle game" +msgstr "" + +#: gnu/packages/games.scm:3874 +msgid "" +"Fish Fillets NG is strictly a puzzle game. The goal in\n" +"every of the seventy levels is always the same: find a safe way out. The fish\n" +"utter witty remarks about their surroundings, the various inhabitants of their\n" +"underwater realm quarrel among themselves or comment on the efforts of your\n" +"fish. The whole game is accompanied by quiet, comforting music." +msgstr "" + +#: gnu/packages/games.scm:3938 +msgid "Roguelike dungeon crawler game" +msgstr "" + +#: gnu/packages/games.scm:3939 +msgid "" +"Dungeon Crawl Stone Soup is a roguelike adventure through\n" +"dungeons filled with dangerous monsters in a quest to find the mystifyingly\n" +"fabulous Orb of Zot." +msgstr "" + +#: gnu/packages/games.scm:3979 +msgid "Cross-platform third-person action game" +msgstr "" + +#: gnu/packages/games.scm:3980 +msgid "" +"Lugaru is a third-person action game. The main character,\n" +"Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.\n" +"In his quest to find those responsible for slaughtering his village, he uncovers\n" +"a far-reaching conspiracy involving the corrupt leaders of the rabbit republic\n" +"and the starving wolves from a nearby den. Turner takes it upon himself to\n" +"fight against their plot and save his fellow rabbits from slavery." +msgstr "" + +#: gnu/packages/games.scm:4031 +msgid "Data files for 0ad" +msgstr "" + +#: gnu/packages/games.scm:4032 +msgid "0ad-data provides the data files required by the game 0ad." +msgstr "" + +#: gnu/packages/games.scm:4154 +msgid "3D real-time strategy game of ancient warfare" +msgstr "" + +#: gnu/packages/games.scm:4155 +msgid "" +"0 A.D. is a real-time strategy (RTS) game of ancient\n" +"warfare. It's a historically-based war/economy game that allows players to\n" +"relive or rewrite the history of twelve ancient civilizations, each depicted\n" +"at their peak of economic growth and military prowess.\n" +"\n" +"0ad needs a window manager that supports 'Extended Window Manager Hints'." +msgstr "" + +#: gnu/packages/gcc.scm:337 msgid "GNU Compiler Collection" msgstr "" -#: gnu/packages/gcc.scm:317 +#: gnu/packages/gcc.scm:339 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:403 +#: gnu/packages/gcc.scm:442 msgid "GNU C++ standard library" msgstr "GNU C++-standardbibliotek" -#: gnu/packages/gcc.scm:438 +#: gnu/packages/gcc.scm:477 msgid "Collection of subroutines used by various GNU programs" msgstr "Samling af underrutiner brugt af diverse GNU-programmer" -#: gnu/packages/gcc.scm:692 +#: gnu/packages/gcc.scm:742 msgid "GNU libstdc++ documentation" msgstr "" -#: gnu/packages/gcc.scm:761 +#: gnu/packages/gcc.scm:811 msgid "Manipulating sets and relations of integer points bounded by linear constraints" msgstr "" -#: gnu/packages/gcc.scm:764 +#: gnu/packages/gcc.scm:814 msgid "" "isl is a library for manipulating sets and relations of integer points\n" "bounded by linear constraints. Supported operations on sets include\n" @@ -2954,11 +3430,11 @@ msgid "" "dependence analysis and bounds on piecewise step-polynomials." msgstr "" -#: gnu/packages/gcc.scm:796 +#: gnu/packages/gcc.scm:846 msgid "Library to generate code for scanning Z-polyhedra" msgstr "" -#: gnu/packages/gcc.scm:798 +#: gnu/packages/gcc.scm:848 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" @@ -2973,11 +3449,11 @@ msgid "" "effective code." msgstr "" -#: gnu/packages/gcc.scm:853 +#: gnu/packages/gcc.scm:903 msgid "Reference manual for the C programming language" msgstr "" -#: gnu/packages/gcc.scm:855 +#: gnu/packages/gcc.scm:905 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" @@ -2985,11 +3461,11 @@ msgid "" "of the language. Library functions are not included." msgstr "" -#: gnu/packages/gettext.scm:90 +#: gnu/packages/gettext.scm:91 msgid "Tools and documentation for translation (used to build other packages)" msgstr "Værktøjer og dokumentation for oversættelse (brugt til at bygge andre pakker)" -#: gnu/packages/gettext.scm:92 +#: 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" @@ -2997,15 +3473,15 @@ msgid "" "translated messages from the catalogs. Nearly all GNU packages use Gettext." msgstr "" -#: gnu/packages/gettext.scm:122 +#: gnu/packages/gettext.scm:123 msgid "Tools and documentation for translation" msgstr "Værktøjer og dokumentation for oversættelse" -#: gnu/packages/gettext.scm:173 +#: gnu/packages/gettext.scm:181 msgid "Scripts to ease maintenance of translations" msgstr "" -#: gnu/packages/gettext.scm:175 +#: gnu/packages/gettext.scm:183 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" @@ -3038,11 +3514,11 @@ msgid "" "buffers." msgstr "" -#: gnu/packages/gimp.scm:178 +#: gnu/packages/gimp.scm:179 msgid "GNU Image Manipulation Program" msgstr "" -#: gnu/packages/gimp.scm:180 +#: gnu/packages/gimp.scm:181 msgid "" "GIMP is an application for image manipulation tasks such as photo\n" "retouching, composition and authoring. It supports all common image formats\n" @@ -3050,11 +3526,11 @@ msgid "" "that is extensible via a plugin system." msgstr "" -#: gnu/packages/gimp.scm:228 +#: gnu/packages/gimp.scm:229 msgid "GIMP plug-in to edit image in fourier space" msgstr "" -#: gnu/packages/gimp.scm:230 +#: gnu/packages/gimp.scm:231 msgid "" "This package provides a simple plug-in to apply the fourier transform on\n" "an image, allowing you to work with the transformed image inside GIMP. You\n" @@ -3062,22 +3538,22 @@ msgid "" "inverse fourier transform." msgstr "" -#: gnu/packages/gnome.scm:165 +#: gnu/packages/gnome.scm:184 msgid "CD/DVD burning tool for Gnome" msgstr "Cd/dvd-brændeværktøj for GNOME" -#: gnu/packages/gnome.scm:166 +#: gnu/packages/gnome.scm:185 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:213 +#: gnu/packages/gnome.scm:232 msgid "Diagram creation for GNOME" msgstr "Diagramoprettelse for GNOME" -#: gnu/packages/gnome.scm:214 +#: gnu/packages/gnome.scm:233 msgid "" "Dia can be used to draw different types of diagrams, and\n" "includes support for UML static structure diagrams (class diagrams), entity\n" @@ -3085,11 +3561,11 @@ msgid "" "formats like PNG, SVG, PDF and EPS." msgstr "" -#: gnu/packages/gnome.scm:235 +#: gnu/packages/gnome.scm:254 msgid "Bootstrap GNOME modules built from Git" msgstr "Bootstrap GNOME-moduler kompileret fra Git" -#: gnu/packages/gnome.scm:236 +#: gnu/packages/gnome.scm:255 msgid "" "gnome-common contains various files needed to bootstrap\n" "GNOME modules built from Git. It contains a common \"autogen.sh\" script that\n" @@ -3097,11 +3573,11 @@ msgid "" "commonly used macros." msgstr "" -#: gnu/packages/gnome.scm:277 +#: gnu/packages/gnome.scm:296 msgid "Libgnome-desktop, gnome-about, and desktop-wide documents" msgstr "" -#: gnu/packages/gnome.scm:279 +#: gnu/packages/gnome.scm:298 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" @@ -3111,41 +3587,49 @@ msgid "" "The gnome-about program helps find which version of GNOME is installed." msgstr "" -#: gnu/packages/gnome.scm:312 +#: gnu/packages/gnome.scm:331 msgid "Documentation utilities for the Gnome project" msgstr "Dokumentationsredskaber for GNOME-projektet" -#: gnu/packages/gnome.scm:314 +#: gnu/packages/gnome.scm:333 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:358 +#: gnu/packages/gnome.scm:371 +msgid "Disk management utility for GNOME" +msgstr "Diskhåndteringsredskab for GNOME" + +#: gnu/packages/gnome.scm:372 +msgid "Disk management utility for GNOME." +msgstr "Diskhåndteringsredskab for GNOME." + +#: gnu/packages/gnome.scm:414 msgid "Libraries for displaying certificates and accessing key stores" -msgstr "" +msgstr "Biblioteker til at vise certifikater og tilgå nøglelagre" -#: gnu/packages/gnome.scm:360 +#: gnu/packages/gnome.scm:416 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:389 +#: gnu/packages/gnome.scm:445 msgid "Accessing passwords from the GNOME keyring" msgstr "" -#: gnu/packages/gnome.scm:391 +#: gnu/packages/gnome.scm:447 msgid "Client library to access passwords from the GNOME keyring." msgstr "" -#: gnu/packages/gnome.scm:453 +#: gnu/packages/gnome.scm:509 msgid "Daemon to store passwords and encryption keys" msgstr "Dæmon til at lagre adgandskoder og krypteringsnøgler" -#: gnu/packages/gnome.scm:455 +#: gnu/packages/gnome.scm:511 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" @@ -3156,11 +3640,11 @@ msgid "" "forgotten when the session ends." msgstr "" -#: gnu/packages/gnome.scm:528 +#: gnu/packages/gnome.scm:584 msgid "GNOME's document viewer" msgstr "" -#: gnu/packages/gnome.scm:530 +#: gnu/packages/gnome.scm:586 msgid "" "Evince is a document viewer for multiple document formats. It\n" "currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal\n" @@ -3168,32 +3652,32 @@ msgid "" "on the GNOME Desktop with a single simple application." msgstr "" -#: gnu/packages/gnome.scm:559 +#: gnu/packages/gnome.scm:615 msgid "GNOME settings for various desktop components" msgstr "" -#: gnu/packages/gnome.scm:561 +#: gnu/packages/gnome.scm:617 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:595 +#: gnu/packages/gnome.scm:651 msgid "Utility to implement the Freedesktop Icon Naming Specification" msgstr "" -#: gnu/packages/gnome.scm:597 +#: gnu/packages/gnome.scm:653 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:619 +#: gnu/packages/gnome.scm:675 msgid "Utilities for working with desktop entries" msgstr "" -#: gnu/packages/gnome.scm:621 +#: gnu/packages/gnome.scm:677 msgid "" "This package contains a few command line utilities for working with\n" "desktop entries:\n" @@ -3208,19 +3692,31 @@ msgid "" " handled by desktop files." msgstr "" -#: gnu/packages/gnome.scm:660 +#: gnu/packages/gnome.scm:716 msgid "GNOME icon theme" msgstr "GNOME-ikontema" -#: gnu/packages/gnome.scm:662 +#: gnu/packages/gnome.scm:718 msgid "Icons for the GNOME desktop." msgstr "Ikoner for GNOME-skrivebordet." -#: gnu/packages/gnome.scm:703 +#: gnu/packages/gnome.scm:755 +msgid "Tango icon theme" +msgstr "Tango-ikontema" + +#: gnu/packages/gnome.scm:756 +msgid "" +"This is an icon theme that follows the Tango visual\n" +"guidelines." +msgstr "" +"Dette er et ikontema, som følger de visuelle\n" +"retningslinjer fra Tango." + +#: gnu/packages/gnome.scm:782 msgid "Database of common MIME types" msgstr "Database med gængse MIME-typer" -#: gnu/packages/gnome.scm:705 +#: gnu/packages/gnome.scm:784 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" @@ -3229,19 +3725,19 @@ msgid "" "database is translated at Transifex." msgstr "" -#: gnu/packages/gnome.scm:729 +#: gnu/packages/gnome.scm:808 msgid "Freedesktop icon theme" msgstr "Freedesktop-ikontema" -#: gnu/packages/gnome.scm:731 +#: gnu/packages/gnome.scm:810 msgid "Freedesktop icon theme." msgstr "Freedesktop-ikondtema." -#: gnu/packages/gnome.scm:759 +#: gnu/packages/gnome.scm:838 msgid "GNOME desktop notification library" msgstr "" -#: gnu/packages/gnome.scm:761 +#: gnu/packages/gnome.scm:840 msgid "" "Libnotify is a library that sends desktop notifications to a\n" "notification daemon, as defined in the Desktop Notifications spec. These\n" @@ -3249,46 +3745,46 @@ msgid "" "some form of information without getting in the user's way." msgstr "" -#: gnu/packages/gnome.scm:793 +#: gnu/packages/gnome.scm:872 msgid "GObject plugin system" msgstr "" -#: gnu/packages/gnome.scm:795 +#: gnu/packages/gnome.scm:874 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." +"Libpeas is a gobject-based plugin engine, targeted at giving every\n" +"application the chance to assume its own extensibility. It also has a set of\n" +"features including, but not limited to: multiple extension points; on-demand\n" +"(lazy) programming language support for C, Python and JS; simplicity of the\n" +"API." msgstr "" -#: gnu/packages/gnome.scm:824 +#: gnu/packages/gnome.scm:903 msgid "OpenGL extension to GTK+" msgstr "OpenGL-udvidelse til GTK+" -#: gnu/packages/gnome.scm:825 +#: gnu/packages/gnome.scm:904 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:868 +#: gnu/packages/gnome.scm:947 msgid "GTK+ rapid application development tool" msgstr "" -#: gnu/packages/gnome.scm:869 +#: gnu/packages/gnome.scm:948 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:894 +#: gnu/packages/gnome.scm:974 msgid "CSS2 parsing and manipulation library" msgstr "CSS2-fortolknings- og manipuleringsbibliotek" -#: gnu/packages/gnome.scm:896 +#: gnu/packages/gnome.scm:976 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" @@ -3296,31 +3792,31 @@ msgid "" "XML/CSS rendering engine." msgstr "" -#: gnu/packages/gnome.scm:929 +#: gnu/packages/gnome.scm:1022 msgid "GNOME's Structured File Library" msgstr "" -#: gnu/packages/gnome.scm:931 +#: gnu/packages/gnome.scm:1024 msgid "" "Libgsf aims to provide an efficient extensible I/O abstraction for\n" "dealing with different structured file formats." msgstr "" -#: gnu/packages/gnome.scm:982 +#: gnu/packages/gnome.scm:1075 msgid "Render SVG files using Cairo" msgstr "" -#: gnu/packages/gnome.scm:984 +#: gnu/packages/gnome.scm:1077 msgid "" "Librsvg is a C library to render SVG files using the Cairo 2D graphics\n" "library." msgstr "" -#: gnu/packages/gnome.scm:1008 +#: gnu/packages/gnome.scm:1101 msgid "Create trees of CORBA Interface Definition Language files" msgstr "" -#: gnu/packages/gnome.scm:1009 +#: gnu/packages/gnome.scm:1102 msgid "" "Libidl is a library for creating trees of CORBA Interface\n" "Definition Language (idl) files, which is a specification for defining\n" @@ -3329,144 +3825,144 @@ msgid "" "functionality was designed to be as reusable and portable as possible." msgstr "" -#: gnu/packages/gnome.scm:1049 +#: gnu/packages/gnome.scm:1142 msgid "CORBA 2.4-compliant Object Request Broker" msgstr "" -#: gnu/packages/gnome.scm:1050 +#: gnu/packages/gnome.scm:1143 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:1097 +#: gnu/packages/gnome.scm:1190 msgid "Framework for creating reusable components for use in GNOME applications" msgstr "" -#: gnu/packages/gnome.scm:1098 +#: gnu/packages/gnome.scm:1191 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:1129 +#: gnu/packages/gnome.scm:1222 msgid "Store application preferences" msgstr "" -#: gnu/packages/gnome.scm:1130 +#: gnu/packages/gnome.scm:1223 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:1153 +#: gnu/packages/gnome.scm:1246 msgid "Base MIME and Application database for GNOME" msgstr "" -#: gnu/packages/gnome.scm:1154 +#: gnu/packages/gnome.scm:1247 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:1198 +#: gnu/packages/gnome.scm:1291 msgid "Access files and folders in GNOME applications" msgstr "" -#: gnu/packages/gnome.scm:1200 +#: gnu/packages/gnome.scm:1293 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:1244 +#: gnu/packages/gnome.scm:1337 msgid "Useful routines for building applications" msgstr "" -#: gnu/packages/gnome.scm:1245 +#: gnu/packages/gnome.scm:1338 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:1268 +#: gnu/packages/gnome.scm:1361 msgid "2D drawing library" msgstr "2D-tegnebibliotek" -#: gnu/packages/gnome.scm:1269 +#: gnu/packages/gnome.scm:1362 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:1296 +#: gnu/packages/gnome.scm:1389 msgid "Flexible widget for creating interactive structured graphics" msgstr "" -#: gnu/packages/gnome.scm:1297 +#: gnu/packages/gnome.scm:1390 msgid "" "The GnomeCanvas widget provides a flexible widget for\n" "creating interactive structured graphics." msgstr "" -#: gnu/packages/gnome.scm:1321 +#: gnu/packages/gnome.scm:1414 msgid "C++ bindings to the GNOME Canvas library" msgstr "" -#: gnu/packages/gnome.scm:1322 +#: gnu/packages/gnome.scm:1415 msgid "C++ bindings to the GNOME Canvas library." msgstr "" -#: gnu/packages/gnome.scm:1353 +#: gnu/packages/gnome.scm:1446 msgid "Additional widgets for applications" msgstr "" -#: gnu/packages/gnome.scm:1354 +#: gnu/packages/gnome.scm:1447 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:1380 +#: gnu/packages/gnome.scm:1473 msgid "Load glade interfaces and access the glade built widgets" msgstr "" -#: gnu/packages/gnome.scm:1381 +#: gnu/packages/gnome.scm:1474 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:1411 gnu/packages/gnome.scm:1443 +#: gnu/packages/gnome.scm:1504 gnu/packages/gnome.scm:1536 msgid "Printing framework for GNOME" msgstr "" -#: gnu/packages/gnome.scm:1413 +#: gnu/packages/gnome.scm:1506 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:1488 +#: gnu/packages/gnome.scm:1581 msgid "Some user interface controls using Bonobo" msgstr "" -#: gnu/packages/gnome.scm:1489 +#: gnu/packages/gnome.scm:1582 msgid "" "The Bonobo UI library provides a number of user interface\n" "controls using the Bonobo component framework." msgstr "" -#: gnu/packages/gnome.scm:1513 +#: gnu/packages/gnome.scm:1606 msgid "Window Navigator Construction Kit" msgstr "" -#: gnu/packages/gnome.scm:1515 +#: gnu/packages/gnome.scm:1608 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" @@ -3474,19 +3970,19 @@ msgid "" "Hints specification (EWMH)." msgstr "" -#: gnu/packages/gnome.scm:1568 +#: gnu/packages/gnome.scm:1661 msgid "Document-centric objects and utilities" msgstr "" -#: gnu/packages/gnome.scm:1569 +#: gnu/packages/gnome.scm:1662 msgid "A GLib/GTK+ set of document-centric objects and utilities." msgstr "" -#: gnu/packages/gnome.scm:1652 +#: gnu/packages/gnome.scm:1745 msgid "Spreadsheet application" msgstr "" -#: gnu/packages/gnome.scm:1654 +#: gnu/packages/gnome.scm:1747 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" @@ -3495,29 +3991,29 @@ msgid "" "engineering." msgstr "" -#: gnu/packages/gnome.scm:1694 +#: gnu/packages/gnome.scm:1787 msgid "Default GNOME 3 themes" msgstr "Standardtemaer for GNOME 3" -#: gnu/packages/gnome.scm:1696 +#: gnu/packages/gnome.scm:1789 msgid "The default GNOME 3 themes (Adwaita and some accessibility themes)." msgstr "" -#: gnu/packages/gnome.scm:1729 +#: gnu/packages/gnome.scm:1822 msgid "Manage encryption keys and passwords in the GNOME keyring" msgstr "Håndter krypteringsnøgler og adgangskoder i GNOME keyring" -#: gnu/packages/gnome.scm:1731 +#: gnu/packages/gnome.scm:1824 msgid "" "Seahorse is a GNOME application for managing encryption keys and\n" "passwords in the GNOME keyring." msgstr "" -#: gnu/packages/gnome.scm:1769 gnu/packages/gnome.scm:1978 +#: gnu/packages/gnome.scm:1862 gnu/packages/gnome.scm:2102 msgid "Compiler for the GObject type system" msgstr "" -#: gnu/packages/gnome.scm:1771 +#: gnu/packages/gnome.scm:1864 msgid "" "Vala is a programming language that aims to bring modern programming\n" "language features to GNOME developers without imposing any additional runtime\n" @@ -3525,11 +4021,11 @@ msgid "" "libraries written in C." msgstr "" -#: gnu/packages/gnome.scm:1809 +#: gnu/packages/gnome.scm:1896 msgid "Virtual Terminal Emulator" msgstr "" -#: gnu/packages/gnome.scm:1811 +#: gnu/packages/gnome.scm:1898 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" @@ -3537,29 +4033,39 @@ msgid "" "editors, IDEs, etc." msgstr "" -#: gnu/packages/gnome.scm:1844 +#: gnu/packages/gnome.scm:1931 msgid "Enhanced VTE terminal widget" msgstr "" -#: gnu/packages/gnome.scm:1846 +#: gnu/packages/gnome.scm:1933 msgid "" "VTE is a library (libvte) implementing a terminal emulator widget for\n" "GTK+, this fork provides additional functions exposed for keyboard text\n" "selection and URL hints." msgstr "" -#: gnu/packages/gnome.scm:1945 +#: gnu/packages/gnome.scm:2016 +msgid "Remote desktop viewer for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:2017 +msgid "" +"Vinagre is a remote display client supporting the VNC, SPICE\n" +"and RDP protocols." +msgstr "" + +#: gnu/packages/gnome.scm:2069 msgid "Low-level GNOME configuration system" msgstr "" -#: gnu/packages/gnome.scm:1946 +#: gnu/packages/gnome.scm:2070 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:1980 +#: gnu/packages/gnome.scm:2104 msgid "" "JSON-GLib is a C library based on GLib providing serialization and\n" "deserialization support for the JavaScript Object Notation (JSON) format\n" @@ -3568,11 +4074,11 @@ msgid "" "and objects." msgstr "" -#: gnu/packages/gnome.scm:2019 +#: gnu/packages/gnome.scm:2143 msgid "High-level API for X Keyboard Extension" msgstr "" -#: gnu/packages/gnome.scm:2021 +#: gnu/packages/gnome.scm:2145 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" @@ -3580,72 +4086,72 @@ msgid "" "indicators etc)." msgstr "" -#: gnu/packages/gnome.scm:2049 +#: gnu/packages/gnome.scm:2173 msgid "Python bindings to librsvg" msgstr "" -#: gnu/packages/gnome.scm:2051 +#: gnu/packages/gnome.scm:2175 msgid "" "This packages provides Python bindings to librsvg, the SVG rendering\n" "library." msgstr "" -#: gnu/packages/gnome.scm:2100 +#: gnu/packages/gnome.scm:2224 msgid "Network-related GIO modules" msgstr "" -#: gnu/packages/gnome.scm:2102 +#: gnu/packages/gnome.scm:2226 msgid "" "This package contains various network related extensions for the GIO\n" "library." msgstr "" -#: gnu/packages/gnome.scm:2133 +#: gnu/packages/gnome.scm:2257 msgid "RESTful web api query library" msgstr "" -#: gnu/packages/gnome.scm:2135 +#: gnu/packages/gnome.scm:2259 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:2204 +#: gnu/packages/gnome.scm:2328 msgid "GLib-based HTTP Library" msgstr "" -#: gnu/packages/gnome.scm:2206 +#: gnu/packages/gnome.scm:2330 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:2252 +#: gnu/packages/gnome.scm:2376 msgid "GObject bindings for \"Secret Service\" API" msgstr "GObject-bindinger for »Secret Service«-API'en" -#: gnu/packages/gnome.scm:2254 +#: gnu/packages/gnome.scm:2378 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:2289 +#: gnu/packages/gnome.scm:2414 msgid "Minesweeper game" msgstr "Minestrygerspil" -#: gnu/packages/gnome.scm:2291 +#: gnu/packages/gnome.scm:2416 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:2322 +#: gnu/packages/gnome.scm:2447 msgid "Japanese logic game" msgstr "" -#: gnu/packages/gnome.scm:2324 +#: gnu/packages/gnome.scm:2449 msgid "" "Sudoku is a Japanese logic game that exploded in popularity in 2005.\n" "GNOME Sudoku is meant to have an interface as simple and unobstrusive as\n" @@ -3653,11 +4159,11 @@ msgid "" "more fun." msgstr "" -#: gnu/packages/gnome.scm:2370 +#: gnu/packages/gnome.scm:2495 msgid "Terminal emulator" msgstr "Terminalemulator" -#: gnu/packages/gnome.scm:2372 +#: gnu/packages/gnome.scm:2497 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" @@ -3667,22 +4173,22 @@ msgid "" "keyboard shortcuts." msgstr "" -#: gnu/packages/gnome.scm:2438 +#: gnu/packages/gnome.scm:2563 msgid "Color management service" msgstr "" -#: gnu/packages/gnome.scm:2439 +#: gnu/packages/gnome.scm:2564 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:2482 +#: gnu/packages/gnome.scm:2607 msgid "Geolocation service" msgstr "" -#: gnu/packages/gnome.scm:2483 +#: gnu/packages/gnome.scm:2608 msgid "" "Geoclue is a D-Bus service that provides location\n" "information. The primary goal of the Geoclue project is to make creating\n" @@ -3691,11 +4197,11 @@ msgid "" "permission from user." msgstr "" -#: gnu/packages/gnome.scm:2518 +#: gnu/packages/gnome.scm:2643 msgid "Geocoding and reverse-geocoding library" msgstr "" -#: gnu/packages/gnome.scm:2520 +#: gnu/packages/gnome.scm:2645 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" @@ -3703,11 +4209,11 @@ msgid "" "faster results and to avoid unnecessary server load." msgstr "" -#: gnu/packages/gnome.scm:2573 +#: gnu/packages/gnome.scm:2698 msgid "System daemon for managing power devices" msgstr "Systemdæmon til håndtering af strømenheder" -#: gnu/packages/gnome.scm:2575 +#: gnu/packages/gnome.scm:2700 msgid "" "UPower is an abstraction for enumerating power devices,\n" "listening to device events and querying history and statistics. Any\n" @@ -3715,21 +4221,21 @@ msgid "" "service via the system message bus." msgstr "" -#: gnu/packages/gnome.scm:2630 +#: gnu/packages/gnome.scm:2755 msgid "Location, time zone, and weather library for GNOME" msgstr "" -#: gnu/packages/gnome.scm:2632 +#: gnu/packages/gnome.scm:2757 msgid "" "libgweather is a library to access weather information from online\n" "services for numerous locations." msgstr "" -#: gnu/packages/gnome.scm:2683 +#: gnu/packages/gnome.scm:2808 msgid "GNOME settings daemon" msgstr "" -#: gnu/packages/gnome.scm:2685 +#: gnu/packages/gnome.scm:2810 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" @@ -3737,42 +4243,42 @@ msgid "" "settings, themes, mouse settings, and startup of other daemons." msgstr "" -#: gnu/packages/gnome.scm:2721 +#: gnu/packages/gnome.scm:2847 msgid "Library to parse and save media playlists for GNOME" msgstr "" -#: gnu/packages/gnome.scm:2722 +#: gnu/packages/gnome.scm:2848 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:2756 +#: gnu/packages/gnome.scm:2882 msgid "Solitaire card games" msgstr "" -#: gnu/packages/gnome.scm:2758 +#: gnu/packages/gnome.scm:2884 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:2782 +#: gnu/packages/gnome.scm:2908 msgid "API documentation browser for GNOME" msgstr "" -#: gnu/packages/gnome.scm:2784 +#: gnu/packages/gnome.scm:2910 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:2845 +#: gnu/packages/gnome.scm:2973 msgid "Object oriented GL/GLES Abstraction/Utility Layer" msgstr "" -#: gnu/packages/gnome.scm:2847 +#: gnu/packages/gnome.scm:2975 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" @@ -3780,26 +4286,26 @@ msgid "" "without stepping on each others toes." msgstr "" -#: gnu/packages/gnome.scm:2902 +#: gnu/packages/gnome.scm:3032 msgid "Open GL based interactive canvas library" msgstr "" -#: gnu/packages/gnome.scm:2904 gnu/packages/gnome.scm:2933 +#: gnu/packages/gnome.scm:3034 gnu/packages/gnome.scm:3063 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:2931 +#: gnu/packages/gnome.scm:3061 msgid "Open GL based interactive canvas library GTK+ widget" msgstr "" -#: gnu/packages/gnome.scm:2961 +#: gnu/packages/gnome.scm:3091 msgid "Integration library for using GStreamer with Clutter" msgstr "" -#: gnu/packages/gnome.scm:2963 +#: gnu/packages/gnome.scm:3093 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" @@ -3807,11 +4313,11 @@ msgid "" "GL based interactive canvas library." msgstr "" -#: gnu/packages/gnome.scm:2997 +#: gnu/packages/gnome.scm:3127 msgid "C library providing a ClutterActor to display maps" msgstr "" -#: gnu/packages/gnome.scm:2999 +#: gnu/packages/gnome.scm:3129 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" @@ -3819,32 +4325,32 @@ msgid "" "such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free." msgstr "" -#: gnu/packages/gnome.scm:3030 +#: gnu/packages/gnome.scm:3160 msgid "Object mapper from GObjects to SQLite" msgstr "" -#: gnu/packages/gnome.scm:3032 +#: gnu/packages/gnome.scm:3162 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:3067 +#: gnu/packages/gnome.scm:3197 msgid "Useful functionality shared among GNOME games" msgstr "" -#: gnu/packages/gnome.scm:3069 +#: gnu/packages/gnome.scm:3199 msgid "" "libgames-support is a small library intended for internal use by\n" "GNOME Games, but it may be used by others." msgstr "" -#: gnu/packages/gnome.scm:3097 +#: gnu/packages/gnome.scm:3241 msgid "Sliding block puzzles" msgstr "" -#: gnu/packages/gnome.scm:3099 +#: gnu/packages/gnome.scm:3243 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" @@ -3852,65 +4358,65 @@ msgid "" "as possible!" msgstr "" -#: gnu/packages/gnome.scm:3150 +#: gnu/packages/gnome.scm:3295 msgid "Framework for discovering and browsing media" msgstr "" -#: gnu/packages/gnome.scm:3152 gnu/packages/gnome.scm:3205 +#: gnu/packages/gnome.scm:3297 gnu/packages/gnome.scm:3350 msgid "" "Grilo is a framework focused on making media discovery and browsing easy\n" "for application developers." msgstr "" -#: gnu/packages/gnome.scm:3203 +#: gnu/packages/gnome.scm:3348 msgid "Plugins for the Grilo media discovery library" msgstr "" -#: gnu/packages/gnome.scm:3281 +#: gnu/packages/gnome.scm:3425 msgid "Simple media player for GNOME based on GStreamer" msgstr "" -#: gnu/packages/gnome.scm:3282 +#: gnu/packages/gnome.scm:3426 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:3372 +#: gnu/packages/gnome.scm:3516 msgid "Music player for GNOME" msgstr "" -#: gnu/packages/gnome.scm:3373 +#: gnu/packages/gnome.scm:3517 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:3423 +#: gnu/packages/gnome.scm:3567 msgid "GNOME image viewer" msgstr "" -#: gnu/packages/gnome.scm:3424 +#: gnu/packages/gnome.scm:3568 msgid "" "Eye of GNOME is the GNOME image viewer. It\n" "supports image conversion, rotation, and slideshows." msgstr "" -#: gnu/packages/gnome.scm:3449 +#: gnu/packages/gnome.scm:3593 msgid "GObject bindings for libudev" msgstr "" -#: gnu/packages/gnome.scm:3451 +#: gnu/packages/gnome.scm:3595 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:3497 +#: gnu/packages/gnome.scm:3643 msgid "Userspace virtual file system for GIO" msgstr "" -#: gnu/packages/gnome.scm:3499 +#: gnu/packages/gnome.scm:3645 msgid "" "GVFS is a userspace virtual file system designed to work with the I/O\n" "abstraction of GIO. It contains a GIO module that seamlessly adds GVFS support\n" @@ -3921,11 +4427,11 @@ msgid "" "DAV, and others." msgstr "" -#: gnu/packages/gnome.scm:3545 +#: gnu/packages/gnome.scm:3691 msgid "GLib binding for libusb1" msgstr "GLib-binding for libusb1" -#: gnu/packages/gnome.scm:3547 +#: gnu/packages/gnome.scm:3693 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" @@ -3933,11 +4439,11 @@ msgid "" "USB transfers with your high-level application or system daemon." msgstr "" -#: gnu/packages/gnome.scm:3598 +#: gnu/packages/gnome.scm:3744 msgid "Document and image scanner" msgstr "Dokument- og billedskanner" -#: gnu/packages/gnome.scm:3599 +#: gnu/packages/gnome.scm:3745 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" @@ -3946,52 +4452,52 @@ msgid "" "work and the interface is well tested." msgstr "" -#: gnu/packages/gnome.scm:3646 +#: gnu/packages/gnome.scm:3793 msgid "GNOME web browser" msgstr "GNOME-internetbrowser" -#: gnu/packages/gnome.scm:3648 +#: gnu/packages/gnome.scm:3795 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:3704 +#: gnu/packages/gnome.scm:3851 msgid "D-Bus debugger" msgstr "D-Bus-fejlsøger" -#: gnu/packages/gnome.scm:3706 +#: gnu/packages/gnome.scm:3853 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:3728 +#: gnu/packages/gnome.scm:3875 msgid "XSL stylesheets for Yelp" msgstr "XSL-stilark for Yelp" -#: gnu/packages/gnome.scm:3730 +#: gnu/packages/gnome.scm:3877 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:3761 +#: gnu/packages/gnome.scm:3908 msgid "GNOME help browser" msgstr "" -#: gnu/packages/gnome.scm:3763 +#: gnu/packages/gnome.scm:3910 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:3791 +#: gnu/packages/gnome.scm:3938 msgid "Yelp documentation tools" msgstr "Yelp-dokumentationsværktøjer" -#: gnu/packages/gnome.scm:3793 +#: gnu/packages/gnome.scm:3940 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" @@ -3999,32 +4505,32 @@ msgid "" "wraps things up in a developer-friendly way." msgstr "" -#: gnu/packages/gnome.scm:3830 +#: gnu/packages/gnome.scm:3977 msgid "GObject collection library" msgstr "GObject-samlingsbibliotek" -#: gnu/packages/gnome.scm:3832 +#: gnu/packages/gnome.scm:3979 msgid "" "Libgee is a utility library providing GObject-based interfaces and\n" "classes for commonly used data structures." msgstr "" -#: gnu/packages/gnome.scm:3859 +#: gnu/packages/gnome.scm:4006 msgid "GObject wrapper around the Exiv2 photo metadata library" msgstr "" -#: gnu/packages/gnome.scm:3861 +#: gnu/packages/gnome.scm:4008 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:3904 +#: gnu/packages/gnome.scm:4051 msgid "Photo manager for GNOME 3" msgstr "Billedhåndtering for GNOME 3" -#: gnu/packages/gnome.scm:3906 +#: gnu/packages/gnome.scm:4053 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" @@ -4032,42 +4538,42 @@ msgid "" "share them with others via social networking and more." msgstr "" -#: gnu/packages/gnome.scm:3947 +#: gnu/packages/gnome.scm:4094 msgid "Graphical archive manager for GNOME" msgstr "Grafisk arkivhåndtering for GNOME" -#: gnu/packages/gnome.scm:3948 +#: gnu/packages/gnome.scm:4095 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/gnome.scm:4026 +#: gnu/packages/gnome.scm:4173 msgid "Session manager for GNOME" msgstr "" -#: gnu/packages/gnome.scm:4028 +#: gnu/packages/gnome.scm:4175 msgid "" "This package contains the GNOME session manager, as well as a\n" "configuration program to choose applications starting on login." msgstr "" -#: gnu/packages/gnome.scm:4079 +#: gnu/packages/gnome.scm:4230 msgid "Javascript bindings for GNOME" msgstr "Javascript-bindinger for GNOME" -#: gnu/packages/gnome.scm:4082 +#: gnu/packages/gnome.scm:4233 msgid "" "Gjs is a javascript binding for GNOME. It's mainly based on spidermonkey\n" "javascript engine and the GObject introspection framework." msgstr "" -#: gnu/packages/gnome.scm:4141 +#: gnu/packages/gnome.scm:4292 msgid "GNOME text editor" msgstr "GNOME-tesktredigeringsprogram" -#: gnu/packages/gnome.scm:4142 +#: gnu/packages/gnome.scm:4293 msgid "" "While aiming at simplicity and ease of use, gedit is a\n" "powerful general purpose text editor." @@ -4075,21 +4581,21 @@ msgstr "" "Selv om den forsøger at være enkel og nem at bruge, så\n" "er gedit et funktionsrigt og alment tekstredigeringsprogram." -#: gnu/packages/gnome.scm:4166 +#: gnu/packages/gnome.scm:4317 msgid "Display graphical dialog boxes from shell scripts" msgstr "Vis grafiske dialogbokse fra skalskripter" -#: gnu/packages/gnome.scm:4169 +#: gnu/packages/gnome.scm:4320 msgid "" "Zenity is a rewrite of gdialog, the GNOME port of dialog which allows you\n" "to display dialog boxes from the commandline and shell scripts." msgstr "" -#: gnu/packages/gnome.scm:4214 +#: gnu/packages/gnome.scm:4414 msgid "Window and compositing manager" msgstr "" -#: gnu/packages/gnome.scm:4217 +#: gnu/packages/gnome.scm:4417 msgid "" "Mutter is a window and compositing manager that displays and manages your\n" "desktop via OpenGL. Mutter combines a sophisticated display engine using the\n" @@ -4097,11 +4603,11 @@ msgid "" "window manager." msgstr "" -#: gnu/packages/gnome.scm:4252 +#: gnu/packages/gnome.scm:4452 msgid "Single sign-on framework for GNOME" msgstr "" -#: gnu/packages/gnome.scm:4255 +#: gnu/packages/gnome.scm:4455 msgid "" "GNOME Online Accounts provides interfaces so that applications and\n" "libraries in GNOME can access the user's online accounts. It has providers for\n" @@ -4109,32 +4615,32 @@ msgid "" "Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos." msgstr "" -#: gnu/packages/gnome.scm:4317 +#: gnu/packages/gnome.scm:4517 msgid "Store address books and calendars" msgstr "" -#: gnu/packages/gnome.scm:4320 +#: gnu/packages/gnome.scm:4520 msgid "" "This package provides a unified backend for programs that work with\n" "contacts, tasks, and calendar information. It was originally developed for\n" "Evolution (hence the name), but is now used by other packages as well." msgstr "" -#: gnu/packages/gnome.scm:4383 +#: gnu/packages/gnome.scm:4583 msgid "Text entry and UI navigation application" msgstr "" -#: gnu/packages/gnome.scm:4386 +#: gnu/packages/gnome.scm:4586 msgid "" "Caribou is an input assistive technology intended for switch and pointer\n" "users." msgstr "" -#: gnu/packages/gnome.scm:4492 +#: gnu/packages/gnome.scm:4699 msgid "Network connection manager" msgstr "" -#: gnu/packages/gnome.scm:4495 +#: gnu/packages/gnome.scm:4702 msgid "" "NetworkManager is a system network service that manages your network\n" "devices and connections, attempting to keep active network connectivity when\n" @@ -4143,29 +4649,29 @@ msgid "" "services." msgstr "" -#: gnu/packages/gnome.scm:4520 +#: gnu/packages/gnome.scm:4727 msgid "Database of broadband connection configuration" msgstr "" -#: gnu/packages/gnome.scm:4521 +#: gnu/packages/gnome.scm:4728 msgid "Database of broadband connection configuration." msgstr "" -#: gnu/packages/gnome.scm:4556 +#: gnu/packages/gnome.scm:4763 msgid "Applet for managing network connections" msgstr "" -#: gnu/packages/gnome.scm:4559 +#: gnu/packages/gnome.scm:4766 msgid "" "This package contains a systray applet for NetworkManager. It displays\n" "the available networks and allows users to easily switch between them." msgstr "" -#: gnu/packages/gnome.scm:4584 +#: gnu/packages/gnome.scm:4791 msgid "C++ wrapper for XML parser library libxml2" msgstr "C++-omslag for XML-fortolkerbiblioteket libxml2" -#: gnu/packages/gnome.scm:4586 +#: gnu/packages/gnome.scm:4793 msgid "" "This package provides a C++ wrapper for the XML parser library\n" "libxml2." @@ -4173,41 +4679,41 @@ msgstr "" "Denne pakke tilbyder et C++-omslag for XML-fortolkerbiblioteket\n" "libxml2." -#: gnu/packages/gnome.scm:4657 +#: gnu/packages/gnome.scm:4864 msgid "Display manager for GNOME" msgstr "" -#: gnu/packages/gnome.scm:4660 +#: gnu/packages/gnome.scm:4867 msgid "" "GNOME Display Manager is a system service that is responsible for\n" "providing graphical log-ins and managing local and remote displays." msgstr "" -#: gnu/packages/gnome.scm:4684 +#: gnu/packages/gnome.scm:4891 msgid "Portable system access library" msgstr "" -#: gnu/packages/gnome.scm:4687 +#: gnu/packages/gnome.scm:4894 msgid "" "LibGTop is a library to get system specific data such as CPU and memory\n" "usage and information about running processes." msgstr "" -#: gnu/packages/gnome.scm:4717 +#: gnu/packages/gnome.scm:4924 msgid "GNOME Bluetooth subsystem" msgstr "" -#: gnu/packages/gnome.scm:4720 +#: gnu/packages/gnome.scm:4927 msgid "" "This package contains tools for managing and manipulating Bluetooth\n" "devices using the GNOME desktop." msgstr "" -#: gnu/packages/gnome.scm:4786 +#: gnu/packages/gnome.scm:4993 msgid "Utilities to configure the GNOME desktop" msgstr "" -#: gnu/packages/gnome.scm:4789 +#: gnu/packages/gnome.scm:4996 msgid "" "This package contains configuration applets for the GNOME desktop,\n" "allowing to set accessibility configuration, desktop fonts, keyboard and mouse\n" @@ -4215,21 +4721,21 @@ msgid "" "properties, screen resolution, and other GNOME parameters." msgstr "" -#: gnu/packages/gnome.scm:4870 +#: gnu/packages/gnome.scm:5078 msgid "Desktop shell for GNOME" msgstr "" -#: gnu/packages/gnome.scm:4873 +#: gnu/packages/gnome.scm:5081 msgid "" "GNOME Shell provides core user interface functions for the GNOME desktop,\n" "like switching to windows and launching applications." msgstr "" -#: gnu/packages/gnome.scm:4907 +#: gnu/packages/gnome.scm:5115 msgid "VNC viewer widget for GTK+" msgstr "" -#: gnu/packages/gnome.scm:4909 +#: gnu/packages/gnome.scm:5117 msgid "" "GTK-VNC is a VNC viewer widget for GTK+, used by remote desktop viewing\n" "applications, for instance the Vinagre client, GNOME Boxes and virt-viewer.\n" @@ -4237,22 +4743,43 @@ msgid "" "as SASL, TLS and VeNCrypt. Additionally it supports encoding extensions." msgstr "" -#: gnu/packages/gnome.scm:4952 +#: gnu/packages/gnome.scm:5145 +msgid "Archives integration support for GNOME" +msgstr "" + +#: gnu/packages/gnome.scm:5148 +msgid "" +"GNOME Autoar is a library which makes creating and extracting archives\n" +"easy, safe, and automatic." +msgstr "" + +#: gnu/packages/gnome.scm:5199 +msgid "Metadata database, indexer and search tool" +msgstr "" + +#: gnu/packages/gnome.scm:5202 +msgid "" +"Tracker is an advanced framework for first class objects with associated\n" +"metadata and tags. It provides a one stop solution for all metadata, tags,\n" +"shared object databases, search tools and indexing." +msgstr "" + +#: gnu/packages/gnome.scm:5251 msgid "File manager for GNOME" msgstr "Filhåndtering for GNOME" -#: gnu/packages/gnome.scm:4955 +#: gnu/packages/gnome.scm:5254 msgid "" "Nautilus (Files) is a file manager designed to fit the GNOME desktop\n" "design and behaviour, giving the user a simple way to navigate and manage its\n" "files." msgstr "" -#: gnu/packages/gnome.scm:4983 +#: gnu/packages/gnome.scm:5282 msgid "Disk usage analyzer for GNOME" msgstr "" -#: gnu/packages/gnome.scm:4985 +#: gnu/packages/gnome.scm:5284 msgid "" "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk\n" "usage in the GNOME desktop environment. It can easily scan device volumes or\n" @@ -4260,11 +4787,11 @@ msgid "" "is complete it provides a graphical representation of each selected folder." msgstr "" -#: gnu/packages/gnome.scm:5009 +#: gnu/packages/gnome.scm:5308 msgid "Background images for the GNOME desktop" msgstr "" -#: gnu/packages/gnome.scm:5011 +#: gnu/packages/gnome.scm:5310 msgid "" "GNOME backgrounds package contains a collection of graphics files which\n" "can be used as backgrounds in the GNOME Desktop environment. Additionally,\n" @@ -4272,85 +4799,85 @@ msgid "" "can add your own files to the collection." msgstr "" -#: gnu/packages/gnome.scm:5044 +#: gnu/packages/gnome.scm:5343 msgid "Take pictures of your screen" msgstr "" -#: gnu/packages/gnome.scm:5046 +#: gnu/packages/gnome.scm:5345 msgid "" "GNOME Screenshot is a utility used for taking screenshots of the entire\n" "screen, a window or a user defined area of the screen, with optional\n" "beautifying border effects." msgstr "" -#: gnu/packages/gnome.scm:5083 +#: gnu/packages/gnome.scm:5382 msgid "Graphical editor for GNOME's dconf configuration system" msgstr "" -#: gnu/packages/gnome.scm:5085 +#: gnu/packages/gnome.scm:5384 msgid "" "Dconf-editor is a graphical tool for browsing and editing the dconf\n" "configuration system for GNOME. It allows users to configure desktop\n" "software that do not provide their own configuration interface." msgstr "" -#: gnu/packages/gnome.scm:5130 +#: gnu/packages/gnome.scm:5429 msgid "The GNU desktop environment" msgstr "GNU-skrivebordsmiljøet" -#: gnu/packages/gnome.scm:5133 +#: gnu/packages/gnome.scm:5432 msgid "" "GNOME is the graphical desktop for GNU. It includes a wide variety of\n" "applications for browsing the web, editing text and images, creating\n" "documents and diagrams, playing media, scanning, and much more." msgstr "" -#: gnu/packages/gnome.scm:5184 +#: gnu/packages/gnome.scm:5483 msgid "Desktop recording program" msgstr "Skrivebordsoptagelsesprogram" -#: gnu/packages/gnome.scm:5185 +#: gnu/packages/gnome.scm:5484 msgid "" "Byzanz is a simple desktop recording program with a\n" "command-line interface. It can record part or all of an X display for a\n" "specified duration and save it as a GIF encoded animated image file." msgstr "" -#: gnu/packages/gnome.scm:5213 +#: gnu/packages/gnome.scm:5512 msgid "Library for accessing SkyDrive and Hotmail" msgstr "Bibliotek til at tilgå SkyDrive og Hotmail" -#: gnu/packages/gnome.scm:5215 +#: gnu/packages/gnome.scm:5514 msgid "" "Libzapojit is a GLib-based library for accessing online service APIs of\n" "Microsoft SkyDrive and Hotmail, using their REST protocols." msgstr "" -#: gnu/packages/gnome.scm:5241 +#: gnu/packages/gnome.scm:5541 msgid "GNOME's calendar application" msgstr "GNOME's kalenderprogram" -#: gnu/packages/gnome.scm:5243 +#: gnu/packages/gnome.scm:5543 msgid "" "GNOME Calendar is a simple calendar application designed to fit the GNOME\n" "desktop. It supports multiple calendars, monthly view and yearly view." msgstr "" -#: gnu/packages/gnome.scm:5271 +#: gnu/packages/gnome.scm:5571 msgid "Look up words in dictionary sources" msgstr "" -#: gnu/packages/gnome.scm:5273 +#: gnu/packages/gnome.scm:5573 msgid "" "GNOME Dictionary can look for the definition or translation of a word in\n" "existing databases over the internet." msgstr "" -#: gnu/packages/gnome.scm:5311 +#: gnu/packages/gnome.scm:5619 msgid "Customize advanced GNOME 3 options" msgstr "Tilpas avancerede GNOME 3-indstillinger" -#: gnu/packages/gnome.scm:5314 +#: gnu/packages/gnome.scm:5622 msgid "" "GNOME Tweak Tool allows adjusting advanced configuration settings in\n" "GNOME 3. This includes things like the fonts used in user interface elements,\n" @@ -4358,53 +4885,53 @@ msgid "" "GNOME Shell appearance and extension, etc." msgstr "" -#: gnu/packages/gnome.scm:5341 +#: gnu/packages/gnome.scm:5649 msgid "Extensions for GNOME Shell" msgstr "" -#: gnu/packages/gnome.scm:5342 +#: gnu/packages/gnome.scm:5650 msgid "" "GNOME Shell extensions modify and extend GNOME Shell\n" "functionality and behavior." msgstr "" -#: gnu/packages/gnome.scm:5372 +#: gnu/packages/gnome.scm:5680 msgid "A flat GTK+ theme with transparent elements" msgstr "" -#: gnu/packages/gnome.scm:5373 +#: gnu/packages/gnome.scm:5681 msgid "" "Arc is a flat theme with transparent elements for GTK 3, GTK\n" "2, and GNOME Shell which supports GTK 3 and GTK 2 based desktop environments\n" "like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc." msgstr "" -#: gnu/packages/gnome.scm:5409 +#: gnu/packages/gnome.scm:5717 msgid "Moka icon theme" msgstr "Moka-ikontema" -#: gnu/packages/gnome.scm:5410 +#: gnu/packages/gnome.scm:5718 msgid "" "Moka is a stylized desktop icon set, designed to be clear,\n" "simple and consistent." msgstr "" -#: gnu/packages/gnome.scm:5440 +#: gnu/packages/gnome.scm:5748 msgid "Arc icon theme" msgstr "Arc-ikontema" -#: gnu/packages/gnome.scm:5441 +#: gnu/packages/gnome.scm:5749 msgid "" "The Arc icon theme provides a set of icons matching the\n" "style of the Arc GTK theme. Icons missing from the Arc theme are provided by\n" "the Moka icon theme." msgstr "" -#: gnu/packages/gnome.scm:5473 +#: gnu/packages/gnome.scm:5781 msgid "Library to aggregate data about people" msgstr "Bibliotek til at aggregere data om folk" -#: gnu/packages/gnome.scm:5474 +#: gnu/packages/gnome.scm:5782 msgid "" "Libfolks is a library that aggregates information about people\n" "from multiple sources (e.g., Telepathy connection managers for IM contacts,\n" @@ -4413,31 +4940,31 @@ msgid "" "compiled." msgstr "" -#: gnu/packages/gnome.scm:5509 +#: gnu/packages/gnome.scm:5817 msgid "GLib/GObject wrapper for the Facebook API" msgstr "GLib/GObject-omslag for Facebook-API'en" -#: gnu/packages/gnome.scm:5510 +#: gnu/packages/gnome.scm:5818 msgid "" "This library allows you to use the Facebook API from\n" "GLib/GObject code." msgstr "" -#: gnu/packages/gnome.scm:5538 +#: gnu/packages/gnome.scm:5846 msgid "GNOME keyboard configuration library" msgstr "Konfigurationsbibliotek for GNOME-tastatur" -#: gnu/packages/gnome.scm:5540 +#: gnu/packages/gnome.scm:5848 msgid "" "Libgnomekbd is a keyboard configuration library for the GNOME desktop\n" "environment, which can notably display keyboard layouts." msgstr "" -#: gnu/packages/gnome.scm:5574 +#: gnu/packages/gnome.scm:5882 msgid "Library for writing single instance applications" msgstr "Bibliotek til at skrive enkel instans-programmer" -#: gnu/packages/gnome.scm:5576 +#: gnu/packages/gnome.scm:5884 msgid "" "Libunique is a library for writing single instance applications. If you\n" "launch a single instance application twice, the second instance will either just\n" @@ -4447,32 +4974,32 @@ msgid "" "handling the startup notification side." msgstr "" -#: gnu/packages/gnome.scm:5608 +#: gnu/packages/gnome.scm:5916 msgid "Desktop calculator" msgstr "Skrivebordslommeregner" -#: gnu/packages/gnome.scm:5610 +#: gnu/packages/gnome.scm:5918 msgid "" "Calculator is an application that solves mathematical equations and\n" "is suitable as a default application in a Desktop environment." msgstr "" -#: gnu/packages/gnome.scm:5635 +#: gnu/packages/gnome.scm:5943 msgid "Virtual sticky note" msgstr "" -#: gnu/packages/gnome.scm:5637 +#: gnu/packages/gnome.scm:5945 msgid "" "Xpad is a sticky note that strives to be simple, fault tolerant,\n" "and customizable. Xpad consists of independent pad windows, each is\n" "basically a text box in which notes can be written." msgstr "" -#: gnu/packages/gnome.scm:5667 +#: gnu/packages/gnome.scm:5975 msgid "Unicode character picker and font browser" msgstr "" -#: gnu/packages/gnome.scm:5669 +#: gnu/packages/gnome.scm:5977 msgid "" "This program allows you to browse through all the available Unicode\n" "characters and categories for the installed fonts, and to examine their\n" @@ -4480,22 +5007,22 @@ msgid "" "only know by its Unicode name or code point." msgstr "" -#: gnu/packages/gnome.scm:5699 +#: gnu/packages/gnome.scm:6007 msgid "Web development studio" msgstr "" -#: gnu/packages/gnome.scm:5701 +#: gnu/packages/gnome.scm:6009 msgid "" "Bluefish is an editor targeted towards programmers and web developers,\n" "with many options to write web sites, scripts and other code.\n" "Bluefish supports many programming and markup languages." msgstr "" -#: gnu/packages/gnome.scm:5733 +#: gnu/packages/gnome.scm:6041 msgid "Process viewer and system resource monitor for GNOME" msgstr "" -#: gnu/packages/gnome.scm:5735 +#: gnu/packages/gnome.scm:6043 msgid "" "GNOME System Monitor is a GNOME process viewer and system monitor with\n" "an attractive, easy-to-use interface. It has features, such as a tree view\n" @@ -4504,11 +5031,34 @@ msgid "" "kill/reinice processes." msgstr "" -#: gnu/packages/gnuzilla.scm:101 +#: gnu/packages/gnome.scm:6069 +msgid "Python client bindings for D-Bus AT-SPI" +msgstr "Pythonklientbindinger for D-Bus AT-SPI" + +#: gnu/packages/gnome.scm:6073 +msgid "" +"This package includes a python client library for the AT-SPI D-Bus\n" +"accessibility infrastructure." +msgstr "" +"Denne pakke indeholder et Pythonklientbibliotek for AT-SPI D-Bus-\n" +"tilgængelighedsinfrastrukturen." + +#: gnu/packages/gnome.scm:6132 +msgid "Screen reader for individuals who are blind or visually impaired" +msgstr "Skærmlæser for personer som er blinde eller har synsnedsættelse" + +#: gnu/packages/gnome.scm:6135 +msgid "" +"Orca is a screen reader that provides access to the graphical desktop\n" +"via speech and refreshable braille. Orca works with applications and toolkits\n" +"that support the Assistive Technology Service Provider Interface (AT-SPI)." +msgstr "" + +#: gnu/packages/gnuzilla.scm:118 msgid "Mozilla javascript engine" msgstr "Mozillas javascriptmotor" -#: gnu/packages/gnuzilla.scm:102 +#: gnu/packages/gnuzilla.scm:119 msgid "" "SpiderMonkey is Mozilla's JavaScript engine written\n" "in C/C++." @@ -4516,22 +5066,22 @@ msgstr "" "SpiderMonkey er Mozillas JavaScript-motor skrevet\n" "i C/C++." -#: gnu/packages/gnuzilla.scm:180 +#: gnu/packages/gnuzilla.scm:276 msgid "Netscape API for system level and libc-like functions" msgstr "" -#: gnu/packages/gnuzilla.scm:181 +#: gnu/packages/gnuzilla.scm:277 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:285 +#: gnu/packages/gnuzilla.scm:393 msgid "Network Security Services" msgstr "" -#: gnu/packages/gnuzilla.scm:287 +#: gnu/packages/gnuzilla.scm:395 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" @@ -4540,33 +5090,33 @@ msgid "" "standards." msgstr "" -#: gnu/packages/gnuzilla.scm:623 +#: gnu/packages/gnuzilla.scm:737 msgid "Entirely free browser derived from Mozilla Firefox" msgstr "" -#: gnu/packages/gnuzilla.scm:625 +#: gnu/packages/gnuzilla.scm:739 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:94 +#: gnu/packages/gtk.scm:96 msgid "GNOME accessibility toolkit" msgstr "" -#: gnu/packages/gtk.scm:96 +#: gnu/packages/gtk.scm:98 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:136 +#: gnu/packages/gtk.scm:138 msgid "2D graphics library" msgstr "2D-grafikbibliotek" -#: gnu/packages/gtk.scm:138 +#: gnu/packages/gtk.scm:140 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" @@ -4584,56 +5134,56 @@ msgid "" "affine transformation (scale, rotation, shear, etc.)." msgstr "" -#: gnu/packages/gtk.scm:166 +#: gnu/packages/gtk.scm:168 msgid "2D graphics library (with X11 support)" msgstr "2D-grafikbibliotek (med X11-understøttelse)" -#: gnu/packages/gtk.scm:199 +#: gnu/packages/gtk.scm:201 msgid "OpenType text shaping engine" msgstr "OpenType-tekstformningsmotor" -#: gnu/packages/gtk.scm:201 +#: gnu/packages/gtk.scm:203 msgid "HarfBuzz is an OpenType text shaping engine." msgstr "HarfBuzz er et OpenType-tekstformningsmotor." -#: gnu/packages/gtk.scm:232 +#: gnu/packages/gtk.scm:234 msgid "GNOME text and font handling library" msgstr "" -#: gnu/packages/gtk.scm:234 +#: gnu/packages/gtk.scm:236 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:260 +#: gnu/packages/gtk.scm:262 msgid "Obsolete pango functions" msgstr "" -#: gnu/packages/gtk.scm:261 +#: gnu/packages/gtk.scm:263 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:297 +#: gnu/packages/gtk.scm:299 msgid "GTK+ widget for interactive graph-like environments" msgstr "" -#: gnu/packages/gtk.scm:299 +#: gnu/packages/gtk.scm:301 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:368 +#: gnu/packages/gtk.scm:369 msgid "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget" msgstr "" -#: gnu/packages/gtk.scm:370 +#: gnu/packages/gtk.scm:371 msgid "" "GtkSourceView is a portable C library that extends the standard GTK+\n" "framework for multiline text editing with support for configurable syntax\n" @@ -4641,56 +5191,56 @@ msgid "" "printing and other features typical of a source code editor." msgstr "" -#: gnu/packages/gtk.scm:419 +#: gnu/packages/gtk.scm:420 msgid "GNOME source code widget" msgstr "" -#: gnu/packages/gtk.scm:420 +#: gnu/packages/gtk.scm:421 msgid "" "GtkSourceView is a text widget that extends the standard\n" "GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax\n" "highlighting and other features typical of a source code editor." msgstr "" -#: gnu/packages/gtk.scm:470 +#: gnu/packages/gtk.scm:472 msgid "GNOME image loading and manipulation library" msgstr "" -#: gnu/packages/gtk.scm:472 +#: gnu/packages/gtk.scm:474 msgid "" "GdkPixbuf is a library for image loading and manipulation developed\n" "in the GNOME project." msgstr "" -#: gnu/packages/gtk.scm:504 +#: gnu/packages/gtk.scm:506 msgid "GNOME image loading and manipulation library, with SVG support" msgstr "GNOME-billedindlæsnings- og manipuleringsbibliotek, med SVG-understøttelse" -#: gnu/packages/gtk.scm:544 +#: gnu/packages/gtk.scm:546 msgid "Assistive Technology Service Provider Interface, core components" msgstr "" -#: gnu/packages/gtk.scm:546 +#: gnu/packages/gtk.scm:548 msgid "" "The Assistive Technology Service Provider Interface, core components,\n" "is part of the GNOME accessibility project." msgstr "" -#: gnu/packages/gtk.scm:579 +#: gnu/packages/gtk.scm:581 msgid "Assistive Technology Service Provider Interface, ATK bindings" msgstr "" -#: gnu/packages/gtk.scm:581 +#: gnu/packages/gtk.scm:583 msgid "" "The Assistive Technology Service Provider Interface\n" "is part of the GNOME accessibility project." msgstr "" -#: gnu/packages/gtk.scm:640 +#: gnu/packages/gtk.scm:642 msgid "Cross-platform toolkit for creating graphical user interfaces" msgstr "" -#: gnu/packages/gtk.scm:642 +#: gnu/packages/gtk.scm:644 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" @@ -4698,11 +5248,11 @@ msgid "" "application suites." msgstr "" -#: gnu/packages/gtk.scm:774 +#: gnu/packages/gtk.scm:795 msgid "Cairo bindings for GNU Guile" msgstr "" -#: gnu/packages/gtk.scm:776 +#: gnu/packages/gtk.scm:797 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" @@ -4712,21 +5262,21 @@ msgid "" "exceptions, macros, and a dynamic programming environment." msgstr "" -#: gnu/packages/gtk.scm:816 +#: gnu/packages/gtk.scm:837 msgid "Render SVG images using Cairo from Guile" msgstr "" -#: gnu/packages/gtk.scm:818 +#: gnu/packages/gtk.scm:839 msgid "" "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG\n" "images onto Cairo surfaces." msgstr "" -#: gnu/packages/gtk.scm:862 +#: gnu/packages/gtk.scm:883 msgid "Create SVG or PDF presentations in Guile" msgstr "Opret SVG- eller PDF-præsentationer i Guile" -#: gnu/packages/gtk.scm:864 +#: gnu/packages/gtk.scm:885 msgid "" "Guile-Present defines a declarative vocabulary for presentations,\n" "together with tools to render presentation documents as SVG or PDF.\n" @@ -4735,51 +5285,51 @@ msgid "" "documents." msgstr "" -#: gnu/packages/gtk.scm:918 +#: gnu/packages/gtk.scm:939 msgid "Guile interface for GTK+ programming for GNOME" msgstr "Guile brugerflade til GTK+-programmering for GNOME" -#: gnu/packages/gtk.scm:920 +#: gnu/packages/gtk.scm:941 msgid "" "Includes guile-clutter, guile-gnome-gstreamer,\n" "guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview." msgstr "" -#: gnu/packages/gtk.scm:952 +#: gnu/packages/gtk.scm:972 msgid "C++ bindings to the Cairo 2D graphics library" msgstr "C++-bindinger til CAiro 2D-grafikbiblioteket" -#: gnu/packages/gtk.scm:954 +#: gnu/packages/gtk.scm:974 msgid "" "Cairomm provides a C++ programming interface to the Cairo 2D graphics\n" "library." msgstr "" -#: gnu/packages/gtk.scm:978 +#: gnu/packages/gtk.scm:998 msgid "C++ interface to the Pango text rendering library" msgstr "C++-grænseflade til tekstoptegningsbiblioteket Pango" -#: gnu/packages/gtk.scm:980 +#: gnu/packages/gtk.scm:1000 msgid "" "Pangomm provides a C++ programming interface to the Pango text rendering\n" "library." msgstr "" -#: gnu/packages/gtk.scm:1001 +#: gnu/packages/gtk.scm:1021 msgid "C++ interface to the ATK accessibility library" msgstr "C++-grænseflade til ATK-tilgængelighedsbiblioteket" -#: gnu/packages/gtk.scm:1003 +#: gnu/packages/gtk.scm:1023 msgid "" "ATKmm provides a C++ programming interface to the ATK accessibility\n" "toolkit." msgstr "" -#: gnu/packages/gtk.scm:1043 +#: gnu/packages/gtk.scm:1063 msgid "C++ interface to the GTK+ graphical user interface library" msgstr "" -#: gnu/packages/gtk.scm:1045 +#: gnu/packages/gtk.scm:1065 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" @@ -4788,30 +5338,30 @@ msgid "" "extensive documentation, including API reference and a tutorial." msgstr "" -#: gnu/packages/gtk.scm:1104 +#: gnu/packages/gtk.scm:1124 msgid "Python bindings for cairo" msgstr "Pythonbindinger for cairo" -#: gnu/packages/gtk.scm:1106 +#: gnu/packages/gtk.scm:1126 msgid "Pycairo is a set of Python bindings for the Cairo graphics library." msgstr "Pycairo er et sæt af Pythonbindinger for grafikbiblioteket Cairo." -#: gnu/packages/gtk.scm:1190 +#: gnu/packages/gtk.scm:1210 msgid "Python bindings for GTK+" msgstr "Pythonbindinger for GTK+" -#: gnu/packages/gtk.scm:1192 +#: gnu/packages/gtk.scm:1212 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" +"targeted at GTK 2.x, and can be used in conjunction with gnome-python to\n" "write GNOME applications." msgstr "" -#: gnu/packages/gtk.scm:1223 +#: gnu/packages/gtk.scm:1243 msgid "Library for minimalistic gtk+3 user interfaces" msgstr "" -#: gnu/packages/gtk.scm:1224 +#: gnu/packages/gtk.scm:1244 msgid "" "Girara is a library that implements a user interface that\n" "focuses on simplicity and minimalism. Currently based on GTK+, a\n" @@ -4822,64 +5372,75 @@ msgid "" "information." msgstr "" -#: gnu/packages/gtk.scm:1286 +#: gnu/packages/gtk.scm:1306 msgid "Documentation generator from C source code" msgstr "" -#: gnu/packages/gtk.scm:1288 +#: gnu/packages/gtk.scm:1308 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/gtk.scm:1316 +#: gnu/packages/gtk.scm:1336 msgid "Theming engines for GTK+ 2.x" msgstr "" -#: gnu/packages/gtk.scm:1318 +#: gnu/packages/gtk.scm:1338 msgid "" "This package contains the standard GTK+ 2.x theming engines including\n" "Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,\n" "Redmond95 and ThinIce." msgstr "" -#: gnu/packages/gtk.scm:1346 +#: gnu/packages/gtk.scm:1366 msgid "Cairo-based theming engine for GTK+ 2.x" msgstr "" -#: gnu/packages/gtk.scm:1348 +#: gnu/packages/gtk.scm:1368 msgid "" "Murrine is a cairo-based GTK+ theming engine. It is named after the\n" "glass artworks done by Venicians glass blowers." msgstr "" -#: gnu/packages/gtk.scm:1373 +#: gnu/packages/gtk.scm:1393 msgid "Spell-checking addon for GTK's TextView widget" msgstr "" -#: gnu/packages/gtk.scm:1375 +#: gnu/packages/gtk.scm:1395 msgid "" "GtkSpell provides word-processor-style highlighting and replacement of\n" "misspelled words in a GtkTextView widget." msgstr "" -#: gnu/packages/gtk.scm:1398 +#: gnu/packages/gtk.scm:1418 msgid "Lightweight GTK+ clipboard manager" msgstr "" -#: gnu/packages/gtk.scm:1400 +#: gnu/packages/gtk.scm:1420 msgid "" "ClipIt is a clipboard manager with features such as a history, search\n" "thereof, global hotkeys and clipboard item actions. It was forked from\n" "Parcellite and adds bugfixes and features." msgstr "" -#: gnu/packages/guile.scm:123 gnu/packages/guile.scm:199 +#: gnu/packages/gtk.scm:1457 +msgid "Thin layer of graphic data types" +msgstr "" + +#: gnu/packages/gtk.scm:1458 +msgid "" +"This library provides graphic types and their relative API;\n" +"it does not deal with windowing system surfaces, drawing, scene graphs, or\n" +"input." +msgstr "" + +#: gnu/packages/guile.scm:130 gnu/packages/guile.scm:205 msgid "Scheme implementation intended especially for extensions" msgstr "" -#: gnu/packages/guile.scm:125 gnu/packages/guile.scm:201 +#: gnu/packages/guile.scm:132 gnu/packages/guile.scm:207 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" @@ -4888,15 +5449,29 @@ msgid "" "without requiring the source code to be rewritten." msgstr "" -#: gnu/packages/guile.scm:249 -msgid "Snapshot of what will become version 2.2 of GNU Guile" +#: gnu/packages/guile.scm:366 +msgid "Package manager for Guile" +msgstr "Pakkehåndtering for Guile" + +#: gnu/packages/guile.scm:368 +msgid "" +"Guildhall is a package manager written for Guile Scheme. A guild is\n" +"an association of independent craftspeople. A guildhall is where they meet.\n" +"This Guildhall aims to make a virtual space for Guile wizards and journeyfolk\n" +"to share code.\n" +"\n" +"On a practical level, Guildhall lets you share Scheme modules and programs\n" +"over the internet, and install code that has been shared by others. Guildhall\n" +"can handle dependencies, so when a program requires several libraries, and\n" +"each of those has further dependencies, all of the prerequisites for the\n" +"program can be installed in one go." msgstr "" -#: gnu/packages/guile.scm:367 +#: gnu/packages/guile.scm:425 msgid "Web application framework written in Guile" msgstr "" -#: gnu/packages/guile.scm:368 +#: gnu/packages/guile.scm:426 msgid "" "GNU Artanis is a web application framework written in Guile\n" "Scheme. A web application framework (WAF) is a software framework that is\n" @@ -4908,11 +5483,11 @@ msgid "" "more." msgstr "" -#: gnu/packages/guile.scm:398 +#: gnu/packages/guile.scm:452 msgid "Framework for building readers for GNU Guile" msgstr "Ramme til at bygge læsere for GNU Guile" -#: gnu/packages/guile.scm:400 +#: gnu/packages/guile.scm:454 msgid "" "Guile-Reader is a simple framework for building readers for GNU Guile.\n" "\n" @@ -4927,21 +5502,23 @@ msgid "" "many readers as needed)." msgstr "" -#: gnu/packages/guile.scm:445 +#: gnu/packages/guile.scm:508 msgid "Guile bindings to ncurses" msgstr "Guilebindinger til ncurses" -#: gnu/packages/guile.scm:447 +#: gnu/packages/guile.scm:510 msgid "" "guile-ncurses provides Guile language bindings for the ncurses\n" "library." msgstr "" +"guile-ncurses tilbyder Guile-sprogbindinger for biblioteket\n" +"ncurses." -#: gnu/packages/guile.scm:467 +#: gnu/packages/guile.scm:530 msgid "Run jobs at scheduled times" msgstr "Afvikl job på planlagte tidspunkter" -#: gnu/packages/guile.scm:469 +#: gnu/packages/guile.scm:532 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" @@ -4949,11 +5526,23 @@ msgid "" "format is also supported." msgstr "" -#: gnu/packages/guile.scm:556 +#: gnu/packages/guile.scm:619 +msgid "Guile parser library for the iCalendar format" +msgstr "Guile-fortolkerbibliotek for iCalendar-formatet" + +#: gnu/packages/guile.scm:621 +msgid "" +"Guile-ICS is an iCalendar (RFC5545) format parser library written in\n" +"pure Scheme. The library can be used to read and write iCalendar data.\n" +"\n" +"The library is shipped with documentation in Info format and usage examples." +msgstr "" + +#: gnu/packages/guile.scm:656 msgid "Collection of useful Guile Scheme modules" msgstr "" -#: gnu/packages/guile.scm:558 +#: gnu/packages/guile.scm:658 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" @@ -4961,25 +5550,28 @@ msgid "" "for Guile\"." msgstr "" -#: gnu/packages/guile.scm:593 +#: gnu/packages/guile.scm:696 msgid "JSON module for Guile" msgstr "JSON-modul for Guile" -#: gnu/packages/guile.scm:595 +#: gnu/packages/guile.scm:698 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." +"Guile-JSON supports parsing and building JSON documents according to the\n" +"specification. These are the main features:\n" +"\n" +"@itemize\n" +"@item Strictly complies to @uref{http://json.org, specification}.\n" +"@item Build JSON documents programmatically via macros.\n" +"@item Unicode support for strings.\n" +"@item Allows JSON pretty printing.\n" +"@end itemize\n" msgstr "" -#: gnu/packages/guile.scm:676 +#: gnu/packages/guile.scm:782 msgid "MiniKanren declarative logic system, packaged for Guile" msgstr "" -#: gnu/packages/guile.scm:678 +#: gnu/packages/guile.scm:784 msgid "" "MiniKanren is a relational programming extension to the Scheme\n" "programming Language, written as a smaller version of Kanren suitable for\n" @@ -4992,51 +5584,68 @@ msgid "" "See http://minikanren.org/ for more on miniKanren generally." msgstr "" -#: gnu/packages/guile.scm:767 +#: gnu/packages/guile.scm:855 +msgid "" +"Minimal implementation of incremental computation in Guile\n" +"Scheme" +msgstr "" + +#: gnu/packages/guile.scm:857 +msgid "" +"This package provides a complete Scheme implementation of\n" +"miniAdapton, which implements the core functionality of the Adapton system for\n" +"incremental computation (also known as self-adjusting computation). Like\n" +"Adapton, miniAdapton allows programmers to safely combine mutation and\n" +"memoization. miniAdapton is built on top of an even simpler system,\n" +"microAdapton. Both miniAdapton and microAdapton are designed to be easy to\n" +"understand, extend, and port to host languages other than Scheme." +msgstr "" + +#: gnu/packages/guile.scm:941 msgid "S-expression based regular expressions" msgstr "" -#: gnu/packages/guile.scm:769 +#: gnu/packages/guile.scm:943 msgid "" "Irregex is an s-expression based alternative to your classic\n" "string-based regular expressions. It implements SRFI 115 and is deeply\n" "inspired by the SCSH regular expression system." msgstr "" -#: gnu/packages/guile.scm:836 +#: gnu/packages/guile.scm:1024 msgid "Guile bindings to the GDBM library via Guile's FFI" msgstr "" -#: gnu/packages/guile.scm:838 +#: gnu/packages/guile.scm:1026 msgid "" "Guile bindings to the GDBM key-value storage system, using\n" "Guile's foreign function interface." msgstr "" -#: gnu/packages/guile.scm:886 +#: gnu/packages/guile.scm:1079 msgid "Access SQLite databases from Guile" msgstr "Tilgå SQLite-databaser fra Guile" -#: gnu/packages/guile.scm:888 +#: gnu/packages/guile.scm:1081 msgid "This package provides Guile bindings to the SQLite database system." msgstr "Denne pakke tilbyder Guilebindinger til SQLite-databasesystemet." -#: gnu/packages/guile.scm:932 +#: gnu/packages/guile.scm:1126 msgid "Functional static site generator" msgstr "" -#: gnu/packages/guile.scm:933 +#: gnu/packages/guile.scm:1127 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:954 +#: gnu/packages/guile.scm:1154 msgid "Guile application configuration parsing library" msgstr "" -#: gnu/packages/guile.scm:956 +#: gnu/packages/guile.scm:1156 msgid "" "Guile Config is a library providing a declarative approach to\n" "application configuration specification. The library provides clean\n" @@ -5047,43 +5656,43 @@ msgid "" "above command-line parameters." msgstr "" -#: gnu/packages/guile.scm:994 +#: gnu/packages/guile.scm:1194 msgid "Redis client library for Guile" msgstr "" -#: gnu/packages/guile.scm:995 +#: gnu/packages/guile.scm:1195 msgid "" "Guile-redis provides a Scheme interface to the Redis\n" "key-value cache and store." msgstr "" -#: gnu/packages/guile.scm:1072 +#: gnu/packages/guile.scm:1272 msgid "Whitespace to lisp syntax for Guile" msgstr "" -#: gnu/packages/guile.scm:1073 +#: gnu/packages/guile.scm:1273 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/guile.scm:1106 +#: gnu/packages/guile.scm:1306 msgid "2D/3D game engine for GNU Guile" msgstr "" -#: gnu/packages/guile.scm:1107 +#: gnu/packages/guile.scm:1307 msgid "" "Sly is a 2D/3D game engine written in Guile Scheme. Sly\n" "features a functional reactive programming interface and live coding\n" "capabilities." msgstr "" -#: gnu/packages/guile.scm:1142 +#: gnu/packages/guile.scm:1342 msgid "Generate C bindings for Guile" msgstr "" -#: gnu/packages/guile.scm:1143 +#: gnu/packages/guile.scm:1343 msgid "" "G-Wrap is a tool and Guile library for generating function\n" "wrappers for inter-language calls. It currently only supports generating Guile\n" @@ -5092,11 +5701,11 @@ msgid "" "provides access to that interface and its types from the Scheme level." msgstr "" -#: gnu/packages/guile.scm:1180 +#: gnu/packages/guile.scm:1380 msgid "Guile database abstraction layer" msgstr "Guile-databaseabstraktionslag" -#: gnu/packages/guile.scm:1183 +#: gnu/packages/guile.scm:1383 msgid "" "guile-dbi is a library for Guile that provides a convenient interface to\n" "SQL databases. Database programming with guile-dbi is generic in that the same\n" @@ -5104,43 +5713,43 @@ msgid "" "It currently supports MySQL, Postgres and SQLite3." msgstr "" -#: gnu/packages/guile.scm:1209 +#: gnu/packages/guile.scm:1409 msgid "Guile DBI driver for SQLite" msgstr "Guile DBI-driver for SQLite" -#: gnu/packages/guile.scm:1212 +#: gnu/packages/guile.scm:1412 msgid "" "guile-dbi is a library for Guile that provides a convenient interface to\n" "SQL databases. This package implements the interface for SQLite." msgstr "" -#: gnu/packages/guile.scm:1238 +#: gnu/packages/guile.scm:1438 msgid "XOSD bindings for Guile" msgstr "XOSD-bindinger for Guile" -#: gnu/packages/guile.scm:1240 +#: gnu/packages/guile.scm:1440 msgid "" "Guile-XOSD provides Guile bindings for @code{libxosd},\n" "@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display\n" "library}." msgstr "" -#: gnu/packages/guile.scm:1263 +#: gnu/packages/guile.scm:1463 msgid "Evaluate code in a running Guile process" msgstr "Evaluer kode i en kørende Guileproces" -#: gnu/packages/guile.scm:1265 +#: gnu/packages/guile.scm:1465 msgid "" "Guile-Daemon is a small Guile program that loads your initial\n" "configuration file, and then reads and evaluates Guile expressions that\n" "you send to a FIFO file." msgstr "" -#: gnu/packages/guile.scm:1296 +#: gnu/packages/guile.scm:1496 msgid "CommonMark parser for Guile" msgstr "" -#: gnu/packages/guile.scm:1298 +#: gnu/packages/guile.scm:1498 msgid "" "guile-commonmark is a library for parsing CommonMark, a fully specified\n" "variant of Markdown. The library is written in Guile Scheme and is designed\n" @@ -5149,11 +5758,11 @@ msgid "" "is no support for parsing block and inline level HTML." msgstr "" -#: gnu/packages/guile.scm:1380 +#: gnu/packages/guile.scm:1584 msgid "Structured access to bytevector contents for Guile" msgstr "" -#: gnu/packages/guile.scm:1382 +#: gnu/packages/guile.scm:1586 msgid "" "Guile bytestructures offers a system imitating the type system\n" "of the C programming language, to be used on bytevectors. C's type\n" @@ -5162,21 +5771,114 @@ msgid "" "type system, elevating types to first-class status." msgstr "" -#: gnu/packages/guile.scm:1419 +#: gnu/packages/guile.scm:1627 msgid "Spell-checking from Guile" msgstr "" -#: gnu/packages/guile.scm:1421 +#: gnu/packages/guile.scm:1629 msgid "" "guile-aspell is a Guile Scheme library for comparing a string against a\n" "dictionary and suggesting spelling corrections." msgstr "" -#: gnu/packages/imagemagick.scm:106 gnu/packages/imagemagick.scm:208 +#: gnu/packages/guile.scm:1679 +msgid "Extend Bash using Guile" +msgstr "" + +#: gnu/packages/guile.scm:1681 +#, scheme-format +msgid "" +"Guile-Bash provides a shared library and set of Guile modules,\n" +"allowing you to extend Bash in Scheme. Scheme interfaces allow you to access\n" +"the following aspects of Bash:\n" +"\n" +"@itemize\n" +"@item aliases;\n" +"@item setting and getting Bash variables;\n" +"@item creating dynamic variables;\n" +"@item creating Bash functions with a Scheme implementation;\n" +"@item reader macro for output capturing;\n" +"@item reader macro for evaluating raw Bash commands.\n" +"@end itemize\n" +"\n" +"To enable it, run:\n" +"\n" +"@example\n" +"enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm\n" +"@end example\n" +"\n" +"and then run @command{scm example.scm}." +msgstr "" + +#: gnu/packages/guile.scm:1728 +msgid "Asynchronous actor model library for Guile" +msgstr "" + +#: gnu/packages/guile.scm:1730 +msgid "" +"GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming\n" +"library for GNU Guile based on the actor model.\n" +"\n" +"Note that 8sync is only available for Guile 2.2." +msgstr "" + +#: gnu/packages/guile.scm:1753 +msgid "Lightweight concurrency facility for Guile" +msgstr "" + +#: gnu/packages/guile.scm:1755 +msgid "" +"Fibers is a Guile library that implements a a lightweight concurrency\n" +"facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is\n" +"like a \"goroutine\" from the Go language: a lightweight thread-like\n" +"abstraction. Systems built with Fibers can scale up to millions of concurrent\n" +"fibers, tens of thousands of concurrent socket connections, and many parallel\n" +"cores. The Fibers library also provides Concurrent ML-like channels for\n" +"communication between fibers.\n" +"\n" +"Note that Fibers makes use of some Guile 2.1/2.2-specific features and\n" +"is not available for Guile 2.0." +msgstr "" + +#: gnu/packages/guile.scm:1797 +msgid "Guile bindings for libgit2" +msgstr "Guilebindinger for libgit2" + +#: gnu/packages/guile.scm:1799 +msgid "" +"This package provides Guile bindings to libgit2, a library to\n" +"manipulate repositories of the Git version control system." +msgstr "" +"Denne pakke tilbyder Guilebindinger til libgit2, et bibliotek\n" +"til at manipulere arkiver i versionskontrolsystemet Git." + +#: gnu/packages/guile.scm:1830 +msgid "General-purpose syntax highlighter for GNU Guile" +msgstr "" + +#: gnu/packages/guile.scm:1831 +msgid "" +"Guile-syntax-highlight is a general-purpose syntax\n" +"highlighting library for GNU Guile. It can parse code written in various\n" +"programming languages into a simple s-expression that can be converted to\n" +"HTML (via SXML) or any other format for rendering." +msgstr "" + +#: gnu/packages/guile.scm:1862 +msgid "S-expression based json reader/writer for Guile" +msgstr "S-udtryksbaseret json læser/skriver for Guile" + +#: gnu/packages/guile.scm:1863 +msgid "" +"guile-sjson is a json reader/writer for Guile.\n" +"It has a nice, simple s-expression based syntax." +msgstr "" + +#: gnu/packages/imagemagick.scm:109 gnu/packages/imagemagick.scm:214 msgid "Create, edit, compose, or convert bitmap images" msgstr "Opret, rediger, komponer eller konverter bitmap-billeder" -#: gnu/packages/imagemagick.scm:108 +#: gnu/packages/imagemagick.scm:111 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" @@ -5186,11 +5888,11 @@ msgid "" "text, lines, polygons, ellipses and Bézier curves." msgstr "" -#: gnu/packages/imagemagick.scm:153 +#: gnu/packages/imagemagick.scm:156 msgid "Perl interface to ImageMagick" msgstr "Perlgrænseflade til ImageMagick" -#: gnu/packages/imagemagick.scm:154 +#: gnu/packages/imagemagick.scm:157 msgid "" "This Perl extension allows the reading, manipulation and\n" "writing of a large number of image file formats using the ImageMagick library.\n" @@ -5198,28 +5900,49 @@ msgid "" "script." msgstr "" -#: gnu/packages/imagemagick.scm:210 +#: gnu/packages/imagemagick.scm:216 msgid "" "GraphicsMagick provides a comprehensive collection of utilities,\n" "programming interfaces, and GUIs, to support file format conversion, image\n" "processing, and 2D vector rendering." msgstr "" -#: gnu/packages/image.scm:84 +#: gnu/packages/image.scm:88 msgid "Library for handling PNG files" msgstr "Bibliotek for håndtering af PNG-filer" -#: gnu/packages/image.scm:86 +#: gnu/packages/image.scm:90 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:118 +#: gnu/packages/image.scm:134 +msgid "APNG patch for libpng" +msgstr "" + +#: gnu/packages/image.scm:136 +msgid "" +"APNG (Animated Portable Network Graphics) is an unofficial\n" +"extension of the APNG (Portable Network Graphics) format.\n" +"APNG patch provides APNG support to libpng." +msgstr "" + +#: gnu/packages/image.scm:189 +msgid "Utility to compress PNG files" +msgstr "Redskab til at komprimere PNG-filer" + +#: gnu/packages/image.scm:190 +msgid "" +"pngcrusqh is an optimizer for PNG (Portable Network Graphics)\n" +"files. It can compress them as much as 40% losslessly." +msgstr "" + +#: gnu/packages/image.scm:205 msgid "Library for handling JPEG files" msgstr "Bibliotek for håndtering af JPEG-filer" -#: gnu/packages/image.scm:120 +#: gnu/packages/image.scm:207 msgid "" "Libjpeg implements JPEG image encoding, decoding, and transcoding.\n" "JPEG is a standardized compression method for full-color and gray-scale\n" @@ -5228,32 +5951,32 @@ msgid "" "image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats." msgstr "" -#: gnu/packages/image.scm:185 +#: gnu/packages/image.scm:272 msgid "Implementation of the JPEG XR standard" msgstr "" -#: gnu/packages/image.scm:186 +#: gnu/packages/image.scm:273 msgid "" "JPEG XR is an approved ISO/IEC International standard (its\n" "official designation is ISO/IEC 29199-2). This library is an implementation of that standard." msgstr "" -#: gnu/packages/image.scm:209 +#: gnu/packages/image.scm:296 msgid "Optimize JPEG images" msgstr "Optimer JPEG-billeder" -#: gnu/packages/image.scm:211 +#: gnu/packages/image.scm:298 msgid "" "jpegoptim provides lossless optimization (based on optimizing\n" "the Huffman tables) and \"lossy\" optimization based on setting\n" "maximum quality factor." msgstr "" -#: gnu/packages/image.scm:236 +#: gnu/packages/image.scm:323 msgid "Library for handling Mac OS icns resource files" msgstr "Bibliotek for håndtering af Mac OS-ikonressourcefiler" -#: gnu/packages/image.scm:238 +#: gnu/packages/image.scm:325 msgid "" "Libicns is a library for the manipulation of Mac OS IconFamily resource\n" "type files (ICNS). @command{icns2png} and @command{png2icns} are provided to\n" @@ -5263,11 +5986,11 @@ msgid "" "extracting icontainer icon files." msgstr "" -#: gnu/packages/image.scm:273 +#: gnu/packages/image.scm:377 msgid "Library for handling TIFF files" msgstr "Bibliotek for håndtering af TIFF-filer" -#: gnu/packages/image.scm:275 +#: gnu/packages/image.scm:379 msgid "" "Libtiff provides support for the Tag Image File Format (TIFF), a format\n" "used for storing image data.\n" @@ -5275,11 +5998,11 @@ msgid "" "collection of tools for doing simple manipulations of TIFF images." msgstr "" -#: gnu/packages/image.scm:318 +#: gnu/packages/image.scm:435 msgid "Library for reading images in the Microsoft WMF format" msgstr "Bibliotek for læsning af billeder i Microsoft WMF-formatet" -#: gnu/packages/image.scm:320 +#: gnu/packages/image.scm:437 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" @@ -5287,11 +6010,11 @@ msgid "" "the W3C's XML-based Scaleable Vector Graphic (SVG) format." msgstr "" -#: gnu/packages/image.scm:387 +#: gnu/packages/image.scm:490 msgid "Library and tools for image processing and analysis" msgstr "Bibliotek og værktøjer for billedbehandling og analyse" -#: gnu/packages/image.scm:389 +#: gnu/packages/image.scm:492 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" @@ -5301,11 +6024,11 @@ msgid "" "arithmetic ops." msgstr "" -#: gnu/packages/image.scm:411 +#: gnu/packages/image.scm:515 msgid "Decoder of the JBIG2 image compression format" msgstr "" -#: gnu/packages/image.scm:413 +#: gnu/packages/image.scm:517 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" @@ -5318,11 +6041,11 @@ msgid "" "work." msgstr "" -#: gnu/packages/image.scm:451 +#: gnu/packages/image.scm:554 msgid "JPEG 2000 codec" msgstr "JPEG 2000-kodning" -#: gnu/packages/image.scm:453 +#: gnu/packages/image.scm:556 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" @@ -5335,11 +6058,11 @@ msgid "" "error-resilience, a Java-viewer for j2k-images, ..." msgstr "" -#: gnu/packages/image.scm:534 +#: gnu/packages/image.scm:619 msgid "Tools and library for working with GIF images" msgstr "Værktøjer og bibliotek for arbejde med GIF-billeder" -#: gnu/packages/image.scm:536 +#: gnu/packages/image.scm:621 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" @@ -5347,19 +6070,19 @@ msgid "" "compose, and analyze GIF images." msgstr "" -#: gnu/packages/image.scm:558 +#: gnu/packages/image.scm:643 msgid "GIF decompression library" msgstr "GIF-dekomprimeringsbibliotek" -#: gnu/packages/image.scm:560 +#: gnu/packages/image.scm:645 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:589 +#: gnu/packages/image.scm:674 msgid "Loading, saving, rendering and manipulating image files" msgstr "Indlæs, gem, optegn og manipuler billedfiler" -#: gnu/packages/image.scm:591 +#: gnu/packages/image.scm:676 msgid "" "Imlib2 is a library that does image file loading and saving as well as\n" "rendering, manipulation, arbitrary polygon support, etc.\n" @@ -5372,32 +6095,32 @@ msgid "" "more modular, simple, and flexible." msgstr "" -#: gnu/packages/image.scm:623 +#: gnu/packages/image.scm:708 msgid "Wrapper library for imlib2" msgstr "Omslagsbibliotek for imlib2" -#: gnu/packages/image.scm:625 +#: gnu/packages/image.scm:710 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:666 +#: gnu/packages/image.scm:752 msgid "Library for handling popular graphics image formats" msgstr "Bibliotek til håndtering af populære grafiske billedformater" -#: gnu/packages/image.scm:668 +#: gnu/packages/image.scm:754 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:723 +#: gnu/packages/image.scm:809 msgid "Computer vision library" msgstr "" -#: gnu/packages/image.scm:725 +#: gnu/packages/image.scm:811 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" @@ -5405,11 +6128,11 @@ msgid "" "multi-dimensional image processing." msgstr "" -#: gnu/packages/image.scm:758 +#: gnu/packages/image.scm:843 msgid "Lossless and lossy image compression" msgstr "Billedkomprimering med og uden kvalitetetstab" -#: gnu/packages/image.scm:760 +#: gnu/packages/image.scm:845 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" @@ -5421,52 +6144,52 @@ msgid "" "channels." msgstr "" -#: gnu/packages/image.scm:788 +#: gnu/packages/image.scm:873 msgid "Library for handling MNG files" msgstr "Bibliotek for håndtering af MNG-filer" -#: gnu/packages/image.scm:790 +#: gnu/packages/image.scm:875 msgid "Libmng is the MNG (Multiple-image Network Graphics) reference library." msgstr "Libmng er MNG-referencebiblioteket (Multiple-image Network Graphics)." -#: gnu/packages/image.scm:814 +#: gnu/packages/image.scm:899 msgid "Library and command-line utility to manage image metadata" msgstr "Bibliotek og kommandolinjeredskab til at håndtere billedmetadata" -#: gnu/packages/image.scm:816 +#: gnu/packages/image.scm:901 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/image.scm:872 +#: gnu/packages/image.scm:941 msgid "Library for manipulating many image formats" msgstr "Bibliotek for manipulering af mange billedformater" -#: gnu/packages/image.scm:873 +#: gnu/packages/image.scm:942 msgid "" "Developer's Image Library (DevIL) is a library to develop\n" "applications with support for many types of images. DevIL can load, save,\n" "convert, manipulate, filter and display a wide variety of image formats." msgstr "" -#: gnu/packages/image.scm:892 +#: gnu/packages/image.scm:962 msgid "JPEG-2000 library" msgstr "JPEG-2000-bibliotek" -#: gnu/packages/image.scm:893 +#: gnu/packages/image.scm:963 msgid "" "The JasPer Project is an initiative to provide a reference\n" "implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e.,\n" "ISO/IEC 15444-1)." msgstr "" -#: gnu/packages/image.scm:923 +#: gnu/packages/image.scm:993 msgid "Scaling, colorspace conversion, and dithering library" msgstr "" -#: gnu/packages/image.scm:924 +#: gnu/packages/image.scm:994 msgid "" "Zimg implements the commonly required image processing basics\n" "of scaling, colorspace conversion, and depth conversion. A simple API enables\n" @@ -5474,11 +6197,11 @@ msgid "" "the programmer." msgstr "" -#: gnu/packages/image.scm:957 +#: gnu/packages/image.scm:1027 msgid "Perceptual image comparison utility" msgstr "" -#: gnu/packages/image.scm:958 +#: gnu/packages/image.scm:1028 msgid "" "PerceptualDiff visually compares two images to determine\n" "whether they look alike. It uses a computational model of the human visual\n" @@ -5486,11 +6209,11 @@ msgid "" "differences in file encoding, image quality, and other small variations." msgstr "" -#: gnu/packages/image.scm:989 +#: gnu/packages/image.scm:1059 msgid "Image and audio steganography" msgstr "" -#: gnu/packages/image.scm:991 +#: gnu/packages/image.scm:1061 msgid "" "Steghide is a steganography program that is able to hide data in various\n" "kinds of image- and audio-files. The color- respectivly sample-frequencies\n" @@ -5498,24 +6221,24 @@ msgid "" "statistical tests." msgstr "" -#: gnu/packages/image.scm:1017 +#: gnu/packages/image.scm:1087 msgid "Image library for Extempore" msgstr "Billedbibliotek for Extempore" -#: gnu/packages/image.scm:1019 +#: gnu/packages/image.scm:1089 msgid "" "This package is a collection of assorted single-file libraries. Of\n" "all included libraries only the image loading and decoding library is\n" "installed as @code{stb_image}." msgstr "" -#: gnu/packages/image.scm:1047 +#: gnu/packages/image.scm:1117 msgid "" "Optimizer that recompresses PNG image files to a\n" "smaller size" msgstr "" -#: gnu/packages/image.scm:1049 +#: gnu/packages/image.scm:1119 msgid "" "OptiPNG is a PNG optimizer that recompresses image\n" "files to a smaller size, without losing any information. This program\n" @@ -5523,11 +6246,11 @@ msgid "" "PNG, and performs PNG integrity checks and corrections." msgstr "" -#: gnu/packages/image.scm:1083 +#: gnu/packages/image.scm:1153 msgid "SIMD-accelerated JPEG image handling library" -msgstr "" +msgstr "SIMD-accelereret JPEG-billedbehandlingsbibliotek" -#: gnu/packages/image.scm:1084 +#: gnu/packages/image.scm:1154 msgid "" "libjpeg-turbo is a JPEG image codec that accelerates baseline\n" "JPEG compression and decompression using SIMD instructions: MMX on x86, SSE2 on\n" @@ -5540,11 +6263,23 @@ msgid "" "and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.)." msgstr "" -#: gnu/packages/image-viewers.scm:63 +#: gnu/packages/image.scm:1202 +msgid "Library for reading and writing files in the nifti-1 format" +msgstr "Bibliotek til at læse og skrive filer i nifti-1-formatet" + +#: gnu/packages/image.scm:1203 +msgid "" +"Niftilib is a set of i/o libraries for reading and writing\n" +"files in the nifti-1 data format - a binary file format for storing\n" +"medical image data, e.g. magnetic resonance image (MRI) and functional MRI\n" +"(fMRI) brain images." +msgstr "" + +#: gnu/packages/image-viewers.scm:78 msgid "Fast and light imlib2-based image viewer" msgstr "Hurtig og simpel imlib2-baseret billedfremviser" -#: gnu/packages/image-viewers.scm:65 +#: gnu/packages/image-viewers.scm:80 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" @@ -5553,11 +6288,11 @@ msgid "" "actions." msgstr "" -#: gnu/packages/image-viewers.scm:111 +#: gnu/packages/image-viewers.scm:126 msgid "Lightweight GTK+ based image viewer" msgstr "" -#: gnu/packages/image-viewers.scm:113 +#: gnu/packages/image-viewers.scm:128 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" @@ -5567,11 +6302,21 @@ msgid "" "collection. Geeqie was initially based on GQview." msgstr "" -#: gnu/packages/image-viewers.scm:148 +#: gnu/packages/image-viewers.scm:153 +msgid "Simple and fast image viewer for X" +msgstr "Simpel og hurtig billedfremviser for X" + +#: gnu/packages/image-viewers.scm:154 +msgid "" +"gpicview is a lightweight GTK+ 2.x based image viewer.\n" +"It is the default image viewer on LXDE desktop environment." +msgstr "" + +#: gnu/packages/image-viewers.scm:186 msgid "Simple X Image Viewer" msgstr "Simpel X-billedfremviser" -#: gnu/packages/image-viewers.scm:150 +#: gnu/packages/image-viewers.scm:188 msgid "" "sxiv is an alternative to feh and qiv. Its primary goal is to\n" "provide the most basic features required for fast image viewing. It has\n" @@ -5580,11 +6325,11 @@ msgid "" "it and customize it for your needs." msgstr "" -#: gnu/packages/image-viewers.scm:191 +#: gnu/packages/image-viewers.scm:229 msgid "Simple, fast and elegant image viewer" msgstr "Simpel, hurtig og elegant billedfremviser" -#: gnu/packages/image-viewers.scm:192 +#: gnu/packages/image-viewers.scm:230 msgid "" "Viewnior is an image viewer program. Created to be simple,\n" "fast and elegant. Its minimalistic interface provides more screenspace for\n" @@ -5602,22 +6347,63 @@ msgid "" "@end enumerate\n" msgstr "" -#: gnu/packages/inkscape.scm:92 +#: gnu/packages/image-viewers.scm:298 +msgid "Render images in the terminal" +msgstr "" + +#: gnu/packages/image-viewers.scm:300 +msgid "" +"Catimg is a little program that prints images in the terminal.\n" +"It supports JPEG, PNG and GIF formats." +msgstr "" + +#: gnu/packages/image-viewers.scm:351 +msgid "High dynamic range (HDR) imaging application" +msgstr "" + +#: gnu/packages/image-viewers.scm:353 +msgid "" +"Luminance HDR (formerly QtPFSGui) is a graphical user interface\n" +"application that aims to provide a workflow for high dynamic range (HDR)\n" +"imaging. It supports several HDR and LDR image formats, and it can:\n" +"\n" +"@itemize\n" +"@item Create an HDR file from a set of images (formats: JPEG, TIFF 8bit and\n" +"16bit, RAW) of the same scene taken at different exposure setting;\n" +"@item Save load HDR images;\n" +"@item Rotate, resize and crop HDR images;\n" +"@item Tone-map HDR images;\n" +"@item Copy EXIF data between sets of images.\n" +"@end itemize\n" +msgstr "" + +#: gnu/packages/image-viewers.scm:400 +msgid "Image viewer for comics" +msgstr "" + +#: gnu/packages/image-viewers.scm:401 +msgid "" +"MComix is a customizable image viewer that specializes as\n" +"a comic and manga reader. It supports a variety of container formats\n" +"including CBZ, CB7, CBT, LHA." +msgstr "" + +#: gnu/packages/inkscape.scm:80 msgid "Vector graphics editor" msgstr "Redigeringsprogram for vektorgrafik" -#: gnu/packages/inkscape.scm:93 +#: gnu/packages/inkscape.scm:81 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:41 +#: gnu/packages/jemalloc.scm:60 msgid "General-purpose scalable concurrent malloc implementation" msgstr "" -#: gnu/packages/jemalloc.scm:43 +#: gnu/packages/jemalloc.scm:62 msgid "" "This library providing a malloc(3) implementation that emphasizes\n" "fragmentation avoidance and scalable concurrency support." @@ -5654,11 +6440,11 @@ msgstr "" msgid "Clone of the Motif toolkit for the X window system." msgstr "" -#: gnu/packages/libreoffice.scm:87 +#: gnu/packages/libreoffice.scm:89 msgid "General purpose formula parser and interpreter" msgstr "" -#: gnu/packages/libreoffice.scm:88 +#: gnu/packages/libreoffice.scm:90 msgid "" "Ixion is a library for calculating the results of formula\n" "expressions stored in multiple named targets, or \"cells\". The cells can\n" @@ -5666,11 +6452,11 @@ msgid "" "their dependencies automatically upon calculation." msgstr "" -#: gnu/packages/libreoffice.scm:113 +#: gnu/packages/libreoffice.scm:116 msgid "File import filter library for spreadsheet documents" msgstr "" -#: gnu/packages/libreoffice.scm:114 +#: gnu/packages/libreoffice.scm:117 msgid "" "Orcus is a library that provides a collection of standalone\n" "file processing filters. It is currently focused on providing filters for\n" @@ -5680,33 +6466,33 @@ msgid "" "CSV, CSS and XML." msgstr "" -#: gnu/packages/libreoffice.scm:148 +#: gnu/packages/libreoffice.scm:151 msgid "Document importer for office suites" msgstr "" -#: gnu/packages/libreoffice.scm:149 +#: gnu/packages/libreoffice.scm:152 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:174 +#: gnu/packages/libreoffice.scm:177 msgid "Library for importing WordPerfect documents" msgstr "Bibliotek til import af WordPerfect-dokumenter" -#: gnu/packages/libreoffice.scm:175 +#: gnu/packages/libreoffice.scm:178 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:207 +#: gnu/packages/libreoffice.scm:210 msgid "Library for import of reflowable e-book formats" msgstr "" -#: gnu/packages/libreoffice.scm:208 +#: gnu/packages/libreoffice.scm:211 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" @@ -5716,42 +6502,42 @@ msgid "" "ZVR (simple compressed text format)." msgstr "" -#: gnu/packages/libreoffice.scm:237 +#: gnu/packages/libreoffice.scm:240 msgid "Library and tools for the WordPerfect Graphics format" msgstr "" -#: gnu/packages/libreoffice.scm:238 +#: gnu/packages/libreoffice.scm:241 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:279 +#: gnu/packages/libreoffice.scm:282 msgid "CMIS client library" msgstr "" -#: gnu/packages/libreoffice.scm:280 +#: gnu/packages/libreoffice.scm:283 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:311 +#: gnu/packages/libreoffice.scm:314 msgid "Library for parsing the AbiWord format" msgstr "" -#: gnu/packages/libreoffice.scm:312 +#: gnu/packages/libreoffice.scm:315 msgid "" "Libabw is a library that parses the file format of\n" "AbiWord documents." msgstr "" -#: gnu/packages/libreoffice.scm:342 +#: gnu/packages/libreoffice.scm:345 msgid "Library for parsing the CorelDRAW format" msgstr "Bibliotek til fortolkning af CorelDRAW-formatet" -#: gnu/packages/libreoffice.scm:343 +#: gnu/packages/libreoffice.scm:346 msgid "" "Libcdr is a library that parses the file format of\n" "CorelDRAW documents of all versions." @@ -5759,21 +6545,21 @@ msgstr "" "Libcdr er et bibliotek, som fortolker filformatet\n" "for CorelDraw-dokumenter for alle versioner." -#: gnu/packages/libreoffice.scm:372 +#: gnu/packages/libreoffice.scm:384 msgid "Library for parsing the Apple Keynote format" msgstr "Bibliotek for fortolkning af Apple Keynote-formatet" -#: gnu/packages/libreoffice.scm:373 +#: gnu/packages/libreoffice.scm:385 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:396 +#: gnu/packages/libreoffice.scm:408 msgid "Library to access tags for identifying languages" msgstr "Bibliotek til at tilgå mærker for identifikation af sprog" -#: gnu/packages/libreoffice.scm:397 +#: gnu/packages/libreoffice.scm:409 msgid "" "Liblangtag implements an interface to work with tags\n" "for identifying languages as described in RFC 5646. It supports the\n" @@ -5782,62 +6568,62 @@ msgid "" "standard 21.0.2." msgstr "" -#: gnu/packages/libreoffice.scm:417 +#: gnu/packages/libreoffice.scm:429 msgid "Text Categorization library" msgstr "Tekstkategoriseringsbibliotek" -#: gnu/packages/libreoffice.scm:418 +#: gnu/packages/libreoffice.scm:430 msgid "" "Libexttextcat is an N-Gram-Based Text Categorization\n" "library primarily intended for language guessing." msgstr "" -#: gnu/packages/libreoffice.scm:444 +#: gnu/packages/libreoffice.scm:456 msgid "Library for parsing the FreeHand format" msgstr "Bibliotek til at fortolke FreeHand-formatet" -#: gnu/packages/libreoffice.scm:445 +#: gnu/packages/libreoffice.scm:457 msgid "" "Libfreehand is a library that parses the file format of\n" "Aldus/Macromedia/Adobe FreeHand documents." msgstr "" -#: gnu/packages/libreoffice.scm:471 +#: gnu/packages/libreoffice.scm:483 msgid "Library for parsing the Microsoft Publisher format" msgstr "" -#: gnu/packages/libreoffice.scm:472 +#: gnu/packages/libreoffice.scm:484 msgid "" "Libmspub is a library that parses the file format of\n" "Microsoft Publisher documents of all versions." msgstr "" -#: gnu/packages/libreoffice.scm:500 +#: gnu/packages/libreoffice.scm:512 msgid "Library for parsing the PageMaker format" msgstr "Bibliotek til fortolkning af PageMaker-formatet" -#: gnu/packages/libreoffice.scm:501 +#: gnu/packages/libreoffice.scm:513 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:536 +#: gnu/packages/libreoffice.scm:548 msgid "Library for parsing the Microsoft Visio format" msgstr "" -#: gnu/packages/libreoffice.scm:537 +#: gnu/packages/libreoffice.scm:549 msgid "" "Libvisio is a library that parses the file format of\n" "Microsoft Visio documents of all versions." msgstr "" -#: gnu/packages/libreoffice.scm:565 +#: gnu/packages/libreoffice.scm:577 msgid "ODF (Open Document Format) library" msgstr "ODF-bibliotek (Open Document Format)" -#: gnu/packages/libreoffice.scm:566 +#: gnu/packages/libreoffice.scm:578 msgid "" "Libodfgen is a library for generating documents in the\n" "Open Document Format (ODF). It provides generator implementations for all\n" @@ -5845,60 +6631,84 @@ msgid "" "text documents, vector drawings, presentations and spreadsheets." msgstr "" -#: gnu/packages/libreoffice.scm:596 +#: gnu/packages/libreoffice.scm:608 msgid "Import library for some old Macintosh text documents" msgstr "" -#: gnu/packages/libreoffice.scm:597 +#: gnu/packages/libreoffice.scm:609 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:626 -msgid "Import library for Microsoft Works text documents" +#: gnu/packages/libreoffice.scm:632 +msgid "Provides LibreOffice support for old StarOffice documents" +msgstr "" + +#: gnu/packages/libreoffice.scm:633 +msgid "" +"@code{libstaroffice} is an import filter for the document formats\n" +"from the old StarOffice (.sdc, .sdw, ...)." msgstr "" -#: gnu/packages/libreoffice.scm:627 +#: gnu/packages/libreoffice.scm:661 +msgid "Import library for Microsoft Works text documents" +msgstr "Importbibliotek for Microsoft Works-tekstdokumenter" + +#: gnu/packages/libreoffice.scm:662 msgid "" "Libwps is a library for importing files in the Microsoft\n" "Works word processor file format." msgstr "" -#: gnu/packages/libreoffice.scm:645 +#: gnu/packages/libreoffice.scm:689 +msgid "Parses file format of Zoner Callisto/Draw documents" +msgstr "Fortolker filformat for Zoner Callisto/Draw-dokumenter" + +#: gnu/packages/libreoffice.scm:690 +msgid "" +"Libzmf is a library that parses the file format of Zoner\n" +"Callisto/Draw documents. Currently it only understands documents created by\n" +"Zoner Draw version 4 and 5." +msgstr "" +"Libzmf er et bibliotek, som fortolker filformatet for Zoner\n" +"Callisto/Draw-dokumenter. I øjeblikket understøttes kun dokumenter oprettet\n" +"af Zoner Draw version 4 og 5." + +#: gnu/packages/libreoffice.scm:712 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:667 +#: gnu/packages/libreoffice.scm:734 msgid "Hyphenation library" -msgstr "" +msgstr "Orddelingsbibliotek" -#: gnu/packages/libreoffice.scm:668 +#: gnu/packages/libreoffice.scm:735 msgid "" "Hyphen is a hyphenation library using TeX hyphenation\n" "patterns, which are pre-processed by a perl script." msgstr "" -#: gnu/packages/libreoffice.scm:691 +#: gnu/packages/libreoffice.scm:758 msgid "Thesaurus" msgstr "" -#: gnu/packages/libreoffice.scm:692 +#: gnu/packages/libreoffice.scm:759 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:861 +#: gnu/packages/libreoffice.scm:929 msgid "Office suite" msgstr "" -#: gnu/packages/libreoffice.scm:862 +#: gnu/packages/libreoffice.scm:930 msgid "" "LibreOffice is a comprehensive office suite. It contains\n" "a number of components: Writer, a word processor; Calc, a spreadsheet\n" @@ -5907,29 +6717,29 @@ msgid "" "Math for editing mathematics." msgstr "" -#: gnu/packages/linux.scm:170 +#: gnu/packages/linux.scm:196 msgid "GNU Linux-Libre kernel headers" msgstr "GNU Linux-LIbre - kerneteksthoveder" -#: gnu/packages/linux.scm:171 +#: gnu/packages/linux.scm:197 msgid "Headers of the Linux-Libre kernel." msgstr "Teksthoveder for Linux-Libre-kernen." -#: gnu/packages/linux.scm:321 +#: gnu/packages/linux.scm:348 msgid "100% free redistribution of a cleaned Linux kernel" msgstr "" -#: gnu/packages/linux.scm:323 +#: gnu/packages/linux.scm:350 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:397 +#: gnu/packages/linux.scm:439 msgid "Pluggable authentication modules for Linux" msgstr "" -#: gnu/packages/linux.scm:399 +#: gnu/packages/linux.scm:441 msgid "" "A *Free* project to implement OSF's RFC 86.0.\n" "Pluggable authentication modules are small shared object files that can\n" @@ -5937,33 +6747,33 @@ msgid "" "at login. Local and dynamic reconfiguration are its key features." msgstr "" -#: gnu/packages/linux.scm:441 +#: gnu/packages/linux.scm:483 msgid "Small utilities that use the proc file system" msgstr "Små redskaber som bruger filsystemet proc" -#: gnu/packages/linux.scm:443 +#: gnu/packages/linux.scm:485 msgid "" "This PSmisc package is a set of some small useful utilities that\n" "use the proc file system. We're not about changing the world, but\n" "providing the system administrator with some help in common tasks." msgstr "" -#: gnu/packages/linux.scm:520 +#: gnu/packages/linux.scm:562 msgid "Collection of utilities for the Linux kernel" msgstr "Samling af redskaber for Linuxkernen" -#: gnu/packages/linux.scm:521 +#: gnu/packages/linux.scm:563 msgid "" "Util-linux is a diverse collection of Linux kernel\n" "utilities. It provides dmesg and includes tools for working with file systems,\n" "block devices, UUIDs, TTYs, and many other tools." msgstr "" -#: gnu/packages/linux.scm:571 +#: gnu/packages/linux.scm:613 msgid "Utilities that give information about processes" msgstr "Redskaber som giver information om processer" -#: gnu/packages/linux.scm:573 +#: gnu/packages/linux.scm:615 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" @@ -5971,93 +6781,106 @@ msgid "" "slabtop, and skill." msgstr "" -#: gnu/packages/linux.scm:599 +#: gnu/packages/linux.scm:641 msgid "Tools for working with USB devices, such as lsusb" msgstr "Værktøjer for arbejde med USB-enheder, såsom lsusb" -#: gnu/packages/linux.scm:601 +#: gnu/packages/linux.scm:643 msgid "Tools for working with USB devices, such as lsusb." msgstr "Værktøjer for arbejde med USB-enheder, såsom lsusb." -#: gnu/packages/linux.scm:679 +#: gnu/packages/linux.scm:719 msgid "Creating and checking ext2/ext3/ext4 file systems" msgstr "Oprettelse og kontrol af ext2/ext3/ext4-filsystemer" -#: gnu/packages/linux.scm:681 +#: gnu/packages/linux.scm:721 msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems." msgstr "Denne pakke tilbyder værktøjer til manipulering af ext2/ext3/ext4-filsystemer." -#: gnu/packages/linux.scm:723 -msgid "Statically-linked fsck.* commands from e2fsprogs" +#: gnu/packages/linux.scm:762 +msgid "Statically-linked e2fsck command from e2fsprogs" msgstr "" -#: gnu/packages/linux.scm:725 +#: gnu/packages/linux.scm:763 msgid "" -"This package provides statically-linked command of fsck.ext[234] taken\n" +"This package provides statically-linked e2fsck command taken\n" "from the e2fsprogs package. It is meant to be used in initrds." msgstr "" -#: gnu/packages/linux.scm:745 +#: gnu/packages/linux.scm:782 msgid "Recover deleted files from ext2/3/4 partitions" msgstr "Gendan slettede filer fra ext2/3/4-partitioner" -#: gnu/packages/linux.scm:747 +#: gnu/packages/linux.scm:784 msgid "" "Extundelete is a set of tools that can recover deleted files from an\n" "ext3 or ext4 partition." msgstr "" -#: gnu/packages/linux.scm:779 +#: gnu/packages/linux.scm:816 msgid "Zero non-allocated regions in ext2/ext3/ext4 file systems" msgstr "" -#: gnu/packages/linux.scm:781 +#: gnu/packages/linux.scm:818 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:800 +#: gnu/packages/linux.scm:845 msgid "System call tracer for Linux" msgstr "" -#: gnu/packages/linux.scm:802 +#: gnu/packages/linux.scm:847 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:823 +#: gnu/packages/linux.scm:868 msgid "Library call tracer for Linux" msgstr "" -#: gnu/packages/linux.scm:825 +#: gnu/packages/linux.scm:870 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:845 +#: gnu/packages/linux.scm:889 msgid "The Advanced Linux Sound Architecture libraries" msgstr "" -#: gnu/packages/linux.scm:847 gnu/packages/linux.scm:890 +#: gnu/packages/linux.scm:891 gnu/packages/linux.scm:935 msgid "" "The Advanced Linux Sound Architecture (ALSA) provides audio and\n" "MIDI functionality to the Linux-based operating system." msgstr "" -#: gnu/packages/linux.scm:888 +#: gnu/packages/linux.scm:933 msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)" msgstr "" -#: gnu/packages/linux.scm:915 +#: gnu/packages/linux.scm:993 +msgid "Plugins for the Advanced Linux Sound Architecture (ALSA)" +msgstr "" + +#: gnu/packages/linux.scm:995 +msgid "" +"The Advanced Linux Sound Architecture (ALSA) provides audio and\n" +"MIDI functionality to the Linux-based operating system. This package enhances ALSA\n" +"by providing additional plugins which include: upmixing, downmixing, jackd and\n" +"pulseaudio support for native alsa applications, format conversion (s16 to a52), and\n" +"external rate conversion." +msgstr "" + +#: gnu/packages/linux.scm:1029 msgid "Program to configure the Linux IP packet filtering rules" msgstr "" -#: gnu/packages/linux.scm:917 +#: gnu/packages/linux.scm:1031 msgid "" "iptables is the userspace command line program used to configure the\n" "Linux 2.4.x and later IPv4 packet filtering ruleset (firewall). It is targeted at\n" @@ -6067,11 +6890,11 @@ msgid "" "packet filter." msgstr "" -#: gnu/packages/linux.scm:966 +#: gnu/packages/linux.scm:1081 msgid "Utilities for controlling TCP/IP networking and traffic in Linux" msgstr "Redskaber for kontrol af TCP/IP-netværk og trafik i Linux" -#: gnu/packages/linux.scm:968 +#: gnu/packages/linux.scm:1083 msgid "" "Iproute2 is a collection of utilities for controlling TCP/IP\n" "networking and traffic with the Linux kernel.\n" @@ -6086,17 +6909,17 @@ msgid "" "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." +"consists of several tools, of which the most important are @command{ip} and\n" +"@command{tc}. @command{ip} controls IPv4 and IPv6 configuration and\n" +"@command{tc} stands for traffic control. Both tools print detailed usage\n" +"messages and are accompanied by a set of manpages." msgstr "" -#: gnu/packages/linux.scm:1079 +#: gnu/packages/linux.scm:1194 msgid "Tools for controlling the network subsystem in Linux" msgstr "" -#: gnu/packages/linux.scm:1081 +#: gnu/packages/linux.scm:1196 msgid "" "This package includes the important tools for controlling the network\n" "subsystem of the Linux kernel. This includes arp, hostname, ifconfig,\n" @@ -6105,21 +6928,21 @@ msgid "" "advanced aspects of IP configuration (iptunnel, ipmaddr)." msgstr "" -#: gnu/packages/linux.scm:1118 +#: gnu/packages/linux.scm:1233 msgid "Library for working with POSIX capabilities" msgstr "Bibliotek til arbejde med POSIX-funktioner" -#: gnu/packages/linux.scm:1120 +#: gnu/packages/linux.scm:1235 msgid "" "Libcap2 provides a programming interface to POSIX capabilities on\n" "Linux-based operating systems." msgstr "" -#: gnu/packages/linux.scm:1163 +#: gnu/packages/linux.scm:1278 msgid "Manipulate Ethernet bridges" msgstr "" -#: gnu/packages/linux.scm:1165 +#: gnu/packages/linux.scm:1280 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" @@ -6128,11 +6951,11 @@ msgid "" "transparently through a bridge." msgstr "" -#: gnu/packages/linux.scm:1187 +#: gnu/packages/linux.scm:1302 msgid "NetLink protocol library suite" msgstr "" -#: gnu/packages/linux.scm:1189 +#: gnu/packages/linux.scm:1304 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" @@ -6141,21 +6964,21 @@ msgid "" "configuration and monitoring interfaces." msgstr "" -#: gnu/packages/linux.scm:1219 +#: gnu/packages/linux.scm:1334 msgid "Tool for configuring wireless devices" msgstr "Værktøj til konfiguration af trådløse enheder" -#: gnu/packages/linux.scm:1221 +#: gnu/packages/linux.scm:1336 msgid "" "iw is a new nl80211 based CLI configuration utility for wireless\n" "devices. It replaces @code{iwconfig}, which is deprecated." msgstr "" -#: gnu/packages/linux.scm:1267 +#: gnu/packages/linux.scm:1382 msgid "Analyze power consumption on Intel-based laptops" msgstr "Analyser strømforbrug på Intelbaserede bærbare" -#: gnu/packages/linux.scm:1269 +#: gnu/packages/linux.scm:1384 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" @@ -6164,31 +6987,31 @@ msgid "" "settings." msgstr "" -#: gnu/packages/linux.scm:1291 +#: gnu/packages/linux.scm:1406 msgid "Audio mixer for X and the console" msgstr "" -#: gnu/packages/linux.scm:1293 +#: gnu/packages/linux.scm:1408 msgid "" "Aumix adjusts an audio mixer from X, the console, a terminal,\n" "the command line or a script." msgstr "" -#: gnu/packages/linux.scm:1317 +#: gnu/packages/linux.scm:1432 msgid "Displays the IO activity of running processes" msgstr "Viser IO-aktivet for kørende processer" -#: gnu/packages/linux.scm:1319 +#: gnu/packages/linux.scm:1434 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:1371 +#: gnu/packages/linux.scm:1487 msgid "Support file systems implemented in user space" msgstr "" -#: gnu/packages/linux.scm:1373 +#: gnu/packages/linux.scm:1489 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" @@ -6198,11 +7021,11 @@ msgid "" "user-space processes." msgstr "" -#: gnu/packages/linux.scm:1398 +#: gnu/packages/linux.scm:1523 msgid "User-space union file system" msgstr "" -#: gnu/packages/linux.scm:1400 +#: gnu/packages/linux.scm:1525 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" @@ -6210,15 +7033,15 @@ msgid "" "UnionFS-FUSE additionally supports copy-on-write." msgstr "" -#: gnu/packages/linux.scm:1425 +#: gnu/packages/linux.scm:1550 msgid "User-space union file system (statically linked)" msgstr "" -#: gnu/packages/linux.scm:1468 +#: gnu/packages/linux.scm:1593 msgid "Mount remote file systems over SSH" msgstr "" -#: gnu/packages/linux.scm:1470 +#: gnu/packages/linux.scm:1595 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" @@ -6226,11 +7049,11 @@ msgid "" "file system is as easy as logging into the server with an SSH client." msgstr "" -#: gnu/packages/linux.scm:1499 +#: gnu/packages/linux.scm:1624 msgid "Tools for non-uniform memory access (NUMA) machines" msgstr "" -#: gnu/packages/linux.scm:1501 +#: gnu/packages/linux.scm:1626 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" @@ -6243,32 +7066,32 @@ msgid "" "system." msgstr "" -#: gnu/packages/linux.scm:1563 +#: gnu/packages/linux.scm:1688 msgid "Linux keyboard utilities and keyboard maps" msgstr "" -#: gnu/packages/linux.scm:1565 +#: gnu/packages/linux.scm:1690 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:1584 +#: gnu/packages/linux.scm:1709 msgid "Monitor file accesses" msgstr "" -#: gnu/packages/linux.scm:1586 +#: gnu/packages/linux.scm:1711 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:1624 +#: gnu/packages/linux.scm:1749 msgid "Kernel module tools" msgstr "" -#: gnu/packages/linux.scm:1625 +#: gnu/packages/linux.scm:1750 msgid "" "Kmod is a set of tools to handle common tasks with Linux\n" "kernel modules like insert, remove, list, check properties, resolve\n" @@ -6279,37 +7102,37 @@ msgid "" "from the module-init-tools project." msgstr "" -#: gnu/packages/linux.scm:1660 +#: gnu/packages/linux.scm:1786 msgid "Userspace device management" msgstr "" -#: gnu/packages/linux.scm:1661 +#: gnu/packages/linux.scm:1787 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:1733 +#: gnu/packages/linux.scm:1874 msgid "Logical volume management for Linux" msgstr "" -#: gnu/packages/linux.scm:1735 +#: gnu/packages/linux.scm:1876 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:1757 +#: gnu/packages/linux.scm:1898 msgid "Logical volume management for Linux (statically linked)" msgstr "" -#: gnu/packages/linux.scm:1787 +#: gnu/packages/linux.scm:1928 msgid "Tools for manipulating Linux Wireless Extensions" msgstr "" -#: gnu/packages/linux.scm:1788 +#: gnu/packages/linux.scm:1929 msgid "" "Wireless Tools are used to manipulate the now-deprecated\n" "Linux Wireless Extensions; consider using 'iw' instead. The Wireless\n" @@ -6318,44 +7141,44 @@ msgid "" "interface." msgstr "" -#: gnu/packages/linux.scm:1860 +#: gnu/packages/linux.scm:2001 msgid "Central regulatory domain agent (CRDA) for WiFi" msgstr "" -#: gnu/packages/linux.scm:1862 +#: gnu/packages/linux.scm:2003 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:1908 +#: gnu/packages/linux.scm:2049 msgid "Wireless regulatory database" msgstr "" -#: gnu/packages/linux.scm:1910 +#: gnu/packages/linux.scm:2051 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:1982 +#: gnu/packages/linux.scm:2124 msgid "Utilities to read temperature/voltage/fan sensors" msgstr "" -#: gnu/packages/linux.scm:1984 +#: gnu/packages/linux.scm:2126 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:2011 +#: gnu/packages/linux.scm:2153 msgid "I2C tools for Linux" msgstr "I2C-værktøjer for Linux" -#: gnu/packages/linux.scm:2013 +#: gnu/packages/linux.scm:2155 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" @@ -6363,22 +7186,22 @@ msgid "" "SMBus access." msgstr "" -#: gnu/packages/linux.scm:2049 +#: gnu/packages/linux.scm:2191 msgid "Hardware health information viewer" msgstr "" -#: gnu/packages/linux.scm:2051 +#: gnu/packages/linux.scm:2193 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:2099 +#: gnu/packages/linux.scm:2240 msgid "Linux profiling with performance counters" msgstr "" -#: gnu/packages/linux.scm:2101 +#: gnu/packages/linux.scm:2242 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" @@ -6387,11 +7210,11 @@ msgid "" "particular the 'perf' command." msgstr "" -#: gnu/packages/linux.scm:2124 +#: gnu/packages/linux.scm:2265 msgid "Simple tool for creating Linux namespace containers" msgstr "Simpelt værktøj til oprettelse af naverumscontainere under Linux" -#: gnu/packages/linux.scm:2125 +#: gnu/packages/linux.scm:2266 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" @@ -6400,32 +7223,40 @@ msgid "" "thanks to the use of namespaces." msgstr "" -#: gnu/packages/linux.scm:2152 -msgid "Tune hard disk parameters for high performance" -msgstr "Finjuster harddiskparametre for høj ydelse" +#: gnu/packages/linux.scm:2295 +msgid "View and tune ATA disk drive parameters" +msgstr "" -#: gnu/packages/linux.scm:2154 +#: gnu/packages/linux.scm:2297 msgid "" -"Get/set device parameters for Linux SATA/IDE drives. It's primary use\n" -"is for enabling irq-unmasking and IDE multiple-mode." +"@command{hdparm} is a command-line utility to control ATA controllers and\n" +"disk drives. It can increase performance and/or reliability by careful tuning\n" +"of hardware settings like power and acoustic management, DMA modes, and caching.\n" +"It can also display detailed device information, or be used as a simple\n" +"performance benchmarking tool.\n" +"\n" +"@command{hdparm} provides a command line interface to various Linux kernel\n" +"interfaces provided by the SATA/ATA/SAS @code{libata} subsystem, and the older\n" +"IDE driver subsystem. Many external USB drive enclosures with @dfn{SCSI-ATA\n" +"Command Translation} (SAT) are also supported." msgstr "" -#: gnu/packages/linux.scm:2177 +#: gnu/packages/linux.scm:2328 msgid "Tool for enabling and disabling wireless devices" msgstr "Værktøj til aktivering og deaktivering af trådløse enheder" -#: gnu/packages/linux.scm:2179 +#: gnu/packages/linux.scm:2330 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:2198 +#: gnu/packages/linux.scm:2349 msgid "Display information on ACPI devices" msgstr "" -#: gnu/packages/linux.scm:2199 +#: gnu/packages/linux.scm:2350 msgid "" "@code{acpi} attempts to replicate the functionality of the\n" "\"old\" @code{apm} command on ACPI systems, including battery and thermal\n" @@ -6433,11 +7264,11 @@ msgid "" "about ACPI devices." msgstr "" -#: gnu/packages/linux.scm:2218 +#: gnu/packages/linux.scm:2369 msgid "Daemon for delivering ACPI events to user-space programs" msgstr "" -#: gnu/packages/linux.scm:2220 +#: gnu/packages/linux.scm:2371 msgid "" "acpid is designed to notify user-space programs of Advanced\n" "Configuration and Power Interface (ACPI) events. acpid should be started\n" @@ -6446,37 +7277,37 @@ msgid "" "specified in /etc/acpi/events and execute the rules that match the event." msgstr "" -#: gnu/packages/linux.scm:2242 +#: gnu/packages/linux.scm:2393 msgid "System utilities based on Linux sysfs" msgstr "" -#: gnu/packages/linux.scm:2244 +#: gnu/packages/linux.scm:2395 msgid "" "These are a set of utilities built upon sysfs, a virtual file system 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:2273 +#: gnu/packages/linux.scm:2424 msgid "System utilities based on Linux sysfs (version 1.x)" msgstr "" -#: gnu/packages/linux.scm:2296 +#: gnu/packages/linux.scm:2447 msgid "Utilities to get and set CPU frequency on Linux" msgstr "" -#: gnu/packages/linux.scm:2298 +#: gnu/packages/linux.scm:2449 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:2317 +#: gnu/packages/linux.scm:2468 msgid "Interface library for the Linux IEEE1394 drivers" msgstr "" -#: gnu/packages/linux.scm:2319 +#: gnu/packages/linux.scm:2470 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" @@ -6485,109 +7316,136 @@ msgid "" "protocol in question." msgstr "" -#: gnu/packages/linux.scm:2343 +#: gnu/packages/linux.scm:2494 msgid "AV/C protocol library for IEEE 1394" msgstr "" -#: gnu/packages/linux.scm:2345 +#: gnu/packages/linux.scm:2496 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:2367 +#: gnu/packages/linux.scm:2518 msgid "Isochronous streaming media library for IEEE 1394" msgstr "" -#: gnu/packages/linux.scm:2369 +#: gnu/packages/linux.scm:2520 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:2416 +#: gnu/packages/linux.scm:2568 msgid "Tool for managing Linux Software RAID arrays" msgstr "" -#: gnu/packages/linux.scm:2418 +#: gnu/packages/linux.scm:2570 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:2450 +#: gnu/packages/linux.scm:2602 msgid "Statically-linked 'mdadm' command for use in an initrd" msgstr "" -#: gnu/packages/linux.scm:2474 +#: gnu/packages/linux.scm:2667 +msgid "Access block devices through multiple paths" +msgstr "" + +#: gnu/packages/linux.scm:2669 +msgid "" +"This package provides the following binaries to drive the\n" +"Linux Device Mapper multipathing driver:\n" +"@enumerate\n" +"@item @command{multipath} - Device mapper target autoconfig.\n" +"@item @command{multipathd} - Multipath daemon.\n" +"@item @command{mpathpersist} - Manages SCSI persistent reservations on\n" +"@code{dm} multipath devices.\n" +"@item @command{kpartx} - Create device maps from partition tables.\n" +"@end enumerate" +msgstr "" + +#: gnu/packages/linux.scm:2703 msgid "Linux-native asynchronous I/O access library" msgstr "" -#: gnu/packages/linux.scm:2476 +#: gnu/packages/linux.scm:2705 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:2498 +#: gnu/packages/linux.scm:2727 msgid "Bluetooth subband audio codec" msgstr "Bluetooth subband-lydkodning" -#: gnu/packages/linux.scm:2500 +#: gnu/packages/linux.scm:2729 msgid "" "The SBC is a digital audio encoder and decoder used to transfer data to\n" "Bluetooth audio output devices like headphones or loudspeakers." msgstr "" -#: gnu/packages/linux.scm:2558 +#: gnu/packages/linux.scm:2787 msgid "Linux Bluetooth protocol stack" msgstr "" -#: gnu/packages/linux.scm:2560 +#: gnu/packages/linux.scm:2789 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:2582 +#: gnu/packages/linux.scm:2811 msgid "Mount exFAT file systems" msgstr "" -#: gnu/packages/linux.scm:2584 +#: gnu/packages/linux.scm:2813 msgid "" "This package provides a FUSE-based file system that provides read and\n" "write access to exFAT devices." msgstr "" -#: gnu/packages/linux.scm:2624 +#: gnu/packages/linux.scm:2853 msgid "Mouse support for the Linux console" msgstr "Museunderstøttelse for Linuxkonsollen" -#: gnu/packages/linux.scm:2626 +#: gnu/packages/linux.scm:2855 msgid "" "The GPM (general-purpose mouse) daemon is a mouse server for\n" "applications running on the Linux console. It allows users to select items\n" "and copy/paste text in the console and in xterm." msgstr "" -#: gnu/packages/linux.scm:2676 +#: gnu/packages/linux.scm:2904 msgid "Create and manage btrfs copy-on-write file systems" msgstr "" -#: gnu/packages/linux.scm:2677 +#: gnu/packages/linux.scm:2905 +msgid "" +"Btrfs is a @dfn{copy-on-write} (CoW) file system for Linux\n" +"aimed at implementing advanced features while focusing on fault tolerance,\n" +"repair and easy administration." +msgstr "" + +#: gnu/packages/linux.scm:2937 +msgid "Statically-linked btrfs command from btrfs-progs" +msgstr "" + +#: gnu/packages/linux.scm:2938 msgid "" -"Btrfs is a copy-on-write (CoW) file system for Linux aimed at\n" -"implementing advanced features while focusing on fault tolerance, repair and\n" -"easy administration." +"This package provides the statically-linked @command{btrfs}\n" +"from the btrfs-progs package. It is meant to be used in initrds." msgstr "" -#: gnu/packages/linux.scm:2706 +#: gnu/packages/linux.scm:2964 msgid "Free-fall protection for spinning laptop hard drives" msgstr "" -#: gnu/packages/linux.scm:2708 +#: gnu/packages/linux.scm:2966 msgid "" "Prevents shock damage to the internal spinning hard drive(s) of some\n" "HP and Dell laptops. When sudden movement is detected, all input/output\n" @@ -6597,11 +7455,11 @@ msgid "" "feature, and a laptop with an accelerometer. It has no effect on SSDs." msgstr "" -#: gnu/packages/linux.scm:2762 +#: gnu/packages/linux.scm:3020 msgid "Simple fan control program" msgstr "Simpelt kontrolprogram til blæseren" -#: gnu/packages/linux.scm:2764 +#: gnu/packages/linux.scm:3022 msgid "" "Thinkfan is a simple fan control program. It reads temperatures,\n" "checks them against configured limits and switches to appropriate (also\n" @@ -6610,43 +7468,67 @@ msgid "" "from userspace." msgstr "" -#: gnu/packages/linux.scm:2799 +#: gnu/packages/linux.scm:3058 msgid "Read-write access to NTFS file systems" msgstr "Læs/skriv adgang til NTFS-filsystemer" -#: gnu/packages/linux.scm:2801 +#: gnu/packages/linux.scm:3060 msgid "" "NTFS-3G provides read-write access to NTFS file systems, which are\n" "commonly found on Microsoft Windows. It is implemented as a FUSE file system.\n" "The package provides additional NTFS tools." msgstr "" -#: gnu/packages/linux.scm:2819 +#: gnu/packages/linux.scm:3105 +msgid "Utilities and libraries for working with RDMA devices" +msgstr "Redskaber og bibliotek for arbejde med RDMA-enheder" + +#: gnu/packages/linux.scm:3107 +msgid "" +"This package provides userspace components for the InfiniBand\n" +"subsystem of the Linux kernel. Specifically it contains userspace\n" +"libraries for the following device nodes:\n" +"\n" +"@enumerate\n" +"@item @file{/dev/infiniband/uverbsX} (@code{libibverbs})\n" +"@item @file{/dev/infiniband/rdma_cm} (@code{librdmacm})\n" +"@item @file{/dev/infiniband/umadX} (@code{libibumad})\n" +"@end enumerate\n" +"\n" +"The following service daemons are also provided:\n" +"@enumerate\n" +"@item @code{srp_daemon} (for the @code{ib_srp} kernel module)\n" +"@item @code{iwpmd} (for iWARP kernel providers)\n" +"@item @code{ibacm} (for InfiniBand communication management assistant)\n" +"@end enumerate" +msgstr "" + +#: gnu/packages/linux.scm:3146 msgid "Random number generator daemon" msgstr "" -#: gnu/packages/linux.scm:2821 +#: gnu/packages/linux.scm:3148 msgid "" "Monitor a hardware random number generator, and supply entropy\n" "from that to the system kernel's @file{/dev/random} machinery." msgstr "" -#: gnu/packages/linux.scm:2859 +#: gnu/packages/linux.scm:3186 msgid "CPU frequency and voltage scaling tools for Linux" msgstr "" -#: gnu/packages/linux.scm:2861 +#: gnu/packages/linux.scm:3188 msgid "" "cpupower is a set of user-space tools that use the cpufreq feature of the\n" "Linux kernel to retrieve and control processor features related to power saving,\n" "such as frequency and voltage scaling." msgstr "" -#: gnu/packages/linux.scm:2880 +#: gnu/packages/linux.scm:3207 msgid "Entropy source for the Linux random number generator" msgstr "" -#: gnu/packages/linux.scm:2882 +#: gnu/packages/linux.scm:3209 msgid "" "haveged generates an unpredictable stream of random numbers for use by\n" "Linux's @file{/dev/random} and @file{/dev/urandom} devices. The kernel's\n" @@ -6659,11 +7541,11 @@ msgid "" "as used on certified hardware security devices." msgstr "" -#: gnu/packages/linux.scm:2921 +#: gnu/packages/linux.scm:3248 msgid "eCryptfs cryptographic file system utilities" msgstr "" -#: gnu/packages/linux.scm:2923 +#: gnu/packages/linux.scm:3250 msgid "" "eCryptfs is a POSIX-compliant stacked cryptographic file system for Linux.\n" "Each file's cryptographic meta-data is stored inside the file itself, along\n" @@ -6673,11 +7555,11 @@ msgid "" "2.6.19. This package contains the userland utilities to manage it." msgstr "" -#: gnu/packages/linux.scm:2954 +#: gnu/packages/linux.scm:3281 msgid "NFSv4 support library for name/ID mapping" msgstr "" -#: gnu/packages/linux.scm:2955 +#: gnu/packages/linux.scm:3282 msgid "" "Libnfsidmap is a library holding mulitiple methods of\n" "mapping names to ids and visa versa, mainly for NFSv4. It provides an\n" @@ -6685,21 +7567,21 @@ msgid "" "the default @code{nsswitch} and the experimental @code{umich_ldap}." msgstr "" -#: gnu/packages/linux.scm:2988 +#: gnu/packages/linux.scm:3315 msgid "Tools for loading and managing Linux kernel modules" msgstr "Værktøjer til at indlæse og håndtere Linuxkernemoduler" -#: gnu/packages/linux.scm:2990 +#: gnu/packages/linux.scm:3317 msgid "" "Tools for loading and managing Linux kernel modules, such as `modprobe',\n" "`insmod', `lsmod', and more." msgstr "" -#: gnu/packages/linux.scm:3024 +#: gnu/packages/linux.scm:3351 msgid "Machine check monitor for x86 Linux systems" msgstr "" -#: gnu/packages/linux.scm:3026 +#: gnu/packages/linux.scm:3353 msgid "" "The mcelog daemon is required by the Linux kernel to log memory, I/O, CPU,\n" "and other hardware errors on x86 systems. It can also perform user-defined\n" @@ -6707,11 +7589,11 @@ msgid "" "are exceeded." msgstr "" -#: gnu/packages/linux.scm:3055 +#: gnu/packages/linux.scm:3382 msgid "MTD Flash Storage Utilities" msgstr "Lagerredskaber for MTD-flash" -#: gnu/packages/linux.scm:3056 +#: gnu/packages/linux.scm:3383 msgid "" "This package provides utilities for testing, partitioning, etc\n" "of flash storage." @@ -6719,11 +7601,11 @@ msgstr "" "Denne pakke tilbyder redskaber til test, partitionering, etc.\n" "for flashlager." -#: gnu/packages/linux.scm:3079 +#: gnu/packages/linux.scm:3406 msgid "Interface to Linux's seccomp syscall filtering mechanism" msgstr "" -#: gnu/packages/linux.scm:3080 +#: gnu/packages/linux.scm:3407 msgid "" "The libseccomp library provides an easy to use, platform\n" "independent, interface to the Linux Kernel's syscall filtering mechanism. The\n" @@ -6733,11 +7615,11 @@ msgid "" "developers." msgstr "" -#: gnu/packages/linux.scm:3121 +#: gnu/packages/linux.scm:3449 msgid "Usage monitor for AMD Radeon graphics" msgstr "" -#: gnu/packages/linux.scm:3122 +#: gnu/packages/linux.scm:3450 msgid "" "RadeonTop monitors resource consumption on supported AMD\n" "Radeon Graphics Processing Units (GPUs), either in real time as bar graphs on\n" @@ -6747,11 +7629,11 @@ msgid "" "under OpenGL graphics workloads." msgstr "" -#: gnu/packages/linux.scm:3157 +#: gnu/packages/linux.scm:3485 msgid "Tool and library to manipulate EFI variables" msgstr "Værktøj og bibliotek til at manipulere EFI-variabler" -#: gnu/packages/linux.scm:3158 +#: gnu/packages/linux.scm:3486 msgid "" "This package provides a library and a command line\n" "interface to the variable facility of UEFI boot firmware." @@ -6759,11 +7641,11 @@ msgstr "" "Denne pakke tilbyder et bibliotek og en kommandolinje-\n" "grænseflade til variabelfaciliteten for UEFI-opstartsfirmware." -#: gnu/packages/linux.scm:3199 +#: gnu/packages/linux.scm:3527 msgid "Modify the Extensible Firmware Interface (EFI) boot manager" msgstr "" -#: gnu/packages/linux.scm:3201 +#: gnu/packages/linux.scm:3529 msgid "" "@code{efibootmgr} is a user-space application to modify the Intel\n" "Extensible Firmware Interface (EFI) Boot Manager. This application can\n" @@ -6771,6 +7653,89 @@ msgid "" "running boot option, and more." msgstr "" +#: gnu/packages/linux.scm:3565 +msgid "Performance monitoring tools for Linux" +msgstr "" + +#: gnu/packages/linux.scm:3566 +msgid "" +"The sysstat utilities are a collection of performance\n" +"monitoring tools for Linux. These include @code{mpstat}, @code{iostat},\n" +"@code{tapestat}, @code{cifsiostat}, @code{pidstat}, @code{sar}, @code{sadc},\n" +"@code{sadf} and @code{sa}." +msgstr "" + +#: gnu/packages/linux.scm:3598 +msgid "GNU/Linux application to control backlights" +msgstr "" + +#: gnu/packages/linux.scm:3600 +msgid "" +"Light is a program to send commands to screen backlight controllers\n" +"under GNU/Linux. Features include:\n" +"\n" +"@itemize\n" +"@item It does not rely on X.\n" +"@item Light can automatically figure out the best controller to use, making\n" +"full use of underlying hardware.\n" +"@item It is possible to set a minimum brightness value, as some controllers\n" +"set the screen to be pitch black at a vaĺue of 0 (or higher).\n" +"@end itemize\n" +"\n" +"Light is the successor of lightscript." +msgstr "" + +#: gnu/packages/linux.scm:3702 +msgid "Power management tool for Linux" +msgstr "Strømhåndteringsværktøj for Linux" + +#: gnu/packages/linux.scm:3703 +msgid "" +"TLP is a power management tool for Linux. It comes with\n" +"a default configuration already optimized for battery life. Nevertheless,\n" +"TLP is customizable to fulfil system requirements. TLP settings are applied\n" +"every time the power supply source is changed." +msgstr "" + +#: gnu/packages/linux.scm:3730 +msgid "List hardware information" +msgstr "Vis udstyrsinformation" + +#: gnu/packages/linux.scm:3732 +msgid "" +"@command{lshw} (Hardware Lister) is a small tool to provide\n" +"detailed information on the hardware configuration of the machine.\n" +"It can report exact memory configuration, firmware version, mainboard\n" +"configuration, CPU version and speed, cache configuration, bus speed,\n" +"and more on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC\n" +"machines (PowerMac G4 is known to work)." +msgstr "" + +#: gnu/packages/linux.scm:3755 +msgid "Netlink utility library" +msgstr "" + +#: gnu/packages/linux.scm:3756 +msgid "" +"Libmnl is a minimalistic user-space library oriented to\n" +"Netlink developers. There are a lot of common tasks in parsing, validating,\n" +"constructing of both the Netlink header and TLVs that are repetitive and easy to\n" +"get wrong. This library aims to provide simple helpers that allows you to\n" +"re-use code and to avoid re-inventing the wheel." +msgstr "" + +#: gnu/packages/linux.scm:3781 +msgid "Netlink programming interface to the Linux nf_tables subsystem" +msgstr "" + +#: gnu/packages/linux.scm:3782 +msgid "" +"Libnftnl is a userspace library providing a low-level netlink\n" +"programming interface to the in-kernel nf_tables subsystem. The library\n" +"libnftnl has been previously known as libnftables. This library is currently\n" +"used by nftables." +msgstr "" + #: gnu/packages/lout.scm:109 msgid "Document layout system" msgstr "" @@ -6794,11 +7759,11 @@ msgid "" "beginning." msgstr "" -#: gnu/packages/messaging.scm:97 +#: gnu/packages/messaging.scm:109 msgid "Off-the-Record (OTR) Messaging Library and Toolkit" msgstr "" -#: gnu/packages/messaging.scm:99 +#: gnu/packages/messaging.scm:111 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" @@ -6811,11 +7776,11 @@ msgid "" "keys, no previous conversation is compromised." msgstr "" -#: gnu/packages/messaging.scm:165 +#: gnu/packages/messaging.scm:156 msgid "IRC to instant messaging gateway" msgstr "" -#: gnu/packages/messaging.scm:166 +#: gnu/packages/messaging.scm:157 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" @@ -6825,11 +7790,11 @@ msgid "" "identi.ca and status.net)." msgstr "" -#: gnu/packages/messaging.scm:202 +#: gnu/packages/messaging.scm:218 msgid "Graphical IRC Client" msgstr "" -#: gnu/packages/messaging.scm:204 +#: gnu/packages/messaging.scm:220 msgid "" "HexChat lets you connect to multiple IRC networks at once. The main\n" "window shows the list of currently connected networks and their channels, the\n" @@ -6838,32 +7803,33 @@ msgid "" "dictionaries. HexChat can be extended with multiple addons." msgstr "" -#: gnu/packages/messaging.scm:271 +#: gnu/packages/messaging.scm:285 msgid "Lightweight Internet Relay Chat server for small networks" msgstr "" -#: gnu/packages/messaging.scm:273 +#: gnu/packages/messaging.scm:287 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." +"ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small\n" +"or private networks. It is easy to configure, can cope with dynamic IP\n" +"addresses, and supports IPv6, SSL-protected connections, as well as PAM for\n" +"authentication." msgstr "" -#: gnu/packages/messaging.scm:344 +#: gnu/packages/messaging.scm:359 msgid "Graphical multi-protocol instant messaging client" msgstr "" -#: gnu/packages/messaging.scm:346 +#: gnu/packages/messaging.scm:361 msgid "" "Pidgin is a modular instant messaging client that supports many popular\n" "chat protocols." msgstr "" -#: gnu/packages/messaging.scm:384 +#: gnu/packages/messaging.scm:399 msgid "Off-the-Record Messaging plugin for Pidgin" msgstr "" -#: gnu/packages/messaging.scm:386 +#: gnu/packages/messaging.scm:401 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" @@ -6878,11 +7844,11 @@ msgid "" "compromised." msgstr "" -#: gnu/packages/messaging.scm:426 +#: gnu/packages/messaging.scm:452 msgid "IRC network bouncer" msgstr "" -#: gnu/packages/messaging.scm:427 +#: gnu/packages/messaging.scm:453 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" @@ -6890,22 +7856,22 @@ msgid "" "simultaneously and therefore appear under the same nickname on IRC." msgstr "" -#: gnu/packages/messaging.scm:449 +#: gnu/packages/messaging.scm:474 msgid "Non-blocking Jabber/XMPP module" msgstr "" -#: gnu/packages/messaging.scm:451 +#: gnu/packages/messaging.scm:476 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." +"was initially a fork of xmpppy, but uses non-blocking sockets." msgstr "" -#: gnu/packages/messaging.scm:501 +#: gnu/packages/messaging.scm:525 msgid "Jabber (XMPP) client" msgstr "" -#: gnu/packages/messaging.scm:502 +#: gnu/packages/messaging.scm:526 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" @@ -6914,11 +7880,11 @@ msgid "" "end-to-end encryption support; XML console." msgstr "" -#: gnu/packages/messaging.scm:576 +#: gnu/packages/messaging.scm:615 msgid "Jabber (XMPP) server" msgstr "" -#: gnu/packages/messaging.scm:577 +#: gnu/packages/messaging.scm:616 msgid "" "Prosody is a modern XMPP communication server. It aims to\n" "be easy to set up and configure, and efficient with system resources.\n" @@ -6927,50 +7893,58 @@ msgid "" "protocols." msgstr "" -#: gnu/packages/messaging.scm:619 +#: gnu/packages/messaging.scm:658 gnu/packages/messaging.scm:699 msgid "Library for the Tox encrypted messenger protocol" msgstr "" -#: gnu/packages/messaging.scm:621 +#: gnu/packages/messaging.scm:660 msgid "C library implementation of the Tox encrypted messenger protocol." msgstr "C-biblioteksimplementering for den Tox-krypterede messengerprotokol." -#: gnu/packages/messaging.scm:662 +#: gnu/packages/messaging.scm:701 +msgid "" +"Official fork of the C library implementation of the Tox\n" +"encrypted messenger protocol." +msgstr "" +"Officel forgrening af C-biblioteksimplementering for den\n" +"Tox-krypterede messengerprotokol." + +#: gnu/packages/messaging.scm:749 msgid "Lightweight Tox client" msgstr "Simpel Tox-klient" -#: gnu/packages/messaging.scm:663 +#: gnu/packages/messaging.scm:751 msgid "" -"A lightweight Tox client. Tox is a distributed and secure\n" +"Utox is a lightweight Tox client. Tox is a distributed and secure\n" "instant messenger with audio and video chat capabilities." msgstr "" -#: gnu/packages/messaging.scm:714 +#: gnu/packages/messaging.scm:802 msgid "Tox chat client using Qt" -msgstr "" +msgstr "Tox-snakkeklient der bruger Qt" -#: gnu/packages/messaging.scm:715 +#: gnu/packages/messaging.scm:803 msgid "" "qTox is a Tox client that follows the Tox design\n" "guidelines. It provides an easy to use application that allows you to\n" "connect with friends and family without anyone else listening in." msgstr "" -#: gnu/packages/messaging.scm:812 +#: gnu/packages/messaging.scm:900 msgid "" "Distributed and trustless peer-to-peer communications protocol\n" "for sending encrypted messages to one person or many subscribers." msgstr "" -#: gnu/packages/messaging.scm:814 +#: gnu/packages/messaging.scm:902 msgid "Distributed peer-to-peer communication" msgstr "" -#: gnu/packages/messaging.scm:833 +#: gnu/packages/messaging.scm:921 msgid "Multi-user chat program" msgstr "" -#: gnu/packages/messaging.scm:834 +#: gnu/packages/messaging.scm:922 msgid "" "Ytalk is a replacement for the BSD talk program. Its main\n" "advantage is the ability to communicate with any arbitrary number of users at\n" @@ -6978,11 +7952,11 @@ msgid "" "with several different talk daemons at the same time." msgstr "" -#: gnu/packages/messaging.scm:859 +#: gnu/packages/messaging.scm:947 msgid "Portable high-level Jabber/XMPP library for C++" msgstr "" -#: gnu/packages/messaging.scm:861 +#: gnu/packages/messaging.scm:949 msgid "" "gloox is a full-featured Jabber/XMPP client library,\n" "written in ANSI C++. It makes writing spec-compliant clients easy\n" @@ -6990,7 +7964,7 @@ msgid "" "into existing applications." msgstr "" -#: gnu/packages/messaging.scm:934 +#: gnu/packages/messaging.scm:1022 msgid "" "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and\n" "Gtk2 event loops. This package includes 12 applications and additional scripts:\n" @@ -6998,26 +7972,26 @@ msgid "" "for @uref{https://torproject.org,tor} router) and many more." msgstr "" -#: gnu/packages/messaging.scm:938 +#: gnu/packages/messaging.scm:1026 msgid "Perl implementation of PSYC protocol" msgstr "Perlimplementering af PSYC-protokollen" -#: gnu/packages/messaging.scm:977 +#: gnu/packages/messaging.scm:1065 msgid "" "@code{libpsyc} is a PSYC library in C which implements\n" "core aspects of PSYC, useful for all kinds of clients and servers\n" "including psyced." msgstr "" -#: gnu/packages/messaging.scm:980 +#: gnu/packages/messaging.scm:1068 msgid "PSYC library in C" msgstr "" -#: gnu/packages/messaging.scm:1047 +#: gnu/packages/messaging.scm:1135 msgid "psycLPC is a multi-user network server programming language" msgstr "" -#: gnu/packages/messaging.scm:1049 +#: gnu/packages/messaging.scm:1137 msgid "" "LPC is a bytecode language, invented to specifically implement\n" "multi user virtual environments on the internet. This technology is used for\n" @@ -7026,21 +8000,97 @@ msgid "" "many bug fixes." msgstr "" -#: gnu/packages/mpd.scm:68 -msgid "Music Player Daemon client library" +#: gnu/packages/messaging.scm:1168 +msgid "" +"Loudmouth is a lightweight and easy-to-use C library for programming\n" +"with the XMPP (formerly known as Jabber) protocol. It is designed to be\n" +"easy to get started with and yet extensible to let you do anything the XMPP\n" +"protocol allows." +msgstr "" + +#: gnu/packages/messaging.scm:1172 +msgid "Asynchronous XMPP library" +msgstr "" + +#: gnu/packages/messaging.scm:1204 +msgid "" +"Mcabber is a small XMPP (Jabber) console client, which includes features\n" +"such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,\n" +"command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)\n" +"support, and more." +msgstr "" + +#: gnu/packages/messaging.scm:1208 +msgid "Small XMPP console client" +msgstr "Lille XMPP-konsolklient" + +#: gnu/packages/messaging.scm:1254 +msgid "Extensible console-based Jabber client" +msgstr "" + +#: gnu/packages/messaging.scm:1256 +msgid "" +"GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses\n" +"the Readline library to handle input, so it features convenient navigation of\n" +"text as well as tab-completion of buddy names, commands and English words. It\n" +"is also scriptable and extensible via Guile." +msgstr "" + +#: gnu/packages/messaging.scm:1290 gnu/packages/messaging.scm:1325 +msgid "C library for writing XMPP clients" +msgstr "C-bibliotek til at skrive XMPP-klienter" + +#: gnu/packages/messaging.scm:1291 +msgid "" +"Libmesode is a fork of libstrophe for use with Profanity\n" +"XMPP Client. In particular, libmesode provides extra TLS functionality such as\n" +"manual SSL certificate verification." +msgstr "" + +#: gnu/packages/messaging.scm:1326 +msgid "" +"Libstrophe is a minimal XMPP library written in C. It has\n" +"almost no external dependencies, only an XML parsing library (expat or libxml\n" +"are both supported)." +msgstr "" + +#: gnu/packages/messaging.scm:1362 +msgid "Console-based XMPP client" +msgstr "" + +#: gnu/packages/messaging.scm:1363 +msgid "" +"Profanity is a console based XMPP client written in C\n" +"using ncurses and libmesode, inspired by Irssi." +msgstr "" + +#: gnu/packages/messaging.scm:1393 +msgid "Library implementing the client IRC protocol" +msgstr "Bibliotek der implementerer IRC-protokollen for klienten" + +#: gnu/packages/messaging.scm:1394 +msgid "" +"Libircclient is a library which implements the client IRC\n" +"protocol. It is designed to be small, fast, portable and compatible with the\n" +"RFC standards as well as non-standard but popular features. It can be used for\n" +"building the IRC clients and bots." msgstr "" #: gnu/packages/mpd.scm:69 +msgid "Music Player Daemon client library" +msgstr "Klientbibliotek for Music Player Daemon" + +#: gnu/packages/mpd.scm:70 msgid "" "A stable, documented, asynchronous API library for\n" "interfacing MPD in the C, C++ & Objective C languages." msgstr "" -#: gnu/packages/mpd.scm:129 +#: gnu/packages/mpd.scm:142 msgid "Music Player Daemon" -msgstr "" +msgstr "Music Player Daemon" -#: gnu/packages/mpd.scm:130 +#: gnu/packages/mpd.scm:143 msgid "" "Music Player Daemon (MPD) is a flexible, powerful,\n" "server-side application for playing music. Through plugins and libraries it\n" @@ -7048,11 +8098,11 @@ msgid "" "protocol." msgstr "" -#: gnu/packages/mpd.scm:153 +#: gnu/packages/mpd.scm:166 msgid "Music Player Daemon client" msgstr "Music Player - dæmonklient" -#: gnu/packages/mpd.scm:154 +#: gnu/packages/mpd.scm:167 msgid "" "MPC is a minimalist command line interface to MPD, the music\n" "player daemon." @@ -7060,21 +8110,21 @@ msgstr "" "MPC er en minimalistisk kommandolinjegrænseflade til MPD,\n" "musikafspillerdæmonen." -#: gnu/packages/mpd.scm:177 +#: gnu/packages/mpd.scm:190 msgid "Curses Music Player Daemon client" msgstr "" -#: gnu/packages/mpd.scm:178 +#: gnu/packages/mpd.scm:191 msgid "" "ncmpc is a fully featured MPD client, which runs in a\n" "terminal using ncurses." msgstr "" -#: gnu/packages/mpd.scm:207 +#: gnu/packages/mpd.scm:220 msgid "Featureful ncurses based MPD client inspired by ncmpc" msgstr "" -#: gnu/packages/mpd.scm:208 +#: gnu/packages/mpd.scm:221 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" @@ -7082,31 +8132,31 @@ msgid "" "sort playlists, and a local file system browser." msgstr "" -#: gnu/packages/mpd.scm:231 +#: gnu/packages/mpd.scm:244 msgid "MPD client for track scrobbling" msgstr "" -#: gnu/packages/mpd.scm:232 +#: gnu/packages/mpd.scm:245 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/mpd.scm:257 +#: gnu/packages/mpd.scm:270 msgid "Python MPD client library" msgstr "" -#: gnu/packages/mpd.scm:258 +#: gnu/packages/mpd.scm:271 msgid "" "Python-mpd2 is a Python library which provides a client\n" "interface for the Music Player Daemon." msgstr "" -#: gnu/packages/mpd.scm:307 +#: gnu/packages/mpd.scm:320 msgid "Elegant client for the Music Player Daemon" msgstr "" -#: gnu/packages/mpd.scm:308 +#: gnu/packages/mpd.scm:321 msgid "" "Sonata is an elegant graphical client for the Music Player\n" "Daemon (MPD). It supports playlists, multiple profiles (connecting to different\n" @@ -7137,11 +8187,11 @@ msgid "" "themselves." msgstr "" -#: gnu/packages/networking.scm:77 +#: gnu/packages/networking.scm:81 msgid "Viewing and manipulating MAC addresses of network interfaces" msgstr "" -#: gnu/packages/networking.scm:78 +#: gnu/packages/networking.scm:82 msgid "" "GNU MAC Changer is a utility for viewing and changing MAC\n" "addresses of networking devices. New addresses may be set explicitly or\n" @@ -7149,22 +8199,22 @@ msgid "" "or, more generally, MAC addresses of the same category of hardware." msgstr "" -#: gnu/packages/networking.scm:106 +#: gnu/packages/networking.scm:110 msgid "Teredo IPv6 tunneling software" msgstr "" -#: gnu/packages/networking.scm:108 +#: gnu/packages/networking.scm:112 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:130 +#: gnu/packages/networking.scm:134 msgid "Open bidirectional communication channels from the command line" msgstr "" -#: gnu/packages/networking.scm:132 +#: gnu/packages/networking.scm:136 msgid "" "socat is a relay for bidirectional data transfer between two independent\n" "data channels---files, pipes, devices, sockets, etc. It can create\n" @@ -7177,22 +8227,22 @@ msgid "" "or server shell scripts with network connections." msgstr "" -#: gnu/packages/networking.scm:213 +#: gnu/packages/networking.scm:217 msgid "Monitor and filter incoming requests for network services" msgstr "" -#: gnu/packages/networking.scm:214 +#: gnu/packages/networking.scm:218 msgid "" "With this package you can monitor and filter incoming requests for\n" "network services. It includes a library which may be used by daemons to\n" "transparently check connection attempts against an access control list." msgstr "" -#: gnu/packages/networking.scm:234 +#: gnu/packages/networking.scm:238 msgid "Library for message-based applications" msgstr "" -#: gnu/packages/networking.scm:236 +#: gnu/packages/networking.scm:240 msgid "" "The 0MQ lightweight messaging kernel is a library which extends the\n" "standard socket interfaces with features traditionally provided by specialized\n" @@ -7202,43 +8252,43 @@ msgid "" "more." msgstr "" -#: gnu/packages/networking.scm:275 +#: gnu/packages/networking.scm:279 msgid "Apache Kafka C/C++ client library" msgstr "" -#: gnu/packages/networking.scm:277 +#: gnu/packages/networking.scm:281 msgid "" "librdkafka is a C library implementation of the Apache Kafka protocol,\n" "containing both Producer and Consumer support." msgstr "" -#: gnu/packages/networking.scm:294 +#: gnu/packages/networking.scm:298 msgid "Library for Neighbor Discovery Protocol" msgstr "" -#: gnu/packages/networking.scm:296 +#: gnu/packages/networking.scm:300 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:314 +#: gnu/packages/networking.scm:318 msgid "Display or change Ethernet device settings" msgstr "" -#: gnu/packages/networking.scm:316 +#: gnu/packages/networking.scm:320 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:353 +#: gnu/packages/networking.scm:357 msgid "Text based network interface status monitor" msgstr "" -#: gnu/packages/networking.scm:355 +#: gnu/packages/networking.scm:359 msgid "" "IFStatus is a simple, easy-to-use program for displaying commonly\n" "needed/wanted real-time traffic statistics of multiple network\n" @@ -7246,23 +8296,23 @@ msgid "" "intended as a substitute for the PPPStatus and EthStatus projects." msgstr "" -#: gnu/packages/networking.scm:375 +#: gnu/packages/networking.scm:379 msgid "Realtime console network usage monitor" msgstr "" -#: gnu/packages/networking.scm:377 +#: gnu/packages/networking.scm:381 msgid "" "Nload is a console application which monitors network traffic and\n" "bandwidth usage in real time. It visualizes the in- and outgoing traffic using\n" -"two graphs and provides additional info like total amount of transfered data\n" +"two graphs, and provides additional info like total amount of transferred data\n" "and min/max network usage." msgstr "" -#: gnu/packages/networking.scm:420 +#: gnu/packages/networking.scm:424 msgid "Tunnel IPv4 data through a DNS server" msgstr "" -#: gnu/packages/networking.scm:421 +#: gnu/packages/networking.scm:425 msgid "" "Iodine tunnels IPv4 data through a DNS server. This\n" "can be useful in different situations where internet access is firewalled, but\n" @@ -7270,11 +8320,11 @@ msgid "" "and up to 1 Mbit/s downstream." msgstr "" -#: gnu/packages/networking.scm:459 +#: gnu/packages/networking.scm:463 msgid "Improved whois client" msgstr "" -#: gnu/packages/networking.scm:460 +#: gnu/packages/networking.scm:464 msgid "" "This whois client is intelligent and can\n" "automatically select the appropriate whois server for most queries.\n" @@ -7282,22 +8332,22 @@ msgid "" "which can be used to encrypt a password with @code{crypt(3)}." msgstr "" -#: gnu/packages/networking.scm:471 +#: gnu/packages/networking.scm:475 msgid "Network traffic analyzer" msgstr "" -#: gnu/packages/networking.scm:512 +#: gnu/packages/networking.scm:516 msgid "" "Wireshark is a network protocol analyzer, or @dfn{packet\n" "sniffer}, that lets you capture and interactively browse the contents of\n" "network frames." msgstr "" -#: gnu/packages/networking.scm:543 +#: gnu/packages/networking.scm:547 msgid "Web server latency and throughput monitor" msgstr "" -#: gnu/packages/networking.scm:545 +#: gnu/packages/networking.scm:549 msgid "" "httping measures how long it takes to connect to a web server, send an\n" "HTTP(S) request, and receive the reply headers. It is somewhat similar to\n" @@ -7306,21 +8356,33 @@ msgid "" "application stack itself." msgstr "" -#: gnu/packages/networking.scm:566 +#: gnu/packages/networking.scm:580 +msgid "Visualize curl statistics" +msgstr "" + +#: gnu/packages/networking.scm:582 +msgid "" +"@command{httpstat} is a tool to visualize statistics from the\n" +"@command{curl} HTTP client. It acts as a wrapper for @command{curl} and\n" +"prints timing information for each step of the HTTP request (DNS lookup,\n" +"TCP connection, TLS handshake and so on) in the terminal." +msgstr "" + +#: gnu/packages/networking.scm:602 msgid "Console based live network and disk I/O bandwidth monitor" msgstr "" -#: gnu/packages/networking.scm:567 +#: gnu/packages/networking.scm:603 msgid "" "Bandwidth Monitor NG is a small and simple console based\n" "live network and disk I/O bandwidth monitor." msgstr "" -#: gnu/packages/networking.scm:616 +#: gnu/packages/networking.scm:652 msgid "Assess WiFi network security" msgstr "" -#: gnu/packages/networking.scm:618 +#: gnu/packages/networking.scm:654 msgid "" "Aircrack-ng is a complete suite of tools to assess WiFi network\n" "security. It focuses on different areas of WiFi security: monitoring,\n" @@ -7328,94 +8390,94 @@ msgid "" "allows for heavy scripting." msgstr "" -#: gnu/packages/networking.scm:643 +#: gnu/packages/networking.scm:679 msgid "Perl Interface to the Domain Name System" msgstr "" -#: gnu/packages/networking.scm:644 +#: gnu/packages/networking.scm:680 msgid "Net::DNS is the Perl Interface to the Domain Name System." msgstr "" -#: gnu/packages/networking.scm:675 +#: gnu/packages/networking.scm:711 msgid "IPv6 related part of the C socket.h defines and structure manipulators for Perl" msgstr "" -#: gnu/packages/networking.scm:676 +#: gnu/packages/networking.scm:712 msgid "" "Socket6 binds the IPv6 related part of the C socket header\n" "definitions and structure manipulators for Perl." msgstr "" -#: gnu/packages/networking.scm:703 +#: gnu/packages/networking.scm:738 msgid "Programmable DNS resolver class for offline emulation of DNS" msgstr "" -#: gnu/packages/networking.scm:704 +#: gnu/packages/networking.scm:739 msgid "" "Net::DNS::Resolver::Programmable is a programmable DNS resolver for\n" "offline emulation of DNS." msgstr "" -#: gnu/packages/networking.scm:737 +#: gnu/packages/networking.scm:772 msgid "Manages IPv4 and IPv6 addresses and subnets" msgstr "" -#: gnu/packages/networking.scm:738 +#: gnu/packages/networking.scm:773 msgid "NetAddr::IP manages IPv4 and IPv6 addresses and subsets." msgstr "" -#: gnu/packages/networking.scm:762 +#: gnu/packages/networking.scm:797 msgid "Patricia Trie Perl module for fast IP address lookups" msgstr "" -#: gnu/packages/networking.scm:764 +#: gnu/packages/networking.scm:799 msgid "Net::Patricia does IP address lookups quickly in Perl." msgstr "" -#: gnu/packages/networking.scm:787 +#: gnu/packages/networking.scm:822 msgid "Perl extension for merging IPv4 or IPv6 CIDR addresses" msgstr "" -#: gnu/packages/networking.scm:788 +#: gnu/packages/networking.scm:823 msgid "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses." msgstr "" -#: gnu/packages/networking.scm:810 +#: gnu/packages/networking.scm:845 msgid "Look up location and network information by IP Address in Perl" msgstr "" -#: gnu/packages/networking.scm:811 +#: gnu/packages/networking.scm:846 msgid "" "The Perl module 'Geo::IP'. It looks up location and network\n" "information by IP Address." msgstr "" -#: gnu/packages/networking.scm:840 +#: gnu/packages/networking.scm:875 msgid "Perl object interface for AF_INET/AF_INET6 domain sockets" msgstr "" -#: gnu/packages/networking.scm:841 +#: gnu/packages/networking.scm:876 msgid "" "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain\n" "sockets in Perl." msgstr "" -#: gnu/packages/networking.scm:872 +#: gnu/packages/networking.scm:907 msgid "Redirect any TCP connection through a proxy or proxy chain" msgstr "" -#: gnu/packages/networking.scm:873 +#: gnu/packages/networking.scm:908 msgid "" "Proxychains-ng is a preloader which hooks calls to sockets\n" "in dynamically linked programs and redirects them through one or more SOCKS or\n" "HTTP proxies." msgstr "" -#: gnu/packages/networking.scm:894 +#: gnu/packages/networking.scm:929 msgid "Network communication layer on top of UDP" msgstr "" -#: gnu/packages/networking.scm:896 +#: gnu/packages/networking.scm:931 msgid "" "ENet's purpose is to provide a relatively thin, simple and robust network\n" "communication layer on top of UDP. The primary feature it provides is optional\n" @@ -7425,11 +8487,11 @@ msgid "" "library remains flexible, portable, and easily embeddable." msgstr "" -#: gnu/packages/networking.scm:959 +#: gnu/packages/networking.scm:994 msgid "Applicative network protocol demultiplexer" msgstr "" -#: gnu/packages/networking.scm:961 +#: gnu/packages/networking.scm:996 msgid "" "sslh is a network protocol demultiplexer. It acts like a switchboard,\n" "accepting connections from clients on one port and forwarding them to different\n" @@ -7441,11 +8503,11 @@ msgid "" "that block port 22." msgstr "" -#: gnu/packages/networking.scm:984 +#: gnu/packages/networking.scm:1019 msgid "TCP, UDP and SCTP bandwidth measurement tool" msgstr "" -#: gnu/packages/networking.scm:986 +#: gnu/packages/networking.scm:1021 msgid "" "iPerf is a tool to measure achievable bandwidth on IP networks. It\n" "supports tuning of various parameters related to timing, buffers and\n" @@ -7453,11 +8515,11 @@ msgid "" "the bandwidth, loss, and other parameters." msgstr "" -#: gnu/packages/networking.scm:1019 +#: gnu/packages/networking.scm:1054 msgid "Per-process bandwidth monitor" msgstr "" -#: gnu/packages/networking.scm:1020 +#: gnu/packages/networking.scm:1055 msgid "" "NetHogs is a small 'net top' tool for Linux. Instead of\n" "breaking the traffic down per protocol or per subnet, like most tools do, it\n" @@ -7469,106 +8531,162 @@ msgid "" "gone wild and are suddenly taking up your bandwidth." msgstr "" -#: gnu/packages/pdf.scm:121 +#: gnu/packages/networking.scm:1111 +msgid "Virtual network switch" +msgstr "" + +#: gnu/packages/networking.scm:1114 +msgid "" +"Open vSwitch is a multilayer virtual switch. It is designed to enable\n" +"massive network automation through programmatic extension, while still\n" +"supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,\n" +"IPFIX, RSPAN, CLI, LACP, 802.1ag)." +msgstr "" + +#: gnu/packages/networking.scm:1136 +msgid "Python class and tools for handling IP addresses and networks" +msgstr "" + +#: gnu/packages/networking.scm:1137 +msgid "" +"The @code{IP} class allows a comfortable parsing and\n" +"handling for most notations in use for IPv4 and IPv6 addresses and\n" +"networks." +msgstr "" + +#: gnu/packages/networking.scm:1157 +msgid "Internet bandwidth tester" +msgstr "" + +#: gnu/packages/networking.scm:1159 +msgid "" +"Command line interface for testing internet bandwidth using\n" +"speedtest.net." +msgstr "" + +#: gnu/packages/networking.scm:1177 +msgid "HPA's tftp client" +msgstr "" + +#: gnu/packages/networking.scm:1179 +msgid "" +"This is a tftp client derived from OpenBSD tftp with some extra options\n" +"added and bugs fixed. The source includes readline support but it is not\n" +"enabled due to license conflicts between the BSD advertising clause and the GPL." +msgstr "" + +#: gnu/packages/pdf.scm:126 msgid "PDF rendering library" msgstr "PDF-optegningsbibliotek" -#: gnu/packages/pdf.scm:123 +#: gnu/packages/pdf.scm:128 msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base." msgstr "Poppler er et PDF-optegningsbibliotek baseret på xpdf-3.0-kodebasen." -#: gnu/packages/pdf.scm:132 +#: gnu/packages/pdf.scm:137 msgid "Qt4 frontend for the Poppler PDF rendering library" msgstr "Qt4-brugeflade for Poppler PDF-optegningsbiblioteket" -#: gnu/packages/pdf.scm:143 +#: gnu/packages/pdf.scm:148 msgid "Qt5 frontend for the Poppler PDF rendering library" msgstr "Qt5-brugeflade for Poppler PDF-optegningsbiblioteket" -#: gnu/packages/pdf.scm:176 +#: gnu/packages/pdf.scm:181 msgid "Python bindings for Poppler-Qt4" msgstr "Pythonbindinger for Poppler-Qt4" -#: gnu/packages/pdf.scm:178 +#: gnu/packages/pdf.scm:183 msgid "" "This package provides Python bindings for the Qt4 interface of the\n" "Poppler PDF rendering library." msgstr "" -#: gnu/packages/pdf.scm:215 +#: gnu/packages/pdf.scm:228 +msgid "Python bindings for Poppler-Qt5" +msgstr "Pythonbindinger for Poppler-Qt5" + +#: gnu/packages/pdf.scm:230 +msgid "" +"This package provides Python bindings for the Qt5 interface of the\n" +"Poppler PDF rendering library." +msgstr "" +"Denne pakke tilbyder Pythonbindinger til Qt5-grænsefladen for\n" +"Poppler PDF-optegningsbiblioteket." + +#: gnu/packages/pdf.scm:267 msgid "Library for generating PDF files" msgstr "Bibliotek til at oprette PDF-filer" -#: gnu/packages/pdf.scm:217 +#: gnu/packages/pdf.scm:269 msgid "" "libHaru is a library for generating PDF files. libHaru does not support\n" "reading and editing of existing PDF files." msgstr "" -#: gnu/packages/pdf.scm:264 +#: gnu/packages/pdf.scm:316 msgid "Viewer for PDF files based on the Motif toolkit" msgstr "" -#: gnu/packages/pdf.scm:266 +#: gnu/packages/pdf.scm:318 msgid "Xpdf is a viewer for Portable Document Format (PDF) files." msgstr "Xpdf er en fremviser for Portable Document Format-filer (PDF)." -#: gnu/packages/pdf.scm:296 +#: gnu/packages/pdf.scm:348 msgid "Comic book support for zathura (libarchive backend)" msgstr "Understøttelse af tegneserier i zathura (libarchive-motor)" -#: gnu/packages/pdf.scm:297 +#: gnu/packages/pdf.scm:349 msgid "" "The zathura-cb plugin adds comic book support to zathura\n" "using libarchive." msgstr "" -#: gnu/packages/pdf.scm:327 +#: gnu/packages/pdf.scm:379 msgid "PS support for zathura (libspectre backend)" msgstr "" -#: gnu/packages/pdf.scm:328 +#: gnu/packages/pdf.scm:380 msgid "" "The zathura-ps plugin adds PS support to zathura\n" "using libspectre." msgstr "" -#: gnu/packages/pdf.scm:359 +#: gnu/packages/pdf.scm:411 msgid "DjVu support for zathura (DjVuLibre backend)" msgstr "" -#: gnu/packages/pdf.scm:360 +#: gnu/packages/pdf.scm:412 msgid "" "The zathura-djvu plugin adds DjVu support to zathura\n" "using the DjVuLibre library." msgstr "" -#: gnu/packages/pdf.scm:392 +#: gnu/packages/pdf.scm:444 msgid "PDF support for zathura (poppler backend)" msgstr "" -#: gnu/packages/pdf.scm:393 +#: gnu/packages/pdf.scm:445 msgid "" "The zathura-pdf-poppler plugin adds PDF support to zathura\n" "by using the poppler rendering engine." msgstr "" -#: gnu/packages/pdf.scm:430 +#: gnu/packages/pdf.scm:482 msgid "Lightweight keyboard-driven PDF viewer" msgstr "" -#: gnu/packages/pdf.scm:431 +#: gnu/packages/pdf.scm:483 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:470 +#: gnu/packages/pdf.scm:522 msgid "Tools to work with the PDF file format" msgstr "" -#: gnu/packages/pdf.scm:472 +#: gnu/packages/pdf.scm:524 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" @@ -7577,11 +8695,11 @@ msgid "" "extracting content or merging files." msgstr "" -#: gnu/packages/pdf.scm:528 +#: gnu/packages/pdf.scm:580 msgid "Lightweight PDF viewer and toolkit" msgstr "" -#: gnu/packages/pdf.scm:530 +#: gnu/packages/pdf.scm:582 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" @@ -7593,11 +8711,11 @@ msgid "" "and examining the file structure (pdfshow)." msgstr "" -#: gnu/packages/pdf.scm:582 +#: gnu/packages/pdf.scm:634 msgid "Command-line tools and library for transforming PDF files" msgstr "" -#: gnu/packages/pdf.scm:584 +#: gnu/packages/pdf.scm:636 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" @@ -7606,32 +8724,32 @@ msgid "" "program capable of converting PDF into other formats." msgstr "" -#: gnu/packages/pdf.scm:614 +#: gnu/packages/pdf.scm:666 msgid "Notetaking using a stylus" msgstr "" -#: gnu/packages/pdf.scm:616 +#: gnu/packages/pdf.scm:668 msgid "" "Xournal is an application for notetaking, sketching, keeping a journal\n" "using a stylus." msgstr "" -#: gnu/packages/pdf.scm:634 +#: gnu/packages/pdf.scm:690 msgid "Python library for generating PDFs and graphics" msgstr "Pythonbibliotek til at oprette PDF-filer og grafik" -#: gnu/packages/pdf.scm:635 +#: gnu/packages/pdf.scm:691 msgid "" "This is the ReportLab PDF Toolkit. It allows rapid creation\n" "of rich PDF documents, and also creation of charts in a variety of bitmap and\n" "vector formats." msgstr "" -#: gnu/packages/pdf.scm:688 +#: gnu/packages/pdf.scm:744 msgid "PDF presentation tool with visual effects" msgstr "PDF-præsentationsværktøj med visuelle effekter" -#: gnu/packages/pdf.scm:690 +#: gnu/packages/pdf.scm:746 msgid "" "Impressive is a tool to display PDF files that provides visual effects\n" "such as smooth alpha-blended slide transitions. It provides additional tools\n" @@ -7639,31 +8757,31 @@ msgid "" "the PDF pages." msgstr "" -#: gnu/packages/pdf.scm:737 +#: gnu/packages/pdf.scm:793 msgid "Framebuffer and drm-based image viewer" msgstr "Framebuffer og drm-baseret billedfremviser" -#: gnu/packages/pdf.scm:739 +#: gnu/packages/pdf.scm:795 msgid "" "fbida contains a few applications for viewing and editing images on\n" "the framebuffer." msgstr "" -#: gnu/packages/pdf.scm:764 +#: gnu/packages/pdf.scm:820 msgid "PDF to SVG converter" msgstr "PDF- til SVG-konverteringsprogram" -#: gnu/packages/pdf.scm:765 +#: gnu/packages/pdf.scm:821 msgid "" "@command{pdf2svg} is a simple command-line PDF to SVG\n" "converter using the Poppler and Cairo libraries." msgstr "" -#: gnu/packages/pdf.scm:796 gnu/packages/pdf.scm:833 +#: gnu/packages/pdf.scm:852 gnu/packages/pdf.scm:889 msgid "Pure Python PDF toolkit" msgstr "Pure Python PDF-værktøjssæt" -#: gnu/packages/pdf.scm:797 +#: gnu/packages/pdf.scm:853 msgid "" "PyPDF2 is a pure Python PDF library capable of:\n" "\n" @@ -7683,7 +8801,7 @@ msgid "" "manage or manipulate PDFs." msgstr "" -#: gnu/packages/pdf.scm:834 +#: gnu/packages/pdf.scm:890 msgid "" "PyPDF2 is a pure Python PDF toolkit.\n" "\n" @@ -7691,11 +8809,11 @@ msgid "" "python-pypdf2 instead." msgstr "" -#: gnu/packages/pdf.scm:858 +#: gnu/packages/pdf.scm:914 msgid "Scale and tile PDF images/pages to print on multiple pages" msgstr "" -#: gnu/packages/pdf.scm:859 +#: gnu/packages/pdf.scm:915 msgid "" "@command{pdfposter} can be used to create a large poster by\n" "building it from multple pages and/or printing it on large media. It expects\n" @@ -7708,6 +8826,18 @@ msgid "" "PDF. Indeed @command{pdfposter} was inspired by @command{poster}." msgstr "" +#: gnu/packages/pdf.scm:946 +msgid "Command-line utility to search text in PDF files" +msgstr "" + +#: gnu/packages/pdf.scm:948 +msgid "" +"Pdfgrep searches in pdf files for strings matching a regular expression.\n" +"Support some GNU grep options as file name output, page number output,\n" +"optional case insensitivity, count occurrences, color highlights and search in\n" +"multiple files." +msgstr "" + #: gnu/packages/pem.scm:41 msgid "Personal expenses manager" msgstr "" @@ -7721,31 +8851,31 @@ msgid "" "feature." msgstr "" -#: gnu/packages/perl.scm:138 +#: gnu/packages/perl.scm:143 msgid "Implementation of the Perl programming language" msgstr "" -#: gnu/packages/perl.scm:140 +#: gnu/packages/perl.scm:145 msgid "" "Perl 5 is a highly capable, feature-rich programming language with over\n" "24 years of development." msgstr "" -#: gnu/packages/perl.scm:159 +#: gnu/packages/perl.scm:164 msgid "Module for merging hierarchies using the C3 algorithm" msgstr "" -#: gnu/packages/perl.scm:160 +#: gnu/packages/perl.scm:165 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:178 +#: gnu/packages/perl.scm:183 msgid "Compute differences between two files or lists" msgstr "" -#: gnu/packages/perl.scm:179 +#: gnu/packages/perl.scm:184 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" @@ -7754,11 +8884,11 @@ msgid "" "differences." msgstr "" -#: gnu/packages/perl.scm:201 +#: gnu/packages/perl.scm:206 msgid "Use shorter versions of class names" msgstr "" -#: gnu/packages/perl.scm:202 +#: gnu/packages/perl.scm:207 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" @@ -7766,41 +8896,76 @@ msgid "" "implicitly." msgstr "" -#: gnu/packages/perl.scm:224 +#: gnu/packages/perl.scm:229 +msgid "Transparently use Moose or Mouse modules" +msgstr "" + +#: gnu/packages/perl.scm:231 +msgid "" +"This module facilitates using @code{Moose} or @code{Mouse} modules\n" +"without changing the code. By default, Mouse will be provided to libraries,\n" +"unless Moose is already loaded, or explicitly requested by the end-user. End\n" +"users can force the decision of which backend to use by setting the environment\n" +"variable ANY_MOOSE to be Moose or Mouse." +msgstr "" + +#: gnu/packages/perl.scm:254 msgid "Configuration files and command line parsing" msgstr "" -#: gnu/packages/perl.scm:225 +#: gnu/packages/perl.scm:255 msgid "" "AppConfig is a bundle of Perl5 modules for reading\n" "configuration files and parsing command line arguments." msgstr "" -#: gnu/packages/perl.scm:243 +#: gnu/packages/perl.scm:273 msgid "Perl API to zip files" msgstr "" -#: gnu/packages/perl.scm:244 gnu/packages/zip.scm:171 +#: gnu/packages/perl.scm:274 gnu/packages/zip.scm:174 msgid "" "The Archive::Zip module allows a Perl program to create,\n" "manipulate, read, and write Zip archive files." msgstr "" -#: gnu/packages/perl.scm:265 +#: gnu/packages/perl.scm:295 msgid "Small utils for array manipulation" msgstr "" -#: gnu/packages/perl.scm:266 +#: gnu/packages/perl.scm:296 msgid "" "@code{Array::Utils} is a small pure-perl module containing\n" "list manipulation routines." msgstr "" -#: gnu/packages/perl.scm:284 +#: gnu/packages/perl.scm:315 +msgid "Allow C/XS libraries to interrupt perl asynchronously" +msgstr "" + +#: gnu/packages/perl.scm:317 +msgid "" +"@code{Async::Interrupt} implements a single feature only of interest\n" +"to advanced perl modules, namely asynchronous interruptions (think \"UNIX\n" +"signals\", which are very similar).\n" +"\n" +"Sometimes, modules wish to run code asynchronously (in another thread,\n" +"or from a signal handler), and then signal the perl interpreter on\n" +"certain events. One common way is to write some data to a pipe and use\n" +"an event handling toolkit to watch for I/O events. Another way is to\n" +"send a signal. Those methods are slow, and in the case of a pipe, also\n" +"not asynchronous - it won't interrupt a running perl interpreter.\n" +"\n" +"This module implements asynchronous notifications that enable you to\n" +"signal running perl code from another thread, asynchronously, and\n" +"sometimes even without using a single syscall." +msgstr "" + +#: gnu/packages/perl.scm:347 msgid "Lexically disable autovivification" msgstr "" -#: gnu/packages/perl.scm:285 +#: gnu/packages/perl.scm:348 msgid "" "When an undefined variable is dereferenced, it gets silently\n" "upgraded to an array or hash reference (depending of the type of the\n" @@ -7814,11 +8979,11 @@ msgid "" "error when it would have happened." msgstr "" -#: gnu/packages/perl.scm:311 gnu/packages/perl.scm:5077 +#: gnu/packages/perl.scm:374 gnu/packages/perl.scm:5464 msgid "Establish an ISA relationship with base classes at compile time" msgstr "" -#: gnu/packages/perl.scm:312 +#: gnu/packages/perl.scm:375 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" @@ -7826,21 +8991,21 @@ msgid "" "parent." msgstr "" -#: gnu/packages/perl.scm:337 +#: gnu/packages/perl.scm:400 msgid "Execute code after a scope finished compilation" msgstr "" -#: gnu/packages/perl.scm:338 +#: gnu/packages/perl.scm:401 msgid "" "This module allows you to execute code when perl finished\n" "compiling the surrounding scope." msgstr "" -#: gnu/packages/perl.scm:356 +#: gnu/packages/perl.scm:419 msgid "Benchmarking with statistical confidence" msgstr "" -#: gnu/packages/perl.scm:358 +#: gnu/packages/perl.scm:421 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" @@ -7849,11 +9014,11 @@ msgid "" "but don't want to go all out and profile your code." msgstr "" -#: gnu/packages/perl.scm:383 +#: gnu/packages/perl.scm:446 msgid "Bit vector library" msgstr "" -#: gnu/packages/perl.scm:384 +#: gnu/packages/perl.scm:447 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" @@ -7863,62 +9028,62 @@ msgid "" "library can nevertheless be used stand-alone, without Perl." msgstr "" -#: gnu/packages/perl.scm:406 +#: gnu/packages/perl.scm:469 msgid "Boolean support for Perl" msgstr "" -#: gnu/packages/perl.scm:407 +#: gnu/packages/perl.scm:470 msgid "" "This module provides basic Boolean support, by defining two\n" "special objects: true and false." msgstr "" -#: gnu/packages/perl.scm:425 +#: gnu/packages/perl.scm:488 msgid "Data files for Business::ISBN" msgstr "" -#: gnu/packages/perl.scm:426 +#: gnu/packages/perl.scm:489 msgid "" "This package provides a data pack for @code{Business::ISBN}.\n" "These data are generated from the RangeMessage.xml file provided by the ISBN\n" "Agency." msgstr "" -#: gnu/packages/perl.scm:448 +#: gnu/packages/perl.scm:511 msgid "Work with International Standard Book Numbers" msgstr "" -#: gnu/packages/perl.scm:449 +#: gnu/packages/perl.scm:512 msgid "" "This modules provides tools to deal with International\n" "Standard Book Numbers, including ISBN-10 and ISBN-13." msgstr "" -#: gnu/packages/perl.scm:467 +#: gnu/packages/perl.scm:530 msgid "Work with International Standard Serial Numbers" msgstr "" -#: gnu/packages/perl.scm:468 +#: gnu/packages/perl.scm:531 msgid "" "This modules provides tools to deal with International\n" "Standard Serial Numbers." msgstr "" -#: gnu/packages/perl.scm:488 +#: gnu/packages/perl.scm:551 msgid "Work with International Standard Music Numbers" msgstr "" -#: gnu/packages/perl.scm:489 +#: gnu/packages/perl.scm:552 msgid "" "This modules provides tools to deal with International\n" "Standard Music Numbers." msgstr "" -#: gnu/packages/perl.scm:510 +#: gnu/packages/perl.scm:573 msgid "Cache interface for Perl" msgstr "" -#: gnu/packages/perl.scm:511 +#: gnu/packages/perl.scm:574 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" @@ -7929,11 +9094,11 @@ msgid "" "easy to use abstraction of the file system or shared memory." msgstr "" -#: gnu/packages/perl.scm:534 +#: gnu/packages/perl.scm:597 msgid "Shared memory interprocess cache via mmap" msgstr "" -#: gnu/packages/perl.scm:535 +#: gnu/packages/perl.scm:598 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" @@ -7941,11 +9106,11 @@ msgid "" "algorithm to keep the most used entries in the cache." msgstr "" -#: gnu/packages/perl.scm:556 +#: gnu/packages/perl.scm:619 msgid "Capture STDOUT and STDERR from Perl, XS or external programs" msgstr "" -#: gnu/packages/perl.scm:558 +#: gnu/packages/perl.scm:621 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" @@ -7953,31 +9118,41 @@ msgid "" "is captured while being passed through to the original file handles." msgstr "" -#: gnu/packages/perl.scm:578 +#: gnu/packages/perl.scm:640 +msgid "Check compatibility with the installed perl version" +msgstr "" + +#: gnu/packages/perl.scm:642 +msgid "" +"This module is used by Schmorp's modules during configuration stage\n" +"to test the installed perl for compatibility with his modules." +msgstr "" + +#: gnu/packages/perl.scm:660 msgid "Executable comments for Perl" msgstr "" -#: gnu/packages/perl.scm:579 +#: gnu/packages/perl.scm:661 msgid "" "Carp::Assert is intended for a purpose like the ANSI C\n" "library assert.h." msgstr "" -#: gnu/packages/perl.scm:601 +#: gnu/packages/perl.scm:683 msgid "Convenience wrappers around Carp::Assert" msgstr "" -#: gnu/packages/perl.scm:602 +#: gnu/packages/perl.scm:684 msgid "" "Carp::Assert::More is a set of handy assertion functions for\n" "Perl." msgstr "" -#: gnu/packages/perl.scm:622 +#: gnu/packages/perl.scm:704 msgid "Report errors from a \"clan\" of modules" msgstr "" -#: gnu/packages/perl.scm:623 +#: gnu/packages/perl.scm:705 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" @@ -7985,21 +9160,29 @@ msgid "" "the Carp.pm module doesn't help." msgstr "" -#: gnu/packages/perl.scm:647 +#: gnu/packages/perl.scm:725 +msgid "Read the CDDB entry for an audio CD in your drive" +msgstr "" + +#: gnu/packages/perl.scm:726 +msgid "This module can retrieve information from the CDDB." +msgstr "" + +#: gnu/packages/perl.scm:748 msgid "Automated accessor generation" msgstr "" -#: gnu/packages/perl.scm:648 +#: gnu/packages/perl.scm:749 msgid "" "This module automagically generates accessors/mutators for\n" "your class." msgstr "" -#: gnu/packages/perl.scm:670 +#: gnu/packages/perl.scm:771 msgid "Faster, but less expandable, chained accessors" msgstr "" -#: gnu/packages/perl.scm:671 +#: gnu/packages/perl.scm:772 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" @@ -8007,52 +9190,52 @@ msgid "" "the same mk_accessors interface." msgstr "" -#: gnu/packages/perl.scm:697 +#: gnu/packages/perl.scm:798 msgid "Build groups of accessors" msgstr "" -#: gnu/packages/perl.scm:698 +#: gnu/packages/perl.scm:799 msgid "" "This class lets you build groups of accessors that will call\n" "different getters and setters." msgstr "" -#: gnu/packages/perl.scm:718 +#: gnu/packages/perl.scm:819 msgid "Pragma to use the C3 method resolution order algorithm" msgstr "" -#: gnu/packages/perl.scm:719 +#: gnu/packages/perl.scm:820 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:743 +#: gnu/packages/perl.scm:844 msgid "Drop-in replacement for NEXT" msgstr "" -#: gnu/packages/perl.scm:744 +#: gnu/packages/perl.scm:845 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:768 +#: gnu/packages/perl.scm:869 msgid "Load mix-ins or components to your C3-based class" msgstr "" -#: gnu/packages/perl.scm:769 +#: gnu/packages/perl.scm:870 msgid "" "This module will inject base classes to your module using\n" "the Class::C3 method resolution order." msgstr "" -#: gnu/packages/perl.scm:787 +#: gnu/packages/perl.scm:888 msgid "Inheritable, overridable class data" msgstr "" -#: gnu/packages/perl.scm:788 +#: gnu/packages/perl.scm:889 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" @@ -8060,21 +9243,21 @@ msgid "" "subclasses and can be overridden." msgstr "" -#: gnu/packages/perl.scm:809 +#: gnu/packages/perl.scm:910 msgid "Class for easy date and time manipulation" msgstr "" -#: gnu/packages/perl.scm:810 +#: gnu/packages/perl.scm:911 msgid "" "This module provides a general-purpose date and datetime\n" "type for perl." msgstr "" -#: gnu/packages/perl.scm:827 +#: gnu/packages/perl.scm:928 msgid "Base class for error handling" msgstr "" -#: gnu/packages/perl.scm:829 +#: gnu/packages/perl.scm:930 msgid "" "@code{Class::ErrorHandler} provides an error-handling mechanism that is generic\n" "enough to be used as the base class for a variety of OO classes. Subclasses inherit\n" @@ -8082,60 +9265,60 @@ msgid "" "to the calling program." msgstr "" -#: gnu/packages/perl.scm:850 +#: gnu/packages/perl.scm:951 msgid "Utility methods for factory classes" msgstr "" -#: gnu/packages/perl.scm:851 +#: gnu/packages/perl.scm:952 msgid "This module exports methods useful for factory classes." msgstr "" -#: gnu/packages/perl.scm:868 +#: gnu/packages/perl.scm:969 msgid "Get information about a class and its structure" msgstr "" -#: gnu/packages/perl.scm:869 +#: gnu/packages/perl.scm:970 msgid "" "Class::Inspector allows you to get information about a\n" "loaded class." msgstr "" -#: gnu/packages/perl.scm:897 +#: gnu/packages/perl.scm:998 msgid "Working (require \"Class::Name\") and more" msgstr "" -#: gnu/packages/perl.scm:898 +#: gnu/packages/perl.scm:999 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:921 +#: gnu/packages/perl.scm:1022 msgid "XS implementation of parts of Class::Load" msgstr "" -#: gnu/packages/perl.scm:922 +#: gnu/packages/perl.scm:1023 msgid "" "This module provides an XS implementation for portions of\n" "Class::Load." msgstr "" -#: gnu/packages/perl.scm:941 +#: gnu/packages/perl.scm:1042 msgid "Create generic methods for OO Perl" msgstr "" -#: gnu/packages/perl.scm:942 +#: gnu/packages/perl.scm:1043 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:963 +#: gnu/packages/perl.scm:1064 msgid "Moose-like method modifiers" msgstr "" -#: gnu/packages/perl.scm:964 +#: gnu/packages/perl.scm:1065 msgid "" "Class::Method::Modifiers provides three modifiers: 'before',\n" "'around', and 'after'. 'before' and 'after' are run just before and after the\n" @@ -8144,42 +9327,42 @@ msgid "" "original method." msgstr "" -#: gnu/packages/perl.scm:985 +#: gnu/packages/perl.scm:1086 msgid "Implementation of a singleton class for Perl" msgstr "" -#: gnu/packages/perl.scm:986 +#: gnu/packages/perl.scm:1087 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:1005 +#: gnu/packages/perl.scm:1106 msgid "Minimalist class construction" msgstr "" -#: gnu/packages/perl.scm:1006 +#: gnu/packages/perl.scm:1107 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:1026 +#: gnu/packages/perl.scm:1127 msgid "Unload a class" msgstr "" -#: gnu/packages/perl.scm:1027 +#: gnu/packages/perl.scm:1128 msgid "" "Class:Unload unloads a given class by clearing out its\n" "symbol table and removing it from %INC." msgstr "" -#: gnu/packages/perl.scm:1045 +#: gnu/packages/perl.scm:1146 msgid "Generate fast XS accessors without runtime compilation" msgstr "" -#: gnu/packages/perl.scm:1046 +#: gnu/packages/perl.scm:1147 msgid "" "Class::XSAccessor implements fast read, write, and\n" "read/write accessors in XS. Additionally, it can provide predicates such as\n" @@ -8189,53 +9372,53 @@ msgid "" "arrays for their internal representation." msgstr "" -#: gnu/packages/perl.scm:1066 +#: gnu/packages/perl.scm:1167 msgid "Recursively copy Perl datatypes" msgstr "" -#: gnu/packages/perl.scm:1068 +#: gnu/packages/perl.scm:1169 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:1089 +#: gnu/packages/perl.scm:1190 msgid "Sane defaults for Perl programs" msgstr "" -#: gnu/packages/perl.scm:1090 +#: gnu/packages/perl.scm:1191 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:1110 +#: gnu/packages/perl.scm:1211 msgid "Load configuration from different file formats" msgstr "" -#: gnu/packages/perl.scm:1111 +#: gnu/packages/perl.scm:1212 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:1132 +#: gnu/packages/perl.scm:1233 msgid "Module to implement some AutoConf macros in Perl" msgstr "" -#: gnu/packages/perl.scm:1133 +#: gnu/packages/perl.scm:1234 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:1151 +#: gnu/packages/perl.scm:1252 msgid "Generic Config Module" msgstr "" -#: gnu/packages/perl.scm:1152 +#: gnu/packages/perl.scm:1253 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" @@ -8246,52 +9429,52 @@ msgid "" "options." msgstr "" -#: gnu/packages/perl.scm:1179 +#: gnu/packages/perl.scm:1280 msgid "Simple .ini-file format reader and writer" msgstr "" -#: gnu/packages/perl.scm:1180 +#: gnu/packages/perl.scm:1281 msgid "" "@code{Config::INI} is a module that facilates the reading\n" "and writing of @code{.ini}-style configuration files." msgstr "" -#: gnu/packages/perl.scm:1201 +#: gnu/packages/perl.scm:1302 msgid "Preserve context during subroutine call" msgstr "" -#: gnu/packages/perl.scm:1202 +#: gnu/packages/perl.scm:1303 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:1223 +#: gnu/packages/perl.scm:1324 msgid "Verify requirements in a CPAN::Meta object" msgstr "" -#: gnu/packages/perl.scm:1224 +#: gnu/packages/perl.scm:1325 msgid "" "This module verifies if requirements described in a\n" "CPAN::Meta object are present." msgstr "" -#: gnu/packages/perl.scm:1244 +#: gnu/packages/perl.scm:1345 msgid "JSON::XS for Cpanel" msgstr "" -#: gnu/packages/perl.scm:1245 gnu/packages/perl.scm:3537 +#: gnu/packages/perl.scm:1346 gnu/packages/perl.scm:3777 msgid "" "This module converts Perl data structures to JSON and vice\n" "versa." msgstr "" -#: gnu/packages/perl.scm:1263 +#: gnu/packages/perl.scm:1364 msgid "Random password generator" msgstr "" -#: gnu/packages/perl.scm:1264 +#: gnu/packages/perl.scm:1365 msgid "" "Crypt::RandPasswd provides three functions that can be used\n" "to generate random passwords, constructed from words, letters, or characters.\n" @@ -8302,72 +9485,90 @@ msgid "" "Password Generator\"." msgstr "" -#: gnu/packages/perl.scm:1307 +#: gnu/packages/perl.scm:1390 +msgid "Perl implementation of the RC4 encryption algorithm" +msgstr "Perlimplementering af RC4-krypteringsalgoritmen" + +#: gnu/packages/perl.scm:1391 +msgid "A pure Perl implementation of the RC4 algorithm." +msgstr "En pure Perl-implementering af RC4-algoritmen." + +#: gnu/packages/perl.scm:1410 +msgid "Temporarily change working directory" +msgstr "Skift midlertidigt arbejdsmappe" + +#: gnu/packages/perl.scm:1412 +msgid "" +"@code{Cwd::Guard} changes the current directory using a limited scope.\n" +"It returns to the previous working directory when the object is destroyed." +msgstr "" + +#: gnu/packages/perl.scm:1450 msgid "Library for genomic analysis" msgstr "" -#: gnu/packages/perl.scm:1308 +#: gnu/packages/perl.scm:1451 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:1329 +#: gnu/packages/perl.scm:1472 msgid "Compare Perl data structures" msgstr "Sammenlign Perldatastrukturer" -#: gnu/packages/perl.scm:1330 +#: gnu/packages/perl.scm:1473 msgid "" "This module compares arbitrary data structures to see if\n" "they are copies of each other." msgstr "" -#: gnu/packages/perl.scm:1348 +#: gnu/packages/perl.scm:1491 msgid "Perl extension for generating unique identifiers" msgstr "" -#: gnu/packages/perl.scm:1349 +#: gnu/packages/perl.scm:1492 msgid "" "@code{Data::Uniqid} provides three simple routines for\n" "generating unique ids. These ids are coded with a Base62 systen to make them\n" "short and handy (e.g. to use it as part of a URL)." msgstr "" -#: gnu/packages/perl.scm:1368 +#: gnu/packages/perl.scm:1511 msgid "Pretty printing of data structures" msgstr "" -#: gnu/packages/perl.scm:1369 +#: gnu/packages/perl.scm:1512 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:1388 +#: gnu/packages/perl.scm:1531 msgid "Concise data dumper" msgstr "" -#: gnu/packages/perl.scm:1389 +#: gnu/packages/perl.scm:1532 msgid "" "Data::Dumper::Concise provides a dumper with Less\n" "indentation and newlines plus sub deparsing." msgstr "" -#: gnu/packages/perl.scm:1411 +#: gnu/packages/perl.scm:1554 msgid "Parse and validate simple name/value option pairs" msgstr "" -#: gnu/packages/perl.scm:1413 +#: gnu/packages/perl.scm:1556 msgid "Data::OptList provides a simple syntax for name/value option pairs." msgstr "" -#: gnu/packages/perl.scm:1435 +#: gnu/packages/perl.scm:1578 msgid "Help when paging through sets of results" msgstr "" -#: gnu/packages/perl.scm:1436 +#: gnu/packages/perl.scm:1579 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" @@ -8375,11 +9576,11 @@ msgid "" "The maths behind this is unfortunately fiddly, hence this module." msgstr "" -#: gnu/packages/perl.scm:1458 +#: gnu/packages/perl.scm:1601 msgid "Structured tags datastructures" msgstr "" -#: gnu/packages/perl.scm:1460 +#: gnu/packages/perl.scm:1603 msgid "" "This module is for manipulating data as hierarchical tag/value\n" "pairs (Structured TAGs or Simple Tree AGgregates). These datastructures can\n" @@ -8387,11 +9588,11 @@ msgid "" "Perl." msgstr "" -#: gnu/packages/perl.scm:1487 +#: gnu/packages/perl.scm:1630 msgid "N at a time iteration API" msgstr "" -#: gnu/packages/perl.scm:1488 +#: gnu/packages/perl.scm:1631 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" @@ -8400,21 +9601,21 @@ msgid "" "necessary later on." msgstr "" -#: gnu/packages/perl.scm:1513 +#: gnu/packages/perl.scm:1656 msgid "Dynamic generation of nested combinations of variants" msgstr "" -#: gnu/packages/perl.scm:1514 +#: gnu/packages/perl.scm:1657 msgid "" "Data::Tumbler - Dynamic generation of nested combinations of\n" "variants." msgstr "" -#: gnu/packages/perl.scm:1540 +#: gnu/packages/perl.scm:1683 msgid "Visitor style traversal of Perl data structures" msgstr "" -#: gnu/packages/perl.scm:1541 +#: gnu/packages/perl.scm:1684 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" @@ -8424,11 +9625,11 @@ msgid "" "structures, and all ref types (hashes, arrays, scalars, code, globs)." msgstr "" -#: gnu/packages/perl.scm:1566 +#: gnu/packages/perl.scm:1709 msgid "Gregorian calendar date calculations" msgstr "" -#: gnu/packages/perl.scm:1567 +#: gnu/packages/perl.scm:1710 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" @@ -8436,32 +9637,32 @@ msgid "" "applicable)." msgstr "" -#: gnu/packages/perl.scm:1591 +#: gnu/packages/perl.scm:1734 msgid "XS wrapper for Date::Calc" msgstr "" -#: gnu/packages/perl.scm:1592 +#: gnu/packages/perl.scm:1735 msgid "" "Date::Calc::XS is an XS wrapper and C library plug-in for\n" "Date::Calc." msgstr "" -#: gnu/packages/perl.scm:1616 +#: gnu/packages/perl.scm:1759 msgid "Date manipulation routines" msgstr "" -#: gnu/packages/perl.scm:1617 +#: gnu/packages/perl.scm:1760 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:1636 +#: gnu/packages/perl.scm:1779 msgid "Simple date handling" msgstr "" -#: gnu/packages/perl.scm:1637 +#: gnu/packages/perl.scm:1780 msgid "" "Dates are complex enough without times and timezones. This\n" "module may be used to create simple date objects. It handles validation,\n" @@ -8469,22 +9670,22 @@ msgid "" "hours, minutes, seconds, and time zones." msgstr "" -#: gnu/packages/perl.scm:1667 +#: gnu/packages/perl.scm:1810 msgid "Date and time object for Perl" msgstr "" -#: gnu/packages/perl.scm:1668 +#: gnu/packages/perl.scm:1811 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:1690 +#: gnu/packages/perl.scm:1833 msgid "Dates in the Julian calendar" msgstr "" -#: gnu/packages/perl.scm:1691 +#: gnu/packages/perl.scm:1834 msgid "" "This package is a companion module to @code{DateTime.pm}.\n" "It implements the Julian calendar. It supports everything that\n" @@ -8492,11 +9693,11 @@ msgid "" "precise." msgstr "" -#: gnu/packages/perl.scm:1717 +#: gnu/packages/perl.scm:1860 msgid "DateTime set objects" msgstr "" -#: gnu/packages/perl.scm:1718 +#: gnu/packages/perl.scm:1861 msgid "" "The DateTime::Set module provides a date/time sets\n" "implementation. It allows, for example, the generation of groups of dates,\n" @@ -8504,21 +9705,21 @@ msgid "" "within a time range." msgstr "" -#: gnu/packages/perl.scm:1741 +#: gnu/packages/perl.scm:1884 msgid "DateTime rfc2445 recurrences" msgstr "" -#: gnu/packages/perl.scm:1742 +#: gnu/packages/perl.scm:1885 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:1763 +#: gnu/packages/perl.scm:1906 msgid "DateTime::Set extension for basic recurrences" msgstr "" -#: gnu/packages/perl.scm:1764 +#: gnu/packages/perl.scm:1907 msgid "" "This module provides convenience methods that let you easily\n" "create DateTime::Set objects for various recurrences, such as \"once a month\"\n" @@ -8526,11 +9727,11 @@ msgid "" "\"every Monday, Wednesday and Thursday at 10:00 AM and 2:00 PM\"." msgstr "" -#: gnu/packages/perl.scm:1789 +#: gnu/packages/perl.scm:1932 msgid "Create DateTime parser classes and objects" msgstr "" -#: gnu/packages/perl.scm:1790 +#: gnu/packages/perl.scm:1933 msgid "" "DateTime::Format::Builder creates DateTime parsers. Many\n" "string formats of dates and times are simple and just require a basic regular\n" @@ -8538,43 +9739,43 @@ msgid "" "to do this without writing reams of structural code." msgstr "" -#: gnu/packages/perl.scm:1817 +#: gnu/packages/perl.scm:1960 msgid "Parse data/time strings" msgstr "" -#: gnu/packages/perl.scm:1818 +#: gnu/packages/perl.scm:1961 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:1844 +#: gnu/packages/perl.scm:1987 msgid "Parse and format iCal datetime and duration strings" msgstr "" -#: gnu/packages/perl.scm:1845 +#: gnu/packages/perl.scm:1988 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:1877 +#: gnu/packages/perl.scm:2020 msgid "Machine-readable date/time with natural parsing" msgstr "" -#: gnu/packages/perl.scm:1878 +#: gnu/packages/perl.scm:2021 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:1902 +#: gnu/packages/perl.scm:2045 msgid "Parse and format strp and strf time patterns" msgstr "" -#: gnu/packages/perl.scm:1903 +#: gnu/packages/perl.scm:2046 msgid "" "This module implements most of `strptime(3)`, the POSIX\n" "function that is the reverse of `strftime(3)`, for `DateTime`. While\n" @@ -8582,21 +9783,21 @@ msgid "" "takes a string and a pattern and returns the `DateTime` object associated." msgstr "" -#: gnu/packages/perl.scm:1928 +#: gnu/packages/perl.scm:2071 msgid "Localization support for DateTime.pm" msgstr "" -#: gnu/packages/perl.scm:1929 +#: gnu/packages/perl.scm:2072 msgid "" "The DateTime::Locale modules provide localization data for\n" "the DateTime.pm class." msgstr "" -#: gnu/packages/perl.scm:1956 +#: gnu/packages/perl.scm:2099 msgid "Time zone object for Perl" msgstr "" -#: gnu/packages/perl.scm:1957 +#: gnu/packages/perl.scm:2100 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" @@ -8606,32 +9807,32 @@ msgid "" "DateTime::TimeZone methods." msgstr "" -#: gnu/packages/perl.scm:1987 +#: gnu/packages/perl.scm:2130 msgid "Parse date/time strings" msgstr "" -#: gnu/packages/perl.scm:1988 +#: gnu/packages/perl.scm:2131 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:2009 +#: gnu/packages/perl.scm:2152 msgid "Convert between DateTime and RFC2822/822 formats" msgstr "" -#: gnu/packages/perl.scm:2010 +#: gnu/packages/perl.scm:2153 msgid "" "RFCs 2822 and 822 specify date formats to be used by email.\n" "This module parses and emits such dates." msgstr "" -#: gnu/packages/perl.scm:2032 +#: gnu/packages/perl.scm:2175 msgid "Parse and format W3CDTF datetime strings" msgstr "" -#: gnu/packages/perl.scm:2034 +#: gnu/packages/perl.scm:2177 msgid "" "This module understands the W3CDTF date/time format, an ISO 8601 profile,\n" "defined at https://www.w3.org/TR/NOTE-datetime. This format is the native date\n" @@ -8639,70 +9840,81 @@ msgid "" "the appropriate objects." msgstr "" -#: gnu/packages/perl.scm:2056 +#: gnu/packages/perl.scm:2199 msgid "Meatier version of caller" msgstr "" -#: gnu/packages/perl.scm:2057 +#: gnu/packages/perl.scm:2200 msgid "Devel::Caller provides meatier version of caller." msgstr "" -#: gnu/packages/perl.scm:2075 +#: gnu/packages/perl.scm:2218 msgid "Check that a command is available" msgstr "" -#: gnu/packages/perl.scm:2076 +#: gnu/packages/perl.scm:2219 msgid "" "Devel::CheckBin is a perl module that checks whether a\n" "particular command is available." msgstr "" -#: gnu/packages/perl.scm:2096 +#: gnu/packages/perl.scm:2238 +msgid "Check compiler availability" +msgstr "" + +#: gnu/packages/perl.scm:2239 +msgid "" +"@code{Devel::CheckCompiler} is a tiny module to check\n" +"whether a compiler is available. It can test for a C99 compiler, or\n" +"you can tell it to compile a C source file with optional linker flags." +msgstr "" + +#: gnu/packages/perl.scm:2260 msgid "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls" msgstr "" -#: gnu/packages/perl.scm:2097 +#: gnu/packages/perl.scm:2261 msgid "" "Devel::GlobalDestruction provides a function returning the\n" "equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls." msgstr "" -#: gnu/packages/perl.scm:2117 +#: gnu/packages/perl.scm:2281 msgid "Alias lexical variables" msgstr "" -#: gnu/packages/perl.scm:2118 +#: gnu/packages/perl.scm:2282 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:2140 +#: gnu/packages/perl.scm:2306 msgid "Introspect overloaded operators" msgstr "" -#: gnu/packages/perl.scm:2141 +#: gnu/packages/perl.scm:2307 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:2168 +#: gnu/packages/perl.scm:2334 msgid "Partial dumping of data structures" msgstr "" -#: gnu/packages/perl.scm:2169 +#: gnu/packages/perl.scm:2335 msgid "" "This module is a data dumper optimized for logging of\n" "arbitrary parameters." msgstr "" -#: gnu/packages/perl.scm:2187 +#: gnu/packages/perl.scm:2353 msgid "Object representing a stack trace" msgstr "" -#: gnu/packages/perl.scm:2188 +#: gnu/packages/perl.scm:2354 msgid "" "The Devel::StackTrace module contains two classes,\n" "Devel::StackTrace and Devel::StackTrace::Frame. These objects encapsulate the\n" @@ -8710,11 +9922,11 @@ msgid "" "providing a simple interface to this data." msgstr "" -#: gnu/packages/perl.scm:2210 +#: gnu/packages/perl.scm:2376 msgid "Displays stack trace in HTML" msgstr "" -#: gnu/packages/perl.scm:2211 +#: gnu/packages/perl.scm:2377 msgid "" "Devel::StackTrace::AsHTML adds as_html method to\n" "Devel::StackTrace which displays the stack trace in beautiful HTML, with code\n" @@ -8723,29 +9935,29 @@ msgid "" "each stack frame." msgstr "" -#: gnu/packages/perl.scm:2232 +#: gnu/packages/perl.scm:2398 msgid "Dump symbol names or the symbol table" msgstr "" -#: gnu/packages/perl.scm:2233 +#: gnu/packages/perl.scm:2399 msgid "Devel::Symdump provides access to the perl symbol table." msgstr "" -#: gnu/packages/perl.scm:2250 +#: gnu/packages/perl.scm:2416 msgid "Keyed-Hashing for Message Authentication" msgstr "" -#: gnu/packages/perl.scm:2251 +#: gnu/packages/perl.scm:2417 msgid "" "The Digest::HMAC module follows the common Digest::\n" "interface for the RFC 2104 HMAC mechanism." msgstr "" -#: gnu/packages/perl.scm:2276 +#: gnu/packages/perl.scm:2442 msgid "Perl interface to the MD-5 algorithm" msgstr "Perlgrænseflade til MD-5-algoritmen" -#: gnu/packages/perl.scm:2278 +#: gnu/packages/perl.scm:2444 msgid "" "The @code{Digest::MD5} module allows you to use the MD5 Message Digest\n" "algorithm from within Perl programs. The algorithm takes as\n" @@ -8753,41 +9965,41 @@ msgid "" "128-bit \"fingerprint\" or \"message digest\" of the input." msgstr "" -#: gnu/packages/perl.scm:2296 +#: gnu/packages/perl.scm:2462 msgid "Perl implementation of the SHA-1 message digest algorithm" msgstr "" -#: gnu/packages/perl.scm:2298 +#: gnu/packages/perl.scm:2464 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:2320 +#: gnu/packages/perl.scm:2486 msgid "Declare version conflicts for your dist" msgstr "" -#: gnu/packages/perl.scm:2321 +#: gnu/packages/perl.scm:2487 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:2341 +#: gnu/packages/perl.scm:2507 msgid "Detect the encoding of data" msgstr "" -#: gnu/packages/perl.scm:2342 +#: gnu/packages/perl.scm:2508 msgid "" "This package provides a class @code{Encode::Detect} to detect\n" "the encoding of data." msgstr "" -#: gnu/packages/perl.scm:2360 +#: gnu/packages/perl.scm:2526 msgid "ASCII mapping for eucJP encoding" msgstr "ASCII-oversættelse for eucJP-kodning" -#: gnu/packages/perl.scm:2361 +#: gnu/packages/perl.scm:2527 msgid "" "This package provides an ASCII mapping for the eucJP\n" "encoding." @@ -8795,21 +10007,21 @@ msgstr "" "Denne pakke tilbyder en ASCII-oversættelse for eucJP-\n" "kodningen." -#: gnu/packages/perl.scm:2379 +#: gnu/packages/perl.scm:2545 msgid "JIS X 0212 (aka JIS 2000) encodings" msgstr "JIS X 0212-kodninger (aka JIS 2000)" -#: gnu/packages/perl.scm:2380 +#: gnu/packages/perl.scm:2546 msgid "" "This package provides encodings for JIS X 0212, which is\n" "also known as JIS 2000." msgstr "" -#: gnu/packages/perl.scm:2398 +#: gnu/packages/perl.scm:2564 msgid "Additional Chinese encodings" msgstr "Yderligere kinesiske kodninger" -#: gnu/packages/perl.scm:2399 +#: gnu/packages/perl.scm:2565 msgid "" "This Perl module provides Chinese encodings that are not\n" "part of Perl by default, including \"BIG5-1984\", \"BIG5-2003\", \"BIG5PLUS\",\n" @@ -8817,11 +10029,11 @@ msgid "" "\"UNISYS\"." msgstr "" -#: gnu/packages/perl.scm:2421 +#: gnu/packages/perl.scm:2587 msgid "Advanced operations on path variables" msgstr "" -#: gnu/packages/perl.scm:2422 +#: gnu/packages/perl.scm:2588 msgid "" "@code{Env::Path} presents an object-oriented interface to\n" "path variables, defined as that subclass of environment variables which name\n" @@ -8829,11 +10041,11 @@ msgid "" "separator." msgstr "" -#: gnu/packages/perl.scm:2442 +#: gnu/packages/perl.scm:2608 msgid "OO-ish Error/Exception handling for Perl" msgstr "" -#: gnu/packages/perl.scm:2443 +#: gnu/packages/perl.scm:2609 msgid "" "The Error package provides two interfaces. Firstly Error\n" "provides a procedural interface to exception handling. Secondly Error is a\n" @@ -8841,11 +10053,11 @@ msgid "" "catch, or can simply be recorded." msgstr "" -#: gnu/packages/perl.scm:2468 +#: gnu/packages/perl.scm:2634 msgid "Safely and cleanly create closures via string eval" msgstr "" -#: gnu/packages/perl.scm:2469 +#: gnu/packages/perl.scm:2635 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" @@ -8859,32 +10071,32 @@ msgid "" "errors are rethrown automatically." msgstr "" -#: gnu/packages/perl.scm:2498 +#: gnu/packages/perl.scm:2664 msgid "Allows you to declare real exception classes in Perl" msgstr "" -#: gnu/packages/perl.scm:2499 +#: gnu/packages/perl.scm:2665 msgid "" "Exception::Class allows you to declare exception hierarchies\n" "in your modules in a \"Java-esque\" manner." msgstr "" -#: gnu/packages/perl.scm:2515 +#: gnu/packages/perl.scm:2681 msgid "Lightweight exporting of functions and variables" msgstr "" -#: gnu/packages/perl.scm:2517 +#: gnu/packages/perl.scm:2683 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:2537 +#: gnu/packages/perl.scm:2703 msgid "Exporter with the features of Sub::Exporter but only core dependencies" msgstr "" -#: gnu/packages/perl.scm:2538 +#: gnu/packages/perl.scm:2704 msgid "" "Exporter::Tiny supports many of Sub::Exporter's\n" "external-facing features including renaming imported functions with the `-as`,\n" @@ -8893,42 +10105,54 @@ msgid "" "only about 40% as many lines of code and with zero non-core dependencies." msgstr "" -#: gnu/packages/perl.scm:2561 +#: gnu/packages/perl.scm:2727 msgid "Build.PL install path logic made easy" msgstr "" -#: gnu/packages/perl.scm:2562 +#: gnu/packages/perl.scm:2728 msgid "" "This module tries to make install path resolution as easy as\n" "possible." msgstr "" -#: gnu/packages/perl.scm:2580 +#: gnu/packages/perl.scm:2746 msgid "Wrapper for perl's configuration" msgstr "" -#: gnu/packages/perl.scm:2581 +#: gnu/packages/perl.scm:2747 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:2600 +#: gnu/packages/perl.scm:2767 +msgid "Easily build XS extensions that depend on XS extensions" +msgstr "" + +#: gnu/packages/perl.scm:2769 +msgid "" +"This module tries to make it easy to build Perl extensions that use\n" +"functions and typemaps provided by other perl extensions. This means that a\n" +"perl extension is treated like a shared library that provides also a C and an\n" +"XS interface besides the perl one." +msgstr "" + +#: gnu/packages/perl.scm:2789 msgid "Various portability utilities for module builders" msgstr "" -#: gnu/packages/perl.scm:2601 +#: gnu/packages/perl.scm:2790 msgid "" "This module provides various portable helper functions for\n" "module building modules." msgstr "" -#: gnu/packages/perl.scm:2621 +#: gnu/packages/perl.scm:2810 msgid "Tool to build C libraries" -msgstr "" +msgstr "Værktøj til at bygge C-biblioteker" -#: gnu/packages/perl.scm:2622 +#: gnu/packages/perl.scm:2811 msgid "" "Some Perl modules need to ship C libraries together with\n" "their Perl code. Although there are mechanisms to compile and link (or glue)\n" @@ -8936,54 +10160,66 @@ msgid "" "self-contained C libraries. This module main goal is to help in that task." msgstr "" -#: gnu/packages/perl.scm:2654 +#: gnu/packages/perl.scm:2832 +msgid "Simplistic interface to pkg-config" +msgstr "" + +#: gnu/packages/perl.scm:2834 +msgid "" +"@code{ExtUtils::PkgConfig} is a very simplistic interface to the\n" +"@command{pkg-config} utility, intended for use in the @file{Makefile.PL}\n" +"of perl extensions which bind libraries that @command{pkg-config} knows.\n" +"It is really just boilerplate code that you would have written yourself." +msgstr "" + +#: gnu/packages/perl.scm:2866 msgid "Watch for changes to files" msgstr "" -#: gnu/packages/perl.scm:2655 +#: gnu/packages/perl.scm:2867 msgid "" "This module provides a class to monitor a directory for\n" "changes made to any file." msgstr "" -#: gnu/packages/perl.scm:2673 +#: gnu/packages/perl.scm:2885 msgid "Recursively copy files and directories" msgstr "" -#: gnu/packages/perl.scm:2674 +#: gnu/packages/perl.scm:2886 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:2696 +#: gnu/packages/perl.scm:2908 msgid "Alternative interface to File::Find" msgstr "" -#: gnu/packages/perl.scm:2697 +#: gnu/packages/perl.scm:2909 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:2720 +#: gnu/packages/perl.scm:2932 msgid "Common rules for searching for Perl things" -msgstr "" +msgstr "Gængse regler til at søge efter Perlsager" -#: gnu/packages/perl.scm:2721 +#: gnu/packages/perl.scm:2933 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:2742 +#: gnu/packages/perl.scm:2954 msgid "Matches patterns in a series of files" msgstr "" -#: gnu/packages/perl.scm:2743 +#: gnu/packages/perl.scm:2955 msgid "" "@code{File::Grep} provides similar functionality as perl's\n" "builtin @code{grep}, @code{map}, and @code{foreach} commands, but iterating\n" @@ -8991,11 +10227,11 @@ msgid "" "provide a quick dropin when such functionality is needed." msgstr "" -#: gnu/packages/perl.scm:2767 +#: gnu/packages/perl.scm:2979 msgid "Find your home and other directories on any platform" msgstr "" -#: gnu/packages/perl.scm:2768 +#: gnu/packages/perl.scm:2980 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" @@ -9003,35 +10239,50 @@ msgid "" "platforms." msgstr "" -#: gnu/packages/perl.scm:2790 +#: gnu/packages/perl.scm:3002 msgid "Create or remove directory trees" msgstr "" -#: gnu/packages/perl.scm:2791 +#: gnu/packages/perl.scm:3003 msgid "" "This module provide a convenient way to create directories\n" "of arbitrary depth and to delete an entire directory subtree from the\n" "file system." msgstr "" -#: gnu/packages/perl.scm:2817 +#: gnu/packages/perl.scm:3026 +msgid "Change directory temporarily for a limited scope" +msgstr "" + +#: gnu/packages/perl.scm:3027 +msgid "" +"@code{File::pushd} does a temporary @code{chdir} that is\n" +"easily and automatically reverted, similar to @code{pushd} in some Unix\n" +"command shells. It works by creating an object that caches the original\n" +"working directory. When the object is destroyed, the destructor calls\n" +"@code{chdir} to revert to the original working directory. By storing the\n" +"object in a lexical variable with a limited scope, this happens automatically\n" +"at the end of the scope." +msgstr "" + +#: gnu/packages/perl.scm:3057 msgid "" "Perl extension for crawling directory trees and compiling\n" "lists of files" msgstr "" -#: gnu/packages/perl.scm:2820 +#: gnu/packages/perl.scm:3060 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:2839 +#: gnu/packages/perl.scm:3079 msgid "Remove files and directories in Perl" msgstr "" -#: gnu/packages/perl.scm:2840 +#: gnu/packages/perl.scm:3080 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" @@ -9039,11 +10290,11 @@ msgid "" "accepts wildcards, * and ?, as arguments for file names." msgstr "" -#: gnu/packages/perl.scm:2864 +#: gnu/packages/perl.scm:3104 msgid "Locate per-dist and per-module shared files" msgstr "" -#: gnu/packages/perl.scm:2865 +#: gnu/packages/perl.scm:3105 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" @@ -9053,83 +10304,83 @@ msgid "" "the installation." msgstr "" -#: gnu/packages/perl.scm:2887 +#: gnu/packages/perl.scm:3127 msgid "Install shared files" msgstr "" -#: gnu/packages/perl.scm:2888 +#: gnu/packages/perl.scm:3128 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:2907 +#: gnu/packages/perl.scm:3147 msgid "Reading/Writing/Modifying of complete files" msgstr "" -#: gnu/packages/perl.scm:2908 +#: gnu/packages/perl.scm:3148 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:2931 +#: gnu/packages/perl.scm:3171 msgid "Simple, sane and efficient module to slurp a file" msgstr "" -#: gnu/packages/perl.scm:2932 +#: gnu/packages/perl.scm:3172 msgid "" "This module provides functions for fast and correct file\n" "slurping and spewing. All functions are optionally exported." msgstr "" -#: gnu/packages/perl.scm:2949 +#: gnu/packages/perl.scm:3189 msgid "Simple file reader and writer" -msgstr "" +msgstr "Simpel fillæser og skriver" -#: gnu/packages/perl.scm:2951 +#: gnu/packages/perl.scm:3191 msgid "This module provides functions for fast reading and writing of files." -msgstr "" +msgstr "Dette modul tilbyder funktioner til hurtig læsning og skrivning af filer." -#: gnu/packages/perl.scm:2970 +#: gnu/packages/perl.scm:3210 msgid "Return name and handle of a temporary file safely" msgstr "" -#: gnu/packages/perl.scm:2971 +#: gnu/packages/perl.scm:3211 msgid "" "File::Temp can be used to create and open temporary files in\n" "a safe way." msgstr "" -#: gnu/packages/perl.scm:2988 +#: gnu/packages/perl.scm:3228 msgid "Portable implementation of the `which' utility" msgstr "" -#: gnu/packages/perl.scm:2990 +#: gnu/packages/perl.scm:3230 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:3011 +#: gnu/packages/perl.scm:3251 msgid "Extended Unix style glob functionality" msgstr "" -#: gnu/packages/perl.scm:3012 +#: gnu/packages/perl.scm:3252 msgid "" "@code{File::Zglob} provides a traditional Unix @code{glob}\n" "functionality; it returns a list of file names that match the given pattern.\n" "For instance, it supports the @code{**/*.pm} form." msgstr "" -#: gnu/packages/perl.scm:3031 +#: gnu/packages/perl.scm:3271 msgid "Module to handle parsing command line options" msgstr "" -#: gnu/packages/perl.scm:3032 +#: gnu/packages/perl.scm:3272 msgid "" "The @code{Getopt::Long} module implements an extended getopt\n" "function called @code{GetOptions()}. It parses the command line from\n" @@ -9143,11 +10394,11 @@ msgid "" "single-letter approach, is provided but not enabled by default." msgstr "" -#: gnu/packages/perl.scm:3065 +#: gnu/packages/perl.scm:3305 msgid "Getopt::Long, but simpler and more powerful" msgstr "" -#: gnu/packages/perl.scm:3066 +#: gnu/packages/perl.scm:3306 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" @@ -9155,31 +10406,31 @@ msgid "" "usage (help) messages, data validation, and a few other useful features." msgstr "" -#: gnu/packages/perl.scm:3084 +#: gnu/packages/perl.scm:3324 msgid "Table-driven argument parsing for Perl" msgstr "" -#: gnu/packages/perl.scm:3086 +#: gnu/packages/perl.scm:3326 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:3108 +#: gnu/packages/perl.scm:3348 msgid "Graph data structures and algorithms" msgstr "" -#: gnu/packages/perl.scm:3109 +#: gnu/packages/perl.scm:3349 msgid "" "This is @code{Graph}, a Perl module for dealing with graphs,\n" "the abstract data structures." msgstr "" -#: gnu/packages/perl.scm:3126 +#: gnu/packages/perl.scm:3366 msgid "Safe cleanup blocks implemented as guards" msgstr "" -#: gnu/packages/perl.scm:3127 +#: gnu/packages/perl.scm:3367 msgid "" "@code{Guard} implements so-called @dfn{guards}. A guard is\n" "something (usually an object) that \"guards\" a resource, ensuring that it is\n" @@ -9190,11 +10441,11 @@ msgid "" "which are tied to the scope exit." msgstr "" -#: gnu/packages/perl.scm:3150 +#: gnu/packages/perl.scm:3390 msgid "Merge arbitrarily deep hashes into a single hash" msgstr "" -#: gnu/packages/perl.scm:3151 +#: gnu/packages/perl.scm:3391 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" @@ -9204,21 +10455,21 @@ msgid "" "merged." msgstr "" -#: gnu/packages/perl.scm:3173 +#: gnu/packages/perl.scm:3413 msgid "Store multiple values per key" msgstr "" -#: gnu/packages/perl.scm:3174 +#: gnu/packages/perl.scm:3414 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:3194 +#: gnu/packages/perl.scm:3434 msgid "Import packages into other packages" -msgstr "" +msgstr "Importer pakker ind i andre pakker" -#: gnu/packages/perl.scm:3195 +#: gnu/packages/perl.scm:3435 msgid "" "Writing exporters is a pain. Some use Exporter, some use\n" "Sub::Exporter, some use Moose::Exporter, some use Exporter::Declare ... and\n" @@ -9228,22 +10479,22 @@ msgid "" "compilation. Import::Into provides global methods to make this painless." msgstr "" -#: gnu/packages/perl.scm:3217 +#: gnu/packages/perl.scm:3457 msgid "Use modules in inc/ if newer than installed" msgstr "" -#: gnu/packages/perl.scm:3218 +#: gnu/packages/perl.scm:3458 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:3239 +#: gnu/packages/perl.scm:3479 msgid "Capture STDOUT and STDERR from Perl code, subprocesses or XS" msgstr "" -#: gnu/packages/perl.scm:3240 +#: gnu/packages/perl.scm:3480 msgid "" "@code{IO::CaptureOutput} provides routines for capturing\n" "@code{STDOUT} and @code{STDERR} from perl subroutines, forked system\n" @@ -9253,64 +10504,64 @@ msgid "" "try @code{Capture::Tiny} instead." msgstr "" -#: gnu/packages/perl.scm:3262 +#: gnu/packages/perl.scm:3502 msgid "Utilities for interactive I/O" msgstr "" -#: gnu/packages/perl.scm:3263 +#: gnu/packages/perl.scm:3503 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:3282 +#: gnu/packages/perl.scm:3522 msgid "Emulate file interface for in-core strings" msgstr "" -#: gnu/packages/perl.scm:3283 +#: gnu/packages/perl.scm:3523 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:3301 +#: gnu/packages/perl.scm:3541 msgid "IO:: interface for reading/writing an array of lines" msgstr "" -#: gnu/packages/perl.scm:3302 +#: gnu/packages/perl.scm:3542 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:3320 +#: gnu/packages/perl.scm:3560 msgid "Perl interface to pseudo ttys" msgstr "" -#: gnu/packages/perl.scm:3322 +#: gnu/packages/perl.scm:3562 msgid "" "This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to\n" "pseudo ttys." msgstr "" -#: gnu/packages/perl.scm:3340 +#: gnu/packages/perl.scm:3580 msgid "Run interactive command-line programs" msgstr "" -#: gnu/packages/perl.scm:3341 +#: gnu/packages/perl.scm:3581 msgid "" "@code{IPC::Cmd} allows for the searching and execution of\n" "any binary on your system. It adheres to verbosity settings and is able to\n" "run interactively. It also has an option to capture output/error buffers." msgstr "" -#: gnu/packages/perl.scm:3370 +#: gnu/packages/perl.scm:3610 msgid "Run system() and background procs w/ piping, redirs, ptys" msgstr "" -#: gnu/packages/perl.scm:3371 +#: gnu/packages/perl.scm:3611 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" @@ -9318,11 +10569,11 @@ msgid "" "both supported and may be mixed." msgstr "" -#: gnu/packages/perl.scm:3389 +#: gnu/packages/perl.scm:3629 msgid "Run a subprocess with input/output redirection" -msgstr "" +msgstr "Afvikl en underproces med inddata/uddata-videresendelse" -#: gnu/packages/perl.scm:3391 +#: gnu/packages/perl.scm:3631 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" @@ -9330,21 +10581,21 @@ msgid "" "Perlish API and none of the bloat and rarely used features of IPC::Run." msgstr "" -#: gnu/packages/perl.scm:3415 +#: gnu/packages/perl.scm:3655 msgid "Lightweight interface to shared memory" msgstr "" -#: gnu/packages/perl.scm:3416 +#: gnu/packages/perl.scm:3656 msgid "" "IPC::ShareLite provides a simple interface to shared memory,\n" "allowing data to be efficiently communicated between processes." msgstr "" -#: gnu/packages/perl.scm:3434 +#: gnu/packages/perl.scm:3674 msgid "Run commands simply, with detailed diagnostics" msgstr "" -#: gnu/packages/perl.scm:3435 +#: gnu/packages/perl.scm:3675 msgid "" "Calling Perl's in-built @code{system} function is easy,\n" "determining if it was successful is hard. Let's face it, @code{$?} isn't the\n" @@ -9355,21 +10606,21 @@ msgid "" "commands." msgstr "" -#: gnu/packages/perl.scm:3460 +#: gnu/packages/perl.scm:3700 msgid "JSON encoder/decoder for Perl" msgstr "" -#: gnu/packages/perl.scm:3461 +#: gnu/packages/perl.scm:3701 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:3486 +#: gnu/packages/perl.scm:3726 msgid "Wrapper for Perl JSON classes" msgstr "" -#: gnu/packages/perl.scm:3488 +#: gnu/packages/perl.scm:3728 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" @@ -9377,11 +10628,11 @@ msgid "" "installed." msgstr "" -#: gnu/packages/perl.scm:3512 +#: gnu/packages/perl.scm:3752 msgid "Cpanel::JSON::XS with fallback" msgstr "" -#: gnu/packages/perl.scm:3513 +#: gnu/packages/perl.scm:3753 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" @@ -9389,15 +10640,15 @@ msgid "" "either uses the first module it finds or throws an error." msgstr "" -#: gnu/packages/perl.scm:3536 +#: gnu/packages/perl.scm:3776 msgid "JSON serialising/deserialising for Perl" msgstr "" -#: gnu/packages/perl.scm:3555 +#: gnu/packages/perl.scm:3795 msgid "Bringing loggers and listeners together" msgstr "" -#: gnu/packages/perl.scm:3556 +#: gnu/packages/perl.scm:3796 msgid "" "@code{Log::Any} provides a standard log production API for\n" "modules. @code{Log::Any::Adapter} allows applications to choose the mechanism\n" @@ -9415,32 +10666,32 @@ msgid "" "logging mechanism." msgstr "" -#: gnu/packages/perl.scm:3592 +#: gnu/packages/perl.scm:3832 msgid "Log::Any adapter for Log::Log4perl" msgstr "" -#: gnu/packages/perl.scm:3593 +#: gnu/packages/perl.scm:3833 msgid "" "@code{Log::Any::Adapter::Log4perl} provides a\n" "@code{Log::Any} adapter using @code{Log::Log4perl} for logging." msgstr "" -#: gnu/packages/perl.scm:3614 +#: gnu/packages/perl.scm:3854 msgid "Log4j implementation for Perl" msgstr "" -#: gnu/packages/perl.scm:3615 +#: gnu/packages/perl.scm:3855 msgid "" "@code{Log::Log4perl} lets you remote-control and fine-tune\n" "the logging behaviour of your system from the outside. It implements the\n" "widely popular (Java-based) Log4j logging package in pure Perl." msgstr "" -#: gnu/packages/perl.scm:3635 +#: gnu/packages/perl.scm:3875 msgid "Log::Report in the lightest form" msgstr "" -#: gnu/packages/perl.scm:3637 +#: gnu/packages/perl.scm:3877 msgid "" "This module allows libraries to have a dependency to a small module\n" "instead of the full Log-Report distribution. The full power of\n" @@ -9450,59 +10701,59 @@ msgid "" "version." msgstr "" -#: gnu/packages/perl.scm:3662 +#: gnu/packages/perl.scm:3902 msgid "Get messages to users and logs" msgstr "" -#: gnu/packages/perl.scm:3664 +#: gnu/packages/perl.scm:3904 msgid "" "@code{Log::Report} combines three tasks which are closely related in\n" "one: logging, exceptions, and translations." msgstr "" -#: gnu/packages/perl.scm:3682 +#: gnu/packages/perl.scm:3922 msgid "Transliterate text between writing systems" msgstr "" -#: gnu/packages/perl.scm:3683 +#: gnu/packages/perl.scm:3923 msgid "" "@code{Lingua::Translit} can be used to convert text from one\n" "writing system to another, based on national or international transliteration\n" "tables. Where possible a reverse transliteration is supported." msgstr "" -#: gnu/packages/perl.scm:3707 +#: gnu/packages/perl.scm:3947 msgid "Combination of List::Util and List::MoreUtils" msgstr "" -#: gnu/packages/perl.scm:3708 +#: gnu/packages/perl.scm:3948 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:3730 +#: gnu/packages/perl.scm:3970 msgid "Compare elements of two or more lists" msgstr "" -#: gnu/packages/perl.scm:3731 +#: gnu/packages/perl.scm:3971 msgid "" "@code{List::Compare} provides a module to perform\n" "comparative operations on two or more lists. Provided operations include\n" "intersections, unions, unique elements, complements and many more." msgstr "" -#: gnu/packages/perl.scm:3756 gnu/packages/perl.scm:3783 +#: gnu/packages/perl.scm:3996 gnu/packages/perl.scm:4023 msgid "Provide the stuff missing in List::Util" msgstr "" -#: gnu/packages/perl.scm:3757 +#: gnu/packages/perl.scm:3997 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:3784 +#: gnu/packages/perl.scm:4024 msgid "" "@code{List::SomeUtils} provides some trivial but commonly\n" "needed functionality on lists which is not going to go into @code{List::Util}.\n" @@ -9514,43 +10765,43 @@ msgid "" "portions of this module couldn't be compiled on this machine." msgstr "" -#: gnu/packages/perl.scm:3808 +#: gnu/packages/perl.scm:4048 msgid "Expiry plug-in for Memoize that adds LRU cache expiration" msgstr "" -#: gnu/packages/perl.scm:3809 +#: gnu/packages/perl.scm:4049 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:3827 +#: gnu/packages/perl.scm:4067 msgid "Charset information for MIME messages" msgstr "" -#: gnu/packages/perl.scm:3829 +#: gnu/packages/perl.scm:4069 msgid "" "@code{MIME::Charset} provides information about character sets used for\n" "MIME messages on Internet." msgstr "" -#: gnu/packages/perl.scm:3847 +#: gnu/packages/perl.scm:4087 msgid "Definition of MIME types" msgstr "" -#: gnu/packages/perl.scm:3848 +#: gnu/packages/perl.scm:4088 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:3870 +#: gnu/packages/perl.scm:4110 msgid "Write your linewise code for handles; this does the rest" msgstr "" -#: gnu/packages/perl.scm:3871 +#: gnu/packages/perl.scm:4111 msgid "" "It's boring to deal with opening files for IO, converting\n" "strings to handle-like objects, and all that. With\n" @@ -9559,21 +10810,21 @@ msgid "" "file names are added for you." msgstr "" -#: gnu/packages/perl.scm:3898 +#: gnu/packages/perl.scm:4138 msgid "Enable all of the features of Modern Perl with one import" msgstr "" -#: gnu/packages/perl.scm:3899 +#: gnu/packages/perl.scm:4139 msgid "" "@code{Modern::Perl} provides a simple way to enable\n" "multiple, by now, standard libraries in a Perl program." msgstr "" -#: gnu/packages/perl.scm:3927 +#: gnu/packages/perl.scm:4167 msgid "Tiny replacement for Module::Build" msgstr "" -#: gnu/packages/perl.scm:3928 +#: gnu/packages/perl.scm:4168 msgid "" "Many Perl distributions use a Build.PL file instead of a\n" "Makefile.PL file to drive distribution configuration, build, test and\n" @@ -9583,11 +10834,39 @@ msgid "" "has less than 120, yet supports the features needed by most distributions." msgstr "" -#: gnu/packages/perl.scm:3950 +#: gnu/packages/perl.scm:4196 +msgid "Module::Build class for building XS modules" +msgstr "" + +#: gnu/packages/perl.scm:4198 +msgid "" +"@code{Module::Build::XSUtil} is subclass of @code{Module::Build}\n" +"for support building XS modules.\n" +"\n" +"This is a list of a new parameters in the @code{Module::Build::new} method:\n" +"\n" +"@enumerate\n" +"@item @code{needs_compiler_c99}: This option checks C99 compiler availability.\n" +"@item @code{needs_compiler_cpp}: This option checks C++ compiler availability.\n" +"Can also pass @code{extra_compiler_flags} and @code{extra_linker_flags} for C++.\n" +"@item @code{generate_ppport_h}: Generate @file{ppport.h} by @code{Devel::PPPort}.\n" +"@item @code{generate_xshelper_h}: Generate @file{xshelper.h} which is a helper\n" +"header file to include @file{EXTERN.h}, @file{perl.h}, @file{XSUB.h} and\n" +"@file{ppport.h}, and defines some portability stuff which are not supported by\n" +"@file{ppport.h}.\n" +"\n" +"It is ported from @code{Module::Install::XSUtil}.\n" +"@item @code{cc_warnings}: Toggle compiler warnings. Enabled by default.\n" +"@item @code{-g options}: Invoke @file{Build.PL} with @code{-g} to enable\n" +"debug options.\n" +"@end enumerate" +msgstr "" + +#: gnu/packages/perl.scm:4234 msgid "Find and use installed modules in a (sub)category" msgstr "" -#: gnu/packages/perl.scm:3951 +#: gnu/packages/perl.scm:4235 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" @@ -9595,11 +10874,11 @@ msgid "" "subcategories." msgstr "" -#: gnu/packages/perl.scm:3977 +#: gnu/packages/perl.scm:4261 msgid "Loads alternate underlying implementations for a module" msgstr "" -#: gnu/packages/perl.scm:3978 +#: gnu/packages/perl.scm:4262 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" @@ -9608,11 +10887,11 @@ msgid "" "implementations." msgstr "" -#: gnu/packages/perl.scm:4016 +#: gnu/packages/perl.scm:4300 msgid "Standalone, extensible Perl module installer" msgstr "" -#: gnu/packages/perl.scm:4017 +#: gnu/packages/perl.scm:4301 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" @@ -9620,52 +10899,52 @@ msgid "" "installation version 5.005 or newer." msgstr "" -#: gnu/packages/perl.scm:4038 +#: gnu/packages/perl.scm:4322 msgid "Give your Perl module the ability to have plugins" msgstr "" -#: gnu/packages/perl.scm:4039 +#: gnu/packages/perl.scm:4323 msgid "" "This module provides a simple but extensible way of having\n" "'plugins' for your Perl module." msgstr "" -#: gnu/packages/perl.scm:4058 +#: gnu/packages/perl.scm:4342 msgid "Perl runtime module handling" msgstr "" -#: gnu/packages/perl.scm:4059 +#: gnu/packages/perl.scm:4343 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:4082 +#: gnu/packages/perl.scm:4366 msgid "Provide information on conflicts for Module::Runtime" msgstr "" -#: gnu/packages/perl.scm:4083 +#: gnu/packages/perl.scm:4367 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:4104 +#: gnu/packages/perl.scm:4388 msgid "Recursively scan Perl code for dependencies" msgstr "" -#: gnu/packages/perl.scm:4105 +#: gnu/packages/perl.scm:4389 msgid "" "Module::ScanDeps is a module to recursively scan Perl\n" "programs for dependencies." msgstr "" -#: gnu/packages/perl.scm:4125 +#: gnu/packages/perl.scm:4409 msgid "Module name tools and transformations" msgstr "" -#: gnu/packages/perl.scm:4126 +#: gnu/packages/perl.scm:4410 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" @@ -9673,11 +10952,11 @@ msgid "" "module names to relative paths." msgstr "" -#: gnu/packages/perl.scm:4156 +#: gnu/packages/perl.scm:4440 msgid "Minimalist Object Orientation (with Moose compatibility)" msgstr "" -#: gnu/packages/perl.scm:4157 +#: gnu/packages/perl.scm:4441 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" @@ -9685,11 +10964,11 @@ msgid "" "Moose and is optimised for rapid startup." msgstr "" -#: gnu/packages/perl.scm:4233 +#: gnu/packages/perl.scm:4517 msgid "Postmodern object system for Perl 5" msgstr "" -#: gnu/packages/perl.scm:4235 +#: gnu/packages/perl.scm:4519 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" @@ -9700,11 +10979,11 @@ msgid "" "sentences." msgstr "" -#: gnu/packages/perl.scm:4263 +#: gnu/packages/perl.scm:4547 msgid "Emulate Class::Accessor::Fast behavior using Moose attributes" msgstr "" -#: gnu/packages/perl.scm:4264 +#: gnu/packages/perl.scm:4548 msgid "" "This module attempts to emulate the behavior of\n" "Class::Accessor::Fast as accurately as possible using the Moose attribute\n" @@ -9712,21 +10991,21 @@ msgid "" "private methods are not." msgstr "" -#: gnu/packages/perl.scm:4296 +#: gnu/packages/perl.scm:4580 msgid "Moose role for processing command line options" msgstr "" -#: gnu/packages/perl.scm:4297 +#: gnu/packages/perl.scm:4581 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:4318 +#: gnu/packages/perl.scm:4602 msgid "Mark overload code symbols as methods" msgstr "" -#: gnu/packages/perl.scm:4319 +#: gnu/packages/perl.scm:4603 msgid "" "MooseX::MarkAsMethods allows one to easily mark certain\n" "functions as Moose methods. This will allow other packages such as\n" @@ -9736,21 +11015,21 @@ msgid "" "overloads will \"just work\"." msgstr "" -#: gnu/packages/perl.scm:4349 +#: gnu/packages/perl.scm:4633 msgid "Code attribute introspection" msgstr "" -#: gnu/packages/perl.scm:4350 +#: gnu/packages/perl.scm:4634 msgid "" "This module allows code attributes of methods to be\n" "introspected using Moose meta method objects." msgstr "" -#: gnu/packages/perl.scm:4376 +#: gnu/packages/perl.scm:4660 msgid "Subclassing of non-Moose classes" msgstr "" -#: gnu/packages/perl.scm:4377 +#: gnu/packages/perl.scm:4661 msgid "" "MooseX::NonMoose allows for easily subclassing non-Moose\n" "classes with Moose, taking care of the details connected with doing this, such\n" @@ -9759,31 +11038,31 @@ msgid "" "BUILD methods are called. It tries to be as non-intrusive as possible." msgstr "" -#: gnu/packages/perl.scm:4406 +#: gnu/packages/perl.scm:4690 msgid "Extension of Params::Validate using Moose's types" msgstr "" -#: gnu/packages/perl.scm:4407 +#: gnu/packages/perl.scm:4691 msgid "" "This module fills a gap in Moose by adding method parameter\n" "validation to Moose." msgstr "" -#: gnu/packages/perl.scm:4428 +#: gnu/packages/perl.scm:4712 msgid "Apply roles to a related Perl class" msgstr "" -#: gnu/packages/perl.scm:4429 +#: gnu/packages/perl.scm:4713 msgid "" "This module applies roles to make a subclass instead of\n" "manually setting up a subclass." msgstr "" -#: gnu/packages/perl.scm:4456 +#: gnu/packages/perl.scm:4740 msgid "Moose roles with composition parameters" msgstr "" -#: gnu/packages/perl.scm:4457 +#: gnu/packages/perl.scm:4741 msgid "" "Because Moose roles serve many different masters, they\n" "usually provide only the least common denominator of functionality. To\n" @@ -9793,11 +11072,11 @@ msgid "" "Parameterized roles offer a solution to these (and other) kinds of problems." msgstr "" -#: gnu/packages/perl.scm:4483 +#: gnu/packages/perl.scm:4767 msgid "Roles which support overloading" msgstr "" -#: gnu/packages/perl.scm:4484 +#: gnu/packages/perl.scm:4768 msgid "" "MooseX::Role::WithOverloading allows you to write a\n" "Moose::Role which defines overloaded operators and allows those overload\n" @@ -9805,11 +11084,11 @@ msgid "" "where plain Moose::Roles would lose the overloading." msgstr "" -#: gnu/packages/perl.scm:4506 +#: gnu/packages/perl.scm:4790 msgid "Name your accessors foo() and set_foo()" msgstr "" -#: gnu/packages/perl.scm:4507 +#: gnu/packages/perl.scm:4791 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" @@ -9817,96 +11096,118 @@ msgid "" "accessor, while set methods are prefixed with \"_set_\"." msgstr "" -#: gnu/packages/perl.scm:4533 +#: gnu/packages/perl.scm:4817 msgid "Strict object constructors for Moose" msgstr "" -#: gnu/packages/perl.scm:4534 +#: gnu/packages/perl.scm:4818 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:4562 +#: gnu/packages/perl.scm:4846 msgid "Trait loading and resolution for Moose" msgstr "" -#: gnu/packages/perl.scm:4563 +#: gnu/packages/perl.scm:4847 msgid "" "Adds support on top of MooseX::Traits for class precedence\n" "search for traits and some extra attributes." msgstr "" -#: gnu/packages/perl.scm:4589 +#: gnu/packages/perl.scm:4873 msgid "Organise your Moose types in libraries" msgstr "" -#: gnu/packages/perl.scm:4590 +#: gnu/packages/perl.scm:4874 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:4621 +#: gnu/packages/perl.scm:4905 msgid "DateTime related constraints and coercions for Moose" msgstr "" -#: gnu/packages/perl.scm:4622 +#: gnu/packages/perl.scm:4906 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:4654 +#: gnu/packages/perl.scm:4938 msgid "Extensions to MooseX::Types::DateTime" msgstr "" -#: gnu/packages/perl.scm:4655 +#: gnu/packages/perl.scm:4939 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:4684 +#: gnu/packages/perl.scm:4968 msgid "ClassName type constraints for Moose" msgstr "" -#: gnu/packages/perl.scm:4685 +#: gnu/packages/perl.scm:4969 msgid "" "MooseX::Types::LoadableClass provides a ClassName type\n" "constraint with coercion to load the class." msgstr "" -#: gnu/packages/perl.scm:4709 +#: gnu/packages/perl.scm:4993 msgid "Moosish types and type builder" msgstr "" -#: gnu/packages/perl.scm:4710 +#: gnu/packages/perl.scm:4994 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:4729 +#: gnu/packages/perl.scm:5023 +msgid "Fast Moose-compatible object system for perl5" +msgstr "" + +#: gnu/packages/perl.scm:5025 +msgid "" +"Mouse is a @code{Moose} compatible object system that implements a\n" +"subset of the functionality for reduced startup time." +msgstr "" + +#: gnu/packages/perl.scm:5047 +msgid "Extend attribute interfaces for Mouse" +msgstr "Udvid attributgrænseflader for Mouse" + +#: gnu/packages/perl.scm:5049 +msgid "" +"While @code{Mouse} attributes provide a way to name your accessors,\n" +"readers, writers, clearers and predicates, @code{MouseX::NativeTraits}\n" +"provides commonly used attribute helper methods for more specific types\n" +"of data." +msgstr "" + +#: gnu/packages/perl.scm:5069 msgid "Mozilla's CA cert bundle in PEM format" msgstr "" -#: gnu/packages/perl.scm:4730 +#: gnu/packages/perl.scm:5070 msgid "" "@code{Mozilla::CA} provides a copy of Mozilla's bundle of\n" "Certificate Authority certificates in a form that can be consumed by modules\n" "and libraries based on OpenSSL." msgstr "" -#: gnu/packages/perl.scm:4749 +#: gnu/packages/perl.scm:5089 msgid "MRO interface compatibility for Perls < 5.9.5" msgstr "" -#: gnu/packages/perl.scm:4750 +#: gnu/packages/perl.scm:5090 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" @@ -9914,11 +11215,11 @@ msgid "" "Perl (back to 5.6.0)." msgstr "" -#: gnu/packages/perl.scm:4777 +#: gnu/packages/perl.scm:5117 msgid "Keep imports out of your namespace" msgstr "" -#: gnu/packages/perl.scm:4778 +#: gnu/packages/perl.scm:5118 msgid "" "The namespace::autoclean pragma will remove all imported\n" "symbols at the end of the current package's compile cycle. Functions called\n" @@ -9929,11 +11230,11 @@ msgid "" "anything that looks like a method." msgstr "" -#: gnu/packages/perl.scm:4804 +#: gnu/packages/perl.scm:5144 msgid "Keep imports and functions out of your namespace" msgstr "" -#: gnu/packages/perl.scm:4805 +#: gnu/packages/perl.scm:5145 msgid "" "The namespace::clean pragma will remove all previously\n" "declared or imported symbols at the end of the current package's compile\n" @@ -9941,11 +11242,11 @@ msgid "" "name, but they won't show up as methods on your class or instances." msgstr "" -#: gnu/packages/perl.scm:4828 +#: gnu/packages/perl.scm:5168 msgid "Perl client for Etsy's statsd daemon" msgstr "Perlklient for Etsy's statsd-dæmonen" -#: gnu/packages/perl.scm:4829 +#: gnu/packages/perl.scm:5169 msgid "" "This module implement a UDP client for the statsd statistics\n" "collector daemon in use at Etsy.com." @@ -9953,64 +11254,76 @@ msgstr "" "Dette modul implementerer en UDP-klient for statsd-statistik\n" "indsamlingsdæmonen i brug på Etsy.com." -#: gnu/packages/perl.scm:4847 +#: gnu/packages/perl.scm:5187 msgid "Numeric comparisons" msgstr "Numeriske sammenligninger" -#: gnu/packages/perl.scm:4848 +#: gnu/packages/perl.scm:5188 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:4866 +#: gnu/packages/perl.scm:5206 msgid "Generate cryptographic signatures for objects" msgstr "Opret kryptografiske underskrifter for objekter" -#: gnu/packages/perl.scm:4867 +#: gnu/packages/perl.scm:5207 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:4889 +#: gnu/packages/perl.scm:5228 +msgid "Read and write OLE storage files" +msgstr "" + +#: gnu/packages/perl.scm:5229 +msgid "" +"This module allows you to read and write\n" +"an OLE-Structured file. @dfn{OLE} (Object Linking and Embedding) is a\n" +"technology to store hierarchical information such as links to other\n" +"documents within a single file." +msgstr "" + +#: gnu/packages/perl.scm:5252 msgid "Anonymous packages" msgstr "Anonyme pakker" -#: gnu/packages/perl.scm:4890 +#: gnu/packages/perl.scm:5253 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:4918 +#: gnu/packages/perl.scm:5281 msgid "Manage deprecation warnings for your distribution" msgstr "Håndter forældelsesadvarseler for din distribution" -#: gnu/packages/perl.scm:4919 +#: gnu/packages/perl.scm:5282 msgid "" "This module allows you to manage a set of deprecations for\n" "one or more modules." msgstr "" -#: gnu/packages/perl.scm:4946 +#: gnu/packages/perl.scm:5309 msgid "Routines for manipulating stashes" msgstr "" -#: gnu/packages/perl.scm:4947 +#: gnu/packages/perl.scm:5310 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:4970 +#: gnu/packages/perl.scm:5333 msgid "Faster implementation of the Package::Stash API" msgstr "" -#: gnu/packages/perl.scm:4971 +#: gnu/packages/perl.scm:5334 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" @@ -10018,11 +11331,11 @@ msgid "" "compiler." msgstr "" -#: gnu/packages/perl.scm:4991 +#: gnu/packages/perl.scm:5354 msgid "Play with other peoples' lexical variables" msgstr "" -#: gnu/packages/perl.scm:4992 +#: gnu/packages/perl.scm:5355 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" @@ -10030,31 +11343,42 @@ msgid "" "is particularly useful for debugging." msgstr "" -#: gnu/packages/perl.scm:5013 +#: gnu/packages/perl.scm:5379 +msgid "Simple parallel processing fork manager" +msgstr "Simpel prallel behandlingsforgreningshåndtering" + +#: gnu/packages/perl.scm:5380 +msgid "" +"@code{Parallel::ForkManager} is intended for use in\n" +"operations that can be done in parallel where the number of\n" +"processes to be forked off should be limited." +msgstr "" + +#: gnu/packages/perl.scm:5400 msgid "Simple, compact and correct param-checking functions" msgstr "" -#: gnu/packages/perl.scm:5015 +#: gnu/packages/perl.scm:5402 msgid "" "Params::Util provides a basic set of importable functions that makes\n" "checking parameters easier." msgstr "" -#: gnu/packages/perl.scm:5039 +#: gnu/packages/perl.scm:5426 msgid "Validate method/function parameters" msgstr "" -#: gnu/packages/perl.scm:5040 +#: gnu/packages/perl.scm:5427 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:5058 +#: gnu/packages/perl.scm:5445 msgid "Create and manipulate PAR distributions" msgstr "Opret og manipuler PAR-distributioner" -#: gnu/packages/perl.scm:5059 +#: gnu/packages/perl.scm:5446 msgid "" "PAR::Dist is a toolkit to create and manipulate PAR\n" "distributions." @@ -10062,69 +11386,69 @@ msgstr "" "PAR::Dist er et værktøjssæt til at oprette og manipulere PAR-\n" "distributioner." -#: gnu/packages/perl.scm:5078 +#: gnu/packages/perl.scm:5465 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:5097 +#: gnu/packages/perl.scm:5484 msgid "Path specification manipulation" msgstr "" -#: gnu/packages/perl.scm:5098 +#: gnu/packages/perl.scm:5485 msgid "" "Path::Class is a module for manipulation of file and\n" "directory specifications in a cross-platform manner." msgstr "" -#: gnu/packages/perl.scm:5122 +#: gnu/packages/perl.scm:5509 msgid "File path utility" msgstr "" -#: gnu/packages/perl.scm:5123 +#: gnu/packages/perl.scm:5510 msgid "" "This module provides a small, fast utility for working\n" "with file paths." msgstr "" -#: gnu/packages/perl.scm:5144 +#: gnu/packages/perl.scm:5531 msgid "Fast and correct UTF-8 IO" msgstr "" -#: gnu/packages/perl.scm:5145 +#: gnu/packages/perl.scm:5532 msgid "" "@code{PerlIO::utf8_strict} provides a fast and correct UTF-8\n" "PerlIO layer. Unlike Perl's default @code{:utf8} layer it checks the input\n" "for correctness." msgstr "" -#: gnu/packages/perl.scm:5166 +#: gnu/packages/perl.scm:5553 msgid "Check for comprehensive documentation of a module" msgstr "" -#: gnu/packages/perl.scm:5167 +#: gnu/packages/perl.scm:5554 msgid "" "This module provides a mechanism for determining if the pod\n" "for a given module is comprehensive." msgstr "" -#: gnu/packages/perl.scm:5184 +#: gnu/packages/perl.scm:5571 msgid "Parsing library for text in Pod format" msgstr "" -#: gnu/packages/perl.scm:5185 +#: gnu/packages/perl.scm:5572 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:5206 +#: gnu/packages/perl.scm:5593 msgid "GNU C library compatible strftime for loggers and servers" msgstr "" -#: gnu/packages/perl.scm:5207 +#: gnu/packages/perl.scm:5594 msgid "" "POSIX::strftime::Compiler provides GNU C library compatible\n" "strftime(3). But this module is not affected by the system locale. This\n" @@ -10132,22 +11456,22 @@ msgid "" "applications." msgstr "" -#: gnu/packages/perl.scm:5225 +#: gnu/packages/perl.scm:5612 msgid "Information about the currently running perl" msgstr "" -#: gnu/packages/perl.scm:5227 +#: gnu/packages/perl.scm:5614 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:5249 +#: gnu/packages/perl.scm:5636 msgid "Create read-only scalars, arrays, hashes" msgstr "" -#: gnu/packages/perl.scm:5250 +#: gnu/packages/perl.scm:5637 msgid "" "This module provides a facility for creating non-modifiable\n" "variables in Perl. This is useful for configuration files, headers, etc. It\n" @@ -10155,11 +11479,11 @@ msgid "" "variables that should not be changed." msgstr "" -#: gnu/packages/perl.scm:5268 +#: gnu/packages/perl.scm:5655 msgid "Provide commonly requested regular expressions" msgstr "" -#: gnu/packages/perl.scm:5270 +#: gnu/packages/perl.scm:5657 msgid "" "This module exports a single hash (`%RE') that stores or generates\n" "commonly needed regular expressions. Patterns currently provided include:\n" @@ -10169,29 +11493,29 @@ msgid "" "codes." msgstr "" -#: gnu/packages/perl.scm:5300 +#: gnu/packages/perl.scm:5687 msgid "Roles, as a slice of Moose" msgstr "" -#: gnu/packages/perl.scm:5301 +#: gnu/packages/perl.scm:5688 msgid "Role::Tiny is a minimalist role composition tool." msgstr "" -#: gnu/packages/perl.scm:5318 +#: gnu/packages/perl.scm:5705 msgid "Call isa, can, does, and DOES safely" msgstr "" -#: gnu/packages/perl.scm:5319 +#: gnu/packages/perl.scm:5706 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:5337 +#: gnu/packages/perl.scm:5724 msgid "Lexically-scoped resource management" msgstr "" -#: gnu/packages/perl.scm:5338 +#: gnu/packages/perl.scm:5725 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" @@ -10202,29 +11526,29 @@ msgid "" "collector." msgstr "" -#: gnu/packages/perl.scm:5361 +#: gnu/packages/perl.scm:5748 msgid "Infinite sets" msgstr "" -#: gnu/packages/perl.scm:5362 +#: gnu/packages/perl.scm:5749 msgid "Set::Infinite is a set theory module for infinite sets." msgstr "" -#: gnu/packages/perl.scm:5382 +#: gnu/packages/perl.scm:5769 msgid "Unordered collections of Perl Objects" msgstr "" -#: gnu/packages/perl.scm:5383 +#: gnu/packages/perl.scm:5770 msgid "" "Set::Object provides efficient sets, unordered collections\n" "of Perl objects without duplicates for scalars and references." msgstr "" -#: gnu/packages/perl.scm:5401 +#: gnu/packages/perl.scm:5788 msgid "Set operations for Perl" msgstr "" -#: gnu/packages/perl.scm:5402 +#: gnu/packages/perl.scm:5789 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" @@ -10232,21 +11556,21 @@ msgid "" "compact." msgstr "" -#: gnu/packages/perl.scm:5422 +#: gnu/packages/perl.scm:5809 msgid "Sort arrays by one or multiple calculated keys" msgstr "" -#: gnu/packages/perl.scm:5423 +#: gnu/packages/perl.scm:5810 msgid "" "This Perl module provides various functions to quickly sort\n" "arrays by one or multiple calculated keys." msgstr "" -#: gnu/packages/perl.scm:5441 +#: gnu/packages/perl.scm:5828 msgid "Spiffy Perl Interface Framework For You" msgstr "" -#: gnu/packages/perl.scm:5442 +#: gnu/packages/perl.scm:5829 msgid "" "Spiffy is a framework and methodology for doing object\n" "oriented (OO) programming in Perl. Spiffy combines the best parts of\n" @@ -10256,11 +11580,11 @@ msgid "" "other OO languages like Python, Ruby, Java and Perl 6." msgstr "" -#: gnu/packages/perl.scm:5464 +#: gnu/packages/perl.scm:5851 msgid "Temporary buffer to save bytes" msgstr "" -#: gnu/packages/perl.scm:5465 +#: gnu/packages/perl.scm:5852 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" @@ -10268,62 +11592,62 @@ msgid "" "on the length of the size." msgstr "" -#: gnu/packages/perl.scm:5485 +#: gnu/packages/perl.scm:5872 msgid "Turn on strict and make all warnings fatal" msgstr "" -#: gnu/packages/perl.scm:5486 +#: gnu/packages/perl.scm:5873 msgid "" "Strictures turns on strict and make all warnings fatal when\n" "run from within a source-controlled directory." msgstr "" -#: gnu/packages/perl.scm:5504 +#: gnu/packages/perl.scm:5891 msgid "Camelcase and de-camelcase" msgstr "" -#: gnu/packages/perl.scm:5505 +#: gnu/packages/perl.scm:5892 msgid "" "This module may be used to convert from under_score text to\n" "CamelCase and back again." msgstr "" -#: gnu/packages/perl.scm:5525 +#: gnu/packages/perl.scm:5912 msgid "Rewrite strings based on a set of known prefixes" msgstr "" -#: gnu/packages/perl.scm:5526 +#: gnu/packages/perl.scm:5913 msgid "" "This module allows you to rewrite strings based on a set of\n" "known prefixes." msgstr "" -#: gnu/packages/perl.scm:5545 +#: gnu/packages/perl.scm:5932 msgid "String printing alternatives to printf" msgstr "" -#: gnu/packages/perl.scm:5547 +#: gnu/packages/perl.scm:5934 msgid "" "This module inserts values into (translated) strings. It provides\n" "@code{printf} and @code{sprintf} alternatives via both an object-oriented and\n" "a functional interface." msgstr "" -#: gnu/packages/perl.scm:5570 +#: gnu/packages/perl.scm:5957 msgid "Sophisticated exporter for custom-built routines" msgstr "" -#: gnu/packages/perl.scm:5572 +#: gnu/packages/perl.scm:5959 msgid "" "Sub::Exporter provides a sophisticated alternative to Exporter.pm for\n" "custom-built routines." msgstr "" -#: gnu/packages/perl.scm:5591 +#: gnu/packages/perl.scm:5978 msgid "Only use Sub::Exporter if you need it" msgstr "" -#: gnu/packages/perl.scm:5592 +#: gnu/packages/perl.scm:5979 msgid "" "Sub::Exporter is an incredibly powerful module, but with\n" "that power comes great responsibility, as well as some runtime penalties.\n" @@ -10333,54 +11657,54 @@ msgid "" "renaming exports, if they try to use them." msgstr "" -#: gnu/packages/perl.scm:5614 +#: gnu/packages/perl.scm:6001 msgid "Retrieve names of code references" msgstr "" -#: gnu/packages/perl.scm:5615 +#: gnu/packages/perl.scm:6002 msgid "" "Sub::Identify allows you to retrieve the real name of code\n" "references." msgstr "" -#: gnu/packages/perl.scm:5634 +#: gnu/packages/perl.scm:6021 msgid "Install subroutines into packages easily" msgstr "" -#: gnu/packages/perl.scm:5636 +#: gnu/packages/perl.scm:6023 msgid "" "Sub::Install makes it easy to install subroutines into packages without\n" "the unsightly mess of C<no strict> or typeglobs lying about where just anyone\n" "can see them." msgstr "" -#: gnu/packages/perl.scm:5657 +#: gnu/packages/perl.scm:6044 msgid "(Re)name a sub" msgstr "" -#: gnu/packages/perl.scm:5658 +#: gnu/packages/perl.scm:6045 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:5677 +#: gnu/packages/perl.scm:6064 msgid "Apparently run a function in a higher stack frame" msgstr "" -#: gnu/packages/perl.scm:5678 +#: gnu/packages/perl.scm:6065 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:5697 +#: gnu/packages/perl.scm:6084 msgid "Perl extension for generating SVG documents" msgstr "" -#: gnu/packages/perl.scm:5698 +#: gnu/packages/perl.scm:6085 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" @@ -10389,32 +11713,42 @@ msgid "" "animation content." msgstr "" -#: gnu/packages/perl.scm:5717 -msgid "Perl extension for getting CPU information" +#: gnu/packages/perl.scm:6106 +msgid "Switch statement for Perl" +msgstr "Skift udtryk for Perl" + +#: gnu/packages/perl.scm:6107 +msgid "" +"Switch is a Perl module which implements a generalized case\n" +"mechanism. The module augments the standard Perl syntax with two new\n" +"statements: @code{switch} and @code{case}." msgstr "" -#: gnu/packages/perl.scm:5719 +#: gnu/packages/perl.scm:6124 +msgid "Perl extension for getting CPU information" +msgstr "Perludvidelse til at indhente cpu-information" + +#: gnu/packages/perl.scm:6126 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." +"Sys::CPU is a module for counting the number of CPUs on a system, and\n" +"determining their type and clock speed." msgstr "" -#: gnu/packages/perl.scm:5741 +#: gnu/packages/perl.scm:6147 msgid "Get full hostname in Perl" msgstr "" -#: gnu/packages/perl.scm:5742 +#: gnu/packages/perl.scm:6148 msgid "" "Sys::Hostname::Long tries very hard to get the full hostname\n" "of a system." msgstr "" -#: gnu/packages/perl.scm:5760 +#: gnu/packages/perl.scm:6166 msgid "Ensure that a platform has weaken support" msgstr "" -#: gnu/packages/perl.scm:5761 +#: gnu/packages/perl.scm:6167 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" @@ -10424,11 +11758,11 @@ msgid "" "error encouraging the user to seek support." msgstr "" -#: gnu/packages/perl.scm:5786 +#: gnu/packages/perl.scm:6192 msgid "Template processing system for Perl" msgstr "" -#: gnu/packages/perl.scm:5787 +#: gnu/packages/perl.scm:6193 msgid "" "The Template Toolkit is a collection of modules which\n" "implement an extensible template processing system. It was originally\n" @@ -10437,42 +11771,42 @@ msgid "" "documents: HTML, XML, POD, PostScript, LaTeX, and so on." msgstr "" -#: gnu/packages/perl.scm:5810 +#: gnu/packages/perl.scm:6216 msgid "Profiling for Template Toolkit" msgstr "" -#: gnu/packages/perl.scm:5811 +#: gnu/packages/perl.scm:6217 msgid "" "Template::Timer provides inline profiling of the template\n" "processing in Perl code." msgstr "" -#: gnu/packages/perl.scm:5829 +#: gnu/packages/perl.scm:6235 msgid "Detect encoding of the current terminal" msgstr "" -#: gnu/packages/perl.scm:5830 +#: gnu/packages/perl.scm:6236 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:5854 +#: gnu/packages/perl.scm:6260 msgid "Progress meter on a standard terminal" msgstr "" -#: gnu/packages/perl.scm:5855 +#: gnu/packages/perl.scm:6261 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:5878 +#: gnu/packages/perl.scm:6284 msgid "Progress meter if run interactively" msgstr "" -#: gnu/packages/perl.scm:5879 +#: gnu/packages/perl.scm:6285 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" @@ -10480,21 +11814,21 @@ msgid "" "a cron job) then it does not show the progress bar." msgstr "" -#: gnu/packages/perl.scm:5901 +#: gnu/packages/perl.scm:6307 msgid "Simple progress bars" msgstr "" -#: gnu/packages/perl.scm:5902 +#: gnu/packages/perl.scm:6308 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:5920 +#: gnu/packages/perl.scm:6326 msgid "Simple terminal control" msgstr "Simpel terminalkontrol" -#: gnu/packages/perl.scm:5921 +#: gnu/packages/perl.scm:6327 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" @@ -10503,22 +11837,22 @@ msgid "" "screen size, and retrieval/modification of the control characters." msgstr "" -#: gnu/packages/perl.scm:5948 +#: gnu/packages/perl.scm:6354 msgid "Data-driven testing framework for Perl" msgstr "" -#: gnu/packages/perl.scm:5949 +#: gnu/packages/perl.scm:6355 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:5976 +#: gnu/packages/perl.scm:6382 msgid "Easily create test classes in an xUnit/JUnit style" msgstr "" -#: gnu/packages/perl.scm:5977 +#: gnu/packages/perl.scm:6383 msgid "" "@code{Test::Class} provides a simple way of creating classes\n" "and objects to test your code in an xUnit style.\n" @@ -10528,21 +11862,21 @@ msgid "" "@code{Test::Differences}, @code{Test::Exception}, etc.)." msgstr "" -#: gnu/packages/perl.scm:6009 +#: gnu/packages/perl.scm:6415 msgid "Test classes the easy way" msgstr "" -#: gnu/packages/perl.scm:6010 +#: gnu/packages/perl.scm:6416 msgid "" "@code{Test::Class::Most} provides some more convenience when\n" "using @code{Test::Class}." msgstr "" -#: gnu/packages/perl.scm:6040 +#: gnu/packages/perl.scm:6448 msgid "Check for uncleaned imports" msgstr "" -#: gnu/packages/perl.scm:6041 +#: gnu/packages/perl.scm:6449 msgid "" "This module lets you check your module's namespaces for\n" "imported functions you might have forgotten to remove with\n" @@ -10550,11 +11884,11 @@ msgid "" "called as methods, which usually isn't want you want." msgstr "" -#: gnu/packages/perl.scm:6061 +#: gnu/packages/perl.scm:6469 msgid "Flexible deep comparison for the Test::Builder framework" msgstr "" -#: gnu/packages/perl.scm:6063 +#: gnu/packages/perl.scm:6471 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" @@ -10562,21 +11896,21 @@ msgid "" "structures without getting caught in an infinite loop." msgstr "" -#: gnu/packages/perl.scm:6089 +#: gnu/packages/perl.scm:6497 msgid "Test strings and data structures and show differences" msgstr "" -#: gnu/packages/perl.scm:6090 +#: gnu/packages/perl.scm:6498 msgid "" "This module exports three test functions and four diff-style\n" "functions." msgstr "" -#: gnu/packages/perl.scm:6111 +#: gnu/packages/perl.scm:6519 msgid "Perl extension for maintaining test directories" msgstr "" -#: gnu/packages/perl.scm:6112 +#: gnu/packages/perl.scm:6520 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" @@ -10586,76 +11920,76 @@ msgid "" "files, as well as to verify that there are no missing or unknown files." msgstr "" -#: gnu/packages/perl.scm:6138 +#: gnu/packages/perl.scm:6546 msgid "Test exception based code" msgstr "" -#: gnu/packages/perl.scm:6139 +#: gnu/packages/perl.scm:6547 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:6159 +#: gnu/packages/perl.scm:6567 msgid "Simple helpers for testing code with exceptions" msgstr "" -#: gnu/packages/perl.scm:6160 +#: gnu/packages/perl.scm:6568 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:6184 +#: gnu/packages/perl.scm:6592 msgid "Ease software testing with files and directories" msgstr "" -#: gnu/packages/perl.scm:6185 +#: gnu/packages/perl.scm:6593 msgid "" "This library provides functions to enable testing of files\n" "and directories. For instance, the @code{file_ok} helper can test whether the\n" "contents of a file is equal to a particular string." msgstr "" -#: gnu/packages/perl.scm:6215 +#: gnu/packages/perl.scm:6623 msgid "Run Perl standard test scripts with statistics" msgstr "" -#: gnu/packages/perl.scm:6216 +#: gnu/packages/perl.scm:6624 msgid "" "Simple test harness which allows tests to be run and results\n" "automatically aggregated and output to STDOUT." msgstr "" -#: gnu/packages/perl.scm:6234 +#: gnu/packages/perl.scm:6642 msgid "Traces memory leaks in Perl" msgstr "" -#: gnu/packages/perl.scm:6235 +#: gnu/packages/perl.scm:6643 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:6254 +#: gnu/packages/perl.scm:6662 msgid "Tests strings for equality, with more helpful failures" msgstr "" -#: gnu/packages/perl.scm:6255 +#: gnu/packages/perl.scm:6663 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:6276 +#: gnu/packages/perl.scm:6684 msgid "Interact with a t/test_manifest file" msgstr "" -#: gnu/packages/perl.scm:6277 +#: gnu/packages/perl.scm:6685 msgid "" "@code{Test::Manifest} overrides the default test file order. Instead of\n" "running all of the t/*.t files in ASCII-betical order, it looks in the t/test_manifest\n" @@ -10663,22 +11997,22 @@ msgid "" "It constructs the right value for the build system to do the right thing." msgstr "" -#: gnu/packages/perl.scm:6306 +#: gnu/packages/perl.scm:6714 msgid "Emulate troublesome interfaces in Perl" msgstr "" -#: gnu/packages/perl.scm:6307 +#: gnu/packages/perl.scm:6715 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:6326 +#: gnu/packages/perl.scm:6734 msgid "Replaces actual time with simulated time" msgstr "" -#: gnu/packages/perl.scm:6327 +#: gnu/packages/perl.scm:6735 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" @@ -10687,22 +12021,37 @@ msgid "" "to gmtime,time or localtime." msgstr "" -#: gnu/packages/perl.scm:6354 +#: gnu/packages/perl.scm:6762 msgid "Most commonly needed test functions and features" msgstr "" -#: gnu/packages/perl.scm:6355 +#: gnu/packages/perl.scm:6763 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:6373 +#: gnu/packages/perl.scm:6786 +msgid "Skip tests when modules not available" +msgstr "" + +#: gnu/packages/perl.scm:6787 +msgid "" +"@code{Test::Needs} allows you to skip test scripts if\n" +"modules are not available. The requested modules will be loaded, and\n" +"optionally have their versions checked. If the module is missing, the test\n" +"script will be skipped. Modules that are found but fail to compile will exit\n" +"with an error rather than skip.\n" +"\n" +"If used in a subtest, the remainder of the subtest will be skipped." +msgstr "" + +#: gnu/packages/perl.scm:6809 msgid "Ensure no warnings are produced while testing" msgstr "" -#: gnu/packages/perl.scm:6375 +#: gnu/packages/perl.scm:6811 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" @@ -10711,91 +12060,104 @@ msgid "" "including a stack trace of what was going on when it occurred." msgstr "" -#: gnu/packages/perl.scm:6400 +#: gnu/packages/perl.scm:6834 +msgid "Compare the difference between numbers against a given tolerance" +msgstr "" + +#: gnu/packages/perl.scm:6836 +msgid "" +"At some point or another, most programmers find they need to compare\n" +"floating-point numbers for equality. The typical idiom is to test if the\n" +"absolute value of the difference of the numbers is within a desired tolerance,\n" +"usually called epsilon. This module provides such a function for use with\n" +"@code{Test::More}." +msgstr "" + +#: gnu/packages/perl.scm:6859 msgid "Utilities to test STDOUT and STDERR messages" msgstr "" -#: gnu/packages/perl.scm:6402 +#: gnu/packages/perl.scm:6861 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:6424 +#: gnu/packages/perl.scm:6883 msgid "Check for POD errors in files" msgstr "" -#: gnu/packages/perl.scm:6425 +#: gnu/packages/perl.scm:6884 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:6445 +#: gnu/packages/perl.scm:6904 msgid "Check for pod coverage" msgstr "" -#: gnu/packages/perl.scm:6446 +#: gnu/packages/perl.scm:6905 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:6464 +#: gnu/packages/perl.scm:6923 msgid "Checks to see if the module can be loaded" msgstr "" -#: gnu/packages/perl.scm:6465 +#: gnu/packages/perl.scm:6924 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:6484 +#: gnu/packages/perl.scm:6943 msgid "Basic cross-platform tests for scripts" msgstr "" -#: gnu/packages/perl.scm:6486 +#: gnu/packages/perl.scm:6945 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:6509 +#: gnu/packages/perl.scm:6968 msgid "Fork test in Perl" msgstr "" -#: gnu/packages/perl.scm:6510 +#: gnu/packages/perl.scm:6969 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:6526 +#: gnu/packages/perl.scm:6985 msgid "Basic utilities for writing tests" msgstr "" -#: gnu/packages/perl.scm:6528 +#: gnu/packages/perl.scm:6987 msgid "Test::Simple contains basic utilities for writing tests." msgstr "" -#: gnu/packages/perl.scm:6545 +#: gnu/packages/perl.scm:7004 msgid "Simplify running Test::Builder tests" msgstr "" -#: gnu/packages/perl.scm:6547 +#: gnu/packages/perl.scm:7006 msgid "" "Test::Tester allows testing of test modules based on Test::Builder with\n" "a minimum of effort." msgstr "" -#: gnu/packages/perl.scm:6573 +#: gnu/packages/perl.scm:7032 msgid "Trap exit codes, exceptions, output, and so on" msgstr "" -#: gnu/packages/perl.scm:6574 +#: gnu/packages/perl.scm:7033 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" @@ -10803,11 +12165,11 @@ msgid "" "from boxed blocks of test code." msgstr "" -#: gnu/packages/perl.scm:6594 +#: gnu/packages/perl.scm:7053 msgid "UTF-8 testing in Perl" msgstr "" -#: gnu/packages/perl.scm:6595 +#: gnu/packages/perl.scm:7054 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" @@ -10815,21 +12177,21 @@ msgid "" "will check that string has a given set of characteristics." msgstr "" -#: gnu/packages/perl.scm:6617 +#: gnu/packages/perl.scm:7076 msgid "Perl extension to test methods for warnings" msgstr "" -#: gnu/packages/perl.scm:6618 +#: gnu/packages/perl.scm:7077 msgid "" "This module provides a few convenience methods for testing\n" "warning based code." msgstr "" -#: gnu/packages/perl.scm:6636 +#: gnu/packages/perl.scm:7095 msgid "Test for warnings and the lack of them" msgstr "" -#: gnu/packages/perl.scm:6637 +#: gnu/packages/perl.scm:7096 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" @@ -10838,11 +12200,11 @@ msgid "" "plan, or not, and things will still Just Work." msgstr "" -#: gnu/packages/perl.scm:6658 +#: gnu/packages/perl.scm:7117 msgid "Test fallback behaviour in absence of modules" msgstr "" -#: gnu/packages/perl.scm:6659 +#: gnu/packages/perl.scm:7118 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" @@ -10850,62 +12212,62 @@ msgid "" "installed." msgstr "" -#: gnu/packages/perl.scm:6686 +#: gnu/packages/perl.scm:7145 msgid "Dynamic generation of tests" msgstr "" -#: gnu/packages/perl.scm:6687 +#: gnu/packages/perl.scm:7146 msgid "" "The Test::WriteVariants module provides for the dynamic\n" "generation of tests in nested combinations of contexts." msgstr "" -#: gnu/packages/perl.scm:6707 +#: gnu/packages/perl.scm:7166 msgid "Testing module for YAML implementations" msgstr "" -#: gnu/packages/perl.scm:6708 +#: gnu/packages/perl.scm:7167 msgid "" "Test::YAML is a subclass of Test::Base with YAML specific\n" "support." msgstr "" -#: gnu/packages/perl.scm:6727 +#: gnu/packages/perl.scm:7186 msgid "Align text" msgstr "" -#: gnu/packages/perl.scm:6728 +#: gnu/packages/perl.scm:7187 msgid "" "Text::Aligner exports a single function, align(), which is\n" "used to justify strings to various alignment styles." msgstr "" -#: gnu/packages/perl.scm:6746 +#: gnu/packages/perl.scm:7205 msgid "Extract delimited text sequences from strings" msgstr "" -#: gnu/packages/perl.scm:6747 +#: gnu/packages/perl.scm:7206 msgid "" "The Text::Balanced module can be used to extract delimited\n" "text sequences from strings." msgstr "" -#: gnu/packages/perl.scm:6765 +#: gnu/packages/perl.scm:7224 msgid "Manipulate comma-separated values" msgstr "" -#: gnu/packages/perl.scm:6766 +#: gnu/packages/perl.scm:7225 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:6785 +#: gnu/packages/perl.scm:7244 msgid "Rountines for manipulating CSV files" msgstr "" -#: gnu/packages/perl.scm:6786 +#: gnu/packages/perl.scm:7245 msgid "" "@code{Text::CSV_XS} provides facilities for the composition\n" "and decomposition of comma-separated values. An instance of the\n" @@ -10915,11 +12277,11 @@ msgid "" "and escapes." msgstr "" -#: gnu/packages/perl.scm:6810 +#: gnu/packages/perl.scm:7269 msgid "Perform diffs on files and record sets" msgstr "" -#: gnu/packages/perl.scm:6811 +#: gnu/packages/perl.scm:7270 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" @@ -10928,33 +12290,33 @@ msgid "" "generally slower on larger files." msgstr "" -#: gnu/packages/perl.scm:6833 +#: gnu/packages/perl.scm:7292 msgid "Match globbing patterns against text" msgstr "" -#: gnu/packages/perl.scm:6834 +#: gnu/packages/perl.scm:7293 msgid "" "Text::Glob implements glob(3) style matching that can be\n" "used to match against text, rather than fetching names from a file system. If\n" "you want to do full file globbing use the File::Glob module instead." msgstr "" -#: gnu/packages/perl.scm:6857 +#: gnu/packages/perl.scm:7316 msgid "Fast, middleweight template engine" msgstr "" -#: gnu/packages/perl.scm:6859 +#: gnu/packages/perl.scm:7318 msgid "" "Text::NeatTemplate provides a simple, middleweight but fast\n" "template engine, for when you need speed rather than complex features,\n" "yet need more features than simple variable substitution." msgstr "" -#: gnu/packages/perl.scm:6878 +#: gnu/packages/perl.scm:7337 msgid "Convert between Roman and Arabic algorisms" msgstr "" -#: gnu/packages/perl.scm:6879 +#: gnu/packages/perl.scm:7338 msgid "" "This package provides functions to convert between Roman and\n" "Arabic algorisms. It supports both conventional Roman algorisms (which range\n" @@ -10962,27 +12324,27 @@ msgid "" "algorism to indicate multiplication by 1000." msgstr "" -#: gnu/packages/perl.scm:6899 +#: gnu/packages/perl.scm:7358 msgid "Simple ASCII tables" msgstr "" -#: gnu/packages/perl.scm:6900 +#: gnu/packages/perl.scm:7359 msgid "Text::SimpleTable draws simple ASCII tables." msgstr "" -#: gnu/packages/perl.scm:6921 +#: gnu/packages/perl.scm:7380 msgid "Organize Data in Tables" msgstr "" -#: gnu/packages/perl.scm:6922 +#: gnu/packages/perl.scm:7381 msgid "Text::Table renders plaintext tables." msgstr "" -#: gnu/packages/perl.scm:6939 +#: gnu/packages/perl.scm:7398 msgid "Provide plain ASCII transliterations of Unicode text" msgstr "" -#: gnu/packages/perl.scm:6940 +#: gnu/packages/perl.scm:7399 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" @@ -10992,21 +12354,21 @@ msgid "" "system." msgstr "" -#: gnu/packages/perl.scm:6968 +#: gnu/packages/perl.scm:7427 msgid "Role for classes that can be thrown" msgstr "" -#: gnu/packages/perl.scm:6969 +#: gnu/packages/perl.scm:7428 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:6986 +#: gnu/packages/perl.scm:7445 msgid "Perl script tidier" msgstr "" -#: gnu/packages/perl.scm:6987 +#: gnu/packages/perl.scm:7446 msgid "" "This package contains a Perl script which indents and\n" "reformats Perl scripts to make them easier to read. The formatting can be\n" @@ -11014,21 +12376,21 @@ msgid "" "approximately follow the suggestions in the Perl Style Guide." msgstr "" -#: gnu/packages/perl.scm:7007 +#: gnu/packages/perl.scm:7466 msgid "Cycle through a list of values" msgstr "" -#: gnu/packages/perl.scm:7008 +#: gnu/packages/perl.scm:7467 msgid "" "You use @code{Tie::Cycle} to go through a list over and over\n" "again. Once you get to the end of the list, you go back to the beginning." msgstr "" -#: gnu/packages/perl.scm:7027 +#: gnu/packages/perl.scm:7486 msgid "Ordered associative arrays for Perl" msgstr "" -#: gnu/packages/perl.scm:7028 +#: gnu/packages/perl.scm:7487 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" @@ -11037,42 +12399,42 @@ msgid "" "operations can also be performed on the IxHash." msgstr "" -#: gnu/packages/perl.scm:7051 +#: gnu/packages/perl.scm:7510 msgid "Tie to an existing Perl object" msgstr "" -#: gnu/packages/perl.scm:7052 +#: gnu/packages/perl.scm:7511 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:7074 +#: gnu/packages/perl.scm:7533 msgid "English expression of durations" msgstr "" -#: gnu/packages/perl.scm:7075 +#: gnu/packages/perl.scm:7534 msgid "" "This module provides functions for expressing durations in\n" "rounded or exact terms." msgstr "" -#: gnu/packages/perl.scm:7097 +#: gnu/packages/perl.scm:7556 msgid "Parse time duration strings" msgstr "" -#: gnu/packages/perl.scm:7098 +#: gnu/packages/perl.scm:7557 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:7116 +#: gnu/packages/perl.scm:7575 msgid "Efficiently compute time from local and GMT time" msgstr "" -#: gnu/packages/perl.scm:7117 +#: gnu/packages/perl.scm:7576 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" @@ -11080,80 +12442,80 @@ msgid "" "the system epoch." msgstr "" -#: gnu/packages/perl.scm:7137 +#: gnu/packages/perl.scm:7596 msgid "Date parsing/formatting subroutines" msgstr "" -#: gnu/packages/perl.scm:7138 +#: gnu/packages/perl.scm:7597 msgid "" "This module provides routines for parsing date string into\n" "time values and formatting dates into ASCII strings." msgstr "" -#: gnu/packages/perl.scm:7160 +#: gnu/packages/perl.scm:7619 msgid "Shift and scale time" msgstr "" -#: gnu/packages/perl.scm:7161 +#: gnu/packages/perl.scm:7620 msgid "" "This module allows you to speed up your sleep(), alarm(),\n" "and time() calls." msgstr "" -#: gnu/packages/perl.scm:7184 +#: gnu/packages/perl.scm:7643 msgid "Simple tree object" msgstr "" -#: gnu/packages/perl.scm:7185 +#: gnu/packages/perl.scm:7644 msgid "" "This module in a fully object-oriented implementation of a\n" "simple n-ary tree." msgstr "" -#: gnu/packages/perl.scm:7209 +#: gnu/packages/perl.scm:7668 msgid "Factory object for dispensing Visitor objects" msgstr "" -#: gnu/packages/perl.scm:7210 +#: gnu/packages/perl.scm:7669 msgid "" "This module is a factory for dispensing\n" "Tree::Simple::Visitor::* objects." msgstr "" -#: gnu/packages/perl.scm:7228 -msgid "Minimal try/catch with proper preservation of $@" +#: gnu/packages/perl.scm:7687 +msgid "Minimal try/catch with proper preservation of $@@" msgstr "" -#: gnu/packages/perl.scm:7229 +#: gnu/packages/perl.scm:7688 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:7250 +#: gnu/packages/perl.scm:7709 msgid "Data types for common serialisation formats" msgstr "" -#: gnu/packages/perl.scm:7251 +#: gnu/packages/perl.scm:7710 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:7269 +#: gnu/packages/perl.scm:7728 msgid "Unicode normalization forms" msgstr "" -#: gnu/packages/perl.scm:7270 +#: gnu/packages/perl.scm:7729 msgid "This Perl module provides Unicode normalization forms." msgstr "" -#: gnu/packages/perl.scm:7289 +#: gnu/packages/perl.scm:7748 msgid "Unicode collation algorithm" msgstr "" -#: gnu/packages/perl.scm:7290 +#: gnu/packages/perl.scm:7749 msgid "" "This package provides tools for sorting and comparing\n" "Unicode data." @@ -11161,52 +12523,52 @@ msgstr "" "Denne pakke tilbyder værktøjer for sortering og sammenligning\n" "af Uniocodedata." -#: gnu/packages/perl.scm:7311 +#: gnu/packages/perl.scm:7770 msgid "Unicode line breaking algorithm" msgstr "" -#: gnu/packages/perl.scm:7313 +#: gnu/packages/perl.scm:7772 msgid "" "@code{Unicode::LineBreak} implements the line breaking algorithm\n" "described in Unicode Standard Annex #14. The @code{East_Asian_Width} property\n" "defined by Annex #11 is used to determine breaking positions." msgstr "" -#: gnu/packages/perl.scm:7336 +#: gnu/packages/perl.scm:7795 msgid "Encoding and decoding of UTF-8 encoding form" msgstr "" -#: gnu/packages/perl.scm:7338 +#: gnu/packages/perl.scm:7797 msgid "" "This module provides functions to encode and decode UTF-8 encoding form\n" "as specified by Unicode and ISO/IEC 10646:2011." msgstr "" -#: gnu/packages/perl.scm:7356 +#: gnu/packages/perl.scm:7815 msgid "UNIVERSAL::can() reimplementation" msgstr "" -#: gnu/packages/perl.scm:7357 +#: gnu/packages/perl.scm:7816 msgid "" "This module attempts to work around people calling\n" "UNIVERSAL::can() as a function, which it is not." msgstr "" -#: gnu/packages/perl.scm:7377 +#: gnu/packages/perl.scm:7836 msgid "UNIVERSAL::isa() reimplementation" msgstr "" -#: gnu/packages/perl.scm:7378 +#: gnu/packages/perl.scm:7837 msgid "" "This module attempts to recover from people calling\n" "UNIVERSAL::isa as a function." msgstr "" -#: gnu/packages/perl.scm:7396 +#: gnu/packages/perl.scm:7855 msgid "Associate user-defined magic to variables from Perl" msgstr "" -#: gnu/packages/perl.scm:7397 +#: gnu/packages/perl.scm:7856 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" @@ -11215,11 +12577,11 @@ msgid "" "having to write a single line of XS." msgstr "" -#: gnu/packages/perl.scm:7420 +#: gnu/packages/perl.scm:7879 msgid "Easily generate well-formed, namespace-aware XML" msgstr "" -#: gnu/packages/perl.scm:7421 +#: gnu/packages/perl.scm:7880 msgid "" "@code{XML::Writer} is a simple Perl module for writing XML\n" "documents: it takes care of constructing markup and escaping data correctly.\n" @@ -11229,42 +12591,54 @@ msgid "" "attribute names." msgstr "" -#: gnu/packages/perl.scm:7447 +#: gnu/packages/perl.scm:7906 +msgid "Opaque, extensible XS pointer backed objects using sv_magic" +msgstr "" + +#: gnu/packages/perl.scm:7908 +msgid "" +"This way of associating structs with Perl space objects is designed to\n" +"supersede Perl's builtin @code{T_PTROBJ} with something that is extensible\n" +"(structs can be associated with any data type) and opaque (the C pointer is\n" +"neither visible nor modifiable from Perl space)." +msgstr "" + +#: gnu/packages/perl.scm:7930 msgid "YAML for Perl" msgstr "" -#: gnu/packages/perl.scm:7448 +#: gnu/packages/perl.scm:7931 msgid "" "The YAML.pm module implements a YAML Loader and Dumper based\n" "on the YAML 1.0 specification." msgstr "" -#: gnu/packages/perl.scm:7471 +#: gnu/packages/perl.scm:7954 msgid "Read/Write YAML files" msgstr "" -#: gnu/packages/perl.scm:7472 +#: gnu/packages/perl.scm:7955 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:7493 +#: gnu/packages/perl.scm:7976 msgid "Generate and use LALR parsers" msgstr "" -#: gnu/packages/perl.scm:7494 +#: gnu/packages/perl.scm:7977 msgid "" "This package compiles yacc-like @dfn{Look Ahead LR} (LALR)\n" "grammars to generate Perl object oriented parser modules." msgstr "" -#: gnu/packages/perl.scm:7520 +#: gnu/packages/perl.scm:8003 msgid "Distribution metadata for a CPAN dist" msgstr "" -#: gnu/packages/perl.scm:7521 +#: gnu/packages/perl.scm:8004 msgid "" "Software distributions released to the CPAN include a\n" "META.json or, for older distributions, META.yml, which describes the\n" @@ -11275,11 +12649,11 @@ msgid "" "methods for interrogating that data." msgstr "" -#: gnu/packages/perl.scm:7544 +#: gnu/packages/perl.scm:8027 msgid "Set of version requirements for a CPAN dist" msgstr "" -#: gnu/packages/perl.scm:7545 +#: gnu/packages/perl.scm:8028 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" @@ -11288,22 +12662,22 @@ msgid "" "representation." msgstr "" -#: gnu/packages/perl.scm:7568 +#: gnu/packages/perl.scm:8051 msgid "Read and write a subset of YAML for CPAN Meta files" msgstr "" -#: gnu/packages/perl.scm:7569 +#: gnu/packages/perl.scm:8052 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:7590 +#: gnu/packages/perl.scm:8073 msgid "Build and install Perl modules" msgstr "" -#: gnu/packages/perl.scm:7591 +#: gnu/packages/perl.scm:8074 msgid "" "@code{Module::Build} is a system for building, testing, and\n" "installing Perl modules; it used to be part of Perl itself until version 5.22,\n" @@ -11314,21 +12688,21 @@ msgid "" "system---most of the @code{Module::Build} code is pure-Perl." msgstr "" -#: gnu/packages/perl.scm:7616 +#: gnu/packages/perl.scm:8100 msgid "Parse META.yml and META.json CPAN metadata files" msgstr "" -#: gnu/packages/perl.scm:7617 +#: gnu/packages/perl.scm:8101 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:7635 +#: gnu/packages/perl.scm:8119 msgid "Common Scalar and List utility subroutines" msgstr "" -#: gnu/packages/perl.scm:7636 +#: gnu/packages/perl.scm:8120 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" @@ -11336,123 +12710,154 @@ msgid "" "such that being individual extensions would be wasteful." msgstr "" -#: gnu/packages/perl.scm:7660 +#: gnu/packages/perl.scm:8144 msgid "Cross-platform functions emulating common shell commands" msgstr "" -#: gnu/packages/perl.scm:7662 +#: gnu/packages/perl.scm:8146 msgid "Shell::Command is a thin wrapper around ExtUtils::Command." msgstr "" -#: gnu/packages/perl.scm:7689 +#: gnu/packages/perl.scm:8173 msgid "Object-oriented File::Find replacement in Perl" msgstr "" -#: gnu/packages/perl.scm:7690 +#: gnu/packages/perl.scm:8174 msgid "" "File::Find::Object is an object-oriented\n" "File::Find replacement in Perl." msgstr "" -#: gnu/packages/perl.scm:7719 +#: gnu/packages/perl.scm:8203 msgid "Alternative interface to File::Find::Object" msgstr "" -#: gnu/packages/perl.scm:7720 +#: gnu/packages/perl.scm:8204 msgid "" "File::Find::Object::Rule is an alternative Perl\n" "interface to File::Find::Object." msgstr "" -#: gnu/packages/perl.scm:7750 +#: gnu/packages/perl.scm:8234 msgid "Test for trailing space in Perl source files" msgstr "" -#: gnu/packages/perl.scm:7751 +#: gnu/packages/perl.scm:8235 msgid "" "Test::TrailingSpace tests for trailing spaces\n" "in Perl source files." msgstr "" -#: gnu/packages/photo.scm:64 +#: gnu/packages/photo.scm:72 msgid "Raw image decoder" msgstr "" -#: gnu/packages/photo.scm:66 +#: gnu/packages/photo.scm:74 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:83 +#: gnu/packages/photo.scm:91 msgid "Read and manipulate EXIF data in digital photographs" msgstr "" -#: gnu/packages/photo.scm:85 +#: gnu/packages/photo.scm:93 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:111 +#: gnu/packages/photo.scm:119 msgid "Accessing digital cameras" msgstr "" -#: gnu/packages/photo.scm:113 +#: gnu/packages/photo.scm:121 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:154 +#: gnu/packages/photo.scm:162 msgid "Command-line tools to access digital cameras" msgstr "" -#: gnu/packages/photo.scm:156 +#: gnu/packages/photo.scm:164 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:189 -msgid "Program and Perl library to manipulate EXIF tags" -msgstr "" +#: gnu/packages/photo.scm:197 +msgid "Program and Perl library to manipulate EXIF and other metadata" +msgstr "Program og Perlbibliotek til at manipulere EXIF og andre metadata" -#: gnu/packages/photo.scm:191 +#: gnu/packages/photo.scm:198 msgid "" -"This package provides the 'exiftool' command and the 'Image::ExifTool'\n" -"Perl library to manipulate EXIF tags of digital images." +"This package provides the @code{exiftool} command and the\n" +"@code{Image::ExifTool} Perl library to manipulate EXIF tags of digital images\n" +"and a wide variety of other metadata." msgstr "" -#: gnu/packages/photo.scm:214 +#: gnu/packages/photo.scm:222 msgid "Library for panoramic images" msgstr "" -#: gnu/packages/photo.scm:216 +#: gnu/packages/photo.scm:224 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:260 +#: gnu/packages/photo.scm:268 msgid "Tools for combining and blending images" msgstr "" -#: gnu/packages/photo.scm:262 +#: gnu/packages/photo.scm:270 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:162 +#: gnu/packages/photo.scm:294 +msgid "Library to correct optical lens defects with a lens database" +msgstr "" + +#: gnu/packages/photo.scm:295 +msgid "" +"Digital photographs are not ideal. Of course, the better is\n" +"your camera, the better the results will be, but in any case if you look\n" +"carefully at shots taken even by the most expensive cameras equipped with the\n" +"most expensive lenses you will see various artifacts. It is very hard to make\n" +"ideal cameras, because there are a lot of factors that affect the final image\n" +"quality, and at some point camera and lens designers have to trade one factor\n" +"for another to achieve the optimal image quality, within the given design\n" +"restrictions and budget. But we all want ideal shots, don't we? So that's\n" +"what's Lensfun is all about: rectifying the defects introduced by your\n" +"photographic equipment." +msgstr "" + +#: gnu/packages/photo.scm:371 +msgid "Virtual lighttable and darkroom for photographers" +msgstr "" + +#: gnu/packages/photo.scm:372 +msgid "" +"Darktable is a photography workflow application and RAW\n" +"developer. It manages your digital negatives in a database, lets you view\n" +"them through a zoomable lighttable and enables you to develop raw images\n" +"and enhance them." +msgstr "" + +#: gnu/packages/qemu.scm:161 msgid "Machine emulator and virtualizer" msgstr "" -#: gnu/packages/qemu.scm:164 +#: gnu/packages/qemu.scm:163 msgid "" "QEMU is a generic machine emulator and virtualizer.\n" "\n" @@ -11467,15 +12872,15 @@ msgid "" "server and embedded PowerPC, and S390 guests." msgstr "" -#: gnu/packages/qemu.scm:186 +#: gnu/packages/qemu.scm:185 msgid "Machine emulator and virtualizer (without GUI)" msgstr "" -#: gnu/packages/qemu.scm:245 +#: gnu/packages/qemu.scm:251 msgid "Operating system information database" msgstr "" -#: gnu/packages/qemu.scm:246 +#: gnu/packages/qemu.scm:252 msgid "" "libosinfo is a GObject based library API for managing\n" "information about operating systems, hypervisors and the (virtual) hardware\n" @@ -11485,11 +12890,11 @@ msgid "" "all common programming languages. Vala bindings are also provided." msgstr "" -#: gnu/packages/qemu.scm:320 +#: gnu/packages/qemu.scm:326 msgid "Simple API for virtualization" msgstr "" -#: gnu/packages/qemu.scm:321 +#: gnu/packages/qemu.scm:327 msgid "" "Libvirt is a C toolkit to interact with the virtualization\n" "capabilities of recent versions of Linux. The library aims at providing long\n" @@ -11497,11 +12902,11 @@ msgid "" "to integrate other virtualization mechanisms if needed." msgstr "" -#: gnu/packages/qemu.scm:362 +#: gnu/packages/qemu.scm:368 msgid "GLib wrapper around libvirt" msgstr "" -#: gnu/packages/qemu.scm:363 +#: gnu/packages/qemu.scm:369 msgid "" "libvirt-glib wraps the libvirt library to provide a\n" "high-level object-oriented API better suited for glib-based applications, via\n" @@ -11514,11 +12919,11 @@ msgid "" "@end enumerate\n" msgstr "" -#: gnu/packages/qemu.scm:404 +#: gnu/packages/qemu.scm:411 msgid "Python bindings to libvirt" msgstr "Pythonbindinger for libvirt" -#: gnu/packages/qemu.scm:405 +#: gnu/packages/qemu.scm:412 msgid "" "This package provides Python bindings to the libvirt\n" "virtualization library." @@ -11526,11 +12931,11 @@ msgstr "" "Denne pakke tilbyder Pythonbindinger til virtualiseringsbiblioteket\n" "libvirt." -#: gnu/packages/qemu.scm:481 +#: gnu/packages/qemu.scm:488 msgid "Manage virtual machines" msgstr "Håndter virtuelle maskiner" -#: gnu/packages/qemu.scm:483 +#: gnu/packages/qemu.scm:490 msgid "" "The virt-manager application is a desktop user interface for managing\n" "virtual machines through libvirt. It primarily targets KVM VMs, but also\n" @@ -11538,11 +12943,11 @@ msgid "" "domains, their live performance and resource utilization statistics." msgstr "" -#: gnu/packages/ratpoison.scm:85 +#: gnu/packages/ratpoison.scm:86 msgid "Simple mouse-free tiling window manager" msgstr "" -#: gnu/packages/ratpoison.scm:87 +#: gnu/packages/ratpoison.scm:88 msgid "" "Ratpoison is a simple window manager with no fat library\n" "dependencies, no fancy graphics, no window decorations, and no\n" @@ -11608,22 +13013,22 @@ msgid "" "package contains the library and drivers." msgstr "" -#: gnu/packages/scheme.scm:185 +#: gnu/packages/scheme.scm:187 msgid "A Scheme implementation with integrated editor and debugger" msgstr "" -#: gnu/packages/scheme.scm:187 +#: gnu/packages/scheme.scm:189 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:270 +#: gnu/packages/scheme.scm:273 msgid "Efficient Scheme compiler" msgstr "" -#: gnu/packages/scheme.scm:272 +#: gnu/packages/scheme.scm:275 msgid "" "Bigloo is a Scheme implementation devoted to one goal: enabling\n" "Scheme based programming style where C(++) is usually\n" @@ -11635,11 +13040,11 @@ msgid "" "Scheme and C programs and between Scheme and Java programs." msgstr "" -#: gnu/packages/scheme.scm:314 +#: gnu/packages/scheme.scm:317 msgid "Multi-tier programming language for the Web 2.0" msgstr "" -#: gnu/packages/scheme.scm:316 +#: gnu/packages/scheme.scm:319 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" @@ -11648,33 +13053,33 @@ msgid "" "mashups, office (web agendas, mail clients, ...), etc." msgstr "" -#: gnu/packages/scheme.scm:370 +#: gnu/packages/scheme.scm:362 msgid "R5RS Scheme implementation that compiles native code via C" msgstr "" -#: gnu/packages/scheme.scm:372 +#: gnu/packages/scheme.scm:364 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:391 +#: gnu/packages/scheme.scm:383 msgid "Scheme implementation using a bytecode interpreter" msgstr "" -#: gnu/packages/scheme.scm:393 +#: gnu/packages/scheme.scm:385 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:506 +#: gnu/packages/scheme.scm:498 msgid "Implementation of Scheme and related languages" msgstr "" -#: gnu/packages/scheme.scm:508 +#: gnu/packages/scheme.scm:500 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" @@ -11682,11 +13087,11 @@ msgid "" "of libraries." msgstr "" -#: gnu/packages/scheme.scm:546 +#: gnu/packages/scheme.scm:538 msgid "Efficient Scheme interpreter and compiler" msgstr "" -#: gnu/packages/scheme.scm:548 +#: gnu/packages/scheme.scm:540 msgid "" "Gambit consists of two main programs: gsi, the Gambit Scheme\n" "interpreter, and gsc, the Gambit Scheme compiler. The interpreter contains\n" @@ -11697,11 +13102,11 @@ msgid "" "mixed." msgstr "" -#: gnu/packages/scheme.scm:582 +#: gnu/packages/scheme.scm:574 msgid "Small embeddable Scheme implementation" msgstr "" -#: gnu/packages/scheme.scm:584 +#: gnu/packages/scheme.scm:576 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" @@ -11710,11 +13115,11 @@ msgid "" "threads." msgstr "" -#: gnu/packages/scheme.scm:755 +#: gnu/packages/scheme.scm:746 msgid "Scmutils library for MIT Scheme" msgstr "" -#: gnu/packages/scheme.scm:756 +#: gnu/packages/scheme.scm:747 msgid "" "The Scmutils system is an integrated library of\n" "procedures, embedded in the programming language Scheme, and intended to\n" @@ -11722,11 +13127,11 @@ msgid "" "engineering." msgstr "" -#: gnu/packages/scheme.scm:804 +#: gnu/packages/scheme.scm:795 msgid "Structure and Interpretation of Computer Programs" msgstr "" -#: gnu/packages/scheme.scm:805 +#: gnu/packages/scheme.scm:796 msgid "" "Structure and Interpretation of Computer Programs (SICP) is\n" "a textbook aiming to teach the principles of computer programming.\n" @@ -11736,11 +13141,43 @@ msgid "" "metalinguistic abstraction, recursion, interpreters, and modular programming." msgstr "" -#: gnu/packages/search.scm:63 +#: gnu/packages/scheme.scm:837 +msgid "SRE String pattern-matching library for scheme48" +msgstr "" + +#: gnu/packages/scheme.scm:839 +msgid "" +"String pattern-matching library for scheme48 based on the SRE\n" +"regular-expression notation." +msgstr "" + +#: gnu/packages/scheme.scm:871 +msgid "Compatibility and utility library for Scheme" +msgstr "" + +#: gnu/packages/scheme.scm:872 +msgid "" +"SLIB is a portable Scheme library providing compatibility and\n" +"utility functions for all standard Scheme implementations." +msgstr "" + +#: gnu/packages/scheme.scm:933 +msgid "Scheme implementation conforming to R5RS and IEEE P1178" +msgstr "" + +#: gnu/packages/scheme.scm:934 +msgid "" +"GNU SCM is an implementation of Scheme. This\n" +"implementation includes Hobbit, a Scheme-to-C compiler, which can\n" +"generate C files whose binaries can be dynamically or statically\n" +"linked with a SCM executable." +msgstr "" + +#: gnu/packages/search.scm:64 msgid "Search Engine Library" msgstr "" -#: gnu/packages/search.scm:65 +#: gnu/packages/search.scm:66 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" @@ -11748,11 +13185,11 @@ msgid "" "rich set of boolean query operators." msgstr "" -#: gnu/packages/search.scm:108 +#: gnu/packages/search.scm:109 msgid "Tool for Obsessive Compulsive Classifiers" msgstr "" -#: gnu/packages/search.scm:110 +#: gnu/packages/search.scm:111 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" @@ -11760,21 +13197,21 @@ msgid "" "files and directories." msgstr "" -#: gnu/packages/search.scm:132 +#: gnu/packages/search.scm:133 msgid "Command-line interface to libtocc" msgstr "Kommandolinjegrænseflade til libtocc" -#: gnu/packages/search.scm:134 +#: gnu/packages/search.scm:135 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:152 +#: gnu/packages/search.scm:153 msgid "Finding text and HTML files that match boolean expressions" msgstr "Find tekst- og HTML-filer som matcher booleske udtryk" -#: gnu/packages/search.scm:154 +#: gnu/packages/search.scm:155 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" @@ -11785,11 +13222,22 @@ msgid "" "for parsing HTML files." msgstr "" -#: gnu/packages/search.scm:176 +#: gnu/packages/search.scm:185 +msgid "Full-text search system" +msgstr "" + +#: gnu/packages/search.scm:186 +msgid "" +"Hyper Estraier can be used to integrate full-text\n" +"search into applications, using either the provided command line and CGI\n" +"interfaces, or a C API." +msgstr "" + +#: gnu/packages/search.scm:204 msgid "Locate files on the file system" msgstr "Lokaliser filer på filsystemet" -#: gnu/packages/search.scm:178 +#: gnu/packages/search.scm:206 msgid "" "mlocate is a locate/updatedb implementation. The 'm' stands for\n" "\"merging\": @code{updatedb} reuses the existing database to avoid rereading\n" @@ -11799,11 +13247,11 @@ msgid "" "conflict with slocate compatibility." msgstr "" -#: gnu/packages/search.scm:240 +#: gnu/packages/search.scm:269 msgid "Web indexing system" msgstr "" -#: gnu/packages/search.scm:242 +#: gnu/packages/search.scm:271 msgid "" "Swish-e is Simple Web Indexing System for Humans - Enhanced. Swish-e\n" "can quickly and easily index directories of files or remote web sites and\n" @@ -11825,11 +13273,11 @@ msgid "" "server and an IRC server." msgstr "" -#: gnu/packages/shells.scm:70 +#: gnu/packages/shells.scm:89 msgid "POSIX-compliant shell optimised for size" msgstr "" -#: gnu/packages/shells.scm:72 +#: gnu/packages/shells.scm:91 msgid "" "dash is a POSIX-compliant @command{/bin/sh} implementation that aims to be\n" "as small as possible, often without sacrificing speed. It is faster than the\n" @@ -11837,11 +13285,11 @@ msgid "" "direct descendant of NetBSD's Almquist Shell (@command{ash})." msgstr "" -#: gnu/packages/shells.scm:116 +#: gnu/packages/shells.scm:141 msgid "The friendly interactive shell" msgstr "" -#: gnu/packages/shells.scm:118 +#: gnu/packages/shells.scm:143 msgid "" "Fish (friendly interactive shell) is a shell focused on interactive use,\n" "discoverability, and friendliness. Fish has very user-friendly and powerful\n" @@ -11853,21 +13301,42 @@ msgid "" "highlighting." msgstr "" -#: gnu/packages/shells.scm:167 +#: gnu/packages/shells.scm:175 +msgid "Fish completions for Guix" +msgstr "" + +#: gnu/packages/shells.scm:177 +msgid "Fish-guix provides completions for Guix for users of the fish shell." +msgstr "" + +#: gnu/packages/shells.scm:218 msgid "Alternative implementation of the rc shell by Byron Rakitzis" msgstr "" -#: gnu/packages/shells.scm:169 +#: gnu/packages/shells.scm:220 msgid "" "This is a reimplementation by Byron Rakitzis of the Plan 9 shell. It\n" "has a small feature set similar to a traditional Bourne shell." msgstr "" -#: gnu/packages/shells.scm:226 +#: gnu/packages/shells.scm:251 +msgid "Extensible shell with higher-order functions" +msgstr "" + +#: gnu/packages/shells.scm:253 +msgid "" +"Es is an extensible shell. The language was derived from the Plan 9\n" +"shell, rc, and was influenced by functional programming languages, such as\n" +"Scheme, and the Tcl embeddable programming language. This implementation is\n" +"derived from Byron Rakitzis's public domain implementation of rc, and was\n" +"written by Paul Haahr and Byron Rakitzis." +msgstr "" + +#: gnu/packages/shells.scm:313 msgid "Unix shell based on csh" msgstr "" -#: gnu/packages/shells.scm:228 +#: gnu/packages/shells.scm:315 msgid "" "Tcsh is an enhanced, but completely compatible version of the Berkeley\n" "UNIX C shell (csh). It is a command language interpreter usable both as an\n" @@ -11876,11 +13345,11 @@ msgid "" "history mechanism, job control and a C-like syntax." msgstr "" -#: gnu/packages/shells.scm:286 +#: gnu/packages/shells.scm:364 msgid "Powerful shell for interactive use and scripting" msgstr "Funktionsrig skal for interaktiv brug og skriptopbygning" -#: gnu/packages/shells.scm:287 +#: gnu/packages/shells.scm:365 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" @@ -11889,19 +13358,31 @@ msgid "" "ksh, and tcsh." msgstr "" -#: gnu/packages/shells.scm:326 +#: gnu/packages/shells.scm:404 msgid "Python-ish shell" msgstr "" -#: gnu/packages/shells.scm:328 +#: gnu/packages/shells.scm:406 msgid "" "Xonsh is a Python-ish, BASHwards-looking shell language and command\n" -"prompt. The language is a superset of Python 3.4+ with additional shell\n" -"primitives that you are used to from Bash and IPython. It works on all major\n" -"systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily\n" +"prompt. The language is a superset of Python 3.4+ with additional shell\n" +"primitives that you are used to from Bash and IPython. It works on all major\n" +"systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily\n" "use of experts and novices alike." msgstr "" +#: gnu/packages/shells.scm:453 +msgid "Unix shell embedded in Scheme" +msgstr "" + +#: gnu/packages/shells.scm:455 +msgid "" +"Scsh is a Unix shell embedded in Scheme. Scsh has two main\n" +"components: a process notation for running programs and setting up pipelines\n" +"and redirections, and a complete syscall library for low-level access to the\n" +"operating system." +msgstr "" + #: gnu/packages/telephony.scm:66 msgid "(u)Common C++ framework for threaded applications" msgstr "(u)Common C++-ramme for trådede programmer" @@ -11978,32 +13459,32 @@ msgid "" "internet." msgstr "" -#: gnu/packages/telephony.scm:240 +#: gnu/packages/telephony.scm:241 msgid "Secure RTP (SRTP) Reference Implementation" msgstr "" -#: gnu/packages/telephony.scm:241 +#: gnu/packages/telephony.scm:242 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/telephony.scm:276 +#: gnu/packages/telephony.scm:277 msgid "Inter-Asterisk-Protocol library" msgstr "" -#: gnu/packages/telephony.scm:277 +#: gnu/packages/telephony.scm:278 msgid "" "LibIAX2 implements the Inter-Asterisk-Protocol for relaying\n" "Voice-over-IP (VoIP) communications." msgstr "" -#: gnu/packages/telephony.scm:308 +#: gnu/packages/telephony.scm:309 msgid "Simple VoIP program to create conferences from the terminal" msgstr "" -#: gnu/packages/telephony.scm:310 +#: gnu/packages/telephony.scm:311 msgid "" "Seren is a simple VoIP program based on the Opus codec that allows you\n" "to create a voice conference from the terminal, with up to 10 participants,\n" @@ -12012,21 +13493,23 @@ msgid "" "address of one of the participants." msgstr "" -#: gnu/packages/telephony.scm:413 +#: gnu/packages/telephony.scm:423 msgid "Low-latency, high quality voice chat software" msgstr "" -#: gnu/packages/telephony.scm:415 +#: gnu/packages/telephony.scm:425 msgid "" "Mumble is an low-latency, high quality voice chat\n" -"software primarily intended for use while gaming." +"software primarily intended for use while gaming.\n" +"Mumble consists of two applications for separate usage:\n" +"@code{mumble} for the client, and @code{murmur} for the server." msgstr "" -#: gnu/packages/tex.scm:169 gnu/packages/tex.scm:241 gnu/packages/tex.scm:303 +#: gnu/packages/tex.scm:171 gnu/packages/tex.scm:243 gnu/packages/tex.scm:305 msgid "TeX Live, a package of the TeX typesetting system" msgstr "" -#: gnu/packages/tex.scm:171 +#: gnu/packages/tex.scm:173 msgid "" "TeX Live provides a comprehensive TeX document production system.\n" "It includes all the major TeX-related programs, macro packages, and fonts\n" @@ -12036,7 +13519,7 @@ msgid "" "This package contains the binaries." msgstr "" -#: gnu/packages/tex.scm:243 +#: gnu/packages/tex.scm:245 msgid "" "TeX Live provides a comprehensive TeX document production system.\n" "It includes all the major TeX-related programs, macro packages, and fonts\n" @@ -12046,7 +13529,7 @@ msgid "" "This package contains the complete tree of texmf-dist data." msgstr "" -#: gnu/packages/tex.scm:305 +#: gnu/packages/tex.scm:307 msgid "" "TeX Live provides a comprehensive TeX document production system.\n" "It includes all the major TeX-related programs, macro packages, and fonts\n" @@ -12056,7 +13539,7 @@ msgid "" "This package contains the complete TeX Live distribution." msgstr "" -#: gnu/packages/tex.scm:360 +#: gnu/packages/tex.scm:362 msgid "" "TeX Live provides a comprehensive TeX document production system.\n" "It includes all the major TeX-related programs, macro packages, and fonts\n" @@ -12066,7 +13549,7 @@ msgid "" "This package contains a small subset of the texmf-dist data." msgstr "" -#: gnu/packages/tex.scm:382 +#: gnu/packages/tex.scm:384 msgid "" "TeX Live provides a comprehensive TeX document production system.\n" "It includes all the major TeX-related programs, macro packages, and fonts\n" @@ -12076,11 +13559,11 @@ msgid "" "This package contains a small working part of the TeX Live distribution." msgstr "" -#: gnu/packages/tex.scm:423 +#: gnu/packages/tex.scm:425 msgid "Interface to read and parse BibTeX files" msgstr "" -#: gnu/packages/tex.scm:424 +#: gnu/packages/tex.scm:426 msgid "" "@code{Text::BibTeX} is a Perl library for reading, parsing,\n" "and processing BibTeX files. @code{Text::BibTeX} gives you access to the data\n" @@ -12089,21 +13572,21 @@ msgid "" "values (strings, macros, or numbers) pasted together." msgstr "" -#: gnu/packages/tex.scm:506 +#: gnu/packages/tex.scm:508 msgid "Backend for the BibLaTeX citation management tool" msgstr "" -#: gnu/packages/tex.scm:507 +#: gnu/packages/tex.scm:509 msgid "" "Biber is a BibTeX replacement for users of biblatex. Among\n" "other things it comes with full Unicode support." msgstr "" -#: gnu/packages/tex.scm:558 +#: gnu/packages/tex.scm:560 msgid "Wrapper for LaTeX and friends" msgstr "" -#: gnu/packages/tex.scm:560 +#: gnu/packages/tex.scm:562 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" @@ -12113,21 +13596,21 @@ msgid "" "PDF documents." msgstr "" -#: gnu/packages/tex.scm:602 +#: gnu/packages/tex.scm:604 msgid "LaTeX editor" msgstr "LaTeX-redigeringsprogram" -#: gnu/packages/tex.scm:603 +#: gnu/packages/tex.scm:605 msgid "" "Texmaker is a program that integrates many tools needed to\n" "develop documents with LaTeX, in a single application." msgstr "" -#: gnu/packages/tex.scm:642 +#: gnu/packages/tex.scm:644 msgid "Book on TeX, plain TeX and Eplain" msgstr "" -#: gnu/packages/tex.scm:643 +#: gnu/packages/tex.scm:645 msgid "" "@i{TeX for the Impatient} is a ~350 page book on TeX,\n" "plain TeX, and Eplain, originally written by Paul Abrahams, Kathryn Hargreaves,\n" @@ -12171,11 +13654,11 @@ msgid "" "Texi2HTML." msgstr "" -#: gnu/packages/textutils.scm:74 +#: gnu/packages/textutils.scm:76 msgid "Text encoding converter" msgstr "" -#: gnu/packages/textutils.scm:75 +#: gnu/packages/textutils.scm:77 msgid "" "The Recode library converts files between character sets and\n" "usages. It recognises or produces over 200 different character sets (or about\n" @@ -12185,61 +13668,61 @@ msgid "" "handy front-end to the library." msgstr "" -#: gnu/packages/textutils.scm:103 +#: gnu/packages/textutils.scm:105 msgid "Text encoding detection tool" msgstr "" -#: gnu/packages/textutils.scm:104 +#: gnu/packages/textutils.scm:106 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:131 +#: gnu/packages/textutils.scm:156 msgid "C library for processing UTF-8 Unicode data" msgstr "" -#: gnu/packages/textutils.scm:132 +#: gnu/packages/textutils.scm:157 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 9.0.0." msgstr "" -#: gnu/packages/textutils.scm:161 +#: gnu/packages/textutils.scm:186 msgid "Gordon's text utils library" msgstr "" -#: gnu/packages/textutils.scm:163 +#: gnu/packages/textutils.scm:188 msgid "" "libgtextutils is a text utilities library used by the fastx toolkit from\n" "the Hannon Lab." msgstr "" -#: gnu/packages/textutils.scm:195 +#: gnu/packages/textutils.scm:220 msgid "C++ hash functions for strings" msgstr "" -#: gnu/packages/textutils.scm:197 +#: gnu/packages/textutils.scm:222 msgid "" "CityHash provides hash functions for strings. The functions mix the\n" "input bits thoroughly but are not suitable for cryptography." msgstr "" -#: gnu/packages/textutils.scm:234 +#: gnu/packages/textutils.scm:260 msgid "String library with very low memory overhead" msgstr "" -#: gnu/packages/textutils.scm:236 +#: gnu/packages/textutils.scm:262 msgid "Ustr is a string library for C with very low memory overhead." msgstr "" -#: gnu/packages/textutils.scm:257 +#: gnu/packages/textutils.scm:283 msgid "C/C++ configuration file library" msgstr "" -#: gnu/packages/textutils.scm:259 +#: gnu/packages/textutils.scm:285 msgid "" "Libconfig is a simple library for manipulating structured configuration\n" "files. This file format is more compact and more readable than XML. And\n" @@ -12247,11 +13730,11 @@ msgid "" "application code." msgstr "" -#: gnu/packages/textutils.scm:279 +#: gnu/packages/textutils.scm:305 msgid "Probabilistic fast file fingerprinting tool" msgstr "" -#: gnu/packages/textutils.scm:281 +#: gnu/packages/textutils.scm:307 msgid "" "pfff is a tool for calculating a compact digital fingerprint of a file\n" "by sampling randomly from the file instead of reading it in full.\n" @@ -12260,22 +13743,22 @@ msgid "" "as existing hashing techniques, with provably negligible risk of collisions." msgstr "" -#: gnu/packages/textutils.scm:302 +#: gnu/packages/textutils.scm:328 msgid "Regular expression library" msgstr "Regulært udtryksbibliotek" -#: gnu/packages/textutils.scm:303 +#: gnu/packages/textutils.scm:329 msgid "" "Oniguruma is a regular expressions library. The special\n" "characteristic of this library is that different character encoding for every\n" "regular expression object can be specified." msgstr "" -#: gnu/packages/textutils.scm:336 +#: gnu/packages/textutils.scm:362 msgid "Microsoft Word document reader" msgstr "Microsoft Word-dokumentlæser" -#: gnu/packages/textutils.scm:337 +#: gnu/packages/textutils.scm:363 msgid "" "Antiword is an application for displaying Microsoft Word\n" "documents. It can also convert the document to PostScript or XML. Only\n" @@ -12285,21 +13768,21 @@ msgid "" "runs Word\"." msgstr "" -#: gnu/packages/textutils.scm:379 +#: gnu/packages/textutils.scm:405 msgid "Portable C++ library for handling UTF-8" msgstr "Flytbart C++-bibliotek til håndtering af UTF-8" -#: gnu/packages/textutils.scm:380 +#: gnu/packages/textutils.scm:406 msgid "" "UTF8-CPP is a C++ library for handling UTF-8 encoded text\n" "in a portable way." msgstr "" -#: gnu/packages/textutils.scm:446 +#: gnu/packages/textutils.scm:472 msgid "Bayesian text and email classifier" msgstr "" -#: gnu/packages/textutils.scm:448 +#: gnu/packages/textutils.scm:474 msgid "" "dbacl is a fast Bayesian text and email classifier. It builds a variety\n" "of language models using maximum entropy (minimum divergence) principles, and\n" @@ -12307,19 +13790,19 @@ msgid "" "categories." msgstr "" -#: gnu/packages/textutils.scm:490 +#: gnu/packages/textutils.scm:516 msgid "Configuration file parser library" msgstr "" -#: gnu/packages/textutils.scm:492 +#: gnu/packages/textutils.scm:518 msgid "C library for creating and parsing configuration files." msgstr "" -#: gnu/packages/version-control.scm:105 +#: gnu/packages/version-control.scm:110 msgid "Version control system supporting both distributed and centralized workflows" msgstr "" -#: gnu/packages/version-control.scm:107 +#: gnu/packages/version-control.scm:112 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" @@ -12336,32 +13819,48 @@ msgid "" "everything from small to very large projects with speed and efficiency." msgstr "" -#: gnu/packages/version-control.scm:362 +#: gnu/packages/version-control.scm:377 msgid "Library providing Git core methods" msgstr "" -#: gnu/packages/version-control.scm:364 +#: gnu/packages/version-control.scm:379 msgid "" "Libgit2 is a portable, pure C implementation of the Git core methods\n" "provided as a re-entrant linkable library with a solid API, allowing you to\n" "write native speed custom Git applications in any language with bindings." msgstr "" -#: gnu/packages/version-control.scm:425 +#: gnu/packages/version-control.scm:415 +msgid "Transparent encryption of files in a git repository" +msgstr "" + +#: gnu/packages/version-control.scm:416 +msgid "" +"git-crypt enables transparent encryption and decryption of\n" +"files in a git repository. Files which you choose to protect are encrypted when\n" +"committed, and decrypted when checked out. git-crypt lets you freely share a\n" +"repository containing a mix of public and private content. git-crypt gracefully\n" +"degrades, so developers without the secret key can still clone and commit to a\n" +"repository with encrypted files. This lets you store your secret material (such\n" +"as keys or passwords) in the same repository as your code, without requiring you\n" +"to lock down your entire repository." +msgstr "" + +#: gnu/packages/version-control.scm:477 msgid "Web frontend for git repositories" msgstr "" -#: gnu/packages/version-control.scm:427 +#: gnu/packages/version-control.scm:479 msgid "" "CGit is an attempt to create a fast web interface for the Git SCM, using\n" "a built-in cache to decrease server I/O pressure." msgstr "" -#: gnu/packages/version-control.scm:464 +#: gnu/packages/version-control.scm:516 msgid "Command-line flags library for shell scripts" msgstr "" -#: gnu/packages/version-control.scm:466 +#: gnu/packages/version-control.scm:518 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" @@ -12372,11 +13871,11 @@ msgid "" "will work." msgstr "" -#: gnu/packages/version-control.scm:509 +#: gnu/packages/version-control.scm:561 msgid "Git extensions for Vincent Driessen's branching model" msgstr "" -#: gnu/packages/version-control.scm:511 +#: gnu/packages/version-control.scm:563 msgid "" "Vincent Driessen's branching model is a git branching and release\n" "management strategy that helps developers keep track of features, hotfixes,\n" @@ -12385,67 +13884,69 @@ msgid "" "lot easier." msgstr "" -#: gnu/packages/version-control.scm:546 +#: gnu/packages/version-control.scm:598 msgid "Run a command over a sequence of commits" msgstr "" -#: gnu/packages/version-control.scm:548 +#: gnu/packages/version-control.scm:600 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:603 +#: gnu/packages/version-control.scm:661 msgid "Git access control layer" msgstr "" -#: gnu/packages/version-control.scm:605 +#: gnu/packages/version-control.scm:663 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:629 +#: gnu/packages/version-control.scm:687 msgid "Decentralized version control system" msgstr "" -#: gnu/packages/version-control.scm:631 +#: gnu/packages/version-control.scm:689 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:665 +#: gnu/packages/version-control.scm:723 msgid "HTTP and WebDAV client library" msgstr "" -#: gnu/packages/version-control.scm:666 +#: gnu/packages/version-control.scm:725 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." +"Neon is an HTTP and WebDAV client library, with a C interface and the\n" +"following features:\n" +"@enumerate\n" +"@item High-level wrappers for common HTTP and WebDAV operations (GET, MOVE,\n" +" DELETE, etc.);\n" +"@item low-level interface to the HTTP request/response engine, allowing the use\n" +" of arbitrary HTTP methods, headers, etc.;\n" +"@item authentication support including Basic and Digest support, along with\n" +" GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32;\n" +"@item 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" +"@item abstract interface to parsing XML using libxml2 or expat, and wrappers for\n" +" simplifying handling XML HTTP response bodies;\n" +"@item WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify\n" +" property manipulation.\n" +"@end enumerate\n" msgstr "" -#: gnu/packages/version-control.scm:743 +#: gnu/packages/version-control.scm:804 msgid "Revision control system" msgstr "" -#: gnu/packages/version-control.scm:745 +#: gnu/packages/version-control.scm:806 msgid "" "Subversion exists to be universally recognized and adopted as a\n" "centralized version control system characterized by its\n" @@ -12454,11 +13955,11 @@ msgid "" "projects, from individuals to large-scale enterprise operations." msgstr "" -#: gnu/packages/version-control.scm:766 +#: gnu/packages/version-control.scm:828 msgid "Per-file local revision control system" msgstr "" -#: gnu/packages/version-control.scm:768 +#: gnu/packages/version-control.scm:830 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" @@ -12467,11 +13968,11 @@ msgid "" "machine." msgstr "" -#: gnu/packages/version-control.scm:795 +#: gnu/packages/version-control.scm:857 msgid "Historical centralized version control system" msgstr "" -#: gnu/packages/version-control.scm:797 +#: gnu/packages/version-control.scm:859 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" @@ -12479,11 +13980,11 @@ msgid "" "RCS, PRCS, and Aegis packages." msgstr "" -#: gnu/packages/version-control.scm:830 +#: gnu/packages/version-control.scm:888 msgid "Export an RCS or CVS history as a fast-import stream" msgstr "" -#: gnu/packages/version-control.scm:831 +#: gnu/packages/version-control.scm:889 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" @@ -12496,11 +13997,11 @@ msgid "" "masters from remote CVS hosts." msgstr "" -#: gnu/packages/version-control.scm:858 +#: gnu/packages/version-control.scm:916 msgid "Version-control-agnostic ChangeLog diff and commit tool" msgstr "" -#: gnu/packages/version-control.scm:860 +#: gnu/packages/version-control.scm:918 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" @@ -12510,33 +14011,33 @@ msgid "" "standards-compliant ChangeLog entries based on the changes that it detects." msgstr "" -#: gnu/packages/version-control.scm:882 -msgid "Make histograms from the output of 'diff'" +#: gnu/packages/version-control.scm:943 +msgid "Make histograms from the output of @command{diff}" msgstr "" -#: gnu/packages/version-control.scm:884 +#: gnu/packages/version-control.scm:945 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." +"Diffstat reads the output of @command{diff} and displays a histogram of\n" +"the insertions, deletions, and modifications per file. It is useful for\n" +"reviewing large, complex patch files." msgstr "" -#: gnu/packages/version-control.scm:923 +#: gnu/packages/version-control.scm:984 msgid "File-based version control like SCCS" msgstr "" -#: gnu/packages/version-control.scm:924 +#: gnu/packages/version-control.scm:985 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:1003 +#: gnu/packages/version-control.scm:1064 msgid "Project change supervisor" msgstr "" -#: gnu/packages/version-control.scm:1004 +#: gnu/packages/version-control.scm:1065 msgid "" "Aegis is a project change supervisor, and performs some of\n" "the Software Configuration Management needed in a CASE environment. Aegis\n" @@ -12547,11 +14048,11 @@ msgid "" "any project with more than one developer, is one of Aegis's major functions." msgstr "" -#: gnu/packages/version-control.scm:1053 +#: gnu/packages/version-control.scm:1114 msgid "Edit version-control repository history" msgstr "" -#: gnu/packages/version-control.scm:1054 +#: gnu/packages/version-control.scm:1115 msgid "" "Reposurgeon enables risky operations that version-control\n" "systems don't want to let you do, such as editing past comments and metadata\n" @@ -12562,32 +14063,32 @@ msgid "" "from Subversion to any supported Distributed Version Control System (DVCS)." msgstr "" -#: gnu/packages/version-control.scm:1093 +#: gnu/packages/version-control.scm:1154 msgid "Ncurses-based text user interface for Git" msgstr "" -#: gnu/packages/version-control.scm:1095 +#: gnu/packages/version-control.scm:1156 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/version-control.scm:1121 +#: gnu/packages/version-control.scm:1182 msgid "Print the modification time of the latest file" msgstr "" -#: gnu/packages/version-control.scm:1123 +#: gnu/packages/version-control.scm:1184 msgid "" "Recursively find the newest file in a file tree and print its\n" "modification time." msgstr "" -#: gnu/packages/version-control.scm:1148 +#: gnu/packages/version-control.scm:1209 msgid "Multiple repository management tool" msgstr "" -#: gnu/packages/version-control.scm:1150 +#: gnu/packages/version-control.scm:1211 msgid "" "Myrepos provides the @code{mr} command, which maps an operation (e.g.,\n" "fetching updates) over a collection of version control repositories. It\n" @@ -12595,37 +14096,58 @@ msgid "" "Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity." msgstr "" -#: gnu/packages/version-control.scm:1180 +#: gnu/packages/version-control.scm:1241 msgid "Use hubic as a git-annex remote" msgstr "" -#: gnu/packages/version-control.scm:1182 +#: gnu/packages/version-control.scm:1243 msgid "" "This package allows you to use your hubic account as a \"special\n" "repository\" with git-annex." msgstr "" -#: gnu/packages/version-control.scm:1232 +#: gnu/packages/version-control.scm:1293 msgid "Software configuration management system" msgstr "" -#: gnu/packages/version-control.scm:1234 +#: gnu/packages/version-control.scm:1295 msgid "" "Fossil is a distributed source control management system which supports\n" "access and administration over HTTP CGI or via a built-in HTTP server. It has\n" "a built-in wiki, built-in file browsing, built-in tickets system, etc." msgstr "" -#: gnu/packages/version-control.scm:1262 +#: gnu/packages/version-control.scm:1323 msgid "Static git page generator" msgstr "" -#: gnu/packages/version-control.scm:1263 +#: gnu/packages/version-control.scm:1324 msgid "" "Stagit creates static pages for git repositories, the results can\n" "be served with a HTTP file server of your choice." msgstr "" +#: gnu/packages/version-control.scm:1412 +msgid "Distributed Revision Control System" +msgstr "" + +#: gnu/packages/version-control.scm:1414 +msgid "" +"Darcs is a revision control system. It is:\n" +"\n" +"@enumerate\n" +"@item Distributed: Every user has access to the full command set, removing boundaries\n" +"between server and client or committer and non-committers.\n" +"@item Interactive: Darcs is easy to learn and efficient to use because it asks you\n" +"questions in response to simple commands, giving you choices in your work flow.\n" +"You can choose to record one change in a file, while ignoring another. As you update\n" +"from upstream, you can review each patch name, even the full diff for interesting\n" +"patches.\n" +"@item Smart: Originally developed by physicist David Roundy, darcs is based on a\n" +"unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.\n" +"@end enumerate" +msgstr "" + #: gnu/packages/webkit.scm:123 msgid "Web content engine for GTK+" msgstr "" @@ -12637,11 +14159,11 @@ msgid "" "HTML/CSS applications to full-fledged web browsers." msgstr "" -#: gnu/packages/web.scm:114 +#: gnu/packages/web.scm:119 msgid "Featureful HTTP server" msgstr "" -#: gnu/packages/web.scm:116 +#: gnu/packages/web.scm:121 msgid "" "The Apache HTTP Server Project is a collaborative software development\n" "effort aimed at creating a robust, commercial-grade, featureful, and\n" @@ -12651,76 +14173,76 @@ msgid "" "and its related documentation." msgstr "" -#: gnu/packages/web.scm:194 +#: gnu/packages/web.scm:199 msgid "HTTP and reverse proxy server" msgstr "" -#: gnu/packages/web.scm:196 +#: gnu/packages/web.scm:201 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:225 +#: gnu/packages/web.scm:230 msgid "Language-independent, high-performant extension to CGI" msgstr "" -#: gnu/packages/web.scm:226 +#: gnu/packages/web.scm:231 msgid "" "FastCGI is a language independent, scalable extension to CGI\n" "that provides high performance without the limitations of server specific\n" "APIs." msgstr "" -#: gnu/packages/web.scm:262 +#: gnu/packages/web.scm:267 msgid "Simple server for running CGI applications over FastCGI" msgstr "" -#: gnu/packages/web.scm:263 +#: gnu/packages/web.scm:268 msgid "" "Fcgiwrap is a simple server for running CGI applications\n" "over FastCGI. It hopes to provide clean CGI support to Nginx (and other web\n" "servers that may need it)." msgstr "" -#: gnu/packages/web.scm:294 +#: gnu/packages/web.scm:299 msgid "PSGI/Plack web server" msgstr "" -#: gnu/packages/web.scm:295 +#: gnu/packages/web.scm:300 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:314 +#: gnu/packages/web.scm:319 msgid "JSON C library" msgstr "" -#: gnu/packages/web.scm:316 +#: gnu/packages/web.scm:321 msgid "" "Jansson is a C library for encoding, decoding and manipulating JSON\n" "data." msgstr "" -#: gnu/packages/web.scm:348 +#: gnu/packages/web.scm:353 msgid "JSON implementation in C" msgstr "" -#: gnu/packages/web.scm:350 +#: gnu/packages/web.scm:355 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:433 +#: gnu/packages/web.scm:438 msgid "Hierarchical data exploration with zoomable HTML5 pie charts" msgstr "" -#: gnu/packages/web.scm:435 +#: gnu/packages/web.scm:440 msgid "" "Krona is a flexible tool for exploring the relative proportions of\n" "hierarchical data, such as metagenomic classifications, using a radial,\n" @@ -12729,42 +14251,42 @@ msgid "" "current version of any major web browser." msgstr "" -#: gnu/packages/web.scm:463 +#: gnu/packages/web.scm:479 msgid "JSON parser/generator for C++ with both SAX/DOM style API" msgstr "" -#: gnu/packages/web.scm:465 +#: gnu/packages/web.scm:481 msgid "" "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM\n" "style API." msgstr "" -#: gnu/packages/web.scm:483 +#: gnu/packages/web.scm:499 msgid "C library for parsing JSON" msgstr "" -#: gnu/packages/web.scm:485 +#: gnu/packages/web.scm:501 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:515 +#: gnu/packages/web.scm:531 msgid "WebSockets library written in C" msgstr "" -#: gnu/packages/web.scm:517 +#: gnu/packages/web.scm:533 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:542 +#: gnu/packages/web.scm:558 msgid "C library for the Publix Suffix List" msgstr "" -#: gnu/packages/web.scm:544 +#: gnu/packages/web.scm:560 msgid "" "A \"public suffix\" is a domain name under which Internet users can\n" "directly register own names.\n" @@ -12782,21 +14304,21 @@ msgid "" "UTS#46." msgstr "" -#: gnu/packages/web.scm:589 +#: gnu/packages/web.scm:605 msgid "HTML validator and tidier" msgstr "" -#: gnu/packages/web.scm:590 +#: gnu/packages/web.scm:606 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:630 +#: gnu/packages/web.scm:642 msgid "Light-weight HTTP/HTTPS proxy daemon" msgstr "" -#: gnu/packages/web.scm:631 +#: gnu/packages/web.scm:643 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" @@ -12805,52 +14327,65 @@ msgid "" "unavailable." msgstr "" -#: gnu/packages/web.scm:664 +#: gnu/packages/web.scm:676 msgid "Small caching web proxy" msgstr "" -#: gnu/packages/web.scm:666 +#: gnu/packages/web.scm:678 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:687 +#: gnu/packages/web.scm:703 +msgid "Caching web proxy optimized for intermittent internet links" +msgstr "" + +#: gnu/packages/web.scm:704 +msgid "" +"WWWOFFLE is a proxy web server that is especially good for\n" +"intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger\n" +"protocols, and supports browsing and requesting pages while offline, indexing,\n" +"modifying pages and incoming and outgoing headers, monitoring pages for\n" +"changes, and much more." +msgstr "" + +#: gnu/packages/web.scm:727 msgid "YAML 1.1 parser and emitter written in C" msgstr "" -#: gnu/packages/web.scm:689 +#: gnu/packages/web.scm:729 msgid "LibYAML is a YAML 1.1 parser and emitter written in C." msgstr "" -#: gnu/packages/web.scm:706 gnu/packages/web.scm:740 gnu/packages/web.scm:763 +#: gnu/packages/web.scm:746 gnu/packages/web.scm:780 gnu/packages/web.scm:803 msgid "Media stream URL parser" msgstr "" -#: gnu/packages/web.scm:707 +#: gnu/packages/web.scm:747 msgid "" "This package contains support scripts called by libquvi to\n" "parse media stream properties." msgstr "" -#: gnu/packages/web.scm:741 +#: gnu/packages/web.scm:781 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:764 +#: gnu/packages/web.scm:804 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:827 +#: gnu/packages/web.scm:894 msgid "High-performance asynchronous HTTP client library" msgstr "" -#: gnu/packages/web.scm:829 +#: gnu/packages/web.scm:896 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" @@ -12858,49 +14393,49 @@ msgid "" "minimum to provide high performance operation." msgstr "" -#: gnu/packages/web.scm:884 +#: gnu/packages/web.scm:951 msgid "CSS pre-processor" msgstr "" -#: gnu/packages/web.scm:885 +#: gnu/packages/web.scm:952 msgid "" "SassC is a compiler written in C for the CSS pre-processor\n" "language known as SASS." msgstr "" -#: gnu/packages/web.scm:914 +#: gnu/packages/web.scm:981 msgid "Compile a log format string to perl-code" msgstr "" -#: gnu/packages/web.scm:915 +#: gnu/packages/web.scm:982 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:936 +#: gnu/packages/web.scm:1003 msgid "SASL authentication framework" msgstr "" -#: gnu/packages/web.scm:937 +#: gnu/packages/web.scm:1004 msgid "Authen::SASL provides an SASL authentication framework." msgstr "" -#: gnu/packages/web.scm:961 +#: gnu/packages/web.scm:1028 msgid "Sensible default Catalyst action" msgstr "" -#: gnu/packages/web.scm:962 +#: gnu/packages/web.scm:1029 msgid "" "This Catalyst action implements a sensible default end\n" "action, which will forward to the first available view." msgstr "" -#: gnu/packages/web.scm:993 +#: gnu/packages/web.scm:1060 msgid "Automated REST Method Dispatching" msgstr "" -#: gnu/packages/web.scm:994 +#: gnu/packages/web.scm:1061 msgid "" "This Action handles doing automatic method dispatching for\n" "REST requests. It takes a normal Catalyst action, and changes the dispatch to\n" @@ -12909,32 +14444,32 @@ msgid "" "regular method." msgstr "" -#: gnu/packages/web.scm:1030 +#: gnu/packages/web.scm:1097 msgid "Storage class for Catalyst authentication using DBIx::Class" msgstr "" -#: gnu/packages/web.scm:1031 +#: gnu/packages/web.scm:1098 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:1055 +#: gnu/packages/web.scm:1122 msgid "Create only one instance of Moose component per context" msgstr "" -#: gnu/packages/web.scm:1056 +#: gnu/packages/web.scm:1123 msgid "" "Catalyst::Component::InstancePerContext returns a new\n" "instance of a component on each request." msgstr "" -#: gnu/packages/web.scm:1093 +#: gnu/packages/web.scm:1160 msgid "Catalyst Development Tools" msgstr "" -#: gnu/packages/web.scm:1094 +#: gnu/packages/web.scm:1161 msgid "" "The Catalyst-Devel distribution includes a variety of\n" "modules useful for the development of Catalyst applications, but not required\n" @@ -12944,11 +14479,11 @@ msgid "" "modules." msgstr "" -#: gnu/packages/web.scm:1123 +#: gnu/packages/web.scm:1190 msgid "Regex DispatchType for Catalyst" msgstr "" -#: gnu/packages/web.scm:1124 +#: gnu/packages/web.scm:1191 msgid "" "Dispatch type managing path-matching behaviour using\n" "regexes. Regex dispatch types have been deprecated and removed from Catalyst\n" @@ -12958,32 +14493,32 @@ msgid "" "when the dispatch type is first seen in your application." msgstr "" -#: gnu/packages/web.scm:1172 +#: gnu/packages/web.scm:1239 msgid "DBIx::Class::Schema Model Class" msgstr "" -#: gnu/packages/web.scm:1173 +#: gnu/packages/web.scm:1240 msgid "" "This is a Catalyst Model for DBIx::Class::Schema-based\n" "Models." msgstr "" -#: gnu/packages/web.scm:1196 +#: gnu/packages/web.scm:1263 msgid "Request logging from within Catalyst" msgstr "" -#: gnu/packages/web.scm:1197 +#: gnu/packages/web.scm:1264 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:1229 +#: gnu/packages/web.scm:1296 msgid "Infrastructure plugin for the Catalyst authentication framework" msgstr "" -#: gnu/packages/web.scm:1230 +#: gnu/packages/web.scm:1297 msgid "" "The authentication plugin provides generic user support for\n" "Catalyst apps. It is the basis for both authentication (checking the user is\n" @@ -12991,52 +14526,52 @@ msgid "" "system authorises them to do)." msgstr "" -#: gnu/packages/web.scm:1260 +#: gnu/packages/web.scm:1327 msgid "Role-based authorization for Catalyst" msgstr "" -#: gnu/packages/web.scm:1261 +#: gnu/packages/web.scm:1328 msgid "" "Catalyst::Plugin::Authorization::Roles provides role-based\n" "authorization for Catalyst based on Catalyst::Plugin::Authentication." msgstr "" -#: gnu/packages/web.scm:1284 +#: gnu/packages/web.scm:1351 msgid "Captchas for Catalyst" msgstr "" -#: gnu/packages/web.scm:1285 +#: gnu/packages/web.scm:1352 msgid "" "This plugin creates and validates Captcha images for\n" "Catalyst." msgstr "" -#: gnu/packages/web.scm:1311 +#: gnu/packages/web.scm:1378 msgid "Load config files of various types" msgstr "" -#: gnu/packages/web.scm:1312 +#: gnu/packages/web.scm:1379 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:1343 +#: gnu/packages/web.scm:1410 msgid "Catalyst generic session plugin" msgstr "" -#: gnu/packages/web.scm:1344 +#: gnu/packages/web.scm:1411 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:1370 +#: gnu/packages/web.scm:1437 msgid "Maintain session IDs using cookies" msgstr "" -#: gnu/packages/web.scm:1371 +#: gnu/packages/web.scm:1438 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" @@ -13044,22 +14579,22 @@ msgid "" "cookie mechanism." msgstr "" -#: gnu/packages/web.scm:1401 +#: gnu/packages/web.scm:1468 msgid "FastMmap session storage backend" msgstr "" -#: gnu/packages/web.scm:1402 +#: gnu/packages/web.scm:1469 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:1425 +#: gnu/packages/web.scm:1492 msgid "Stack trace on the Catalyst debug screen" msgstr "" -#: gnu/packages/web.scm:1426 +#: gnu/packages/web.scm:1493 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" @@ -13067,11 +14602,11 @@ msgid "" "number, file name, and code context surrounding the line number." msgstr "" -#: gnu/packages/web.scm:1452 +#: gnu/packages/web.scm:1519 msgid "Simple serving of static pages" msgstr "" -#: gnu/packages/web.scm:1453 +#: gnu/packages/web.scm:1520 msgid "" "The Static::Simple plugin is designed to make serving static\n" "content in your application during development quick and easy, without\n" @@ -13082,11 +14617,11 @@ msgid "" "MIME type directly to the browser, without being processed through Catalyst." msgstr "" -#: gnu/packages/web.scm:1520 +#: gnu/packages/web.scm:1587 msgid "The Catalyst Framework Runtime" msgstr "" -#: gnu/packages/web.scm:1521 +#: gnu/packages/web.scm:1588 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" @@ -13094,11 +14629,11 @@ msgid "" "\"plug in\" existing Perl modules that do what you need." msgstr "" -#: gnu/packages/web.scm:1551 +#: gnu/packages/web.scm:1618 msgid "Replace request base with value passed by HTTP proxy" msgstr "" -#: gnu/packages/web.scm:1552 +#: gnu/packages/web.scm:1619 msgid "" "This module is a Moose::Role which allows you more\n" "flexibility in your application's deployment configurations when deployed\n" @@ -13106,42 +14641,42 @@ msgid "" "replaced with the contents of the X-Request-Base header." msgstr "" -#: gnu/packages/web.scm:1578 +#: gnu/packages/web.scm:1645 msgid "Download data in many formats" msgstr "" -#: gnu/packages/web.scm:1579 +#: gnu/packages/web.scm:1646 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:1604 +#: gnu/packages/web.scm:1671 msgid "Catalyst JSON view" msgstr "" -#: gnu/packages/web.scm:1605 +#: gnu/packages/web.scm:1672 msgid "" "Catalyst::View::JSON is a Catalyst View handler that returns\n" "stash data in JSON format." msgstr "" -#: gnu/packages/web.scm:1631 +#: gnu/packages/web.scm:1698 msgid "Template View Class" msgstr "" -#: gnu/packages/web.scm:1632 +#: gnu/packages/web.scm:1699 msgid "" "This module is a Catalyst view class for the Template\n" "Toolkit." msgstr "" -#: gnu/packages/web.scm:1661 +#: gnu/packages/web.scm:1728 msgid "Trait Loading and Resolution for Catalyst Components" msgstr "" -#: gnu/packages/web.scm:1662 +#: gnu/packages/web.scm:1729 msgid "" "Adds a \"COMPONENT\" in Catalyst::Component method to your\n" "Catalyst component base class that reads the optional \"traits\" parameter\n" @@ -13150,31 +14685,31 @@ msgid "" "MooseX::Traits::Pluggable." msgstr "" -#: gnu/packages/web.scm:1687 +#: gnu/packages/web.scm:1754 msgid "Apply roles to Catalyst classes" msgstr "" -#: gnu/packages/web.scm:1688 +#: gnu/packages/web.scm:1755 msgid "" "CatalystX::RoleApplicator applies roles to Catalyst\n" "application classes." msgstr "" -#: gnu/packages/web.scm:1714 +#: gnu/packages/web.scm:1781 msgid "Catalyst development server with Starman" msgstr "" -#: gnu/packages/web.scm:1715 +#: gnu/packages/web.scm:1782 msgid "" "This module provides a Catalyst extension to replace the\n" "development server with Starman." msgstr "" -#: gnu/packages/web.scm:1739 +#: gnu/packages/web.scm:1806 msgid "Handle Common Gateway Interface requests and responses" msgstr "" -#: gnu/packages/web.scm:1740 +#: gnu/packages/web.scm:1807 msgid "" "CGI.pm is a stable, complete and mature solution for\n" "processing and preparing HTTP requests and responses. Major features include\n" @@ -13183,52 +14718,52 @@ msgid "" "headers." msgstr "" -#: gnu/packages/web.scm:1764 +#: gnu/packages/web.scm:1831 msgid "CGI interface that is CGI.pm compliant" msgstr "" -#: gnu/packages/web.scm:1765 +#: gnu/packages/web.scm:1832 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:1786 +#: gnu/packages/web.scm:1853 msgid "Build structures from CGI data" msgstr "" -#: gnu/packages/web.scm:1787 +#: gnu/packages/web.scm:1854 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:1810 +#: gnu/packages/web.scm:1877 msgid "Date conversion routines" msgstr "" -#: gnu/packages/web.scm:1811 +#: gnu/packages/web.scm:1878 msgid "" "This module provides functions that deal with the date\n" "formats used by the HTTP protocol." msgstr "" -#: gnu/packages/web.scm:1831 +#: gnu/packages/web.scm:1898 msgid "MD5 sums for files and urls" msgstr "" -#: gnu/packages/web.scm:1832 +#: gnu/packages/web.scm:1899 msgid "" "Digest::MD5::File is a Perl extension for getting MD5 sums\n" "for files and urls." msgstr "" -#: gnu/packages/web.scm:1850 +#: gnu/packages/web.scm:1917 msgid "Perl locale encoding determination" msgstr "" -#: gnu/packages/web.scm:1852 +#: gnu/packages/web.scm:1919 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" @@ -13240,102 +14775,102 @@ msgid "" "with Encode::decode(locale => $string)." msgstr "" -#: gnu/packages/web.scm:1883 +#: gnu/packages/web.scm:1950 msgid "Syndication feed auto-discovery" msgstr "" -#: gnu/packages/web.scm:1884 +#: gnu/packages/web.scm:1951 msgid "" "@code{Feed::Find} implements feed auto-discovery for finding\n" "syndication feeds, given a URI. It will discover the following feed formats:\n" "RSS 0.91, RSS 1.0, RSS 2.0, Atom." msgstr "" -#: gnu/packages/web.scm:1905 +#: gnu/packages/web.scm:1972 msgid "Perl directory listing parser" msgstr "" -#: gnu/packages/web.scm:1907 +#: gnu/packages/web.scm:1974 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:1939 +#: gnu/packages/web.scm:2006 msgid "Stock and mutual fund quotes" msgstr "" -#: gnu/packages/web.scm:1941 +#: gnu/packages/web.scm:2008 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:1963 +#: gnu/packages/web.scm:2030 msgid "Perl extension providing access to the GSSAPIv2 library" msgstr "" -#: gnu/packages/web.scm:1964 +#: gnu/packages/web.scm:2031 msgid "" "This is a Perl extension for using GSSAPI C bindings as\n" "described in RFC 2744." msgstr "" -#: gnu/packages/web.scm:1984 +#: gnu/packages/web.scm:2051 msgid "Manipulate tables of HTML::Element" msgstr "" -#: gnu/packages/web.scm:1986 +#: gnu/packages/web.scm:2053 msgid "" "HTML::Element::Extended is a Perl extension for manipulating a table\n" "composed of HTML::Element style components." msgstr "" -#: gnu/packages/web.scm:2010 +#: gnu/packages/web.scm:2077 msgid "Perl class representing an HTML form element" msgstr "" -#: gnu/packages/web.scm:2011 +#: gnu/packages/web.scm:2078 msgid "" "Objects of the HTML::Form class represents a single HTML\n" "<form> ... </form> instance." msgstr "" -#: gnu/packages/web.scm:2033 +#: gnu/packages/web.scm:2100 msgid "Check for HTML errors in a string or file" msgstr "Kontroller for HTML-fejl i en streng eller fil" -#: gnu/packages/web.scm:2034 +#: gnu/packages/web.scm:2101 msgid "" "HTML::Lint is a pure-Perl HTML parser and checker for\n" "syntactic legitmacy." msgstr "" -#: gnu/packages/web.scm:2055 +#: gnu/packages/web.scm:2122 msgid "Extract contents from HTML tables" msgstr "Udtræk indhold fra HTML-tabeller" -#: gnu/packages/web.scm:2057 +#: gnu/packages/web.scm:2124 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:2082 +#: gnu/packages/web.scm:2149 msgid "Work with HTML in a DOM-like tree structure" msgstr "Arbejd med HTML i en DOM-lignende træstruktur" -#: gnu/packages/web.scm:2083 +#: gnu/packages/web.scm:2150 msgid "" "This distribution contains a suite of modules for\n" "representing, creating, and extracting information from HTML syntax trees." msgstr "" -#: gnu/packages/web.scm:2104 +#: gnu/packages/web.scm:2171 msgid "Perl HTML parser class" msgstr "" -#: gnu/packages/web.scm:2106 +#: gnu/packages/web.scm:2173 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" @@ -13343,21 +14878,21 @@ msgid "" "are invoked." msgstr "" -#: gnu/packages/web.scm:2126 +#: gnu/packages/web.scm:2193 msgid "Perl data tables useful in parsing HTML" msgstr "" -#: gnu/packages/web.scm:2128 +#: gnu/packages/web.scm:2195 msgid "" "The HTML::Tagset module contains several data tables useful in various\n" "kinds of HTML parsing operations." msgstr "" -#: gnu/packages/web.scm:2147 +#: gnu/packages/web.scm:2214 msgid "HTML-like templates" msgstr "" -#: gnu/packages/web.scm:2149 +#: gnu/packages/web.scm:2216 msgid "" "This module attempts to make using HTML templates simple and natural.\n" "It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},\n" @@ -13368,72 +14903,72 @@ msgid "" "you to separate design from the data." msgstr "" -#: gnu/packages/web.scm:2177 +#: gnu/packages/web.scm:2244 msgid "HTTP Body Parser" msgstr "" -#: gnu/packages/web.scm:2178 +#: gnu/packages/web.scm:2245 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:2205 +#: gnu/packages/web.scm:2272 msgid "Minimalist HTTP user agent cookie jar" msgstr "" -#: gnu/packages/web.scm:2206 +#: gnu/packages/web.scm:2273 msgid "" "This module implements a minimalist HTTP user agent cookie\n" "jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>." msgstr "" -#: gnu/packages/web.scm:2226 +#: gnu/packages/web.scm:2293 msgid "Perl HTTP cookie jars" msgstr "" -#: gnu/packages/web.scm:2228 +#: gnu/packages/web.scm:2295 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:2250 +#: gnu/packages/web.scm:2317 msgid "Perl simple http server class" msgstr "" -#: gnu/packages/web.scm:2252 +#: gnu/packages/web.scm:2319 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:2271 +#: gnu/packages/web.scm:2338 msgid "Perl date conversion routines" msgstr "" -#: gnu/packages/web.scm:2273 +#: gnu/packages/web.scm:2340 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:2297 +#: gnu/packages/web.scm:2364 msgid "Perl HTTP style message" msgstr "" -#: gnu/packages/web.scm:2299 +#: gnu/packages/web.scm:2366 msgid "An HTTP::Message object contains some headers and a content body." msgstr "" -#: gnu/packages/web.scm:2318 +#: gnu/packages/web.scm:2385 msgid "Perl http content negotiation" msgstr "" -#: gnu/packages/web.scm:2320 +#: gnu/packages/web.scm:2387 msgid "" "The HTTP::Negotiate module provides a complete implementation of the\n" "HTTP content negotiation algorithm specified in\n" @@ -13443,11 +14978,11 @@ msgid "" "fields in the request." msgstr "" -#: gnu/packages/web.scm:2345 +#: gnu/packages/web.scm:2412 msgid "Parse HTTP/1.1 requests" msgstr "" -#: gnu/packages/web.scm:2346 +#: gnu/packages/web.scm:2413 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" @@ -13455,74 +14990,74 @@ msgid "" "supported." msgstr "" -#: gnu/packages/web.scm:2366 +#: gnu/packages/web.scm:2433 msgid "Fast HTTP request parser" msgstr "" -#: gnu/packages/web.scm:2367 +#: gnu/packages/web.scm:2434 msgid "" "HTTP::Parser::XS is a fast, primitive HTTP request/response\n" "parser." msgstr "" -#: gnu/packages/web.scm:2388 +#: gnu/packages/web.scm:2455 msgid "Set up a CGI environment from an HTTP::Request" msgstr "" -#: gnu/packages/web.scm:2389 +#: gnu/packages/web.scm:2456 msgid "" "This module provides a convenient way to set up a CGI\n" "environment from an HTTP::Request." msgstr "" -#: gnu/packages/web.scm:2413 +#: gnu/packages/web.scm:2480 msgid "Lightweight HTTP server" msgstr "Simpel HTTP-server" -#: gnu/packages/web.scm:2414 +#: gnu/packages/web.scm:2481 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:2439 +#: gnu/packages/web.scm:2506 msgid "HTTP/1.1 client" msgstr "" -#: gnu/packages/web.scm:2440 +#: gnu/packages/web.scm:2507 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:2459 +#: gnu/packages/web.scm:2526 msgid "Perl module to open an HTML file with automatic charset detection" msgstr "" -#: gnu/packages/web.scm:2461 +#: gnu/packages/web.scm:2528 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:2481 +#: gnu/packages/web.scm:2548 msgid "Family-neutral IP socket supporting both IPv4 and IPv6" msgstr "" -#: gnu/packages/web.scm:2482 +#: gnu/packages/web.scm:2549 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:2504 +#: gnu/packages/web.scm:2571 msgid "Nearly transparent SSL encapsulation for IO::Socket::INET" msgstr "" -#: gnu/packages/web.scm:2506 +#: gnu/packages/web.scm:2573 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" @@ -13531,11 +15066,11 @@ msgid "" "select or poll." msgstr "" -#: gnu/packages/web.scm:2540 +#: gnu/packages/web.scm:2607 msgid "Perl modules for the WWW" msgstr "Perlmoduler for www" -#: gnu/packages/web.scm:2542 +#: gnu/packages/web.scm:2609 msgid "" "The libwww-perl collection is a set of Perl modules which provides a\n" "simple and consistent application programming interface to the\n" @@ -13545,11 +15080,11 @@ msgid "" "help you implement simple HTTP servers." msgstr "" -#: gnu/packages/web.scm:2564 +#: gnu/packages/web.scm:2631 msgid "Perl module to guess the media type for a file or a URL" msgstr "" -#: gnu/packages/web.scm:2566 +#: gnu/packages/web.scm:2633 #, scheme-format msgid "" "The LWP::MediaTypes module provides functions for handling media (also\n" @@ -13558,21 +15093,21 @@ msgid "" "exists it is used instead." msgstr "" -#: gnu/packages/web.scm:2592 +#: gnu/packages/web.scm:2659 msgid "HTTPS support for LWP::UserAgent" msgstr "" -#: gnu/packages/web.scm:2593 +#: gnu/packages/web.scm:2660 msgid "" "The LWP::Protocol::https module provides support for using\n" "https schemed URLs with LWP." msgstr "" -#: gnu/packages/web.scm:2613 +#: gnu/packages/web.scm:2680 msgid "Virtual browser that retries errors" msgstr "" -#: gnu/packages/web.scm:2614 +#: gnu/packages/web.scm:2681 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" @@ -13580,19 +15115,19 @@ msgid "" "and retry a few times." msgstr "" -#: gnu/packages/web.scm:2659 +#: gnu/packages/web.scm:2726 msgid "Perl interface to Amazon S3" msgstr "" -#: gnu/packages/web.scm:2660 +#: gnu/packages/web.scm:2727 msgid "This module provides a Perlish interface to Amazon S3." msgstr "" -#: gnu/packages/web.scm:2680 +#: gnu/packages/web.scm:2747 msgid "Perl low-level HTTP connection (client)" msgstr "" -#: gnu/packages/web.scm:2682 +#: gnu/packages/web.scm:2749 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" @@ -13600,11 +15135,11 @@ msgid "" "HTTP/1.1." msgstr "" -#: gnu/packages/web.scm:2702 +#: gnu/packages/web.scm:2769 msgid "Extensible Perl server engine" msgstr "" -#: gnu/packages/web.scm:2703 +#: gnu/packages/web.scm:2770 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" @@ -13618,19 +15153,19 @@ msgid "" "or to multiple server ports." msgstr "" -#: gnu/packages/web.scm:2731 +#: gnu/packages/web.scm:2798 msgid "SSL support for Net::SMTP" msgstr "SSL-understøttelse for Net::SMTP" -#: gnu/packages/web.scm:2732 +#: gnu/packages/web.scm:2799 msgid "SSL support for Net::SMTP." msgstr "SSL-understøttelse for Net::SMTP." -#: gnu/packages/web.scm:2766 +#: gnu/packages/web.scm:2833 msgid "Perl Superglue for Web frameworks and servers (PSGI toolkit)" msgstr "" -#: gnu/packages/web.scm:2767 +#: gnu/packages/web.scm:2834 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" @@ -13638,21 +15173,21 @@ msgid "" "WSGI." msgstr "" -#: gnu/packages/web.scm:2793 +#: gnu/packages/web.scm:2860 msgid "Plack::Middleware which sets body for redirect response" msgstr "" -#: gnu/packages/web.scm:2794 +#: gnu/packages/web.scm:2861 msgid "" "This module sets the body in redirect response, if it's not\n" "already set." msgstr "" -#: gnu/packages/web.scm:2817 +#: gnu/packages/web.scm:2884 msgid "Override REST methods to Plack apps via POST" msgstr "" -#: gnu/packages/web.scm:2818 +#: gnu/packages/web.scm:2885 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" @@ -13660,72 +15195,72 @@ msgid "" "can say what method it actually meant." msgstr "" -#: gnu/packages/web.scm:2842 +#: gnu/packages/web.scm:2909 msgid "Plack::Middleware which removes body for HTTP response" msgstr "" -#: gnu/packages/web.scm:2843 +#: gnu/packages/web.scm:2910 msgid "" "This module removes the body in an HTTP response if it's not\n" "required." msgstr "" -#: gnu/packages/web.scm:2864 +#: gnu/packages/web.scm:2931 msgid "Supports app to run as a reverse proxy backend" msgstr "" -#: gnu/packages/web.scm:2865 +#: gnu/packages/web.scm:2932 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:2886 +#: gnu/packages/web.scm:2953 msgid "Run HTTP tests on external live servers" msgstr "" -#: gnu/packages/web.scm:2887 +#: gnu/packages/web.scm:2954 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:2909 +#: gnu/packages/web.scm:2976 msgid "Testing TCP programs" msgstr "Testning af TCP-programmer" -#: gnu/packages/web.scm:2910 +#: gnu/packages/web.scm:2977 msgid "Test::TCP is test utilities for TCP/IP programs." msgstr "Test::TCP er testredskaber for TCP/IP-programmer." -#: gnu/packages/web.scm:2938 +#: gnu/packages/web.scm:3005 msgid "Testing-specific WWW::Mechanize subclass" msgstr "" -#: gnu/packages/web.scm:2939 +#: gnu/packages/web.scm:3006 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:2972 +#: gnu/packages/web.scm:3039 msgid "Test::WWW::Mechanize for Catalyst" msgstr "Test::WWW::Mechanize for Catalyst" -#: gnu/packages/web.scm:2973 +#: gnu/packages/web.scm:3040 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:2997 +#: gnu/packages/web.scm:3064 msgid "Test PSGI programs using WWW::Mechanize" msgstr "" -#: gnu/packages/web.scm:2998 +#: gnu/packages/web.scm:3065 msgid "" "PSGI is a specification to decouple web server environments\n" "from web application framework code. Test::WWW::Mechanize is a subclass of\n" @@ -13734,33 +15269,33 @@ msgid "" "applications." msgstr "" -#: gnu/packages/web.scm:3018 +#: gnu/packages/web.scm:3085 msgid "Perl Uniform Resource Identifiers (absolute and relative)" msgstr "" -#: gnu/packages/web.scm:3020 +#: gnu/packages/web.scm:3087 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:3044 +#: gnu/packages/web.scm:3111 msgid "Smart URI fetching/caching" msgstr "" -#: gnu/packages/web.scm:3045 +#: gnu/packages/web.scm:3112 msgid "" "@code{URI::Fetch} is a smart client for fetching HTTP pages,\n" "notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-\n" "and time-saving way." msgstr "" -#: gnu/packages/web.scm:3068 +#: gnu/packages/web.scm:3135 msgid "Find URIs in arbitrary text" msgstr "" -#: gnu/packages/web.scm:3069 +#: gnu/packages/web.scm:3136 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" @@ -13768,11 +15303,11 @@ msgid "" "URI::Find::Schemeless. For a command-line interface, urifind is provided." msgstr "" -#: gnu/packages/web.scm:3091 +#: gnu/packages/web.scm:3158 msgid "WebSocket support for URI package" msgstr "" -#: gnu/packages/web.scm:3092 +#: gnu/packages/web.scm:3159 msgid "" "With this module, the URI package provides the same set of\n" "methods for WebSocket URIs as it does for HTTP URIs." @@ -13780,51 +15315,51 @@ msgstr "" "Med dette modul tilbyder URI-pakken det samme sæt af\n" "metoder for WebSocket URI'er som den gør for HTTP URI'er." -#: gnu/packages/web.scm:3115 +#: gnu/packages/web.scm:3182 msgid "Object for handling URI templates" msgstr "Objekt til håndtering af URI-skabeloner" -#: gnu/packages/web.scm:3116 +#: gnu/packages/web.scm:3183 msgid "" "This perl module provides a wrapper around URI templates as described in\n" "RFC 6570." msgstr "" -#: gnu/packages/web.scm:3137 +#: gnu/packages/web.scm:3204 msgid "Perl extension interface for libcurl" msgstr "Perludvidelsesgrænseflade for libcurl" -#: gnu/packages/web.scm:3139 +#: gnu/packages/web.scm:3206 msgid "" "This is a Perl extension interface for the libcurl file downloading\n" "library." msgstr "" -#: gnu/packages/web.scm:3168 +#: gnu/packages/web.scm:3235 msgid "Web browsing in a Perl object" msgstr "" -#: gnu/packages/web.scm:3169 +#: gnu/packages/web.scm:3236 msgid "" "WWW::Mechanize is a Perl module for stateful programmatic\n" "web browsing, used for automating interaction with websites." msgstr "" -#: gnu/packages/web.scm:3195 +#: gnu/packages/web.scm:3262 msgid "Search A9 OpenSearch compatible engines" msgstr "" -#: gnu/packages/web.scm:3197 +#: gnu/packages/web.scm:3264 msgid "" "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,\n" "http://opensearch.a9.com} compatible search engines." msgstr "" -#: gnu/packages/web.scm:3217 +#: gnu/packages/web.scm:3284 msgid "Perl database of robots.txt-derived permissions" msgstr "" -#: gnu/packages/web.scm:3219 +#: gnu/packages/web.scm:3286 msgid "" "The WWW::RobotRules module parses /robots.txt files as specified in\n" "\"A Standard for Robot Exclusion\", at\n" @@ -13833,21 +15368,21 @@ msgid "" "their web site." msgstr "" -#: gnu/packages/web.scm:3242 +#: gnu/packages/web.scm:3309 msgid "Parse feeds in Python" msgstr "" -#: gnu/packages/web.scm:3244 +#: gnu/packages/web.scm:3311 msgid "" "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,\n" "CDF, Atom 0.3, and Atom 1.0 feeds." msgstr "" -#: gnu/packages/web.scm:3265 +#: gnu/packages/web.scm:3332 msgid "HTTP and WebSocket server library for R" msgstr "" -#: gnu/packages/web.scm:3267 +#: gnu/packages/web.scm:3334 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" @@ -13855,11 +15390,11 @@ msgid "" "particularly easy to create complete web applications using httpuv alone." msgstr "" -#: gnu/packages/web.scm:3288 +#: gnu/packages/web.scm:3355 msgid "Robust, high performance JSON parser and generator for R" msgstr "" -#: gnu/packages/web.scm:3290 +#: gnu/packages/web.scm:3357 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" @@ -13871,41 +15406,41 @@ msgid "" "in systems and applications." msgstr "" -#: gnu/packages/web.scm:3318 +#: gnu/packages/web.scm:3385 msgid "Simple HTTP server to serve static files or dynamic documents" msgstr "" -#: gnu/packages/web.scm:3320 +#: gnu/packages/web.scm:3387 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:3354 +#: gnu/packages/web.scm:3421 msgid "R tools for HTML" msgstr "R-værktøjer for HTML" -#: gnu/packages/web.scm:3356 +#: gnu/packages/web.scm:3423 msgid "This package provides tools for HTML generation and output in R." msgstr "Denne pakke tilbyder værktøjer for HTML-oprettelse og uddata i R." -#: gnu/packages/web.scm:3375 +#: gnu/packages/web.scm:3442 msgid "HTML Widgets for R" msgstr "HTML-kontroller for R" -#: gnu/packages/web.scm:3377 +#: gnu/packages/web.scm:3444 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/web.scm:3400 +#: gnu/packages/web.scm:3469 msgid "Advanced tables for Markdown/HTML" msgstr "" -#: gnu/packages/web.scm:3402 +#: gnu/packages/web.scm:3471 msgid "" "This package provides functions to build tables with advanced layout\n" "elements such as row spanners, column spanners, table spanners, zebra\n" @@ -13916,11 +15451,11 @@ msgid "" "LaTeX." msgstr "" -#: gnu/packages/web.scm:3439 +#: gnu/packages/web.scm:3508 msgid "HTTP client for R" msgstr "HTTP-klient for R" -#: gnu/packages/web.scm:3441 +#: gnu/packages/web.scm:3510 msgid "" "The @code{curl()} and @code{curl_download()} functions provide highly\n" "configurable drop-in replacements for base @code{url()} and\n" @@ -13931,31 +15466,31 @@ msgid "" "callback or connection interfaces." msgstr "" -#: gnu/packages/web.scm:3463 +#: gnu/packages/web.scm:3532 msgid "Output R objects in HTML format" msgstr "" -#: gnu/packages/web.scm:3465 +#: gnu/packages/web.scm:3534 msgid "" "This package provides easy-to-use and versatile functions to output R\n" "objects in HTML format." msgstr "" -#: gnu/packages/web.scm:3482 +#: gnu/packages/web.scm:3551 msgid "JSON library for R" msgstr "" -#: gnu/packages/web.scm:3484 +#: gnu/packages/web.scm:3553 msgid "" "This package provides functions to convert R objects into JSON objects\n" "and vice-versa." msgstr "" -#: gnu/packages/web.scm:3513 +#: gnu/packages/web.scm:3582 msgid "HTML5 parsing library" msgstr "HTML5-fortolkningsbibliotek" -#: gnu/packages/web.scm:3515 +#: gnu/packages/web.scm:3584 msgid "" "Gumbo is an implementation of the HTML5 parsing algorithm implemented as\n" "a pure C99 library." @@ -13963,22 +15498,22 @@ msgstr "" "Gumbo er en implementering af HTML5-fortolkningsalgoritmen implenteret\n" "som et rent C99-bibliotek." -#: gnu/packages/web.scm:3586 +#: gnu/packages/web.scm:3655 msgid "Application container server" msgstr "" -#: gnu/packages/web.scm:3588 +#: gnu/packages/web.scm:3657 msgid "" "uWSGI presents a complete stack for networked/clustered web applications,\n" "implementing message/object passing, caching, RPC and process management.\n" "It uses the uwsgi protocol for all the networking/interprocess communications." msgstr "" -#: gnu/packages/web.scm:3618 +#: gnu/packages/web.scm:3687 msgid "Command-line JSON processor" msgstr "" -#: gnu/packages/web.scm:3619 +#: gnu/packages/web.scm:3688 msgid "" "jq is like sed for JSON data – you can use it to slice and\n" "filter and map and transform structured data with the same ease that sed, awk,\n" @@ -13988,66 +15523,190 @@ msgid "" "you'd expect." msgstr "" -#: gnu/packages/web.scm:3658 +#: gnu/packages/web.scm:3727 msgid "Library for mocking web service APIs which use HTTP or HTTPS" msgstr "" -#: gnu/packages/web.scm:3660 +#: gnu/packages/web.scm:3729 msgid "" "Uhttpmock is a project for mocking web service APIs which use HTTP or\n" "HTTPS. It provides a library, libuhttpmock, which implements recording and\n" "playback of HTTP request/response traces." msgstr "" -#: gnu/packages/web.scm:3695 +#: gnu/packages/web.scm:3764 msgid "Single file web server" msgstr "" -#: gnu/packages/web.scm:3696 +#: gnu/packages/web.scm:3765 msgid "" "Woof (Web Offer One File) is a small simple web server that\n" "can easily be invoked on a single file. Your partner can access the file with\n" "tools they trust (e.g. wget)." msgstr "" -#: gnu/packages/web.scm:3805 +#: gnu/packages/web.scm:3791 +msgid "Build system for the Netsurf project" +msgstr "" + +#: gnu/packages/web.scm:3793 +msgid "" +"This package provides the shared build system for Netsurf project\n" +"libraries." +msgstr "" + +#: gnu/packages/web.scm:3828 +msgid "Parser building library" +msgstr "Fortolkerkompileringsbibliotek" + +#: gnu/packages/web.scm:3830 +msgid "" +"LibParserUtils is a library for building efficient parsers, written in\n" +"C. It is developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:3858 +msgid "HTML5 compliant parsing library" +msgstr "HTML5-overholdnede fortolkningsbibliotek" + +#: gnu/packages/web.scm:3860 +msgid "" +"Hubbub is an HTML5 compliant parsing library, written in C, which can\n" +"parse both valid and invalid web content. It is developed as part of the\n" +"NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:3884 +msgid "String internment library" +msgstr "" + +#: gnu/packages/web.scm:3886 +msgid "" +"LibWapcaplet provides a reference counted string internment system\n" +"designed to store small strings and allow rapid comparison of them. It is\n" +"developed as part of the Netsurf project." +msgstr "" + +#: gnu/packages/web.scm:3913 +msgid "CSS parser and selection library" +msgstr "CSS-fortolker- og markeringsbibliotek" + +#: gnu/packages/web.scm:3915 +msgid "" +"LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,\n" +"written in C. It is developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:3949 +msgid "Implementation of the W3C DOM" +msgstr "Implementering af W3C DOM" + +#: gnu/packages/web.scm:3951 +msgid "" +"LibDOM is an implementation of the W3C DOM, written in C. It is\n" +"developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:3978 +msgid "Library for parsing SVG files" +msgstr "Bibliotek til at håndtere SVG-filer" + +#: gnu/packages/web.scm:3980 +msgid "" +"Libsvgtiny takes some SVG as input and returns a list of paths and texts\n" +"which can be rendered easily, as defined in\n" +"@url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf\n" +"project." +msgstr "" + +#: gnu/packages/web.scm:4003 +msgid "Decoding library for BMP and ICO files" +msgstr "Afkodningsbibliotek for BMP- og ICO-filer" + +#: gnu/packages/web.scm:4005 +msgid "" +"Libnsbmp is a decoding library for BMP and ICO image file formats,\n" +"written in C. It is developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:4026 +msgid "Decoding library for GIF files" +msgstr "Afkodningsbibliotek for GIF-filer" + +#: gnu/packages/web.scm:4028 +msgid "" +"Libnsgif is a decoding library for the GIF image file format, written in\n" +"C. It is developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:4049 +msgid "Utility library for NetSurf" +msgstr "Redskabsbibliotek for NetSurf" + +#: gnu/packages/web.scm:4051 +msgid "" +"Libnsutils provides a small number of useful utility routines. It is\n" +"developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:4072 +msgid "Library to generate a static Public Suffix List" +msgstr "Bibliotek til at oprette en statisk Public Suffix-liste" + +#: gnu/packages/web.scm:4074 +msgid "" +"Libnspsl is a library to generate a static code representation of the\n" +"Public Suffix List. It is developed as part of the NetSurf project." +msgstr "" + +#: gnu/packages/web.scm:4100 +msgid "Generate JavaScript to DOM bindings" +msgstr "" + +#: gnu/packages/web.scm:4102 +msgid "" +"@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from\n" +"w3c webidl files and a binding configuration file." +msgstr "" + +#: gnu/packages/web.scm:4213 msgid "Web browser" msgstr "Internetbrowser" -#: gnu/packages/web.scm:3807 +#: gnu/packages/web.scm:4215 msgid "" "NetSurf is a lightweight web browser that has its own layout and\n" "rendering engine entirely written from scratch. It is small and capable of\n" "handling many of the web standards in use today." msgstr "" -#: gnu/packages/web.scm:3829 +#: gnu/packages/web.scm:4237 msgid "Unix command line interface to the www" msgstr "Unix-kommandolinjegrænseflade til www" -#: gnu/packages/web.scm:3830 +#: gnu/packages/web.scm:4238 msgid "" "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)\n" "provides a unix command line interface to a variety of popular www search engines\n" "and similar services." msgstr "" -#: gnu/packages/web.scm:3866 +#: gnu/packages/web.scm:4269 msgid "Simple static web server" msgstr "Simpel statisk internetserver" -#: gnu/packages/web.scm:3867 +#: gnu/packages/web.scm:4270 msgid "" "darkhttpd is a simple static web server. It is\n" "standalone and does not need inetd or ucspi-tcp. It does not need any\n" "config files---you only have to specify the www root." msgstr "" -#: gnu/packages/web.scm:3897 +#: gnu/packages/web.scm:4300 msgid "Analyze Web server logs in real time" msgstr "" -#: gnu/packages/web.scm:3899 +#: gnu/packages/web.scm:4302 msgid "" "GoAccess is a real-time web log analyzer and interactive viewer that\n" "runs in a terminal or through your browser. It provides fast and valuable\n" @@ -14055,11 +15714,11 @@ msgid "" "on the fly." msgstr "" -#: gnu/packages/web.scm:3934 +#: gnu/packages/web.scm:4337 msgid "Tunnel data connections through HTTP requests" msgstr "" -#: gnu/packages/web.scm:3935 +#: gnu/packages/web.scm:4338 msgid "" "httptunnel creates a bidirectional virtual data connection\n" "tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be\n" @@ -14068,11 +15727,86 @@ msgid "" "tools like SSH (Secure Shell) to reach the outside world." msgstr "" -#: gnu/packages/wordnet.scm:91 +#: gnu/packages/web.scm:4363 +msgid "TLS proxy for clients or servers" +msgstr "" + +#: gnu/packages/web.scm:4364 +msgid "" +"Stunnel is a proxy designed to add TLS encryption\n" +"functionality to existing clients and servers without any changes in the\n" +"programs' code. Its architecture is optimized for security, portability, and\n" +"scalability (including load-balancing), making it suitable for large\n" +"deployments." +msgstr "" + +#: gnu/packages/web.scm:4388 +msgid "Internet services daemon" +msgstr "" + +#: gnu/packages/web.scm:4389 +msgid "" +"@code{xinetd}, a more secure replacement for @code{inetd},\n" +"listens for incoming requests over a network and launches the appropriate\n" +"service for that request. Requests are made using port numbers as identifiers\n" +"and xinetd usually launches another daemon to handle the request. It can be\n" +"used to start services with both privileged and non-privileged port numbers." +msgstr "" + +#: gnu/packages/web.scm:4433 +msgid "HTML Tidy with HTML5 support" +msgstr "" + +#: gnu/packages/web.scm:4435 +msgid "" +"Tidy is a console application which corrects and cleans up\n" +"HTML and XML documents by fixing markup errors and upgrading\n" +"legacy code to modern standards.\n" +"\n" +"Tidy also provides @code{libtidy}, a C static and dynamic library that\n" +"developers can integrate into their applications to make use of the\n" +"functions of Tidy." +msgstr "" + +#: gnu/packages/web.scm:4491 +msgid "Webserver with focus on security" +msgstr "" + +#: gnu/packages/web.scm:4493 +msgid "" +"Hiawatha has been written with security in mind.\n" +"Features include the ability to stop SQL injections, XSS and CSRF attacks and\n" +"exploit attempts." +msgstr "" + +#: gnu/packages/web.scm:4517 +msgid "HTTP request and response service" +msgstr "" + +#: gnu/packages/web.scm:4518 +msgid "" +"Testing an HTTP Library can become difficult sometimes.\n" +"@code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the\n" +"response. This exists to cover all kinds of HTTP scenarios. All endpoint responses are\n" +"JSON-encoded." +msgstr "" + +#: gnu/packages/web.scm:4546 +msgid "Test your HTTP library against a local copy of httpbin" +msgstr "" + +#: gnu/packages/web.scm:4548 +msgid "" +"@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected\n" +"into your tests. It automatically starts up a HTTP server in a separate thread running\n" +"@code{httpbin} and provides your test with the URL in the fixture." +msgstr "" + +#: gnu/packages/wordnet.scm:86 msgid "Lexical database for the English language" msgstr "Leksikal database for det engelske sprog" -#: gnu/packages/wordnet.scm:93 +#: gnu/packages/wordnet.scm:88 msgid "" "WordNet is a large lexical database of English. Nouns, verbs,\n" "adjectives and adverbs are grouped into sets of cognitive synonyms (synsets),\n" @@ -14084,11 +15818,11 @@ msgid "" "language processing." msgstr "" -#: gnu/packages/xiph.scm:66 +#: gnu/packages/xiph.scm:68 msgid "Library for manipulating the ogg multimedia format" msgstr "" -#: gnu/packages/xiph.scm:68 +#: gnu/packages/xiph.scm:70 msgid "" "The libogg library allows to manipulate the ogg multimedia container\n" "format, which encapsulates raw compressed data and allows the interleaving of\n" @@ -14097,11 +15831,11 @@ msgid "" "periodic timestamps for seeking." msgstr "" -#: gnu/packages/xiph.scm:92 +#: gnu/packages/xiph.scm:94 msgid "Library implementing the vorbis audio format" msgstr "" -#: gnu/packages/xiph.scm:94 +#: gnu/packages/xiph.scm:96 msgid "" "The libvorbis library implements the ogg vorbis audio format,\n" "a fully open, non-proprietary, patent-and-royalty-free, general-purpose\n" @@ -14110,22 +15844,22 @@ msgid "" "128 kbps/channel." msgstr "" -#: gnu/packages/xiph.scm:119 +#: gnu/packages/xiph.scm:121 msgid "Library implementing the Theora video format" msgstr "Bibliotek der implementerer videoformatet Theora" -#: gnu/packages/xiph.scm:121 +#: gnu/packages/xiph.scm:123 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:142 +#: gnu/packages/xiph.scm:144 msgid "Library for patent-free audio compression format" msgstr "Bibliotek for det patentfrie lydkomprimeringsformat" -#: gnu/packages/xiph.scm:144 +#: gnu/packages/xiph.scm:146 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" @@ -14133,11 +15867,21 @@ msgid "" "stereo encoding, and voice activity detection." msgstr "" -#: gnu/packages/xiph.scm:174 +#: gnu/packages/xiph.scm:167 +msgid "Speex processing library" +msgstr "Speex-behandlingsbibliotek" + +#: gnu/packages/xiph.scm:169 +msgid "" +"SpeexDSP is a @dfn{DSP} (Digital Signal Processing) library based on\n" +"work from the @code{speex} codec." +msgstr "" + +#: gnu/packages/xiph.scm:196 msgid "Cross platform audio library" msgstr "" -#: gnu/packages/xiph.scm:176 +#: gnu/packages/xiph.scm:198 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" @@ -14163,21 +15907,21 @@ msgid "" "@end enumerate\n" msgstr "" -#: gnu/packages/xiph.scm:218 +#: gnu/packages/xiph.scm:240 msgid "Free lossless audio codec" msgstr "Fri lydkodning uden kvalitetstab" -#: gnu/packages/xiph.scm:220 +#: gnu/packages/xiph.scm:242 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:246 +#: gnu/packages/xiph.scm:268 msgid "Karaoke and text codec for embedding in ogg" msgstr "" -#: gnu/packages/xiph.scm:248 +#: gnu/packages/xiph.scm:270 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" @@ -14192,11 +15936,11 @@ msgid "" "Kate stream." msgstr "" -#: gnu/packages/xiph.scm:286 +#: gnu/packages/xiph.scm:308 msgid "Ogg vorbis tools" msgstr "Ogg vorbis-værktøjer" -#: gnu/packages/xiph.scm:288 +#: gnu/packages/xiph.scm:310 msgid "" "Ogg vorbis is a non-proprietary, patent-and-royalty-free,\n" "general-purpose compressed audio format.\n" @@ -14209,11 +15953,11 @@ msgid "" " an ogg vorbis file." msgstr "" -#: gnu/packages/xiph.scm:313 gnu/packages/xiph.scm:376 +#: gnu/packages/xiph.scm:335 gnu/packages/xiph.scm:398 msgid "Versatile audio codec" msgstr "Alsidig lydkodning" -#: gnu/packages/xiph.scm:315 +#: gnu/packages/xiph.scm:337 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" @@ -14222,29 +15966,29 @@ msgid "" "incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec." msgstr "" -#: gnu/packages/xiph.scm:349 +#: gnu/packages/xiph.scm:371 msgid "Command line utilities to encode, inspect, and decode .opus files" msgstr "" -#: gnu/packages/xiph.scm:350 +#: gnu/packages/xiph.scm:372 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:378 +#: gnu/packages/xiph.scm:400 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:408 +#: gnu/packages/xiph.scm:430 msgid "Streaming media server" msgstr "Strøm-medieserver" -#: gnu/packages/xiph.scm:409 +#: gnu/packages/xiph.scm:431 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" @@ -14252,22 +15996,22 @@ msgid "" "things in between." msgstr "" -#: gnu/packages/xiph.scm:437 +#: gnu/packages/xiph.scm:459 msgid "Audio streaming library for icecast encoders" msgstr "" -#: gnu/packages/xiph.scm:439 +#: gnu/packages/xiph.scm:461 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:58 +#: gnu/packages/zip.scm:61 msgid "Compression and file packing utility" msgstr "Komprimerings- og filpakningsredskab" -#: gnu/packages/zip.scm:60 +#: gnu/packages/zip.scm:63 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" @@ -14282,11 +16026,11 @@ msgid "" "Compression ratios of 2:1 to 3:1 are common for text files." msgstr "" -#: gnu/packages/zip.scm:114 +#: gnu/packages/zip.scm:117 msgid "Decompression and file extraction utility" msgstr "" -#: gnu/packages/zip.scm:116 +#: gnu/packages/zip.scm:119 msgid "" "UnZip is an extraction utility for archives compressed in .zip format,\n" "also called \"zipfiles\".\n" @@ -14297,14 +16041,17 @@ msgid "" "recreates the stored directory structure by default." msgstr "" -#: gnu/packages/zip.scm:150 +#: gnu/packages/zip.scm:153 msgid "Library for accessing zip files" msgstr "Bibliotek til at tilgå zip-filer" -#: gnu/packages/zip.scm:152 +#: gnu/packages/zip.scm:155 msgid "ZZipLib is a library based on zlib for accessing zip files." msgstr "ZZipLib er et bibliotek baseret på zlib for adgang til zip-filer." -#: gnu/packages/zip.scm:170 +#: gnu/packages/zip.scm:173 msgid "Provides an interface to ZIP archive files" msgstr "Tilbyder en grænseflade til ZIP-arkivfiler" + +#~ msgid "Tune hard disk parameters for high performance" +#~ msgstr "Finjuster harddiskparametre for høj ydelse" diff --git a/tests/cache.scm b/tests/cache.scm new file mode 100644 index 0000000000..e46cdd816d --- /dev/null +++ b/tests/cache.scm @@ -0,0 +1,88 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (test-cache) + #:use-module (guix cache) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-64) + #:use-module ((guix utils) #:select (call-with-temporary-directory)) + #:use-module (ice-9 match)) + +(cond-expand + (guile-2.2 + ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and + ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. + (define time-monotonic time-tai)) + (else #t)) + +(test-begin "cache") + +(test-equal "remove-expired-cache-entries" + '("o" "l" "d") + (let* ((removed '()) + (now (time-second (current-time time-monotonic))) + (ttl 100) + (stamp (match-lambda + ((or "n" "e" "w") (+ now 100)) + ((or "o" "l" "d") (- now 100)))) + (delete (lambda (entry) + (set! removed (cons entry removed))))) + (remove-expired-cache-entries (reverse '("n" "e" "w" + "o" "l" "d")) + #:entry-expiration stamp + #:delete-entry delete) + removed)) + +(define-syntax-rule (test-cache-cleanup cache exp ...) + (call-with-temporary-directory + (lambda (cache) + (let* ((deleted '()) + (delete! (lambda (entry) + (set! deleted (cons entry deleted))))) + exp ... + (maybe-remove-expired-cache-entries cache + (const '("a" "b" "c")) + #:entry-expiration (const 0) + #:delete-entry delete!) + (reverse deleted))))) + +(test-equal "maybe-remove-expired-cache-entries, first cleanup" + '("a" "b" "c") + (test-cache-cleanup cache)) + +(test-equal "maybe-remove-expired-cache-entries, no cleanup needed" + '() + (test-cache-cleanup cache + (call-with-output-file (string-append cache "/last-expiry-cleanup") + (lambda (port) + (display (+ (time-second (current-time time-monotonic)) 100) + port))))) + +(test-equal "maybe-remove-expired-cache-entries, cleanup needed" + '("a" "b" "c") + (test-cache-cleanup cache + (call-with-output-file (string-append cache "/last-expiry-cleanup") + (lambda (port) + (display 0 port))))) + +(test-end "cache") + +;;; Local Variables: +;;; eval: (put 'test-cache-cleanup 'scheme-indent-function 1) +;;; End: diff --git a/tests/cran.scm b/tests/cran.scm index c162d45d8a..d785ec5db1 100644 --- a/tests/cran.scm +++ b/tests/cran.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,6 +18,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (test-cran) + #:use-module (gnu packages statistics) #:use-module (guix import cran) #:use-module (guix tests) #:use-module (srfi srfi-1) @@ -86,6 +88,10 @@ Date/Publication: 2015-07-14 14:15:16 '() ((@@ (guix import cran) listify) simple-alist "BadList")) +(test-equal "r-mininal is not a cran package" + #f + ((@@ (guix import cran) cran-package?) r-minimal)) + (test-assert "description->package" ;; Replace network resources with sample data. (mock ((guix build download) url-fetch diff --git a/tests/derivations.scm b/tests/derivations.scm index 75c8d1dfb1..cabbf7b951 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -701,6 +701,20 @@ #:modules '((guix module that does not exist))))) +(test-equal "build-expression->derivation and builder encoding" + '("UTF-8" #t) + (let* ((exp '(λ (α) (+ α 1))) + (drv (build-expression->derivation %store "foo" exp))) + (match (derivation-builder-arguments drv) + ((... builder) + (with-fluids ((%default-port-encoding "UTF-8")) + (call-with-input-file builder + (lambda (port) + (list (port-encoding port) + (->bool + (string-contains (get-string-all port) + "(λ (α) (+ α 1))")))))))))) + (test-assert "build-expression->derivation and derivation-prerequisites" (let ((drv (build-expression->derivation %store "fail" #f))) (any (match-lambda diff --git a/tests/discovery.scm b/tests/discovery.scm new file mode 100644 index 0000000000..b838731e16 --- /dev/null +++ b/tests/discovery.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (test-discovery) + #:use-module (guix discovery) + #:use-module (guix build-system) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) + +(define %top-srcdir + (dirname (search-path %load-path "guix.scm"))) + +(test-begin "discovery") + +(test-assert "scheme-modules" + (match (map module-name (scheme-modules %top-srcdir "guix/import")) + ((('guix 'import _ ...) ..1) + #t))) + +(test-assert "all-modules" + (match (map module-name + (all-modules `((,%top-srcdir . "guix/build-system")))) + ((('guix 'build-system names) ..1) + names))) + +(test-assert "fold-module-public-variables" + (let ((modules (all-modules `((,%top-srcdir . "guix/build-system"))))) + (match (fold-module-public-variables (lambda (obj result) + (if (build-system? obj) + (cons obj result) + result)) + '() + modules) + (((? build-system? bs) ..1) + bs)))) + +(test-end "discovery") diff --git a/tests/gexp.scm b/tests/gexp.scm index b3f7323984..cf88a9db80 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm @@ -627,6 +627,10 @@ #~(foo #$@(list (with-imported-modules '((foo)) #~+) (with-imported-modules '((bar)) #~-))))) +(test-equal "gexp-modules and literal Scheme object" + '() + (gexp-modules #t)) + (test-assertm "gexp->derivation #:modules" (mlet* %store-monad ((build -> #~(begin @@ -946,6 +950,13 @@ (string=? (readlink (string-append comp "/text")) text))))))) +(test-assert "lower-object & gexp-input-error?" + (guard (c ((gexp-input-error? c) + (gexp-error-invalid-input c))) + (run-with-store %store + (lower-object (current-module)) + #:guile-for-build (%guile-for-build)))) + (test-assert "printer" (string-match "^#<gexp \\(string-append .*#<package coreutils.*\ \"/bin/uname\"\\) [[:xdigit:]]+>$" diff --git a/tests/guix-build.sh b/tests/guix-build.sh index ab911b7210..880a582777 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -36,6 +36,14 @@ guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' | \ guix build hello -d | \ grep -e '-hello-[0-9\.]\+\.drv$' +# Passing a URI. +GUIX_DAEMON_SOCKET="file://$NIX_STATE_DIR/daemon-socket/socket" \ +guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' + +( if GUIX_DAEMON_SOCKET="weird://uri" \ + guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)'; \ + then exit 1; fi ) + # Check --sources option with its arguments module_dir="t-guix-build-$$" mkdir "$module_dir" @@ -177,7 +185,6 @@ test "`guix build superseded -d`" = "`guix build bar -d`" # Parsing package names and versions. guix build -n time # PASS guix build -n time@1.7 # PASS, version found -guix build -n time-1.7 # PASS, deprecated version syntax if guix build -n time@3.2; # FAIL, version not found then false; else true; fi if guix build -n something-that-will-never-exist; # FAIL diff --git a/tests/packages.scm b/tests/packages.scm index aa29758830..930374dabf 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -470,6 +470,14 @@ (package-derivation %store p) #f))) +(let ((dummy (dummy-package "foo" (inputs `(("x" ,(current-module))))))) + (test-equal "&package-input-error" + (list dummy (current-module)) + (guard (c ((package-input-error? c) + (list (package-error-package c) + (package-error-invalid-input c)))) + (package-derivation %store dummy)))) + (test-assert "reference to non-existent output" ;; See <http://bugs.gnu.org/19630>. (parameterize ((%graft? #f)) @@ -878,6 +886,33 @@ (and (build-derivations %store (list drv)) (file-exists? (string-append out "/bin/make"))))))) +(test-equal "package-mapping" + 42 + (let* ((dep (dummy-package "chbouib" + (native-inputs `(("x" ,grep))))) + (p0 (dummy-package "example" + (inputs `(("foo" ,coreutils) + ("bar" ,grep) + ("baz" ,dep))))) + (transform (lambda (p) + (package (inherit p) (source 42)))) + (rewrite (package-mapping transform)) + (p1 (rewrite p0))) + (and (eq? p1 (rewrite p0)) + (eqv? 42 (package-source p1)) + (match (package-inputs p1) + ((("foo" dep1) ("bar" dep2) ("baz" dep3)) + (and (eq? dep1 (rewrite coreutils)) ;memoization + (eq? dep2 (rewrite grep)) + (eq? dep3 (rewrite dep)) + (eqv? 42 + (package-source dep1) (package-source dep2) + (package-source dep3)) + (match (package-native-inputs dep3) + ((("x" dep)) + (and (eq? dep (rewrite grep)) + (package-source dep)))))))))) + (test-assert "package-input-rewriting" (let* ((dep (dummy-package "chbouib" (native-inputs `(("x" ,grep))))) diff --git a/tests/profiles.scm b/tests/profiles.scm index d0b1e14a86..093422792f 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -50,6 +50,12 @@ (run-with-store %store exp #:guile-for-build (%guile-for-build)))) +(define-syntax-rule (test-equalm name value exp) + (test-equal name + value + (run-with-store %store exp + #:guile-for-build (%guile-for-build)))) + ;; Example manifest entries. (define guile-1.8.8 @@ -366,6 +372,29 @@ get-string-all) "foo!")))))) +(test-equalm "union vs. dangling symlink" ;<https://bugs.gnu.org/26949> + "does-not-exist" + (mlet* %store-monad + ((thing1 -> (dummy-package "dummy" + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:builder + (let ((out (assoc-ref %outputs "out"))) + (mkdir out) + (symlink "does-not-exist" + (string-append out "/dangling")) + #t))))) + (thing2 -> (package (inherit thing1) (name "dummy2"))) + (drv (profile-derivation (packages->manifest + (list thing1 thing2)) + #:hooks '() + #:locales? #f)) + (profile -> (derivation->output-path drv))) + (mbegin %store-monad + (built-derivations (list drv)) + (return (readlink (readlink (string-append profile "/dangling"))))))) + (test-end "profiles") ;;; Local Variables: diff --git a/tests/publish.scm b/tests/publish.scm index ea0f4a3477..31043f71fa 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -98,6 +98,18 @@ (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") port)) (loop))))) +(define (wait-for-file file) + ;; Wait until FILE shows up. + (let loop ((i 20)) + (cond ((file-exists? file) + #t) + ((zero? i) + (error "file didn't show up" file)) + (else + (pk 'wait-for-file file) + (sleep 1) + (loop (- i 1)))))) + ;; Wait until the two servers are ready. (wait-until-ready 6789) @@ -122,13 +134,15 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~a~%" +References: ~a +FileSize: ~a~%" %item (basename %item) (bytevector->nix-base32-string (path-info-hash info)) (path-info-nar-size info) - (basename (first (path-info-references info))))) + (basename (first (path-info-references info))) + (path-info-nar-size info))) (signature (base64-encode (string->utf8 (canonical-sexp->string @@ -152,11 +166,13 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~%" +References: ~%\ +FileSize: ~a~%" item (uri-encode (basename item)) (bytevector->nix-base32-string (path-info-hash info)) + (path-info-nar-size info) (path-info-nar-size info))) (signature (base64-encode (string->utf8 @@ -314,4 +330,113 @@ References: ~%" (call-with-input-string "" port-sha256)))))) (response-code (http-get uri)))) +(unless (zlib-available?) + (test-skip 1)) +(test-equal "with cache" + (list #t + `(("StorePath" . ,%item) + ("URL" . ,(string-append "nar/gzip/" (basename %item))) + ("Compression" . "gzip")) + 200 ;nar/gzip/… + #t ;Content-Length + #t ;FileSize + 200) ;nar/… + (call-with-temporary-directory + (lambda (cache) + (let ((thread (with-separate-output-ports + (call-with-new-thread + (lambda () + (guix-publish "--port=6797" "-C2" + (string-append "--cache=" cache))))))) + (wait-until-ready 6797) + (let* ((base "http://localhost:6797/") + (part (store-path-hash-part %item)) + (url (string-append base part ".narinfo")) + (nar-url (string-append base "/nar/gzip/" (basename %item))) + (cached (string-append cache "/gzip/" (basename %item) + ".narinfo")) + (nar (string-append cache "/gzip/" + (basename %item) ".nar")) + (response (http-get url))) + (and (= 404 (response-code response)) + + ;; We should get an explicitly short TTL for 404 in this case + ;; because it's going to become 200 shortly. + (match (assq-ref (response-headers response) 'cache-control) + ((('max-age . ttl)) + (< ttl 3600))) + + (wait-for-file cached) + (let* ((body (http-get-port url)) + (compressed (http-get nar-url)) + (uncompressed (http-get (string-append base "nar/" + (basename %item)))) + (narinfo (recutils->alist body))) + (list (file-exists? nar) + (filter (lambda (item) + (match item + (("Compression" . _) #t) + (("StorePath" . _) #t) + (("URL" . _) #t) + (_ #f))) + narinfo) + (response-code compressed) + (= (response-content-length compressed) + (stat:size (stat nar))) + (= (string->number + (assoc-ref narinfo "FileSize")) + (stat:size (stat nar))) + (response-code uncompressed))))))))) + +(unless (zlib-available?) + (test-skip 1)) +(let ((item (add-text-to-store %store "fake-compressed-thing.tar.gz" + (random-text)))) + (test-equal "with cache, uncompressed" + (list #f + `(("StorePath" . ,item) + ("URL" . ,(string-append "nar/" (basename item))) + ("Compression" . "none")) + 200 ;nar/… + (path-info-nar-size + (query-path-info %store item)) ;FileSize + 404) ;nar/gzip/… + (call-with-temporary-directory + (lambda (cache) + (let ((thread (with-separate-output-ports + (call-with-new-thread + (lambda () + (guix-publish "--port=6796" "-C2" + (string-append "--cache=" cache))))))) + (wait-until-ready 6796) + (let* ((base "http://localhost:6796/") + (part (store-path-hash-part item)) + (url (string-append base part ".narinfo")) + (cached (string-append cache "/none/" + (basename item) ".narinfo")) + (nar (string-append cache "/none/" + (basename item) ".nar")) + (response (http-get url))) + (and (= 404 (response-code response)) + + (wait-for-file cached) + (let* ((body (http-get-port url)) + (compressed (http-get (string-append base "nar/gzip/" + (basename item)))) + (uncompressed (http-get (string-append base "nar/" + (basename item)))) + (narinfo (recutils->alist body))) + (list (file-exists? nar) + (filter (lambda (item) + (match item + (("Compression" . _) #t) + (("StorePath" . _) #t) + (("URL" . _) #t) + (_ #f))) + narinfo) + (response-code uncompressed) + (string->number + (assoc-ref narinfo "FileSize")) + (response-code compressed)))))))))) + (test-end "publish") diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm index a1f684c736..a408ea6f8d 100644 --- a/tests/scripts-build.scm +++ b/tests/scripts-build.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,6 +23,7 @@ #:use-module (guix scripts build) #:use-module (guix ui) #:use-module (guix utils) + #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages busybox) #:use-module (ice-9 match) @@ -97,8 +98,8 @@ (test-assert "options->transformation, with-input" (let* ((p (dummy-package "guix.scm" - (inputs `(("foo" ,coreutils) - ("bar" ,grep) + (inputs `(("foo" ,(specification->package "coreutils")) + ("bar" ,(specification->package "grep")) ("baz" ,(dummy-package "chbouib" (native-inputs `(("x" ,grep))))))))) (t (options->transformation '((with-input . "coreutils=busybox") diff --git a/tests/search-paths.scm b/tests/search-paths.scm index 2a4c18dd76..8dad424415 100644 --- a/tests/search-paths.scm +++ b/tests/search-paths.scm @@ -29,7 +29,7 @@ (test-equal "evaluate-search-paths, separator is #f" (string-append %top-srcdir - "/gnu/packages/bootstrap/armhf-linux") + "/gnu/packages/bootstrap/aarch64-linux") ;; The following search path spec should evaluate to a single item: the ;; first directory that matches the "-linux$" pattern in diff --git a/tests/services.scm b/tests/services.scm index 8993c3dafc..8484ee982a 100644 --- a/tests/services.scm +++ b/tests/services.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +31,17 @@ (test-begin "services") +(test-equal "services, default value" + '(42 123 234 error) + (let* ((t1 (service-type (name 't1) (extensions '()))) + (t2 (service-type (name 't2) (extensions '()) + (default-value 42)))) + (list (service-value (service t2)) + (service-value (service t2 123)) + (service-value (service t1 234)) + (guard (c ((missing-value-service-error? c) 'error)) + (service t1))))) + (test-assert "service-back-edges" (let* ((t1 (service-type (name 't1) (extensions '()) (compose +) (extend *))) @@ -75,7 +86,7 @@ (iota 5 1))) #:target-type t1))) (and (eq? (service-kind r) t1) - (service-parameters r)))) + (service-value r)))) (test-assert "fold-services, ambiguity" (let* ((t1 (service-type (name 't1) (extensions '()) diff --git a/tests/size.scm b/tests/size.scm index 068ebc1d68..575b1abfdd 100644 --- a/tests/size.scm +++ b/tests/size.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -86,6 +86,22 @@ (profile-self-size profile3) (profile-self-size profile4)))))))))))) +(test-assertm "store-profile with multiple items" + (mlet* %store-monad ((file1 (gexp->derivation "file1" + #~(symlink #$%bootstrap-guile + #$output))) + (file2 (text-file* "file2" + "the file => " file1))) + (mbegin %store-monad + (built-derivations (list file2)) + (mlet %store-monad ((profiles (store-profile + (list (derivation->output-path file2) + (derivation->output-path file1)))) + (reference (store-profile + (list (derivation->output-path file2))))) + (return (and (= (length profiles) 4) + (lset= equal? profiles reference))))))) + (test-end "size") ;;; Local Variables: diff --git a/tests/store.scm b/tests/store.scm index 45150d36ca..45aeb329b0 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -48,6 +48,14 @@ (test-begin "store") +(test-assert "open-connection with file:// URI" + (let ((store (open-connection (string-append "file://" + (%daemon-socket-uri))))) + (and (add-text-to-store store "foo" "bar") + (begin + (close-connection store) + #t)))) + (test-equal "connection handshake error" EPROTO (let ((port (%make-void-port "rw"))) @@ -750,8 +758,9 @@ (cut export-paths %store (list file) <>)))) (delete-paths %store (list file)) - ;; Flip a bit in the stream's payload. - (let* ((index (quotient (bytevector-length dump) 4)) + ;; Flip a bit in the stream's payload. INDEX here falls in the middle of + ;; the file contents in DUMP, regardless of the store prefix. + (let* ((index #x70) (byte (bytevector-u8-ref dump index))) (bytevector-u8-set! dump index (logxor #xff byte))) diff --git a/tests/ui.scm b/tests/ui.scm index cfe417d497..1e98e3534b 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -189,6 +189,10 @@ Second line" 24)) (string->duration "1m") (string->duration "30d")) +(test-equal "duration, 2 hours" + 7200 + (time-second (string->duration "2h"))) + (test-equal "duration, 1 second" (make-time time-duration 0 1) (string->duration "1s")) diff --git a/tests/workers.scm b/tests/workers.scm new file mode 100644 index 0000000000..44b882f691 --- /dev/null +++ b/tests/workers.scm @@ -0,0 +1,45 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (test-workers) + #:use-module (guix workers) + #:use-module (ice-9 threads) + #:use-module (srfi srfi-64)) + +(test-begin "workers") + +(test-equal "enqueue" + 4242 + (let* ((pool (make-pool)) + (result 0) + (1+! (let ((lock (make-mutex))) + (lambda () + (with-mutex lock + (set! result (+ result 1))))))) + (let loop ((i 4242)) + (unless (zero? i) + (pool-enqueue! pool 1+!) + (loop (- i 1)))) + (let poll () + (unless (pool-idle? pool) + (pk 'busy result) + (sleep 1) + (poll))) + result)) + +(test-end) |