On Sun, 2026-01-25 at 23:05 +0000, Sam James wrote: > James Le Cuirot <[email protected]> writes: > > > We do not support installing Wine for other architectures, so we assume > > that Wine can do its own CPU emulation. > > This has been on my mind for a while as something I'd love to try :) > > > > > The sandbox cannot handle Wine and emits a warning even if you allow all > > writes, so it needs to be disabled. > > > > Unlike Linux shared libraries, Windows DLLs are placed in bin rather > > than lib, so we need to include that in WINEPATH. lib has been included > > too, just in case. > > > > binfmt_misc supports Windows binaries, but there is no point in > > supporting that combination here, as Wine would need to be installed > > locally regardless. This cannot be extended into a container like it can > > with QEMU. > > "locally" here means inside the sysroot?
No, it's BROOT, but I was contrasting this with QEMU, which can be used inside a container even when it has no knowledge of QEMU whatsoever. > > This has been tested with i686-w64-mingw32 from crossdev against > > dev-vcs/git[iconv] after dropping the iconv cross patch. > > > > Signed-off-by: James Le Cuirot <[email protected]> > > --- > > Looks ok but see if wine maintainers have input. > > > eclass/sysroot.eclass | 13 ++++++++++++- > > 1 file changed, 12 insertions(+), 1 deletion(-) > > > > diff --git a/eclass/sysroot.eclass b/eclass/sysroot.eclass > > index 0fae642bf593c..dbb0103f6e0e4 100644 > > --- a/eclass/sysroot.eclass > > +++ b/eclass/sysroot.eclass > > @@ -80,7 +80,18 @@ sysroot_make_run_prefixed() { > > fi > > fi > > > > - if [[ ${QEMU_ARCH} == $(qemu_arch "${CBUILD}") ]]; then > > + if [[ ${CHOST} = *-mingw32 ]]; then > > + if ! type -P wine >/dev/null; then > > + einfo "Wine not found. Continuing without ${SCRIPT##*/} > > wrapper." > > + return 1 > > + fi > > + > > + # Assume that Wine can do its own CPU emulation. > > + install -m0755 /dev/stdin "${SCRIPT}" <<-EOF || die > > Does - not work instead of /dev/stdin? Nope! > > + #!/bin/sh > > + SANDBOX_ON=0 LD_PRELOAD= > > WINEPATH="\${WINEPATH}\${WINEPATH+;}${MYEROOT}/bin;${MYEROOT}/usr/bin;${MYEROOT}/$(get_libdir);${MYEROOT}/usr/$(get_libdir)" > > exec wine "\${@}" > > Ah, Wine delimits with ;? Yes, presumably because of C:\ and such. > > + EOF > > + elif [[ ${QEMU_ARCH} == $(qemu_arch "${CBUILD}") ]]; then > > # glibc: ld.so is a symlink, ldd is a binary. > > # musl: ld.so doesn't exist, ldd is a symlink. > > local DLINKER candidate
signature.asc
Description: This is a digitally signed message part
