From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6C730C77B7C for ; Tue, 25 Apr 2023 17:35:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1prMZj-0001nE-O1; Tue, 25 Apr 2023 13:35:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prMZO-0001Yj-4A for qemu-devel@nongnu.org; Tue, 25 Apr 2023 13:35:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1prMZH-0005C2-Al for qemu-devel@nongnu.org; Tue, 25 Apr 2023 13:35:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682444106; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ufFcSgUvkFGhaGwWtXkmURCaRet6GOYBV5xK/jNYOPA=; b=HAUvbJuaMqw/AJv9yt5PDTNkhyfed2MX2C8qe39zhWSTT1WoMT4f9hf7/bnwH7lEGPbUGn fInYBqQLm24y/TsJ8Kj4S1Kp0BUzwHqlKT0/vsVkiWymYXy3Zck3Y+d1I6bjS29H5paTmW 5uzCP8JA8dBh7cladnX+Ptx8NFwiydU= Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-638-PoPuRJUsMX2WBganFYMQCA-1; Tue, 25 Apr 2023 13:35:04 -0400 X-MC-Unique: PoPuRJUsMX2WBganFYMQCA-1 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-24b25d3538eso3290587a91.1 for ; Tue, 25 Apr 2023 10:35:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682444104; x=1685036104; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ufFcSgUvkFGhaGwWtXkmURCaRet6GOYBV5xK/jNYOPA=; b=E0h3I0pAW8xR97MVPBnPH71qHxAgXO/HSWn/z/pRSPpkkOAwys+PNM2Y4R0XeVt9GD vzPzU1UG2CyBZ16jLxMYb+w6SDe7haHle/3bS1W835PAlRMmc0ZJ7pNTpvY+sz6i4mF2 W18AksMtjwgBfVxAbYdW8/5Hbc82ylgSoMADHkDlKh1J6+jQwFS2oz+GL39bIN0s4Bex d0f0tsOWyvUu9Mty2HAHO4rsW6SEJv9wL16syL1+WZQ5ElA799Ap2bJAPyZ32Eo9/C83 emr726AvJjx09v+EnIxEoo2Ur/JrWywYQsKaic34JDeICF4VIE2jhOsoWy/R+wgAk9PP kP+w== X-Gm-Message-State: AAQBX9eEzJYn1AFcYKgOeT1M0Of81WBvhS0BukIn5b1k/KV7pVFemoEp wEmND3SBeWyXfwx1qFFvuNZ3QXYAljvKTd1z6jPzFlQHFDNxq2VWuGkQ2Bjwys8y4xQwG8FllyV jPRXQuXHTojGNl57tltsBT/EWU0iJklQ= X-Received: by 2002:a17:90a:4703:b0:24b:66aa:e5cd with SMTP id h3-20020a17090a470300b0024b66aae5cdmr15894184pjg.39.1682444103682; Tue, 25 Apr 2023 10:35:03 -0700 (PDT) X-Google-Smtp-Source: AKy350bZj1mmofMgE1uzkc2o2nZowbw+m3ZesXeZeWRN6xk/5cDGjY04mZHH3g+albPGYPbx8v6z93L7+0fDh3V/TwE= X-Received: by 2002:a17:90a:4703:b0:24b:66aa:e5cd with SMTP id h3-20020a17090a470300b0024b66aae5cdmr15894149pjg.39.1682444103363; Tue, 25 Apr 2023 10:35:03 -0700 (PDT) MIME-Version: 1.0 References: <20230424200248.1183394-1-jsnow@redhat.com> In-Reply-To: From: John Snow Date: Tue, 25 Apr 2023 13:34:52 -0400 Message-ID: Subject: Re: [RFC PATCH v3 00/20] configure: create a python venv and ensure meson, sphinx To: =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= Cc: qemu-devel , Warner Losh , Beraldo Leal , Kyle Evans , Paolo Bonzini , Thomas Huth , Reinoud Zandijk , Wainer dos Santos Moschetta , Cleber Rosa , Ryo ONODERA , =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= , Ani Sinha , "Michael S. Tsirkin" , =?UTF-8?B?QWxleCBCZW5uw6ll?= Content-Type: multipart/alternative; boundary="00000000000022c23405fa2c8b86" Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.171, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org --00000000000022c23405fa2c8b86 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 25, 2023, 1:22 PM John Snow wrote: > > > On Tue, Apr 25, 2023, 1:17 PM Daniel P. Berrang=C3=A9 > wrote: > >> On Mon, Apr 24, 2023 at 04:02:28PM -0400, John Snow wrote: >> > GitLab CI: https://gitlab.com/jsnow/qemu/-/pipelines/846869409 >> > (All green, except Python self-tests, see below) >> > >> > This patch series creates a mandatory python virtual environment >> > ("venv") during configure time and uses it to ensure the availability = of >> > meson and sphinx. >> > >> > See https://www.qemu.org/2023/03/24/python/ for details. The summary i= s >> > that the goal of this series is to ensure that the `python` used to ru= n >> > meson is the same `python` used to run Sphinx, tests, and any build-ti= me >> > python scripting we have. As it stands, meson and sphinx (and their >> > extensions) *may* run in a different python environment than the one >> > configured and chosen by the user at configure/build time. >> > >> > The effective change of this series is that QEMU will now >> > unconditionally create a venv at configure-time and will ensure that >> > meson (and sphinx, if docs are enabled) are available through that ven= v. >> > >> > Some important points as a pre-emptive "FAQ": >> > >> > - This venv is unconditionally created and lives at {build_dir}/pyvenv= . >> > >> > - The python interpreter used by this venv is always the one identifie= d >> > by configure. (Which in turn is always the one specified by --python >> > or $PYTHON) >> > >> > - *almost* all python scripts in qemu.git executed as part of the buil= d >> > system, meson, sphinx, avocado tests, vm tests or CI are always >> > executed within this venv. >> > >> > (iotests are not yet integrated; I plan to tackle this separately as= a >> > follow-up in order to have a more tightly focused scope on that >> > series.) >> > >> > - It remains possible to build and test fully offline. >> > (In most cases, you just need meson and sphinx from your distro's >> repo.) >> > >> > - Distribution packaged 'meson' and 'sphinx' are still utilized whenev= er >> > possible as the highest preference. >> > >> > - Vendored versions of e.g. 'meson' are always preferred to PyPI >> > versions for speed, repeatability and ensuring tarball builds work >> > as-is offline. >> > >> > (Sphinx will not be vendored, just like it already isn't.) >> > >> > - Missing dependencies, when possible, are fetched and installed >> > on-demand automatically to make developer environments "just work". >> > >> > - Works for Python 3.7 and up, on Fedora, OpenSuSE, Red Hat, CentOS, >> > Alpine, Debian, Ubuntu, NetBSD, OpenBSD, and hopefully everywhere >> > >> > - No new dependencies (...for most platforms. Debian and NetBSD get an >> > asterisk.) >> > >> > - The meson git submodule is unused after this series and can be >> removed. >> > >> > For reviewers, here's how the series is broken up: >> > >> > Patch 1 is a testing pre-req. Note that even with this patch, >> > 'check-python-minreqs' and 'check-python-tox' CI jobs will both still >> > fail on origin/master because this series requires 3.7+, but >> > origin/master is currently still 3.6+. >> > >> > - python: update pylint configuration >> > >> > Patches 2-8 add the mkvenv script. The first patch checks in the bares= t >> > essentials, and each subsequent patch adds a workaround or feature one >> > at a time. >> > >> > - python: add mkvenv.py >> > - mkvenv: add console script entry point generation >> > - mkvenv: Add better error message for missing pyexapt module >> > - mkvenv: generate console entry shims from inside the venv >> > - mkvenv: work around broken pip installations on Debian 10 >> > - mkvenv: add nested venv workaround >> > - mkvenv: add ensure subcommand >> > >> > Patches 9-11 modify our testing configuration to add new dependencies = as >> > needed. >> > >> > - tests/docker: add python3-venv dependency >> > - tests/vm: Configure netbsd to use Python 3.10 >> > - tests/vm: add py310-expat to NetBSD >> > >> > Patch 12 changes how we package release tarballs. >> > >> > - scripts/make-release: download meson=3D=3D0.61.5 .whl >> > >> > Patches 13-16 wire mkvenv into configure and tests. >> > >> > - configure: create a python venv unconditionally >> > - configure: use 'mkvenv ensure meson' to bootstrap meson >> > - configure: add --enable-pypi and --disable-pypi >> > - tests: Use configure-provided pyvenv for tests >> > >> > Patches 17-20 delegate Sphinx bootstrapping to mkvenv. Some of these >> > changes could be folded earlier in the series (like the diagnose() >> > patch), but I'm keeping it separate for review for now. >> > >> > - configure: move --enable-docs and --disable-docs back to configure >> > - mkvenv: add diagnose() method for ensure() failures >> > - configure: use --diagnose option with meson ensure >> > - configure: bootstrap sphinx with mkvenv >> >> I'm not sure this last bit is working. >> >> I uninstalled meson and python3-sphinx from my F38 host and ran >> configure --target-list=3Dx86_64-softmmu and got this: >> >> $ ./configure --target-list=3Dx86_64-softmmu >> Using './build' as the directory for build output >> python determined to be '/usr/bin/python3' >> python version: Python 3.11.3 >> MKVENV pyvenv >> Configured python as >> '/home/berrange/src/virt/qemu/build/pyvenv/bin/python3 -B' >> MKVENV ensure meson>=3D0.61.5 >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> WARNING: Location 'file:///home/berrange/src/virt/qemu/python/wheels' is >> ignored: it is neither a file nor a directory. >> ERROR: Could not find a version that satisfies the requirement >> meson>=3D0.61.5 (from versions: none) >> ERROR: No matching distribution found for meson>=3D0.61.5 >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> MKVENV ensure sphinx>=3D1.6.0 >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> WARNING: Skipping >> /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.11.egg-info due = to >> invalid metadata entry 'name' >> ERROR: Could not find a version that satisfies the requirement >> sphinx>=3D1.6.0 (from versions: none) >> ERROR: No matching distribution found for sphinx>=3D1.6.0 >> >> *** Ouch! *** >> >> Could not ensure availability of 'sphinx>=3D1.6.0': >> =E2=80=A2 Python package 'sphinx' was not found nor installed. >> =E2=80=A2 No local package directory was searched. >> =E2=80=A2 mkvenv was configured to operate offline and did not check Py= PI. >> >> >> Sphinx not found/usable, disabling docs. >> MKVENV ok! >> >> >> >> It says mkvenv was configured to run offline, but I didn't do >> anything. I thought the intention was for developers it would >> live download from PyPI ? >> > > Ah. So... with enable pypi being the default and with docs set to "auto", > I actually fall back to not installing sphinx from pypi *by default*. It > tries to locate it on your system and will enable docs if it can, but it > doesn't try too hard and doesn't get upset if it fails. > (Though all of those errors and warnings sure are noisy for meaning "we couldn't find an optional package". mkvenv just doesn't distinguish between optional and required right now so it just leaves it to the caller to interpret. Any suggestions for improving this?) > Try passing --enable-docs to convince the build system you'd really > definitely like docs, and it'll force the pypi access. > I can make it try PyPI in this double-default case too, I was just being very conservative about when we tried PyPI - this solution is fairly reluctant by design to do it. If we all agree that it shouldn't be so reluctant, and anyone who doesnt want it at all should just pass --disable-pypi, I can make that change easily. I wonder if I should make an "auto" setting for the pypi access which represents this behavior ("only if I have to"), and make "enable" more aggressive (consult pypi even for optional features.) I was just being conservative on the first pass. Trying to strike a balance between convenience, speed, and least surprise. > >> >> On a system where i already have meson/sphinx installed, it >> all just worked fine AFAICT. >> >> With regards, >> Daniel >> -- >> |: https://berrange.com -o- >> https://www.flickr.com/photos/dberrange :| >> |: https://libvirt.org -o- >> https://fstop138.berrange.com :| >> |: https://entangle-photo.org -o- >> https://www.instagram.com/dberrange :| >> >> --00000000000022c23405fa2c8b86 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Tue, Apr 25, 2023, 1:22 PM John Snow <jsnow@redhat.com> wrote:


