From 98b911b67554ddbecaa92b471a6cbdf43716766a Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sun, 13 Jan 2019 00:19:34 +0000 Subject: app-emulation/gallium-nine-standalone: New package Package-Manager: Portage-2.3.55, Repoman-2.3.12 Signed-off-by: James Le Cuirot --- app-emulation/gallium-nine-standalone/Manifest | 1 + .../gallium-nine-standalone/files/flags.patch | 28 ++++++ .../files/nine-dll-path.patch | 12 +++ .../gallium-nine-standalone-0_p20190113.ebuild | 110 +++++++++++++++++++++ .../gallium-nine-standalone-9999.ebuild | 110 +++++++++++++++++++++ app-emulation/gallium-nine-standalone/metadata.xml | 20 ++++ 6 files changed, 281 insertions(+) create mode 100644 app-emulation/gallium-nine-standalone/Manifest create mode 100644 app-emulation/gallium-nine-standalone/files/flags.patch create mode 100644 app-emulation/gallium-nine-standalone/files/nine-dll-path.patch create mode 100644 app-emulation/gallium-nine-standalone/gallium-nine-standalone-0_p20190113.ebuild create mode 100644 app-emulation/gallium-nine-standalone/gallium-nine-standalone-9999.ebuild create mode 100644 app-emulation/gallium-nine-standalone/metadata.xml (limited to 'app-emulation/gallium-nine-standalone') diff --git a/app-emulation/gallium-nine-standalone/Manifest b/app-emulation/gallium-nine-standalone/Manifest new file mode 100644 index 00000000000..725f6ef859f --- /dev/null +++ b/app-emulation/gallium-nine-standalone/Manifest @@ -0,0 +1 @@ +DIST gallium-nine-standalone-0_p20190113.tar.gz 58954 BLAKE2B 29be3f5501cc4463aa05216b7360e2a5a949c498dd1c3a0170d5a2f7f508c1fe3171f90f8e35bbe95530be5d6b98b70c5a99362e69d4a64615e40fbb9c8eb96a SHA512 2b2ab79b3d9f2c19967a16200cf69e7eba589d4d3d8918890b9504a5cb4895cd76000b6f3852baa738845e8508c6d67843f45d368225878d446ec6e907f75de4 diff --git a/app-emulation/gallium-nine-standalone/files/flags.patch b/app-emulation/gallium-nine-standalone/files/flags.patch new file mode 100644 index 00000000000..217dcddf35b --- /dev/null +++ b/app-emulation/gallium-nine-standalone/files/flags.patch @@ -0,0 +1,28 @@ +diff -Naur a/tools/cross-wine32.in b/tools/cross-wine32.in +--- a/tools/cross-wine32.in 2019-01-12 16:45:09.190471883 +0000 ++++ b/tools/cross-wine32.in 2019-01-12 16:48:22.569404982 +0000 +@@ -5,8 +5,8 @@ + pkgconfig = '@PKG_CONFIG@' + + [properties] +-c_args = ['-m32', '--no-gnu-unique'] +-c_link_args = ['-m32', '-mwindows'] ++c_args = @CFLAGS@ + ['-m32', '--no-gnu-unique'] ++c_link_args = @LDFLAGS@ + ['-m32', '-mwindows'] + needs_exe_wrapper = true + + [host_machine] +diff -Naur a/tools/cross-wine64.in b/tools/cross-wine64.in +--- a/tools/cross-wine64.in 2019-01-12 16:45:09.190471883 +0000 ++++ b/tools/cross-wine64.in 2019-01-12 16:48:19.865349306 +0000 +@@ -5,8 +5,8 @@ + pkgconfig = '@PKG_CONFIG@' + + [properties] +-c_args = ['-m64', '--no-gnu-unique'] +-c_link_args = ['-m64', '-mwindows'] ++c_args = @CFLAGS@ + ['-m64', '--no-gnu-unique'] ++c_link_args = @LDFLAGS@ + ['-m64', '-mwindows'] + needs_exe_wrapper = true + + [host_machine] diff --git a/app-emulation/gallium-nine-standalone/files/nine-dll-path.patch b/app-emulation/gallium-nine-standalone/files/nine-dll-path.patch new file mode 100644 index 00000000000..9399dde3e4f --- /dev/null +++ b/app-emulation/gallium-nine-standalone/files/nine-dll-path.patch @@ -0,0 +1,12 @@ +diff -Naur a/ninewinecfg/main.c b/ninewinecfg/main.c +--- a/ninewinecfg/main.c 2019-01-12 19:43:40.113737110 +0000 ++++ b/ninewinecfg/main.c 2019-01-12 19:46:54.213703713 +0000 +@@ -47,7 +47,7 @@ + #define WINE_STAGING 1 + #endif + +-static const char * const fn_nine_dll = "d3d9-nine.dll"; ++static const char * const fn_nine_dll = G9DLL; + static const char * const reg_path_dll_overrides = "Software\\Wine\\DllOverrides"; + static const char * const reg_path_dll_redirects = "Software\\Wine\\DllRedirects"; + static const char * const reg_key_d3d9 = "d3d9"; diff --git a/app-emulation/gallium-nine-standalone/gallium-nine-standalone-0_p20190113.ebuild b/app-emulation/gallium-nine-standalone/gallium-nine-standalone-0_p20190113.ebuild new file mode 100644 index 00000000000..74e8ff9eb03 --- /dev/null +++ b/app-emulation/gallium-nine-standalone/gallium-nine-standalone-0_p20190113.ebuild @@ -0,0 +1,110 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit meson multilib-minimal toolchain-funcs + +DESCRIPTION="A standalone version of the WINE parts of Gallium Nine" +HOMEPAGE="https://github.com/dhewg/nine" + +if [[ $PV = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/dhewg/nine.git" +else + COMMIT="e10dd1a770c91d5ff13343c9a0186665b7df6114" + SRC_URI="https://github.com/dhewg/nine/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/nine-${COMMIT}" + KEYWORDS="-* ~amd64 ~x86" +fi + +LICENSE="LGPL-2.1+" +SLOT="0" + +# We don't put Wine in RDEPEND because you can also use this with +# Steam's Proton. + +RDEPEND=" + media-libs/mesa[d3d9,egl,${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libxcb[${MULTILIB_USEDEP}] +" + +DEPEND=" + ${RDEPEND} + virtual/pkgconfig[${MULTILIB_USEDEP}] + virtual/wine[${MULTILIB_USEDEP}] +" + +PATCHES=( + "${FILESDIR}"/flags.patch + "${FILESDIR}"/nine-dll-path.patch +) + +bits() { + if [[ ${ABI} = amd64 ]]; then + echo 64 + else + echo 32 + fi +} + +src_prepare() { + default + + # Upstream includes a bootstrap.sh script with hardcoded CHOSTs to + # create the Meson cross files. We improve on that here but also + # inject CFLAGS and LDFLAGS, partly to simply respect these, and + # partly to allow d3d9-nine.dll to be loaded from a location outside + # WINEPREFIX. This avoids the need for the nine-install.sh script, + # which doesn't play well with our multi-Wine environment. + bootstrap_nine() { + local file=tools/cross-wine$(bits) + local g9dll=Z:${EPREFIX//\//\\}\\usr\\$(get_libdir)\\d3d9-nine.dll.so + + # Yes, these ridiculous backslashes are needed! + g9dll=\\\\\\\\\\\"${g9dll//\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}\\\\\\\\\\\" + + sed \ + -e "s!@PKG_CONFIG@!$(tc-getPKG_CONFIG)!" \ + -e "s!@CFLAGS@!$(_meson_env_array "${CFLAGS} -DG9DLL=${g9dll}")!" \ + -e "s!@LDFLAGS@!$(_meson_env_array "${LDFLAGS}")!" \ + ${file}.in > ${file} || die + } + + multilib_foreach_abi bootstrap_nine +} + +multilib_src_configure() { + # We override bindir because otherwise the 32-bit exe is overwritten + # by the 64-bit exe and we need both of them. + local emesonargs=( + --cross-file "${S}/tools/cross-wine$(bits)" + --bindir "$(get_libdir)" + ) + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile +} + +multilib_src_install() { + meson_src_install +} + +pkg_postinst() { + local bits=$(bits) + + einfo "Don't remove the Z: drive from your WINEPREFIX as this relies on it." + einfo + einfo "To set up the ${bits}-bit library, launch your preferred Wine as follows:" + einfo " wine${bits/32} ${EPREFIX}/usr/$(get_libdir)/ninewinecfg.exe.so" + + if use abi_x86_64 && use abi_x86_32; then + einfo + einfo "To set up the 32-bit library, launch your preferred Wine as follows:" + einfo " wine ${EPREFIX}/usr/$(ABI=x86 get_libdir)/ninewinecfg.exe.so" + fi +} diff --git a/app-emulation/gallium-nine-standalone/gallium-nine-standalone-9999.ebuild b/app-emulation/gallium-nine-standalone/gallium-nine-standalone-9999.ebuild new file mode 100644 index 00000000000..0e73ee93be3 --- /dev/null +++ b/app-emulation/gallium-nine-standalone/gallium-nine-standalone-9999.ebuild @@ -0,0 +1,110 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit meson multilib-minimal toolchain-funcs + +DESCRIPTION="A standalone version of the WINE parts of Gallium Nine" +HOMEPAGE="https://github.com/dhewg/nine" + +if [[ $PV = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/dhewg/nine.git" +else + COMMIT="" + SRC_URI="https://github.com/dhewg/nine/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/nine-${COMMIT}" + KEYWORDS="-* ~amd64 ~x86" +fi + +LICENSE="LGPL-2.1+" +SLOT="0" + +# We don't put Wine in RDEPEND because you can also use this with +# Steam's Proton. + +RDEPEND=" + media-libs/mesa[d3d9,egl,${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libxcb[${MULTILIB_USEDEP}] +" + +DEPEND=" + ${RDEPEND} + virtual/pkgconfig[${MULTILIB_USEDEP}] + virtual/wine[${MULTILIB_USEDEP}] +" + +PATCHES=( + "${FILESDIR}"/flags.patch + "${FILESDIR}"/nine-dll-path.patch +) + +bits() { + if [[ ${ABI} = amd64 ]]; then + echo 64 + else + echo 32 + fi +} + +src_prepare() { + default + + # Upstream includes a bootstrap.sh script with hardcoded CHOSTs to + # create the Meson cross files. We improve on that here but also + # inject CFLAGS and LDFLAGS, partly to simply respect these, and + # partly to allow d3d9-nine.dll to be loaded from a location outside + # WINEPREFIX. This avoids the need for the nine-install.sh script, + # which doesn't play well with our multi-Wine environment. + bootstrap_nine() { + local file=tools/cross-wine$(bits) + local g9dll=Z:${EPREFIX//\//\\}\\usr\\$(get_libdir)\\d3d9-nine.dll.so + + # Yes, these ridiculous backslashes are needed! + g9dll=\\\\\\\\\\\"${g9dll//\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}\\\\\\\\\\\" + + sed \ + -e "s!@PKG_CONFIG@!$(tc-getPKG_CONFIG)!" \ + -e "s!@CFLAGS@!$(_meson_env_array "${CFLAGS} -DG9DLL=${g9dll}")!" \ + -e "s!@LDFLAGS@!$(_meson_env_array "${LDFLAGS}")!" \ + ${file}.in > ${file} || die + } + + multilib_foreach_abi bootstrap_nine +} + +multilib_src_configure() { + # We override bindir because otherwise the 32-bit exe is overwritten + # by the 64-bit exe and we need both of them. + local emesonargs=( + --cross-file "${S}/tools/cross-wine$(bits)" + --bindir "$(get_libdir)" + ) + meson_src_configure +} + +multilib_src_compile() { + meson_src_compile +} + +multilib_src_install() { + meson_src_install +} + +pkg_postinst() { + local bits=$(bits) + + einfo "Don't remove the Z: drive from your WINEPREFIX as this relies on it." + einfo + einfo "To set up the ${bits}-bit library, launch your preferred Wine as follows:" + einfo " wine${bits/32} ${EPREFIX}/usr/$(get_libdir)/ninewinecfg.exe.so" + + if use abi_x86_64 && use abi_x86_32; then + einfo + einfo "To set up the 32-bit library, launch your preferred Wine as follows:" + einfo " wine ${EPREFIX}/usr/$(ABI=x86 get_libdir)/ninewinecfg.exe.so" + fi +} diff --git a/app-emulation/gallium-nine-standalone/metadata.xml b/app-emulation/gallium-nine-standalone/metadata.xml new file mode 100644 index 00000000000..c661f33f58d --- /dev/null +++ b/app-emulation/gallium-nine-standalone/metadata.xml @@ -0,0 +1,20 @@ + + + + + chewi@gentoo.org + James Le Cuirot + + + wine@gentoo.org + Wine + + +Gallium Nine Standalone, as the name implies, is a standalone version of the WINE parts of Gallium Nine. + +This decouples Gallium Nine from the WINE tree, so that it can be used with any WINE version. There is no need for any WINE patches. A stable, development, or staging WINE release is sufficient. + + + dhewg/nine + + -- cgit v1.2.1