Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
1da639d
amiga: split OS compatibility layer
reinauer May 21, 2026
e24328c
amiga: hide OS target conditionals
reinauer May 21, 2026
1e72834
amiga: scaffold OS4 vector frontend
reinauer May 21, 2026
241dcf0
amiga: map OS4 vectors to shared operations
reinauer May 21, 2026
f2a0277
amiga: finish read-only OS4 vector stubs
reinauer May 21, 2026
fff73ce
amiga: implement OS4 directory examine vector
reinauer May 21, 2026
e7f6199
amiga: tighten Amiga build configuration
reinauer Jun 12, 2026
3b73730
amiga: publish OS4 vector port as the handler port
reinauer Jun 12, 2026
01e0317
amiga: route OS4 serial debug logging through DebugPrintF
reinauer Jun 12, 2026
dfd86b1
amiga: exit the packet loop on OS4 ACTION_SHUTDOWN
reinauer Jun 12, 2026
ad16a04
amiga: fix OS4 media-change interrupt calling convention
reinauer Jun 12, 2026
3bab958
amiga: allocate DOS list nodes through the sys_compat boundary
reinauer Jun 12, 2026
81b33c5
amiga: serialize OS4 vector callbacks and emulate direct packets
reinauer Jun 12, 2026
af1dcbe
amiga: add freestanding OS4 handler startup
reinauer Jun 13, 2026
dd2453c
amiga: keep media state per handler
reinauer Jun 13, 2026
ca688c0
amiga: probe OS4 CD units before mounting
reinauer Jun 13, 2026
1f9f6d4
amiga: allocate OS4 locks through DOS
reinauer Jun 13, 2026
1143853
amiga: complete OS4 Workbench vector semantics
reinauer Jun 13, 2026
7bc6501
amiga: keep OS4 packets on classic dispatcher
reinauer Jun 14, 2026
62bf45b
amiga: use caller-owned IO requests for OS4 reads
reinauer Jun 14, 2026
bd06967
docs: document AmigaOS 3 and 4 builds
reinauer Jun 14, 2026
da5db58
ci: build AmigaOS 4 handler artifacts
reinauer Jun 14, 2026
d0b8e3f
release: publish AmigaOS 4 handler artifacts
reinauer Jun 14, 2026
5804d8d
amiga: cache OS4 vector read IO requests
reinauer Jun 16, 2026
ed163ee
amiga: examine OS4 vector objects without locks
reinauer Jun 16, 2026
ac42550
amiga: share node metadata formatting
reinauer Jun 16, 2026
a5f0875
amiga: remove unused OS4 vector packet API
reinauer Jun 16, 2026
90df62d
amiga: inline trivial compat field helpers
reinauer Jun 16, 2026
9bbc151
core: batch contiguous file reads
reinauer Jun 16, 2026
5311650
amiga: cache OS3 ExNext resume offsets
reinauer Jun 16, 2026
9dc14e8
core: pool namefix scan allocations
reinauer Jun 16, 2026
1324227
core: hash block cache lookups
reinauer Jun 16, 2026
6cb0410
amiga: cache parent ancestors on objects
reinauer Jun 16, 2026
e544717
amiga: update volume lock lists incrementally
reinauer Jun 16, 2026
13e5d78
build: raise ROM profile size limit
reinauer Jun 16, 2026
e8e95b5
ci: publish Aminet release packages
reinauer Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions .github/workflows/aminet-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: Publish Aminet releases

on:
release:
types: [published]

permissions:
contents: read

jobs:
build-amigaos3:
name: Build AmigaOS 3 Aminet upload
if: ${{ !github.event.release.prerelease && startsWith(github.event.release.tag_name, 'v') }}
runs-on: ubuntu-latest
container: stefanreinauer/amiga-gcc:gcc-v13.3

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
fetch-depth: 0

- name: Mark git directory as safe
run: git config --global --add safe.directory '*'

- name: Build AmigaOS 3 archive
env:
ODFS_GIT_VERSION: ${{ github.event.release.tag_name }}
run: make amigaos3-lha

- name: Prepare AmigaOS 3 Aminet upload files
run: |
set -eu
mkdir -p dist
cp build/amiga/ODFileSystem.lha dist/ODFileSystem.lha
cp docs/ODFileSystem.readme dist/ODFileSystem.readme

- name: Upload AmigaOS 3 Aminet artifact
uses: actions/upload-artifact@v4
with:
name: aminet-os3-upload
path: |
dist/ODFileSystem.lha
dist/ODFileSystem.readme
if-no-files-found: error

