getPreloadFSName() now internally tries the exact platform id, then the root-base id (fix for atari8 headers)

This commit is contained in:
Steven Hugg committed 2026-08-31 14:27:43 +02:00
1 parent 07ef5e5cae
commit 2f39beeb38
4 files changed
+20 -7

No files matched your search

+9 -1
View File
@@ -284,7 +284,7 @@ export const TOOL_META: { [id: string]: ToolMeta } = {
ca65: {
id: 'ca65', name: 'ca65', kind: 'assembler', arch: '6502',
extensions: ['.s', '.ca65'],
extensions: ['.s', '.ca65', '.inc'],
includeDirs: ['/include', '/asminc'],
editorStyle: '6502',
helpURL: 'https://cc65.github.io/doc/ca65.html',
@@ -698,8 +698,16 @@ export function getPreloadFSName(tool: string, platform?: string): string | unde
if (!meta) return undefined;
if (meta.platforms) {
if (platform) {
// Try the exact id, then the root base id so suffixed platform ids
// (e.g. 'atari8-800', 'atari8-5200.xlmame') resolve to the shared
// filesystem registered under the root ('atari8' -> '65-atari8').
let p = meta.platforms[platform];
if (p && p.preloadFS) return p.preloadFS;
let base = getRootBasePlatform(platform);
if (base && base !== platform) {
let b = meta.platforms[base];
if (b && b.preloadFS) return b.preloadFS;
}
}
let d = meta.platforms['default'];
if (d && d.preloadFS) return d.preloadFS;
+1 -3
View File
@@ -6,7 +6,6 @@
import * as fs from 'fs';
import * as path from 'path';
import type { WorkerResult, WorkerMessage } from "../common/workertypes";
import { getBasePlatform, getRootBasePlatform } from "../common/util";
import { getPreloadFSName } from "../common/toolmeta";
import { store, builder } from "./builder";
import { emglobal, fsMeta, loadFilesystem, listSharedFiles, readSharedFile, ensureFilesystem, readWasiSharedFile, listWasiSharedFiles, ensureWasiFilesystem } from "./wasmutils";
@@ -136,8 +135,7 @@ export function setupNodeEnvironment() {
export async function handleMessage(data: WorkerMessage): Promise<WorkerResult> {
// preload file system
if (data.preload) {
var fsName = getPreloadFSName(data.preload, data.platform && getBasePlatform(data.platform))
|| getPreloadFSName(data.preload, data.platform && getRootBasePlatform(data.platform));
var fsName = getPreloadFSName(data.preload, data.platform);
if (fsName && !fsMeta[fsName])
loadFilesystem(fsName);
return;
+1 -3
View File
@@ -1,6 +1,5 @@
import type { WorkerResult, WorkerMessage, WorkerError, SourceLine } from "../common/workertypes";
import { getBasePlatform, getRootBasePlatform } from "../common/util";
import { getPreloadFSName } from "../common/toolmeta";
import { store, builder, errorResult, getWorkFileAsString } from "./builder";
import { emglobal, fsMeta, loadFilesystem, listSharedFiles, readSharedFile, ensureFilesystem, readWasiSharedFile, listWasiSharedFiles, ensureWasiFilesystem } from "./wasmutils";
@@ -37,8 +36,7 @@ export function setupRequireFunction() {
async function handleMessage(data: WorkerMessage): Promise<WorkerResult> {
// preload file system
if (data.preload) {
var fs = getPreloadFSName(data.preload, data.platform && getBasePlatform(data.platform))
|| getPreloadFSName(data.preload, data.platform && getRootBasePlatform(data.platform));
var fs = getPreloadFSName(data.preload, data.platform);
if (fs && !fsMeta[fs])
loadFilesystem(fs);
return;
+9
View File
@@ -53,6 +53,15 @@ describe('Tool metadata registry', function () {
assert.strictEqual(getPreloadFSName('dasm'), undefined);
});
it('getPreloadFSName resolves suffixed platform ids to their root base', function () {
// atari8 runs as 'atari8-800' / 'atari8-5200' / *.xlmame variants
assert.strictEqual(getPreloadFSName('cc65', 'atari8'), '65-atari8');
assert.strictEqual(getPreloadFSName('cc65', 'atari8-800'), '65-atari8');
assert.strictEqual(getPreloadFSName('cc65', 'atari8-800.xlmame'), '65-atari8');
assert.strictEqual(getPreloadFSName('cc65', 'atari8-5200'), '65-atari8');
assert.strictEqual(getSharedFileSystemName('cc65', 'atari8-800'), '65-atari8');
});
it('getSkeletonName defaults to the tool id', function () {
assert.strictEqual(getSkeletonName('dasm'), 'dasm');
assert.strictEqual(getSkeletonName('remote:llvm-mos'), 'llvm-mos');