Skip to content

v0.4.0-rc1

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:46
· 3 commits to main since this release

Added

  • Pooled emulated Indy mode. runner serve forks one listener per configured identity and runs each job in a throwaway container holding an emulated SGI Indy, so a Linux host with Docker can serve IRIX jobs without an SGI. --image picks the worker image, --job-timeout bounds a wedged emulator.

    • runner configure --count N --name-prefix P registers N identities as P-0, P-1 and so on, each with its own credentials, work folder and an emulated label. run, status and remove take --dir or the same --count/--name-prefix pair.
    • runner execjob --message FILE runs one job from a message file with no configured runner present. This is what the guest runs.
    • --cancel-file PATH cancels a running job when that file's mtime changes. SIGINT and SIGTERM cancel rather than kill, so the job still reports a result.
    • serve sends completejob itself when a container dies without the guest reporting. Nothing renews a job lock, so an unreported job otherwise leaves that identity online at currentParallelism: 1 and never dispatched to again.
    • The worker image is published as ghcr.io/sgidevnet/irix-worker. The IRIX disk image is supplied by the operator and is not redistributed here.
    • selftest reports the Docker daemon's version, and why its socket could not be reached when it could not.
  • Linux x86_64 and arm64 tarballs. They need glibc 2.39 and OpenSSL 3 from the host and carry no cert.pem, because off IRIX the runner reads the distribution's own trust store.

Changed

  • The release cross-compiles every target on Linux and runs each binary's unit tests on hardware of its own architecture before packaging. The IRIX binary now comes from clang and LLD against a cross-built OpenSSL 1.1.1w rather than SGUG's GCC 9.2 and 1.1.1d. No source changed, and make on an SGI still uses GCC.

Fixed

  • The job lease was never renewed, so the run service dropped any job past ten minutes and completejob answered 404.
  • uname -s is IRIX on a 32-bit kernel and IRIX64 on a 64-bit one, so an Indy took the Linux branch of the Makefile and failed on the first header.
  • connect treated any poll return other than 1 as a failure, so a signal arriving mid-connect failed the connection.