From 8fdc122f65e128782eeac6f699b58a64e378bd12 Mon Sep 17 00:00:00 2001 From: Edward Cragg Date: Fri, 8 Apr 2016 14:32:30 +0100 Subject: extensions/strip-gplv3.configure: Fix to work with YBD Add an object and functions allowing metadata to be read more easily from multiple sources, either morph metadata, or with a conversion function for YBD formatted metadata. Change-Id: I94ea2425edecb4a659968134b0900081e22913d3 --- extensions/strip-gplv3.configure | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'extensions') diff --git a/extensions/strip-gplv3.configure b/extensions/strip-gplv3.configure index 2dac0907..70a08d77 100755 --- a/extensions/strip-gplv3.configure +++ b/extensions/strip-gplv3.configure @@ -1,5 +1,5 @@ #!/usr/bin/python -# Copyright (C) 2013 Codethink Limited +# Copyright (C) 2013-2016 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,7 +21,6 @@ to find the files created by that chunk, then remove them. ''' -import json import os import re import subprocess @@ -29,6 +28,9 @@ import sys import writeexts +import imp +scriptslib = imp.load_source('scriptslib', 'scripts/scriptslib.py') + class StripGPLv3ConfigureExtension(writeexts.Extension): gplv3_chunks = [ ['autoconf', ''], @@ -59,29 +61,16 @@ class StripGPLv3ConfigureExtension(writeexts.Extension): def process_args(self, args): target_root = args[0] meta_dir = os.path.join(target_root, 'baserock') + metadata = scriptslib.meta_load_from_dir(meta_dir) for chunk in self.gplv3_chunks: - regex = os.path.join(meta_dir, "%s-[^-]\+\.meta" % chunk[0]) - artifacts = subprocess.check_output(['busybox', 'find', meta_dir, - '-regex', regex]) - - for artifact in artifacts.split(): - self.remove_chunk(target_root, artifact, chunk[1]) - - os.symlink(os.path.join(os.sep, 'bin', 'busybox'), - os.path.join(target_root, 'usr', 'bin', 'awk')) + for meta in metadata.get_name(chunk[0]): + self.remove_chunk( + target_root, reversed(meta['contents']), chunk[1]) - def remove_chunk(self, target_root, chunk, pattern): - chunk_meta_path = os.path.join(target_root, 'baserock', chunk) - - with open(chunk_meta_path, 'r') as f: - chunk_meta_data = json.load(f) - - if not 'contents' in chunk_meta_data: - raise writeexts.ExtensionError( - 'Chunk %s does not have a "contents" list' % chunk) + def remove_chunk(self, target_root, chunk_contents, pattern): updated_contents = [] - for content_entry in reversed(chunk_meta_data['contents']): + for content_entry in chunk_contents: pat = re.compile(pattern) if len(pattern) == 0 or not pat.match(content_entry): self.remove_content_entry(target_root, content_entry) -- cgit v1.2.1