backend-infra-engineer: fix release build failures

This commit is contained in:
scawful
2025-12-29 07:41:51 -06:00
parent cfed3c1c5a
commit 4944066fa7
8 changed files with 64 additions and 29 deletions

View File

@@ -207,9 +207,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Shift+P",
.visibility_flag = &show_control_panel_,
.priority = 10,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 10});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.ow_main",
.display_name = "Overworld Main",
@@ -218,9 +218,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+1",
.visibility_flag = &show_ow_main_panel_,
.priority = 20,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 20});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.ow_animated",
.display_name = "Overworld Animated",
@@ -229,9 +229,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+2",
.visibility_flag = &show_ow_animated_panel_,
.priority = 30,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 30});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.dungeon_main",
.display_name = "Dungeon Main",
@@ -240,9 +240,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+3",
.visibility_flag = &show_dungeon_main_panel_,
.priority = 40,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 40});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.sprites",
.display_name = "Global Sprite Palettes",
@@ -251,9 +251,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+4",
.visibility_flag = &show_sprite_panel_,
.priority = 50,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 50});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux1",
.display_name = "Sprites Aux 1",
@@ -262,9 +262,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+7",
.visibility_flag = &show_sprites_aux1_panel_,
.priority = 51,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 51});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux2",
.display_name = "Sprites Aux 2",
@@ -273,9 +273,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+8",
.visibility_flag = &show_sprites_aux2_panel_,
.priority = 52,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 52});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.sprites_aux3",
.display_name = "Sprites Aux 3",
@@ -284,9 +284,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+9",
.visibility_flag = &show_sprites_aux3_panel_,
.priority = 53,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 53});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.equipment",
.display_name = "Equipment Palettes",
@@ -295,9 +295,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+5",
.visibility_flag = &show_equipment_panel_,
.priority = 60,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 60});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.quick_access",
.display_name = "Quick Access",
@@ -306,9 +306,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+Q",
.visibility_flag = &show_quick_access_,
.priority = 70,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 70});
.disabled_tooltip = "Load a ROM first"});
panel_manager->RegisterPanel({.card_id = "palette.custom",
.display_name = "Custom Palette",
@@ -317,9 +317,9 @@ void PaletteEditor::Initialize() {
.category = "Palette",
.shortcut_hint = "Ctrl+Alt+C",
.visibility_flag = &show_custom_palette_,
.priority = 80,
.enabled_condition = [this]() { return rom_ && rom_->is_loaded(); },
.disabled_tooltip = "Load a ROM first",
.priority = 80});
.disabled_tooltip = "Load a ROM first"});
// Show control panel by default when Palette Editor is activated
panel_manager->ShowPanel(session_id, "palette.control_panel");

View File

@@ -86,9 +86,10 @@ absl::Status EmulatorResetCommandHandler::Execute(
Rom* rom, const resources::ArgumentParser& parser,
resources::OutputFormatter& formatter) {
EmulatorClient client;
agent::Empty request;
agent::ControlRequest request;
request.set_action("reset");
auto response_or =
client.CallRpc(&agent::EmulatorService::Stub::Reset, request);
client.CallRpc(&agent::EmulatorService::Stub::ControlEmulator, request);
if (!response_or.ok()) {
return response_or.status();
}

View File

@@ -44,8 +44,13 @@ const TestSuite kTestSuites[] = {
std::string ExecuteCommand(const std::string& cmd) {
std::array<char, 256> buffer;
std::string result;
#ifdef _WIN32
std::unique_ptr<FILE, decltype(&_pclose)> pipe(_popen(cmd.c_str(), "r"),
_pclose);
#else
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"),
pclose);
pclose);
#endif
if (!pipe) {
return "";
}

View File

@@ -211,6 +211,18 @@ grpc::Status EmulatorServiceImpl::PressButtons(grpc::ServerContext* context,
return grpc::Status::OK;
}
grpc::Status EmulatorServiceImpl::ReleaseButtons(grpc::ServerContext* context,
const agent::ButtonRequest* request,
agent::CommandResponse* response) {
if (!emulator_) return grpc::Status(grpc::StatusCode::UNAVAILABLE, "Emulator not initialized.");
auto& input_manager = emulator_->input_manager();
for (int i = 0; i < request->buttons_size(); i++) {
input_manager.ReleaseButton(ToSnesButton(static_cast<agent::Button>(request->buttons(i))));
}
response->set_success(true);
return grpc::Status::OK;
}
grpc::Status EmulatorServiceImpl::HoldButtons(grpc::ServerContext* context,
const agent::ButtonHoldRequest* request,
agent::CommandResponse* response) {
@@ -451,4 +463,4 @@ void EmulatorServiceImpl::InitializeStepController() {
step_controller_.SetPcGetter([&cpu]() -> uint32_t { return (cpu.PB << 16) | cpu.PC; });
}
} // namespace yaze::net
} // namespace yaze::net

