unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* TeX Live 2019 wanted
@ 2019-12-14 19:06 Marius Bakke
  2019-12-14 21:33 ` Pierre Neidhardt
  2019-12-16 18:57 ` Andreas Enge
  0 siblings, 2 replies; 19+ messages in thread
From: Marius Bakke @ 2019-12-14 19:06 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1253 bytes --]

Greetings Guix,

The latest version of the popular Poppler PDF library (slated for the
'core-updates' branch) unsurprisingly[0][1][2] breaks 'texlive-bin'.

Previously we were able to rely on the work of other distributions, but
most have moved on to 2019 by now.  And the required changes now are
more intrusive than previously.

The main problem is that LuaTeX upstream has removed the Poppler
dependency entirely in favor of a smaller library, so no upstream fixes
are available:

https://github.com/TeX-Live/texlive-source/commit/aa5363bd0dc180752c7d8eb9d847c2581e453b1a

I *believe* this commit should be safe to backport as it predates the
2019 changes in the affected directories, but that requires some work
too.  It would be much better to update the shebang to 2019.

Ricardo, do you think you'll have time for a TeX Live 2019 update in the
coming weeks?  If not, could you outline the required changes for
enterprising Guix contributors?

TIA!

[0] https://git.savannah.gnu.org/cgit/guix.git/commit/?id=143fc1a591c552b0464674cfebf8de63bdde7461
[1] https://git.savannah.gnu.org/cgit/guix.git/commit/?id=9df397508dc1bc3544534aebc7c658c9754b08b4
[2] https://git.savannah.gnu.org/cgit/guix.git/commit/?id=c078f1b08b844c7126db2a4a0f83db2217e3bb0f

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-14 19:06 TeX Live 2019 wanted Marius Bakke
@ 2019-12-14 21:33 ` Pierre Neidhardt
  2019-12-16 18:57 ` Andreas Enge
  1 sibling, 0 replies; 19+ messages in thread
From: Pierre Neidhardt @ 2019-12-14 21:33 UTC (permalink / raw)
  To: Marius Bakke, guix-devel

[-- Attachment #1: Type: text/plain, Size: 271 bytes --]

Hi Marius,

I'm also interested in fixing this.

I might work on this if I find the time soon... No promise though, as it
has been usual for more than a year since we've started discussing the
texlive refactoring :p

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-14 19:06 TeX Live 2019 wanted Marius Bakke
  2019-12-14 21:33 ` Pierre Neidhardt
@ 2019-12-16 18:57 ` Andreas Enge
  2019-12-16 19:49   ` Andreas Enge
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Enge @ 2019-12-16 18:57 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

Hello,

On Sat, Dec 14, 2019 at 08:06:19PM +0100, Marius Bakke wrote:
> Ricardo, do you think you'll have time for a TeX Live 2019 update in the
> coming weeks?  If not, could you outline the required changes for
> enterprising Guix contributors?

before your mail I had already tried to update the monolithic texlive, but
one of the patches did not apply any more; since I did not know what they
were for, I pushed it to the back of the queue. From what you write, I
suppose the patches could simply be dropped?

Then I was unsure how updating the texlive sources would impact the
modular texlive packages. Is anything special needed?

Andreas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-16 18:57 ` Andreas Enge
@ 2019-12-16 19:49   ` Andreas Enge
  2019-12-16 20:38     ` Marius Bakke
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Enge @ 2019-12-16 19:49 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

I gave it a try, dropped the patches, then the phase use-code-for-new-poppler
fails for texlive-bin; maybe these poppler phases can be dropped, but I am
not quite familiar with them.

Andreas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-16 19:49   ` Andreas Enge
@ 2019-12-16 20:38     ` Marius Bakke
  2019-12-16 22:20       ` Ricardo Wurmus
  2019-12-16 22:41       ` Marius Bakke
  0 siblings, 2 replies; 19+ messages in thread
From: Marius Bakke @ 2019-12-16 20:38 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 334 bytes --]

Andreas Enge <andreas@enge.fr> writes:

> I gave it a try, dropped the patches, then the phase use-code-for-new-poppler
> fails for texlive-bin; maybe these poppler phases can be dropped, but I am
> not quite familiar with them.

The 'use-code-for-new-poppler' phase needs to be rewritten along these
lines (for both 2018 and 2019):


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: diff --]
[-- Type: text/x-patch, Size: 2378 bytes --]

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index d184d7616b..9184bd1552 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -238,6 +238,15 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
     (sha256 (base32
              "1b8zigzg8raxkhhzphcmynf84rbdbj2ym2qkz24v8n0qx82zmqms"))))
 
+(define (texlive-svn-file name revision hash)
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://tug.org/svn/texlive/trunk/Build/source/"
+                        name "?revision=" revision "&view=co"))
+    (file-name (string-append "texlive-" (match (string-split name #\/)
+                                           ((dirs ... file-name) file-name))))
+    (sha256 (base32 hash))))
+
 (define-public texlive-bin
   (package
    (name "texlive-bin")
@@ -285,6 +294,12 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
           (sha256
            (base32
             "0wrjls1y9b4k1z10l9l8w2l3yjcw7v7by2y16kchdpkiyldlkry6"))))
+      ("pdftosrc-poppler-compat"
+       ,(texlive-svn-file "texk/web2c/pdftexdir/pdftosrc-poppler0.83.0.cc" "52959"
+                          "0iq2cmwvf2lxy32sygrafwqgcwvvbdnvxm5l3mrg9cb2a1g06380"))
+      ("pdftoepdf-poppler-compat"
+       ,(texlive-svn-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.83.0.cc" "52959"
+                          "0981acbsig4pqbhg3a2ghiygd0zv1kqvmncacigfzvpj5r5k8px1"))
       ("cairo" ,cairo)
       ("fontconfig" ,fontconfig)
       ("fontforge" ,fontforge)
