From 7892cb23624826b766a794f0b556f535be85ce12 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Tue, 7 Oct 2025 11:54:12 +0100 Subject: [PATCH] Overlays: allow any build mode for Go We have a check that a traced language can only run overlay analysis with build-mode: none, but Go does not currently declare support for BMN, even though it has a similar autobuild mode that will work for overlay analysis. This commit adds a hard-coded exception to that check, allowing any build mode for Go. This is intended as a short-term solution until Go declares BMN support. It should be safe, since we can choose not to enable the feature flag for Go repos using traced builds. --- lib/init-action.js | 8 +++++++- src/config-utils.ts | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/init-action.js b/lib/init-action.js index 2f509ad0ee..c7419b09a3 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -87860,7 +87860,13 @@ async function getOverlayDatabaseMode(codeql, repository, features, languages, s return nonOverlayAnalysis; } if (buildMode !== "none" /* None */ && (await Promise.all( - languages.map(async (l) => await codeql.isTracedLanguage(l)) + languages.map( + async (l) => l !== "go" /* go */ && // Workaround to allow overlay analysis for Go with any build + // mode, since it does not yet support BMN. The Go autobuilder and/or extractor will + // ensure that overlay-base databases are only created for supported Go build setups, + // and that we'll fall back to full databases in other cases. + await codeql.isTracedLanguage(l) + ) )).some(Boolean)) { logger.warning( `Cannot build an ${overlayDatabaseMode} database because build-mode is set to "${buildMode}" instead of "none". Falling back to creating a normal full database instead.` diff --git a/src/config-utils.ts b/src/config-utils.ts index fe4b392ab2..e6c87bf5a6 100644 --- a/src/config-utils.ts +++ b/src/config-utils.ts @@ -723,7 +723,14 @@ export async function getOverlayDatabaseMode( buildMode !== BuildMode.None && ( await Promise.all( - languages.map(async (l) => await codeql.isTracedLanguage(l)), + languages.map( + async (l) => + l !== KnownLanguage.go && // Workaround to allow overlay analysis for Go with any build + // mode, since it does not yet support BMN. The Go autobuilder and/or extractor will + // ensure that overlay-base databases are only created for supported Go build setups, + // and that we'll fall back to full databases in other cases. + (await codeql.isTracedLanguage(l)), + ), ) ).some(Boolean) ) {