[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
how to build on machines without ssh access
From: |
Bruno Haible |
Subject: |
how to build on machines without ssh access |
Date: |
Wed, 22 May 2024 16:53:33 +0200 |
Hi,
Here's a technique that allows you to build on platforms for which you don't
have a machine without direct access.
A machine with direct access (either a VM, or a machine with ssh access [1]) is
preferred, since it's more easy to work with. But for some platforms, GitHub
provides an alternative way.
The platforms are:
- Ubuntu GNU/Linux
- CentOS GNU/Linux
- Alpine Linux
- macOS 11, 12, 13, 14
- FreeBSD 14.0
- NetBSD 10.0
- OpenBSD 7.5
- Solaris 11.4
- Solaris 11 OmniOS (an OpenSolaris derivative)
- Cygwin (32, 64 bit)
- mingw (32, 64 bit)
- MSVC (32, 64 bit)
The way of working with these is to
1) Commit into a scratch GitHub repository a directory that can be built
using the usual "./configure; make; make check" commands.
2) Commit into the same repository three files:
- .github/workflows/many-platforms.yml
- build-on.sh
- libbacktrace.tar.gz
found in [2].
The *.yml file is a "GitHub actions" specification, that will build the
directory on nearly 20 platforms. (You can disable undesired platforms,
to save energy.)
The build-on.sh is a shell script that executes the build.
libbacktrace.tar.gz is useful, together with the Gnulib module
'abort-debug', to get decent stack traces upon abort().
3) Modify the .github/workflows/many-platforms.yml to include among the
artifacts the log files of the tests.
4) Each 'git push' triggers a new execution of the build. You then look
at the execution logs and download relevant log file zips. Modify
the source code to either add more printf statements (yuck - only
printf-based debugging, no gdb!) or add supposed workarounds/fixes.
Commit that. Push, and the cycle repeats.
It's more tedious to work with than a machine with direct access.
Turnaround times of 5 minutes or so are not a developer's dream, but
it's workable. And it saves you buying a Mac or a Windows license.
Bruno
[1]
https://git.savannah.gnu.org/gitweb/?p=gnulib/maint-tools.git;a=blob_plain;f=platforms/test-environments.txt;hb=HEAD
[2] https://github.com/gnu-gnulib/ci-scratch
- how to build on machines without ssh access,
Bruno Haible <=