diff options
-rw-r--r-- | .SRCINFO | 58 | ||||
-rw-r--r--[-rwxr-xr-x] | 30-win32-aliases.conf | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | PKGBUILD | 131 | ||||
-rw-r--r-- | nine-1.7.52.patch (renamed from nine-1.7.51.patch) | 6 | ||||
-rw-r--r-- | wbemprox_query.patch | 136 | ||||
-rw-r--r--[-rwxr-xr-x] | wine.install | 0 |
6 files changed, 239 insertions, 92 deletions
@@ -1,8 +1,8 @@ pkgbase = wine-gaming-nine - pkgdesc = Based off wine-staging-d3dadapter with a few more hacks - pkgver = 1.7.51 - pkgrel = 2 - url = http://www.winehq.com + pkgdesc = Based off wine-staging, including the gallium-nine patches and some more hacks + pkgver = 1.7.52 + pkgrel = 1 + url = http://www.wine-staging.com install = wine.install arch = i686 arch = x86_64 @@ -30,12 +30,8 @@ pkgbase = wine-gaming-nine makedepends = lib32-libxmu makedepends = libxxf86vm makedepends = lib32-libxxf86vm - makedepends = libxml2 - makedepends = lib32-libxml2 makedepends = libldap makedepends = lib32-libldap - makedepends = lcms2 - makedepends = lib32-lcms2 makedepends = mpg123 makedepends = lib32-mpg123 makedepends = openal @@ -48,14 +44,26 @@ pkgbase = wine-gaming-nine makedepends = lib32-libxcomposite makedepends = mesa makedepends = lib32-mesa + makedepends = libgl + makedepends = lib32-libgl makedepends = libcl makedepends = lib32-libcl makedepends = libxslt makedepends = lib32-libxslt + makedepends = libpulse + makedepends = lib32-libpulse + makedepends = libva + makedepends = lib32-libva makedepends = samba makedepends = opencl-headers + makedepends = attr + makedepends = lib32-attr makedepends = fontconfig makedepends = lib32-fontconfig + makedepends = lcms2 + makedepends = lib32-lcms2 + makedepends = libxml2 + makedepends = lib32-libxml2 makedepends = libxcursor makedepends = lib32-libxcursor makedepends = libxrandr @@ -85,10 +93,6 @@ pkgbase = wine-gaming-nine optdepends = lib32-libldap optdepends = gnutls optdepends = lib32-gnutls - optdepends = lcms2 - optdepends = lib32-lcms2 - optdepends = libxml2 - optdepends = lib32-libxml2 optdepends = mpg123 optdepends = lib32-mpg123 optdepends = openal @@ -113,38 +117,44 @@ pkgbase = wine-gaming-nine optdepends = lib32-libcl optdepends = libxslt optdepends = lib32-libxslt + optdepends = libva + optdepends = lib32-libva optdepends = cups optdepends = samba optdepends = dosbox - provides = bin32-wine=1.7.51 - provides = wine-wow64=1.7.51 - provides = wine=1.7.51 + provides = bin32-wine=1.7.52 + provides = wine=1.7.52 + provides = wine-wow64=1.7.52 conflicts = bin32-wine - conflicts = wine-wow64 conflicts = wine - replaces = bin32-wine - replaces = wine + conflicts = wine-wow64 options = staticlibs - source = https://github.com/wine-mirror/wine/archive/wine-1.7.51.tar.gz - source = https://github.com/wine-compholio/wine-staging/archive/v1.7.51.tar.gz + source = https://github.com/wine-compholio/wine-patched/archive/staging-1.7.52.tar.gz source = keybindings.patch source = raw.patch source = mipmap.patch - source = nine-1.7.51.patch + source = nine-1.7.52.patch source = heap_perf.patch + source = wbemprox_query.patch source = 30-win32-aliases.conf - sha1sums = f75d41bcc6511c7641d6633ffeb23a23aeb720ef - sha1sums = 9bead94e8a5c7e876f06e32f5119cd451ea3a5ad + sha1sums = 843245d4736db4ad1449f00d747a2f7912680c59 sha1sums = f3febb8836f38320742a546c667106608d4c4395 sha1sums = 57aa524e4e760c907c2acef287f5569e78ea85b0 sha1sums = c3096fccbac23e520d03f592db7f23350cbbc0bc - sha1sums = ca80253e74ee6d5cb5d1b54b6445f228d376aab4 + sha1sums = 14c63750628866e2f3b29a6d5a4ed11efb67b442 sha1sums = 0f4ac455436d5714a2cf0b537ed25f4fa5c1a7fd + sha1sums = 20da841265d5b16dba02246f158ad4f54f13b775 sha1sums = 023a5c901c6a091c56e76b6a62d141d87cce9fdb pkgname = wine-gaming-nine + depends = attr + depends = lib32-attr depends = fontconfig depends = lib32-fontconfig + depends = lcms2 + depends = lib32-lcms2 + depends = libxml2 + depends = lib32-libxml2 depends = libxcursor depends = lib32-libxcursor depends = libxrandr diff --git a/30-win32-aliases.conf b/30-win32-aliases.conf index 99ae1f7b83a5..99ae1f7b83a5 100755..100644 --- a/30-win32-aliases.conf +++ b/30-win32-aliases.conf diff --git a/PKGBUILD b/PKGBUILD index 346d79ed61b1..5da7179e0eac 100755..100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,45 +1,49 @@ # Maintainer: Pierre Franco <pierre dot franco at ensimag dot grenoble dash inp dot fr> -# Based on wine-staging-d3dadapter PKGBUILD +# Based on wine-staging PKGBUILD #Additional patches: +# -Raw input fix # -Mip-Map fix (see https://bugs.winehq.org/show_bug.cgi?id=34480 ) # -Keybind patch reversion # -Heap allocation perfomance improvement patch - +# -Wbemprox videocontroller query fix (see https://bugs.winehq.org/show_bug.cgi?id=38879 ) pkgname=wine-gaming-nine -pkgver=1.7.51 -pkgrel=2 +pkgver=1.7.52 +pkgrel=1 -_basename=wine +_pkgbasever=${pkgver/rc/-rc} +_winesrcdir="wine-patched-staging-$pkgver" -source=(https://github.com/wine-mirror/wine/archive/wine-$pkgver.tar.gz - https://github.com/wine-compholio/wine-staging/archive/v$pkgver.tar.gz +source=("https://github.com/wine-compholio/wine-patched/archive/staging-$pkgver.tar.gz" keybindings.patch raw.patch mipmap.patch - nine-1.7.51.patch + nine-1.7.52.patch heap_perf.patch + wbemprox_query.patch 30-win32-aliases.conf) - -sha1sums=('f75d41bcc6511c7641d6633ffeb23a23aeb720ef' - '9bead94e8a5c7e876f06e32f5119cd451ea3a5ad' +sha1sums=('843245d4736db4ad1449f00d747a2f7912680c59' 'f3febb8836f38320742a546c667106608d4c4395' '57aa524e4e760c907c2acef287f5569e78ea85b0' 'c3096fccbac23e520d03f592db7f23350cbbc0bc' - 'ca80253e74ee6d5cb5d1b54b6445f228d376aab4' + '14c63750628866e2f3b29a6d5a4ed11efb67b442' '0f4ac455436d5714a2cf0b537ed25f4fa5c1a7fd' + '20da841265d5b16dba02246f158ad4f54f13b775' '023a5c901c6a091c56e76b6a62d141d87cce9fdb') -pkgdesc="Based off wine-staging-d3dadapter with a few more hacks" -url="http://www.winehq.com" +pkgdesc="Based off wine-staging, including the gallium-nine patches and some more hacks" +url="http://www.wine-staging.com" arch=(i686 x86_64) options=(staticlibs) license=(LGPL) install=wine.install _depends=( + attr lib32-attr fontconfig lib32-fontconfig + lcms2 lib32-lcms2 + libxml2 lib32-libxml2 libxcursor lib32-libxcursor libxrandr lib32-libxrandr libxdamage lib32-libxdamage @@ -62,29 +66,28 @@ makedepends=(autoconf ncurses bison perl fontforge flex prelink libxcomposite lib32-libxcomposite libxmu lib32-libxmu libxxf86vm lib32-libxxf86vm - libxml2 lib32-libxml2 libldap lib32-libldap - lcms2 lib32-lcms2 mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils alsa-lib lib32-alsa-lib libxcomposite lib32-libxcomposite mesa lib32-mesa - #mesa-libgl lib32-mesa-libgl + libgl lib32-libgl libcl lib32-libcl libxslt lib32-libxslt + libpulse lib32-libpulse + libva lib32-libva samba opencl-headers ) - +# gtk3 lib32-gtk3 + optdepends=( giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls - lcms2 lib32-lcms2 - libxml2 lib32-libxml2 mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils @@ -97,9 +100,11 @@ optdepends=( ncurses lib32-ncurses libcl lib32-libcl libxslt lib32-libxslt + libva lib32-libva cups samba dosbox ) +# gtk3 lib32-gtk3 if [[ $CARCH == i686 ]]; then # Strip lib32 etc. on i686 @@ -109,34 +114,29 @@ if [[ $CARCH == i686 ]]; then optdepends=(${optdepends[@]/*32-*/}) provides=("wine=$pkgver") conflicts=('wine') - replaces=('wine') else makedepends=(${makedepends[@]} ${_depends[@]}) - provides=("bin32-wine=$pkgver" "wine-wow64=$pkgver" "wine=$pkgver") - conflicts=('bin32-wine' 'wine-wow64' 'wine') - replaces=('bin32-wine' "wine") + provides=("bin32-wine=$pkgver" "wine=$pkgver" "wine-wow64=$pkgver") + conflicts=('bin32-wine' 'wine' 'wine-wow64') fi prepare() { - #Patch source tree - cd "$srcdir/wine-staging-$pkgver/patches" - - ./patchinstall.sh DESTDIR="$srcdir/wine-wine-$pkgver" --all - - cd "$srcdir/wine-wine-$pkgver" - patch -p1 < ../nine-1.7.51.patch - patch -p1 -R < ../keybindings.patch + cd wine-patched-staging-$pkgver + + patch -p1 < ../nine-1.7.52.patch + patch -p1 < ../raw.patch patch -p1 < ../mipmap.patch patch -p1 < ../heap_perf.patch + patch -p1 < ../wbemprox_query.patch + + patch -p1 -R < ../keybindings.patch #OpenCL fix cp configure configure_old cp configure.ac configure.ac_old sed 's|OpenCL/opencl.h|CL/opencl.h|g' configure_old > configure sed 's|OpenCL/opencl.h|CL/opencl.h|g' configure.ac_old > configure.ac - - cd "$srcdir" } build() @@ -148,55 +148,56 @@ build() export CXXFLAGS="${CXXFLAGS/-O2/} -O0" # Get rid of old build dirs - rm -rf $_basename-{32,64}-build - mkdir $_basename-32-build + rm -rf $pkgname-{32,64}-build + mkdir $pkgname-32-build # These additional CPPFLAGS solve FS#27662 and FS#34195 export CPPFLAGS="${CPPFLAGS/-D_FORTIFY_SOURCE=2/} -D_FORTIFY_SOURCE=0" if [[ $CARCH == x86_64 ]]; then - msg2 "Building Wine-64..." - - mkdir $_basename-64-build - cd "$srcdir/$_basename-64-build" - ../wine-wine-$pkgver/configure \ - --prefix=/usr \ - --libdir=/usr/lib \ - --with-x \ - --without-gstreamer \ - --enable-win64 \ - --disable-tests - # Gstreamer was disabled for FS#33655 - - make - - _wine32opts=( - --libdir=/usr/lib32 - --with-wine64="$srcdir/$_basename-64-build" - ) - - export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" + msg2 "Building Wine-64..." + + mkdir $pkgname-64-build + cd "$srcdir/$pkgname-64-build" + ../$_winesrcdir/configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + --with-x \ + --without-gstreamer \ + --enable-win64 \ + --with-xattr \ + --with-d3dadapter + # Gstreamer was disabled for FS#33655 + + make + + _wine32opts=( + --libdir=/usr/lib32 + --with-wine64="$srcdir/$pkgname-64-build" + ) + + export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" fi msg2 "Building Wine-32..." - cd "$srcdir/$_basename-32-build" - ../wine-wine-$pkgver/configure \ + cd "$srcdir/$pkgname-32-build" + ../$_winesrcdir/configure \ --prefix=/usr \ --with-x \ --without-gstreamer \ - --disable-tests \ - "${_wine32opts[@]}" + --with-xattr \ + --with-d3dadapter \ + "${_wine32opts[@]}" # These additional flags solve FS#23277 make CFLAGS+="-mstackrealign -mincoming-stack-boundary=2" CXXFLAGS+="-mstackrealign -mincoming-stack-boundary=2" } -package() -{ +package() { depends=(${_depends[@]}) msg2 "Packaging Wine-32..." - cd "$srcdir/$_basename-32-build" + cd "$srcdir/$pkgname-32-build" if [[ $CARCH == i686 ]]; then make prefix="$pkgdir/usr" install @@ -206,7 +207,7 @@ package() dlldir="$pkgdir/usr/lib32/wine" install msg2 "Packaging Wine-64..." - cd "$srcdir/$_basename-64-build" + cd "$srcdir/$pkgname-64-build" make prefix="$pkgdir/usr" \ libdir="$pkgdir/usr/lib" \ dlldir="$pkgdir/usr/lib/wine" install diff --git a/nine-1.7.51.patch b/nine-1.7.52.patch index dd4b9ea6966f..ccdc3846e54f 100644 --- a/nine-1.7.51.patch +++ b/nine-1.7.52.patch @@ -1,5 +1,5 @@ diff --git a/configure.ac b/configure.ac -index aec53f6..c30342f 100644 +index c37c491..cbac8ad 100644 --- a/configure.ac +++ b/configure.ac @@ -65,6 +65,8 @@ AC_ARG_WITH(openal, AS_HELP_STRING([--without-openal],[do not use OpenAL]), @@ -1289,10 +1289,10 @@ index 34b3de6..90982b3 100644 }; diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c -index 60ffc45..95d8fce 100644 +index de40d9f..47eb57c 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c -@@ -8545,6 +8545,7 @@ static const struct gdi_dc_funcs freetype_funcs = +@@ -8639,6 +8639,7 @@ static const struct gdi_dc_funcs freetype_funcs = NULL, /* pUnrealizePalette */ NULL, /* pWidenPath */ NULL, /* wine_get_wgl_driver */ diff --git a/wbemprox_query.patch b/wbemprox_query.patch new file mode 100644 index 000000000000..37511cd06983 --- /dev/null +++ b/wbemprox_query.patch @@ -0,0 +1,136 @@ +From 3606d31738dbe085a2591c31eef0b2c5cbfb537e Mon Sep 17 00:00:00 2001
+From: "Riccardo (C10uD)" <c10ud.dev@gmail.com>
+Date: Tue, 7 Jul 2015 09:49:33 +0200
+Subject: [PATCH] wbemprox: cache videocontroller queries
+
+---
+ dlls/wbemprox/builtin.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ dlls/wbemprox/main.c | 3 ++
+ 2 files changed, 80 insertions(+), 1 deletion(-)
+
+diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
+index f1e5c4a..8f3aa1f 100644
+--- a/dlls/wbemprox/builtin.c
++++ b/dlls/wbemprox/builtin.c
+@@ -2792,6 +2792,73 @@ static WCHAR *get_pnpdeviceid( DXGI_ADAPTER_DESC *desc )
+ return ret;
+ }
+
++/* some games like to continuously ask for the video controller
++ since dxgi is expensive, cache results for subsequent calls */
++static struct record_videocontroller *static_rec = NULL;
++
++static void cache_videocontroller(struct record_videocontroller *rec)
++{
++ if (!(static_rec = heap_alloc( sizeof(struct record_videocontroller) )))
++ return;
++
++ static_rec->adapter_dactype = heap_strdupW( rec->adapter_dactype );
++ static_rec->adapter_ram = rec->adapter_ram;
++ static_rec->availability = rec->availability;
++ static_rec->caption = heap_strdupW( rec->caption );
++ static_rec->current_bitsperpixel = rec->current_bitsperpixel;
++ static_rec->current_horizontalres = rec->current_horizontalres;
++ static_rec->current_refreshrate = rec->current_refreshrate;
++ static_rec->current_scanmode = rec->current_scanmode;
++ static_rec->current_verticalres = rec->current_verticalres;
++ static_rec->description = heap_strdupW( rec->description );
++ static_rec->device_id = heap_strdupW( rec->device_id );
++ static_rec->driverversion = heap_strdupW( rec->driverversion );
++ static_rec->name = heap_strdupW( rec->name );
++ static_rec->pnpdevice_id = heap_strdupW( rec->pnpdevice_id );
++ static_rec->videoarchitecture = rec->videoarchitecture;
++ static_rec->videomemorytype = rec->videomemorytype;
++ static_rec->videoprocessor = heap_strdupW( rec->videoprocessor );
++}
++
++static void videocontroller_from_cache(struct record_videocontroller *rec)
++{
++ rec->adapter_dactype = heap_strdupW( static_rec->adapter_dactype );
++ rec->adapter_ram = static_rec->adapter_ram;
++ rec->availability = 3; /* Running or Full Power */
++ rec->caption = heap_strdupW( static_rec->caption );
++ rec->current_bitsperpixel = static_rec->current_bitsperpixel;
++ rec->current_horizontalres = static_rec->current_horizontalres;
++ rec->current_refreshrate = 0; /* default refresh rate */
++ rec->current_scanmode = 2; /* Unknown */
++ rec->current_verticalres = static_rec->current_verticalres;
++ rec->description = heap_strdupW( static_rec->description );
++ rec->device_id = heap_strdupW( static_rec->device_id );
++ rec->driverversion = heap_strdupW( static_rec->driverversion );
++ rec->name = heap_strdupW( static_rec->name );
++ rec->pnpdevice_id = heap_strdupW( static_rec->pnpdevice_id );
++ rec->videoarchitecture = 2; /* Unknown */
++ rec->videomemorytype = 2; /* Unknown */
++ rec->videoprocessor = heap_strdupW( static_rec->videoprocessor );
++}
++
++void free_cache_videocontroller()
++{
++ if (static_rec == NULL)
++ return;
++
++ heap_free(static_rec->adapter_dactype);
++ heap_free(static_rec->caption);
++ heap_free(static_rec->description);
++ heap_free(static_rec->device_id);
++ heap_free(static_rec->driverversion);
++ heap_free(static_rec->name);
++ heap_free(static_rec->pnpdevice_id);
++ heap_free(static_rec->videoprocessor);
++
++ heap_free(static_rec);
++ static_rec = NULL;
++}
++
+ static enum fill_status fill_videocontroller( struct table *table, const struct expr *cond )
+ {
+
+@@ -2807,6 +2874,14 @@ static enum fill_status fill_videocontroller( struct table *table, const struct
+
+ if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED;
+
++ rec = (struct record_videocontroller *)table->data;
++ if (static_rec != NULL)
++ {
++ TRACE("using cached data at %p\n", static_rec);
++ videocontroller_from_cache(rec);
++ goto done_cached;
++ }
++
+ memset (&desc, 0, sizeof(desc));
+ hr = CreateDXGIFactory( &IID_IDXGIFactory, (void **)&factory );
+ if (FAILED(hr)) goto done;
+@@ -2822,7 +2897,6 @@ static enum fill_status fill_videocontroller( struct table *table, const struct
+ }
+
+ done:
+- rec = (struct record_videocontroller *)table->data;
+ rec->adapter_dactype = videocontroller_dactypeW;
+ rec->adapter_ram = vidmem;
+ rec->availability = 3; /* Running or Full Power */
+@@ -2840,6 +2914,8 @@ done:
+ rec->videoarchitecture = 2; /* Unknown */
+ rec->videomemorytype = 2; /* Unknown */
+ rec->videoprocessor = heap_strdupW( name );
++ cache_videocontroller(rec);
++done_cached:
+ if (!match_row( table, row, cond, &status )) free_row_values( table, row );
+ else row++;
+
+diff --git a/dlls/wbemprox/main.c b/dlls/wbemprox/main.c
+index e6ccd5c..24c1612 100644
+--- a/dlls/wbemprox/main.c
++++ b/dlls/wbemprox/main.c
+@@ -123,6 +123,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+ DisableThreadLibraryCalls(hinstDLL);
+ init_table_list();
+ break;
++ case DLL_PROCESS_DETACH:
++ free_cache_videocontroller();
++ break;
+ }
+
+ return TRUE;
+--
+1.9.1
diff --git a/wine.install b/wine.install index 0548b7ffd127..0548b7ffd127 100755..100644 --- a/wine.install +++ b/wine.install |