diff options
| -rw-r--r-- | scripts/lib/devtool/search.py | 77 | 
1 files changed, 42 insertions, 35 deletions
| diff --git a/scripts/lib/devtool/search.py b/scripts/lib/devtool/search.py index 1c8eaff49b..2ea446237e 100644 --- a/scripts/lib/devtool/search.py +++ b/scripts/lib/devtool/search.py @@ -22,53 +22,60 @@ import bb  import logging  import argparse  import re -from devtool import setup_tinfoil, DevtoolError +from devtool import setup_tinfoil, parse_recipe, DevtoolError  logger = logging.getLogger('devtool')  def search(args, config, basepath, workspace):      """Entry point for the devtool 'search' subcommand""" -    tinfoil = setup_tinfoil(config_only=True, basepath=basepath) -    pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR', True) -    tinfoil.shutdown() +    tinfoil = setup_tinfoil(config_only=False, basepath=basepath) +    try: +        pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR', True) +        defsummary = tinfoil.config_data.getVar('SUMMARY', False) or '' -    keyword_rc = re.compile(args.keyword) +        keyword_rc = re.compile(args.keyword) -    for fn in os.listdir(pkgdata_dir): -        pfn = os.path.join(pkgdata_dir, fn) -        if not os.path.isfile(pfn): -            continue +        for fn in os.listdir(pkgdata_dir): +            pfn = os.path.join(pkgdata_dir, fn) +            if not os.path.isfile(pfn): +                continue -        packages = [] -        match = False -        if keyword_rc.search(fn): -            match = True +            packages = [] +            match = False +            if keyword_rc.search(fn): +                match = True -        if not match: -            with open(pfn, 'r') as f: -                for line in f: -                    if line.startswith('PACKAGES:'): -                        packages = line.split(':', 1)[1].strip().split() +            if not match: +                with open(pfn, 'r') as f: +                    for line in f: +                        if line.startswith('PACKAGES:'): +                            packages = line.split(':', 1)[1].strip().split() -            for pkg in packages: -                if keyword_rc.search(pkg): -                    match = True -                    break -                if os.path.exists(os.path.join(pkgdata_dir, 'runtime', pkg + '.packaged')): -                    with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f: -                        for line in f: -                            if ': ' in line: -                                splitline = line.split(':', 1) -                                key = splitline[0] -                                value = splitline[1].strip() -                            if key in ['PKG_%s' % pkg, 'DESCRIPTION', 'FILES_INFO'] or key.startswith('FILERPROVIDES_'): -                                if keyword_rc.search(value): -                                    match = True -                                    break +                for pkg in packages: +                    if keyword_rc.search(pkg): +                        match = True +                        break +                    if os.path.exists(os.path.join(pkgdata_dir, 'runtime', pkg + '.packaged')): +                        with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f: +                            for line in f: +                                if ': ' in line: +                                    splitline = line.split(':', 1) +                                    key = splitline[0] +                                    value = splitline[1].strip() +                                if key in ['PKG_%s' % pkg, 'DESCRIPTION', 'FILES_INFO'] or key.startswith('FILERPROVIDES_'): +                                    if keyword_rc.search(value): +                                        match = True +                                        break -        if match: -            print(fn) +            if match: +                rd = parse_recipe(config, tinfoil, fn, True) +                summary = rd.getVar('SUMMARY', True) +                if summary == rd.expand(defsummary): +                    summary = '' +                print("%s  %s" % (fn.ljust(20), summary)) +    finally: +        tinfoil.shutdown()      return 0 | 
