public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2023-05-02 16:56 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2023-05-02 16:56 UTC (permalink / raw
  To: gentoo-commits

commit:     6e58c4bee50fb1e19375cf3fbf2a80e4db0a052c
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue May  2 15:55:02 2023 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue May  2 16:56:17 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6e58c4be

app-emulation/wine-proton: fix 7.0.6 build with mingw64 11.0.0

Mostly a dirty/quick hack, exact cause leading to this happening
with wine-proton-7(32bit) but not 8 nor 7(64bit) haven't been fully
dug into.

Had tested wine-vanilla-7.0.2 with 11.0.0 and initially thought
proton-7 was fine too, but unlike vanilla it defines __fastfail.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/wine-proton-7.0.6-mingw64-11.0.0.patch     | 20 ++++++++++++++++++++
 app-emulation/wine-proton/wine-proton-7.0.6.ebuild   |  1 +
 2 files changed, 21 insertions(+)

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch b/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch
new file mode 100644
index 000000000000..54ecc49c7235
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch
@@ -0,0 +1,20 @@
+Hack: this does not actually need stdarg.h, but including it ensures
+that _mingw.h will be loaded before the rest of Wine's winnt.h avoiding
+issues with mingw64-runtime-11.0.0, e.g.:
+
+    _mingw.h:602:60: error: redefinition of ‘__fastfail’
+    make[1]: *** [Makefile:5900: dlls/advapi32/crypt_des.cross.o] Error 1
+
+(other crypt_*.c happen to include stdarg.h first and don't fail, but this
+one does not, same for several other files in dlls/)
+
+Not an issue with non-proton Wine 7.0 as Wine did not define __fastfail
+until ~wine-7.10. Wine 8 does define it but does not seem to be a problem
+there (perhaps due to different header layout). A more "right" fix would
+be welcome, but given Proton-7 seems EOL it is not judged important.
+--- a/include/winnt.h
++++ b/include/winnt.h
+@@ -32,2 +32,3 @@
+ #include <string.h>
++#include <stdarg.h>
+ #endif

diff --git a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild b/app-emulation/wine-proton/wine-proton-7.0.6.ebuild
index 2c927df19297..0479380661a8 100644
--- a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild
+++ b/app-emulation/wine-proton/wine-proton-7.0.6.ebuild
@@ -117,6 +117,7 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
 	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
 	"${FILESDIR}"/${PN}-7.0.4-unwind.patch
+	"${FILESDIR}"/${PN}-7.0.6-mingw64-11.0.0.patch
 )
 
 pkg_pretend() {


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2025-02-14  5:28 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2025-02-14  5:28 UTC (permalink / raw
  To: gentoo-commits

commit:     0ecfdb0d902dd0e8cc3e292063f9a8160b6a14da
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 14 03:08:57 2025 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Feb 14 05:27:34 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0ecfdb0d

app-emulation/wine-proton: drop 7.0.6 (last of 7.x)

Haven't tried this old version but, like the others, this is likely
broken with mingw binutils-2.44 and backporting the fix for that only
applies to >=wine-8 as-is. Seems time to drop support for this one.
There is no indication that Valve will ever release a (fixed) new
version of this branch.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 app-emulation/wine-proton/Manifest                 |   1 -
 .../wine-proton-7.0.4-restore-menubuilder.patch    |  14 -
 .../files/wine-proton-7.0.4-unwind.patch           |  40 ---
 .../files/wine-proton-7.0.6-mingw64-11.0.0.patch   |  20 --
 .../files/wine-proton-7.0.6-vulkan-libm.patch      |  12 -
 app-emulation/wine-proton/metadata.xml             |   1 -
 app-emulation/wine-proton/wine-proton-7.0.6.ebuild | 390 ---------------------
 7 files changed, 478 deletions(-)

diff --git a/app-emulation/wine-proton/Manifest b/app-emulation/wine-proton/Manifest
index c43bcc91bf2c..ac9a8becba97 100644
--- a/app-emulation/wine-proton/Manifest
+++ b/app-emulation/wine-proton/Manifest
@@ -1,4 +1,3 @@
-DIST proton-wine-7.0-6.tar.gz 45780326 BLAKE2B f140fcfdd1a47904c34a49d0795fa3326d7cf0d3fac8d6c2ef2a4926181a46223f43a2d1ca96c543e800c8c46b2a3cc51ae306a029d68a42608876e869e177d5 SHA512 793bbe2b23042301a1b518717d78cfff01eaffa0388883d010659a45779b9136d33cfac63f0c3fbb1e458953a954b423eb70ac4fa87633352267db890ceb2fef
 DIST proton-wine-8.0-5c.tar.gz 48710071 BLAKE2B 99627baea6fb3d51231aa1e75a2734c3c1baba88326baf15b3d421d57a00472d25ba51c2140b51152c8aeae7dd240d3d77bb0d8835aa7eb3b745a51be120f8bb SHA512 0cf98d4e67866e55cc8cd5ea8da0d76aee8e37b130b3cbca604083c913e98ddf9038ecd6f9761d2e11443e282b372977400e251456c6d40e1365210c7578234d
 DIST proton-wine-9.0-2.tar.gz 49125171 BLAKE2B ac1e4a63f94689bc4fcc6ab4e2d12cfc214f54181515434ab950d8975d131a5f6333b1e6cb9b67eda61cf3e652e57e27e60ba3cff6a6ac403b07178f382f7e25 SHA512 82efee3100da80f650229d1abf3df4896ab71af4a79c6e5cf03aa646c56f435daf07c6f084a3264067cf90ce509102e3d7ee6d4bf7d0650baf645b5ece08cc7c
 DIST proton-wine-9.0-4.tar.gz 49339922 BLAKE2B 914ca093ac288c26400e4eeb2ea33943fc8ad89052aa7c97b5c44286dc175745720455d65163baa90b0d0271eb8028549315a3e8095b91947db2bd96c6fc4852 SHA512 e061f0a55b25493f67ca3add8c7e41020bb57cb15e8fb4fdf3c23f0cab2d00b703c90fbcf0dc1ca8b67e1726a76cee910e9ea6f567c88bc6c520dd6c9dbb75e9

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch
deleted file mode 100644
index 760340791060..000000000000
--- a/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Without Steam there is no launcher by default, users with more custom
-setups may not need this but others will want access to desktop entries.
---- a/configure.ac
-+++ b/configure.ac
-@@ -3683,2 +3683,3 @@
- WINE_CONFIG_MAKEFILE(programs/winefile)
-+WINE_CONFIG_MAKEFILE(programs/winemenubuilder)
- WINE_CONFIG_MAKEFILE(programs/winemine)
---- a/loader/wine.inf.in
-+++ b/loader/wine.inf.in
-@@ -5630,2 +5630,3 @@
- [Services]
-+HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
- HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch
deleted file mode 100644
index 372def52ba0c..000000000000
--- a/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fix build with llvm-libunwind, and also fix for non-llvm libunwind
-when using clang+bfd given clang doesn't have _Unwind_Find_FDE in
-its rtlib and expects it from llvm-libunwind.
-
-The _CONFIG_H_ check is for <llvm-libunwind-15 (adds _VERSION).
---- a/dlls/ntdll/unix/signal_x86_64.c
-+++ b/dlls/ntdll/unix/signal_x86_64.c
-@@ -646,7 +646,9 @@
-     unsigned int cie_offset;
- };
- 
-+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
- extern const struct dwarf_fde *_Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
-+#endif
- 
- static unsigned char dwarf_get_u1( const unsigned char **p )
- {
-@@ -1368,7 +1370,7 @@
-     unw_proc_info_t info;
-     int rc;
- 
--#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
-     rc = unw_getcontext( &unw_context );
-     if (rc == UNW_ESUCCESS)
-         rc = unw_init_local( &cursor, &unw_context );
-@@ -1491,11 +1493,13 @@
- NTSTATUS CDECL unwind_builtin_dll( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
- {
-     struct dwarf_eh_bases bases;
-+#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
-     const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context->Rip - 1), &bases );
- 
-     if (fde)
-         return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde,
-                                      &bases, &dispatch->LanguageHandler, &dispatch->HandlerData );
-+#endif
- #ifdef HAVE_LIBUNWIND
-     return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context,
-                                      &dispatch->LanguageHandler, &dispatch->HandlerData );

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch b/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch
deleted file mode 100644
index 54ecc49c7235..000000000000
--- a/app-emulation/wine-proton/files/wine-proton-7.0.6-mingw64-11.0.0.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Hack: this does not actually need stdarg.h, but including it ensures
-that _mingw.h will be loaded before the rest of Wine's winnt.h avoiding
-issues with mingw64-runtime-11.0.0, e.g.:
-
-    _mingw.h:602:60: error: redefinition of ‘__fastfail’
-    make[1]: *** [Makefile:5900: dlls/advapi32/crypt_des.cross.o] Error 1
-
-(other crypt_*.c happen to include stdarg.h first and don't fail, but this
-one does not, same for several other files in dlls/)
-
-Not an issue with non-proton Wine 7.0 as Wine did not define __fastfail
-until ~wine-7.10. Wine 8 does define it but does not seem to be a problem
-there (perhaps due to different header layout). A more "right" fix would
-be welcome, but given Proton-7 seems EOL it is not judged important.
---- a/include/winnt.h
-+++ b/include/winnt.h
-@@ -32,2 +32,3 @@
- #include <string.h>
-+#include <stdarg.h>
- #endif

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch b/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch
deleted file mode 100644
index b81778fb957c..000000000000
--- a/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Valve's patches add use of "ceil" without using libm, it works
-by accident with -O2 but fails with -Os.
-
-ld: dlls/winevulkan/vulkan.o: in function `fshack_vk_queue_present':
-vulkan.c:(.text+0x12f46): undefined reference to `ceil'
---- a/dlls/winevulkan/Makefile.in
-+++ b/dlls/winevulkan/Makefile.in
-@@ -4,3 +4,3 @@
- IMPORTS   = user32 gdi32 advapi32 setupapi win32u
--EXTRALIBS = $(PTHREAD_LIBS)
-+EXTRALIBS = -lm $(PTHREAD_LIBS)
- 

