linuxwacom/input-wacom

Build fails on kernel 6.3.1

Closed this issue · 22 comments

Log:

Wed 10 May 15:11:29 BST 2023
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/var/lib/dkms/input-wacom/0.49.0/build' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.3.1-arch2-1/build
checking kernel version... 6.3.1-arch2-1
checking RHEL7 minor release... 0
checking power supply version... pre-v4.1
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE... 
checking CONFIG_LOCK_DOWN_KERNEL... 
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT... 
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.3.1-arch2-1/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.3.1-arch2-1/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key... 
checking for module signing certificate... 
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.7/Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.3.1-arch2-1/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/var/lib/dkms/input-wacom/0.49.0/build'
Making all in 4.5
make[2]: Entering directory '/var/lib/dkms/input-wacom/0.49.0/build/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.3.1-arch2-1/build M=/var/lib/dkms/input-wacom/0.49.0/build/4.5
/bin/sh: line 1: ./git-version-gen: Permission denied
  CC [M]  /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_wac.o
  CC [M]  /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.o
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c: In function ‘wacom_update_name’:
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:41: error: implicit declaration of function ‘hid_is_using_ll_driver’; did you mean ‘wacom_is_using_usb_driver’? [-Werror=implicit-function-declaration]
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: note: in expansion of macro ‘wacom_is_using_usb_driver’
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: error: ‘usb_hid_driver’ undeclared (first use in this function); did you mean ‘to_hid_driver’?
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: note: in expansion of macro ‘wacom_is_using_usb_driver’
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: note: each undeclared identifier is reported only once for each function it appears in
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: note: in expansion of macro ‘wacom_is_using_usb_driver’
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c: In function ‘wacom_probe’:
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: error: ‘usb_hid_driver’ undeclared (first use in this function); did you mean ‘to_hid_driver’?
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2830:13: note: in expansion of macro ‘wacom_is_using_usb_driver’
 2830 |         if (wacom_is_using_usb_driver(hdev)) {
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:252: /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.o] Error 1
make[3]: *** [Makefile:2025: /var/lib/dkms/input-wacom/0.49.0/build/4.5] Error 2
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/var/lib/dkms/input-wacom/0.49.0/build/4.5'
make[1]: *** [Makefile:372: all-recursive] Error 1
make[1]: Leaving directory '/var/lib/dkms/input-wacom/0.49.0/build'
make: *** [Makefile:307: all] Error 2
rmcgme commented

I have noticed the same issue on Arch Linux when I upgraded my kernel to 6.3.1

The issue is, that the function hid_is_using_ll_driver was removed and its only usage with the usb_hid_driver as a second argument was replaced by the function hid_is_usb. Hence, a fix for this would be to backport this fix by either replacing
#define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
with
#define wacom_is_using_usb_driver(hdev) hid_is_usb(hdev)
or replacing each usage of that macro directly with hid_is_usb.

The change is pretty easy, but I don't have the time right now to go through the process of backporting this. Further, if you are on kernel 6.3, you probably do not have the need of this project, since it is mainly used for wacom working with older kernel versions.
If you do need it for some reason, just build from source and apply that change manually.

Build still fails after making this change

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/home/basicfrog/input-wacom-0.49.0' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.3.1-zen2-1-zen/build
checking kernel version... 6.3.1-zen2-1-zen
checking RHEL7 minor release... 0
checking power supply version... pre-v4.1
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE...
checking CONFIG_LOCK_DOWN_KERNEL...
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT...
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.3.1-zen2-1-zen/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.3.1-zen2-1-zen/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key...
checking for module signing certificate...
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.7/Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.3.1-zen2-1-zen/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/home/basicfrog/input-wacom-0.49.0'
Making all in 4.5
make[2]: Entering directory '/home/basicfrog/input-wacom-0.49.0/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.3.1-zen2-1-zen/build M=/home/basicfrog/input-wacom-0.49.0/4.5
  CC [M]  /home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.o