@@ -356,10 +371,10 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                (string-append "\"" (assoc-ref inputs "ghostscript") "/bin/gs\"")))
             #t))
         (add-after 'unpack 'use-code-for-new-poppler
-          (lambda _
-            (copy-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc"
+          (lambda* (#:key inputs #:allow-other-keys)
+            (copy-file (assoc-ref inputs "pdftoepdf-poppler-compat")
                        "texk/web2c/pdftexdir/pdftoepdf.cc")
-            (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc"
+            (copy-file (assoc-ref inputs "pdftosrc-poppler-compat")
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
         (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler

[-- Attachment #1.3: Type: text/plain, Size: 201 bytes --]


Can you try that?

Wrt the other TeX packages, I think %texlive-tag and %texlive-revision
from (guix build-system texlive) needs to be bumped, and all the hashes
changed accordingly.

Thanks!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-16 20:38     ` Marius Bakke
@ 2019-12-16 22:20       ` Ricardo Wurmus
  2019-12-16 22:41       ` Marius Bakke
  1 sibling, 0 replies; 19+ messages in thread
From: Ricardo Wurmus @ 2019-12-16 22:20 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel


Marius Bakke <mbakke@fastmail.com> writes:

> Wrt the other TeX packages, I think %texlive-tag and %texlive-revision
> from (guix build-system texlive) needs to be bumped, and all the hashes
> changed accordingly.

Yes, that’s pretty much it.  It’s a little tedious as so many hashes
will be invalidated at once.

There may also be a few instances where the list of files to be included
in the “SVN source union” will have to be adjusted, but I hope that this
is no longer a common issue since the last time I tried to more closely
match the outputs of our packages with the upstream file lists.

--
Ricardo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-16 20:38     ` Marius Bakke
  2019-12-16 22:20       ` Ricardo Wurmus
@ 2019-12-16 22:41       ` Marius Bakke
  2019-12-27 10:05         ` Andreas Enge
  1 sibling, 1 reply; 19+ messages in thread
From: Marius Bakke @ 2019-12-16 22:41 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Andreas Enge <andreas@enge.fr> writes:
>
>> I gave it a try, dropped the patches, then the phase use-code-for-new-poppler
>> fails for texlive-bin; maybe these poppler phases can be dropped, but I am
>> not quite familiar with them.
>
> The 'use-code-for-new-poppler' phase needs to be rewritten along these
> lines (for both 2018 and 2019):

Errh, the patch only works if you already have Poppler 0.83.0.  For the
current 'core-updates' branch, I believe you can use the same approach
but fetch poppler-0.76.0.cc instead (or take Arch's patch[0]).

[0] https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-16 22:41       ` Marius Bakke
@ 2019-12-27 10:05         ` Andreas Enge
  2020-01-09 22:10           ` Marius Bakke
  0 siblings, 1 reply; 19+ messages in thread
From: Andreas Enge @ 2019-12-27 10:05 UTC (permalink / raw)
  To: Marius Bakke; +Cc: guix-devel

On Mon, Dec 16, 2019 at 11:41:57PM +0100, Marius Bakke wrote:
> Errh, the patch only works if you already have Poppler 0.83.0.  For the
> current 'core-updates' branch, I believe you can use the same approach
> but fetch poppler-0.76.0.cc instead (or take Arch's patch[0]).

Ah, this is rocket science! I guessed so much as to use the 0.76.0 file;
however, the build now fails with the following:

/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/bash ./libtool  --tag=CXX   --mode=link g++ -Wreturn-type -Wno-write-strings -g -O2   -o pdftex pdftexdir/pdftex-pdftexextra.o synctexdir/pdftex-synctex.o pdftex-pdftexini.o pdftex-pdftex0.o pdftex-pdftex-pool.o libpdftex.a -L/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -L/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11/lib -lpng16 -lz -lz -L/gnu/store/18q4r8bpwmpm4w15zipf66l3bvdjzfbs-poppler-0.79.0/lib -lpoppler libmd5.a lib/lib.a /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/kpathsea/libkpathsea.la  -lm
libtool: link: g++ -Wreturn-type -Wno-write-strings -g -O2 -o pdftex pdftexdir/pdftex-pdftexextra.o synctexdir/pdftex-synctex.o pdftex-pdftexini.o pdftex-pdftex0.o pdftex-pdftex-pool.o  libpdftex.a -L/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -L/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11/lib /gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib/libpng16.so -lz -L/gnu/store/18q4r8bpwmpm4w15zipf66l3bvdjzfbs-poppler-0.79.0/lib -lpoppler libmd5.a lib/lib.a /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/kpathsea/.libs/libkpathsea.a -lm -Wl,-rpath -Wl,/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -Wl,-rpath -Wl,/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib
ld: libpdftex.a(libpdftex_a-writeimg.o): in function `readimage':
/tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/web2c/../../../texlive-20190410-source/texk/web2c/pdftexdir/writeimg.c:320: undefined reference to `read_pdf_info'
ld: libpdftex.a(libpdftex_a-writeimg.o): in function `undumpimagemeta':
/tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/web2c/../../../texlive-20190410-source/texk/web2c/pdftexdir/writeimg.c:546: undefined reference to `read_pdf_info'
collect2: error: ld returned 1 exit status

read_pdf_info is defined precisely in the pdftoepdf-poppler*.cc

And using "strings" on libpdftex.a shows that the function name occurs.

Andreas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2019-12-27 10:05         ` Andreas Enge
@ 2020-01-09 22:10           ` Marius Bakke
  2020-01-11 23:13             ` Marius Bakke
  0 siblings, 1 reply; 19+ messages in thread
From: Marius Bakke @ 2020-01-09 22:10 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 2803 bytes --]

Andreas Enge <andreas@enge.fr> writes:

> On Mon, Dec 16, 2019 at 11:41:57PM +0100, Marius Bakke wrote:
>> Errh, the patch only works if you already have Poppler 0.83.0.  For the
>> current 'core-updates' branch, I believe you can use the same approach
>> but fetch poppler-0.76.0.cc instead (or take Arch's patch[0]).
>
> Ah, this is rocket science! I guessed so much as to use the 0.76.0 file;
> however, the build now fails with the following:
>
> /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/bash ./libtool  --tag=CXX   --mode=link g++ -Wreturn-type -Wno-write-strings -g -O2   -o pdftex pdftexdir/pdftex-pdftexextra.o synctexdir/pdftex-synctex.o pdftex-pdftexini.o pdftex-pdftex0.o pdftex-pdftex-pool.o libpdftex.a -L/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -L/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11/lib -lpng16 -lz -lz -L/gnu/store/18q4r8bpwmpm4w15zipf66l3bvdjzfbs-poppler-0.79.0/lib -lpoppler libmd5.a lib/lib.a /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/kpathsea/libkpathsea.la  -lm
> libtool: link: g++ -Wreturn-type -Wno-write-strings -g -O2 -o pdftex pdftexdir/pdftex-pdftexextra.o synctexdir/pdftex-synctex.o pdftex-pdftexini.o pdftex-pdftex0.o pdftex-pdftex-pool.o  libpdftex.a -L/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -L/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11/lib /gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib/libpng16.so -lz -L/gnu/store/18q4r8bpwmpm4w15zipf66l3bvdjzfbs-poppler-0.79.0/lib -lpoppler libmd5.a lib/lib.a /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/kpathsea/.libs/libkpathsea.a -lm -Wl,-rpath -Wl,/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib -Wl,-rpath -Wl,/gnu/store/3snpwk7jl8i125bhiilvk9scqc4mnsx7-libpng-1.6.37/lib
> ld: libpdftex.a(libpdftex_a-writeimg.o): in function `readimage':
> /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/web2c/../../../texlive-20190410-source/texk/web2c/pdftexdir/writeimg.c:320: undefined reference to `read_pdf_info'
> ld: libpdftex.a(libpdftex_a-writeimg.o): in function `undumpimagemeta':
> /tmp/guix-build-texlive-bin-20190410.drv-0/build/texk/web2c/../../../texlive-20190410-source/texk/web2c/pdftexdir/writeimg.c:546: undefined reference to `read_pdf_info'
> collect2: error: ld returned 1 exit status
>
> read_pdf_info is defined precisely in the pdftoepdf-poppler*.cc
>
> And using "strings" on libpdftex.a shows that the function name occurs.

This turned out to be because poppler0.83.0.cc depends on another
revision, which changed the read_pdf_info function signature:

https://github.com/TeX-Live/texlive-source/commit/371f874f0945435b9b577a130bb97368311e981a

I was able to build it with Poppler 0.84 by taking the Arch patches, and
forking their poppler-0.83 patch:


[-- Attachment #1.2: texlive-bin.patch --]
[-- Type: text/x-patch, Size: 37729 bytes --]

From 4278c74b3ad87e6b6df5b2cca8bdd906d61ff097 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 18:36:50 +0100
Subject: [PATCH 1/5] gnu: poppler: Update to 0.84.0.

* gnu/packages/pdf.scm (poppler): Update to 0.84.0.
---
 gnu/packages/pdf.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 3b6829c4bc..78f652164b 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -90,14 +90,14 @@
 (define-public poppler
   (package
    (name "poppler")
-   (version "0.79.0")
+   (version "0.84.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://poppler.freedesktop.org/poppler-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1j18jlv1q6h21azb939gqjsgcbsh5qcd8dwxdmad54p5ixha91gr"))))
+              "0ccp2gx05cz5y04k5pgbyi4ikyq60nafa7x2yx4aaf1vfkd318f7"))))
    (build-system cmake-build-system)
    ;; FIXME:
    ;;  use libcurl:        no
-- 
2.24.1


From 3b1ceabd25651952aee0834985770538a313b734 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:36:40 +0100
Subject: [PATCH 2/5] build-system/texlive: Update to texlive-2019.3, revision
 51265.

* guix/build-system/texlive.scm (%texlive-tag): Change to "2019.3".
(%texlive-revision): Change to 51265.
---
 guix/build-system/texlive.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index ad99d1e2d0..8bbca0ccb7 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -42,8 +42,8 @@
 
 ;; These variables specify the SVN tag and the matching SVN revision.  They
 ;; are taken from https://www.tug.org/svn/texlive/tags/
-(define %texlive-tag "texlive-2018.2")
-(define %texlive-revision 49435)
+(define %texlive-tag "texlive-2019.3")
+(define %texlive-revision 51265)
 
 (define (texlive-origin name version locations hash)
   "Return an <origin> object for a TeX Live package consisting of multiple
-- 
2.24.1


From 9fc158fc135ab718cb767f5eecb16cd81d4847f6 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:37:10 +0100
Subject: [PATCH 3/5] gnu: texlive-bin: Update to 20190410.

* gnu/packages/patches/texlive-bin-CVE-2018-17407.patch,
gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch: Delete files.
* gnu/packages/patches/texlive-bin-poppler-0.83.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/tex.scm (texlive-extra-src, texlive-texmf-src): Update to 20190419.
(texlive-bin): Likewise.
[source](patches): Update Arch patches for Poppler 0.84 compatibility.
[arguments]: Remove phase 'use-code-for-even-newer-poppler'; add phase
'patch-dvisgm-build-files'.
---
 gnu/local.mk                                  |   3 +-
 .../patches/texlive-bin-CVE-2018-17407.patch  | 249 ---------------
 .../texlive-bin-luatex-poppler-compat.patch   | 293 ------------------
 .../patches/texlive-bin-poppler-0.83.patch    |  52 ++++
 gnu/packages/tex.scm                          |  48 ++-
 5 files changed, 74 insertions(+), 571 deletions(-)
 delete mode 100644 gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
 delete mode 100644 gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
 create mode 100644 gnu/packages/patches/texlive-bin-poppler-0.83.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index de8bb837ec..c458d5a308 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1409,8 +1409,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
   %D%/packages/patches/teeworlds-use-latest-wavpack.patch	\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
-  %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
-  %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
+  %D%/packages/patches/texlive-bin-poppler-0.83.patch		\
   %D%/packages/patches/telegram-purple-adjust-test.patch	\
   %D%/packages/patches/texi2html-document-encoding.patch	\
   %D%/packages/patches/texi2html-i18n.patch			\
diff --git a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
deleted file mode 100644
index 63646d420c..0000000000
--- a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
+++ /dev/null
@@ -1,249 +0,0 @@
-This patch adds support for newer versions of Poppler and some upstream
-TexLive fixes, including one for CVE-2018-17407.
-
-It is taken from Linux From Scratch:
-<http://www.linuxfromscratch.org/patches/blfs/svn/texlive-20180414-source-upstream_fixes-3.patch>.
-
-Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
-Date: 2018-12-26
-Initial Package Version: 20180414
-Upstream Status: Applied
-Origin: Upstream
-Description: Two fixes, cherry-picked from svn plus a CVE fix.
-I have removed the partial fixes for various system versions of poppler.
-
-r47469 Fix segfault in dvipdfm-x (XeTeX) on 1/2/4-bit transparent indexed PNGs.
-
-r47477 Fix a ptex regression for discontinuous kinsoku table.
-
-Also, via fedora (I got lost in svn) a critical fix for CVE-2018-17407
-
-"A buffer overflow in the handling of Type 1 fonts allows arbitrary code
-execution when a malicious font is loaded by one of the vulnerable tools:
-pdflatex, pdftex, dvips, or luatex."
-
-diff -Naur a/texk/dvipdfm-x/pngimage.c b/texk/dvipdfm-x/pngimage.c
---- a/texk/dvipdfm-x/pngimage.c	2018-02-17 08:41:35.000000000 +0000
-+++ b/texk/dvipdfm-x/pngimage.c	2018-10-09 01:52:01.648670875 +0100
-@@ -964,12 +964,16 @@
-   png_bytep   trans;
-   int         num_trans;
-   png_uint_32 i;
-+  png_byte    bpc, mask, shift;
- 
-   if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
-       !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
-     WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
-     return NULL;
-   }
-+  bpc   = png_get_bit_depth(png_ptr, info_ptr);
-+  mask  = 0xff >> (8 - bpc);
-+  shift = 8 - bpc;
- 
-   smask = pdf_new_stream(STREAM_COMPRESS);
-   dict  = pdf_stream_dict(smask);
-@@ -981,7 +985,8 @@
-   pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
-   pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
-   for (i = 0; i < width*height; i++) {
--    png_byte idx = image_data_ptr[i];
-+    /* data is packed for 1/2/4 bpc formats, msb first */
-+    png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask;
-     smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
-   }
-   pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
-diff -Naur a/texk/dvipsk/writet1.c b/texk/dvipsk/writet1.c
---- a/texk/dvipsk/writet1.c	2016-11-25 18:24:26.000000000 +0000
-+++ b/texk/dvipsk/writet1.c	2018-10-09 01:52:01.648670875 +0100
-@@ -1449,7 +1449,9 @@
-         *(strend(t1_buf_array) - 1) = ' ';
- 
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/luatexdir/font/writet1.w b/texk/web2c/luatexdir/font/writet1.w
---- a/texk/web2c/luatexdir/font/writet1.w	2016-11-25 18:24:34.000000000 +0000
-+++ b/texk/web2c/luatexdir/font/writet1.w	2018-10-09 01:52:01.648670875 +0100
-@@ -1625,7 +1625,9 @@
-     if (sscanf(p, "%i", &i) != 1) {
-         strcpy(t1_buf_array, t1_line_array);
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
---- a/texk/web2c/luatexdir/image/pdftoepdf.w	2018-01-17 18:00:12.000000000 +0000
-+++ b/texk/web2c/luatexdir/image/pdftoepdf.w	2018-10-09 01:52:01.648670875 +0100
-@@ -472,10 +472,10 @@
-         break;
-     */
-     case objString:
--        copyString(pdf, obj->getString());
-+        copyString(pdf, (GooString *)obj->getString());
-         break;
-     case objName:
--        copyName(pdf, obj->getName());
-+        copyName(pdf, (char *)obj->getName());
-         break;
-     case objNull:
-         pdf_add_null(pdf);
-diff -Naur a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
---- a/texk/web2c/luatexdir/lua/lepdflib.cc	2018-02-14 14:44:38.000000000 +0000
-+++ b/texk/web2c/luatexdir/lua/lepdflib.cc	2018-10-09 01:52:01.649670868 +0100
-@@ -674,7 +674,7 @@
-     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
-         pdfdoc_changed_error(L);                               \
--    gs = ((in *) uin->d)->function();                          \
-+    gs = (GooString *)((in *) uin->d)->function();             \
-     if (gs != NULL)                                            \
-         lua_pushlstring(L, gs->getCString(), gs->getLength()); \
-     else                                                       \
-@@ -1813,7 +1813,7 @@
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((Object *) uin->d)->isString()) {
--        gs = ((Object *) uin->d)->getString();
-+        gs = (GooString *)((Object *) uin->d)->getString();
-         lua_pushlstring(L, gs->getCString(), gs->getLength());
-     } else
-         lua_pushnil(L);
-diff -Naur a/texk/web2c/pdftexdir/writet1.c b/texk/web2c/pdftexdir/writet1.c
---- a/texk/web2c/pdftexdir/writet1.c	2016-11-25 18:24:37.000000000 +0000
-+++ b/texk/web2c/pdftexdir/writet1.c	2018-10-09 01:52:01.649670868 +0100
-@@ -1598,7 +1598,9 @@
-         *(strend(t1_buf_array) - 1) = ' ';
- 
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/ptexdir/ptex_version.h b/texk/web2c/ptexdir/ptex_version.h
---- a/texk/web2c/ptexdir/ptex_version.h	2018-01-21 03:48:06.000000000 +0000
-+++ b/texk/web2c/ptexdir/ptex_version.h	2018-10-09 01:52:01.649670868 +0100
-@@ -1 +1 @@
--#define PTEX_VERSION "p3.8.0"
-+#define PTEX_VERSION "p3.8.1"
-diff -Naur a/texk/web2c/ptexdir/tests/free_ixsp.tex b/texk/web2c/ptexdir/tests/free_ixsp.tex
---- a/texk/web2c/ptexdir/tests/free_ixsp.tex	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/ptexdir/tests/free_ixsp.tex	2018-10-09 01:52:01.649670868 +0100
-@@ -0,0 +1,53 @@
-+%#!eptex -ini -etex
-+\let\dump\relax
-+\batchmode
-+\input plain
-+
-+\errorstopmode
-+\catcode`@=11
-+\newcount\@tempcnta
-+\newcount\@tempcntb
-+\newcount\@tempcntc
-+\mathchardef\LIM=256
-+
-+\def\MYCHAR#1{%
-+  \@tempcntc=\numexpr7*#1+"101\relax
-+  \@tempcnta=\@tempcntc\divide\@tempcnta 94
-+  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
-+  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
-+  \advance\@tempcnta18 % 18区以降
-+  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
-+}
-+
-+\newcount\CNT\newcount\CNTA
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \message{\the\CNT.}
-+  \inhibitxspcode\CNTA=1\relax
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+
-+\newcount\CNTB
-+
-+\loop
-+  \MYCHAR\CNTB
-+  \global\inhibitxspcode\CNTA=3
-+{%
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \count@=\numexpr 1-\inhibitxspcode\CNTA\relax
-+  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else
-+    \errmessage{<\the\CNTB, \the\CNT, \the\inhibitxspcode\CNTA>}\fi\fi
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+}
-+  \MYCHAR\CNTB
-+  \global\inhibitxspcode\CNTA=1\relax
-+  \advance\CNTB1\relax
-+  \ifnum\CNTB<\LIM
-+\repeat
-+\bye
-diff -Naur a/texk/web2c/ptexdir/tests/free_pena.tex b/texk/web2c/ptexdir/tests/free_pena.tex
---- a/texk/web2c/ptexdir/tests/free_pena.tex	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/ptexdir/tests/free_pena.tex	2018-10-09 01:52:01.649670868 +0100
-@@ -0,0 +1,52 @@
-+%#!eptex -ini -etex
-+\let\dump\relax
-+\batchmode
-+\input plain
-+
-+\errorstopmode
-+\catcode`@=11
-+\newcount\@tempcnta
-+\newcount\@tempcntb
-+\newcount\@tempcntc
-+\mathchardef\LIM=256
-+
-+\def\MYCHAR#1{%
-+  \@tempcntc=\numexpr7*#1+"101\relax
-+  \@tempcnta=\@tempcntc\divide\@tempcnta 94
-+  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
-+  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
-+  \advance\@tempcnta18 % 18区以降
-+  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
-+}
-+
-+\newcount\CNT\newcount\CNTA
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \message{\the\CNT.}
-+  \prebreakpenalty\CNTA=\numexpr\CNT+1\relax
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+
-+\newcount\CNTB
-+
-+\loop
-+  \MYCHAR\CNTB
-+  \global\prebreakpenalty\CNTA=0
-+{%
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \count@=\numexpr -\CNT-1+\prebreakpenalty\CNTA\relax
-+  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else\errmessage{<\the\CNTB, \the\CNT>}\fi\fi
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+}
-+  \MYCHAR\CNTB
-+  \global\prebreakpenalty\CNTA=\numexpr\CNTB+1\relax
-+  \advance\CNTB1\relax
-+  \ifnum\CNTB<\LIM
-+\repeat
-+\bye
diff --git a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
deleted file mode 100644
index 024ff416af..0000000000
--- a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
+++ /dev/null
@@ -1,293 +0,0 @@
-Fix LuaTeX compatibility with Poppler 0.75.
-
-Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream
-fixes are unavailable.  This is based on Archs patch, with minor
-tweaks to comply with texlive-bin-CVE-2018-17407.patch.
-https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=418dd6f008c3d41a461353fdb60f2d73d87c58ed
-
-diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
---- a/texk/web2c/luatexdir/image/pdftoepdf.w
-+++ b/texk/web2c/luatexdir/image/pdftoepdf.w
-@@ -363,7 +363,7 @@ void copyReal(PDF pdf, double d)
- 
- static void copyString(PDF pdf, GooString * string)
- {
--    char *p;
-+    const char *p;
-     unsigned char c;
-     size_t i, l;
-     p = string->getCString();
-@@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string)
-     pdf->cave = true;
- }
- 
--static void copyName(PDF pdf, char *s)
-+static void copyName(PDF pdf, const char *s)
- {
-     pdf_out(pdf, '/');
-     for (; *s != 0; s++) {
-@@ -412,7 +412,7 @@ static void copyArray(PDF pdf, PdfDocument * pdf_doc, Array * array)
-     Object obj1;
-     pdf_begin_array(pdf);
-     for (i = 0, l = array->getLength(); i < l; ++i) {
--        obj1 = array->getNF(i);
-+        obj1 = array->getNF(i).copy();
-         copyObject(pdf, pdf_doc, &obj1);
-     }
-     pdf_end_array(pdf);
-@@ -425,7 +425,7 @@ static void copyDict(PDF pdf, PdfDocument * pdf_doc, Dict * dict)
-     pdf_begin_dict(pdf);
-     for (i = 0, l = dict->getLength(); i < l; ++i) {
-         copyName(pdf, dict->getKey(i));
--        obj1 = dict->getValNF(i);
-+        obj1 = dict->getValNF(i).copy();
-         copyObject(pdf, pdf_doc, &obj1);
-     }
-     pdf_end_dict(pdf);
-@@ -475,7 +475,7 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
-         copyString(pdf, (GooString *)obj->getString());
-         break;
-     case objName:
--        copyName(pdf, (char *)obj->getName());
-+        copyName(pdf, obj->getName());
-         break;
-     case objNull:
-         pdf_add_null(pdf);
-@@ -531,22 +531,22 @@ static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
- {
-     switch (pagebox_spec) {
-         case PDF_BOX_SPEC_MEDIA:
--            return page->getMediaBox();
-+            return (PDFRectangle *) page->getMediaBox();
-             break;
-         case PDF_BOX_SPEC_CROP:
--            return page->getCropBox();
-+            return (PDFRectangle *) page->getCropBox();
-             break;
-         case PDF_BOX_SPEC_BLEED:
--            return page->getBleedBox();
-+            return (PDFRectangle *) page->getBleedBox();
-             break;
-         case PDF_BOX_SPEC_TRIM:
--            return page->getTrimBox();
-+            return (PDFRectangle *) page->getTrimBox();
-             break;
-         case PDF_BOX_SPEC_ART:
--            return page->getArtBox();
-+            return (PDFRectangle *) page->getArtBox();
-             break;
-         default:
--            return page->getMediaBox();
-+            return (PDFRectangle *) page->getMediaBox();
-             break;
-     }
- }
-@@ -788,12 +788,12 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
-         Now all relevant parts of the Page dictionary are copied. Metadata validity
-         check is needed(as a stream it must be indirect).
-     */
--    obj1 = pageDict->lookupNF("Metadata");
-+    obj1 = pageDict->lookupNF("Metadata").copy();
-     if (!obj1.isNull() && !obj1.isRef())
-         formatted_warning("pdf inclusion","/Metadata must be indirect object");
-     /* copy selected items in Page dictionary */
-     for (i = 0; pagedictkeys[i] != NULL; i++) {
--        obj1 = pageDict->lookupNF(pagedictkeys[i]);
-+        obj1 = pageDict->lookupNF(pagedictkeys[i]).copy();
-         if (!obj1.isNull()) {
-             pdf_add_name(pdf, pagedictkeys[i]);
-             /* preserves indirection */
-@@ -806,13 +806,13 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
-         PDF file, climbing up the tree until the Resources are found.
-         (This fixes a problem with Scribus 1.3.3.14.)
-     */
--    obj1 = pageDict->lookupNF("Resources");
-+    obj1 = pageDict->lookupNF("Resources").copy();
-     if (obj1.isNull()) {
-         op1 = &pagesobj1;
-         op2 = &pagesobj2;
-         *op1 = pageDict->lookup("Parent");
-         while (op1->isDict()) {
--            obj1 = op1->dictLookupNF("Resources");
-+            obj1 = op1->dictLookupNF("Resources").copy();
-             if (!obj1.isNull()) {
-                 pdf_add_name(pdf, "Resources");
-                 copyObject(pdf, pdf_doc, &obj1);
-diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
---- a/texk/web2c/luatexdir/lua/lepdflib.cc
-+++ b/texk/web2c/luatexdir/lua/lepdflib.cc
-@@ -240,7 +240,7 @@ static int l_new_Attribute(lua_State * L)
-        if (uobj->pd != NULL && uobj->pd->pc != uobj->pc)
-           pdfdoc_changed_error(L);
-        uout = new_Attribute_userdata(L);
--       uout->d = new Attribute(n, nlen, (Object *)uobj->d);
-+       uout->d = new Attribute((GooString)n, (Object *)uobj->d);
-        uout->atype = ALLOC_LEPDF;
-        uout->pc = uobj->pc;
-        uout->pd = uobj->pd;
-@@ -496,7 +496,7 @@ static int l_new_Object(lua_State * L)
- 	double numA = lua_tonumber(L,1);
- 	double genA = lua_tonumber(L,2);
- 	if ( ((numA)==(int)(numA)) && ((genA)==(int)(genA)) ){
--	  uout->d = new Object((int)(numA), (int)(genA));
-+	  uout->d = new Object({(int)(numA), (int)(genA)});
- 	  uout->atype = ALLOC_LEPDF;
- 	  uout->pc = 0;
- 	  uout->pd = NULL;
-@@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L)                  \
-     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
-         pdfdoc_changed_error(L);                               \
--    o = ((in *) uin->d)->function();                           \
-+    o = (out *) ((in *) uin->d)->function();                           \
-     if (o != NULL) {                                           \
-         uout = new_##out##_userdata(L);                        \
-         uout->d = o;                                           \
-@@ -889,7 +889,7 @@ static int m_Array_getNF(lua_State * L)
-     if (i > 0 && i <= len) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1);
-+        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength);
- 
- static int m_Dict_add(lua_State * L)
- {
--    char *s;
-+    const char *s;
-     udstruct *uin, *uobj;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    s = copyString(luaL_checkstring(L, 2));
-+    s = luaL_checkstring(L, 2);
-     uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
-     ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
-     return 0;
-@@ -1190,7 +1190,7 @@ static int m_Dict_lookupNF(lua_State * L)
-     s = luaL_checkstring(L, 2);
-     uout = new_Object_userdata(L);
-     uout->d = new Object();
--    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s);
-+    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s).copy();
-     uout->atype = ALLOC_LEPDF;
-     uout->pc = uin->pc;
-     uout->pd = uin->pd;
-@@ -1263,7 +1263,7 @@ static int m_Dict_getValNF(lua_State * L)
-     if (i > 0 && i <= len) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1);
-+        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -1653,7 +1653,7 @@ static int m_Object_initRef(lua_State * L)
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
--    *((Object *) uin->d) = Object(num, gen);
-+    *((Object *) uin->d) = Object({num, gen});
-     return 0;
- }
- 
-@@ -2011,7 +2011,7 @@ static int m_Object_arrayGetNF(lua_State * L)
-         if (i > 0 && i <= len) {
-             uout = new_Object_userdata(L);
-             uout->d = new Object();
--            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1);
-+            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1).copy();
-             uout->atype = ALLOC_LEPDF;
-             uout->pc = uin->pc;
-             uout->pd = uin->pd;
-@@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L)
-         pdfdoc_changed_error(L);
-     if (!((Object *) uin->d)->isDict())
-         luaL_error(L, "Object is not a Dict");
--    ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
-+    ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d)));
-     return 0;
- }
- 
-@@ -2104,7 +2104,7 @@ static int m_Object_dictLookupNF(lua_State * L)
-     if (((Object *) uin->d)->isDict()) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s);
-+        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -2169,7 +2169,7 @@ static int m_Object_dictGetValNF(lua_State * L)
-         if (i > 0 && i <= len) {
-             uout = new_Object_userdata(L);
-             uout->d = new Object();
--            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1);
-+            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1).copy();
-             uout->atype = ALLOC_LEPDF;
-             uout->pc = uin->pc;
-             uout->pd = uin->pd;
-@@ -2470,7 +2470,7 @@ static int m_PDFDoc_getFileName(lua_State * L)
-     uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    gs = ((PdfDocument *) uin->d)->doc->getFileName();
-+    gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName();
-     if (gs != NULL)
-         lua_pushlstring(L, gs->getCString(), gs->getLength());
-     else
-@@ -2559,7 +2559,7 @@ static int m_PDFDoc_readMetadata(lua_State * L)
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        gs = ((PdfDocument *) uin->d)->doc->readMetadata();
-+        gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata();
-         if (gs != NULL)
-             lua_pushlstring(L, gs->getCString(), gs->getLength());
-         else
-@@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
-+        obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
-         uout = new_StructTreeRoot_userdata(L);
-         uout->d = obj;
-         uout->pc = uin->pc;
---- texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc.orig    2019-04-24 09:41:05.090522664 +0000
-+++ texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc 2019-04-24 09:43:37.119184926 +0000
-@@ -994,7 +994,8 @@
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
--    i = ((Catalog *) uin->d)->findPage(num, gen);
-+    Ref numgen = {num, gen};
-+    i = ((Catalog *) uin->d)->findPage(numgen);
-     if (i > 0)
-         lua_pushinteger(L, i);
-     else
-@@ -2596,8 +2597,9 @@
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
-+    Ref numgen = {num, gen};
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        i = ((PdfDocument *) uin->d)->doc->findPage(num, gen);
-+        i = ((PdfDocument *) uin->d)->doc->findPage(numgen);
-         if (i > 0)
-             lua_pushinteger(L, i);
-         else
---- texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w.orig  2019-04-24 09:56:38.406498975 +0000
-+++ texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w       2019-04-24 09:56:57.020081327 +0000
-@@ -630,7 +630,7 @@
-         if (link == NULL || !link->isOk())
-             formatted_error("pdf inclusion","invalid destination '%s'",img_pagename(idict));
-         Ref ref = link->getPageRef();
--        img_pagenum(idict) = catalog->findPage(ref.num, ref.gen);
-+        img_pagenum(idict) = catalog->findPage(ref);
-         if (img_pagenum(idict) == 0)
-             formatted_error("pdf inclusion","destination is not a page '%s'",img_pagename(idict));
-         delete link;
diff --git a/gnu/packages/patches/texlive-bin-poppler-0.83.patch b/gnu/packages/patches/texlive-bin-poppler-0.83.patch
new file mode 100644
index 0000000000..5e57e3efac
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-poppler-0.83.patch
@@ -0,0 +1,52 @@
+Fix build with Poppler 0.83 and later.
+
+Taken from Arch Linux, but adjusted to patch the versioned Poppler
+files, as upstream applies it after copying them in place.
+https://git.archlinux.org/svntogit/packages.git/tree/trunk/texlive-poppler-0.83.patch?h=packages/texlive-bin
+
+diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+--- texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
++++ texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+@@ -723,7 +723,7 @@
+ #endif
+     // initialize
+     if (!isInit) {
+-        globalParams = new GlobalParams();
++        globalParams.reset(new GlobalParams());
+         globalParams->setErrQuiet(false);
+         isInit = true;
+     }
+@@ -1108,6 +1108,5 @@
+             delete_document(p);
+         }
+         // see above for globalParams
+-        delete globalParams;
+     }
+ }
+diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
+--- texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
++++ texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
+@@ -79,7 +79,7 @@
+         exit(1);
+     }
+     fileName = new GString(argv[1]);
+-    globalParams = new GlobalParams();
++    globalParams.reset(new GlobalParams());
+     doc = new PDFDoc(fileName);
+     if (!doc->isOk()) {
+         fprintf(stderr, "Invalid PDF file\n");
+@@ -100,7 +100,7 @@
+     if (objnum == 0) {
+         srcStream = catalogDict.dictLookup("SourceObject");
+         static char const_SourceFile[] = "SourceFile";
+-        if (!srcStream.isStream(const_SourceFile)) {
++        if (!srcStream.isDict(const_SourceFile)) {
+             fprintf(stderr, "No SourceObject found\n");
+             exit(1);
+         }
+@@ -202,5 +202,4 @@
+         fprintf(stderr, "Cross-reference table extracted to %s\n", outname);
+     fclose(outfile);
+     delete doc;
+-    delete globalParams;
+ }
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index e4346d1232..4ea40126ae 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -227,29 +227,29 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
 (define texlive-extra-src
   (origin
     (method url-fetch)
-    (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-extra.tar.xz")
+    (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-extra.tar.xz")
     (sha256 (base32
-             "0a83kymxc8zmlxjb0y1gf6mx7qnf0hxffwkivwh5yh138y2rfhsv"))))
+             "13ncf2an4nlqv18lki6y2p6pcsgs1i54zqkhfwprax5j53bk70j8"))))
 
 (define texlive-texmf-src
   (origin
     (method url-fetch)
-    (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-texmf.tar.xz")
+    (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-texmf.tar.xz")
     (sha256 (base32
-             "1b8zigzg8raxkhhzphcmynf84rbdbj2ym2qkz24v8n0qx82zmqms"))))
+             "00n4qh9fj8v9zzy3y488hpfq1g3dnnh72y4yjsaikfcqpi59gv62"))))
 
 (define-public texlive-bin
   (package
    (name "texlive-bin")
-   (version "20180414")
+   (version "20190410")
    (source
     (origin
       (method url-fetch)
-      (uri (string-append "ftp://tug.org/historic/systems/texlive/2018/"
+      (uri (string-append "ftp://tug.org/historic/systems/texlive/2019/"
                           "texlive-" version "-source.tar.xz"))
       (sha256
        (base32
-        "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y"))
+        "1dfps39q6bdr1zsbp9p74mvalmy3bycihv19sb9c6kg30kprz8nj"))
       (patches
        (let ((arch-patch
               (lambda (name revision hash)
@@ -260,14 +260,13 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                                       "&id=" revision))
                   (file-name (string-append "texlive-bin-" name))
                   (sha256 (base32 hash)))))
-             (arch-revision "c4b99aba97213ea554b6592a4916d3c7394a6d7b"))
-         (append (search-patches  "texlive-bin-CVE-2018-17407.patch"
-                                  "texlive-bin-luatex-poppler-compat.patch")
-                 (list
-                  (arch-patch "pdftex-poppler0.76.patch" arch-revision
-                              "15ypbh21amfsdxy7ca825x28lkmmkklxk1w660gpgvzdi7s70h0b")
-                  (arch-patch "xetex-poppler-fixes.patch" arch-revision
-                              "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx")))))))
+             (arch-revision "49d7fe25e5ea63f136ebc20270c1d8fc9b00041c"))
+         (list
+          (arch-patch "pdftex-poppler0.76.patch" arch-revision
+                      "03vc88dz37mjjyaspzv0fik2fp5gp8qv82114869akd1dhszbaax")
+          (search-patch "texlive-bin-poppler-0.83.patch")
+          (arch-patch "texlive-poppler-0.84.patch" arch-revision
+                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
@@ -284,7 +283,7 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                                     "-checkout"))
           (sha256
            (base32
-            "0wrjls1y9b4k1z10l9l8w2l3yjcw7v7by2y16kchdpkiyldlkry6"))))
+            "1cj04svl8bpfwjr4gqfcc04rmklz3aggrxvgj7q5bxrh7c7g18xh"))))
       ("cairo" ,cairo)
       ("fontconfig" ,fontconfig)
       ("fontforge" ,fontforge)
@@ -362,18 +361,13 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
             (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc"
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
-        (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler
+        (add-after 'unpack 'patch-dvisvgm-build-files
           (lambda _
-            ;; Adjust for deprecated types in Poppler 0.73 and later.
-            (substitute* (append
-                          (find-files "texk/web2c/luatexdir/" "\\.(cc|w)$")
-                          '("texk/web2c/pdftexdir/pdftosrc.cc"))
-              (("GBool") "bool")
-              (("gFalse") "false")
-              (("gTrue") "true")
-              (("getCString") "c_str")
-              (("Guint") "unsigned int")
-              (("Guchar") "unsigned char"))
+            ;; XXX: Ghostscript is detected, but HAVE_LIBGS is never set, so
+            ;; the appropriate linker flags are not added.
+            (substitute* "texk/dvisvgm/configure"
+              (("^have_libgs=yes" all)
+               (string-append all "\nHAVE_LIBGS=1")))
             #t))
         (add-after 'unpack 'disable-failing-test
           (lambda _
-- 
2.24.1


From 8300b90d94a02c17e65a81ac51add5f511a28d04 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:38:01 +0100
Subject: [PATCH 4/5] gnu: texlive-bin: Do not build static libraries.

* gnu/packages/tex.scm (texlive-bin)[arguments]: Add "--disable-static" in
 #:configure-flags.
---
 gnu/packages/tex.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 4ea40126ae..442baf6ed1 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -314,7 +314,8 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
    (arguments
     `(#:out-of-source? #t
       #:configure-flags
-       `("--disable-native-texlive-build"
+       '("--disable-static"
+         "--disable-native-texlive-build"
          "--with-system-cairo"
          "--with-system-freetype2"
          "--with-system-gd"
-- 
2.24.1


From 0b1558e9f388a3d7787d0ea629ce685468e73e86 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:38:35 +0100
Subject: [PATCH 5/5] gnu: texlive-bin: Purge unused bundled software from the
 source.

* gnu/packages/tex.scm (texlive-bin)[source](modules, snippet): New fields.
---
 gnu/packages/tex.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 442baf6ed1..b3703d1c4f 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -266,7 +266,22 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                       "03vc88dz37mjjyaspzv0fik2fp5gp8qv82114869akd1dhszbaax")
           (search-patch "texlive-bin-poppler-0.83.patch")
           (arch-patch "texlive-poppler-0.84.patch" arch-revision
-                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))))
+                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))
+      (modules '((guix build utils)
+                 (ice-9 ftw)))
+      (snippet
+       '(begin
+          (with-directory-excursion "libs"
+            (let ((preserved-directories '("." ".." "lua53" "luajit")))
+              ;; Delete bundled software, except Lua which cannot easily be
+              ;; used as an external dependency.
+              (for-each delete-file-recursively
+                        (scandir "."
+                                 (lambda (file)
+                                   (and (not (member file preserved-directories))
+                                        (eq? 'directory (stat:type (stat file)))))))))
+          ;; TODO: Unbundle stuff in texk/dvisvgm/dvisvgm-src/libs too.
+          #t))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
-- 
2.24.1


[-- Attachment #1.3: Type: text/plain, Size: 65 bytes --]


I'll look into updating the remaining texlive packages shortly.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-09 22:10           ` Marius Bakke
@ 2020-01-11 23:13             ` Marius Bakke
  2020-01-12 10:13               ` Pierre Neidhardt
  2020-01-17 12:13               ` Ricardo Wurmus
  0 siblings, 2 replies; 19+ messages in thread
From: Marius Bakke @ 2020-01-11 23:13 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 827 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> I'll look into updating the remaining texlive packages shortly.

Now this was some rocket science...

The attached 9 patches updates everything (I think) to 2019.3.

The only regression I found from 'master' was that "discrover" fails to
find math fonts during the build process.  Anything else using
texlive-union appears to be in order.

I get a similar error for 'asymptote' on the current master branch, but
that seems to be sporadically working on Berlin?

https://ci.guix.gnu.org/search?query=system%3Ax86_64-linux+asymptote

I think I'll "punt" on that issue for now.  Pierre, if you ever wanted
to figure out the TeX Live font stuff, now is a good time!  ;-)

Ricardo, let me know if you spot anything odd!  I'll commit this in a
day or two unless there are any comments.


[-- Attachment #1.2: texlive.patch --]
[-- Type: text/x-patch, Size: 124418 bytes --]

From 4c23ee4b136bfa6814a75feea1f1548fbade5d81 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Sat, 11 Jan 2020 23:36:36 +0100
Subject: [PATCH 1/9] gnu: Add ruby-hydra.

* gnu/packages/ruby.scm (ruby-hydra): New public variable.
---
 gnu/packages/ruby.scm | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 57d7fa91f3..969fc95a00 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
-;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
@@ -1953,6 +1953,40 @@ two hashes.")
     (home-page "https://github.com/liufengyun/hashdiff")
     (license license:expat)))
 
+(define-public ruby-hydra
+  ;; No releases yet.
+  (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
+        (revision "0"))
+    (package
+      (name "ruby-hydra")
+      (version (git-version "0.0" revision commit))
+      (home-page "https://github.com/hyphenation/hydra")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference (url home-page) (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
+      (build-system ruby-build-system)
+      (arguments
+       '(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'make-files-writable
+                      (lambda _
+                        (for-each make-file-writable (find-files "."))
+                        #t))
+                    (replace 'check
+                      (lambda _
+                        (invoke "rspec"))))))
+      (native-inputs
+       `(("ruby-rspec" ,ruby-rspec)))
+      (propagated-inputs
+       `(("ruby-byebug" ,ruby-byebug)))
+      (synopsis "Ruby hyphenation patterns")
+      (description
+       "ruby-hydra is a Ruby library for working with hyphenation patterns.")
+      (license license:expat))))
+
 (define-public ruby-shindo
   (package
     (name "ruby-shindo")
-- 
2.24.1


From 679f2698636f224b9c91abb87eff8ad9cf59351d Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 18:36:50 +0100
Subject: [PATCH 2/9] gnu: poppler: Update to 0.84.0.

* gnu/packages/pdf.scm (poppler): Update to 0.84.0.
---
 gnu/packages/pdf.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 368b2ce69e..32a45ed4d5 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -90,14 +90,14 @@
 (define-public poppler
   (package
    (name "poppler")
-   (version "0.79.0")
+   (version "0.84.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://poppler.freedesktop.org/poppler-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1j18jlv1q6h21azb939gqjsgcbsh5qcd8dwxdmad54p5ixha91gr"))))
+              "0ccp2gx05cz5y04k5pgbyi4ikyq60nafa7x2yx4aaf1vfkd318f7"))))
    (build-system cmake-build-system)
    ;; FIXME:
    ;;  use libcurl:        no
-- 
2.24.1


From 23b9afcc9fe608a26c13fe2f579a8accd025bb2b Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Fri, 10 Jan 2020 23:49:42 +0100
Subject: [PATCH 3/9] gnu: inkscape: Fix build with Poppler 0.84.

* gnu/packages/inkscape.scm (inkscape)[arguments]: Add phase
'adjust-for-new-poppler'.
---
 gnu/packages/inkscape.scm | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 1ad23a92d4..0bd8b9496b 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -88,6 +88,19 @@
              (substitute* "share/icons/application/CMakeLists.txt"
               (("gtk-update-icon-cache") "true"))
              #t))
+         (add-after 'unpack 'adjust-for-new-poppler
+           (lambda _
+             (substitute* (find-files "src/extension/internal/pdfinput")
+               ;; Needed for Poppler 0.82.
+               (("Unicode \\*u") "Unicode const *u")
+               ;; Needed for Poppler 0.83.
+               (("\\(GfxPath") "(const GfxPath")
+               (("GfxSubpath") "const GfxSubpath")
+               (("new GlobalParams\\(\\)")
+                "std::unique_ptr<GlobalParams>(new GlobalParams())")
+               (("new GlobalParams\\(poppler_datadir\\)")
+                "std::unique_ptr<GlobalParams>(new GlobalParams(poppler_datadir))"))
+             #t))
          (add-before 'configure 'dont-use-system-includes
            (lambda _
              ;; Don't add redundant -isystem includes which confuses GCC7.
-- 
2.24.1


From 506d6762e3984945caf0141e48ffed201bb20ad5 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:36:40 +0100
Subject: [PATCH 4/9] build-system/texlive: Update to texlive-2019.3, revision
 51265.

* guix/build-system/texlive.scm (%texlive-tag): Change to "2019.3".
(%texlive-revision): Change to 51265.
---
 guix/build-system/texlive.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index ad99d1e2d0..8bbca0ccb7 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -42,8 +42,8 @@
 
 ;; These variables specify the SVN tag and the matching SVN revision.  They
 ;; are taken from https://www.tug.org/svn/texlive/tags/
-(define %texlive-tag "texlive-2018.2")
-(define %texlive-revision 49435)
+(define %texlive-tag "texlive-2019.3")
+(define %texlive-revision 51265)
 
 (define (texlive-origin name version locations hash)
   "Return an <origin> object for a TeX Live package consisting of multiple
-- 
2.24.1


From f683fdd960ec7e4e030b495147bf29b9459757b5 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:37:10 +0100
Subject: [PATCH 5/9] gnu: texlive-bin: Update to 20190410.

* gnu/packages/patches/texlive-bin-CVE-2018-17407.patch,
gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch: Delete files.
* gnu/packages/patches/texlive-bin-poppler-0.83.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/tex.scm (texlive-extra-src, texlive-texmf-src): Update to 20190419.
(texlive-bin): Likewise.
[source](patches): Update Arch patches for Poppler 0.84 compatibility.
[arguments]: Remove phase 'use-code-for-even-newer-poppler'; add phase
'patch-dvisgm-build-files'.
---
 gnu/local.mk                                  |   3 +-
 .../patches/texlive-bin-CVE-2018-17407.patch  | 249 ---------------
 .../texlive-bin-luatex-poppler-compat.patch   | 293 ------------------
 .../patches/texlive-bin-poppler-0.83.patch    |  52 ++++
 gnu/packages/tex.scm                          |  48 ++-
 5 files changed, 74 insertions(+), 571 deletions(-)
 delete mode 100644 gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
 delete mode 100644 gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
 create mode 100644 gnu/packages/patches/texlive-bin-poppler-0.83.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 09f46b065e..fd3d434d0c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1405,8 +1405,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
   %D%/packages/patches/teeworlds-use-latest-wavpack.patch	\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
-  %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
-  %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
+  %D%/packages/patches/texlive-bin-poppler-0.83.patch		\
   %D%/packages/patches/telegram-purple-adjust-test.patch	\
   %D%/packages/patches/texi2html-document-encoding.patch	\
   %D%/packages/patches/texi2html-i18n.patch			\
diff --git a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
deleted file mode 100644
index 63646d420c..0000000000
--- a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
+++ /dev/null
@@ -1,249 +0,0 @@
-This patch adds support for newer versions of Poppler and some upstream
-TexLive fixes, including one for CVE-2018-17407.
-
-It is taken from Linux From Scratch:
-<http://www.linuxfromscratch.org/patches/blfs/svn/texlive-20180414-source-upstream_fixes-3.patch>.
-
-Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
-Date: 2018-12-26
-Initial Package Version: 20180414
-Upstream Status: Applied
-Origin: Upstream
-Description: Two fixes, cherry-picked from svn plus a CVE fix.
-I have removed the partial fixes for various system versions of poppler.
-
-r47469 Fix segfault in dvipdfm-x (XeTeX) on 1/2/4-bit transparent indexed PNGs.
-
-r47477 Fix a ptex regression for discontinuous kinsoku table.
-
-Also, via fedora (I got lost in svn) a critical fix for CVE-2018-17407
-
-"A buffer overflow in the handling of Type 1 fonts allows arbitrary code
-execution when a malicious font is loaded by one of the vulnerable tools:
-pdflatex, pdftex, dvips, or luatex."
-
-diff -Naur a/texk/dvipdfm-x/pngimage.c b/texk/dvipdfm-x/pngimage.c
---- a/texk/dvipdfm-x/pngimage.c	2018-02-17 08:41:35.000000000 +0000
-+++ b/texk/dvipdfm-x/pngimage.c	2018-10-09 01:52:01.648670875 +0100
-@@ -964,12 +964,16 @@
-   png_bytep   trans;
-   int         num_trans;
-   png_uint_32 i;
-+  png_byte    bpc, mask, shift;
- 
-   if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
-       !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
-     WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
-     return NULL;
-   }
-+  bpc   = png_get_bit_depth(png_ptr, info_ptr);
-+  mask  = 0xff >> (8 - bpc);
-+  shift = 8 - bpc;
- 
-   smask = pdf_new_stream(STREAM_COMPRESS);
-   dict  = pdf_stream_dict(smask);
-@@ -981,7 +985,8 @@
-   pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
-   pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
-   for (i = 0; i < width*height; i++) {
--    png_byte idx = image_data_ptr[i];
-+    /* data is packed for 1/2/4 bpc formats, msb first */
-+    png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask;
-     smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
-   }
-   pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
-diff -Naur a/texk/dvipsk/writet1.c b/texk/dvipsk/writet1.c
---- a/texk/dvipsk/writet1.c	2016-11-25 18:24:26.000000000 +0000
-+++ b/texk/dvipsk/writet1.c	2018-10-09 01:52:01.648670875 +0100
-@@ -1449,7 +1449,9 @@
-         *(strend(t1_buf_array) - 1) = ' ';
- 
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/luatexdir/font/writet1.w b/texk/web2c/luatexdir/font/writet1.w
---- a/texk/web2c/luatexdir/font/writet1.w	2016-11-25 18:24:34.000000000 +0000
-+++ b/texk/web2c/luatexdir/font/writet1.w	2018-10-09 01:52:01.648670875 +0100
-@@ -1625,7 +1625,9 @@
-     if (sscanf(p, "%i", &i) != 1) {
-         strcpy(t1_buf_array, t1_line_array);
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
---- a/texk/web2c/luatexdir/image/pdftoepdf.w	2018-01-17 18:00:12.000000000 +0000
-+++ b/texk/web2c/luatexdir/image/pdftoepdf.w	2018-10-09 01:52:01.648670875 +0100
-@@ -472,10 +472,10 @@
-         break;
-     */
-     case objString:
--        copyString(pdf, obj->getString());
-+        copyString(pdf, (GooString *)obj->getString());
-         break;
-     case objName:
--        copyName(pdf, obj->getName());
-+        copyName(pdf, (char *)obj->getName());
-         break;
-     case objNull:
-         pdf_add_null(pdf);
-diff -Naur a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
---- a/texk/web2c/luatexdir/lua/lepdflib.cc	2018-02-14 14:44:38.000000000 +0000
-+++ b/texk/web2c/luatexdir/lua/lepdflib.cc	2018-10-09 01:52:01.649670868 +0100
-@@ -674,7 +674,7 @@
-     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
-         pdfdoc_changed_error(L);                               \
--    gs = ((in *) uin->d)->function();                          \
-+    gs = (GooString *)((in *) uin->d)->function();             \
-     if (gs != NULL)                                            \
-         lua_pushlstring(L, gs->getCString(), gs->getLength()); \
-     else                                                       \
-@@ -1813,7 +1813,7 @@
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((Object *) uin->d)->isString()) {
--        gs = ((Object *) uin->d)->getString();
-+        gs = (GooString *)((Object *) uin->d)->getString();
-         lua_pushlstring(L, gs->getCString(), gs->getLength());
-     } else
-         lua_pushnil(L);
-diff -Naur a/texk/web2c/pdftexdir/writet1.c b/texk/web2c/pdftexdir/writet1.c
---- a/texk/web2c/pdftexdir/writet1.c	2016-11-25 18:24:37.000000000 +0000
-+++ b/texk/web2c/pdftexdir/writet1.c	2018-10-09 01:52:01.649670868 +0100
-@@ -1598,7 +1598,9 @@
-         *(strend(t1_buf_array) - 1) = ' ';
- 
-         t1_getline();
-+        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcat(t1_buf_array, t1_line_array);
-+        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
-         strcpy(t1_line_array, t1_buf_array);
-         t1_line_ptr = eol(t1_line_array);
-     }
-diff -Naur a/texk/web2c/ptexdir/ptex_version.h b/texk/web2c/ptexdir/ptex_version.h
---- a/texk/web2c/ptexdir/ptex_version.h	2018-01-21 03:48:06.000000000 +0000
-+++ b/texk/web2c/ptexdir/ptex_version.h	2018-10-09 01:52:01.649670868 +0100
-@@ -1 +1 @@
--#define PTEX_VERSION "p3.8.0"
-+#define PTEX_VERSION "p3.8.1"
-diff -Naur a/texk/web2c/ptexdir/tests/free_ixsp.tex b/texk/web2c/ptexdir/tests/free_ixsp.tex
---- a/texk/web2c/ptexdir/tests/free_ixsp.tex	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/ptexdir/tests/free_ixsp.tex	2018-10-09 01:52:01.649670868 +0100
-@@ -0,0 +1,53 @@
-+%#!eptex -ini -etex
-+\let\dump\relax
-+\batchmode
-+\input plain
-+
-+\errorstopmode
-+\catcode`@=11
-+\newcount\@tempcnta
-+\newcount\@tempcntb
-+\newcount\@tempcntc
-+\mathchardef\LIM=256
-+
-+\def\MYCHAR#1{%
-+  \@tempcntc=\numexpr7*#1+"101\relax
-+  \@tempcnta=\@tempcntc\divide\@tempcnta 94
-+  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
-+  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
-+  \advance\@tempcnta18 % 18区以降
-+  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
-+}
-+
-+\newcount\CNT\newcount\CNTA
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \message{\the\CNT.}
-+  \inhibitxspcode\CNTA=1\relax
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+
-+\newcount\CNTB
-+
-+\loop
-+  \MYCHAR\CNTB
-+  \global\inhibitxspcode\CNTA=3
-+{%
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \count@=\numexpr 1-\inhibitxspcode\CNTA\relax
-+  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else
-+    \errmessage{<\the\CNTB, \the\CNT, \the\inhibitxspcode\CNTA>}\fi\fi
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+}
-+  \MYCHAR\CNTB
-+  \global\inhibitxspcode\CNTA=1\relax
-+  \advance\CNTB1\relax
-+  \ifnum\CNTB<\LIM
-+\repeat
-+\bye
-diff -Naur a/texk/web2c/ptexdir/tests/free_pena.tex b/texk/web2c/ptexdir/tests/free_pena.tex
---- a/texk/web2c/ptexdir/tests/free_pena.tex	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/ptexdir/tests/free_pena.tex	2018-10-09 01:52:01.649670868 +0100
-@@ -0,0 +1,52 @@
-+%#!eptex -ini -etex
-+\let\dump\relax
-+\batchmode
-+\input plain
-+
-+\errorstopmode
-+\catcode`@=11
-+\newcount\@tempcnta
-+\newcount\@tempcntb
-+\newcount\@tempcntc
-+\mathchardef\LIM=256
-+
-+\def\MYCHAR#1{%
-+  \@tempcntc=\numexpr7*#1+"101\relax
-+  \@tempcnta=\@tempcntc\divide\@tempcnta 94
-+  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
-+  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
-+  \advance\@tempcnta18 % 18区以降
-+  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
-+}
-+
-+\newcount\CNT\newcount\CNTA
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \message{\the\CNT.}
-+  \prebreakpenalty\CNTA=\numexpr\CNT+1\relax
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+
-+\newcount\CNTB
-+
-+\loop
-+  \MYCHAR\CNTB
-+  \global\prebreakpenalty\CNTA=0
-+{%
-+\CNT=0
-+\loop
-+  \MYCHAR\CNT
-+  \count@=\numexpr -\CNT-1+\prebreakpenalty\CNTA\relax
-+  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else\errmessage{<\the\CNTB, \the\CNT>}\fi\fi
-+  \advance\CNT1\relax
-+  \ifnum\CNT<\LIM
-+\repeat
-+}
-+  \MYCHAR\CNTB
-+  \global\prebreakpenalty\CNTA=\numexpr\CNTB+1\relax
-+  \advance\CNTB1\relax
-+  \ifnum\CNTB<\LIM
-+\repeat
-+\bye
diff --git a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
deleted file mode 100644
index 024ff416af..0000000000
--- a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch
+++ /dev/null
@@ -1,293 +0,0 @@
-Fix LuaTeX compatibility with Poppler 0.75.
-
-Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream
-fixes are unavailable.  This is based on Archs patch, with minor
-tweaks to comply with texlive-bin-CVE-2018-17407.patch.
-https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=418dd6f008c3d41a461353fdb60f2d73d87c58ed
-
-diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
---- a/texk/web2c/luatexdir/image/pdftoepdf.w
-+++ b/texk/web2c/luatexdir/image/pdftoepdf.w
-@@ -363,7 +363,7 @@ void copyReal(PDF pdf, double d)
- 
- static void copyString(PDF pdf, GooString * string)
- {
--    char *p;
-+    const char *p;
-     unsigned char c;
-     size_t i, l;
-     p = string->getCString();
-@@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string)
-     pdf->cave = true;
- }
- 
--static void copyName(PDF pdf, char *s)
-+static void copyName(PDF pdf, const char *s)
- {
-     pdf_out(pdf, '/');
-     for (; *s != 0; s++) {
-@@ -412,7 +412,7 @@ static void copyArray(PDF pdf, PdfDocument * pdf_doc, Array * array)
-     Object obj1;
-     pdf_begin_array(pdf);
-     for (i = 0, l = array->getLength(); i < l; ++i) {
--        obj1 = array->getNF(i);
-+        obj1 = array->getNF(i).copy();
-         copyObject(pdf, pdf_doc, &obj1);
-     }
-     pdf_end_array(pdf);
-@@ -425,7 +425,7 @@ static void copyDict(PDF pdf, PdfDocument * pdf_doc, Dict * dict)
-     pdf_begin_dict(pdf);
-     for (i = 0, l = dict->getLength(); i < l; ++i) {
-         copyName(pdf, dict->getKey(i));
--        obj1 = dict->getValNF(i);
-+        obj1 = dict->getValNF(i).copy();
-         copyObject(pdf, pdf_doc, &obj1);
-     }
-     pdf_end_dict(pdf);
-@@ -475,7 +475,7 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj)
-         copyString(pdf, (GooString *)obj->getString());
-         break;
-     case objName:
--        copyName(pdf, (char *)obj->getName());
-+        copyName(pdf, obj->getName());
-         break;
-     case objNull:
-         pdf_add_null(pdf);
-@@ -531,22 +531,22 @@ static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
- {
-     switch (pagebox_spec) {
-         case PDF_BOX_SPEC_MEDIA:
--            return page->getMediaBox();
-+            return (PDFRectangle *) page->getMediaBox();
-             break;
-         case PDF_BOX_SPEC_CROP:
--            return page->getCropBox();
-+            return (PDFRectangle *) page->getCropBox();
-             break;
-         case PDF_BOX_SPEC_BLEED:
--            return page->getBleedBox();
-+            return (PDFRectangle *) page->getBleedBox();
-             break;
-         case PDF_BOX_SPEC_TRIM:
--            return page->getTrimBox();
-+            return (PDFRectangle *) page->getTrimBox();
-             break;
-         case PDF_BOX_SPEC_ART:
--            return page->getArtBox();
-+            return (PDFRectangle *) page->getArtBox();
-             break;
-         default:
--            return page->getMediaBox();
-+            return (PDFRectangle *) page->getMediaBox();
-             break;
-     }
- }
-@@ -788,12 +788,12 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
-         Now all relevant parts of the Page dictionary are copied. Metadata validity
-         check is needed(as a stream it must be indirect).
-     */
--    obj1 = pageDict->lookupNF("Metadata");
-+    obj1 = pageDict->lookupNF("Metadata").copy();
-     if (!obj1.isNull() && !obj1.isRef())
-         formatted_warning("pdf inclusion","/Metadata must be indirect object");
-     /* copy selected items in Page dictionary */
-     for (i = 0; pagedictkeys[i] != NULL; i++) {
--        obj1 = pageDict->lookupNF(pagedictkeys[i]);
-+        obj1 = pageDict->lookupNF(pagedictkeys[i]).copy();
-         if (!obj1.isNull()) {
-             pdf_add_name(pdf, pagedictkeys[i]);
-             /* preserves indirection */
-@@ -806,13 +806,13 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info)
-         PDF file, climbing up the tree until the Resources are found.
-         (This fixes a problem with Scribus 1.3.3.14.)
-     */
--    obj1 = pageDict->lookupNF("Resources");
-+    obj1 = pageDict->lookupNF("Resources").copy();
-     if (obj1.isNull()) {
-         op1 = &pagesobj1;
-         op2 = &pagesobj2;
-         *op1 = pageDict->lookup("Parent");
-         while (op1->isDict()) {
--            obj1 = op1->dictLookupNF("Resources");
-+            obj1 = op1->dictLookupNF("Resources").copy();
-             if (!obj1.isNull()) {
-                 pdf_add_name(pdf, "Resources");
-                 copyObject(pdf, pdf_doc, &obj1);
-diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
---- a/texk/web2c/luatexdir/lua/lepdflib.cc
-+++ b/texk/web2c/luatexdir/lua/lepdflib.cc
-@@ -240,7 +240,7 @@ static int l_new_Attribute(lua_State * L)
-        if (uobj->pd != NULL && uobj->pd->pc != uobj->pc)
-           pdfdoc_changed_error(L);
-        uout = new_Attribute_userdata(L);
--       uout->d = new Attribute(n, nlen, (Object *)uobj->d);
-+       uout->d = new Attribute((GooString)n, (Object *)uobj->d);
-        uout->atype = ALLOC_LEPDF;
-        uout->pc = uobj->pc;
-        uout->pd = uobj->pd;
-@@ -496,7 +496,7 @@ static int l_new_Object(lua_State * L)
- 	double numA = lua_tonumber(L,1);
- 	double genA = lua_tonumber(L,2);
- 	if ( ((numA)==(int)(numA)) && ((genA)==(int)(genA)) ){
--	  uout->d = new Object((int)(numA), (int)(genA));
-+	  uout->d = new Object({(int)(numA), (int)(genA)});
- 	  uout->atype = ALLOC_LEPDF;
- 	  uout->pc = 0;
- 	  uout->pd = NULL;
-@@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L)                  \
-     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
-         pdfdoc_changed_error(L);                               \
--    o = ((in *) uin->d)->function();                           \
-+    o = (out *) ((in *) uin->d)->function();                           \
-     if (o != NULL) {                                           \
-         uout = new_##out##_userdata(L);                        \
-         uout->d = o;                                           \
-@@ -889,7 +889,7 @@ static int m_Array_getNF(lua_State * L)
-     if (i > 0 && i <= len) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1);
-+        *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength);
- 
- static int m_Dict_add(lua_State * L)
- {
--    char *s;
-+    const char *s;
-     udstruct *uin, *uobj;
-     uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    s = copyString(luaL_checkstring(L, 2));
-+    s = luaL_checkstring(L, 2);
-     uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
-     ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
-     return 0;
-@@ -1190,7 +1190,7 @@ static int m_Dict_lookupNF(lua_State * L)
-     s = luaL_checkstring(L, 2);
-     uout = new_Object_userdata(L);
-     uout->d = new Object();
--    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s);
-+    *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s).copy();
-     uout->atype = ALLOC_LEPDF;
-     uout->pc = uin->pc;
-     uout->pd = uin->pd;
-@@ -1263,7 +1263,7 @@ static int m_Dict_getValNF(lua_State * L)
-     if (i > 0 && i <= len) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1);
-+        *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -1653,7 +1653,7 @@ static int m_Object_initRef(lua_State * L)
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
--    *((Object *) uin->d) = Object(num, gen);
-+    *((Object *) uin->d) = Object({num, gen});
-     return 0;
- }
- 
-@@ -2011,7 +2011,7 @@ static int m_Object_arrayGetNF(lua_State * L)
-         if (i > 0 && i <= len) {
-             uout = new_Object_userdata(L);
-             uout->d = new Object();
--            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1);
-+            *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1).copy();
-             uout->atype = ALLOC_LEPDF;
-             uout->pc = uin->pc;
-             uout->pd = uin->pd;
-@@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L)
-         pdfdoc_changed_error(L);
-     if (!((Object *) uin->d)->isDict())
-         luaL_error(L, "Object is not a Dict");
--    ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
-+    ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d)));
-     return 0;
- }
- 
-@@ -2104,7 +2104,7 @@ static int m_Object_dictLookupNF(lua_State * L)
-     if (((Object *) uin->d)->isDict()) {
-         uout = new_Object_userdata(L);
-         uout->d = new Object();
--        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s);
-+        *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s).copy();
-         uout->atype = ALLOC_LEPDF;
-         uout->pc = uin->pc;
-         uout->pd = uin->pd;
-@@ -2169,7 +2169,7 @@ static int m_Object_dictGetValNF(lua_State * L)
-         if (i > 0 && i <= len) {
-             uout = new_Object_userdata(L);
-             uout->d = new Object();
--            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1);
-+            *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1).copy();
-             uout->atype = ALLOC_LEPDF;
-             uout->pc = uin->pc;
-             uout->pd = uin->pd;
-@@ -2470,7 +2470,7 @@ static int m_PDFDoc_getFileName(lua_State * L)
-     uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
--    gs = ((PdfDocument *) uin->d)->doc->getFileName();
-+    gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName();
-     if (gs != NULL)
-         lua_pushlstring(L, gs->getCString(), gs->getLength());
-     else
-@@ -2559,7 +2559,7 @@ static int m_PDFDoc_readMetadata(lua_State * L)
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        gs = ((PdfDocument *) uin->d)->doc->readMetadata();
-+        gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata();
-         if (gs != NULL)
-             lua_pushlstring(L, gs->getCString(), gs->getLength());
-         else
-@@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
-     if (uin->pd != NULL && uin->pd->pc != uin->pc)
-         pdfdoc_changed_error(L);
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
-+        obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
-         uout = new_StructTreeRoot_userdata(L);
-         uout->d = obj;
-         uout->pc = uin->pc;
---- texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc.orig    2019-04-24 09:41:05.090522664 +0000
-+++ texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc 2019-04-24 09:43:37.119184926 +0000
-@@ -994,7 +994,8 @@
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
--    i = ((Catalog *) uin->d)->findPage(num, gen);
-+    Ref numgen = {num, gen};
-+    i = ((Catalog *) uin->d)->findPage(numgen);
-     if (i > 0)
-         lua_pushinteger(L, i);
-     else
-@@ -2596,8 +2597,9 @@
-         pdfdoc_changed_error(L);
-     num = luaL_checkint(L, 2);
-     gen = luaL_checkint(L, 3);
-+    Ref numgen = {num, gen};
-     if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
--        i = ((PdfDocument *) uin->d)->doc->findPage(num, gen);
-+        i = ((PdfDocument *) uin->d)->doc->findPage(numgen);
-         if (i > 0)
-             lua_pushinteger(L, i);
-         else
---- texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w.orig  2019-04-24 09:56:38.406498975 +0000
-+++ texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w       2019-04-24 09:56:57.020081327 +0000
-@@ -630,7 +630,7 @@
-         if (link == NULL || !link->isOk())
-             formatted_error("pdf inclusion","invalid destination '%s'",img_pagename(idict));
-         Ref ref = link->getPageRef();
--        img_pagenum(idict) = catalog->findPage(ref.num, ref.gen);
-+        img_pagenum(idict) = catalog->findPage(ref);
-         if (img_pagenum(idict) == 0)
-             formatted_error("pdf inclusion","destination is not a page '%s'",img_pagename(idict));
-         delete link;
diff --git a/gnu/packages/patches/texlive-bin-poppler-0.83.patch b/gnu/packages/patches/texlive-bin-poppler-0.83.patch
new file mode 100644
index 0000000000..5e57e3efac
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-poppler-0.83.patch
@@ -0,0 +1,52 @@
+Fix build with Poppler 0.83 and later.
+
+Taken from Arch Linux, but adjusted to patch the versioned Poppler
+files, as upstream applies it after copying them in place.
+https://git.archlinux.org/svntogit/packages.git/tree/trunk/texlive-poppler-0.83.patch?h=packages/texlive-bin
+
+diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+--- texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
++++ texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc
+@@ -723,7 +723,7 @@
+ #endif
+     // initialize
+     if (!isInit) {
+-        globalParams = new GlobalParams();
++        globalParams.reset(new GlobalParams());
+         globalParams->setErrQuiet(false);
+         isInit = true;
+     }
+@@ -1108,6 +1108,5 @@
+             delete_document(p);
+         }
+         // see above for globalParams
+-        delete globalParams;
+     }
+ }
+diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
+--- texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
++++ texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc
+@@ -79,7 +79,7 @@
+         exit(1);
+     }
+     fileName = new GString(argv[1]);
+-    globalParams = new GlobalParams();
++    globalParams.reset(new GlobalParams());
+     doc = new PDFDoc(fileName);
+     if (!doc->isOk()) {
+         fprintf(stderr, "Invalid PDF file\n");
+@@ -100,7 +100,7 @@
+     if (objnum == 0) {
+         srcStream = catalogDict.dictLookup("SourceObject");
+         static char const_SourceFile[] = "SourceFile";
+-        if (!srcStream.isStream(const_SourceFile)) {
++        if (!srcStream.isDict(const_SourceFile)) {
+             fprintf(stderr, "No SourceObject found\n");
+             exit(1);
+         }
+@@ -202,5 +202,4 @@
+         fprintf(stderr, "Cross-reference table extracted to %s\n", outname);
+     fclose(outfile);
+     delete doc;
+-    delete globalParams;
+ }
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index e4346d1232..4ea40126ae 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -227,29 +227,29 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
 (define texlive-extra-src
   (origin
     (method url-fetch)
-    (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-extra.tar.xz")
+    (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-extra.tar.xz")
     (sha256 (base32
-             "0a83kymxc8zmlxjb0y1gf6mx7qnf0hxffwkivwh5yh138y2rfhsv"))))
+             "13ncf2an4nlqv18lki6y2p6pcsgs1i54zqkhfwprax5j53bk70j8"))))
 
 (define texlive-texmf-src
   (origin
     (method url-fetch)
-    (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-texmf.tar.xz")
+    (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-texmf.tar.xz")
     (sha256 (base32
-             "1b8zigzg8raxkhhzphcmynf84rbdbj2ym2qkz24v8n0qx82zmqms"))))
+             "00n4qh9fj8v9zzy3y488hpfq1g3dnnh72y4yjsaikfcqpi59gv62"))))
 
 (define-public texlive-bin
   (package
    (name "texlive-bin")
-   (version "20180414")
+   (version "20190410")
    (source
     (origin
       (method url-fetch)
-      (uri (string-append "ftp://tug.org/historic/systems/texlive/2018/"
+      (uri (string-append "ftp://tug.org/historic/systems/texlive/2019/"
                           "texlive-" version "-source.tar.xz"))
       (sha256
        (base32
-        "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y"))
+        "1dfps39q6bdr1zsbp9p74mvalmy3bycihv19sb9c6kg30kprz8nj"))
       (patches
        (let ((arch-patch
               (lambda (name revision hash)
@@ -260,14 +260,13 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                                       "&id=" revision))
                   (file-name (string-append "texlive-bin-" name))
                   (sha256 (base32 hash)))))
-             (arch-revision "c4b99aba97213ea554b6592a4916d3c7394a6d7b"))
-         (append (search-patches  "texlive-bin-CVE-2018-17407.patch"
-                                  "texlive-bin-luatex-poppler-compat.patch")
-                 (list
-                  (arch-patch "pdftex-poppler0.76.patch" arch-revision
-                              "15ypbh21amfsdxy7ca825x28lkmmkklxk1w660gpgvzdi7s70h0b")
-                  (arch-patch "xetex-poppler-fixes.patch" arch-revision
-                              "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx")))))))
+             (arch-revision "49d7fe25e5ea63f136ebc20270c1d8fc9b00041c"))
+         (list
+          (arch-patch "pdftex-poppler0.76.patch" arch-revision
+                      "03vc88dz37mjjyaspzv0fik2fp5gp8qv82114869akd1dhszbaax")
+          (search-patch "texlive-bin-poppler-0.83.patch")
+          (arch-patch "texlive-poppler-0.84.patch" arch-revision
+                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
@@ -284,7 +283,7 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                                     "-checkout"))
           (sha256
            (base32
-            "0wrjls1y9b4k1z10l9l8w2l3yjcw7v7by2y16kchdpkiyldlkry6"))))
+            "1cj04svl8bpfwjr4gqfcc04rmklz3aggrxvgj7q5bxrh7c7g18xh"))))
       ("cairo" ,cairo)
       ("fontconfig" ,fontconfig)
       ("fontforge" ,fontforge)
@@ -362,18 +361,13 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
             (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc"
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
-        (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler
+        (add-after 'unpack 'patch-dvisvgm-build-files
           (lambda _
-            ;; Adjust for deprecated types in Poppler 0.73 and later.
-            (substitute* (append
-                          (find-files "texk/web2c/luatexdir/" "\\.(cc|w)$")
-                          '("texk/web2c/pdftexdir/pdftosrc.cc"))
-              (("GBool") "bool")
-              (("gFalse") "false")
-              (("gTrue") "true")
-              (("getCString") "c_str")
-              (("Guint") "unsigned int")
-              (("Guchar") "unsigned char"))
+            ;; XXX: Ghostscript is detected, but HAVE_LIBGS is never set, so
+            ;; the appropriate linker flags are not added.
+            (substitute* "texk/dvisvgm/configure"
+              (("^have_libgs=yes" all)
+               (string-append all "\nHAVE_LIBGS=1")))
             #t))
         (add-after 'unpack 'disable-failing-test
           (lambda _
-- 
2.24.1


From 99efc0cba4526f2f63365817f1d81fc65b9fd046 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:38:01 +0100
Subject: [PATCH 6/9] gnu: texlive-bin: Do not build static libraries.

* gnu/packages/tex.scm (texlive-bin)[arguments]: Add "--disable-static" in
 #:configure-flags.
---
 gnu/packages/tex.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 4ea40126ae..442baf6ed1 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -314,7 +314,8 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
    (arguments
     `(#:out-of-source? #t
       #:configure-flags
-       `("--disable-native-texlive-build"
+       '("--disable-static"
+         "--disable-native-texlive-build"
          "--with-system-cairo"
          "--with-system-freetype2"
          "--with-system-gd"
-- 
2.24.1


From 83a54160af4e2c0296bd2fd4ec84d7a4f5eacd04 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Thu, 9 Jan 2020 22:38:35 +0100
Subject: [PATCH 7/9] gnu: texlive-bin: Purge unused bundled software from the
 source.

* gnu/packages/tex.scm (texlive-bin)[source](modules, snippet): New fields.
---
 gnu/packages/tex.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 442baf6ed1..b3703d1c4f 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -266,7 +266,22 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                       "03vc88dz37mjjyaspzv0fik2fp5gp8qv82114869akd1dhszbaax")
           (search-patch "texlive-bin-poppler-0.83.patch")
           (arch-patch "texlive-poppler-0.84.patch" arch-revision
-                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))))
+                      "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa"))))
+      (modules '((guix build utils)
+                 (ice-9 ftw)))
+      (snippet
+       '(begin
+          (with-directory-excursion "libs"
+            (let ((preserved-directories '("." ".." "lua53" "luajit")))
+              ;; Delete bundled software, except Lua which cannot easily be
+              ;; used as an external dependency.
+              (for-each delete-file-recursively
+                        (scandir "."
+                                 (lambda (file)
+                                   (and (not (member file preserved-directories))
+                                        (eq? 'directory (stat:type (stat file)))))))))
+          ;; TODO: Unbundle stuff in texk/dvisvgm/dvisvgm-src/libs too.
+          #t))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
-- 
2.24.1


From a01f0d3d1713e39a2a81f85b7ba79eb899041ac5 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Fri, 10 Jan 2020 23:05:07 +0100
Subject: [PATCH 8/9] gnu: Add texlive-hyphen-pali.

* gnu/packages/tex.scm (texlive-hyphen-pali): New public variable.
---
 gnu/packages/tex.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index b3703d1c4f..8469c3032e 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -1959,6 +1959,19 @@ It ranges from the Val d'Aran within Catalunya, to the South Western Italian
 Alps encompassing the southern half of the French pentagon.")
     (license license:lppl1.0+)))
 
+(define-public texlive-hyphen-pali
+  (package
+    (inherit (texlive-hyphen-package
+              "texlive-hyphen-pali" "pi"
+              (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pi.tex")
+              (base32
+               "1fak853s4ijdqgrnhwymaq1lh8jab3qfyxapdmf6qpg6bqd20kxq")))
+    (synopsis "Panjabi hyphenation patterns")
+    (description "This package provides hyphenation patterns for Panjabi in
+T1/EC encoding.")
+    ;; Can be used with either license.
+    (license (list license:expat license:lgpl3+ license:gpl3+))))
+
 (define-public texlive-hyphen-piedmontese
   (package
     (inherit (texlive-hyphen-package
-- 
2.24.1


From 2dbafac48e56b2c63e291cdfa0789e24c624cdf3 Mon Sep 17 00:00:00 2001
From: Marius Bakke <mbakke@fastmail.com>
Date: Sat, 11 Jan 2020 23:53:40 +0100
Subject: [PATCH 9/9] gnu: TeX Live: Update packages to 2019.3.

* gnu/packages/tex.scm (texlive-texmf)[version]: Set to 20190410.
(texlive)[version]: Likewise.
(texlive-union)[native-inputs]: Update "updmap.cfg".
(texlive-latex-base)[source]: Adjust for removed files.
[arguments]: Ignore one new csplain build.
[native-inputs]: Update hash for "texlive-luatexconfig".
[inputs]: Add TEXLIVE-HYPHEN-PALI.
(texlive-hyphen-package)[native-inputs]: Add RUBY-HYDRA.
[arguments]: Rewrite phases for upstream changes.  In particular, the language
is now detected automatically, rendering the CODE parameter obsolete.
(texlive-hyphen-armenian, texlive-hyphen-turkish)[arguments]: Use
pre-generated patterns.
(texlive-hyphen-basque, texlive-hyphen-turkmen)[arguments]: Likewise.
[license]: Adjust for updated source file.
(texlive-hyphen-ethiopic, texlive-hyphen-galician)[arguments, license]: Likewise.
[native-inputs]: Remove.
(texlive-hyphen-german)[source]: Adjust for file rename.
(texlive-latex-fancyvrb): Use SIMPLE-TEXLIVE-PACKAGE.
(texlive-fonts-ec)[license]: Update URI.
(texlive-doi, texlive-pst-text)[source]: Update paths and hash.
(texlive-latex-pgf)[native-inputs]: Update "texlive-latex-pgf-generic".
(texlive-generic-pdftex)[native-inputs]: Update "pdftex-map".
(texlive-latex-pdfx)[native-inputs]: Update "texlive-tex-pdfx".
(hyph-utf8-scripts, texlive-docstrip, texlive-unicode-data,
texlive-hyphen-base, texlive-fontinst, texlive-cm, texlive-tex-plain,
texlive-hyphen-afrikaans, texlive-hyphen-ancientgreek,
texlive-hyphen-belarusian, texlive-hyphen-bulgarian, texlive-hyphen-catalan,
texlive-hyphen-chinese, texlive-hyphen-churchslavonic, texlive-hyphen-coptic,
texlive-hyphen-croatian, texlive-hyphen-czech, texlive-hyphen-danish,
texlive-hyphen-dutch, texlive-hyphen-english, texlive-hyphen-esperanto,
texlive-hyphen-estonian, texlive-hyphen-finnish, texlive-hyphen-french,
texlive-hyphen-friulan, texlive-hyphen-galician, texlive-hyphen-georgian,
texlive-hyphen-greek, texlive-hyphen-hungarian, texlive-hyphen-icelandic,
texlive-hyphen-indic, texlive-hyphen-indonesian, texlive-hyphen-interlingua,
texlive-hyphen-irish, texlive-hyphen-italian, texlive-hyphen-kurmanji,
texlive-hyphen-latin, texlive-hyphen-latvian, texlive-hyphen-lithuanian,
texlive-hyphen-mongolian, texlive-hyphen-norwegian, texlive-hyphen-occitan,
texlive-hyphen-piedmontese, texlive-hyphen-polish, texlive-hyphen-portuguese,
texlive-hyphen-romanian, texlive-hyphen-romansh, texlive-hyphen-russian,
texlive-hyphen-sanskrit, texlive-hyphen-serbian, texlive-hyphen-slovak,
texlive-hyphen-slovenian, texlive-hyphen-spanish, texlive-hyphen-swedish,
texlive-hyphen-thai, texlive-hyphen-ukrainian, texlive-hyphen-uppersorbian,
texlive-hyphen-welsh, texlive-hyph-utf8, texlive-dehyph-exptl,
texlive-latex-kpathsea, texlive-latex-filecontents, texlive-latex-oberdisk,
texlive-latex-tools, texlive-latex-l3kernel, texlive-latex-l3packages,
texlive-latex-fontspec, texlive-latex-amsmath, texlive-latex-babel,
texlive-generic-babel-german, texlive-latex-etoolbox, texlive-latex-g-brief,
texlive-latex-geometry, texlive-latex-polyglossia, texlive-tex-texinfo,
texlive-latex-colortbl, texlive-luatex-fancyhdr, texlive-latex-listings,
texlive-latex-eso-pic, texlive-latex-enumitem, texlive-latex-multirow,
texlive-latex-overpic, texlive-latex-parskip, texlive-latex-metapost,
texlive-latex-acmart, texlive-fonts-media9, texlive-latex-ocgx2,
texlive-latex-pgf, texlive-metapost, texlive-latex-koma-script,
texlive-generic-listofitems, texlive-latex-bibtex, texlive-context-base,
texlive-beamer, texlive-latex-pdfx, texlive-pstricks, texlive-tools,
texlive-siunitx): Update hashes.
---
 gnu/packages/tex.scm | 508 ++++++++++++++-----------------------------
 1 file changed, 166 insertions(+), 342 deletions(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 8469c3032e..e191e619d8 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -143,19 +143,17 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                               "-checkout"))
     (sha256
      (base32
-      "1ix8h637hwhz4vrdhilf84kzzdza0wi8fp26nh7iws0bq08sl517"))))
+      "0lk7shx768sxvgr85y8bnmmnj8x4bbkgpxrz3z8jp8avi33prw83"))))
 
 (define (texlive-hyphen-package name code locations hash)
+  "Return a TeX Live hyphenation package with the given NAME, using source
+files from LOCATIONS with expected checksum HASH.  CODE is not currently in use."
   (let ((parent (simple-texlive-package
                  name locations hash #:trivial? #t)))
     (package
       (inherit parent)
       (arguments
        (substitute-keyword-arguments (package-arguments parent)
-         ((#:modules _ '())
-          '((guix build gnu-build-system)
-            (guix build utils)
-            (ice-9 match)))
          ((#:phases phases)
           `(modify-phases ,phases
              (replace 'build
@@ -168,12 +166,8 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                          (string-append root "/tex/generic/hyph-utf8/loadhyph"))
                         (ptex
                          (string-append root "/tex/generic/hyph-utf8/patterns/ptex"))
-                        (filter-expression
-                         (match ',code
-                           ((? string?)
-                            (format #f "\nlanguages.select!{|l| l.code == \"~a\"}\n" ',code))
-                           ((a b ...)
-                            (format #f "\nlanguages.select!{|l| [~{\"~a\",~}].include? l.code }\n" ',code)))))
+                        (quote
+                         (string-append root "/tex/generic/hyph-utf8/patterns/quote")))
                    (mkdir "scripts")
                    (copy-recursively
                     (assoc-ref inputs "hyph-utf8-scripts") "scripts")
@@ -182,45 +176,41 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
                    (mkdir-p patterns)
                    (mkdir-p loaders)
                    (mkdir-p ptex)
+                   (mkdir-p quote)
 
                    ;; Generate plain patterns
                    (with-directory-excursion "scripts"
-                     (substitute* "languages.rb"
-                       (("../../../tex/generic/") "../tex/generic/"))
-                     (substitute* "generate-plain-patterns.rb"
-                       ;; Ruby 2 does not need this.
-                       (("require 'unicode'") "")
-                       (("Unicode.upcase\\(ch\\)") "ch.upcase")
-                       ;; Write directly to the output directory
-                       (("\\$path_root=File.*")
-                        (string-append "$path_root=\"" out "/share/texmf-dist/\"\n"))
-                       ;; Create quote directory when needed
-                       (("f = File.open\\(\"#\\{\\$path_quote\\}" m)
-                        (string-append "require 'fileutils'; FileUtils.mkdir_p $path_quote;" m))
-                       ;; Only generate patterns for this language.
-                       (("languages =.*" m)
-                        (string-append m filter-expression)))
+                     (substitute* "lib/tex/hyphen/path.rb"
+                       (("^([[:blank:]]+)TeXROOT = .*" _ indent)
+                        (string-append indent "TeXROOT = \""
+                                       (getcwd) "/..\"\n")))
+
+                      (substitute* "generate-plain-patterns.rb"
+                        ;; Ruby 2 does not need this.
+                        (("require 'unicode'") "")
+                        ;; Write directly to the output directory
+                        (("File\\.join\\(PATH::TXT")
+                         (string-append "File.join(\"" patterns "\""))
+                        ;; Create quote directory when needed
+                        (("File\\.join\\(PATH::QUOTE")
+                         (string-append "File.join(\"" quote "\"")))
                      (invoke "ruby" "generate-plain-patterns.rb")
 
                      ;; Build pattern loaders
                      (substitute* "generate-pattern-loaders.rb"
-                       (("\\$path_tex_generic=File.*")
-                        (string-append "$path_tex_generic=\"" root "/tex/generic\"\n"))
-                       ;; Only generate loader for this language.
-                       (("languages =.*" m)
-                        (string-append m filter-expression)))
+                       (("File\\.join\\(PATH::LOADER")
+                        (string-append "File.join(\"" loaders "\"")))
+
                      (invoke "ruby" "generate-pattern-loaders.rb")
 
                      ;; Build ptex patterns
-                     (substitute* "generate-ptex-patterns.rb"
-                       (("\\$path_root=File.*")
-                        (string-append "$path_root=\"" root "\"\n"))
-                       ;; Only generate ptex patterns for this language.
-                       (("languages =.*" m)
-                        (string-append m filter-expression)))
+                      (substitute* "generate-ptex-patterns.rb"
+                        (("File\\.join\\(PATH::PTEX")
+                         (string-append "File.join(\"" ptex "\"")))
                      (invoke "ruby" "generate-ptex-patterns.rb")))))))))
       (native-inputs
        `(("ruby" ,ruby)
+         ("ruby-hydra" ,ruby-hydra)
          ("hyph-utf8-scripts" ,hyph-utf8-scripts)))
       (home-page "https://ctan.org/pkg/hyph-utf8"))))
 
@@ -460,7 +450,7 @@ This package contains the binaries.")
               "texlive-docstrip"
               (list "/tex/latex/base/docstrip.tex")
               (base32
-               "17vdy43d9vknldz7wb69hp33r8awmdvn4xszamvgs5ikcl4cp289")
+               "1f9sx1lp7v34zwm186msf03q2h28rrg0lh65z59zc0cvqffs6dvb")
               #:trivial? #t))
     (home-page "https://www.ctan.org/texlive")
     (synopsis "Utility to strip documentation from TeX files.")
@@ -475,7 +465,7 @@ documentation from TeX files.  It is part of the LaTeX base.")
               (list "/tex/generic/unicode-data/"
                     "/doc/generic/unicode-data/")
               (base32
-               "1j63kz29arfiydb8r1a53q1r4zyk1yjbcq0w9i93zddczgqzgbfb")
+               "0zy4v9y667cka5fi4dnc6x500907812y7pcaf63s5qxi8l7khxxy")
               #:trivial? #t))
     (home-page "https://www.ctan.org/pkg/unicode-data")
     (synopsis "Unicode data and loaders for TeX")
@@ -508,7 +498,7 @@ out to date by @code{unicode-letters.tex}. ")
                     "/tex/generic/hyphen/hypht1.tex"
                     "/tex/generic/hyphen/zerohyph.tex")
               (base32
-               "002g5zhzbj3ikgg8zidagdp605ac9f4qmfl148mp0mbpz1svk0ni")
+               "0f19nml4hdx9lh7accqdk1b9ismwfm2523l5zsc4kb4arysgcakz")
               #:trivial? #t))
     (home-page "https://tug.org/texlive/")
     (synopsis "Core hyphenation support files")
@@ -637,7 +627,7 @@ build fonts using the Metafont system.")
 
                          "/scripts/texlive/fontinst.sh")
                    (base32
-                    "09drlb0krhnizw92xlm5wxzzpgn3shcxd684xlg0zc5p16l47w6h")
+                    "0lprwib7n2ygfxvrw675vhif7ghyip2x6k70kqs9syp8lqxiizf8")
                    #:trivial? #t)))
     (package
       (inherit template)
@@ -726,7 +716,7 @@ documents.")
                          "/fonts/map/dvips/cm/cmtext-bsr-interpolated.map"
                          "/doc/fonts/cm/")
                    (base32
-                    "1h0q71paqmg1xjg6k35ni2i6m93kmlq9rdwm913xg9n4qngywl18")
+                    "09mvl94qrwlb9b4pkigi151l256v3djhwl4m5lgvk6yhn5y75zrp")
                    #:trivial? #t)))
     (package
       (inherit template)
@@ -1288,7 +1278,7 @@ incorporates the e-TeX extensions.")
               "texlive-tex-plain"
               (list "/tex/plain/")
               (base32
-               "1rrfay4d7lbyj02wlf23mwvbpjd160nwlgryx97hq1vb7dva4swr")
+               "1m4qpaszwfv7j8a85rlwl7rs4iv5nlj67c1vvn6ysly72h9gjydb")
               #:trivial? #t))
     (home-page "https://www.ctan.org/pkg/plain")
     (synopsis "Plain TeX format and supporting files")
@@ -1304,7 +1294,7 @@ discussed in the book).")
               "texlive-hyphen-afrikaans" "af"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex")
               (base32
-               "1vb3jccqnn1pm0680yqx52kvz595fmxnwa0cbf8qman6zglsssiw")))
+               "1k9k27a27bbrb0gz36191w32l2v6d3zbdh8zhrp4l3ild2pj3n4l")))
     (synopsis "Hyphenation patterns for Afrikaans")
     (description "The package provides hyphenation patterns for the Afrikaans
 language.")
@@ -1318,7 +1308,7 @@ language.")
                     "/tex/generic/hyphen/grahyph5.tex"
                     "/tex/generic/hyphen/ibyhyph.tex")
               (base32
-               "0kwrqsz7wdr1d9kylzwp60ka3wfbj8iad029k5h6y94nb86mf7zv")))
+               "01326lb6z0s8krcfgs8i1pnjfrm4gr33rc53gy80f63qbv4ssxrw")))
     (synopsis "Hyphenation patterns for ancient Greek")
     (description "The package provides hyphenation patterns for ancient
 Greek.")
@@ -1327,33 +1317,11 @@ Greek.")
 (define-public texlive-hyphen-armenian
   (let ((template (texlive-hyphen-package
                    "texlive-hyphen-armenian" "hy"
-                   (list "/source/generic/hyph-utf8/languages/hy/generate_patterns_hy.rb")
+                   (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hy.tex")
                    (base32
-                    "0z666y580w1kpxssdanz67ykq257lf11a1mnp1jrn08zijvfrw9c"))))
+                    "0hzny0npynsb07syxrpbfa5pkpj8r0j51pj64yxyfl1c0bak1fwp"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda _
-                 (let ((target (string-append (getcwd)
-                                              "/tex/generic/hyph-utf8/patterns/tex")))
-                   (mkdir-p target)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/hy/"
-                     (substitute* "generate_patterns_hy.rb"
-                       (("\\$file = File.new.*")
-                        (string-append "$file = File.new(\"" target
-                                       "/hyph-hy.tex\",\"w\")\n")))
-                     (invoke "ruby" "generate_patterns_hy.rb"))
-                   #t)))
-             (add-after 'install 'install-hyph-hy.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
       (synopsis "Hyphenation patterns for Armenian")
       (description "The package provides hyphenation patterns for the Armenian
 language.")
@@ -1363,39 +1331,17 @@ language.")
 (define-public texlive-hyphen-basque
   (let ((template (texlive-hyphen-package
                     "texlive-hyphen-basque" "eu"
-                    (list "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb")
+                    (list "/tex/generic/hyph-utf8/patterns/tex/hyph-eu.tex")
                     (base32
-                     "1yhsbzf1g9dm70jfixsz51hsfvn26cwfkfxvhg7xv2piynr4v51l"))))
+                     "15w969g1jqzn68l2b2lzf7iv7g3kil02aba3if6cag3qcnq92ra9"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda _
-                 (let ((target (string-append (getcwd)
-                                              "/tex/generic/hyph-utf8/patterns/tex")))
-                   (mkdir-p target)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/eu/"
-                     (substitute* "generate_patterns_eu.rb"
-                       (("\\$file = File.new.*")
-                        (string-append "$file = File.new(\"" target
-                                       "/hyph-eu.tex\",\"w\")\n")))
-                     (invoke "ruby" "generate_patterns_eu.rb"))
-                   #t)))
-             (add-after 'install 'install-hyph-eu.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
       (synopsis "Hyphenation patterns for Basque")
       (description "The package provides hyphenation patterns for the Basque
 language.")
-      ;; "Free for any purpose".
+      ;; Similar to Unicode license.
       (license (license:fsf-free
-                "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb")))))
+                "/tex/generic/hyph-utf8/patterns/tex/hyph-eu.tex")))))
 
 (define-public texlive-hyphen-belarusian
   (package
@@ -1403,7 +1349,7 @@ language.")
               "texlive-hyphen-belarusian" "be"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-be.tex")
               (base32
-               "1xvffph824rg43gi2xs3ny9gzlp708fyxj9zfhckmg8pzh9vv3n6")))
+               "0ppm12wndaxv9da62dwkbnk7w9nijikn6jkc97m76xis338g2h02")))
     (synopsis "Hyphenation patterns for Belarusian")
     (description "The package provides hyphenation patterns for the Belarusian
 language.")
@@ -1417,7 +1363,7 @@ language.")
                     "/doc/generic/hyph-utf8/bg/azbukaExtended.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-bg.tex")
               (base32
-               "06dxkk9azsggbri04i6g62lswygzadsx3rpqvbyzvbxc5wxz1dj1")))
+               "0ngrgw2rmipxss76rgfk62x9nnsgwmaxxna2jqxxhybai3q39mx5")))
     (synopsis "Hyphenation patterns for Bulgarian")
     (description "The package provides hyphenation patterns for the Bulgarian
 language in T2A and UTF-8 encodings.")
@@ -1431,7 +1377,7 @@ language in T2A and UTF-8 encodings.")
               "texlive-hyphen-catalan" "ca"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ca.tex")
               (base32
-               "0cisx76jpw8kpd3an37m9h8ppiysnizgfzl48y9d9n3fvx8jyykb")))
+               "10zzlfz5v8d9csg85ibpp2vfvmpqa56vbl85qy5gws099vygpayg")))
     (synopsis "Hyphenation patterns for Catalan")
     (description "The package provides hyphenation patterns for Catalan in
 T1/EC and UTF-8 encodings.")
@@ -1443,7 +1389,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-chinese" "zh-latn-pinyin"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-zh-latn-pinyin.tex")
               (base32
-               "07gbrn5fcl5d3hyg1zpai3zp1ggl73cmvpalwvh7ah313f57gjkk")))
+               "1j68mry2zy91m1kbzwhin5q2jajf6xh48npdds8wvp1sqmzih2a3")))
     (synopsis "Hyphenation patterns for unaccented Chinese pinyin")
     (description "The package provides hyphenation patterns for unaccented
 Chinese pinyin T1/EC and UTF-8 encodings.")
@@ -1455,7 +1401,7 @@ Chinese pinyin T1/EC and UTF-8 encodings.")
               "texlive-hyphen-churchslavonic" "cu"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cu.tex")
               (base32
-               "0xkqlz3ixyl4fxsnzrbxqrb82p0n67rhgpddbiyv3qwfnbr2b5a4")))
+               "0fhbwaapq2213msbhgr0d1lw06ihmrqirxj092mn73d8ynl13qlh")))
     (synopsis "Hyphenation patterns for Church Slavonic")
     (description "The package provides hyphenation patterns for Church
 Slavonic in UTF-8 encoding.")
@@ -1468,7 +1414,7 @@ Slavonic in UTF-8 encoding.")
               (list "/tex/generic/hyph-utf8/patterns/tex-8bit/copthyph.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-cop.tex")
               (base32
-               "07i03jpdfy4ip7zbg4gnk4hk8zwj8rlni9dgrb1p8mfw2w19d80c")))
+               "1jlxxvyfa2aljizaa3qlcxyhqsrb4dawv3q3fbyp2lxz6ag9fy6m")))
     (synopsis "Hyphenation patterns for Coptic")
     (description "The package provides hyphenation patterns for Coptic in
 UTF-8 encoding as well as in ASCII-based encoding for 8-bit engines.")
@@ -1481,7 +1427,7 @@ UTF-8 encoding as well as in ASCII-based encoding for 8-bit engines.")
               "texlive-hyphen-croatian" "hr"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hr.tex")
               (base32
-               "129nz2nqilyq2477n2clx20xfbxh1qxm69zg4n2f6c4d4a8711nc")))
+               "12n9r2winai15jc622sqdwclgcs1s68r6vcf7ic8vvq0x9qhwc5v")))
     (synopsis "Hyphenation patterns for Croatian")
     (description "The package provides hyphenation patterns for Croatian in
 T1/EC and UTF-8 encodings.")
@@ -1493,7 +1439,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-czech" "cs"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cs.tex")
               (base32
-               "1k5516gbfp1d5p97j247byag9sdgds5zwc11bwxfk58i6zq1v0m6")))
+               "1q37s6p8yfyi3rp1azbz421lg4lr4aiki8m631i4x9rmps89m8iq")))
     (synopsis "Hyphenation patterns for Czech")
     (description "The package provides hyphenation patterns for Czech in T1/EC
 and UTF-8 encodings.")
@@ -1505,7 +1451,7 @@ and UTF-8 encodings.")
               "texlive-hyphen-danish" "da"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-da.tex")
               (base32
-               "0zxzs1b1723mav76i0wiyq4w82x8715cykvwa2bc60ldc2amv0vs")))
+               "1vj8nip64rzcrcg3skm4vqad1ggqwgan74znrdns610wjcm1z9qd")))
     (synopsis "Hyphenation patterns for Danish")
     (description "The package provides hyphenation patterns for Danish in
 T1/EC and UTF-8 encodings.")
@@ -1518,7 +1464,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-dutch" "nl"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex")
               (base32
-               "0cq46cmgjc4y2x0xs9b0a5zca3jmszv4rkzmrhgjb5z2nm3xkrpi")))
+               "1bg9g790ksq5cn8qihai6pacmkp9vpf35h4771z361nvwa40l8yk")))
     (synopsis "Hyphenation patterns for Dutch")
     (description "The package provides hyphenation patterns for Dutch in T1/EC
 and UTF-8 encodings.")
@@ -1531,7 +1477,7 @@ and UTF-8 encodings.")
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-en-us.tex")
               (base32
-               "08hyih8hn2w2q12gc4zygz0ckbz00mkzzn9898z2bicky02zg3kc")))
+               "08b3jihjaamcl1pvffi0s47nwavkm66l9mrrmby3l32dfpkprrc5")))
     (synopsis "Hyphenation patterns for American and British English")
     (description "The package provides additional hyphenation patterns for
 American and British English in ASCII encoding.")
@@ -1545,7 +1491,7 @@ American and British English in ASCII encoding.")
               "texlive-hyphen-esperanto" "eo"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-eo.tex")
               (base32
-               "03xbjbzasznsyf4wd45bya6f4snfmzpdzg5zpvqj5q6gjykdg54k")))
+               "1503kzn9bk4mm4ba35cka2hm8rz0v3j5l30v5rrsd4rqgpibcgic")))
     (synopsis "Hyphenation patterns for Esperanto")
     (description "The package provides hyphenation patterns for Esperanto ISO
 Latin 3 and UTF-8 encodings.")
@@ -1557,7 +1503,7 @@ Latin 3 and UTF-8 encodings.")
               "texlive-hyphen-estonian" "et"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-et.tex")
               (base32
-               "0idl6xajkkgxqngjn19jcfd29is5rhfn59v0z8h4sv8yjv6k934m")))
+               "1rdas2450ib02rwy65i69l86nyc9h15bl07xbbwhmhxfnj8zj4v8")))
     (synopsis "Hyphenation patterns for Estonian")
     (description "The package provides hyphenation patterns for Estonian in
 T1/EC and UTF-8 encodings.")
@@ -1567,53 +1513,17 @@ T1/EC and UTF-8 encodings.")
 (define-public texlive-hyphen-ethiopic
   (let ((template (texlive-hyphen-package
                    "texlive-hyphen-ethiopic" "mul-ethi"
-                   (list "/source/generic/hyph-utf8/languages/mul-ethi/generate_patterns_mul-ethi.lua")
+                   (list "/tex/generic/hyph-utf8/patterns/tex/hyph-mul-ethi.tex")
                    (base32
-                    "1dp5qn1mhv62kj27lqc7s0ca65z9bziyavkvif9ds5ivk7aq9drw"))))
+                    "1b93fc6j4aybh0pgq23hsn1njm6asf7sfz803fbj3ai0whsxd10l"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (let ((tex (string-append (getcwd)
-                                           "/tex/generic/hyph-utf8/patterns/tex/")))
-                   (mkdir-p tex)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/mul-ethi/"
-                     (substitute* "generate_patterns_mul-ethi.lua"
-                       (("\"UnicodeData.txt\"")
-                        (string-append "\""
-                                       (assoc-ref inputs "UnicodeData.txt")
-                                       "\"")))
-                     (invoke "texlua" "generate_patterns_mul-ethi.lua")
-                     (rename-file "hyph-mul-ethi.tex"
-                                  (string-append tex "/hyph-mul-ethi.tex"))
-                     #t))))
-             (add-after 'install 'install-hyph-mul-ethi.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
-      (native-inputs
-       `(,@(package-native-inputs template)
-         ("texlive-bin" ,texlive-bin)
-         ("UnicodeData.txt"
-          ,(origin
-             (method url-fetch)
-             (uri (string-append "http://www.unicode.org/Public/10.0.0/ucd/"
-                                 "UnicodeData.txt"))
-             (sha256
-              (base32
-               "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj"))))))
       (synopsis "Hyphenation patterns for Ethiopic scripts")
       (description "The package provides hyphenation patterns for languages
 written using the Ethiopic script for Unicode engines.  They are not supposed
 to be linguistically relevant in all cases and should, for proper typography,
 be replaced by files tailored to individual languages.")
-      (license license:lppl))))
+      (license license:expat))))
 
 (define-public texlive-hyphen-finnish
   (package
@@ -1621,7 +1531,7 @@ be replaced by files tailored to individual languages.")
               "texlive-hyphen-finnish" "fi"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fi.tex")
               (base32
-               "03n6s8dwwa5vfk9bbyhcdf7p0bc0d1rrr312hpgbz8jfc9fbgd7n")))
+               "1f72b4ydb4zddvw2i004948khmwzigxkdkwfym5v1kkq0183sfpj")))
     (synopsis "Hyphenation patterns for Finnish")
     (description "The package provides hyphenation patterns for Finnish in
 T1/EC and UTF-8 encodings.")
@@ -1633,7 +1543,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-french" "fr"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fr.tex")
               (base32
-               "1q82mmwvy7fdkm42958ajb53w89qkcdwybswxlwcvqngvhpy3zf0")))
+               "0jc3kqys6cxjw8x8pzjln7z78l8s7f5rlyrkv7dzr1kiwnwilk9d")))
     (synopsis "Hyphenation patterns for French")
     (description "The package provides hyphenation patterns for French in
 T1/EC and UTF-8 encodings.")
@@ -1645,7 +1555,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-friulan" "fur"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fur.tex")
               (base32
-               "07m975p0ghzs9sjqqgxy7qdkqmgvg4rx4xp08zwm1parqsdlwd5d")))
+               "1dlnh8slpf50mryxv7zzbx08xp54zkdfs1j7y37ipwbrajvd740f")))
     (synopsis "Hyphenation patterns for Friulan")
     (description "The package provides hyphenation patterns for Friulan in
 ASCII encodings.")
@@ -1654,50 +1564,15 @@ ASCII encodings.")
 (define-public texlive-hyphen-galician
   (let ((template (texlive-hyphen-package
                    "texlive-hyphen-galician" "gl"
-                   (list "/source/generic/hyph-utf8/languages/gl/README"
-                         "/source/generic/hyph-utf8/languages/gl/glhybiox.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glhyextr.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glhymed.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glhyquim.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glhytec.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glhyxeog.tex"
-                         "/source/generic/hyph-utf8/languages/gl/glpatter-utf8.tex")
+                   (list "/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex")
                    (base32
-                    "1yj1gxhkqqlyaand5gd6ij6xwffskryzlbcigdam3871a9p8x18w"))))
+                    "13zx2r3nrxdr025g2lxrph0ga6wf7cs8dxixn4fhbl6xr1cx028g"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (let ((tex (string-append (getcwd)
-                                           "/tex/generic/hyph-utf8/patterns/tex/")))
-                   (mkdir-p tex)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/gl/"
-                     (setenv "TEXINPUTS"
-                             (string-append (getcwd) "//:"
-                                            (assoc-ref inputs "texlive-mkpattern") "//"))
-                     (invoke "tex" "-ini" "-8bit" "glpatter-utf8.tex")
-                     (rename-file "hyph-gl.tex"
-                                  (string-append tex "/hyph-gl.tex"))
-                     #t))))
-             (add-after 'install 'install-hyph-gl.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
-      (native-inputs
-       `(,@(package-native-inputs template)
-         ("texlive-bin" ,texlive-bin)
-         ("texlive-mkpattern" ,texlive-mkpattern)))
       (synopsis "Hyphenation patterns for Galician")
       (description "The package provides hyphenation patterns for Galician in
 T1/EC and UTF-8 encodings.")
-      ;; glhyextr.tex is the only file in the public domain.
-      (license (list license:lppl1.3 license:public-domain)))))
+      (license license:lppl1.3))))
 
 (define-public texlive-hyphen-georgian
   (package
@@ -1705,7 +1580,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-georgian" "ka"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex")
               (base32
-               "01zhn6mflpiqw4lyi8dx8syiz5mky9jrxm87cgw31hanis5cml4l")))
+               "0l0hk7ka04fr8x11nnw95x151cxyycy0fph772m3a3p8qk4x9wp7")))
     (synopsis "Hyphenation patterns for Georgian")
     (description "The package provides hyphenation patterns for Georgian in
 T8M, T8K, and UTF-8 encodings.")
@@ -1718,12 +1593,12 @@ T8M, T8K, and UTF-8 encodings.")
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1901.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1996.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-de-ch-1901.tex"
-                    "/tex/generic/hyphen/dehyphn.tex"
-                    "/tex/generic/hyphen/dehypht.tex"
-                    "/tex/generic/hyphen/dehyphtex.tex"
-                    "/tex/generic/hyphen/ghyphen.README")
+                    "/tex/generic/dehyph/dehyphn.tex"
+                    "/tex/generic/dehyph/dehypht.tex"
+                    "/tex/generic/dehyph/dehyphtex.tex"
+                    "/tex/generic/dehyph/README")
               (base32
-               "1g0vhpvl2l69rn2lx7lkw0inrjbcxkj2sjgwd2fq7hdi4yb2ms76")))
+               "0wp5by5kkf4ac6li5mbppqzw11500wa7f22p5vpz3m1kwd15zavw")))
     (synopsis "Hyphenation patterns for German")
     (description "This package provides hyphenation patterns for German in
 T1/EC and UTF-8 encodings, for traditional and reformed spelling, including
@@ -1742,7 +1617,7 @@ Swiss German.")
                     "/tex/generic/hyphen/grmhyph5.tex"
                     "/tex/generic/hyphen/grphyph5.tex")
               (base32
-               "04626jhlrv2flgdygm7sfv6xpqhfwiavi16gy2ac04iliyk4rypg")))
+               "1qyr6m1nh6d4wj68616cfxv4wjpiy1w2rlldxlx2ajzba381w3hf")))
     (synopsis "Hyphenation patterns for Greek")
     (description "This package provides hyphenation patterns for Modern Greek
 in monotonic and polytonic spelling in LGR and UTF-8 encodings.")
@@ -1756,7 +1631,7 @@ in monotonic and polytonic spelling in LGR and UTF-8 encodings.")
                     "/doc/generic/hyph-utf8/hu/"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-hu.tex")
               (base32
-               "0c81w2569cqsi4j56azwz0lfx16541zhiqgmn3m4iwh7mpx3rji8")))
+               "1j1b8kksg9r8nmjyjvvz8fr3hgcrjj6jlybf9p06nwrrwm2r8j8f")))
     (synopsis "Hyphenation patterns for Hungarian")
     (description "This package provides hyphenation patterns for Hungarian in
 T1/EC and UTF-8 encodings.")
@@ -1769,7 +1644,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-icelandic" "is"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-is.tex")
               (base32
-               "1ah1f82lgfhqgid4ngsfiypybx10v8gwxnb12396vfsj3bq6j0ba")))
+               "1m9xj41csj3ldym09d82zjbd3345sg2z10d8pxpvhgibf97mb66h")))
     (synopsis "Hyphenation patterns for Icelandic")
     (description "This package provides hyphenation patterns for Icelandic in
 T1/EC and UTF-8 encodings.")
@@ -1792,7 +1667,7 @@ T1/EC and UTF-8 encodings.")
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-ta.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-te.tex")
               (base32
-               "1v8zc3wdbkhzjrflndmz4gdj11syz8vrcg0vwvm5bwhkx23g91lv")))
+               "02d2kcd3lpk95fykjwhzw9s2a1s2w1skz8h2mmszrz979d1xzhpm")))
     (synopsis "Indic hyphenation patterns")
     (description "This package provides hyphenation patterns for Assamese,
 Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Oriya, Panjabi, Tamil
@@ -1805,7 +1680,7 @@ and Telugu for Unicode engines.")
               "texlive-hyphen-indonesian" "id"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-id.tex")
               (base32
-               "0mf0hr9c952kb2hmzid7fqg5whshwpribbyndb3ba092wh02abh5")))
+               "1r62w02rf0i4z0jgij54d16qjbj0zyfwm9dwdkqka76jrivij83q")))
     (synopsis "Indonesian hyphenation patterns")
     (description "This package provides hyphenation patterns for
 Indonesian (Bahasa Indonesia) in ASCII encoding.  They are probably also
@@ -1818,7 +1693,7 @@ usable for Malay (Bahasa Melayu).")
               "texlive-hyphen-interlingua" "ia"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ia.tex")
               (base32
-               "1aihgma3rix4jkc1z5k1lh6hlfrncn66yj0givd3j6xjqflafr2g")))
+               "0a9na20vjnzhgjbicaxay0jk4rm5zg1rjyiswr377mjhd9mx5cg3")))
     (synopsis "Interlingua hyphenation patterns")
     (description "This package provides hyphenation patterns for Interlingua
 in ASCII encoding.")
@@ -1830,7 +1705,7 @@ in ASCII encoding.")
               "texlive-hyphen-irish" "ga"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ga.tex")
               (base32
-               "02k1fykgj3xamczjq16i9fsjjsh78pp5ypmh93p64izk2vymfwk0")))
+               "1h1l9jzkpsb91nyhz6s6c9jfrbz8jx5ip8vyq3dkz0rl6g960i6b")))
     (synopsis "Irish hyphenation patterns")
     (description "This package provides hyphenation patterns for
 Irish (Gaeilge) in T1/EC and UTF-8 encodings.")
@@ -1843,7 +1718,7 @@ Irish (Gaeilge) in T1/EC and UTF-8 encodings.")
               "texlive-hyphen-italian" "it"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-it.tex")
               (base32
-               "1a65q3hjn2p212cgv6p7wa0wcn34qnxcz2pl3v3ip0xmb16qqsk5")))
+               "03c7jiqslfxvl3gbdx79hggbvrfi2l4z2bnwxc0na8f8lkp1m787")))
     (synopsis "Italian hyphenation patterns")
     (description "This package provides hyphenation patterns for Italian in
 ASCII encoding.  Compliant with the Recommendation UNI 6461 on hyphenation
@@ -1857,7 +1732,7 @@ UNI).")
               "texlive-hyphen-kurmanji" "kmr"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-kmr.tex")
               (base32
-               "1145ykfd0b0hgklindlxdgkqmsnj3cai3cwgllz411yqmrhjc6y9")))
+               "01ylbsi5wymrdrxr9b28nmjmcj72mdhqr657lwsb6m9aj33c9ql6")))
     (synopsis "Kurmanji hyphenation patterns")
     (description "This package provides hyphenation patterns for
 Kurmanji (Northern Kurdish) as spoken in Turkey and by the Kurdish diaspora in
@@ -1872,7 +1747,7 @@ Europe, in T1/EC and UTF-8 encodings.")
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-la-x-liturgic.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-la.tex")
               (base32
-               "1d8d6b47r4r000gqgzyl0sy9is0y0dg41jp8fw4gqq8qmcgdxgsg")))
+               "0rxg8a4s5cpj8vlkz5a74a036axda5jqgvr3f9aj2cc2x9f2f3w9")))
     (synopsis "Liturgical Latin hyphenation patterns")
     (description "This package provides hyphenation patterns for Latin in
 T1/EC and UTF-8 encodings, mainly in modern spelling (u when u is needed and v
@@ -1893,7 +1768,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-latvian" "lv"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lv.tex")
               (base32
-               "1xbh5s6nwfjbv7g4kmcpjkm02a6s767p7jn9qjcnz5ip0ndl5g66")))
+               "00jf8xma4ldz0zpqwma97k9q3j0mqx7qdj6b7baph3n5xgc24aaw")))
     (synopsis "Latvian hyphenation patterns")
     (description "This package provides hyphenation patterns for Latvian in
 L7X and UTF-8 encodings.")
@@ -1906,7 +1781,7 @@ L7X and UTF-8 encodings.")
               "texlive-hyphen-lithuanian" "lt"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lt.tex")
               (base32
-               "0v9spw0qkygkihj5app2immzqqr98w81pz460bcgvj1ah35jdfsl")))
+               "1kfq7j2ajg6nj952s1ygd520sj9z9kl0bqvd291a36ni2b1frzgd")))
     (synopsis "Lithuanian hyphenation patterns")
     (description "This package provides hyphenation patterns for Lithuanian in
 L7X and UTF-8 encodings.")
@@ -1921,7 +1796,7 @@ L7X and UTF-8 encodings.")
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl-x-lmc.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl.tex")
               (base32
-               "0lqq3jgwgnclb1cn3x99xmk90xra9q51b00ypwy5crssmy023hqc")))
+               "1y1b91ihrdl9bad3rxlsfjpd9wmyd5zzgci3qv9w8qqk33jxhwya")))
     (synopsis "Mongolian hyphenation patterns in Cyrillic script")
     (description "This package provides hyphenation patterns for Mongolian in
 T2A, LMC and UTF-8 encodings.")
@@ -1936,7 +1811,7 @@ T2A, LMC and UTF-8 encodings.")
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-nn.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-no.tex")
               (base32
-               "1fxnf671yz0p3lmdkspna7fjh96br1jy6yf7v17yh4fxwry3s4yz")))
+               "08gbwj64p4fckm199k52yp5lx65h9f4wwdkvl4pv4aa7k370jq9y")))
     (synopsis "Norwegian Bokmal and Nynorsk hyphenation patterns")
     (description "This package provides hyphenation patterns for Norwegian
 Bokmal and Nynorsk in T1/EC and UTF-8 encodings.")
@@ -1950,7 +1825,7 @@ Bokmal and Nynorsk in T1/EC and UTF-8 encodings.")
               "texlive-hyphen-occitan" "oc"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-oc.tex")
               (base32
-               "1y6j6ac9ncn79p7hnp6mdwdsw9ij14zyjby5iwdhpvzzn7yyc7p8")))
+               "0vhjbq2nr58vhqwwky3cwx4dqiwjmmfwp81rb65mfpf0m8yypdfg")))
     (synopsis "Occitan hyphenation patterns")
     (description "This package provides hyphenation patterns for Occitan in
 T1/EC and UTF-8 encodings.  They are supposed to be valid for all the Occitan
@@ -1978,7 +1853,7 @@ T1/EC encoding.")
               "texlive-hyphen-piedmontese" "pms"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pms.tex")
               (base32
-               "00fqzymkg374r3dzf1y82k6b18bqrf688vnjv0vkvw5a45srlb5r")))
+               "0xva3l2gwzkqw1sz64k5g5iprhdyr27w1mv8rxp8x62i5y3aqr1k")))
     (synopsis "Piedmontese hyphenation patterns")
     (description "This package provides hyphenation patterns for Piedmontese
 in ASCII encoding.  Compliant with 'Gramatica dla lengua piemonteisa' by
@@ -1991,7 +1866,7 @@ Camillo Brero.")
               "texlive-hyphen-polish" "pl"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pl.tex")
               (base32
-               "0dzq8ca96q7m5bslh51x8d30pdb86glh2gn3mmvq5ip813ckwh3s")))
+               "1c22g99isxapv4xjrmsw24hhp1xb83wbgcxyd8j24mxdnizywxzm")))
     (synopsis "Polish hyphenation patterns")
     (description "This package provides hyphenation patterns for Polish in QX
 and UTF-8 encodings.")
@@ -2004,7 +1879,7 @@ and UTF-8 encodings.")
               "texlive-hyphen-portuguese" "pt"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pt.tex")
               (base32
-               "1waxrmm33fd2qfc4kiaiblg8kwzasrvgq4j3l14z733d0hlg4rfz")))
+               "00rkjy4p7893zs940bq3s4hp7al0skgxqggj5qfax0bx8karf30b")))
     (synopsis "Portuguese hyphenation patterns")
     (description "This package provides hyphenation patterns for Portuguese in
 T1/EC and UTF-8 encodings.")
@@ -2016,7 +1891,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-romanian" "ro"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ro.tex")
               (base32
-               "12i1vryl51yhdpj163ahfyiy21rjmf4gkqgslpriirdjmyrwrs65")))
+               "1ykb5v7ip6p3n34wq8qypfyrap4gg946by5rsl6ab0k5gv6ypsbf")))
     (synopsis "Romanian hyphenation patterns")
     (description "This package provides hyphenation patterns for Romanian in
 T1/EC and UTF-8 encodings.")
@@ -2029,7 +1904,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-romansh" "rm"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex")
               (base32
-               "06wan8i4appc1zfvc0q4cgnfv1nj0qgk02w3sg56zc11hf8sywl9")))
+               "0a1q9p6sp5n6a9w6xhwk03vmkrrmnh2md7g1k4qhnf0dc4h7dy9r")))
     (synopsis "Romansh hyphenation patterns")
     (description "This package provides hyphenation patterns for Romansh in
 ASCII encodings.  They are supposed to comply with the rules indicated by the
@@ -2042,7 +1917,7 @@ Lia Rumantscha (Romansh language society).")
               "texlive-hyphen-russian" "ru"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ru.tex")
               (base32
-               "09s4vq23x4vff08ykmf08dvcdradjzzwvyys8p2wk6jxaqp980s3")))
+               "00sy7qh5f8ryxw36fwbyd1yi2hxhv7hmk99yp7dwh73n4mxv6lpl")))
     (synopsis "Russian hyphenation patterns")
     (description "This package provides hyphenation patterns for Russian in
 T2A and UTF-8 encodings.")
@@ -2055,7 +1930,7 @@ T2A and UTF-8 encodings.")
               (list "/doc/generic/hyph-utf8/sa/hyphenmin.txt"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-sa.tex")
               (base32
-               "0grnn09l4i5yridx10yhm6dg9sbhgc2pmsp1p6hrcy7lzkqwdvs3")))
+               "0gi2qk0wf388h9n25gzhv0cdz67ph83wal8h3iz2sqnpdjsw8kpc")))
     (synopsis "Sanskrit hyphenation patterns")
     (description "This package provides hyphenation patterns for Sanskrit and
 Prakrit in longdesc transliteration, and in Devanagari, Bengali, Kannada,
@@ -2072,7 +1947,7 @@ Malayalam longdesc and Telugu scripts for Unicode engines.")
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-sh-latn.tex"
                     "/tex/generic/hyph-utf8/patterns/tex/hyph-sr-cyrl.tex")
               (base32
-               "0fhdfydyaspb8dwirlf24vn7y9dzwmhsld0mmw0fz1lmcfaj252n")))
+               "0pwc9z0m5y6acq1vqm0da9akg156jbhxzvsfp2f8bsz5b99y5z45")))
     (synopsis "Serbian hyphenation patterns")
     (description "This package provides hyphenation patterns for Serbian in
 T1/EC, T2A and UTF-8 encodings.")
@@ -2085,7 +1960,7 @@ T1/EC, T2A and UTF-8 encodings.")
               "texlive-hyphen-slovak" "sk"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sk.tex")
               (base32
-               "1cgw6fmyci3za3vsa49b6m74wqv582w0rpca7s9xva3hqm1m5qdg")))
+               "0ppp53bbclp5c8wvx748krvrp5y5053khgkjnnv966a90fvp3vgd")))
     (synopsis "Slovak hyphenation patterns")
     (description "This package provides hyphenation patterns for Slovak in
 T1/EC and UTF-8 encodings.")
@@ -2097,7 +1972,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-slovenian" "sl"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sl.tex")
               (base32
-               "1ixf2pxir9xf1gggq9k28xxglsq9bwqlghd9cl4amk5vrn5bjbds")))
+               "02n8l9yf4hqyhbpsc1n6b2mggy09z6lq4dcb8ndiwawb6h0mp7s4")))
     (synopsis "Slovenian hyphenation patterns")
     (description "This package provides hyphenation patterns for Slovenian in
 T1/EC and UTF-8 encodings.")
@@ -2113,7 +1988,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-spanish" "es"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-es.tex")
               (base32
-               "0jgs0zzyk2wwrjbx2hqdh5qggrnik9xmsxygbfhlb7gdrcrs0mbj")))
+               "1h3yg9vcq0lf7hxv0ahkqmyg269dxjs8m2mz8sgz5l1fxmvahvaj")))
     (synopsis "Hyphenation patterns for Spanish")
     (description "The package provides hyphenation patterns for Spanish in
 T1/EC and UTF-8 encodings.")
@@ -2125,7 +2000,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-swedish" "sv"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sv.tex")
               (base32
-               "12sf9f43zwyzb4cn57yry8r4zmwdc7cfdljn3qwxwrny4m3sw4w8")))
+               "1n7incy7n24pix1q2i8c3h7i78zpql5ayhskavlmy6mhd7ayncaw")))
     (synopsis "Swedish hyphenation patterns")
     (description "This package provides hyphenation patterns for Swedish in
 T1/EC and UTF-8 encodings.")
@@ -2137,7 +2012,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-thai" "th"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-th.tex")
               (base32
-               "15k1n4xdw8zzd5nrh76s53z4j95gxa4i2h1av5gx5vrjgblzzl97")))
+               "00gxcs4jfqifd5cnrjipn77m73fmpw2qms4lp216jj3kz4a7h9kf")))
     (synopsis "Thai hyphenation patterns")
     (description "This package provides hyphenation patterns for Thai in LTH
 and UTF-8 encodings.")
@@ -2146,33 +2021,11 @@ and UTF-8 encodings.")
 (define-public texlive-hyphen-turkish
   (let ((template (texlive-hyphen-package
                    "texlive-hyphen-turkish" "tr"
-                   (list "/source/generic/hyph-utf8/languages/tr/generate_patterns_tr.rb")
+                   (list "/tex/generic/hyph-utf8/patterns/tex/hyph-tr.tex")
                    (base32
-                    "0rvlhs2z2sn312lqsf44bzknid5dry7d2sl2q1whfvr0y4qj1g8f"))))
+                    "04sihjgpm31i5bi67rrfp15w3imn7hxwwk70v0vhx053ghxy72vh"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda _
-                 (let ((target (string-append (getcwd)
-                                              "/tex/generic/hyph-utf8/patterns/tex")))
-                   (mkdir-p target)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/tr/"
-                     (substitute* "generate_patterns_tr.rb"
-                       (("\\$file = File.new.*")
-                        (string-append "$file = File.new(\"" target
-                                       "/hyph-tr.tex\",\"w\")\n")))
-                     (invoke "ruby" "generate_patterns_tr.rb"))
-                   #t)))
-             (add-after 'install 'install-hyph-tr.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
       (synopsis "Hyphenation patterns for Turkish")
       (description "The package provides hyphenation patterns for Turkish in
 T1/EC and UTF-8 encodings.  The patterns for Turkish were first produced for
@@ -2185,37 +2038,15 @@ compatibility with 8-bit engines.")
 (define-public texlive-hyphen-turkmen
   (let ((template (texlive-hyphen-package
                    "texlive-hyphen-turkmen" "tk"
-                   (list "/source/generic/hyph-utf8/languages/tk/generate_patterns_tk.rb")
+                   (list "/tex/generic/hyph-utf8/patterns/tex/hyph-tk.tex")
                    (base32
-                    "1wlqx8wb0wsqhdv823brc3i8w1vf4m4bkb2vg917j5dq8p8p71aw"))))
+                    "0g5ip2lw9g47s61mv3cypswc6qm7zy9c4iqq4h19ysvds81adzkr"))))
     (package
       (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'build 'build-patterns
-               (lambda _
-                 (let ((target (string-append (getcwd)
-                                              "/tex/generic/hyph-utf8/patterns/tex")))
-                   (mkdir-p target)
-                   (with-directory-excursion "source/generic/hyph-utf8/languages/tk/"
-                     (substitute* "generate_patterns_tk.rb"
-                       (("\\$file = File.new.*")
-                        (string-append "$file = File.new(\"" target
-                                       "/hyph-tr.tex\",\"w\")\n")))
-                     (invoke "ruby" "generate_patterns_tk.rb"))
-                   #t)))
-             (add-after 'install 'install-hyph-tk.tex
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (target (string-append out "/share/texmf-dist/tex")))
-                   (copy-recursively "tex" target)
-                   #t)))))))
       (synopsis "Hyphenation patterns for Turkmen")
       (description "The package provides hyphenation patterns for Turkmen in
 T1/EC and UTF-8 encodings.")
-      (license license:public-domain))))
+      (license license:expat))))
 
 (define-public texlive-hyphen-ukrainian
   (package
@@ -2223,7 +2054,7 @@ T1/EC and UTF-8 encodings.")
               "texlive-hyphen-ukrainian" "uk"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex")
               (base32
-               "17z0gmw5svsf5zlhjkckwk4y21g7prfwj473jlqnwcsr8a941gsf")))
+               "0fbfhx1fmbshxr4ihsjaqgx251h69h7i288p8gh3w6ysgxr53p60")))
     (synopsis "Ukrainian hyphenation patterns")
     (description "This package provides hyphenation patterns for Ukrainian in
 T2A and UTF-8 encodings.")
@@ -2236,7 +2067,7 @@ T2A and UTF-8 encodings.")
               "texlive-hyphen-uppersorbian" "hsb"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hsb.tex")
               (base32
-               "1q42s32cfbynlnzn9hpcldi77fszi5xkn1c85l8xqjmfydqbqdyi")))
+               "0x0051wph3sqmzzw6prvjy6bp7gn02rbmys1bmbc210jk3pkylfj")))
     (synopsis "Upper Sorbian hyphenation patterns")
     (description "This package provides hyphenation patterns for Upper Sorbian
 in T1/EC and UTF-8 encodings.")
@@ -2248,7 +2079,7 @@ in T1/EC and UTF-8 encodings.")
               "texlive-hyphen-welsh" "cy"
               (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cy.tex")
               (base32
-               "0h8yjj5zdg0hvpb2vx9gi376536nl59hp8w286z1a13diaayg1m2")))
+               "1bpxp3jiifdw7waw2idz5j9xgi3526nkxm8mbmsspr4mlf2xyr76")))
     (synopsis "Welsh hyphenation patterns")
     (description "This package provides hyphenation patterns for Welsh in
 T1/EC and UTF-8 encodings.")
@@ -2277,7 +2108,7 @@ T1/EC and UTF-8 encodings.")
                     "/doc/generic/hyph-utf8/img/miktex-languages.png"
                     "/doc/generic/hyph-utf8/img/texlive-collection.png")
               (base32
-               "10y8svgk68sivmgzrv8gv137r7kv49cs256cq2wja9ms437pxvbj")))
+               "1bar5mc808ch20anhqrdxcwiych359qsvr7mggxpg2l2kq5xdyq0")))
     (outputs '("out" "doc"))
     (build-system gnu-build-system)
     (arguments
@@ -2410,7 +2241,7 @@ converters, will completely supplant the older patterns.")
               (list "/tex/generic/dehyph-exptl/"
                     "/doc/generic/dehyph-exptl/")
               (base32
-               "1w2danvvy2f52hcb4acvjks53kcanwxr9s990fap6mj279hpgmh2")
+               "1fnqc63gz8gvdyfz45bx8dxn1r1rwrypahs3bqd2vlc8ff76xp86")
               #:trivial? #t))
     (propagated-inputs
      `(("texlive-hyphen-base" ,texlive-hyphen-base)
@@ -2517,7 +2348,7 @@ UCY (Omega Unicode Cyrillic), LCY, LWN (OT2), and koi8-r.")
                     "/web2c/tcvn-t5.tcx"
                     "/web2c/viscii-t5.tcx")
               (base32
-               "0ajfp9kr330lcm2ymr3kl9zn6y2xjkrzpa0c0azc4qdm5jllawb9")
+               "191i8n3g46p53bb9dkx2ggwpzy7skgg0pbklsrpx8x4ayd86wcaf")
               #:trivial? #t))
     (home-page "https://www.tug.org/texlive/")
     (synopsis "Files related to the path searching library for TeX")
@@ -2550,18 +2381,16 @@ formats.")
                          ;; these are not:
                          "/tex/latex/base/idx.tex"
                          "/tex/latex/base/lablst.tex"
-                         "/tex/latex/base/lppl.tex"
                          "/tex/latex/base/ltnews.cls"
                          "/tex/latex/base/ltxcheck.tex"
                          "/tex/latex/base/ltxguide.cls"
                          "/tex/latex/base/minimal.cls"
                          "/tex/latex/base/sample2e.tex"
                          "/tex/latex/base/small2e.tex"
-                         "/tex/latex/base/source2e.tex"
                          "/tex/latex/base/testpage.tex"
                          "/tex/latex/base/texsys.cfg")
                    (base32
-                    "0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")
+                    "0m0gjb4hbsf2iqkkx3px4f28r2scjvsjv4zb2whkbnb44apyw1f0")
                    #:trivial? #t)))
     (package
       (inherit template)
@@ -2616,6 +2445,7 @@ formats.")
                         '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
                           "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
                           "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
+                          "luacsplain luatex"
                           "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
                           "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
                           "mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
@@ -2674,7 +2504,7 @@ formats.")
                   "/tex/generic/config/luatexiniconfig.tex"
                   "/web2c/texmfcnf.lua")
             (base32
-             "0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
+             "1gi87wy12r8w8fhx9ajcid382dmqzf6b9070b5nndvbbjrvhwf23")))))
       (propagated-inputs
        `(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
          ("texlive-etex" ,texlive-etex)
@@ -2719,6 +2549,7 @@ formats.")
          ("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
          ("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
          ("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
+         ("texlive-hyphen-pali" ,texlive-hyphen-pali)
          ("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
          ("texlive-hyphen-polish" ,texlive-hyphen-polish)
          ("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
@@ -2760,7 +2591,7 @@ contain.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0swkbxv8vg0yizadfnvrwjb4cj0pn34v9wm6v7wqq903fdav7k7q"))))
+                "1h78zw0vhldx478zs4v86ajg7vpkysd1kg3npc480qqls3q6ba40"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/filecontents"))
     (home-page "https://www.ctan.org/pkg/filecontents")
@@ -2825,19 +2656,13 @@ users, via its Plain TeX version.)")
 
 (define-public texlive-latex-fancyvrb
   (package
-    (name "texlive-latex-fancyvrb")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "fancyvrb"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "03l7140y031rr14h02i4z9zqsfvrbn7wzwxbjsrjcgrk6sdr71wv"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/fancyvrb"
-       #:tex-format "latex"))
+    (inherit (simple-texlive-package
+              "texlive-latex-fancyvrb"
+              (list "/doc/latex/fancyvrb/README"
+                    "/tex/latex/fancyvrb/")
+              (base32
+               "1dwkcradz9nwpjwmv1sjzn77lvw25ypr0rrgmf1kd8pd2mw7dxcn")
+              #:trivial? #t))
     (home-page "https://www.ctan.org/pkg/fancyvrb")
     (synopsis "Sophisticated verbatim text")
     (description
@@ -2990,7 +2815,7 @@ pdf and HTML backends.  The package is distributed with the @code{backref} and
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1m9fg8ddhpsl1212igr9a9fmj012lv780aghjn6fpidg2wqrffmn"))))
+                "0pi2d6gsddcs9wprdbar46s91kdc5fxl1m79g7xrbccsx8s9xbml"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/oberdiek"
@@ -3023,7 +2848,7 @@ arrows; record information about document class(es) used; and many more.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0vj7h1fgf1396h4qjdc2m07y08i54gbbfrxl8y327cn3r1n093s6"))))
+                "1wqvn4z0s92h5iqzrvxw7hinzp95avjk9v8lnqbqr4kz6nv4xb9l"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/tools"
@@ -3092,7 +2917,7 @@ Live distribution.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0p3fsxap1ilwjz356aq4s5ygwvdscis8bh93g8klf8mhrd8cr2jy"))))
+                "0s77z2cbv841l45qrpf0s8qhzfa4wi689lg7zkw88qg18nzvy0ly"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/l3kernel"))
@@ -3116,7 +2941,7 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0pyx0hffiyss363vv7fkrcdiaf7p099xnq0mngzqc7v8v9q849hs"))))
+                "1cv4fk9pabh7mkxhfsdmh4k8xpmzg1psgcsvd11c869m7n3a629h"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/l3packages"
@@ -3171,7 +2996,7 @@ programming tools and kernel sup­port.  Packages provided in this release are:
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1p0mkn6iywl0k4m9cx3hnhylpi499inisff3f72pcf349baqsnvq"))))
+                "1223cw029n6zff7pqpwbsq1x8v3w63smczkmnybqxkw5h2za8gbz"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/fontspec"
@@ -3354,7 +3179,7 @@ loading fonts by their proper names instead of file names.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0arvk7gn32mshnfdad5qkgf3i1arxq77k3vq7wnpm4nwnrzclxal"))))
+                "0qgk2332dacsxn1z95qzp35gbs7wrzl1ipjdhnmk1r897msm4sf5"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/amsmath"))
     (home-page "https://www.ctan.org/pkg/amsmath")
@@ -3407,7 +3232,7 @@ distribution.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0yhlfiz3fjc8jd46f1zrjj4jig48l8rrzh8cmd8ammml8z9a01z6"))))
+                "1rwqq841i1rxywymzwkw0cw2yhgvxwjx5mgygfasvypwrwll6f6s"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "generic/babel"
@@ -3464,7 +3289,7 @@ for Canadian and USA text.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0h47s67gnhdaxfgbf8pirp5vw4z6rrhxl8zav803yjxka0096i3y"))))
+                "129f9w41cb6yyrr6kpv3zz9ml6334hyq1wcz7j9jn47p0hlxqfk8"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "generic/babel-german"))
     (home-page "https://www.ctan.org/pkg/babel-german")
@@ -3678,7 +3503,7 @@ standard LaTeX packages."
                                          (number->string %texlive-revision)))
                (sha256
                 (base32
-                 "06mwpy5i218g5k3sf4gba0fmxgas82hkzx9fhwn67z5ik37d8apq"))))))
+                 "0faqknqxs80qp9ywk0by5k85s0yalg97c4lja4q56lsyblrr4j7i"))))))
         (home-page (package-home-page texlive-bin))
         (synopsis "Union of TeX Live packages")
         (description "This package provides a subset of the TeX Live
@@ -4153,10 +3978,10 @@ to something that's not a float.")
   (package
     (inherit (simple-texlive-package
               "texlive-doi"
-              (list "/doc/latex/doi/README"
+              (list "/doc/latex/doi/README.md"
                     "/tex/latex/doi/")
               (base32
-               "17lnnhfmb8g4nh4fnyc9616h8xg3vjrzmlvfmlfqwwlfpma9xnnw")
+               "18z9922lqb3hliqn95h883fndqs4lgyi5yqbnq2932ya0imc3j7h")
               #:trivial? #t))
     (home-page "https://www.ctan.org/pkg/doi")
     (synopsis "Create correct hyperlinks for DOI numbers")
@@ -4180,7 +4005,7 @@ hyperlink to the target of the DOI.")
               (list "/doc/latex/etoolbox/"
                     "/tex/latex/etoolbox/")
               (base32
-               "1qg4x5r4ibinl6zy5lq70lv4zcrjsn54n6hwv31k5kl7mwv0mvr3")
+               "1cc1vw1ach55g4ff4x30by8k1mg01w199ccxvn72f5khlnnxial0")
               #:trivial? #t))
     (home-page "https://www.ctan.org/pkg/etoolbox")
     (synopsis "e-TeX tools for LaTeX")
@@ -4282,7 +4107,7 @@ course of the framed/shaded matter.  There is also a command
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0sikazkg0dpkcpzlbqw8qzxr81paf2f443vsrh14jnw7s4gswvc5"))))
+                "1br4kv9y17cvngp83ykpvy7gy3jqfan5plk7sggcgbdfhndi5dsr"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/g-brief"
@@ -4355,7 +4180,7 @@ BibLaTeX, and is considered experimental.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0yw6bjfgsli3s1dldsgb7mkr7lnk329cgdjbgs8z2xn59pmmdsn4"))))
+                "0a8f38c2ds1flxcr0apdpyaaz3k6fyalz6dkbrmcv9srjc40mh3n"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/geometry"))
     (propagated-inputs
@@ -4406,7 +4231,7 @@ array environments; verbatim handling; and syntax diagrams.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "03ma58z3ypsbp7zgkzb1ylpn2ygr27cxzkf042ns0rif4g8s491f"))))
+                "0na7v4hsyx5s67cpjj2dbnq8j67k8lln6b19hmj631gfs27slss1"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/polyglossia"))
     (home-page "https://www.ctan.org/pkg/polyglossia")
@@ -4452,7 +4277,7 @@ situations where longtable has problems.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "06cf821y1j7jdg93pb41ayigrfwgn0y49d7w1025zlijjxi6bvjp"))))
+                "16jy02m089m7n6v9vbfi4xjgngc1fnvsmmppk8axfwzbhdky3c9c"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -4626,7 +4451,7 @@ copy-and-paste functions work properly.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "190pmq8la2rq07xry8bn8z8yywzxv6fqyqaj7yjfj5rgw6x0mas8"))))
+                "16vd99p01a0y30xr5yf1z2j5da9x8gy21vb30wk08jh31zffbaqj"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/colortbl"))
     (home-page "https://www.ctan.org/pkg/colortbl")
@@ -4685,7 +4510,7 @@ floats, center, flushleft, and flushright, lists, and pages.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1xsnzx7vgdfh9zh2m7bjz6bgdpxsgb1kyc19p50vhs34x5nbgsnr"))))
+                "0hrwspqkqfahxyzzsnjyrxlgxj06zw1f3636gx76pvl4xhvdj1cj"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -4763,7 +4588,7 @@ footnotes with symbols rather than numbers.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1nsn9wp3wl12b36c0sqrim33lf33cr5wky0h4ncnw8lvqgm7h8wf"))))
+                "1fbrhqj22vzakn30j71fc41l8nliqbv1dmxm0zlwi2qjjbq6fwav"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/listings"
@@ -4897,7 +4722,7 @@ fonts are available in (traced) Adobe Type 1 format, as part of the
 set, Latin Modern, is not actually a direct development of the EC set, and
 differs from the EC in a number of particulars.")
     (license (license:fsf-free "https://www.tug.org/svn/texlive/tags/\
-texlive-2018.2/Master/texmf-dist/doc/fonts/ec/copyrite.txt"))))
+texlive-2019.3/Master/texmf-dist/doc/fonts/ec/copyrite.txt"))))
 
 ;; FIXME: the fonts should be built from source, but running "tex aefonts.tex"
 ;; fails with obscure TeX-typical error messages.
@@ -5092,7 +4917,7 @@ one of the packages @code{calrsfs} and @code{mathrsfs}.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1xvmms28mvvfpks9x7lfya2xhh5k8jy3qnlih1mzcnf156xnb89z"))))
+                "0y2y08kr3w6asm9lblj9yywqmhaal36fq71zzcbfsc7cvwf641q7"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/eso-pic"))
     (home-page "https://www.ctan.org/pkg/eso-pic")
@@ -5154,7 +4979,7 @@ splines, and filled circles and ellipses.  The package uses @code{tpic}
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0q24b1bkdi9l6bw787bpggww83jh2vj8955aw2m5yccqbx4vgr5r"))))
+                "1vm9xp67hzif0pqab4r3ialf0cyhi0fa4p8kxgp1ymcf85pqip14"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -5186,7 +5011,7 @@ in the form @code{key=value} are available, for example:
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0qlxy47f1f8plgch3jqfsnrdgpyz20sz46yp33i2jwvf9hvfczf0"))))
+                "07vbcp6avdwldr870cwf65av2s9lfyzcpp8gpld53yw6lcxgaipj"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/multirow"))
     (home-page "https://www.ctan.org/pkg/multirow")
@@ -5211,7 +5036,7 @@ entry at the \"natural\" width of its text.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1rpx4ibjncj5416rg19v0xjbj3z9avhfdfn2gzp8r8sz9vz25c6g"))))
+                "1pr6ym3ad7x14ng7gmhsmywh3685d2cnm5qgyrqbigng2r6fcc1k"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -5247,7 +5072,7 @@ positions; a grid for orientation is available.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "14r6h9hqb0qgccxj5l1208694fx8sb8avmgzps36lsbbpszl7i7m"))))
+                "0j1fhm1m9k6rz80lmch3x44g20y9nm4abaaf8czb0q8hzwlx5aq5"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -5598,7 +5423,7 @@ OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0sf18pc6chgy26p9bxxn44xcqhzjrfb53jxjr2y7l3jb6xllhblq"))))
+                "1xyd57c8z1xi0kbqpbad61flcazz68i9ssxrag0gjvci3irxi8xh"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -5627,7 +5452,7 @@ than the bitmaps Metafont creates.")
               (uri (texlive-ref "latex" "acmart"))
               (sha256
                (base32
-                "0n62cs8dhcbn29y9ij1nnyigzr76yhk36kyahhqkkmvbafbys9s7"))
+                "18rl67p2zhngskisnhv78mksv8q8q658l6igkswzswldixmkpphq"))
               (file-name (string-append name "-" version "-checkout"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/acmart"))
@@ -5865,7 +5690,7 @@ e-TeX.")
            (file-name (string-append name "-map-" version "-checkout"))
            (sha256
             (base32
-             "18jvcm0vwpg6wwzijvnb92xx78la45kkh71k6l44425krp2vnwm0"))))))
+             "03rfif2631pgd8g1ar4xblcdh078kky7fvw3kfsj5a47rxxgicp2"))))))
     (home-page "https://www.ctan.org/pkg/pdftex")
     (synopsis "TeX extension for direct creation of PDF")
     (description
@@ -5876,7 +5701,7 @@ directly generate PDF documents instead of DVI.")
 (define texlive-texmf
   (package
    (name "texlive-texmf")
-   (version "20180414")
+   (version "20190410")
    (source texlive-texmf-src)
    (build-system gnu-build-system)
    (inputs
@@ -5953,7 +5778,7 @@ This package contains the complete tree of texmf-dist data.")
 (define-public texlive
   (package
    (name "texlive")
-   (version "20180414")
+   (version "20190410")
    (source #f)
    (build-system trivial-build-system)
    (inputs `(("bash" ,bash) ; for wrap-program
@@ -6359,7 +6184,7 @@ required: automatic sectioning and pagination, spell checking and so forth.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0lhb2h5hxjq9alpk4r3gvg21pwyifs4ah6hqzp92k55mkp1xv73j"))))
+                "0s86v2b6b1vky1svmmn8pn0l2gz3v280mvjbr2d9l2sjyarlgz9w"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -6399,7 +6224,7 @@ specification.  It replaces the now obsolete @code{movie15} package.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0zp00jg058djx8xp0xqwas92y3j97clkyd8z6pqr890yqy06myqb"))))
+                "1yhp51w8yr10c10pc9196q7hlw80brzqinnqbjw81d0sf2p0llc5"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -6600,7 +6425,7 @@ striking out (line through words) and crossing out (/// over words).")
        (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "1dq8p10pz8wn0vx412m7d7d5gj1syxly3yqdqvf7lv2xl8zndn5h"))))
