mirror of
https://git.yoctoproject.org/git/opkg-utils
synced 2026-05-07 07:36:05 +02:00
opkg-show-deps: Fix common linter warnings
This patch fixes common linter warnings. Signed-off-by: Robert Lehmann <robert.lehmann@sitec-systems.de> Signed-off-by: Alex Stewart <astewart.49c6@gmail.com>
This commit is contained in:
committed by
Alex Stewart
parent
c5b4ba0c42
commit
ab8afa8395
136
opkg-show-deps
136
opkg-show-deps
@@ -3,28 +3,29 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import print_function
|
||||
|
||||
import sys, os, posixpath
|
||||
from glob import glob
|
||||
import sys
|
||||
import opkg
|
||||
import getopt
|
||||
import re
|
||||
|
||||
verbose = 0
|
||||
|
||||
|
||||
def usage():
|
||||
sys.stderr.write("%s [-p Packages] package ...\n" % (sys.argv[0],))
|
||||
sys.exit(-1)
|
||||
sys.stderr.write("%s [-p Packages] package ...\n" % (sys.argv[0],))
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
packages_filename = "Packages"
|
||||
(opts, remaining_args) = getopt.getopt(sys.argv[1:], "hp:")
|
||||
for (optkey, optval) in opts:
|
||||
if optkey == '-h':
|
||||
usage()
|
||||
if optkey == '-p':
|
||||
packages_filename = optval
|
||||
if optkey == '-h':
|
||||
usage()
|
||||
if optkey == '-p':
|
||||
packages_filename = optval
|
||||
|
||||
if ( not remaining_args ):
|
||||
usage()
|
||||
if (not remaining_args):
|
||||
usage()
|
||||
|
||||
packages = opkg.Packages()
|
||||
packages.read_packages_file(packages_filename)
|
||||
@@ -32,70 +33,75 @@ packages.read_packages_file(packages_filename)
|
||||
required = {}
|
||||
provider_hash = {}
|
||||
|
||||
|
||||
def split_list(str):
|
||||
r = []
|
||||
l = str.split(",")
|
||||
for i in l:
|
||||
ll = i.split("|")
|
||||
for ii in ll:
|
||||
ii = ii.strip()
|
||||
r.append(ii)
|
||||
return r
|
||||
r = []
|
||||
line = str.split(",")
|
||||
for i in line:
|
||||
ll = i.split("|")
|
||||
for ii in ll:
|
||||
ii = ii.strip()
|
||||
r.append(ii)
|
||||
return r
|
||||
|
||||
|
||||
for i in list(packages.packages.keys()):
|
||||
p = packages.packages[i]
|
||||
if p.package not in provider_hash:
|
||||
provider_hash[p.package] = []
|
||||
provider_hash[p.package].append(p)
|
||||
if p.provides:
|
||||
provides = p.provides.split(",")
|
||||
for prov in provides:
|
||||
prov = prov.strip()
|
||||
if prov not in provider_hash:
|
||||
provider_hash[prov] = []
|
||||
provider_hash[prov].append(p)
|
||||
p = packages.packages[i]
|
||||
if p.package not in provider_hash:
|
||||
provider_hash[p.package] = []
|
||||
provider_hash[p.package].append(p)
|
||||
if p.provides:
|
||||
provides = p.provides.split(",")
|
||||
for prov in provides:
|
||||
prov = prov.strip()
|
||||
if prov not in provider_hash:
|
||||
provider_hash[prov] = []
|
||||
provider_hash[prov].append(p)
|
||||
|
||||
|
||||
def find_package(name):
|
||||
# Return all providers of the named package
|
||||
if name in provider_hash:
|
||||
return provider_hash[name]
|
||||
return None
|
||||
# Return all providers of the named package
|
||||
if name in provider_hash:
|
||||
return provider_hash[name]
|
||||
return None
|
||||
|
||||
|
||||
def process_dep(pkg, dep):
|
||||
# Add a provider of the given dependency to the list of required packages
|
||||
# unless a provider is already present in this list.
|
||||
dep = re.sub("\s*\(.*\)", "", dep)
|
||||
dep = re.sub("\*$", "", dep)
|
||||
newpkgs = find_package(dep)
|
||||
if newpkgs:
|
||||
# Loop over all providers of the dependency and return early if any
|
||||
# provider is already in the list of required pacakges - we only need
|
||||
# one provider of this dependency.
|
||||
for newpkg in newpkgs:
|
||||
if newpkg.package in required:
|
||||
return
|
||||
# Select the first provider, add it to the required packages list and
|
||||
# process its dependencies
|
||||
recurse(newpkgs[0])
|
||||
else:
|
||||
sys.stderr.write("unsatisfied dependency of %s on '%s'\n" % (pkg.package, dep))
|
||||
# Add a provider of the given dependency to the list of required packages
|
||||
# unless a provider is already present in this list.
|
||||
dep = re.sub("\s*\(.*\)", "", dep)
|
||||
dep = re.sub("\*$", "", dep)
|
||||
newpkgs = find_package(dep)
|
||||
if newpkgs:
|
||||
# Loop over all providers of the dependency and return early if any
|
||||
# provider is already in the list of required pacakges - we only need
|
||||
# one provider of this dependency.
|
||||
for newpkg in newpkgs:
|
||||
if newpkg.package in required:
|
||||
return
|
||||
# Select the first provider, add it to the required packages list and
|
||||
# process its dependencies
|
||||
recurse(newpkgs[0])
|
||||
else:
|
||||
sys.stderr.write("unsatisfied dependency of %s on '%s'\n" % (pkg.package, dep))
|
||||
|
||||
|
||||
def recurse(pkg):
|
||||
# Add a package to the required list and process its dependencies
|
||||
required[pkg.package] = 1
|
||||
if pkg.depends:
|
||||
deps = split_list(pkg.depends)
|
||||
for dep in deps:
|
||||
process_dep(pkg, dep)
|
||||
# Add a package to the required list and process its dependencies
|
||||
required[pkg.package] = 1
|
||||
if pkg.depends:
|
||||
deps = split_list(pkg.depends)
|
||||
for dep in deps:
|
||||
process_dep(pkg, dep)
|
||||
|
||||
|
||||
for root in remaining_args:
|
||||
pkgs = find_package(root)
|
||||
if not pkgs:
|
||||
sys.stderr.write("Can't find root package '%s'\n" % root)
|
||||
sys.exit(-1)
|
||||
for p in pkgs:
|
||||
recurse(p)
|
||||
|
||||
for pkg in list(required.keys()):
|
||||
print(pkg)
|
||||
pkgs = find_package(root)
|
||||
if not pkgs:
|
||||
sys.stderr.write("Can't find root package '%s'\n" % root)
|
||||
sys.exit(-1)
|
||||
for p in pkgs:
|
||||
recurse(p)
|
||||
|
||||
for pkg in list(required.keys()):
|
||||
print(pkg)
|
||||
|
||||
Reference in New Issue
Block a user