Test and fix build dir errors | Address PR issues

This commit is contained in:
abejgonzalez 2022-03-08 08:29:34 +00:00
parent 55bcaa56e5
commit e87cd4ac56
3 changed files with 28 additions and 12 deletions

View File

@ -66,14 +66,14 @@ def build_driver(build_config: BuildConfig) -> None:
InfoStreamLogger('stderr'):
run(build_config.make_recipe("PLATFORM=f1 driver"))
def cl_dir_setup(build_config: BuildConfig) -> str:
def cl_dir_setup(build_config: BuildConfig) -> Optional[str]:
"""Setup CL_DIR on build host.
Args:
build_config: Build configuration to determine paths.
Returns:
Path to CL_DIR directory (that is setup).
Path to CL_DIR directory (that is setup) or `None` if invalid.
"""
fpga_build_postfix = f"hdk/cl/developer_designs/cl_{build_config.get_chisel_triplet()}"
@ -81,6 +81,10 @@ def cl_dir_setup(build_config: BuildConfig) -> str:
local_awsfpga_dir = f"{get_deploy_dir()}/../platforms/f1/aws-fpga"
dest_build_dir = build_config.build_farm_host_dispatcher.dest_build_dir
if not dest_build_dir:
rootLogger.critical(f"ERROR: Invalid build dir of {dest_build_dir}")
return None
dest_f1_platform_dir = f"{dest_build_dir}/platforms/f1/"
dest_awsfpga_dir = f"{dest_f1_platform_dir}/aws-fpga"
@ -153,6 +157,9 @@ def aws_build(build_config_file: BuildConfigFile, bypassAll: bool = False, bypas
# 'cl_dir' holds the eventual directory in which vivado will run.
cl_dir = cl_dir_setup(build_config)
if not cl_dir:
on_build_failure()
return
if bypassVivado:
build_config.build_farm_host_dispatcher.release_build_farm_host()

View File

@ -39,11 +39,14 @@ class BuildFarmHostDispatcher(metaclass=abc.ABCMeta):
self.args = args
self.dest_build_dir = ""
@abc.abstractmethod
@property
@staticmethod
@abc.abstractmethod
def NAME() -> str:
"""Human-readable name (used as the "build-farm-type" in the YAML)."""
"""Human-readable name (used as the "build-farm-type" in the YAML).
Returns:
Human-readable name.
"""
raise NotImplementedError
@abc.abstractmethod
@ -102,10 +105,13 @@ class IPAddrBuildFarmHostDispatcher(BuildFarmHostDispatcher):
self.dispatch_id = IPAddrBuildFarmHostDispatcher.dispatch_counter
IPAddrBuildFarmHostDispatcher.dispatch_counter += 1
@property
@staticmethod
def NAME() -> str:
"""Human-readable name (used as the "build-farm-type" in the YAML)."""
"""Human-readable name (used as the "build-farm-type" in the YAML).
Returns:
Human-readable name.
"""
return "unmanaged"
def parse_args(self) -> None:
@ -191,10 +197,13 @@ class EC2BuildFarmHostDispatcher(BuildFarmHostDispatcher):
self.spot_interruption_behavior = ""
self.spot_max_price = ""
@property
@staticmethod
def NAME() -> str:
"""Human-readable name (used as the "build-farm-type" in the YAML)."""
"""Human-readable name (used as the "build-farm-type" in the YAML).
Returns:
Human-readable name.
"""
return "aws-ec2"
def parse_args(self) -> None:
@ -234,7 +243,7 @@ class EC2BuildFarmHostDispatcher(BuildFarmHostDispatcher):
},
],
tags={ 'fsimbuildcluster': buildfarmprefix },
randomsubnet=True)
randomsubnet=True)[0]
def wait_on_build_farm_host_initialization(self) -> None:
"""Wait for EC2 instance launch."""
@ -251,5 +260,5 @@ class EC2BuildFarmHostDispatcher(BuildFarmHostDispatcher):
def release_build_farm_host(self) -> None:
""" Terminate the EC2 instance running this build. """
instance_ids = get_instance_ids_for_instances([self.launched_instance_object])
rootLogger.info(f"Terminating build instances {instance_ids}. Please confirm in your AWS Management Console")
rootLogger.info(f"Terminating build instance {instance_ids}. Please confirm in your AWS Management Console")
terminate_instances(instance_ids, dryrun=False)

View File

@ -238,7 +238,7 @@ $(repo_state): $(simulator_verilog) $(fpga_work_dir)/stamp
$(firesim_base_dir)/../scripts/repo_state_summary.sh > $(repo_state)
$(fpga_work_dir)/design/$(BASE_FILE_NAME)%: $(simulator_verilog) $(fpga_work_dir)/stamp
cp -f $(GENERATED_DIR)/*.ipgen.tcl $(@D) || :
cp -f $(GENERATED_DIR)/*.ipgen.tcl $(@D) || true
cp -f $(GENERATED_DIR)/$(@F) $@
$(fpga_driver_dir)/$(BASE_FILE_NAME)%: $(simulator_verilog) $(fpga_work_dir)/stamp