Subject: [bug#78301] [PATCH] gnu: guile-mqtt: Patch extension path.

From: Z572 <[email-masked]>
Date: Thu, 08 May 2025 00:51:30 +0800

Evgeny Pisemsky <[email-masked]> writes:

> Z572 <[email-masked]> writes:
>
>> else if no "mosquitto" in inputs
>
> I don't get it.
>
> It is in inputs.

for example, If I use the following codes
```
(define-public mosquitto-with-something
  (package
    (inherit mosquitto)
    (name "mosquitto-with-something")
    ...
    (license (list license:epl1.0 license:edl1.0))))

(define-public guile-mqtt-with-something
  (package (inherit guile-mqtt)
           (name "guile-mqtt-with-something")
           ...
           (inputs (list mosquitto-with-v))))
```

guix build guile-mqtt-with-something will success, but if you see
share/guile/site/3.0/ffi/mosquitto.scm,

```
(define (foreign-pointer-search name)
  (let loop ((libs (list #f "#f/lib/libmosquitto")))
    (cond
      ((null? libs) (error "no library for ~s" name))
      ((false-if-exception (foreign-library-pointer (car libs) name)))
      (else (loop (cdr libs))))))
```

This will cause problems. It is best to report an error during
build. A better approach is to use search-input-file. Instead of relying
on names, look up /lib/libmosquitto.so.