errada versão ABI xinput ao compilar o driver da fonte

2

Estou usando o tablet Lenovo X1 Yoga e preciso de uma versão personalizada do driver xf86-input-wacom para que a caneta funcione conforme desejado. Nesse processo, descobri que alguns arquivos de cabeçalho contêm informações de versão que não são consistentes com a instalação real. Minha pergunta é como obter os arquivos de desenvolvimento corretos para me permitir compilar este driver a partir do código-fonte.

O que eu fiz:

Instalei o Ubuntu 16.04.3 LTS no meu tablet Lenovo X1 Yoga. A caneta funciona, mas produz alguns dados de entrada espúrios. Para corrigir isso, eu preciso instalar uma versão personalizada do driver xf86-input-wacom: Veja a discussão em link . Seguindo as instruções do segundo comentário nessa página, fiz o seguinte.

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

para instalar os arquivos de desenvolvimento (alguns dos pacotes já foram instalados.)

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

para obter o ramo específico de que preciso.

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

para compilar o driver.

Como estava com problemas, copiei manualmente o driver resultante

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

Após a reinicialização, nenhum dispositivo wacom ficará visível para xinput. O problema é encontrado em

/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

Então por que a versão ABI do Xinput de um módulo que acabou de ser compilado a partir do código fonte está por trás da versão do servidor X? Vamos dar uma olhada em

/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)

Então, de fato, a versão é 22 de acordo com esse arquivo de cabeçalho, mas a versão atual da minha nova instalação do Ubuntu 16.04.3 LTS é de 24.

Então, minha pergunta é: como obtenho os arquivos de desenvolvimento corretos que me permitirão compilar um driver compatível com a versão do Xorg que vem com o Ubuntu 16.04.3 LTS?

Por acaso, consegui que isso funcionasse fazendo com que meu amigo compilasse o driver em seu sistema Fedora com versões compatíveis. Acabei de copiar seu wacom_drv.so para / usr / lib / xorg / modules / input. Mas no futuro eu gostaria de poder manter isso sem a ajuda dele.

    
por James Pascaleff 28.10.2017 / 18:39

2 respostas

0

Eu fiz mais algumas pesquisas e resolvi o problema. Tanto quanto eu posso dizer, a versão padrão do Xorg que vem com o Ubuntu 16.04.3 LTS corresponde aos pacotes com o sufixo

*-hwe-16.04

Quando instalei os arquivos de desenvolvimento, instalei o pacote

xserver-xorg-dev

Isso não estava correto. Eu deveria ter instalado

xserver-xorg-dev-hwe-16.04

Embora eu não tenha certeza de como eu, como usuário, deveria saber isso. De qualquer forma, instalar esse pacote, recompilar e reinstalar resolveu o problema.

    
por James Pascaleff 30.10.2017 / 16:57
0

Estranhamente, tive exatamente o mesmo problema com o mtrack hoje. Eu o consertei fazendo checkout limpo (git clone para ser preciso) e re-executando o autoreconf e ./configure. Mas ainda não consigo descobrir como limpar o diretório original.

    
por p2rkw 29.10.2017 / 21:25