Skip to content

Build on macOS beside the Linux job and compile the check build at -O0 - #35

Merged
estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:ci/parallel-macos-build
Oct 22, 2026
Merged

estebanzimanyi merged 1 commit into
MobilityDB:masterfrom
estebanzimanyi:ci/parallel-macos-build

Conversation

@estebanzimanyi

@estebanzimanyi estebanzimanyi commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

The PR build runs its macOS jobs beside the Linux job and compiles the validation build at -O0.

  • The macOS builds need the catalog the Linux job derives only to project the cdef header. They install their Homebrew tools and build libmeos beside the Linux job, then fetch the catalog once the Linux job has uploaded it (an artifact of actions/upload-artifact@v4 is readable as soon as it is uploaded).
  • Each macOS job derives the MEOS branch itself and checks that the catalog's sourceCommit and its libmeos come from one MobilityDB commit.
  • A Linux job that ends without uploading the catalog fails the macOS jobs at once.
  • Install from sdist compiles the generated extension at -O0. Release wheels (build_pymeos_cffi.yml) keep the interpreter's optimisation.
  • The build also runs on a push to master or a stable branch: that run validates the merged branch and saves the Homebrew cache under its ref, which every pull request into it restores (a cache a pull request saves is readable by that pull request alone).

Measured: the 250,000-line generated _meos_cffi.c compiles in 54.5 s at -O2, 27.6 s at -O1 and 13.4 s at -O0 (one local machine, other builds running, so the ratio is what carries). In the runs of the current layout the macOS jobs start after the whole Linux job, 4 to 5 minutes in, and their Homebrew step takes 65 to 129 s with a warm cache and 414 to 877 s with a cold one.

Witness: a local build with CFLAGS=-O0 compiles at -O0 (x86_64-linux-gnu-gcc -O0 ... -c _meos_cffi.c) and builder/smoke_test.py passes on it.

@estebanzimanyi
estebanzimanyi force-pushed the ci/parallel-macos-build branch from b03d9bc to 1a5a124 Compare October 22, 2026 19:15
The macOS builds need the catalog the Linux job derives only to project the
cdef header, so they install their Homebrew tools and build libmeos beside the
Linux job and fetch the catalog once the Linux job uploads it. They derive the
MEOS branch themselves and check that the catalog and their libmeos come from
one MobilityDB commit. A Linux job that ends without the catalog fails them at
once.

The validation build compiles the generated extension at -O0. It is call glue,
and -O0 compiles the 250,000-line generated source in 13.4 s against 54.5 s at
-O2. Release wheels keep the interpreter's optimisation.

The build also runs on a push to master or a stable branch. That run validates
the merged branch and saves the Homebrew cache under its ref, which every pull
request into it restores; a cache a pull request saves is readable by that pull
request alone, so without it each new pull request installs the tools cold.
@estebanzimanyi
estebanzimanyi force-pushed the ci/parallel-macos-build branch from 1a5a124 to 71d4480 Compare October 22, 2026 19:52
@estebanzimanyi
estebanzimanyi merged commit b1b6864 into MobilityDB:master Oct 22, 2026
4 checks passed
@estebanzimanyi
estebanzimanyi deleted the ci/parallel-macos-build branch October 22, 2026 20:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant