Start thinking about what a hidden implementation pointer in struct g… #4596
This file contains 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
# This file defines Continuous Integration (CI) tests for BRL-CAD using the | |
# Github Actions framework. Currently it defines configurations for Windows, | |
# Linux and OSX. | |
# | |
# Initially we used examples to try and define one common configuration for all | |
# platforms, but that turned out to be more complex than it was worth. The | |
# different platforms manifest different issues, and it is easier to keep the | |
# individual steps simple and address what needs addressing per-platform. | |
# | |
# For more information about available platforms for testing, see: | |
# | |
# https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners | |
# | |
# The general rule when building in CI is to go more verbose in output settings | |
# rather than less, since iterative debugging isn't practical. We also want to | |
# avoid parallel building - while that will sometimes catch dependency issues, | |
# it also makes the outputs far harder to interpret when there is a problem. | |
# Better to do parallel build debugging in an environment were more interactive | |
# and iterative debugging is available while preserving the readability of the | |
# CI outputs for other issues. | |
# | |
# Note that there is another reason not to do parallel runs; we have had some | |
# trouble with issues that appear to be related to files not being fully | |
# written out to disk. To try and help mitigate this, we don't want to stress | |
# the I/O subsystem any more than necessary: | |
# | |
# https://github.com/actions/runner/issues/718 | |
# | |
name: BRL-CAD | |
on: [push] | |
jobs: | |
windows: | |
name: Windows Latest MSVC - Ninja | |
runs-on: windows-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- name: Setup - CMake | |
uses: lukka/get-cmake@latest | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Add cl.exe to PATH | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Add github workspace to path | |
# https://github.community/t/deprecated-add-path/136621 | |
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup - bext | |
shell: powershell | |
run: | | |
cmake -E make_directory build_winninja | |
cd build_winninja | |
git clone -b RELEASE https://github.com/BRL-CAD/bext.git | |
cmake -E make_directory bext_build | |
cd bext_build | |
cmake ../bext -DCMAKE_BUILD_TYPE=Release -DENABLE_ALL=ON -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build_winninja | |
cmake --build . --config Release -j 1 | |
cd .. | |
cmake -E rm -rf bext | |
cmake -E rm -rf bext_build | |
cd .. | |
- name: Configure | |
shell: powershell | |
run: | | |
# We do the Write-VolumeCache calls in order to help ensure files are | |
# "flushed" to disk before compilation is attempted | |
# https://superuser.com/a/1553374/1286142 | |
cd build_winninja; cmake .. -G Ninja -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DBRLCAD_EXT_DIR=${{ github.workspace }}/build_winninja/bext_output -DCMAKE_BUILD_TYPE=Release -DBRLCAD_ENABLE_QT=ON; Write-VolumeCache C; Write-VolumeCache D; cd .. | |
- name: Build | |
shell: powershell | |
run: | | |
cd build_winninja; ninja -j1 -v; cd .. | |
- name: Check | |
shell: powershell | |
run: | | |
cd build_winninja; ninja check -v; cd .. | |
- name: Package | |
shell: powershell | |
run: | | |
cd build_winninja; ninja package; cd .. | |
windows_std_tools: | |
name: Windows Latest MSVC - Standard Tools | |
runs-on: windows-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- name: Setup - CMake | |
uses: lukka/get-cmake@latest | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Add github workspace to path | |
# https://github.community/t/deprecated-add-path/136621 | |
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 | |
- name: Build Directory setup | |
run: | | |
cmake -E make_directory ./build_winstd | |
- name: Configure | |
shell: cmd | |
run: | | |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" | |
cmake -S . -B build_winstd -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_BUNDLED_LIBS=Bundled -DBRLCAD_ENABLE_QT=ON -DCMAKE_BUILD_TYPE=Release | |
- name: Build | |
shell: cmd | |
run: | | |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" | |
cmake --build build_winstd --config Release --target mged | |
- name: Check | |
shell: cmd | |
run: | | |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" | |
cmake --build build_winstd --config Release --target check | |
- name: Package | |
shell: cmd | |
run: | | |
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" | |
cmake --build build_winstd --config Release --target package | |
linux: | |
name: Ubuntu Latest GCC | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- name: Setup - CMake | |
uses: lukka/get-cmake@latest | |
- name: Setup - System | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get update | |
# Install X/OpenGL dev pkgs | |
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev | |
# Install tools | |
sudo apt-get install astyle re2c xsltproc libxml2-utils liblief-dev | |
# Install dependency dev pkgs | |
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev | |
# Cleanup (we want to avoid wasting disk space) | |
sudo apt-get clean | |
- name: Setup - System Qt Build Requirements | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get update | |
# Install XCB/OpenGL dev pkgs for Qt - see: | |
# https://wiki.qt.io/Building_Qt_6_from_Git | |
# https://doc.qt.io/qt-6/linux-requirements.html | |
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev | |
sudo apt-get install libgl-dev | |
sudo apt-get install libinput-dev | |
sudo apt-get clean | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Directory setup | |
run: | | |
cmake -E make_directory ./build_linux | |
cmake -E make_directory $HOME/.cache | |
cmake -E make_directory $HOME/.cache/BRL-CAD | |
- name: Configure | |
run: | | |
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH | |
cmake -S . -G Ninja -B build_linux -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DBRLCAD_ENABLE_QT=ON | |
- name: Build | |
run: | | |
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH | |
cmake --build build_linux --config Release --target check | |
cmake --build build_linux --config Release --target package | |
# For the moment the space demands are too extreme to enable this | |
# output for every compile test, but leave the enabling logic present | |
# in commented out form so it can be enabled as needed. | |
# - name: Upload Package | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: BRLCAD_Linux | |
# path: ${{ github.workspace }}/build_linux/BRL-CAD*gz | |
osx: | |
name: macOS Latest Clang | |
runs-on: macos-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- name: Setup - CMake | |
uses: lukka/get-cmake@latest | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Xquartz | |
run: | | |
brew install xquartz --cask | |
- name: Build Directory setup | |
run: | | |
cmake -E make_directory ./build_osx | |
cmake -E make_directory $HOME/.cache | |
cmake -E make_directory $HOME/.cache/BRL-CAD | |
- name: Setup - bext | |
run: | | |
cd build_osx | |
git clone -b RELEASE https://github.com/BRL-CAD/bext.git | |
cmake -E make_directory bext_build | |
cd bext_build | |
export CC=clang | |
export CXX=clang++ | |
cmake ../bext -DENABLE_ALL=ON -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build_osx -DCMAKE_BUILD_TYPE=Debug | |
cmake --build . -j 1 | |
cd .. | |
cmake -E rm -rf bext | |
cmake -E rm -rf bext_build | |
cd .. | |
- name: Configure | |
run: | | |
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH | |
export CC=clang | |
export CXX=clang++ | |
cmake -S . -G Ninja -B build_osx -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_DIR=${{ github.workspace }}/build_osx/bext_output -DBRLCAD_ENABLE_X11=OFF -DBRLCAD_ENABLE_QT=ON | |
- name: Build | |
run: | | |
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH | |
cd build_osx && ninja -j1 && ninja -j1 check && ninja -j1 package | |
# For the moment the space demands are too extreme to enable this | |
# output for every compile test, but leave the enabling logic present | |
# in commented out form so it can be enabled as needed. | |
# - name: Upload Package | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: BRLCAD_OSX | |
# path: ${{ github.workspace }}/build_osx/BRL-CAD*gz | |
# A full distcheck is too expensive for the runners, but we can run the | |
# repository integrity check and make sure we can build source archives. | |
archives: | |
name: Source Archives | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
steps: | |
- name: Setup - CMake | |
uses: lukka/get-cmake@latest | |
- name: Setup - System | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt-get update | |
# Install X/OpenGL dev pkgs | |
sudo apt-get install xserver-xorg-dev libx11-dev libxi-dev libxext-dev libglu1-mesa-dev libfontconfig-dev | |
# Install tools | |
sudo apt-get install astyle re2c xsltproc libxml2-utils liblief-dev | |
# Install dependency dev pkgs | |
sudo apt-get install zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libeigen3-dev libgdal-dev libassimp-dev libopencv-dev tcl-dev tk-dev | |
# Cleanup (we want to avoid wasting disk space) | |
sudo apt-get clean | |
- name: Setup - bext | |
run: | | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
run: | | |
cmake -E make_directory ./build_archives | |
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH | |
cmake -S . -B build_archives -DCMAKE_BUILD_TYPE=Release -DBRLCAD_EXT_PARALLEL=1 -DCPACK_INCLUDE_EXT=OFF | |
cmake --build build_archives --config Release --target distcheck-source_archives | |