On Tue, Apr 25, 2023, 1:17 PM D= aniel P. Berrang=C3=A9 <berrange@redhat.com> wrote:
On Mon, Apr 24, 2023 at 04:02:28PM -0400, John = Snow wrote:
> GitLab CI: https://git= lab.com/jsnow/qemu/-/pipelines/846869409
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (All green, except Python sel= f-tests, see below)
>
> This patch series creates a mandatory python virtual environment
> ("venv") during configure time and uses it to ensure the ava= ilability of
> meson and sphinx.
>
> See https://www.qemu.org/2023/03/2= 4/python/ for details. The summary is
> that the goal of this series is to ensure that the `python` used to ru= n
> meson is the same `python` used to run Sphinx, tests, and any build-ti= me
> python scripting we have. As it stands, meson and sphinx (and their > extensions) *may* run in a different python environment than the one > configured and chosen by the user at configure/build time.
>
> The effective change of this series is that QEMU will now
> unconditionally create a venv at configure-time and will ensure that > meson (and sphinx, if docs are enabled) are available through that ven= v.
>
> Some important points as a pre-emptive "FAQ":
>
> - This venv is unconditionally created and lives at {build_dir}/pyvenv= .
>
> - The python interpreter used by this venv is always the one identifie= d
>=C2=A0 =C2=A0by configure. (Which in turn is always the one specified b= y --python
>=C2=A0 =C2=A0or $PYTHON)
>
> - *almost* all python scripts in qemu.git executed as part of the buil= d
>=C2=A0 =C2=A0system, meson, sphinx, avocado tests, vm tests or CI are a= lways
>=C2=A0 =C2=A0executed within this venv.
>
>=C2=A0 =C2=A0(iotests are not yet integrated; I plan to tackle this sep= arately as a
>=C2=A0 =C2=A0follow-up in order to have a more tightly focused scope on= that
>=C2=A0 =C2=A0series.)
>
> - It remains possible to build and test fully offline.
>=C2=A0 =C2=A0(In most cases, you just need meson and sphinx from your d= istro's repo.)
>
> - Distribution packaged 'meson' and 'sphinx' are still= utilized whenever
>=C2=A0 =C2=A0possible as the highest preference.
>
> - Vendored versions of e.g. 'meson' are always preferred to Py= PI
>=C2=A0 =C2=A0versions for speed, repeatability and ensuring tarball bui= lds work
>=C2=A0 =C2=A0as-is offline.
>
>=C2=A0 =C2=A0(Sphinx will not be vendored, just like it already isn'= ;t.)
>
> - Missing dependencies, when possible, are fetched and installed
>=C2=A0 =C2=A0on-demand automatically to make developer environments &qu= ot;just work".
>
> - Works for Python 3.7 and up, on Fedora, OpenSuSE, Red Hat, CentOS, >=C2=A0 =C2=A0Alpine, Debian, Ubuntu, NetBSD, OpenBSD, and hopefully eve= rywhere
>
> - No new dependencies (...for most platforms. Debian and NetBSD get an=
>=C2=A0 =C2=A0asterisk.)
>
> - The meson git submodule is unused after this series and can be remov= ed.
>
> For reviewers, here's how the series is broken up:
>
> Patch 1 is a testing pre-req. Note that even with this patch,
> 'check-python-minreqs' and 'check-python-tox' CI jobs = will both still
> fail on origin/master because this series requires 3.7+, but
> origin/master is currently still 3.6+.
>
> - python: update pylint configuration
>
> Patches 2-8 add the mkvenv script. The first patch checks in the bares= t
> essentials, and each subsequent patch adds a workaround or feature one=
> at a time.
>
> - python: add mkvenv.py
> - mkvenv: add console script entry point generation
> - mkvenv: Add better error message for missing pyexapt module
> - mkvenv: generate console entry shims from inside the venv
> - mkvenv: work around broken pip installations on Debian 10
> - mkvenv: add nested venv workaround
> - mkvenv: add ensure subcommand
>
> Patches 9-11 modify our testing configuration to add new dependencies = as
> needed.
>
> - tests/docker: add python3-venv dependency
> - tests/vm: Configure netbsd to use Python 3.10
> - tests/vm: add py310-expat to NetBSD
>
> Patch 12 changes how we package release tarballs.
>
> - scripts/make-release: download meson=3D=3D0.61.5 .whl
>
> Patches 13-16 wire mkvenv into configure and tests.
>
> - configure: create a python venv unconditionally
> - configure: use 'mkvenv ensure meson' to bootstrap meson
> - configure: add --enable-pypi and --disable-pypi
> - tests: Use configure-provided pyvenv for tests
>
> Patches 17-20 delegate Sphinx bootstrapping to mkvenv. Some of these > changes could be folded earlier in the series (like the diagnose()
> patch), but I'm keeping it separate for review for now.
>
> - configure: move --enable-docs and --disable-docs back to configure > - mkvenv: add diagnose() method for ensure() failures
> - configure: use --diagnose option with meson ensure
> - configure: bootstrap sphinx with mkvenv

I'm not sure this last bit is working.

I uninstalled meson and python3-sphinx from my F38 host and ran
configure --target-list=3Dx86_64-softmmu and got this:

$ ./configure --target-list=3Dx86_64-softmmu
Using './build' as the directory for build output
python determined to be '/usr/bin/python3'
python version: Python 3.11.3
MKVENV pyvenv
Configured python as '/home/berrange/src/virt/qemu/build/pyvenv/bin/pyt= hon3 -B'
MKVENV ensure meson>=3D0.61.5
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
WARNING: Location 'file:///home/berrange/src/virt/qemu/python/wheels= 9; is ignored: it is neither a file nor a directory.
ERROR: Could not find a version that satisfies the requirement meson>=3D= 0.61.5 (from versions: none)
ERROR: No matching distribution found for meson>=3D0.61.5
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
MKVENV ensure sphinx>=3D1.6.0
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
WARNING: Skipping /usr/lib/python3.11/site-packages/virt_firmware-1.5-py3.1= 1.egg-info due to invalid metadata entry 'name'
ERROR: Could not find a version that satisfies the requirement sphinx>= =3D1.6.0 (from versions: none)
ERROR: No matching distribution found for sphinx>=3D1.6.0

*** Ouch! ***

Could not ensure availability of 'sphinx>=3D1.6.0':
=C2=A0=E2=80=A2 Python package 'sphinx' was not found nor installed= .
=C2=A0=E2=80=A2 No local package directory was searched.
=C2=A0=E2=80=A2 mkvenv was configured to operate offline and did not check = PyPI.


Sphinx not found/usable, disabling docs.
MKVENV ok!



It says mkvenv was configured to run offline, but I didn't do
anything. I thought the intention was for developers it would
live download from PyPI ?
Ah. So... with enable pypi being the default and w= ith docs set to "auto", I actually fall back to not installing sp= hinx from pypi *by default*. It tries to locate it on your system and will = enable docs if it can, but it doesn't try too hard and doesn't get = upset if it fails.
(Though all of those errors and warnings sure are= noisy for meaning "we couldn't find an optional package". mk= venv just doesn't distinguish between optional and required right now s= o it just leaves it to the caller to interpret. Any suggestions for improvi= ng this?)


Try passing --enable-docs to convince the = build system you'd really definitely like docs, and it'll force the= pypi access.

I can make it try PyPI in this double-default case too= , I was just being very conservative about when we tried PyPI - this soluti= on is fairly reluctant by design to do it.

If we all agree that it shouldn't be so reluctant, a= nd anyone who doesnt want it at all should just pass --disable-pypi, I can = make that change easily.

I wonder if I should make an "auto" setting for the pypi access = which represents this behavior ("only if I have to"), and make &q= uot;enable" more aggressive (consult pypi even for optional features.)=

I was just being conser= vative on the first pass. Trying to strike a balance between convenience, s= peed, and least surprise.




On a system where i already have meson/sphinx installed, it
all just worked fine AFAICT.

With regards,
Daniel
--
|: https://berrange.com=C2=A0 =C2=A0 =C2=A0 -o-=C2=A0 = =C2=A0 https://www.flickr.com/photos/db= errange :|
|: https://libvirt.org=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0-o-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 h= ttps://fstop138.berrange.com :|
|: https://entangle-photo.org=C2=A0 =C2=A0 -o-= =C2=A0 =C2=A0 https://www.instagram.com/dbe= rrange :|

--00000000000022c23405fa2c8b86--