build: T3664: fail the build on external command errors

This commit is contained in:
Daniil Baturin 2024-04-29 14:33:25 +00:00
parent f6b0809f47
commit 7dfd9232da
3 changed files with 14 additions and 15 deletions

View File

@ -78,6 +78,8 @@ import utils
import defaults
import raw_image
from utils import cmd
# argparse converts hyphens to underscores,
# so for lookups in the original options hash we have to convert them back
def field_to_option(s):
@ -450,7 +452,7 @@ if __name__ == "__main__":
## Clean up earlier build state and artifacts
print("I: Cleaning the build workspace")
os.system("lb clean")
cmd("lb clean")
#iter(lambda p: shutil.rmtree(p, ignore_errors=True),
# ['config/binary', 'config/bootstrap', 'config/chroot', 'config/common', 'config/source'])
artifacts = functools.reduce(
@ -575,10 +577,7 @@ if __name__ == "__main__":
print("D: live-build configuration command")
print(lb_config_command)
result = os.system(lb_config_command)
if result > 0:
print("E: live-build config failed")
sys.exit(1)
cmd(lb_config_command)
## In dry-run mode, exit at this point
if build_config["dry_run"]:
@ -595,9 +594,7 @@ if __name__ == "__main__":
print("I: Starting image build")
if debug:
print("D: It's not like I'm building this specially for you or anything!")
res = os.system("lb build 2>&1")
if res > 0:
sys.exit(res)
cmd("lb build 2>&1")
# Copy the image
shutil.copy("live-image-{0}.hybrid.iso".format(build_config["architecture"]), iso_file)
@ -613,11 +610,11 @@ if __name__ == "__main__":
# For those cases, we support running a post-build hook on the raw image.
# The image_format field should be 'raw' if a post-build hook is used.
hook_path = build_config["post_build_hook"]
os.system(f"{hook_path} {raw_image}")
cmd(f"{hook_path} {raw_image}")
else:
# Most other formats, thankfully, can be produced with just `qemu-img convert`
other_formats = filter(lambda x: x not in ["iso", "raw"], build_config["image_format"])
for f in other_formats:
target = f"{os.path.splitext(raw_image)[0]}.{f}"
print(f"I: Building {f} file {target}")
os.system(f"qemu-img convert -f raw -O {f} {raw_image} {target}")
cmd(f"qemu-img convert -f raw -O {f} {raw_image} {target}")

View File

@ -25,11 +25,7 @@ import vyos.utils.process
SQUASHFS_FILE = 'live/filesystem.squashfs'
VERSION_FILE = 'version.json'
def cmd(command):
res = vyos.utils.process.call(command, shell=True)
if res > 0:
raise OSError(f"Command '{command}' failed")
from utils import cmd
def mkdir(path):
os.makedirs(path, exist_ok=True)

View File

@ -23,6 +23,7 @@ import shutil
# Local modules
import defaults
import vyos
def check_build_config():
if not os.path.exists(defaults.BUILD_CONFIG):
@ -76,3 +77,8 @@ def check_system_dependencies(deps):
raise OSError(checker.format_missing_dependencies())
else:
pass
def cmd(command):
res = vyos.utils.process.call(command, shell=True)
if res > 0:
raise OSError(f"Command '{command}' failed")