diff options
Diffstat (limited to 'meta/classes-recipe/multilib_script.bbclass')
-rw-r--r-- | meta/classes-recipe/multilib_script.bbclass | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/meta/classes-recipe/multilib_script.bbclass b/meta/classes-recipe/multilib_script.bbclass new file mode 100644 index 0000000000..7011526254 --- /dev/null +++ b/meta/classes-recipe/multilib_script.bbclass | |||
@@ -0,0 +1,40 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | # | ||
8 | # Recipe needs to set MULTILIB_SCRIPTS in the form <pkgname>:<scriptname>, e.g. | ||
9 | # MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/file1 ${PN}:${base_bindir}/file2" | ||
10 | # to indicate which script files to process from which packages. | ||
11 | # | ||
12 | |||
13 | inherit update-alternatives | ||
14 | |||
15 | MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}" | ||
16 | |||
17 | PACKAGE_PREPROCESS_FUNCS += "multilibscript_rename" | ||
18 | |||
19 | multilibscript_rename() { | ||
20 | : | ||
21 | } | ||
22 | |||
23 | python () { | ||
24 | # Do nothing if multilib isn't being used | ||
25 | if not d.getVar("MULTILIB_VARIANTS"): | ||
26 | return | ||
27 | # Do nothing for native/cross | ||
28 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d): | ||
29 | return | ||
30 | |||
31 | for entry in (d.getVar("MULTILIB_SCRIPTS", False) or "").split(): | ||
32 | pkg, script = entry.split(":") | ||
33 | epkg = d.expand(pkg) | ||
34 | scriptname = os.path.basename(script) | ||
35 | d.appendVar("ALTERNATIVE:" + epkg, " " + scriptname + " ") | ||
36 | d.setVarFlag("ALTERNATIVE_LINK_NAME", scriptname, script) | ||
37 | d.setVarFlag("ALTERNATIVE_TARGET", scriptname, script + "-${MULTILIB_SUFFIX}") | ||
38 | d.appendVar("multilibscript_rename", "\n mv ${PKGD}" + script + " ${PKGD}" + script + "-${MULTILIB_SUFFIX}") | ||
39 | d.appendVar("FILES:" + epkg, " " + script + "-${MULTILIB_SUFFIX}") | ||
40 | } | ||