+         "1dscrgwyr71vgx35mzb316xl669arzagfgq50fdv3nxga63959b3"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("texlive-latex-pgf-generic"
@@ -6614,7 +6439,7 @@ striking out (line through words) and crossing out (/// over words).")
            (file-name (string-append "texlive-latex-pgf-generic" version "-checkout"))
            (sha256
             (base32
-             "0xkxw26sjzr5npjpzpr28yygwdbhzpdd0hsk80gjpidhcxmz393i"))))))
+             "0hk5x2j15n4pps279cmkbjl1dvhasq3mbhna5xdvp2qgh635ahks"))))))
     (propagated-inputs
      `(("texlive-latex-xcolor" ,texlive-latex-xcolor)))
     (arguments
@@ -6658,7 +6483,7 @@ produce either PostScript or PDF output.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0nqwf0sr4mf3v9gqa6apv6ml2xhcdwax0vgyf12a672g7rpdyvgm"))))
+                "1vz9zg7s5w52xr323zgglzprfrvba2zvyzf6b8vrdf4wdghlpv4z"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -6718,7 +6543,7 @@ typearea (which are the main parts of the bundle).")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0hs28fc0v2l92ad9las9b8xcckyrdrwmyhcx1yzmbr6s7s6nvsx8"))))
+                "1x4wnpca97rnbvvg6wjmbkxxvnfva274q9ahzx746b435q93z3i1"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -6907,7 +6732,7 @@ AMS-LaTeX, AMS-TeX, and plain TeX).  The distribution includes Michael Barr's
        (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "0hnbs0s1znbn32hfcsyijl39z81sdb00jf092a4blqz421qs2mbv"))))
+         "1wijqq605cbhn2bdaryby3xpkwmnk9ixcrjn5zwlfrxbgfblzfmz"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -6966,7 +6791,7 @@ Support for use with LaTeX is available in @code{freenfss}, part of
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0rlx4qqijms1n64gjx475kvip8l322fh7v17zkmwp1l1g0w3vlyz"))))
+                "0d7d74giz5knvj4rj6mbzd6c05mwg9jrxab86jxdqbc3jy7cl4kz"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -6992,7 +6817,7 @@ of support information.")
               (list "/doc/latex/beamer/"
                     "/tex/latex/beamer/")
               (base32
-               "00z1a32wkz1ffif7dc8h3ar2fn2hlvfnljgim2szjam2k14l82x3")
+               "1fqzbkmw2kfxihab8j4dadc3v68xap6v2ghpp2064fna47xlwy1c")
               #:trivial? #t))
     (propagated-inputs
      `(("texlive-latex-hyperref" ,texlive-latex-hyperref)
@@ -7051,7 +6876,7 @@ the file to which it applies.")
        (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "0ikxg8yzq78hy5b9x13d4nah46d0yvmwlqmdri06pygbx116dcac"))))
