Skip to content

Container image and CI improvements #45

Container image and CI improvements

Container image and CI improvements #45

Workflow file for this run

name: macOS
on:
pull_request:
push:
schedule:
- cron: '00 21 * * *'
jobs:
general:
strategy:
matrix:
version: [13, 14]
build-tool: [autotools, cmake]
fail-fast: false
runs-on: macOS-${{ matrix.version }}
steps:
- name: Checkout AxoSyslog source
uses: actions/checkout@v4
- name: Set xcode version
if: matrix.version == 14
run: |
sudo xcode-select -s /Applications/Xcode_15.2.app
- 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-13 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:${HOMEBREW_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
CFLAGS="-I${HOMEBREW_PREFIX}/include/"
LDFLAGS="-L${HOMEBREW_PREFIX}/lib"
THREADS="$(sysctl -n hw.physicalcpu)"
CONFIGURE_FLAGS="
--enable-force-gnu99
--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="
-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
"
PATH="${HOMEBREW_PREFIX}/opt/bison/bin:${HOMEBREW_PREFIX}/opt/libnet/bin:${HOMEBREW_PREFIX}/opt/net-snmp/bin:${HOMEBREW_PREFIX}/bin:${HOMEBREW_PREFIX}/sbin:${PYTHONUSERBASE}/bin:${PATH}"
gh_export HOMEBREW_PREFIX PYTHONUSERBASE CC CXX PKG_CONFIG_PATH THREADS CONFIGURE_FLAGS CFLAGS LDFLAGS CMAKE_CONFIGURE_FLAGS PATH
gh_path "${PATH}"
echo "ARCH: " $(arch)
echo "xcode:" $(xcode-select -p)
env | sort
- 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
# FIXME: Some of our checks still do not run correctly on silicon yet (and probably never will)
if: matrix.build-tool == 'cmake' && matrix.version != 14
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
# FIXME: Some of our checks still do not run correctly on silicon yet (and probably never will)
if: matrix.build-tool == 'autotools' && matrix.version != 14
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; \
}