Skip to content

Automated release Packaging withj guthub acty + arm64 target for macOS - #7

Open
youenchene wants to merge 21 commits into
ronybeck:mainfrom
youenchene:main
Open

youenchene wants to merge 21 commits into
ronybeck:mainfrom
youenchene:main

Conversation

@youenchene

Copy link
Copy Markdown
Contributor

Because Mac OS 27 will make X86 packages deprecated I use some AI to add :

  • github action for automated packaging
  • mac os arm64 target
  • mac os permission fix on mate os package.
  • small fix on 1.4 showing invalid inexistent Amiga.

Test on macos (not on Linux and windows).

youenchene and others added 21 commits September 23, 2026 07:55
…ients

macOS support for x86_64-only apps is going away, so CI now produces a
single universal .app covering both Apple Silicon and Intel Macs (Qt's
official macOS package has shipped universal since Qt 6.2). Linux and
Windows client builds are added alongside it so all existing targets
get automated builds too, uploaded as workflow artifacts on every
push/PR and attached to GitHub Releases on version tags.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Keeps ad-hoc signing for now; leaves a placeholder noting the
Apple Developer ID cert + notarytool steps needed to sign for real later.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
aqtinstall cannot resolve Updates.xml for any Qt 6.11.x version on Windows
targets, because Qt restructured its Windows repo layout starting at 6.11.0
(added an arm64 cross-compile variant folder). macOS and Linux repos were
not restructured, so they stay on 6.11.1.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ortability

char indexedImageData[width * height] is a GCC/Clang extension (VLA),
not standard C++, and cl.exe rejects it outright. The resulting parse
error cascaded into bogus "undeclared identifier" errors for the rest
of the translation unit, breaking the Windows CI build. GCC/Clang
silently accepted the VLA, so this never surfaced on macOS/Linux.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
__attribute__((packed)) is a GCC/Clang-only extension. cl.exe doesn't
recognize it and fails to parse it as an attribute at all, producing
"'packed': undeclared identifier" and cascading syntax errors through
the rest of the header (and everywhere it's included), which is what
broke the Windows CI build.

Introduce AMIGA_PACKED / AMIGA_PACKED_STRUCT_BEGIN/END macros that
expand to __attribute__((packed)) on GCC/Clang and to #pragma
pack(push, 1)/pack(pop) on MSVC, preserving the same tightly-packed
wire-format layout needed to parse Amiga .info files on all three
compilers. IconType_t's packed attribute is dropped outright since
it's never used as a struct field (only as a value type in
getType()/setType()), so it has no effect on the parsed layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ls logging macros

__PRETTY_FUNCTION__ is a GCC/Clang extension and doesn't exist under MSVC,
breaking the Windows CI build. __FUNCSIG__ is the MSVC equivalent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ash is an interactive terminal client built on tcsetattr, STDIN_FILENO,
and raw non-blocking read() from termios.h/unistd.h, none of which
exist on Windows. It was never built by build_windows_client.ps1
either, so this doesn't remove Windows support that used to work.
Porting its raw terminal handling to the Windows Console API would be
a separate, larger effort.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ash/main.cpp used POSIX-only termios raw mode, isatty, and fcntl-based
non-blocking reads to drive its interactive shell, none of which exist
on MSVC. Add a Windows path using conio.h's _getch() for unbuffered,
unechoed keystroke reads (which needs no raw-mode toggling), _isatty
for the TTY check, and _write for the SIGINT handler. Windows arrow/
function keys arrive as a 0/0xE0-prefixed two-byte sequence instead of
an ANSI escape sequence, so they're swallowed in readInteractiveByte()
rather than via the POSIX ESC-sequence discard path.

Also guard the acp file transfer progress bars' unistd.h include
(needed only for the already-guarded ioctl/TIOCGWINSZ terminal-width
lookup) so it doesn't pull in a header MSVC doesn't have.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Only used for the ioctl/TIOCGWINSZ terminal-width lookup, which is
already gated behind #if __linux__ || __APPLE__ a few lines below, but
the #include itself was left unconditional, so cl.exe still tried (and
failed) to find unistd.h. fileuploader.cpp already guards this
correctly; bring filedownloader.cpp in line with it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Same issue as filedownloader.cpp: unistd.h is POSIX-only and must not
be included when building with MSVC.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bridges the project's non-standard ndk32-include/Include_H path
expected by Amiga/Makefile onto the standard ndk-include layout
produced by `make ndk`. Marked continue-on-error since the resulting
binary hasn't been verified on real hardware/FS-UAE yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The CI run confirmed github.com/bebbo/amiga-gcc now 404s; the
project's canonical home is codeberg.org/bebbo/amiga-gcc.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI hit a classic parallel-make race: concurrent recursive make jobs
generating libnix's export-libnix4.c wrote duplicate stub entries,
causing "redefinition of ..." compile errors. Dropping -j makes the
one-time toolchain build slower but reliable; actions/cache means it
only runs on a cache miss.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
make min (binutils gcc gprof libnix libgcc libnix4.library) fails
deterministically, not from -j: upstream's libnix4-support generator
emits a duplicate __vfwprintf_total_size stub, breaking
export-libnix4.c regardless of parallelism. libnix4.library builds a
shared-library variant of libnix that Amiga/Makefile never links
against (it uses -noixemul, plain static libnix), so build min's
other pieces directly instead of the aggregate target, restoring -j
now that the failure is confirmed unrelated to parallel make.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Amiga/Makefile's first (default) target is just the server binary
(ApolloExplorerSrv); Willem's own workflow always runs `make all` to
also get ApolloExplorerTool. Toolchain now builds cleanly end-to-end
(binutils/gcc/libnix/ndk/netinclude/libamiga all succeeded last run),
so this was the last blocker before the whole job - and its
toolchain cache - can go green.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… Amiga package

Same files as the upstream 1.1.3 release 'Amiga Server' folder.
QSettings fallbacks made childGroups() of the static-hosts settings include the
global preferences domain (com.apple.* keys -> group 'com'), which was turned
into a host named INVALID with no address. Disable fallbacks and skip any
group that is not an IP address.
…e Qt DLLs in the Windows package

upload-artifact@v7 archive:false makes the download the package itself.
The Windows zip only had the two .exe files: windeployqt now deploys the
Qt DLLs, plugins and MSVC runtime into the packaged folder.
Add CI builds for macOS (universal arm64+x86_64), Linux, and Windows
@ronybeck

Copy link
Copy Markdown
Owner

This is a wonderful contribution with lots of useful changes.
But I can't accept this in it's entirety because the patch changes too many things in one pull request.
Ideally, a pull request should fix/change one issue. Otherwise it makes it too hard to identify the root cause if something breaks due to a PR. Also, the review effort is much higher.

If it is ok, I would like to cherry pick individual changes.

@youenchene

Copy link
Copy Markdown
Contributor Author

No problem.

2 intents in this PR :

  • github action packaging adding arm 64
  • invalid inexistant amiga showing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants