diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/local.mk | 16 | ||||
-rw-r--r-- | gnu/local.mk | 2 | ||||
-rw-r--r-- | gnu/packages/aux-files/run-in-namespace.c | 10 | ||||
-rw-r--r-- | gnu/packages/cran.scm | 242 | ||||
-rw-r--r-- | gnu/packages/datamash.scm | 4 | ||||
-rw-r--r-- | gnu/packages/datastructures.scm | 4 | ||||
-rw-r--r-- | gnu/packages/dictionaries.scm | 16 | ||||
-rw-r--r-- | gnu/packages/fonts.scm | 3 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 12 | ||||
-rw-r--r-- | gnu/packages/llvm.scm | 54 | ||||
-rw-r--r-- | gnu/packages/music.scm | 80 | ||||
-rw-r--r-- | gnu/packages/networking.scm | 5 | ||||
-rw-r--r-- | gnu/packages/package-management.scm | 6 | ||||
-rw-r--r-- | gnu/packages/patches/biber-sortinithash.patch | 1657 | ||||
-rw-r--r-- | gnu/packages/patches/clang-10.0-libc-search-path.patch | 84 | ||||
-rw-r--r-- | gnu/packages/radio.scm | 118 | ||||
-rw-r--r-- | gnu/packages/tex.scm | 61 | ||||
-rw-r--r-- | gnu/packages/web.scm | 10 | ||||
-rw-r--r-- | guix/build/compile.scm | 9 | ||||
-rw-r--r-- | guix/git-download.scm | 4 | ||||
-rw-r--r-- | guix/scripts/package.scm | 2 | ||||
-rw-r--r-- | tests/guix-pack-relocatable.sh | 6 |
23 files changed, 2351 insertions, 56 deletions
diff --git a/configure.ac b/configure.ac index 6a6a020585..a44a605dc0 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,8 @@ AM_GNU_GETTEXT_VERSION([0.18.1]) GUIX_SYSTEM_TYPE GUIX_ASSERT_SUPPORTED_SYSTEM +AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"]) + AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH], [file name of the store (defaults to /gnu/store)]), diff --git a/doc/local.mk b/doc/local.mk index 30c4a8c34d..f8709bb3a4 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2016 Eric Bavier <bavier@member.fsf.org> -# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> # Copyright © 2013 Andreas Enge <andreas@enge.fr> # Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> # Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org> @@ -185,6 +185,7 @@ sub_commands_mans = \ $(srcdir)/%D%/guix-archive.1 \ $(srcdir)/%D%/guix-build.1 \ $(srcdir)/%D%/guix-challenge.1 \ + $(srcdir)/%D%/guix-deploy.1 \ $(srcdir)/%D%/guix-download.1 \ $(srcdir)/%D%/guix-edit.1 \ $(srcdir)/%D%/guix-environment.1 \ @@ -197,12 +198,19 @@ sub_commands_mans = \ $(srcdir)/%D%/guix-pull.1 \ $(srcdir)/%D%/guix-refresh.1 \ $(srcdir)/%D%/guix-size.1 \ - $(srcdir)/%D%/guix-system.1 + $(srcdir)/%D%/guix-system.1 \ + $(srcdir)/%D%/guix-time-machine.1 \ + $(srcdir)/%D%/guix-weather.1 + +# Assume that cross-compiled commands cannot be executed. +if !CROSS_COMPILING dist_man1_MANS = \ $(srcdir)/%D%/guix.1 \ $(sub_commands_mans) +endif + gen_man = \ LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \ $(HELP2MANFLAGS) @@ -224,10 +232,12 @@ $(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS) esac if BUILD_DAEMON +if !CROSS_COMPILING dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1 -$(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc +$(srcdir)/%D%/guix-daemon.1: guix-daemon$(EXEEXT) -$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1` endif +endif diff --git a/gnu/local.mk b/gnu/local.mk index 7c117b7a6b..2780434455 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -778,6 +778,7 @@ dist_patch_DATA = \ %D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/benchmark-unbundle-googletest.patch \ %D%/packages/patches/biber-fix-encoding-write.patch \ + %D%/packages/patches/biber-sortinithash.patch \ %D%/packages/patches/bidiv-update-fribidi.patch \ %D%/packages/patches/binutils-boot-2.20.1a.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \ @@ -807,6 +808,7 @@ dist_patch_DATA = \ %D%/packages/patches/clang-6.0-libc-search-path.patch \ %D%/packages/patches/clang-7.0-libc-search-path.patch \ %D%/packages/patches/clang-9.0-libc-search-path.patch \ + %D%/packages/patches/clang-10.0-libc-search-path.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \ 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&limit=1</bcf:datasource> ++ <bcf:datasource type="file" datatype="bibtex">https://api.zotero.org/groups/9097/items/8VITAT46?format=bibtex&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" diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 3ce0ecede5..c4dbb6e34c 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -194,6 +194,11 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." (with-augmented-search-path %load-path source-directory (with-augmented-search-path %load-compiled-path build-directory (with-fluids ((*current-warning-prefix* "")) + ;; Make sure the compiler's modules are loaded before 'with-target' + ;; (since 'with-target' influences the .go loader), and before + ;; starting to compile files in parallel. + (compile #f) + (with-target host (lambda () ;; FIXME: To work around <https://bugs.gnu.org/15602>, we first @@ -202,10 +207,6 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"." #:report-load report-load #:debug-port debug-port) - ;; Make sure compilation related modules are loaded before - ;; starting to compile files in parallel. - (compile #f) - ;; XXX: Don't use too many workers to work around the insane ;; memory requirements of the compiler in Guile 2.2.2: ;; <https://lists.gnu.org/archive/html/guile-devel/2017-05/msg00033.html>. diff --git a/guix/git-download.scm b/guix/git-download.scm index ef0bb2e281..a1c1adf760 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -179,7 +179,9 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." ;; can happen, for example, when the user swapped the revision and commit ;; arguments by mistake. (when (< (string-length commit) 7) - (error "git-version: commit ID unexpectedly short")) + (raise + (condition + (&message (message "git-version: commit ID unexpectedly short"))))) (string-append version "-" revision "." (string-take commit 7))) (define (git-file-name name version) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 43a3bb2825..dce9256bf5 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -61,6 +61,8 @@ delete-matching-generations guix-package + search-path-environment-variables + transaction-upgrade-entry ;mostly for testing (%options . %package-options) diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh index e93610eedc..a3fd45623c 100644 --- a/tests/guix-pack-relocatable.sh +++ b/tests/guix-pack-relocatable.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -72,6 +72,10 @@ then # mounting an empty file system on top of it. That way, we exercise the # wrapper code that creates the user namespace and bind-mounts the store. unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --version > "$test_directory/output"' + + # Check whether the exit code is preserved. + if unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --does-not-exist'; + then false; else true; fi else # Run the relocatable 'sed' in the current namespaces. This is a weak # test because we're going to access store items from the host store. |