|
@@ -5,6 +5,7 @@ Implements the USM SPM contract (see usm/README.md, "System package manager
|
|
|
integration") for Gentoo systems:
|
|
integration") for Gentoo systems:
|
|
|
|
|
|
|
|
usm-spm-emerge query <usm-ref>... -> contract JSON on STDOUT
|
|
usm-spm-emerge query <usm-ref>... -> contract JSON on STDOUT
|
|
|
|
|
+ usm-spm-emerge plan <atom>... -> contract JSON on STDOUT
|
|
|
usm-spm-emerge install [--test] <atom>... -> contract JSONL events on STDOUT
|
|
usm-spm-emerge install [--test] <atom>... -> contract JSONL events on STDOUT
|
|
|
|
|
|
|
|
API choice: a Gentoo stage3 ships Portage and python3, so this helper reads
|
|
API choice: a Gentoo stage3 ships Portage and python3, so this helper reads
|
|
@@ -564,6 +565,25 @@ def link_unversioned_tools(atoms):
|
|
|
pass
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def cmd_plan(args):
|
|
|
|
|
+ """Resolve the material install set without touching the system.
|
|
|
|
|
+
|
|
|
|
|
+ One emerge --pretend for every atom; the merge list's names (in
|
|
|
|
|
+ emerge's own transaction order) print as one contract JSON object,
|
|
|
|
|
+ matching the names the query contract reports.
|
|
|
|
|
+ """
|
|
|
|
|
+ returncode, stdout, stderr = emerge_pretend(args.names)
|
|
|
|
|
+ if returncode != 0:
|
|
|
|
|
+ fail_plain("dependency resolution failed: %s"
|
|
|
|
|
+ % failure_message((stdout + "\n" + stderr).splitlines()),
|
|
|
|
|
+ EXIT_RESOLVE)
|
|
|
|
|
+ _, _, atoms = parse_merge_list(stdout)
|
|
|
|
|
+ sys.stdout.write(json.dumps(
|
|
|
|
|
+ {"packages": [category_package(atom) for atom in atoms]}) + "\n")
|
|
|
|
|
+ sys.stdout.flush()
|
|
|
|
|
+ return EXIT_OK
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def cmd_install(args):
|
|
def cmd_install(args):
|
|
|
returncode, stdout, stderr = emerge_pretend(args.names)
|
|
returncode, stdout, stderr = emerge_pretend(args.names)
|
|
|
if returncode != 0:
|
|
if returncode != 0:
|
|
@@ -646,6 +666,13 @@ def main():
|
|
|
help="resource ref, e.g. bin:valac or pc:glib-2.0.pc")
|
|
help="resource ref, e.g. bin:valac or pc:glib-2.0.pc")
|
|
|
query_parser.set_defaults(handler=cmd_query)
|
|
query_parser.set_defaults(handler=cmd_query)
|
|
|
|
|
|
|
|
|
|
+ plan_parser = subparsers.add_parser(
|
|
|
|
|
+ "plan", help="resolve the material install set for atoms")
|
|
|
|
|
+ plan_parser.add_argument(
|
|
|
|
|
+ "names", nargs="+", metavar="ATOM",
|
|
|
|
|
+ help="native gentoo package atom, e.g. dev-build/meson")
|
|
|
|
|
+ plan_parser.set_defaults(handler=cmd_plan)
|
|
|
|
|
+
|
|
|
install_parser = subparsers.add_parser(
|
|
install_parser = subparsers.add_parser(
|
|
|
"install", help="install system packages, streaming progress events")
|
|
"install", help="install system packages, streaming progress events")
|
|
|
install_parser.add_argument(
|
|
install_parser.add_argument(
|