/home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.c:281:27: error: initialization of ‘int (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types]
  281 |         .probe          = wacom_i2c_probe,
      |                           ^~~~~~~~~~~~~~~
/home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.c:281:27: note: (near initialization for ‘wacom_i2c_driver.<anonymous>.probe’)
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:252: /home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.o] Error 1
make[3]: *** [Makefile:2023: /home/basicfrog/input-wacom-0.49.0/4.5] Error 2
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/home/basicfrog/input-wacom-0.49.0/4.5'
make[1]: *** [Makefile:372: all-recursive] Error 1
make[1]: Leaving directory '/home/basicfrog/input-wacom-0.49.0'
make: *** [Makefile:307: all] Error 2
Build Failed

The issue is, that the function hid_is_using_ll_driver was removed and its only usage with the usb_hid_driver as a second argument was replaced by the function hid_is_usb. Hence, a fix for this would be to backport this fix by either replacing #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver) with #define wacom_is_using_usb_driver(hdev) hid_is_usb(hdev) or replacing each usage of that macro directly with hid_is_usb.

The change is pretty easy, but I don't have the time right now to go through the process of backporting this. Further, if you are on kernel 6.3, you probably do not have the need of this project, since it is mainly used for wacom working with older kernel versions. If you do need it for some reason, just build from source and apply that change manually.

With this first option-replacement i becomes:
DKMS make.log for input-wacom-0.49.0-1pclos2023 for kernel 6.3.2-pclos1 (x86_64) Sun May 14 11:48:48 AM UTC 2023 make -C /lib/modules/6.3.2-pclos1/build M=/var/lib/dkms/input-wacom/0.49.0-1pclos2023/build clean make[1]: Entering directory '/usr/src/kernel-devel-6.3.2-pclos1' CLEAN /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/Module.symvers make[1]: Leaving directory '/usr/src/kernel-devel-6.3.2-pclos1' rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ .*.o.d rm -fr .tmp_versions rm -fr Modules.symvers rm -fr Module.symvers rm -fr Module.markers rm -fr modules.order make -C /lib/modules/6.3.2-pclos1/build M=/var/lib/dkms/input-wacom/0.49.0-1pclos2023/build modules make[1]: Entering directory '/usr/src/kernel-devel-6.3.2-pclos1' CC [M] /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_wac.o CC [M] /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_sys.o LD [M] /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom.o CC [M] /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_w8001.o CC [M] /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_i2c.o /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_i2c.c:281:27: error: initialization of ‘int (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types] 281 | .probe = wacom_i2c_probe, | ^~~~~~~~~~~~~~~ /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_i2c.c:281:27: note: (near initialization for ‘wacom_i2c_driver.<anonymous>.probe’) cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build/wacom_i2c.o] Error 1 make[1]: *** [Makefile:2004: /var/lib/dkms/input-wacom/0.49.0-1pclos2023/build] Error 2 make[1]: Leaving directory '/usr/src/kernel-devel-6.3.2-pclos1' make: *** [Makefile:16: all] Error 2
@Nicholas42
Please can you describe the 2th option with replacement for each usage of that macro directly with hid_is_usb. i will testing it then.

