| #!/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 shlex |
| import sys |
| import tempfile |
| |
| scriptdir = os.path.abspath(os.path.dirname(__file__)) |
| |
| def main(args: list) -> int: |
| tmpdir = tempfile.gettempdir() |
| source_root = os.path.normpath(os.path.abspath(os.path.join(scriptdir, '../../'))) |
| bind_mounts = { |
| "/app/webkit": source_root, |
| # Access to /run/host is required by the crash log reporter. |
| f"/run/host{tmpdir}": f"{tmpdir}" |
| } |
| |
| try_bind_mounts = { |
| "/run/icecc": "/var/run/icecc" |
| } |
| |
| build_path = os.environ.get("WEBKIT_BUILD_DIR_BIND_MOUNT") |
| if build_path: |
| dest, src = build_path.split(":") |
| try_bind_mounts[dest] = src |
| |
| coredumps_dir = os.environ.get("WEBKIT_CORE_DUMPS_DIRECTORY") |
| if coredumps_dir: |
| try_bind_mounts[coredumps_dir] = coredumps_dir |
| |
| bwrap_args = ["bwrap", ] |
| for dst, src in bind_mounts.items(): |
| bwrap_args.extend(["--bind", src, dst]) |
| |
| for dst, src in try_bind_mounts.items(): |
| bwrap_args.extend(["--bind-try", src, dst]) |
| |
| return os.system(' '.join([shlex.quote(a) for a in bwrap_args + args])) |
| |
| if __name__ == "__main__": |
| sys.exit(main(sys.argv[1:])) |