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