blob: 6cc337fd95e9e7e7e30947fad3663cdad149c6d0 [file]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2026 WebAssembly Community Group participants
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import argparse
import os
import subprocess
import sys
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(SCRIPT_DIR)
import host_toolchains
def main():
parser = argparse.ArgumentParser(
description='Reclient wrapper for compiler execution and reproxy management.',
usage='%(prog)s [options] | <compiler> [compiler_args...]')
parser.add_argument('--start-reproxy', action='store_true',
help='Start the reproxy process')
parser.add_argument('--stop-reproxy', action='store_true',
help='Stop the reproxy process')
parser.add_argument('--status-reproxy', action='store_true',
help='Check the status of the reproxy process')
args, compiler_cmd = parser.parse_known_args()
# If no arguments are passed, show help
if not (args.start_reproxy or args.stop_reproxy or args.status_reproxy) and not compiler_cmd:
parser.print_help()
return 1
host_platform = host_toolchains.GetHostPlatform()
if args.status_reproxy:
server_address = host_toolchains.GetReproxyServerAddress(host_platform)
if not server_address:
print('Could not determine server address from environment or config.')
return 1
if host_toolchains.IsReproxyRunning(server_address):
print(f'Reproxy is RUNNING (at {server_address})')
return 0
else:
print(f'Reproxy is STOPPED (at {server_address})')
return 1
if args.start_reproxy:
host_toolchains.StartReproxy(host_platform)
return 0
if args.stop_reproxy:
return host_toolchains.StopReproxy(host_platform)
# Set up environment variables
host_toolchains.SetReclientEnv(host_platform)
rewrapper = os.path.join(host_toolchains.ReclientDir(), 'rewrapper')
rewrapper_cfg = host_toolchains.RewrapperCfg(host_platform)
# The arguments passed to this script are the compiler and its arguments
cmd = [rewrapper, f'-cfg={rewrapper_cfg}'] + compiler_cmd
os.execv(rewrapper, cmd)
if __name__ == '__main__':
sys.exit(main())