Skip to content
This repository has been archived by the owner on Oct 15, 2024. It is now read-only.

Merge pull request #4974 from atmaxinger/release-v0.11 #5275

Merge pull request #4974 from atmaxinger/release-v0.11

Merge pull request #4974 from atmaxinger/release-v0.11 #5275

Workflow file for this run

name: 🍎 macOS
# Triggers the workflow on push or pull request events
on: [push, pull_request]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: RelWithDebInfo
# Skip homebrew cleanup to avoid issues with removal of packages
HOMEBREW_NO_INSTALL_CLEANUP: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: macos-11
strategy:
# Do not abort all jobs upon first failure
fail-fast: false
matrix:
include:
# The following plugins have been disabled due to problems:
# Yamlcpp fails to compile on macOS with GCC due to problems with the macOS SDK
# it does not make sense to test the xfconf plugin on macOS as xfce is very uncommon on macOS
- name: GCC 11
CC: gcc-11
CXX: g++-11
PLUGINS: ALL;-xerces;-yamlcpp;-ansible;-xfconf
BINDINGS: ALL;-rust
- name: Clang
CC: clang
CXX: clang++
ENABLE_LOGGER: ON
TOOLS: NODEP
PLUGINS: ALL;-xfconf
BINDINGS: ALL;-rust
- name: Clang ASAN
CC: clang
CXX: clang++
ASAN_OPTIONS: detect_leaks=1
ENABLE_ASAN: ON
TOOLS: kdb
PLUGINS: ALL;-xfconf
BINDINGS: ALL;-rust
#- name: MMap
# KDB_DEFAULT_STORAGE: mmapstorage
# KDB_DB_FILE: default.mmap
# KDB_DB_INIT: elektra.mmap
# PLUGINS: ALL
# BINDINGS: ALL;-rust
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
PLUGINS: ${{ matrix.PLUGINS }}
BINDINGS: ${{ matrix.BINDINGS }}
TOOLS: ${{ matrix.TOOLS }}
ENABLE_LOGGER: ${{ matrix.ENABLE_LOGGER }}
ENABLE_ASAN: ${{ matrix.ENABLE_ASAN }}
ASAN_OPTIONS: ${{ matrix.ASAN_OPTIONS }}
KDB_DEFAULT_STORAGE: ${{ matrix.KDB_DEFAULT_STORAGE }}
KDB_DB_FILE: ${{ matrix.KDB_DB_FILE }}
KDB_DB_INIT: ${{ matrix.KDB_DB_INIT }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install Dependencies
run: |
set -ex
brew config
brew update
# homebrew fails to upgrade python due to unlinking failure
# (cf. https://github.com/actions/setup-python/issues/577 )
rm -f /usr/local/bin/2to3
rm -f /usr/local/bin/idle3
rm -f /usr/local/bin/pydoc3
rm -f /usr/local/bin/python3
rm -f /usr/local/bin/python3-config
rm -f /usr/local/bin/2to3-3.11
rm -f /usr/local/bin/idle3.11
rm -f /usr/local/bin/pydoc3.11
rm -f /usr/local/bin/python3.11
rm -f /usr/local/bin/python3.11-config
rm -f /usr/local/lib/libtcl8.6.dylib
rm -f /usr/local/lib/libtk8.6.dylib
rm -f /usr/local/bin/go
rm -f /usr/local/bin/gofmt
brew upgrade
brew install augeas \
antlr \
antlr4-cpp-runtime \
bison \
clang-format \
dbus \
discount \
doxygen \
flex \
glib \
gpgme \
gradle \
graphviz \
libev \
libgcrypt \
libgit2 \
libuv \
lua \
moreutils \
ninja \
npm \
openssl \
pkg-config \
qt \
[email protected] \
shfmt \
swig \
tree \
xerces-c \
yajl \
yaml-cpp \
zeromq
if [ "$CC" = 'clang' ]; then
brew install --cask oclint
fi
brew install --cask adoptopenjdk
# Try to install `checkbashisms` (The file server that hosts the package is unfortunately quite unreliable.)
brew install checkbashisms || >&2 printf 'Warning: Unable to install `checkbashims`\n'
- name: Setup Build Environment
run: |
# Install Ruby gems
export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.0.0/bin:$PATH"
gem install ronn-ng -v 0.10.1.pre3
gem install test-unit --no-document
# Install Python packages
pip2 install cheetah # Required by kdb-gen
pip3 install cmakelang[yaml]==0.6.13
# Install JavaScript packages
npm install dredd --global
npm install --global [email protected]
brew tap homebrew/services
brew update # Work around for [Homebrew Services issue 206](https://github.com/Homebrew/homebrew-services/issues/206)
brew postinstall dbus
echo $DBUS_LAUNCHD_SESSION_BUS_SOCKET
launchctl getenv DBUS_LAUNCHD_SESSION_BUS_SOCKET
cmake -E make_directory ${{runner.workspace}}/libelektra/build
export JAVA_HOME=$(/usr/libexec/java_home -v 16)
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
echo "$JAVA_HOME/bin" >> $GITHUB_PATH
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/libelektra/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: |
if [ "$CC" = 'clang' ]; then
# Use latest version of LLVM to translate Elektra
export CC="$(brew --prefix llvm@15)/bin/clang" CXX="$(brew --prefix llvm@15)/bin/clang++"
export LDFLAGS="-L$(brew --prefix llvm@15)/lib"
export CPPFLAGS="-I$(brew --prefix llvm@15)/include"
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
fi
SYSTEM_DIR="$PWD/kdbsystem"
CMAKE_OPT+=(
-GNinja
-DPLUGINS="${PLUGINS:-ALL}"
-DBINDINGS="${BINDINGS:-ALL}"
-DTOOLS="${TOOLS:-NODEP}"
-DBUILD_FULL="${BUILD_FULL:-OFF}"
-DBUILD_SHARED="${BUILD_SHARED:-ON}"
-DENABLE_ASAN="${ENABLE_ASAN:-OFF}"
-DCOMMON_FLAGS="${COMMON_FLAGS--Werror}"
-DENABLE_LOGGER="${ENABLE_LOGGER:-OFF}"
-DENABLE_DEBUG=ON
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DKDB_DB_SYSTEM="$SYSTEM_DIR"
-DKDB_DEFAULT_STORAGE="${KDB_DEFAULT_STORAGE:-dump}"
-DKDB_DB_FILE="${KDB_DB_FILE:-default.ecf}"
-DKDB_DB_INIT="${KDB_DB_INIT:-elektra.ecf}"
)
printf '—— CMake Config ——\n'
for option in "${CMAKE_OPT[@]}"; do printf '%s\n' "$option"; done
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE ${CMAKE_OPT[@]}
- name: Build
working-directory: ${{runner.workspace}}/libelektra/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build .
- name: Install
working-directory: ${{runner.workspace}}/libelektra/build
shell: bash
run: output="$(cmake --build . --target install 2>&1)" || printf '%s' "$output"
- name: Test
working-directory: ${{runner.workspace}}/libelektra/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: |
if [ "$ENABLE_ASAN" = 'ON' ]; then
KDB=""
elif [ "$BUILD_FULL" = 'ON' ]; then
KDB=kdb-full
else
KDB=kdb
fi
env BUILD_DIR="$PWD" AUTO_RERUN_TESTS="testmod_dbus" KDB="$KDB" sh "$GITHUB_WORKSPACE/scripts/dev/ci_run_tests.sh"