From 833c5951467a78446d59c33db4b954f55bbcb4c1 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 12 Feb 2026 04:16:56 +0000 Subject: [PATCH] remove engine sha tracking --- src/main/java/assets/archive/DioramaConfig.kt | 9 +---- src/main/java/project/Build.kt | 37 +++---------------- src/main/java/project/Project.kt | 4 -- src/main/java/project/build/BuildCtx.kt | 6 --- src/main/java/project/build/BuildState.kt | 12 +++--- 5 files changed, 12 insertions(+), 56 deletions(-) diff --git a/src/main/java/assets/archive/DioramaConfig.kt b/src/main/java/assets/archive/DioramaConfig.kt index 6a9ce07..12de5c6 100644 --- a/src/main/java/assets/archive/DioramaConfig.kt +++ b/src/main/java/assets/archive/DioramaConfig.kt @@ -7,20 +7,15 @@ import kotlinx.serialization.json.Json /** Target configuration for Diorama package. */ data class DioramaConfig( val assetsArchiveRomStart: Int, - val engineSha: String ) { - companion object { - /** Standard ROM address for AssetsArchive in papermario-dx builds. */ - const val DEFAULT_ROM_START = 0x1E40000 - } /** * Generates target.json content. */ fun toJson(): String { val json = Json { prettyPrint = false } val target = TargetJson( + version = 1, engine = PapermarioDxConfig( - sha = engineSha, assets_archive_ROM_START = assetsArchiveRomStart ) ) @@ -29,12 +24,12 @@ data class DioramaConfig( @Serializable internal data class TargetJson( + val version: Int, val engine: PapermarioDxConfig ) @Serializable internal data class PapermarioDxConfig( - val sha: String, val assets_archive_ROM_START: Int ) } diff --git a/src/main/java/project/Build.kt b/src/main/java/project/Build.kt index a2cd105..51d534b 100644 --- a/src/main/java/project/Build.kt +++ b/src/main/java/project/Build.kt @@ -7,6 +7,7 @@ import assets.archive.AssetsArchiveBuilder import assets.archive.AssetsArchiveCompressor import assets.archive.DioramaArchiver import assets.archive.DioramaConfig +import assets.archive.readMapfsRomStart import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.future.future @@ -127,13 +128,12 @@ class Build(private val project: Project) { headersDir.createDirectories() val stateFile = project.directory.toPath() / ".starrod" / "build-state" / "state.json" - val engineSha = getEngineSha() // Load or create build state - var buildState = BuildState.load(stateFile, engineSha) + var buildState = BuildState.load(stateFile) if (buildState == null) { Logger.log("Build state invalidated or missing, rebuilding all assets") - buildState = BuildState.create(engineSha) + buildState = BuildState.create() } // Discover all assets @@ -171,8 +171,6 @@ class Build(private val project: Project) { val ctx = BuildCtx( buildDir = buildDir, project = project, - engineSha = engineSha, - buildStateVersion = BuildState.CURRENT_VERSION, headersDir = headersDir ) @@ -277,26 +275,6 @@ class Build(private val project: Project) { return Triple(successCount - currentSuccessCount, errors.size, artifacts) } - /** - * Gets the current engine git SHA for cache invalidation. - * Returns "unknown" if not in a git repository. - */ - private fun getEngineSha(): String { - return try { - val process = ProcessBuilder("git", "rev-parse", "HEAD") - .directory(project.directory) - .redirectErrorStream(true) - .start() - - val sha = process.inputStream.bufferedReader().readText().trim() - process.waitFor() - - if (process.exitValue() == 0) sha else "unknown" - } catch (e: Exception) { - "unknown" - } - } - /** * Generates an AssetsArchive binary from built artifacts. * @return Path to the generated assets.bin @@ -335,18 +313,13 @@ class Build(private val project: Project) { Logger.log("Packaging Diorama...") val projectManifest = project.directory.toPath() / Manifest.FILENAME - val engineSha = getEngineSha() - val config = DioramaConfig( - assetsArchiveRomStart = DioramaConfig.DEFAULT_ROM_START, - engineSha = engineSha - ) + val start = readMapfsRomStart(project.engine.directory.resolve("ver/us/build/syms.ld")); + val config = DioramaConfig(start) val modId = project.manifest.id ?: "unknown" val outputPath = project.directory.toPath() / ".starrod" / "build" / "$modId.diorama" val archiver = DioramaArchiver(projectManifest, config, archivePath) archiver.createArchive(outputPath) - - Logger.log("Diorama engine SHA: $engineSha") } } } diff --git a/src/main/java/project/Project.kt b/src/main/java/project/Project.kt index f997ac7..516b2a8 100644 --- a/src/main/java/project/Project.kt +++ b/src/main/java/project/Project.kt @@ -42,10 +42,6 @@ class Project @Throws(IOException::class, KdlParseException::class) constructor( val engineAssetsDir: AssetsDir.Engine get() = assetDirectories.last() as AssetsDir.Engine - fun build() { - // TODO - } - companion object { /** Creates a new project from a template. */ @JvmStatic diff --git a/src/main/java/project/build/BuildCtx.kt b/src/main/java/project/build/BuildCtx.kt index de52ea3..5430ae5 100644 --- a/src/main/java/project/build/BuildCtx.kt +++ b/src/main/java/project/build/BuildCtx.kt @@ -16,12 +16,6 @@ data class BuildCtx( /** Current project being built. */ val project: Project, - /** Engine SHA for cache invalidation. */ - val engineSha: String, - - /** Build state format version for migration. */ - val buildStateVersion: Int, - /** Directory containing generated headers. */ val headersDir: Path ) { diff --git a/src/main/java/project/build/BuildState.kt b/src/main/java/project/build/BuildState.kt index 3954973..214c30b 100644 --- a/src/main/java/project/build/BuildState.kt +++ b/src/main/java/project/build/BuildState.kt @@ -14,7 +14,6 @@ import kotlin.io.path.* */ @Serializable data class BuildState( - val engineSha: String, val version: Int, val assetTimestamps: MutableMap = mutableMapOf(), val assetClassTimestamps: MutableMap = mutableMapOf() @@ -129,16 +128,15 @@ data class BuildState( /** * Load build state from disk, or create a fresh state if the file doesn't exist. - * Returns null if the state is invalid (wrong engine SHA or version). + * Returns null if the state is invalid. */ - fun load(stateFile: Path, currentEngineSha: String): BuildState? { + fun load(stateFile: Path): BuildState? { if (!stateFile.exists()) return null return try { val state = json.decodeFromString(stateFile.readText()) - // Invalidate if engine changed or version mismatch - if (state.engineSha != currentEngineSha || state.version != CURRENT_VERSION) { + if (state.version != CURRENT_VERSION) { null } else { state @@ -152,8 +150,8 @@ data class BuildState( /** * Create a fresh build state. */ - fun create(engineSha: String): BuildState { - return BuildState(engineSha, CURRENT_VERSION) + fun create(): BuildState { + return BuildState(CURRENT_VERSION) } } } -- 2.51.2