summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/aux-files/run-in-namespace.c10
-rw-r--r--gnu/packages/cran.scm242
-rw-r--r--gnu/packages/datamash.scm4
-rw-r--r--gnu/packages/datastructures.scm4
-rw-r--r--gnu/packages/dictionaries.scm16
-rw-r--r--gnu/packages/fonts.scm3
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/llvm.scm54
-rw-r--r--gnu/packages/music.scm80
-rw-r--r--gnu/packages/networking.scm5
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/patches/biber-sortinithash.patch1657
-rw-r--r--gnu/packages/patches/clang-10.0-libc-search-path.patch84
-rw-r--r--gnu/packages/radio.scm118
-rw-r--r--gnu/packages/tex.scm61
-rw-r--r--gnu/packages/web.scm10
16 files changed, 2319 insertions, 47 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 <ludo@gnu.org>
+ Copyright (C) 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
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/gnu/packages/cran.scm b/gnu/packages/cran.scm
index f31187b5c3..5c2e623705 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -21162,3 +21162,245 @@ 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 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.
+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)))
+
+(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+)))
+
+(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+)))
+
+(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+)))
+
+(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+)))
+
+(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+)))
+
+(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)))
+
+(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)))
+
+(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)))
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
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
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.")
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")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index dccf41df21..6315183b48 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -369,26 +369,26 @@ 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)))
-(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)))
-(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)))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 9ffb31cb9a..bda002e313 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 <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
;;; Copyright © 2016, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
@@ -85,17 +85,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)
(outputs '("out" "opt-viewer"))
(native-inputs
@@ -405,24 +405,50 @@ 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-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
+ llvm-9
"0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2"
'("clang-runtime-9-libsanitizer-mode-field.patch")))
-(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/music.scm b/gnu/packages/music.scm
index 41f323ee78..ababcd8aaa 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -5423,3 +5423,83 @@ 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)))
+
+(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)))
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ef510e3122..0962737536 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
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 33c0d90cf9..3bfee16832 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -112,8 +112,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")
@@ -129,7 +129,7 @@
(commit commit)))
(sha256
(base32
- "0v76hb0pidfgvxa22gq6hqf5yc3m527gl7hpzykazgjh881g2vmy"))
+ "110fz4qay4iywpynw1cbv6if8ac0pxp21zhzwvnp2jn1f6vbwf64"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
diff --git a/gnu/packages/patches/biber-sortinithash.patch b/gnu/packages/patches/biber-sortinithash.patch
new file mode 100644
index 0000000000..1f054d25e4
--- /dev/null
+++ b/gnu/packages/patches/biber-sortinithash.patch
@@ -0,0 +1,1657 @@
+This is a backport of this upstream commit to Biber 2.12:
+
+ From 6b61b4c13778cf638f82569ab9e413f09f111ba5 Mon Sep 17 00:00:00 2001
+ From: Philip Kime <Philip@kime.org.uk>
+ 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}
+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 @@
+ <bbl:field name="authorbibnamehash">860705eb8ffac6e40507746c7ede79ca</bbl:field>
+ <bbl:field name="labelalpha">Aks\textbf{+}06</bbl:field>
+ <bbl:field name="sortinit">A</bbl:field>
+- <bbl:field name="sortinithash">d77c7cdd82ff690d4c3ef13216f92f0b</bbl:field>
++ <bbl:field name="sortinithash">a3dcedd53b04d1adfd5ac303ecd5e6fa</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="indextitle">Effect of immobilization on catalytic characteristics</bbl:field>
+@@ -79,7 +79,7 @@
+ <bbl:field name="authorbibnamehash">9717d2d959a4b18727868ca7928c34b4</bbl:field>
+ <bbl:field name="labelalpha">Ang02</bbl:field>
+ <bbl:field name="sortinit">A</bbl:field>
+- <bbl:field name="sortinithash">d77c7cdd82ff690d4c3ef13216f92f0b</bbl:field>
++ <bbl:field name="sortinithash">a3dcedd53b04d1adfd5ac303ecd5e6fa</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+ <bbl:field name="annotation">A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field</bbl:field>
+@@ -109,7 +109,7 @@
+ </bbl:set>
+ <bbl:field name="labelalpha">Gla61</bbl:field>
+ <bbl:field name="sortinit">G</bbl:field>
+- <bbl:field name="sortinithash">5e8d2bf9d38de41b1528bd307546008f</bbl:field>
++ <bbl:field name="sortinithash">62eb2aa29549e4fdbd3cb154ec5711cb</bbl:field>
+ <bbl:field name="annotation">A set entry with three members discussing the standard model of particle physics.</bbl:field>
+ </bbl:entry>
+ <bbl:entry key="stdmodel:glashow" type="article">
+@@ -129,7 +129,7 @@
+ <bbl:field name="authorfullhash">eb3f242602109f5bdbeb41fdd990fcc0</bbl:field>
+ <bbl:field name="authorbibnamehash">eb3f242602109f5bdbeb41fdd990fcc0</bbl:field>
+ <bbl:field name="sortinit">G</bbl:field>
+- <bbl:field name="sortinithash">5e8d2bf9d38de41b1528bd307546008f</bbl:field>
++ <bbl:field name="sortinithash">62eb2aa29549e4fdbd3cb154ec5711cb</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="journaltitle">Nucl. Phys.</bbl:field>
+@@ -168,7 +168,7 @@
+ <bbl:field name="extraname">1</bbl:field>
+ <bbl:field name="labelalpha">Knu86</bbl:field>
+ <bbl:field name="sortinit">K</bbl:field>
+- <bbl:field name="sortinithash">9fd838a31ba64d981e8f44562bd33f89</bbl:field>
++ <bbl:field name="sortinithash">d3edc18d54b9438a72c24c925bfb38f4</bbl:field>
+ <bbl:field name="extraalpha">1</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+@@ -207,7 +207,7 @@
+ <bbl:field name="extraname">2</bbl:field>
+ <bbl:field name="labelalpha">Knu86</bbl:field>
+ <bbl:field name="sortinit">K</bbl:field>
+- <bbl:field name="sortinithash">9fd838a31ba64d981e8f44562bd33f89</bbl:field>
++ <bbl:field name="sortinithash">d3edc18d54b9438a72c24c925bfb38f4</bbl:field>
+ <bbl:field name="extraalpha">2</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+@@ -236,7 +236,7 @@
+ <bbl:field name="authorbibnamehash">d52f05e0199eae563725b4165f4b2520</bbl:field>
+ <bbl:field name="labelalpha">Ree58</bbl:field>
+ <bbl:field name="sortinit">R</bbl:field>
+- <bbl:field name="sortinithash">da6b42bd3ab22fee61abed031ee405f7</bbl:field>
++ <bbl:field name="sortinithash">b9c68a358aea118dfa887b6e902414a7</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="annotation">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</bbl:field>
+@@ -286,7 +286,7 @@
+ <bbl:field name="editorfullhash">d0ec890e59163c24c111a08d2a4be982</bbl:field>
+ <bbl:field name="editorbibnamehash">d0ec890e59163c24c111a08d2a4be982</bbl:field>
+ <bbl:field name="sortinit">S</bbl:field>
+- <bbl:field name="sortinithash">322b1d5276f2f6c1bccdcd15920dbee6</bbl:field>
++ <bbl:field name="sortinithash">c319cff79d99c853d775f88277d4e45f</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="booksubtitle">Relativistic groups and analyticity</bbl:field>
+@@ -317,7 +317,7 @@
+ <bbl:field name="authorbibnamehash">93f17724cbd884231ef39a73755ef5bb</bbl:field>
+ <bbl:field name="labelalpha">Sho91</bbl:field>
+ <bbl:field name="sortinit">S</bbl:field>
+- <bbl:field name="sortinithash">322b1d5276f2f6c1bccdcd15920dbee6</bbl:field>
++ <bbl:field name="sortinithash">c319cff79d99c853d775f88277d4e45f</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="annotation">An article entry with series, volume, and number fields. Note the format of the series which is a localization key</bbl:field>
+@@ -353,7 +353,7 @@
+ <bbl:field name="authorfullhash">15e144c72b0b9d10db00ddc6d37a19e6</bbl:field>
+ <bbl:field name="authorbibnamehash">15e144c72b0b9d10db00ddc6d37a19e6</bbl:field>
+ <bbl:field name="sortinit">W</bbl:field>
+- <bbl:field name="sortinithash">ecb89ff85896a47dc313960773ac311d</bbl:field>
++ <bbl:field name="sortinithash">1af34bd8c148ffb32de1494636b49713</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="journaltitle">Phys. Rev. Lett.</bbl:field>
+@@ -411,7 +411,7 @@
+ <bbl:field name="authorbibnamehash">860705eb8ffac6e40507746c7ede79ca</bbl:field>
+ <bbl:field name="labelalpha">Aks\textbf{+}06</bbl:field>
+ <bbl:field name="sortinit">A</bbl:field>
+- <bbl:field name="sortinithash">d77c7cdd82ff690d4c3ef13216f92f0b</bbl:field>
++ <bbl:field name="sortinithash">a3dcedd53b04d1adfd5ac303ecd5e6fa</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="indextitle">Effect of immobilization on catalytic characteristics</bbl:field>
+@@ -443,7 +443,7 @@
+ <bbl:field name="authorbibnamehash">9717d2d959a4b18727868ca7928c34b4</bbl:field>
+ <bbl:field name="labelalpha">Ang02</bbl:field>
+ <bbl:field name="sortinit">A</bbl:field>
+- <bbl:field name="sortinithash">d77c7cdd82ff690d4c3ef13216f92f0b</bbl:field>
++ <bbl:field name="sortinithash">a3dcedd53b04d1adfd5ac303ecd5e6fa</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+ <bbl:field name="annotation">A German article in a French journal. Apart from that, a typical article entry. Note the indextitle field</bbl:field>
+@@ -473,7 +473,7 @@
+ </bbl:set>
+ <bbl:field name="labelalpha">Gla61</bbl:field>
+ <bbl:field name="sortinit">G</bbl:field>
+- <bbl:field name="sortinithash">5e8d2bf9d38de41b1528bd307546008f</bbl:field>
++ <bbl:field name="sortinithash">62eb2aa29549e4fdbd3cb154ec5711cb</bbl:field>
+ <bbl:field name="annotation">A set entry with three members discussing the standard model of particle physics.</bbl:field>
+ </bbl:entry>
+ <bbl:entry key="stdmodel:glashow" type="article">
+@@ -493,7 +493,7 @@
+ <bbl:field name="authorfullhash">eb3f242602109f5bdbeb41fdd990fcc0</bbl:field>
+ <bbl:field name="authorbibnamehash">eb3f242602109f5bdbeb41fdd990fcc0</bbl:field>
+ <bbl:field name="sortinit">G</bbl:field>
+- <bbl:field name="sortinithash">5e8d2bf9d38de41b1528bd307546008f</bbl:field>
++ <bbl:field name="sortinithash">62eb2aa29549e4fdbd3cb154ec5711cb</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="journaltitle">Nucl. Phys.</bbl:field>
+@@ -532,7 +532,7 @@
+ <bbl:field name="extraname">1</bbl:field>
+ <bbl:field name="labelalpha">Knu86</bbl:field>
+ <bbl:field name="sortinit">K</bbl:field>
+- <bbl:field name="sortinithash">9fd838a31ba64d981e8f44562bd33f89</bbl:field>
++ <bbl:field name="sortinithash">d3edc18d54b9438a72c24c925bfb38f4</bbl:field>
+ <bbl:field name="extraalpha">1</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+@@ -571,7 +571,7 @@
+ <bbl:field name="extraname">2</bbl:field>
+ <bbl:field name="labelalpha">Knu86</bbl:field>
+ <bbl:field name="sortinit">K</bbl:field>
+- <bbl:field name="sortinithash">9fd838a31ba64d981e8f44562bd33f89</bbl:field>
++ <bbl:field name="sortinithash">d3edc18d54b9438a72c24c925bfb38f4</bbl:field>
+ <bbl:field name="extraalpha">2</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">shorttitle</bbl:field>
+@@ -600,7 +600,7 @@
+ <bbl:field name="authorbibnamehash">d52f05e0199eae563725b4165f4b2520</bbl:field>
+ <bbl:field name="labelalpha">Ree58</bbl:field>
+ <bbl:field name="sortinit">R</bbl:field>
+- <bbl:field name="sortinithash">da6b42bd3ab22fee61abed031ee405f7</bbl:field>
++ <bbl:field name="sortinithash">b9c68a358aea118dfa887b6e902414a7</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="annotation">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</bbl:field>
+@@ -650,7 +650,7 @@
+ <bbl:field name="editorfullhash">d0ec890e59163c24c111a08d2a4be982</bbl:field>
+ <bbl:field name="editorbibnamehash">d0ec890e59163c24c111a08d2a4be982</bbl:field>
+ <bbl:field name="sortinit">S</bbl:field>
+- <bbl:field name="sortinithash">322b1d5276f2f6c1bccdcd15920dbee6</bbl:field>
++ <bbl:field name="sortinithash">c319cff79d99c853d775f88277d4e45f</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="booksubtitle">Relativistic groups and analyticity</bbl:field>
+@@ -681,7 +681,7 @@
+ <bbl:field name="authorbibnamehash">93f17724cbd884231ef39a73755ef5bb</bbl:field>
+ <bbl:field name="labelalpha">Sho91</bbl:field>
+ <bbl:field name="sortinit">S</bbl:field>
+- <bbl:field name="sortinithash">322b1d5276f2f6c1bccdcd15920dbee6</bbl:field>
++ <bbl:field name="sortinithash">c319cff79d99c853d775f88277d4e45f</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="annotation">An article entry with series, volume, and number fields. Note the format of the series which is a localization key</bbl:field>
+@@ -717,7 +717,7 @@
+ <bbl:field name="authorfullhash">15e144c72b0b9d10db00ddc6d37a19e6</bbl:field>
+ <bbl:field name="authorbibnamehash">15e144c72b0b9d10db00ddc6d37a19e6</bbl:field>
+ <bbl:field name="sortinit">W</bbl:field>
+- <bbl:field name="sortinithash">ecb89ff85896a47dc313960773ac311d</bbl:field>
++ <bbl:field name="sortinithash">1af34bd8c148ffb32de1494636b49713</bbl:field>
+ <bbl:field name="labelnamesource">author</bbl:field>
+ <bbl:field name="labeltitlesource">title</bbl:field>
+ <bbl:field name="journaltitle">Phys. Rev. Lett.</bbl:field>
+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 @@
+ <bcf:datasource type="file" datatype="bibtex">http://www.citeulike.org/bibtex/group/8082</bcf:datasource>
+ <bcf:datasource type="file" datatype="bibtex">http://people.cs.uu.nl/hansb/graphs-bib/definitions.bib</bcf:datasource>
+ <bcf:datasource type="file" datatype="bibtex">http://people.cs.uu.nl/hansb/graphs-bib/papers.bib</bcf:datasource>
+- <bcf:datasource type="file" datatype="bibtex">https://api.zotero.org/groups/9097/items/II22KQ7D?format=bibtex&amp;limit=1</bcf:datasource>
++ <bcf:datasource type="file" datatype="bibtex">https://api.zotero.org/groups/9097/items/8VITAT46?format=bibtex&amp;limit=1</bcf:datasource>
+ </bcf:bibdata>
+ <bcf:section number="0">
+ <bcf:citekey order="1">citeulike:8283461</bcf:citekey>
+ <bcf:citekey order="2">AbdelbarH98</bcf:citekey>
+- <bcf:citekey order="3">merleau-ponty_philosophe_2010</bcf:citekey>
++ <bcf:citekey order="3">crossley_politics_1994</bcf:citekey>
+ </bcf:section>
+ <!-- SORTING TEMPLATES -->
+ <bcf:sortingtemplate name="nty">
+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/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 {
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 8f1562a176..fff68cf657 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -36,6 +36,8 @@
#: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)
#:use-module (gnu packages gstreamer)
@@ -44,6 +46,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,9 +56,13 @@
#: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 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)
@@ -544,8 +551,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)
@@ -644,3 +653,112 @@ 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+))))
+
+(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)))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 3f210cd6e8..464dbd1b04 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -5891,7 +5891,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
@@ -5900,10 +5900,11 @@ 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"))))
+ "0qgkc1k9n36yfmndwz879pak6mjphld0p85lzn9g2ng0vhxsifzz"))))
(build-system perl-build-system)
(arguments
`(#:phases
@@ -7023,6 +7024,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"
@@ -7243,3 +7270,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+))))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 1a70a2b7a1..03cb897c82 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -6280,12 +6280,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"