grate-driver / xf86-video-opentegra

X.Org video driver for NVIDIA Tegra
Other
12 stars 9 forks source link

Driver ABI update? #68

Closed KaiJan57 closed 2 years ago

KaiJan57 commented 2 years ago

A recent xorg-server update on arch linux generated conflicts with xf86-video-opentegra-git from AUR, so I updated the package conflict X-ABI-VIDEODRV_VERSION. This driver installs fine now, but it seems to be missing symbols, preventing xorg from loading it. The error message for xorg server version 1.21.1.3 reads: Failed to load /usr/lib/xorg/modules/drivers/opentegra_drv.so: /usr/lib/xorg/modules/drivers/opentegra_drv.so: undefined symbol: exaDriverFini Maybe implementing exaDriverFini is enough to get the driver running again?

digetx commented 2 years ago

You should need to rebuild the xf86-video-opentegra package after Xorg's upgrade, have you done it?

KaiJan57 commented 2 years ago

Sure, compiles fine, but xorg gives said error...

digetx commented 2 years ago

I don't see that problem using Arch and Xorg 1.21.1.3, but I don't use xf86-video-opentegra-git and compiling/installing opentegra manually. Either you're somehow installing the older package build or there is a problem in the pkgbuild script, maybe a missing dependency?

Please check whether you have these lines in the Xorg's log, you should've the compiled for 1.21.1.1:

(II) Loading /usr/lib/xorg/modules/drivers/opentegra_drv.so
(II) Module opentegra: vendor="X.Org Foundation"
        compiled for 1.21.1.1, module version = 0.6.0
KaiJan57 commented 2 years ago

EDIT: one package that failed to upgrade seems to have blocked a lot of xorg infrastructure from upgrading. I fixed dependency issues and am looking forward to have opentegra working again after updating said xorg packages.

Odd, it doesn't even show the expected line… context:

[ 400.685] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c1 [ 400.690] (II) xfree86: Adding drm device (/dev/dri/card0) [ 400.690] (II) Platform probe for /sys/devices/soc0/50000000.host1x/drm/drm/card0 [ 400.697] (II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 11 paused 0 [ 400.700] (II) no primary bus or device found [ 400.700] falling back to /sys/devices/soc0/50000000.host1x/drm/drm/card0 [ 400.700] (II) LoadModule: "glx" [ 400.701] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so [ 400.712] (II) Module glx: vendor="X.Org Foundation" [ 400.712] compiled for 1.21.1.3, module version = 1.0.0 [ 400.712] ABI class: X.Org Server Extension, version 10.0 [ 400.712] (II) LoadModule: "opentegra" [ 400.712] (II) Loading /usr/lib/xorg/modules/drivers/opentegra_drv.so [ 400.724] (EE) Failed to load /usr/lib/xorg/modules/drivers/opentegra_drv.so: /usr/lib/xorg/modules/drivers/opentegra_drv.so: undefined symbol: exaDriverFini [ 400.724] (EE) Failed to load module "opentegra" (loader failed, 0) [ 400.724] (EE) No drivers available.

Also, I checked the build directory to make sure it indeed checks out the current version of the master branch.

KaiJan57 commented 2 years ago

No still undefined symbols, even when installing with make install :(

digetx commented 2 years ago

I retried manual make install using latest Arch Linux and it works using this method:

git clone https://github.com/grate-driver/xf86-video-opentegra.git
cd xf86-video-opentegra
sh autogen.sh --prefix=/usr
make install

I tried to build/install the PKGBUILD and I'm getting the same error as you.

I applied compiler flags changes to the PKGBUILD, which I picked up from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=xf86-video-intel-git, and now it works:

--- PKGBUILD    2022-03-06 20:18:37.890923877 +0300
+++ PKGBUILD    2022-03-06 20:18:51.125925177 +0300
@@ -8,9 +8,9 @@
 arch=('armv7h')
 url="http://github.com/grate-driver/xf86-video-opentegra"
 license=('GPL')
-depends=('libdrm-grate-git' 'systemd' 'mesa-dri')
+#depends=('libdrm-grate-git' 'systemd' 'mesa-dri')
 makedepends=('xorg-server-devel' 'git')
-conflicts=('xorg-server<1.20' 'X-ABI-VIDEODRV_VERSION<24' 'X-ABI-VIDEODRV_VERSION>=25', 'xf86-video-opentegra')
+#conflicts=('xorg-server<1.20' 'X-ABI-VIDEODRV_VERSION<24' 'X-ABI-VIDEODRV_VERSION>=25', 'xf86-video-opentegra')
 groups=('xorg-drivers' 'xorg')
 source=('git://github.com/grate-driver/xf86-video-opentegra.git')
 sha256sums=('SKIP')
@@ -35,6 +35,14 @@

 build() {
   cd "${srcdir}/$_pkgname"
+
+  # Since pacman 5.0.2-2, hardened flags are now enabled in makepkg.conf
+  # With them, module fail to load with undefined symbol.
+  # See https://bugs.archlinux.org/task/55102 / https://bugs.archlinux.org/task/54845
+  export CFLAGS=${CFLAGS/-fno-plt}
+  export CXXFLAGS=${CXXFLAGS/-fno-plt}
+  export LDFLAGS=${LDFLAGS/,-z,now}
+
   ./configure --prefix=/usr
   make
 }
KaiJan57 commented 2 years ago

Thank you so much for your time even fixing the PKGBUILD! It works now, after also cleaning the package's build directory.

digetx commented 2 years ago

You're welcome. Is it possible to update the AUR's PKGBUILD?

KaiJan57 commented 2 years ago

AFAIK the maintainer has to change it. But it is possible for everyone to pit patches into the comment section, so others are aware of this fix.