diff options
Diffstat (limited to 'app-emulation/wine-proton')
-rw-r--r-- | app-emulation/wine-proton/Manifest | 16 | ||||
-rw-r--r-- | app-emulation/wine-proton/files/README.gentoo | 4 | ||||
-rw-r--r-- | app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch | 12 | ||||
-rw-r--r-- | app-emulation/wine-proton/files/wine-proton-8.0.5c-vulkan-libm.patch | 12 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-7.0.6.ebuild | 20 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-8.0.5c.ebuild | 20 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-9.0.1.ebuild | 22 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-9.0.2.ebuild | 429 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-9.0.3.ebuild | 429 | ||||
-rw-r--r-- | app-emulation/wine-proton/wine-proton-9.0.9999.ebuild | 22 |
10 files changed, 959 insertions, 27 deletions
diff --git a/app-emulation/wine-proton/Manifest b/app-emulation/wine-proton/Manifest index 11d1ef98c681..7c66e874dffb 100644 --- a/app-emulation/wine-proton/Manifest +++ b/app-emulation/wine-proton/Manifest @@ -1,17 +1,23 @@ -AUX README.gentoo 2435 BLAKE2B 2c41ce67c8f9139cf0a312c4477090077084550b79aa35ab4909de95046a2a0bbf6d05e549f59dfeb11253f1099878cbbd6fb141e3551c6b0ac503bef846d99b SHA512 0a5b2ac06c3b8cf1ef302d59193624bda224554476e1209aae485cbe913a0ffae6d553633983efaf89ce1296d52ec4dc2ab544ede96c2953e9f6ca602d5b787b +AUX README.gentoo 2633 BLAKE2B 0baf779eef6cfb5d65fb09dd9777c110d7caf7b1e3fa32351fe2226c7462ceb99c5ada17cd36a3055679e6b33de3cd1fda34937fcebaf4523f08568c94ca300b SHA512 f5e3b6e45a66b3216bf40e1229da989ba5abe9966819176a1ef03aa27ffc529e5a63b9dde7fb4fc83ae525aa71e6cb5a98b7ea19c5d1d37383d5c07bf7d5aeed AUX wine-proton-7.0.4-musl.patch 505 BLAKE2B 5c6d46c505e38c19e4c92e05243244739e6a2b84ebc548989167b65fe5ede439c628b510bce57ff8cd7ca765114c13dbb098116ba201ceba44069bf38daf5a64 SHA512 5e687119aa461e3440d3c7bbb2318db04ffbe414329931877b59a3f9752ee36e492bb25dda9b26c2f741664665487a34575423b24718e3f1b65f2d850c3681aa AUX wine-proton-7.0.4-noexecstack.patch 223 BLAKE2B dff1867e2977bd14fcfab9dfa2c2f1d3288f7edca75ddd7c9f02bfd06e9f63fac37bd59ea8aa891e13ab77bac35b369825d5490a9175ed9a7736e523b61d8944 SHA512 4ba3677042b693e513fc7a133c76a509f63d0ca20633d1e8d448bca9534c0d1a0fc58e77fa9b28fd8d936393605e97ee6e3bb5fac00872d6ac5808b7712586e3 AUX wine-proton-7.0.4-restore-menubuilder.patch 572 BLAKE2B 7ace97fb82498d8f19297cab205d8b9ca07c5293172a0b017b5d887ec1f5daeb3ed64eb0a322904e528a72f4a225813c27b544015587d71fce97c41b6b1463a2 SHA512 1384f06d4264e22d332eb12fabd7408b8e250e39c195460f876460fe40d35d617c73100815c395f481e3af66676ccaa1a14592c05f1e5b092bfafe2f87112106 AUX wine-proton-7.0.4-unwind.patch 1694 BLAKE2B 954cb0a395c3b45afc7a3f39f33d34cf041b9cf5a6c77d0a217d296c4c8d1f6503322c4f77188c4729b98318913b9bc86d37b7573713643590550297a0ae372a SHA512 f958e811a4754614bc9e7223f727e2c581c18607dccf14c6d7014012ff29107bd850540a40ff7a62e7bae6b87ae1ac28fd104fbbaf9ce954bf3acb38ddbeb7df AUX wine-proton-7.0.6-mingw64-11.0.0.patch 849 BLAKE2B 26833ef532e7c5b8b0ae1442485c6c44f55a550c571942be2a894aada62ce87398973dfa5619f5a8d498b51479dda84eeae72803370539a7d28575a74310e173 SHA512 189bb20e8c399374567db308c2d3cf43a2b5e2d76b43970edaa3975c0c4ddb7fa245b9d05ed0f7a3452c8bf5264e743acff5a4830a94abd1c7df13664afc21e7 +AUX wine-proton-7.0.6-vulkan-libm.patch 429 BLAKE2B 437c37130a0bc64e135fe15f876d19f16afdb9586a12c3dd9010b8280333e880dd4125be32e42bd90a32349634daf9bee29d537280d83ebf6580f28f6b53e57b SHA512 12e331b39543b9fba089925ceee936e534612e625570cfe19653516cf95ebf9a2d99fc05373eafecd4ae4bbfc485c4aed9fba682f76219164117fd9f2879012f AUX wine-proton-8.0.1c-unwind.patch 1488 BLAKE2B 1a6d69484fb36f94f32d74679e809cfd7666363bede5dddedd2449e07251823b1ce86a717e06d342eec782aff501f27bc23433511c163da0b2a50c411df7ac53 SHA512 82ff0510fcab35471aa0db8f32f48cd62dbf78b3f5f36e3d191b86be55cb476df1ee689e5cd53c95d4f02199b5900eb0c8a45959693739a6c35e4c8b3cfa243f AUX wine-proton-8.0.4-restore-menubuilder.patch 382 BLAKE2B 04df3b2e495f49b4d66bc70a1198a3ab6c4dbb95c3ff145069b7086cf87de7233a1f5d6e56c861c0ff6f7e4b0869bb7ddf29a35ca9f32e47c05bf71fd0823ef3 SHA512 08bf5accb1ccf38519d5054c2d297da87aef0df5b5b5336d96e4b98a3af202ae8220c1e8cdf282c24b2706628e14a1afb7ff5f21f4a7a9f8e3f4f301f9e44c57 +AUX wine-proton-8.0.5c-vulkan-libm.patch 447 BLAKE2B 026b982714ce21ce6492d5e3b9932f2af4b8f1342fc47de045d86e596996dab11a3b73bf5090714dbc5c405345b8d1a08afc6a337ddb91e744ca83c980ad390f SHA512 46655d7c65975a11a585acf9112fcc56242b2a65917aa8dc9ad9515b2f5348ad3e8a9b72d53b38b1d51ae9b661f175f54dda8cd3f04a56de1d0a18a2c4d6136c AUX wine-proton-9.0-rpath.patch 356 BLAKE2B f988fefb9590d1c8735f480349172b7c7634256ef07bfe19bc5a7e04363d1832cc999d7c30b78dc5af2f4a1c9bfac1f4fa5458461b865864dc3bbdff4e9f71fa SHA512 f0de44022c856ed9b058e6c64146e464e375114d56bcc369a7e72df847a4de0ad31cbb06042df3f6836b681cd342b8a228cf514a51ed9796542a4d9ea42a03e6 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-1.tar.gz 49048661 BLAKE2B cf237c314e8b222bb36f52f316baae2351a30d22995d610c7977accc9588c474d0e598702000aa81b34fc2f3daeccd09f54ef53b7a2250c0b012ca47d69628eb SHA512 d7d3e4725a86ca120d059e5b8f9760bce45a5db0ae814cd76aa51dc361bb67af9c2834917ddad3858fc324a1d048acdd9942492c77d0f396aae7d537c70e3ca1 -EBUILD wine-proton-7.0.6.ebuild 12198 BLAKE2B 034cd5f441346ec9b6a0566cdf78be5ef1d00928ff768da7f8f46769061883a8d78f5cb5af7421105b6a2f8b9fe882fd472e23aae9dbef48eafcaad941a62abc SHA512 bd81488ee089c0d380e4010920bc257790931c0976b1295367d1b8044ced382cb55aa3906066cda14920c623b6ce2466f0b45e94cef20e87ec658e7bc1b70670 -EBUILD wine-proton-8.0.5c.ebuild 12812 BLAKE2B 69222bd96de28a0823bf5e60f1dd2a65d19f826ec2a007868b182a3fa2167053c69604d47bac5ae7ac267b4550b65683418277ec3a86ed4746139f7b148f7571 SHA512 2f6132eb5c613082d1b76998020a6ec894f092dc7d8aaf2fa55f6948fc561669704749c260f1643e4ef479ddc63139ae6bcf7ad2899450085a67fa8b442d8954 -EBUILD wine-proton-9.0.1.ebuild 13713 BLAKE2B dc2bd9807caee817450fd87ea2fe5ce19312770ed334f670476afcf6245a8ca56fc02cdff14988699627650a83411991c2efe90fe2b5144f7e84415f9d3bdd1d SHA512 72a6ee7df87d67553f2c8a19581e09793b77f633b753f3ffd0ff55ee84608979881ec2935c51532e8c2787f443eb4008a3d5c4cccaf6e5c64141a06fb9351de5 -EBUILD wine-proton-9.0.9999.ebuild 13773 BLAKE2B cb2a3e4889eac70aa65240276a08560033505a69b531a59ad9ca172c6bfd8dd6a913222f4c6dfd473e7439571095ca531656c8ebbb4905ed4683ced3026ce447 SHA512 fb33a84f87fcbcf794e34590510fe68000f478d34dc80d2bbeb3f8e2d26c93950cfe41ca0591dbbe0ee4feced1f105ee51d7eb7b5f55352b5d133405803943d4 +DIST proton-wine-9.0-2.tar.gz 49125171 BLAKE2B ac1e4a63f94689bc4fcc6ab4e2d12cfc214f54181515434ab950d8975d131a5f6333b1e6cb9b67eda61cf3e652e57e27e60ba3cff6a6ac403b07178f382f7e25 SHA512 82efee3100da80f650229d1abf3df4896ab71af4a79c6e5cf03aa646c56f435daf07c6f084a3264067cf90ce509102e3d7ee6d4bf7d0650baf645b5ece08cc7c +DIST proton-wine-9.0-3.tar.gz 49153588 BLAKE2B 81f80fbcf7045c9e08b8c4fd5feeb24fdc65f4266d6ecc2198e8638e56e6fd65cbf7e6d3d113d84ea0bd24ac8bb4780db0bb8dbfdf93f120b4f3b6a5948eedae SHA512 1ec948c781576bc21d5735db4ad572c7d73ecd046d2d2e45958ddc08ec9591441397bb582bfe8b5eb94c584da7000cf4ab138b67bda4b3e717568842595f0d8f +EBUILD wine-proton-7.0.6.ebuild 12716 BLAKE2B 0a8ce5cf58303c15c04e559a48efc84875cc993ab3fcc7412894fc8b85387d756bb1f6a4be49ab66f7cca2e911729d75dee274cf7f70a4589c340abbbb57e938 SHA512 77c12ad4abac47afcc2a50e8165af499a2ada6361a9a0f323889bab9ca6fe4fa8d022aba5fa0d03a35e3389e29868a33e55fb689a7c36284b76db180a461c3f8 +EBUILD wine-proton-8.0.5c.ebuild 13331 BLAKE2B 3cef3d1c03720064f77fd2bbb7ff0d67b35f30fbd1685aeec3e2c1c2635bf7ae86d7cb1ec4a9005b3795b0a0f07168f2069dfef0ce31ed2c8ed739decb64e3db SHA512 3ae33940a06a9a345088bd93d0eb78ef0e62ae725ee1363babeeec5a37d5919973ab5bd52cf13c65148926b74f4a4986ba41f8da9aaa5cc04053de4426c2a2ca +EBUILD wine-proton-9.0.1.ebuild 14231 BLAKE2B 6c4200f7f0408ab482eb1b0f4bf0ade5504087004e025e7575f5f91dc33901f8ed533cfbe5f56a3b28be8332d02edd86aded16d42210e01074200f75a211053b SHA512 91b8ab885b16dcb90ab75ac5c594dc7e2e969cf73a4fa74c8c40c1419562054e9e020fbb675e2ce723c777382dfda677b691aa5e1a0f9efb925f0fc8d8c75357 +EBUILD wine-proton-9.0.2.ebuild 14231 BLAKE2B 885e269ab54e3b2e5907737ce3a1bc7a09e287e985722ceb40b4b3e4238f7fe79562fdf06f52e44aacb779e2fe15dba33d2ace6c4d9f915e455ef2f403a275be SHA512 4138ad1e19559e506a46cb6a523ea288a4f8b80fdede568fc45589d63204c25a02c9475012daa9e1c4a4cdb55c2346bcd38964ddf11dd92170e86361307eb86b +EBUILD wine-proton-9.0.3.ebuild 14232 BLAKE2B 67970d3c5ec71cec597a6d8c2fa934747eb55cf5e2ccf458eb2f96ab6d4a4992faa8a9b4e25e02a5bd6dad8ddd2bc45c53a0ffd06acb5e0434ec1e02c833001b SHA512 cd3b51be39011494e7f80c4f10cd916dd122436e8dd1ec3ae0e7fd2d20d410ba794644ce6b14f00e98fdc7891091a23fcd567bf09b9caf84c5de7d6971adafec +EBUILD wine-proton-9.0.9999.ebuild 14292 BLAKE2B 7718fd22d3624f1df4f09e6daa84260910d58fbdd6ae62cb58fa11d3a3dd9b4841e6a28792e62db16d0cc9dc03a5a78a92fb08f4e1bad4ffb948985331408872 SHA512 e84554d6569153b02c23f89d0291d494f6458bfc6af834e93eac83048c98c63f925bc18b627bdf8deefaeea9be2a9fdd681573823dbd7cf553b3d5ac5d89b199 MISC metadata.xml 1593 BLAKE2B 2e07980ce479dbb737394a5b74576925da936ca2ef5c0767b036cad7f56460ae0a6c73e8a416679f512a5195d037329ce9d3ace9808f68e024baf8640f462d94 SHA512 9f99896328a6337e7a2228977a3b7d853e78aef50a19ee40c43d18f657ead529553d7ea788bae1d408bd074f240cb555ba42558a54cd3ff8ab530b167e813d55 diff --git a/app-emulation/wine-proton/files/README.gentoo b/app-emulation/wine-proton/files/README.gentoo index 48f3d568a013..0d88628a45ff 100644 --- a/app-emulation/wine-proton/files/README.gentoo +++ b/app-emulation/wine-proton/files/README.gentoo @@ -46,6 +46,10 @@ 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. +Note that upstream may not be interested in bug reports without first +reproducing using the actual Steam+Proton rather than this custom +standalone build (esp. if lacking certain things like dxvk). + --- If have other Wine variants installed, remember to either use `eselect wine` 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 new file mode 100644 index 000000000000..b81778fb957c --- /dev/null +++ b/app-emulation/wine-proton/files/wine-proton-7.0.6-vulkan-libm.patch @@ -0,0 +1,12 @@ +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/files/wine-proton-8.0.5c-vulkan-libm.patch b/app-emulation/wine-proton/files/wine-proton-8.0.5c-vulkan-libm.patch new file mode 100644 index 000000000000..c3d9794fbbfe --- /dev/null +++ b/app-emulation/wine-proton/files/wine-proton-8.0.5c-vulkan-libm.patch @@ -0,0 +1,12 @@ +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 +-UNIX_LIBS = -lwin32u $(PTHREAD_LIBS) ++UNIX_LIBS = -lm -lwin32u $(PTHREAD_LIBS) + 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 546bcaf60b4a..29b0e02ef24a 100644 --- a/app-emulation/wine-proton/wine-proton-7.0.6.ebuild +++ b/app-emulation/wine-proton/wine-proton-7.0.6.ebuild @@ -124,6 +124,7 @@ PATCHES=( "${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() { @@ -355,11 +356,20 @@ pkg_preinst() { pkg_postinst() { [[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog - if use abi_x86_32 && 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." + 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 eselect wine update --if-unset || die diff --git a/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild b/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild index e5b25d63323f..cecd79a0c1f7 100644 --- a/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild +++ b/app-emulation/wine-proton/wine-proton-8.0.5c.ebuild @@ -124,6 +124,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0.4-noexecstack.patch "${FILESDIR}"/${PN}-8.0.1c-unwind.patch "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch + "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch ) pkg_pretend() { @@ -372,11 +373,20 @@ pkg_preinst() { pkg_postinst() { [[ -v WINE_HAD_ANY_SLOT ]] || readme.gentoo_print_elog - if use abi_x86_32 && 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." + 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 eselect wine update --if-unset || die diff --git a/app-emulation/wine-proton/wine-proton-9.0.1.ebuild b/app-emulation/wine-proton/wine-proton-9.0.1.ebuild index 4558c65461b2..aaa8d2f07d3c 100644 --- a/app-emulation/wine-proton/wine-proton-9.0.1.ebuild +++ b/app-emulation/wine-proton/wine-proton-9.0.1.ebuild @@ -19,7 +19,7 @@ if [[ ${PV} == *9999 ]]; then 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" + KEYWORDS="-* amd64 ~x86" fi DESCRIPTION="Valve Software's fork of Wine" @@ -134,6 +134,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0.4-noexecstack.patch "${FILESDIR}"/${PN}-8.0.1c-unwind.patch "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch + "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch "${FILESDIR}"/${PN}-9.0-rpath.patch ) @@ -404,11 +405,20 @@ pkg_postinst() { ewarn "work, be warned that it is not unusual that installers or other helpers" ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && 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." + elif 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 eselect wine update --if-unset || die diff --git a/app-emulation/wine-proton/wine-proton-9.0.2.ebuild b/app-emulation/wine-proton/wine-proton-9.0.2.ebuild new file mode 100644 index 000000000000..17bdf7ebbeef --- /dev/null +++ b/app-emulation/wine-proton/wine-proton-9.0.2.ebuild @@ -0,0 +1,429 @@ +# 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.4 +WINE_MONO=9.1.0 +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 + +fontconfig +gecko +gstreamer llvm-libunwind +mono nls osmesa + perl pulseaudio +sdl selinux +ssl +strip udev udisks +unwind + usb v4l video_cards_amdgpu wow64 +xcomposite xinerama +" +REQUIRED_USE="wow64? ( abi_x86_64 !abi_x86_32 )" + +# 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}] ) +" +# gcc: for -latomic with clang +WINE_COMMON_DEPEND=" + ${WINE_DLOPEN_DEPEND} + sys-devel/gcc:* + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libdrm[video_cards_amdgpu?,${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}] + wow64? ( app-emulation/wine-gecko[abi_x86_32] ) + ) + 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} + || ( + sys-devel/binutils + sys-devel/lld + ) + dev-lang/perl + sys-devel/bison + sys-devel/flex + virtual/pkgconfig + nls? ( sys-devel/gettext ) + !crossdev-mingw? ( + >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] + wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) + ) +" +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}-8.0.1c-unwind.patch + "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch + "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch + "${FILESDIR}"/${PN}-9.0-rpath.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}) \ + $(use abi_x86_32 || use wow64 && echo 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 + + # needed by Valve's fsync patches if using clang (undef atomic_load_8) + sed -e '/^UNIX_LIBS.*=/s/$/ -latomic/' \ + -i dlls/{ntdll,winevulkan}/Makefile.in || 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 + # proton variant also needs specfiles and vulkan + tools/make_specfiles || die # perl + dlls/winevulkan/make_vulkan -x vk.xml || die # python + # 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 + + $(usev wow64 --enable-archs=x86_64,i386) + + # 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 + # TODO?: --without-mingw could make sense *if* using clang, assuming + # bug #912237 is resolved (consider when do USE=wow64 in proton-9) + --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-pcsclite + --without-sane + ac_cv_lib_soname_odbc= + + # afaik wayland support in 9.0.x currently cannot do opengl/vulkan + # yet making it mostly pointless for a gaming-oriented build + # (IUSE="X wayland" may be added in wine-proton-10 or 11) + --without-wayland + + $(use_enable gecko mshtml) + $(use_enable mono mscoree) + $(use_enable video_cards_amdgpu amd_ags_x64) + --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) + ) + + 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 + + # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) + # (do self test until https://github.com/gentoo/gentoo/pull/28355) + if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] + then + has_version -b sys-devel/binutils && + append-ldflags -fuse-ld=bfd || + append-ldflags -fuse-ld=lld + strip-unsupported-flags + fi + + use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} + + # CROSSCC was formerly recognized by wine, thus been using similar + # variables (subject to change, esp. if ever make a mingw.eclass). + local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} + local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} + local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) + + conf+=( + ac_cv_prog_x86_64_CC="${mingwcc_amd64}" + ac_cv_prog_i386_CC="${mingwcc_x86}" + + CROSSCFLAGS="${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,*' + + CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} + )}" + + CROSSLDFLAGS="${CROSSLDFLAGS:-$( + filter-flags '-fuse-ld=*' + + CC=${mingwcc} test-flags-CCLD ${LDFLAGS} + )}" + ) + + # order matters with multilib: 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 + + if (( bits == 64 )); then + 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 + + 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 + + # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, + # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where + # one or the other could be missing and that is unexpected for users + # and some tools like winetricks) + if use abi_x86_64; then + if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine64 ${WINE_PREFIX}/bin/wine + dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader + + # also install wine(1) man pages (incl. translations) + local man + for man in ../build64/loader/wine.*man; do + : "${man##*/wine}" + : "${_%.*}" + insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 + newins ${man} wine.1 + done + elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine ${WINE_PREFIX}/bin/wine64 + dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader + fi + 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 + + if use strip; then + ebegin "Stripping Windows (PE) binaries" + find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ + -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + + eend ${?} || die + fi + + 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 && use !wow64; then + ewarn "32bit support is disabled. While 64bit applications themselves will" + ewarn "work, be warned that it is not unusual that installers or other helpers" + ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," + ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." + elif 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 + + eselect wine update --if-unset || die +} + +pkg_postrm() { + eselect wine update --if-unset || die +} diff --git a/app-emulation/wine-proton/wine-proton-9.0.3.ebuild b/app-emulation/wine-proton/wine-proton-9.0.3.ebuild new file mode 100644 index 000000000000..3895030f61ab --- /dev/null +++ b/app-emulation/wine-proton/wine-proton-9.0.3.ebuild @@ -0,0 +1,429 @@ +# 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.4 +WINE_MONO=9.2.0 +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 + +fontconfig +gecko +gstreamer llvm-libunwind +mono nls osmesa + perl pulseaudio +sdl selinux +ssl +strip udev udisks +unwind + usb v4l video_cards_amdgpu wow64 +xcomposite xinerama +" +REQUIRED_USE="wow64? ( abi_x86_64 !abi_x86_32 )" + +# 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}] ) +" +# gcc: for -latomic with clang +WINE_COMMON_DEPEND=" + ${WINE_DLOPEN_DEPEND} + sys-devel/gcc:* + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libdrm[video_cards_amdgpu?,${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}] + wow64? ( app-emulation/wine-gecko[abi_x86_32] ) + ) + 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} + || ( + sys-devel/binutils + sys-devel/lld + ) + dev-lang/perl + sys-devel/bison + sys-devel/flex + virtual/pkgconfig + nls? ( sys-devel/gettext ) + !crossdev-mingw? ( + >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] + wow64? ( dev-util/mingw64-toolchain[abi_x86_32] ) + ) +" +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}-8.0.1c-unwind.patch + "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch + "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch + "${FILESDIR}"/${PN}-9.0-rpath.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}) \ + $(use abi_x86_32 || use wow64 && echo 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 + + # needed by Valve's fsync patches if using clang (undef atomic_load_8) + sed -e '/^UNIX_LIBS.*=/s/$/ -latomic/' \ + -i dlls/{ntdll,winevulkan}/Makefile.in || 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 + # proton variant also needs specfiles and vulkan + tools/make_specfiles || die # perl + dlls/winevulkan/make_vulkan -x vk.xml || die # python + # 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 + + $(usev wow64 --enable-archs=x86_64,i386) + + # 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 + # TODO?: --without-mingw could make sense *if* using clang, assuming + # bug #912237 is resolved (consider when do USE=wow64 in proton-9) + --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-pcsclite + --without-sane + ac_cv_lib_soname_odbc= + + # afaik wayland support in 9.0.x currently cannot do opengl/vulkan + # yet making it mostly pointless for a gaming-oriented build + # (IUSE="X wayland" may be added in wine-proton-10 or 11) + --without-wayland + + $(use_enable gecko mshtml) + $(use_enable mono mscoree) + $(use_enable video_cards_amdgpu amd_ags_x64) + --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) + ) + + 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 + + # wine uses linker tricks unlikely to work with non-bfd/lld (bug #867097) + # (do self test until https://github.com/gentoo/gentoo/pull/28355) + if [[ $(LC_ALL=C $(tc-getCC) ${LDFLAGS} -Wl,--version 2>/dev/null) != @(LLD|GNU\ ld)* ]] + then + has_version -b sys-devel/binutils && + append-ldflags -fuse-ld=bfd || + append-ldflags -fuse-ld=lld + strip-unsupported-flags + fi + + use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} + + # CROSSCC was formerly recognized by wine, thus been using similar + # variables (subject to change, esp. if ever make a mingw.eclass). + local mingwcc_amd64=${CROSSCC:-${CROSSCC_amd64:-x86_64-w64-mingw32-gcc}} + local mingwcc_x86=${CROSSCC:-${CROSSCC_x86:-i686-w64-mingw32-gcc}} + local -n mingwcc=mingwcc_$(usex abi_x86_64 amd64 x86) + + conf+=( + ac_cv_prog_x86_64_CC="${mingwcc_amd64}" + ac_cv_prog_i386_CC="${mingwcc_x86}" + + CROSSCFLAGS="${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,*' + + CC=${mingwcc} test-flags-CC ${CFLAGS:--O2} + )}" + + CROSSLDFLAGS="${CROSSLDFLAGS:-$( + filter-flags '-fuse-ld=*' + + CC=${mingwcc} test-flags-CCLD ${LDFLAGS} + )}" + ) + + # order matters with multilib: 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 + + if (( bits == 64 )); then + 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 + + 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 + + # Ensure both wine64 and wine are available if USE=abi_x86_64 (wow64, + # -abi_x86_32, and/or EXTRA_ECONF could cause varying scenarios where + # one or the other could be missing and that is unexpected for users + # and some tools like winetricks) + if use abi_x86_64; then + if [[ -e ${ED}${WINE_PREFIX}/bin/wine64 && ! -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine64 ${WINE_PREFIX}/bin/wine + dosym wine64-preloader ${WINE_PREFIX}/bin/wine-preloader + + # also install wine(1) man pages (incl. translations) + local man + for man in ../build64/loader/wine.*man; do + : "${man##*/wine}" + : "${_%.*}" + insinto ${WINE_DATADIR}/man/${_:+${_#.}/}man1 + newins ${man} wine.1 + done + elif [[ ! -e ${ED}${WINE_PREFIX}/bin/wine64 && -e ${ED}${WINE_PREFIX}/bin/wine ]]; then + dosym wine ${WINE_PREFIX}/bin/wine64 + dosym wine-preloader ${WINE_PREFIX}/bin/wine64-preloader + fi + 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 + + if use strip; then + ebegin "Stripping Windows (PE) binaries" + find "${ED}"${WINE_PREFIX}/wine/*-windows -regex '.*\.\(a\|dll\|exe\)' \ + -exec $(usex abi_x86_64 x86_64 i686)-w64-mingw32-strip --strip-unneeded {} + + eend ${?} || die + fi + + 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 && use !wow64; then + ewarn "32bit support is disabled. While 64bit applications themselves will" + ewarn "work, be warned that it is not unusual that installers or other helpers" + ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," + ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." + elif 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 + + eselect wine update --if-unset || die +} + +pkg_postrm() { + eselect wine update --if-unset || die +} diff --git a/app-emulation/wine-proton/wine-proton-9.0.9999.ebuild b/app-emulation/wine-proton/wine-proton-9.0.9999.ebuild index ceddb4a00eec..9c233aee5903 100644 --- a/app-emulation/wine-proton/wine-proton-9.0.9999.ebuild +++ b/app-emulation/wine-proton/wine-proton-9.0.9999.ebuild @@ -9,7 +9,7 @@ inherit autotools flag-o-matic multilib multilib-build prefix inherit python-any-r1 readme.gentoo-r1 toolchain-funcs wrapper WINE_GECKO=2.47.4 -WINE_MONO=9.0.0 +WINE_MONO=9.1.0 WINE_PV=$(ver_rs 2 -) if [[ ${PV} == *9999 ]]; then @@ -134,6 +134,7 @@ PATCHES=( "${FILESDIR}"/${PN}-7.0.4-noexecstack.patch "${FILESDIR}"/${PN}-8.0.1c-unwind.patch "${FILESDIR}"/${PN}-8.0.4-restore-menubuilder.patch + "${FILESDIR}"/${PN}-8.0.5c-vulkan-libm.patch "${FILESDIR}"/${PN}-9.0-rpath.patch ) @@ -406,11 +407,20 @@ pkg_postinst() { ewarn "work, be warned that it is not unusual that installers or other helpers" ewarn "will attempt to use 32bit and fail. If do not want full USE=abi_x86_32," ewarn "note the experimental/WIP USE=wow64 can allow 32bit without multilib." - elif use abi_x86_32 && 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." + elif 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 eselect wine update --if-unset || die |