Subject: [bug#66129] [PATCH 00/20] Split SuiteSparse into subpackages

From: Ludovic Courtès <[email-masked]>
Date: Thu, 05 Oct 2023 15:20:52 +0200

Hi David,

David Elsing <[email-masked]> skribis:

> This patch series adds the individual SuiteSparse packages (as in
> Gentoo:
> https://packages.gentoo.org/packages/sci-libs/suitesparse/dependencies),
> with autogenerated files and bundled libraries removed.

Nice!

> The GraphBLAS library is not yet included, but AFAICT it is not required
> by any other package. It also makes up by far the most space of the
> suitesparse package, e.g. on x86_64-linux, libgraphblas.so.7.2.0 is 196
> MB of the 201 MB SuiteSparse package.
>
> I think it would be best to keep the full suitesparse package until all
> of its dependencies are updated and the GraphBLAS package is added, as
> replacing them all at once would make the patch series quite large.
>
> Is the use of (@@ (guix packages) computed-origin-method) ok for
> creating the individual origins or is there another alternative?

Instead of:

+(define (suitesparse-package-src name path)
+  (origin
+    (method (@@ (guix packages) computed-origin-method))
+    (file-name
+     (string-append name "-" suitesparse-version))
+    (sha256 #f)
+    (uri
+     (delay
+       (with-imported-modules '((guix build utils))
+         #~(begin
+             (use-modules (guix build utils))
+             (copy-recursively
+              (string-append #$suitesparse-src "/" #$path) #$output)))))))

I’d suggest this:

  (define (suitesparse-package-source name directory)
    (computed-file (string-append name "-" suitesparse-version ".tar.xz")
                   (with-imported-modules '((guix build utils))
                     #~(begin
                         (use-modules (guix build utils))
                         (copy-recursively
                          (string-append #$suitesparse-src "/" #$directory)
                                         #$output)))))

That way we have something simple that doesn’t rely on a private
procedure.

>   gnu: suitesparse: Tweak description.
>   gnu: Add suitesparse-config.
>   gnu: Add suitesparse-amd.
>   gnu: Add suitesparse-btf.
>   gnu: Add suitesparse-camd.
>   gnu: Add suitesparse-colamd.
>   gnu: Add suitesparse-ccolamd.
>   gnu: Add gklib.
>   gnu: Add metis-5.2.
>   gnu: Add gklib-suitesparse.
>   gnu: Add metis-suitesparse.
>   gnu: Add suitesparse-cholmod.
>   gnu: Add suitesparse-cxsparse.
>   gnu: Add suitesparse-klu.
>   gnu: Add suitesparse-ldl.
>   gnu: Add suitesparse-rbio.
>   gnu: Add suitesparse-mongoose.
>   gnu: Add suitesparse-spex.
>   gnu: Add suitesparse-spqr.
>   gnu: Add suitesparse-umfpack.

Apart from the trick above, this looks great to me!

Could you send an updated version?

Thanks,
Ludo’.