(address . bug-guix@gnu.org)
Hi!
(Cc: Maxim who may be familiar with the ‘texlive-font-maps’ hook.)
I have Guile as a channel, which provides guile@3.0.99-git. Trying to
add this guile package to a profile leads to a ‘texlive-font-maps.drv’
build failure:
Toggle snippet (45 lines)
$ guix describe -f channels
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(branch "master")
(commit
"74e96c4cb171b17949f638d8b452d047a8f2dc6f")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))
(channel
(name 'guile)
(url "https://git.savannah.gnu.org/git/guile.git")
(branch "main")
(commit
"1ae50a7f80654f04d93d900e17f3160205700a75"))
(channel
(name 'shepherd)
(url "https://git.savannah.gnu.org/git/shepherd.git")
(branch "master")
(commit
"ab0c7ec989d3afe1933aebb2e03c1d6ecb558ca6")
(introduction
(make-channel-introduction
"788a6d6f1d5c170db68aa4bbfb77024fdc468ed3"
(openpgp-fingerprint
"3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5")))))
$ guix build guile
/gnu/store/1cssq3p4ndi4rvly5w607q7chrg2sj3v-guile-3.0.99-git-debug
/gnu/store/qndx3hp7cv5z8mv899k58gr9ampaa4g0-guile-3.0.99-git
$ guix show guile@3.0.99-git |grep location
location: guile-package.scm:51:4
$ guix shell guile -- guile
The following derivation will be built:
/gnu/store/pih50yd938jz3h6zkz0kd5jffkxagp3l-profile.drv
builder for `/gnu/store/8d71qslw04hz3dc9gk8yfp0gcp9z03bx-texlive-font-maps' failed previously (cached)
build of /gnu/store/6h3k74mn5wpgcy0mqzh1zfa6r207jsqf-texlive-font-maps.drv failed
View build log at '/var/log/guix/drvs/6h/3k74mn5wpgcy0mqzh1zfa6r207jsqf-texlive-font-maps.drv.gz'.
cannot build derivation `/gnu/store/pih50yd938jz3h6zkz0kd5jffkxagp3l-profile.drv': 1 dependencies couldn't be built
guix shell: error: build of `/gnu/store/pih50yd938jz3h6zkz0kd5jffkxagp3l-profile.drv' failed
The log file for texlive-font-maps.drv ends with:
Toggle snippet (27 lines)
updmap: open() failed: No such file or directory at /gnu/store/fd38qipvckr2jkkq2xja1n3rb9xz334r-texlive-bin-20210325/bin/updmap line 2158.
updmap [ERROR]: The following map file(s) couldn't be found:
updmap [ERROR]: dvips35.map (in builtin)
updmap [ERROR]: pdftex35.map (in builtin)
updmap [ERROR]: ps2pk35.map (in builtin)
updmap [ERROR]: Did you run mktexlsr?
You can disable non-existent map entries using the option
--syncwithtrees.
Backtrace:
2 (primitive-load "/gnu/store/pnzmvmbx1smragwnw3rlq4n6zd6?")
In ice-9/eval.scm:
619:8 1 (_ #(#(#(#<directory (guile-user) 7ffff5fdbc80> #) #) #))
In guix/build/utils.scm:
762:6 0 (invoke "/gnu/store/fd38qipvckr2jkkq2xja1n3rb9xz334r-t?" ?)
guix/build/utils.scm:762:6: In procedure invoke:
ERROR:
1. &invoke-error:
program: "/gnu/store/fd38qipvckr2jkkq2xja1n3rb9xz334r-texlive-bin-20210325/bin/updmap-sys"
arguments: ("--cnffile=/gnu/store/8d71qslw04hz3dc9gk8yfp0gcp9z03bx-texlive-font-maps/share/texmf-dist/web2c/updmap.cfg" "--dvipdfmxoutputdir=/gnu/store/8d71qslw04hz3dc9gk8yfp0gcp9z03bx-texlive-font-maps/share/texmf-dist/fonts/map/dvipdfmx/updmap" "--dvipsoutputdir=/gnu/store/8d71qslw04hz3dc9gk8yfp0gcp9z03bx-texlive-font-maps/share/texmf-dist/fonts/map/dvips/updmap" "--pdftexoutputdir=/gnu/store/8d71qslw04hz3dc9gk8yfp0gcp9z03bx-texlive-font-maps/share/texmf-dist/fonts/map/pdftex/updmap")
exit-status: 1
term-signal: #f
stop-signal: #f
The ‘texlive-font-maps-builder’ file starts with:
Toggle snippet (16 lines)
(begin
(use-modules
(guix build utils)
(guix build union)
(ice-9 popen))
(union-build "/tmp/texlive"
(quote
())
#:create-all-directories? #t #:log-port
(%make-void-port "w"))
(setenv "PATH"
(string-append "/gnu/store/8fpk2cja3f07xls48jfnpgrzrljpqivr-coreutils-8.32/bin" ":" "/gnu/store/hrgqa7m498wfavq4awai3xz86ifkjxdr-grep-3.6/bin" ":" "/gnu/store/zhd6blbfz40xp62i4d1rcgbyrpkynbkc-sed-4.8/bin"))
(setenv "PERL5LIB" "/gnu/store/fd38qipvckr2jkkq2xja1n3rb9xz334r-texlive-bin-20210325/share/tlpkg")
(setenv "GUIX_TEXMF" "/tmp/texlive/share/texmf-dist")
So the failure is caused by the fact that /tmp/texlive is in fact empty.
How does this happen? I think there’s a logic failure in this bit of
‘texlive-font-maps’ in (guix profiles):
(mlet %store-monad ((texlive-base (manifest-lookup-package manifest "texlive-base")))
(if texlive-base
(gexp->derivation "texlive-font-maps" build
#:substitutable? #f
#:local-build? #t
#:properties
`((type . profile-hook)
(hook . texlive-font-maps)))
(return #f)))
In this case, ‘texlive-base’ is found among the native inputs of
guile@3.0.99-git.
However, the profile itself contains zero texlive-* packages, hence the
failure.
There are probably two things to fix:
1. The ‘manifest-lookup-package’ check seems inconsistent with what’s
passed to ‘union-build’.
2. Perhaps the builder shouldn’t fail anyway when given an empty
/tmp/texlive.
Thoughts?
Ludo’.