build-amigaos4:
name: Build AmigaOS 4 Aminet upload
if: ${{ !github.event.release.prerelease && startsWith(github.event.release.tag_name, 'v') }}
runs-on: ubuntu-latest
container: stefanreinauer/amigappc-gcc

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
fetch-depth: 0

- name: Mark git directory as safe
run: git config --global --add safe.directory '*'

- name: Check AmigaOS 4 compiler
run: |
command -v ppc-amigaos-gcc
ppc-amigaos-gcc -dumpmachine

- name: Build AmigaOS 4 archive
env:
ODFS_GIT_VERSION: ${{ github.event.release.tag_name }}
run: |
make amigaos4-lha \
CC=ppc-amigaos-gcc \
AMIGA_BUILD=build/amigaos4 \
AMIGA_TEST_BUILD=build/amigaos4-test

- name: Prepare AmigaOS 4 Aminet upload files
run: |
set -eu
mkdir -p dist
cp build/amigaos4/ODFileSystem-amigaos4.lha \
dist/ODFileSystem-amigaos4.lha
cp docs/ODFileSystem_OS4.readme dist/ODFileSystem_OS4.readme

- name: Upload AmigaOS 4 Aminet artifact
uses: actions/upload-artifact@v4
with:
name: aminet-os4-upload
path: |
dist/ODFileSystem-amigaos4.lha
dist/ODFileSystem_OS4.readme
if-no-files-found: error

publish:
name: Upload to Aminet
needs:
- build-amigaos3
- build-amigaos4
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Download AmigaOS 3 Aminet artifact
uses: actions/download-artifact@v4
with:
name: aminet-os3-upload
path: dist/os3

- name: Download AmigaOS 4 Aminet artifact
uses: actions/download-artifact@v4
with:
name: aminet-os4-upload
path: dist/os4

- name: Upload AmigaOS 3 package to Aminet
id: aminet-os3
uses: sidick/aminet-release-action@v1
with:
filename: dist/os3/ODFileSystem.lha
readme: dist/os3/ODFileSystem.readme
category: disk/cdrom
inject-version: true

- name: Upload AmigaOS 4 package to Aminet
id: aminet-os4
uses: sidick/aminet-release-action@v1
with:
filename: dist/os4/ODFileSystem-amigaos4.lha
readme: dist/os4/ODFileSystem_OS4.readme
category: disk/cdrom
inject-version: true
40 changes: 40 additions & 0 deletions .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ jobs:
- name: Build ROM test profile
run: make rom-test

- name: Build AmigaOS 3 archive
run: make amigaos3-lha

- name: Upload CI artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -52,5 +55,42 @@ jobs:
build/amiga-test/ODFileSystem
build/amiga-rom/ODFileSystem
build/amiga-rom-test/ODFileSystem
build/amiga/ODFileSystem.lha
build/host/tools/
if-no-files-found: error

build-amigaos4:
runs-on: ubuntu-latest
container: stefanreinauer/amigappc-gcc

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Mark git directory as safe
run: git config --global --add safe.directory '*'

- name: Check AmigaOS 4 compiler
run: |
command -v ppc-amigaos-gcc
ppc-amigaos-gcc -dumpmachine

- name: Build AmigaOS 4 handlers and archive
run: |
make amigaos4-lha \
CC=ppc-amigaos-gcc \
AMIGA_BUILD=build/amigaos4 \
AMIGA_TEST_BUILD=build/amigaos4-test

- name: Upload AmigaOS 4 CI artifacts
uses: actions/upload-artifact@v4
with:
name: odfilesystem-amigaos4-build
path: |
build/amigaos4/ODFileSystem
build/amigaos4/CDFileSystem
build/amigaos4-test/ODFileSystem
build/amigaos4-test/CDFileSystem
build/amigaos4/ODFileSystem-amigaos4.lha
if-no-files-found: error
112 changes: 94 additions & 18 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ env:
RELEASE_REF: ${{ github.event_name == 'workflow_dispatch' && format('refs/tags/{0}', github.event.inputs.tag) || github.ref }}

jobs:
build:
name: Build release artifacts
build-amigaos3:
name: Build AmigaOS 3 release artifacts
runs-on: ubuntu-latest
container: stefanreinauer/amiga-gcc:gcc-v13.3

Expand All @@ -44,15 +44,12 @@ jobs:
- name: Mark git directory as safe
run: git config --global --add safe.directory '*'

