feat(project): add --no-docker option (#150)

Contributed by @gonsolo
This commit is contained in:
Gonsolo
2026-01-30 12:54:50 +01:00
committed by GitHub
parent 310e50e3b1
commit d052447fa3
2 changed files with 23 additions and 7 deletions
+14 -4
View File
@@ -508,7 +508,7 @@ class Project:
shutil.copyfile("golden_config.json", os.path.join(self.src_dir, "config.json")) shutil.copyfile("golden_config.json", os.path.join(self.src_dir, "config.json"))
self.harden() self.harden()
def harden(self): def harden(self, no_docker: bool = False):
cwd = os.getcwd() cwd = os.getcwd()
os.chdir(self.local_dir) os.chdir(self.local_dir)
@@ -523,7 +523,12 @@ class Project:
arg_progress = "--hide-progress-bar" if "CI" in os.environ else "" arg_progress = "--hide-progress-bar" if "CI" in os.environ else ""
arg_pdk_root = '--pdk-root "$PDK_ROOT"' if "PDK_ROOT" in os.environ else "" arg_pdk_root = '--pdk-root "$PDK_ROOT"' if "PDK_ROOT" in os.environ else ""
arg_pdk = self.tech.librelane_pdk_args arg_pdk = self.tech.librelane_pdk_args
harden_cmd = f"python -m librelane {arg_pdk_root} --docker-no-tty --dockerized {arg_pdk_root} {arg_pdk} --run-tag wokwi --force-run-dir runs/wokwi {arg_progress} src/config_merged.json"
# Nix/No-Docker support: Conditionally include docker flags
arg_docker = "" if no_docker else f"{arg_pdk_root} --docker-no-tty --dockerized"
harden_cmd = f"python -m librelane {arg_docker} {arg_pdk_root} {arg_pdk} --run-tag wokwi --force-run-dir runs/wokwi {arg_progress} src/config_merged.json"
env = os.environ.copy() env = os.environ.copy()
logging.debug(harden_cmd) logging.debug(harden_cmd)
p = subprocess.run(harden_cmd, shell=True, env=env) p = subprocess.run(harden_cmd, shell=True, env=env)
@@ -610,9 +615,14 @@ class Project:
os.path.join(stats_dir, "synthesis-stats.txt"), os.path.join(stats_dir, "synthesis-stats.txt"),
) )
def run_custom_librelane_flow(self, flow_name: str): def run_custom_librelane_flow(self, flow_name: str, no_docker: bool = False):
logging.info(f"Running {flow_name} for {self}") logging.info(f"Running {flow_name} for {self}")
ll_cmd = f"python -m librelane --docker-no-tty --dockerized {self.tech.librelane_pdk_args} --run-tag wokwi --force-run-dir {self.local_dir}/runs/wokwi {self.local_dir}/src/config_merged.json --flow {flow_name}"
# Nix/No-Docker support: Conditionally include docker flags
arg_docker = "" if no_docker else "--docker-no-tty --dockerized"
ll_cmd = f"python -m librelane {arg_docker} {self.tech.librelane_pdk_args} --run-tag wokwi --force-run-dir {self.local_dir}/runs/wokwi {self.local_dir}/src/config_merged.json --flow {flow_name}"
logging.debug(ll_cmd) logging.debug(ll_cmd)
p = subprocess.run(ll_cmd, shell=True) p = subprocess.run(ll_cmd, shell=True)
if p.returncode != 0: if p.returncode != 0:
+9 -3
View File
@@ -106,6 +106,12 @@ if __name__ == "__main__":
) )
# Hardening and submission # Hardening and submission
parser.add_argument(
"--no-docker",
help="Do not use Docker for LibreLane commands",
action="store_true",
default=False,
)
parser.add_argument( parser.add_argument(
"--create-user-config", "--create-user-config",
help="create the user_config.json file with top module and source files", help="create the user_config.json file with top module and source files",
@@ -203,16 +209,16 @@ if __name__ == "__main__":
project.create_user_config() project.create_user_config()
if args.harden: if args.harden:
project.harden() project.harden(no_docker=args.no_docker)
if args.create_tt_submission: if args.create_tt_submission:
project.create_tt_submission() project.create_tt_submission()
if args.open_in_klayout: if args.open_in_klayout:
project.run_custom_librelane_flow("OpenInKLayout") project.run_custom_librelane_flow("OpenInKLayout", no_docker=args.no_docker)
if args.open_in_openroad: if args.open_in_openroad:
project.run_custom_librelane_flow("OpenInOpenROAD") project.run_custom_librelane_flow("OpenInOpenROAD", no_docker=args.no_docker)
if args.create_pdf: if args.create_pdf:
project.create_project_datasheet(args.template_version) project.create_project_datasheet(args.template_version)