From bbba58297b1f07e659006c1eced46a72130389ee Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Mon, 6 Apr 2026 12:50:32 +0100 Subject: [PATCH] dsn: debugger, play/stop, runtime (fixes) --- .../execution/StudioPlayStopCoordinator.java | 2 +- .../StudioExternalRuntimeProcessLauncher.java | 2 +- .../studio/shipper/StudioShipperService.java | 20 ++++-------------- .../fragments/cartridge/manifest.json | 1 - test-projects/main/cartridge/manifest.json | 1 - test-projects/main/cartridge/program.pbx | Bin 8975 -> 8975 bytes test-projects/main/run.sh | 4 +--- 7 files changed, 7 insertions(+), 23 deletions(-) diff --git a/prometeu-studio/src/main/java/p/studio/execution/StudioPlayStopCoordinator.java b/prometeu-studio/src/main/java/p/studio/execution/StudioPlayStopCoordinator.java index 762d7a1c..e4f0f99a 100644 --- a/prometeu-studio/src/main/java/p/studio/execution/StudioPlayStopCoordinator.java +++ b/prometeu-studio/src/main/java/p/studio/execution/StudioPlayStopCoordinator.java @@ -210,7 +210,7 @@ public final class StudioPlayStopCoordinator { executionSession.appendRuntimeLog(StudioExecutionLogSeverity.ERROR, "Runtime preflight failed: prometeuRuntimePath is missing."); return null; } - final Path runtimePath = Path.of(runtimePathValue).toAbsolutePath().normalize(); + final Path runtimePath = Path.of(runtimePathValue).resolve("prometeu").toAbsolutePath().normalize(); if (!Files.isRegularFile(runtimePath)) { executionSession.appendRuntimeLog(StudioExecutionLogSeverity.ERROR, "Runtime preflight failed: runtime not found at " + runtimePath + "."); return null; diff --git a/prometeu-studio/src/main/java/p/studio/execution/runtime/StudioExternalRuntimeProcessLauncher.java b/prometeu-studio/src/main/java/p/studio/execution/runtime/StudioExternalRuntimeProcessLauncher.java index d1a6ced1..afbf74be 100644 --- a/prometeu-studio/src/main/java/p/studio/execution/runtime/StudioExternalRuntimeProcessLauncher.java +++ b/prometeu-studio/src/main/java/p/studio/execution/runtime/StudioExternalRuntimeProcessLauncher.java @@ -11,7 +11,7 @@ public final class StudioExternalRuntimeProcessLauncher implements StudioRuntime public StudioRuntimeProcessHandle launch( final ProjectReference projectReference, final String runtimePath) throws IOException { - final Process process = new ProcessBuilder(runtimePath, "run", "build") + final Process process = new ProcessBuilder(runtimePath, "debug", "build") .directory(projectReference.rootPath().toFile()) .start(); return new ExternalProcessHandle(process); diff --git a/prometeu-studio/src/main/java/p/studio/shipper/StudioShipperService.java b/prometeu-studio/src/main/java/p/studio/shipper/StudioShipperService.java index cff8d285..97510c06 100644 --- a/prometeu-studio/src/main/java/p/studio/shipper/StudioShipperService.java +++ b/prometeu-studio/src/main/java/p/studio/shipper/StudioShipperService.java @@ -7,11 +7,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import p.packer.PackerWorkspaceService; import p.packer.dtos.PackerDiagnosticDTO; import p.packer.dtos.PackerPackValidationAssetDTO; -import p.packer.messages.PackWorkspaceRequest; -import p.packer.messages.PackWorkspaceResult; -import p.packer.messages.PackerOperationStatus; -import p.packer.messages.ValidatePackWorkspaceRequest; -import p.packer.messages.ValidatePackWorkspaceResult; +import p.packer.messages.*; import p.studio.Container; import p.studio.compiler.messages.BuilderPipelineConfig; import p.studio.compiler.models.BuildResult; @@ -162,7 +158,7 @@ public final class StudioShipperService { final Path manifestPath = buildRoot.resolve(MANIFEST_FILE); try { Files.createDirectories(buildRoot); - final ObjectNode manifest = createManifest(projectReference, buildResult, buildRoot); + final ObjectNode manifest = createManifest(projectReference, buildResult); MAPPER.writerWithDefaultPrettyPrinter().writeValue(manifestPath.toFile(), manifest); emit(logs, logSink, StudioShipperLogEntry.info( StudioShipperLogSource.MANIFEST, @@ -178,23 +174,15 @@ public final class StudioShipperService { private ObjectNode createManifest( final ProjectReference projectReference, - final BuildResult buildResult, - final Path buildRoot) throws IOException { + final BuildResult buildResult) throws IOException { final ObjectNode manifest = MAPPER.createObjectNode(); - final JsonNode projectManifest = MAPPER.readTree(projectReference.rootPath().resolve(PROJECT_MANIFEST_FILE).toFile()); manifest.put("magic", "PMTU"); manifest.put("cartridge_version", 1); manifest.put("app_id", stableAppId(projectReference)); manifest.put("title", projectReference.name()); manifest.put("app_version", projectReference.version()); - manifest.put("app_mode", "game"); + manifest.put("app_mode", "Game"); manifest.set("capabilities", capabilitiesNode(buildResult)); - manifest.set("asset_table", readArrayOrEmpty(buildRoot.resolve(ASSET_TABLE_FILE))); - manifest.set("preload", readArrayOrEmpty(buildRoot.resolve(PRELOAD_FILE))); - if (projectManifest != null) { - putIfTextual(manifest, "project_name", projectManifest.get("name")); - putIfTextual(manifest, "language", projectManifest.get("language")); - } return manifest; } diff --git a/test-projects/fragments/cartridge/manifest.json b/test-projects/fragments/cartridge/manifest.json index 4f20a259..27a14cb3 100644 --- a/test-projects/fragments/cartridge/manifest.json +++ b/test-projects/fragments/cartridge/manifest.json @@ -5,6 +5,5 @@ "title": "Fragments", "app_version": "0.1.0", "app_mode": "Game", - "entrypoint": "0", "capabilities": ["log", "gfx", "asset"] } diff --git a/test-projects/main/cartridge/manifest.json b/test-projects/main/cartridge/manifest.json index 901fe9e6..1a4994dd 100644 --- a/test-projects/main/cartridge/manifest.json +++ b/test-projects/main/cartridge/manifest.json @@ -5,6 +5,5 @@ "title": "Main Test", "app_version": "0.1.0", "app_mode": "Game", - "entrypoint": "0", "capabilities": ["log", "gfx", "asset"] } diff --git a/test-projects/main/cartridge/program.pbx b/test-projects/main/cartridge/program.pbx index e55f479132c8ca80f8bfef0ff203664284105ea1..594130d505341f797f5a9cc6a4301ea0fe15967c 100644 GIT binary patch literal 8975 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 literal 8975 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 diff --git a/test-projects/main/run.sh b/test-projects/main/run.sh index 3f792c15..df4ac3c5 100755 --- a/test-projects/main/run.sh +++ b/test-projects/main/run.sh @@ -2,6 +2,4 @@ set -e -cp build/assets.pa cartridge -cp build/program.pbx cartridge -./runtime/prometeu run cartridge +./runtime/prometeu run build