diff --git a/app-emulation/wine-proton/metadata.xml b/app-emulation/wine-proton/metadata.xml
index 3eb642f0a513..4e53c42efe00 100644
--- a/app-emulation/wine-proton/metadata.xml
+++ b/app-emulation/wine-proton/metadata.xml
@@ -20,7 +20,6 @@
 		<flag name="osmesa">Enable off-screen rendering (OpenGL in bitmaps) support</flag>
 		<flag name="perl">Install helpers that require perl (winedump/winemaker)</flag>
 		<flag name="sdl">Enable gamepad support using <pkg>media-libs/libsdl2</pkg></flag>
-		<flag name="vkd3d">Enable DirectX 12 support using <pkg>app-emulation/vkd3d</pkg></flag>
 		<flag name="wow64">
 			Enable running 32bit applications without 32bit ELF
 			multilib by mapping to 64bit calls (experimental,

diff --git a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild b/app-emulation/wine-proton/wine-proton-7.0.6.ebuild
deleted file mode 100644
index c4630cc016e8..000000000000
--- a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild
+++ /dev/null
@@ -1,390 +0,0 @@
-# Copyright 2022-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-MULTILIB_COMPAT=( abi_x86_{32,64} )
-PYTHON_COMPAT=( python3_{10..13} )
-inherit autotools flag-o-matic multilib multilib-build prefix
-inherit python-any-r1 readme.gentoo-r1 toolchain-funcs wrapper
-
-WINE_GECKO=2.47.3
-WINE_MONO=7.4.0
-WINE_PV=$(ver_rs 2 -)
-
-if [[ ${PV} == 9999 ]]; then
-	inherit git-r3
-	EGIT_REPO_URI="https://github.com/ValveSoftware/wine.git"
-	EGIT_BRANCH="bleeding-edge"
-else
-	SRC_URI="https://github.com/ValveSoftware/wine/archive/refs/tags/proton-wine-${WINE_PV}.tar.gz"
-	S="${WORKDIR}/${PN}-wine-${WINE_PV}"
-	KEYWORDS="-* amd64 ~x86"
-fi
-
-DESCRIPTION="Valve Software's fork of Wine"
-HOMEPAGE="https://github.com/ValveSoftware/wine/"
-
-LICENSE="LGPL-2.1+ BSD-2 IJG MIT ZLIB gsm libpng2 libtiff"
-SLOT="${PV}"
-IUSE="
-	+abi_x86_32 +abi_x86_64 +alsa crossdev-mingw custom-cflags debug
-	+fontconfig +gecko +gstreamer llvm-libunwind +mono nls openal
-	osmesa perl pulseaudio +sdl selinux +ssl udev udisks +unwind usb
-	v4l +vkd3d +xcomposite xinerama
-"
-
-# tests are non-trivial to run, can hang easily, don't play well with
-# sandbox, and several need real opengl/vulkan or network access
-RESTRICT="test"
-
-# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked
-WINE_DLOPEN_DEPEND="
-	dev-libs/libgcrypt:=[${MULTILIB_USEDEP}]
-	media-libs/freetype[${MULTILIB_USEDEP}]
-	media-libs/libglvnd[X,${MULTILIB_USEDEP}]
-	media-libs/vulkan-loader[X,${MULTILIB_USEDEP}]
-	x11-libs/libXcursor[${MULTILIB_USEDEP}]
-	x11-libs/libXfixes[${MULTILIB_USEDEP}]
-	x11-libs/libXi[${MULTILIB_USEDEP}]
-	x11-libs/libXrandr[${MULTILIB_USEDEP}]
-	x11-libs/libXrender[${MULTILIB_USEDEP}]
-	x11-libs/libXxf86vm[${MULTILIB_USEDEP}]
-	fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
-	osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] )
-	sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] )
-	ssl? (
-		dev-libs/gmp:=[${MULTILIB_USEDEP}]
-		net-libs/gnutls:=[${MULTILIB_USEDEP}]
-	)
-	udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
-	v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
-	xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] )
-	xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] )
-"
-WINE_COMMON_DEPEND="
-	${WINE_DLOPEN_DEPEND}
-	x11-libs/libX11[${MULTILIB_USEDEP}]
-	x11-libs/libXext[${MULTILIB_USEDEP}]
-	alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
-	gstreamer? (
-		dev-libs/glib:2[${MULTILIB_USEDEP}]
-		media-libs/gst-plugins-base:1.0[opengl,${MULTILIB_USEDEP}]
-		media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
-	)
-	openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
-	pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
-	udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
-	unwind? (
-		llvm-libunwind? ( llvm-runtimes/libunwind[${MULTILIB_USEDEP}] )
-		!llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] )
-	)
-	usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] )
-	vkd3d? ( >=app-emulation/vkd3d-1.2[${MULTILIB_USEDEP}] )
-"
-RDEPEND="
-	${WINE_COMMON_DEPEND}
-	app-emulation/wine-desktop-common
-	gecko? ( app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] )
-	gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] )
-	mono? ( app-emulation/wine-mono:${WINE_MONO} )
-	perl? (
-		dev-lang/perl
-		dev-perl/XML-LibXML
-	)
-	selinux? ( sec-policy/selinux-wine )
-	udisks? ( sys-fs/udisks:2 )
-"
-DEPEND="
-	${WINE_COMMON_DEPEND}
-	sys-kernel/linux-headers
-	x11-base/xorg-proto
-"
-BDEPEND="
-	${PYTHON_DEPS}
-	dev-lang/perl
-	sys-devel/binutils
-	sys-devel/bison
-	sys-devel/flex
-	virtual/pkgconfig
-	nls? ( sys-devel/gettext )
-	!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )
-"
-IDEPEND=">=app-eselect/eselect-wine-2"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
-	__clear_cache # unused on amd64+x86 (bug #900332)
-	res_getservers # false positive
-)
-QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-7.0.4-musl.patch
-	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
-	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
-	"${FILESDIR}"/${PN}-7.0.4-unwind.patch
-	"${FILESDIR}"/${PN}-7.0.6-mingw64-11.0.0.patch
-	"${FILESDIR}"/${PN}-7.0.6-vulkan-libm.patch
-)
-
-pkg_pretend() {
-	[[ ${MERGE_TYPE} == binary ]] && return
-
-	if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then
-		local mingw=-w64-mingw32
-		for mingw in $(usev abi_x86_64 x86_64${mingw}) $(usev abi_x86_32 i686${mingw}); do
-			if ! type -P ${mingw}-gcc >/dev/null; then
-				eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain"
-				eerror "yourself by installing sys-devel/crossdev then running:"
-				eerror
-				eerror "    crossdev --target ${mingw}"
-				eerror
-				eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw"
-				eerror "--> Note that mingw builds are default for ${PN} even without this USE."
-				die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found"
-			fi
-		done
-	fi
-}
-
-src_prepare() {
-	# sanity check, bumping these has a history of oversights
-	local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \
-		dlls/appwiz.cpl/addons.c || die)
-	if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then
-		local gmfatal=
-		[[ ${PV} == *9999 ]] && gmfatal=nonfatal
-		${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)"
-	fi
-
-	default
-
-	if tc-is-clang; then
-		# -mabi=ms was ignored by <clang:16 then turned error in :17
-		# and it still gets used in install phase despite --with-mingw,
-		# drop as a quick fix for now which hopefully should be safe
-		sed -i '/MSVCRTFLAGS=/s/-mabi=ms//' configure.ac || die
-	fi
-
-	# ensure .desktop calls this variant + slot
-	sed -i "/^Exec=/s/wine /${P} /" loader/wine.desktop || die
-
-	# similarly to staging, append to `wine --version` for identification
-	sed -i "s/wine_build[^1]*1/& (Proton-${WINE_PV})/" configure.ac || die
-
-	# datadir is not where wine-mono is installed, so prefixy alternate paths
-	hprefixify -w /get_mono_path/ dlls/mscoree/metahost.c
-
-	# always update for patches (including user's wrt #432348)
-	eautoreconf
-	tools/make_requests || die # perl
-	dlls/winevulkan/make_vulkan -x vk.xml || die # python, needed for proton's
-	# tip: if need more for user patches, with portage can e.g. do
-	# echo "post_src_prepare() { tools/make_specfiles || die; }" \
-	#     > /etc/portage/env/app-emulation/wine-proton
-}
-
-src_configure() {
-	WINE_PREFIX=/usr/lib/${P}
-	WINE_DATADIR=/usr/share/${P}
-
-	local conf=(
-		--prefix="${EPREFIX}"${WINE_PREFIX}
-		--datadir="${EPREFIX}"${WINE_DATADIR}
-		--includedir="${EPREFIX}"/usr/include/${P}
-		--libdir="${EPREFIX}"${WINE_PREFIX}
-		--mandir="${EPREFIX}"${WINE_DATADIR}/man
-
-		# upstream (Valve) doesn't really support misc configurations (e.g.
-		# adds vulkan code not always guarded by --with-vulkan), so force
-		# some major options that are typically needed by games either way
-		--with-freetype
-		--with-mingw # needed by many, notably Blizzard titles
-		--with-opengl
-		--with-vulkan
-		--with-x
-
-		# ...and disable most options unimportant for games and unused by
-		# Proton rather than expose as volatile USEs with little support
-		--without-capi
-		--without-cups
-		--without-gphoto
-		--without-gssapi
-		--without-krb5
-		--without-ldap
-		--without-netapi
-		--without-opencl
-		--without-pcap
-		--without-sane
-		ac_cv_lib_soname_odbc=
-
-		$(use_enable gecko mshtml)
-		$(use_enable mono mscoree)
-		--disable-tests
-		$(use_with alsa)
-		$(use_with fontconfig)
-		$(use_with gstreamer)
-		$(use_with nls gettext)
-		$(use_with openal)
-		$(use_with osmesa)
-		--without-oss # media-sound/oss is not packaged (OSSv4)
-		$(use_with pulseaudio pulse)
-		$(use_with sdl)
-		$(use_with ssl gnutls)
-		$(use_with udev)
-		$(use_with udisks dbus) # dbus is only used for udisks
-		$(use_with unwind)
-		$(use_with usb)
-		$(use_with v4l v4l2)
-		$(use_with vkd3d)
-		$(use_with xcomposite)
-		$(use_with xinerama)
-	)
-
-	tc-ld-force-bfd # builds with non-bfd but broken at runtime (bug #867097)
-	filter-lto # build failure
-	filter-flags -Wl,--gc-sections # runtime issues (bug #931329)
-	use custom-cflags || strip-flags # can break in obscure ways at runtime
-	use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH}
-
-	# broken with gcc-15's c23 default (TODO: try w/o occasionally, bug #943849)
-	append-cflags -std=gnu17
-
-	# temporary workaround for tc-ld-force-bfd not yet enforcing with mold
-	# https://github.com/gentoo/gentoo/pull/28355
-	[[ $($(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) == mold* ]] &&
-		append-ldflags -fuse-ld=bfd
-
-	# >=wine-proton-9 has proper fixes and builds with gcc-14, but would
-	# rather not have to worry about fixing old branches (bug #924486)
-	append-cflags $(test-flags-CC -Wno-error=incompatible-pointer-types)
-
-	# build using upstream's way (--with-wine64)
-	# order matters: configure+compile 64->32, install 32->64
-	local -i bits
-	for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do
-	(
-		einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..."
-
-		mkdir ../build${bits} || die
-		cd ../build${bits} || die
-
-		# CROSSCC_amd64/x86 are unused by Wine, but recognized here for users
-		if (( bits == 64 )); then
-			: "${CROSSCC:=${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}}"
-			conf+=( --enable-win64 )
-		elif use amd64; then
-			conf+=(
-				$(usev abi_x86_64 --with-wine64=../build64)
-				TARGETFLAGS=-m32 # for widl
-			)
-			# _setup is optional, but use over Wine's auto-detect (+#472038)
-			multilib_toolchain_setup x86
-		fi
-		: "${CROSSCC:=${CROSSCC_x86:-i686-w64-mingw32-gcc}}"
-
-		# use *FLAGS for mingw, but strip unsupported (e.g. --hash-style=gnu)
-		: "${CROSSCFLAGS:=$(
-			filter-flags '-fstack-protector*' #870136
-			filter-flags '-mfunction-return=thunk*' #878849
-
-			# some bashrc-mv users tend to do CFLAGS="${LDFLAGS}" and then
-			# strip-unsupported-flags miss these during compile-only tests
-			# (primarily done for 23.0 profiles' -z, not full coverage)
-			filter-flags '-Wl,-z,*'
-
-			# -mavx with mingw-gcc has a history of obscure issues and
-			# disabling is seen as safer, e.g. `WINEARCH=win32 winecfg`
-			# crashes with -march=skylake >=wine-8.10, similar issues with
-			# znver4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110273
-			append-cflags -mno-avx #912268
-
-			CC=${CROSSCC} test-flags-CC ${CFLAGS:--O2})}"
-		: "${CROSSLDFLAGS:=$(
-			filter-flags '-fuse-ld=*'
-			CC=${CROSSCC} test-flags-CCLD ${LDFLAGS})}"
-		export CROSS{CC,{C,LD}FLAGS}
-
-		ECONF_SOURCE=${S} econf "${conf[@]}"
-	)
-	done
-}
-
-src_compile() {
-	use abi_x86_64 && emake -C ../build64 # do first
-	use abi_x86_32 && emake -C ../build32
-}
-
-src_install() {
-	use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install
-	use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last
-
-	# symlink for plain 'wine' and install its man pages if 64bit-only #404331
-	if use abi_x86_64 && use !abi_x86_32; then
-		dosym wine64 ${WINE_PREFIX}/bin/wine
-		dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader
-		local man
-		for man in ../build64/loader/wine.*man; do
-			: "${man##*/wine}"
-			: "${_%.*}"
-			insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1
-			newins ${man} wine.1
-		done
-	fi
-
-	use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \
-		"${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die
-
-	# create variant wrappers for eselect-wine
-	local bin
-	for bin in "${ED}"${WINE_PREFIX}/bin/*; do
-		make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}"
-	done
-
-	# don't let portage try to strip PE files with the wrong
-	# strip executable and instead handle it here (saves ~120MB)
-	dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows
-	use debug ||
-		find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \
-			-exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + || die
-
-	dodoc ANNOUNCE AUTHORS README* documentation/README*
-	readme.gentoo_create_doc
-}
-
-pkg_preinst() {
-	has_version ${CATEGORY}/${PN} && WINE_HAD_ANY_SLOT=
-}
-
-pkg_postinst() {
-	[[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog
-
-	if use abi_x86_32; then
-		# difficult to tell what is needed from here, but try to warn
-		if has_version 'x11-drivers/nvidia-drivers'; then
-			if has_version 'x11-drivers/nvidia-drivers[-abi_x86_32]'; then
-				ewarn "x11-drivers/nvidia-drivers is installed but is built without"
-				ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit"
-				ewarn "applications under ${PN} will likely not be usable."
-				ewarn "Multi-card setups may need this on media-libs/mesa as well."
-			fi
-		elif has_version 'media-libs/mesa[-abi_x86_32]'; then
-			ewarn "media-libs/mesa seems to be in use but is built without"
-			ewarn "USE=abi_x86_32 (ABI_X86=32), hardware acceleration with 32bit"
-			ewarn "applications under ${PN} will likely not be usable."
-		fi
-	fi
-
-	ewarn
-	ewarn "Warning: please consider ${PN} provided as-is without real"
-	ewarn "support. Upstream does not want bug reports unless can reproduce"
-	ewarn "with real Steam+Proton, and Gentoo is largely unable to help"
-	ewarn "unless it is a build/packaging issue. So, if need support, try"
-	ewarn "normal Wine or Proton instead."
-
-	eselect wine update --if-unset || die
-}
-
-pkg_postrm() {
-	eselect wine update --if-unset || die
-}


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2023-12-01  8:04 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2023-12-01  8:04 UTC (permalink / raw
  To: gentoo-commits

commit:     04ccd546f0e94e09c786fe95c85c525d7a4d841d
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  1 07:13:25 2023 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Dec  1 08:03:30 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=04ccd546

app-emulation/wine-proton: update winemenubuilder revert

Valve (partially) reverted this in 8.0.4, they now build
winemenubuilder but do not seem to run the service.

Somehow the patch was still applying and in and 8.0.9999 it causes a
build failure due to a misinsertion. It was wrong for 8.0.4 too but
was not doing any harm.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../wine-proton/files/wine-proton-8.0.4-restore-menubuilder.patch | 8 ++++++++
 app-emulation/wine-proton/wine-proton-8.0.4.ebuild                | 2 +-
 app-emulation/wine-proton/wine-proton-8.0.9999.ebuild             | 2 +-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/app-emulation/wine-proton/files/wine-proton-8.0.4-restore-menubuilder.patch b/app-emulation/wine-proton/files/wine-proton-8.0.4-restore-menubuilder.patch
new file mode 100644
index 000000000000..f278a2cbc264
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-8.0.4-restore-menubuilder.patch
@@ -0,0 +1,8 @@
+Without Steam there is no launcher by default, users with more custom
+setups may not need this but others will want access to desktop entries.
+--- a/loader/wine.inf.in
++++ b/loader/wine.inf.in
+@@ -5630,2 +5630,3 @@
+ [Services]
++HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
+ HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16

diff --git a/app-emulation/wine-proton/wine-proton-8.0.4.ebuild b/app-emulation/wine-proton/wine-proton-8.0.4.ebuild
index f021e06e5682..a276fcd47066 100644
--- a/app-emulation/wine-proton/wine-proton-8.0.4.ebuild
+++ b/app-emulation/wine-proton/wine-proton-8.0.4.ebuild
@@ -115,8 +115,8 @@ QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
 PATCHES=(
 	"${FILESDIR}"/${PN}-7.0.4-musl.patch
 	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
-	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
 	"${FILESDIR}"/${PN}-8.0.1c-unwind.patch
+	"${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch
 )
 
 pkg_pretend() {

diff --git a/app-emulation/wine-proton/wine-proton-8.0.9999.ebuild b/app-emulation/wine-proton/wine-proton-8.0.9999.ebuild
index 6741b1c2726b..c1f1e47064f1 100644
--- a/app-emulation/wine-proton/wine-proton-8.0.9999.ebuild
+++ b/app-emulation/wine-proton/wine-proton-8.0.9999.ebuild
@@ -116,8 +116,8 @@ QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
 PATCHES=(
 	"${FILESDIR}"/${PN}-7.0.4-musl.patch
 	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
-	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
 	"${FILESDIR}"/${PN}-8.0.1c-unwind.patch
+	"${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch
 )
 
 pkg_pretend() {


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2023-04-17 20:44 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2023-04-17 20:44 UTC (permalink / raw
  To: gentoo-commits

commit:     0bf3a079c58b6615d9ef7624bc02b9e87cbbbb51
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 17 18:55:23 2023 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Mon Apr 17 20:41:06 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0bf3a079

app-emulation/wine-proton: add 8.0.1c

Contains same changes as 7.0 -> 8.0 from wine-vanilla, plus
newer wine-mono.

No live ebuild yet, the experimental branch still hasn't been
created upstream (experimental releases are still for 7.0) and
assuming proton_8.0 branch will work the same as 7.0 where it's
updated only for releases.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 app-emulation/wine-proton/Manifest                 |   1 +
 .../files/wine-proton-8.0.1c-unwind.patch          |  36 +++
 .../wine-proton/wine-proton-8.0.1c.ebuild          | 327 +++++++++++++++++++++
 3 files changed, 364 insertions(+)

diff --git a/app-emulation/wine-proton/Manifest b/app-emulation/wine-proton/Manifest
index fe670f488183..0829b760d5f8 100644
--- a/app-emulation/wine-proton/Manifest
+++ b/app-emulation/wine-proton/Manifest
@@ -1,2 +1,3 @@
 DIST proton-wine-7.0-5.tar.gz 45724439 BLAKE2B d5ad4f00ca658b31c562c2ff4eb5ae33707126eee44ccfd9f33084ab5d184743034541efe3f9d18eb2a6941111da4c5134555f93769e8370b118b6f04e00ae1e SHA512 b16ace9c0bfa6d2685ea53617be2bba7e82c5c8da604f9e188bf782219785cfaed4317578c4314f2bde89d363a2e115f3bceeaa69d4a85f078a5fdb1ec64d33b
 DIST proton-wine-7.0-6.tar.gz 45780326 BLAKE2B f140fcfdd1a47904c34a49d0795fa3326d7cf0d3fac8d6c2ef2a4926181a46223f43a2d1ca96c543e800c8c46b2a3cc51ae306a029d68a42608876e869e177d5 SHA512 793bbe2b23042301a1b518717d78cfff01eaffa0388883d010659a45779b9136d33cfac63f0c3fbb1e458953a954b423eb70ac4fa87633352267db890ceb2fef
+DIST proton-wine-8.0-1c.tar.gz 48204851 BLAKE2B 5a746cf4d10e605ce30e93a5116e73c4ae893a6ccb105984afa3e65e0ec64780ca58462fe5fc89e51aef0499fdc52be9756254878d8f7f28160a1cf4ed0ee3a9 SHA512 67dbd73287409aaecd5cfab29f79ddf455bbbd25e79289c66828bd4f0fac3003e68afe3e65ea39e18e2390b825342a52285c4be1368928606628b72a274b5456

diff --git a/app-emulation/wine-proton/files/wine-proton-8.0.1c-unwind.patch b/app-emulation/wine-proton/files/wine-proton-8.0.1c-unwind.patch
new file mode 100644
index 000000000000..50fc5be57abc
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-8.0.1c-unwind.patch
@@ -0,0 +1,36 @@
+Fix build with llvm-libunwind, and also fix for non-llvm libunwind
+when using clang+bfd given clang doesn't have _Unwind_Find_FDE in
+its rtlib and expects it from llvm-libunwind.
+
+The _CONFIG_H_ check is for <llvm-libunwind-15 (adds _VERSION).
+--- a/dlls/ntdll/unix/dwarf.h
++++ b/dlls/ntdll/unix/dwarf.h
+@@ -257,5 +257,7 @@
+ };
+ 
++#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
+ extern const struct dwarf_fde *_Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
++#endif
+ 
+ static unsigned char dwarf_get_u1( const unsigned char **p )
+--- a/dlls/ntdll/unix/signal_x86_64.c
++++ b/dlls/ntdll/unix/signal_x86_64.c
+@@ -648,5 +648,5 @@
+     int rc;
+ 
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
+     rc = unw_getcontext( &unw_context );
+     if (rc == UNW_ESUCCESS)
+@@ -774,4 +774,5 @@
+     CONTEXT *context = params->context;
+     struct dwarf_eh_bases bases;
++#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
+     const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context->Rip - 1), &bases );
+ 
+@@ -779,4 +780,5 @@
+         return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde,
+                                      &bases, &dispatch->LanguageHandler, &dispatch->HandlerData );
++#endif
+ #ifdef HAVE_LIBUNWIND
+     return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context,

diff --git a/app-emulation/wine-proton/wine-proton-8.0.1c.ebuild b/app-emulation/wine-proton/wine-proton-8.0.1c.ebuild
new file mode 100644
index 000000000000..fa038b8fb9b6
--- /dev/null
+++ b/app-emulation/wine-proton/wine-proton-8.0.1c.ebuild
@@ -0,0 +1,327 @@
+# Copyright 2022-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MULTILIB_COMPAT=( abi_x86_{32,64} )
+PYTHON_COMPAT=( python3_{9..11} )
+inherit autotools flag-o-matic multilib multilib-build python-any-r1
+inherit readme.gentoo-r1 toolchain-funcs wrapper
+
+WINE_GECKO=2.47.3
+WINE_MONO=7.4.1
+WINE_PV=$(ver_rs 2 -)
+
+if [[ ${PV} == *9999 ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/ValveSoftware/wine.git"
+	EGIT_BRANCH="experimental_$(ver_cut 1-2)"
+else
+	SRC_URI="https://github.com/ValveSoftware/wine/archive/refs/tags/proton-wine-${WINE_PV}.tar.gz"
+	S="${WORKDIR}/${PN}-wine-${WINE_PV}"
+	KEYWORDS="-* ~amd64 ~x86"
+fi
+
+DESCRIPTION="Valve Software's fork of Wine"
+HOMEPAGE="https://github.com/ValveSoftware/wine/"
+
+LICENSE="LGPL-2.1+ BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff"
+SLOT="${PV}"
+IUSE="
+	+abi_x86_32 +abi_x86_64 +alsa crossdev-mingw custom-cflags debug
+	+fontconfig +gecko +gstreamer llvm-libunwind +mono nls osmesa
+	perl pulseaudio +sdl selinux +ssl udev udisks +unwind usb v4l
+	+xcomposite xinerama"
+
+# tests are non-trivial to run, can hang easily, don't play well with
+# sandbox, and several need real opengl/vulkan or network access
+RESTRICT="test"
+
+# `grep WINE_CHECK_SONAME configure.ac` + if not directly linked
+WINE_DLOPEN_DEPEND="
+	dev-libs/gmp:=[${MULTILIB_USEDEP}]
+	dev-libs/libgcrypt:=[${MULTILIB_USEDEP}]
+	media-libs/freetype[${MULTILIB_USEDEP}]
+	media-libs/libglvnd[X,${MULTILIB_USEDEP}]
+	media-libs/vulkan-loader[${MULTILIB_USEDEP}]
+	x11-libs/libXcursor[${MULTILIB_USEDEP}]
+	x11-libs/libXfixes[${MULTILIB_USEDEP}]
+	x11-libs/libXi[${MULTILIB_USEDEP}]
+	x11-libs/libXrandr[${MULTILIB_USEDEP}]
+	x11-libs/libXrender[${MULTILIB_USEDEP}]
+	x11-libs/libXxf86vm[${MULTILIB_USEDEP}]
+	fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+	osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] )
+	sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] )
+	ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] )
+	udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
+	v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+	xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] )
+	xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] )"
+WINE_COMMON_DEPEND="
+	${WINE_DLOPEN_DEPEND}
+	x11-libs/libX11[${MULTILIB_USEDEP}]
+	x11-libs/libXext[${MULTILIB_USEDEP}]
+	alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+	gstreamer? (
+		dev-libs/glib:2[${MULTILIB_USEDEP}]
+		media-libs/gst-plugins-base:1.0[opengl,${MULTILIB_USEDEP}]
+		media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
+	)
+	pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+	udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+	unwind? (
+		llvm-libunwind? ( sys-libs/llvm-libunwind[${MULTILIB_USEDEP}] )
+		!llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] )
+	)
+	usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] )"
+RDEPEND="
+	${WINE_COMMON_DEPEND}
+	app-emulation/wine-desktop-common
+	gecko? ( app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] )
+	gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] )
+	mono? ( app-emulation/wine-mono:${WINE_MONO} )
+	perl? (
+		dev-lang/perl
+		dev-perl/XML-LibXML
+	)
+	selinux? ( sec-policy/selinux-wine )
+	udisks? ( sys-fs/udisks:2 )"
+DEPEND="
+	${WINE_COMMON_DEPEND}
+	sys-kernel/linux-headers
+	x11-base/xorg-proto"
+BDEPEND="
+	${PYTHON_DEPS}
+	dev-lang/perl
+	sys-devel/binutils
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+	nls? ( sys-devel/gettext )
+	!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
+IDEPEND=">=app-eselect/eselect-wine-2"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+	__clear_cache # unused on amd64+x86 (bug #900332)
+	res_getservers # false positive
+)
+QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-7.0.4-musl.patch
+	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
+	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
+	"${FILESDIR}"/${PN}-8.0.1c-unwind.patch
+)
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} == binary ]] && return
+
+	if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then
+		local mingw=-w64-mingw32
+		for mingw in $(usev abi_x86_64 x86_64${mingw}) $(usev abi_x86_32 i686${mingw}); do
+			if ! type -P ${mingw}-gcc >/dev/null; then
+				eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain"
+				eerror "yourself by installing sys-devel/crossdev then running:"
+				eerror
+				eerror "    crossdev --target ${mingw}"
+				eerror
+				eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw"
+				eerror "--> Note that mingw builds are default for ${PN} even without this USE."
+				die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found"
+			fi
+		done
+	fi
+}
+
+src_prepare() {
+	# sanity check, bumping these has a history of oversights
+	local geckomono=$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \
+		dlls/appwiz.cpl/addons.c || die)
+	if [[ ${WINE_GECKO}$'\n'${WINE_MONO} != "${geckomono}" ]]; then
+		local gmfatal=
+		[[ ${PV} == *9999 ]] && gmfatal=nonfatal
+		${gmfatal} die -n "gecko/mono mismatch in ebuild, has: " ${geckomono} " (please file a bug)"
+	fi
+
+	default
+
+	# ensure .desktop calls this variant + slot
+	sed -i "/^Exec=/s/wine /${P} /" loader/wine.desktop || die
+
+	# similarly to staging, append to `wine --version` for identification
+	sed -i "s/wine_build[^1]*1/& (Proton-${WINE_PV})/" configure.ac || die
+
+	# always update for patches (including user's wrt #432348)
+	eautoreconf
+	tools/make_requests || die # perl
+	dlls/winevulkan/make_vulkan -x vk.xml || die # python, needed for proton's
+}
+
+src_configure() {
+	WINE_PREFIX=/usr/lib/${P}
+	WINE_DATADIR=/usr/share/${P}
+
+	local conf=(
+		--prefix="${EPREFIX}"${WINE_PREFIX}
+		--datadir="${EPREFIX}"${WINE_DATADIR}
+		--includedir="${EPREFIX}"/usr/include/${P}
+		--libdir="${EPREFIX}"${WINE_PREFIX}
+		--mandir="${EPREFIX}"${WINE_DATADIR}/man
+
+		# upstream (Valve) doesn't really support misc configurations (e.g.
+		# adds vulkan code not always guarded by --with-vulkan), so force
+		# some major options that are typically needed by games either way
+		--with-freetype
+		--with-mingw # needed by many, notably Blizzard titles
+		--with-opengl
+		--with-vulkan
+		--with-x
+
+		# ...and disable most options unimportant for games and unused by
+		# Proton rather than expose as volatile USEs with little support
+		--without-capi
+		--without-cups
+		--without-gphoto
+		--without-gssapi
+		--without-krb5
+		--without-netapi
+		--without-opencl
+		--without-pcap
+		--without-sane
+		ac_cv_lib_soname_odbc=
+
+		$(use_enable gecko mshtml)
+		$(use_enable mono mscoree)
+		--disable-tests
+		$(use_with alsa)
+		$(use_with fontconfig)
+		$(use_with gstreamer)
+		$(use_with nls gettext)
+		$(use_with osmesa)
+		--without-oss # media-sound/oss is not packaged (OSSv4)
+		$(use_with pulseaudio pulse)
+		$(use_with sdl)
+		$(use_with ssl gnutls)
+		$(use_with udev)
+		$(use_with udisks dbus) # dbus is only used for udisks
+		$(use_with unwind)
+		$(use_with usb)
+		$(use_with v4l v4l2)
+		$(use_with xcomposite)
+		$(use_with xinerama)
+	)
+
+	tc-ld-force-bfd # builds with non-bfd but broken at runtime (bug #867097)
+	filter-lto # build failure
+	use custom-cflags || strip-flags # can break in obscure ways at runtime
+	use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH}
+
+	# temporary workaround for tc-ld-force-bfd not yet enforcing with mold
+	# https://github.com/gentoo/gentoo/pull/28355
+	[[ $($(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) == mold* ]] &&
+		append-ldflags -fuse-ld=bfd
+
+	# build using upstream's way (--with-wine64)
+	# order matters: configure+compile 64->32, install 32->64
+	local -i bits
+	for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do
+	(
+		einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..."
+
+		mkdir ../build${bits} || die
+		cd ../build${bits} || die
+
+		pe_arch=i386
+		if (( bits == 64 )); then
+			pe_arch=x86_64
+			: "${CROSSCC:=${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}}"
+			conf+=( --enable-win64 )
+		elif use amd64; then
+			conf+=(
+				$(usev abi_x86_64 --with-wine64=../build64)
+				TARGETFLAGS=-m32 # for widl
+			)
+			# _setup is optional, but use over Wine's auto-detect (+#472038)
+			multilib_toolchain_setup x86
+		fi
+		: "${CROSSCC:=${CROSSCC_x86:-i686-w64-mingw32-gcc}}"
+
+		# CROSSCC is no longer recognized by Wine, but still use for now
+		# (future handling for CROSS* variables is subject to changes)
+		conf+=( ac_cv_prog_${pe_arch}_CC="${CROSSCC}" )
+
+		# use *FLAGS for mingw, but strip unsupported
+		: "${CROSSCFLAGS:=$(
+			# >=wine-7.21 configure.ac no longer adds -fno-strict by mistake
+			append-cflags '-fno-strict-aliasing'
+			filter-flags '-fstack-clash-protection' #758914
+			filter-flags '-fstack-protector*' #870136
+			filter-flags '-mfunction-return=thunk*' #878849
+			CC=${CROSSCC} test-flags-CC ${CFLAGS:--O2})}"
+		: "${CROSSLDFLAGS:=$(
+			filter-flags '-fuse-ld=*'
+			CC=${CROSSCC} test-flags-CCLD ${LDFLAGS})}"
+		export CROSS{C,LD}FLAGS
+
+		ECONF_SOURCE=${S} econf "${conf[@]}"
+	)
+	done
+}
+
+src_compile() {
+	use abi_x86_64 && emake -C ../build64 # do first
+	use abi_x86_32 && emake -C ../build32
+}
+
+src_install() {
+	use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install
+	use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last
+
+	# symlink for plain 'wine' and install its man pages if 64bit-only #404331
+	if use abi_x86_64 && use !abi_x86_32; then
+		dosym wine64 ${WINE_PREFIX}/bin/wine
+		dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader
+		local man
+		for man in ../build64/loader/wine.*man; do
+			: "${man##*/wine}"
+			: "${_%.*}"
+			insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1
+			newins ${man} wine.1
+		done
+	fi
+
+	use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \
+		"${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die
+
+	# create variant wrappers for eselect-wine
+	local bin
+	for bin in "${ED}"${WINE_PREFIX}/bin/*; do
+		make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}"
+	done
+
+	# don't let portage try to strip PE files with the wrong
+	# strip executable and instead handle it here (saves ~120MB)
+	dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows
+	use debug ||
+		find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \
+			-exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + || die
+
+	dodoc ANNOUNCE AUTHORS README* documentation/README*
+	readme.gentoo_create_doc
+}
+
+pkg_preinst() {
+	has_version ${CATEGORY}/${PN} && WINE_HAD_ANY_SLOT=
+}
+
+pkg_postinst() {
+	[[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog
+
+	eselect wine update --if-unset || die
+}
+
+pkg_postrm() {
+	eselect wine update --if-unset || die
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2022-09-13  4:19 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2022-09-13  4:19 UTC (permalink / raw
  To: gentoo-commits

commit:     40d66f4bcbe00db8b13ef9548f298e82ec111928
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 13 01:50:10 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Sep 13 04:17:54 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=40d66f4b

app-emulation/wine-proton: fix clang + USE=-llvm-libunwind build

_Unwind_Find_FDE doesn't exist in libunwind but does in gcc's rtlib,
clang instead expects it from llvm-libunwind which leads to undefined
references even with USE=-unwind.

Messy but add extra guards around it.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/wine-proton-7.0.4-llvm-libunwind.patch   |  9 -----
 .../files/wine-proton-7.0.4-unwind.patch           | 40 ++++++++++++++++++++++
 app-emulation/wine-proton/wine-proton-7.0.4.ebuild |  2 +-
 .../wine-proton/wine-proton-7.0.9999.ebuild        |  2 +-
 4 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch
deleted file mode 100644
index 0086fa5e0353..000000000000
--- a/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-Note the dodgy _CONFIG_H_ check can be removed when >=llvm-libunwind-15
-(which adds _VERSION) is well established: https://reviews.llvm.org/D121015
---- a/dlls/ntdll/unix/signal_x86_64.c
-+++ b/dlls/ntdll/unix/signal_x86_64.c
-@@ -1370,3 +1370,3 @@
- 
--#ifdef __APPLE__
-+#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
-     rc = unw_getcontext( &unw_context );

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch
new file mode 100644
index 000000000000..372def52ba0c
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-7.0.4-unwind.patch
@@ -0,0 +1,40 @@
+Fix build with llvm-libunwind, and also fix for non-llvm libunwind
+when using clang+bfd given clang doesn't have _Unwind_Find_FDE in
+its rtlib and expects it from llvm-libunwind.
+
+The _CONFIG_H_ check is for <llvm-libunwind-15 (adds _VERSION).
+--- a/dlls/ntdll/unix/signal_x86_64.c
++++ b/dlls/ntdll/unix/signal_x86_64.c
+@@ -646,7 +646,9 @@
+     unsigned int cie_offset;
+ };
+ 
++#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
+ extern const struct dwarf_fde *_Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
++#endif
+ 
+ static unsigned char dwarf_get_u1( const unsigned char **p )
+ {
+@@ -1368,7 +1370,7 @@
+     unw_proc_info_t info;
+     int rc;
+ 
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
+     rc = unw_getcontext( &unw_context );
+     if (rc == UNW_ESUCCESS)
+         rc = unw_init_local( &cursor, &unw_context );
+@@ -1491,11 +1493,13 @@
+ NTSTATUS CDECL unwind_builtin_dll( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEXT *context )
+ {
+     struct dwarf_eh_bases bases;
++#if defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__) || !defined(__clang__)
+     const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context->Rip - 1), &bases );
+ 
+     if (fde)
+         return dwarf_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context, fde,
+                                      &bases, &dispatch->LanguageHandler, &dispatch->HandlerData );
++#endif
+ #ifdef HAVE_LIBUNWIND
+     return libunwind_virtual_unwind( context->Rip, &dispatch->EstablisherFrame, context,
+                                      &dispatch->LanguageHandler, &dispatch->HandlerData );

diff --git a/app-emulation/wine-proton/wine-proton-7.0.4.ebuild b/app-emulation/wine-proton/wine-proton-7.0.4.ebuild
index 9101a5f62172..4d1b0a1aa939 100644
--- a/app-emulation/wine-proton/wine-proton-7.0.4.ebuild
+++ b/app-emulation/wine-proton/wine-proton-7.0.4.ebuild
@@ -106,10 +106,10 @@ IDEPEND=">=app-eselect/eselect-wine-1.2.2-r1"
 QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
 
 PATCHES=(
-	"${FILESDIR}"/${PN}-7.0.4-llvm-libunwind.patch
 	"${FILESDIR}"/${PN}-7.0.4-musl.patch
 	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
 	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
+	"${FILESDIR}"/${PN}-7.0.4-unwind.patch
 )
 
 pkg_pretend() {

diff --git a/app-emulation/wine-proton/wine-proton-7.0.9999.ebuild b/app-emulation/wine-proton/wine-proton-7.0.9999.ebuild
index ea37d6fbf06a..0df6fada339d 100644
--- a/app-emulation/wine-proton/wine-proton-7.0.9999.ebuild
+++ b/app-emulation/wine-proton/wine-proton-7.0.9999.ebuild
@@ -106,10 +106,10 @@ IDEPEND=">=app-eselect/eselect-wine-1.2.2-r1"
 QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
 
 PATCHES=(
-	"${FILESDIR}"/${PN}-7.0.4-llvm-libunwind.patch
 	"${FILESDIR}"/${PN}-7.0.4-musl.patch
 	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
 	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
+	"${FILESDIR}"/${PN}-7.0.4-unwind.patch
 )
 
 pkg_pretend() {


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/
@ 2022-09-03 19:46 Ionen Wolkens
  0 siblings, 0 replies; 6+ messages in thread
From: Ionen Wolkens @ 2022-09-03 19:46 UTC (permalink / raw
  To: gentoo-commits

commit:     2e0980beada259e57077f4b99d068d3b85557d28
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue May 10 23:26:08 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sat Sep  3 19:46:00 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2e0980be

app-emulation/wine-proton: new package, add 7.0.4

This is Valve's modified wine fork as used by Proton (includes
various workarounds for games, fsync support, etc...), which
can be used independently as a eselect'able Wine variant.

Also using a new experimental ebuild that's not based on existing
Wine ones -- may have regressions unrelated to the variant itself.
Trims some ancient unnecessary bits, skips a few things I feel the
ebuild doesn't need to handle, and change build method a bit.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 app-emulation/wine-proton/Manifest                 |   1 +
 app-emulation/wine-proton/files/README.gentoo      |  52 ++++
 .../files/wine-proton-7.0.4-llvm-libunwind.patch   |   9 +
 .../files/wine-proton-7.0.4-noexecstack.patch      |   7 +
 .../wine-proton-7.0.4-restore-menubuilder.patch    |  14 +
 app-emulation/wine-proton/metadata.xml             |  28 ++
 app-emulation/wine-proton/wine-proton-7.0.4.ebuild | 303 +++++++++++++++++++++
 7 files changed, 414 insertions(+)

diff --git a/app-emulation/wine-proton/Manifest b/app-emulation/wine-proton/Manifest
new file mode 100644
index 000000000000..69394f0077a5
--- /dev/null
+++ b/app-emulation/wine-proton/Manifest
@@ -0,0 +1 @@
+DIST proton-wine-7.0-4.tar.gz 45561670 BLAKE2B 0bc3432e5aa9ca1655e76b31dcbef08febe263e07d3635d005fbc7798b3a08fa50e2e736f33b18700f187dc755f012d7e8ae3edae6a63fb433cd9b8861b747b0 SHA512 dccdf4115e2a7c92981163783f5705e78fbfa042f06123e4802251bd2c558e8b4de7e3d2e114a5d942f9493eb64fb7fdedff2e6e8b3f21ea1de1156456930d8c

diff --git a/app-emulation/wine-proton/files/README.gentoo b/app-emulation/wine-proton/files/README.gentoo
new file mode 100644
index 000000000000..988d28df7ddf
--- /dev/null
+++ b/app-emulation/wine-proton/files/README.gentoo
@@ -0,0 +1,52 @@
+While this version of Wine is usable independently, it does contain some
+Steam-oriented changes that may be unexpected. Notably C:\users\steamuser
+is used rather than C:\users\<user-name> and it may be necessary to move
+files if converting from non-proton Wine prefixes (like games' save files).
+
+To keep a low maintenance cost, these changes are not reverted in Gentoo
+with the exception of re-enabling winemenubuilder for desktop entries.
+
+Also, given this Wine variant is oriented toward running games, some
+normally unrelated features (e.g. ldap) may not have real upstream
+(Valve) support. Because of this, some are left always disabled.
+
+If needed, use other variants for the more expected Wine behavior.
+
+---
+
+Given Proton is not creating the Wine prefixes, some features are not
+enabled by default and PROTON_* variables to control them are unrecognized.
+
+To (optionally) setup some notable defaults of Proton:
+- export WINEFSYNC=1
+.    Often improves performance for CPU-bound applications, recommended
+.    but should be left disabled if get crashes mentioning fsync errors.
+.   >Requires linux kernel >=5.16 if unpatched.
+- export WINE_LARGE_ADDRESS_AWARE=1
+.    Allows 32bit applications to access more memory, notably helps
+.    prevent crashes on memory-heavy applications while using dxvk below.
+- WINEPREFIX=/path/to setup_dxvk.sh install --symlink
+.    Vulkan-based d3d9/10/11 that often provides both better performance
+.    and compatibility (strongly recommended).
+.   >Requires app-emulation/dxvk
+- WINEPREFIX=/path/to setup_vkd3d_proton.sh install --symlink
+.    Like above, but for d3d12. Wine also supports vkd3d as-is but this
+.    is the modified fork used by Proton (may or may not be better).
+.   >Requires app-emulation/vkd3d-proton
+
+For some applications it may be better to disable these or do other
+workarounds, see https://www.protondb.com/ for specific information.
+
+Many other proton-specific improvements / fixes are always enabled, and
+some game-specific quirks are auto-enabled as needed (can see a few from
+running winecfg).
+
+If have audio/video playback issues, note to look at GStreamer plugins.
+Notably USE=ffmpeg on media-plugins/gst-plugins-meta which Proton normally
+provide by default.
+
+---
+
+If have other Wine variants installed, remember to either use `eselect wine`
+to select this variant or call it as wine-proton. Note other available
+variants may be auto-selected when removing/replacing a selected slot.

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch
new file mode 100644
index 000000000000..0086fa5e0353
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-7.0.4-llvm-libunwind.patch
@@ -0,0 +1,9 @@
+Note the dodgy _CONFIG_H_ check can be removed when >=llvm-libunwind-15
+(which adds _VERSION) is well established: https://reviews.llvm.org/D121015
+--- a/dlls/ntdll/unix/signal_x86_64.c
++++ b/dlls/ntdll/unix/signal_x86_64.c
+@@ -1370,3 +1370,3 @@
+ 
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(_LIBUNWIND_VERSION) || defined(____LIBUNWIND_CONFIG_H__)
+     rc = unw_getcontext( &unw_context );

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-noexecstack.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-noexecstack.patch
new file mode 100644
index 000000000000..92aa0b4b5c5d
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-7.0.4-noexecstack.patch
@@ -0,0 +1,7 @@
+Also write GNU-stack note on dummy files used for stub libraries.
+--- a/tools/winebuild/import.c
++++ b/tools/winebuild/import.c
+@@ -1675,2 +1675,3 @@
+         output( "\t.text\n" );
++        output_gnu_stack_note();
+     }

diff --git a/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch b/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch
new file mode 100644
index 000000000000..760340791060
--- /dev/null
+++ b/app-emulation/wine-proton/files/wine-proton-7.0.4-restore-menubuilder.patch
@@ -0,0 +1,14 @@
+Without Steam there is no launcher by default, users with more custom
+setups may not need this but others will want access to desktop entries.
+--- a/configure.ac
++++ b/configure.ac
+@@ -3683,2 +3683,3 @@
+ WINE_CONFIG_MAKEFILE(programs/winefile)
++WINE_CONFIG_MAKEFILE(programs/winemenubuilder)
+ WINE_CONFIG_MAKEFILE(programs/winemine)
+--- a/loader/wine.inf.in
++++ b/loader/wine.inf.in
+@@ -5630,2 +5630,3 @@
+ [Services]
++HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
+ HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16

diff --git a/app-emulation/wine-proton/metadata.xml b/app-emulation/wine-proton/metadata.xml
new file mode 100644
index 000000000000..e0ea57df1f22
--- /dev/null
+++ b/app-emulation/wine-proton/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="person">
+		<email>ionen@gentoo.org</email>
+		<name>Ionen Wolkens</name>
+	</maintainer>
+	<maintainer type="project">
+		<email>wine@gentoo.org</email>
+		<name>Wine</name>
+	</maintainer>
+	<use>
+		<flag name="crossdev-mingw">
+			Use <pkg>sys-devel/crossdev</pkg> for the toolchain rather than
+			<pkg>dev-util/mingw64-toolchain</pkg> (requires manual setting up)
+		</flag>
+		<flag name="gecko">Enable mshtml support using <pkg>app-emulation/wine-gecko</pkg></flag>
+		<flag name="mono">Enable .NET support using <pkg>app-emulation/wine-mono</pkg></flag>
+		<flag name="osmesa">Enable off-screen rendering (OpenGL in bitmaps) support</flag>
+		<flag name="perl">Install helpers that require perl (winedump/winemaker)</flag>
+		<flag name="sdl">Enable gamepad support using <pkg>media-libs/libsdl2</pkg></flag>
+		<flag name="vkd3d">Enable DirectX 12 support using <pkg>app-emulation/vkd3d</pkg></flag>
+	</use>
+	<upstream>
+		<changelog>https://github.com/ValveSoftware/Proton/wiki/Changelog</changelog>
+		<remote-id type="github">ValveSoftware/wine</remote-id>
+	</upstream>
+</pkgmetadata>

diff --git a/app-emulation/wine-proton/wine-proton-7.0.4.ebuild b/app-emulation/wine-proton/wine-proton-7.0.4.ebuild
new file mode 100644
index 000000000000..b78eed8c93c6
--- /dev/null
+++ b/app-emulation/wine-proton/wine-proton-7.0.4.ebuild
@@ -0,0 +1,303 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MULTILIB_COMPAT=( abi_x86_{32,64} )
+PYTHON_COMPAT=( python3_{8..11} )
+inherit autotools flag-o-matic multilib multilib-build \
+	python-any-r1 readme.gentoo-r1 toolchain-funcs wrapper
+
+WINE_GECKO=2.47.3
+WINE_MONO=7.3.0
+WINE_PV=$(ver_rs 2 -)
+
+DESCRIPTION="Valve Software's fork of Wine"
+HOMEPAGE="https://github.com/ValveSoftware/wine/"
+SRC_URI="https://github.com/ValveSoftware/wine/archive/refs/tags/proton-wine-${WINE_PV}.tar.gz"
+S="${WORKDIR}/${PN}-wine-${WINE_PV}"
+
+LICENSE="LGPL-2.1+ BSD-2 IJG MIT ZLIB gsm libpng2 libtiff"
+SLOT="${PV}"
+KEYWORDS="-* ~amd64 ~x86"
+IUSE="
+	+abi_x86_32 +abi_x86_64 +alsa crossdev-mingw custom-cflags debug
+	+fontconfig +gecko +gstreamer llvm-libunwind +mono nls openal
+	osmesa perl pulseaudio +sdl selinux +ssl udev udisks +unwind usb
+	v4l +vkd3d +xcomposite xinerama"
+
+WINE_DLOPEN_DEPEND="
+	dev-libs/gmp:=[${MULTILIB_USEDEP}]
+	dev-libs/libgcrypt:=[${MULTILIB_USEDEP}]
+	media-libs/freetype[${MULTILIB_USEDEP}]
+	media-libs/libglvnd[X,${MULTILIB_USEDEP}]
+	media-libs/vulkan-loader[${MULTILIB_USEDEP}]
+	x11-libs/libXcursor[${MULTILIB_USEDEP}]
+	x11-libs/libXfixes[${MULTILIB_USEDEP}]
+	x11-libs/libXi[${MULTILIB_USEDEP}]
+	x11-libs/libXrandr[${MULTILIB_USEDEP}]
+	x11-libs/libXrender[${MULTILIB_USEDEP}]
+	x11-libs/libXxf86vm[${MULTILIB_USEDEP}]
+	fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+	osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] )
+	sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] )
+	ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] )
+	udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
+	v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+	xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] )
+	xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] )"
+WINE_COMMON_DEPEND="
+	${WINE_DLOPEN_DEPEND}
+	x11-libs/libX11[${MULTILIB_USEDEP}]
+	x11-libs/libXext[${MULTILIB_USEDEP}]
+	alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+	gstreamer? (
+		dev-libs/glib:2[${MULTILIB_USEDEP}]
+		media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}]
+		media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
+	)
+	openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+	pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+	udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
+	unwind? (
+		llvm-libunwind? ( sys-libs/llvm-libunwind[${MULTILIB_USEDEP}] )
+		!llvm-libunwind? ( sys-libs/libunwind:=[${MULTILIB_USEDEP}] )
+	)
+	usb? ( dev-libs/libusb:1[${MULTILIB_USEDEP}] )
+	vkd3d? ( >=app-emulation/vkd3d-1.2[${MULTILIB_USEDEP}] )"
+RDEPEND="
+	${WINE_COMMON_DEPEND}
+	app-emulation/wine-desktop-common
+	gecko? ( app-emulation/wine-gecko:${WINE_GECKO}[${MULTILIB_USEDEP}] )
+	gstreamer? ( media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}] )
+	mono? ( app-emulation/wine-mono:${WINE_MONO} )
+	perl? (
+		dev-lang/perl
+		dev-perl/XML-LibXML
+	)
+	selinux? ( sec-policy/selinux-wine )
+	udisks? ( sys-fs/udisks:2 )"
+DEPEND="
+	${WINE_COMMON_DEPEND}
+	sys-kernel/linux-headers
+	x11-base/xorg-proto"
+BDEPEND="
+	${PYTHON_DEPS}
+	dev-lang/perl
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+	nls? ( sys-devel/gettext )
+	!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
+IDEPEND=">=app-eselect/eselect-wine-1.2.2-r1"
+
+QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-7.0.4-llvm-libunwind.patch
+	"${FILESDIR}"/${PN}-7.0.4-noexecstack.patch
+	"${FILESDIR}"/${PN}-7.0.4-restore-menubuilder.patch
+)
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} == binary ]] && return
+
+	if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then
+		local mingw=-w64-mingw32
+		for mingw in $(usev abi_x86_64 x86_64${mingw}) $(usev abi_x86_32 i686${mingw}); do
+			type -P ${mingw}-gcc >/dev/null && continue
+			eerror "With USE=crossdev-mingw, you must prepare the MinGW toolchain"
+			eerror "yourself by installing sys-devel/crossdev then running:"
+			eerror
+			eerror "    crossdev --target ${mingw}"
+			eerror
+			eerror "For more information, please see: https://wiki.gentoo.org/wiki/Mingw"
+			eerror "--> Note that mingw builds are default for ${PN} even without this USE."
+			die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found"
+		done
+	fi
+}
+
+src_prepare() {
+	# sanity check, bumping these has a history of oversights
+	local geckomono="$(sed -En '/^#define (GECKO|MONO)_VER/{s/[^0-9.]//gp}' \
+		dlls/appwiz.cpl/addons.c || die)"
+	[[ ${WINE_GECKO}$'\n'${WINE_MONO} == "${geckomono}" ]] ||
+		die "gecko/mono mismatch, has:" ${geckomono}
+
+	default
+
+	# ensure .desktop calls this variant + slot
+	sed -i "/^Exec=/s/wine /${P} /" loader/wine.desktop || die
+
+	# similarly to staging, append to `wine --version` for identification
+	sed -i "s/wine_build[^1]*1/& (Proton-${WINE_PV})/" configure.ac || die
+
+	# source has outdated auto-generated files, update like Proton's Makefile
+	eautoreconf
+	tools/make_requests || die # perl
+	dlls/winevulkan/make_vulkan -x vk.xml || die # python
+}
+
+src_configure() {
+	WINE_PREFIX=/usr/lib/${P}
+	WINE_DATADIR=/usr/share/${P}
+
+	local conf=(
+		--prefix="${EPREFIX}"${WINE_PREFIX}
+		--datadir="${EPREFIX}"${WINE_DATADIR}
+		--includedir="${EPREFIX}"/usr/include/${P}
+		--libdir="${EPREFIX}"${WINE_PREFIX}
+		--mandir="${EPREFIX}"${WINE_DATADIR}/man
+
+		# upstream (Valve) doesn't really support misc configurations (e.g.
+		# adds vulkan code not always guarded by --with-vulkan), so force
+		# some major options that are typically needed by games either way
+		--with-freetype
+		--with-mingw # needed by many, notably Blizzard titles
+		--with-opengl
+		--with-vulkan
+		--with-x
+
+		# ...and disable most options unimportant for games and unused by
+		# Proton rather than expose as volatile USEs with little support
+		--disable-tests # does not build and is disabled in Proton's Makefile
+		--without-capi
+		--without-cups
+		--without-gphoto
+		--without-gssapi
+		--without-krb5
+		--without-ldap
+		--without-netapi
+		--without-opencl
+		--without-pcap
+		--without-sane
+		ac_cv_lib_soname_odbc=
+
+		$(use_enable gecko mshtml)
+		$(use_enable mono mscoree)
+		$(use_with alsa)
+		$(use_with fontconfig)
+		$(use_with gstreamer)
+		$(use_with nls gettext)
+		$(use_with openal)
+		$(use_with osmesa)
+		--without-oss # media-sound/oss is not packaged
+		$(use_with pulseaudio pulse)
+		$(use_with sdl)
+		$(use_with ssl gnutls)
+		$(use_with udev)
+		$(use_with udisks dbus) # dbus is only used for udisks
+		$(use_with unwind)
+		$(use_with usb)
+		$(use_with v4l v4l2)
+		$(use_with vkd3d)
+		$(use_with xcomposite)
+		$(use_with xinerama)
+	)
+
+	tc-ld-force-bfd #867097
+	use custom-cflags || strip-flags # can break in obscure ways, also no lto
+	use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH}
+
+	# build using upstream's way (--with-wine64)
+	# order matters: configure+compile 64->32, install 32->64
+	local -i bits
+	for bits in $(usev abi_x86_64 64) $(usev abi_x86_32 32); do
+	(
+		einfo "Configuring ${PN} for ${bits}bits in ${WORKDIR}/build${bits} ..."
+
+		mkdir ../build${bits} || die
+		cd ../build${bits} || die
+
+		# CROSSCC_amd64/x86 are unused by Wine, but recognized here for users
+		if (( bits == 64 )); then
+			: "${CROSSCC:=${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}}"
+			conf+=( --enable-win64 )
+		elif use amd64; then
+			conf+=(
+				$(usev abi_x86_64 --with-wine64=../build64)
+				TARGETFLAGS=-m32 # for widl
+			)
+			# _setup is optional, but use over Wine's auto-detect (+bug 472038)
+			multilib_toolchain_setup x86
+		fi
+		: "${CROSSCC:=${CROSSCC_x86:-i686-w64-mingw32-gcc}}"
+
+		# use *FLAGS for mingw, but strip unsupported (e.g. --hash-style=gnu)
+		: "${CROSSCFLAGS:=$(CC=${CROSSCC} test-flags-CC ${CFLAGS:--O2})}"
+		: "${CROSSLDFLAGS:=$(
+			filter-flags '-fuse-ld=*'
+			CC=${CROSSCC} test-flags-CCLD ${LDFLAGS})}"
+		export CROSS{CC,{C,LD}FLAGS}
+
+		ECONF_SOURCE=${S} econf "${conf[@]}"
+	)
+	done
+}
+
+src_compile() {
+	use abi_x86_64 && emake -C ../build64 # do first
+	use abi_x86_32 && emake -C ../build32
+}
+
+src_install() {
+	use abi_x86_32 && emake DESTDIR="${D}" -C ../build32 install
+	use abi_x86_64 && emake DESTDIR="${D}" -C ../build64 install # do last
+
+	# symlink for plain 'wine' and install its man pages if 64bit-only #404331
+	if use abi_x86_64 && use !abi_x86_32; then
+		dosym wine64 ${WINE_PREFIX}/bin/wine
+		dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader
+		local man
+		for man in ../build64/loader/wine.*man; do
+			: "${man##*/wine}"
+			: "${_%.*}"
+			insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1
+			newins ${man} wine.1
+		done
+	fi
+
+	use perl || rm "${ED}"${WINE_DATADIR}/man/man1/wine{dump,maker}.1 \
+		"${ED}"${WINE_PREFIX}/bin/{function_grep.pl,wine{dump,maker}} || die
+
+	# create variant wrappers for eselect-wine, quotes are
+	# enough to prevent bug #615218 if it somehow happens
+	local bin
+	for bin in "${ED}"${WINE_PREFIX}/bin/*; do
+		make_wrapper "${bin##*/}-${P#wine-}" "${bin#"${ED}"}"
+	done
+
+	# don't let portage try to strip PE files with the wrong
+	# strip executable and instead handle it here (saves ~120MB)
+	dostrip -x ${WINE_PREFIX}/wine/{i386,x86_64}-windows
+	use debug ||
+		find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \
+			-exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + || die
+
+	dodoc ANNOUNCE AUTHORS README* documentation/README*
+	readme.gentoo_create_doc
+}
+
+wine-eselect() {
+	ebegin "${1^}ing ${P} using eselect-wine"
+	eselect wine ${1} ${P} &&
+		eselect wine ${1} --${PN#wine-} ${P} &&
+		eselect wine update --if-unset &&
+		eselect wine update --${PN#wine-} --if-unset
+	eend ${?} || die -n "eselect failed, may need to manually handle ${P}"
+}
+
+pkg_preinst() {
+	has_version ${CATEGORY}/${PN} && WINE_HAD_ANY_SLOT=
+}
+
+pkg_postinst() {
+	wine-eselect register
+
+	[[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog
+}
+
+pkg_prerm() {
+	nonfatal wine-eselect deregister
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-14  5:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-02 16:56 [gentoo-commits] repo/gentoo:master commit in: app-emulation/wine-proton/files/, app-emulation/wine-proton/ Ionen Wolkens
  -- strict thread matches above, loose matches on Subject: below --
2025-02-14  5:28 Ionen Wolkens
2023-12-01  8:04 Ionen Wolkens
2023-04-17 20:44 Ionen Wolkens
2022-09-13  4:19 Ionen Wolkens
2022-09-03 19:46 Ionen Wolkens

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox