Repository navigation
Bump version to v8.0.4 #50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| # Build + package (cpack) on each platform, uploaded as workflow | |
| # artifacts. This does NOT install or run the GUI apps -- that needs a | |
| # display (Xvfb) and per-user service setup (see GETTING_STARTED.md), a | |
| # lot more complexity than a build-and-package health check warrants. | |
| # Packaging itself needs neither: cpack just archives already-built | |
| # binaries, no display involved. The goal is early, continuous signal on | |
| # "does this even compile (and package) here", especially for platforms | |
| # nobody is routinely building on locally. | |
| # | |
| # RPM packages built here are real .rpm artifacts, but incomplete ones -- | |
| # CPACK_RPM_PACKAGE_REQUIRES (the RPM equivalent of the existing | |
| # CPACK_DEBIAN_PACKAGE_DEPENDS) isn't set yet, so the package won't | |
| # auto-pull its runtime deps (apache2 equivalent, activemq, wx python | |
| # bindings, ...) the way the .deb does. Worth fixing before treating | |
| # these as real release artifacts, not before treating them as "does | |
| # cpack's RPM generator work at all here" signal. | |
| # | |
| # Target platforms and why: | |
| # - Debian: what the primary maintainer actually develops on. | |
| # - Ubuntu: most popular desktop/CI Linux distro. | |
| # - RHEL family: what a lot of institutional/cluster environments run. | |
| # GitHub Actions has no real RHEL runner (needs a subscription), so | |
| # this uses Rocky Linux -- a bug-for-bug free rebuild of RHEL from | |
| # the same sources, the standard stand-in for "does this work on | |
| # RHEL" in CI that doesn't have a Red Hat subscription to spend. | |
| # - WSL2: NOT a separate job. WSL2 runs a real Linux kernel with a real | |
| # distro userland (Ubuntu by default) on top of it -- there's no | |
| # separate "WSL2 build" to test, the Ubuntu/Debian jobs below already | |
| # cover it directly. The one WSL2-relevant wrinkle, filename | |
| # case-collisions (#40), is actually a non-issue for WSL2 specifically | |
| # (its ext4-backed filesystem is case-sensitive like any other Linux | |
| # disk) -- it only bites on a native-Windows checkout or a default | |
| # case-insensitive macOS volume. | |
| # - macOS: tracks GitHub #3 (currently expected to fail -- see the job | |
| # below for why). | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: {} | |
| jobs: | |
| debian: | |
| name: Debian (apt, containerized) | |
| runs-on: ubuntu-latest | |
| container: debian:trixie | |
| steps: | |
| - name: Install build dependencies | |
| run: | | |
| apt-get update | |
| apt-get install -y \ | |
| build-essential gfortran cmake ninja-build \ | |
| libwxgtk3.2-dev libxerces-c-dev libgl-dev libglu1-mesa-dev \ | |
| libgtk-3-dev libx11-dev libice-dev libxt-dev libjpeg-dev \ | |
| default-jdk ant git dpkg-dev file | |
| - uses: actions/checkout@v4 | |
| - name: Configure | |
| run: cmake -G Ninja -B build-cmake | |
| - name: Build | |
| run: cmake --build build-cmake | |
| - name: Package | |
| working-directory: build-cmake | |
| run: cpack -G DEB | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ecce-debian-trixie-deb | |
| path: build-cmake/*.deb | |
| ubuntu: | |
| name: Ubuntu (apt) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install build dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| build-essential gfortran cmake ninja-build \ | |
| libwxgtk3.2-dev libxerces-c-dev libgl-dev libglu1-mesa-dev \ | |
| libgtk-3-dev libx11-dev libice-dev libxt-dev libjpeg-dev \ | |
| default-jdk ant git dpkg-dev | |
| - name: Configure | |
| run: cmake -G Ninja -B build-cmake | |
| - name: Build | |
| run: cmake --build build-cmake | |
| - name: Package | |
| working-directory: build-cmake | |
| run: cpack -G DEB | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ecce-ubuntu-latest-deb | |
| path: build-cmake/*.deb | |
| rocky: | |
| name: Rocky Linux (dnf, RHEL family, containerized) | |
| runs-on: ubuntu-latest | |
| container: rockylinux:9 | |
| steps: | |
| - name: Install build dependencies | |
| run: | | |
| dnf install -y epel-release 'dnf-command(config-manager)' | |
| # ninja-build and a few -devel packages live in the CodeReady | |
| # Builder repo, not EPEL itself -- EPEL's own release package | |
| # prints a reminder about this ("Many EPEL packages require the | |
| # CRB repository... /usr/bin/crb enable") but doesn't enable it | |
| # automatically. | |
| dnf config-manager --set-enabled crb | |
| dnf install -y \ | |
| gcc gcc-c++ gcc-gfortran make cmake ninja-build git rpm-build \ | |
| wxGTK-devel xerces-c-devel \ | |
| mesa-libGL-devel mesa-libGLU-devel \ | |
| gtk3-devel libX11-devel libICE-devel libXt-devel libjpeg-turbo-devel \ | |
| java-latest-openjdk-devel ant | |
| # actions/checkout doesn't work reliably inside an arbitrary | |
| # container image (no git-installed-as-a-prereq guarantee, and the | |
| # container user often isn't the checkout action's expected uid) -- | |
| # install git above first, then check out manually instead. | |
| - name: Check out source | |
| run: | | |
| git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| git clone --depth 1 --branch "${GITHUB_REF_NAME}" \ | |
| "https://github.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE" \ | |
| || git clone --depth 1 "https://github.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE" | |
| - name: Configure | |
| working-directory: ${{ github.workspace }} | |
| run: cmake -G Ninja -B build-cmake | |
| - name: Build | |
| working-directory: ${{ github.workspace }} | |
| run: cmake --build build-cmake | |
| - name: Package | |
| working-directory: ${{ github.workspace }}/build-cmake | |
| run: cpack -G RPM | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ecce-rockylinux9-rpm | |
| path: build-cmake/*.rpm | |
| fedora: | |
| name: Fedora (dnf, containerized) | |
| runs-on: ubuntu-latest | |
| container: fedora:latest | |
| steps: | |
| - name: Install build dependencies | |
| run: | | |
| dnf install -y \ | |
| gcc gcc-c++ gcc-gfortran make cmake ninja-build git rpm-build \ | |
| wxGTK-devel xerces-c-devel \ | |
| mesa-libGL-devel mesa-libGLU-devel \ | |
| gtk3-devel libX11-devel libICE-devel libXt-devel libjpeg-turbo-devel \ | |
| java-latest-openjdk-devel ant | |
| - name: Check out source | |
| run: | | |
| git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
| git clone --depth 1 --branch "${GITHUB_REF_NAME}" \ | |
| "https://github.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE" \ | |
| || git clone --depth 1 "https://github.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE" | |
| - name: Configure | |
| working-directory: ${{ github.workspace }} | |
| run: cmake -G Ninja -B build-cmake | |
| - name: Build | |
| working-directory: ${{ github.workspace }} | |
| run: cmake --build build-cmake | |
| - name: Package | |
| working-directory: ${{ github.workspace }}/build-cmake | |
| run: cpack -G RPM | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ecce-fedora-latest-rpm | |
| path: build-cmake/*.rpm | |
| macos: | |
| name: macOS (Homebrew) | |
| runs-on: macos-latest | |
| # Known-unsupported today (GitHub #3) -- ECCE's offscreen-rendering | |
| # path (src/inv/dbso/SoOffscreenRenderer.inc) calls raw Xlib/GLX | |
| # (XOpenDisplay/glXCreateContext), which has no macOS-native | |
| # equivalent (Cocoa/NSOpenGL, or GLX only via XQuartz). This job is | |
| # here to track the gap with a real, current compile log instead of | |
| # nothing -- it's expected to fail until #3 gets real porting work, | |
| # not a sign the workflow itself is broken. | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install build dependencies | |
| run: | | |
| brew install cmake ninja wxwidgets xerces-c ant gcc | |
| # src/comm/commxt/JobStore.C calls raw X Toolkit Intrinsics | |
| # (XtAppAddSignal etc.) directly -- macOS has no native | |
| # equivalent and doesn't ship X11 at all by default. XQuartz | |
| # is the standard way to get real X11/Xt headers+libs on macOS. | |
| brew install --cask xquartz | |
| - name: Configure | |
| run: cmake -G Ninja -B build-cmake -DCMAKE_PREFIX_PATH=/opt/X11 | |
| - name: Build | |
| run: cmake --build build-cmake |