I've confirmed that the issue I was having was with the xanmod-rog
kernel and not a winesync issue. Sorry about the noise!
Search Criteria
Package Details: winesync-dkms 5.16-4
Package Actions
Git Clone URL: | https://aur.archlinux.org/winesync.git (read-only, click to copy) |
---|---|
Package Base: | winesync |
Description: | Wine synchronization primitive driver - out-of-tree module (dkms version) |
Upstream URL: | https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync4 |
Licenses: | GPL2 |
Provides: | WINESYNC-MODULE |
Submitter: | openglfreak |
Maintainer: | openglfreak |
Last Packager: | openglfreak |
Votes: | 3 |
Popularity: | 0.000000 |
First Submitted: | 2021-03-22 19:50 (UTC) |
Last Updated: | 2022-08-16 19:40 (UTC) |
Dependencies (4)
- dkms (dkms-gitAUR)
- dkms (dkms-gitAUR) (make)
- linux-headers (make)
- linux-headers (optional) – build the module for Arch kernel
Required by (0)
Sources (5)
Latest Comments
« First ‹ Previous 1 2
saghm commented on 2022-02-15 17:41 (UTC)
saghm commented on 2022-02-15 00:32 (UTC)
The kernel module seems to be failing to build for me as of kernel version 5.16.9, although I'm using the https://aur.archlinux.org/packages/linux-xanmod-rog kernel, so I'm not sure if this will work with other ones. I noticed that the winesync version is only 5.15 rather than 5.16, but it seems to have worked fine up through 5.16.8, and I don't see any recent changes to upstream, so I don't know whether that's an indication that this is expectation or not.
Contents of /var/lib/dkms/winesync/5.15/build/make.log
:
DKMS make.log for winesync-5.15 for kernel 5.16.9-xanmod0-rog-1 (x86_64)
Mon Feb 14 07:28:08 PM EST 2022
make: Entering directory '/usr/lib/modules/5.16.9-xanmod0-rog-1/build'
CC [M] /var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.o
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c: In function ‘try_wake_all’:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:249:52: error: ‘WINESYNC_WAIT_FLAG_GET’ undeclared (first use in this function)
249 | if (entry->flags & WINESYNC_WAIT_FLAG_GET)
| ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:249:52: note: each undeclared identifier is reported only once for each function it appears in
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c: In function ‘try_wake_any_sem’:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:298:44: error: ‘WINESYNC_WAIT_FLAG_GET’ undeclared (first use in this function)
298 | if (entry->flags & WINESYNC_WAIT_FLAG_GET)
| ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c: In function ‘try_wake_any_mutex’:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:323:44: error: ‘WINESYNC_WAIT_FLAG_GET’ undeclared (first use in this function)
323 | if (entry->flags & WINESYNC_WAIT_FLAG_GET) {
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bitops.h:7,
from ./include/linux/kernel.h:13,
from ./arch/x86/include/asm/percpu.h:27,
from ./arch/x86/include/asm/current.h:6,
from ./arch/x86/include/asm/processor.h:17,
from ./arch/x86/include/asm/timex.h:5,
from ./include/linux/timex.h:65,
from ./include/linux/time32.h:13,
from ./include/linux/time.h:60,
from ./include/linux/compat.h:10,
from /var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:8:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c: In function ‘setup_wait’:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:715:58: error: ‘const struct winesync_wait_args’ has no member named ‘sigmask’
715 | const void __user *sigmask = u64_to_user_ptr(args->sigmask);
| ^~
./include/linux/typecheck.h:11:16: note: in definition of macro ‘typecheck’
11 | typeof(x) __dummy2; \
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:715:38: note: in expansion of macro ‘u64_to_user_ptr’
715 | const void __user *sigmask = u64_to_user_ptr(args->sigmask);
| ^~~~~~~~~~~~~~~
./include/linux/typecheck.h:12:25: warning: comparison of distinct pointer types lacks a cast
12 | (void)(&__dummy == &__dummy2); \
| ^~
./include/linux/kernel.h:52:9: note: in expansion of macro ‘typecheck’
52 | typecheck(u64, (x)); \
| ^~~~~~~~~
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:715:38: note: in expansion of macro ‘u64_to_user_ptr’
715 | const void __user *sigmask = u64_to_user_ptr(args->sigmask);
| ^~~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/percpu.h:27,
from ./arch/x86/include/asm/current.h:6,
from ./arch/x86/include/asm/processor.h:17,
from ./arch/x86/include/asm/timex.h:5,
from ./include/linux/timex.h:65,
from ./include/linux/time32.h:13,
from ./include/linux/time.h:60,
from ./include/linux/compat.h:10,
from /var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:8:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:715:58: error: ‘const struct winesync_wait_args’ has no member named ‘sigmask’
715 | const void __user *sigmask = u64_to_user_ptr(args->sigmask);
| ^~
./include/linux/kernel.h:53:36: note: in definition of macro ‘u64_to_user_ptr’
53 | (void __user *)(uintptr_t)(x); \
| ^
In file included from <command-line>:
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:724:60: error: ‘const struct winesync_wait_args’ has no member named ‘sigsetsize’
724 | ret = set_compat_user_sigmask(sigmask, args->sigsetsize);
| ^~
/var/lib/dkms/winesync/5.15/build/defines.h:3:70: note: in definition of macro ‘set_compat_user_sigmask’
3 | #define set_compat_user_sigmask(x, y) (*pset_compat_user_sigmask)(x, y)
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:726:53: error: ‘const struct winesync_wait_args’ has no member named ‘sigsetsize’
726 | ret = set_user_sigmask(sigmask, args->sigsetsize);
| ^~
/var/lib/dkms/winesync/5.15/build/defines.h:2:56: note: in definition of macro ‘set_user_sigmask’
2 | #define set_user_sigmask(x, y) (*pset_user_sigmask)(x, y)
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:744:49: error: invalid application of ‘sizeof’ to incomplete type ‘struct winesync_wait_obj’
744 | objs = kmalloc_array(args->count, sizeof(*objs), GFP_KERNEL);
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:748:58: error: invalid application of ‘sizeof’ to incomplete type ‘struct winesync_wait_obj’
748 | array_size(args->count, sizeof(*objs)))) {
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:767:61: error: invalid use of undefined type ‘struct winesync_wait_obj’
767 | struct winesync_obj *obj = get_obj(dev, objs[i].obj);
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:767:64: error: invalid use of undefined type ‘struct winesync_wait_obj’
767 | struct winesync_obj *obj = get_obj(dev, objs[i].obj);
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:785:36: error: invalid use of undefined type ‘struct winesync_wait_obj’
785 | entry->flags = objs[i].flags;
| ^
/var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.c:785:39: error: invalid use of undefined type ‘struct winesync_wait_obj’
785 | entry->flags = objs[i].flags;
| ^
make[1]: *** [scripts/Makefile.build:287: /var/lib/dkms/winesync/5.15/build/src/drivers/misc/winesync.o] Error 1
make: *** [Makefile:1847: /var/lib/dkms/winesync/5.15/build] Error 2
make: Leaving directory '/usr/lib/modules/5.16.9-xanmod0-rog-1/build'
openglfreak commented on 2021-08-13 23:42 (UTC)
@JonnyBoss That makes it compile the non-dkms package for the currently running kernel, instead of for the default Arch kernel, so that's not acceptable. Use _provide_nondkms=false instead.
JonnyBoss commented on 2021-08-13 13:51 (UTC)
@Sukid, @openglfreak I had the exact same issue as Sukid on Manjaro. I was able to successfully build and install the package with a few changes to the PKGBUILD. The following patch should not brake compatibility with default Arch, but add compatibility with manjaro and probably a lot of other kernels as well.
--- PKGBUILD 2021-08-13 14:15:36.547332660 +0200
+++ PKGBUILD 2021-08-13 15:13:49.013982625 +0200
@@ -73,7 +73,7 @@
if [ "$_provide_nondkms" = true ]; then
build() {
- _kernver="$(cat /usr/src/linux/version)"
+ _kernver="$(uname -r)"
install -Dm644 "$srcdir/Makefile" "$srcdir/$pkgbase-$pkgver/Makefile"
install -Dm644 "$srcdir/winesync.h-$_commit" "$srcdir/$pkgbase-$pkgver/include/uapi/linux/winesync.h"
install -Dm644 "$srcdir/winesync.c-$_commit" "$srcdir/$pkgbase-$pkgver/src/drivers/misc/winesync.c"
@@ -86,8 +86,9 @@
arch=("$CARCH")
depends=("${_nondkms_depends[@]}")
provides=("${_module_provides[@]}")
- _kernver="$(cat /usr/src/linux/version)"
- install -t "$pkgdir/usr/lib/modules/$_kernver/extramodules" -Dm644 "$srcdir/build/$pkgbase/$pkgver/$_kernver/$CARCH/module"/*
+ _kernver="$(uname -r)"
+ _extramodules="$(readlink -f "/usr/lib/modules/$_kernver/extramodules")"
+ install -t "$pkgdir$_extramodules" -Dm644 "$srcdir/build/$pkgbase/$pkgver/$_kernver/$CARCH/module"/*
find "$pkgdir" -name '*.ko' -exec xz -T1 '{}' \+
}
fi
openglfreak commented on 2021-05-19 10:06 (UTC)
@Sukid Yes, you need the default kernel installed to build the non-dkms package.
Sukid commented on 2021-05-06 14:19 (UTC) (edited on 2021-05-06 14:30 (UTC) by Sukid)
I need to change provide_nondkms to false, otherwise this happens:
==> Starting build()... cat: /usr/src/linux/version: No such file or directory ==> ERROR: A failure occurred in build(). Aborting... error making: winesync (winesync-dkms)
I guess that's because I don't have the default kernel installed?
openglfreak commented on 2021-03-22 19:50 (UTC)
Explanation: Winesync is yet another reimplementation of the NT synchronization primitives for Wine, this time using a new kernel module instead of using existing kernel features or a new syscall. This implementation mimics the original from Windows perfectly (bar any bugs), in contrast to esync and fsync which had some hackily implemented operations. Performance shouldn't be much different from esync and fsync.
Pinned Comments
openglfreak commented on 2021-03-22 19:50 (UTC)
Explanation: Winesync is yet another reimplementation of the NT synchronization primitives for Wine, this time using a new kernel module instead of using existing kernel features or a new syscall. This implementation mimics the original from Windows perfectly (bar any bugs), in contrast to esync and fsync which had some hackily implemented operations. Performance shouldn't be much different from esync and fsync.