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 12import warnings 13warnings.simplefilter("default") 14 15bindir = os.path.dirname(__file__) 16topdir = os.path.dirname(bindir) 17sys.path[0:0] = [os.path.join(topdir, 'lib')] 18 19import bb.tinfoil 20 21if __name__ == "__main__": 22 parser = argparse.ArgumentParser(description="Bitbake Query Variable") 23 parser.add_argument("variable", help="variable name to query") 24 parser.add_argument("-r", "--recipe", help="Recipe name to query", default=None, required=False) 25 parser.add_argument('-u', '--unexpand', help='Do not expand the value (with --value)', action="store_true") 26 parser.add_argument('-f', '--flag', help='Specify a variable flag to query (with --value)', default=None) 27 parser.add_argument('--value', help='Only report the value, no history and no variable name', action="store_true") 28 parser.add_argument('-q', '--quiet', help='Silence bitbake server logging', action="store_true") 29 args = parser.parse_args() 30 31 if args.unexpand and not args.value: 32 print("--unexpand only makes sense with --value") 33 sys.exit(1) 34 35 if args.flag and not args.value: 36 print("--flag only makes sense with --value") 37 sys.exit(1) 38 39 with bb.tinfoil.Tinfoil(tracking=True, setup_logging=not args.quiet) as tinfoil: 40 if args.recipe: 41 tinfoil.prepare(quiet=2) 42 d = tinfoil.parse_recipe(args.recipe) 43 else: 44 tinfoil.prepare(quiet=2, config_only=True) 45 d = tinfoil.config_data 46 if args.flag: 47 print(str(d.getVarFlag(args.variable, args.flag, expand=(not args.unexpand)))) 48 elif args.value: 49 print(str(d.getVar(args.variable, expand=(not args.unexpand)))) 50 else: 51 bb.data.emit_var(args.variable, d=d, all=True) 52