diff options
Diffstat (limited to 'app-emulation')
-rw-r--r-- | app-emulation/Manifest.gz | bin | 14815 -> 14816 bytes | |||
-rw-r--r-- | app-emulation/dxvk/Manifest | 5 | ||||
-rw-r--r-- | app-emulation/dxvk/dxvk-2.1.ebuild | 171 | ||||
-rw-r--r-- | app-emulation/dxvk/dxvk-9999.ebuild | 16 | ||||
-rw-r--r-- | app-emulation/wine-staging/Manifest | 3 | ||||
-rw-r--r-- | app-emulation/wine-staging/wine-staging-8.0.ebuild | 355 |
6 files changed, 544 insertions, 6 deletions
diff --git a/app-emulation/Manifest.gz b/app-emulation/Manifest.gz Binary files differindex e3421ad17d8a..3376f618401b 100644 --- a/app-emulation/Manifest.gz +++ b/app-emulation/Manifest.gz diff --git a/app-emulation/dxvk/Manifest b/app-emulation/dxvk/Manifest index aa944385f71d..01f41e72e09d 100644 --- a/app-emulation/dxvk/Manifest +++ b/app-emulation/dxvk/Manifest @@ -1,9 +1,12 @@ DIST dxvk-1.10.3.tar.gz 1204407 BLAKE2B 3507ffe4abf9c45f2a138b05e7cf706322a6bf3d2e9ae86a9d6216b206c09f79eac696ee7dfe33d0bef55e727f51301c36eb89bfa3b3f429d7d5fafc1eebdcb4 SHA512 8995b231b3f3650beda04c01f30186d10a373075a4774b4ecbfb3bbeb4de99c57555f1db0611e5c61c6a411a7215e0faf228f9861f6b7adae6fc365e8056f7e3 DIST dxvk-2.0.tar.gz 943397 BLAKE2B 7d59050e8ac3f9be311d11323cc0057d84c3b730360fe9e064ff4a5e2db5bffea5bae3214da366c60295ec5f1577ab08e2776274c9aaff7a7de1b9f2cefa836a SHA512 98537bdec2b5e4f2ead5b93ab49db717e0706fe771a82a6ef1e5b5792c1bdd3f417cd6b6b2deadb1397b8a0740445fa88b9fb6c1f73510cc5c0e7ae35d65bcac +DIST dxvk-2.1.tar.gz 960078 BLAKE2B ad8ea7eb000237914d9116a8fbfde13fde3dc00d428ebfe41aacb9373c6509112545ef1942b4cbc96a18338c3d07c2c494d0454236721e220ee5f5731a5c27b9 SHA512 10d919ba2612f665a20f7c72605967adeea94d8414bee45878f9df42ad263fa5ebfc7a76319173dce054ffe9b9cdc919ff7a136042f3f4e64142844c943bdef7 +DIST dxvk-libdisplay-info-d39344f466.tar.bz2 81232 BLAKE2B af76ccd3c40bc953008bc30d222c72f90bdc77f47f767b6e7423efaa0ec89d746396a755160b5470e219a15a0aa392be6066aab12921b45a1adb35d88132cd97 SHA512 79b4bf325cefc39bc587233bd82ff64c927ca5f829b8172d213c3d47af725c8dc7fe33576a8e96a869075ee2a8f00d165f3aa9e6c472e862a47e5c800b2b3315 DIST dxvk-spirv-headers-0bcc624926.tar.gz 437771 BLAKE2B 08815e36ad99b84777e38ad0c5616b6608a552f993e7f67433f2b8e20de81e9bce41420ac5998f5b67bca70a92ce70aed91b238990bd431c7b97070dfb0c5a60 SHA512 5995cf75d5605d41e9643bca81c195ef5aaa17d596e0282807f6fa8f8c494f7b63a41d611c535ae43dc3d609436aabef1e0d89626f37e6f20bad17b5e122e32c DIST dxvk-vulkan-headers-98f440ce68.tar.gz 1691979 BLAKE2B bf6fd288f16df7adcb5cebeb6e13713db1c26a0b833dead2fb522227861abc60b2d0cda8e3f46f8e89cccb629e01081ba27763989ad6fd336c60a475b198c1c8 SHA512 69238d37d0af0162e0fd68094cd2fa9baa320497d34a9de491dea086c23291d0815b51e89218b1f0ee2b3314cbc8ac1809d6edb15ca51fcb282fe1e2b39a1a77 DIST setup_dxvk.sh 4631 BLAKE2B 25270e1f6dfd446b1d124eac3bd19da8bc770527d02d987949fc3ae0bead07866dafa25f77a90b9a408413a724354a29a4a156ff5c9dc75e26b66e079824ec86 SHA512 257fd84e29a7037f04a1a2a506502c71d527af58f8c84d8c3dfb64597ebdc41c3dca362eaf20ab4bc1982b76428c1f843815d56a6e1369d072e0009e270cb121 EBUILD dxvk-1.10.3.ebuild 4386 BLAKE2B c2cd3106bd5437f1ee18f6f1977573f48eedc1258fb0de6ac5ad0a730ce348655404a931fc1f8c90254f0c6eb29cf08f89cd78529a7785db2f9dad00345a7ab7 SHA512 3828dcb3ac3b97449bf87f5a978b5baa3c06cb9141ddee96f538dfacf7201e33eda11468f3d39cbb318f92f544f8d2a8f96f923868d12e8174105293af3b1706 EBUILD dxvk-2.0.ebuild 5263 BLAKE2B 78de2ed9dc6540673f0b05d92f847670979f02adfd03dfa8df28e108b78788b7c8890e37eeca1e1ec3750604fb95e645e84ec99c593d11b39a5ef51c2f3530c0 SHA512 83ceafb6670947a56ae0ecb6ad208d0ed9b91db6a2f00ba868edeffef0064fe85e7a5b7e13d5b5cf4b69228deefccfb470e9eb7868002ed6e9a93ffb36861cd9 -EBUILD dxvk-9999.ebuild 5635 BLAKE2B 8eaad2471f58c6cdd612beac5b53c09e8c88d64726bf909c09803fd9492c5c1854323a5f308d2a7b1cd404d8377b26660e1339f53d708e64d72fd6f610c818af SHA512 658f01cd40b05f6bdf80ada09b6f1eadf7605b9cfefa6747b4f49a7a00015ccf2d75921def74ed424df053d15c38e117143983a6af93321e23baa512922be06a +EBUILD dxvk-2.1.ebuild 6061 BLAKE2B a58c90e467fdd6e263eb9369e1d862a1e2ed9085c26a0c7f59bc9a58cf81296461a3ff68053aae688b74ba19f5933c18fe516411d3609b0efb75e93db0dbf18e SHA512 53e623a745aa6e5e8f46a1b230aa53f22d3bdb56dbe941e642c1ee5b449314a417dbc3d618c02a68753b400381e201e8aa106c1eb3ddc18b234d4cad788de3b3 +EBUILD dxvk-9999.ebuild 6061 BLAKE2B a58c90e467fdd6e263eb9369e1d862a1e2ed9085c26a0c7f59bc9a58cf81296461a3ff68053aae688b74ba19f5933c18fe516411d3609b0efb75e93db0dbf18e SHA512 53e623a745aa6e5e8f46a1b230aa53f22d3bdb56dbe941e642c1ee5b449314a417dbc3d618c02a68753b400381e201e8aa106c1eb3ddc18b234d4cad788de3b3 MISC metadata.xml 818 BLAKE2B 88081c074b99329c925174de4b7ff9b2c220ffc67eb64a5324f4eaf2a35f98f06c9978ddc0e929ba76b341a389a8eff025b7aa0a2414e3f7ae496c44a023c65c SHA512 90d76ac3df3abe003371cd25b9cf0e6570a53b371349fb2e048cae1818e51f0482e17b3d5490eb82c57d891bb43c4a7cd41530101b888591719c33c566788e3b diff --git a/app-emulation/dxvk/dxvk-2.1.ebuild b/app-emulation/dxvk/dxvk-2.1.ebuild new file mode 100644 index 000000000000..7b1ccff1d6f4 --- /dev/null +++ b/app-emulation/dxvk/dxvk-2.1.ebuild @@ -0,0 +1,171 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +MULTILIB_COMPAT=( abi_x86_{32,64} ) +inherit flag-o-matic meson-multilib python-any-r1 + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/doitsujin/dxvk.git" + EGIT_SUBMODULES=( + # picky about headers and is cross-compiled making -I/usr/include troublesome + include/{spirv,vulkan} + subprojects/libdisplay-info + ) +else + HASH_SPIRV=0bcc624926a25a2a273d07877fd25a6ff5ba1cfb + HASH_VULKAN=98f440ce6868c94f5ec6e198cc1adda4760e8849 + HASH_DISPLAYINFO=d39344f466caae0495ebac4d49b03a886d83ba3a + SRC_URI=" + https://github.com/doitsujin/dxvk/archive/refs/tags/v${PV}.tar.gz + -> ${P}.tar.gz + https://github.com/KhronosGroup/SPIRV-Headers/archive/${HASH_SPIRV}.tar.gz + -> ${PN}-spirv-headers-${HASH_SPIRV::10}.tar.gz + https://github.com/KhronosGroup/Vulkan-Headers/archive/${HASH_VULKAN}.tar.gz + -> ${PN}-vulkan-headers-${HASH_VULKAN::10}.tar.gz + https://gitlab.freedesktop.org/JoshuaAshton/libdisplay-info/-/archive/${HASH_DISPLAYINFO}/${PN}-libdisplay-info-${HASH_DISPLAYINFO::10}.tar.bz2" + KEYWORDS="-* ~amd64 ~x86" +fi +# setup_dxvk.sh is no longer provided, fetch old until a better solution +SRC_URI+=" https://raw.githubusercontent.com/doitsujin/dxvk/cd21cd7fa3b0df3e0819e21ca700b7627a838d69/setup_dxvk.sh" + +DESCRIPTION="Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine" +HOMEPAGE="https://github.com/doitsujin/dxvk/" + +LICENSE="ZLIB Apache-2.0 MIT" +SLOT="0" +IUSE="+abi_x86_32 crossdev-mingw +d3d9 +d3d10 +d3d11 debug +dxgi" +REQUIRED_USE=" + || ( d3d9 d3d10 d3d11 dxgi ) + d3d10? ( d3d11 ) + d3d11? ( dxgi )" + +BDEPEND=" + ${PYTHON_DEPS} + dev-util/glslang + !crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )" + +pkg_pretend() { + [[ ${MERGE_TYPE} == binary ]] && return + + if use crossdev-mingw && [[ ! -v MINGW_BYPASS ]]; then + local tool=-w64-mingw32-g++ + for tool in $(usev abi_x86_64 x86_64${tool}) $(usev abi_x86_32 i686${tool}); do + if ! type -P ${tool} >/dev/null; then + eerror "With USE=crossdev-mingw, it is necessary to setup the mingw toolchain." + eerror "For instructions, please see: https://wiki.gentoo.org/wiki/Mingw" + use abi_x86_32 && use abi_x86_64 && + eerror "Also, with USE=abi_x86_32, will need both i686 and x86_64 toolchains." + die "USE=crossdev-mingw is set but ${tool} was not found" + elif [[ ! $(LC_ALL=C ${tool} -v 2>&1) =~ "Thread model: posix" ]]; then + eerror "${PN} requires GCC to be built with --enable-threads=posix" + eerror "Please see: https://wiki.gentoo.org/wiki/Mingw#POSIX_threads_for_Windows" + die "USE=crossdev-mingw is set but ${tool} does not use POSIX threads" + fi + done + fi +} + +src_prepare() { + if [[ ${PV} != 9999 ]]; then + rmdir include/{spirv,vulkan} subprojects/libdisplay-info || die + mv ../SPIRV-Headers-${HASH_SPIRV} include/spirv || die + mv ../Vulkan-Headers-${HASH_VULKAN} include/vulkan || die + mv ../libdisplay-info-${HASH_DISPLAYINFO} subprojects/libdisplay-info || die + fi + + default + + sed "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" \ + "${DISTDIR}"/setup_dxvk.sh > setup_dxvk.sh || die +} + +src_configure() { + use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} + + # AVX has a history of causing issues with this package, disable for safety + # https://bugs.winehq.org/show_bug.cgi?id=43516 + # https://bugs.winehq.org/show_bug.cgi?id=45289 + append-flags -mno-avx + + if [[ ${CHOST} != *-mingw* ]]; then + if [[ ! -v MINGW_BYPASS ]]; then + unset AR CC CXX RC STRIP + filter-flags '-fstack-clash-protection' #758914 + filter-flags '-fstack-protector*' #870136 + filter-flags '-fuse-ld=*' + filter-flags '-mfunction-return=thunk*' #878849 + fi + + CHOST_amd64=x86_64-w64-mingw32 + CHOST_x86=i686-w64-mingw32 + CHOST=$(usex x86 ${CHOST_x86} ${CHOST_amd64}) + + strip-unsupported-flags + fi + + multilib-minimal_src_configure +} + +multilib_src_configure() { + # multilib's ${CHOST_amd64}-gcc -m32 is unusable with crossdev, + # unset again so meson eclass will set ${CHOST}-gcc + others + use crossdev-mingw && [[ ! -v MINGW_BYPASS ]] && unset AR CC CXX RC STRIP + + local emesonargs=( + --prefix="${EPREFIX}"/usr/lib/${PN} + --{bin,lib}dir=x${MULTILIB_ABI_FLAG: -2} + $(meson_use {,enable_}d3d9) + $(meson_use {,enable_}d3d10) + $(meson_use {,enable_}d3d11) + $(meson_use {,enable_}dxgi) + $(usev !debug --strip) # portage won't strip .dll, so allow it here + ) + + meson_src_configure +} + +multilib_src_install_all() { + dobin setup_dxvk.sh + dodoc README.md dxvk.conf + + find "${ED}" -type f -name '*.a' -delete || die +} + +pkg_preinst() { + [[ -e ${EROOT}/usr/$(get_libdir)/dxvk/d3d11.dll ]] && DXVK_HAD_OVERLAY= +} + +pkg_postinst() { + if [[ ! ${REPLACING_VERSIONS} ]]; then + elog "To enable ${PN} on a wine prefix, you can run the following command:" + elog + elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink" + elog + elog "See ${EROOT}/usr/share/doc/${PF}/README.md* for details." + elog "Note: setup_dxvk.sh is unofficially temporarily provided as it was" + elog "removed upstream, handling may change in the future." + elif [[ -v DXVK_HAD_OVERLAY ]]; then + # temporary warning until this version is more widely used + elog "Gentoo's main repo ebuild for ${PN} uses different paths than most overlays." + elog "If you were using symbolic links in wine prefixes it may be necessary to" + elog "refresh them by re-running the command:" + elog + elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink" + elog + elog "Also, if you were using /etc/${PN}.conf, ${PN} is no longer patched to load" + elog "it. See ${EROOT}/usr/share/doc/${PF}/README.md* for handling configs." + fi + + if [[ ! ${REPLACING_VERSIONS##* } ]] || + ver_test ${REPLACING_VERSIONS##* } -lt 2.0 + then + elog + elog ">=${PN}-2.0 requires drivers and Wine to support vulkan-1.3, meaning:" + elog ">=wine-*-7.1 (or >=wine-proton-7.0), and >=mesa-22.0 (or >=nvidia-drivers-510)" + elog "For details, see: https://github.com/doitsujin/dxvk/wiki/Driver-support" + fi +} diff --git a/app-emulation/dxvk/dxvk-9999.ebuild b/app-emulation/dxvk/dxvk-9999.ebuild index 9b78cd87364a..7b1ccff1d6f4 100644 --- a/app-emulation/dxvk/dxvk-9999.ebuild +++ b/app-emulation/dxvk/dxvk-9999.ebuild @@ -1,10 +1,11 @@ -# Copyright 2022 Gentoo Authors +# Copyright 2022-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 +PYTHON_COMPAT=( python3_{9..11} ) MULTILIB_COMPAT=( abi_x86_{32,64} ) -inherit flag-o-matic meson-multilib +inherit flag-o-matic meson-multilib python-any-r1 if [[ ${PV} == 9999 ]]; then inherit git-r3 @@ -17,13 +18,15 @@ if [[ ${PV} == 9999 ]]; then else HASH_SPIRV=0bcc624926a25a2a273d07877fd25a6ff5ba1cfb HASH_VULKAN=98f440ce6868c94f5ec6e198cc1adda4760e8849 + HASH_DISPLAYINFO=d39344f466caae0495ebac4d49b03a886d83ba3a SRC_URI=" https://github.com/doitsujin/dxvk/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz https://github.com/KhronosGroup/SPIRV-Headers/archive/${HASH_SPIRV}.tar.gz -> ${PN}-spirv-headers-${HASH_SPIRV::10}.tar.gz https://github.com/KhronosGroup/Vulkan-Headers/archive/${HASH_VULKAN}.tar.gz - -> ${PN}-vulkan-headers-${HASH_VULKAN::10}.tar.gz" + -> ${PN}-vulkan-headers-${HASH_VULKAN::10}.tar.gz + https://gitlab.freedesktop.org/JoshuaAshton/libdisplay-info/-/archive/${HASH_DISPLAYINFO}/${PN}-libdisplay-info-${HASH_DISPLAYINFO::10}.tar.bz2" KEYWORDS="-* ~amd64 ~x86" fi # setup_dxvk.sh is no longer provided, fetch old until a better solution @@ -41,6 +44,7 @@ REQUIRED_USE=" d3d11? ( dxgi )" BDEPEND=" + ${PYTHON_DEPS} dev-util/glslang !crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )" @@ -67,9 +71,10 @@ pkg_pretend() { src_prepare() { if [[ ${PV} != 9999 ]]; then - rmdir include/{spirv,vulkan} || die + rmdir include/{spirv,vulkan} subprojects/libdisplay-info || die mv ../SPIRV-Headers-${HASH_SPIRV} include/spirv || die mv ../Vulkan-Headers-${HASH_VULKAN} include/vulkan || die + mv ../libdisplay-info-${HASH_DISPLAYINFO} subprojects/libdisplay-info || die fi default @@ -82,7 +87,8 @@ src_configure() { use crossdev-mingw || PATH=${BROOT}/usr/lib/mingw64-toolchain/bin:${PATH} # AVX has a history of causing issues with this package, disable for safety - # https://github.com/Tk-Glitch/PKGBUILDS/issues/515 + # https://bugs.winehq.org/show_bug.cgi?id=43516 + # https://bugs.winehq.org/show_bug.cgi?id=45289 append-flags -mno-avx if [[ ${CHOST} != *-mingw* ]]; then diff --git a/app-emulation/wine-staging/Manifest b/app-emulation/wine-staging/Manifest index 22cfe1ed37a1..4458f9cdf07c 100644 --- a/app-emulation/wine-staging/Manifest +++ b/app-emulation/wine-staging/Manifest @@ -3,9 +3,12 @@ AUX wine-staging-7.17-unwind.patch 1694 BLAKE2B ad8ba23e07a846152bd93e76a0b22686 AUX wine-staging-7.20-unwind.patch 1450 BLAKE2B 80e9222c95393aaa4b95e05597a4181030fc988d95e416d2f92631f29f640b9abb3dd0853d005de4725b41c09224e478741902075259d48a30830a923790579f SHA512 e1a72f1463be32975daa02064acb96189cd79cb41ff98f89b58e46c97100a3ac46405b1b9982378c9de275acbdb74168853e47b932e06398cdd2981b23f483ce DIST wine-7.19.tar.xz 28502612 BLAKE2B b7b270656955c7a1e1d84e8bbc7e3e8abff5aedadb5e8a458f0b1109d746875a359f3d2f53b1c9c6caae65d17fd1d205466cd3a884034a8bad6afe9456f13b5d SHA512 f76dbda97cccad4c0f249b5dd4e8d48afa832134f1704ae228650bb73ee82823e628b23bd53a3f8729e06a8933597ff2fffa5551f156fc9c9181b67c066747d5 DIST wine-7.22.tar.xz 28974052 BLAKE2B c86466964817b916ee8f7b687f193eda8bdd3fb17152ab1565971e36f43b12b540033ac1c5fa5d15576041febd32cf1ea2955732c5386debcbda46fb3acca0f1 SHA512 bf58a5b98bef5b291aff1eca3f94c28da95990e4c8da9af5e9e28b9480d57163d088b501b0c1bca5b568bf586dd9933cdc1ea1f371b78d95c94e2d25d0a65efc +DIST wine-8.0.tar.xz 29054044 BLAKE2B baf8f96b665119c9f38a148a2472dbe8f6ca8d4641d9d09d48cb72cb4de2585c274b8b7981c2fa622ead6da2f087c57652e9b48edc8a17c0cfd6be9a36732f02 SHA512 53ba813b260a65a271ec575822725b97631f60038fb026dcc0fe66862711eedcc29a8feb29ff54ae4f64458f85c290d8f3838eff5e4c77a5420a7d2b951fef77 DIST wine-staging-7.19.tar.gz 9523048 BLAKE2B e53fd47af493cbdc4542f908a39557324d70ad67ff2e06c80296c006a63518e43988750cab2f4d3d9197fc9c8a1e61ed4d96bcc310b82b6cfc8ec12b941f1c5c SHA512 c51cb18c4ae00eccf414f5edda18ebf363674ba7cfa95da135b3a43b7c012c086d454d6ac32b22d98e611bb87e55c3e1ee95571a4a0c9713028b5ac38e8aed3f DIST wine-staging-7.22.tar.gz 9528424 BLAKE2B e41f24f924117259715505f4f9998ef23a657bca5b0e285feb7f9fd732e6b566a495f48ec59af09b1d4d51db522b051028f6cbba748256e939929fbf978f0e44 SHA512 5fdac19ec290c67767fac71abe07d9350ec431919c67a0f2d2df18ced20f1d3dddb921b3d5586d03add187c6281e1a691cc220e8d2d5ad4eeb94015721479d65 +DIST wine-staging-8.0.tar.gz 9529620 BLAKE2B c9540195ea885d9f1e980232b0af471e92c61eb079cae35fdb3af5c13d4660b3466f751772440e38f15874082db296d16d1f1d68827a505b2dd949617eda0203 SHA512 76a729d7ced1ff634ddb455ddfaa66ca103b652f43cd152b57ada7431bb5fbb74f5e92bf2f4f329b6df6f5908130afad84e609cbce6df645d6cf8131e9b949f9 EBUILD wine-staging-7.19.ebuild 11179 BLAKE2B 58982c661d242e8e165d7b1d7083284eedd8cdee1a3aee6ee4a728b2e585772ccd8c93c06b490389dd566a54046cfdf7a092bdd2af3b31c68d60eb1926fe8364 SHA512 5047a1cfdb3480cc9654ea8d879bfbb2779d956dec6776f74f746577b62fa6a3ae6996895bd5acb9948fb74cac3be8eaddda0458abc131a96a83cfbea6452f53 EBUILD wine-staging-7.22.ebuild 11281 BLAKE2B f8be09ce1670d897fcc72d92e816140be8507d92c70a2fe58fbd224e522a74749ef158173f54f09025488a0d5b1a572112410e9774eafc5f684cb8c1b567c9c5 SHA512 58acbe4ddf7045a991f156fb8d70c89fc83e8cb3733884154f263078671e02f6cdf961cdc953709e8da818ab92f8830a5a065acfd17b4f21316b004be0ca112c +EBUILD wine-staging-8.0.ebuild 11313 BLAKE2B 8e6e5eeee1e58aa9da6f0424bf588d89d90434369dbb17511dfd44498a159de206b984b8af884e26cbfc5dfbf331090887c505d0e0f7e2bed1dfb8dfa78a951b SHA512 1b5c5e9bf2c799c80652629d4108d9b11d018515e7fc4b336ca3281e15e0061a1c2316106d239872d5f77c2fe640e4e5b5be1f54f42f66f917c356b934ee7ce1 EBUILD wine-staging-9999.ebuild 11313 BLAKE2B 8e6e5eeee1e58aa9da6f0424bf588d89d90434369dbb17511dfd44498a159de206b984b8af884e26cbfc5dfbf331090887c505d0e0f7e2bed1dfb8dfa78a951b SHA512 1b5c5e9bf2c799c80652629d4108d9b11d018515e7fc4b336ca3281e15e0061a1c2316106d239872d5f77c2fe640e4e5b5be1f54f42f66f917c356b934ee7ce1 MISC metadata.xml 2301 BLAKE2B 9b65253f5a19d8aafc6c9ccd361a0b8cdd14a600ddd51bf163603c7400b2c39bf147f7fe671e3aba68ff8f8f2874eec0b64dd73afe4dabad3667cd23ca99aee0 SHA512 885f7c8e2239733193d16b32bb29a21285ff732092ae0c095056ee311bdf9b7135200a29ede5958d668acf9777640f139ffc5ffe43b1455356ce4bc897621401 diff --git a/app-emulation/wine-staging/wine-staging-8.0.ebuild b/app-emulation/wine-staging/wine-staging-8.0.ebuild new file mode 100644 index 000000000000..b23645292240 --- /dev/null +++ b/app-emulation/wine-staging/wine-staging-8.0.ebuild @@ -0,0 +1,355 @@ +# Copyright 2022-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MULTILIB_COMPAT=( abi_x86_{32,64} ) +inherit autotools flag-o-matic multilib multilib-build toolchain-funcs wrapper + +WINE_GECKO=2.47.3 +WINE_MONO=7.4.0 + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/wine-staging/wine-staging.git" + WINE_EGIT_REPO_URI="https://gitlab.winehq.org/wine/wine.git" +else + (( $(ver_cut 2) )) && WINE_SDIR=$(ver_cut 1).x || WINE_SDIR=$(ver_cut 1).0 + SRC_URI=" + https://dl.winehq.org/wine/source/${WINE_SDIR}/wine-${PV}.tar.xz + https://github.com/wine-staging/wine-staging/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="-* ~amd64 ~x86" +fi +S="${WORKDIR}/wine-${PV}" + +DESCRIPTION="Free implementation of Windows(tm) on Unix, with Wine-Staging patchset" +HOMEPAGE="https://wiki.winehq.org/Wine-Staging" + +LICENSE="LGPL-2.1+ BSD-2 IJG MIT OPENLDAP ZLIB gsm libpng2 libtiff" +SLOT="${PV}" +IUSE=" + +X +abi_x86_32 +abi_x86_64 +alsa capi crossdev-mingw cups dos + llvm-libunwind debug custom-cflags +fontconfig +gecko gphoto2 + +gstreamer kerberos +mingw +mono netapi nls odbc opencl +opengl + osmesa pcap perl pulseaudio samba scanner +sdl selinux +ssl + +truetype udev udisks +unwind usb v4l +vulkan +xcomposite xinerama" +REQUIRED_USE=" + X? ( truetype ) + crossdev-mingw? ( mingw )" # bug #551124 for truetype + +# 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=" + X? ( + 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}] + opengl? ( + media-libs/libglvnd[X,${MULTILIB_USEDEP}] + osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] ) + ) + xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] ) + xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] ) + ) + cups? ( net-print/cups[${MULTILIB_USEDEP}] ) + fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] ) + kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] ) + netapi? ( net-fs/samba[${MULTILIB_USEDEP}] ) + odbc? ( dev-db/unixODBC[${MULTILIB_USEDEP}] ) + sdl? ( media-libs/libsdl2[haptic,joystick,${MULTILIB_USEDEP}] ) + ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] ) + truetype? ( media-libs/freetype[${MULTILIB_USEDEP}] ) + udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) + v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] ) + vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )" +WINE_COMMON_DEPEND=" + ${WINE_DLOPEN_DEPEND} + X? ( + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + ) + alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] ) + capi? ( net-libs/libcapi:=[${MULTILIB_USEDEP}] ) + gphoto2? ( media-libs/libgphoto2:=[${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}] + ) + opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) + pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] ) + pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] ) + scanner? ( media-gfx/sane-backends[${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 + dos? ( games-emulation/dosbox ) + 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 + ) + samba? ( net-fs/samba[winbind] ) + selinux? ( sec-policy/selinux-wine ) + udisks? ( sys-fs/udisks:2 )" +DEPEND=" + ${WINE_COMMON_DEPEND} + sys-kernel/linux-headers + X? ( x11-base/xorg-proto )" +BDEPEND=" + dev-lang/perl + sys-devel/binutils + sys-devel/bison + sys-devel/flex + virtual/pkgconfig + mingw? ( !crossdev-mingw? ( + >=dev-util/mingw64-toolchain-10.0.0_p1-r2[${MULTILIB_USEDEP}] + ) ) + nls? ( sys-devel/gettext )" +IDEPEND=">=app-eselect/eselect-wine-2" + +QA_TEXTRELS="usr/lib/*/wine/i386-unix/*.so" # uses -fno-PIC -Wl,-z,notext + +PATCHES=( + "${FILESDIR}"/${PN}-7.17-noexecstack.patch + "${FILESDIR}"/${PN}-7.20-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" + die "USE=crossdev-mingw is enabled, but ${mingw}-gcc was not found" + fi + done + fi +} + +src_unpack() { + if [[ ${PV} == *9999 ]]; then + EGIT_CHECKOUT_DIR=${WORKDIR}/${P} + git-r3_src_unpack + + EGIT_COMMIT=$("${BASH}" "${EGIT_CHECKOUT_DIR}"/patches/patchinstall.sh --upstream-commit) || die + EGIT_REPO_URI=${WINE_EGIT_REPO_URI} + EGIT_CHECKOUT_DIR=${S} + einfo "Fetching Wine commit matching the current patchset by default (${EGIT_COMMIT})" + git-r3_src_unpack + else + default + fi +} + +src_prepare() { + local staging=( + ./patchinstall.sh DESTDIR="${S}" + --all + --backend=eapply + --no-autoconf + -W winemenubuilder-Desktop_Icon_Path #652176 + ${MY_WINE_STAGING_CONF} + ) + + # source patcher in a subshell so can use eapply as a backend + ebegin "Running ${staging[*]}" + ( cd ../${P}/patches && . "${staging[@]}" ) + eend ${?} || die "Failed to apply the patchset" + + # 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 + + # always update for patches (including user's wrt #432348) + eautoreconf + tools/make_requests || die # perl +} + +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 + $(use_enable gecko mshtml) + $(use_enable mono mscoree) + --disable-tests + $(use_with X x) + $(use_with alsa) + $(use_with capi) + $(use_with cups) + $(use_with fontconfig) + $(use_with gphoto2 gphoto) + $(use_with gstreamer) + $(use_with kerberos gssapi) + $(use_with kerberos krb5) + $(use_with mingw) + $(use_with netapi) + $(use_with nls gettext) + $(use_with opencl) + $(use_with opengl) + $(use_with osmesa) + --without-oss # media-sound/oss is not packaged (OSSv4) + $(use_with pcap) + $(use_with pulseaudio pulse) + $(use_with scanner sane) + $(use_with sdl) + $(use_with ssl gnutls) + $(use_with truetype freetype) + $(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 vulkan) + $(use_with xcomposite) + $(use_with xinerama) + $(usev !odbc ac_cv_lib_soname_odbc=) + ) + + tc-ld-force-bfd # builds with non-bfd but broken at runtime (bug #867097) + filter-lto # build failure + use mingw || filter-flags -fno-plt # 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}}" + + if use mingw; then + # 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 + 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 + + # 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) + if use mingw; then + 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 + fi + + dodoc ANNOUNCE AUTHORS README* documentation/README* +} + +pkg_postinst() { + eselect wine update --if-unset || die +} + +pkg_postrm() { + eselect wine update --if-unset || die +} |