]> git.draconx.ca Git - gentoo-draconx.git/commitdiff
wine: Add 1.3.4 with ToTD patch.
authorNick Bowler <nbowler@draconx.ca>
Sat, 2 Oct 2010 18:52:52 +0000 (14:52 -0400)
committerNick Bowler <nbowler@draconx.ca>
Sat, 2 Oct 2010 18:52:52 +0000 (14:52 -0400)
app-emulation/wine/Manifest [new file with mode: 0644]
app-emulation/wine/files/0001-dsound-Restore-old-format-on-SetFormat-failure.patch [new file with mode: 0644]
app-emulation/wine/files/wine-1.1.15-winegcc.patch [new file with mode: 0644]
app-emulation/wine/wine-1.3.4.ebuild [new file with mode: 0644]

diff --git a/app-emulation/wine/Manifest b/app-emulation/wine/Manifest
new file mode 100644 (file)
index 0000000..e9b0dd4
--- /dev/null
@@ -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 (file)
index 0000000..c2ee92c
--- /dev/null
@@ -0,0 +1,75 @@
+From 5f3e18eb2771b875388b6748409325cfeb29061d Mon Sep 17 00:00:00 2001
+From: Nick Bowler <nbowler@draconx.ca>
+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 (file)
index 0000000..a1cd890
--- /dev/null
@@ -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 (file)
index 0000000..ba776ab
--- /dev/null
@@ -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
+}