From 5aea98243b5b533be456e0639189fd9f8f63bbf2 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Mon, 16 Feb 2026 18:48:35 +0100 Subject: [PATCH 1/6] bazel/tcl: migrate tcl library from rules_hdl to bazel repository Use the tcl library from bazel central repository (BCR) instead of the version from rules_hdl. The bcr version is compatible with MacOS and is managed via MODULE.bazel instead of WORKSPACE. Signed-off-by: Friedrich Beckmann --- BUILD.bazel | 4 ++-- MODULE.bazel | 1 + MODULE.bazel.lock | 2 ++ WORKSPACE | 7 ------- bazel/BUILD | 3 +++ bazel/InitRunFiles.cpp | 4 ++-- bazel/tcl_encode_sta.bzl | 2 +- src/ant/BUILD | 2 +- src/cgt/BUILD | 2 +- src/cts/BUILD | 2 +- src/dbSta/BUILD | 4 ++-- src/dft/BUILD | 2 +- src/dpl/BUILD | 4 ++-- src/drt/BUILD | 2 +- src/dst/BUILD | 2 +- src/est/BUILD | 2 +- src/exa/BUILD | 4 ++-- src/fin/BUILD | 2 +- src/gpl/BUILD | 2 +- src/grt/BUILD | 2 +- src/gui/BUILD | 4 ++-- src/ifp/BUILD | 2 +- src/mpl/BUILD | 2 +- src/odb/BUILD | 4 ++-- src/pad/BUILD | 2 +- src/par/BUILD | 2 +- src/pdn/BUILD | 2 +- src/ppl/BUILD | 2 +- src/psm/BUILD | 2 +- src/ram/BUILD | 2 +- src/rcx/BUILD | 2 +- src/rmp/BUILD | 2 +- src/rmp/test/BUILD | 2 +- src/rsz/BUILD | 2 +- src/stt/BUILD | 2 +- src/tap/BUILD | 2 +- src/tst/BUILD | 4 ++-- src/upf/BUILD | 2 +- src/utl/BUILD | 4 ++-- 39 files changed, 50 insertions(+), 51 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 6ef1b565bd3..370c9b36b75 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -180,7 +180,7 @@ cc_binary( "//src/utl", "@boost.stacktrace", "@rules_cc//cc/runfiles", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -213,7 +213,7 @@ cc_library( "@abseil-cpp//absl/base:core_headers", "@abseil-cpp//absl/synchronization", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ] + OPENROAD_LIBRARY_DEPS, ) diff --git a/MODULE.bazel b/MODULE.bazel index 432affc4582..bc886485570 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -71,6 +71,7 @@ bazel_dep(name = "spdlog", version = "1.15.1") bazel_dep(name = "tcmalloc", version = "0.0.0-20250927-12f2552") bazel_dep(name = "zlib", version = "1.3.1.bcr.5") bazel_dep(name = "yaml-cpp", version = "0.8.0") +bazel_dep(name = "tcl_lang", version = "8.6.16.bcr.1") # Make compilation DB (and possibly build cleaner) bazel_dep(name = "bant", version = "0.2.4", dev_dependency = True) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 407cc6469be..3cb18612a8f 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -636,6 +636,8 @@ "https://bcr.bazel.build/modules/swig/4.3.0/source.json": "ea8dac67896e3a623cd92c48573a351c4bab1537f5aeb210c1c1e049994dd599", "https://bcr.bazel.build/modules/systemc/3.0.2/MODULE.bazel": "7c4283e827307eb8eedfcba74f500f114e248916d948a2cdc45971818f3fde0d", "https://bcr.bazel.build/modules/systemc/3.0.2/source.json": "47370abd3ed04ce3c1a65a5b87c973e3e80e7e10e6b1dca2f15076f612d86d4c", + "https://bcr.bazel.build/modules/tcl_lang/8.6.16.bcr.1/MODULE.bazel": "1fc27ececc903378b88ad5a0b92d2675b54fe3add9bcc27d612195bd823c2f2d", + "https://bcr.bazel.build/modules/tcl_lang/8.6.16.bcr.1/source.json": "f755e3b14f4d08e68f03ef0e1a7ac1aebe993b73ff05ee55f69ceb4e1c36b7e6", "https://bcr.bazel.build/modules/tcmalloc/0.0.0-20250927-12f2552/MODULE.bazel": "b702a6b6806b1041d84918c5098b765b204261647f8cb3e75e0f439106b65ddd", "https://bcr.bazel.build/modules/tcmalloc/0.0.0-20250927-12f2552/source.json": "a6f5da61dd65e3f2f7380b4f52dd4b0f771a5b6ba9db7b46be7c28c52bc7af58", "https://bcr.bazel.build/modules/toolchains_llvm/1.5.0/MODULE.bazel": "31c7077ef64bafdf2dfb46d4bca321b4e8f143b00ac68b2c31f5ff0c91044b60", diff --git a/WORKSPACE b/WORKSPACE index 2657797b49e..ec2fc27b302 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -24,13 +24,9 @@ http_archive( # Direct dependencies needed in openroad, and others that these in turn need. # This essentially reads as a TODO list of what needs to be upstreamed to BCR load("@rules_hdl//dependency_support/com_github_westes_flex:com_github_westes_flex.bzl", "com_github_westes_flex") -load("@rules_hdl//dependency_support/net_zlib:net_zlib.bzl", "net_zlib") load("@rules_hdl//dependency_support/org_gnu_bison:org_gnu_bison.bzl", "org_gnu_bison") load("@rules_hdl//dependency_support/org_pcre_ftp:org_pcre_ftp.bzl", "org_pcre_ftp") load("@rules_hdl//dependency_support/org_swig:org_swig.bzl", "org_swig") -load("@rules_hdl//dependency_support/tk_tcl:tk_tcl.bzl", "tk_tcl") - -tk_tcl() # Swig exists in BCR, but in a newer version where we need to test how to make # it to work with TCL. @@ -42,7 +38,4 @@ com_github_westes_flex() org_gnu_bison() -# remaining user is tcl. Once we can get that from BCR, this can go. -net_zlib() # BCR has @zlib we use, but some above dep uses it w/ differet name - org_pcre_ftp() # there is a newer pcre2 in BCR diff --git a/bazel/BUILD b/bazel/BUILD index e6688c64564..4614697cbb2 100644 --- a/bazel/BUILD +++ b/bazel/BUILD @@ -20,6 +20,9 @@ cc_library( srcs = [ "InitRunFiles.cpp", ], + data = [ + "@tcl_lang//:tcl_core", + ], visibility = ["//visibility:public"], deps = [ "@rules_cc//cc/runfiles", diff --git a/bazel/InitRunFiles.cpp b/bazel/InitRunFiles.cpp index 1ab519e0557..dd399f130e2 100644 --- a/bazel/InitRunFiles.cpp +++ b/bazel/InitRunFiles.cpp @@ -55,11 +55,11 @@ class BazelInitializer } // Set the TCL_LIBRARY environment variable - const std::string tcl_path = runfiles->Rlocation("tk_tcl/library/"); + const std::string tcl_path = runfiles->Rlocation("tcl_lang/library/"); if (!tcl_path.empty()) { setenv("TCL_LIBRARY", tcl_path.c_str(), 0); } else { - std::cerr << "Error: Could not locate 'tk_tcl/library/' in runfiles." + std::cerr << "Error: Could not locate 'tcl_lang/library/' in runfiles." << std::endl; std::exit(1); } diff --git a/bazel/tcl_encode_sta.bzl b/bazel/tcl_encode_sta.bzl index db259d66f20..77924178f0f 100644 --- a/bazel/tcl_encode_sta.bzl +++ b/bazel/tcl_encode_sta.bzl @@ -51,7 +51,7 @@ tcl_encode_sta = rule( allow_single_file = True, ), "_tclsh": attr.label( - default = "@tk_tcl//:tclsh", + default = "@tcl_lang//:tclsh", executable = True, cfg = "exec", ), diff --git a/src/ant/BUILD b/src/ant/BUILD index 2f1504312d5..2fcae11cdbd 100644 --- a/src/ant/BUILD +++ b/src/ant/BUILD @@ -59,7 +59,7 @@ cc_library( "//src/odb", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/cgt/BUILD b/src/cgt/BUILD index 2a2c5f6e70f..5329ac18115 100644 --- a/src/cgt/BUILD +++ b/src/cgt/BUILD @@ -43,7 +43,7 @@ cc_library( "//src/utl", "@abc", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/cts/BUILD b/src/cts/BUILD index bcdb5493ae5..c3787130233 100644 --- a/src/cts/BUILD +++ b/src/cts/BUILD @@ -98,7 +98,7 @@ cc_library( "//src/rsz", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/dbSta/BUILD b/src/dbSta/BUILD index 72a507374e7..3f705c1893b 100644 --- a/src/dbSta/BUILD +++ b/src/dbSta/BUILD @@ -30,7 +30,7 @@ cc_library( "@abseil-cpp//absl/synchronization", "@boost.json", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -138,7 +138,7 @@ cc_library( "//src/utl", "@boost.json", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/dft/BUILD b/src/dft/BUILD index 18ca09f6d66..4da948b8fbb 100644 --- a/src/dft/BUILD +++ b/src/dft/BUILD @@ -66,7 +66,7 @@ cc_library( "//src/odb", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/dpl/BUILD b/src/dpl/BUILD index 89d482138e4..d553ee7395d 100644 --- a/src/dpl/BUILD +++ b/src/dpl/BUILD @@ -96,7 +96,7 @@ cc_library( "@boost.tokenizer", "@boost.utility", "@coin-or-lemon//:lemon", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -133,7 +133,7 @@ cc_library( "@boost.polygon", "@boost.stacktrace", "@boost.utility", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/drt/BUILD b/src/drt/BUILD index e771b86b5b8..f3a1ebb9fa1 100644 --- a/src/drt/BUILD +++ b/src/drt/BUILD @@ -282,7 +282,7 @@ cc_library( "@boost.polygon", "@boost.serialization", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/dst/BUILD b/src/dst/BUILD index 25442ecf698..5697c113ab1 100644 --- a/src/dst/BUILD +++ b/src/dst/BUILD @@ -69,7 +69,7 @@ cc_library( "//src/utl", "@boost.asio", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/est/BUILD b/src/est/BUILD index d88f16a6daf..5e0567af124 100644 --- a/src/est/BUILD +++ b/src/est/BUILD @@ -94,7 +94,7 @@ cc_library( "@boost.multi_array", "@boost.stacktrace", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/exa/BUILD b/src/exa/BUILD index 95b6d41bf59..60e5df75303 100644 --- a/src/exa/BUILD +++ b/src/exa/BUILD @@ -26,7 +26,7 @@ cc_library( deps = [ "//src/odb", "//src/utl", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -56,7 +56,7 @@ cc_library( "//src/odb", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/fin/BUILD b/src/fin/BUILD index e0061e13f65..e87d6990a42 100644 --- a/src/fin/BUILD +++ b/src/fin/BUILD @@ -40,7 +40,7 @@ cc_library( "@boost.polygon", "@boost.property_tree", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/gpl/BUILD b/src/gpl/BUILD index d7ea80ca99e..f58041f238b 100644 --- a/src/gpl/BUILD +++ b/src/gpl/BUILD @@ -82,7 +82,7 @@ cc_library( "@openmp", "@or-tools//ortools/linear_solver", "@or-tools//ortools/sat:cp_model", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/grt/BUILD b/src/grt/BUILD index 41422ed445b..a2f265c1ea2 100644 --- a/src/grt/BUILD +++ b/src/grt/BUILD @@ -212,7 +212,7 @@ cc_library( "@boost.iterator", "@boost.stacktrace", "@openmp", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/gui/BUILD b/src/gui/BUILD index b1116a7150e..b82b82a02a2 100644 --- a/src/gui/BUILD +++ b/src/gui/BUILD @@ -31,7 +31,7 @@ cc_library( "//src/odb", "@abseil-cpp//absl/synchronization", "@boost.multi_array", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -89,7 +89,7 @@ QT_GUI_PLATFORMS = { "@boost.multi_array", "@boost.stacktrace", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ] + ([":uic_lib"] if platform == "headless" else []), ) for platform, suffix in QT_GUI_PLATFORMS.items() diff --git a/src/ifp/BUILD b/src/ifp/BUILD index 5d1f656e143..72aae95ad5b 100644 --- a/src/ifp/BUILD +++ b/src/ifp/BUILD @@ -57,7 +57,7 @@ cc_library( "//src/sta:opensta_lib", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/mpl/BUILD b/src/mpl/BUILD index 97430b7cb61..d2fb6e7b7a8 100644 --- a/src/mpl/BUILD +++ b/src/mpl/BUILD @@ -80,7 +80,7 @@ cc_library( "//src/odb", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/odb/BUILD b/src/odb/BUILD index 471a5c8fc31..427dd649cb9 100644 --- a/src/odb/BUILD +++ b/src/odb/BUILD @@ -92,7 +92,7 @@ cc_library( "@boost.regex", "@boost.spirit", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", "@yaml-cpp", "@zlib", ], @@ -152,7 +152,7 @@ cc_library( "@boost.multi_array", "@boost.polygon", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/pad/BUILD b/src/pad/BUILD index 4a7adab9d4b..06dd42dadde 100644 --- a/src/pad/BUILD +++ b/src/pad/BUILD @@ -45,7 +45,7 @@ cc_library( "@boost.icl", "@boost.polygon", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/par/BUILD b/src/par/BUILD index b31556920b6..0a6e09bc7eb 100644 --- a/src/par/BUILD +++ b/src/par/BUILD @@ -103,7 +103,7 @@ cc_library( "@boost.stacktrace", "@boost.tokenizer", "@boost.utility", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/pdn/BUILD b/src/pdn/BUILD index 1c5b0625851..36078359451 100644 --- a/src/pdn/BUILD +++ b/src/pdn/BUILD @@ -63,7 +63,7 @@ cc_library( "@boost.geometry", "@boost.polygon", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/ppl/BUILD b/src/ppl/BUILD index 941aec1ab85..a786c0f0f78 100644 --- a/src/ppl/BUILD +++ b/src/ppl/BUILD @@ -54,7 +54,7 @@ cc_library( "@boost.container_hash", "@boost.random", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/psm/BUILD b/src/psm/BUILD index bd24a2361db..9b122681d75 100644 --- a/src/psm/BUILD +++ b/src/psm/BUILD @@ -54,7 +54,7 @@ cc_library( "@boost.polygon", "@boost.stacktrace", "@eigen", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/ram/BUILD b/src/ram/BUILD index fa72755e151..9e00f98ce60 100644 --- a/src/ram/BUILD +++ b/src/ram/BUILD @@ -40,7 +40,7 @@ cc_library( "//src/sta:opensta_lib", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/rcx/BUILD b/src/rcx/BUILD index 3af7d9f65ae..72f38cfb459 100644 --- a/src/rcx/BUILD +++ b/src/rcx/BUILD @@ -117,7 +117,7 @@ cc_library( "//src/odb", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/rmp/BUILD b/src/rmp/BUILD index 8137b4645dd..01d4536cbe3 100644 --- a/src/rmp/BUILD +++ b/src/rmp/BUILD @@ -83,7 +83,7 @@ cc_library( "//src/sta:opensta_lib", "//src/utl", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/rmp/test/BUILD b/src/rmp/test/BUILD index 8cfafb8151c..e0488fcf6d4 100644 --- a/src/rmp/test/BUILD +++ b/src/rmp/test/BUILD @@ -158,6 +158,6 @@ cc_test( "@abc", "@googletest//:gtest", "@googletest//:gtest_main", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/rsz/BUILD b/src/rsz/BUILD index d44b4a81f57..fc8f47e36fa 100644 --- a/src/rsz/BUILD +++ b/src/rsz/BUILD @@ -115,7 +115,7 @@ cc_library( "@boost.multi_array", "@boost.stacktrace", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/stt/BUILD b/src/stt/BUILD index 8f8aff4384a..0c2966dedce 100644 --- a/src/stt/BUILD +++ b/src/stt/BUILD @@ -88,7 +88,7 @@ cc_library( "//src/utl", "@boost.multi_array", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/tap/BUILD b/src/tap/BUILD index 25d09fff765..b7494096e47 100644 --- a/src/tap/BUILD +++ b/src/tap/BUILD @@ -52,7 +52,7 @@ cc_library( "@boost.geometry", "@boost.polygon", "@boost.stacktrace", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/tst/BUILD b/src/tst/BUILD index 78424f76d16..45c32eacf29 100644 --- a/src/tst/BUILD +++ b/src/tst/BUILD @@ -53,7 +53,7 @@ cc_library( "@bazel_tools//tools/cpp/runfiles", "@googletest//:gtest", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -85,6 +85,6 @@ cc_library( "@bazel_tools//tools/cpp/runfiles", "@googletest//:gtest", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/upf/BUILD b/src/upf/BUILD index 2f853edde88..5e410b64a86 100644 --- a/src/upf/BUILD +++ b/src/upf/BUILD @@ -50,7 +50,7 @@ cc_library( "//:ord", "//src/odb", "//src/utl", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) diff --git a/src/utl/BUILD b/src/utl/BUILD index 8fd05d88113..c4bb280665a 100644 --- a/src/utl/BUILD +++ b/src/utl/BUILD @@ -91,7 +91,7 @@ cc_library( "@boost.iterator", "@boost.random", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) @@ -153,7 +153,7 @@ cc_library( "@boost.stacktrace", "@openroad_rules_python//python/cc:current_py_cc_headers", "@spdlog", - "@tk_tcl//:tcl", + "@tcl_lang//:tcl", ], ) From 004b5feaa6bbacd1ad2d6d52f18e9c64aa5c318e Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Wed, 18 Feb 2026 19:44:01 +0100 Subject: [PATCH 2/6] bazel/tcl: Update sta submodule version to use tcl_lang The sta submodule needs to be modified to use the bcr tcl version. I made a PR for the change in the OpenSTA repository here: https://github.com/The-OpenROAD-Project/OpenSTA/pull/290 Signed-off-by: Friedrich Beckmann --- src/sta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sta b/src/sta index 9a14ce0870f..7937b647b60 160000 --- a/src/sta +++ b/src/sta @@ -1 +1 @@ -Subproject commit 9a14ce0870f5a3e2ac0db50497bfb6eb57378512 +Subproject commit 7937b647b608b7d04ffc21ca9ed74c42c818f330 From 3157515deae572b710eef08c9563a83b6b582186 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Wed, 18 Feb 2026 22:04:43 +0100 Subject: [PATCH 3/6] bazel/tcl: remove TCL_LIBRARY setting in tcl_encode_sta.bzl At least after migrating to bcr version of tcl the regression works without this setting. Also some short test on the openroad cmdline version works. Signed-off-by: Friedrich Beckmann --- bazel/tcl_encode_sta.bzl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bazel/tcl_encode_sta.bzl b/bazel/tcl_encode_sta.bzl index 77924178f0f..fd5f724ee6f 100644 --- a/bazel/tcl_encode_sta.bzl +++ b/bazel/tcl_encode_sta.bzl @@ -24,10 +24,6 @@ def _tcl_encode_sta_impl(ctx): arguments = [args], tools = [ctx.executable._tclsh, ctx.file._encode_script], executable = ctx.executable._tclsh, - env = { - # FIXME why is this needed? - "TCL_LIBRARY": ctx.executable._tclsh.path + ".runfiles/tk_tcl/library", - }, ) return [DefaultInfo(files = depset([output_file]))] From 676e7e9d430f2a4b05059335fba3db42b688b027 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Fri, 20 Feb 2026 10:22:50 +0100 Subject: [PATCH 4/6] bazel/tcl: Set and Overwrite the TCL_LIBRARY environment variable The bazel build comes with tcl files in the runtime environment. When the binary is called directly with TCL_LIBRARY set to another tcl version, then that one is used. If the versions differ like 8.6.12 vs 8.6.16, then the tcl shell does not work. This patch makes sure that the TCL_LIBRARY variable is always overwritten to use the bazel runtime environment with the correct tcl init files. The original behaviour resulted in regression test failures because the TCL_LIBRARY variable was set to the system (ubuntu) version which was 8.6.12 while openroad uses 8.6.16. Signed-off-by: Friedrich Beckmann --- bazel/InitRunFiles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/InitRunFiles.cpp b/bazel/InitRunFiles.cpp index dd399f130e2..877a001ed06 100644 --- a/bazel/InitRunFiles.cpp +++ b/bazel/InitRunFiles.cpp @@ -57,7 +57,7 @@ class BazelInitializer // Set the TCL_LIBRARY environment variable const std::string tcl_path = runfiles->Rlocation("tcl_lang/library/"); if (!tcl_path.empty()) { - setenv("TCL_LIBRARY", tcl_path.c_str(), 0); + setenv("TCL_LIBRARY", tcl_path.c_str(), true); } else { std::cerr << "Error: Could not locate 'tcl_lang/library/' in runfiles." << std::endl; From b3d6b364c56aa159c58b213df48b542a86def107 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Sun, 22 Feb 2026 22:01:58 +0100 Subject: [PATCH 5/6] bazel/tcl: add cstdlib include for setenv in InitRunFiles.cpp clang/tidy noticed that there is no include for setenv. Signed-off-by: Friedrich Beckmann --- bazel/InitRunFiles.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/bazel/InitRunFiles.cpp b/bazel/InitRunFiles.cpp index 877a001ed06..899af00a6a2 100644 --- a/bazel/InitRunFiles.cpp +++ b/bazel/InitRunFiles.cpp @@ -1,3 +1,4 @@ +#include #include #include From 359e41edafc53903ba59cb930c30c582ebed1796 Mon Sep 17 00:00:00 2001 From: Matt Liberty Date: Mon, 23 Feb 2026 01:45:39 +0000 Subject: [PATCH 6/6] clang-format bazel/InitRunFiles.cpp Signed-off-by: Matt Liberty --- bazel/InitRunFiles.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/InitRunFiles.cpp b/bazel/InitRunFiles.cpp index 899af00a6a2..ccd6ee9472a 100644 --- a/bazel/InitRunFiles.cpp +++ b/bazel/InitRunFiles.cpp @@ -1,7 +1,7 @@ -#include #include #include +#include #include #include #include