Subject: Re: [bug#58587] [PATCH 00/14] Introducing pyproject-build-system.

From: Marius Bakke <[email-masked]>
Date: Sat, 22 Oct 2022 21:06:25 +0200

zimoun <[email-masked]> skriver:

> Hi Marius,
>
> On jeu., 20 oct. 2022 at 01:11, Marius Bakke <[email-masked]> wrote:
>
>> diff --git a/doc/contributing.texi b/doc/contributing.texi
>> index b9260267fa..d12daa7ec3 100644
>> --- a/doc/contributing.texi
>> +++ b/doc/contributing.texi
>> @@ -786,6 +786,21 @@ for instance, the module python-dateutil is packaged under the names
>>  starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as
>>  described above.
>>  
>> +@quotation Note
>> +Currently there are two different build systems for Python packages in Guix:
>> +@var{python-build-system} and @var{pyproject-build-system}.  For the
>> +longest time, Python packages were built from an informally specified
>> +@file{setup.py} file.  That worked amazingly well, considering Pythons
>                                                                         ^
>                                                                      typo?

Right, I've adjusted it!

>> +success, but was difficult to build tooling around.  As a result, a host
>> +of alternative build systems emerged and the community eventually settled on a
>> +@url{https://peps.python.org/pep-0517/, formal standard} for specifying build
>> +requirements.  @var{pyproject-build-system} is Guix's implementation of this
>> +standard.  It is considered ``experimental'' in that it does not yet support
>> +all the various PEP-517 @emph{build backends}, but you are encouraged to try
>> +it for new Python packages and report any problems.  It will eventually be
>> +deprecated and merged into @var{python-build-system}.
>> +@end quotation
>
> LTGM.  

Thanks for checking.

I've now added a section in the manual about API changes and stability,
and removed more duplicate code from pyproject-build-system.  I also
added a news entry.

I think this is now ready for merge, but have some concerns:

* The python-toolchain package is a union that includes setuptools,
  wheel and others.  Packages that pick up a reference to the build-time
  Python will needlessly include those other packages.  It could be
  worked around by propagating instead of using a union.
* Overriding #:test-flags means having to add back the implicit defaults
  for verbose output.  We could add them even when #:test-flags is
  present so users don't need to add "-vv" manually.

Thoughts?

I will merge this in a few days if there are no further comments.  It
can still be tweaked directly on 'master' if necessary.

Updated patches follow shortly.