bug-gnulib
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]