- name: Build release artifacts
- name: Build AmigaOS 3 release artifacts
env:
ODFS_GIT_VERSION: ${{ env.RELEASE_TAG }}
run: |
make amiga
make amiga-test
make amigaos3-lha
make adf
make rom
make rom-test

- name: Collect release files
run: |
Expand All @@ -63,30 +60,103 @@ jobs:
cp build/amiga-rom/ODFileSystem dist/ODFileSystem-rom
cp build/amiga-rom-test/ODFileSystem dist/ODFileSystem-rom-test
cp build/amiga-test/ODFileSystem.adf dist/ODFileSystem.adf
cp build/amiga/ODFileSystem.lha dist/ODFileSystem.lha

- name: Upload release artifacts
- name: Upload AmigaOS 3 release artifacts
uses: actions/upload-artifact@v4
with:
name: release-artifacts
name: amigaos3-release-artifacts
path: |
dist/ODFileSystem
dist/ODFileSystem-test
dist/ODFileSystem-rom
dist/ODFileSystem-rom-test
dist/ODFileSystem.adf
dist/ODFileSystem.lha
if-no-files-found: error

build-amigaos4:
name: Build AmigaOS 4 release artifacts
runs-on: ubuntu-latest
container: stefanreinauer/amigappc-gcc

steps:
- name: Validate release tag
run: |
case "${RELEASE_TAG}" in
v*) ;;
*)
echo "Release tag must start with v: ${RELEASE_TAG}" >&2
exit 1
;;
esac

- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ env.RELEASE_REF }}

- name: Mark git directory as safe
run: git config --global --add safe.directory '*'

- name: Check AmigaOS 4 compiler
run: |
command -v ppc-amigaos-gcc
ppc-amigaos-gcc -dumpmachine

- name: Build AmigaOS 4 release artifacts
env:
ODFS_GIT_VERSION: ${{ env.RELEASE_TAG }}
run: |
make amigaos4-lha \
CC=ppc-amigaos-gcc \
AMIGA_BUILD=build/amigaos4 \
AMIGA_TEST_BUILD=build/amigaos4-test

- name: Collect AmigaOS 4 release files
run: |
set -eu
mkdir -p dist
cp build/amigaos4/ODFileSystem dist/ODFileSystem-amigaos4
cp build/amigaos4/CDFileSystem dist/CDFileSystem
cp build/amigaos4-test/ODFileSystem \
dist/ODFileSystem-amigaos4-test
cp build/amigaos4-test/CDFileSystem dist/CDFileSystem-test
cp build/amigaos4/ODFileSystem-amigaos4.lha \
dist/ODFileSystem-amigaos4.lha

- name: Upload AmigaOS 4 release artifacts
uses: actions/upload-artifact@v4
with:
name: amigaos4-release-artifacts
path: |
dist/ODFileSystem-amigaos4
dist/CDFileSystem
dist/ODFileSystem-amigaos4-test
dist/CDFileSystem-test
dist/ODFileSystem-amigaos4.lha
if-no-files-found: error

release:
name: Create GitHub draft release
runs-on: ubuntu-latest
needs: build
needs:
- build-amigaos3
- build-amigaos4

steps:
- name: Download build artifacts
- name: Download AmigaOS 3 build artifacts
uses: actions/download-artifact@v4
with:
name: amigaos3-release-artifacts
path: artifacts/amigaos3

- name: Download AmigaOS 4 build artifacts
uses: actions/download-artifact@v4
with:
name: release-artifacts
path: artifacts
name: amigaos4-release-artifacts
path: artifacts/amigaos4

- name: Create draft release
uses: softprops/action-gh-release@v2
Expand All @@ -96,8 +166,14 @@ jobs:
draft: true
generate_release_notes: true
files: |
artifacts/ODFileSystem
artifacts/ODFileSystem-test
artifacts/ODFileSystem-rom
artifacts/ODFileSystem-rom-test
artifacts/ODFileSystem.adf
artifacts/amigaos3/ODFileSystem
artifacts/amigaos3/ODFileSystem-test
artifacts/amigaos3/ODFileSystem-rom
artifacts/amigaos3/ODFileSystem-rom-test
artifacts/amigaos3/ODFileSystem.adf
artifacts/amigaos3/ODFileSystem.lha
artifacts/amigaos4/ODFileSystem-amigaos4
artifacts/amigaos4/CDFileSystem
artifacts/amigaos4/ODFileSystem-amigaos4-test
artifacts/amigaos4/CDFileSystem-test
artifacts/amigaos4/ODFileSystem-amigaos4.lha
Loading
Loading