summaryrefslogtreecommitdiffstats
path: root/openembedded/classes/package.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'openembedded/classes/package.bbclass')
-rw-r--r--openembedded/classes/package.bbclass74
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 @@
1def legitimize_package_name(s): 1def legitimize_package_name(s):
2 return s.lower().replace('_', '-').replace('@', '+').replace(',', '+').replace('/', '-') 2 return s.lower().replace('_', '-').replace('@', '+').replace(',', '+').replace('/', '-')
3 3
4STAGING_PKGMAPS_DIR ?= "${STAGING_DIR}/pkgmaps"
5
6def 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
24def 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
42def 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
61python 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
4def 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): 71def 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
642do_package[dirs] = "${D}" 712do_package[dirs] = "${D}"
643populate_packages[dirs] = "${D}" 713populate_packages[dirs] = "${D}"
644EXPORT_FUNCTIONS do_package do_shlibs do_split_locales 714EXPORT_FUNCTIONS do_package do_shlibs do_split_locales mapping_rename_hook
645addtask package before do_build after do_populate_staging 715addtask package before do_build after do_populate_staging