with patch below, build works upto
make.log:
DKMS make.log for input-wacom-0.49.0-2pclos2023 for kernel 6.3.2-pclos1 (x86_64) Sun May 14 12:47:58 PM UTC 2023 make -C /lib/modules/6.3.2-pclos1/build M=/var/lib/dkms/input-wacom/0.49.0-2pclos2023/build clean make[1]: Entering directory '/usr/src/kernel-devel-6.3.2-pclos1' CLEAN /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/Module.symvers make[1]: Leaving directory '/usr/src/kernel-devel-6.3.2-pclos1' rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ .*.o.d rm -fr .tmp_versions rm -fr Modules.symvers rm -fr Module.symvers rm -fr Module.markers rm -fr modules.order make -C /lib/modules/6.3.2-pclos1/build M=/var/lib/dkms/input-wacom/0.49.0-2pclos2023/build modules make[1]: Entering directory '/usr/src/kernel-devel-6.3.2-pclos1' CC [M] /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_wac.o CC [M] /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_sys.o LD [M] /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom.o CC [M] /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_w8001.o CC [M] /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.o /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.c:281:27: error: initialization of ‘int (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types] 281 | .probe = wacom_i2c_probe, | ^~~~~~~~~~~~~~~ /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.c:281:27: note: (near initialization for ‘wacom_i2c_driver.<anonymous>.probe’) cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.o] Error 1 make[1]: *** [Makefile:2004: /var/lib/dkms/input-wacom/0.49.0-2pclos2023/build] Error 2 make[1]: Leaving directory '/usr/src/kernel-devel-6.3.2-pclos1' make: *** [Makefile:16: all] Error 2
patch:
`--- a/4.5/wacom_sys.c
+++ b/4.5/wacom_sys.c
@@ -14,6 +14,9 @@
#define DEV_ATTR_WO_PERM (S_IWUSR | S_IWGRP)
#define DEV_ATTR_RO_PERM (S_IRUSR | S_IRGRP)

+#if LINUX_VERSION_CODE > KERNEL_VERSION(4,14,0)
+#define wacom_is_using_usb_driver(hdev) hid_is_usb(hdev)
+#else
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
static int __wacom_is_usb_parent(struct usb_device *usbdev, void *ptr)
{
@@ -36,6 +39,7 @@
}
#else
#define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
+#endif
#endif

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
`

in better words, the problem will be:
/var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.c:281:27: error: initialization of ‘int (*)(struct i2c_client )’ from incompatible pointer type ‘int ()(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types]
281 | .probe = wacom_i2c_probe,
| ^~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0-2pclos2023/build/wacom_i2c.c:281:27: note: (near initialization for ‘wacom_i2c_driver..probe’)
cc1: some warnings being treated as errors

Is there a workaround for this? Trying to install the module yields:

==> dkms install --no-depmod input-wacom/0.49.0 -k 6.3.2-arch1-1
Error! Bad return status for module build on kernel: 6.3.2-arch1-1 (x86_64)
Consult /var/lib/dkms/input-wacom/0.49.0/build/make.log for more information.

Seems to be the same reason the others pointed out, so I'll hide the log.