View File

@@ -38,6 +38,9 @@ class EmulatorServiceImpl final : public agent::EmulatorService::Service {
grpc::Status PressButtons(grpc::ServerContext* context,
const agent::ButtonRequest* request,
agent::CommandResponse* response) override;
grpc::Status ReleaseButtons(grpc::ServerContext* context,
const agent::ButtonRequest* request,
agent::CommandResponse* response) override;
grpc::Status HoldButtons(grpc::ServerContext* context,
const agent::ButtonHoldRequest* request,
agent::CommandResponse* response) override;

View File

@@ -1,6 +1,7 @@
#include "core/asar_wrapper.h"
#include <chrono>
#include <cstdio>
#include <cstdlib>
#include <filesystem>
#include <fstream>
@@ -411,7 +412,11 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
// Execute using popen to capture output
std::array<char, 128> buffer;
std::string output;
#ifdef _WIN32
FILE* pipe = _popen(cmd.str().c_str(), "r");
#else
FILE* pipe = popen(cmd.str().c_str(), "r");
#endif
if (!pipe) {
fs::remove(temp_rom, ec);
fs::remove(temp_symbols, ec);
@@ -421,9 +426,9 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
while (fgets(buffer.data(), buffer.size(), pipe) != nullptr) {
output += buffer.data();
}
#ifndef _WIN32
int exit_status = pclose(pipe);
int exit_code = exit_status;
#ifndef _WIN32
if (exit_status != -1) {
if (WIFEXITED(exit_status)) {
exit_code = WEXITSTATUS(exit_status);
@@ -431,6 +436,8 @@ absl::StatusOr<AsarPatchResult> AsarWrapper::ApplyPatchWithBinary(
exit_code = 128 + WTERMSIG(exit_status);
}
}
#else
int exit_code = _pclose(pipe);
#endif
if (!patch_dir.empty()) {

View File

@@ -221,7 +221,13 @@ absl::StatusOr<std::string> VersionManager::RunCommandOutput(const std::string&
std::array<char, 128> buffer;
std::string result;
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(full_cmd.c_str(), "r"), pclose);
#ifdef _WIN32
std::unique_ptr<FILE, decltype(&_pclose)> pipe(_popen(full_cmd.c_str(), "r"),
_pclose);
#else
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(full_cmd.c_str(), "r"),
pclose);
#endif
if (!pipe) {
return absl::InternalError("popen() failed!");
}

View File

@@ -15,6 +15,7 @@ service EmulatorService {
// --- Input & State ---
rpc PressButtons(ButtonRequest) returns (CommandResponse);
rpc ReleaseButtons(ButtonRequest) returns (CommandResponse);
rpc HoldButtons(ButtonHoldRequest) returns (CommandResponse);
rpc GetGameState(GameStateRequest) returns (GameStateResponse);
rpc ReadMemory(MemoryRequest) returns (MemoryResponse);
@@ -263,4 +264,4 @@ message TestRunResponse {
string message = 2;
CPUState final_cpu_state = 3;
bool crashed = 4;
}
}