Whenever an assembler is not specified, the output tree is instead saved to the content store, in a directory named after the pipeline id. This should render the io.weldr.tree assembler redundant. In order to build the samples as before, specify the content store as the input directory to build any pipeline that uses the io.weldr.untree stage. Signed-off-by: Tom Gundersen <teg@jklm.no>
48 lines
1.7 KiB
Python
Executable file
48 lines
1.7 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
import osbuild
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
RESET = "\033[0m"
|
|
BOLD = "\033[1m"
|
|
RED = "\033[31m"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Build operating system images")
|
|
parser.add_argument("pipeline_path", metavar="PIPELINE",
|
|
help="json file containing the pipeline that should be built")
|
|
parser.add_argument("--objects", metavar="DIRECTORY", type=os.path.abspath,
|
|
default=".osbuild/objects",
|
|
help="the directory where intermediary os trees are stored")
|
|
requiredNamed = parser.add_argument_group('required named arguments')
|
|
requiredNamed.add_argument("-i", "--input", dest="input_dir", metavar="DIRECTORY", type=os.path.abspath,
|
|
help="provide the contents of DIRECTORY to the first stage", required=True)
|
|
requiredNamed.add_argument("-o", "--output", dest="output_dir", metavar="DIRECTORY", type=os.path.abspath,
|
|
help="provide the empty DIRECTORY as output argument to the last stage", required=True)
|
|
args = parser.parse_args()
|
|
|
|
os.makedirs("/run/osbuild", exist_ok=True)
|
|
|
|
with open(args.pipeline_path) as f:
|
|
pipeline = json.load(f)
|
|
pipeline = osbuild.Pipeline(pipeline, args.objects)
|
|
|
|
print()
|
|
print(f"{RESET}{BOLD}Pipeline: {pipeline.id}{RESET}")
|
|
|
|
try:
|
|
pipeline.run(args.input_dir, args.output_dir, interactive=True)
|
|
except KeyboardInterrupt:
|
|
print()
|
|
print(f"{RESET}{BOLD}{RED}Aborted{RESET}")
|
|
sys.exit(130)
|
|
except osbuild.StageFailed as error:
|
|
print()
|
|
print(f"{RESET}{BOLD}{RED}{error.stage} failed with code {error.returncode}{RESET}")
|
|
sys.exit(1)
|