svn-download: Do not expand keywords.

Subversion keyword expansion is potentially non-reproducible as some of
them expand time strings relative to the local time zone:

  https://issues.guix.gnu.org/43442#18

In practice this is not a problem in Guix since Subversion checkouts
happen in an isolated environment using the "default timezone" (UTC).

However, Software Heritage disables keyword expansion for this very
reason.  By following suit, we make sure content can be retrieved from
there.

* guix/build/svn.scm (svn-fecth): Pass "--ignore-keywords" to
Subversion.
* guix/build-system/texlive.scm (%texlive-date): New variable.
* gnu/packages/java.scm (java-geronimo-xbean-reflect)
(java-geronimo-genesis-2.1): Update the source hash.
* gnu/packages/machine-learning.scm (ghmm): Likewise.
* gnu/packages/video.scm (libsmpeg, libsmpeg-with-sdl1): Likewise.
* gnu/packages/tex.scm (texlive-bin): Update the hash of the
"texlive-scripts" input, and a add a new phase that imitates
Subversion keyword expansion for scripts that need it.
(texlive-latex-base): Update the hash of the "texlive-luatexconfig"
native input.
(texlive-hyphen-base, texlive-dvipdfmx, texlive-dvips, texlive-cm)
(texlive-tex-plain, texlive-kpathsea, texlive-latexconfig)
(texlive-tetex, texlive-pdftex, texlive-xetex): Update the source
hash.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Timothy Sample 2023-04-05 13:46:28 -06:00 committed by Nicolas Goaziou
parent 2ffa3a400b
commit e6da6e3152
No known key found for this signature in database
GPG key ID: DA00B4F048E92F2D
6 changed files with 55 additions and 20 deletions

View file

