Qemu 11 build errors

While trying to build qemu 11 for the 1st time:
Code:
Extension error:
Could not import extension sphinx.builders.linkcheck (exception: No module named 'urllib3')
../docs/meson.build:39:6: ERROR: Problem encountered: Install a Python 3 version of python-sphinx and the readthedoc theme
A full log can be found at /usr/ports/emulators/qemu/work-default/qemu-11.0.0/build/meson-logs/meson-log.txt
ERROR: meson setup failed

In meson-log.txt:
Code:
stderr:
ld: error: undefined symbol: main
>>> referenced by crt1_s.S:66 (/usr/src/lib/csu/amd64/crt1_s.S:66)
>>>               /usr/lib/crt1.o:(_start)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
And more similar errors.

python311-3.11.15_2, meson 1.10.2 and py-sphinx 5.3.0 are installed.
What's urllib3?
What file is expected where and which package is it part of?
 
You have python, so if the package or port doesn't exist, you can install it with pip. (it does exist. in ports (since you're compiling from scratch), it's in net/py-urllib3)
 
I didn't notice the port name. Had to install py-urllib3 and a lot of required py-... ports after that.
I don't know how much more. Should this be done with pip? It seems like a dependency tree but only for python-based ports.
 
It's your choice. What's your system based on? Packages or ports? You can't (or rather shouldn't) mix them. Either be fully built on a repo, or all compiled locally. You want tool-chain coherency. In python it's essential, since the dependency version hell is real. It's why conda and venv exist: once you have several py-*, inevitably you'll run into version compatibility conflicts.

If your system is pkg based, and pkg update, you do "pkg install qemu", you don't compile. The freedom is yours, of course. I personally compile everything. Well, I boot-strap from pkg, then I build everything.

If you just want an easy "automatic" way to build a few things, use synth.
 
Just want to build qemu 11 to see what has changed since 9. I don't use Python direct;y, only as requirement of programs. Qemu is part of my custom FreeBSD version, included for Windows PC rescue purposes. Programming is C or shell.
 
Update your ports tree. Looks like a few minor changes to the port happened. You should have 11.0.0_1.


Dependencies should be automatically pulled in.

It builds fine for 15.0 on the build clusters.

The portstree can temporarily lose track of dependencies? That would conclude that I have to keep on updating it and wait until a moment where a 10-hour build finished without problems. That's not fair. 😫
I thought I solved it but it happens again in a clean system build. It starts with conflicting py-* build dependencies. Same files but of different port versions is a bad idea and not necessary for anything. The build of Qemu 11 has no business with already installed python ports as dependencies of other things. Just install it and overwrite any existing things. I don't care. The other packages are already created succesfully. The build output remains have no further purpose and can be ignored.

Python extensions should stop trying be be arbitrary because they don't have that position.
 
Found the problem: Had to deinstall py311-setuptools_scm7-7.1.0 because it covers files that don't comply with this qemu version. It expects a 9.* version. This was 5 build errors deep. I have no idea what the port does. It now does something different and Qemu can't handle it.

I don't want a system-wide python branch. It's only an interpreter that programs can use, optionally.
 
pkg-descr of py311-setuptools_scm7:

Handles managing your python package versions in scm metadata instead of
declaring them as the version argument or in a scm managed file

Is this some sort of python insider war?
 
Still not finding the true dependencies of Qemu 11. Current compiler error in red:
(I got here a few times but I don't know what's the problem)

Code:
  File "/usr/ports/emulators/qemu/work-default/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-default/qemu-11.0.0/python/scripts/mkvenv.py", line 965, in main
    ensure_group(
  File "/usr/ports/emulators/qemu/work-default/qemu-11.0.0/python/scripts/mkvenv.py", line 859, in ensure_group
    result = _do_ensure(to_install, online, wheels_dir)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

And which package is module "setuptools.extern" part of? I can't find anything that looks like it.
Is there any way to build and install all dependencies of 1 port and ignore version conflicts caused by already existing files with identical names, installed by something else for any reason?
 
Back
Top