summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2012-10-22 10:37:24 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-10-23 12:28:32 +0100
commitbc41dfb9cd2d3b90d97fa051c90d2f53bacde059 (patch)
tree79f09ec34c9b6604e30c962d714a840ede3cc9ca /meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
parente7bae18e9d178479e25d1996f9995438093c0577 (diff)
downloadpoky-bc41dfb9cd2d3b90d97fa051c90d2f53bacde059.tar.gz
xserver-xorg: add runtime provides for the driver ABI version
The xserver driver ABIs can and do change in a way that is unrelated to the version of xserver, so it's entirely possible to build an image that has a mismatch between the server ABI version and the version that the drivers were built against. xserver detects this and refuses to load the modules. By adding RPROVIDEs to the xserver package that describe the ABI versions it has (such as xorg-abi-video-13, xorg-abi-input-11), drivers can RDEPEND on the version that they were built against. This means that when the ABIs change, there will be package dependency errors at image time instead of images that build fine but don't work. (From OE-Core rev: 8ef5f205aec04140198d5ba0f5c405ae6e977dbe) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-graphics/xorg-xserver/xserver-xorg.inc')
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg.inc27
1 files changed, 26 insertions, 1 deletions
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index b45cb4429d..33564eb66e 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -13,7 +13,7 @@ PROVIDES = "virtual/xserver-xf86"
13PROVIDES += "virtual/xserver" 13PROVIDES += "virtual/xserver"
14 14
15PE = "2" 15PE = "2"
16INC_PR = "r2" 16INC_PR = "r3"
17 17
18XORG_PN = "xorg-server" 18XORG_PN = "xorg-server"
19SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2" 19SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
@@ -132,3 +132,28 @@ do_install_append () {
132 # Its assumed base-files creates this for us 132 # Its assumed base-files creates this for us
133 rmdir ${D}${localstatedir}/log/ 133 rmdir ${D}${localstatedir}/log/
134} 134}
135
136# Add runtime provides for the ABI versions of the video and input subsystems,
137# so that drivers can depend on the relevant version.
138python populate_packages_prepend() {
139 import subprocess
140
141 # Set PKG_CONFIG_PATH so pkg-config looks at the .pc files that are going
142 # into the new package, not the staged ones.
143 newenv = dict(os.environ)
144 newenv["PKG_CONFIG_PATH"] = d.expand("${PKGD}${libdir}/pkgconfig/")
145
146 def get_abi(name):
147 abis = {
148 "video": "abi_videodrv",
149 "input": "abi_xinput"
150 }
151 p = subprocess.Popen(args="pkg-config --variable=%s xorg-server" % abis[name],
152 shell=True, env=newenv, stdout=subprocess.PIPE)
153 output = p.communicate()[0]
154 return "xorg-abi-%s-%s" % (name, output.split(".")[0])
155
156 pn = d.getVar("PN", True)
157 d.appendVar("RPROVIDES_" + pn, " " + get_abi("input"))
158 d.appendVar("RPROVIDES_" + pn, " " + get_abi("video"))
159}