--- /dev/null
+name: FreeBSD Build
+permissions:
+ contents: read
+
+on:
+ workflow_dispatch:
+ inputs:
+ freebsd_version:
+ description: 'FreeBSD version to use'
+ required: false
+ default: '14.2'
+ type: choice
+ options:
+ - '14.2'
+ - '13.4'
+ - '13.3'
+ lua_version:
+ description: 'Lua version to use'
+ required: false
+ default: 'luajit'
+ type: choice
+ options:
+ - 'luajit'
+ - 'lua51'
+ - 'lua53'
+ - 'lua54'
+
+jobs:
+ freebsd-build:
+ runs-on: ubuntu-latest
+ name: Build on FreeBSD ${{ inputs.freebsd_version }} with ${{ inputs.lua_version }}
+
+ steps:
+ - name: Check out source code
+ uses: actions/checkout@v4
+
+ - name: Build on FreeBSD
+ uses: vmactions/freebsd-vm@v1
+ with:
+ release: ${{ inputs.freebsd_version }}
+ usesh: true
+ prepare: |
+ # Update package repository
+ pkg update -f
+
+ # Install base build dependencies
+ pkg install -y cmake ninja pkgconf \
+ pcre2 sqlite3 openssl ragel icu \
+ libsodium glib libunwind \
+ perl5 libarchive libzstd xxhash \
+ hyperscan file ca_root_nss
+
+ # Install Lua version based on user selection
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ pkg install -y luajit
+ ;;
+ lua51)
+ pkg install -y lua51
+ ;;
+ lua53)
+ pkg install -y lua53
+ ;;
+ lua54)
+ pkg install -y lua54
+ ;;
+ esac
+
+ run: |
+ set -e
+
+ echo "==> Building Rspamd on FreeBSD $(freebsd-version) with ${{ inputs.lua_version }}"
+
+ # Determine Lua CMake flags
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ LUA_FLAGS="-DENABLE_LUAJIT=ON"
+ ;;
+ *)
+ LUA_FLAGS="-DENABLE_LUAJIT=OFF"
+ ;;
+ esac
+
+ # Create build directory
+ mkdir -p build
+ cd build
+
+ # Run CMake
+ echo "==> Running CMake configuration"
+ cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr/local \
+ -DENABLE_HYPERSCAN=ON \
+ $LUA_FLAGS \
+ -DSYSTEM_ZSTD=ON \
+ -DSYSTEM_XXHASH=ON \
+ ..
+
+ # Build
+ echo "==> Building Rspamd"
+ ninja -j$(sysctl -n hw.ncpu)
+
+ # Run tests
+ echo "==> Running C++ unit tests"
+ ./test/rspamd-test-cxx || echo "C++ tests failed"
+
+ echo "==> Running Lua unit tests"
+ ./test/rspamd-test -p /rspamd/lua || echo "Lua tests failed"
+
+ echo "==> Build completed successfully!"
type: choice
options:
- '10.0'
+ - '9.4'
- '9.3'
+ lua_version:
+ description: 'Lua version to use'
+ required: false
+ default: 'lua54'
+ type: choice
+ options:
+ - 'luajit'
+ - 'lua51'
+ - 'lua53'
+ - 'lua54'
jobs:
netbsd-build:
runs-on: ubuntu-latest
- name: Build on NetBSD ${{ inputs.netbsd_version }}
-
+ name: Build on NetBSD ${{ inputs.netbsd_version }} with ${{ inputs.lua_version }}
+
steps:
- name: Check out source code
uses: actions/checkout@v4
# Install base build dependencies
pkg_add cmake ninja-build pkgconf \
pcre2 sqlite3 openssl ragel icu \
- libsodium glib2 libunwind luajit \
- perl5 || true
- # Note: hyperscan may not be available on all NetBSD versions
+ libsodium glib2 libunwind \
+ perl5 libarchive zstd xxhash \
+ file
+
+ # Install Lua version based on user selection
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ pkg_add luajit
+ ;;
+ lua51)
+ pkg_add lua51
+ ;;
+ lua53)
+ pkg_add lua53
+ ;;
+ lua54)
+ pkg_add lua54
+ ;;
+ esac
+
run: |
set -e
-
- echo "==> Building Rspamd on NetBSD $(uname -r)"
-
+
+ echo "==> Building Rspamd on NetBSD $(uname -r) with ${{ inputs.lua_version }}"
+
+ # Determine Lua CMake flags
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ LUA_FLAGS="-DENABLE_LUAJIT=ON"
+ ;;
+ *)
+ LUA_FLAGS="-DENABLE_LUAJIT=OFF"
+ ;;
+ esac
+
# Create build directory
mkdir -p build
cd build
-
+
# Run CMake
echo "==> Running CMake configuration"
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
- -DENABLE_LUAJIT=ON \
+ -DENABLE_HYPERSCAN=OFF \
+ $LUA_FLAGS \
+ -DSYSTEM_ZSTD=ON \
+ -DSYSTEM_XXHASH=ON \
..
-
+
# Build
echo "==> Building Rspamd"
ninja -j$(sysctl -n hw.ncpu)
-
+
# Run tests
echo "==> Running C++ unit tests"
- test/rspamd-test-cxx || echo "C++ tests failed"
-
+ ./test/rspamd-test-cxx || echo "C++ tests failed"
+
echo "==> Running Lua unit tests"
- test/rspamd-test -p /rspamd/lua || echo "Lua tests failed"
-
+ ./test/rspamd-test -p /rspamd/lua || echo "Lua tests failed"
+
echo "==> Build completed successfully!"
--- /dev/null
+name: OpenBSD Build
+permissions:
+ contents: read
+
+on:
+ workflow_dispatch:
+ inputs:
+ openbsd_version:
+ description: 'OpenBSD version to use'
+ required: false
+ default: '7.6'
+ type: choice
+ options:
+ - '7.6'
+ - '7.5'
+ - '7.4'
+ lua_version:
+ description: 'Lua version to use'
+ required: false
+ default: 'luajit'
+ type: choice
+ options:
+ - 'luajit'
+ - 'lua51'
+ - 'lua53'
+
+jobs:
+ openbsd-build:
+ runs-on: ubuntu-latest
+ name: Build on OpenBSD ${{ inputs.openbsd_version }} with ${{ inputs.lua_version }}
+
+ steps:
+ - name: Check out source code
+ uses: actions/checkout@v4
+
+ - name: Build on OpenBSD
+ uses: vmactions/openbsd-vm@v1
+ with:
+ release: ${{ inputs.openbsd_version }}
+ usesh: true
+ prepare: |
+ # Install base build dependencies
+ pkg_add cmake ninja pkgconf \
+ pcre2 sqlite3 openssl ragel icu4c \
+ libsodium glib2 libunwind \
+ perl-5 libarchive zstd xxhash \
+ hyperscan file gettext-tools
+
+ # Install Lua version based on user selection
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ pkg_add luajit
+ ;;
+ lua51)
+ pkg_add lua%5.1
+ ;;
+ lua53)
+ pkg_add lua%5.3
+ ;;
+ esac
+
+ run: |
+ set -e
+
+ echo "==> Building Rspamd on OpenBSD $(uname -r) with ${{ inputs.lua_version }}"
+
+ # Determine Lua CMake flags
+ case "${{ inputs.lua_version }}" in
+ luajit)
+ LUA_FLAGS="-DENABLE_LUAJIT=ON"
+ ;;
+ *)
+ LUA_FLAGS="-DENABLE_LUAJIT=OFF"
+ ;;
+ esac
+
+ # Create build directory
+ mkdir -p build
+ cd build
+
+ # Run CMake
+ echo "==> Running CMake configuration"
+ cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr/local \
+ -DENABLE_HYPERSCAN=ON \
+ $LUA_FLAGS \
+ -DSYSTEM_ZSTD=ON \
+ -DSYSTEM_XXHASH=ON \
+ -DENABLE_JEMALLOC=OFF \
+ ..
+
+ # Build
+ echo "==> Building Rspamd"
+ ninja -j$(sysctl -n hw.ncpu)
+
+ # Run tests
+ echo "==> Running C++ unit tests"
+ ./test/rspamd-test-cxx || echo "C++ tests failed"
+
+ echo "==> Running Lua unit tests"
+ ./test/rspamd-test -p /rspamd/lua || echo "Lua tests failed"
+
+ echo "==> Build completed successfully!"