deb-mock/docs/Feature-forcearch.md
robojerk 4c0dcb2522
Some checks failed
Build Deb-Mock Package / build (push) Successful in 54s
Lint Code / Lint All Code (push) Failing after 1s
Test Deb-Mock Build / test (push) Failing after 36s
enhance: Add comprehensive .gitignore for deb-mock project
- Add mock-specific build artifacts (chroot/, mock-*, mockroot/)
- Include package build files (*.deb, *.changes, *.buildinfo)
- Add development tools (.coverage, .pytest_cache, .tox)
- Include system files (.DS_Store, Thumbs.db, ._*)
- Add temporary and backup files (*.tmp, *.bak, *.backup)
- Include local configuration overrides (config.local.yaml, .env.local)
- Add test artifacts and documentation builds
- Comprehensive coverage for Python build system project

This ensures build artifacts, chroot environments, and development
tools are properly ignored in version control.
2025-08-18 23:37:49 -07:00

1.5 KiB

layout title
default Feature forcearch

Forcearch

Previously you were able to only build for compatible architectures. I.e., you can build i386 package on x86_64 architecture. When you tried to build for incompatible architecture, you get this error:

$ mock -r fedora-28-ppc64le shell
ERROR: Cannot build target ppc64le on arch x86_64, because it is not listed in legal_host_arches ('ppc64le',)

Now, you can build for any architecture using a new option --force-arch ARCH. GH#120 You have to have installed package qemu-user-static, which is a new soft dependence. Try this:

$ sudo dnf install qemu-user-static
$ mock -r fedora-28-ppc64le --forcearch ppc64le shell

and you get the prompt in PPC64LE Fedora. You can do this for any architecture supported by QEMU. You got just INFO in the log stating:

INFO: Unable to build arch ppc64le natively on arch x86_64. Setting forcearch to use software emulation.

Note: Do not confuse --forcearch and --arch which are very different options.

⚠️ qemu-user-static emulates user space, but cannot emulate kernel space. If your package need some architecture specific kernel calls or e.g., is parsing output of lscpu then this feature is not for you. :(

This has been added to Mock 1.4.11.

Since version 2.0 you do not need to use --forcearch as Mock will detect that you want to use different than your native architecture and use qemu-user-static automatically.