aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el6
-rw-r--r--.gitignore4
-rw-r--r--Makefile.am151
-rw-r--r--bayfront.guixsd.org.pub6
-rw-r--r--build-aux/build-self.scm88
-rw-r--r--build-aux/check-available-binaries.scm9
-rw-r--r--build-aux/check-final-inputs-self-contained.scm6
-rw-r--r--build-aux/compile-all.scm5
-rwxr-xr-xbuild-aux/git-version-gen226
-rw-r--r--build-aux/hydra/evaluate.scm9
-rw-r--r--build-aux/update-guix-package.scm144
-rw-r--r--configure.ac6
-rw-r--r--doc/contributing.texi32
-rw-r--r--doc/guix.texi140
-rw-r--r--doc/htmlxref.cnf4
-rwxr-xr-xetc/indent-code.el.in4
-rw-r--r--gnu/build/file-systems.scm65
-rw-r--r--gnu/local.mk46
-rw-r--r--gnu/packages.scm124
-rw-r--r--gnu/packages/abiword.scm18
-rw-r--r--gnu/packages/acct.scm4
-rw-r--r--gnu/packages/admin.scm101
-rw-r--r--gnu/packages/audio.scm17
-rw-r--r--gnu/packages/augeas.scm6
-rw-r--r--gnu/packages/aux-files/linux-libre/4.11-i686.conf (renamed from gnu/packages/aux-files/linux-libre/4.10-i686.conf)197
-rw-r--r--gnu/packages/aux-files/linux-libre/4.11-x86_64.conf (renamed from gnu/packages/aux-files/linux-libre/4.10-x86_64.conf)194
-rw-r--r--gnu/packages/backup.scm16
-rw-r--r--gnu/packages/base.scm4
-rw-r--r--gnu/packages/bioinformatics.scm165
-rw-r--r--gnu/packages/bootloaders.scm10
-rw-r--r--gnu/packages/build-tools.scm4
-rw-r--r--gnu/packages/cdrom.scm175
-rw-r--r--gnu/packages/check.scm5
-rw-r--r--gnu/packages/ci.scm33
-rw-r--r--gnu/packages/commencement.scm3
-rw-r--r--gnu/packages/compression.scm10
-rw-r--r--gnu/packages/connman.scm4
-rw-r--r--gnu/packages/cryptsetup.scm8
-rw-r--r--gnu/packages/cups.scm4
-rw-r--r--gnu/packages/databases.scm58
-rw-r--r--gnu/packages/direct-connect.scm82
-rw-r--r--gnu/packages/disk.scm44
-rw-r--r--gnu/packages/display-managers.scm110
-rw-r--r--gnu/packages/django.scm455
-rw-r--r--gnu/packages/dns.scm11
-rw-r--r--gnu/packages/elf.scm4
-rw-r--r--gnu/packages/elixir.scm11
-rw-r--r--gnu/packages/emacs.scm292
-rw-r--r--gnu/packages/engineering.scm27
-rw-r--r--gnu/packages/enlightenment.scm12
-rw-r--r--gnu/packages/erlang.scm14
-rw-r--r--gnu/packages/finance.scm4
-rw-r--r--gnu/packages/fonts.scm111
-rw-r--r--gnu/packages/game-development.scm62
-rw-r--r--gnu/packages/games.scm292
-rw-r--r--gnu/packages/gcc.scm21
-rw-r--r--gnu/packages/gd.scm6
-rw-r--r--gnu/packages/ghostscript.scm6
-rw-r--r--gnu/packages/gimp.scm6
-rw-r--r--gnu/packages/gnome.scm15
-rw-r--r--gnu/packages/gnustep.scm32
-rw-r--r--gnu/packages/gnuzilla.scm275
-rw-r--r--gnu/packages/golang.scm3
-rw-r--r--gnu/packages/gstreamer.scm28
-rw-r--r--gnu/packages/guile.scm88
-rw-r--r--gnu/packages/image.scm52
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/irc.scm8
-rw-r--r--gnu/packages/java.scm1371
-rw-r--r--gnu/packages/kde.scm8
-rw-r--r--gnu/packages/kodi.scm6
-rw-r--r--gnu/packages/language.scm32
-rw-r--r--gnu/packages/less.scm4
-rw-r--r--gnu/packages/libevent.scm4
-rw-r--r--gnu/packages/libffcall.scm19
-rw-r--r--gnu/packages/links.scm81
-rw-r--r--gnu/packages/linux.scm284
-rw-r--r--gnu/packages/lisp.scm5
-rw-r--r--gnu/packages/llvm.scm26
-rw-r--r--gnu/packages/logging.scm26
-rw-r--r--gnu/packages/lxde.scm16
-rw-r--r--gnu/packages/lynx.scm91
-rw-r--r--gnu/packages/machine-learning.scm3
-rw-r--r--gnu/packages/mail.scm26
-rw-r--r--gnu/packages/man.scm5
-rw-r--r--gnu/packages/maths.scm3
-rw-r--r--gnu/packages/mes.scm97
-rw-r--r--gnu/packages/messaging.scm37
-rw-r--r--gnu/packages/mpi.scm6
-rw-r--r--gnu/packages/music.scm68
-rw-r--r--gnu/packages/nano.scm6
-rw-r--r--gnu/packages/ncurses.scm2
-rw-r--r--gnu/packages/networking.scm15
-rw-r--r--gnu/packages/nfs.scm77
-rw-r--r--gnu/packages/ocaml.scm94
-rw-r--r--gnu/packages/ocr.scm4
-rw-r--r--gnu/packages/onc-rpc.scm12
-rw-r--r--gnu/packages/package-management.scm371
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/password-utils.scm7
-rw-r--r--gnu/packages/patches/abiword-black-drawing-with-gtk322.patch49
-rw-r--r--gnu/packages/patches/abiword-explictly-cast-bools.patch14
-rw-r--r--gnu/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch514
-rw-r--r--gnu/packages/patches/cool-retro-term-dont-check-uninit-member.patch33
-rw-r--r--gnu/packages/patches/cool-retro-term-fix-array-size.patch25
-rw-r--r--gnu/packages/patches/cool-retro-term-memory-leak-1.patch32
-rw-r--r--gnu/packages/patches/cool-retro-term-remove-non-free-fonts.patch205
-rw-r--r--gnu/packages/patches/dvd+rw-tools-add-include.patch14
-rw-r--r--gnu/packages/patches/elixir-disable-failing-tests.patch145
-rw-r--r--gnu/packages/patches/gnome-shell-CVE-2017-8288.patch54
-rw-r--r--gnu/packages/patches/icecat-bug-1299500-pt10.patch1639
-rw-r--r--gnu/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch77
-rw-r--r--gnu/packages/patches/libsndfile-CVE-2017-8362.patch61
-rw-r--r--gnu/packages/patches/libtiff-CVE-2017-7593.patch113
-rw-r--r--gnu/packages/patches/libtiff-CVE-2017-7594.patch54
-rw-r--r--gnu/packages/patches/libtiff-multiple-UBSAN-crashes.patch449
-rw-r--r--gnu/packages/patches/libtirpc-CVE-2017-8779.patch263
-rw-r--r--gnu/packages/patches/lierolibre-check-unaligned-access.patch30
-rw-r--r--gnu/packages/patches/lierolibre-is-free-software.patch38
-rw-r--r--gnu/packages/patches/lierolibre-newer-libconfig.patch190
-rw-r--r--gnu/packages/patches/lierolibre-remove-arch-warning.patch30
-rw-r--r--gnu/packages/patches/lierolibre-try-building-other-arch.patch56
-rw-r--r--gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch35
-rw-r--r--gnu/packages/patches/lvm2-static-link.patch4
-rw-r--r--gnu/packages/patches/lxterminal-CVE-2016-10369.patch37
-rw-r--r--gnu/packages/patches/miniupnpc-CVE-2017-8798.patch55
-rw-r--r--gnu/packages/patches/mozjs38-pkg-config-version.patch24
-rw-r--r--gnu/packages/patches/mozjs38-shell-version.patch67
-rw-r--r--gnu/packages/patches/mozjs38-tracelogger.patch608
-rw-r--r--gnu/packages/patches/mozjs38-version-detection.patch180
-rw-r--r--gnu/packages/patches/pcre2-CVE-2017-8786.patch155
-rw-r--r--gnu/packages/patches/perl-net-dns-resolver-programmable-fix.patch (renamed from gnu/packages/patches/perl-net-dns-resolver-programmable-Fix-broken-interface.patch)0
-rw-r--r--gnu/packages/patches/proot-test-fhs.patch98
-rw-r--r--gnu/packages/patches/reptyr-fix-gcc-7.patch38
-rw-r--r--gnu/packages/patches/rpcbind-CVE-2017-8779.patch29
-rw-r--r--gnu/packages/pcre.scm10
-rw-r--r--gnu/packages/perl.scm2
-rw-r--r--gnu/packages/photo.scm76
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/pulseaudio.scm13
-rw-r--r--gnu/packages/pv.scm4
-rw-r--r--gnu/packages/python.scm651
-rw-r--r--gnu/packages/regex.scm9
-rw-r--r--gnu/packages/samba.scm41
-rw-r--r--gnu/packages/screen.scm3
-rw-r--r--gnu/packages/serialization.scm52
-rw-r--r--gnu/packages/shells.scm32
-rw-r--r--gnu/packages/ssh.scm46
-rw-r--r--gnu/packages/suckless.scm12
-rw-r--r--gnu/packages/tcl.scm2
-rw-r--r--gnu/packages/terminals.scm110
-rw-r--r--gnu/packages/tex.scm2
-rw-r--r--gnu/packages/text-editors.scm38
-rw-r--r--gnu/packages/tls.scm22
-rw-r--r--gnu/packages/upnp.scm1
-rw-r--r--gnu/packages/version-control.scm19
-rw-r--r--gnu/packages/video.scm37
-rw-r--r--gnu/packages/vim.scm76
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web-browsers.scm184
-rw-r--r--gnu/packages/web.scm271
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wm.scm2
-rw-r--r--gnu/packages/wxwidgets.scm64
-rw-r--r--gnu/packages/xml.scm59
-rw-r--r--gnu/packages/xorg.scm8
-rw-r--r--gnu/packages/zip.scm5
-rw-r--r--gnu/services.scm10
-rw-r--r--gnu/services/base.scm11
-rw-r--r--gnu/services/herd.scm9
-rw-r--r--gnu/services/shepherd.scm4
-rw-r--r--gnu/system.scm289
-rw-r--r--gnu/system/grub.scm20
-rw-r--r--gnu/system/pam.scm31
-rw-r--r--gnu/system/shadow.scm4
-rw-r--r--gnu/system/vm.scm7
-rw-r--r--gnu/tests.scm19
-rw-r--r--gnu/tests/base.scm27
-rw-r--r--guix/build-system/ant.scm8
-rw-r--r--guix/build-system/ocaml.scm76
-rw-r--r--guix/build/ant-build-system.scm44
-rw-r--r--guix/build/bournish.scm52
-rw-r--r--guix/build/download.scm16
-rw-r--r--guix/build/java-utils.scm55
-rw-r--r--guix/build/pull.scm75
-rw-r--r--guix/derivations.scm52
-rw-r--r--guix/discovery.scm131
-rw-r--r--guix/git-download.scm10
-rw-r--r--guix/gnupg.scm2
-rw-r--r--guix/graph.scm32
-rw-r--r--guix/http-client.scm4
-rw-r--r--guix/import/cpan.scm2
-rw-r--r--guix/import/cran.scm6
-rw-r--r--guix/import/elpa.scm4
-rw-r--r--guix/import/pypi.scm27
-rw-r--r--guix/licenses.scm37
-rw-r--r--guix/monads.scm211
-rw-r--r--guix/nar.scm4
-rw-r--r--guix/packages.scm13
-rw-r--r--guix/scripts.scm54
-rw-r--r--guix/scripts/archive.scm46
-rw-r--r--guix/scripts/authenticate.scm12
-rw-r--r--guix/scripts/build.scm84
-rw-r--r--guix/scripts/challenge.scm24
-rw-r--r--guix/scripts/container.scm14
-rw-r--r--guix/scripts/container/exec.scm16
-rw-r--r--guix/scripts/copy.scm16
-rw-r--r--guix/scripts/download.scm24
-rw-r--r--guix/scripts/edit.scm14
-rw-r--r--guix/scripts/environment.scm44
-rw-r--r--guix/scripts/gc.scm44
-rw-r--r--guix/scripts/graph.scm30
-rw-r--r--guix/scripts/hash.scm20
-rw-r--r--guix/scripts/import.scm14
-rw-r--r--guix/scripts/import/cpan.scm14
-rw-r--r--guix/scripts/import/cran.scm16
-rw-r--r--guix/scripts/import/crate.scm14
-rw-r--r--guix/scripts/import/elpa.scm16
-rw-r--r--guix/scripts/import/gem.scm14
-rw-r--r--guix/scripts/import/gnu.scm14
-rw-r--r--guix/scripts/import/hackage.scm24
-rw-r--r--guix/scripts/import/nix.scm10
-rw-r--r--guix/scripts/import/pypi.scm14
-rw-r--r--guix/scripts/import/stackage.scm18
-rw-r--r--guix/scripts/lint.scm110
-rw-r--r--guix/scripts/offload.scm48
-rw-r--r--guix/scripts/pack.scm26
-rw-r--r--guix/scripts/package.scm80
-rw-r--r--guix/scripts/perform-download.scm8
-rw-r--r--guix/scripts/publish.scm82
-rw-r--r--guix/scripts/pull.scm125
-rw-r--r--guix/scripts/refresh.scm138
-rw-r--r--guix/scripts/size.scm22
-rwxr-xr-xguix/scripts/substitute.scm77
-rw-r--r--guix/scripts/system.scm182
-rw-r--r--guix/ssh.scm8
-rw-r--r--guix/store.scm74
-rw-r--r--guix/ui.scm124
-rw-r--r--guix/upstream.scm8
-rw-r--r--po/guix/Makevars7
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--po/guix/fr.po1063
-rw-r--r--po/packages/Makevars5
-rw-r--r--tests/cran.scm6
-rw-r--r--tests/discovery.scm52
-rw-r--r--tests/guix-build.sh1
-rw-r--r--tests/publish.scm32
-rw-r--r--tests/store.scm5
-rw-r--r--tests/ui.scm6
249 files changed, 13669 insertions, 4797 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index a2d1eb8160..4aaeae95c9 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -23,7 +23,13 @@
(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))
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/Makefile.am b/Makefile.am
index db4ebe04dc..4b5a29a72d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,6 +28,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 = \
@@ -46,6 +50,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 \
@@ -119,6 +124,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 \
@@ -205,8 +211,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 \
@@ -222,8 +228,8 @@ EXAMPLES = \
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)
@@ -275,6 +281,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 \
@@ -379,14 +386,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
@@ -400,7 +409,6 @@ EXTRA_DIST = \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \
- gnu/build/svg.scm \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/hydra/evaluate.scm \
@@ -411,6 +419,7 @@ EXTRA_DIST = \
build-aux/download.scm \
build-aux/generate-authors.scm \
build-aux/test-driver.scm \
+ build-aux/update-guix-package.scm \
build-aux/run-system-tests.scm \
d3.v3.js \
graph.js \
@@ -487,34 +496,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. 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 glibc-utf8-locales \
- -e '(@@ (gnu packages commencement) glibc-final)'` ; \
+ $(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; \
@@ -530,8 +547,98 @@ 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
+
+# Prefix of the GuixSD installation image file name.
+GUIXSD_IMAGE_BASE = guixsd-usb-install-$(PACKAGE_VERSION)
+
+# Size of the installation image (for x86_64 typically).
+GUIXSD_INSTALLATION_IMAGE_SIZE ?= 950MiB
+
+# 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).
+release: distcheck
+ 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 \
+ --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
+ @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`"
+
# 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 \
@@ -561,9 +668,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 release
## -------------- ##
## Silent rules. ##
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/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/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 957ce2bab3..5227ad4ba0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -34,7 +34,8 @@ 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
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -1429,11 +1430,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
@@ -2387,13 +2390,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
@@ -2401,6 +2404,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}
@@ -2879,7 +2884,8 @@ 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
@@ -3321,7 +3327,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
@@ -4832,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
@@ -4857,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
@@ -5244,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}
@@ -5852,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
@@ -6111,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
@@ -7118,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
@@ -7678,7 +7766,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
@@ -16281,9 +16381,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
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/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/build/file-systems.scm b/gnu/build/file-systems.scm
index 0cb84b8aad..47aa77dd3e 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -230,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.
;;;
@@ -340,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)
@@ -348,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)
diff --git a/gnu/local.mk b/gnu/local.mk
index f5574ecd80..28a283ab70 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -107,6 +107,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/dejagnu.scm \
%D%/packages/dico.scm \
%D%/packages/dictionaries.scm \
+ %D%/packages/direct-connect.scm \
%D%/packages/disk.scm \
%D%/packages/display-managers.scm \
%D%/packages/django.scm \
@@ -232,7 +233,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 +244,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 +255,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 \
@@ -475,6 +475,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 = \
@@ -483,6 +486,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 \
@@ -513,6 +517,7 @@ dist_patch_DATA = \
%D%/packages/patches/calibre-drop-unrar.patch \
%D%/packages/patches/calibre-no-updates-dialog.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 \
@@ -525,6 +530,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/coreutils-fix-cross-compilation.patch \
%D%/packages/patches/cpio-CVE-2016-2037.patch \
@@ -543,6 +552,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 \
@@ -618,6 +628,7 @@ dist_patch_DATA = \
%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/gobject-introspection-absolute-shlib-path.patch \
@@ -660,7 +671,6 @@ dist_patch_DATA = \
%D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
- %D%/packages/patches/icecat-bug-1299500-pt10.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 \
@@ -719,6 +729,8 @@ dist_patch_DATA = \
%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 \
@@ -726,6 +738,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 \
@@ -738,6 +753,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 \
@@ -760,8 +776,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 \
@@ -775,6 +797,7 @@ dist_patch_DATA = \
%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 \
@@ -789,11 +812,16 @@ dist_patch_DATA = \
%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/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 \
@@ -842,6 +870,7 @@ dist_patch_DATA = \
%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 \
@@ -849,7 +878,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 \
@@ -871,6 +900,7 @@ dist_patch_DATA = \
%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 \
@@ -916,7 +946,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 \
@@ -1085,13 +1117,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 8f4a4cd41e..ef7bff10f3 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -16,6 +16,7 @@
;;; 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>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -84,14 +85,14 @@
(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)
@@ -100,6 +101,7 @@
`(("libgcrypt" ,libgcrypt)
("libgpg-error" ,libgpg-error)
("libmhash" ,libmhash)
+ ("pcre" ,pcre)
("zlib" ,zlib)))
(synopsis "File and directory integrity checker")
(description
@@ -1352,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)
@@ -2087,3 +2089,94 @@ 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)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 5b2d971953..497f20538d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1868,21 +1868,19 @@ and ALSA.")
(define-public qjackctl
(package
(name "qjackctl")
- (version "0.4.4")
+ (version "0.4.5")
(source (origin
(method url-fetch)
- (uri
- (string-append
- "mirror://sourceforge/qjackctl/qjackctl/"
- version "/qjackctl-" version ".tar.gz"))
+ (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
+ version "/qjackctl-" version ".tar.gz"))
(sha256
(base32
- "19bbljb3iz5ss4s5fmra1dxabg2fnp61sa51d63zsm56xkvv47ak"))))
+ "1dsavjfzz5bpzc80mvfs940w9f9f47cf4r9cqxnaqrl4xilsa3f5"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f)) ; no check target
(inputs
- `(("jack-2" ,jack-2)
+ `(("jack" ,jack-1)
("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras)))
(native-inputs
@@ -2475,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/aux-files/linux-libre/4.10-i686.conf b/gnu/packages/aux-files/linux-libre/4.11-i686.conf
index 8ec475ea01..6234a980ae 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,8 @@ CONFIG_XFRM_STATISTICS=y
CONFIG_XFRM_IPCOMP=m
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_SMC=m
+CONFIG_SMC_DIAG=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
@@ -944,6 +965,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 +1004,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 +1098,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 +1431,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 +1541,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 +1583,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 +1831,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 +1885,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 +2057,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 +2073,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 +2162,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 +2226,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 +2420,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 +2644,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 +2658,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 +2720,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 +2760,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 +2876,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 +2897,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 +2927,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 +2943,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 +2977,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 +3119,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 +3547,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 +3597,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 +3708,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 +3758,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 +3776,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 +3824,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 +3899,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 +3950,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 +4192,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 +4209,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 +4225,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 +4296,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 +4331,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 +4363,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 +4377,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 +4537,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 +4670,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 +4997,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 +5083,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 +5147,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 +5198,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 +5564,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 +5659,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 +5700,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 +5727,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 +5747,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 +6166,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 +6178,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 +6227,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 +6258,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 +6306,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 +6574,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 +6652,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 +6680,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 +6855,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 +6957,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 +7486,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 +7552,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 +7606,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 +7625,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 +7652,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 +7704,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 +7729,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 +7806,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 +7827,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 +7929,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 +7972,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 +8051,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 +8069,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 +8095,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 +8107,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 +8178,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 +8226,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 +8646,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 +8656,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 +8664,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 +8697,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 +8711,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 +8772,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 +8795,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 +8811,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 +8845,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 +8889,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 +8911,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 +8993,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 +9052,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 +9231,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 +9257,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..d47a5d1226 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,8 @@ CONFIG_XFRM_STATISTICS=y
CONFIG_XFRM_IPCOMP=m
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_SMC=m
+CONFIG_SMC_DIAG=m
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
@@ -928,6 +949,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 +988,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 +1082,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 +1415,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 +1521,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 +1563,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 +1805,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 +1859,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 +2030,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 +2046,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 +2132,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 +2193,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 +2391,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 +2603,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 +2617,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 +2678,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 +2714,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 +2835,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 +2857,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 +2884,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 +2900,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 +2933,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 +3078,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 +3488,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 +3538,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 +3695,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 +3713,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 +3760,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 +3835,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 +3879,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 +4111,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 +4127,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 +4143,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 +4203,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 +4238,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 +4270,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 +4444,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 +4571,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 +4888,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 +4974,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 +5038,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 +5089,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 +5440,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 +5529,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 +5571,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 +5598,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 +5618,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 +5974,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 +5985,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 +6034,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 +6065,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 +6112,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 +6385,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 +6463,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 +6491,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 +6667,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 +6775,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 +6798,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 +7299,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 +7371,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 +7441,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 +7469,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 +7522,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 +7547,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 +7624,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 +7644,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 +7744,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 +7787,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 +7866,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 +7884,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 +7910,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 +7922,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 +7995,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 +8047,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 +8471,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 +8481,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 +8489,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 +8525,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 +8539,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 +8601,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 +8624,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 +8640,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 +8674,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 +8719,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 +8741,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 +8823,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 +8891,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 +9081,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 +9108,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 f9c0a22a0d..d5cb5783ab 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.
;;;
@@ -186,6 +187,7 @@ backups (called chunks) to allow easy burning to CD/DVD.")
(define-public libarchive
(package
(name "libarchive")
+ (replacement libarchive-3.3.1)
(version "3.2.2")
(source
(origin
@@ -241,6 +243,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 e896dbe2e1..59a9acd67e 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1140,14 +1140,14 @@ and daylight-saving rules.")
(define-public libiconv
(package
(name "libiconv")
- (version "1.14")
+ (version "1.15")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libiconv/libiconv-"
version ".tar.gz"))
(sha256
(base32
- "04q6lgl3kglmmhw59igq1n7v3rp1rpkypl366cy1k1yn2znlvckj"))
+ "0y1ij745r4p48mxq84rax40p10ln7fc7m243p8k8sia519i3dxfc"))
(modules '((guix build utils)))
(snippet
;; Work around "declared gets" error on glibc systems (fixed by
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 83a48d0f37..9f5d8141d8 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)
@@ -721,7 +723,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
@@ -3627,6 +3629,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")
@@ -5268,6 +5393,42 @@ 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.5.7")
+ ;; Versions after 0.5.4 do not appear to be distributed on PyPI so we
+ ;; download the package from GitHub.
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/fhcrc/taxtastic/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1s0h5y1lds1c40jhir5585ffm6yjyn8h5aqimpgv64rhqhfv56xx"))))
+ (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")
@@ -7730,7 +7891,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)))
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 98afc6a7c1..4bea418618 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/build-tools.scm b/gnu/packages/build-tools.scm
index 0f6a10bbc7..66f46433f9 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -69,7 +69,7 @@ makes a few sacrifices to acquire fast full and incremental build times.")
(define-public meson
(package
(name "meson")
- (version "0.39.1")
+ (version "0.40.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mesonbuild/meson/"
@@ -77,7 +77,7 @@ makes a few sacrifices to acquire fast full and incremental build times.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1jwgd6sl7zl7h16id3405gwk6vlkk86ggwrp0k47njwkxmryq8d4"))))
+ "0yl6iryh89nn6hzhwv7kg16ki1chh9h0x1yk1y130h87iq42a35r"))))
(build-system python-build-system)
(inputs `(("ninja", ninja)))
(home-page "https://mesonbuild.com/")
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/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 4fa34c93b1..1b41feac1f 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1025,4 +1025,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 4793755c21..11db2a66f7 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -611,7 +611,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
@@ -646,7 +646,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
@@ -668,7 +668,7 @@ 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
@@ -1180,7 +1180,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"
@@ -1188,7 +1188,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 5e00ffb4ee..b3d62d6f6f 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -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
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 bbdd89ec08..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,9 +45,8 @@
;; Delay to avoid module circularity problems.
(define ghostscript/cups
(delay
- (package (inherit ghostscript)
+ (package/inherit ghostscript
(name "ghostscript-with-cups")
- (replacement #f)
(inputs `(("cups" ,cups-minimal)
,@(package-inputs ghostscript))))))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index cc08994e29..26706b8275 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -372,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/"
@@ -380,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"
@@ -440,14 +449,14 @@ as a drop-in replacement of MySQL.")
(define-public postgresql
(package
(name "postgresql")
- (version "9.6.2")
+ (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
- "1jahzqqw5inyvmacic2ihhj5f8z50lapci2fwws91h719ccbb1q1"))))
+ "1imrjp4vfslxj5rrvphcrrk21zv8kqw3gacmwradixh1d5rv6i8n"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -577,9 +586,15 @@ types are supported, as is encryption.")
#t))))
(build-system gnu-build-system)
(arguments
- '(#:make-flags (list "CC=gcc"
+ `(#: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
@@ -592,6 +607,13 @@ types are supported, as is encryption.")
(("#!/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"
@@ -608,8 +630,6 @@ types are supported, as is encryption.")
;; targets for release builds 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.
- (setenv "PORTABLE" "1")
(zero? (apply system* "make" "shared_lib" make-flags)))))))
(native-inputs
`(("parallel" ,parallel)
@@ -790,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
@@ -844,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
@@ -869,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
@@ -894,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
@@ -949,7 +969,7 @@ 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
@@ -973,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
@@ -997,7 +1017,7 @@ 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
@@ -1019,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
@@ -1052,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
@@ -1078,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
@@ -1098,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
@@ -1301,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
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 2038473f52..356586e1bc 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -25,6 +25,7 @@
#: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
@@ -128,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?
@@ -143,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)
@@ -245,3 +246,451 @@ templatetags and a full test suite.")
(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 c0279565d8..1fb552de15 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.
;;;
@@ -90,7 +91,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
(define-public bind
(package
(name "bind")
- (version "9.10.4-P8")
+ (version "9.11.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -98,7 +99,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
version ".tar.gz"))
(sha256
(base32
- "1sv6fp5gznjj1kmx9q8wr2c6js10wqckgy25sqj83bbf8smmdlvx"))))
+ "1chhphaa4lmfxj9daqsxph5ng4h3qq51jx21rj2i6an8ynah0192"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs
@@ -149,12 +150,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 +163,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
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 4d524ece7a..3d9e83713e 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; 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>
@@ -92,7 +92,8 @@
#: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
@@ -890,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"
@@ -1125,13 +1126,6 @@ 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))
(add-before 'install 'make-info
(lambda _
(with-directory-excursion "docs"
@@ -1142,14 +1136,14 @@ than @code{electric-indent-mode}.")
(info (string-append out "/share/info")))
(install-file "docs/_build/texinfo/agel.info" info)
#t))))))
- (inputs
- `(("the-silver-searcher" ,the-silver-searcher)))
(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
@@ -1406,7 +1400,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"
@@ -1414,7 +1408,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
@@ -1446,14 +1440,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
@@ -2584,7 +2578,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
@@ -2593,7 +2587,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")
@@ -2882,6 +2876,16 @@ S-expression.")
(base32
"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
@@ -3495,6 +3499,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"))))
@@ -3574,14 +3579,14 @@ passive voice.")
(define-public emacs-org
(package
(name "emacs-org")
- (version "20170210")
+ (version "20170502")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar"))
(sha256
(base32
- "15415wh3w8d4c8hd7qfrfdjnjb1zppmrkg8cdp7hw2ilyr90c0bn"))))
+ "12inz804j55ycprb2m3ay54d1bhwhjssmn5nrfm7cfklyhfsy27s"))))
(build-system emacs-build-system)
(home-page "http://orgmode.org/")
(synopsis "Outline-based notes management and organizer")
@@ -4519,3 +4524,246 @@ It should enable you to implement low-level X11 applications.")
(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/engineering.scm b/gnu/packages/engineering.scm
index 20efe11a24..362860e17d 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)
@@ -173,15 +174,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 +200,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 +222,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
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 2452a1c810..03a1f6f796 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -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
@@ -518,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/game-development.scm b/gnu/packages/game-development.scm
index 41d85aac87..da3a850fed 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -187,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")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index b31bb93db9..3517f06acf 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -28,6 +28,8 @@
;;; 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.
;;;
@@ -52,6 +54,7 @@
#: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)
@@ -88,6 +91,7 @@
#: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)
@@ -120,6 +124,10 @@
#: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)
@@ -2687,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")
@@ -3941,3 +4012,224 @@ fabulous Orb of Zot.")
license:expat
license:zlib
license:asl2.0))))
+
+(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 00e2fa7d66..5d1a4ea754 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -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
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 5340107f99..4e8736cd71 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>
@@ -209,8 +209,7 @@ output file formats and printers.")
(properties '((upstream-name . "gnu-ghostscript")))))
(define-public ghostscript/x
- (package (inherit ghostscript)
- (replacement #f)
+ (package/inherit ghostscript
(name (string-append (package-name ghostscript) "-with-x"))
(inputs `(("libxext" ,libxext)
("libxt" ,libxt)
@@ -219,6 +218,7 @@ output file formats and printers.")
(define ghostscript/fixed
(package
(inherit ghostscript)
+ (replacement #f)
(source
(origin
(inherit (package-source ghostscript))
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/gnome.scm b/gnu/packages/gnome.scm
index 0123fbd123..0be399cbda 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>
@@ -150,7 +150,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
@@ -159,7 +166,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)
@@ -4995,6 +5003,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"))))
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index e2ee4748ff..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.
;;;
@@ -23,7 +23,9 @@
#: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)
@@ -31,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
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index d60b53828b..d9901fd0fb 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -6,6 +6,7 @@
;;; 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.
;;;
@@ -57,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
@@ -159,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")
@@ -323,7 +411,7 @@ standards.")
(define-public icecat
(package
(name "icecat")
- (version "52.0.2-gnu1")
+ (version "52.1.0-gnu1")
(source
(origin
(method url-fetch)
@@ -332,162 +420,38 @@ standards.")
"/" name "-" version ".tar.bz2"))
(sha256
(base32
- "0asaba04y6rwc7nx898p89jdxkbnsb3dxjvpdi8xb1rbgyms80c9"))
+ "1wr4bc5806xzyqpi6m4rjaf61za6ylpx4g0kfk95c6yw9yhg5vqb"))
(patches
(list
(search-patch "icecat-avoid-bundled-libraries.patch")
- (mozilla-patch "icecat-CVE-2017-5443.patch" "6daaaff9f1f6" "0jvb6y5fiwr13fyx58k49n81kv6h03vcch502g57y6nsx2wsqng6")
- (mozilla-patch "icecat-bug-1319087.patch" "82297fcc6f19" "02qcbg2r2smswgnwj7fs5bcrr3rlqbpsh2nmcbsjyblp5fk1ag36")
- (mozilla-patch "icecat-CVE-2017-5429-pt01.patch" "dd526ebe7e58" "1rj0pz6iql59zrynz48njcfg8i0v55bjdndplss9wl37lfydl7ca")
- (mozilla-patch "icecat-CVE-2017-5447-pt1.patch" "3bc981f85a17" "0am9k3mii2r05lp6xpizxp356mb8xrbqs9kmx0wx5wyy08wjzmks")
- (mozilla-patch "icecat-CVE-2017-5447-pt2.patch" "4f752b0e5920" "183s5dwzd57b299grvyvn139fsp9am0smd3yb4shw8g0iwzz61nf")
- (mozilla-patch "icecat-CVE-2017-5449.patch" "1714eda3de9b" "0ncngdpzvffvpw4c1mi0dda5l02lwyil4rnq3i6salnwlrq9x32z")
- (mozilla-patch "icecat-CVE-2017-5455.patch" "b10922304d81" "0rglbavb8rx7hl53ksgypazz27263b1yn97gznpdsq89zhirfw3m")
- (mozilla-patch "icecat-CVE-2017-5446.patch" "d98de46f8f27" "040agykr4w4wsbi0xm3rrrjxk48iwz8l1hn11vfv45nzsx2f1hzq")
- ;; The next patch is for CVE-2017-5436 in the bundled graphite2.
- ;; TODO: apply additional fixes from our system graphite2 to the
- ;; bundled copy, or upgrade it in place.
- (mozilla-patch "icecat-CVE-2017-5436.patch" "e6132f638311" "07w9pijx42psgmkj2i6i87lf30gl0yyb5caz6wz7fm8phi8wwy9p")
- (mozilla-patch "icecat-bug-1342395.patch" "0e0e8abe2153" "1xlnq2fd50kf0rz9dibz5vlaa9zj2pifjvky2fdykcan62xz75hy")
- (mozilla-patch "icecat-bug-1342841.patch" "623afac083f8" "1pv86j0dxdmi7g3rx4zqplz4gxq5lfyzpdssq83naypcxic6zafb")
- (mozilla-patch "icecat-bug-1344644.patch" "cac0735c228f" "0695f0hvxnzgcirgxx3axn5nhkywqxjcvnrlhg7jwfann4mnbsfn")
- (mozilla-patch "icecat-bug-1322660.patch" "9d6d60e64255" "0ds74ilhyc9qkkjgkm0xk7ay3926971rzwfh2avhhkfargn7idib")
- (mozilla-patch "icecat-bug-1343330.patch" "6f23bd449bc7" "1igz6yhx803hygf7cii8bchx7bfw1niq8s0nc5l9i5rb8ml2b7f0")
- (mozilla-patch "icecat-bug-1346961.patch" "3a2dc54cf986" "0dfp3s7d43zx3svajbkhvi73b71hhr7vrc9yz0iz37pykg40c4hn")
- (mozilla-patch "icecat-bug-1318070.patch" "a68d6d9b87d0" "1yqgkgv7i0xy5dm0pgg1cbav4qglsdk8brzcjcpfz65bmn1pqrhh")
- (mozilla-patch "icecat-CVE-2017-5448.patch" "6684a3c7f834" "0agyynvcjk28d7l2l4cqz67ddg9xw7ymiirb0npabd1si9zj27xb")
- (mozilla-patch "icecat-bug-1336345.patch" "590416f46ec8" "1q2svqjd735rickr9i3kdkd0la6ikdphhmzr19h1r84nrl6a87ia")
- (mozilla-patch "icecat-bug-1336356.patch" "00ba83ac39be" "1h6qsfv4r9mlc2ihjm9kmzi76aijdnnyx1g2r30ia87xha106pnk")
- (mozilla-patch "icecat-bug-1342363.patch" "10285b4a6b71" "0l2ww19y6qbarcp9brjgbpf4vi3k38r6ak8is5736vqz0c17dim0")
- (mozilla-patch "icecat-bug-1343787.patch" "28287b7f0938" "1w85s9rqh0dyfx6qn5plypbypz9casig03b6yiy9bpiq7ckrxz56")
- (mozilla-patch "icecat-bug-1292803.patch" "adbf7b59a405" "1l1p0b5rc05czk6kr3k3k99m1fkwphj2jrd092gdbib8q4m4cvzv")
- (mozilla-patch "icecat-bug-1313869.patch" "eba25396310b" "1ws0dr0kwclzbc2m0sihd3aqvbbg57ycia0fg6y294k6qipcxv38")
- (mozilla-patch "icecat-bug-1141756-pt1.patch" "f7c262517722" "0r1zzbxf47q5w8vcy402yin105ngam3csb2q7h7n8axm97307ykp")
- (mozilla-patch "icecat-bug-1141756-pt2.patch" "420396d5e26d" "0yv1pmpydzkirfwrxrgbw98dm4a9a4s0izha0wabrp4lb3655jv5")
- (mozilla-patch "icecat-bug-1343210.patch" "ed9521749d6f" "1j2zzi00qyqjgh15ingvl6f88zlk4imp31m5jmf7w5f9jqi5ly3k")
- (mozilla-patch "icecat-bug-1342442.patch" "775b6f85ef81" "00h9dgds7jv9n4cznj5qhh8liaf1b3wvnlqc2z7a3kj07ijllwzb")
- (mozilla-patch "icecat-bug-1344527.patch" "d4612b14c907" "1n3a0mp351a7xgvshm6688gh89hg0xci3y621zs2pyqsfm114366")
- (mozilla-patch "icecat-CVE-2017-5442.patch" "5f1aa2336998" "1y2marhrglc66vchd6z0jdmhg0pmkxp1cwim63bp9l6pj7lxyjma")
- (mozilla-patch "icecat-CVE-2017-5430-pt01.patch" "512604631b23" "171nzxr4av4818d0fyg9hcsdxkai61sghl45xnsr2al34l28wsw3")
- (mozilla-patch "icecat-CVE-2017-5430-pt02.patch" "16772200ad6f" "087j16rcbs5kgvpa096kd6jarwwwfrhwph54wzjn671wr1vnsvvd")
- (mozilla-patch "icecat-CVE-2017-5441.patch" "c744e9d57250" "0m70157lczf17hxb2pabsl3grhcjqallbdfpsd58q8q6fk99k6x3")
- (mozilla-patch "icecat-CVE-2017-5433.patch" "b4fc7a4cb5e0" "12q6mr5prpgqg5xnrww09qjm3jx2amb8zig62cd46ba8n9z2j9ab")
- (mozilla-patch "icecat-CVE-2017-5429-pt02.patch" "21eac0b4fd2f" "1a6v0hwcc26gnlxygplc11dfzc8bykhh44j4gsz88kl5c5jqhlk9")
- (mozilla-patch "icecat-CVE-2017-5432.patch" "62df7046e959" "1qvxbpkf87g4vnl8hxqvwb1ydrpkqq3rbkivr8q4029rvgalf4rf")
- (mozilla-patch "icecat-bug-1350599.patch" "f6a978b2fcec" "0rkbbmw52mxgrmn1xny4jkn3slwb5jsqs4yr07ffhz7r801jy9iz")
- (mozilla-patch "icecat-bug-1332839.patch" "2ad0f87f5dba" "04458jidri521hgf3r63pl736zz4gmgv6b8spa32anfb7gryj8fy")
- (mozilla-patch "icecat-bug-1337548.patch" "29a1ad09a6ec" "0pld81bpc34w6g2ara54sx30msas55kwzr537pvxxc002lpvzs57")
- (mozilla-patch "icecat-CVE-2017-5430-pt03.patch" "5dec7534760f" "1xh0y7srl7nznb6szpfiykd6r1ibyxrdvasc36w0chqjdmq7xr32")
- (mozilla-patch "icecat-bug-1343851.patch" "e104d53316d7" "1yhv3qvzzi3kr881ji1dnm8ydnr3snh2vzl3c4vdzmvrjx8q5rcb")
- (mozilla-patch "icecat-bug-1345222.patch" "864644fadcb0" "0qpplxyfn87bigzdkwlrhj9isd5gfafhjgqfckb239a09wwrblf3")
- (mozilla-patch "icecat-bug-1348584.patch" "7cee9ad555af" "0856bpa3n71a3y5m4gilcdb9ghb60p545xkv9zbr245r20mj32ds")
- (mozilla-patch "icecat-bug-1346720.patch" "6a597a9cd494" "091a5sanw3w3gl0jcmf8d60m59vwbh5v36vnar20m0hl7xrv4v7p")
- (mozilla-patch "icecat-CVE-2017-5430-pt04.patch" "09693629803f" "18fhmsghq0232mhh8j10cy0a4979nmkbh43jlcyrg3l63l7795k4")
- (mozilla-patch "icecat-CVE-2017-5430-pt05.patch" "2b8268ea97a9" "0l0f54krxdmqbgldikwjncxvn6irihcljldd3z039himrvplisjg")
- (mozilla-patch "icecat-bug-1347700-pt1.patch" "ee706896916c" "0m85x80y98c154hyis08kcy81kbw3v34na1v862vxzs939d3mc0n")
- (mozilla-patch "icecat-bug-1347700-pt2.patch" "08ecc2d92f81" "1s6411ccifw9l22hhmf32nhm8r5hbclnhy7jm2n228sqfr4h971g")
- (mozilla-patch "icecat-bug-1337682.patch" "15af6a323161" "1nxbwd0574gscnkxfyhzv3yqvxiccb2d0rmba9vi6i62646l2pd5")
- (mozilla-patch "icecat-CVE-2017-5451.patch" "d91260f0069a" "15w4rzz51hps2fr8djf5z1rzdwxshclk936mxv5anx1skkwms0y8")
- (mozilla-patch "icecat-CVE-2017-5444.patch" "7740cf7e121b" "1706mx4zmnib336p2wmfp9ncyl66lk2da82f28xvcw262mg1c8lw")
- (mozilla-patch "icecat-bug-1347164-pt1.patch" "b35a6d6dcdca" "077r0pns58fw3xd3qnbhib4q21vvw0aynpa8iyn1pycg8mppmd0f")
- (mozilla-patch "icecat-bug-1347164-pt2.patch" "a42fc05969b9" "1ijq8ccsk5k56h77sv5kqv48w7csj3vbakzq98awgbvypzfdyhss")
- (mozilla-patch "icecat-bug-1347164-pt3.patch" "f78ac1ac0a37" "0kj6jq482cqwyngy1kmb69zpq35xah8h33kml8i4l7andiyaq3zm")
- (mozilla-patch "icecat-bug-1347164-pt4.patch" "795a3d48a775" "18lw99hmrr93k95hk6v6bx5rcf22aa902x2yf5p6wxdqg56nc0zp")
- (mozilla-patch "icecat-bug-1338699.patch" "94ce63191069" "0rdivablincah3gbgl4wzjmqlraazivmr8bhqxdpy8dk0a6fvv4s")
- (mozilla-patch "icecat-bug-1342301.patch" "e640e758a7cd" "17f36vvf82n6shlaip7ji8qsy9861f9a5r79h000p3wb3bb7lbfs")
- (mozilla-patch "icecat-bug-1342170.patch" "df7ed78b7c0a" "1kq256i66hcm2k9d37i5ws354ksv3bbglmscdjv2v5f7wg3y967v")
- (mozilla-patch "icecat-bug-1342634.patch" "d72e56823bbb" "0c186d77lyyg0hjxw15d44rybw6yr5aw8g9m3311xfdn5wiygijb")
- (mozilla-patch "icecat-bug-1348796-pt1.patch" "cef01720769e" "0h57372lxanjs5zw9b3vwr2x36yz9gj73swyg50aqp13j4rcbpmy")
- (mozilla-patch "icecat-bug-1348796-pt2.patch" "7d3584b75f20" "1a4hvpsvn39832g54hsxhqs24cq8v4nd69jqskkgc1ybs09ncmr3")
- (mozilla-patch "icecat-bug-1192800.patch" "e56b0938ea0f" "1hlbxhjzj65s6p2v6f66zdfb3gw5yx77msgq5idsv9jip2w88mpq")
- (mozilla-patch "icecat-bug-1309438.patch" "1f30d97563c8" "0rvq729fg9j959ha9qvw5wv7r6vw70qvpy7ynifgqhgrpa749n70")
- (mozilla-patch "icecat-bug-1315332.patch" "66495c8d9459" "0vzlx8i0cidpymm6ar07h3yk63fxf64f0b2vb0pihd72h0jzd5s9")
- (mozilla-patch "icecat-bug-1346439.patch" "a9fcc2dc324a" "13991jijwa84yczkmc212s23w269r8b1a4yiygqgwaily29l1dc5")
- (mozilla-patch "icecat-CVE-2017-5469.patch" "3dcc5f5c2df4" "0b36m6rgxc05h39l6wkzi6dlmq9brcigk7xjrifs4786f0z564hz")
- (mozilla-patch "icecat-CVE-2017-5430-pt06.patch" "ac0ca89b5a6b" "1646y9y2wmq8pxb081x3076dq9ana7hh5fxwbsnn17v5wqhi8gfb")
- (mozilla-patch "icecat-CVE-2017-5467.patch" "6ed26e6c1a09" "0r1n1dwb4l8xwlns0aifyka6mldb6cy2crhh2qkap64cpj3bzl9s")
- (mozilla-patch "icecat-CVE-2017-5439.patch" "2fde528ca7b6" "0iv0sjhnh7br0z3pcpk346wbj162ynacfk3p9309hg6kr1cd92fp")
- (mozilla-patch "icecat-CVE-2017-5440.patch" "d88bd03d1234" "1pls63djh4w5023ag3fwjk79cpx816ilgajl5l1qlqyacl8c0v4p")
- (mozilla-patch "icecat-bug-1349987.patch" "3282e8f6a121" "1dyc84h7v0l9gndmbiwfqk33f703zr3fv96mwbn58msdf20ma9l2")
- (mozilla-patch "icecat-CVE-2017-5434.patch" "ee0a7b55e470" "01vs4p56p0ii0fvmg0kn7gaz6gwf2kwmv6v4pa6v68hwxx1phaag")
- (mozilla-patch "icecat-CVE-2017-5430-pt07.patch" "a4e1e04c88ee" "0q07qwzxf2iisrhknjbn1zksv2rr6qzzh6w8ibzlj1sqbdg3h852")
- (mozilla-patch "icecat-bug-1335043.patch" "a49419f75b9c" "0pkh5yimnj3p1sd2g9vndgcn11zdx6yhpa88s8vk7fqbs8gf1fz3")
- (mozilla-patch "icecat-bug-1299500-pt01.patch" "5fdd36b4400a" "1gdrsbf03wf9v90f1bd2sp9ac38a9lzpzfrv8l8f7gvy70acjxmb")
- (mozilla-patch "icecat-bug-1299500-pt02.patch" "34776df5ce44" "15mlf59ii0rk97j8mlf3wz1q0w28ma5mll47dvci6cv3dziai9f1")
- (mozilla-patch "icecat-bug-1299500-pt03.patch" "26189af0f504" "1wh1s2xd1w03zi5jdaagk6j5i8v9xsm9360xmv446wdraygkqbci")
- (mozilla-patch "icecat-bug-1299500-pt04.patch" "798a8fe17e7b" "0vlalanffq3paa7zab003v1d377x5pvcsy8nc8fr5pdlvi622jll")
- (mozilla-patch "icecat-bug-1299500-pt05.patch" "daf2e4f2bd5c" "1rxbjbyr1a6dxjb0qj6900g3kqjphir40pis4qcfl8q811y18jwk")
- (mozilla-patch "icecat-bug-1299500-pt06.patch" "1187091c3134" "0r8zz4zbglxg6sl0ybz9lyq1c5w2nqp0xcn2d3rz9bvyj8byqc7m")
- (mozilla-patch "icecat-bug-1299500-pt07.patch" "a908f2c2fe30" "1fvwy3fxfrdi9y8hmf4f9aa72i0g6s55s8cp0w22gllsl1f6gvyf")
- (mozilla-patch "icecat-bug-1299500-pt08.patch" "e95a26cf7a42" "0pd0kcn7dqd1gy1si85as5zzc96v7vq0v8n3g3gjzms5rdnk085l")
- (mozilla-patch "icecat-bug-1299500-pt09.patch" "d63f3b14e571" "0cqd7dal6prsrj7bn2d699idbq4fzjry9vqlbmm9dkyn5683sdy1")
- (search-patch "icecat-bug-1299500-pt10.patch") ; Adapted for GNU IceCat, based on:
- ;"08f2bc167ae8" "07d1i23ffvi74a5558bb0645vbrap6qlrpcwfyb7dm3llbfnfycy")
- (mozilla-patch "icecat-bug-1299500-pt11.patch" "263f27805689" "0nczkvyvlpdjif3xfvj7g2mfz6j06w99x2sblqfmqq6mwrlavpq0")
- (mozilla-patch "icecat-CVE-2017-5456.patch" "538e0b382cc2" "0wq2ywn4a7i4ypcx03hl23a4xx3lavz7y505m9kw43fx15r4070r")
- (mozilla-patch "icecat-bug-1280079.patch" "6fbcb6a4b91e" "0qcwz9js1bwlnwyv3vhkm0hvahd043lm2bijqsmm0jy20dbslga4")
- (mozilla-patch "icecat-CVE-2017-5435.patch" "a362e1205ba4" "127i4ybfb4dk5axp4dxcl7ag7zyx7b517myvs6q4yd8981d1jjd3")
- (mozilla-patch "icecat-bug-1341960.patch" "b24ce30e8cfa" "0a521wn8hbaliawmxs21b8wc1gkha8iih62j4zyrfg5rm7ff6p6s")
- (mozilla-patch "icecat-CVE-2017-5454.patch" "ac40d4a4e414" "0dnzz95vpq32bsh6hajk4hrcrxwd4w6m7kayl2iziryny86jgak2")
- (mozilla-patch "icecat-CVE-2017-5429-pt03.patch" "e469af8e9ccc" "0yn8zqakr9yw0jvysxyc8if09kqf4fr5rq4p9qdkb1p81p4dpmp5")
- (mozilla-patch "icecat-bug-1351094.patch" "4c1383e76adc" "0wdldx88qabyhrwnnii44pggmfgqylzxy6ckwzgq86r2yipi4rsq")
- (mozilla-patch "icecat-bug-1336527.patch" "b9f53baeabb3" "0y1l641ffbr4i85p0wc1ir6bcsy6h94bchbfc7ppxfijva4fjgvd")
- (mozilla-patch "icecat-bug-1345716.patch" "2569af645a98" "1d6lx85ij90j6q6ixwp0h3w7y424yvkz0njsi0my727akbli5rsn")
- (mozilla-patch "icecat-bug-1208957.patch" "2b68880d8f6b" "1pl0vkv7clyjchi9kg4995z82sr8xv7cbz1kvsg1v66md6pmp4s4")
- (mozilla-patch "icecat-bug-1208957.patch" "bc646835442b" "0f29r5yvlb5w84nvvn6j9r9dq5314jgygjmsna3grzigpkb88gyj")
- (mozilla-patch "icecat-bug-1347944.patch" "47cb652ddc25" "0n7871958zwndwz53xvzwjv41v5ar1vxaam8kzr5dkbqmprddimx")
- (mozilla-patch "icecat-bug-1347632.patch" "7d8f7a52a108" "0gkbkzkz989j7pk3ia1rfvyjg3si8hnnadwkb2rw13qjxdzhx2zn")
- (mozilla-patch "icecat-CVE-2017-5438.patch" "154c93b9435b" "00f8lr5s8h68392bb45zi0xfgqrgfkdxbzwdypp10d89784fvjvd")
- (mozilla-patch "icecat-bug-1347486.patch" "15dbaf157058" "1mwgfnx1zsvhp0pgmc8577yw6lnf7g3ikdfj0r21fgffrn76bp69")
- (mozilla-patch "icecat-bug-1218437.patch" "e13692bfd5f5" "10jrbs26m8l1vchw6svssrb5h8p82acrcmkx92ybvv4qbaq2bcl0")
- (mozilla-patch "icecat-bug-1345853.patch" "5fa27dc4c4a3" "1sqqa4hir2bsnnwnlr34has62kpncmw6l9mylwprd09fxmzzgrd7")
- (mozilla-patch "icecat-CVE-2017-5429-pt04.patch" "00c051cd38c7" "1d4aa4nqyjc01mg3jvdjjp7z05c2qhdjj85dhdrd9c18gfiyv4fi")
- (mozilla-patch "icecat-bug-1349921.patch" "c6897adc4037" "0acvcdy8awdmpz84243jzf82agrm73wqa198fjbns1p1v3s425z2")
- (mozilla-patch "icecat-bug-1338623.patch" "edcafd42dd52" "1xqgjy7a62jsyz1b5mibrcnd7zpb4gdaas0a6z5dwfvz52j4xa16")
- (mozilla-patch "icecat-bug-1294799.patch" "0617b074ec3d" "19h7dj44shvdzzj87svpv5q97cikxyxhiwfzf9rnqj1b7fw0xrdh")
- (mozilla-patch "icecat-bug-1345049.patch" "88466b911357" "16pgd13mw9a0snyhq6vxmjc7kr9mikvhazkgbc6vpykwi0i0z85b")
- (mozilla-patch "icecat-bug-1339999.patch" "b7cb8f8b0877" "0zv1kxcva699ahb9s36l4d9mlrkm0b7hmh6g1422j6iijn136vxb")
- (mozilla-patch "icecat-bug-1350868.patch" "ddd6c44790c0" "182ii4wsz2vdd1q4dszd5hka8i2n0ghmqk7l39bd02d3zfibhhvc")
- (mozilla-patch "icecat-bug-1342360.patch" "416681a239ef" "0ngs8xgmdhz9ag4dlrqhr0vmanqxr9q2vf16jpm3cimyc06zjxz4")
- (mozilla-patch "icecat-CVE-2017-5429-pt05.patch" "a76e626ae6db" "0zn2j8fmhp7502kx1jhrvh85vsys5x6x6gw3v4gl0h8px354v6yw")
- (mozilla-patch "icecat-CVE-2017-5429-pt06.patch" "0ce4196ab86e" "0isczy8261qz2zsdxax4j51gypz0gi39q7nfwxg88sl81kc5vym8")
- (mozilla-patch "icecat-CVE-2017-5429-pt07.patch" "39da731d80ed" "0vswnv1hqa7r8iz6y5ja7i6w3cyq5xrcd66c1q29ac6n4gn7x338")
- (mozilla-patch "icecat-CVE-2017-5430-pt08.patch" "1b148cf9c545" "0ilrib0c2c7mfycpz2hq3vrfdf6sf8lcdbfjk6r4xyxv54vh3lwk")
- (mozilla-patch "icecat-bug-1325841.patch" "74e9f13c554f" "0glzcgjsy71y78zaccn33w8djs96i6dd3gafyzkihnkpfddd5cij")
- (mozilla-patch "icecat-CVE-2017-5445.patch" "d7d87adfe186" "02p705si2j69ya8n5a916x58nycs07ja0sfpxrwl16f4n2plc91h")
- (mozilla-patch "icecat-bug-1346424.patch" "5ede402f494f" "0kbx8yn8ppv7099ic6nhw32f7h42pnwk6dpvb179ilw90ah902q7")
- (mozilla-patch "icecat-CVE-2017-5430-pt09.patch" "da44c5cfab2e" "16i4dz5sfkhh3a0khrcf8zn5w20rkf4aqwygjj3cp4qhdh7wnr75")
- (mozilla-patch "icecat-CVE-2017-5430-pt10.patch" "0f966927bd55" "07pkhc6l6ylwrzgfm7i1galrvjawqqrhvhk6jcw4b30sfhi0bxq1")
- (mozilla-patch "icecat-CVE-2017-5429-pt08.patch" "f0f591f82cc0" "18p091503vpfpp4l3d7hkqj78zavv6qj1lynhlfx67zdp3xqcf8r")
- (mozilla-patch "icecat-CVE-2017-5464.patch" "1852dc0beba4" "1zdnkrsqjfv1q2jhj4829ypiwyg78n4jv54yn3b74vwcf5zvzx8m")
- (mozilla-patch "icecat-bug-1083140.patch" "6913f0537208" "0vaf61ryp0bzkz6l1w73alhglibbgm0jcgccxvvm43ni67pcxqbq")
- ;; The patch commented out below updates the bundled tzdata,
- ;; but we can't use it because it contains a GIT binary patch.
- ;; TODO: Consider updating the bundled tzdata, or unbundling it.
- ;; (mozilla-patch "icecat-bug-1343493.patch" "35496444b380" "1wa79az7121xw078cgpczxavrqy0fsp4ib2nb69giha6acxcaqas")
- (mozilla-patch "icecat-CVE-2017-5430-pt11.patch" "64495dfa29db" "0m7vklnwnaf7sw97m87bm4lb9pjmlh1vvrbaf1931db8nhd6m737")
- (mozilla-patch "icecat-bug-1350783.patch" "26cd34db3c14" "15vq3lrilg3n9j80cdjmk7xib2iq5gcx9ypq8xs7f5ya9ibasqlx")
- (mozilla-patch "icecat-CVE-2017-5429-pt09.patch" "6cd77a0d7ac0" "0kxlbl5m3gffxqrv7ky3swsbyg1ykj0wjhlfl9amsb4g8gra3zkj")
- (mozilla-patch "icecat-CVE-2017-5460-pt1.patch" "a803be74843c" "1ywwakzjkfr714i9pfn152n86c6rp427chzdys8phdkcvp5d5p45")
- (mozilla-patch "icecat-CVE-2017-5460-pt2.patch" "73762c1392ae" "18jy9ccqvn6l6hznvq5xsqm1pc7i81svc2grgv21wfwg9sd6zwwh")
- (mozilla-patch "icecat-bug-1337392-pt1.patch" "4ab6d5c43036" "07pygzngssra9wnmqqrs24d6gc5kfh20fkzvpcasxh4f2hi21z9b")
- (mozilla-patch "icecat-bug-1337392-pt2.patch" "13f2d85da9a7" "1iwfz7dp5i93bhjspy4kyz0vqrl8x8ndg5kxdyzwb1b339xim9qy")
- (mozilla-patch "icecat-CVE-2017-5429-pt10.patch" "7a30cddfcd54" "1773pijh6gi086l930cn1a0k7kvy7f3cnirfblw98sq7h9qfyy33")
- (mozilla-patch "icecat-bug-1345873-pt1.patch" "75cea353ad78" "14cig2y7d3p033hx3096gxzlqwgddq8d0ig0g3l8p1b0xwvvyryl")
- (mozilla-patch "icecat-bug-1345873-pt2.patch" "b08ef5a82f89" "0afz01jv850x09df85d7ycqkcdlafi4w2xi5k155lk2b92w8lhpj")
- (mozilla-patch "icecat-bug-1340163.patch" "f3f2a995a239" "1ydsj4ja475jscalkw6ggdxgbsp5l2mam5109k0y7c98abzqraxk")
- (mozilla-patch "icecat-bug-1348174-pt1.patch" "330904d6f0dc" "19wnp4d8481w86xkk78n7c7wrr99rq6cq3v09hd8am4n0mzwzaja")
- (mozilla-patch "icecat-bug-1348174-pt2.patch" "c61b99483c4b" "0mjsahi8ly24415ri2sylas6g0kb8wawi095idqiq019c3r7q9cq")
- (mozilla-patch "icecat-bug-1348601.patch" "1848bd238064" "1f5kadhn6w1rs26sdrcc3mq0zzlmmsm6ymqhshkzn57nrj6akm7b")
- (mozilla-patch "icecat-bug-1345991.patch" "2008a4b89d9a" "07fkg9r2rxbk362ckv2h8inhd2dadvzigshm6zsjfjs2fyzp95hp")
- (mozilla-patch "icecat-bug-1344498-pt1.patch" "9acd0103d67f" "1f0j667g05h9ydmc924cs8mzif1n7s56wixsgnyqc3s231dswhml")
- (mozilla-patch "icecat-bug-1344498-pt2.patch" "49aadb25b1ec" "0s618m802b1x5pyqh5mj1azaxch7ggxq9503b7mwhg90vz8qw7ki")
- (mozilla-patch "icecat-bug-1344205.patch" "34b453085dc0" "02h1bh24f9i5sm3my07m2q58cpzqfhagwwv11l9fidxcm9dmzmrd")
- (mozilla-patch "icecat-bug-1349862.patch" "864ff0c36b6b" "1i3wmigv982x9hzkfg25jhyvkynmar69x6cj6r4g9zkk5f5ypdh5")
- (mozilla-patch "icecat-CVE-2017-5459.patch" "5ec6fbedb420" "07flhha4rkjbry5590yr5by36ypb1k33qm3rzkbmw0vk5gyak8dp")
- (mozilla-patch "icecat-CVE-2017-5465.patch" "2b95de78a92c" "0vvq1fz84yyw7za929x6ki25paivlwd4ng1ddkcb2bw6da6yp12k")
- (mozilla-patch "icecat-CVE-2017-5466.patch" "a5ec5e70abf1" "1jjviyk6db8iccd7997mwmgs188fsyrzivap3ffjf8m6j4mf9cra")
- (mozilla-patch "icecat-bug-1347646.patch" "1b50711a46ce" "1i3505zzgf0mvg2405y2gzq36xc8ic2ga8w6d3n9kqryxj0mc7bh")))
+ (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
@@ -519,7 +483,6 @@ standards.")
;;
;; TODO: Use system graphite2.
;;
- "dom/devicestorage" ; Removed in ESR 52.1, awkward to patch out
"modules/freetype2"
"modules/zlib"
"modules/libbz2"
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 90a809eb27..13c5529f9d 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -63,7 +63,8 @@
(arguments
`(#:modules ((ice-9 match)
(guix build gnu-build-system)
- (guix build utils))
+ (guix build utils)
+ (srfi srfi-1))
#:tests? #f ; Tests are run by the all.bash script.
#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index c284a8d2b3..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,7 +154,7 @@ This package provides the core library and elements.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1dsyjf6rncsbg4rfj40cvf1wwpjj9h3j3c7bh4zp7jylnfv4blpn"))))
+ "0k9nckvzk2hhhg7w4gzmd7is0lbswdmrkwmcgblvdf2lgy3wcprl"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(propagated-inputs
@@ -201,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)
@@ -210,7 +210,7 @@ for the GStreamer multimedia library.")
name "-" version ".tar.xz"))
(sha256
(base32
- "0zjdwxn83sp9wjp9rxjbyk8kf284g9av7l2v6rjldi586hacd1la"))))
+ "1g1f6xyj0f06nmsl01xhr32x2rwyb857yjkrig1013iknx6p67ca"))))
(build-system gnu-build-system)
(inputs
`(("aalib" ,aalib)
@@ -266,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
@@ -343,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)
@@ -351,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)
@@ -382,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
@@ -390,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")
@@ -420,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
@@ -428,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/guile.scm b/gnu/packages/guile.scm
index 32d67794e8..5b85a61c12 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -32,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)
@@ -690,7 +691,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
@@ -706,7 +707,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
@@ -794,6 +798,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")
@@ -965,7 +1037,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
@@ -993,7 +1065,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
@@ -1471,6 +1543,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
@@ -1502,7 +1576,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)
@@ -1767,14 +1841,14 @@ HTML (via SXML) or any other format for rendering.")
(define-public guile-sjson
(package
(name "guile-sjson")
- (version "0.2")
+ (version "0.2.1")
(source (origin
(method url-fetch)
(uri (string-append "https://dustycloud.org/misc/sjson-" version
".tar.gz"))
(sha256
(base32
- "09hnh2brc7ihh8dv4g5hdmdj8rs8p9l3pmlgafkx145grdg7wprx"))))
+ "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 2027395ca6..de8043d236 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.
;;;
@@ -155,6 +156,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")
@@ -299,6 +335,7 @@ extracting icontainer icon files.")
(define-public libtiff
(package
(name "libtiff")
+ (replacement libtiff/fixed)
(version "4.0.7")
(source (origin
(method url-fetch)
@@ -347,6 +384,19 @@ collection of tools for doing simple manipulations of TIFF images.")
"See COPYRIGHT in the distribution."))
(home-page "http://www.simplesystems.org/libtiff/")))
+(define libtiff/fixed
+ (package
+ (inherit libtiff)
+ (source
+ (origin
+ (inherit (package-source libtiff))
+ (patches
+ (append
+ (origin-patches (package-source libtiff))
+ (search-patches "libtiff-CVE-2017-7593.patch"
+ "libtiff-CVE-2017-7594.patch"
+ "libtiff-multiple-UBSAN-crashes.patch")))))))
+
(define-public libwmf
(package
(name "libwmf")
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 6423f91f46..48902bbfd0 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-4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "05hk841f5fw1hh7pfmpznlwcdr68ijk3s3zwqv0g009xh17q1max"))))
+ "04fb0x8zc9z11127wsnxlzg0jcgs4xwlx8fxy4jac2y3mmmlzhm6"))))
(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 4c8c7809be..30e14a0914 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -142,14 +142,14 @@ SILC and ICB protocols via plugins.")
(define-public weechat
(package
(name "weechat")
- (version "1.7.1")
+ (version "1.8")
(source (origin
(method url-fetch)
(uri (string-append "https://weechat.org/files/src/weechat-"
version ".tar.xz"))
(sha256
(base32
- "0c0waxrxq2v0r7981y1ajh9k78jfl223smwrj4v9c5z27iwh8ziz"))
+ "05z0qmlmdm0zgkzhi6cy6snxdz37h1n5z2s460df76akjr7capxn"))
(patches (search-patches "weechat-python.patch"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
@@ -300,14 +300,14 @@ using a mouse. It is customizable 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..13e261438d 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,6 +24,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix hg-download)
#:use-module (guix utils)
#:use-module (guix build-system ant)
#:use-module (guix build-system gnu)
@@ -287,14 +289,16 @@ designs.")
(define-public ant
(package
(name "ant")
- (version "1.9.6")
+ ;; The 1.9.x series is the last that can be built with GCJ. The 1.10.x
+ ;; series requires Java 8.
+ (version "1.9.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/ant/source/apache-ant-"
version "-src.tar.gz"))
(sha256
(base32
- "1396wflczyxjxl603dhxjvd559f289lha9y2f04f71c7hapjl3am"))))
+ "1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target
@@ -1080,7 +1084,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 +1139,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 +1199,1341 @@ 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)))
+
+(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"))))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'strip-jar-timestamps
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (jar1 (string-append out "/lib/antlr.jar"))
+ (jar2 (string-append out "/share/antlr-2.7.7/antlr.jar")))
+ ;; XXX: copied from (guix build ant-build-system)
+ (define (strip-jar jar dir)
+ (let ((manifest (string-append dir "/META-INF/MANIFEST.MF")))
+ (mkdir-p dir)
+ (and (with-directory-excursion dir
+ (zero? (system* "jar" "xf" jar)))
+ (delete-file jar)
+ (for-each (lambda (file)
+ (let ((s (lstat file)))
+ (unless (eq? (stat:type s) 'symlink)
+ (utime file 0 0 0 0))))
+ (find-files dir #:directories? #t))
+ (with-directory-excursion dir
+ (let* ((files (find-files "." ".*" #:directories? #t)))
+ (unless (zero? (apply system*
+ `("zip" "-X" ,jar ,manifest
+ ,@files)))
+ (error "'zip' failed"))))
+ (utime jar 0 0)
+ #t)))
+ (strip-jar jar1 "temp1")
+ (strip-jar jar2 "temp2"))))
+ (add-after 'configure 'fix-bin-ls
+ (lambda _
+ (for-each (lambda (file)
+ (substitute* file
+ (("/bin/ls") "ls")))
+ (find-files "." "Makefile")))))))
+ (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 stringtemplate3
+ (package
+ (name "stringtemplate3")
+ (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 "stringtemplate-3.2.1.jar"
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'generate-grammar
+ (lambda _
+ (let ((dir "src/org/antlr/stringtemplate/language/"))
+ (for-each (lambda (file)
+ (display file)
+ (newline)
+ (system* "antlr" "-o" dir (string-append dir file)))
+ '("template.g" "angle.bracket.template.g" "action.g"
+ "eval.g" "group.g" "interface.g"))))))))
+ (native-inputs
+ `(("antlr" ,antlr2)))
+ (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 stringtemplate4
+ (package
+ (name "stringtemplate4")
+ (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
+ `(#:tests? #f
+ #:jar-name (string-append ,name "-" ,version ".jar")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'generate-grammar
+ (lambda* (#:key inputs #:allow-other-keys)
+ (chdir "src/org/stringtemplate/v4/compiler/")
+ (for-each (lambda (file)
+ (display file)
+ (newline)
+ (system* "antlr3" file))
+ '("STParser.g" "Group.g" "CodeGenerator.g"))
+ (chdir "../../../../.."))))))
+ (inputs
+ `(("antlr3" ,antlr3-bootstrap)
+ ("antlr2" ,antlr2)
+ ("stringtemplate" ,stringtemplate3)))
+ (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)))
+
+(define stringtemplate4-4.0.6
+ (package
+ (inherit stringtemplate4)
+ (name "stringtemplate4")
+ (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)
+ ("stringtemplate" ,stringtemplate3)))))
+
+(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" ,stringtemplate3)
+ ("stringtemplate4" ,stringtemplate4)))
+ (propagated-inputs
+ `(("stringtemplate" ,stringtemplate3)
+ ("antlr" ,antlr2)
+ ("stringtemplate4" ,stringtemplate4-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 "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
+ `(("stringtemplate" ,stringtemplate3)
+ ("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" ,stringtemplate3)))))
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 9d8507030b..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.
@@ -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 e3ab8f6dc0..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 "749c61e01082acec745bb82888caa1dd1eaa0677")
- (revision "3"))
+ (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
- "0mg22sbxvkhvd1b13xmv96k0b3lnrmjh3cd0cl0gjh17ip2v1y9k"))
+ "192agb8lpbajljbnnpn7y1pk2c6bvqbcpqhlgq4pja4pdf664xzg"))
(snippet
'(begin
(use-modules (guix build utils))
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index e7b42290fc..ee0c5c0d89 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -22,7 +22,7 @@
#: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
@@ -45,7 +45,7 @@
(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
@@ -68,7 +68,7 @@ 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
@@ -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,7 +117,7 @@ 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
@@ -141,7 +141,7 @@ 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
@@ -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/less.scm b/gnu/packages/less.scm
index efdf8ab0c4..0aa4665840 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -26,7 +26,7 @@
(define-public less
(package
(name "less")
- (version "481")
+ (version "487")
(source
(origin
(method url-fetch)
@@ -34,7 +34,7 @@
version ".tar.gz"))
(sha256
(base32
- "19fxj0h10y5bhr3a1xa7kqvnwl44db3sdypz8jxl1q79yln8z8rz"))))
+ "01i7n6jaxwmww3pasy3hg38zc6x7jw0w05mqqvh6caqbrdaq9p7k"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(home-page "https://www.gnu.org/software/less/")
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 5d769aaf47..c903352bbc 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -192,7 +192,7 @@ 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
@@ -233,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/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 958d111403..75da0d420f 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -80,6 +80,7 @@
#: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)
@@ -353,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.13")
-(define %linux-libre-hash "0sl3w4id3amahv42xg2ac0lqhxn5dih2vm7wyxnfja4c3g4hshn4")
+(define %linux-libre-version "4.11")
+(define %linux-libre-hash "0j1bzzq9iq5i1zm7gnig8v0clr8wq303kvcdsaifc0r0ggz1mx1n")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@@ -363,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.25"
- "15vcphpz40n75jwhbpbwiqvgxsdn05n6nbfg5cksyy24f9fpd35k"
+ (make-linux-libre "4.9.27"
+ "1b39zijjkv21kya359y4g88w5ff110v95pvc4wfvc83dvik9hny5"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
- (make-linux-libre "4.4.64"
- "02fvsklimzgkhsjg3i6mjhf09b4kvgwr2cg2nak5li3fpjmw1y35"
+ (make-linux-libre "4.4.67"
+ "1nadmrd26llc17ipig7bx7rf2gwns94g86a3ilcvgdk17hq5riss"
%intel-compatible-systems
#:configuration-file kernel-config))
@@ -467,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)
@@ -475,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
@@ -646,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
@@ -655,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
@@ -1697,7 +1685,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
@@ -1820,14 +1808,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
@@ -1883,7 +1871,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.
@@ -2286,14 +2274,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")))
@@ -2699,9 +2687,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"))))
@@ -3658,7 +3644,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")))
@@ -3673,10 +3659,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"))
@@ -3793,3 +3783,127 @@ 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 43d9c9c9fc..57d0191b70 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -283,7 +283,10 @@ an interpreter, a compiler, a debugger, and much more.")
("texlive" ,texlive)
("texinfo" ,texinfo)))
(arguments
- '(#:phases
+ '(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'patch-unix-tool-paths
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 d28094c3a8..2523d65f61 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -24,8 +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
@@ -90,3 +92,27 @@ 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)))
+ (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/lxde.scm b/gnu/packages/lxde.scm
index 1164ba8cbb..bf70bd6013 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -162,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"))))
@@ -288,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.")
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 58ae81d207..d39e77d978 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -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 a10c3bcbf9..39d394140b 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -104,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 asl2.0))
+ bsd-2 x11-style agpl3 asl2.0 perl-license))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -837,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)
@@ -875,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
@@ -1277,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
@@ -1297,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
@@ -1316,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
@@ -1335,7 +1335,7 @@ 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
@@ -1363,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
@@ -1384,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
@@ -1404,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
@@ -1436,7 +1436,7 @@ 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
@@ -1457,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
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/maths.scm b/gnu/packages/maths.scm
index 4e70bd8d1c..88a46f8e9b 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")
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
new file mode 100644
index 0000000000..84d6f8ff78
--- /dev/null
+++ b/gnu/packages/mes.scm
@@ -0,0 +1,97 @@
+;;; 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 "a437c173b9da1949ad966fd50dd4f26e522a910a")
+ (revision "0")
+ (triplet "i686-unknown-linux-gnu"))
+ (package
+ (name "mes")
+ (version (string-append "0.5-" 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))
+ ;; TODO: Unbundle nyacc.
+ (sha256
+ (base32 "1ynr0hc0k15307sgzv09k3y5rvy46h0wbh7zcblx1f9v7y8k90zv"))))
+ (build-system gnu-build-system)
+ (supported-systems '("x86_64-linux"))
+ (native-inputs
+ `(("guile" ,guile-2.2)
+ ;; 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" ,(let ((triplet triplet)) (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 59e2b23d32..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
@@ -1001,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/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 adce8a864f..3002d27a6e 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -582,6 +582,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")
@@ -943,14 +987,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 +1005,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 +1027,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 +1035,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 +1058,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 +1066,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 +1092,7 @@ effects.")
(define-public samplv1
(package
(name "samplv1")
- (version "0.8.1")
+ (version "0.8.2")
(source (origin
(method url-fetch)
(uri
@@ -1056,7 +1100,7 @@ effects.")
"/samplv1-" version ".tar.gz"))
(sha256
(base32
- "15rp9d1jbb56idyrnn9cqi1i7a70z1a1qdyz7ryn0bla0ghjnich"))))
+ "11mxn3ff9g0x1rl4jl5rngmwlb8dmkbzsjhxb8gqhmlpfj24wl7l"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -1866,7 +1910,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 +1918,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 +1930,7 @@ and hold, etc.")
(modify-phases %standard-phases
(delete 'configure))))
(inputs
- `(("gtk+" ,gtk+-2)
+ `(("gtk+" ,gtk+)
("jack" ,jack-1)
("fftwf" ,fftwf)
("cairo" ,cairo)
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 15cf7cf609..f0344d7481 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -29,15 +29,15 @@
(define-public nano
(package
(name "nano")
- (version "2.8.1")
+ (version "2.8.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/nano/nano-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "042rbhhkiw6nvwklm8zmmdlhjr8gdhdp486hafwrn1pwnpd511m4"))))
+ "1q5rxkvsv974085xrd2k11ffazadabcb9cnpfra0shmj71xqlgh2"))))
(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 3182443c19..94152226da 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -727,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)))
@@ -739,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
@@ -772,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
@@ -846,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
@@ -876,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
@@ -1143,7 +1142,7 @@ networks.")
(define-public speedtest-cli
(package
(name "speedtest-cli")
- (version "1.0.5")
+ (version "1.0.6")
(source
(origin
(method url-fetch)
@@ -1152,7 +1151,7 @@ networks.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0y1888492kl21dz69vd526189c5aal3q790jawdb2wph42cz0cq8"))))
+ "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/ocaml.scm b/gnu/packages/ocaml.scm
index 0c21a74da6..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")
@@ -1024,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")
@@ -1087,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")
@@ -1267,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")
@@ -1291,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")
@@ -1680,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")
@@ -1945,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/package-management.scm b/gnu/packages/package-management.scm
index a931a0e269..8ebf6b0578 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -68,207 +68,202 @@
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>
+(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.12.0")
+ (commit "ba2260dbbc5a3c915e2cbd54d93f2f3af2a864c3")
+ (revision 10))
+ (package
+ (name "guix")
- #:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 popen)
- (ice-9 rdelim))
+ (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
+ "0nkwbblsnl7kv2n8jf8c6rl3a7dynaqxizhhni18vbnmvza35c79"))
+ (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"))
- #: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")))
+ ;; 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"
- (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)))
+ ;; 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>
- (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)))
+ #:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 popen)
+ (ice-9 rdelim))
- (wrap-program (string-append out "/bin/guix")
- `("GUILE_LOAD_PATH" ":" prefix (,path))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path)))
+ #: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$"))
- #t))))))
- (native-inputs `(("pkg-config" ,pkg-config)
+ (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")))
- ;; 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'
+ (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)))
- ("sqlite" ,sqlite)
- ("libgcrypt" ,libgcrypt)
- ("guile" ,guile-2.0)
+ (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)))
- ("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)))
+ (wrap-program (string-append out "/bin/guix")
+ `("GUILE_LOAD_PATH" ":" prefix (,path))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path)))
- (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
+ #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")))))
-
-(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 "25a49294caf2386e65fc1b12a2508324be0b1cc2"))
- (package (inherit guix-0.12.0)
- (version (string-append "0.12.0-9." (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
- "0p4rh0629j89v4ka5dsp70a1xrfhg7sxjjq54p68vw7x5dkann4a"))
- (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$"))
-
- (zero? (system* "sh" "bootstrap")))))))))))
+ (license gpl3+)
+ (properties '((ftp-server . "alpha.gnu.org"))))))
-(define-public guix guix-devel)
+;; Alias for backward compatibility.
+(define-public guix-devel guix)
(define (source-file? file stat)
"Return true if FILE is likely a source file, false if it is a typical
@@ -310,14 +305,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
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 9daacd871e..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.")
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/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/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/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/icecat-bug-1299500-pt10.patch b/gnu/packages/patches/icecat-bug-1299500-pt10.patch
deleted file mode 100644
index 406738b8a5..0000000000
--- a/gnu/packages/patches/icecat-bug-1299500-pt10.patch
+++ /dev/null
@@ -1,1639 +0,0 @@
-Based on the following HG changeset, but adapted to GNU IceCat and
-also assumes that the dom/devicestorage subtree is deleted by our
-snippet. Note that the other parts of this patchset are downloaded
-directly from the upstream mozilla-esr52 mercurial repository.
-
-# HG changeset patch
-# User Andrea Marchesini <amarchesini@mozilla.com>
-# Date 1489000545 -3600
-# Node ID 08f2bc167ae82a6f86e427283d8b972ba794b846
-# Parent d63f3b14e5718b62c0adad2eab81b785250f3d4a
-Bug 1299500 - Get rid of DeviceStorage API - part 10 - DeviceStorage, r=ehsan, r=billm, a=jcristau
-
-diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf
---- a/dom/bindings/Bindings.conf
-+++ b/dom/bindings/Bindings.conf
-@@ -228,21 +228,16 @@ DOMInterfaces = {
- 'DeviceAcceleration': {
- 'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
- },
-
- 'DeviceRotationRate': {
- 'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
- },
-
--'DeviceStorage': {
-- 'nativeType': 'nsDOMDeviceStorage',
-- 'headerFile': 'DeviceStorage.h',
--},
--
- 'Document': {
- 'nativeType': 'nsIDocument',
- 'binaryNames': {
- 'documentURI': 'documentURIFromJS',
- 'URL': 'documentURIFromJS'
- }
- },
-
-diff --git a/dom/filesystem/DeviceStorageFileSystem.cpp b/dom/filesystem/DeviceStorageFileSystem.cpp
---- a/dom/filesystem/DeviceStorageFileSystem.cpp
-+++ b/dom/filesystem/DeviceStorageFileSystem.cpp
-@@ -1,26 +1,24 @@
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* vim: set ts=8 sts=2 et sw=2 tw=80: */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #include "mozilla/dom/DeviceStorageFileSystem.h"
-
--#include "DeviceStorage.h"
- #include "mozilla/Preferences.h"
- #include "mozilla/dom/Directory.h"
- #include "mozilla/dom/File.h"
- #include "mozilla/dom/FileSystemUtils.h"
- #include "mozilla/ipc/BackgroundParent.h"
- #include "mozilla/Unused.h"
- #include "nsCOMPtr.h"
- #include "nsDebug.h"
--#include "nsDeviceStorage.h"
- #include "nsIFile.h"
- #include "nsPIDOMWindow.h"
- #include "nsGlobalWindow.h"
-
- using namespace mozilla::ipc;
-
- namespace mozilla {
- namespace dom {
-@@ -37,44 +35,16 @@ DeviceStorageFileSystem::DeviceStorageFi
- if (mozilla::Preferences::GetBool("device.storage.prompt.testing", false)) {
- mPermissionCheckType = ePermissionCheckNotRequired;
- } else {
- mPermissionCheckType = ePermissionCheckRequired;
- }
- } else {
- AssertIsOnBackgroundThread();
- }
--
-- // Get the permission name required to access the file system.
-- DebugOnly<nsresult> rv =
-- DeviceStorageTypeChecker::GetPermissionForType(mStorageType, mPermission);
-- NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "GetPermissionForType failed");
--
-- // Get the local path of the file system root.
-- nsCOMPtr<nsIFile> rootFile;
-- DeviceStorageFile::GetRootDirectoryForType(aStorageType,
-- aStorageName,
-- getter_AddRefs(rootFile));
--
-- Unused <<
-- NS_WARN_IF(!rootFile ||
-- NS_FAILED(rootFile->GetPath(mLocalOrDeviceStorageRootPath)));
--
-- if (!XRE_IsParentProcess()) {
-- return;
-- }
--
-- // DeviceStorageTypeChecker is a singleton object and must be initialized on
-- // the main thread. We initialize it here so that we can use it on the worker
-- // thread.
-- if (NS_IsMainThread()) {
-- DebugOnly<DeviceStorageTypeChecker*> typeChecker =
-- DeviceStorageTypeChecker::CreateOrGet();
-- MOZ_ASSERT(typeChecker);
-- }
- }
-
- DeviceStorageFileSystem::~DeviceStorageFileSystem()
- {
- AssertIsOnOwningThread();
- }
-
- already_AddRefed<FileSystemBase>
-diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
---- a/dom/ipc/ContentChild.cpp
-+++ b/dom/ipc/ContentChild.cpp
-@@ -168,44 +168,41 @@
- #include "mozilla/X11Util.h"
- #endif
-
- #ifdef ACCESSIBILITY
- #include "nsAccessibilityService.h"
- #endif
-
- #include "mozilla/dom/File.h"
--#include "mozilla/dom/devicestorage/DeviceStorageRequestChild.h"
- #include "mozilla/dom/PPresentationChild.h"
- #include "mozilla/dom/PresentationIPCService.h"
- #include "mozilla/ipc/InputStreamUtils.h"
-
- #ifdef MOZ_WEBSPEECH
- #include "mozilla/dom/PSpeechSynthesisChild.h"
- #endif
-
- #include "ProcessUtils.h"
- #include "URIUtils.h"
- #include "nsContentUtils.h"
- #include "nsIPrincipal.h"
--#include "nsDeviceStorage.h"
- #include "DomainPolicy.h"
- #include "mozilla/dom/ipc/StructuredCloneData.h"
- #include "mozilla/dom/time/DateCacheCleaner.h"
- #include "mozilla/net/NeckoMessageUtils.h"
- #include "mozilla/widget/PuppetBidiKeyboard.h"
- #include "mozilla/RemoteSpellCheckEngineChild.h"
- #include "GMPServiceChild.h"
- #include "gfxPlatform.h"
- #include "nscore.h" // for NS_FREE_PERMANENT_DATA
- #include "VRManagerChild.h"
-
- using namespace mozilla;
- using namespace mozilla::docshell;
--using namespace mozilla::dom::devicestorage;
- using namespace mozilla::dom::ipc;
- using namespace mozilla::dom::workers;
- using namespace mozilla::media;
- using namespace mozilla::embedding;
- using namespace mozilla::gmp;
- using namespace mozilla::hal_sandbox;
- using namespace mozilla::ipc;
- using namespace mozilla::layers;
-@@ -1806,29 +1803,16 @@ ContentChild::GetCPOWManager()
- }
-
- bool
- ContentChild::RecvPTestShellConstructor(PTestShellChild* actor)
- {
- return true;
- }
-
--PDeviceStorageRequestChild*
--ContentChild::AllocPDeviceStorageRequestChild(const DeviceStorageParams& aParams)
--{
-- return new DeviceStorageRequestChild();
--}
--
--bool
--ContentChild::DeallocPDeviceStorageRequestChild(PDeviceStorageRequestChild* aDeviceStorage)
--{
-- delete aDeviceStorage;
-- return true;
--}
--
- PNeckoChild*
- ContentChild::AllocPNeckoChild()
- {
- return new NeckoChild();
- }
-
- bool
- ContentChild::DeallocPNeckoChild(PNeckoChild* necko)
-@@ -2531,38 +2515,16 @@ ContentChild::RecvVolumes(nsTArray<Volum
- if (vs) {
- vs->RecvVolumesFromParent(aVolumes);
- }
- #endif
- return true;
- }
-
- bool
--ContentChild::RecvFilePathUpdate(const nsString& aStorageType,
-- const nsString& aStorageName,
-- const nsString& aPath,
-- const nsCString& aReason)
--{
-- if (nsDOMDeviceStorage::InstanceCount() == 0) {
-- // No device storage instances in this process. Don't try and
-- // and create a DeviceStorageFile since it will fail.
--
-- return true;
-- }
--
-- RefPtr<DeviceStorageFile> dsf = new DeviceStorageFile(aStorageType, aStorageName, aPath);
--
-- nsString reason;
-- CopyASCIItoUTF16(aReason, reason);
-- nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
-- obs->NotifyObservers(dsf, "file-watcher-update", reason.get());
-- return true;
--}
--
--bool
- ContentChild::RecvFileSystemUpdate(const nsString& aFsName,
- const nsString& aVolumeName,
- const int32_t& aState,
- const int32_t& aMountGeneration,
- const bool& aIsMediaPresent,
- const bool& aIsSharing,
- const bool& aIsFormatting,
- const bool& aIsFake,
-diff --git a/dom/ipc/ContentChild.h b/dom/ipc/ContentChild.h
---- a/dom/ipc/ContentChild.h
-+++ b/dom/ipc/ContentChild.h
-@@ -193,22 +193,16 @@ public:
- const IPCTabContext& aContext,
- const uint32_t& aChromeFlags,
- const ContentParentId& aCpID,
- const bool& aIsForApp,
- const bool& aIsForBrowser) override;
-
- virtual bool DeallocPBrowserChild(PBrowserChild*) override;
-
-- virtual PDeviceStorageRequestChild*
-- AllocPDeviceStorageRequestChild(const DeviceStorageParams&) override;
--
-- virtual bool
-- DeallocPDeviceStorageRequestChild(PDeviceStorageRequestChild*) override;
--
- virtual PBlobChild*
- AllocPBlobChild(const BlobConstructorParams& aParams) override;
-
- virtual bool DeallocPBlobChild(PBlobChild* aActor) override;
-
- virtual PCrashReporterChild*
- AllocPCrashReporterChild(const mozilla::dom::NativeThreadId& id,
- const uint32_t& processType) override;
-@@ -436,21 +430,16 @@ public:
-
- virtual bool
- RecvInitBlobURLs(nsTArray<BlobURLRegistrationData>&& aRegistations) override;
-
- virtual bool RecvLastPrivateDocShellDestroyed() override;
-
- virtual bool RecvVolumes(InfallibleTArray<VolumeInfo>&& aVolumes) override;
-
-- virtual bool RecvFilePathUpdate(const nsString& aStorageType,
-- const nsString& aStorageName,
-- const nsString& aPath,
-- const nsCString& aReason) override;
--
- virtual bool RecvFileSystemUpdate(const nsString& aFsName,
- const nsString& aVolumeName,
- const int32_t& aState,
- const int32_t& aMountGeneration,
- const bool& aIsMediaPresent,
- const bool& aIsSharing,
- const bool& aIsFormatting,
- const bool& aIsFake,
-diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
---- a/dom/ipc/ContentParent.cpp
-+++ b/dom/ipc/ContentParent.cpp
-@@ -23,17 +23,16 @@
-
- #include "chrome/common/process_watcher.h"
-
- #include "mozilla/a11y/PDocAccessible.h"
- #include "AppProcessChecker.h"
- #include "AudioChannelService.h"
- #include "BlobParent.h"
- #include "CrashReporterParent.h"
--#include "DeviceStorageStatics.h"
- #include "GMPServiceParent.h"
- #include "HandlerServiceParent.h"
- #include "IHistory.h"
- #include "imgIContainer.h"
- #include "mozIApplication.h"
- #if defined(XP_WIN) && defined(ACCESSIBILITY)
- #include "mozilla/a11y/AccessibleWrap.h"
- #endif
-@@ -50,17 +49,16 @@
- #include "mozilla/dom/GetFilesHelper.h"
- #include "mozilla/dom/GeolocationBinding.h"
- #include "mozilla/dom/Notification.h"
- #include "mozilla/dom/PContentBridgeParent.h"
- #include "mozilla/dom/PContentPermissionRequestParent.h"
- #include "mozilla/dom/PCycleCollectWithLogsParent.h"
- #include "mozilla/dom/PMemoryReportRequestParent.h"
- #include "mozilla/dom/ServiceWorkerRegistrar.h"
--#include "mozilla/dom/devicestorage/DeviceStorageRequestParent.h"
- #include "mozilla/dom/power/PowerManagerService.h"
- #include "mozilla/dom/Permissions.h"
- #include "mozilla/dom/PresentationParent.h"
- #include "mozilla/dom/PPresentationParent.h"
- #include "mozilla/dom/PushNotifier.h"
- #include "mozilla/dom/FlyWebPublishedServerIPC.h"
- #include "mozilla/dom/quota/QuotaManagerService.h"
- #include "mozilla/dom/time/DateCacheCleaner.h"
-@@ -272,17 +270,16 @@ using base::ChildPrivileges;
- using base::KillProcess;
- #ifdef MOZ_ENABLE_PROFILER_SPS
- using mozilla::ProfileGatherer;
- #endif
-
- #ifdef MOZ_CRASHREPORTER
- using namespace CrashReporter;
- #endif
--using namespace mozilla::dom::devicestorage;
- using namespace mozilla::dom::power;
- using namespace mozilla::media;
- using namespace mozilla::embedding;
- using namespace mozilla::gfx;
- using namespace mozilla::gmp;
- using namespace mozilla::hal;
- using namespace mozilla::ipc;
- using namespace mozilla::layers;
-@@ -2775,22 +2772,16 @@ ContentParent::Observe(nsISupports* aSub
- Unused << SendCycleCollect();
- }
- else if (!strcmp(aTopic, "child-mmu-request")){
- Unused << SendMinimizeMemoryUsage();
- }
- else if (!strcmp(aTopic, "last-pb-context-exited")) {
- Unused << SendLastPrivateDocShellDestroyed();
- }
-- else if (!strcmp(aTopic, "file-watcher-update")) {
-- nsCString creason;
-- CopyUTF16toUTF8(aData, creason);
-- DeviceStorageFile* file = static_cast<DeviceStorageFile*>(aSubject);
-- Unused << SendFilePathUpdate(file->mStorageType, file->mStorageName, file->mPath, creason);
-- }
- #ifdef MOZ_WIDGET_GONK
- else if(!strcmp(aTopic, NS_VOLUME_STATE_CHANGED)) {
- nsCOMPtr<nsIVolume> vol = do_QueryInterface(aSubject);
- if (!vol) {
- return NS_ERROR_NOT_AVAILABLE;
- }
-
- nsString volName;
-@@ -3021,35 +3012,16 @@ ContentParent::AllocPBrowserParent(const
- }
-
- bool
- ContentParent::DeallocPBrowserParent(PBrowserParent* frame)
- {
- return nsIContentParent::DeallocPBrowserParent(frame);
- }
-
--PDeviceStorageRequestParent*
--ContentParent::AllocPDeviceStorageRequestParent(const DeviceStorageParams& aParams)
--{
-- RefPtr<DeviceStorageRequestParent> result = new DeviceStorageRequestParent(aParams);
-- if (!result->EnsureRequiredPermissions(this)) {
-- return nullptr;
-- }
-- result->Dispatch();
-- return result.forget().take();
--}
--
--bool
--ContentParent::DeallocPDeviceStorageRequestParent(PDeviceStorageRequestParent* doomed)
--{
-- DeviceStorageRequestParent *parent = static_cast<DeviceStorageRequestParent*>(doomed);
-- NS_RELEASE(parent);
-- return true;
--}
--
- PBlobParent*
- ContentParent::AllocPBlobParent(const BlobConstructorParams& aParams)
- {
- return nsIContentParent::AllocPBlobParent(aParams);
- }
-
- bool
- ContentParent::DeallocPBlobParent(PBlobParent* aActor)
-@@ -3871,35 +3843,16 @@ ContentParent::RecvAsyncMessage(const ns
- InfallibleTArray<CpowEntry>&& aCpows,
- const IPC::Principal& aPrincipal,
- const ClonedMessageData& aData)
- {
- return nsIContentParent::RecvAsyncMessage(aMsg, Move(aCpows), aPrincipal,
- aData);
- }
-
--bool
--ContentParent::RecvFilePathUpdateNotify(const nsString& aType,
-- const nsString& aStorageName,
-- const nsString& aFilePath,
-- const nsCString& aReason)
--{
-- RefPtr<DeviceStorageFile> dsf = new DeviceStorageFile(aType,
-- aStorageName,
-- aFilePath);
--
-- nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
-- if (!obs) {
-- return false;
-- }
-- obs->NotifyObservers(dsf, "file-watcher-update",
-- NS_ConvertASCIItoUTF16(aReason).get());
-- return true;
--}
--
- static int32_t
- AddGeolocationListener(nsIDOMGeoPositionCallback* watcher,
- nsIDOMGeoPositionErrorCallback* errorCallBack,
- bool highAccuracy)
- {
- nsCOMPtr<nsIDOMGeoGeolocation> geo = do_GetService("@mozilla.org/geolocation;1");
- if (!geo) {
- return -1;
-@@ -4943,35 +4896,16 @@ ContentParent::RecvBeginDriverCrashGuard
- bool
- ContentParent::RecvEndDriverCrashGuard(const uint32_t& aGuardType)
- {
- mDriverCrashGuard = nullptr;
- return true;
- }
-
- bool
--ContentParent::RecvGetDeviceStorageLocation(const nsString& aType,
-- nsString* aPath)
--{
--#ifdef MOZ_WIDGET_ANDROID
-- mozilla::AndroidBridge::GetExternalPublicDirectory(aType, *aPath);
-- return true;
--#else
-- return false;
--#endif
--}
--
--bool
--ContentParent::RecvGetDeviceStorageLocations(DeviceStorageLocationInfo* info)
--{
-- DeviceStorageStatics::GetDeviceStorageLocationsForIPC(info);
-- return true;
--}
--
--bool
- ContentParent::RecvGetAndroidSystemInfo(AndroidSystemInfo* aInfo)
- {
- #ifdef MOZ_WIDGET_ANDROID
- nsSystemInfo::GetAndroidSystemInfo(aInfo);
- return true;
- #else
- MOZ_CRASH("wrong platform!");
- return false;
-diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h
---- a/dom/ipc/ContentParent.h
-+++ b/dom/ipc/ContentParent.h
-@@ -726,22 +726,16 @@ private:
- const IPCTabContext& aContext,
- const uint32_t& aChromeFlags,
- const ContentParentId& aCpId,
- const bool& aIsForApp,
- const bool& aIsForBrowser) override;
-
- virtual bool DeallocPBrowserParent(PBrowserParent* frame) override;
-
-- virtual PDeviceStorageRequestParent*
-- AllocPDeviceStorageRequestParent(const DeviceStorageParams&) override;
--
-- virtual bool
-- DeallocPDeviceStorageRequestParent(PDeviceStorageRequestParent*) override;
--
- virtual PBlobParent*
- AllocPBlobParent(const BlobConstructorParams& aParams) override;
-
- virtual bool DeallocPBlobParent(PBlobParent* aActor) override;
-
- virtual bool
- RecvPBlobConstructor(PBlobParent* aActor,
- const BlobConstructorParams& params) override;
-@@ -927,21 +921,16 @@ private:
- const IPC::Principal& aPrincipal,
- nsTArray<StructuredCloneData>* aRetvals) override;
-
- virtual bool RecvAsyncMessage(const nsString& aMsg,
- InfallibleTArray<CpowEntry>&& aCpows,
- const IPC::Principal& aPrincipal,
- const ClonedMessageData& aData) override;
-
-- virtual bool RecvFilePathUpdateNotify(const nsString& aType,
-- const nsString& aStorageName,
-- const nsString& aFilePath,
-- const nsCString& aReason) override;
--
- virtual bool RecvAddGeolocationListener(const IPC::Principal& aPrincipal,
- const bool& aHighAccuracy) override;
- virtual bool RecvRemoveGeolocationListener() override;
-
- virtual bool RecvSetGeolocationHigherAccuracy(const bool& aEnable) override;
-
- virtual bool RecvConsoleMessage(const nsString& aMessage) override;
-
-@@ -1047,21 +1036,16 @@ private:
- const uint32_t& aDropEffect) override;
-
- virtual bool RecvProfile(const nsCString& aProfile) override;
-
- virtual bool RecvGetGraphicsDeviceInitData(ContentDeviceData* aOut) override;
-
- void StartProfiler(nsIProfilerStartParams* aParams);
-
-- virtual bool RecvGetDeviceStorageLocation(const nsString& aType,
-- nsString* aPath) override;
--
-- virtual bool RecvGetDeviceStorageLocations(DeviceStorageLocationInfo* info) override;
--
- virtual bool RecvGetAndroidSystemInfo(AndroidSystemInfo* aInfo) override;
-
- virtual bool RecvNotifyBenchmarkResult(const nsString& aCodecName,
- const uint32_t& aDecodeFPS) override;
-
- virtual bool RecvNotifyPushObservers(const nsCString& aScope,
- const IPC::Principal& aPrincipal,
- const nsString& aMessageId) override;
-diff --git a/dom/ipc/PContent.ipdl b/dom/ipc/PContent.ipdl
---- a/dom/ipc/PContent.ipdl
-+++ b/dom/ipc/PContent.ipdl
-@@ -10,17 +10,16 @@ include protocol PBrowser;
- include protocol PCompositorBridge;
- include protocol PContentBridge;
- include protocol PContentPermissionRequest;
- include protocol PCycleCollectWithLogs;
- include protocol PCrashReporter;
- include protocol PPSMContentDownloader;
- include protocol PExternalHelperApp;
- include protocol PHandlerService;
--include protocol PDeviceStorageRequest;
- include protocol PFileDescriptorSet;
- include protocol PHal;
- include protocol PHeapSnapshotTempFileHelper;
- include protocol PProcessHangMonitor;
- include protocol PImageBridge;
- include protocol PMedia;
- include protocol PMemoryReportRequest;
- include protocol PNecko;
-@@ -111,130 +110,16 @@ struct FontListEntry {
- nsCString filepath;
- uint16_t weight;
- int16_t stretch;
- uint8_t italic;
- uint8_t index;
- bool isHidden;
- };
-
--struct DeviceStorageFreeSpaceParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageUsedSpaceParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageAvailableParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageStatusParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageFormatParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageMountParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageUnmountParams
--{
-- nsString type;
-- nsString storageName;
--};
--
--struct DeviceStorageAddParams
--{
-- nsString type;
-- nsString storageName;
-- nsString relpath;
-- PBlob blob;
--};
--
--struct DeviceStorageAppendParams
--{
-- nsString type;
-- nsString storageName;
-- nsString relpath;
-- PBlob blob;
--};
--
--struct DeviceStorageCreateFdParams
--{
-- nsString type;
-- nsString storageName;
-- nsString relpath;
--};
--
--struct DeviceStorageGetParams
--{
-- nsString type;
-- nsString storageName;
-- nsString rootDir;
-- nsString relpath;
--};
--
--struct DeviceStorageDeleteParams
--{
-- nsString type;
-- nsString storageName;
-- nsString relpath;
--};
--
--struct DeviceStorageEnumerationParams
--{
-- nsString type;
-- nsString storageName;
-- nsString rootdir;
-- uint64_t since;
--};
--
--union DeviceStorageParams
--{
-- DeviceStorageAddParams;
-- DeviceStorageAppendParams;
-- DeviceStorageCreateFdParams;
-- DeviceStorageGetParams;
-- DeviceStorageDeleteParams;
-- DeviceStorageEnumerationParams;
-- DeviceStorageFreeSpaceParams;
-- DeviceStorageUsedSpaceParams;
-- DeviceStorageAvailableParams;
-- DeviceStorageStatusParams;
-- DeviceStorageFormatParams;
-- DeviceStorageMountParams;
-- DeviceStorageUnmountParams;
--};
--
--struct DeviceStorageLocationInfo {
-- nsString music;
-- nsString pictures;
-- nsString videos;
-- nsString sdcard;
-- nsString apps;
-- nsString crashes;
--};
--
- union PrefValue {
- nsCString;
- int32_t;
- bool;
- };
-
- union MaybePrefValue {
- PrefValue;
-@@ -355,17 +240,16 @@ nested(upto inside_cpow) sync protocol P
- parent opens PGMPService;
- child opens PBackground;
-
- manages PBlob;
- manages PBrowser;
- manages PContentPermissionRequest;
- manages PCrashReporter;
- manages PCycleCollectWithLogs;
-- manages PDeviceStorageRequest;
- manages PPSMContentDownloader;
- manages PExternalHelperApp;
- manages PFileDescriptorSet;
- manages PHal;
- manages PHandlerService;
- manages PHeapSnapshotTempFileHelper;
- manages PMedia;
- manages PMemoryReportRequest;
-@@ -538,19 +422,16 @@ child:
- /**
- * Send BlobURLRegistrationData to child process.
- */
- async InitBlobURLs(BlobURLRegistrationData[] registrations);
-
- // Notify child that last-pb-context-exited notification was observed
- async LastPrivateDocShellDestroyed();
-
-- async FilePathUpdate(nsString storageType, nsString storageName, nsString filepath,
-- nsCString reasons);
--
- // Note: Any changes to this structure should also be changed in
- // VolumeInfo above.
- async FileSystemUpdate(nsString fsName, nsString mountPoint, int32_t fsState,
- int32_t mountGeneration, bool isMediaPresent,
- bool isSharing, bool isFormatting, bool isFake,
- bool isUnmounting, bool isRemovable, bool isHotSwappable);
-
- // Notify volume is removed.
-@@ -738,17 +619,16 @@ parent:
- * process. |newPluginEpoch| is the current epoch in the chrome process. If
- * |pluginEpoch == newPluginEpoch|, then |plugins| will be left empty.
- */
- sync FindPlugins(uint32_t pluginEpoch) returns (nsresult aResult, PluginTag[] plugins, uint32_t newPluginEpoch);
-
- async PJavaScript();
-
- async PRemoteSpellcheckEngine();
-- async PDeviceStorageRequest(DeviceStorageParams params);
-
- sync PCrashReporter(NativeThreadId tid, uint32_t processType);
-
- /**
- * Is this token compatible with the provided version?
- *
- * |version| The offered version to test
- * Returns |True| if the offered version is compatible
-@@ -921,21 +801,16 @@ parent:
- async FirstIdle();
-
- async AudioChannelServiceStatus(bool aActiveTelephonyChannel,
- bool aContentOrNormalChannel,
- bool aAnyActiveChannel);
-
- async AudioChannelChangeDefVolChannel(int32_t aChannel, bool aHidden);
-
-- async FilePathUpdateNotify(nsString aType,
-- nsString aStorageName,
-- nsString aFilepath,
-- nsCString aReason);
--
- // called by the child (test code only) to propagate volume changes to the parent
- async CreateFakeVolume(nsString fsName, nsString mountPoint);
- async SetFakeVolumeState(nsString fsName, int32_t fsState);
- async RemoveFakeVolume(nsString fsName);
-
- sync KeywordToURI(nsCString keyword)
- returns (nsString providerName, OptionalInputStreamParams postData, OptionalURIParams uri);
-
-@@ -1108,22 +983,16 @@ parent:
- float aFullZoom)
- returns (nsresult rv,
- bool windowOpened,
- FrameScriptInfo[] frameScripts,
- nsCString urlToLoad,
- TextureFactoryIdentifier textureFactoryIdentifier,
- uint64_t layersId);
-
-- sync GetDeviceStorageLocation(nsString type)
-- returns (nsString path);
--
-- sync GetDeviceStorageLocations()
-- returns (DeviceStorageLocationInfo info);
--
- sync GetAndroidSystemInfo()
- returns (AndroidSystemInfo info);
-
- /**
- * Tells the parent to ungrab the pointer on the default display.
- *
- * This is for GTK platforms where we have to ensure the pointer ungrab happens in the
- * chrome process as that's the process that receives the pointer event.
-diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build
---- a/dom/ipc/moz.build
-+++ b/dom/ipc/moz.build
-@@ -120,17 +120,16 @@ if CONFIG['MOZ_CONTENT_SANDBOX'] and CON
- 'mozsandbox',
- ]
-
- LOCAL_INCLUDES += [
- '/caps',
- '/chrome',
- '/docshell/base',
- '/dom/base',
-- '/dom/devicestorage',
- '/dom/events',
- '/dom/filesystem',
- '/dom/geolocation',
- '/dom/media/webspeech/synth/ipc',
- '/dom/security',
- '/dom/storage',
- '/dom/workers',
- '/embedding/components/printingui/ipc',
-diff --git a/dom/moz.build b/dom/moz.build
---- a/dom/moz.build
-+++ b/dom/moz.build
-@@ -42,17 +42,16 @@ DIRS += [
- 'base',
- 'archivereader',
- 'bindings',
- 'battery',
- 'browser-element',
- 'cache',
- 'canvas',
- 'crypto',
-- 'devicestorage',
- 'encoding',
- 'events',
- 'fetch',
- 'filehandle',
- 'filesystem',
- 'flyweb',
- 'gamepad',
- 'geolocation',
-diff --git a/dom/webidl/DeviceStorage.webidl b/dom/webidl/DeviceStorage.webidl
-deleted file mode 100644
---- a/dom/webidl/DeviceStorage.webidl
-+++ /dev/null
-@@ -1,95 +0,0 @@
--/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
--/* This Source Code Form is subject to the terms of the Mozilla Public
-- * License, v. 2.0. If a copy of the MPL was not distributed with this
-- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
--
--dictionary DeviceStorageEnumerationParameters {
-- Date since;
--};
--
--[Pref="device.storage.enabled"]
--interface DeviceStorage : EventTarget {
-- attribute EventHandler onchange;
--
-- [Throws]
-- DOMRequest? add(Blob? aBlob);
-- [Throws]
-- DOMRequest? addNamed(Blob? aBlob, DOMString aName);
--
-- /**
-- * Append data to a given file.
-- * If the file doesn't exist, a "NotFoundError" event will be dispatched.
-- * In the same time, it is a request.onerror case.
-- * If the file exists, it will be opened with the following permission:
-- * "PR_WRONLY|PR_CREATE_FILE|PR_APPEND".
-- * The function will return null when blob file is null and other unexpected situations.
-- * @parameter aBlob: A Blob object representing the data to append
-- * @parameter aName: A string representing the full name (path + file name) of the file
-- * to append data to.
-- */
-- [Throws]
-- DOMRequest? appendNamed(Blob? aBlob, DOMString aName);
--
-- [Throws]
-- DOMRequest get(DOMString aName);
-- [Throws]
-- DOMRequest getEditable(DOMString aName);
-- [Throws]
-- DOMRequest delete(DOMString aName);
--
-- [Throws]
-- DOMCursor enumerate(optional DeviceStorageEnumerationParameters options);
-- [Throws]
-- DOMCursor enumerate(DOMString path,
-- optional DeviceStorageEnumerationParameters options);
-- [Throws]
-- DOMCursor enumerateEditable(optional DeviceStorageEnumerationParameters options);
-- [Throws]
-- DOMCursor enumerateEditable(DOMString path,
-- optional DeviceStorageEnumerationParameters options);
--
-- [Throws]
-- DOMRequest freeSpace();
-- [Throws]
-- DOMRequest usedSpace();
-- [Throws]
-- DOMRequest available();
-- [Throws]
-- DOMRequest storageStatus();
-- [Throws]
-- DOMRequest format();
-- [Throws]
-- DOMRequest mount();
-- [Throws]
-- DOMRequest unmount();
--
-- // Note that the storageName is just a name (like sdcard), and doesn't
-- // include any path information.
-- readonly attribute DOMString storageName;
--
-- // Indicates if the storage area denoted by storageName is capable of
-- // being mounted and unmounted.
-- readonly attribute boolean canBeMounted;
--
-- // Indicates if the storage area denoted by storageName is capable of
-- // being shared and unshared.
-- readonly attribute boolean canBeShared;
--
-- // Indicates if the storage area denoted by storageName is capable of
-- // being formatted.
-- readonly attribute boolean canBeFormatted;
--
-- // Determines if this storage area is the one which will be used by default
-- // for storing new files.
-- readonly attribute boolean default;
--
-- // Indicates if the storage area denoted by storageName is removable
-- readonly attribute boolean isRemovable;
--
-- // True if the storage area is close to being full
-- readonly attribute boolean lowDiskSpace;
--
-- [NewObject]
-- // XXXbz what type does this really return?
-- Promise<any> getRoot();
--};
-diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build
---- a/dom/webidl/moz.build
-+++ b/dom/webidl/moz.build
-@@ -104,17 +104,16 @@ WEBIDL_FILES = [
- 'DataTransfer.webidl',
- 'DataTransferItem.webidl',
- 'DataTransferItemList.webidl',
- 'DecoderDoctorNotification.webidl',
- 'DedicatedWorkerGlobalScope.webidl',
- 'DelayNode.webidl',
- 'DesktopNotification.webidl',
- 'DeviceMotionEvent.webidl',
-- 'DeviceStorage.webidl',
- 'Directory.webidl',
- 'Document.webidl',
- 'DocumentFragment.webidl',
- 'DocumentTimeline.webidl',
- 'DocumentType.webidl',
- 'DOMCursor.webidl',
- 'DOMError.webidl',
- 'DOMException.webidl',
-diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp
---- a/layout/build/nsLayoutStatics.cpp
-+++ b/layout/build/nsLayoutStatics.cpp
-@@ -122,17 +122,16 @@ using namespace mozilla::system;
- #include "mozilla/dom/CustomElementRegistry.h"
- #include "mozilla/dom/time/DateCacheCleaner.h"
- #include "mozilla/EventDispatcher.h"
- #include "mozilla/IMEStateManager.h"
- #include "mozilla/dom/HTMLVideoElement.h"
- #include "TouchManager.h"
- #include "MediaDecoder.h"
- #include "MediaPrefs.h"
--#include "mozilla/dom/devicestorage/DeviceStorageStatics.h"
- #include "mozilla/ServoBindings.h"
- #include "mozilla/StaticPresData.h"
- #include "mozilla/dom/WebIDLGlobalNameHash.h"
-
- using namespace mozilla;
- using namespace mozilla::net;
- using namespace mozilla::dom;
- using namespace mozilla::dom::ipc;
-@@ -303,18 +302,16 @@ nsLayoutStatics::Initialize()
- nsStyleContext::Initialize();
- mozilla::LayerAnimationInfo::Initialize();
- #endif
-
- MediaDecoder::InitStatics();
-
- PromiseDebugging::Init();
-
-- mozilla::dom::devicestorage::DeviceStorageStatics::Initialize();
--
- mozilla::dom::WebCryptoThreadPool::Initialize();
-
- // NB: We initialize servo in nsAppRunner.cpp, because we need to do it after
- // creating the hidden DOM window to support some current stylo hacks. We
- // should move initialization back here once those go away.
-
- #ifndef MOZ_WIDGET_ANDROID
- // On Android, we instantiate it when constructing AndroidBridge.
-diff --git a/mobile/android/components/ContentPermissionPrompt.js b/mobile/android/components/ContentPermissionPrompt.js
---- a/mobile/android/components/ContentPermissionPrompt.js
-+++ b/mobile/android/components/ContentPermissionPrompt.js
-@@ -8,20 +8,16 @@ const Cu = Components.utils;
- const Cc = Components.classes;
-
- Cu.import("resource://gre/modules/XPCOMUtils.jsm");
- Cu.import("resource://gre/modules/Services.jsm");
-
- const kEntities = {
- "contacts": "contacts",
- "desktop-notification": "desktopNotification2",
-- "device-storage:music": "deviceStorageMusic",
-- "device-storage:pictures": "deviceStoragePictures",
-- "device-storage:sdcard": "deviceStorageSdcard",
-- "device-storage:videos": "deviceStorageVideos",
- "geolocation": "geolocation",
- "flyweb-publish-server": "flyWebPublishServer",
- };
-
- // For these types, prompt for permission if action is unknown.
- const PROMPT_FOR_UNKNOWN = [
- "desktop-notification",
- "geolocation",
-diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
---- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
-+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
-@@ -2198,54 +2198,16 @@ public class GeckoAppShell
- return null;
- }
-
- @WrapForJNI
- private static String connectionGetMimeType(URLConnection connection) {
- return connection.getContentType();
- }
-
-- /**
-- * Retrieve the absolute path of an external storage directory.
-- *
-- * @param type The type of directory to return
-- * @return Absolute path of the specified directory or null on failure
-- */
-- @WrapForJNI(calledFrom = "gecko")
-- private static String getExternalPublicDirectory(final String type) {
-- final String state = Environment.getExternalStorageState();
-- if (!Environment.MEDIA_MOUNTED.equals(state) &&
-- !Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
-- // External storage is not available.
-- return null;
-- }
--
-- if ("sdcard".equals(type)) {
-- // SD card has a separate path.
-- return Environment.getExternalStorageDirectory().getAbsolutePath();
-- }
--
-- final String systemType;
-- if ("downloads".equals(type)) {
-- systemType = Environment.DIRECTORY_DOWNLOADS;
-- } else if ("pictures".equals(type)) {
-- systemType = Environment.DIRECTORY_PICTURES;
-- } else if ("videos".equals(type)) {
-- systemType = Environment.DIRECTORY_MOVIES;
-- } else if ("music".equals(type)) {
-- systemType = Environment.DIRECTORY_MUSIC;
-- } else if ("apps".equals(type)) {
-- File appInternalStorageDirectory = getApplicationContext().getFilesDir();
-- return new File(appInternalStorageDirectory, "mozilla").getAbsolutePath();
-- } else {
-- return null;
-- }
-- return Environment.getExternalStoragePublicDirectory(systemType).getAbsolutePath();
-- }
--
- @WrapForJNI(calledFrom = "gecko")
- private static int getMaxTouchPoints() {
- PackageManager pm = getApplicationContext().getPackageManager();
- if (pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND)) {
- // at least, 5+ fingers.
- return 5;
- } else if (pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT)) {
- // at least, 2+ fingers.
-diff --git a/netwerk/test/mochitests/signed_web_packaged_app.sjs b/netwerk/test/mochitests/signed_web_packaged_app.sjs
---- a/netwerk/test/mochitests/signed_web_packaged_app.sjs
-+++ b/netwerk/test/mochitests/signed_web_packaged_app.sjs
-@@ -35,19 +35,16 @@ Content-Type: application/x-web-app-mani
- "src": "scripts/library.js",
- "integrity": "TN2ByXZiaBiBCvS4MeZ02UyNi44vED+KjdjLInUl4o8="
- }
- ],
- "moz-permissions": [
- {
- "systemXHR": {
- "description": "Needed to download stuff"
-- },
-- "devicestorage:pictures": {
-- "description": "Need to load pictures"
- }
- }
- ],
- "package-identifier": "09bc9714-7ab6-4320-9d20-fde4c237522c",
- "description": "A great app!"
- }\r
- --NKWXJUAFXB\r
- Content-Location: page2.html\r
-diff --git a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
---- a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
-+++ b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
-@@ -268,53 +268,16 @@ this.DownloadIntegration = {
- // Add the view used for detecting changes to downloads to be persisted.
- // We must do this after the list of persistent downloads has been loaded,
- // even if the load operation failed. We wait for a complete initialization
- // so other callers cannot modify the list without being detected. The
- // DownloadAutoSaveView is kept alive by the underlying DownloadList.
- yield new DownloadAutoSaveView(list, this._store).initialize();
- }),
-
--#ifdef MOZ_WIDGET_GONK
-- /**
-- * Finds the default download directory which can be either in the
-- * internal storage or on the sdcard.
-- *
-- * @return {Promise}
-- * @resolves The downloads directory string path.
-- */
-- _getDefaultDownloadDirectory: Task.async(function* () {
-- let directoryPath;
-- let win = Services.wm.getMostRecentWindow("navigator:browser");
-- let storages = win.navigator.getDeviceStorages("sdcard");
-- let preferredStorageName;
-- // Use the first one or the default storage.
-- storages.forEach((aStorage) => {
-- if (aStorage.default || !preferredStorageName) {
-- preferredStorageName = aStorage.storageName;
-- }
-- });
--
-- // Now get the path for this storage area.
-- if (preferredStorageName) {
-- let volume = volumeService.getVolumeByName(preferredStorageName);
-- if (volume && volume.state === Ci.nsIVolume.STATE_MOUNTED){
-- directoryPath = OS.Path.join(volume.mountPoint, "downloads");
-- yield OS.File.makeDir(directoryPath, { ignoreExisting: true });
-- }
-- }
-- if (directoryPath) {
-- return directoryPath;
-- } else {
-- throw new Components.Exception("No suitable storage for downloads.",
-- Cr.NS_ERROR_FILE_UNRECOGNIZED_PATH);
-- }
-- }),
--#endif
--
- /**
- * Determines if a Download object from the list of persistent downloads
- * should be saved into a file, so that it can be restored across sessions.
- *
- * This function allows filtering out downloads that the host application is
- * not interested in persisting across sessions, for example downloads that
- * finished successfully.
- *
-@@ -377,18 +340,16 @@ this.DownloadIntegration = {
- #ifdef MOZ_WIDGET_ANDROID
- // Android doesn't have a $HOME directory, and by default we only have
- // write access to /data/data/org.mozilla.{$APP} and /sdcard
- directoryPath = gEnvironment.get("DOWNLOADS_DIRECTORY");
- if (!directoryPath) {
- throw new Components.Exception("DOWNLOADS_DIRECTORY is not set.",
- Cr.NS_ERROR_FILE_UNRECOGNIZED_PATH);
- }
--#elifdef MOZ_WIDGET_GONK
-- directoryPath = this._getDefaultDownloadDirectory();
- #else
- // For Linux, use XDG download dir, with a fallback to Home/Downloads
- // if the XDG user dirs are disabled.
- try {
- directoryPath = this._getDirectory("DfltDwnld");
- } catch(e) {
- directoryPath = yield this._createDownloadsDirectory("Home");
- }
-@@ -405,19 +366,16 @@ this.DownloadIntegration = {
- /**
- * Returns the user downloads directory asynchronously.
- *
- * @return {Promise}
- * @resolves The downloads directory string path.
- */
- getPreferredDownloadsDirectory: Task.async(function* () {
- let directoryPath = null;
--#ifdef MOZ_WIDGET_GONK
-- directoryPath = this._getDefaultDownloadDirectory();
--#else
- let prefValue = 1;
-
- try {
- prefValue = Services.prefs.getIntPref("browser.download.folderList");
- } catch(e) {}
-
- switch(prefValue) {
- case 0: // Desktop
-@@ -435,17 +393,16 @@ this.DownloadIntegration = {
- } catch(ex) {
- // Either the preference isn't set or the directory cannot be created.
- directoryPath = yield this.getSystemDownloadsDirectory();
- }
- break;
- default:
- directoryPath = yield this.getSystemDownloadsDirectory();
- }
--#endif
- return directoryPath;
- }),
-
- /**
- * Returns the temporary downloads directory asynchronously.
- *
- * @return {Promise}
- * @resolves The downloads directory string path.
-diff --git a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
---- a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
-+++ b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp
-@@ -185,28 +185,16 @@ nsresult DownloadPlatform::DownloadDone(
- if (sourceCFURL) {
- ::CFRelease(sourceCFURL);
- }
- if (referrerCFURL) {
- ::CFRelease(referrerCFURL);
- }
- }
- #endif
-- if (mozilla::Preferences::GetBool("device.storage.enabled", true)) {
-- // Tell DeviceStorage that a new file may have been added.
-- nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
-- nsCOMPtr<nsISupportsString> pathString
-- = do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID);
-- if (obs && pathString) {
-- if (NS_SUCCEEDED(pathString->SetData(path))) {
-- (void)obs->NotifyObservers(pathString, "download-watcher-notify",
-- u"modified");
-- }
-- }
-- }
- }
-
- #endif
-
- return NS_OK;
- }
-
- nsresult DownloadPlatform::MapUrlToZone(const nsAString& aURL,
-diff --git a/toolkit/components/jsdownloads/test/unit/common_test_Download.js b/toolkit/components/jsdownloads/test/unit/common_test_Download.js
---- a/toolkit/components/jsdownloads/test/unit/common_test_Download.js
-+++ b/toolkit/components/jsdownloads/test/unit/common_test_Download.js
-@@ -2315,103 +2315,16 @@ add_task(function* test_toSerializable_s
- let download2 = yield Downloads.createDownload(reserialized);
-
- do_check_eq(download1.startTime.constructor.name, "Date");
- do_check_eq(download2.startTime.constructor.name, "Date");
- do_check_eq(download1.startTime.toJSON(), download2.startTime.toJSON());
- });
-
- /**
-- * This test will call the platform specific operations within
-- * DownloadPlatform::DownloadDone. While there is no test to verify the
-- * specific behaviours, this at least ensures that there is no error or crash.
-- */
--add_task(function* test_platform_integration()
--{
-- let downloadFiles = [];
-- let oldDeviceStorageEnabled = false;
-- try {
-- oldDeviceStorageEnabled = Services.prefs.getBoolPref("device.storage.enabled");
-- } catch (e) {
-- // This happens if the pref doesn't exist.
-- }
-- let downloadWatcherNotified = false;
-- let observer = {
-- observe: function(subject, topic, data) {
-- do_check_eq(topic, "download-watcher-notify");
-- do_check_eq(data, "modified");
-- downloadWatcherNotified = true;
-- }
-- }
-- Services.obs.addObserver(observer, "download-watcher-notify", false);
-- Services.prefs.setBoolPref("device.storage.enabled", true);
-- let downloadDoneCalled = false;
-- let monitorFn = base => ({
-- __proto__: base,
-- downloadDone() {
-- return super.downloadDone(...arguments).then(() => {
-- downloadDoneCalled = true;
-- });
-- },
-- });
-- Integration.downloads.register(monitorFn);
-- DownloadIntegration.allowDirectories = true;
-- function cleanup() {
-- for (let file of downloadFiles) {
-- file.remove(true);
-- }
-- Services.obs.removeObserver(observer, "download-watcher-notify");
-- Services.prefs.setBoolPref("device.storage.enabled", oldDeviceStorageEnabled);
-- Integration.downloads.unregister(monitorFn);
-- DownloadIntegration.allowDirectories = false;
-- }
--
-- for (let isPrivate of [false, true]) {
-- downloadDoneCalled = false;
--
-- // Some platform specific operations only operate on files outside the
-- // temporary directory or in the Downloads directory (such as setting
-- // the Windows searchable attribute, and the Mac Downloads icon bouncing),
-- // so use the system Downloads directory for the target file.
-- let targetFilePath = yield DownloadIntegration.getSystemDownloadsDirectory();
-- targetFilePath = OS.Path.join(targetFilePath,
-- "test" + (Math.floor(Math.random() * 1000000)));
-- let targetFile = new FileUtils.File(targetFilePath);
-- downloadFiles.push(targetFile);
--
-- let download;
-- if (gUseLegacySaver) {
-- download = yield promiseStartLegacyDownload(httpUrl("source.txt"),
-- { isPrivate, targetFile });
-- }
-- else {
-- download = yield Downloads.createDownload({
-- source: { url: httpUrl("source.txt"), isPrivate },
-- target: targetFile,
-- });
-- download.start().catch(() => {});
-- }
--
-- // Wait for the whenSucceeded promise to be resolved first.
-- // downloadDone should be called before the whenSucceeded promise is resolved.
-- yield download.whenSucceeded().then(function () {
-- do_check_true(downloadDoneCalled);
-- do_check_true(downloadWatcherNotified);
-- });
--
-- // Then, wait for the promise returned by "start" to be resolved.
-- yield promiseDownloadStopped(download);
--
-- yield promiseVerifyTarget(download.target, TEST_DATA_SHORT);
-- }
--
-- cleanup();
--});
--
--/**
- * Checks that downloads are added to browsing history when they start.
- */
- add_task(function* test_history()
- {
- mustInterruptResponses();
-
- // We will wait for the visit to be notified during the download.
- yield PlacesTestUtils.clearHistory();
-diff --git a/toolkit/content/devicestorage.properties b/toolkit/content/devicestorage.properties
-deleted file mode 100644
---- a/toolkit/content/devicestorage.properties
-+++ /dev/null
-@@ -1,4 +0,0 @@
--# Extensions we recognize for DeviceStorage storage areas
--pictures=*.jpe; *.jpg; *.jpeg; *.gif; *.png; *.bmp;
--music=*.mp3; *.oga; *.ogg; *.m4a; *.m4b; *.m4p; *.m4r; *.3gp; *.3gpp; *.mp4; *.m3u; *.pls; *.opus; *.amr; *.wav; *.lcka; *.mka; *.flac;
--videos=*.mp4; *.mpeg; *.mpg; *.ogv; *.ogx; *.webm; *.3gp; *.3gpp; *.3g2; *.ogg; *.m4v; *.ts; *.m2ts; *.avi; *.divx; *.mkv;
-diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
---- a/toolkit/content/jar.mn
-+++ b/toolkit/content/jar.mn
-@@ -40,17 +40,16 @@ toolkit.jar:
- content/global/browser-content.js
- * content/global/buildconfig.html
- content/global/contentAreaUtils.js
- #ifndef MOZ_ICECATMOBILE
- content/global/customizeToolbar.css
- content/global/customizeToolbar.js
- content/global/customizeToolbar.xul
- #endif
-- content/global/devicestorage.properties
- #ifndef MOZ_ICECATMOBILE
- content/global/editMenuOverlay.js
- * content/global/editMenuOverlay.xul
- content/global/finddialog.js
- * content/global/finddialog.xul
- content/global/findUtils.js
- #endif
- content/global/filepicker.properties
-@@ -113,9 +112,9 @@ toolkit.jar:
- content/global/bindings/videocontrols.css (widgets/videocontrols.css)
- * content/global/bindings/wizard.xml (widgets/wizard.xml)
- #ifdef XP_MACOSX
- content/global/macWindowMenu.js
- #endif
- content/global/svg/svgBindings.xml (/layout/svg/resources/content/svgBindings.xml)
- content/global/gmp-sources/eme-adobe.json (gmp-sources/eme-adobe.json)
- content/global/gmp-sources/openh264.json (gmp-sources/openh264.json)
-- content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json)
-\ No newline at end of file
-+ content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json)
-diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
---- a/uriloader/exthandler/nsExternalHelperAppService.cpp
-+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
-@@ -101,20 +101,16 @@
-
- #ifdef MOZ_WIDGET_ANDROID
- #include "IceCatMobileJNIWrappers.h"
- #endif
-
- #include "mozilla/Preferences.h"
- #include "mozilla/ipc/URIUtils.h"
-
--#ifdef MOZ_WIDGET_GONK
--#include "nsDeviceStorage.h"
--#endif
--
- using namespace mozilla;
- using namespace mozilla::ipc;
-
- // Download Folder location constants
- #define NS_PREF_DOWNLOAD_DIR "browser.download.dir"
- #define NS_PREF_DOWNLOAD_FOLDERLIST "browser.download.folderList"
- enum {
- NS_FOLDER_VALUE_DESKTOP = 0
-@@ -321,65 +317,16 @@ static nsresult GetDownloadDirectory(nsI
- }
-
- if (!dir) {
- // If not, we default to the OS X default download location.
- nsresult rv = NS_GetSpecialDirectory(NS_OSX_DEFAULT_DOWNLOAD_DIR,
- getter_AddRefs(dir));
- NS_ENSURE_SUCCESS(rv, rv);
- }
--#elif defined(MOZ_WIDGET_GONK)
-- // On Gonk, store the files on the sdcard in the downloads directory.
-- // We need to check with the volume manager which storage point is
-- // available.
--
-- // Pick the default storage in case multiple (internal and external) ones
-- // are available.
-- nsString storageName;
-- nsDOMDeviceStorage::GetDefaultStorageName(NS_LITERAL_STRING("sdcard"),
-- storageName);
--
-- RefPtr<DeviceStorageFile> dsf(
-- new DeviceStorageFile(NS_LITERAL_STRING("sdcard"),
-- storageName,
-- NS_LITERAL_STRING("downloads")));
-- NS_ENSURE_TRUE(dsf->mFile, NS_ERROR_FILE_ACCESS_DENIED);
--
-- // If we're not checking for availability we're done.
-- if (aSkipChecks) {
-- dsf->mFile.forget(_directory);
-- return NS_OK;
-- }
--
-- // Check device storage status before continuing.
-- nsString storageStatus;
-- dsf->GetStatus(storageStatus);
--
-- // If we get an "unavailable" status, it means the sd card is not present.
-- // We'll also catch internal errors by looking for an empty string and assume
-- // the SD card isn't present when this occurs.
-- if (storageStatus.EqualsLiteral("unavailable") ||
-- storageStatus.IsEmpty()) {
-- return NS_ERROR_FILE_NOT_FOUND;
-- }
--
-- // If we get a status other than 'available' here it means the card is busy
-- // because it's mounted via USB or it is being formatted.
-- if (!storageStatus.EqualsLiteral("available")) {
-- return NS_ERROR_FILE_ACCESS_DENIED;
-- }
--
-- bool alreadyThere;
-- nsresult rv = dsf->mFile->Exists(&alreadyThere);
-- NS_ENSURE_SUCCESS(rv, rv);
-- if (!alreadyThere) {
-- rv = dsf->mFile->Create(nsIFile::DIRECTORY_TYPE, 0770);
-- NS_ENSURE_SUCCESS(rv, rv);
-- }
-- dir = dsf->mFile;
- #elif defined(ANDROID)
- // We ask Java for the temporary download directory. The directory will be
- // different depending on whether we have the permission to write to the
- // public download directory or not.
- // In the case where we do not have the permission we will start the
- // download to the app cache directory and later move it to the final
- // destination after prompting for the permission.
- jni::String::LocalRef downloadDir;
-diff --git a/widget/android/AndroidBridge.cpp b/widget/android/AndroidBridge.cpp
---- a/widget/android/AndroidBridge.cpp
-+++ b/widget/android/AndroidBridge.cpp
-@@ -1119,42 +1119,8 @@ nsresult AndroidBridge::InputStreamRead(
-
- if (read <= 0) {
- *aRead = 0;
- return NS_OK;
- }
- *aRead = read;
- return NS_OK;
- }
--
--nsresult AndroidBridge::GetExternalPublicDirectory(const nsAString& aType, nsAString& aPath) {
-- if (XRE_IsContentProcess()) {
-- nsString key(aType);
-- nsAutoString path;
-- if (AndroidBridge::sStoragePaths.Get(key, &path)) {
-- aPath = path;
-- return NS_OK;
-- }
--
-- // Lazily get the value from the parent.
-- dom::ContentChild* child = dom::ContentChild::GetSingleton();
-- if (child) {
-- nsAutoString type(aType);
-- child->SendGetDeviceStorageLocation(type, &path);
-- if (!path.IsEmpty()) {
-- AndroidBridge::sStoragePaths.Put(key, path);
-- aPath = path;
-- return NS_OK;
-- }
-- }
--
-- ALOG_BRIDGE("AndroidBridge::GetExternalPublicDirectory no cache for %s",
-- NS_ConvertUTF16toUTF8(aType).get());
-- return NS_ERROR_NOT_AVAILABLE;
-- }
--
-- auto path = GeckoAppShell::GetExternalPublicDirectory(aType);
-- if (!path) {
-- return NS_ERROR_NOT_AVAILABLE;
-- }
-- aPath = path->ToString();
-- return NS_OK;
--}
-diff --git a/widget/android/AndroidBridge.h b/widget/android/AndroidBridge.h
---- a/widget/android/AndroidBridge.h
-+++ b/widget/android/AndroidBridge.h
-@@ -197,18 +197,16 @@ public:
- static jmethodID GetStaticMethodID(JNIEnv* env, jclass jClass, const char* methodName, const char* methodType);
-
- static jni::Object::LocalRef ChannelCreate(jni::Object::Param);
-
- static void InputStreamClose(jni::Object::Param obj);
- static uint32_t InputStreamAvailable(jni::Object::Param obj);
- static nsresult InputStreamRead(jni::Object::Param obj, char *aBuf, uint32_t aCount, uint32_t *aRead);
-
-- static nsresult GetExternalPublicDirectory(const nsAString& aType, nsAString& aPath);
--
- protected:
- static nsDataHashtable<nsStringHashKey, nsString> sStoragePaths;
-
- static AndroidBridge* sBridge;
-
- AndroidBridge();
- ~AndroidBridge();
-
-diff --git a/widget/android/GeneratedJNIWrappers.cpp b/widget/android/GeneratedJNIWrappers.cpp
---- a/widget/android/GeneratedJNIWrappers.cpp
-+++ b/widget/android/GeneratedJNIWrappers.cpp
-@@ -274,24 +274,16 @@ auto GeckoAppShell::GetExceptionStackTra
- constexpr char GeckoAppShell::GetExtensionFromMimeType_t::name[];
- constexpr char GeckoAppShell::GetExtensionFromMimeType_t::signature[];
-
- auto GeckoAppShell::GetExtensionFromMimeType(mozilla::jni::String::Param a0) -> mozilla::jni::String::LocalRef
- {
- return mozilla::jni::Method<GetExtensionFromMimeType_t>::Call(GeckoAppShell::Context(), nullptr, a0);
- }
-
--constexpr char GeckoAppShell::GetExternalPublicDirectory_t::name[];
--constexpr char GeckoAppShell::GetExternalPublicDirectory_t::signature[];
--
--auto GeckoAppShell::GetExternalPublicDirectory(mozilla::jni::String::Param a0) -> mozilla::jni::String::LocalRef
--{
-- return mozilla::jni::Method<GetExternalPublicDirectory_t>::Call(GeckoAppShell::Context(), nullptr, a0);
--}
--
- constexpr char GeckoAppShell::GetHWDecoderCapability_t::name[];
- constexpr char GeckoAppShell::GetHWDecoderCapability_t::signature[];
-
- auto GeckoAppShell::GetHWDecoderCapability() -> bool
- {
- return mozilla::jni::Method<GetHWDecoderCapability_t>::Call(GeckoAppShell::Context(), nullptr);
- }
-
-diff --git a/widget/android/GeneratedJNIWrappers.h b/widget/android/GeneratedJNIWrappers.h
---- a/widget/android/GeneratedJNIWrappers.h
-+++ b/widget/android/GeneratedJNIWrappers.h
-@@ -724,36 +724,16 @@ public:
- static const mozilla::jni::CallingThread callingThread =
- mozilla::jni::CallingThread::GECKO;
- static const mozilla::jni::DispatchTarget dispatchTarget =
- mozilla::jni::DispatchTarget::CURRENT;
- };
-
- static auto GetExtensionFromMimeType(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;
-
-- struct GetExternalPublicDirectory_t {
-- typedef GeckoAppShell Owner;
-- typedef mozilla::jni::String::LocalRef ReturnType;
-- typedef mozilla::jni::String::Param SetterType;
-- typedef mozilla::jni::Args<
-- mozilla::jni::String::Param> Args;
-- static constexpr char name[] = "getExternalPublicDirectory";
-- static constexpr char signature[] =
-- "(Ljava/lang/String;)Ljava/lang/String;";
-- static const bool isStatic = true;
-- static const mozilla::jni::ExceptionMode exceptionMode =
-- mozilla::jni::ExceptionMode::ABORT;
-- static const mozilla::jni::CallingThread callingThread =
-- mozilla::jni::CallingThread::GECKO;
-- static const mozilla::jni::DispatchTarget dispatchTarget =
-- mozilla::jni::DispatchTarget::CURRENT;
-- };
--
-- static auto GetExternalPublicDirectory(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;
--
- struct GetHWDecoderCapability_t {
- typedef GeckoAppShell Owner;
- typedef bool ReturnType;
- typedef bool SetterType;
- typedef mozilla::jni::Args<> Args;
- static constexpr char name[] = "getHWDecoderCapability";
- static constexpr char signature[] =
- "()Z";
-diff --git a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
---- a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
-+++ b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
-@@ -155,17 +155,16 @@
- #include "mozilla/dom/CSSValueBinding.h"
- #include "mozilla/dom/CSSValueListBinding.h"
- #include "mozilla/dom/CustomEventBinding.h"
- #ifdef MOZ_WEBRTC
- #include "mozilla/dom/DataChannelBinding.h"
- #endif
- #include "mozilla/dom/DataContainerEventBinding.h"
- #include "mozilla/dom/DataTransferBinding.h"
--#include "mozilla/dom/DeviceStorageBinding.h"
- #include "mozilla/dom/DOMCursorBinding.h"
- #include "mozilla/dom/DOMExceptionBinding.h"
- #include "mozilla/dom/DOMParserBinding.h"
- #include "mozilla/dom/DOMRequestBinding.h"
- #include "mozilla/dom/DocumentBinding.h"
- #include "mozilla/dom/DocumentFragmentBinding.h"
- #include "mozilla/dom/DocumentTypeBinding.h"
- #include "mozilla/dom/DocumentBinding.h"
-
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/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 k„yt”st„ ei tarvitse
+- maksaa mit„„n eik„ k„ytt”„ ole rajoitettu mitenk„„n. Lieroa saa
+- kopioida kelle tahansa ja miten tahansa SISŽLT™Ž MITENKŽŽN
+- MUUTTAMATTA.
+-
+- Todettakoon t„ss„ ett„ Lieron l„hdekoodi ei ole vapaassa (sen
+- enenp„„ kuin kaupallisessakaan) jakelussa. Joten jos ajattelit
+- ett„... niin j„t„ ajatukset sikseen.
+-
+ Liero on kahden pelattava aseellinen matosimulaatiopeli. Pelin
+ p„„m„„r„n„ on ep„ilem„tt„ se mit„ luuletkin. Liero sopii
+ erinomaisen hyvin aggressioiden purkuun ja kaverin rokitt„miseen
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/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/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/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/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/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/pcre.scm b/gnu/packages/pcre.scm
index 1946f5229c..58beab0a96 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -92,17 +92,17 @@ POSIX regular expression API.")
(sha256
(base32
"0vn5g0mkkp99mmzpissa06hpyj6pk9s4mlwbjqrjvw3ihy8rpiyz"))
- (patches (search-patches "pcre2-CVE-2017-7186.patch"))))
+ (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/perl.scm b/gnu/packages/perl.scm
index 3eb7815f28..812d7548cf 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -14,7 +14,7 @@
;;; 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.
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 a40568eacc..ab277ed973 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -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
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index c52f265cc1..92ebe6f3eb 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -45,6 +45,7 @@
(define-public libsndfile
(package
(name "libsndfile")
+ (replacement libsndfile/fixed)
(version "1.0.28")
(source (origin
(method url-fetch)
@@ -76,6 +77,18 @@ SPARC. Hopefully the design of the library will also make it easy to extend
for reading and writing new sound file formats.")
(license l:gpl2+)))
+(define libsndfile/fixed
+ (package
+ (inherit libsndfile)
+ (source
+ (origin
+ (inherit (package-source libsndfile))
+ (patches
+ (append
+ (origin-patches (package-source libsndfile))
+ (search-patches "libsndfile-CVE-2017-8361-8363-8365.patch"
+ "libsndfile-CVE-2017-8362.patch")))))))
+
(define-public libsamplerate
(package
(name "libsamplerate") ; aka. Secret Rabbit Code (SRC)
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 164c1f49bc..57a67de416 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,8 +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.
;;;
@@ -1108,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)))
@@ -1353,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.
@@ -1843,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
@@ -1879,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
@@ -2641,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
@@ -3375,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)
@@ -4217,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")
@@ -5509,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
@@ -5529,6 +5572,7 @@ features useful for text console applications.")
(replace 'check
(lambda _
(zero? (system* "./admin/runtests")))))))
+ (properties `((python2-variant . ,(delay python2-openid))))
(propagated-inputs
`(("python-defusedxml" ,python-defusedxml)))
(native-inputs
@@ -6105,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:
@@ -7446,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"))))
@@ -8850,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)
@@ -14011,3 +14055,570 @@ exception message with a traceback that points to the culprit.")
(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/regex.scm b/gnu/packages/regex.scm
index 492f1d9fb3..2b32aa3381 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -28,7 +28,7 @@
(define-public re2
(package
(name "re2")
- (version "2017-04-01")
+ (version "2017-05-01")
(source (origin
(method url-fetch)
(uri
@@ -38,10 +38,13 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "14i9pf9ap8h48j1584ifsq7c7a884cr1s4r7zvpcb9x1xr9232wh"))))
+ "19glvic4ipd122yhcavf7ifg7ms5k61398vq7gyb90wggf2w0z9k"))))
(build-system gnu-build-system)
(arguments
- `(#:test-target "test"
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:test-target "test"
;; There is no configure step, but the Makefile respects a prefix.
;; As ./configure does not know anything about the target CXX
;; we need to specify TARGET-g++ explicitly.
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 5bcd5980a1..623ef93a4e 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -1,5 +1,5 @@
;;; 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>
@@ -25,6 +25,7 @@
#: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)
@@ -252,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/screen.scm b/gnu/packages/screen.scm
index 1bdfcd0110..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.
;;;
@@ -155,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"))))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 5908f50d68..a6b5270199 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -92,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)
@@ -108,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)
@@ -136,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"
@@ -164,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.
@@ -173,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
@@ -205,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="
@@ -264,7 +282,7 @@ it a convenient format to store user input files.")
(define-public capnproto
(package
(name "capnproto")
- (version "0.5.3.1")
+ (version "0.6.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -272,7 +290,7 @@ it a convenient format to store user input files.")
version ".tar.gz"))
(sha256
(base32
- "06wi4fcxx58nc7pr2xga20hn11psk56b0yhna5bx2pw90mlcbd84"))))
+ "0gpp1cxsb9nfd7qkjjykzknx03y0z0n4bq5q0fmxci7w38ci22g5"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 012f272ca4..4e684e8c81 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,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages libedit)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
@@ -116,6 +117,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 +135,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 +151,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")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 135083ad22..1fd395049a 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -135,8 +135,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)
@@ -213,7 +213,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
@@ -225,7 +225,16 @@ Additionally, various channel-specific options can be negotiated.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0pkiq3fm15pr4w1r420rrwwfmi4jz492r6l6vzjk6v73xlyfyfl3"))))
+ "0r261i8kc3avbmbwgyzak2vnqwssjlgz37g2y2fwm80w9bmn2m7j"))
+ (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)
(arguments
'(#:phases (modify-phases %standard-phases
@@ -256,7 +265,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")
@@ -267,25 +276,14 @@ libssh library.")
(license license:gpl3+)))
(define-public guile2.2-ssh
- ;; This is a snapshot of a unofficial copy of Guile-SSH, which hopefully
- ;; reflects the upcoming release well enough.
- (let ((commit "926a0843626f89e3db02d01a6b01cc1f0d9cefcf")
- (revision "0"))
- (package
- (inherit guile-ssh)
- (name "guile2.2-ssh")
- (version (string-append "0.10.2." revision "." (string-take commit 7)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://notabug.org/civodul/guile-ssh/")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0hf28macq8d1w05g0xy2lw1s5vzmcrixh7m43x7qvvdd31c998ip"))))
- (inputs `(("guile" ,guile-2.2)
- ,@(alist-delete "guile" (package-inputs guile-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
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index a87e665d2b..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
@@ -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/tcl.scm b/gnu/packages/tcl.scm
index adad55e2da..de888891c4 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -220,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
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 979278a53b..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
@@ -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 920868b52d..98df48119a 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -3,6 +3,7 @@
;;; 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.
;;;
@@ -27,6 +28,7 @@
#: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)
@@ -189,3 +191,39 @@ 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/tls.scm b/gnu/packages/tls.scm
index 50e9de4806..1516fb8527 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.3")
+ (version "2.5.4")
(source
(origin
(method url-fetch)
@@ -440,7 +440,7 @@ required structures.")
version ".tar.gz"))
(sha256
(base32
- "0c4awq45cl757fv7f7f75i5i0ibc6v7ns13n7xvfak7chv2lrqql"))))
+ "1ykf6dqlbafafhbdfmcj19pjj1z6wmsq0rmyqga1i0xv5x95nyhh"))))
(build-system gnu-build-system)
(arguments
;; Do as if 'getentropy' was missing since older Linux kernels lack it
@@ -458,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
@@ -474,13 +474,13 @@ security, and applying best practice development processes.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
- (version "0.13.0")
+ (version "0.14.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
- "05cqadwzgfcianw3v0qxwja65dxnzw429f7dk8w0mnh21pib72bl"))))
+ "0hrmh28rrc0fsiw6nqfwbkwb1s4nkl54x50c0g0xlnp86752nzff"))))
(build-system python-build-system)
(arguments
@@ -540,7 +540,7 @@ security, and applying best practice development processes.")
(uri (pypi-uri name version))
(sha256
(base32
- "1wq0khcf4ixda71cgfd9rkqqzx6j8hp8ha0cssvjzjnsgrsdffpn"))))
+ "0hbp3njss01a0d3brvcfzja0w0j9plwrv6l70jsfvnhy3rrd7bcq"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2
@@ -634,7 +634,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
@@ -663,7 +663,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
@@ -699,7 +699,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
@@ -724,7 +724,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/upnp.scm b/gnu/packages/upnp.scm
index a3a6e848fb..645e9a6573 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -34,6 +34,7 @@
(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 "0n11m2wq812zms5b21h8ihw1kbyaihj9nqjiida0hskf4dmw4m13"))))
(build-system gnu-build-system)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index e0770dc589..cd684c04e7 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -13,6 +13,7 @@
;;; 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.
;;;
@@ -116,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)
@@ -136,7 +137,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
- "0n4mgw5mbrr1hm0y7xgwixf9p6gy61m6qm67ldagpxxhwq2dmlby"))))))
+ "1jcp5bjam0cqzc41bvd3qwzv2f35zdajr8icxb89q29b5v3gj544"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@@ -314,14 +315,14 @@ everything from small to very large projects with speed and efficiency.")
(define-public git@2.10
(package
(inherit git)
- (version "2.10.2")
+ (version "2.10.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0wc64dzcxrzgi6kwcljz6y3cwm3ajdgf6aws7g58azbhvl1jk04l"))))))
+ "02mb7yi49algsya3hnkcxdslwb6p1bi7c732z1g8kzq4hs838m7z"))))))
(define-public libgit2
(package
@@ -628,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"))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index e3f9f3672d..dde4041449 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -17,6 +17,7 @@
;;; 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.
;;;
@@ -75,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)
@@ -989,7 +991,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
- (version "2017.04.28")
+ (version "2017.05.07")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@@ -997,7 +999,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
- "0d3mgf8qxb07b7bjf79ppaxhcl4f47q0zjpshp6y2q0lalfskh3j"))))
+ "1q3b9xkbk1lmy1wxm1jcnmaj70sdksqbc8zsqxz6b6z4nmv8qc25"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@@ -1193,6 +1195,33 @@ 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")
@@ -1605,7 +1634,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"
@@ -1613,7 +1642,7 @@ 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
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 44ae52202c..697c7dedc7 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -512,10 +512,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 +596,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
index 3ff69611bf..a10b1367ef 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -1,5 +1,9 @@
;;; 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.
;;;
@@ -21,15 +25,24 @@
#: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 gnu)
+ #:use-module (guix build-system python))
(define-public dillo
(package
@@ -61,3 +74,172 @@
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 487366b4a5..efaa1b5742 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -80,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)
@@ -301,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
@@ -830,7 +829,10 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.")
;;("gss" ,gss)
("zlib" ,zlib)))
(arguments
- `(#:phases
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases
;; TODO: Add scons-build-system and use it here.
(modify-phases %standard-phases
(delete 'configure)
@@ -979,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
@@ -1000,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
@@ -1026,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
@@ -1061,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
@@ -1096,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
@@ -1120,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
@@ -1162,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
@@ -1192,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
@@ -1237,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
@@ -1262,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
@@ -1296,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
@@ -1325,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
@@ -1349,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
@@ -1377,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
@@ -1408,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
@@ -1437,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
@@ -1467,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
@@ -1492,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
@@ -1522,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
@@ -1587,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
@@ -1618,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
@@ -1644,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
@@ -1669,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
@@ -1696,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
@@ -1729,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
@@ -1752,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
@@ -1779,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
@@ -1807,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
@@ -1830,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
@@ -1875,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
@@ -1896,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
@@ -1911,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
@@ -1949,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
@@ -1966,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(),
@@ -2028,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
@@ -2050,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
@@ -2075,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
@@ -2121,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
@@ -2147,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
@@ -2165,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
@@ -2187,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
@@ -2218,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
@@ -2243,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
@@ -2287,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,
@@ -2311,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
@@ -2332,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
@@ -2358,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.")
@@ -2379,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
@@ -2412,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
@@ -2431,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
@@ -2453,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
@@ -2479,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
@@ -2505,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
@@ -2520,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
@@ -2546,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
@@ -2573,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
@@ -2601,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
@@ -2625,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
@@ -2657,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
@@ -2680,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
@@ -2723,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
@@ -2741,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
@@ -2775,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
@@ -2795,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
@@ -2833,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
@@ -2858,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
@@ -2884,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
@@ -2907,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
@@ -2930,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
@@ -2952,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
@@ -2973,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
@@ -3038,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
@@ -3065,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
@@ -3079,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
@@ -3110,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
@@ -3135,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
@@ -3156,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
@@ -3180,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
@@ -3203,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
@@ -3233,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
@@ -3261,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
@@ -3278,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
@@ -4493,63 +4495,60 @@ 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)))
- (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"))
+ ("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)))
- (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+)))
+(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))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index de431d0a02..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.1")
+ (version "2.16.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.webkitgtk.org/releases/"
name "-" version ".tar.xz"))
(sha256
(base32
- "0i99kmv4dvb9m2sd36kig4j6d59pxmq47ih3nxayd31j68r3i4pb"))))
+ "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/xml.scm b/gnu/packages/xml.scm
index 0ceae029bc..79210d44d0 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -14,7 +14,7 @@
;;; 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 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -189,7 +189,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
@@ -221,7 +221,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
@@ -249,7 +249,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
@@ -269,7 +269,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
@@ -303,7 +303,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
@@ -320,7 +320,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
@@ -351,7 +351,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
@@ -373,7 +373,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
@@ -396,7 +396,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
@@ -417,7 +417,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
@@ -452,7 +452,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
@@ -486,7 +486,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
@@ -508,7 +508,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
@@ -526,7 +526,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
@@ -549,7 +549,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:
@@ -575,7 +575,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
@@ -607,7 +607,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
@@ -632,7 +632,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
@@ -655,7 +655,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
@@ -683,7 +683,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
@@ -709,7 +709,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
@@ -748,7 +748,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
@@ -772,7 +772,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
@@ -895,18 +895,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
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 9985524394..f243222fb3 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -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
@@ -5720,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
@@ -5748,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 2cf30d6e32..8feb4fea21 100644
--- a/gnu/packages/zip.scm
+++ b/gnu/packages/zip.scm
@@ -48,6 +48,9 @@
(list "-f" "unix/Makefile"
(string-append "prefix=" out)
(string-append "MANDIR=" out "/share/man/man1")))
+ #:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
#:phases
(modify-phases %standard-phases
(replace 'build
@@ -171,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 b1b53fd18b..5c314748da 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -183,7 +183,7 @@ TYPE does not have a default value, an error is raised."
(condition
(&missing-value-service-error (type type) (location location))
(&message
- (message (format #f (_ "~a: no value specified \
+ (message (format #f (G_ "~a: no value specified \
for service of type '~a'")
(location->string location)
(service-type-name type)))))))
@@ -624,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
@@ -635,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))))
@@ -686,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
@@ -696,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/base.scm b/gnu/services/base.scm
index 67972bf614..c244174fd3 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1149,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)
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/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/system.scm b/gnu/system.scm
index 44190bdfc6..f9a0da9a75 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -48,7 +48,6 @@
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (gnu services base)
- #:use-module (gnu system grub)
#:use-module (gnu system shadow)
#:use-module (gnu system nss)
#:use-module (gnu system locale)
@@ -73,7 +72,7 @@
operating-system-hosts-file
operating-system-kernel
operating-system-kernel-file
- operating-system-user-kernel-arguments
+ operating-system-kernel-arguments
operating-system-initrd
operating-system-users
operating-system-groups
@@ -110,6 +109,7 @@
boot-parameters-kernel-arguments
boot-parameters-initrd
read-boot-parameters
+ read-boot-parameters-file
local-host-aliases
%setuid-programs
@@ -122,6 +122,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
@@ -182,6 +190,107 @@
(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)
+ (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 (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.
@@ -522,7 +631,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))
@@ -538,7 +647,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)
@@ -680,7 +789,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)
@@ -735,31 +844,15 @@ 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->boot-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 (fs->boot-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-user-kernel-arguments os)))
- (initrd initrd)))))
- (grub-configuration-file (operating-system-bootloader os) entries
- #:old-entries old-entries)))
+ (entry (operating-system-boot-parameters os system root-device)))
+ ((module-ref (resolve-interface '(gnu system grub))
+ 'grub-configuration-file)
+ (operating-system-bootloader os)
+ (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
@@ -769,101 +862,51 @@ device in a <menu-entry>."
((label) (file-system-device fs))
(else #f)))
-(define (operating-system-boot-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->boot-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-user-kernel-arguments os))
- (initrd #$initrd)
- (store
- (device #$(fs->boot-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))
+ (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)
+ (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))
+ (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/grub.scm b/gnu/system/grub.scm
index cde4b9e23a..58096429fe 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -144,15 +144,15 @@ denoting a file name."
(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)))))
@@ -267,6 +267,16 @@ 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))
@@ -276,7 +286,7 @@ code."
<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
+ (append (map boot-parameters->menu-entry entries)
(grub-configuration-menu-entries config)))
(define entry->gexp
@@ -323,7 +333,7 @@ set timeout=~a~%"
#$@(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 "}~%"))
#~()))))
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 4f915c4f95..2c8b954c80 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -490,11 +490,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-user-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..810711ab91 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -27,7 +27,7 @@
#: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 +263,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 6ce5ab3de1..37aab8ef67 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)
@@ -296,28 +297,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/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/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/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/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/download.scm b/guix/build/download.scm
index 67a8952599..ce4708a873 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -396,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/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/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/derivations.scm b/guix/derivations.scm
index d5e0f453e2..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
@@ -614,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
@@ -674,43 +659,6 @@ derivation at FILE."
;; character.
(sha256 (derivation->bytevector 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))))
-
(define* (derivation store name builder args
#:key
(system (%current-system)) (env-vars '())
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/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 be34a75c8d..a94051655c 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.
;;;
@@ -374,7 +375,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)))))
@@ -415,6 +416,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))
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..a95f89a7bf 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,7 +39,7 @@
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
@@ -61,6 +63,7 @@
ncsa
nmap
openldap2.8 openssl
+ perl-license
psfl public-domain
qpl
repoze
@@ -75,7 +78,8 @@
zpl2.1
zlib
fsf-free
- wtfpl2))
+ wtfpl2
+ fsdg-compatible))
(define-record-type <license>
(license name uri comment)
@@ -191,7 +195,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"))
@@ -395,6 +409,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 +508,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/monads.scm b/guix/monads.scm
index 317f85d079..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)
@@ -265,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))
@@ -277,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 '()))
@@ -315,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:
@@ -327,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 44f2c32fb7..8ead950739 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1,6 +1,6 @@
;;; 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>
;;;
@@ -105,6 +105,7 @@
package-cross-derivation
package-output
package-grafts
+ package/inherit
transitive-input-references
@@ -789,6 +790,16 @@ package and returns its new name after rewrite."
(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.
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 6bb1f72eb9..558e8e7719 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -121,7 +121,7 @@ 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*
@@ -203,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)
@@ -260,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")))
@@ -291,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)
@@ -309,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)
@@ -445,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)))))))
@@ -471,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))
@@ -534,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
@@ -587,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
@@ -641,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))
@@ -675,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 bc225044fb..45f7cbbad5 100644
--- a/guix/scripts/copy.scm
+++ b/guix/scripts/copy.scm
@@ -56,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 ;
@@ -109,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))
@@ -165,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 5a6abd00fb..af69e2b730 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -72,7 +72,7 @@ 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)
@@ -132,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))
@@ -501,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 9e3e2ad95a..f2720f669e 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,7 +230,7 @@ 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 (package-input-intersection inputs-to-check input-names)
@@ -274,7 +274,7 @@ of a package, and INPUT-NAMES, a list of package specifications such as
(for-each (lambda (input)
(emit-warning
package
- (format #f (_ "'~a' should probably be a native input")
+ (format #f (G_ "'~a' should probably be a native input")
input)
'inputs-to-check))
(package-input-intersection inputs input-names))))
@@ -290,7 +290,7 @@ of a package, and INPUT-NAMES, a list of package specifications such as
(emit-warning
package
(format #f
- (_ "'~a' should probably not be an input at all")
+ (G_ "'~a' should probably not be an input at all")
input)))
(package-input-intersection (package-direct-inputs package)
input-names))))
@@ -307,7 +307,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)
@@ -315,7 +315,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
@@ -327,27 +327,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)
@@ -357,7 +357,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)))
@@ -376,7 +376,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)
@@ -476,7 +476,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))
@@ -485,7 +485,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))
@@ -497,14 +497,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)
@@ -512,7 +512,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
@@ -521,7 +521,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.
@@ -542,10 +542,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)))))
@@ -565,7 +565,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)
@@ -603,7 +603,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)))
@@ -616,7 +616,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)))))))
@@ -658,7 +658,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)))
@@ -681,7 +681,7 @@ descriptions maintained upstream."
(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)
@@ -697,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)))
@@ -715,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.
@@ -733,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)
@@ -743,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)
@@ -760,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))))))
@@ -817,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)
", ")))))))))
@@ -832,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)
@@ -841,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)
@@ -851,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
@@ -862,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))))
@@ -1001,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))
@@ -1029,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)
@@ -1058,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 acdfb81698..74c0c5484c 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -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)
@@ -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))
@@ -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)))
- (x (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 165e4ccf2a..1595be1f52 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -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
@@ -307,7 +307,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)
@@ -317,30 +317,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 (_ "
+ (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))
@@ -379,7 +379,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..1f3f49fc6f 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)
@@ -697,7 +697,7 @@ processed, #f otherwise."
(list-generation display-profile-content (car numbers))
(diff-profiles profile numbers)))))
(else
- (leave (_ "invalid syntax: ~a~%")
+ (leave (G_ "invalid syntax: ~a~%")
pattern)))
#t)
@@ -788,7 +788,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 +804,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 +859,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 +879,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 3faff061a7..8da75cb825 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -64,35 +64,35 @@
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 (_ "
+ (display (G_ "
--workers=N use N workers to bake items"))
- (display (_ "
+ (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))
@@ -103,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.
@@ -148,7 +148,7 @@ if ITEM is already compressed."
(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)
@@ -161,7 +161,7 @@ if ITEM is already compressed."
(compression 'gzip level)
result)
(begin
- (warning (_ "zlib support is missing; \
+ (warning (G_ "zlib support is missing; \
compression disabled~%"))
result))))))
(option '(#\c "cache") #t #f
@@ -175,7 +175,7 @@ compression disabled~%"))
(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
@@ -240,10 +240,12 @@ 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 (actual-compression store-path compression))
(url (encode-and-join-uri-path
@@ -257,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))
" "))
@@ -268,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)
@@ -293,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)
@@ -427,7 +439,9 @@ requested using POOL."
(file-expiration-time ttl)
#:delete-entry delete-entry
#:cleanup-period ttl))))
- (not-found request))
+ (not-found request
+ #:phrase "We're baking it"
+ #:ttl 300)) ;should be available within 5m
(else
(not-found request)))))
@@ -448,7 +462,8 @@ requested using POOL."
(call-with-gzip-output-port (open-output-file (string-append nar ".tmp"))
(lambda (port)
(write-file item port))
- #:level (compression-level compression))
+ #: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
@@ -465,7 +480,8 @@ requested using POOL."
(display (narinfo-string store item
(%private-key)
#:nar-path nar-path
- #:compression compression)
+ #:compression compression
+ #:file-size (stat:size (stat nar)))
port))))))
;; XXX: Declare the 'Guix-Compression' HTTP header, which is in fact for
@@ -787,7 +803,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)))))
@@ -799,9 +815,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))
@@ -828,12 +844,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))
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 f612dae700..52f7cdd972 100644
--- a/guix/scripts/size.scm
+++ b/guix/scripts/size.scm
@@ -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)
@@ -94,7 +94,7 @@ if ITEM is not in the store."
((($ <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))
@@ -208,7 +208,7 @@ the name of a PNG file."
;; 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))
@@ -217,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))
@@ -278,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 748c334e3c..73d4f6e2eb 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -111,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)))
@@ -186,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))))
@@ -199,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
@@ -219,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>
@@ -254,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
@@ -309,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))))
@@ -321,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
@@ -360,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)
@@ -404,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))))
@@ -448,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)))
@@ -472,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)
@@ -596,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)))))
@@ -651,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)
@@ -661,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)))))
@@ -722,7 +722,7 @@ was found."
(match (read port)
(('narinfo ('version 2) ('cache-uri uri)
('date date) ('ttl ttl) ('value #f))
- (+ date %narinfo-negative-ttl))
+ (+ date ttl))
(('narinfo ('version 2) ('cache-uri uri)
('date date) ('ttl ttl) ('value value))
(+ date ttl))
@@ -781,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)))))))
@@ -797,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))
@@ -875,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)
@@ -932,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)
@@ -980,6 +980,10 @@ 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)
@@ -1001,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")
@@ -1033,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 8fabdb5c14..9c09767508 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -130,7 +130,7 @@ BODY..., and restore them."
#: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))))
@@ -163,7 +163,7 @@ TARGET, and register them."
(munless (false-if-exception (install-grub grub.cfg device target))
(delete-file temp-gc-root)
- (leave (_ "failed to install GRUB on device '~a'~%") device))
+ (leave (G_ "failed to install GRUB on device '~a'~%") device))
;; Register GRUB.CFG as a GC root so that its dependencies (background
;; image, font, etc.) are not reclaimed.
@@ -181,7 +181,7 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
(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.
@@ -195,7 +195,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))
@@ -236,21 +236,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))
@@ -258,10 +258,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)))
@@ -278,7 +278,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)
@@ -298,7 +298,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)
@@ -306,7 +306,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
@@ -330,7 +330,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.
@@ -365,14 +365,17 @@ it atomically, and then run OS's activation script."
(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->boot-parameters system number time)
(unless-file-not-found
- (let* ((file (string-append system "/parameters"))
- (params (call-with-input-file file
- read-boot-parameters)))
- params)))
+ (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)
@@ -381,45 +384,6 @@ NUMBERS, which is a list of generation numbers."
systems)))
(filter-map system->boot-parameters systems numbers times)))
-(define* (profile-grub-entries #:optional (profile %system-profile)
- (numbers (generation-numbers profile)))
- "Return a list of 'menu-entry' for the generations of PROFILE specified by
-NUMBERS, which is a list of generation numbers."
- (define (system->grub-entry 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* ((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)))
-
;;;
;;; Roll-back.
@@ -441,24 +405,23 @@ generation as its default entry. STORE is an open connection to the store."
(begin
(reinstall-grub 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 (reinstall-grub store number)
"Re-install grub 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)))
+ (read-boot-parameters-file generation)))
(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)))
;; 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))
+ (old-entries (profile-boot-parameters %system-profile old-generations))
(grub.cfg (run-with-store store
(grub-configuration-file grub-config
entries
@@ -475,7 +438,7 @@ open connection to the store."
(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'~%")
+ (leave (G_ "failed to re-install GRUB configuration file: '~a'~%")
grub.cfg-path))
(rename-file temp-gc-root gc-root))))
@@ -533,8 +496,7 @@ 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))
(root (boot-parameters-root-device params))
(root-device (if (bytevector? root)
@@ -542,12 +504,12 @@ list of services."
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_ " 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
@@ -565,7 +527,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))))
;;;
@@ -604,9 +566,9 @@ 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* (perform-action action os
#:key bootloader? dry-run? derivations-only?
@@ -643,7 +605,7 @@ output when building a system derivation, such as a disk image."
(operating-system-bootcfg os
(if (eq? 'init action)
'()
- (profile-grub-entries)))))
+ (profile-boot-parameters)))))
;; 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
@@ -681,7 +643,7 @@ output when building a system derivation, such as a disk image."
device "/"))))
((init)
(newline)
- (format #t (_ "initializing operating system under '~a'...~%")
+ (format #t (G_ "initializing operating system under '~a'...~%")
target)
(install sys (canonicalize-path target)
#:grub? bootloader?
@@ -725,61 +687,61 @@ output when building a system derivation, such as a disk image."
;;;
(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 (_ "
+ (display (G_ "
--no-bootloader for 'init', do not install a bootloader"))
- (display (_ "
+ (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 (_ "
+ (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))
@@ -862,7 +824,7 @@ resulting from command-line parsing."
(os (if file
(load* file %user-module
#:on-error (assoc-ref opts 'on-error))
- (leave (_ "no configuration file specified~%"))))
+ (leave (G_ "no configuration file specified~%"))))
(dry? (assoc-ref opts 'dry-run?))
(bootloader? (assoc-ref opts 'install-bootloader?))
@@ -885,6 +847,8 @@ resulting from command-line parsing."
((shepherd-graph)
(export-shepherd-graph os (current-output-port)))
(else
+ (warn-about-old-distro #:suggested-command
+ "guix system reconfigure")
(perform-action action os
#:dry-run? dry?
#:derivations-only? (assoc-ref opts
@@ -912,21 +876,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))))
@@ -945,7 +909,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.
@@ -960,14 +924,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/ssh.scm b/guix/ssh.scm
index 59fd002dc7..4fb145230d 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -18,7 +18,7 @@
(define-module (guix ssh)
#:use-module (guix store)
- #:use-module ((guix ui) #:select (_ N_))
+ #:use-module ((guix ui) #:select (G_ N_))
#:use-module (ssh session)
#:use-module (ssh auth)
#:use-module (ssh key)
@@ -80,13 +80,13 @@ Throw an error on failure."
(disconnect! session)
(raise (condition
(&message
- (message (format #f (_ "SSH authentication failed for '~a': ~a~%")
+ (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 (_ "SSH connection to '~a' failed: ~a~%")
+ (message (format #f (G_ "SSH connection to '~a' failed: ~a~%")
host (get-error session))))))))))
(define* (remote-daemon-channel session
@@ -269,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 683f071a83..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)
@@ -133,6 +134,9 @@
interned-file
%store-prefix
+ store-path
+ output-path
+ fixed-output-path
store-path?
direct-store-path?
derivation-path?
@@ -378,6 +382,11 @@
(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))))
@@ -398,6 +407,10 @@
(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.
@@ -577,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
@@ -1237,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
@@ -1343,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
diff --git a/guix/ui.scm b/guix/ui.scm
index ae59718747..edd04daa81 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -55,7 +55,7 @@
#:use-module (texinfo)
#:use-module (texinfo plain-text)
#:use-module (texinfo string-utils)
- #:export (_
+ #:export (G_
N_
P_
report-error
@@ -117,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)
@@ -140,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*)
@@ -238,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)))
@@ -254,19 +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)
(if (message-condition? obj)
- (report-error (_ "~a~%")
+ (report-error (G_ "~a~%")
(gettext (condition-message obj)
%gettext-domain))
- (report-error (_ "exception thrown: ~s~%") obj)))
+ (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 ↑
@@ -275,20 +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)
(if (message-condition? obj)
- (warning (_ "failed to load '~a': ~a~%")
+ (warning (G_ "failed to load '~a': ~a~%")
file
(gettext (condition-message obj) %gettext-domain))
- (warning (_ "failed to load '~a': exception thrown: ~s~%")
+ (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)
@@ -297,7 +297,7 @@ 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)
@@ -320,9 +320,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.
@@ -334,11 +334,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))
@@ -383,13 +383,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
@@ -406,7 +406,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
@@ -429,7 +429,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."
@@ -446,62 +446,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 (_ "~s: invalid G-expression input~%")
+ (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 ...)
@@ -536,22 +536,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)
(if (message-condition? obj)
- (report-error (_ "~a~%")
+ (report-error (G_ "~a~%")
(gettext (condition-message obj)
%gettext-domain))
- (report-error (_ "exception thrown: ~s~%") obj)))
+ (report-error (G_ "exception thrown: ~s~%") obj)))
((error args ...)
(apply display-error #f (current-error-port) args))
(what? #f))
@@ -563,7 +563,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)
@@ -771,13 +771,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")
@@ -785,12 +785,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))
@@ -921,7 +922,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.
@@ -935,7 +936,7 @@ WIDTH columns."
((? license? license)
(license-name license))
(x
- (_ "unknown"))))
+ (G_ "unknown"))))
(format port "synopsis: ~a~%"
(string-map (match-lambda
(#\newline #\space)
@@ -1008,6 +1009,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)
@@ -1093,7 +1095,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))
@@ -1103,7 +1105,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)
@@ -1146,7 +1148,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."
@@ -1162,7 +1164,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))
@@ -1193,7 +1195,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)
@@ -1221,10 +1223,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))
@@ -1244,7 +1246,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
@@ -1263,7 +1265,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))
@@ -1271,7 +1273,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/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/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/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/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/guix-build.sh b/tests/guix-build.sh
index 9494e7371f..880a582777 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -185,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/publish.scm b/tests/publish.scm
index 233b71ce93..268c324551 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -122,13 +122,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 +154,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
@@ -323,6 +327,7 @@ References: ~%"
("Compression" . "gzip"))
200 ;nar/gzip/…
#t ;Content-Length
+ #t ;FileSize
200) ;nar/…
(call-with-temporary-directory
(lambda (cache)
@@ -350,11 +355,19 @@ References: ~%"
(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)))))
+ (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
@@ -362,10 +375,13 @@ References: ~%"
(("StorePath" . _) #t)
(("URL" . _) #t)
(_ #f)))
- (recutils->alist body))
+ 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)))))))))
(test-end "publish")
diff --git a/tests/store.scm b/tests/store.scm
index 3eb8b7be5a..45aeb329b0 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -758,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"))