From 2e493488a40c0319070fadb1a10e230f2471e989 Mon Sep 17 00:00:00 2001 From: "F.Tibor" Date: Wed, 12 Aug 2026 14:49:56 +0200 Subject: [PATCH 1/4] Add /usr/bin and /usr/local/bin to the default/fallback PATH --- src/codechecker_script.py | 3 ++- src/per_file_script.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/codechecker_script.py b/src/codechecker_script.py index cde29ca0..89d2b13d 100644 --- a/src/codechecker_script.py +++ b/src/codechecker_script.py @@ -194,7 +194,8 @@ def analyze(): codechecker_env = dict(item.split("=", 1) for item in env_list) env.update(codechecker_env) if "PATH" not in env: - env["PATH"] = "/bin" # NOTE: this is workaround for CodeChecker 6.24.4 + # NOTE: this is workaround for CodeChecker + env["PATH"] = "/bin:/usr/bin:/usr/local/bin" env["CC_ANALYZER_BIN"] = generate_analyzer_executables() logging.debug("env: %s", str(env)) diff --git a/src/per_file_script.py b/src/per_file_script.py index affa4c7d..2672eaf5 100644 --- a/src/per_file_script.py +++ b/src/per_file_script.py @@ -95,6 +95,9 @@ def _get_codechecker_env() -> dict[str, str]: Returns the environment for running CodeChecker """ cc_env = os.environ.copy() + if "PATH" not in cc_env: + # CodeChecker can't run with an empty PATH + cc_env["PATH"] = "/bin:/usr/bin:/usr/local/bin" # Overwrite analyzer paths cc_env["CC_ANALYZER_BIN"] = ANALYZER_EXECUTABLES_ENV_VAR return cc_env From 4ba2ab1e8ba2ba39d17b39725105d424c97cfaf6 Mon Sep 17 00:00:00 2001 From: "F.Tibor" Date: Wed, 12 Aug 2026 15:16:46 +0200 Subject: [PATCH 2/4] Reordec PATH --- src/codechecker_script.py | 2 +- src/per_file_script.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codechecker_script.py b/src/codechecker_script.py index 89d2b13d..d27b7006 100644 --- a/src/codechecker_script.py +++ b/src/codechecker_script.py @@ -195,7 +195,7 @@ def analyze(): env.update(codechecker_env) if "PATH" not in env: # NOTE: this is workaround for CodeChecker - env["PATH"] = "/bin:/usr/bin:/usr/local/bin" + env["PATH"] = "/usr/local/bin:/usr/bin:/bin" env["CC_ANALYZER_BIN"] = generate_analyzer_executables() logging.debug("env: %s", str(env)) diff --git a/src/per_file_script.py b/src/per_file_script.py index 2672eaf5..55cf07c1 100644 --- a/src/per_file_script.py +++ b/src/per_file_script.py @@ -97,7 +97,7 @@ def _get_codechecker_env() -> dict[str, str]: cc_env = os.environ.copy() if "PATH" not in cc_env: # CodeChecker can't run with an empty PATH - cc_env["PATH"] = "/bin:/usr/bin:/usr/local/bin" + cc_env["PATH"] = "/usr/local/bin:/usr/bin:/bin" # Overwrite analyzer paths cc_env["CC_ANALYZER_BIN"] = ANALYZER_EXECUTABLES_ENV_VAR return cc_env From 8dc164ca8ad252074fbd7e6b6bc725277680ec52 Mon Sep 17 00:00:00 2001 From: "F.Tibor" Date: Thu, 13 Aug 2026 06:53:57 +0200 Subject: [PATCH 3/4] Disable use_default_shell_env --- src/per_file.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/per_file.bzl b/src/per_file.bzl index 339a1623..f90ef982 100644 --- a/src/per_file.bzl +++ b/src/per_file.bzl @@ -115,7 +115,7 @@ def _run_code_checker( analyzer_executables, ], mnemonic = "CodeChecker", - use_default_shell_env = True, + use_default_shell_env = False, progress_message = "CodeChecker analyze {}".format(src.short_path), ) return outputs From d6f1562e1683236b2a89013c68e42d713e4f7312 Mon Sep 17 00:00:00 2001 From: "F.Tibor" Date: Thu, 13 Aug 2026 09:17:14 +0200 Subject: [PATCH 4/4] Minimize impact of workaround on execution --- src/codechecker_script.py | 4 +++- src/per_file_script.py | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/codechecker_script.py b/src/codechecker_script.py index d27b7006..521532d3 100644 --- a/src/codechecker_script.py +++ b/src/codechecker_script.py @@ -195,7 +195,9 @@ def analyze(): env.update(codechecker_env) if "PATH" not in env: # NOTE: this is workaround for CodeChecker - env["PATH"] = "/usr/local/bin:/usr/bin:/bin" + # CodeChecker never actually uses the PATH, it just + # have to be set to something. + env["PATH"] = "/" env["CC_ANALYZER_BIN"] = generate_analyzer_executables() logging.debug("env: %s", str(env)) diff --git a/src/per_file_script.py b/src/per_file_script.py index 55cf07c1..4bb3961c 100644 --- a/src/per_file_script.py +++ b/src/per_file_script.py @@ -96,8 +96,10 @@ def _get_codechecker_env() -> dict[str, str]: """ cc_env = os.environ.copy() if "PATH" not in cc_env: - # CodeChecker can't run with an empty PATH - cc_env["PATH"] = "/usr/local/bin:/usr/bin:/bin" + # NOTE: this is workaround for CodeChecker + # CodeChecker never actually uses the PATH, it just + # have to be set to something. + cc_env["PATH"] = "/" # Overwrite analyzer paths cc_env["CC_ANALYZER_BIN"] = ANALYZER_EXECUTABLES_ENV_VAR return cc_env