在尝试帮助用户解决以下问题时出现了此问题:基于 Debian 的发行版所需的 mesa 构建依赖项是什么?和如何在 Debian Wheezy 上向后移植 Mesa?。
在某些情况下,Debian 上的 Mesa 无法从源代码构建。请参阅 Debian 错误报告:libdrm-nouveau1a:声称是 2.4.33,但似乎实际上是 0.6。我能够在 Wheezy 上重现此构建 Mesa 9.1.3-1(来自 snapshot.debian.org)。我收到以下错误消息:
checking for NOUVEAU... no
configure: error: Package requirements (libdrm_nouveau >= 2.4.33) were not
met:
Requested 'libdrm_nouveau >= 2.4.33' but version of libdrm_nouveau is 0.6
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables NOUVEAU_CFLAGS
and NOUVEAU_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
我不确定这里发生了什么事。 bug报告里有“解释”,但我不明白。即:
这不是 debian libdrm 2.4.33 软件包中的错误。在 libdrm git 中,他们将 soname 更改为 2,并将 libdrm_nouveau.pc 中导出的版本从 0.6 更改为 2.4.33,而没有发布新版本。 Mesa 现在需要尚未发布的较新的 libdrm。在 libdrm 2.4.33 中,libdrm_nouveau.pc 中的版本是 0.6
http://cgit.freedesktop.org/mesa/drm/commit/?id=292da616fe1f936ca78a3fa8e1b1b19883e343b6 这一切都是今天发生的。
该文件/usr/lib/x86_64-linux-gnu/pkgconfig/libdrm_nouveau.pc
存在于我的系统上。这是一个 pkg-config 文件。它有以下内容。
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
Name: libdrm_nouveau
Description: Userspace interface to nouveau kernel DRM services
Version: 0.6
Libs: -L${libdir} -ldrm_nouveau
Cflags: -I${includedir} -I${includedir}/libdrm -I${includedir}/nouveau
Requires.private: libdrm
这可能是配置获取
libdrm_nouveau
0.6 信息的地方。
但是,我不清楚为什么版本设置为 0.6,而实际值是
2.4.40-1~deb7u2
(Debian wheezy 默认值)。我也不确定在当前上下文中解决此问题的正确方法 - 在喘息中构建 Mesa 0.9.3.1。
有两个明显的改变可以让梅萨(可能)得以建造。
- 将版本号更改
/usr/lib/x86_64-linux-gnu/pkgconfig/libdrm_nouveau.pc
为2.4.33或更高版本 - 更改 Mesa 配置脚本以接受版本 0.6 的 libdrm。
我不太喜欢这两种选择。在前一种情况下,我不喜欢弄乱正在运行的系统。目前还不清楚它可能会产生什么影响。在后一种情况下,在没有正确理解构建系统会产生什么影响的情况下更改它似乎也不是一个好主意。
笔记:如果您想在 Wheezy 上重现该错误,可以执行以下操作:
- 去http://snapshot.debian.org/package/mesa/9.1.3-1/
下载文件:
mesa_9.1.3.orig.tar.gz
(wget -chttp://snapshot.debian.org/archive/debian/20130529T040126Z/pool/main/m/mesa/mesa_9.1.3.orig.tar.gz)mesa_9.1.3-1.diff.gz
(wget -chttp://snapshot.debian.org/archive/debian/20130529T040126Z/pool/main/m/mesa/mesa_9.1.3-1.diff.gz)mesa_9.1.3-1.dsc
(wget -chttp://snapshot.debian.org/archive/debian/20130529T040126Z/pool/main/m/mesa/mesa_9.1.3-1.dsc)
跑步
dpkg-source -x mesa_9.1.3-1.dsc
cd
进入源码目录meda-9.1.3
并运行debuild -uc -us
并安装缺少的构建依赖项。