Roger Karis
2014-05-19 12:19:02 UTC
Hello,
while building an i568-based linux distribution with PTXdist 2014.4 we
discovered a deployment problem involving mesalib and xorg-server.
The xorg-server package uses pkg-config during the prepare phase to
determine the absolute path where DRI drivers are installed. The path
is stored in the variable 'dridriverdir' in dri.pc.
In previous versions of mesalib (e.g. 8.0.3), this path variable was
fully expanded at package preparation time (for example to
/usr/lib/dri). In the current packaged version (10.1.0), this path is
not fully expanded but remains relative to the install prefix (which
is set to /usr at prepare). At install time the prefix is replaced by
${pcfiledir}/../.. which makes the dridriverdir relative to the
sysroot-target folder.
When starting the xorg-server on the target, this means that the
drivers will be loaded from an absolute path using
.../platform-foo/sysroot-target/.... Because the drivers are located
at /usr/lib/dri, this fails with a AIGLX dlopen() error.
The workaround we currently employ is to explicitly specify the driver
directory (--with-dri-driverdir) during mesalib preparation, but of
course it would be much better if there was a proper solution to this
problem.
Thanks,
Roger
while building an i568-based linux distribution with PTXdist 2014.4 we
discovered a deployment problem involving mesalib and xorg-server.
The xorg-server package uses pkg-config during the prepare phase to
determine the absolute path where DRI drivers are installed. The path
is stored in the variable 'dridriverdir' in dri.pc.
In previous versions of mesalib (e.g. 8.0.3), this path variable was
fully expanded at package preparation time (for example to
/usr/lib/dri). In the current packaged version (10.1.0), this path is
not fully expanded but remains relative to the install prefix (which
is set to /usr at prepare). At install time the prefix is replaced by
${pcfiledir}/../.. which makes the dridriverdir relative to the
sysroot-target folder.
When starting the xorg-server on the target, this means that the
drivers will be loaded from an absolute path using
.../platform-foo/sysroot-target/.... Because the drivers are located
at /usr/lib/dri, this fails with a AIGLX dlopen() error.
The workaround we currently employ is to explicitly specify the driver
directory (--with-dri-driverdir) during mesalib preparation, but of
course it would be much better if there was a proper solution to this
problem.
Thanks,
Roger