Subject: Re: [bug#55997] [PATCH staging 2/4] gnu: Remove texlive's dependence on ruby-rspec and ruby-byebug.

From: Tom Fitzhenry <[email-masked]>
Date: Mon, 20 Jun 2022 00:01:20 +1000

Maxime Devos <[email-masked]> writes:
> I recommend a small description: ’Avoid dependency on byebug to reduce
> package closure significantly, see https://issues.guix.gnu.org/55997’.
> Also, patches need to be added to gnu/local.mk because $reasons.

SGTM. I'll add this to v2.

> While we are rebuilding anyway, could you eliminate input labels (in a
> separate patch)?
>
> (native-inputs (list ruby ruby-hydra-minimal hyph-utf8-scripts))

I tried this, but this causes a build phase failure for
texlive-hyphen-package packages:

--8<---------------cut here---------------start------------->8---
starting phase `build'
error: in phase 'build': uncaught exception:
wrong-type-arg "string-length" "Wrong type argument in position ~A (expecting ~A): ~S" (1 "string" #f) (#f) 
phase `build' failed after 0.0 seconds
Backtrace:
          10 (primitive-load "/gnu/store/b133miwd62x14d2lsbrsx1dk4rx…")
In guix/build/gnu-build-system.scm:
    906:2  9 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #)
In ice-9/boot-9.scm:
  1752:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In srfi/srfi-1.scm:
    634:9  7 (for-each #<procedure 553260 at guix/build/gnu-build-s…> …)
In ice-9/boot-9.scm:
  1752:10  6 (with-exception-handler _ _ #:unwind? _ # _)
In guix/build/gnu-build-system.scm:
   927:23  5 (_)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#(#(#(#(#(#(#<directory (g…>) …) …) …) …) …) …) …))
In guix/build/utils.scm:
   390:15  3 (copy-recursively #f "scripts" #:log _ # _ #:copy-file _ …)
In unknown file:
           2 (string-length #f)
In ice-9/boot-9.scm:
  1685:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure string-length: Wrong type argument in position 1 (expecting string): #f
--8<---------------cut here---------------end--------------->8---

The failing line is gnu/packages/tex.scm line 188 [0]:

(copy-recursively
 (assoc-ref inputs "hyph-utf8-scripts") "scripts")

This fails because the assoc-ref call returns #f, presumably because
native-inputs is no longer an alist.

To try to find a new-style way to recursively copy an entire input, I
read https://guix.gnu.org/blog/2021/the-big-change/ and searched the
codebase, but I was unable to find any.

The closest I could find was to use search-input-directory, but 
this seems to only be suitable to copy known subdirectories across all
inputs, not an entire single input.

Do you know of any way/examples to recursively copy entire single inputs?

> Anyway, the concept looks good to me, though I haven't done any
> practical testing!

Great! I will provide testing details in v2.

0. https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/tex.scm?id=793ce82c9d5ead8457da9cec8d1d8afc12704f10#n188