# depends on virtual/xserver
REQUIRED_DISTRO_FEATURES = "x11"
-# Function to add the relevant ABI dependency to drivers, which should be called
-# from a PACKAGEFUNC.
-def _add_xorg_abi_depends(d, name):
- # Map of ABI names exposed in the dependencies to pkg-config variables
- abis = {
- "video": "abi_videodrv",
- "input": "abi_xinput"
- }
-
- output = os.popen("pkg-config xorg-server --variable=%s" % abis[name]).read()
- mlprefix = d.getVar('MLPREFIX') or ''
- abi = "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0])
-
- pn = d.getVar("PN")
- d.appendVar('RDEPENDS:' + pn, ' ' + abi)
-
SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}"
+
+require recipes-graphics/xorg-xserver/xserver-abi.inc
require xorg-driver-common.inc
python add_xorg_abi_depends() {
- _add_xorg_abi_depends(d, "input")
+ _add_xorg_abi_depends(d, "xinput")
}
PACKAGEFUNCS =+ "add_xorg_abi_depends"
require xorg-driver-common.inc
python add_xorg_abi_depends() {
- _add_xorg_abi_depends(d, "video")
+ _add_xorg_abi_depends(d, "videodrv")
}
PACKAGEFUNCS =+ "add_xorg_abi_depends"
--- /dev/null
+# Add runtime provides for the ABI versions, so that drivers can depend on the
+# relevant version. This should be called from PACKAGEFUNCS.
+python add_xorg_abi_provides() {
+ import subprocess
+
+ pn = d.getVar("PN")
+ mlprefix = d.getVar("MLPREFIX") or ""
+
+ # Set PKG_CONFIG_PATH so pkg-config looks at the .pc files that are going
+ # into the new package, not the staged ones.
+ newenv = dict(os.environ)
+ newenv["PKG_CONFIG_PATH"] = d.expand("${PKGD}${libdir}/pkgconfig/:") + newenv["PKG_CONFIG_PATH"]
+
+ # Get the list of ABIs that the pc file declares
+ cmd = ("pkg-config", "--print-variables", "xorg-server")
+ output = subprocess.run(cmd, check=True, capture_output=True, text=True, env=newenv).stdout
+ abis = [var for var in output.splitlines() if var.startswith("abi_")]
+
+ # Set RPROVIDES for those ABIs with the major version
+ for abi in abis:
+ cmd = ("pkg-config", "--variable", abi, "xorg-server")
+ version = subprocess.run(cmd, check=True, capture_output=True, text=True, env=newenv).stdout
+ major = version.split(".")[0]
+
+ provides = " %sxorg-%s-%s" % (mlprefix, abi.replace("_", "-"), major)
+ d.appendVar("RPROVIDES:" + pn, provides)
+}
+
+# Add the specified ABI dependency to the specified package.
+# If package is not set then PN is used.
+# This should be called via a shim function in PACKAGEFUNCS.
+def _add_xorg_abi_depends(d, abi, package=None):
+ import subprocess
+
+ if not package:
+ package = d.getVar("PN")
+
+ # Set PKG_CONFIG_PATH to cater for the case where xserver is
+ # itself providing drivers.
+ newenv = dict(os.environ)
+ newenv["PKG_CONFIG_PATH"] = d.expand("${PKGD}${libdir}/pkgconfig/:") + newenv["PKG_CONFIG_PATH"]
+
+ mlprefix = d.getVar("MLPREFIX") or ""
+ cmd = ("pkg-config", "xorg-server", "--variable=abi_%s" % abi)
+ output = subprocess.run(cmd, text=True, capture_output=True, check=True, env=newenv).stdout
+ abi = "%sxorg-abi-%s-%s" % (mlprefix, abi, output.split(".")[0])
+
+ d.appendVar('RDEPENDS:' + package, ' ' + abi)
xf86-video-modesetting"
SUMMARY:xf86-video-modesetting = "X.Org X server -- modesetting display driver"
-INSANE_SKIP:${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi"
XSERVER_RDEPENDS = "xkeyboard-config rgb xserver-xf86-config xkbcomp xf86-input-libinput"
RDEPENDS:${PN} += "${XSERVER_RDEPENDS}"
sed -i -e 's,${libdir}/xorg/modules,${prefix}/lib*/xorg/modules,' ${D}${mandir}/man5/xorg.conf.5
}
-# Add runtime provides for the ABI versions of the video and input subsystems,
-# so that drivers can depend on the relevant version.
-python populate_packages:prepend() {
- import subprocess
-
- # Set PKG_CONFIG_PATH so pkg-config looks at the .pc files that are going
- # into the new package, not the staged ones.
- newenv = dict(os.environ)
- newenv["PKG_CONFIG_PATH"] = d.expand("${PKGD}${libdir}/pkgconfig/")
-
- def get_abi(name):
- abis = {
- "video": "abi_videodrv",
- "input": "abi_xinput"
- }
- p = subprocess.Popen(args="pkg-config --variable=%s xorg-server" % abis[name],
- shell=True, env=newenv, stdout=subprocess.PIPE)
- stdout, stderr = p.communicate()
- output = stdout.decode("utf-8").split(".")[0]
- mlprefix = d.getVar('MLPREFIX') or ''
- return "%sxorg-abi-%s-%s" % (mlprefix, name, output)
-
- pn = d.getVar("PN")
- d.appendVar("RPROVIDES:" + pn, " " + get_abi("input"))
- d.appendVar("RPROVIDES:" + pn, " " + get_abi("video"))
+require xserver-abi.inc
+
+python add_xorg_abi_depends() {
+ _add_xorg_abi_depends(d, "videodrv", d.expand("${MLPREFIX}xf86-video-modesetting"))
}
+PACKAGEFUNCS =+ "add_xorg_abi_provides add_xorg_abi_depends"
+
CVE_STATUS[CVE-2023-5574] = "${@bb.utils.contains('PACKAGECONFIG', 'xvfb', 'unpatched', 'not-applicable-config: specific to Xvfb', d)}"