xref: /OK3568_Linux_fs/yocto/scripts/opkg-query-helper.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/usr/bin/env python3
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun# OpenEmbedded opkg query helper utility
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# Written by: Paul Eggleton <paul.eggleton@linux.intel.com>
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# Copyright 2012 Intel Corporation
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
10*4882a593Smuzhiyun#
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunimport sys
13*4882a593Smuzhiyunimport fileinput
14*4882a593Smuzhiyunimport re
15*4882a593Smuzhiyun
16*4882a593Smuzhiyunarchmode = False
17*4882a593Smuzhiyunfilemode = False
18*4882a593Smuzhiyunvermode = False
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunargs = []
21*4882a593Smuzhiyunfor arg in sys.argv[1:]:
22*4882a593Smuzhiyun    if arg == '-a':
23*4882a593Smuzhiyun        archmode = True
24*4882a593Smuzhiyun    elif arg == '-f':
25*4882a593Smuzhiyun        filemode = True
26*4882a593Smuzhiyun    elif arg == '-v':
27*4882a593Smuzhiyun        vermode = True
28*4882a593Smuzhiyun    else:
29*4882a593Smuzhiyun        args.append(arg)
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun# Regex for removing version specs after dependency items
32*4882a593Smuzhiyunverregex = re.compile(' \([=<>]* [^ )]*\)')
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunpkg = ""
35*4882a593Smuzhiyunver = ""
36*4882a593Smuzhiyunfor line in fileinput.input(args):
37*4882a593Smuzhiyun    line = line.rstrip()
38*4882a593Smuzhiyun    if ': ' in line:
39*4882a593Smuzhiyun        if line.startswith("Package:"):
40*4882a593Smuzhiyun            pkg = line.split(": ")[1]
41*4882a593Smuzhiyun            ver = ""
42*4882a593Smuzhiyun        else:
43*4882a593Smuzhiyun            if archmode:
44*4882a593Smuzhiyun                if line.startswith("Architecture:"):
45*4882a593Smuzhiyun                    arch = line.split(": ")[1]
46*4882a593Smuzhiyun                    print("%s %s" % (pkg,arch))
47*4882a593Smuzhiyun            elif filemode:
48*4882a593Smuzhiyun                if line.startswith("Version:"):
49*4882a593Smuzhiyun                    ver = line.split(": ")[1]
50*4882a593Smuzhiyun                elif line.startswith("Architecture:"):
51*4882a593Smuzhiyun                    arch = line.split(": ")[1]
52*4882a593Smuzhiyun                    print("%s %s_%s_%s.ipk %s" % (pkg,pkg,ver,arch,arch))
53*4882a593Smuzhiyun            elif vermode:
54*4882a593Smuzhiyun                if line.startswith("Version:"):
55*4882a593Smuzhiyun                    ver = line.split(": ")[1]
56*4882a593Smuzhiyun                elif line.startswith("Architecture:"):
57*4882a593Smuzhiyun                    arch = line.split(": ")[1]
58*4882a593Smuzhiyun                    print("%s %s %s" % (pkg,arch,ver))
59*4882a593Smuzhiyun            else:
60*4882a593Smuzhiyun                if line.startswith("Depends:"):
61*4882a593Smuzhiyun                    depval = line.split(": ")[1]
62*4882a593Smuzhiyun                    deps = depval.split(", ")
63*4882a593Smuzhiyun                    for dep in deps:
64*4882a593Smuzhiyun                        dep = verregex.sub('', dep)
65*4882a593Smuzhiyun                        print("%s|%s" % (pkg,dep))
66*4882a593Smuzhiyun                elif line.startswith("Recommends:"):
67*4882a593Smuzhiyun                    recval = line.split(": ")[1]
68*4882a593Smuzhiyun                    recs = recval.split(", ")
69*4882a593Smuzhiyun                    for rec in recs:
70*4882a593Smuzhiyun                        rec = verregex.sub('', rec)
71*4882a593Smuzhiyun                        print("%s|%s [REC]" % (pkg, rec))
72*4882a593Smuzhiyun
73