diff options
Diffstat (limited to 'openembedded/classes/package.bbclass')
-rw-r--r-- | openembedded/classes/package.bbclass | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/openembedded/classes/package.bbclass b/openembedded/classes/package.bbclass index 03a533d59a..71795e8bb6 100644 --- a/openembedded/classes/package.bbclass +++ b/openembedded/classes/package.bbclass | |||
@@ -1,6 +1,73 @@ | |||
1 | def legitimize_package_name(s): | 1 | def legitimize_package_name(s): |
2 | return s.lower().replace('_', '-').replace('@', '+').replace(',', '+').replace('/', '-') | 2 | return s.lower().replace('_', '-').replace('@', '+').replace(',', '+').replace('/', '-') |
3 | 3 | ||
4 | STAGING_PKGMAPS_DIR ?= "${STAGING_DIR}/pkgmaps" | ||
5 | |||
6 | def add_package_mapping (pkg, new_name, d): | ||
7 | import bb, os | ||
8 | |||
9 | def encode(str): | ||
10 | import codecs | ||
11 | c = codecs.getencoder("string_escape") | ||
12 | return c(str)[0] | ||
13 | |||
14 | pmap_dir = bb.data.getVar('STAGING_PKGMAPS_DIR', d, 1) | ||
15 | |||
16 | bb.mkdirhier(pmap_dir) | ||
17 | |||
18 | data_file = os.path.join(pmap_dir, pkg) | ||
19 | |||
20 | f = open(data_file, 'w') | ||
21 | f.write("%s\n" % encode(new_name)) | ||
22 | f.close() | ||
23 | |||
24 | def get_package_mapping (pkg, d): | ||
25 | import bb, os | ||
26 | |||
27 | def decode(str): | ||
28 | import codecs | ||
29 | c = codecs.getdecoder("string_escape") | ||
30 | return c(str)[0] | ||
31 | |||
32 | data_file = bb.data.expand("${STAGING_PKGMAPS_DIR}/%s" % pkg, d) | ||
33 | |||
34 | if os.access(data_file, os.R_OK): | ||
35 | f = file(data_file, 'r') | ||
36 | lines = f.readlines() | ||
37 | f.close() | ||
38 | for l in lines: | ||
39 | return decode(l).strip() | ||
40 | return pkg | ||
41 | |||
42 | def runtime_mapping_rename (varname, d): | ||
43 | import bb, os | ||
44 | |||
45 | #bb.note("%s before: %s" % (varname, bb.data.getVar(varname, d, 1))) | ||
46 | |||
47 | new_depends = [] | ||
48 | for depend in explode_deps(bb.data.getVar(varname, d, 1) or ""): | ||
49 | # Have to be careful with any version component of the depend | ||
50 | split_depend = depend.split(' (') | ||
51 | new_depend = get_package_mapping(split_depend[0].strip(), d) | ||
52 | if len(split_depend) > 1: | ||
53 | new_depends.append("%s (%s" % (new_depend, split_depend[1])) | ||
54 | else: | ||
55 | new_depends.append(new_depend) | ||
56 | |||
57 | bb.data.setVar(varname, " ".join(new_depends) or None, d) | ||
58 | |||
59 | #bb.note("%s after: %s" % (varname, bb.data.getVar(varname, d, 1))) | ||
60 | |||
61 | python package_mapping_rename_hook () { | ||
62 | runtime_mapping_rename("RDEPENDS", d) | ||
63 | runtime_mapping_rename("RRECOMMENDS", d) | ||
64 | runtime_mapping_rename("RSUGGESTS", d) | ||
65 | runtime_mapping_rename("RPROVIDES", d) | ||
66 | runtime_mapping_rename("RREPLACES", d) | ||
67 | runtime_mapping_rename("RCONFLICTS", d) | ||
68 | } | ||
69 | |||
70 | |||
4 | def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None, allow_dirs=False, prepend=False, match_path=False): | 71 | def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None, allow_dirs=False, prepend=False, match_path=False): |
5 | import os, os.path, bb | 72 | import os, os.path, bb |
6 | 73 | ||
@@ -240,8 +307,11 @@ python populate_packages () { | |||
240 | bb.build.exec_func("package_name_hook", d) | 307 | bb.build.exec_func("package_name_hook", d) |
241 | 308 | ||
242 | for pkg in packages.split(): | 309 | for pkg in packages.split(): |
243 | if bb.data.getVar('PKG_%s' % pkg, d, 1) is None: | 310 | pkgname = bb.data.getVar('PKG_%s' % pkg, d, 1) |
311 | if pkgname is None: | ||
244 | bb.data.setVar('PKG_%s' % pkg, pkg, d) | 312 | bb.data.setVar('PKG_%s' % pkg, pkg, d) |
313 | else: | ||
314 | add_package_mapping(pkg, pkgname, d) | ||
245 | 315 | ||
246 | dangling_links = {} | 316 | dangling_links = {} |
247 | pkg_files = {} | 317 | pkg_files = {} |
@@ -641,5 +711,5 @@ python package_do_package () { | |||
641 | 711 | ||
642 | do_package[dirs] = "${D}" | 712 | do_package[dirs] = "${D}" |
643 | populate_packages[dirs] = "${D}" | 713 | populate_packages[dirs] = "${D}" |
644 | EXPORT_FUNCTIONS do_package do_shlibs do_split_locales | 714 | EXPORT_FUNCTIONS do_package do_shlibs do_split_locales mapping_rename_hook |
645 | addtask package before do_build after do_populate_staging | 715 | addtask package before do_build after do_populate_staging |