Skip to content

Commit

Permalink
Move bootstrap.pl to Python.
Browse files Browse the repository at this point in the history
This also moves env var control back into the local build, so we don't
have to restart buildbot to change that.
  • Loading branch information
dvander committed Oct 13, 2023
1 parent cf8547c commit db11f8a
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 90 deletions.
90 changes: 0 additions & 90 deletions support/buildbot/bootstrap.pl

This file was deleted.

105 changes: 105 additions & 0 deletions support/buildbot/bootstrap.py
@@ -0,0 +1,105 @@
# 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.isdir(os.path.join(amb2_dir, 'graph')):
return True
if not os.path.isdir(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')
args = parser.parse_args()

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

source = os.getcwd()

with open(os.path.join('support', '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]

if platform.system() == 'Windows':
hl2sdk_root = '/Volumes/hgshare'
python_cmd = "C:\\Python38\\Python.exe"
elif platform.system() == 'Linux':
hl2sdk_root = '/hgshare'
python_cmd = "python3"
elif platform.system() == 'Windows':
hl2sdk_root = 'H:\\'
python_cmd = "python3"

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),
]

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()
10 changes: 10 additions & 0 deletions support/buildbot/buildconfig.json
@@ -0,0 +1,10 @@
{
"debian8": {
"CC": "clang-3.8",
"CXX": "clang-3.8"
},
"debian11": {
"CC": "clang-13",
"CXX": "clang++-13"
}
}

0 comments on commit db11f8a

Please sign in to comment.