web-dev-qa-db-fra.com

Mauvaise version de ABI xinput lors de la compilation du pilote à partir de la source

J'utilise la tablette de yoga Lenovo X1 et j'ai besoin d'une version personnalisée du pilote xf86-input-wacom pour que mon stylo fonctionne comme vous le souhaitez. Au cours de ce processus, j'ai découvert que certains fichiers d'en-tête contiennent des informations sur la version qui ne sont pas cohérentes avec l'installation réelle. Ma question est de savoir comment obtenir les fichiers de développement appropriés pour pouvoir compiler ce pilote à partir des sources.

Ce que j'ai fait:

J'ai installé Ubuntu 16.04.3 LTS sur ma tablette de yoga Lenovo X1. Le stylo fonctionne, mais produit des données d'entrée parasites. Pour résoudre ce problème, je dois installer une version personnalisée du pilote xf86-input-wacom: Voir la discussion à l’adresse suivante: https://sourceforge.net/p/linuxwacom/bugs/339/ . En suivant les instructions du deuxième commentaire sur cette page, j’ai fait ce qui suit.

$ Sudo apt-get install autoconf pkg-config make xutils-dev libtool xserver-xorg-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libudev-dev

installer les fichiers de développement (certains des paquets étaient déjà installés.)

$ git clone https://github.com/jigpu/xf86-input-wacom -b fix-bug-339

pour obtenir la branche spécifique dont j'ai besoin.

$ cd xf86-input-wacom
$ ./autogen.sh --prefix=/usr && make

compiler le pilote.

Comme j'avais des problèmes, j'ai copié manuellement le pilote résultant

$ cp src/.libs/wacom_drv.so /usr/lib/xorg/modules/input/wacom_drv.so

Au redémarrage, aucun périphérique wacom n'est visible par xinput. Le problème se trouve dans

/var/log/Xorg.0.log:

[    11.725] (II) LoadModule: "wacom"
[    11.725] (II) Loading /usr/lib/xorg/modules/input/wacom_drv.so
[    11.726] (II) Module wacom: vendor="X.Org Foundation"
[    11.726]    compiled for 1.18.4, module version = 0.35.0
[    11.726]    Module class: X.Org XInput Driver
[    11.726]    ABI class: X.Org XInput driver, version 22.1
[    11.726] (EE) wacom: module ABI major version (22) doesn't match the server's version (24)
[    11.726] (II) UnloadModule: "wacom"
[    11.726] (II) Unloading wacom

Alors, pourquoi la version ABI xinput d’un module qui vient d’être compilé à partir de la source serait-elle derrière la version du serveur X? Jetons un coup d'oeil à

/usr/include/xorg/xf86Module.h:

#define ABI_ANSIC_VERSION       SET_ABI_VERSION(0, 4)
#define ABI_VIDEODRV_VERSION    SET_ABI_VERSION(20, 0)
#define ABI_XINPUT_VERSION      SET_ABI_VERSION(22, 1)
#define ABI_EXTENSION_VERSION   SET_ABI_VERSION(9, 0)
#define ABI_FONT_VERSION        SET_ABI_VERSION(0, 6)

Donc, effectivement, la version est 22 d'après ce fichier d'en-tête, mais la version actuelle de ma nouvelle installation d'Ubuntu 16.04.3 LTS est 24.

Ma question est donc la suivante: comment obtenir les fichiers de développement appropriés qui me permettront de compiler un pilote compatible avec la version de Xorg fournie avec Ubuntu 16.04.3 LTS?

Incidemment, j'ai réussi à faire fonctionner cela en demandant à mon ami de compiler le pilote sur son système Fedora doté de versions compatibles. Je viens de copier son fichier wacom_drv.so dans/usr/lib/xorg/modules/input. Mais à l'avenir, j'aimerais pouvoir continuer à le faire sans son aide.

2
James Pascaleff

J'ai fait quelques recherches supplémentaires et j'ai résolu le problème. Autant que je sache, la version par défaut de Xorg fournie avec Ubuntu 16.04.3 LTS correspond aux paquets avec le suffixe

*-hwe-16.04

Quand j'ai installé les fichiers de développement, j'ai installé le paquet

xserver-xorg-dev

Ce n'était pas correct. J'aurais dû installer

xserver-xorg-dev-hwe-16.04

Bien que je ne sois pas sûr de savoir comment, en tant qu’utilisateur, je devais le savoir. Quoi qu’il en soit, l’installation de ce paquet, la recompilation et la réinstallation ont résolu le problème.

0
James Pascaleff

Étrangement, j'avais exactement le même problème avec mtrack aujourd'hui. Je l'ai corrigé en faisant un check-out propre (clone git pour être précis) et en relançant autoreconf et ./configure. Mais je n'arrive toujours pas à comprendre comment nettoyer le répertoire d'origine.

0
p2rkw