Bug 294827 - emulators/qemu: qemu-guest-agent fails to build with python 3.1X
Summary: emulators/qemu: qemu-guest-agent fails to build with python 3.1X
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Muhammad Moinur Rahman
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-04-27 08:51 UTC by Einar Bjarni Halldórsson
Modified: 2026-06-08 21:10 UTC (History)
5 users (show)

See Also:
bugzilla: maintainer-feedback? (bofh)


Attachments
USES=python:build for guestagent and USES=python for the other flavors (1.09 KB, patch)
2026-05-03 06:42 UTC, Herbert J. Skuhra
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Einar Bjarni Halldórsson 2026-04-27 08:51:07 UTC
I have python3.12 as the default python in poudriere. It worked fine at first, but the first build with errors was on 2026-04-24_19h05m02s.

I have a cron job that runs every hour that builds all the packages I use and the last build without errors was on 2026-04-24_18h05m01s.

--

===>   qemu-guest-agent-11.0.0_1 depends on shared library: libglib-2.0.so - found (/usr/local/lib/libglib-2.0.so)
===>   Returning to build of qemu-guest-agent-11.0.0_1
===>   qemu-guest-agent-11.0.0_1 depends on shared library: libintl.so - found (/usr/local/lib/libintl.so)
===========================================================================
=======================<phase: configure      >============================
===== env: NO_DEPENDS=yes USER=root UID=0 GID=0
===>  Configuring for qemu-guest-agent-11.0.0_1
Using './build' as the directory for build output
python determined to be '/usr/local/bin/python3.12'
python version: Python 3.12.13
mkvenv: Creating non-isolated virtual environment at 'pyvenv'
mkvenv: checking for meson>=1.5.0
mkvenv: checking for pycotap>=1.1.0
mkvenv: installing meson==1.10.0, pycotap==1.3.1
mkvenv: checking for qemu.qmp>=0.0.5
mkvenv: checking for setuptools>=44.1.1
mkvenv: checking for wheel>=0.34.2
mkvenv: checking for pip>=20.3.4
mkvenv: installing setuptools>=44.1.1, pip>=20.3.4
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("<pip._vendor.urllib3.connection.HTTPSConnection object at 0x3cb9179f6ab0>: Failed to establish a new connection: [Errno 49] Can't assign requested address")': /simple/setuptools/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("<pip._vendor.urllib3.connection.HTTPSConnection object at 0x3cb918cbfc20>: Failed to establish a new connection: [Errno 49] Can't assign requested address")': /simple/setuptools/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("<pip._vendor.urllib3.connection.HTTPSConnection object at 0x3cb9193714f0>: Failed to establish a new connection: [Errno 49] Can't assign requested address")': /simple/setuptools/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("<pip._vendor.urllib3.connection.HTTPSConnection object at 0x3cb919371700>: Failed to establish a new connection: [Errno 49] Can't assign requested address")': /simple/setuptools/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError("<pip._vendor.urllib3.connection.HTTPSConnection object at 0x3cb9193718e0>: Failed to establish a new connection: [Errno 49] Can't assign requested address")': /simple/setuptools/
ERROR: Could not find a version that satisfies the requirement setuptools>=44.1.1 (from versions: none)
ERROR: No matching distribution found for setuptools>=44.1.1

*** Ouch! ***

Could not provide build dependency 'setuptools>=44.1.1':
 • Python package 'setuptools' was not found nor installed.
 • No suitable version found in, or failed to install from '/wrkdirs/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/wheels'.
 • A suitable version could not be obtained from PyPI.
Comment 1 Einar Bjarni Halldórsson 2026-04-27 08:56:00 UTC
I assume https://cgit.freebsd.org/ports/commit/?id=19d5033f041ae46b7e28aff8e73dd9bd788eca5e is the cause
Comment 2 Herbert J. Skuhra 2026-05-02 07:02:40 UTC
The latest version seems to fail with python >= 3.12. Python 3.14 throws a different error.

Can we modify the port to use USES=python:build for qemu@guestagent USES=python for the other flavors?
Comment 3 Herbert J. Skuhra 2026-05-03 06:42:51 UTC
Created attachment 270366 [details]
USES=python:build for guestagent and USES=python for the other flavors

As a workaround I build qemu@guestagent with poudriere and use the attached patch.
Comment 4 Herbert J. Skuhra 2026-05-05 21:30:19 UTC
(In reply to Herbert J. Skuhra from comment #3)

The suggested patch was rejected by the maintainer:
"No. python:build simply does not load all required variables and also the
test fails by removing from the USES."

I can't even build qemu@guestagent with default Python version (3.11) outside of poudriere. :-(
Comment 5 Herbert J. Skuhra 2026-05-08 07:08:36 UTC
Can we replace 3.12 with 3.1X in the summary?
Comment 6 Herbert J. Skuhra 2026-05-15 11:17:44 UTC
Can we have some maintainer feedback please? :-)

