blob: a2691439aee358ae4c21fc1cd36c5227d6caabd6 [file] [log] [blame] [edit]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2020 Igalia S.L.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
import os
import subprocess
import sys
scriptdir = os.path.abspath(os.path.dirname(__file__))
SDK_PROJECT_PATH = os.path.join(scriptdir, "..", "buildstream")
# DOCKER_IMAGE_ID from https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/blob/master/.gitlab-ci.yml
IMAGE_ID = 'f2004eceea4b91b56e761826248274b2f66d28b3'
TOOLBOX_NAME = f'bst2-{IMAGE_ID}'
IMAGE = f'registry.gitlab.com/freedesktop-sdk/infrastructure/freedesktop-sdk-docker-images/bst2:{IMAGE_ID}'
def run(*args, in_container=False, capture_output=True):
if in_container:
cmdline = f'toolbox run -c {TOOLBOX_NAME}'.split() + list(args)
else:
cmdline = args
print("Running %s" % " ".join(cmdline))
proc = subprocess.run(cmdline, capture_output=capture_output, text=True)
if proc.returncode != 0:
raise Exception(proc.returncode)
if capture_output:
return proc.stdout.strip()
def ensure_environment():
all_containers = run('podman', 'container', 'list', '-a', '--format', '{{.Names}}').splitlines()
if TOOLBOX_NAME not in all_containers:
run('toolbox', 'create', '-c', TOOLBOX_NAME, '--image', IMAGE, '-y', capture_output=False)
def main(args: list) -> int:
ensure_environment()
if args[0] == "toolbox":
filtered_args = args[1:]
else:
filtered_args = ["bst", "-C", SDK_PROJECT_PATH] + args
run(*filtered_args, in_container=True, capture_output=False)
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))