From 104829c0261d7fddff84a916e5410e6ffe1bcd7d Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 2 Oct 2010 14:52:52 -0400 Subject: [PATCH] wine: Add 1.3.4 with ToTD patch. --- app-emulation/wine/Manifest | 9 + ...tore-old-format-on-SetFormat-failure.patch | 75 +++++++ .../wine/files/wine-1.1.15-winegcc.patch | 55 +++++ app-emulation/wine/wine-1.3.4.ebuild | 210 ++++++++++++++++++ 4 files changed, 349 insertions(+) create mode 100644 app-emulation/wine/Manifest create mode 100644 app-emulation/wine/files/0001-dsound-Restore-old-format-on-SetFormat-failure.patch create mode 100644 app-emulation/wine/files/wine-1.1.15-winegcc.patch create mode 100644 app-emulation/wine/wine-1.3.4.ebuild diff --git a/app-emulation/wine/Manifest b/app-emulation/wine/Manifest new file mode 100644 index 0000000..e9b0dd4 --- /dev/null +++ b/app-emulation/wine/Manifest @@ -0,0 +1,9 @@ +AUX 0001-dsound-Restore-old-format-on-SetFormat-failure.patch 2282 RMD160 ed26acbfa51e2c2b8fbd8cd76fa8781090c50bb5 SHA1 eb76cb1e2950ac558bd225a8388956b207506ee6 SHA256 c6120f7188a499089f6d5ae164386893b53ae341147d49bfe2c4ede09ce17ab9 +AUX wine-1.1.15-winegcc.patch 1556 RMD160 ca7e0df0a45507e7d31ed81c5712111b83ed9bfa SHA1 4b155fe7cb5e831b7f92757d52aa1ab12569b232 SHA256 dbd89db561d7583faf317d795b8c11231575d885e21c6414add39079604dbd0d +DIST wine-1.3.4.tar.bz2 18079846 RMD160 ebbbf31aac547ee25ecf6c0171e29ae312c853d8 SHA1 7dbb1716cf83b61232f64bcc25e7e2d109321e49 SHA256 449387f5672cc535548740eef90403afd5d3cd678d3686bccf62813958825fdc +DIST wine_gecko-1.1.0-x86.cab 8868851 RMD160 1867734d6ab35f4e66f717789832e69aac06e93b SHA1 1b6c637207b6f032ae8a52841db9659433482714 SHA256 1786e1fd38a0361a3956864f74ebac20452c012316f296ad8d86840e31be0b29 +DIST wine_gecko-1.1.0-x86_64.cab 8940997 RMD160 76364b01b6756db79989feea9de14aeec4ba4675 SHA1 55b4b60cd2a48631d6236fb411c3a94d806d9906 SHA256 b8bea5b6400d191c05b2295c79285309fe331283648457bed48f7e2387773b7a +DIST winepulse-0.35-configure.ac.patch 2826 RMD160 e419d43667be01af9b24a0e46822c41572a6ff9d SHA1 4943381128fd9555280884e2bb5867be4a8731d9 SHA256 837bffaaddb6b7b0a474c7262a57f12e250e135cf6228dde1a22849f66de1250 +DIST winepulse-0.36.patch 101815 RMD160 9a20076436a7e49c317bc624dd71b61c93acddff SHA1 aa6a4c9d4619f8452aad8c457c879769cab8f8fc SHA256 7508b171bfecb461ecb464426cb4bcd9c3ff77645b787fcbf61e27dd34fe1b05 +DIST winepulse-0.38-winecfg.patch 13088 RMD160 e7aa8f91c20b6d706fc12e11677440f19890f4c7 SHA1 55b785636d2982f19e0634b26eafffbe46b79c60 SHA256 051ef1cb5598c319152ad28b85733927a711b45e0bfa92f0b0b2331588f5894e +EBUILD wine-1.3.4.ebuild 5768 RMD160 5da3ba4f091845c3bd809f5995aa83d5d6fc13c8 SHA1 24e621f6fb3045e38cdae70117b054a1fc2935b0 SHA256 dcf1338a78016bd1cf7303444abf2904634db9e4d8d21c102a7e09a612b58b1d diff --git a/app-emulation/wine/files/0001-dsound-Restore-old-format-on-SetFormat-failure.patch b/app-emulation/wine/files/0001-dsound-Restore-old-format-on-SetFormat-failure.patch new file mode 100644 index 0000000..c2ee92c --- /dev/null +++ b/app-emulation/wine/files/0001-dsound-Restore-old-format-on-SetFormat-failure.patch @@ -0,0 +1,75 @@ +From 5f3e18eb2771b875388b6748409325cfeb29061d Mon Sep 17 00:00:00 2001 +From: Nick Bowler +Date: Sat, 2 Oct 2010 12:50:09 -0400 +Subject: [PATCH] dsound: Restore old format on SetFormat failure. + +The Typing of the Dead, and apparently some other games, expect this to +happen. + +Fixes bug #18823. +--- + dlls/dsound/primary.c | 20 +++++++++++++++----- + 1 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c +index 8a054f8..aa8450f 100644 +--- a/dlls/dsound/primary.c ++++ b/dlls/dsound/primary.c +@@ -441,10 +441,17 @@ HRESULT DSOUND_PrimaryGetPosition(DirectSoundDevice *device, LPDWORD playpos, LP + return DS_OK; + } + ++static DWORD DSOUND_GetFormatSize(LPCWAVEFORMATEX wfex) ++{ ++ if (wfex->wFormatTag == WAVE_FORMAT_PCM) ++ return sizeof(WAVEFORMATEX); ++ else ++ return sizeof(WAVEFORMATEX) + wfex->cbSize; ++} ++ + LPWAVEFORMATEX DSOUND_CopyFormat(LPCWAVEFORMATEX wfex) + { +- DWORD size = wfex->wFormatTag == WAVE_FORMAT_PCM ? +- sizeof(WAVEFORMATEX) : sizeof(WAVEFORMATEX) + wfex->cbSize; ++ DWORD size = DSOUND_GetFormatSize(wfex); + LPWAVEFORMATEX pwfx = HeapAlloc(GetProcessHeap(),0,size); + if (pwfx == NULL) { + WARN("out of memory\n"); +@@ -501,11 +508,10 @@ static HRESULT DSOUND_PrimarySetFormat(DirectSoundDevice *device, LPCWAVEFORMATE + device->pwfx = DSOUND_CopyFormat(wfex); + if (device->pwfx == NULL) { + device->pwfx = oldpwfx; ++ oldpwfx = NULL; + err = DSERR_OUTOFMEMORY; + goto done; + } +- /* TODO: on failure below (bad format?), reinstall oldpwfx */ +- HeapFree(GetProcessHeap(), 0, oldpwfx); + + if (!(device->drvdesc.dwFlags & DSDDESC_DOMMSYSTEMSETFORMAT) && device->hwbuf) { + err = IDsDriverBuffer_SetFormat(device->hwbuf, device->pwfx); +@@ -520,9 +526,12 @@ static HRESULT DSOUND_PrimarySetFormat(DirectSoundDevice *device, LPCWAVEFORMATE + } + + if (err != DSERR_BUFFERLOST && FAILED(err)) { ++ DWORD size = DSOUND_GetFormatSize(oldpwfx); + WARN("IDsDriverBuffer_SetFormat failed\n"); +- if (!forced) ++ if (!forced) { ++ CopyMemory(device->pwfx, oldpwfx, size); + err = DS_OK; ++ } + goto done; + } + +@@ -599,6 +608,7 @@ done: + RtlReleaseResource(&(device->buffer_list_lock)); + /* **** */ + ++ HeapFree(GetProcessHeap(), 0, oldpwfx); + return err; + } + +-- +1.7.2.2 + diff --git a/app-emulation/wine/files/wine-1.1.15-winegcc.patch b/app-emulation/wine/files/wine-1.1.15-winegcc.patch new file mode 100644 index 0000000..a1cd890 --- /dev/null +++ b/app-emulation/wine/files/wine-1.1.15-winegcc.patch @@ -0,0 +1,55 @@ +http://bugs.gentoo.org/260726 + +--- wine-1.1.15/tools/winegcc/winegcc.c ++++ wine-1.1.15/tools/winegcc/winegcc.c +@@ -215,10 +215,13 @@ + strarray* files; + }; + ++#undef FORCE_POINTER_SIZE + #ifdef __i386__ + static const enum target_cpu build_cpu = CPU_x86; ++#define FORCE_POINTER_SIZE + #elif defined(__x86_64__) + static const enum target_cpu build_cpu = CPU_x86_64; ++#define FORCE_POINTER_SIZE + #elif defined(__sparc__) + static const enum target_cpu build_cpu = CPU_SPARC; + #elif defined(__ALPHA__) +@@ -968,6 +971,9 @@ + opts.linker_args = strarray_alloc(); + opts.compiler_args = strarray_alloc(); + opts.winebuild_args = strarray_alloc(); ++#ifdef FORCE_POINTER_SIZE ++ opts.force_pointer_size = sizeof(size_t); ++#endif + + /* determine the processor type */ + if (strendswith(argv[0], "winecpp")) opts.processor = proc_cpp; +--- wine-1.1.15/tools/winebuild/main.c ++++ wine-1.1.15/tools/winebuild/main.c +@@ -50,10 +50,13 @@ + int link_ext_symbols = 0; + int force_pointer_size = 0; + ++#undef FORCE_POINTER_SIZE + #ifdef __i386__ + enum target_cpu target_cpu = CPU_x86; ++#define FORCE_POINTER_SIZE + #elif defined(__x86_64__) + enum target_cpu target_cpu = CPU_x86_64; ++#define FORCE_POINTER_SIZE + #elif defined(__sparc__) + enum target_cpu target_cpu = CPU_SPARC; + #elif defined(__ALPHA__) +@@ -574,6 +577,10 @@ + signal( SIGTERM, exit_on_signal ); + signal( SIGINT, exit_on_signal ); + ++#ifdef FORCE_POINTER_SIZE ++ force_pointer_size = sizeof(size_t); ++#endif ++ + output_file = stdout; + argv = parse_options( argc, argv, spec ); + diff --git a/app-emulation/wine/wine-1.3.4.ebuild b/app-emulation/wine/wine-1.3.4.ebuild new file mode 100644 index 0000000..ba776ab --- /dev/null +++ b/app-emulation/wine/wine-1.3.4.ebuild @@ -0,0 +1,210 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.3.3.ebuild,v 1.3 2010/09/25 05:35:39 vapier Exp $ + +EAPI="2" + +inherit eutils flag-o-matic multilib + +if [[ ${PV} == "9999" ]] ; then + EGIT_REPO_URI="git://source.winehq.org/git/wine.git" + inherit git autotools + SRC_URI="" + #KEYWORDS="" +else + AUTOTOOLS_AUTO_DEPEND="no" + inherit autotools + MY_P="${PN}-${PV/_/-}" + SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2" + KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd" + S=${WORKDIR}/${MY_P} +fi + +pulse_patches() { echo "$1"/winepulse-{0.36,0.35-configure.ac,0.38-winecfg}.patch ; } +GV="1.1.0" +DESCRIPTION="free implementation of Windows(tm) on Unix" +HOMEPAGE="http://www.winehq.org/" +SRC_URI="${SRC_URI} + gecko? ( + mirror://sourceforge/wine/wine_gecko-${GV}-x86.cab + win64? ( mirror://sourceforge/wine/wine_gecko-${GV}-x86_64.cab ) + ) + pulseaudio? ( `pulse_patches http://art.ified.ca/downloads/winepulse` )" + +LICENSE="LGPL-2.1" +SLOT="0" +IUSE="alsa capi cups custom-cflags dbus esd fontconfig +gecko gnutls gphoto2 gsm hal jack jpeg lcms ldap mp3 nas ncurses openal +opengl +oss +perl png pulseaudio samba scanner ssl test +threads +truetype +win32 +win64 +X xcomposite xinerama xml" +RESTRICT="test" #72375 + +MLIB_DEPS="amd64? ( + truetype? ( >=app-emulation/emul-linux-x86-xlibs-2.1 ) + X? ( + >=app-emulation/emul-linux-x86-xlibs-2.1 + >=app-emulation/emul-linux-x86-soundlibs-2.1 + ) + openal? ( app-emulation/emul-linux-x86-sdl ) + opengl? ( app-emulation/emul-linux-x86-opengl ) + app-emulation/emul-linux-x86-baselibs + >=sys-kernel/linux-headers-2.6 + )" +RDEPEND="truetype? ( >=media-libs/freetype-2.0.0 media-fonts/corefonts ) + perl? ( dev-lang/perl dev-perl/XML-Simple ) + capi? ( net-dialup/capi4k-utils ) + ncurses? ( >=sys-libs/ncurses-5.2 ) + fontconfig? ( media-libs/fontconfig ) + gphoto2? ( media-libs/libgphoto2 ) + jack? ( media-sound/jack-audio-connection-kit ) + openal? ( media-libs/openal ) + dbus? ( sys-apps/dbus ) + gnutls? ( net-libs/gnutls ) + hal? ( sys-apps/hal ) + X? ( + x11-libs/libXcursor + x11-libs/libXrandr + x11-libs/libXi + x11-libs/libXmu + x11-libs/libXxf86vm + x11-apps/xmessage + ) + xinerama? ( x11-libs/libXinerama ) + alsa? ( media-libs/alsa-lib ) + esd? ( media-sound/esound ) + nas? ( media-libs/nas ) + cups? ( net-print/cups ) + opengl? ( virtual/opengl ) + pulseaudio? ( media-sound/pulseaudio ${AUTOTOOLS_DEPEND} ) + gsm? ( media-sound/gsm ) + jpeg? ( media-libs/jpeg ) + ldap? ( net-nds/openldap ) + lcms? ( =media-libs/lcms-1* ) + mp3? ( >=media-sound/mpg123-1.5.0 ) + samba? ( >=net-fs/samba-3.0.25 ) + xml? ( dev-libs/libxml2 dev-libs/libxslt ) + scanner? ( media-gfx/sane-backends ) + ssl? ( dev-libs/openssl ) + png? ( media-libs/libpng ) + !win64? ( ${MLIB_DEPS} ) + win32? ( ${MLIB_DEPS} ) + xcomposite? ( x11-libs/libXcomposite ) " +DEPEND="${RDEPEND} + X? ( + x11-proto/inputproto + x11-proto/xextproto + x11-proto/xf86vidmodeproto + ) + xinerama? ( x11-proto/xineramaproto ) + sys-devel/bison + sys-devel/flex" + +src_unpack() { + if use win64 ; then + [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]] \ + && die "you need gcc-4.4+ to build 64bit wine" + fi + + if [[ ${PV} == "9999" ]] ; then + git_src_unpack + else + unpack ${MY_P}.tar.bz2 + fi +} + +src_prepare() { + if use pulseaudio ; then + EPATCH_OPTS=-p1 epatch `pulse_patches "${DISTDIR}"` + eautoreconf + fi + epatch "${FILESDIR}"/${PN}-1.1.15-winegcc.patch #260726 + epatch "${FILESDIR}"/0001-dsound-Restore-old-format-on-SetFormat-failure.patch + epatch_user #282735 + sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die + sed -i '/^MimeType/d' tools/wine.desktop || die #117785 +} + +do_configure() { + local builddir="${WORKDIR}/wine$1" + mkdir -p "${builddir}" + pushd "${builddir}" >/dev/null + + ECONF_SOURCE=${S} \ + econf \ + --sysconfdir=/etc/wine \ + $(use_with alsa) \ + $(use_with capi) \ + $(use_with lcms cms) \ + $(use_with cups) \ + $(use_with ncurses curses) \ + $(use_with esd) \ + $(use_with fontconfig) \ + $(use_with gnutls) \ + $(use_with gphoto2 gphoto) \ + $(use_with gsm) \ + $(! use dbus && echo --without-hal || use_with hal) \ + $(use_with jack) \ + $(use_with jpeg) \ + $(use_with ldap) \ + $(use_with mp3 mpg123) \ + $(use_with nas) \ + $(use_with openal) \ + $(use_with opengl) \ + $(use_with ssl openssl) \ + $(use_with oss) \ + $(use_with png) \ + $(use_with threads pthread) \ + $(use pulseaudio && use_with pulseaudio pulse) \ + $(use_with scanner sane) \ + $(use_enable test tests) \ + $(use_with truetype freetype) \ + $(use_with X x) \ + $(use_with xcomposite) \ + $(use_with xinerama) \ + $(use_with xml) \ + $(use_with xml xslt) \ + $2 + + emake -j1 depend || die "depend" + + popd >/dev/null +} +src_configure() { + export LDCONFIG=/bin/true + use custom-cflags || strip-flags + + if use win64 ; then + do_configure 64 --enable-win64 + use win32 && ABI=x86 do_configure 32 --with-wine64=../wine64 + else + ABI=x86 do_configure 32 --disable-win64 + fi +} + +src_compile() { + local b + for b in 64 32 ; do + local builddir="${WORKDIR}/wine${b}" + [[ -d ${builddir} ]] || continue + emake -C "${builddir}" all || die + done +} + +src_install() { + local b + for b in 64 32 ; do + local builddir="${WORKDIR}/wine${b}" + [[ -d ${builddir} ]] || continue + emake -C "${builddir}" install DESTDIR="${D}" || die + done + dodoc ANNOUNCE AUTHORS README + if use gecko ; then + insinto /usr/share/wine/gecko + doins "${DISTDIR}"/wine_gecko-${GV}-x86.cab || die + use win64 && { doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.cab || die ; } + fi + if ! use perl ; then + rm "${D}"/usr/bin/{wine{dump,maker},function_grep.pl} "${D}"/usr/share/man/man1/wine{dump,maker}.1 || die + fi +} + +pkg_postinst() { + paxctl -psmr "${ROOT}"/usr/bin/wine{,-preloader} 2>/dev/null #255055 +} -- 2.43.2