X-Git-Url: https://git.distorted.org.uk/~mdw/distorted-chroot/blobdiff_plain/942fed180961536fa966bfd4db28ee0537755932..1cad1a5de1e7fe98ca43eff6d36da636792d1edd:/bin/chroot-maint diff --git a/bin/chroot-maint b/bin/chroot-maint index 21e5c21..70a028a 100755 --- a/bin/chroot-maint +++ b/bin/chroot-maint @@ -1431,6 +1431,7 @@ class Config (object): "*_DEPS": ("PKGDEPS", _conv_list), "*_QEMUHOST": ("QEMUHOST", _conv_str), "*_QEMUARCH": ("QEMUARCH", _conv_str), + "*_QEMUDIST": ("QEMUDIST", _conv_str), "*_ALIASES": ("DISTALIAS", _conv_str) } @@ -1858,7 +1859,8 @@ class ChrootJob (BaseJob): me._tools_chroot = CrossToolsJob.ensure\ ("%s-%s" % (me._dist, C.TOOLSARCH), FRESH) me._qemu_chroot = CrossToolsJob.ensure\ - ("%s-%s" % (me._dist, C.QEMUHOST[me._arch]), FRESH) + ("%s-%s" % (C.QEMUDIST.get(me._dist, me._dist), + C.QEMUHOST[me._arch]), FRESH) me.await(me._tools_chroot) me.await(me._qemu_chroot) @@ -1895,9 +1897,10 @@ class ChrootJob (BaseJob): crossdir = OS.path.join(C.LOCAL, "cross", "%s-%s" % (dist, C.TOOLSARCH)) - qarch, qhost = C.QEMUARCH[arch], C.QEMUHOST[arch] + qarch, qhost, qdist = \ + C.QEMUARCH[arch], C.QEMUHOST[arch], C.QEMUDIST.get(dist, dist) qemudir = OS.path.join(C.LOCAL, "cross", - "%s-%s" % (dist, qhost), "QEMU") + "%s-%s" % (qdist, qhost), "QEMU") ## Acquire lockfiles in a canonical order to prevent deadlocks. donors = [C.TOOLSARCH] @@ -2051,8 +2054,9 @@ class ChrootJob (BaseJob): run_root(["mv", new, real]) for path in have_link.iterkeys(): if path in want_link: continue - progress("remove obsolete link `%s' -> `%s'" % path) real = root + path + progress("remove obsolete link `%s' -> `%s'" % + (path, OS.readlink(real))) run_root(["rm", "-f", real]) ## Remove diversions from paths which don't need them any more. Here @@ -2380,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) @@ -2796,7 +2810,7 @@ with toplevel_handler(): FRESH = parse_fresh(OPT.fresh) SCHED = JobScheduler(rfd, wfd, njobs) - OS.environ["http_proxy"] = C.PROXY + OS.environ["http_proxy"] = OS.environ["https_proxy"] = C.PROXY jobs = [] if not args: OPTIONS.print_usage(SYS.stderr); SYS.exit(2)