Subject: Re: [bug#42338] [PATCH v5 0/9] Composer build-system

From: Ludovic Courtès <[email-masked]>
Date: Mon, 18 Dec 2023 23:33:27 +0100

Hi,

Nicolas Graves <[email-masked]> skribis:

> This is the result of my further rework of the composer import and
> build-system. The `guix: import: composer` commits can be squashed
> easily.
>
> This is now tested on 94 php packages with all testing enabled except
> for 3 packages. I will submit these packages as a whole in the
> alphabetical order (the bootstrap order is not worth it IMO) in a new
> guix issue.
>
> Before accepting it, I also would like to propose a change of
> names. If me make an analogy with python:
> tool: pip <-> composer
> package hub: pypi <-> packagist
> build-system: python/pyproject <-> php
>
> Since we only take about 90 lines of real composer code, I would
> rather call the build-system php-build-system. 
> Same thing: instead of `guix import composer` we should rather call
> `guix import packagist`.
>
> If that's OK, I'll change it with the next (and hopefully last!)
> version of this build system.
>
> Nicolas Graves (9):
>   guix: import: Add composer importer.
>   gnu: Add composer-classloader.
>   guix: Add composer-build-system.
>   guix: import: composer: Use memoization.
>   guix: import: composer: Fix json->require.
>   guix: import: composer: More robust string->license.
>   guix: import: composer: Modern inputs formatting.
>   guix: import: composer: Full rewrite composer-fetch.
>   gnu: composer-build-system: Full check phase rewrite.

In the interest of moving forward, I pushed this:

  6454788a5c build-system/composer: Do not import host-side Guile-JSON modules.
  9dab758791 build-system: Add ‘composer-build-system’.
  e8fd78d54e gnu: Add composer-classloader.
  b7e3945283 guix: import: Add composer importer.

I squashed the importer commits.

However, I also add to make way too many fixes to my taste: adding
missing #:use-module, fixing unbound variables (guessing…), fixing
typos, untangling and build system commit that was fixing things in the
importer, fixing ‘tests/composer.scm’ which wouldn’t pass, fixing a case
where the importer would return a single value instead of two (breaking
recursive imports), and probably others that I forgot.  Not great.

Could you please take a closer look and see whether anything is amiss at
this point?

Next, which PHP packages do we add?  Julien initially submitted 30ish of
them, should we take those?  Or are you planning to submit a separate
set?

It would also be nice if the updater would fill in the ‘inputs’ fields
of <upstream-source>: that would allow ‘guix refresh -u’ to
automatically update inputs.

Thanks in advance!

Ludo’.