diff --git a/packages/SwingSet/src/controller.js b/packages/SwingSet/src/controller.js index 1691abcea2c..cc67db0eb3f 100644 --- a/packages/SwingSet/src/controller.js +++ b/packages/SwingSet/src/controller.js @@ -16,7 +16,7 @@ import { importBundle } from '@agoric/import-bundle'; import { initSwingStore } from '@agoric/swing-store-simple'; import { makeMeteringTransformer } from '@agoric/transform-metering'; import { makeTransform } from '@agoric/transform-eventual-send'; -import { xsWorkerBin } from '@agoric/xs-vat-worker'; +import { locateWorkerBin } from '@agoric/xs-vat-worker'; import { startSubprocessWorker } from './spawnSubprocessWorker'; import { assertKnownOptions } from './assertOptions'; @@ -322,7 +322,8 @@ export async function buildVatController( // console.log(`--slog ${JSON.stringify(obj)}`); } - const startXsWorker = xsWorkerBin + const xsWorkerBin = locateWorkerBin({ resolve: path.resolve }); + const startXsWorker = fs.existsSync(xsWorkerBin) ? () => startSubprocessWorker(xsWorkerBin, []) : undefined; diff --git a/packages/SwingSet/test/workers/test-worker.js b/packages/SwingSet/test/workers/test-worker.js index 4d877490b72..84a82ecf30b 100644 --- a/packages/SwingSet/test/workers/test-worker.js +++ b/packages/SwingSet/test/workers/test-worker.js @@ -1,11 +1,14 @@ import '@agoric/install-ses'; import test from 'ava'; -import { xsWorkerBin } from '@agoric/xs-vat-worker/src/locate'; +import { resolve } from 'path'; +import { existsSync } from 'fs'; +import { locateWorkerBin } from '@agoric/xs-vat-worker'; import { loadBasedir, buildVatController } from '../../src/index'; test('xs vat manager', async t => { - if (!xsWorkerBin) { - console.warn('XS vat worker not built; skipping'); + const bin = locateWorkerBin({ resolve }); + if (!existsSync(bin)) { + console.warn(`XS vat worker ${bin} not built; skipping`); t.falsy.skip(false); return; } diff --git a/packages/xs-vat-worker/package.json b/packages/xs-vat-worker/package.json index 736d505a961..d7f543b20ce 100644 --- a/packages/xs-vat-worker/package.json +++ b/packages/xs-vat-worker/package.json @@ -5,7 +5,6 @@ "main": "src/locate.js", "module": "src/locate.js", "scripts": { - "postinstall": "cp src/locate-undefined.js src/locate.js", "build:xs-lin": "make -f xs-lin.mk", "test": "tape -r esm 'test/**/test-*.js'", "build": "exit 0", diff --git a/packages/xs-vat-worker/src/locate-undefined.js b/packages/xs-vat-worker/src/locate-undefined.js deleted file mode 100644 index 1ba903d1b52..00000000000 --- a/packages/xs-vat-worker/src/locate-undefined.js +++ /dev/null @@ -1 +0,0 @@ -export const xsWorkerBin = undefined; diff --git a/packages/xs-vat-worker/src/locate.js b/packages/xs-vat-worker/src/locate.js new file mode 100644 index 00000000000..4f946231069 --- /dev/null +++ b/packages/xs-vat-worker/src/locate.js @@ -0,0 +1,15 @@ +/** + * Locate the XS vat worker executable. + * + * Note: executable is not built by default. + * @see the `build:xs-lin` script in package.json + * + * @param {{ resolve: (...string) => string }} filesystem path access + * @returns { string } full path where linux debug executable is built; + * not guaranteed to exist. + */ +export function locateWorkerBin({ resolve }) { + const goal = 'debug'; // ISSUE: support, test release too? + const os = 'lin'; // ISSUE: support, test mac too? + return resolve(__dirname, '../build/bin', os, goal, 'xs-vat-worker'); +} diff --git a/packages/xs-vat-worker/test/test-locate.js b/packages/xs-vat-worker/test/test-locate.js index 82e7182b06b..a1769c80e37 100644 --- a/packages/xs-vat-worker/test/test-locate.js +++ b/packages/xs-vat-worker/test/test-locate.js @@ -1,8 +1,12 @@ +import { resolve } from 'path'; + import { test } from 'tape-promise/tape'; -import { xsWorkerBin } from '../src/locate'; +import { locateWorkerBin } from '../src/locate'; test('locateWorkerBin', t => { - t.ok(!xsWorkerBin || xsWorkerBin.endsWith('xs-vat-worker')); + const bin = locateWorkerBin({ resolve }); + t.ok(bin.startsWith('/')); + t.ok(bin.endsWith('/xs-vat-worker')); t.end(); }); diff --git a/packages/xs-vat-worker/xs-lin.mk b/packages/xs-vat-worker/xs-lin.mk index 6bc4f185896..9db23af4279 100644 --- a/packages/xs-vat-worker/xs-lin.mk +++ b/packages/xs-vat-worker/xs-lin.mk @@ -5,7 +5,6 @@ ROOT=$(PWD)/../.. $(NODE_MODULES)/.bin/xs-vat-worker: build/bin/lin/debug/xs-vat-worker cp $< $@ - echo "export const xsWorkerBin =\n '$@';" >src/locate.js build/bin/lin/debug/xs-vat-worker: build $(TOOLS)/mcconfig moddable/xs/platforms/lin_xs_cli.c compartmap.json manifest.json ROOT=$(ROOT) PATH=$(TOOLS):$$PATH MODDABLE=$(MODDABLE) mcconfig -o build -p x-cli-lin -m -d