+         "18294h0cr05fs424m3x6aq24z5hf5zmiflalkj4kvpmsyyqqsj74"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/pdfx"
@@ -7085,7 +6910,7 @@ the file to which it applies.")
            (file-name (string-append "texlive-tex-latex-pdfx-" version "-checkout"))
            (sha256
             (base32
-             "14j1zsvqc59ims3sk34v6km8db6cimks28y5fcxcr5mi2ykvj4vf"))))))
+             "171ffvpkj2fab4ljcxv3l6l5c8ga8zavdhmhfq07id8zyyr619ip"))))))
     (home-page "https://www.ctan.org/pkg/pdfx")
     (synopsis "PDF/X and PDF/A support for pdfTeX, LuaTeX and XeTeX")
     (description
@@ -7149,7 +6974,7 @@ change.")
                          "/tex/generic/pstricks/"
                          "/tex/latex/pstricks/")
                    (base32
-                    "04566354c77claxl1sznc490cda0m5gaa5ck6ms4q7mm44rj3rzk")
+                    "0sdxdd0qi4sccw9il7d4s7jivs24pq99cdzfnrf0gkqjb1y8s7cl")
                    #:trivial? #t)))
     (package
       (inherit template)
@@ -7173,12 +6998,11 @@ or shading the cells of tables.")
   (let ((template (simple-texlive-package
                    "texlive-pst-text"
                    (list "/doc/generic/pst-text/"
-                         "/source/generic/pst-text/Makefile"
                          "/dvips/pst-text/pst-text.pro"
                          "/tex/generic/pst-text/"
                          "/tex/latex/pst-text/")
                    (base32
-                    "0s2bbkdfy0shqrrkjflrn0x0pnvxzbdc38pjbdfw46wnmnxrnasm")
+                    "146fpzd1xlqi94q5r48z8ni8qww713yh6nwkbr9pw27mjrqdadb9")
                    #:trivial? #t)))
     (package
       (inherit template)
@@ -7217,7 +7041,7 @@ LuaTeX (respectively) is not the engine in use.")
                    (list "/doc/latex/tools/"
                          "/source/latex/tools/")
                    (base32
-                    "0v3zqcpy0w5bzy1xdcv1wnxbmxrn1j6x03h3y2af7qmjggph2a09"))))
+                    "1ivhij7171wvrgcjn4wah84wxwpd21d0chh3zxab4pj067c8d0mh"))))
     (package
       (inherit template)
       (arguments
@@ -7360,7 +7184,7 @@ The behaviour in standalone mode may adjusted using a configuration file
              (list "/source/latex/siunitx/siunitx.dtx"
                    "/doc/latex/siunitx/README.md")
              (base32
-              "0dmljnxgv2bwl3mi74iil41q03swvrm1b0ziwxlhc4m9lx31b1q1")))
+              "11kf6znkgw7y5qmw75qk6px6pqf57bwr53q0673zaiyq20lif96c")))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/siunitx"
-- 
2.24.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-11 23:13             ` Marius Bakke
@ 2020-01-12 10:13               ` Pierre Neidhardt
  2020-01-12 10:40                 ` Ricardo Wurmus
  2020-01-17 12:13               ` Ricardo Wurmus
  1 sibling, 1 reply; 19+ messages in thread
