On Tuesday, 8 September 2020 at 16:44:39 UTC, wjoe wrote:
On Tuesday, 8 September 2020 at 14:18:10 UTC, Iain Buclaw wrote:
On Tuesday, 8 September 2020 at 13:50:26 UTC, wjoe wrote:
On Monday, 7 September 2020 at 10:41:50 UTC, wjoe wrote:
Options I can think of are:
A) A Dockerfile for each case in (1.,) 2. and 3., or
B) A docker container which provides the environment to
build GCC and a (Cirrus) CI config which defines the tasks
to cover (1.,) 2. and 3.
Small update.
Option A) isn't possible with Cirrus CI because the check-out
phase takes about 54 minutes on average and building the
container about 6 minutes.
Then the task is terminated on the 60 minutes mark (the
default timeout) before it even starts the GCC configuration
phase.
The environment is 4GB RAM and dual CPU with 16 threads.
It is just doing a plain git clone? Can you control whether
checkout is done using --single-branch or --depth?
This update was about a build via the zero configuration
feature by just providing a Dockerfile.
Just to see if it works but it didn't.
I didn't find a git clone command in the log so I couldn't
really tell.
A lot of things, such as RAM, timeout, custom git checkouts,
custom command to build a docker container, environment
variables, etc., can be configured in a cirrus configuration
file.
So what I'm doing now is making a .cirrus.yml with a custom
checkout, a shallow clone with --depth=1 of the master-ci
branch should do the trick, using the container I made for
building gcc.
Then I'll adapt the build-ci script for use with Cirrus-CI.
E.g. the dependency installation for instance isn't necessary
by using a container that already provides all those.
I'm not sure if Johannes was referring to that script being a
bad idea in hindsight. If so it's not a problem to define the
necessary steps in the cirrus config.
Well the ci script in the repo [1] should be used as a baseline,
if not in its entirety as it's been used on enough to work in
many environments, whether building a native or cross compiler.
At the very least, you just need to set-up the environment()
using whatever variables Cirrus provides and it'll just go and
run.
I think I do have a copy somewhere that adds support for running
it locally without any dependencies on a specific CI.
[1]
https://github.com/D-Programming-GDC/gcc/blob/master-ci/buildci.sh