macOS #2269
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
name: macOS | |
on: | |
pull_request: | |
push: | |
schedule: | |
- cron: '00 21 * * *' | |
jobs: | |
general: | |
runs-on: macOS-latest | |
strategy: | |
matrix: | |
build-tool: [autotools, cmake] | |
cc: [gcc, clang] | |
fail-fast: false | |
steps: | |
- name: Checkout syslog-ng source | |
uses: actions/checkout@v3 | |
- name: Unlinking preinstalled Python (workaround) | |
# The python@3 brew package has to be installed and linked system-wide (it's a dependency of glib and syslog-ng) | |
# The macos-latest GitHub runner has Python preinstalled as a pkg, this prevents linking the python@3 | |
# brew package, even when linking is forced. `brew "python@3", link: true, force: true` | |
# also, brew cannot update the links even these cretated by itself for an earlier python version | |
run : | | |
find /usr/local/bin/ -lname "*Python.framework*" -delete | |
- name: Install dependencies | |
run: | | |
brew update --preinstall | |
brew bundle --file=contrib/Brewfile | |
- name: Set ENV variables | |
run: | | |
. .github/workflows/gh-tools.sh | |
HOMEBREW_PREFIX="$(brew --prefix)" | |
PYTHONUSERBASE="${HOME}/python_packages" | |
PKG_CONFIG_PATH="${HOMEBREW_PREFIX}/opt/openssl@3/lib/pkgconfig:${HOMEBREW_PREFIX}/opt/net-snmp/lib/pkgconfig:${PKG_CONFIG_PATH}" | |
CFLAGS="-I${HOMEBREW_PREFIX}/include/" | |
LDFLAGS="-L${HOMEBREW_PREFIX}/lib" | |
CC="${{ matrix.cc }}" | |
THREADS="$(sysctl -n hw.physicalcpu)" | |
CONFIGURE_FLAGS=" | |
`[ $CC = clang ] && echo '--enable-force-gnu99' || true` | |
`[ $CC = gcc ] && echo '--enable-cpp' || true` | |
--prefix=${SYSLOG_NG_INSTALL_DIR} | |
--enable-all-modules | |
--enable-tests | |
--with-ivykis=system | |
--with-python=3 | |
--with-systemd-journal=no | |
--disable-smtp | |
--disable-grpc | |
--disable-java | |
--disable-java-modules | |
--disable-mqtt | |
--disable-pacct | |
" | |
CMAKE_CONFIGURE_FLAGS=" | |
`[ $CC = gcc ] && echo '-DENABLE_CPP=ON' || true` | |
-DCMAKE_BUILD_TYPE=Debug | |
-DSUMMARY_VERBOSE=ON | |
-DBUILD_TESTING=ON | |
-DIVYKIS_SOURCE=system | |
-DPYTHON_VERSION=3 | |
-DENABLE_JOURNALD=OFF | |
-DENABLE_AFSMTP=OFF | |
-DENABLE_GRPC=OFF | |
-DENABLE_JAVA=OFF | |
-DENABLE_JAVA_MODULES=OFF | |
-DENABLE_MQTT=OFF | |
-DENABLE_PACCT=OFF | |
" | |
gh_export HOMEBREW_PREFIX PYTHONUSERBASE CC PKG_CONFIG_PATH THREADS CONFIGURE_FLAGS CFLAGS LDFLAGS CMAKE_CONFIGURE_FLAGS | |
gh_path "${HOMEBREW_PREFIX}/bin:${HOMEBREW_PREFIX}/opt/bison/bin:${HOMEBREW_PREFIX}/opt/libnet/bin:${PYTHONUSERBASE}/bin:${HOMEBREW_PREFIX}/opt/net-snmp/bin:${PATH}" | |
ln -s "${HOMEBREW_PREFIX}/bin/gcc-11" "${HOMEBREW_PREFIX}/bin/gcc" | |
ln -s "${HOMEBREW_PREFIX}/bin/g++-11" "${HOMEBREW_PREFIX}/bin/g++" | |
- name: autogen.sh | |
if: matrix.build-tool == 'autotools' | |
run: | | |
./autogen.sh | |
- name: configure | |
if: matrix.build-tool == 'autotools' | |
run: | | |
./configure ${CONFIGURE_FLAGS} | |
- name: cmake configure | |
if: matrix.build-tool == 'cmake' | |
run: | | |
mkdir build | |
# If you know the valid syntax to provide the quoted string for -DCMAKE_C_FLAGS inplace in CMAKE_CONFIGURE_FLAGS above (in Set ENV variables step) instead of this hack, please contribute! | |
# | |
# TODO: -Wall must be replaced here with -Werror but now multiple warnings could occure in several modules that needs to be corrected first | |
# | |
cmake --install-prefix "${HOME}/install/syslog-ng" -B build . -DCMAKE_C_FLAGS="-Wall ${CFLAGS}" ${CMAKE_CONFIGURE_FLAGS} | |
- name: cmake install | |
if: matrix.build-tool == 'cmake' | |
run: | | |
cmake --build ./build -j ${THREADS} --target install | |
- name: cmake check | |
if: matrix.build-tool == 'cmake' | |
run: | | |
cmake --build ./build -j ${THREADS} --target check | |
- name: make | |
if: matrix.build-tool == 'autotools' | |
run: | | |
set -e | |
make --keep-going -j ${THREADS} || \ | |
{ \ | |
S=$?; \ | |
make V=1; \ | |
return $S; \ | |
} | |
- name: make check | |
if: matrix.build-tool == 'autotools' | |
run: | | |
set -e | |
make --keep-going check -j ${THREADS} || \ | |
{ \ | |
S=$?; \ | |
echo "Output of first test invocation:"; \ | |
find . -name test-suite.log | xargs cat; \ | |
make V=1 check; \ | |
echo "Output of second test invocation:"; \ | |
find . -name test-suite.log | xargs cat; \ | |
return $S; \ | |
} |