From: Mark Wooding Date: Tue, 4 Aug 2020 22:40:35 +0000 (+0100) Subject: bin/chroot-maint: Enhance the `CROSS_TOOLS' pattern machinery. X-Git-Url: https://git.distorted.org.uk/~mdw/distorted-chroot/commitdiff_plain/33c6b9e71097b18c30e48a98a2f2e4fd4150e3ed bin/chroot-maint: Enhance the `CROSS_TOOLS' pattern machinery. There's now a way to list alternative and optional patterns. --- diff --git a/bin/chroot-maint b/bin/chroot-maint index 34dec2e..fbd45e3 100755 --- a/bin/chroot-maint +++ b/bin/chroot-maint @@ -2384,15 +2384,25 @@ class CrossToolsJob (BaseJob): ## Work through the shopping list, copying the things it names into the ## cross-tools tree. + ## + ## Each thing in the `CROSS_PATHS' list is a `|'-separated list of glob + ## patterns, optionally preceded by `?'. Unless the list starts with + ## `?', at least one of the patterns must match at least one file. + ## Patterns may contain the token `MULTI', which is replaced by the + ## donor architecture's multiarch triplet. scan = [] for pat in C.CROSS_PATHS: - pat = pat.replace("MULTI", mymulti) any = False - for rootpath in GLOB.iglob(root + pat): + pat = pat.replace("MULTI", mymulti) + if pat.startswith("?"): + pat = pat[1:] any = True - path = rootpath[len(root):] - progress("copy `%s'" % path) - run_program(["rsync", "-aHR", "%s/.%s" % (root, path), crossnew]) + for subpat in pat.split("|"): + for rootpath in GLOB.iglob(root + subpat): + any = True + path = rootpath[len(root):] + progress("copy `%s'" % path) + run_program(["rsync", "-aHR", "%s/.%s" % (root, path), crossnew]) if not any: raise RuntimeError("no matches for cross-tool pattern `%s'" % pat)