From: Pierre Neidhardt @ 2020-01-12 10:13 UTC (permalink / raw)
  To: Marius Bakke, Andreas Enge; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1041 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> I get a similar error for 'asymptote' on the current master branch, but
> that seems to be sporadically working on Berlin?
>
> https://ci.guix.gnu.org/search?query=system%3Ax86_64-linux+asymptote

Yes, this issue has been around for about a year now.  I can't explain
why this _sometimes_ works.  I've never succeeded in building Asymptote
on my machine.  Currently our LaTeX package cannot compile a document
with a "tabular" entry, which is what fails when building Asymptote's
documentation.

> I think I'll "punt" on that issue for now.  Pierre, if you ever wanted
> to figure out the TeX Live font stuff, now is a good time!  ;-)

Which font stuff in particular?  It sounds like we've got multiple
issues.  What I wanted to work on is packaging all the texlive packages
according to the tlpdb (the TexLive package database).  This should fix
the broken packages.  Not sure if there is something else wrong with the fonts.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-12 10:13               ` Pierre Neidhardt
@ 2020-01-12 10:40                 ` Ricardo Wurmus
  2020-01-12 13:19                   ` Pierre Neidhardt
       [not found]                   ` <87blr3f4v0.fsf@kryshen.net>
  0 siblings, 2 replies; 19+ messages in thread
