diff options
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oe/copy_buildsystem.py | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py index a5ca3df320..64755107d8 100644 --- a/meta/lib/oe/copy_buildsystem.py +++ b/meta/lib/oe/copy_buildsystem.py | |||
@@ -93,10 +93,64 @@ def prune_lockedsigs(excluded_tasks, excluded_targets, lockedsigs, pruned_output | |||
93 | invalue = True | 93 | invalue = True |
94 | f.write(line) | 94 | f.write(line) |
95 | 95 | ||
96 | def merge_lockedsigs(copy_tasks, lockedsigs_main, lockedsigs_extra, merged_output, copy_output): | ||
97 | merged = {} | ||
98 | arch_order = [] | ||
99 | with open(lockedsigs_main, 'r') as f: | ||
100 | invalue = None | ||
101 | for line in f: | ||
102 | if invalue: | ||
103 | if line.endswith('\\\n'): | ||
104 | merged[invalue].append(line) | ||
105 | else: | ||
106 | invalue = None | ||
107 | elif line.startswith('SIGGEN_LOCKEDSIGS_t-'): | ||
108 | invalue = line[18:].split('=', 1)[0].rstrip() | ||
109 | merged[invalue] = [] | ||
110 | arch_order.append(invalue) | ||
111 | |||
112 | with open(lockedsigs_extra, 'r') as f: | ||
113 | invalue = None | ||
114 | tocopy = {} | ||
115 | for line in f: | ||
116 | if invalue: | ||
117 | if line.endswith('\\\n'): | ||
118 | if not line in merged[invalue]: | ||
119 | target, task = line.strip().split(':')[:2] | ||
120 | if task in copy_tasks: | ||
121 | tocopy[invalue].append(line) | ||
122 | merged[invalue].append(line) | ||
123 | else: | ||
124 | invalue = None | ||
125 | elif line.startswith('SIGGEN_LOCKEDSIGS_t-'): | ||
126 | invalue = line[18:].split('=', 1)[0].rstrip() | ||
127 | if not invalue in merged: | ||
128 | merged[invalue] = [] | ||
129 | arch_order.append(invalue) | ||
130 | tocopy[invalue] = [] | ||
131 | |||
132 | def write_sigs_file(fn, types, sigs): | ||
133 | fulltypes = [] | ||
134 | bb.utils.mkdirhier(os.path.dirname(fn)) | ||
135 | with open(fn, 'w') as f: | ||
136 | for typename in types: | ||
137 | lines = sigs[typename] | ||
138 | if lines: | ||
139 | f.write('SIGGEN_LOCKEDSIGS_%s = "\\\n' % typename) | ||
140 | for line in lines: | ||
141 | f.write(line) | ||
142 | f.write(' "\n') | ||
143 | fulltypes.append(typename) | ||
144 | f.write('SIGGEN_LOCKEDSIGS_TYPES = "%s"\n' % ' '.join(fulltypes)) | ||
145 | |||
146 | write_sigs_file(copy_output, tocopy.keys(), tocopy) | ||
147 | write_sigs_file(merged_output, arch_order, merged) | ||
148 | |||
96 | def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring=""): | 149 | def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cache, d, fixedlsbstring=""): |
97 | bb.note('Generating sstate-cache...') | 150 | bb.note('Generating sstate-cache...') |
98 | 151 | ||
99 | bb.process.run("gen-lockedsig-cache %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache)) | 152 | bb.process.run("gen-lockedsig-cache %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache)) |
100 | if fixedlsbstring: | 153 | if fixedlsbstring: |
101 | os.rename(output_sstate_cache + '/' + d.getVar('NATIVELSBSTRING', True), | 154 | nativedir = output_sstate_cache + '/' + d.getVar('NATIVELSBSTRING', True) |
102 | output_sstate_cache + '/' + fixedlsbstring) | 155 | if os.path.isdir(nativedir): |
156 | os.rename(nativedir, output_sstate_cache + '/' + fixedlsbstring) | ||