1. Created a new BE (main and stable15) and booted it.
2. Removed /etc/make.conf (e.g. DEFAULT_VERSIONS+= is gone)
3. Ran 'pkg delete -af'
4. Made sure that /usr/ports was clean and contained no work/work-$flavor subdirs.
5. Installed/Built ports-mgmt/pkg
6. Built and Installed default python with "DISABLE_VULNERABILITIES=yes
7. Made sure that /usr/ports was clean and contained no work/work-$flavor subdirs.
8. Tried to install emulators/qemu with "make FLAVOR=guestagent" => it failed.

(tested on main and stable/15).

And why is my patch problematic? Even with "USES+= python:build,test" instead of "USES+= python:build" for FLAVOR guestagent?


ERROR: Exception:
Traceback (most recent call last):
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 245, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 76, in resolve
    collected = self.factory.collect_root_requirements(root_reqs)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 534, in collect_root_requirements
    reqs = list(
           ^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 490, in _make_requirements_from_install_req
    cand = self._make_base_candidate_from_link(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 207, in _make_base_candidate_from_link
    self._editable_candidate_cache[link] = EditableCandidate(
                                           ^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 315, in __init__
    super().__init__(
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
                ^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 325, in _prepare_distribution
    return self._factory.preparer.prepare_editable_requirement(self._ireq)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 696, in prepare_editable_requirement
    dist = _get_prepared_distribution(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/distributions/sdist.py", line 67, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/req/req_install.py", line 571, in prepare_metadata
    and self.supports_pyproject_editable()
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_internal/req/req_install.py", line 257, in supports_pyproject_editable
    return "build_editable" in self.pep517_backend._supported_features()
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 153, in _supported_features
    return self._call_hook('_supported_features', {})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 321, in _call_hook
    raise BackendUnavailable(data.get('traceback', ''))
pip._vendor.pyproject_hooks._impl.BackendUnavailable: Traceback (most recent call last):
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
    obj = import_module(mod_path)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/setuptools/__init__.py", line 22, in <module>
    import _distutils_hack.override  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/_distutils_hack/override.py", line 1, in <module>
    __import__('_distutils_hack').do_override()
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/_distutils_hack/__init__.py", line 89, in do_override
    ensure_local_distutils()
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/_distutils_hack/__init__.py", line 75, in ensure_local_distutils
    core = importlib.import_module('distutils.core')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 16, in <module>
    from .cmd import Command
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 17, in <module>
    from . import _modified, archive_util, dir_util, file_util, util
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/lib/python3.11/site-packages/setuptools/_distutils/_modified.py", line 10, in <module>
    from jaraco.functools import splat
  File "/usr/local/lib/python3.11/site-packages/setuptools/_vendor/jaraco/functools.py", line 8, in <module>
    import setuptools.extern.more_itertools
ModuleNotFoundError: No module named 'setuptools.extern'

mkvenv did not complete successfully:
Traceback (most recent call last):
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/scripts/mkvenv.py", line 965, in main
    ensure_group(
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/scripts/mkvenv.py", line 859, in ensure_group
    result = _do_ensure(to_install, online, wheels_dir)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/scripts/mkvenv.py", line 801, in _do_ensure
    pip_install(
  File "/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/scripts/mkvenv.py", line 689, in pip_install
    subprocess.run(
  File "/usr/local/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/build/pyvenv/bin/python3.11', '-m', 'pip', 'install', '--disable-pip-version-check', '-q', '--find-links', '/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python/wheels', '--no-build-isolation', '-e', '/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/python']' returned non-zero exit status 2.
===>  Script "configure" failed unexpectedly.
Please report the problem to bofh@FreeBSD.org [maintainer] and attach the
"/usr/ports/emulators/qemu/work-guestagent/qemu-11.0.0/config.log" including
the output of the failure of your make command. Also, it might be a good idea
to provide an overview of all packages installed on your system (e.g. a
/usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1

Stop.
make[1]: stopped making "/usr/ports/emulators/qemu/work-guestagent/.stage_done.qemu._usr_local" in /usr/ports/emulators/qemu
*** Error code 1

Stop.
make: stopped making "all" in /usr/ports/emulators/qemu
Comment 7 Herbert J. Skuhra 2026-06-07 19:08:14 UTC
This seems to be fixed by commit 2876eef9bde8a8d82b128f70feca931f815811ae.

But still: 

Why can't we use "USES=python:build" or "USES=python:build,test" instead of USES=python?