@ -11240,7 +11240,7 @@ (define-public java-geronimo-xbean-reflect
(file-name (string-append name "-" version))
(sha256
(base32
"18q3i6jgm6rkw8aysfgihgywrdc5nvijrwnslmi3ww497jvri6ja"))))
"0zjqmsad4xk0iar23hdyvx19nxczybd2bh0i35xrafli5cmh720k"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "geronimo-xbean-reflect.jar"
@ -11291,7 +11291,7 @@ (define java-geronimo-genesis-2.1
(file-name (string-append name "-" version "-source"))
(sha256
(base32
"119yn795jvnjf52si84q192s8wag1k013iabg78b7wnadssnnh31"))))
"1mky4zyl2xsqlgrkairaj5971byvhwk2z9bq8snsgvlr11ydc0zf"))))
(build-system ant-build-system)
(arguments
`(#:tests? #f

View file

@ -239,7 +239,7 @@ (define-public ghmm
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0qbq1rqp94l530f043qzp8aw5lj7dng9wq0miffd7spd1ff638wq"))))
"07kdsngvr4n1qxpqzv1nlay7g41d6jzjppa8vzmrg220s8ing87z"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules (,@%gnu-build-system-modules

View file

@ -27,6 +27,7 @@
;;; Copyright © 2023 Thomas Albers Raviola <thomas@thomaslabs.org>
;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw>
;;; Copyright © 2023 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -295,7 +296,7 @@ (define-public texlive-bin
"-checkout"))
(sha256
(base32
"10xpa4nnz1biap7qfv7fb0zk6132ki5g1j8w0bqwkggfncdfl07d"))))
"1jrphfjhmw17rp1yqsl70shmvka3vg0g8841q6zx2lfn48p7vqf3"))))
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("fontforge" ,fontforge)
@ -423,7 +424,32 @@ (define-public texlive-bin
(mkdir "texlive-scripts")
(with-directory-excursion "texlive-scripts"
(apply (assoc-ref %standard-phases 'unpack)
(list #:source (assoc-ref inputs "texlive-scripts"))))))
(list #:source (assoc-ref inputs "texlive-scripts")))
;; Configure the version string for some scripts.
;; Normally this would be done by Subversion.
;; See <https://issues.guix.gnu.org/43442#15>.
(for-each (lambda (file)
(substitute* file
(("\\$Id\\$")
(format #f "$Id: ~a ~a ~a nobody $"
file
,%texlive-revision
,%texlive-date))
(("\\$Revision\\$")
(format #f "$Revision: ~a $"
,%texlive-revision))
(("\\$Date\\$")
(format #f "$Date: ~a $"
,%texlive-date))))
'("fmtutil.pl"
"mktexlsr"
"mktexlsr.pl"
"mktexmf"
"mktexpk"
"mktextfm"
"tlmgr.pl"
"tlmgrgui.pl"
"updmap.pl")))))
(add-after 'unpack-texlive-scripts 'patch-scripts
(lambda _
(let* ((scripts (append (find-files "texk/kpathsea" "^mktex")
@ -784,7 +810,7 @@ (define-public texlive-hyphen-base
"/tex/generic/hyphen/hypht1.tex"
"/tex/generic/hyphen/zerohyph.tex")
(base32
"1sagn9aybs34m1s6m3zwya5g5kbiwfnw8ifcgxssygmzzs88dgjp")
"1nad1bqpjsywm49hlv7d75mqvgha3j5vayvkvfhv8wwzgdb3mk84")
#:trivial? #t))
(home-page "https://tug.org/texlive/")
(synopsis "Core hyphenation support files")
@ -804,7 +830,7 @@ (define-public texlive-dvipdfmx
"fonts/cmap/dvipdfmx/"
"fonts/map/dvipdfmx/")
(base32
"04x93w777l9qzdzglwanb14k8cmq74kjcsgyanvp3bsmnn5zfrgz")
"08i81hciksh0sm9pw6lw8v8s2rj92p58wd5j2mq1mzqbp171wjmr")
#:trivial? #t)))
(package
(inherit template)
@ -836,7 +862,7 @@ (define-public texlive-dvips
"/fonts/enc/dvips/base/"
"/tex/generic/dvips/")
(base32
"0rns1hpjy4fmsskmkwx197j8qbgdmyj0j9214sq9vhpa6nv7czm3")
"1fb73mfw9mp4ylp6sfc0465rbdb7k830aq0qf3c085c3n0zyrin8")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/dvips")
(synopsis "DVI to PostScript drivers")
@ -1094,7 +1120,7 @@ (define-public texlive-cm
"/fonts/map/dvips/cm/cmtext-bsr-interpolated.map"
"/doc/fonts/cm/")
(base32
"1ky4gvcn8qn3d61bvb39512b8r92igv6il7vh02hw04223yj6q8i")
"0mfslqs9saqkb3z3xdhsqnklxk858nmipgj1y93by2791jzkma1d")
#:trivial? #t)))
(package
(inherit template)
@ -1698,7 +1724,7 @@ (define-public texlive-tex-plain
"texlive-tex-plain"
(list "/tex/plain/")
(base32
"0gwygkm8i2jmpf7bfg6fb6824rl7fq4a2s0wni73v0fz6s4chr1n")
"1hafbphx1486069cky87hyksx6ia5gd83m4wp2xmgc09z87faf0h")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/plain")
(synopsis "Plain TeX format and supporting files")
@ -2904,7 +2930,7 @@ (define-public texlive-kpathsea
"/web2c/tcvn-t5.tcx"
"/web2c/viscii-t5.tcx")
(base32
"00q2nny7lw7jxyln6ch4h0alygbrzk8yynliyc291m53kds1h0mr")
"08nfk5hicqbvnz73rjbxi97lcakd9i1k2cy4qi2cwghan92650jq")
#:trivial? #t)))
(package
(inherit template)
@ -2967,7 +2993,7 @@ (define-public texlive-latexconfig
"texlive-latexconfig"
(list "/tex/latex/latexconfig/")
(base32
"10ynmd8b9b9l1wl1mva23yz4zir53p6r5z31s39wmxz19pj12qvx")
"1x5fyr2185nx3qlyariykdz44hcy5azimrk9db2p707dg08bjhsd")
#:trivial? #t))
(home-page "https://www.tug.org/")
(synopsis "Configuration files for LaTeX-related formats")
@ -3121,7 +3147,7 @@ (define-public texlive-latex-base
"/tex/generic/config/luatexiniconfig.tex"
"/web2c/texmfcnf.lua")
(base32
"0yjx7nw9mgfgnq1givkzbxh7z7ncw1liaddjgm7n2nwn0aw6xfdg")))))
"065j47i2785nbj2507pzxlscyrwr4ghv6nksc3a01rp62bq8kkjp")))))
(propagated-inputs
(list texlive-dehyph-exptl
texlive-etex
@ -4019,7 +4045,7 @@ (define-public texlive-tetex
"/fonts/enc/dvips/tetex/"
"/fonts/map/dvips/tetex/")
(base32
"1si3as8mwi8837965djlw6jhwwzsp3r1hkflvdxv2avx9vb45hjb")
"05mf8yqdj2wrc1zm3al2j4aam2wx0ky6a7slxw17pkd1c7rmvjrq")
#:trivial? #t))
(home-page "https://www.ctan.org/pkg/tetex")
(synopsis "Font maps originally from teTeX")
@ -8689,7 +8715,7 @@ (define-public texlive-pdftex
"/tex/generic/pdftex/glyphtounicode.tex"
"/tex/generic/pdftex/pdfcolor.tex")
(base32
"1wx928rqsv0x1a8vc7aq49w3nglr4bmlhl822slqglymfxrmb91b")
"0w4ar5g7x4w8zw8z6hdwqxwcbglfzzq7pcznz8rawllwy6dssr8g")
#:trivial? #t))
;; TODO: add this missing package:
;; dehyph
@ -13548,7 +13574,7 @@ (define-public texlive-xetex
"/fonts/misc/xetex/fontmapping/base/"
"/tex/xelatex/xetexconfig/")
(base32
"1gmgagvsv2qknrjzjk840ca3wging8wfc20rgq7bnhphm9n87m6q")
"0j396anlhk5pqrnwxr8bpq55sp3qfyb6n9g08x4nmaa6p9b9y8ab")
#:trivial? #t))
(propagated-inputs
(list texlive-atbegshi

View file

@ -3718,7 +3718,7 @@ (define-public libsmpeg
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
"1srzyjks9s0g4k7ms8vc0hjby2g6shndnr552hl63pn90sgmwxs9"))))
(build-system gnu-build-system)
(arguments
;; libsmpeg fails to build with -std=c++11, which is the default with
@ -3754,7 +3754,7 @@ (define-public libsmpeg-with-sdl1
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0jfi085rf3fa5xsn0vd3nqf32my8ph9c6a9445y7a8lrlz4dms64"))))
"1jy9xqykhwfg8in0fxjcqcvwazii1ckzs39wp749b926q7ny5bwy"))))
(inputs
(list sdl))))

View file

@ -34,7 +34,8 @@ (define-module (guix build-system texlive)
texlive-ref
texlive-origin
%texlive-tag
%texlive-revision))
%texlive-revision
%texlive-date))
;; Commentary:
;;
@ -46,6 +47,7 @@ (define-module (guix build-system texlive)
;; are taken from https://www.tug.org/svn/texlive/tags/
(define %texlive-tag "texlive-2021.3")
(define %texlive-revision 59745)
(define %texlive-date "2021-06-28 21:59:21Z")
(define (texlive-origin name version locations hash)
"Return an <origin> object for a TeX Live package consisting of multiple

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
@ -47,6 +47,13 @@ (define* (svn-fetch url revision directory
;; verify the checksum later. This can be removed when
;; ca-certificates package is added.
"--trust-server-cert" "-r" (number->string revision)
;; Disable keyword substitutions (keywords are CVS-like strings
;; like "$Date$", "$Id$", and so on) for two reasons: (1) some
;; expansions depend on the local time zone, and (2) SWH disables
;; it in its archive for this very reason.
"--ignore-keywords"
`(,@(if (and user-name password)
(list (string-append "--username=" user-name)
(string-append "--password=" password))