On Fri, Mar 26, 2021 at 07:32:47PM -0400, Sergio Durigan Junior wrote:
> Control: severity -1 serious
> Control: tags -1 + help
> 
> On Sunday, January 17 2021, Martina Ferrari wrote:
> 
> > On 17/01/2021 01:06, Sergio Durigan Junior wrote:
> >
> >> Thanks for the bug report, Martina.
> >> Yeah, this is strange.  I don't think it should require pip, and
> >> after
> >> installing python3-pip here and re-running /usr/bin/pyproject-build I
> >> noticed that it (obviously) invokes pip and downloads several things,
> >> which IMO is a no-no.
> >
> > Yeah, that's bad.
> >
> >> The reason I packaged python3-build is because check-manifest started
> >> depending on it.  I'm thinking about removing the
> >> /usr/bin/pyproject-build program and just shipping the library.  Do you
> >> think it could work?  (Sorry, I'm not a PEP-517 expert).
> >
> > Honestly, I don't know much about it either.. I'd suggest discussing
> > it with the python-modules team? I guess somebody there would know
> > what to do.
> 
> I'm marking this bug as serious because I don't think we want a clearly
> broken package in bullseye.
> 
> I don't have much time to work on it right now, so I'm tagging this bug
> as "help" and would appreciate if someone could take another look and
> check if it's possible to fix it, or if it even makes sense having this
> package in Debian, given that python-build seems to depend on
> downloading things via pip and all...
> 
> The only reverse-dependency of python3-build is check-manifest, which is
> another package I've uploaded, and nothing really depends on it, so I'm
> fine if nobody steps up to fix this bug and both packages are excluded
> from bullseye.

Hm. I may be a bit off-base here, but I needed to look at the "build"
tool a while ago as part of $REAL_JOB, and, hm...

...is this not how python3-build is supposed to operate?

From what I know (which may not be completely correct), it has two basic
operating modes:

- isolated (the default one): create a virtual environment, make sure
  that the specified build system's dependencies are satisfied in there,
  then run the specified build system's PEP 517 hook for creating wheel
  packages

- non-isolated (the -n command-line option): do not create a virtual
  environment, assume that the build system itself and all its
  dependencies are already installed in the environment of the Python
  interpreter that "build" is being run with, so just invoke the build
  system's PEP 517 hook for creating wheel packages

So if one invokes `python3 -m build --wheel` (which is the default
target if none are specified), "build" will create a virtual
environment, then look at the pyproject.toml file and figure out what
packages need to be installed within the newly-created environment.
After that, it will use pip to install them.

The way to avoid that is to use build's non-isolated mode by specifying
the -n option on the command line. Of course, this brings along all
the perils of a non-isolated build, e.g. not noticing forgotten build
dependencies that are accidentally present in the current environment.

So... I think that this is the way the "build" tool is supposed to
operate. If somebody needs to use it with assuredly nothing downloaded
from external sites, e.g. during a Debian package build, then I think
a non-isolated build is the way to go.

I hope this was useful in some way - I thought I'd make things a bit
clearer for people who are not familiar with the tool itself.
If somebody still decides that the "build" tool's default mode of
operation makes it unsuitable for Debian, well, I guess that would be
a valid viewpoint, but IMHO that would also apply to many, many other
Debian packages related to various language ecosystems that have
"download stuff from a central repository" as their main purpose :)

Thanks, everyone, for your work on Debian!

G'luck,
Peter

-- 
Peter Pentchev  r...@ringlet.net r...@debian.org p...@storpool.com
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13

Attachment: signature.asc
Description: PGP signature

Reply via email to