Skip to content

Fix Windows linker errors by adding missing source files #34

Fix Windows linker errors by adding missing source files

Fix Windows linker errors by adding missing source files #34

name: Create Release
on:
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g., v1.0.0)'
required: true
type: string
release_title:
description: 'Release title'
required: false
default: ''
type: string
release_notes:
description: 'Release notes (markdown supported)'
required: false
default: ''
type: string
prerelease:
description: 'Mark as pre-release'
required: false
default: false
type: boolean
jobs:
trigger-builds:
runs-on: ubuntu-latest
steps:
- name: Trigger Windows Build
uses: actions/github-script@v7
with:
script: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'build-windows.yml',
ref: 'main',
inputs: {
version: '${{ github.event.inputs.version }}'
}
});
- name: Trigger Linux Build
uses: actions/github-script@v7
with:
script: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: context.repo.repo,
workflow_id: 'build-linux.yml',
ref: 'main',
inputs: {
version: '${{ github.event.inputs.version }}'
}
});
- name: Wait for builds to complete
run: |
echo "Triggered Windows and Linux builds"
echo "Please wait for them to complete before running this workflow again"
echo "Or manually download artifacts from the individual build runs"
build-macos:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
brew install cmake qt@5
- name: Build macOS app bundle
run: |
export CMAKE_PREFIX_PATH="/opt/homebrew/opt/qt@5"
export FUJISAN_VERSION="${{ github.event.inputs.version }}"
./scripts/build-macos-release.sh --skip-sign --skip-notarize
- name: Upload macOS artifacts
uses: actions/upload-artifact@v4
with:
name: fujisan-macos-x64
path: |
dist/Fujisan-*.dmg
dist/Fujisan-*.dmg.sha256
retention-days: 30
create-draft-release:
needs: [trigger-builds, build-macos]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List downloaded artifacts
run: |
echo "=== Downloaded Artifacts ==="
find artifacts -type f -exec ls -lh {} \;
- name: Generate release notes
id: release_notes
run: |
VERSION="${{ github.event.inputs.version }}"
TITLE="${{ github.event.inputs.release_title }}"
NOTES="${{ github.event.inputs.release_notes }}"
# Use provided title or generate default
if [ -z "$TITLE" ]; then
RELEASE_TITLE="Fujisan $VERSION"
else
RELEASE_TITLE="$TITLE"
fi
# Generate release notes
if [ -z "$NOTES" ]; then
# Auto-generate release notes from recent commits
COMMITS=$(git log --oneline --since="2 weeks ago" --pretty=format:"- %s (%h)" | head -10)
RELEASE_NOTES="## Fujisan $VERSION
### 🎮 Multi-Platform Atari 8-bit Emulator
Self-contained packages with no external dependencies required.

Check failure on line 134 in .github/workflows/create-release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/create-release.yml

Invalid workflow file

You have an error in your yaml syntax on line 134
### 📦 Downloads
**Choose your platform:**
- **Windows**: \`Fujisan-*-Windows-x64.msi\` - MSI installer for Windows 10/11
- **macOS**: \`Fujisan-*-macOS.dmg\` - DMG installer for macOS 11.0+
- **Linux**:
- \`fujisan_*_amd64.deb\` - Debian/Ubuntu package
- \`fujisan-*-linux-x64.tar.gz\` - Portable archive
### ✅ What's Included
- **Complete Atari 8-bit emulation** (400/800/XL/XE)
- **Modern Qt5 interface** with file management
- **Network debugging support** via TCP server
- **Disk image support** (.atr, .xfd)
- **All dependencies bundled** - just install and run!
### 🛠️ Technical Details
- Built with Qt5 and libatari800
- Supports Atari BASIC and modern disk formats
- Cross-platform compatibility
- No external ROMs or libraries required
### 📋 Recent Changes
$COMMITS
### 🔐 Verification
Each download includes SHA256 checksums for integrity verification.
---
**Need help?** Visit the [GitHub repository](https://github.com/8bitrelics/fujisan) for documentation and support."
else
RELEASE_NOTES="$NOTES"
fi
# Save for next step
echo "release_title=$RELEASE_TITLE" >> $GITHUB_OUTPUT
echo "release_notes<<EOF" >> $GITHUB_OUTPUT
echo "$RELEASE_NOTES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.version }}
release_name: ${{ steps.release_notes.outputs.release_title }}
body: ${{ steps.release_notes.outputs.release_notes }}
draft: true
prerelease: ${{ github.event.inputs.prerelease }}
- name: Upload Windows MSI
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-windows-x64/Fujisan-*-Windows-x64.msi
asset_name: Fujisan-${{ github.event.inputs.version }}-Windows-x64.msi
asset_content_type: application/x-msi
- name: Upload Windows MSI Checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-windows-x64/Fujisan-*-Windows-x64.msi.sha256
asset_name: Fujisan-${{ github.event.inputs.version }}-Windows-x64.msi.sha256
asset_content_type: text/plain
- name: Upload Linux DEB
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-linux-x64/fujisan_*_amd64.deb
asset_name: fujisan_${{ github.event.inputs.version }}_amd64.deb
asset_content_type: application/vnd.debian.binary-package
- name: Upload Linux DEB Checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-linux-x64/fujisan_*_amd64.deb.sha256
asset_name: fujisan_${{ github.event.inputs.version }}_amd64.deb.sha256
asset_content_type: text/plain
- name: Upload Linux TAR.GZ
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-linux-x64/fujisan-*-linux-x64.tar.gz
asset_name: fujisan-${{ github.event.inputs.version }}-linux-x64.tar.gz
asset_content_type: application/gzip
- name: Upload Linux TAR.GZ Checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-linux-x64/fujisan-*-linux-x64.tar.gz.sha256
asset_name: fujisan-${{ github.event.inputs.version }}-linux-x64.tar.gz.sha256
asset_content_type: text/plain
- name: Upload macOS DMG
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-macos-x64/Fujisan-*-macOS.dmg
asset_name: Fujisan-${{ github.event.inputs.version }}-macOS.dmg
asset_content_type: application/x-apple-diskimage
- name: Upload macOS DMG Checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: artifacts/fujisan-macos-x64/Fujisan-*-macOS.dmg.sha256
asset_name: Fujisan-${{ github.event.inputs.version }}-macOS.dmg.sha256
asset_content_type: text/plain
- name: Display release summary
run: |
echo "🎉 Draft Release Created Successfully!"
echo ""
echo "📝 Release Details:"
echo " Version: ${{ github.event.inputs.version }}"
echo " Title: ${{ steps.release_notes.outputs.release_title }}"
echo " Draft: Yes (ready for testing)"
echo " Pre-release: ${{ github.event.inputs.prerelease }}"
echo ""
echo "📦 Assets Included:"
echo " ✅ Windows MSI installer + checksum"
echo " ✅ Linux DEB package + checksum"
echo " ✅ Linux TAR.GZ portable + checksum"
echo " ✅ macOS DMG installer + checksum"
echo ""
echo "🔗 Release URL: ${{ steps.create_release.outputs.html_url }}"
echo ""
echo "📋 Next Steps:"
echo " 1. Visit the release URL above"
echo " 2. Download and test each platform's binaries"
echo " 3. Edit release notes if needed"
echo " 4. Publish the release when ready"