From: Ricardo Wurmus @ 2020-01-12 10:40 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: guix-devel


Pierre Neidhardt <mail@ambrevar.xyz> writes:

> What I wanted to work on is packaging all the texlive packages
> according to the tlpdb (the TexLive package database).  This should fix
> the broken packages.  Not sure if there is something else wrong with the fonts.

This has already been done for most of the packages that we have.  I’m
not aware of any broken texlive-* packages.  Are there any bug reports
about individual packages being incomplete?

--
Ricardo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-12 10:40                 ` Ricardo Wurmus
@ 2020-01-12 13:19                   ` Pierre Neidhardt
  2020-01-12 14:49                     ` Ricardo Wurmus
       [not found]                   ` <87blr3f4v0.fsf@kryshen.net>
  1 sibling, 1 reply; 19+ messages in thread
From: Pierre Neidhardt @ 2020-01-12 13:19 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 236 bytes --]

Bug 33094 refers to this issue.

There is no bug specifically about LaTeX, but LaTeX on Guix has been
broken for a year or so.  I think it was only discussed informally on guix-devel.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-12 13:19                   ` Pierre Neidhardt
@ 2020-01-12 14:49                     ` Ricardo Wurmus
  2020-01-12 15:00                       ` Pierre Neidhardt
  0 siblings, 1 reply; 19+ messages in thread
From: Ricardo Wurmus @ 2020-01-12 14:49 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: guix-devel


Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Bug 33094 refers to this issue.
>
> There is no bug specifically about LaTeX, but LaTeX on Guix has been
> broken for a year or so.  I think it was only discussed informally on guix-devel.

I’ve worked to fix incomplete packages some time ago.  That’s why I
extended svn-fetch to accept multiple locations inside of an SVN
repository, because TeX Live packages often are made up of files from
various places in the repository.

I also worked on the profile hook and the texlive-union procedure, which
fixed a bunch of problems.

I don’t think it’s “been broken for a year”.  I’m still using it without
problems.  I really think that the problem with LaTeX is overstated and
it would be easier to fix individual problems if they had bug reports.

I might take a look at 33094 later, but I wouldn’t mind at all if
someone else did the work.

-- 
Ricardo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-12 14:49                     ` Ricardo Wurmus
@ 2020-01-12 15:00                       ` Pierre Neidhardt
  0 siblings, 0 replies; 19+ messages in thread
From: Pierre Neidhardt @ 2020-01-12 15:00 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 230 bytes --]

I couldn't find an opened bug for asymptote, so I opened a new one:
#39101.

I can't reproduce the tabular issue with LaTeX, so I guess that was
fixed some time ago.

Cheers!

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
       [not found]                   ` <87blr3f4v0.fsf@kryshen.net>
