mirror of
https://github.com/suyu-emu/suyu-os.git
synced 2026-09-21 14:17:54 -07:00
engine=spotless
nb_files_neither_included_nor_excluded: 2 nb_files_formatted: 1 eventKey: random-45d83b03-63da-4530-b466-88f233119e60
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
# suyuOS Build Disk Space Optimization
|
||||
|
||||
## Problem
|
||||
|
||||
The GitHub Actions workflow was failing with "No space left on device" errors during the suyuOS ISO build process. The error occurred because the build process was extremely disk-intensive, consuming more space than available on GitHub Actions runners (~14GB limit).
|
||||
|
||||
## Root Causes
|
||||
|
||||
1. **Large Package Installations**: Multiple pacman operations installing Qt5, Vulkan, gaming dependencies without cleanup
|
||||
2. **Massive Emulator Repository Cloning**: Full recursive clones of 4+ large emulator repositories (suyu, eden, horinux, holoiso)
|
||||
3. **Intensive Pre-building**: Full compilation of multiple emulators during CI, consuming several GB
|
||||
@@ -14,34 +16,40 @@ The GitHub Actions workflow was failing with "No space left on device" errors du
|
||||
## Implemented Solutions
|
||||
|
||||
### 1. Comprehensive Disk Space Monitoring
|
||||
|
||||
- Added disk usage reporting functions that show space consumption at each major step
|
||||
- Implemented memory usage monitoring
|
||||
- Added cleanup functions for pacman cache and temporary files
|
||||
- Integrated monitoring throughout the entire workflow
|
||||
|
||||
### 2. Optimized Package Management
|
||||
|
||||
- **Consolidated Installations**: Combined multiple pacman operations into fewer, more efficient calls
|
||||
- **Progressive Cleanup**: Added cache cleanup after each package installation phase
|
||||
- **Conditional Dependencies**: Gaming dependencies only installed for release builds
|
||||
- **Efficient Flags**: Used `--needed` flag to avoid reinstalling existing packages
|
||||
|
||||
### 3. Revolutionary Emulator Build Strategy
|
||||
|
||||
- **Eliminated Pre-building**: Replaced massive emulator compilation with lightweight build script preparation
|
||||
- **Source References**: Created URL reference files instead of full repository clones
|
||||
- **Deferred Building**: Moved actual emulator compilation to post-ISO creation or made it optional
|
||||
- **Minimal Testing Clones**: Only clone small repositories for debug/testing builds
|
||||
|
||||
### 4. Optimized Build Environment
|
||||
|
||||
- **Efficient Working Directory**: Moved from `/tmp/suyuos-build` to `/workspace/suyuos-build-work` to avoid system conflicts
|
||||
- **Lightweight Source Copying**: Copy only build scripts and references instead of full source trees
|
||||
- **Progressive Cleanup**: Clean up intermediate files during the build process
|
||||
|
||||
### 5. Enhanced Build Process
|
||||
|
||||
- **Pre-build Cleanup**: Clean caches and temporary files before starting ISO build
|
||||
- **Better Error Handling**: Show disk usage and logs when build fails
|
||||
- **Post-build Cleanup**: Remove large working directories after successful build
|
||||
|
||||
### 6. Updated Build Scripts
|
||||
|
||||
- **Modernized build-emulators**: Updated to work with new lightweight approach
|
||||
- **Disk Space Awareness**: Added disk space checking in build scripts
|
||||
- **Graceful Fallbacks**: Create placeholder executables when builds fail due to space constraints
|
||||
@@ -50,6 +58,7 @@ The GitHub Actions workflow was failing with "No space left on device" errors du
|
||||
## Key Changes Made
|
||||
|
||||
### GitHub Actions Workflow (.github/workflows/build-iso.yml)
|
||||
|
||||
- Added comprehensive disk space monitoring functions
|
||||
- Optimized package installation with progressive cleanup
|
||||
- Replaced emulator cloning with lightweight source preparation
|
||||
@@ -59,12 +68,14 @@ The GitHub Actions workflow was failing with "No space left on device" errors du
|
||||
- Added post-build cleanup step
|
||||
|
||||
### Build Script (airootfs/usr/local/bin/build-emulators)
|
||||
|
||||
- Updated to work with prepared build scripts instead of full clones
|
||||
- Added disk space checking and cleanup functions
|
||||
- Implemented graceful fallbacks for failed builds
|
||||
- Optimized for space-constrained environments
|
||||
|
||||
## Expected Results
|
||||
|
||||
1. **Reduced Disk Usage**: Build process should use 60-80% less disk space
|
||||
2. **Successful Builds**: Eliminate "No space left on device" errors
|
||||
3. **Maintained Functionality**: All suyuOS features preserved in final ISO
|
||||
@@ -73,19 +84,23 @@ The GitHub Actions workflow was failing with "No space left on device" errors du
|
||||
6. **Improved Reliability**: Better error handling and recovery
|
||||
|
||||
## Monitoring and Validation
|
||||
|
||||
- Disk usage is reported at each major step
|
||||
- Build logs include space consumption patterns
|
||||
- Failed builds show disk usage for debugging
|
||||
- Progressive cleanup ensures space is freed during build
|
||||
|
||||
## Backward Compatibility
|
||||
|
||||
- All existing suyuOS functionality is preserved
|
||||
- ISO structure and content remain unchanged
|
||||
- Build artifacts and release process unchanged
|
||||
- Emulator availability maintained (with fallbacks if needed)
|
||||
|
||||
## Future Improvements
|
||||
|
||||
- Consider using GitHub Actions with larger runners for complex builds
|
||||
- Implement build caching for repeated operations
|
||||
- Add automatic cleanup of old artifacts
|
||||
- Consider splitting build into multiple jobs for better resource management
|
||||
- Consider splitting build into multiple jobs for better resource management
|
||||
|
||||
|
||||
Reference in New Issue
Block a user