summaryrefslogtreecommitdiffstats
path: root/meta/recipes-graphics/xorg-xserver/xserver-abi.inc
blob: 9731185649a094d10f03bc72cf690676ce3d25c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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)