Contents of `/var/lib/dkms/input-wacom/0.49.0/build/make.log`
DKMS make.log for input-wacom-0.49.0 for kernel 6.3.2-arch1-1 (x86_64)
Di 16. Mai 11:42:23 -03 2023
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/var/lib/dkms/input-wacom/0.49.0/build' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.3.2-arch1-1/build
checking kernel version... 6.3.2-arch1-1
checking RHEL7 minor release... 0
checking power supply version... pre-v4.1
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE... 
checking CONFIG_LOCK_DOWN_KERNEL... 
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT... 
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.3.2-arch1-1/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.3.2-arch1-1/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key... 
checking for module signing certificate... 
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.7/Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.3.2-arch1-1/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Verzeichnis „/var/lib/dkms/input-wacom/0.49.0/build“ wird betreten
Making all in 4.5
make[2]: Verzeichnis „/var/lib/dkms/input-wacom/0.49.0/build/4.5“ wird betreten
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.3.2-arch1-1/build M=/var/lib/dkms/input-wacom/0.49.0/build/4.5
/bin/sh: Zeile 1: ./git-version-gen: Keine Berechtigung
  CC [M]  /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_wac.o
  CC [M]  /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.o
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c: In Funktion »wacom_update_name«:
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:41: Fehler: Implizite Deklaration der Funktion »hid_is_using_ll_driver«; meinten Sie »wacom_is_using_usb_driver«? [-Werror=implicit-function-declaration]
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                         ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: Anmerkung: bei Substitution des Makros »wacom_is_using_usb_driver«
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: Fehler: »usb_hid_driver« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »to_hid_driver«?
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: Anmerkung: bei Substitution des Makros »wacom_is_using_usb_driver«
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2277:21: Anmerkung: bei Substitution des Makros »wacom_is_using_usb_driver«
 2277 |                 if (wacom_is_using_usb_driver(wacom->hdev)) {
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c: In Funktion »wacom_probe«:
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:43:71: Fehler: »usb_hid_driver« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »to_hid_driver«?
   43 | #define wacom_is_using_usb_driver(hdev) hid_is_using_ll_driver(hdev, &usb_hid_driver)
      |                                                                       ^~~~~~~~~~~~~~
/var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.c:2830:13: Anmerkung: bei Substitution des Makros »wacom_is_using_usb_driver«
 2830 |         if (wacom_is_using_usb_driver(hdev)) {
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: Einige Warnungen werden als Fehler behandelt
make[4]: *** [scripts/Makefile.build:252: /var/lib/dkms/input-wacom/0.49.0/build/4.5/wacom_sys.o] Fehler 1
make[3]: *** [Makefile:2025: /var/lib/dkms/input-wacom/0.49.0/build/4.5] Fehler 2
make[2]: *** [Makefile:43: all] Fehler 2
make[2]: Verzeichnis „/var/lib/dkms/input-wacom/0.49.0/build/4.5“ wird verlassen
make[1]: *** [Makefile:372: all-recursive] Fehler 1
make[1]: Verzeichnis „/var/lib/dkms/input-wacom/0.49.0/build“ wird verlassen
make: *** [Makefile:307: all] Fehler 2

Edit: oh, it seems that ohquait has already found a solution.

I am not an expert on this, but it seems to me, that you can just search for the corresponding file in the kernel (e.g. via "Goto File" in torvalds/linux ) and find the correct line (could be a bit tricky, since the line numbers probably don't match). Then you can backport what you find there. In the case for the second error, this should be https://github.com/torvalds/linux/blob/master/drivers/input/touchscreen/wacom_i2c.c#L267 and the fix is to replace probe by probe_new.

Though you should really just try to uninstall this project, since it probably is not necessary on a very new kernel. That worked perfectly for me. The Readme also says:

Given this, you will only need this driver if you have a newer Wacom device, are running an older operating system, or need a bugfix.

Thanks for the advice @Nicholas42, I've removed input-wacom with:

sudo dkms remove input-wacom/0.49.0 --all
sudo rm -rf /usr/src/input-wacom-0.49.0
sudo rm /etc/modprobe.d/blacklist-input-wacom-dkms.conf

Now my Wacom One works as expected.

Though, I'm not sure I should've removed the blacklist conf. 🤔

dhyvc commented

Is there a solution for those who are not that programming literate? Is there going to be a fix released in the foreseeable future? I am fully aware that this is work done by volunteers on their own time, but, still, if you release something out in public, are aware of an issue, and know the solution to it, why not release a fixed version?

As far as I know, none of the people in this thread are in any way involved with this project, hence we cannot say when anything with regard to this will happen. As stated before, as far as I can tell the intention of this project is NOT to support the latest kernel versions but rather backport new developments in the kernel to older versions.

Though I think I know how to fix compilation errors on my machine, I am not confident in doing that in this general code base, that has to support a lot of different systems. Any change has to be carefully evaluated since it might break the project in older kernel versions for people that actually need it. Hence, this is not an easy fix and not something I will find the time for doing.

That being said, my advice as above stands: Uninstall this project if you are on the latest kernel version. You probably do not need it, since it is only intended to improve support for old kernel versions. If your wacom tablet won't work without this project even though you are on the latest kernel version, that is a different issue that you should report. Since any fix I proposed here only aligns this project further with the upstream kernel, none of them would help if you that is the case.

dhyvc commented

Thank you. I was not aware that recent kernels support my old Intuos 3 out of the box. It didn't used to be that way and I kept reinstalling this package with every kernel update, or else the tablet would not be detected. I removed the package as you suggested and was pleasantly surprised to see the tablet working. Sorry for wasting your time - I should have read the thread more thoroughly.

Is there a work around? I am on pinetab 2 and it doesn't come with the wacom modules :O

My Cintiq 13HD (2013) also does not work unless I use this project, on Archlinux (last kernel it is usable on is 6.2.13)

The fix that Jason worked on has been merged (#368). Please clone the code from the current source by:

$ git clone https://github.com/linuxwacom/input-wacom.git
$ cd input-wacom

then follow the steps at https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source to build the driver. Please let us know if it fixes the issue or not.

celgit commented

@Pinglinux : That change you made fixes the problem I also had (same as OP). Thanks for that :)
I do need to get my driver to load on boot though, have to run modprobe wacom on every boot and creating .conf-file in /etc/modules-load.d/ doesn't work in nobara linux.

Edit:
The file /usr/lib/modprobe.d/99-opentabletdriver.conf appearently blacklists the wacom-file from loading. Oh well.

Thanks for the updated code once again!

@celgit Thanks for the update. Glad to know that you are using the Open Source Wacom Linux driver for your Wacom device!

Fix is in 1.1.0, which was released last month.

Build still fails after making this change

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/home/basicfrog/input-wacom-0.49.0' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.3.1-zen2-1-zen/build
checking kernel version... 6.3.1-zen2-1-zen
checking RHEL7 minor release... 0
checking power supply version... pre-v4.1
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE...
checking CONFIG_LOCK_DOWN_KERNEL...
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT...
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.3.1-zen2-1-zen/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.3.1-zen2-1-zen/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key...
checking for module signing certificate...
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.7/Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.3.1-zen2-1-zen/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/home/basicfrog/input-wacom-0.49.0'
Making all in 4.5
make[2]: Entering directory '/home/basicfrog/input-wacom-0.49.0/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.3.1-zen2-1-zen/build M=/home/basicfrog/input-wacom-0.49.0/4.5
  CC [M]  /home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.o
/home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.c:281:27: error: initialization of ‘int (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types]
  281 |         .probe          = wacom_i2c_probe,
      |                           ^~~~~~~~~~~~~~~
/home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.c:281:27: note: (near initialization for ‘wacom_i2c_driver.<anonymous>.probe’)
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:252: /home/basicfrog/input-wacom-0.49.0/4.5/wacom_i2c.o] Error 1
make[3]: *** [Makefile:2023: /home/basicfrog/input-wacom-0.49.0/4.5] Error 2
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/home/basicfrog/input-wacom-0.49.0/4.5'
make[1]: *** [Makefile:372: all-recursive] Error 1
make[1]: Leaving directory '/home/basicfrog/input-wacom-0.49.0'
make: *** [Makefile:307: all] Error 2
Build Failed

looks like I`m getting the same error again...

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/var/lib/dkms/input-wacom/1.2.0/build' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.8.1-zen1-1-zen/build
checking kernel version... 6.8.1-zen1-1-zen
checking RHEL7 minor release... 0
checking power supply version... v4.1+
checking devm_add_action_or_reset... yes
checking hid_is_using_ll_driver... no
checking hid_is_usb... yes
checking legacy I2C probe API... no
checking input_set_timestamp... yes
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE... 
checking CONFIG_LOCK_DOWN_KERNEL... 
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT... 
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.8.1-zen1-1-zen/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.8.1-zen1-1-zen/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key... 
checking for module signing certificate... 
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.8.1-zen1-1-zen/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/var/lib/dkms/input-wacom/1.2.0/build'
Making all in 4.5
make[2]: Entering directory '/var/lib/dkms/input-wacom/1.2.0/build/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.8.1-zen1-1-zen/build M=/var/lib/dkms/input-wacom/1.2.0/build/4.5 
make[3]: Entering directory '/usr/lib/modules/6.8.1-zen1-1-zen/build'
  CC [M]  /var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_wac.o
  CC [M]  /var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_sys.o
  LD [M]  /var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom.o
  CC [M]  /var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_w8001.o
/var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_w8001.c: In function ‘w8001_connect’:
/var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_w8001.c:628:9: error: implicit declaration of function ‘strlcpy’; did you mean ‘strscpy’? [-Werror=implicit-function-declaration]
  628 |         strlcpy(basename, "Wacom Serial", sizeof(basename));
      |         ^~~~~~~
      |         strscpy
cc1: some warnings being treated as errors
make[5]: *** [scripts/Makefile.build:243: /var/lib/dkms/input-wacom/1.2.0/build/4.5/wacom_w8001.o] Error 1
make[4]: *** [/usr/lib/modules/6.8.1-zen1-1-zen/build/Makefile:1919: /var/lib/dkms/input-wacom/1.2.0/build/4.5] Error 2
make[3]: *** [Makefile:240: __sub-make] Error 2
make[3]: Leaving directory '/usr/lib/modules/6.8.1-zen1-1-zen/build'
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/var/lib/dkms/input-wacom/1.2.0/build/4.5'
make[1]: *** [Makefile:369: all-recursive] Error 1
make[1]: Leaving directory '/var/lib/dkms/input-wacom/1.2.0/build'
make: *** [Makefile:306: all] Error 2

What distribution and version are you using? The error messages are different from your build of input-wacom for 0.49.0 and 1.2.0. Please follow the steps at [1] to make sure your development environment is up to date:

Prerequisites
Before building, you'll need to ensure the necessary dependencies have been installed on your system:

Debian, Ubuntu, and Mint users:

sudo apt-get install build-essential autoconf linux-headers-$(uname -r)

RHEL, CentOS, and Fedora users:

sudo yum groupinstall 'Development Tools'
sudo yum install "kernel-devel-uname-r == $(uname -r)"

Arch Linux and Manjaro users:

sudo pacman -S base-devel linux-headers

SUSE users:

sudo zypper install --type pattern devel_basis
sudo zypper install kernel-devel

If you went through the steps already, the following command may help you (assume you are a Debian, Ubuntu, or Mint user:

sudo apt-get install libbsd-dev

[1] https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source

What distribution and version are you using? The error messages are different from your build of input-wacom for 0.49.0 and 1.2.0. Please follow the steps at [1] to make sure your development environment is up to date:

Prerequisites Before building, you'll need to ensure the necessary dependencies have been installed on your system:

Debian, Ubuntu, and Mint users:

sudo apt-get install build-essential autoconf linux-headers-$(uname -r)

RHEL, CentOS, and Fedora users:

sudo yum groupinstall 'Development Tools' sudo yum install "kernel-devel-uname-r == $(uname -r)"

Arch Linux and Manjaro users:

sudo pacman -S base-devel linux-headers

SUSE users:

sudo zypper install --type pattern devel_basis sudo zypper install kernel-devel

If you went through the steps already, the following command may help you (assume you are a Debian, Ubuntu, or Mint user:

sudo apt-get install libbsd-dev

[1] https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source

Hi, sorry for the late reply, a lot has been going on for me lately...

anyways:
I'm using Arch Linux, with Linux-zen (vanilla Linux is also installed).

The previous Errors are from trying to install the AUR package.

I tried builiding it manually with the latest release (v1.2.0) and with the latest git (after d5c02aa).
Both builds failed with the same error:

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/home/jonathan/Projekte/input-wacom/input-wacom' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.8.2-zen2-1-zen/build
checking kernel version... 6.8.2-zen2-1-zen
checking RHEL7 minor release... 0
checking power supply version... v4.1+
checking devm_add_action_or_reset... yes
checking hid_is_using_ll_driver... no
checking hid_is_usb... yes
checking legacy I2C probe API... no
checking input_set_timestamp... yes
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE... 
checking CONFIG_LOCK_DOWN_KERNEL... 
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT... 
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.8.2-zen2-1-zen/build/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.8.2-zen2-1-zen/build/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key... 
checking for module signing certificate... 
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.8.2-zen2-1-zen/build

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/home/jonathan/Projekte/input-wacom/input-wacom'
Making all in 4.5
make[2]: Entering directory '/home/jonathan/Projekte/input-wacom/input-wacom/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.8.2-zen2-1-zen/build M=/home/jonathan/Projekte/input-wacom/input-wacom/4.5 
make[3]: Entering directory '/usr/lib/modules/6.8.2-zen2-1-zen/build'
  CC [M]  /home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_wac.o
  CC [M]  /home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_sys.o
  LD [M]  /home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom.o
  CC [M]  /home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_w8001.o
/home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_w8001.c: In function ‘w8001_connect’:
/home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_w8001.c:628:9: error: implicit declaration of function ‘strlcpy’; did you mean ‘strscpy’? [-Werror=implicit-function-declaration]
  628 |         strlcpy(basename, "Wacom Serial", sizeof(basename));
      |         ^~~~~~~
      |         strscpy
cc1: some warnings being treated as errors
make[5]: *** [scripts/Makefile.build:243: /home/jonathan/Projekte/input-wacom/input-wacom/4.5/wacom_w8001.o] Error 1
make[4]: *** [/usr/lib/modules/6.8.2-zen2-1-zen/build/Makefile:1919: /home/jonathan/Projekte/input-wacom/input-wacom/4.5] Error 2
make[3]: *** [Makefile:240: __sub-make] Error 2
make[3]: Leaving directory '/usr/lib/modules/6.8.2-zen2-1-zen/build'
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/home/jonathan/Projekte/input-wacom/input-wacom/4.5'
make[1]: *** [Makefile:369: all-recursive] Error 1
make[1]: Leaving directory '/home/jonathan/Projekte/input-wacom/input-wacom'
make: *** [Makefile:306: all] Error 2

all significant packages are up-to-date.

I got the "$ sudo apt-get install libbsd-dev" suggestion from https://unix.stackexchange.com/questions/230948/implicit-declaration-of-strlcpy-and-strlcat-even-with-string-h-included. Please take a look. There are probably other steps to take.

I tested it on both Ubuntu 22.04 and 23.10. I didn't see the issue (I didn't need to install libbsd-dev). If the above link doesn't resolve your issue, it could be something specific to your environment/setup.

I have the same error, although I have prerequisites as mentioned in official guide

here's some info about my setup:

Nobara Linux 39 (GNOME Edition) x86_64
6.8.7-201.fsync.fc39.x86_64

Not sure if anything else is needed, but would be happy to provide more info

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... none
checking if build path '/home/aleksa/Desktop/Projects/input-wacom-1.2.0' has spaces... no
checking for kernel type... Linux
checking for linux-based kernel... yes
checking for kernel source/headers... /lib/modules/6.8.7-201.fsync.fc39.x86_64/source
checking kernel version... 6.8.7-201.fsync.fc39.x86_64
checking RHEL7 minor release... 0
checking power supply version... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4387: .autoconf/build/Makefile: Permission denied
pre-v4.1
checking devm_add_action_or_reset... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4450: .autoconf/build/Makefile: Permission denied
yes
checking hid_is_using_ll_driver... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4513: .autoconf/build/Makefile: Permission denied
yes
checking hid_is_usb... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4575: .autoconf/build/Makefile: Permission denied
yes
checking legacy I2C probe API... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4639: .autoconf/build/Makefile: Permission denied
no
checking input_set_timestamp... rm: cannot remove '.autoconf/build/conftest.mod.c': Permission denied
rm: cannot remove '.autoconf/build/Makefile': Permission denied
rm: cannot remove '.autoconf/build/conftest.c': Permission denied
rm: cannot remove '.autoconf/build/.conftest.o.d': Permission denied
./configure: line 4702: .autoconf/build/Makefile: Permission denied
yes
checking CONFIG_MODULE_SIG... y
checking CONFIG_MODULE_SIG_FORCE... 
checking CONFIG_LOCK_DOWN_KERNEL... 
checking CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT... 
checking secure boot state... off
checking if modules must be signed... recommended
checking CONFIG_MODULE_SIG_HASH... sha512
checking for module signing hash algorithm... sha512
checking for kernel autogenerated key at /lib/modules/6.8.7-201.fsync.fc39.x86_64/source/certs/signing_key.pem... no
checking for kernel autogenerated cert at /lib/modules/6.8.7-201.fsync.fc39.x86_64/source/certs/signing_key.x509... no
checking for shim MOK key at /var/lib/shim-signed/mok/MOK.priv... no
checking for shim MOK cert at /var/lib/shim-signed/mok/MOK.der... no
checking for rEFInd MOK key at /etc/refind.d/keys/refind_local.key... no
checking for rEFInd MOK cert at /etc/refind.d/keys/refind_local.cer... no
checking for module signing key... 
checking for module signing certificate... 
configure: WARNING: Kernel module signing is recommended but we are unable to find signing keys. Consider re-running configure with the options '--with-signing-key=<key>' and '--with-signing-cert=<cert>' set.

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating 3.17/Makefile
config.status: creating 4.5/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
configure:
----------------------------------------
  BUILD ENVIRONMENT:
       linux kernel - yes 4.5
      kernel source - yes /lib/modules/6.8.7-201.fsync.fc39.x86_64/source

NOTE: The kernel drivers included in this package are only tested with the
X Wacom driver built from xf86-input-wacom. If you are running an X server
version older than 1.7, please use the drivers provided by the linuxwacom
package.

Please run 'make && make install'.
make  all-recursive
make[1]: Entering directory '/home/aleksa/Desktop/Projects/input-wacom-1.2.0'
Making all in 4.5
make[2]: Entering directory '/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5'
    Building input-wacom drivers for 4.5 kernel.
make -C /lib/modules/6.8.7-201.fsync.fc39.x86_64/source M=/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5 
make[3]: Entering directory '/usr/src/kernels/6.8.7-201.fsync.fc39.x86_64'
  CC [M]  /home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.o
/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.c: In function ‘w8001_connect’:
/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.c:628:9: error: implicit declaration of function ‘strlcpy’; did you mean ‘strscpy’? [-Werror=implicit-function-declaration]
  628 |         strlcpy(basename, "Wacom Serial", sizeof(basename));
      |         ^~~~~~~
      |         strscpy
/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.c: At top level:
/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.c:709:1: fatal error: opening dependency file /home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/.wacom_w8001.o.d: Permission denied
  709 | module_serio_driver(w8001_drv);
      | ^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
compilation terminated.
make[5]: *** [scripts/Makefile.build:243: /home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5/wacom_w8001.o] Error 1
make[4]: *** [/usr/src/kernels/6.8.7-201.fsync.fc39.x86_64/Makefile:1942: /home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5] Error 2
make[3]: *** [Makefile:252: __sub-make] Error 2
make[3]: Leaving directory '/usr/src/kernels/6.8.7-201.fsync.fc39.x86_64'
make[2]: *** [Makefile:43: all] Error 2
make[2]: Leaving directory '/home/aleksa/Desktop/Projects/input-wacom-1.2.0/4.5'
make[1]: *** [Makefile:369: all-recursive] Error 1
make[1]: Leaving directory '/home/aleksa/Desktop/Projects/input-wacom-1.2.0'
make: *** [Makefile:306: all] Error 2