xref: /OK3568_Linux_fs/yocto/bitbake/bin/bitbake-getvar (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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