Skip to content

Commit

Permalink
Switch bootstrap.pl to Python.
Browse files Browse the repository at this point in the history
  • Loading branch information
dvander committed Oct 14, 2023
1 parent 720dc51 commit ed177fd
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 88 deletions.
3 changes: 1 addition & 2 deletions .gitignore
Expand Up @@ -28,7 +28,6 @@ LIB-Debug/
[Tt]humbs.db

# AMBuild build directories
build*/
obj-*/
*~
*.rej
Expand All @@ -39,4 +38,4 @@ obj-*/
objdir

.vs/*
.vscode/*
.vscode/*
86 changes: 0 additions & 86 deletions tools/buildbot/bootstrap.pl

This file was deleted.

98 changes: 98 additions & 0 deletions tools/buildbot/bootstrap.py
@@ -0,0 +1,98 @@
# vim: set sw=4 sts=4 ts=4 sw=99 et:
from contextlib import contextmanager
import argparse
import json
import os
import platform
import shutil
import subprocess

@contextmanager
def Chdir(path):
old = os.getcwd()
os.chdir(path)
print('> cd {} # {}'.format(path, os.getcwd()))
try:
yield
finally:
os.chdir(old)

def run_shell(argv, env = None):
if type(argv) is str:
print('> {}'.format(argv))
shell = True
else:
print('> {}'.format(' '.join(argv)))
shell = False
try:
output = subprocess.check_output(argv, stderr = subprocess.STDOUT, env = env, shell = shell)
except subprocess.CalledProcessError as cpe:
if not shell:
print(cpe.output.decode('utf-8', 'ignore'))
raise
print(output.decode('utf-8', 'ignore'))

def output_needs_cleaning():
if not os.path.isdir('OUTPUT'):
return False
amb2_dir = os.path.join('OUTPUT', '.ambuild2')
if not os.path.exists(os.path.join(amb2_dir, 'graph')):
return True
if not os.path.exists(os.path.join(amb2_dir, 'vars')):
return True
return False

def main():
parser = argparse.ArgumentParser()
parser.add_argument('--config', type = str, required = True,
help = 'Buildbot slave name')
parser.add_argument('--hl2sdk-root', type = str, required = True,
help = 'hl2sdk collection')
parser.add_argument('--python-cmd', type = str, required = True,
default = 'python3',
help = 'Python command')
parser.add_argument('--mms-path', type = str, required = True,
help = 'Metamod:Source path')
args = parser.parse_args()

run_shell("git submodule update --init --recursive")

source = os.getcwd()

with open(os.path.join('tools', 'buildbot', 'buildconfig.json'), 'rt') as fp:
config_root = json.load(fp)

config = config_root.get(args.config, {})

# Set build properties.
build_env = os.environ.copy()
for env_var in ['CC', 'CXX']:
if env_var not in config:
continue
build_env[env_var] = config[env_var]

config_argv = [
args.python_cmd,
os.path.join(source, 'configure.py'),
'--enable-optimize',
'--breakpad-dump',
'--no-color',
'--symbol-files',
'--targets=x86,x86_64',
'--sdks=all',
'--out=OUTPUT',
'--hl2sdk-root={}'.format(args.hl2sdk_root),
'--mms-path={}'.format(args.mms_path),
]

print("Attempting to reconfigure...")

with Chdir('..'):
if output_needs_cleaning():
shutil.rmtree('OUTPUT')
if not os.path.isdir('OUTPUT'):
os.makedirs('OUTPUT')
run_shell(config_argv, env = build_env)

if __name__ == '__main__':
main()
7 changes: 7 additions & 0 deletions tools/buildbot/buildconfig.json
@@ -0,0 +1,7 @@
{
"debian11": {
"CC": "clang-13",
"CXX": "clang++-13"
}
}

0 comments on commit ed177fd

Please sign in to comment.