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