mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
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:
parent
b438ee40c2
commit
63b70eef80
@ -22,16 +22,16 @@ class LibreELEC_Package:
|
|||||||
self.unpacks = []
|
self.unpacks = []
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
s = "%-9s: %s" % ("name", self.name)
|
s = f"{name:<9}: {self.name}"
|
||||||
s = "%s\n%-9s: %s" % (s, "section", self.section)
|
s = f"{s}\n{section:<9}: {self.section}"
|
||||||
|
|
||||||
for t in self.deps:
|
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 = f"{s}\n{'NEEDS':<9}: {self.wants}"
|
||||||
s = "%s\n%-9s: %s" % (s, "WANTED BY", self.wantedby)
|
s = f"{s}\n{'WANTED BY':<9}: {self.wantedby}"
|
||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ class Node:
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.target = target
|
self.target = target
|
||||||
self.section = section
|
self.section = section
|
||||||
self.fqname = "%s:%s" % (name, target)
|
self.fqname = f"{name}:{target}"
|
||||||
self.edges = []
|
self.edges = []
|
||||||
|
|
||||||
def appendEdges(self, node):
|
def appendEdges(self, node):
|
||||||
@ -99,19 +99,19 @@ class Node:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
s = "%-9s: %s" % ("name", self.name)
|
s = f"{'name':<9}: {self.name}"
|
||||||
s = "%s\n%-9s: %s" % (s, "target", self.target)
|
s = f"{s}\n{'target':<9}: {self.target}"
|
||||||
s = "%s\n%-9s: %s" % (s, "fqname", self.fqname)
|
s = f"{s}\n{'fqname':<9}: {self.fqname}"
|
||||||
s = "%s\n%-9s: %s" % (s, "common", self.commonName())
|
s = f"{s}\n{'common':<9}: {self.commonName()}"
|
||||||
s = "%s\n%-9s: %s" % (s, "section", self.section)
|
s = f"{s}\n{'section':<9}: {self.section}"
|
||||||
|
|
||||||
for e in self.edges:
|
for e in self.edges:
|
||||||
s = "%s\nEDGE: %s" % (s, e.fqname)
|
s = f"{s}\nEDGE: {e.fqname}"
|
||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def commonName(self):
|
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):
|
def addEdge(self, node):
|
||||||
if node not in self.edges:
|
if node not in self.edges:
|
||||||
@ -120,9 +120,9 @@ class Node:
|
|||||||
def eprint(*args, **kwargs):
|
def eprint(*args, **kwargs):
|
||||||
print(*args, file=sys.stderr, **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():
|
def loadPackages():
|
||||||
jdata = json.loads("[%s]" % sys.stdin.read().replace('\n','')[:-1])
|
jdata = json.loads(f"[{sys.stdin.read().replace(chr(10),'')[:-1]}]")
|
||||||
|
|
||||||
map = {}
|
map = {}
|
||||||
|
|
||||||
@ -195,8 +195,10 @@ def dep_resolve(node, resolved, unresolved):
|
|||||||
for edge in node.edges:
|
for edge in node.edges:
|
||||||
if edge not in resolved:
|
if edge not in resolved:
|
||||||
if edge in unresolved:
|
if edge in unresolved:
|
||||||
raise Exception('Circular reference detected: %s -> %s\nRemove %s from %s package.mk::PKG_DEPENDS_%s' % \
|
raise Exception((
|
||||||
(node.fqname, edge.commonName(), edge.commonName(), node.name, node.target.upper()))
|
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)
|
dep_resolve(edge, resolved, unresolved)
|
||||||
|
|
||||||
if node not in resolved:
|
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]:
|
for pkgname in [x for x in args.build if x]:
|
||||||
if pkgname.find(":") == -1:
|
if pkgname.find(":") == -1:
|
||||||
pkgname = "%s:target" % pkgname
|
pkgname = f"{pkgname}:target"
|
||||||
|
|
||||||
if pkgname in nodes:
|
if pkgname in nodes:
|
||||||
dep_resolve(nodes[pkgname], resolved, unresolved)
|
dep_resolve(nodes[pkgname], resolved, unresolved)
|
||||||
@ -228,7 +230,7 @@ def get_build_steps(args, nodes):
|
|||||||
if unresolved != []:
|
if unresolved != []:
|
||||||
eprint("The following dependencies have not been resolved:")
|
eprint("The following dependencies have not been resolved:")
|
||||||
for dep in unresolved:
|
for dep in unresolved:
|
||||||
eprint(" %s" % dep)
|
eprint(f" {dep}")
|
||||||
raise("Unresolved references")
|
raise("Unresolved references")
|
||||||
|
|
||||||
# Output list of resolved dependencies
|
# Output list of resolved dependencies
|
||||||
@ -289,9 +291,9 @@ def processPackages(args, packages):
|
|||||||
for t in pkg.deps:
|
for t in pkg.deps:
|
||||||
for d in pkg.deps[t]:
|
for d in pkg.deps[t]:
|
||||||
if split_package(d)[0] not in needed_map:
|
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:
|
if args.warn_invalid:
|
||||||
eprint("WARNING: %s" % msg)
|
eprint(f"WARNING: {msg}")
|
||||||
else:
|
else:
|
||||||
raise Exception(msg)
|
raise Exception(msg)
|
||||||
|
|
||||||
@ -310,14 +312,14 @@ def processPackages(args, packages):
|
|||||||
pkg = needed_map[pkgname]
|
pkg = needed_map[pkgname]
|
||||||
for target in pkg.deps:
|
for target in pkg.deps:
|
||||||
for dep in pkg.deps[target]:
|
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:
|
if dfq not in node_map:
|
||||||
(dfq_p, dfq_t) = split_package(dfq)
|
(dfq_p, dfq_t) = split_package(dfq)
|
||||||
if dfq_p in packages:
|
if dfq_p in packages:
|
||||||
dpkg = packages[dfq_p]
|
dpkg = packages[dfq_p]
|
||||||
node_map[dfq] = Node(dfq_p, dfq_t, dpkg.section)
|
node_map[dfq] = Node(dfq_p, dfq_t, dpkg.section)
|
||||||
elif not args.ignore_invalid:
|
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
|
# To each target-specific node, add the corresponding
|
||||||
# target-specific dependency nodes ("edges")
|
# target-specific dependency nodes ("edges")
|
||||||
@ -327,9 +329,9 @@ def processPackages(args, packages):
|
|||||||
if args.warn_invalid:
|
if args.warn_invalid:
|
||||||
continue
|
continue
|
||||||
else:
|
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]:
|
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:
|
if dfq in node_map:
|
||||||
node.addEdge(node_map[dfq])
|
node.addEdge(node_map[dfq])
|
||||||
|
|
||||||
@ -369,9 +371,9 @@ REQUIRED_PKGS = processPackages(args, ALL_PACKAGES)
|
|||||||
# Identify list of packages to build/install
|
# Identify list of packages to build/install
|
||||||
steps = [step for step in get_build_steps(args, REQUIRED_PKGS)]
|
steps = [step for step in get_build_steps(args, REQUIRED_PKGS)]
|
||||||
|
|
||||||
eprint("Packages loaded : %d" % loaded)
|
eprint(f"Packages loaded : {loaded}")
|
||||||
eprint("Build trigger(s): %d [%s]" % (len(args.build), " ".join(args.build)))
|
eprint(f"Build trigger(s): {len(args.build)} [{' '.join(args.build)}]")
|
||||||
eprint("Package steps : %d" % len(steps))
|
eprint(f"Package steps : {len(steps)}")
|
||||||
eprint("")
|
eprint("")
|
||||||
|
|
||||||
# Write the JSON build plan (with dependencies)
|
# Write the JSON build plan (with dependencies)
|
||||||
@ -393,7 +395,7 @@ if args.show_wants:
|
|||||||
for step in steps:
|
for step in steps:
|
||||||
node = (REQUIRED_PKGS[step[1]])
|
node = (REQUIRED_PKGS[step[1]])
|
||||||
wants = [edge.fqname for edge in node.edges]
|
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:
|
else:
|
||||||
for step in steps:
|
for step in steps:
|
||||||
print("%-7s %s" % (step[0], step[1].replace(":target","")))
|
print(f"{step[0]:<7} {step[1].replace(':target','')}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user