diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89cb991..dd580de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,8 +4,7 @@ name: Build and test (OS matrix) on: [push, pull_request, workflow_dispatch] jobs: - - build-and-test-ubuntu: + validation-linux: strategy: fail-fast: false # don't cancel other jobs in the matrix if one fails matrix: @@ -22,6 +21,12 @@ jobs: - runner: ubuntu-20.04 container: ubuntu:23.04 os_name: ubuntu-23.04 + - runner: ubuntu-20.04 + container: redhat/ubi8:8.8 + os_name: redhat-8.8 + - runner: ubuntu-20.04 + container: redhat/ubi9:9.2 + os_name: redhat-9.2 runs-on: ${{ matrix.runner }} @@ -36,14 +41,33 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Fetch package lists - run: apt-get -y update - - - name: Install dependencies + - name: Fetch package lists and install dependencies (Ubuntu) + if: contains(matrix.os_name, 'ubuntu-') run: | + apt-get -y update DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated --allow-downgrades --allow-remove-essential --allow-change-held-packages \ install make gcc libevent-dev libmsgpack-dev curl uuid nodejs python3 python3-pip + # (using `rm` + `ln` since using `alternatives` doesn't work on both UBI 8 and UBI 9) + - name: Install dependencies (Red Hat) + if: contains(matrix.os_name, 'redhat-') + run: | + yum install -y --allowerasing make cmake gcc gcc-c++ libevent-devel git curl uuid nodejs python3.11 python3.11-pip + rm -f /usr/bin/python3 /usr/bin/pip3 + ln -s $(which python3.11) /usr/bin/python3 + ln -s $(which pip3.11) /usr/bin/pip3 + + - name: Install msgpack-c (Red Hat) + if: contains(matrix.os_name, 'redhat-') + run: | + cd /tmp + curl -sLO https://github.com/msgpack/msgpack-c/releases/download/c-6.0.0/msgpack-c-6.0.0.tar.gz + tar -xzf msgpack-c-6.0.0.tar.gz + cd msgpack-c-6.0.0 + cmake -DMSGPACK_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 . + make + make install + - name: Fix pip3 on Ubuntu 23.04 if: matrix.os_name == 'ubuntu-23.04' run: rm -f /usr/lib/python$(python3 --version | cut -d ' ' -f 2 | cut -d '.' -f 1,2)/EXTERNALLY-MANAGED @@ -73,8 +97,7 @@ jobs: path: webdis.log - - build-and-test-macos: + validation-macos: strategy: fail-fast: false matrix: diff --git a/Makefile b/Makefile index 64a0482..0cb051f 100644 --- a/Makefile +++ b/Makefile @@ -38,10 +38,18 @@ ifeq ($(strip $(MSGPACKC_LD)),0) FORMAT_OBJS += src/formats/msgpack.o CFLAGS += -DMSGPACK=1 LDFLAGS += -lmsgpackc -endif -endif -endif -endif +else +# check for MessagePack-C (note the dash) +MSGPACK_C_LD=$(shell ld -lmsgpack-c >/dev/null 2>/dev/null; echo $$?) +ifeq ($(strip $(MSGPACK_C_LD)),0) + FORMAT_OBJS += src/formats/msgpack.o + CFLAGS += -DMSGPACK=1 + LDFLAGS += -lmsgpack-c +endif # MSGPACK_C_LD +endif # MSGPACKC_LD +endif # MSGPACK_OSX_LIB +endif # MSGPACKC_LIB +endif # MSGPACK_LIB # if `make` is run with DEBUG=1, include debug symbols DEBUG_FLAGS=