all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: 65366@debbugs.gnu.org
Cc: Andreas Enge <andreas@enge.fr>, Ricardo Wurmus <rekado@elephly.net>
Subject: bug#65366: [PATCH] gnu: texlive-chktex: Fix runtime error.
Date: Sat,  2 Sep 2023 21:18:13 +0200	[thread overview]
Message-ID: <716deb42f01f583e34c9b7257592a7e4021f109e.1693682293.git.mail@nicolasgoaziou.fr> (raw)
In-Reply-To: <20230818102744.4tax4v3yrsp3cn2b@chloe-laptop.yellowsquid.uk>

This fixes <https://issues.guix.gnu.org/65366>.

* gnu/packages/tex.scm (texlive-source): New variable.
(texlive-chktex)[source]: Build binary from source.
[build-system]: Use GNU-BUILD-SYSTEM.
[arguments]<#:phases>: Make sure the `chktex' executable can locate a global
configuration file.
[native-inputs]: Add PKG-CONFIG and TEXLIVE-LIBKPATHSEA.
---

The following patch should (partly) fix the issue with chktex. Because
both `texlive-bin' and `texlive-chktex' provide the `chktex'
executable, one just has to make sure the binary from `texlive-chktex'
is used.

The next step will be to remove it from `texlive-bin', but this need
to go in a separate branch due to the sheer number of rebuilds this
will entail.

Also, the patch paves the way towards more executables being removed
from `texlive-bin', by defining a common `texlive-source' macro.

 gnu/packages/tex.scm | 79 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 63 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 9ac9105342..af276cfbdc 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -162,6 +162,17 @@ (define-syntax-rule (define-deprecated-package old-name name)
   (define-deprecated/public old-name name
     (deprecated-package (symbol->string 'old-name) name)))
 
+(define texlive-source
+  (let ((version "20230313"))
+    (origin
+      (method url-fetch)
+      (uri (string-append "ftp://tug.org/historic/systems/texlive/"
+                          (string-take version 4) "/"
+                          "texlive-" version "-source.tar.xz"))
+      (sha256
+       (base32
+        "1fbrkv7g9j6ipmwjx27l8l9l974rmply8bhf7c2iqc6h3q7aly1q")))))
+
 (define-public texlive-libkpathsea
   (package
     (name "texlive-libkpathsea")
@@ -33358,22 +33369,58 @@ (define-public texlive-chktex
   (package
     (name "texlive-chktex")
     (version (number->string %texlive-revision))
-    (source (texlive-origin
-             name version
-             (list "chktex/"
-                   "doc/chktex/"
-                   "doc/man/man1/chktex.1"
-                   "doc/man/man1/chktex.man1.pdf"
-                   "doc/man/man1/chkweb.1"
-                   "doc/man/man1/chkweb.man1.pdf"
-                   "doc/man/man1/deweb.1"
-                   "doc/man/man1/deweb.man1.pdf"
-                   "scripts/chktex/")
-             (base32
-              "0qyrllxvcymmr1a4sq9c88fw5zchcx0n6yac69s61fg6xypk18bq")))
-    (outputs '("out" "doc"))
-    (build-system texlive-build-system)
-    (arguments (list #:link-scripts #~(list "chkweb.sh" "deweb.pl")))
+    (source
+     (origin
+       (inherit texlive-source)
+       (modules '((guix build utils)
+                  (ice-9 ftw)))
+       (snippet
+        #~(begin
+            (with-directory-excursion "libs"
+              (for-each
+               delete-file-recursively
+               (scandir "."
+                        (lambda (file)
+                          (and (not (member file '("." "..")))
+                               (eq? 'directory (stat:type (stat file))))))))
+            (with-directory-excursion "texk"
+              (let ((preserved-directories '("." ".." "chktex")))
+                (for-each
+                 delete-file-recursively
+                 (scandir "."
+                          (lambda (file)
+                            (and (not (member file preserved-directories))
+                                 (eq? 'directory
+                                      (stat:type (stat file)))))))))))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:out-of-source? #true
+      #:configure-flags
+      #~(list "--disable-native-texlive-build"
+              "--disable-all-pkgs"
+              "--enable-chktex")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'locate-global-configuration-file
+            ;; `chktex' needs to know where its global configuration file is.
+            ;; However, it cannot understand our convoluted TEXMFMAIN value.
+            ;; This phase forces configuration file name.
+            (lambda _
+              (substitute* "texk/chktex/chktex-src/OpSys.c"
+                (("kpse_var_value\\(\"TEXMFMAIN\"\\)")
+                 (string-append "strdup(\"" #$output "/share/texmf-dist\")")))))
+          (add-after 'install 'post-install
+            (lambda _
+              (with-directory-excursion "texk/chktex"
+                (invoke "make" "install"))))
+          ;; Compilation forces a "/usr/bin/env perl" shebang.  Change it.
+          (add-after 'post-install 'patch-shebang
+            (lambda _
+              (patch-shebang
+               (string-append #$output
+                              "/share/texmf-dist/scripts/chktex/deweb.pl")))))))
+    (native-inputs (list pkg-config texlive-libkpathsea))
     (inputs (list perl))
     (home-page "https://ctan.org/pkg/chktex")
     (synopsis "Check for errors in LaTeX documents")

base-commit: f6cf746938d29ab3d0888a5e58cad97ce634766a
-- 
2.41.0





      reply	other threads:[~2023-09-02 19:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-18 10:27 bug#65366: texlive-scheme-basic: chktex: Could not find global resource file Chloe Brown via Bug reports for GNU Guix
2023-09-02 19:18 ` Nicolas Goaziou [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=716deb42f01f583e34c9b7257592a7e4021f109e.1693682293.git.mail@nicolasgoaziou.fr \
    --to=mail@nicolasgoaziou.fr \
    --cc=65366@debbugs.gnu.org \
    --cc=andreas@enge.fr \
    --cc=rekado@elephly.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.