From d62304a0681b6ac108ab39cb557a3d409717ccc0 Mon Sep 17 00:00:00 2001 From: Andrey Avtomonov Date: Wed, 13 May 2026 00:50:57 +0200 Subject: [PATCH] Fix pnpm artifact smoke build approvals --- scripts/installed-live-database-smoke.mjs | 2 ++ scripts/local-embeddings-runtime-smoke.mjs | 2 ++ scripts/package-artifacts.mjs | 9 ++++++--- scripts/package-artifacts.test.mjs | 5 +++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/scripts/installed-live-database-smoke.mjs b/scripts/installed-live-database-smoke.mjs index 129aca59..75c3cc61 100644 --- a/scripts/installed-live-database-smoke.mjs +++ b/scripts/installed-live-database-smoke.mjs @@ -9,6 +9,7 @@ import { join } from 'node:path'; import { pathToFileURL } from 'node:url'; import { npmSmokePackageJson, + npmSmokePnpmWorkspaceYaml, packageArtifactLayout, } from './package-artifacts.mjs'; @@ -280,6 +281,7 @@ async function prepareCleanInstall(layout, cleanInstallDir) { await assertPathExists(layout.cliTarball, '@ktx/cli tarball'); await mkdir(cleanInstallDir, { recursive: true }); await writeFile(join(cleanInstallDir, 'package.json'), `${JSON.stringify(npmSmokePackageJson(layout), null, 2)}\n`); + await writeFile(join(cleanInstallDir, 'pnpm-workspace.yaml'), npmSmokePnpmWorkspaceYaml()); await run('pnpm', ['install'], { cwd: cleanInstallDir, timeout: 120_000 }).then((result) => requireSuccess('pnpm install clean artifact project', result), ); diff --git a/scripts/local-embeddings-runtime-smoke.mjs b/scripts/local-embeddings-runtime-smoke.mjs index 48eb404e..064cd070 100644 --- a/scripts/local-embeddings-runtime-smoke.mjs +++ b/scripts/local-embeddings-runtime-smoke.mjs @@ -9,6 +9,7 @@ import { PUBLIC_NPM_PACKAGE_NAME, PUBLIC_NPM_PACKAGE_VERSION, } from './build-public-npm-package.mjs'; +import { npmSmokePnpmWorkspaceYaml } from './package-artifacts.mjs'; const execFileAsync = promisify(execFile); const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url)); @@ -249,6 +250,7 @@ async function writeSmokePackage(projectDir, tarballPath) { 2, )}\n`, ); + await writeFile(join(projectDir, 'pnpm-workspace.yaml'), npmSmokePnpmWorkspaceYaml()); } export async function runLocalEmbeddingsRuntimeSmoke(options = {}) { diff --git a/scripts/package-artifacts.mjs b/scripts/package-artifacts.mjs index 47f3402f..e3b02714 100644 --- a/scripts/package-artifacts.mjs +++ b/scripts/package-artifacts.mjs @@ -462,12 +462,13 @@ export function npmSmokePackageJson(layout) { devDependencies: { 'better-sqlite3': '^12.6.2', }, - pnpm: { - onlyBuiltDependencies: ['better-sqlite3'], - }, }; } +export function npmSmokePnpmWorkspaceYaml() { + return ['packages:', ' - "."', 'allowBuilds:', ' better-sqlite3: true', ''].join('\n'); +} + export function npmVerifySource() { return ` const cli = await import('@kaelio/ktx'); @@ -1172,6 +1173,7 @@ async function verifyNpmArtifacts(layout, tmpRoot) { join(projectDir, 'package.json'), `${JSON.stringify(npmSmokePackageJson(layout), null, 2)}\n`, ); + await writeFile(join(projectDir, 'pnpm-workspace.yaml'), npmSmokePnpmWorkspaceYaml()); await writeFile(join(projectDir, 'verify-npm.mjs'), npmVerifySource()); await writeFile(join(projectDir, 'verify-installed-cli.mjs'), npmRuntimeSmokeSource()); await writeFile(join(projectDir, 'verify-installed-demo.mjs'), npmDemoSmokeSource()); @@ -1192,6 +1194,7 @@ async function verifyNpmDemoArtifacts(layout, tmpRoot) { const projectDir = join(tmpRoot, 'npm-demo-clean-install'); await mkdir(projectDir, { recursive: true }); await writeFile(join(projectDir, 'package.json'), `${JSON.stringify(npmSmokePackageJson(layout), null, 2)}\n`); + await writeFile(join(projectDir, 'pnpm-workspace.yaml'), npmSmokePnpmWorkspaceYaml()); await writeFile(join(projectDir, 'verify-installed-demo.mjs'), npmDemoSmokeSource()); await runCommand('pnpm', ['install'], { cwd: projectDir }); diff --git a/scripts/package-artifacts.test.mjs b/scripts/package-artifacts.test.mjs index d906ab99..6f7a3582 100644 --- a/scripts/package-artifacts.test.mjs +++ b/scripts/package-artifacts.test.mjs @@ -19,6 +19,7 @@ import { npmDemoSmokeSource, npmRuntimeSmokeSource, npmSmokePackageJson, + npmSmokePnpmWorkspaceYaml, npmVerifySource, packageArtifactLayout, packageReleaseMetadata, @@ -422,6 +423,10 @@ describe('verification snippets', () => { assert.deepEqual(packageJson.devDependencies, { 'better-sqlite3': '^12.6.2', }); + assert.equal( + npmSmokePnpmWorkspaceYaml(), + ['packages:', ' - "."', 'allowBuilds:', ' better-sqlite3: true', ''].join('\n'), + ); }); it('exposes manifest verification as a package artifact command', async () => {