diff options
author | Dave Cobbley <david.j.cobbley@linux.intel.com> | 2018-08-14 20:05:37 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-08-23 04:26:31 +0300 |
commit | eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 (patch) | |
tree | de291a73dc37168da6370e2cf16c347d1eba9df8 /poky/scripts/distro/build-recipe-list.py | |
parent | 9c3cf826d853102535ead04cebc2d6023eff3032 (diff) | |
download | openbmc-eb8dc40360f0cfef56fb6947cc817a547d6d9bc6.tar.xz |
[Subtree] Removing import-layers directory
As part of the move to subtrees, need to bring all the import layers
content to the top level.
Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f
Signed-off-by: Dave Cobbley <david.j.cobbley@linux.intel.com>
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'poky/scripts/distro/build-recipe-list.py')
-rwxr-xr-x | poky/scripts/distro/build-recipe-list.py | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/poky/scripts/distro/build-recipe-list.py b/poky/scripts/distro/build-recipe-list.py new file mode 100755 index 0000000000..2162764850 --- /dev/null +++ b/poky/scripts/distro/build-recipe-list.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2017, Intel Corporation. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms and conditions of the GNU General Public License, +# version 2, as published by the Free Software Foundation. +# +# This program is distributed in the hope it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# + +import os +import shutil +import csv +import sys +import argparse + +__version__ = "0.1.0" + +# set of BPNs +recipenames = set() +# map of recipe -> data +allrecipes = {} + +def make_bpn(recipe): + prefixes = ("nativesdk-",) + suffixes = ("-native", "-cross", "-initial", "-intermediate", "-crosssdk", "-cross-canadian") + for ix in prefixes + suffixes: + if ix in recipe: + recipe = recipe.replace(ix, "") + return recipe + +def gather_recipes(rows): + for row in rows: + recipe = row[0] + bpn = make_bpn(recipe) + if bpn not in recipenames: + recipenames.add(bpn) + if recipe not in allrecipes: + allrecipes[recipe] = row + +def generate_recipe_list(): + # machine list + machine_list = ( "qemuarm64", "qemuarm", "qemumips64", "qemumips", "qemuppc", "qemux86-64", "qemux86" ) + # set filename format + fnformat = 'distrodata.%s.csv' + + # store all data files in distrodata + datadir = 'distrodata' + + # create the directory if it does not exists + if not os.path.exists(datadir): + os.mkdir(datadir) + + # doing bitbake distrodata + for machine in machine_list: + os.system('MACHINE='+ machine + ' bitbake -k universe -c distrodata') + shutil.copy('tmp/log/distrodata.csv', 'distrodata/' + fnformat % machine) + + for machine in machine_list: + with open('distrodata/' + fnformat % machine) as f: + reader = csv.reader(f) + rows = reader.__iter__() + gather_recipes(rows) + + with open('recipe-list.txt', 'w') as f: + for recipe in sorted(recipenames): + f.write("%s\n" % recipe) + print("file : recipe-list.txt is created with %d entries." % len(recipenames)) + + with open('all-recipe-list.txt', 'w') as f: + for recipe, row in sorted(allrecipes.items()): + f.write("%s\n" % ','.join(row)) + + +def diff_for_new_recipes(recipe1, recipe2): + prev_recipe_path = recipe1 + '/' + curr_recipe_path = recipe2 + '/' + if not os.path.isfile(prev_recipe_path + 'recipe-list.txt') or not os.path.isfile(curr_recipe_path + 'recipe-list.txt'): + print("recipe files do not exists. please verify that the file exists.") + exit(1) + + import csv + + prev = [] + new = [] + + with open(prev_recipe_path + 'recipe-list.txt') as f: + prev = f.readlines() + + with open(curr_recipe_path + 'recipe-list.txt') as f: + new = f.readlines() + + updates = [] + for pn in new: + if not pn in prev: + updates.append(pn.rstrip()) + + allrecipe = [] + with open(recipe1 + '_' + recipe2 + '_new_recipe_list.txt','w') as dr: + with open(curr_recipe_path + 'all-recipe-list.txt') as f: + reader = csv.reader(f, delimiter=',') + for row in reader: + if row[0] in updates: + dr.write("%s,%s,%s" % (row[0], row[3], row[5])) + if len(row[9:]) > 0: + dr.write(",%s" % ','.join(row[9:])) + dr.write("\n") + +def main(argv): + if argv[0] == "generate_recipe_list": + generate_recipe_list() + elif argv[0] == "compare_recipe": + diff_for_new_recipes(argv[1], argv[2]) + else: + print("no such option. choose either 'generate_recipe_list' or 'compare_recipe'") + + exit(0) + +if __name__ == "__main__": + try: + sys.exit(main(sys.argv[1:])) + except Exception as e: + print("Exception :", e) + sys.exit(1) + |