1#! /usr/bin/env python3 2# 3# Copyright (C) 2021 Richard Purdie 4# 5# SPDX-License-Identifier: GPL-2.0-only 6# 7 8import argparse 9import io 10import os 11import sys 12 13bindir = os.path.dirname(__file__) 14topdir = os.path.dirname(bindir) 15sys.path[0:0] = [os.path.join(topdir, 'lib')] 16 17import bb.tinfoil 18 19if __name__ == "__main__": 20 parser = argparse.ArgumentParser(description="Bitbake Query Variable") 21 parser.add_argument("variable", help="variable name to query") 22 parser.add_argument("-r", "--recipe", help="Recipe name to query", default=None, required=False) 23 parser.add_argument('-u', '--unexpand', help='Do not expand the value (with --value)', action="store_true") 24 parser.add_argument('-f', '--flag', help='Specify a variable flag to query (with --value)', default=None) 25 parser.add_argument('--value', help='Only report the value, no history and no variable name', action="store_true") 26 args = parser.parse_args() 27 28 if args.unexpand and not args.value: 29 print("--unexpand only makes sense with --value") 30 sys.exit(1) 31 32 if args.flag and not args.value: 33 print("--flag only makes sense with --value") 34 sys.exit(1) 35 36 with bb.tinfoil.Tinfoil(tracking=True) as tinfoil: 37 if args.recipe: 38 tinfoil.prepare(quiet=2) 39 d = tinfoil.parse_recipe(args.recipe) 40 else: 41 tinfoil.prepare(quiet=2, config_only=True) 42 d = tinfoil.config_data 43 if args.flag: 44 print(str(d.getVarFlag(args.variable, args.flag, expand=(not args.unexpand)))) 45 elif args.value: 46 print(str(d.getVar(args.variable, expand=(not args.unexpand)))) 47 else: 48 bb.data.emit_var(args.variable, d=d, all=True) 49