Skip to content

Rebase the Group and Zone Output Model Classes on a Common Ancestor #210

Rebase the Group and Zone Output Model Classes on a Common Ancestor

Rebase the Group and Zone Output Model Classes on a Common Ancestor #210

Workflow file for this run

#
# Copyright (c) 2021 Grant Erickson. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Description:
# This file is the GitHub Actions hosted, distributed continuous
# integration configuration file for Open HLX.
#
---
name: Build
on: [push, pull_request]
jobs:
linux:
runs-on: ubuntu-latest
name: "Linux ${{matrix.compiler['name']}} [${{matrix.configuration['name']}}]"
strategy:
matrix:
compiler:
- { name: GCC, c: gcc, cxx: g++, options: "" }
- { name: clang/LLVM, c: clang, cxx: clang++, options: "" }
configuration:
- { name: "Debug", options: "--enable-debug" }
- { name: "Release", options: "" }
env:
CC: ${{matrix.compiler['c']}}
CXX: ${{matrix.compiler['cxx']}}
steps:
- name: Install Common Host Package Dependencies
run: |
sudo apt-get update
sudo apt-get -y install autoconf automake libtool
- name: Install OpenCFLite Host Package Dependencies
run: |
sudo apt-get -y install gobjc gobjc++ uuid-dev libicu-dev
- name: Install Open HLX Host Package Dependencies
run: |
sudo apt-get -y install libboost-dev libboost-filesystem-dev libboost-system-dev libnl-3-dev libnl-route-3-dev libtre-dev libcppunit-dev asciidoc xmlto doxygen
- name: Download OpenCFLite Distribution Archive Dependencies
run: |
cd /tmp
curl https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz -o tzcode2021a.tar.gz || wget https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz
mkdir tzcode2021a
tar --directory tzcode2021a -zxf tzcode2021a.tar.gz
- name: Checkout libkqueue OpenCFLite v635 Dependency
uses: actions/checkout@v2
with:
repository: mheily/libkqueue
ref: master
path: libkqueue
- name: Configure libkqueue OpenCFLite Dependency
run: |
cd "${GITHUB_WORKSPACE}/libkqueue"
cmake -S. -B. -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_INSTALL_LIBDIR="lib"
- name: Build libkqueue OpenCFLite v635 Dependency
run: |
cd "${GITHUB_WORKSPACE}/libkqueue"
make -j
- name: Install libkqueue OpenCFLite v635 Dependency
run: |
cd "${GITHUB_WORKSPACE}/libkqueue"
sudo make install
sudo ldconfig
- name: Checkout OpenCFLite Dependency
uses: actions/checkout@v2
with:
repository: gerickson/opencflite
ref: opencflite-635
path: opencflite
# Note that in Ubuntu 20 and later, with ICU 60 and later, neither
# 'pkg-config icu' nor 'icu-config' are supported. Consequently,
# we have to explicitly specify '--with-icu=/usr'.
#
# For this build, we also need neither debug nor profile instances.
- name: Configure OpenCFLite Dependency
run: |
cd "${GITHUB_WORKSPACE}/opencflite"
./configure -C --with-icu=/usr --with-tz-includes=/tmp/tzcode2021a --disable-debug --disable-profile
- name: Build OpenCFLite Dependency
run: |
cd "${GITHUB_WORKSPACE}/opencflite"
make -j
# Make sure that 'ldconfig' is run such that run time execution
# picks up libCoreFoundation.so in /usr/local.
- name: Install OpenCFLite Dependency
run: |
cd "${GITHUB_WORKSPACE}/opencflite"
sudo make install
sudo ldconfig
- name: Checkout
uses: actions/checkout@v2
- name: Bootstrap and Configure
run: |
./bootstrap-configure -C ${{matrix.configuration['options']}} --enable-coverage --with-boost=/usr/local --with-libnl-includes=/usr/include/libnl3 --with-corefoundation-source=cflite --disable-docs
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: configure-artifacts
path: config.log
- name: Coding Style
run: |
make -j pretty-check
- name: Build
run: |
make -j
- name: Test
run: |
make -j check
- name: Upload Coverage
run: |
bash <(curl -s https://codecov.io/bash) -g 'src/*' -G 'src/lib/*/tests/*' -G 'tests/*' -G 'third_party/*'
# On macOS, Intel versus Apple silicon has created a bit of a mess
# as far as Homebrew is concerned. On the former, Homebrew formulae
# are installed in /usr/local and on the latter, in
# /opt/homebrew. There's no way to know apriori on which
# architecture the job will run. Consequently, we attempt to handle
# both. In the future, perhaps we can key off `uname -m`.
macos:
runs-on: macos-latest
name: "macOS ${{matrix.compiler['name']}} [${{matrix.configuration['name']}}]"
strategy:
matrix:
compiler:
- { name: GCC, c: gcc, cxx: g++ }
- { name: clang/LLVM, c: clang, cxx: clang++ }
configuration:
- { name: "Debug", options: "--enable-debug" }
- { name: "Release", options: "" }
env:
CC: ${{matrix.compiler['c']}}
CXX: ${{matrix.compiler['cxx']}}
CPPFLAGS: "-I/usr/local/include -I/opt/homebrew/include"
LDFLAGS: "-L/usr/local/lib -L/opt/homebrew/lib"
XML_CATALOG_FILES: "/opt/homebrew/etc/xml/catalog"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Dependencies
run: |
brew install autoconf automake libtool boost cppunit docbook docbook-xsl asciidoc xmlto doxygen
- name: Bootstrap and Configure
run: |
eval "$(brew shellenv)"
export PATH="$(brew --prefix m4)/bin:${PATH}"
./bootstrap-configure -C ${{matrix.configuration['options']}} --with-boost="$(brew --prefix boost)" --with-cppunit="$(brew --prefix cppunit)" --enable-coverage --disable-docs
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: configure-artifacts
path: config.log
- name: Coding Style
run: |
make -j pretty-check
- name: Build
run: |
make -j
- name: Test
run: |
make -j check
- name: Upload Coverage
run: |
bash <(curl -s https://codecov.io/bash) -g 'src/*' -G 'src/lib/*/tests/*' -G 'tests/*' -G 'third_party/*'