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:
Robert Lehmann
2024-07-10 10:36:18 +02:00
committed by Alex Stewart
parent c5b4ba0c42
commit ab8afa8395

View File

@@ -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)