From e84d9dcd5b80fbacc2853bde53cf0e2da572beb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= Date: Thu, 23 Apr 2020 14:21:00 +0200 Subject: [PATCH 01/39] git-version: Raise a condition instead of an error. * guix/git-download.scm (git-version): Replace ERROR with RAISE and CONDITION. This is a follow-up to commit bbf6bc1acc9bbdebf7ee7b68c0fa091733a5f6e1. --- guix/git-download.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/git-download.scm b/guix/git-download.scm index ef0bb2e281..a1c1adf760 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -179,7 +179,9 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." ;; can happen, for example, when the user swapped the revision and commit ;; arguments by mistake. (when (< (string-length commit) 7) - (error "git-version: commit ID unexpectedly short")) + (raise + (condition + (&message (message "git-version: commit ID unexpectedly short"))))) (string-append version "-" revision "." (string-take commit 7))) (define (git-file-name name version) From cf4a56d748c5768c39c792ab4c87cd529ebec1a8 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 23 Apr 2020 15:03:59 +0200 Subject: [PATCH 02/39] gnu: Add texlive-marginnote. * gnu/packages/tex.scm (texlive-marginnote): New variable. --- gnu/packages/tex.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index cd461314b5..3e67c75c6e 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016, 2018, 2019 Efraim Flashner ;;; Copyright © 2016 Federico Beffa ;;; Copyright © 2016 Thomas Danckaert -;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2017 Leo Famulari ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice @@ -7169,6 +7169,32 @@ a different path and manipulating characters. It includes the functionality of the old package @code{pst-char}.") (license license:lppl)))) +(define-public texlive-marginnote + (let ((template (simple-texlive-package + "texlive-marginnote" + (list "/source/latex/marginnote/marginnote.dtx") + (base32 + "1vj1k8xm11gjdfj60as42d8lsv3dbzrm5dlgqcfk89d9dzm3k39j")))) + (package + (inherit template) + (home-page "http://www.ctan.org/pkg/marginnote") + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/marginnote") + ((#:build-targets _ '()) + ''("marginnote.dtx")) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'chdir + (lambda _ (chdir "source/latex/marginnote") #t)))))) + (synopsis "Notes in the margin") + (description "This package provides the command @code{\\marginnote} that +may be used instead of @code{\\marginpar} at almost every place where +@code{\\marginpar} cannot be used, e.g., inside floats, footnotes, or in +frames made with the @code{framed} package.") + (license license:lppl1.3c+)))) + (define-public texlive-iftex (let ((template (simple-texlive-package "texlive-iftex" From f0779922ff260df2404c90504986aa59553154fb Mon Sep 17 00:00:00 2001 From: zimoun Date: Thu, 23 Apr 2020 16:09:00 +0200 Subject: [PATCH 03/39] licenses: Export license record. * guix/licenses.scm (): Export it. Signed-off-by: Mathieu Othacehe --- guix/licenses.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/licenses.scm b/guix/licenses.scm index ab2ad3f169..f9bcd96df6 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -32,7 +32,7 @@ (define-module (guix licenses) #:use-module (srfi srfi-9) - #:export (license? license-name license-uri license-comment + #:export (license license? license-name license-uri license-comment agpl1 agpl3 agpl3+ asl1.1 asl2.0 boost1.0 From 8e2a4238008bf8cdfbb115f7ad848221521a9796 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 23 Apr 2020 12:34:55 -0400 Subject: [PATCH 04/39] gnu: GNU FreeFont: Add a deprecated alias for "font-gnu-freefont-ttf". This is a followup to commit 5483a2d0a913fe533744699e9ef5757c6e3f6983. * gnu/packages/fonts.scm (font-gnu-freefont-ttf): New variable. --- gnu/packages/fonts.scm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 34db6ff3ec..21423baefd 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -305,6 +305,9 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over (properties '((upstream-name . "freefont") (ftp-directory . "/gnu/freefont"))))) +(define-public font-gnu-freefont-ttf + (deprecated-package "font-gnu-freefont-ttf" font-gnu-freefont)) + (define-public font-liberation (package (name "font-liberation") From 0fb2bc839292e59e573dc5541b10940dccc2c636 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 23 Apr 2020 19:06:01 +0200 Subject: [PATCH 05/39] gnu: liburcu: Update to 0.12.1. * gnu/packages/datastructures.scm (liburcu): Update to 0.12.1. --- gnu/packages/datastructures.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm index 3c8814348f..0f106b7ce9 100644 --- a/gnu/packages/datastructures.scm +++ b/gnu/packages/datastructures.scm @@ -129,14 +129,14 @@ in between these sequences may be different in both content and length.") (define-public liburcu (package (name "liburcu") - (version "0.12.0") + (version "0.12.1") (source (origin (method url-fetch) (uri (string-append "https://www.lttng.org/files/urcu/" "userspace-rcu-" version ".tar.bz2")) (sha256 (base32 - "15wzk3nyy6gh6i7xhksxzs8fjar1g4ddz51iahk1v7lq0vjip6s0")))) + "03nd1gy2c3fdb6xwdrd5lr1jcjxbzffqh3z91mzbjhjn6k8fmymv")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) ; for tests From 54b3d583af3798405d39953f8bd21b1a864fb447 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 23 Apr 2020 19:17:52 +0200 Subject: [PATCH 06/39] gnu: grammalecte: Update to 1.9.0. * gnu/packages/dictionaries.scm (grammalecte): Update to 1.9.0. --- gnu/packages/dictionaries.scm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm index d481b139a5..06ccfafb40 100644 --- a/gnu/packages/dictionaries.scm +++ b/gnu/packages/dictionaries.scm @@ -205,24 +205,24 @@ It comes with a German-English dictionary with approximately 270,000 entries.") (define-public grammalecte (package (name "grammalecte") - (version "1.8.0") + (version "1.9.0") (source (origin (method url-fetch/zipbomb) (uri (string-append "https://grammalecte.net/grammalecte/zip/" "Grammalecte-fr-v" version ".zip")) (sha256 - (base32 "06z2na1zs5q6vla45q5b8fzjwpckanmwh42r8in8vhb7a8v2fkyp")))) + (base32 "1dmbmvf27dy0cnq2x7ldp9xmni8fl1p7vflgpy0yrgifgrjvnxzr")))) (build-system python-build-system) (home-page "https://grammalecte.net") (synopsis "French spelling and grammar checker") - (description "Grammalecte is a grammar checker dedicated to the French -language, derived from Lightproof. + (description "Grammalecte is a grammar checker for the French language, +derived from Lightproof. -Grammalecte aims at helping to write a proper French without distracting users -with false positives. This grammar checker follows the principle: the less -false positives, the better; if it cannot know with a good chance if -a dubious expression is wrong, it will keep silent. +Grammalecte helps writing a proper French, without distracting users with +false positives. This grammar checker follows the principle: the less false +positives, the better; if it cannot know with a good chance that a dubious +expression is wrong, it keeps silent. The package provides the command line interface, along with a server and a Python library.") From 0f25feb15917c48cd37ee9b5a2cfc40014b0c520 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 23 Apr 2020 13:06:42 -0400 Subject: [PATCH 07/39] gnu: Squid: Update to 4.11 [fixes CVE-2020-{11945,12519,12521}]. * gnu/packages/networking.scm (squid): Update to 4.11. --- gnu/packages/networking.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 6231632c06..94b521584f 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -919,14 +919,15 @@ TCP connection, TLS handshake and so on) in the terminal.") (define-public squid (package (name "squid") - (version "4.10") + (version "4.11") (source (origin (method url-fetch) (uri (string-append "http://www.squid-cache.org/Versions/v4/squid-" version ".tar.xz")) (sha256 - (base32 "07sz0adv8nkhy797675bpra7lvdkwjq9isw1ddgylhlazl511w4q")))) + (base32 + "0z986kykx539wjqd7mr8y0abf3z6hz8byf8fmmbky9hh4ihlgnaf")))) (build-system gnu-build-system) (arguments '(#:phases From 12da5162e49ea3b0f2e5e46f7aa5e410ebf30845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 23 Apr 2020 23:10:19 +0200 Subject: [PATCH 08/39] compile: Pre-load the compiler outside 'with-target'. * guix/build/compile.scm (compile-files): Move call to 'compile' before 'with-target'. Failing to do that, if the target has a different word size than the host, the first call to 'compile-file' fails with: ice-9/eval.scm:293:34: In procedure load-thunk-from-memory: ELF file does not have native word size while attempting loading 'language/spec.go'. --- guix/build/compile.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 3ce0ecede5..c4dbb6e34c 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -194,6 +194,11 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." (with-augmented-search-path %load-path source-directory (with-augmented-search-path %load-compiled-path build-directory (with-fluids ((*current-warning-prefix* "")) + ;; Make sure the compiler's modules are loaded before 'with-target' + ;; (since 'with-target' influences the .go loader), and before + ;; starting to compile files in parallel. + (compile #f) + (with-target host (lambda () ;; FIXME: To work around , we first @@ -202,10 +207,6 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." #:report-load report-load #:debug-port debug-port) - ;; Make sure compilation related modules are loaded before - ;; starting to compile files in parallel. - (compile #f) - ;; XXX: Don't use too many workers to work around the insane ;; memory requirements of the compiler in Guile 2.2.2: ;; . From d9e83f2a6460d9716b5dc93cf61ac120c10f6906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 23 Apr 2020 23:19:49 +0200 Subject: [PATCH 09/39] doc: Build more man pages. * doc/local.mk (sub_commands_mans): Add guix-deploy.1, guix-time-machine.1, and guix-weather.1. --- doc/local.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/local.mk b/doc/local.mk index 30c4a8c34d..0d8e95802c 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -185,6 +185,7 @@ sub_commands_mans = \ $(srcdir)/%D%/guix-archive.1 \ $(srcdir)/%D%/guix-build.1 \ $(srcdir)/%D%/guix-challenge.1 \ + $(srcdir)/%D%/guix-deploy.1 \ $(srcdir)/%D%/guix-download.1 \ $(srcdir)/%D%/guix-edit.1 \ $(srcdir)/%D%/guix-environment.1 \ @@ -197,7 +198,9 @@ sub_commands_mans = \ $(srcdir)/%D%/guix-pull.1 \ $(srcdir)/%D%/guix-refresh.1 \ $(srcdir)/%D%/guix-size.1 \ - $(srcdir)/%D%/guix-system.1 + $(srcdir)/%D%/guix-system.1 \ + $(srcdir)/%D%/guix-time-machine.1 \ + $(srcdir)/%D%/guix-weather.1 dist_man1_MANS = \ $(srcdir)/%D%/guix.1 \ From 62bc3c5b04d43ccd24922e45b79fab00f7298e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 23 Apr 2020 23:20:26 +0200 Subject: [PATCH 10/39] build: Don't build man pages when cross-compiling. * configure.ac: Define 'CROSS_COMPILING' Automake conditional. * doc/local.mk (dist_man1_MANS): Wrap in "if !CROSS_COMPILING". --- configure.ac | 2 ++ doc/local.mk | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 6a6a020585..a44a605dc0 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,8 @@ AM_GNU_GETTEXT_VERSION([0.18.1]) GUIX_SYSTEM_TYPE GUIX_ASSERT_SUPPORTED_SYSTEM +AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"]) + AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH], [file name of the store (defaults to /gnu/store)]), diff --git a/doc/local.mk b/doc/local.mk index 0d8e95802c..ddda01d5f3 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2016 Eric Bavier -# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès # Copyright © 2013 Andreas Enge # Copyright © 2016 Taylan Ulrich Bayırlı/Kammer # Copyright © 2016, 2018 Mathieu Lirzin @@ -202,10 +202,15 @@ sub_commands_mans = \ $(srcdir)/%D%/guix-time-machine.1 \ $(srcdir)/%D%/guix-weather.1 +# Assume that cross-compiled commands cannot be executed. +if !CROSS_COMPILING + dist_man1_MANS = \ $(srcdir)/%D%/guix.1 \ $(sub_commands_mans) +endif + gen_man = \ LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \ $(HELP2MANFLAGS) @@ -227,6 +232,7 @@ $(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS) esac if BUILD_DAEMON +if !CROSS_COMPILING dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1 @@ -234,3 +240,4 @@ $(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` endif +endif From 59be2959a652e6eaf22be5808009e1cd1400e043 Mon Sep 17 00:00:00 2001 From: Alexandros Theodotou Date: Wed, 8 Apr 2020 17:21:19 +0100 Subject: [PATCH 11/39] gnu: Add wolf-shaper. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/music.scm (wolf-shaper): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/music.scm | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index cad6bf35ea..1e44fe23d5 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -5423,3 +5423,60 @@ plugin and a standalone JACK application.") offers an LV2 version ported by moddevices.") (home-page "http://tap-plugins.sourceforge.net/") (license license:gpl2)))) + +(define-public wolf-shaper + (package + (name "wolf-shaper") + (version "0.1.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pdesaulniers/wolf-shaper.git") + (commit (string-append "v" version)) + ;; Bundles a specific commit of the DISTRHO plugin framework. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lllgcbnnh1m95bp29hh17x170hl7170zizjrvy892qfkn36830d")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:make-flags (list "CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure target + (replace 'install ;no install target + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lv2 (string-append out "/lib/lv2"))) + ;; Install LV2. + (for-each + (lambda (file) + (copy-recursively file + (string-append lv2 "/" (basename file)))) + (find-files "bin" "\\.lv2$" #:directories? #t)) + ;; Install executables. + (for-each + (lambda (file) + (install-file file bin)) + (find-files "bin" + (lambda (name stat) + (and + (equal? (dirname name) "bin") + (not (string-suffix? ".so" name)) + (not (string-suffix? ".lv2" name)))))) + #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("jack", jack-1) + ("lv2", lv2) + ("mesa", mesa))) + (synopsis "Waveshaper plugin") + (description "Wolf Shaper is a waveshaper plugin with a graph editor. +It is provided as an LV2 plugin and as a standalone Jack application.") + (home-page "https://pdesaulniers.github.io/wolf-shaper/") + (license license:gpl3))) From b90b7f16edea92e3554c4563d376292f5fb525cb Mon Sep 17 00:00:00 2001 From: Alexandros Theodotou Date: Wed, 8 Apr 2020 17:30:45 +0100 Subject: [PATCH 12/39] gnu: Add wolf-spectrum. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/music.scm (wolf-spectrum): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/music.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 1e44fe23d5..34d4adb33c 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -5480,3 +5480,26 @@ plugin and a standalone JACK application.") It is provided as an LV2 plugin and as a standalone Jack application.") (home-page "https://pdesaulniers.github.io/wolf-shaper/") (license license:gpl3))) + +(define-public wolf-spectrum + (package + (inherit wolf-shaper) + (name "wolf-spectrum") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pdesaulniers/wolf-spectrum") + (commit (string-append "v" version)) + ;; Bundles a specific commit of the DISTRHO plugin framework. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17db1jlj7vb1xyvkdhhrsvdbwb7jqw6i4168cdvlj3yvn2ra8gpm")))) + (synopsis "2D spectrogram plugin") + (description "Wolf Spectrum is a real-time 2D spectrogram plugin. +It is provided as an LV2 plugin and as a standalone Jack application.") + (home-page "https://github.com/pdesaulniers/wolf-spectrum") + (license license:gpl3))) From 409dfdf03d60cd7e2cf45897c5a19f7a1bd97ba3 Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 23 Apr 2020 16:13:18 +0200 Subject: [PATCH 13/39] gnu: Add hamlib. * gnu/packages/radio.scm (hamlib): New package. --- gnu/packages/radio.scm | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 8f1562a176..f2970eb77b 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -36,6 +36,7 @@ #:use-module (gnu packages documentation) #:use-module (gnu packages engineering) #:use-module (gnu packages fltk) + #:use-module (gnu packages gd) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) #:use-module (gnu packages gstreamer) @@ -44,6 +45,7 @@ #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages logging) + #:use-module (gnu packages lua) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) #:use-module (gnu packages networking) @@ -53,8 +55,10 @@ #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages readline) #:use-module (gnu packages sphinx) #:use-module (gnu packages swig) + #:use-module (gnu packages tcl) #:use-module (gnu packages tex) #:use-module (gnu packages version-control) #:use-module (gnu packages xml) @@ -644,3 +648,43 @@ transmitted over any of several digital modes and verified at the receipt end for correctness.") (home-page "http://www.w1hkj.com/") (license license:gpl3+))) + +(define-public hamlib + (package + (name "hamlib") + (version "3.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/Hamlib/Hamlib/releases/download/" + version "/hamlib-" version ".tar.gz")) + (sha256 + (base32 "10788mgrhbc57zpzakcxv5aqnr2819pcshml6fbh8zvnkja562y9")))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen) + ("lua" ,lua) + ("pkg-config" ,pkg-config) + ("python-wrapper" ,python-wrapper) + ("swig" ,swig) + ("tcl" ,tcl))) + (inputs + `(("gd" ,gd) + ("libusb" ,libusb) + ("libxml2" ,libxml2) + ("readline" ,readline))) + (arguments + `(#:configure-flags '("--disable-static" + "--with-lua-binding" + "--with-python-binding" + "--with-tcl-binding" + "--with-xml-support"))) + (synopsis "Tools and API to control radios") + (description + "The Ham Radio Control Library (Hamlib) is a project to provide programs +with a consistent Application Programming Interface (API) for controlling the +myriad of radios and rotators available to amateur radio and communications +users.") + (home-page "https://hamlib.github.io/") + (license (list license:gpl2+ license:lgpl2.1+)))) From e6d141652c27600ea8769456c8f3556073f191d3 Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 23 Apr 2020 17:35:19 +0200 Subject: [PATCH 14/39] gnu: fldigi: Add hamlib support. * gnu/packages/radio.scm (fldigi)[inputs]: Add hamlib and libusb. --- gnu/packages/radio.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index f2970eb77b..caaa87a9c8 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -548,8 +548,10 @@ using GNU Radio and the Qt GUI toolkit.") (inputs `(("alsa-lib" ,alsa-lib) ("fltk" ,fltk) + ("hamlib" ,hamlib) ("libpng" ,libpng) ("libsamplerate" ,libsamplerate) + ("libusb" ,libusb) ("libx11" ,libx11) ("libxext" ,libxext) ("libxfixes" ,libxfixes) From 5a915632210e7007d63aae7dcf1999323c69b4ab Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 23 Apr 2020 23:47:44 +0200 Subject: [PATCH 15/39] gnu: Add wsjtx. * gnu/packages/radio.scm (wsjtx-hamlib): New variable. (wsjtx): New variable. --- gnu/packages/radio.scm | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index caaa87a9c8..fff68cf657 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -36,6 +36,7 @@ #:use-module (gnu packages documentation) #:use-module (gnu packages engineering) #:use-module (gnu packages fltk) + #:use-module (gnu packages gcc) #:use-module (gnu packages gd) #:use-module (gnu packages ghostscript) #:use-module (gnu packages glib) @@ -56,10 +57,12 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) #:use-module (gnu packages sphinx) #:use-module (gnu packages swig) #:use-module (gnu packages tcl) #:use-module (gnu packages tex) + #:use-module (gnu packages texinfo) #:use-module (gnu packages version-control) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -690,3 +693,72 @@ myriad of radios and rotators available to amateur radio and communications users.") (home-page "https://hamlib.github.io/") (license (list license:gpl2+ license:lgpl2.1+)))) + +(define wsjtx-hamlib + ;; Fork of hamlib with custom patches used by wsjtx. + (package + (inherit hamlib) + (name "wsjtx-hamlib") + (version "2.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.code.sf.net/u/bsomervi/hamlib.git") + (commit (string-append "wsjtx-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ksv3cmr1dl45p0pp1panyc9dngd158gvv9ysv25lq4nqv1wn87i")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("texinfo" ,texinfo) + ,@(package-native-inputs hamlib))))) + +(define-public wsjtx + (package + (name "wsjtx") + (version "2.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.code.sf.net/p/wsjt/wsjtx.git") + (commit (string-append "wsjtx-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1fnqzjd3dmxp3yjwjvwz2djk9gzb1y2cqfa188f3x8lynxhdhnfs")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete bundled boost to use the shared one. + (delete-file-recursively "boost") + #t)))) + (build-system qt-build-system) + (native-inputs + `(("asciidoc" ,asciidoc) + ("gfortran" ,gfortran) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools) + ("ruby-asciidoctor" ,ruby-asciidoctor))) + (inputs + `(("boost" ,boost) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("hamlib" ,wsjtx-hamlib) + ("libusb" ,libusb) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtserialport" ,qtserialport))) + (arguments + `(#:tests? #f)) ; No test suite + (synopsis "Weak-signal ham radio communication program") + (description + "WSJT-X implements communication protocols or modes called FT4, FT8, +JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for +detecting and measuring your own radio signals reflected from the Moon. These +modes were all designed for making reliable, confirmed QSOs under extreme +weak-signal conditions.") + (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html") + (license license:gpl3))) From 887c61e67fc6c9ccf75d5c96cac0b13aeec42286 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2020 19:55:15 -0400 Subject: [PATCH 16/39] gnu: linux-libre@4.19: Update to 4.19.118. * gnu/packages/linux.scm (linux-libre-4.19-version): Update to 4.19.118. (linux-libre-4.19-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index fbdda2543e..c4a15b3cb6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -385,10 +385,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.117") +(define-public linux-libre-4.19-version "4.19.118") (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "12xc1pwhwq4vp67hmn7hdynl4ik76cni79356hpzf1lbiqlrya6n"))) + (hash (base32 "15lcq3xky59v88vb8vvnmgcsmm1fadz0m4jyrii6rynsz5jr6x49"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) From 3fdccd5ba60d5dec91b60f2c3f044167a8dd6ed1 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2020 19:56:13 -0400 Subject: [PATCH 17/39] gnu: linux-libre@5.6: Update to 5.6.7. * gnu/packages/linux.scm (linux-libre-5.6-version): Update to 5.6.7. (linux-libre-5.6-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c4a15b3cb6..ae037cf1d2 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -369,10 +369,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (sha256 hash))) -(define-public linux-libre-5.6-version "5.6.6") +(define-public linux-libre-5.6-version "5.6.7") (define-public linux-libre-5.6-pristine-source (let ((version linux-libre-5.6-version) - (hash (base32 "1m3blvkma08v5y11jh0vhf4sr7jbcylkh15bssb5dgp40p8cx134"))) + (hash (base32 "1jljcva3gxg1yc2kw3jjgmhzzdm16nylzxl63zbndjza547l5813"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.6))) From 298c113134b4e4b82cad59da18441dfa3d18bf45 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 23 Apr 2020 19:57:00 -0400 Subject: [PATCH 18/39] gnu: linux-libre: Update to 5.4.35. * gnu/packages/linux.scm (linux-libre-5.4-version): Update to 5.4.35. (linux-libre-5.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index ae037cf1d2..4b776ae5f7 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -377,10 +377,10 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-5.6))) -(define-public linux-libre-5.4-version "5.4.34") +(define-public linux-libre-5.4-version "5.4.35") (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1ljcsrw9jknw2d9hb0yfr1pwy85l8z4rqycgd0kad9mb9lrw2glh"))) + (hash (base32 "1m06k19pbb3wz8z2dgf03jvzbbdh6q8jwwdz509s902a53vxasz1"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) From 1597613488d328c7987a18c088cf6e47467223b9 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Fri, 24 Apr 2020 09:10:35 +0200 Subject: [PATCH 19/39] Revert "licenses: Export license record." This reverts commit f0779922ff260df2404c90504986aa59553154fb. We do not want to export the license record, see: https://lists.gnu.org/archive/html/guix-commits/2020-04/msg01923.html. --- guix/licenses.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/licenses.scm b/guix/licenses.scm index f9bcd96df6..ab2ad3f169 100644 --- a/guix/licenses.scm +++ b/guix/licenses.scm @@ -32,7 +32,7 @@ (define-module (guix licenses) #:use-module (srfi srfi-9) - #:export (license license? license-name license-uri license-comment + #:export (license? license-name license-uri license-comment agpl1 agpl3 agpl3+ asl1.1 asl2.0 boost1.0 From 2fea2b641457eafc934b854e74386389e36123ce Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 24 Apr 2020 14:44:57 +0300 Subject: [PATCH 20/39] gnu: java-eclipse-jetty-test-helper: Don't use unstable tarball. * gnu/packages/web.scm (java-eclipse-jetty-test-helper)[source]: Download using git-fetch. --- gnu/packages/web.scm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 0092477679..16e2832a62 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -6264,12 +6264,14 @@ technologies.") (name "java-eclipse-jetty-test-helper") (version "4.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/eclipse/jetty.toolchain/" - "archive/jetty-test-helper-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/eclipse/jetty.toolchain/") + (commit (string-append "jetty-test-helper-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1jd6r9wc26fa11si4rn2gvy8ml8q4zw1nr6v04mjp8wvwpgvzwx5")))) + "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb")))) (build-system ant-build-system) (arguments `(#:jar-name "eclipse-jetty-test-helper.jar" From 1e700c656a7a25ff2eb27fa552bc213cc50efb2a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 24 Apr 2020 14:51:16 +0300 Subject: [PATCH 21/39] gnu: datamash: Update to 1.7. * gnu/packages/datamash.scm (datamash): Update to 1.7. --- gnu/packages/datamash.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/datamash.scm b/gnu/packages/datamash.scm index a61ee96fec..d0f4bdfbc0 100644 --- a/gnu/packages/datamash.scm +++ b/gnu/packages/datamash.scm @@ -29,7 +29,7 @@ (define-public datamash (package (name "datamash") - (version "1.6") + (version "1.7") (source (origin (method url-fetch) @@ -37,7 +37,7 @@ version ".tar.gz")) (sha256 (base32 - "1jvqxcyh0aghnqh3m2rk5av1x0038flcmfzd493vasv1k69vgfdr")))) + "1cxdlhgz3wzjqlq8bgwad93fgqymk2abbldfzw1ffnhcp4mmjjjp")))) (native-inputs `(("which" ,which) ;for tests ("perl" ,perl))) ;for help2man From 962554ddcf86675362486a683acd94863ba68d8a Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Fri, 24 Apr 2020 15:15:50 +0200 Subject: [PATCH 22/39] guix package: Export 'search-path-environment-variables'. ...because Emacs-Guix uses it. * guix/scripts/package.scm (search-path-environment-variables): Export. --- guix/scripts/package.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 40445832aa..2eb18919cc 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -63,6 +63,8 @@ delete-matching-generations guix-package + search-path-environment-variables + transaction-upgrade-entry ;mostly for testing (%options . %package-options) From a1d369f139b4788fd66ed0129cb43c205248dc56 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 24 Apr 2020 15:19:09 +0200 Subject: [PATCH 23/39] gnu: Add texlive-csquotes. * gnu/packages/tex.scm (texlive-csquotes): New variable. --- gnu/packages/tex.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 3e67c75c6e..f1ce4220df 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -7415,3 +7415,29 @@ commands as well as behind-the-scenes optimisation. Guidelines are given as to what constitutes a good table in this context. The package offers @code{longtable} compatibility.") (license license:lppl1.3+))) + +(define-public texlive-csquotes + (let ((template (simple-texlive-package + "texlive-csquotes" + (list "/doc/latex/csquotes/" + "/tex/latex/csquotes/") + (base32 + "15hgn37zg433skn7ijqs1kl2z56fhy29cjxn01b5pjrnrkdar4i4") + #:trivial? #t))) + (package + (inherit template) + (propagated-inputs + `(("texlive-etoolbox" ,texlive-etoolbox))) + (home-page "https://www.ctan.org/pkg/csquotes") + (synopsis "Context sensitive quotation facilities") + (description "This package provides advanced facilities for inline and +display quotations. It is designed for a wide range of tasks ranging from the +most simple applications to the more complex demands of formal quotations. +The facilities include commands, environments, and user-definable 'smart +quotes' which dynamically adjust to their context. Quotation marks are +switched automatically if quotations are nested and they can be adjusted to +the current language if the babel package is available. There are additional +facilities designed to cope with the more specific demands of academic +writing, especially in the humanities and the social sciences. All quote +styles as well as the optional active quotes are freely configurable.") + (license license:lppl1.3c+)))) From ba07c7f067a128970e604064b13e3a2a0536934b Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:23:25 +0530 Subject: [PATCH 24/39] gnu: Add r-tea. * gnu/packages/cran.scm (r-tea): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 70cb7cc700..caf3830cad 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21162,3 +21162,32 @@ evaluated interactively.") Bayes factors, posterior model probabilities, and normalizing constants in general, via different versions of bridge sampling.") (license license:gpl2+))) + +(define-public r-tea + (package + (name "r-tea") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "tea" version)) + (sha256 + (base32 + "0ql7lrxk0ihm49kqsvz79ig8i54rwiy9nxav4v9hy72j9kj5bgjn")))) + (properties + `((upstream-name . "tea"))) + (build-system r-build-system) + (propagated-inputs + `(("r-matrix" ,r-matrix))) + (home-page "https://cran.r-project.org/web/packages/tea/") + (synopsis "Threshold estimation approaches") + (description + "This package provide different approaches for selecting the threshold +in generalized Pareto distributions. Most of them are based on minimizing the +AMSE-criterion or atleast by reducing the bias of the assumed GPD-model. +Others are heuristically motivated by searching for stable sample paths, i.e. +a nearly constant region of the tail index estimator with respect to k, which +is the number of data in the tail. The third class is motivated by graphical +inspection. In addition, a sequential testing procedure for GPD-GoF-tests +is also implemented here.") + (license license:gpl3))) From fe14871eddf656d574b2634bcf1093614d45d70c Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:27:55 +0530 Subject: [PATCH 25/39] gnu: Add r-awsmethods. * gnu/packages/cran.scm (r-awsmethods): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index caf3830cad..12dd6a3e26 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21191,3 +21191,25 @@ is the number of data in the tail. The third class is motivated by graphical inspection. In addition, a sequential testing procedure for GPD-GoF-tests is also implemented here.") (license license:gpl3))) + +(define-public r-awsmethods + (package + (name "r-awsmethods") + (version "1.1-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "awsMethods" version)) + (sha256 + (base32 + "0hbmrcpdyg15zg4rysscsmxpxlpy0dkxx2aa63qibq7l1k14v4sh")))) + (properties + `((upstream-name . "awsMethods"))) + (build-system r-build-system) + (home-page "http://www.wias-berlin.de/software/imaging/") + (synopsis "Class and methods definitions") + (description + "This package defines the generic method @code{extract} and provides +@code{openMP} support as needed in several packages like +@code{aws}, @code{adimpro}, @code{fmri}, and @code{dwi}.") + (license license:gpl2+))) From ea43d299fa2071467cb1aec8cf3dc8f0d95b15f7 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:32:33 +0530 Subject: [PATCH 26/39] gnu: Add r-aws. * gnu/packages/cran.scm (r-aws): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 12dd6a3e26..f0796891c8 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21213,3 +21213,32 @@ is also implemented here.") @code{openMP} support as needed in several packages like @code{aws}, @code{adimpro}, @code{fmri}, and @code{dwi}.") (license license:gpl2+))) + +(define-public r-aws + (package + (name "r-aws") + (version "2.4-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "aws" version)) + (sha256 + (base32 + "1czlsy64nx6j7h1smgb561yyv3f98pwqwglk77yla4mx3fp14bvq")))) + (properties + `((upstream-name . "aws"))) + (build-system r-build-system) + (propagated-inputs + `(("r-awsmethods" ,r-awsmethods) + ("r-gsl" ,r-gsl))) + (native-inputs + `(("gfortran" ,gfortran))) + (home-page "https://cran.r-project.org/web/packages/aws/") + (synopsis "Adaptive weights smoothing") + (description + "This package provides a collection of R-functions implementing adaptive +smoothing procedures in 1D, 2D and 3D. This includes the +Propagation-Separation approach to adaptive smoothing, the @dfn{Intersecting +Confidence Intervals} (ICI), variational approaches, and a non-local means +filter.") + (license license:gpl2+))) From aa3fdca85c6a28e8a945ac0041b921465fa0fb66 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:37:05 +0530 Subject: [PATCH 27/39] gnu: Add r-sgloptim. * gnu/packages/cran.scm (r-sgloptim): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index f0796891c8..d023c47705 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21242,3 +21242,39 @@ Propagation-Separation approach to adaptive smoothing, the @dfn{Intersecting Confidence Intervals} (ICI), variational approaches, and a non-local means filter.") (license license:gpl2+))) + +(define-public r-sgloptim + (package + (name "r-sgloptim") + (version "1.3.8") + (source + (origin + (method url-fetch) + (uri (cran-uri "sglOptim" version)) + (sha256 + (base32 + "15bkkvgp9v9vsp65wps48g3c2fa0fj1025hbrziywq14j7wayyjr")))) + (properties + `((upstream-name . "sglOptim"))) + (build-system r-build-system) + (propagated-inputs + `(("r-bh" ,r-bh) + ("r-doparallel" ,r-doparallel) + ("r-foreach" ,r-foreach) + ("r-matrix" ,r-matrix) + ("r-rcpp" ,r-rcpp) + ("r-rcpparmadillo" ,r-rcpparmadillo) + ("r-rcppprogress" ,r-rcppprogress))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://github.com/nielsrhansen/sglOptim") + (synopsis "Generic sparse group Lasso solver") + (description + "This package provides a fast generic solver for sparse group lasso +optimization problems. The loss (objective) function must be defined in a C++ +module. The optimization problem is solved using a coordinate gradient +descent algorithm. Convergence of the algorithm is established and the +algorithm is applicable to a broad class of loss functions. Use of parallel +computing for cross validation and subsampling is supported through the +@code{foreach} and @code{doParallel} packages.") + (license license:gpl2+))) From d234006b38fe004855af8765acbef67b907d13a7 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:43:29 +0530 Subject: [PATCH 28/39] gnu: Add r-grouped. * gnu/packages/cran.scm (r-grouped): New variable. --- gnu/packages/cran.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index d023c47705..c7aaf8d47e 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21278,3 +21278,26 @@ algorithm is applicable to a broad class of loss functions. Use of parallel computing for cross validation and subsampling is supported through the @code{foreach} and @code{doParallel} packages.") (license license:gpl2+))) + +(define-public r-grouped + (package + (name "r-grouped") + (version "0.6-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "grouped" version)) + (sha256 + (base32 + "1glxgacpwk7yjbkwg5ci6bmb2il6hf5zhydwi5bbq6hc032m9976")))) + (properties + `((upstream-name . "grouped"))) + (build-system r-build-system) + (propagated-inputs + `(("r-mass" ,r-mass))) + (home-page "https://cran.r-project.org/web/packages/grouped/") + (synopsis "Regression analysis of grouped and coarse data") + (description + "This package provides regression models for grouped and coarse data, +under the coarsened at random assumption.") + (license license:gpl2+))) From 26e5dab74ae35f5a70838f1919cb81f40212c109 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:51:33 +0530 Subject: [PATCH 29/39] gnu: Add r-stam. * gnu/packages/cran.scm (r-stam): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index c7aaf8d47e..a81ca5c6ae 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21301,3 +21301,28 @@ computing for cross validation and subsampling is supported through the "This package provides regression models for grouped and coarse data, under the coarsened at random assumption.") (license license:gpl2+))) + +(define-public r-stam + (package + (name "r-stam") + (version "0.0-1") + (source + (origin + (method url-fetch) + (uri (cran-uri "stam" version)) + (sha256 + (base32 + "1x1j45fir64kffny0nssb2hwn4rcp8gd2cjv6fw4yy0l4d0xi5iv")))) + (properties + `((upstream-name . "stam"))) + (build-system r-build-system) + (propagated-inputs + `(("r-np" ,r-np) + ("r-sp" ,r-sp))) + (home-page "https://cran.r-project.org/web/packages/stam") + (synopsis "Spatio-temporal analysis and modelling") + (description + "This package provides various methods to conduct Spatio-Temporal +Analysis and Modelling, including Exploratory Spatio-Temporal Analysis and +Inferred Spatio-Temporal Modelling.") + (license license:gpl2+))) From 3a8ee5ef4212f072f53a32302c4f57e7ec55da48 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 24 Apr 2020 15:51:52 +0200 Subject: [PATCH 30/39] gnu: r-tea: Fix typo. * gnu/packages/cran.scm (r-tea)[description]: Fix typo. --- gnu/packages/cran.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index a81ca5c6ae..a2a5da62a7 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21182,7 +21182,7 @@ general, via different versions of bridge sampling.") (home-page "https://cran.r-project.org/web/packages/tea/") (synopsis "Threshold estimation approaches") (description - "This package provide different approaches for selecting the threshold + "This package provides different approaches for selecting the threshold in generalized Pareto distributions. Most of them are based on minimizing the AMSE-criterion or atleast by reducing the bias of the assumed GPD-model. Others are heuristically motivated by searching for stable sample paths, i.e. From 53269e6971025da0d8eeef4a7d54b92b89649ff3 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 01:58:15 +0530 Subject: [PATCH 31/39] gnu: Add r-dcv. * gnu/packages/cran.scm (r-dcv): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index a2a5da62a7..aeba263843 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21326,3 +21326,28 @@ under the coarsened at random assumption.") Analysis and Modelling, including Exploratory Spatio-Temporal Analysis and Inferred Spatio-Temporal Modelling.") (license license:gpl2+))) + +(define-public r-dcv + (package + (name "r-dcv") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (cran-uri "dcv" version)) + (sha256 + (base32 + "12c716x8dnxnqksibpmyysqp2axggvy9dpd55s9bhnsvqvi6dshj")))) + (properties + `((upstream-name . "dcv"))) + (build-system r-build-system) + (propagated-inputs + `(("r-lmtest" ,r-lmtest))) + (home-page "https://cran.r-project.org/web/packages/dcv/") + (synopsis "Conventional cross-validation statistics for climate-growth model") + (description + "This package performs several conventional cross-validation statistical +methods for climate-growth model in the climate reconstruction from tree +rings, including Sign Test statistic, Reduction of Error statistic, Product +Mean Test, Durbin-Watson statistic etc.") + (license license:gpl2))) From 5b38f038f65f78c54e928ff8a6067a426bcc1e42 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 02:03:20 +0530 Subject: [PATCH 32/39] gnu: Add r-rcdd. * gnu/packages/cran.scm (r-rcdd): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index aeba263843..3ee707ce50 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21351,3 +21351,29 @@ methods for climate-growth model in the climate reconstruction from tree rings, including Sign Test statistic, Reduction of Error statistic, Product Mean Test, Durbin-Watson statistic etc.") (license license:gpl2))) + +(define-public r-rcdd + (package + (name "r-rcdd") + (version "1.2-2") + (source + (origin + (method url-fetch) + (uri (cran-uri "rcdd" version)) + (sha256 + (base32 + "0pzpbqnlgzr240iici70278py5wnbbxkzlgn112f9wv5ga3riric")))) + (properties + `((upstream-name . "rcdd"))) + (build-system r-build-system) + (inputs + `(("gmp" ,gmp))) + (home-page "https://www.stat.umn.edu/geyer/rcdd/") + (synopsis "Computational geometry") + (description + "This package converts back and forth between two representations of a +convex polytope: as solution of a set of linear equalities and inequalities +and as convex hull of set of points and rays. Also does linear programming +and redundant generator elimination. All functions can use exact +infinite-precision rational arithmetic.") + (license license:gpl2))) From 4ac3461a80338c9596b938b25d6f517af43330f0 Mon Sep 17 00:00:00 2001 From: Naga Malleswari Date: Fri, 24 Apr 2020 02:08:12 +0530 Subject: [PATCH 33/39] gnu: Add r-rxnat. * gnu/packages/cran.scm (r-rxnat): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/cran.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 3ee707ce50..b918a4aa49 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -21377,3 +21377,30 @@ and as convex hull of set of points and rays. Also does linear programming and redundant generator elimination. All functions can use exact infinite-precision rational arithmetic.") (license license:gpl2))) + +(define-public r-rxnat + (package + (name "r-rxnat") + (version "1.0.8") + (source + (origin + (method url-fetch) + (uri (cran-uri "Rxnat" version)) + (sha256 + (base32 + "12xcs2l6vn50bwzfmv60j1qahjw2npfm1a3yjhffcxzh6p8chwbg")))) + (properties + `((upstream-name . "Rxnat"))) + (build-system r-build-system) + (propagated-inputs + `(("r-httr" ,r-httr) + ("r-rcurl" ,r-rcurl))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://cran.r-project.org/web/packages/Rxnat/") + (synopsis "Queries and extracts images from neuroimaging datasets") + (description + "This package allows communication with the Extensible Neuroimaging +Archive Toolkit. Rxnat uses the XNAT REST API to perform data queries and +download images.") + (license license:gpl2))) From 193192ca77bffddd241b6706df21b5e8bccc4cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 24 Apr 2020 12:20:25 +0200 Subject: [PATCH 34/39] gnu: llvm: Add 10.0.0. * gnu/packages/llvm.scm (llvm-10, clang-runtime-10, clang-10) (clang-toolchain-10, llvm-9, clang-runtime-9, clang-9) (clang-toolchain-9): New variables. (llvm, clang, clang-runtime, clang-toolchain): Redefine as aliases to the '-9' bindings. * gnu/packages/patches/clang-10.0-libc-search-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/llvm.scm | 54 ++++++++---- .../patches/clang-10.0-libc-search-path.patch | 84 +++++++++++++++++++ 3 files changed, 125 insertions(+), 14 deletions(-) create mode 100644 gnu/packages/patches/clang-10.0-libc-search-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index a6e1ed2d37..d42f17f41b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -805,6 +805,7 @@ dist_patch_DATA = \ %D%/packages/patches/clang-6.0-libc-search-path.patch \ %D%/packages/patches/clang-7.0-libc-search-path.patch \ %D%/packages/patches/clang-9.0-libc-search-path.patch \ + %D%/packages/patches/clang-10.0-libc-search-path.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/classpath-aarch64-support.patch \ diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 7236567a5e..d6c519bcbd 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2016, 2018 Eric Bavier ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2016 Dennis Mungai ;;; Copyright © 2016, 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen @@ -84,17 +84,17 @@ as \"x86_64-linux\"." (string-append "https://releases.llvm.org/" version "/" component "-" version ".src.tar.xz"))) -(define-public llvm +(define-public llvm-10 (package (name "llvm") - (version "9.0.1") + (version "10.0.0") (source (origin (method url-fetch) (uri (llvm-download-uri "llvm" version)) (sha256 (base32 - "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880")))) + "1pwgm6cr0xr5a0hrbqs1zvsvvjvy0yq1y47c96804wcs795s90yz")))) (build-system cmake-build-system) (native-inputs `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 @@ -368,23 +368,49 @@ output), and Binutils.") ("libc-debug" ,glibc "debug") ("libc-static" ,glibc "static"))))) -(define-public clang-runtime +(define-public clang-runtime-10 (clang-runtime-from-llvm - llvm + llvm-10 + "0x9c531k6ww21s2mkdwqx1vbdjmx6d4wmfb8gdbj0wqa796sczba")) + +(define-public clang-10 + (clang-from-llvm llvm-10 clang-runtime-10 + "08fbxa2a0kr3ni35ckppj0kyvlcyaywrhpqwcdrdy0z900mhcnw8" + #:patches '("clang-10.0-libc-search-path.patch"))) + +(define-public clang-toolchain-10 + (make-clang-toolchain clang-10)) + +(define-public llvm-9 + (package + (inherit llvm-10) + (version "9.0.1") + (source + (origin + (method url-fetch) + (uri (llvm-download-uri "llvm" version)) + (sha256 + (base32 + "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880")))))) + +(define-public clang-runtime-9 + (clang-runtime-from-llvm + llvm-9 "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2")) -(define-public clang - (clang-from-llvm llvm clang-runtime +(define-public clang-9 + (clang-from-llvm llvm-9 clang-runtime-9 "0ls2h3iv4finqyflyhry21qhc9cm9ga7g1zq21020p065qmm2y2p" #:patches '("clang-9.0-libc-search-path.patch"))) -(define-public clang-toolchain - (make-clang-toolchain clang)) +(define-public clang-toolchain-9 + (make-clang-toolchain clang-9)) -(define-public llvm-9 llvm) -(define-public clang-runtime-9 clang-runtime) -(define-public clang-9 clang) -(define-public clang-toolchain-9 clang-toolchain) +;; Default LLVM and Clang version. +(define-public llvm llvm-9) +(define-public clang-runtime clang-runtime-9) +(define-public clang clang-9) +(define-public clang-toolchain clang-toolchain-9) (define-public llvm-8 (package diff --git a/gnu/packages/patches/clang-10.0-libc-search-path.patch b/gnu/packages/patches/clang-10.0-libc-search-path.patch new file mode 100644 index 0000000000..966e40b93c --- /dev/null +++ b/gnu/packages/patches/clang-10.0-libc-search-path.patch @@ -0,0 +1,84 @@ +Clang attempts to guess file names based on the OS and distro (yes!), +but unfortunately, that doesn't work for us. + +This patch makes it easy to insert libc's $libdir so that Clang passes the +correct absolute file name of crt1.o etc. to 'ld'. It also disables all +the distro-specific stuff and removes the hard-coded FHS directory names +to make sure Clang also works on non-Guix systems. + +diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp +index bff1ab10..79e1477e 100644 +--- a/lib/Driver/ToolChains/Linux.cpp ++++ b/lib/Driver/ToolChains/Linux.cpp +@@ -240,6 +240,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + .str()); + } + ++// Comment out the distro-specific tweaks so that they don't bite when ++// using Guix on a foreign distro. ++#if 0 + Distro Distro(D.getVFS(), Triple); + + if (Distro.IsAlpineLinux() || Triple.isAndroid()) { +@@ -306,6 +309,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + + if (IsAndroid || Distro.IsOpenSUSE()) + ExtraOpts.push_back("--enable-new-dtags"); ++#endif // Guix + + // The selection of paths to try here is designed to match the patterns which + // the GCC driver itself uses, as this is part of the GCC-compatible driver. +@@ -363,7 +367,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + // the cross. Note that GCC does include some of these directories in some + // configurations but this seems somewhere between questionable and simply + // a bug. +- if (StringRef(LibPath).startswith(SysRoot)) { ++ if (0) { + addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths); + addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths); + } +@@ -382,6 +386,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); + addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); + ++// This requires the commented distro tweaks above. ++#if 0 + if (IsAndroid) { + // Android sysroots contain a library directory for each supported OS + // version as well as some unversioned libraries in the usual multiarch +@@ -410,10 +416,15 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + addPathIfExists(D, SysRoot + "/" + OSLibDir + "/" + ABIName, Paths); + addPathIfExists(D, SysRoot + "/usr/" + OSLibDir + "/" + ABIName, Paths); + } ++#endif + + // Try walking via the GCC triple path in case of biarch or multiarch GCC + // installations with strange symlinks. + if (GCCInstallation.isValid()) { ++ ++// The following code would end up adding things like ++// "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path. ++#if 0 + addPathIfExists(D, + SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() + + "/../../" + OSLibDir, +@@ -426,6 +437,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + BiarchSibling.gccSuffix(), + Paths); + } ++#endif + + // See comments above on the multilib variant for details of why this is + // included even from outside the sysroot. +@@ -450,8 +462,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + if (StringRef(D.Dir).startswith(SysRoot)) + addPathIfExists(D, D.Dir + "/../lib", Paths); + +- addPathIfExists(D, SysRoot + "/lib", Paths); +- addPathIfExists(D, SysRoot + "/usr/lib", Paths); ++ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o, ++ // and friends can be found. ++ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths); + } + + ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const { From 2520059bdb43fa1663ce102f3f4c442d4918c32b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 24 Apr 2020 14:30:38 +0200 Subject: [PATCH 35/39] pack: 'guix pack -R' wrapper correctly reports exit code. Fixes . Reported by Jan (janneke) Nieuwenhuizen . * gnu/packages/aux-files/run-in-namespace.c (main): In the 'default' case, check 'WIFEXITED (status)' and exit with the corresponding code in that case. Exit with 255 in other cases. * tests/guix-pack-relocatable.sh: Add test. --- gnu/packages/aux-files/run-in-namespace.c | 10 ++++++++-- tests/guix-pack-relocatable.sh | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c index 551f4db88a..160f7da1c8 100644 --- a/gnu/packages/aux-files/run-in-namespace.c +++ b/gnu/packages/aux-files/run-in-namespace.c @@ -1,5 +1,5 @@ /* GNU Guix --- Functional package management for GNU - Copyright (C) 2018, 2019 Ludovic Courtès + Copyright (C) 2018, 2019, 2020 Ludovic Courtès This file is part of GNU Guix. @@ -343,7 +343,13 @@ Please refer to the 'guix pack' documentation for more information.\n"); chdir ("/"); /* avoid EBUSY */ rm_rf (new_root); free (new_root); - exit (status); + + if (WIFEXITED (status)) + exit (WEXITSTATUS (status)); + else + /* Abnormal termination cannot really be reproduced, so exit + with 255. */ + exit (255); } } } diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh index e93610eedc..a3fd45623c 100644 --- a/tests/guix-pack-relocatable.sh +++ b/tests/guix-pack-relocatable.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2018, 2019 Ludovic Courtès +# Copyright © 2018, 2019, 2020 Ludovic Courtès # # This file is part of GNU Guix. # @@ -72,6 +72,10 @@ then # mounting an empty file system on top of it. That way, we exercise the # wrapper code that creates the user namespace and bind-mounts the store. unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --version > "$test_directory/output"' + + # Check whether the exit code is preserved. + if unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --does-not-exist'; + then false; else true; fi else # Run the relocatable 'sed' in the current namespaces. This is a weak # test because we're going to access store items from the host store. From 122b3cd68dbc6c83de5357d4db4d82d2fd92d9b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 24 Apr 2020 15:54:34 +0200 Subject: [PATCH 36/39] gnu: biber: Address test failures. * gnu/packages/patches/biber-sortinithash.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/tex.scm (biber)[source]: Use it. --- gnu/local.mk | 1 + gnu/packages/patches/biber-sortinithash.patch | 1666 +++++++++++++++++ gnu/packages/tex.scm | 3 +- 3 files changed, 1669 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/biber-sortinithash.patch diff --git a/gnu/local.mk b/gnu/local.mk index d42f17f41b..66a9c76865 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -776,6 +776,7 @@ dist_patch_DATA = \ %D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/benchmark-unbundle-googletest.patch \ %D%/packages/patches/biber-fix-encoding-write.patch \ + %D%/packages/patches/biber-sortinithash.patch \ %D%/packages/patches/bidiv-update-fribidi.patch \ %D%/packages/patches/binutils-boot-2.20.1a.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \ diff --git a/gnu/packages/patches/biber-sortinithash.patch b/gnu/packages/patches/biber-sortinithash.patch new file mode 100644 index 0000000000..5a626705e6 --- /dev/null +++ b/gnu/packages/patches/biber-sortinithash.patch @@ -0,0 +1,1666 @@ +This is a backport of this upstream commit to Biber 2.12: + + From 6b61b4c13778cf638f82569ab9e413f09f111ba5 Mon Sep 17 00:00:00 2001 + From: Philip Kime + Date: Sat, 12 Jan 2019 17:19:51 +0100 + Subject: [PATCH] Updated tests after U::C upgrade changed sortinit hashes + +It addresses test failures found with recent versions of the +Biber dependencies. + +diff --git a/t/annotations.t b/t/annotations.t +index b4f641e..c6f86c7 100644 +--- a/t/annotations.t ++++ b/t/annotations.t +@@ -73,7 +73,7 @@ my $ann1 = q| \entry{ann1}{misc}{} + \strng{authorfullhash}{90ae96c82de92e36949bc64254bbde0c} + \field{extraname}{1} + \field{sortinit}{L} +- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} ++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{title}{The Title} +@@ -116,7 +116,7 @@ my $ann2 = q| \entry{ann2}{misc}{} + \strng{authorfullhash}{90ae96c82de92e36949bc64254bbde0c} + \field{extraname}{2} + \field{sortinit}{L} +- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} ++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{title}{The Title} +diff --git a/t/basic-misc.t b/t/basic-misc.t +index d4664b1..a9168cc 100644 +--- a/t/basic-misc.t ++++ b/t/basic-misc.t +@@ -97,7 +97,7 @@ my $u1 = q| \entry{u1}{misc}{} + \strng{authorfullhash}{b78abdc838d79b6576f2ed0021642766} + \field{labelalpha}{AAA\textbf{+}00} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -231,7 +231,7 @@ my $murray1 = q| \entry{murray}{article}{} + \strng{authorfullhash}{1572cc3fd324f560e5e71d041a6bd764} + \field{labelalpha}{Hos\textbf{+}98} + \field{sortinit}{H} +- \field{sortinithash}{5f15a7bc777ad49ff15aa4d2831b1681} ++ \field{sortinithash}{6db6145dae8dc9e1271a8d556090b50a} + \true{singletitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -348,7 +348,7 @@ my $murray2 = q| \entry{murray}{article}{} + \strng{authorfullhash}{1572cc3fd324f560e5e71d041a6bd764} + \field{labelalpha}{Hos98} + \field{sortinit}{H} +- \field{sortinithash}{5f15a7bc777ad49ff15aa4d2831b1681} ++ \field{sortinithash}{6db6145dae8dc9e1271a8d556090b50a} + \true{singletitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -389,7 +389,7 @@ my $t1 = q+ \entry{t1}{misc}{} + \field{extraname}{1} + \field{labelalpha}{Bro92} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \true{uniquework} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -419,7 +419,7 @@ my $t2 = q| \entry{t2}{misc}{} + \field{extraname}{2} + \field{labelalpha}{Bro94} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \true{uniquework} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -452,7 +452,7 @@ my $anon1 = q| \entry{anon1}{unpublished}{} + \strng{shortauthorfullhash}{9873a6cc65c553faa2b21aaad626fe4b} + \field{labelalpha}{XAn35} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \true{uniquework} + \field{labelnamesource}{shortauthor} +@@ -491,7 +491,7 @@ my $anon2 = q| \entry{anon2}{unpublished}{} + \strng{shortauthorfullhash}{f64c29e89ea49402b997956610b58ef6} + \field{labelalpha}{YAn39} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \true{uniquework} + \field{labelnamesource}{shortauthor} +@@ -526,7 +526,7 @@ my $url1 = q| \entry{url1}{misc}{} + \field{extraname}{4} + \field{labelalpha}{Ali05} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \field{extraalpha}{4} + \field{labelnamesource}{author} + \field{year}{2005} +@@ -710,7 +710,7 @@ my $isbn1 = q| \entry{isbn1}{misc}{} + \field{extraname}{1} + \field{labelalpha}{Flu} + \field{sortinit}{F} +- \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72} ++ \field{sortinithash}{fb0c0faa89eb6abae8213bf60e6799ea} + \field{extraalpha}{1} + \field{labelnamesource}{author} + \field{isbn}{978-0-8165-2066-4} +@@ -735,7 +735,7 @@ my $isbn2 = q| \entry{isbn2}{misc}{} + \field{extraname}{2} + \field{labelalpha}{Flu} + \field{sortinit}{F} +- \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72} ++ \field{sortinithash}{fb0c0faa89eb6abae8213bf60e6799ea} + \field{extraalpha}{2} + \field{labelnamesource}{author} + \field{isbn}{978-0-8165-2066-4} +@@ -778,7 +778,7 @@ my $clone1 = q| \entry{snk1}{book}{} + \field{extraname}{2} + \field{labelalpha}{vDoe} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{extraalpha}{2} + \field{labelnamesource}{author} + \endentry +@@ -807,7 +807,7 @@ my $clone2 = q| \entry{clone-snk1}{book}{} + \field{extraname}{1} + \field{labelalpha}{vDoe} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{extraalpha}{1} + \field{labelnamesource}{author} + \field{addendum}{add} +@@ -839,7 +839,7 @@ my $ent1 = q| \entry{ent1}{book}{} + \strng{authorfullhash}{b2536a425d549b46de5f21c4d468050a} + \field{labelalpha}{SdB} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{singletitle} + \field{labelnamesource}{author} + \endentry +@@ -862,7 +862,7 @@ my $verb1 = q| \entry{verb1}{book}{} + \strng{authorfullhash}{cac5a25f503e71f5ef28f474e14007b6} + \field{labelalpha}{All} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \field{labelnamesource}{author} + \verb{verba} +diff --git a/t/biblatexml.t b/t/biblatexml.t +index ad9ad25..0959bfa 100644 +--- a/t/biblatexml.t ++++ b/t/biblatexml.t +@@ -111,7 +111,7 @@ my $l1 = q| \entry{bltx1}{misc}{useprefix=false} + \strng{translatornamehash}{b44eba830fe9817fbe8e53c82f1cbe04} + \strng{translatorfullhash}{b44eba830fe9817fbe8e53c82f1cbe04} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -158,7 +158,7 @@ my $l1 = q| \entry{bltx1}{misc}{useprefix=false} + + my $l2 = q| \entry{loopkey:a}{book}{} + \field{sortinit}{0} +- \field{sortinithash}{168ad0c7c5ed09f1d28c6675717b5b03} ++ \field{sortinithash}{bcf7a1f4afb88b7299f988caccb80d1c} + \endentry + |; + +diff --git a/t/crossrefs.t b/t/crossrefs.t +index 915b52b..b6191c6 100644 +--- a/t/crossrefs.t ++++ b/t/crossrefs.t +@@ -82,7 +82,7 @@ my $cr1 = q| \entry{cr1}{inbook}{} + \strng{editornamehash}{c129df5593fdaa7475548811bfbb227d} + \strng{editorfullhash}{c129df5593fdaa7475548811bfbb227d} + \field{sortinit}{G} +- \field{sortinithash}{5e8d2bf9d38de41b1528bd307546008f} ++ \field{sortinithash}{62eb2aa29549e4fdbd3cb154ec5711cb} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -131,7 +131,7 @@ my $cr2 = q| \entry{cr2}{inbook}{} + \strng{editornamehash}{c129df5593fdaa7475548811bfbb227d} + \strng{editorfullhash}{c129df5593fdaa7475548811bfbb227d} + \field{sortinit}{F} +- \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72} ++ \field{sortinithash}{fb0c0faa89eb6abae8213bf60e6799ea} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -165,7 +165,7 @@ my $cr_m = q| \entry{cr_m}{book}{} + \strng{editornamehash}{c129df5593fdaa7475548811bfbb227d} + \strng{editorfullhash}{c129df5593fdaa7475548811bfbb227d} + \field{sortinit}{G} +- \field{sortinithash}{5e8d2bf9d38de41b1528bd307546008f} ++ \field{sortinithash}{62eb2aa29549e4fdbd3cb154ec5711cb} + \true{crossrefsource} + \true{uniquetitle} + \field{labeltitlesource}{title} +@@ -203,7 +203,7 @@ my $cr3 = q| \entry{cr3}{inbook}{} + \strng{editornamehash}{a1f5c22413396d599ec766725b226735} + \strng{editorfullhash}{a1f5c22413396d599ec766725b226735} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -248,7 +248,7 @@ my $cr4 = q| \entry{cr4}{inbook}{} + \strng{editornamehash}{6ea89bd4958743a20b70fe17647d6af5} + \strng{editorfullhash}{6ea89bd4958743a20b70fe17647d6af5} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -279,7 +279,7 @@ my $crt = q| \entry{crt}{book}{} + \strng{editornamehash}{a1f5c22413396d599ec766725b226735} + \strng{editorfullhash}{a1f5c22413396d599ec766725b226735} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \true{uniquetitle} + \field{labeltitlesource}{title} + \field{title}{Beasts of the Burbling Burns} +@@ -315,7 +315,7 @@ my $cr6 = q| \entry{cr6}{inproceedings}{} + \strng{editorfullhash}{344a7f427fb765610ef96eb7bce95257} + \field{extraname}{2} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{uniquetitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -366,7 +366,7 @@ my $cr7 = q| \entry{cr7}{inbook}{} + \strng{bookauthorfullhash}{91a1dd4aeed3c4ec29ca74c4e778be5f} + \field{extraname}{1} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{uniquetitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -401,7 +401,7 @@ my $cr8 = q| \entry{cr8}{incollection}{} + \strng{authorfullhash}{3d449e56eb3ca1ae80dc99a18d689795} + \field{extraname}{4} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -431,7 +431,7 @@ my $xr1 = q| \entry{xr1}{inbook}{} + \strng{authornamehash}{e0ecc4fc668ee499d1afba44e1ac064d} + \strng{authorfullhash}{e0ecc4fc668ee499d1afba44e1ac064d} + \field{sortinit}{Z} +- \field{sortinithash}{156173bd08b075d7295bc3e0f4735a04} ++ \field{sortinithash}{8f7b480688e809b50b6f6577b16f3db5} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -460,7 +460,7 @@ my $xr2 = q| \entry{xr2}{inbook}{} + \strng{authornamehash}{6afa09374ecfd6b394ce714d2d9709c7} + \strng{authorfullhash}{6afa09374ecfd6b394ce714d2d9709c7} + \field{sortinit}{I} +- \field{sortinithash}{320bc8fe8101b9376f9f21cd507de0e8} ++ \field{sortinithash}{9417e9a1288a9371e2691d999083ed39} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -491,7 +491,7 @@ my $xrm = q| \entry{xrm}{book}{} + \strng{editornamehash}{809950f9b59ae207092b909a19dcb27b} + \strng{editorfullhash}{809950f9b59ae207092b909a19dcb27b} + \field{sortinit}{C} +- \field{sortinithash}{963e9d84a3da2344e8833203de5aed05} ++ \field{sortinithash}{4c244ceae61406cdc0cc2ce1cb1ff703} + \true{xrefsource} + \true{uniquetitle} + \field{labeltitlesource}{title} +@@ -516,7 +516,7 @@ my $xr3 = q| \entry{xr3}{inbook}{} + \strng{authornamehash}{9788055665b9bb4b37c776c3f6b74f16} + \strng{authorfullhash}{9788055665b9bb4b37c776c3f6b74f16} + \field{sortinit}{N} +- \field{sortinithash}{f7242c3ed3dc50029fca1be76c497c7c} ++ \field{sortinithash}{98cf339a479c0454fe09153a08675a15} + \true{singletitle} + \true{uniquetitle} + \true{uniquework} +@@ -546,7 +546,7 @@ my $xrt = q| \entry{xrt}{book}{} + \strng{editornamehash}{bf7d6b02f3e073913e5bfe5059508dd5} + \strng{editorfullhash}{bf7d6b02f3e073913e5bfe5059508dd5} + \field{sortinit}{K} +- \field{sortinithash}{9fd838a31ba64d981e8f44562bd33f89} ++ \field{sortinithash}{d3edc18d54b9438a72c24c925bfb38f4} + \true{uniquetitle} + \field{labeltitlesource}{title} + \field{title}{Kings, Cork and Calculation} +@@ -572,7 +572,7 @@ my $xr4 = q| \entry{xr4}{inbook}{} + \strng{authorfullhash}{7804ffef086c0c4686c235807f5cb502} + \field{extraname}{1} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{origyear}{1933} +@@ -600,7 +600,7 @@ my $mxr = q| \entry{mxr}{inbook}{} + \strng{authorfullhash}{7804ffef086c0c4686c235807f5cb502} + \field{extraname}{2} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{origyear}{1933} +@@ -625,7 +625,7 @@ my $mcr = q| \entry{mcr}{inbook}{} + \strng{authorfullhash}{7804ffef086c0c4686c235807f5cb502} + \field{extraname}{3} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{origyear}{1933} +@@ -660,7 +660,7 @@ my $ccr1 = q| \entry{ccr2}{book}{} + \strng{editorfullhash}{cfee758a1c82df2e26af1985e061bb0a} + \field{extraname}{1} + \field{sortinit}{V} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \true{uniquetitle} + \true{uniquework} + \field{labelnamesource}{author} +@@ -694,7 +694,7 @@ my $ccr2 = q| \entry{ccr3}{inbook}{} + \strng{editornamehash}{cfee758a1c82df2e26af1985e061bb0a} + \strng{editorfullhash}{cfee758a1c82df2e26af1985e061bb0a} + \field{sortinit}{P} +- \field{sortinithash}{8d51b3d5b78d75b54308d706b9bbe285} ++ \field{sortinithash}{bb5b15f2db90f7aef79bb9e83defefcb} + \true{uniquetitle} + \field{labeltitlesource}{title} + \field{booktitle}{Misc etc.} +@@ -726,7 +726,7 @@ my $ccr3 = q| \entry{ccr4}{inbook}{} + + my $s1 = q| \entry{s1}{inbook}{} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{uniquetitle} + \field{labeltitlesource}{title} + \strng{crossref}{s2} +@@ -760,7 +760,7 @@ my $xc2 = q| \entry{xc2}{inbook}{} + \strng{bookauthorfullhash}{1a0f7d518cccdad859a74412ef956474} + \field{extraname}{2} + \field{sortinit}{C} +- \field{sortinithash}{963e9d84a3da2344e8833203de5aed05} ++ \field{sortinithash}{4c244ceae61406cdc0cc2ce1cb1ff703} + \true{xrefsource} + \field{labelnamesource}{author} + \field{booktitle}{Title} +@@ -769,7 +769,7 @@ my $xc2 = q| \entry{xc2}{inbook}{} + + my $b1 = q| \entry{b1}{inbook}{} + \field{sortinit}{2} +- \field{sortinithash}{cbff857e587bcb4635511624d773949e} ++ \field{sortinithash}{ed39bb39cf854d5250e95b1c1f94f4ed} + \strng{crossref}{b2} + \field{day}{3} + \field{month}{3} +@@ -803,7 +803,7 @@ my $sup1 = q| \entry{sup1}{mvbook}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{3} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{crossrefsource} + \true{singletitle} + \field{labelnamesource}{author} +@@ -828,7 +828,7 @@ my $sup2 = q| \entry{sup2}{book}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{1} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{singletitle} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/datalists.t b/t/datalists.t +index 3081cc4..4855e3d 100644 +--- a/t/datalists.t ++++ b/t/datalists.t +@@ -187,7 +187,7 @@ my $K11 = q| \entry{K11}{book}{} + \strng{authornamehash}{4edc280a0ef229f9c061e3b121b17482} + \strng{authorfullhash}{4edc280a0ef229f9c061e3b121b17482} + \field{sortinit}{a} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -219,7 +219,7 @@ my $K12 = q| \entry{K12}{book}{} + \strng{authornamehash}{a846a485fc9cbb59b0ebeedd6ac637e4} + \strng{authorfullhash}{a846a485fc9cbb59b0ebeedd6ac637e4} + \field{sortinit}{Z} +- \field{sortinithash}{156173bd08b075d7295bc3e0f4735a04} ++ \field{sortinithash}{8f7b480688e809b50b6f6577b16f3db5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +diff --git a/t/dateformats.t b/t/dateformats.t +index 6beb567..0d5072a 100644 +--- a/t/dateformats.t ++++ b/t/dateformats.t +@@ -88,7 +88,7 @@ my $l13c = q| \entry{L13}{book}{} + \strng{authorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{3} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -126,7 +126,7 @@ my $l14 = q| \entry{L14}{book}{} + \strng{authorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{4} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{3} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -168,7 +168,7 @@ my $l15 = q| \entry{L15}{book}{} + \strng{authorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{12} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{4} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -201,7 +201,7 @@ my $l16 = q| \entry{L16}{proceedings}{} + \strng{editorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{13} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{7} + \field{extradatescope}{labelyear} + \field{labeldatesource}{event} +@@ -240,7 +240,7 @@ my $l17 = q| \entry{L17}{proceedings}{} + \strng{editorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{5} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{4} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -299,7 +299,7 @@ my $l17c = q| \entry{L17}{proceedings}{} + \strng{editorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{5} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{orig} + \field{labelnamesource}{editor} +@@ -357,7 +357,7 @@ my $l17e = q| \entry{L17}{proceedings}{} + \strng{editorfullhash}{8c77336299b25bdada7bf8038f46722f} + \field{extraname}{5} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{event} + \field{labelnamesource}{editor} +@@ -479,7 +479,7 @@ my $era1 = q| \entry{era1}{article}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{9} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -512,7 +512,7 @@ my $era2 = q| \entry{era2}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{10} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -546,7 +546,7 @@ my $era3 = q| \entry{era3}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{11} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -580,7 +580,7 @@ my $era4 = q| \entry{era4}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{6} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -622,7 +622,7 @@ my $time1 = q| \entry{time1}{article}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{2} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -671,7 +671,7 @@ my $range1 = q| \entry{range1}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{7} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{1} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -712,7 +712,7 @@ my $range2 = q| \entry{range2}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{8} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{2} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -753,7 +753,7 @@ my $season1 = q| \entry{season1}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{1} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -785,7 +785,7 @@ my $unspec1 = q| \entry{unspec1}{inproceedings}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{4} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -838,7 +838,7 @@ my $unspec2 = q| \entry{unspec2}{article}{} + \strng{authorfullhash}{556c8dba145b472e6a8598d506f7cbe2} + \field{extraname}{3} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +diff --git a/t/encoding.t b/t/encoding.t +index a150b4f..36d9955 100644 +--- a/t/encoding.t ++++ b/t/encoding.t +@@ -52,7 +52,7 @@ my $encode1 = q| \entry{testŠ}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +@@ -82,7 +82,7 @@ my $encode2 = q| \entry{test1}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +@@ -112,7 +112,7 @@ my $encode3 = q| \entry{test1}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +@@ -142,7 +142,7 @@ my $encode5 = q| \entry{test}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +@@ -172,7 +172,7 @@ my $encode6 = q| \entry{test}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +@@ -202,7 +202,7 @@ my $encode7 = q| \entry{test}{book}{} + \strng{authorfullhash}{06a47edae2e847800cfd78323a0e6be8} + \field{labelalpha}{Enc99} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{labeldatesource}{year} + \true{singletitle} + \field{labelnamesource}{author} +diff --git a/t/names.t b/t/names.t +index 7228042..b73f2ed 100644 +--- a/t/names.t ++++ b/t/names.t +@@ -188,7 +188,7 @@ my $l1 = q| \entry{L1}{book}{} + \strng{authornamehash}{72287a68c1714cb1b9f4ab9e03a88b96} + \strng{authorfullhash}{72287a68c1714cb1b9f4ab9e03a88b96} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \field{labelnamesource}{author} + \endentry + |; +@@ -208,7 +208,7 @@ my $l2 = q| \entry{L2}{book}{} + \strng{authornamehash}{2098d59d0f19a2e003ee06c1aa750d57} + \strng{authorfullhash}{2098d59d0f19a2e003ee06c1aa750d57} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{labelnamesource}{author} + \endentry + |; +@@ -228,7 +228,7 @@ my $l3 = q| \entry{L3}{book}{} + \strng{authornamehash}{c8b06fe88bde128b25eb0b3b1cc5837c} + \strng{authorfullhash}{c8b06fe88bde128b25eb0b3b1cc5837c} + \field{sortinit}{C} +- \field{sortinithash}{963e9d84a3da2344e8833203de5aed05} ++ \field{sortinithash}{4c244ceae61406cdc0cc2ce1cb1ff703} + \field{labelnamesource}{author} + \endentry + |; +@@ -248,7 +248,7 @@ my $l4 = q| \entry{L4}{book}{} + \strng{authornamehash}{5ec958b850c0c2de7de7c42c84b9c419} + \strng{authorfullhash}{5ec958b850c0c2de7de7c42c84b9c419} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labelnamesource}{author} + \endentry + |; +@@ -270,7 +270,7 @@ my $l5 = q| \entry{L5}{book}{} + \strng{authornamehash}{c6b9d281cc1ff3f35570f76f463d4244} + \strng{authorfullhash}{c6b9d281cc1ff3f35570f76f463d4244} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -292,7 +292,7 @@ my $l6 = q| \entry{L6}{book}{} + \strng{authornamehash}{5fd24d3d1608a310ec205a6b201a5495} + \strng{authorfullhash}{5fd24d3d1608a310ec205a6b201a5495} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -314,7 +314,7 @@ my $l7 = q| \entry{L7}{book}{} + \strng{authornamehash}{98edb0b90251df22b74328d9227eceb7} + \strng{authorfullhash}{98edb0b90251df22b74328d9227eceb7} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -336,7 +336,7 @@ my $l8 = q| \entry{L8}{book}{} + \strng{authornamehash}{1211dc8dbbc191cbcab4da3c3c1fc48a} + \strng{authorfullhash}{1211dc8dbbc191cbcab4da3c3c1fc48a} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -356,7 +356,7 @@ my $l9 = q| \entry{L9}{book}{} + \strng{authornamehash}{bae61a889ab149a6deafe45333204cf0} + \strng{authorfullhash}{bae61a889ab149a6deafe45333204cf0} + \field{sortinit}{I} +- \field{sortinithash}{320bc8fe8101b9376f9f21cd507de0e8} ++ \field{sortinithash}{9417e9a1288a9371e2691d999083ed39} + \field{labelnamesource}{author} + \endentry + |; +@@ -379,7 +379,7 @@ my $l10 = q| \entry{L10}{book}{} + \strng{authornamehash}{37b4325752e394ddfb2fc810f6c88e27} + \strng{authorfullhash}{37b4325752e394ddfb2fc810f6c88e27} + \field{sortinit}{J} +- \field{sortinithash}{fce5f8d0bd05e8d93f3dbe21c78897ca} ++ \field{sortinithash}{c45040a764d616897e7f5b30174d7b92} + \field{labelnamesource}{author} + \endentry + |; +@@ -402,7 +402,7 @@ my $l10a = q| \entry{L10a}{book}{} + \strng{authornamehash}{7bf2c9d8b89a1930ee91bfddcaf20c9c} + \strng{authorfullhash}{7bf2c9d8b89a1930ee91bfddcaf20c9c} + \field{sortinit}{P} +- \field{sortinithash}{8d51b3d5b78d75b54308d706b9bbe285} ++ \field{sortinithash}{bb5b15f2db90f7aef79bb9e83defefcb} + \field{labelnamesource}{author} + \endentry + |; +@@ -427,7 +427,7 @@ my $l11 = q| \entry{L11}{book}{} + \strng{authornamehash}{9f48d231be68c9435fab4faca55a5caf} + \strng{authorfullhash}{9f48d231be68c9435fab4faca55a5caf} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -449,7 +449,7 @@ my $l12 = q| \entry{L12}{book}{} + \strng{authornamehash}{d7ca88c13a8f7ce1c23e920010a31f83} + \strng{authorfullhash}{d7ca88c13a8f7ce1c23e920010a31f83} + \field{sortinit}{d} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \true{uniqueprimaryauthor} + \field{labelnamesource}{author} + \endentry +@@ -470,7 +470,7 @@ my $l13 = q| \entry{L13}{book}{} + \strng{authornamehash}{227ac48bb788a658cfaa4eefc71ff0cc} + \strng{authorfullhash}{227ac48bb788a658cfaa4eefc71ff0cc} + \field{sortinit}{V} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -490,7 +490,7 @@ my $l14 = q| \entry{L14}{book}{} + \strng{authornamehash}{779475052c17ed56dc3be900d0dfdf87} + \strng{authorfullhash}{779475052c17ed56dc3be900d0dfdf87} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -513,7 +513,7 @@ my $l15 = q| \entry{L15}{book}{} + \strng{authorfullhash}{783c636e853e47a854ae034ebe9dde62} + \field{extraname}{1} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -536,7 +536,7 @@ my $l16 = q| \entry{L16}{book}{} + \strng{authorfullhash}{783c636e853e47a854ae034ebe9dde62} + \field{extraname}{2} + \field{sortinit}{v} +- \field{sortinithash}{75dd7385c90b2252c3ae853a80ca853b} ++ \field{sortinithash}{02432525618c08e2b03cac47c19764af} + \field{labelnamesource}{author} + \endentry + |; +@@ -557,7 +557,7 @@ my $l17 = q| \entry{L17}{book}{} + \strng{authorfullhash}{b51f667a3384d92ea5458ba80716bff7} + \field{extraname}{1} + \field{sortinit}{L} +- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} ++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} + \field{labelnamesource}{author} + \endentry + |; +@@ -578,7 +578,7 @@ my $l18 = q| \entry{L18}{book}{} + \strng{authorfullhash}{b51f667a3384d92ea5458ba80716bff7} + \field{extraname}{2} + \field{sortinit}{L} +- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} ++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} + \field{labelnamesource}{author} + \endentry + |; +@@ -598,7 +598,7 @@ my $l19 = q| \entry{L19}{book}{} + \strng{authornamehash}{83caa52f21f97e572dd3267bdf62978a} + \strng{authorfullhash}{83caa52f21f97e572dd3267bdf62978a} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \field{labelnamesource}{author} + \endentry + |; +@@ -618,7 +618,7 @@ my $l19a = q| \entry{L19a}{book}{} + \strng{authornamehash}{0963f6904ccfeaac2770c5882a587001} + \strng{authorfullhash}{0963f6904ccfeaac2770c5882a587001} + \field{sortinit}{L} +- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} ++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} + \field{labelnamesource}{author} + \endentry + |; +@@ -639,7 +639,7 @@ my $l20 = q| \entry{L20}{book}{} + \strng{authornamehash}{5f26c2f3b33095d5b005714893f4d698} + \strng{authorfullhash}{5f26c2f3b33095d5b005714893f4d698} + \field{sortinit}{F} +- \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72} ++ \field{sortinithash}{fb0c0faa89eb6abae8213bf60e6799ea} + \field{labelnamesource}{author} + \endentry + |; +@@ -660,7 +660,7 @@ my $l21 = q| \entry{L21}{book}{} + \strng{authorfullhash}{4389a3c0dc7da74487b50808ba9436ad} + \field{extraname}{1} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -681,7 +681,7 @@ my $l22u = q| \entry{L22}{book}{} + \strng{authorfullhash}{e58b861545799d0eaf883402a882126e} + \field{extraname}{1} + \field{sortinit}{Š} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -703,7 +703,7 @@ my $l22 = q| \entry{L22}{book}{} + \strng{authorfullhash}{e58b861545799d0eaf883402a882126e} + \field{extraname}{1} + \field{sortinit}{\v{S}} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \true{uniqueprimaryauthor} + \field{labelnamesource}{author} + \endentry +@@ -726,7 +726,7 @@ my $l23 = q| \entry{L23}{book}{} + \strng{authorfullhash}{4389a3c0dc7da74487b50808ba9436ad} + \field{extraname}{3} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -747,7 +747,7 @@ my $l24 = q| \entry{L24}{book}{} + \strng{authorfullhash}{e58b861545799d0eaf883402a882126e} + \field{extraname}{2} + \field{sortinit}{Š} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -765,7 +765,7 @@ my $l25 = q| \entry{L25}{book}{} + \strng{authornamehash}{d7cd2c5ea0848abc3e90609558b84a45} + \strng{authorfullhash}{d7cd2c5ea0848abc3e90609558b84a45} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \field{labelnamesource}{author} + \endentry + |; +@@ -783,7 +783,7 @@ my $l26 = q| \entry{L26}{book}{} + \strng{authornamehash}{8eee1dbafdbd0a4b73157e60f18b4784} + \strng{authorfullhash}{8eee1dbafdbd0a4b73157e60f18b4784} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -791,7 +791,7 @@ my $l26 = q| \entry{L26}{book}{} + # Malformed anyway but a decent test + my $l28 = q| \entry{L28}{book}{} + \field{sortinit}{0} +- \field{sortinithash}{168ad0c7c5ed09f1d28c6675717b5b03} ++ \field{sortinithash}{bcf7a1f4afb88b7299f988caccb80d1c} + \warn{\item Name "Deux et al.,, O." is malformed (consecutive commas): skipping name} + \endentry + |; +@@ -810,7 +810,7 @@ my $l29 = q| \entry{L29}{book}{} + \strng{authornamehash}{27ad192a3a715aa89152b2a4ee392e8c} + \strng{authorfullhash}{27ad192a3a715aa89152b2a4ee392e8c} + \field{sortinit}{U} +- \field{sortinithash}{36a2444f5238e0dcf4bb59704df6624d} ++ \field{sortinithash}{77a6935510e008adcf5b555e7b4f0711} + \field{labelnamesource}{author} + \endentry + |; +@@ -850,7 +850,7 @@ my $l31 = q| \entry{L31}{book}{} + \strng{translatornamehash}{29c3ff92fff79d09a8b44d2f775de0b1} + \strng{translatorfullhash}{29c3ff92fff79d09a8b44d2f775de0b1} + \field{sortinit}{\~{Z}} +- \field{sortinithash}{156173bd08b075d7295bc3e0f4735a04} ++ \field{sortinithash}{8f7b480688e809b50b6f6577b16f3db5} + \true{uniqueprimaryauthor} + \field{labelnamesource}{author} + \endentry +diff --git a/t/options.t b/t/options.t +index 940a282..c14d694 100644 +--- a/t/options.t ++++ b/t/options.t +@@ -100,7 +100,7 @@ my $l1 = q| \entry{L1}{book}{} + \strng{authornamehash}{bd051a2f7a5f377e3a62581b0e0f8577} + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -137,7 +137,7 @@ my $l2 = q| \entry{L2}{book}{maxcitenames=3,maxbibnames=3,maxsortnames=3,maxi + \strng{authornamehash}{19eec87c959944d6d9c72434a42856ba} + \strng{authorfullhash}{19eec87c959944d6d9c72434a42856ba} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -169,7 +169,7 @@ my $l3 = q| \entry{L3}{book}{blah=10} + \strng{authornamehash}{490250da1f3b92580d97563dc96c6c84} + \strng{authorfullhash}{490250da1f3b92580d97563dc96c6c84} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +diff --git a/t/related-entries.t b/t/related-entries.t +index 53dce64..b38ac79 100644 +--- a/t/related-entries.t ++++ b/t/related-entries.t +@@ -56,7 +56,7 @@ my $k1 = q| \entry{key1}{article}{} + \strng{authorfullhash}{a517747c3d12f99244ae598910d979c5} + \field{extraname}{1} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -95,7 +95,7 @@ my $k2 = q| \entry{key2}{inbook}{} + \strng{authorfullhash}{a517747c3d12f99244ae598910d979c5} + \field{extraname}{2} + \field{sortinit}{2} +- \field{sortinithash}{cbff857e587bcb4635511624d773949e} ++ \field{sortinithash}{ed39bb39cf854d5250e95b1c1f94f4ed} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -243,7 +243,7 @@ my $kck4 = q| \entry{caf8e34be07426ae7127c1b4829983c1}{inbook}{dataonly,useed + + my $c1 = q| \entry{c1}{book}{} + \field{sortinit}{3} +- \field{sortinithash}{a4b52e5432884761f50fb9571273b93e} ++ \field{sortinithash}{a37a8ef248a93c322189792c34fc68c9} + \field{related}{9ab62b5ef34a985438bfdf7ee0102229} + \endentry + |; +@@ -330,7 +330,7 @@ my $un1 = q| \entry{kullback}{book}{} + \strng{authorfullhash}{34c5bbf9876c37127c3abe4e7d7a7198} + \field{extraname}{1} + \field{sortinit}{5} +- \field{sortinithash}{3c19c3776b658b3558e9e2e4840c01e2} ++ \field{sortinithash}{5dd416adbafacc8226114bc0202d5fdd} + \field{extradatescope}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -364,7 +364,7 @@ my $un2 = q| \entry{kullback:related}{book}{} + \strng{authorfullhash}{34c5bbf9876c37127c3abe4e7d7a7198} + \field{extraname}{2} + \field{sortinit}{6} +- \field{sortinithash}{57e57fb8451e7fcfa45d1e069f6d3136} ++ \field{sortinithash}{7851c86048328b027313775d8fbd2131} + \field{extradatescope}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/remote-files.t b/t/remote-files.t +index c747dcd..6f4cf4d 100644 +--- a/t/remote-files.t ++++ b/t/remote-files.t +@@ -86,7 +86,7 @@ my $cu1 = q| \entry{citeulike:8283461}{article}{} + \strng{authornamehash}{a700cc0bdce78f5a1f50ff6314ff6f2a} + \strng{authorfullhash}{094b095bbb7ac93fdd3e2eafdcec0cac} + \field{sortinit}{M} +- \field{sortinithash}{cfd219b90152c06204fab207bc6c7cab} ++ \field{sortinithash}{2e5c2f51f7fa2d957f3206819bf86dc3} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} +@@ -133,7 +133,7 @@ my $dl1 = q| \entry{AbdelbarH98}{article}{} + \strng{authornamehash}{bb887c5d0458bfb1f3f7e6afc8d1def4} + \strng{authorfullhash}{bb887c5d0458bfb1f3f7e6afc8d1def4} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \field{extradatescope}{labelyear} + \field{labeldatesource}{year} + \field{labelnamesource}{author} +diff --git a/t/set-dynamic.t b/t/set-dynamic.t +index 9ab5fdd..0846f8a 100644 +--- a/t/set-dynamic.t ++++ b/t/set-dynamic.t +@@ -51,7 +51,7 @@ my $out = $biber->get_output_obj; + my $string1 = q| \entry{DynSet}{set}{} + \set{Dynamic1,Dynamic2,Dynamic3} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \endentry + |; + +@@ -71,7 +71,7 @@ my $string2 = q| \entry{Dynamic1}{book}{} + \strng{authornamehash}{252caa7921a061ca92087a1a52f15b78} + \strng{authorfullhash}{252caa7921a061ca92087a1a52f15b78} + \field{sortinit}{8} +- \field{sortinithash}{07edf88d4ea82509b9c4b4d13f41c452} ++ \field{sortinithash}{1b24cab5087933ef0826a7cd3b99e994} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -98,7 +98,7 @@ my $string3 = q| \entry{Dynamic2}{book}{} + \strng{authornamehash}{894a5fe6de820f5dcce84a65581667f4} + \strng{authorfullhash}{894a5fe6de820f5dcce84a65581667f4} + \field{sortinit}{9} +- \field{sortinithash}{1dd72ab054147731c9d824b49aba0534} ++ \field{sortinithash}{54047ffb55bdefa0694bbd554c1b11a0} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -124,7 +124,7 @@ my $string4 = q| \entry{Dynamic3}{book}{} + \strng{authornamehash}{fc3cc97631ceaecdde2aee6cc60ab42b} + \strng{authorfullhash}{fc3cc97631ceaecdde2aee6cc60ab42b} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -151,7 +151,7 @@ my $string5 = q| \entry{Dynamic3}{book}{} + \strng{authornamehash}{fc3cc97631ceaecdde2aee6cc60ab42b} + \strng{authorfullhash}{fc3cc97631ceaecdde2aee6cc60ab42b} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/set-legacy.t b/t/set-legacy.t +index 4e56991..9d40acb 100644 +--- a/t/set-legacy.t ++++ b/t/set-legacy.t +@@ -45,7 +45,7 @@ my $out = $biber->get_output_obj; + my $string1 = q| \entry{Elias1955}{set}{} + \set{Elias1955a,Elias1955b} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \endentry + |; + +diff --git a/t/set-static.t b/t/set-static.t +index 1e45d4d..a6cbe73 100644 +--- a/t/set-static.t ++++ b/t/set-static.t +@@ -47,7 +47,7 @@ my $out = $biber->get_output_obj; + my $string1 = q| \entry{Static1}{set}{} + \set{Static2,Static4,Static3} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{annotation}{Some notes} + \endentry + |; +@@ -68,7 +68,7 @@ my $string2 = q| \entry{Static2}{book}{} + \strng{authornamehash}{43874d80d7ce68027102819f16c47df1} + \strng{authorfullhash}{43874d80d7ce68027102819f16c47df1} + \field{sortinit}{B} +- \field{sortinithash}{276475738cc058478c1677046f857703} ++ \field{sortinithash}{8de16967003c7207dae369d874f1456e} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -94,7 +94,7 @@ my $string3 = q| \entry{Static3}{book}{} + \strng{authornamehash}{22dafa5cd57bb5dd7f3e3bab98fd539c} + \strng{authorfullhash}{22dafa5cd57bb5dd7f3e3bab98fd539c} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -119,7 +119,7 @@ my $string4 = q| \entry{Static4}{book}{} + \strng{authornamehash}{da80091c8cd89e5269bd55af1bd5d2fa} + \strng{authorfullhash}{da80091c8cd89e5269bd55af1bd5d2fa} + \field{sortinit}{C} +- \field{sortinithash}{963e9d84a3da2344e8833203de5aed05} ++ \field{sortinithash}{4c244ceae61406cdc0cc2ce1cb1ff703} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -145,7 +145,7 @@ my $string5 = q| \entry{Static2}{book}{} + \strng{authornamehash}{43874d80d7ce68027102819f16c47df1} + \strng{authorfullhash}{43874d80d7ce68027102819f16c47df1} + \field{sortinit}{1} +- \field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29} ++ \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/skips.t b/t/skips.t +index 7c80d39..caa835f 100644 +--- a/t/skips.t ++++ b/t/skips.t +@@ -50,7 +50,7 @@ my $set1 = q| \entry{seta}{set}{} + \field{labelalpha}{Doe10} + \field{extraalpha}{1} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \endentry + |; + +@@ -70,7 +70,7 @@ my $set2 = q| \entry{set:membera}{book}{} + \strng{authornamehash}{bd051a2f7a5f377e3a62581b0e0f8577} + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labeldatesource}{} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -97,7 +97,7 @@ my $set3 = q| \entry{set:memberb}{book}{} + \strng{authornamehash}{bd051a2f7a5f377e3a62581b0e0f8577} + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labeldatesource}{} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -123,7 +123,7 @@ my $set4 = q| \entry{set:memberc}{book}{} + \strng{authornamehash}{bd051a2f7a5f377e3a62581b0e0f8577} + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labeldatesource}{} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -150,7 +150,7 @@ my $noset1 = q| \entry{noseta}{book}{} + \field{extraname}{3} + \field{labelalpha}{Doe10} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{2} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -180,7 +180,7 @@ my $noset2 = q| \entry{nosetb}{book}{} + \field{extraname}{4} + \field{labelalpha}{Doe10} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{3} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -210,7 +210,7 @@ my $noset3 = q| \entry{nosetc}{book}{} + \field{extraname}{5} + \field{labelalpha}{Doe10} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extradate}{4} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} +@@ -244,7 +244,7 @@ my $sk4 = q| \entry{skip4}{article}{dataonly} + \strng{authornamehash}{bd051a2f7a5f377e3a62581b0e0f8577} + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{labeldatesource}{year} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/sort-complex.t b/t/sort-complex.t +index aa3e564..d52db08 100644 +--- a/t/sort-complex.t ++++ b/t/sort-complex.t +@@ -123,7 +123,7 @@ my $l4 = q| \entry{L4}{book}{} + \field{extraname}{2} + \field{labelalpha}{Doe\textbf{+}95} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extraalpha}{2} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -155,7 +155,7 @@ my $l1 = q| \entry{L1}{book}{} + \field{extraname}{1} + \field{labelalpha}{Doe95} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extraalpha}{1} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -187,7 +187,7 @@ my $l2 = q| \entry{L2}{book}{} + \field{extraname}{3} + \field{labelalpha}{Doe95} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extraalpha}{3} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -219,7 +219,7 @@ my $l3 = q| \entry{L3}{book}{} + \field{extraname}{2} + \field{labelalpha}{Doe95} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extraalpha}{2} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -253,7 +253,7 @@ my $l5 = q| \entry{L5}{book}{} + \field{extraname}{1} + \field{labelalpha}{Doe\textbf{+}95} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \field{extraalpha}{1} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/tdata/full-bbl.bbl b/t/tdata/full-bbl.bbl +index 4f168de..07c2fab 100644 +--- a/t/tdata/full-bbl.bbl ++++ b/t/tdata/full-bbl.bbl +@@ -36,7 +36,7 @@ + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{labelalpha}{\emph{A}} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -63,7 +63,7 @@ + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{labelalpha}{\emph{A}} + \field{sortinit}{A} +- \field{sortinithash}{d77c7cdd82ff690d4c3ef13216f92f0b} ++ \field{sortinithash}{a3dcedd53b04d1adfd5ac303ecd5e6fa} + \true{singletitle} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +@@ -90,7 +90,7 @@ + \strng{authorfullhash}{bd051a2f7a5f377e3a62581b0e0f8577} + \field{labelalpha}{\emph{A}} + \field{sortinit}{D} +- \field{sortinithash}{2ef1bd9a78cc71eb74d7231c635177b8} ++ \field{sortinithash}{c438b3d5d027251ba63f5ed538d98af5} + \true{singletitle} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} +diff --git a/t/tdata/full-bblxml.bblxml b/t/tdata/full-bblxml.bblxml +index 9eea7d1..a39a787 100644 +--- a/t/tdata/full-bblxml.bblxml ++++ b/t/tdata/full-bblxml.bblxml +@@ -47,7 +47,7 @@ + 860705eb8ffac6e40507746c7ede79ca + Aks\textbf{+}06 + A +- d77c7cdd82ff690d4c3ef13216f92f0b ++ a3dcedd53b04d1adfd5ac303ecd5e6fa + author + title + Effect of immobilization on catalytic characteristics +@@ -79,7 +79,7 @@ + 9717d2d959a4b18727868ca7928c34b4 + Ang02 + A +- d77c7cdd82ff690d4c3ef13216f92f0b ++ a3dcedd53b04d1adfd5ac303ecd5e6fa + author + shorttitle + A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field +@@ -109,7 +109,7 @@ + + Gla61 + G +- 5e8d2bf9d38de41b1528bd307546008f ++ 62eb2aa29549e4fdbd3cb154ec5711cb + A set entry with three members discussing the standard model of particle physics. + + +@@ -129,7 +129,7 @@ + eb3f242602109f5bdbeb41fdd990fcc0 + eb3f242602109f5bdbeb41fdd990fcc0 + G +- 5e8d2bf9d38de41b1528bd307546008f ++ 62eb2aa29549e4fdbd3cb154ec5711cb + author + title + Nucl. Phys. +@@ -168,7 +168,7 @@ + 1 + Knu86 + K +- 9fd838a31ba64d981e8f44562bd33f89 ++ d3edc18d54b9438a72c24c925bfb38f4 + 1 + author + shorttitle +@@ -207,7 +207,7 @@ + 2 + Knu86 + K +- 9fd838a31ba64d981e8f44562bd33f89 ++ d3edc18d54b9438a72c24c925bfb38f4 + 2 + author + shorttitle +@@ -236,7 +236,7 @@ + d52f05e0199eae563725b4165f4b2520 + Ree58 + R +- da6b42bd3ab22fee61abed031ee405f7 ++ b9c68a358aea118dfa887b6e902414a7 + author + title + An article entry with a series and a volume field. Note the format of the series. If the value of the series field is an integer, this number is printed as an ordinal and the string *series is appended automatically +@@ -286,7 +286,7 @@ + d0ec890e59163c24c111a08d2a4be982 + d0ec890e59163c24c111a08d2a4be982 + S +- 322b1d5276f2f6c1bccdcd15920dbee6 ++ c319cff79d99c853d775f88277d4e45f + author + title + Relativistic groups and analyticity +@@ -317,7 +317,7 @@ + 93f17724cbd884231ef39a73755ef5bb + Sho91 + S +- 322b1d5276f2f6c1bccdcd15920dbee6 ++ c319cff79d99c853d775f88277d4e45f + author + title + An article entry with series, volume, and number fields. Note the format of the series which is a localization key +@@ -353,7 +353,7 @@ + 15e144c72b0b9d10db00ddc6d37a19e6 + 15e144c72b0b9d10db00ddc6d37a19e6 + W +- ecb89ff85896a47dc313960773ac311d ++ 1af34bd8c148ffb32de1494636b49713 + author + title + Phys. Rev. Lett. +@@ -411,7 +411,7 @@ + 860705eb8ffac6e40507746c7ede79ca + Aks\textbf{+}06 + A +- d77c7cdd82ff690d4c3ef13216f92f0b ++ a3dcedd53b04d1adfd5ac303ecd5e6fa + author + title + Effect of immobilization on catalytic characteristics +@@ -443,7 +443,7 @@ + 9717d2d959a4b18727868ca7928c34b4 + Ang02 + A +- d77c7cdd82ff690d4c3ef13216f92f0b ++ a3dcedd53b04d1adfd5ac303ecd5e6fa + author + shorttitle + A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field +@@ -473,7 +473,7 @@ + + Gla61 + G +- 5e8d2bf9d38de41b1528bd307546008f ++ 62eb2aa29549e4fdbd3cb154ec5711cb + A set entry with three members discussing the standard model of particle physics. + + +@@ -493,7 +493,7 @@ + eb3f242602109f5bdbeb41fdd990fcc0 + eb3f242602109f5bdbeb41fdd990fcc0 + G +- 5e8d2bf9d38de41b1528bd307546008f ++ 62eb2aa29549e4fdbd3cb154ec5711cb + author + title + Nucl. Phys. +@@ -532,7 +532,7 @@ + 1 + Knu86 + K +- 9fd838a31ba64d981e8f44562bd33f89 ++ d3edc18d54b9438a72c24c925bfb38f4 + 1 + author + shorttitle +@@ -571,7 +571,7 @@ + 2 + Knu86 + K +- 9fd838a31ba64d981e8f44562bd33f89 ++ d3edc18d54b9438a72c24c925bfb38f4 + 2 + author + shorttitle +@@ -600,7 +600,7 @@ + d52f05e0199eae563725b4165f4b2520 + Ree58 + R +- da6b42bd3ab22fee61abed031ee405f7 ++ b9c68a358aea118dfa887b6e902414a7 + author + title + An article entry with a series and a volume field. Note the format of the series. If the value of the series field is an integer, this number is printed as an ordinal and the string *series is appended automatically +@@ -650,7 +650,7 @@ + d0ec890e59163c24c111a08d2a4be982 + d0ec890e59163c24c111a08d2a4be982 + S +- 322b1d5276f2f6c1bccdcd15920dbee6 ++ c319cff79d99c853d775f88277d4e45f + author + title + Relativistic groups and analyticity +@@ -681,7 +681,7 @@ + 93f17724cbd884231ef39a73755ef5bb + Sho91 + S +- 322b1d5276f2f6c1bccdcd15920dbee6 ++ c319cff79d99c853d775f88277d4e45f + author + title + An article entry with series, volume, and number fields. Note the format of the series which is a localization key +@@ -717,7 +717,7 @@ + 15e144c72b0b9d10db00ddc6d37a19e6 + 15e144c72b0b9d10db00ddc6d37a19e6 + W +- ecb89ff85896a47dc313960773ac311d ++ 1af34bd8c148ffb32de1494636b49713 + author + title + Phys. Rev. Lett. +diff --git a/t/tdata/remote-files.bcf b/t/tdata/remote-files.bcf +index c2d784b..a2a1842 100644 +--- a/t/tdata/remote-files.bcf ++++ b/t/tdata/remote-files.bcf +@@ -1853,12 +1853,12 @@ + http://www.citeulike.org/bibtex/group/8082 + http://people.cs.uu.nl/hansb/graphs-bib/definitions.bib + http://people.cs.uu.nl/hansb/graphs-bib/papers.bib +- https://api.zotero.org/groups/9097/items/II22KQ7D?format=bibtex&limit=1 ++ https://api.zotero.org/groups/9097/items/8VITAT46?format=bibtex&limit=1 + + + citeulike:8283461 + AbdelbarH98 +- merleau-ponty_philosophe_2010 ++ crossley_politics_1994 + + + +diff --git a/t/uniqueness-nameparts.t b/t/uniqueness-nameparts.t +index beb2e39..1fb65a8 100644 +--- a/t/uniqueness-nameparts.t ++++ b/t/uniqueness-nameparts.t +@@ -81,7 +81,7 @@ my $un1 = q| \entry{un1}{article}{} + \strng{authorfullhash}{329d8f9192ea3349d700160c9ddb505d} + \field{labelalpha}{SmiJohSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -106,7 +106,7 @@ my $un2 = q| \entry{un2}{article}{} + \strng{authorfullhash}{7551114aede4ef69e4b3683039801706} + \field{labelalpha}{SmiJohAla} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -131,7 +131,7 @@ my $un3 = q| \entry{un3}{article}{} + \strng{authorfullhash}{401aebda288799a7c757526242d8c9fc} + \field{labelalpha}{SmiJohArt} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -156,7 +156,7 @@ my $un4 = q| \entry{un4}{article}{} + \strng{authorfullhash}{f6038a264619efefd49c7daac56424ca} + \field{labelalpha}{SmiAlaSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -181,7 +181,7 @@ my $un1a = q| \entry{un1}{article}{} + \strng{authorfullhash}{329d8f9192ea3349d700160c9ddb505d} + \field{labelalpha}{SmiJohSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -206,7 +206,7 @@ my $un2a = q| \entry{un2}{article}{} + \strng{authorfullhash}{7551114aede4ef69e4b3683039801706} + \field{labelalpha}{SmiJohAla} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -231,7 +231,7 @@ my $un3a = q| \entry{un3}{article}{} + \strng{authorfullhash}{401aebda288799a7c757526242d8c9fc} + \field{labelalpha}{SmiJohArt} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -257,7 +257,7 @@ my $un4a = q| \entry{un4}{article}{} + \strng{authorfullhash}{f6038a264619efefd49c7daac56424ca} + \field{labelalpha}{SmiAlaSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -285,7 +285,7 @@ my $un1b = q| \entry{un1}{article}{} + \field{extraname}{5} + \field{labelalpha}{SmiJohSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{5} + \field{labelnamesource}{author} + \endentry +@@ -311,7 +311,7 @@ my $un2b = q| \entry{un2}{article}{} + \strng{authorfullhash}{7551114aede4ef69e4b3683039801706} + \field{labelalpha}{SmiJohAla} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -336,7 +336,7 @@ my $un3b = q| \entry{un3}{article}{} + \strng{authorfullhash}{401aebda288799a7c757526242d8c9fc} + \field{labelalpha}{SmiJohArt} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{labelnamesource}{author} + \endentry + |; +@@ -364,7 +364,7 @@ my $un4b = q| \entry{un4}{article}{} + \field{extraname}{1} + \field{labelalpha}{SmiAlaSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{1} + \field{labelnamesource}{author} + \endentry +@@ -393,7 +393,7 @@ my $un5 = q| \entry{un5}{article}{uniquenametemplatename=test3} + \field{extraname}{2} + \field{labelalpha}{SmiArtSim} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{2} + \field{labelnamesource}{author} + \endentry +@@ -422,7 +422,7 @@ my $un6 = q| \entry{un6}{article}{} + \field{extraname}{3} + \field{labelalpha}{SmiArtSmy} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{3} + \field{labelnamesource}{author} + \\endentry +@@ -451,7 +451,7 @@ my $un7 = q| \entry{un7}{article}{} + \field{extraname}{4} + \field{labelalpha}{SmiArtSme} + \field{sortinit}{S} +- \field{sortinithash}{322b1d5276f2f6c1bccdcd15920dbee6} ++ \field{sortinithash}{c319cff79d99c853d775f88277d4e45f} + \field{extradate}{4} + \field{labelnamesource}{author} + \endentry +diff --git a/t/xdata.t b/t/xdata.t +index 7411b1d..73dcb8b 100644 +--- a/t/xdata.t ++++ b/t/xdata.t +@@ -75,7 +75,7 @@ my $xd1 = q| \entry{xd1}{book}{} + \strng{authorfullhash}{51db4bfd331cba22959ce2d224c517cd} + \field{extraname}{2} + \field{sortinit}{E} +- \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e} ++ \field{sortinithash}{c554bd1a0b76ea92b9f105fe36d9c7b0} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} +@@ -107,7 +107,7 @@ my $xd2 = q| \entry{xd2}{book}{} + \strng{authornamehash}{68539e0ce4922cc4957c6cabf35e6fc8} + \strng{authorfullhash}{68539e0ce4922cc4957c6cabf35e6fc8} + \field{sortinit}{P} +- \field{sortinithash}{8d51b3d5b78d75b54308d706b9bbe285} ++ \field{sortinithash}{bb5b15f2db90f7aef79bb9e83defefcb} + \field{extradatescope}{labelyear} + \field{labeldatesource}{} + \field{labelnamesource}{author} diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index f1ce4220df..2e8e79c169 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -6045,7 +6045,8 @@ values (strings, macros, or numbers) pasted together.") (file-name (git-file-name name version)) ;; TODO: Patch awaiting inclusion upstream (see: ;; https://github.com/plk/biber/issues/239). - (patches (search-patches "biber-fix-encoding-write.patch")) + (patches (search-patches "biber-fix-encoding-write.patch" + "biber-sortinithash.patch")) (sha256 (base32 "1g1hi6zvf2hmrjly1sidjaxy5440gfqm4p7p3n7kayshnjsmlskx")))) From 40fd909e3ddee2c46a27a4fe92ed49d3e7ffb413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 24 Apr 2020 16:17:38 +0200 Subject: [PATCH 37/39] gnu: biber: Downgrade to 2.11. Biber 2.12 is incompatible with biblatex 3.11, which is what's currently packaged. This is a followup to 41a010875ba4108e666f11fc111cf5bb5dcf5464. * gnu/packages/tex.scm (biber): Downgrade to 2.11. --- gnu/packages/patches/biber-sortinithash.patch | 9 --------- gnu/packages/tex.scm | 4 ++-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/gnu/packages/patches/biber-sortinithash.patch b/gnu/packages/patches/biber-sortinithash.patch index 5a626705e6..1f054d25e4 100644 --- a/gnu/packages/patches/biber-sortinithash.patch +++ b/gnu/packages/patches/biber-sortinithash.patch @@ -17,15 +17,6 @@ index b4f641e..c6f86c7 100644 \field{extraname}{1} \field{sortinit}{L} - \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} -+ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} - \field{labelnamesource}{author} - \field{labeltitlesource}{title} - \field{title}{The Title} -@@ -116,7 +116,7 @@ my $ann2 = q| \entry{ann2}{misc}{} - \strng{authorfullhash}{90ae96c82de92e36949bc64254bbde0c} - \field{extraname}{2} - \field{sortinit}{L} -- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f} + \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c} \field{labelnamesource}{author} \field{labeltitlesource}{title} diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 2e8e79c169..91d3ee6295 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -6036,7 +6036,7 @@ values (strings, macros, or numbers) pasted together.") (define-public biber (package (name "biber") - (version "2.12") + (version "2.11") (source (origin (method git-fetch) (uri (git-reference @@ -6049,7 +6049,7 @@ values (strings, macros, or numbers) pasted together.") "biber-sortinithash.patch")) (sha256 (base32 - "1g1hi6zvf2hmrjly1sidjaxy5440gfqm4p7p3n7kayshnjsmlskx")))) + "0qgkc1k9n36yfmndwz879pak6mjphld0p85lzn9g2ng0vhxsifzz")))) (build-system perl-build-system) (arguments `(#:phases From 7dd05396ef4539165f955d9ab57225091f801ce9 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Fri, 24 Apr 2020 16:23:46 +0200 Subject: [PATCH 38/39] doc: Ensure guix-daemon is built before creating guix-daemon.1. * doc/local.mk ($(srcdir)/%D%/guix-daemon.1): Depend on guix-daemon$(EXEEXT) instead of its source code. --- doc/local.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/local.mk b/doc/local.mk index ddda01d5f3..f8709bb3a4 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -236,7 +236,7 @@ if !CROSS_COMPILING dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1 -$(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc +$(srcdir)/%D%/guix-daemon.1: guix-daemon$(EXEEXT) -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` endif From 9b42918edd3f7e9d505c874d3947c0a0815fe551 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Fri, 24 Apr 2020 16:53:43 +0200 Subject: [PATCH 39/39] gnu: guix: Update to 7dd0539. * gnu/packages/package-management.scm (guix): Update to 1.1.0-1.7dd0539. --- gnu/packages/package-management.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 6834012c55..011e442066 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -110,8 +110,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.1.0") - (commit "d62c9b2671be55ae0305bebfda17b595f33797f2") - (revision 0)) + (commit "7dd05396ef4539165f955d9ab57225091f801ce9") + (revision 1)) (package (name "guix") @@ -127,7 +127,7 @@ (commit commit))) (sha256 (base32 - "0v76hb0pidfgvxa22gq6hqf5yc3m527gl7hpzykazgjh881g2vmy")) + "110fz4qay4iywpynw1cbv6if8ac0pxp21zhzwvnp2jn1f6vbwf64")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments