Skip to content

Add QEMU system#32197

Draft
MementoRC wants to merge 16 commits intoconda-forge:mainfrom
MementoRC:qemu-system-clean
Draft

Add QEMU system#32197
MementoRC wants to merge 16 commits intoconda-forge:mainfrom
MementoRC:qemu-system-clean

Conversation

@MementoRC
Copy link
Contributor

Checklist

  • Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
  • License file is packaged (see here for an example).
  • Source is from official source.
  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
  • If static libraries are linked in, the license of the static library is packaged.
  • Package does not ship static libraries. If static libraries are needed, follow CFEP-18.
  • Build number is 0.
  • A tarball (url) rather than a repo (e.g. git_url) is used in your recipe (see here for more details).
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
  • When in trouble, please check our knowledge base documentation before pinging a team.

Provides QEMU 10.2.0 system emulators for conda-forge:
- qemu-system-common: shared data files, keymaps, icons
- qemu-system-tools: standalone utilities (qemu-img, qemu-ga, etc.)
- qemu-system-{aarch64,ppc64,riscv64}: architecture-specific emulators

Supports Linux, macOS (x64/arm64), and Windows platforms.
macOS patches:
- Fix xattr deprecation in meson.build
- Fix block_file-posix.c for macOS
- Fix CoreAudio availability

Windows patches:
- Add console subsystem for GUI apps
- Fix pyvenv configuration for MSYS2
- Fix MESONINTROSPECT debug
- Fix PYTHON variable in Makefile
- Fix tracetool path handling
- Accept system packages in mkvenv

Common:
- Set QEMU name for conda-forge builds
Modular helper structure:
- build_install_qemu.sh: Main build orchestration
- feature_profiles.sh: Configure flag profiles by category
- selective_tools.sh: Unified tool building (eliminates repeated patterns)
- windows_workarounds.sh: Windows-specific fixes (EDK2 decompression, pyvenv setup)
- desktop_assets.sh: Icon and desktop file installation

Supports selective tool builds via CONDA_QEMU_TOOLS environment variable.
@conda-forge-admin
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/qemu-system/recipe.yaml) and found it was in an excellent condition.

@github-actions
Copy link
Contributor

Hi! This is the staged-recipes linter and your PR looks excellent! 🚀

@MementoRC
Copy link
Contributor Author

@h-vetinari I finally got the VM emulators working with a cleaner build system (recipe v1 too. It seems that this should be merged into the qemu-execve, or a new single feedstock with a better name be created

@conda-forge-admin
Copy link
Contributor

conda-forge-admin commented Feb 13, 2026

Hi! This is the friendly automated conda-forge-linting service.

I failed to even lint the recipe, probably because of a conda-smithy bug 😢. This likely indicates a problem in your meta.yaml, though. To get a traceback to help figure out what's going on, install conda-smithy and run conda smithy recipe-lint --conda-forge . from the recipe directory. You can also examine the workflow logs for more detail.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/22002328304. Examine the logs at this URL for more detail.

@conda-forge-admin
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/qemu-system/recipe.yaml) and found it was in an excellent condition.

@h-vetinari
Copy link
Member

@h-vetinari I finally got the VM emulators working with a cleaner build system (recipe v1 too. It seems that this should be merged into the qemu-execve, or a new single feedstock with a better name be created

Wow, this is a big baby, and lots of things going on. I think you'll have to do a little write-up of how this is related to qemu-execve, and how the packaging should look in a perfect world (vs. with the constraints we have). Ideally in an issue on the qemu-execve feedstock.

Being able to emulate win-arm64 would be very cool of course, but downloading stuff on the fly is not great (I get that this is most likely a license issue). Also, why are you downloading stuff from alpine here? Doesn't that potentially cause problems due to different underlying libc?

I haven't looked deeply at this yet, those were just some quick observations from scrolling through. This will need some pretty thorough review, which will take a while (once the PR has converged, I'll ping some more people - I don't want them to get flooded by notifications).

@MementoRC
Copy link
Contributor Author

@h-vetinari Awesome! and thank you for the quick feedback (I feared an outright rejection ... lol)

  • qemu-windows-arm64: The images are huge, as in 4-8GB, also they are Evaluation and expire so not very viable for CF
  • alpine is for full VM emulation of a linux-arm64 on OSX/x86_64, kind of an add-on that we could simply remove
  • Now, the meat: qemu-execve is not optimal (actually we do not any firmware) and the sysroot is only needed for tests, it is included in this PR, the idea being we would archive the qemu-execve-feedstock and provide the correct qemu-execve in this recipe (I commented it for now)
  • The recipe also provides the non 'execve patched' qemu-user

Mainly my intent was to provide the full-QEMU package for you to make a decision as to which one you need for integration into conda-forge (we seem to have hit a snag on the qemu-execve current PR)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants