summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authordreadsend2019-11-20 19:56:01 +0100
committerManuel Reimer2019-11-20 19:56:01 +0100
commitc46d872622b2516dbaa3c346d609f50828412d0f (patch)
treefc0095d3589e9311a09d2cebba726e2c706ea121
parent9f443d50f448de2e10dbe6281389425b65e7596b (diff)
downloadaur-c46d872622b2516dbaa3c346d609f50828412d0f.tar.gz
Update to 4.20 (#37)
* Updated to wine 4.18 * Removed Mouse Capture Bug fix, since it is no longer necessary * Reverted overzealous patch deletion... * Removed Patch for 4.20 since it is already Staged * Removed missed Patch call * Update to wine 4.19 No Improvements for League * Created first Version * Fixed overlooked Plus Signs.... * Updated SHA512sums
-rw-r--r--.SRCINFO20
-rw-r--r--420CustomPatch1.diff93
-rw-r--r--PKGBUILD24
3 files changed, 109 insertions, 28 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 784ae8527b4e..c741059cbe11 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = wine-lol
pkgdesc = A compatibility layer for running Windows programs - Staging branch with League Of Legends fixes
- pkgver = 4.17
- pkgrel = 2
+ pkgver = 4.20
+ pkgrel = 1
url = http://www.wine-staging.com
install = wine.install
arch = x86_64
@@ -149,18 +149,14 @@ pkgbase = wine-lol
optdepends = samba
optdepends = dosbox
options = staticlibs
- source = https://dl.winehq.org/wine/source/4.x/wine-4.17.tar.xz
- source = wine-staging-v4.17.tar.gz::https://github.com/wine-staging/wine-staging/archive/v4.17.tar.gz
+ source = https://dl.winehq.org/wine/source/4.x/wine-4.20.tar.xz
+ source = wine-staging-v4.20.tar.gz::https://github.com/wine-staging/wine-staging/archive/v4.20.tar.gz
source = 30-win32-aliases.conf
- source = wine-lol-poc1-wine.diff::https://bugs.winehq.org/attachment.cgi?id=64481
- source = wine-lol-patch-stub.diff::https://bugs.winehq.org/attachment.cgi?id=64496
- source = wine-lol-bug47915.diff::https://bugs.winehq.org/attachment.cgi?id=65424
- sha512sums = f762aab2596a4b5cf73d3282be561d25a2fe69e5d4a5ec2e29db47b3eda7496ca9eb7e57ff7765853d258422898bfa775bf9b458e61eef837b213e422bd748b8
- sha512sums = 1f27511c8ff6619f4138eb3b2cd0cc1cdf42c0cd4206c68bdf792ae17c339611016e32babad121f0decf20331f7ce4400033be03c4db26cb6a4dc601c9c4b14d
+ source = 420CustomPatch1.diff
+ sha512sums = c01af88106b8a808fbceb6ace45882c300656a47913142ba7052283b358d6d5b4379895804e15a2ca1870a4e955ea3ca857ec042a8070ea4ffaefa0c7a84e701
+ sha512sums = 2ce4f6fa83fc275c83bc7f7bbd4b1a4ca65f7e55e16af40958635b8b2efc2b174baa79ed576ed09c4c13b572756fb6262f19281e5b72797c7e0f1f6c4dd1a4ee
sha512sums = 6e54ece7ec7022b3c9d94ad64bdf1017338da16c618966e8baf398e6f18f80f7b0576edf1d1da47ed77b96d577e4cbb2bb0156b0b11c183a0accf22654b0a2bb
- sha512sums = ed9c36aee756ee8fba0b08a3ff895893df1c771077964cbe5ce1a23f66addf7212c8ca8e601cf14e5dae82af4b275d0a11c7207acd7dc4f48fdb1216d819f9dd
- sha512sums = 159b075f11607114ee81ef801c77969c7b630b024a8a698b5f20a208f2cf780a2109f055d420e4292b774f3e5524a05b4c05d446d5217f1c050adb12b7409e45
- sha512sums = 56213f38a9f6cd9272a86e4defabc3b88453d160f2043db909b0f7b329ff93238a6dfe0cf19213372793171a2ac909f8c09e21d91fc685deb2b65cf98ad0a234
+ sha512sums = a17db33ba5d6114bd71d1b013adc8e5ca0c3cedf856301cba59f95dadf643d2ee0e5a2d7abb2daedd5ed7c45cdbe93c78527f4d962bedc54776bb21cfc7e8b0b
pkgname = wine-lol
diff --git a/420CustomPatch1.diff b/420CustomPatch1.diff
new file mode 100644
index 000000000000..504eff1e76fc
--- /dev/null
+++ b/420CustomPatch1.diff
@@ -0,0 +1,93 @@
+diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
+index c5b2008e44..96ca266921 100644
+--- a/dlls/ntdll/thread.c
++++ b/dlls/ntdll/thread.c
+@@ -268,6 +268,77 @@ static void set_process_name( int argc, char *argv[] )
+ }
+
+
++#ifdef __i386__
++#include <asm/ldt.h>
++#include <linux/audit.h>
++#include <linux/filter.h>
++#include <linux/seccomp.h>
++#include <linux/unistd.h>
++#include <sys/prctl.h>
++#include <errno.h>
++
++static void sigsys_handler( int signal, siginfo_t *siginfo, void *sigcontext )
++{
++ ucontext_t *ctx = sigcontext;
++
++ WINE_ERR( "SIGSYS (%d)\n", ctx->uc_mcontext.gregs[REG_EAX] );
++
++ // FIXME Relay to actual Nt syscall.
++
++ ctx->uc_mcontext.gregs[REG_EAX] = 0;
++}
++
++// FIXME All of this code is i386 Linux-specific. It may want to live in
++// signal_i386.c.
++void seccomp_init(void)
++{
++ int ret;
++ char *tcbhead;
++ struct sigaction sig_act;
++ // FIXME Allocate a range of syscall numbers for Wine, e.g. 1024+. This
++ // will be necessary to distinguish Linux syscall numbers from Wine
++ // syscall numbers.
++ struct sock_filter filter[] = {
++ { BPF_LD | BPF_W | BPF_ABS, 0, 0, 0 },
++ { BPF_JMP | BPF_JEQ, 1, 0, 173 },
++ { BPF_RET, 0, 0, SECCOMP_RET_ALLOW },
++ { BPF_LD | BPF_W | BPF_ABS, 0, 0, 4 },
++ { BPF_JMP | BPF_JEQ, 1, 0, AUDIT_ARCH_X86_64 },
++ { BPF_RET, 0, 0, SECCOMP_RET_ALLOW },
++ { BPF_RET, 0, 0, SECCOMP_RET_TRAP }
++ };
++ struct sock_fprog prog = { 7, filter };
++
++ // FIXME There is no way to remove a seccomp upon execve. This should not
++ // have bad effects on non-Wine programs, provided we fix the syscall
++ // numbering, but we may be adding the same seccomp filter multiple
++ // times unnecessarily.
++ ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
++ TRACE( "prctl(SET_NO_NEW_PRIVS) = %d, %d\n", ret, errno );
++ prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog, 0, 0);
++ TRACE( "prctl(SET_SECCOMP) = %d, %d\n", ret, errno );
++
++ sig_act.sa_mask = server_block_set;
++ sig_act.sa_flags = SA_SIGINFO | SA_RESTART;
++#ifdef SA_ONSTACK
++ sig_act.sa_flags |= SA_ONSTACK;
++#endif
++ sig_act.sa_sigaction = sigsys_handler;
++ ret = sigaction( SIGSYS, &sig_act, NULL );
++ TRACE( "sigaction(SIGSYS) = %d\n", ret );
++
++ asm ("mov %%gs:0, %0" : "=r" (tcbhead));
++ TRACE( "gs:0 = %p\n", tcbhead );
++
++ // FIXME Requires a patched version of glibc to expand the reserved size
++ // at the top of (struct pthread). Upstream glibc only reserves 0x60
++ // bytes on i386, and we require at least 0x68 bytes. The code below
++ // assumes at least 0x6C bytes are reserved.
++ *(uint64_t *)(tcbhead + 0x60) = (uintptr_t)(tcbhead + 0x68);
++}
++#endif
++
++
+ /***********************************************************************
+ * thread_init
+ *
+@@ -370,6 +441,10 @@ TEB *thread_init(void)
+ __wine_user_shared_data();
+ fill_cpu_info();
+
++#ifdef __i386__
++ seccomp_init();
++#endif
++
+ return teb;
+ }
+
diff --git a/PKGBUILD b/PKGBUILD
index f87cf7c7e3d0..dff55536a974 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -11,26 +11,21 @@
# Some history:
# Primary bug report: https://bugs.winehq.org/show_bug.cgi?id=47198
# Additional crash fix: https://bugs.winehq.org/show_bug.cgi?id=45667#c5
-# Fix for version 9.20: https://bugs.winehq.org/show_bug.cgi?id=47915#c2
pkgname=wine-lol
-pkgver=4.17
-pkgrel=2
+pkgver=4.20
+pkgrel=1
_pkgbasever=${pkgver/rc/-rc}
source=(https://dl.winehq.org/wine/source/4.x/wine-$_pkgbasever.tar.xz
"wine-staging-v$_pkgbasever.tar.gz::https://github.com/wine-staging/wine-staging/archive/v$_pkgbasever.tar.gz"
30-win32-aliases.conf
- wine-lol-poc1-wine.diff::https://bugs.winehq.org/attachment.cgi?id=64481
- wine-lol-patch-stub.diff::https://bugs.winehq.org/attachment.cgi?id=64496
- wine-lol-bug47915.diff::https://bugs.winehq.org/attachment.cgi?id=65424)
-sha512sums=('f762aab2596a4b5cf73d3282be561d25a2fe69e5d4a5ec2e29db47b3eda7496ca9eb7e57ff7765853d258422898bfa775bf9b458e61eef837b213e422bd748b8'
- '1f27511c8ff6619f4138eb3b2cd0cc1cdf42c0cd4206c68bdf792ae17c339611016e32babad121f0decf20331f7ce4400033be03c4db26cb6a4dc601c9c4b14d'
+ 420CustomPatch1.diff)
+sha512sums=('c01af88106b8a808fbceb6ace45882c300656a47913142ba7052283b358d6d5b4379895804e15a2ca1870a4e955ea3ca857ec042a8070ea4ffaefa0c7a84e701'
+ '2ce4f6fa83fc275c83bc7f7bbd4b1a4ca65f7e55e16af40958635b8b2efc2b174baa79ed576ed09c4c13b572756fb6262f19281e5b72797c7e0f1f6c4dd1a4ee'
'6e54ece7ec7022b3c9d94ad64bdf1017338da16c618966e8baf398e6f18f80f7b0576edf1d1da47ed77b96d577e4cbb2bb0156b0b11c183a0accf22654b0a2bb'
- 'ed9c36aee756ee8fba0b08a3ff895893df1c771077964cbe5ce1a23f66addf7212c8ca8e601cf14e5dae82af4b275d0a11c7207acd7dc4f48fdb1216d819f9dd'
- '159b075f11607114ee81ef801c77969c7b630b024a8a698b5f20a208f2cf780a2109f055d420e4292b774f3e5524a05b4c05d446d5217f1c050adb12b7409e45'
- '56213f38a9f6cd9272a86e4defabc3b88453d160f2043db909b0f7b329ff93238a6dfe0cf19213372793171a2ac909f8c09e21d91fc685deb2b65cf98ad0a234')
+ 'a17db33ba5d6114bd71d1b013adc8e5ca0c3cedf856301cba59f95dadf643d2ee0e5a2d7abb2daedd5ed7c45cdbe93c78527f4d962bedc54776bb21cfc7e8b0b')
pkgdesc="A compatibility layer for running Windows programs - Staging branch with League Of Legends fixes"
url="http://www.wine-staging.com"
@@ -130,15 +125,12 @@ prepare() {
# apply wine-staging patchset
pushd wine-staging-$_pkgbasever/patches
- # disable user32-rawinput patchset (https://bugs.winehq.org/show_bug.cgi?id=47834)
- ./patchinstall.sh DESTDIR="$srcdir/$pkgname" --all -W user32-rawinput
+ ./patchinstall.sh DESTDIR="$srcdir/$pkgname" --all
popd
# Apply League Of Legends fixes
pushd "$srcdir/$pkgname"
- patch -p1 -i "$srcdir/wine-lol-poc1-wine.diff"
- patch -p1 -i "$srcdir/wine-lol-patch-stub.diff"
- patch -p1 -i "$srcdir/wine-lol-bug47915.diff"
+ patch -p1 -i "$srcdir/420CustomPatch1.diff"
popd
# Fix opencl header path