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 |