@ 2020-01-17  8:53                     ` Ricardo Wurmus
  2020-01-21 10:25                       ` Marco van Hulten
  0 siblings, 1 reply; 19+ messages in thread
From: Ricardo Wurmus @ 2020-01-17  8:53 UTC (permalink / raw)
  To: Mikhail Kryshen; +Cc: guix-devel, bug-guix


Mikhail Kryshen <mikhail@kryshen.net> writes:

> - font files are missing from texlive-latex-lh (shouldn't it be called
>   texlive-lh?).

Thank you, that’s a good one.  Generally, the texlive-latex-* packages
are of the old type that may very well be incomplete.  I’ll replace this
one with texlive-lh which will include all the source files as it
should.

Thanks for the report!

--
Ricardo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-11 23:13             ` Marius Bakke
  2020-01-12 10:13               ` Pierre Neidhardt
@ 2020-01-17 12:13               ` Ricardo Wurmus
  2020-01-17 14:02                 ` Pierre Neidhardt
  1 sibling, 1 reply; 19+ messages in thread
From: Ricardo Wurmus @ 2020-01-17 12:13 UTC (permalink / raw)
  To: Marius Bakke, guix-devel


Hey Marius,

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> I'll look into updating the remaining texlive packages shortly.
>
> Now this was some rocket science...
>
> The attached 9 patches updates everything (I think) to 2019.3.

