genbuildplan: convert to fstrings

Backslashes are illegal syntax within f-strings, so work around it with
chr(). chr(10) is UTF-8 character 10, aka Line feed, aka LF, aka "\n".

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
This commit is contained in:
Ian Leonard 2021-01-11 04:28:10 +00:00
parent b438ee40c2
commit 63b70eef80

View File

@ -22,16 +22,16 @@ class LibreELEC_Package:
self.unpacks = []
def __repr__(self):
s = "%-9s: %s" % ("name", self.name)
s = "%s\n%-9s: %s" % (s, "section", self.section)
s = f"{name:<9}: {self.name}"
s = f"{s}\n{section:<9}: {self.section}"
for t in self.deps:
s = "%s\n%-9s: %s" % (s, t, self.deps[t])
s = f"{s}\n{t:<9}: {self.deps[t]}"
s = "%s\n%-9s: %s" % (s, "UNPACKS", self.unpacks)
s = f"{s}\n{'UNPACKS':<9}: {self.unpacks}"
s = "%s\n%-9s: %s" % (s, "NEEDS", self.wants)
s = "%s\n%-9s: %s" % (s, "WANTED BY", self.wantedby)
s = f"{s}\n{'NEEDS':<9}: {self.wants}"
s = f"{s}\n{'WANTED BY':<9}: {self.wantedby}"
return s
@ -79,7 +79,7 @@ class Node:
self.name = name
self.target = target
self.section = section
self.fqname = "%s:%s" % (name, target)
self.fqname = f"{name}:{target}"
self.edges = []
def appendEdges(self, node):
@ -99,19 +99,19 @@ class Node:
return True
def __repr__(self):
s = "%-9s: %s" % ("name", self.name)
s = "%s\n%-9s: %s" % (s, "target", self.target)
s = "%s\n%-9s: %s" % (s, "fqname", self.fqname)
s = "%s\n%-9s: %s" % (s, "common", self.commonName())
s = "%s\n%-9s: %s" % (s, "section", self.section)
s = f"{'name':<9}: {self.name}"
s = f"{s}\n{'target':<9}: {self.target}"
s = f"{s}\n{'fqname':<9}: {self.fqname}"
s = f"{s}\n{'common':<9}: {self.commonName()}"
s = f"{s}\n{'section':<9}: {self.section}"
for e in self.edges:
s = "%s\nEDGE: %s" % (s, e.fqname)
s = f"{s}\nEDGE: {e.fqname}"
return s
def commonName(self):
return self.name if self.target == "target" else "%s:%s" % (self.name, self.target)
return self.name if self.target == "target" else f"{self.name}:{self.target}"
def addEdge(self, node):
if node not in self.edges:
@ -120,9 +120,9 @@ class Node:
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
# Read a JSON list of all possible packages from stdin
# Read a JSON list of all possible packages from stdin, removing newlines
def loadPackages():
jdata = json.loads("[%s]" % sys.stdin.read().replace('\n','')[:-1])
jdata = json.loads(f"[{sys.stdin.read().replace(chr(10),'')[:-1]}]")
map = {}
@ -195,8 +195,10 @@ def dep_resolve(node, resolved, unresolved):
for edge in node.edges:
if edge not in resolved:
if edge in unresolved:
raise Exception('Circular reference detected: %s -> %s\nRemove %s from %s package.mk::PKG_DEPENDS_%s' % \
(node.fqname, edge.commonName(), edge.commonName(), node.name, node.target.upper()))
raise Exception((
f"Circular reference detected: {nod.fqname} -> {edge.commonName()}\n"
f"Remove {edge.commonName()} from {node.name} package.mk::PKG_DEPENDS_{node.target.upper()}"
))
dep_resolve(edge, resolved, unresolved)
if node not in resolved:
@ -219,7 +221,7 @@ def get_build_steps(args, nodes):
for pkgname in [x for x in args.build if x]:
if pkgname.find(":") == -1:
pkgname = "%s:target" % pkgname
pkgname = f"{pkgname}:target"
if pkgname in nodes:
dep_resolve(nodes[pkgname], resolved, unresolved)
@ -228,7 +230,7 @@ def get_build_steps(args, nodes):
if unresolved != []:
eprint("The following dependencies have not been resolved:")
for dep in unresolved:
eprint(" %s" % dep)
eprint(f" {dep}")
raise("Unresolved references")
# Output list of resolved dependencies
@ -289,9 +291,9 @@ def processPackages(args, packages):
for t in pkg.deps:
for d in pkg.deps[t]:
if split_package(d)[0] not in needed_map:
msg = 'Invalid package reference: dependency %s in package %s::PKG_DEPENDS_%s is not valid' % (d, pkgname, t.upper())
msg = f'Invalid package reference: dependency {d} in package {pkgname}::PKG_DEPENDS_{t.upper()} is not valid'
if args.warn_invalid:
eprint("WARNING: %s" % msg)
eprint(f"WARNING: {msg}")
else:
raise Exception(msg)
@ -310,14 +312,14 @@ def processPackages(args, packages):
pkg = needed_map[pkgname]
for target in pkg.deps:
for dep in pkg.deps[target]:
dfq = dep if dep.find(":") != -1 else "%s:target" % dep
dfq = dep if dep.find(":") != -1 else f"{dep}:target"
if dfq not in node_map:
(dfq_p, dfq_t) = split_package(dfq)
if dfq_p in packages:
dpkg = packages[dfq_p]
node_map[dfq] = Node(dfq_p, dfq_t, dpkg.section)
elif not args.ignore_invalid:
raise Exception("Invalid package! Package %s cannot be found for this PROJECT/DEVICE/ARCH" % dfq_p)
raise Exception(f"Invalid package! Package {dfq_p} cannot be found for this PROJECT/DEVICE/ARCH")
# To each target-specific node, add the corresponding
# target-specific dependency nodes ("edges")
@ -327,9 +329,9 @@ def processPackages(args, packages):
if args.warn_invalid:
continue
else:
raise Exception("Invalid package! Package %s cannot be found for this PROJECT/DEVICE/ARCH" % node.name)
raise Exception(f"Invalid package! Package {node.name} cannot be found for this PROJECT/DEVICE/ARCH")
for dep in needed_map[node.name].deps[node.target]:
dfq = dep if dep.find(":") != -1 else "%s:target" % dep
dfq = dep if dep.find(":") != -1 else f"{dep}:target"
if dfq in node_map:
node.addEdge(node_map[dfq])
@ -369,9 +371,9 @@ REQUIRED_PKGS = processPackages(args, ALL_PACKAGES)
# Identify list of packages to build/install
steps = [step for step in get_build_steps(args, REQUIRED_PKGS)]
eprint("Packages loaded : %d" % loaded)
eprint("Build trigger(s): %d [%s]" % (len(args.build), " ".join(args.build)))
eprint("Package steps : %d" % len(steps))
eprint(f"Packages loaded : {loaded}")
eprint(f"Build trigger(s): {len(args.build)} [{' '.join(args.build)}]")
eprint(f"Package steps : {len(steps)}")
eprint("")
# Write the JSON build plan (with dependencies)
@ -393,7 +395,7 @@ if args.show_wants:
for step in steps:
node = (REQUIRED_PKGS[step[1]])
wants = [edge.fqname for edge in node.edges]
print("%-7s %-25s (wants: %s)" % (step[0], step[1].replace(":target",""), ", ".join(wants).replace(":target","")))
print(f"{step[0]:<7} {step[1].replace(':target',''):<25} (wants: {', '.join(wants).replace(':target','')})")
else:
for step in steps:
print("%-7s %s" % (step[0], step[1].replace(":target","")))
print(f"{step[0]:<7} {step[1].replace(':target','')}")