On Mon, 19 Oct 2026 14:44:11 +0100 Stuart Henderson <[email protected]> wrote:
> On 2026/10/19 12:51, Neth Iafin wrote: > > > Is there some hope to get some of the big set of patches merged > > > upstream? > > > > > > Some #ifdef __OpenBSD__ patches look like they could use a check > > > for the specific thing (at least xattrs, not sure if there are > > > others) and conditioning on that instead of OpenBSD/not. > > > > I doubt much will be merged upstream. Many updates we have can > > technically run on other OSes (%gs stubs won't be built on Linux > > because %gs is correctly set, SIGUSR1 will work but less optimally, > > etc). However I picked an approach where everything that is done > > for OpenBSD is just marked as OpenBSD only. I did that purely to > > simplify my life while I was working on it and clearly mark the > > changes. > > > > When I was talking to Wine maintainers a month ago, they were > > hesitant to accept even patching Wine so it compiles for OpenBSD, > > mostly because it's another OS they will have to support and keep > > operational, while the %gs stub fix is something they definitely > > cannot take upstream. They are very hesitant to take anything that > > is changing the "emulated" application code. > > > > The xattr change was a recent addition from Fabien, I suspect > > mostly to support the Mono installer that creates a lot of symlinks > > for different framework versions. I guess it can be taken upstream > > with `#if !defined(HAVE_SYS_XATTR_H) && > > !defined(HAVE_SYS_EXTATTR_H)`, among other places (server/fd.c) > > that need this change. > > > > In short - merging upstream is not a current goal, at least for me. > > There are still some stability issues, especially with very > > demanding 3d games. I'll see where we stand in a few months. > > > I'm concerned about this. Really need some information about how > > > to generate these, ideally an automated method that can run from > > > llvm/clang source tarballs as part of the emulators/wine build so > > > that wine doesn't block every lang/clang update, but if not then > > > at least something that can run from a make target. > > > > I'll leave the details to Fabien/Thomas, but nothing is actually > > generated. The llvm package strips out clang's freestanding headers > > (float.h inttypes.h iso646.h limits.h stdarg.h stdbool.h stddef.h > > stdint.h) and we need them for Windows builds. They are copied > > unchanged from clang/lib/Headers at the llvmorg tag that matches > > MODCLANG_VERSION, so it can be automated. It does mean that we have > > to download ~150 MB distfile for those 8 header files though. > > remember that devel/llvm is not set in stone. > > here are two patches, for wine, and for devel/llvm, that make this > significantly less annoying to deal with. my build is still running > but I think it should work. > > another way to do it: rather than completely removing the stripped-out > headers, devel/llvm could install them under a different dir and > include in packages. This looks like what I had in mind; ok thfr@ for this > > > --- Makefile.orig Mon Oct 19 14:18:12 2026 > +++ Makefile Mon Oct 19 14:43:16 2026 > @@ -27,19 +27,14 @@ WANTLIB += lib/inotify/inotify lib/libpcap/pcap > # loaded with dlopen() > WANTLIB += SDL2 cups dbus-1 gnutls netapi vulkan xkbregistry > > -# keep this in sync with MODCLANG_VERSION > -# source for updates/new releases: > https://thfr.gothub.org/wine-clang-pe-headers -CLANG_PE_HEADERS > = 22.1.8 -DISTFILES.clang-pe-headers = > wine-clang-pe-headers-${CLANG_PE_HEADERS}.tar.gz > -SITES.clang-pe-headers = https://thfr.info/distfiles/ - > SITES = > https://dl.winehq.org/wine/source/11.x/ EXTRACT_SUFX = > .tar.xz > MODULES = lang/clang > > BUILD_DEPENDS = devel/bison \ > - devel/nasm > + devel/nasm \ > + > ${_MODCLANG_BUILD_DEPENDS},headerextract:patch RUN_DEPENDS = > multimedia/gstreamer1/libav \ > multimedia/gstreamer1/plugins-bad \ > multimedia/gstreamer1/plugins-good \ @@ -156,9 +151,9 @@ > SUBST_VARS+= CLANG_PE_RESOURCE MODCLANG_VERSION > pre-configure: > ${INSTALL_DATA_DIR} ${CLANG_PE_RESOURCE}/include > - cp -R ${CLANG_RESOURCE}/include/. > ${CLANG_PE_RESOURCE}/include/ > - cp ${WRKDIR}/wine-clang-pe-headers-${CLANG_PE_HEADERS}/*.h \ > + cp ${WRKDIR}/devel/llvm/*/*/clang/lib/Headers/*.h \ > ${CLANG_PE_RESOURCE}/include/ > + cp -R ${CLANG_RESOURCE}/include/. > ${CLANG_PE_RESOURCE}/include/ ln -sfh ${CLANG_RESOURCE}/lib > ${CLANG_PE_RESOURCE}/lib ${SUBST_PROGRAM} ${FILESDIR}/clang-pe > ${WRKDIR}/bin/clang-pe > > > Index: Makefile.inc > =================================================================== > RCS file: /cvs/ports/devel/llvm/Makefile.inc,v > diff -u -p -r1.35 Makefile.inc > --- Makefile.inc 20 Sep 2026 14:25:09 -0000 1.35 > +++ Makefile.inc 19 Oct 2026 13:35:06 -0000 > @@ -97,9 +97,19 @@ COMPILER = base-clang ports-gcc > > MODULES += devel/cmake > > +# internal use for emulators/wine; reduce extraction size > +FLAVORS= headerextract > +FLAVOR?= > + > +.if ${FLAVOR} == headerextract > +PATCH_LIST= > +EXTRACT_CASES += llvm*.tar.xz) \ > + xz -T${MAKE_JOBS} -d <${FULLDISTDIR}/$$archive | ${TAR} -xf - -- > */clang/lib/Headers;; +.else > BUILD_DEPENDS += devel/swig \ > textproc/py-sphinx \ > textproc/py-recommonmark > +.endif > > CONFIGURE_STYLE += cmake > CONFIGURE_ARGS += \ > @@ -151,7 +161,8 @@ CXXFLAGS-powerpc = -fno-ret-protector > CXXFLAGS-mips64 += -mxgot > CXXFLAGS-mips64el += -mxgot > > -CXXFLAGS += ${CXXFLAGS-${MACHINE_ARCH}} > +CXXFLAGS += ${CXXFLAGS-${MACHINE_ARCH}} \ > + -D_LIBCPP_USE_LOWER_DEQUE_BLOCK_SIZE > > ALL_TARGET = all docs-llvm-man docs-clang-man >