This looks great!

It’s odd that they removed the few remaining scripts for generating
hyphenation patterns and replaced them with the output files, but it
sure simplifies some of these package definitions.

> The only regression I found from 'master' was that "discrover" fails to
> find math fonts during the build process.

Hmm, that’s a little worrying.  I spent much more time than I think is
reasonable to work on The Font Problem in LaTeX.  This really shouldn’t
break.  I’m willing to investigate this, but it would be easier if we
had a branch for this upgrade and had ci.guix.gnu.org build it all.
I don’t want to build all these things on my laptop again.

--
Ricardo

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-17 12:13               ` Ricardo Wurmus
@ 2020-01-17 14:02                 ` Pierre Neidhardt
  0 siblings, 0 replies; 19+ messages in thread
From: Pierre Neidhardt @ 2020-01-17 14:02 UTC (permalink / raw)
  To: Ricardo Wurmus, Marius Bakke, guix-devel

[-- Attachment #1: Type: text/plain, Size: 315 bytes --]

>> Marius Bakke <mbakke@fastmail.com> writes:
>> The only regression I found from 'master' was that "discrover" fails to
>> find math fonts during the build process.

Maybe the wrong hunch, but this looks awfully similar to the Asymptote
doc compilation issue.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: TeX Live 2019 wanted
  2020-01-17  8:53                     ` Ricardo Wurmus
@ 2020-01-21 10:25                       ` Marco van Hulten
  0 siblings, 0 replies; 19+ messages in thread
From: Marco van Hulten @ 2020-01-21 10:25 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

On 17 Jan 09:53 Ricardo Wurmus wrote:
> Mikhail Kryshen <mikhail@kryshen.net> writes:
> 
> > - font files are missing from texlive-latex-lh (shouldn't it be
> > called texlive-lh?).  
> 
> Thank you, that’s a good one.  Generally, the texlive-latex-* packages
> are of the old type that may very well be incomplete.  I’ll replace
> this one with texlive-lh which will include all the source files as it
> should.

TeX Live is a full TeX distribution that includes TeX and variants as
well as the macro packages LaTeX and ConTeXt.  lh is LaTeX-specific, I
think.

It could be fine if any CTAN package is included in TeX Live as
"texlive-PACKAGENAME"; just wondering if this is done consistently and
with good reason.

—Marco

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2020-01-21 10:25 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-14 19:06 TeX Live 2019 wanted Marius Bakke
2019-12-14 21:33 ` Pierre Neidhardt
2019-12-16 18:57 ` Andreas Enge
2019-12-16 19:49   ` Andreas Enge
2019-12-16 20:38     ` Marius Bakke
2019-12-16 22:20       ` Ricardo Wurmus
2019-12-16 22:41       ` Marius Bakke
2019-12-27 10:05         ` Andreas Enge
2020-01-09 22:10           ` Marius Bakke
2020-01-11 23:13             ` Marius Bakke
2020-01-12 10:13               ` Pierre Neidhardt
2020-01-12 10:40                 ` Ricardo Wurmus
2020-01-12 13:19                   ` Pierre Neidhardt
2020-01-12 14:49                     ` Ricardo Wurmus
2020-01-12 15:00                       ` Pierre Neidhardt
     [not found]                   ` <87blr3f4v0.fsf@kryshen.net>
2020-01-17  8:53                     ` Ricardo Wurmus
2020-01-21 10:25                       ` Marco van Hulten
2020-01-17 12:13               ` Ricardo Wurmus
2020-01-17 14:02                 ` Pierre Neidhardt

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).