Нагуглить ничего не получается, как будто проблемы и нет ни у кого.
Может я что-то очевидное делаю не так?
Building module:
cleaning build area...
make -j8 KERNELRELEASE=6.1.1-060101-generic KVER=6.1.1-060101-generic -C /var/lib/dkms/ddcci/0.4.2/build...(bad exit status: 2)
ERROR (dkms apport): kernel package linux-headers-6.1.1-060101-generic is not supported
Error! Bad return status for module build on kernel: 6.1.1-060101-generic (x86_64)
Consult /var/lib/dkms/ddcci/0.4.2/build/make.log for more information.
DKMS make.log for ddcci-0.4.2 for kernel 6.1.1-060101-generic (x86_64)
Сб 07 янв 2023 12:43:11 MSK
make: вход в каталог «/var/lib/dkms/ddcci/0.4.2/build»
make -C "ddcci"
make[1]: вход в каталог «/var/lib/dkms/ddcci/0.4.2/build/ddcci»
make -C "/lib/modules/6.1.1-060101-generic/build" M="/var/lib/dkms/ddcci/0.4.2/build/ddcci" modules
make[2]: вход в каталог «/usr/src/linux-headers-6.1.1-060101-generic»
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.2.0-9ubuntu1) 12.2.0
You are using: gcc-12 (Ubuntu 12.1.0-2ubuntu1~22.04) 12.1.0
CC [M] /var/lib/dkms/ddcci/0.4.2/build/ddcci/ddcci.o
/var/lib/dkms/ddcci/0.4.2/build/ddcci/ddcci.c:1813:27: error: initialization of ‘void (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *)’ [-Werror=incompatible-pointer-types]
1813 | .remove = ddcci_remove,
| ^~~~~~~~~~~~
/var/lib/dkms/ddcci/0.4.2/build/ddcci/ddcci.c:1813:27: note: (near initialization for ‘ddcci_driver.remove’)
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:250: /var/lib/dkms/ddcci/0.4.2/build/ddcci/ddcci.o] Ошибка 1
make[2]: *** [Makefile:1998: /var/lib/dkms/ddcci/0.4.2/build/ddcci] Ошибка 2
make[2]: выход из каталога «/usr/src/linux-headers-6.1.1-060101-generic»
make[1]: *** [Makefile:38: ddcci.ko] Ошибка 2
make[1]: выход из каталога «/var/lib/dkms/ddcci/0.4.2/build/ddcci»
make: *** [Makefile:28: ddcci] Ошибка 2
make: выход из каталога «/var/lib/dkms/ddcci/0.4.2/build»
Решение:
в файле /usr/src/ddcci-0.4.2/ddcci/ddcci.c в строке 1774 заменить тип int на void и в этой же функции убрать return, т.е. функция ddcci_remove должна принять такой вид:
static void ddcci_remove(struct i2c_client *client)
{
struct ddcci_bus_drv_data *drv_data = i2c_get_clientdata(client);
struct device *dev;
down(&drv_data->sem);
while (1) {
dev = bus_find_device(&ddcci_bus_type, NULL, client,
ddcci_remove_helper);
if (!dev)
break;
device_unregister(dev);
put_device(dev);
}
up(&drv_data->sem);
}