- Shell 71.5%
- Perl 23%
- C 5.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| tools | ||
| README.md | ||
OpenSSL on IRIX
Builds the newest upstream OpenSSL on IRIX 6.5.22 (MIPSpro 7.4, n32 ABI) inside an
emulated Indigo2 IP28 (IRIS), driven by a
Forgejo Actions runner with the labels irix, irix-65 and irix-mips.
How the workflow builds it
The guest has Perl 5.004 and SGI make, which cannot run OpenSSL's configure or build.
The runner container shares /share with the guest, so the work is split:
- Runner clones this repository and upstream OpenSSL, runs
Configurefor theirix-mips3-cctarget, and runs every Perl generator (make -k). tools/gen-irix-build.plturns the output ofmake -n allinto a plainshscript: one resumable step per compile or link (skipped if the object exists), witharcommand lines split below IRIX's 20 KB argument limit.- IRIX guest runs that script in the background (
irix-sh); the runner follows its log and fails the job on the first compile error or after 30 minutes without progress. tools/irix-smoke.shruns known-answer checks with the newapps/opensslin the guest.- The libraries, headers and
opensslbinary are collected into/share/artifacts/<tag>-irix-mips3.tar.gz.
A clean build is 1100+ compiles on one emulated CPU: expect about three hours.
What IRIX 6.5.22 needs
| Problem | Handling |
|---|---|
<stdint.h> needs C99 mode |
-c99 |
No C99 PRIX32, PRIu64, PRId64 in <inttypes.h> |
defined at configure time for n32 ("X", "llu", "lld") |
struct msghdr has no msg_flags unless _XOPEN_SOURCE=500 (which hides SGI APIs) |
no-dgram no-dtls no-quic: TLS over TCP only |
No NI_NUMERICHOST / getnameinfo declaration (libc has the function) |
per-file -DNI_NUMERICHOST=2 for apps/s_server.c |
No C99 va_copy |
per-file -Dva_copy(d,s)=((d)=(s)) for apps/lib/log.c and crypto/bio/bio_print.c (n32 va_list is a pointer) |
libc snprintf ignores %zu |
only cosmetic: openssl version -a prints bn( for its bignum options, and the BIO debug callback text is cut short |
The build uses no-asm, no-shared, no-tests, no-docs and -O1.
Run it
Actions, then "OpenSSL on IRIX", then "Run workflow". ref is an upstream tag or branch;
the default latest picks the newest openssl-X.Y.Z tag. It also runs on a push to
tools/ or the workflow, and weekly.
The last verified build is openssl-4.1.0.
Published package
Every successful run uploads the package to the Forgejo package registry of the irix
organisation, as the generic package openssl_modern (a version and latest):
https://git.stei.gr/irix/-/packages/generic/openssl_modern/latest. Download the .tardist from there
and install it with inst as below; it does not need the runner's /share/artifacts.
The upload uses the organisation secret PACKAGES_TOKEN: an access token of a user who may
write the organisation's packages (scopes write:package, read:package). The job's own token
cannot upload. tools/publish-package.sh does the upload.