Subject: Re: bug#49597: [PATCH core-updates 00/15] Ajust packages to label-less input style

From: Mathieu Othacehe <[email-masked]>
Date: Sun, 25 Jul 2021 11:54:18 +0200

Hey Ludo,

> I went ahead and pushed as d468a03a00738bb0742148e056f7a557aae08f2f.

The CI reports that core-updates evaluation is broken. That's because
"search-input-file" expects a relative FILE whereas some calls, such as
the one in the glib package provide an absolute one:

--8<---------------cut here---------------start------------->8---
(search-input-file (or native-inputs inputs)
                   (string-append
                    "/bin/python"
                    ,(version-major+minor
                      (package-version python))))))))
--8<---------------cut here---------------end--------------->8---

We could edit all those calls to use relative FILE arguments. Another
solution would be to make sure that search-input-file treats
"/bin/python" and "bin/python" the same way as proposed in the attached
patch.

That would be consistent with search-input-directory that already
accepts both "/include/xxx" and "include/xxx".

WDYT?

Thanks,

Mathieu
>From 6920b87a9cb22c0a5c2ceaf6b6ca852a8e094732 Mon Sep 17 00:00:00 2001
From: Mathieu Othacehe <[email-masked]>
Date: Sun, 25 Jul 2021 11:43:05 +0200
Subject: [PATCH] build: utils: Trim trailing slashes from search-input-file
 input.

Make sure that both:

(search-input-file inputs "/bin/sh") and (search-input-file inputs "bin/sh")

are supported.

* guix/build/utils (search-input-file): Trim starting slash character from
FILE.
---
 guix/build/utils.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index e7782d3e08..3beb7da67a 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -631,8 +631,11 @@ FILE must be a string like \"bin/sh\". If FILE is not found, an exception is
 raised."
   (match inputs
     (((_ . directories) ...)
-     (or (search-path directories file)
-         (raise (condition (&search-error (path directories) (file file))))))))
+     ;; Accept both "bin/sh" and "/bin/sh" as FILE argument.
+     (let ((file (string-trim file #\/)))
+       (or (search-path directories file)
+           (raise
+            (condition (&search-error (path directories) (file file)))))))))
 
 (define (search-input-directory inputs directory)
   "Find a sub-directory named DIRECTORY among the INPUTS and return its
-- 
2.32.0