Subject: [bug#74517] [PATCH 1/8] gnu: Add v4l-utils-minimal.

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 25 Nov 2024 11:54:19 +0900

Hi,

Nicolas Graves <[email-masked]> writes:

> * gnu/packages/video.scm (v4l-utils-minimal): New variable.
> ---
>  gnu/packages/video.scm | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
> index 2da458ed01..4cc6735dca 100644
> --- a/gnu/packages/video.scm
> +++ b/gnu/packages/video.scm
> @@ -4035,6 +4035,30 @@ (define-public v4l-utils
>      ;; libv4l2 is LGPL2.1+, while utilities are GPL2 only.
>      (license (list license:lgpl2.1+ license:gpl2))))
>  
> +(define-public v4l-utils-minimal
> +  (package
> +    (inherit v4l-utils)
> +    (source #f)
> +    (name "v4l-utils-minimal")
> +    (build-system trivial-build-system)
> +    (arguments
> +     (list
> +      #:builder
> +      (with-imported-modules '((guix build utils))
> +        #~(begin
> +            (use-modules (guix build utils))
> +            (copy-recursively #$(this-package-native-input "v4l-utils")
> +                              #$output)
> +            (substitute* (find-files (string-append #$output "/lib/pkgconfig")
> +                                     "\\.pc$")
> +              (("^prefix=.*")
> +               (string-append "prefix=" #$output "\n")))))))
> +    (outputs '("out"))

I don't understand how this resolves the issue, at a glance.  Is the
issue that some v4l-utils tools, kept in a distinct output, are referred
to in the pkg-config files, present in the main output?

A comment explaining would be beneficial, but mostly I would rather we
use the more traditional style of rebuilding the package with the
modified inputs, so that it's cleanly built as a 'qtbase-less' variant;
that should lead to less bad surprises down the road, at the expense of
a bit more computation, which we can afford.

As a variant (a package sharing the same source but using different
inputs/build flags), the package should be defined via
'package/inherit', which will honor the parent package's replacements
(grafts).

-- 
Thanks,
Maxim