Optimize GH Actions#111
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR optimizes GitHub Actions by implementing Docker image caching to avoid redundant builds, and adds comprehensive support for Retroid Pocket devices (Pocket 5, Flip 2, Mini V1/V2) running LessOS.
Key Changes:
- Optimized CI/CD: Docker image caching using GHCR to skip redundant builds when Dockerfile hasn't changed
- Retroid platform support: Full platform implementation with SDL2 rendering, libudev input discovery, and device variant detection
- Dynamic input discovery: Introduced shared
udev_inputmodule for robust input device enumeration across LessOS platforms
Reviewed changes
Copilot reviewed 68 out of 73 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/qa.yml |
Implements Docker image caching strategy with GHCR registry |
Makefile.qa |
Adds docker-pull target to fetch prebuilt images from GHCR |
workspace/retroid/* |
Complete platform implementation for Retroid Pocket devices |
workspace/all/common/udev_input.* |
New shared module for libudev-based input device discovery |
workspace/rgb30/platform/* |
Migrated from hardcoded input paths to libudev |
workspace/*/show/show.c |
Unified SDL_Renderer-based boot splash implementation |
workspace/all/paks/Emus/cores.json |
Added SwanStation PS1 core for ARM64 devices |
| Various config files | Added Retroid-specific scaling configs and platform support |
Comments suppressed due to low confidence (9)
workspace/tg5040/show/show.c:1
- The destination rectangle in
SDL_RenderCopyExappears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
workspace/rgb30/show/show.c:1 - The destination rectangle in
SDL_RenderCopyExappears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
workspace/rg35xxplus/show/show.c:1 - The destination rectangle in
SDL_RenderCopyExappears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
workspace/retroid/show/show.c:1 - The destination rectangle in
SDL_RenderCopyExappears incorrect. When rotating 270° CCW, setting x=0, y=w, width=w, height=h would place the rotated content partially offscreen. For a 270° rotation, the destination should likely be {0, 0, h, w} (swapping width and height) to properly fit the rotated content within the display bounds.
workspace/all/utils/keymon/keymon.c:1 - Unnecessary blank line after button state update. This blank line creates inconsistent spacing compared to the similar pattern for the L1 button handler immediately below, where no blank line appears after the state update.
workspace/all/utils/keymon/keymon.c:1 - Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
workspace/all/utils/keymon/keymon.c:1 - Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
workspace/all/utils/keymon/keymon.c:1 - Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
workspace/all/utils/keymon/keymon.c:1 - Unnecessary blank line after button state update. This creates inconsistent spacing within the button handling logic.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Avoids rebuilding the dev container on every CI run by: - Adding docker-build job that hashes Dockerfile and checks GHCR - Only builds/pushes when the image doesn't exist for that hash - lint/analyze/test jobs pull the prebuilt image from GHCR Makefile.qa now pulls from GHCR by default. Use FORCE_DOCKER_BUILD=1 to build locally when iterating on the Dockerfile.
Use matrix strategy to build miyoomini and tg5040 concurrently. Changed from trimuismart to tg5040 for better code coverage.
c1ec8a0 to
78c9acc
Compare
Use project's sdl.h wrapper instead of <SDL.h> directly. The wrapper handles SDL1 vs SDL2 include paths correctly (<SDL2/SDL.h> vs <SDL/SDL.h>).
78c9acc to
9277838
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR optimizes GitHub Actions by implementing Docker image caching to avoid redundant builds.