6.1 KiB
Suyu Build Scripts
This directory contains utility scripts to help with building and maintaining the Suyu project.
Vcpkg Build Fix Scripts
fix-vcpkg-build.ps1 (Recommended)
Comprehensive automated script that resolves vcpkg build issues:
- Cleans existing boost installations
- Clears vcpkg cache and buildtrees
- Reinstalls dependencies in correct order
- Provides troubleshooting guidance
Usage:
.\scripts\fix-vcpkg-build.ps1
clean-boost.ps1
Specialized script for cleaning boost components only:
- Removes all boost packages using boost-uninstall
- Useful for boost-specific issues
Usage:
.\scripts\clean-boost.ps1
clean-boost.bat
Batch file version of the boost cleanup script for environments without PowerShell.
Usage:
scripts\clean-boost.bat
Common Issues Resolved
Missing vcpkg-cmake Configuration Files
Error: include could not find requested file: vcpkg-cmake/vcpkg-port-config.cmake
Solution: Run fix-vcpkg-build.ps1 to install dependencies in correct order
Boost Version Conflicts
Error: no version database entry for boost-cobalt at 1.80.0
Solution: Run clean-boost.ps1 then reinstall with vcpkg install
Build Cache Issues
Error: Various build failures after vcpkg updates
Solution: Use fix-vcpkg-build.ps1 to clean cache and reinstall
Other Scripts
sync_forgejo_issues.py
Synchronizes issues between GitHub and Forgejo repositories.
test_connection.py / test_forgejo_connection.py
Network connectivity testing utilities.
For More Information
See ../VCPKG_BUILD_FIX.md for detailed documentation of vcpkg build fixes and troubleshooting steps.
Forgejo to GitHub Issue Sync
This directory also contains scripts and workflows to synchronize issues from a Forgejo repository to GitHub.
Overview
The issue sync system addresses the problem of keeping GitHub issues in sync with a Forgejo repository.
🔧 Recent Fix (Issue #29):
- Fixed 403 Forbidden error by switching from web scraping to Forgejo REST API
- Corrected malformed GitHub API URL
- Added proper authentication handling for both public and private repositories
- Improved error handling and logging with emoji indicators
- Added comprehensive duplicate detection
- Implemented rate limiting to prevent API abuse
Files
sync_forgejo_issues.py- Standalone Python script for syncing issues../.github/workflows/clone-issues.yml- GitHub Actions workflow for automated syncing
Features
- ✅ API-based: Uses Forgejo REST API instead of unreliable web scraping
- ✅ Duplicate detection: Prevents creating duplicate issues
- ✅ Rate limiting: Includes delays to avoid API rate limits
- ✅ Error handling: Robust error handling with informative messages
- ✅ Authentication: Supports both authenticated and public access
- ✅ Attribution: Clearly marks imported issues with source information
- ✅ Label preservation: Maintains original labels and adds import tag
Setup
GitHub Secrets
Configure the following secrets in your GitHub repository:
-
Required:
GITHUB_TOKEN- GitHub Personal Access Token withreposcope
-
Optional:
FORGEJO_TOKEN- Forgejo access token (only needed for private repositories)
Environment Variables
The script uses these environment variables:
FORGEJO_URL- Forgejo API endpoint (e.g.,https://git.suyu.dev/api/v1/repos/suyu/suyu/issues)FORGEJO_TOKEN- Forgejo access token (optional for public repos)GITHUB_REPOSITORY- Target GitHub repository (e.g.,owner/repo)GITHUB_TOKEN- GitHub access token
Usage
Automated Sync (GitHub Actions)
The workflow runs automatically:
- Daily at midnight UTC
- Manual trigger via GitHub Actions UI
To modify the schedule, edit .github/workflows/clone-issues.yml and change the cron expression.
Manual Sync (Standalone Script)
-
Install dependencies:
pip install requests -
Set environment variables:
export FORGEJO_URL="https://git.suyu.dev/api/v1/repos/suyu/suyu/issues" export GITHUB_REPOSITORY="suyu-emu/suyu" export GITHUB_TOKEN="your_github_token_here" # Optional: export FORGEJO_TOKEN="your_forgejo_token_here" -
Run the script:
python scripts/sync_forgejo_issues.py
Troubleshooting
Common Issues
-
403 Forbidden Error
- The script will automatically retry without authentication for public repositories
- For private repositories, ensure
FORGEJO_TOKENis set correctly
-
Rate Limiting
- The script includes automatic delays and rate limiting protection
- If you hit rate limits, the script will pause and continue
-
Duplicate Issues
- Issues are prefixed with
[Forgejo]to distinguish them - The script checks for both original and prefixed titles to avoid duplicates
- Issues are prefixed with
Configuration
Customizing the Forgejo URL
Update the FORGEJO_URL in .github/workflows/clone-issues.yml to point to your Forgejo instance:
env:
FORGEJO_URL: https://your-forgejo-instance.com/api/v1/repos/owner/repo/issues
Modifying Issue Format
To change how issues are formatted when imported, modify the create_github_issue function in the script:
- Change the title prefix (currently
[Forgejo]) - Modify the attribution message
- Add or remove labels
API Endpoints
The script uses these API endpoints:
- Forgejo:
GET /api/v1/repos/{owner}/{repo}/issues - GitHub:
GET /repos/{owner}/{repo}/issues(fetch existing)POST /repos/{owner}/{repo}/issues(create new)
Contributing
When modifying the sync script:
- Test changes with the standalone script first
- Update both the workflow and standalone script
- Update this documentation if needed
- Test with a small number of issues before full deployment
Issue Resolution
This implementation resolves the original issue #29 by:
- Using
https://git.suyu.dev/api/v1/repos/suyu/suyu/issuesinstead of the web interface - Handling 403 errors gracefully by falling back to unauthenticated requests for public repos