mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-18 23:06:06 -05:00
Some checks failed
ci / build (push) Has been cancelled
* - Remove SDK_VERSION and only run failed jobs, echo windows config.log * Use commented out to fix syntax of ci. * - Turn off succeeded tests, only link libssp for cross compile, use no-shared for openssl ios. * - Remove iPhone armv7s, and iPhoneSimulator i386 from ios ci. The lib system does not provide symbols for it on the new macos runner. - Fix to exclude libssp for windows compiles.
392 lines
16 KiB
YAML
392 lines
16 KiB
YAML
name: Analysis and Ports
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
start:
|
|
description: 'Start analysis and port workflow'
|
|
default: 'yes'
|
|
required: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: GCC on Linux
|
|
os: ubuntu-latest
|
|
config: "--enable-debug --disable-flto"
|
|
make_test: "yes"
|
|
- name: Clang-analyzer
|
|
os: ubuntu-latest
|
|
config: "CC=clang --enable-debug --disable-flto --disable-static"
|
|
make_test: "yes"
|
|
clang_analysis: "yes"
|
|
- name: libevent
|
|
os: ubuntu-latest
|
|
install_libevent: "yes"
|
|
config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static"
|
|
make_test: "yes"
|
|
clang_analysis: "yes"
|
|
- name: OS X
|
|
os: macos-latest
|
|
install_expat: "yes"
|
|
config: "--enable-debug --disable-flto --with-ssl=/opt/homebrew/opt/openssl --with-libexpat=/opt/homebrew/opt/expat"
|
|
make_test: "yes"
|
|
- name: Clang on OS X
|
|
os: macos-latest
|
|
install_expat: "yes"
|
|
config: "CC=clang --enable-debug --disable-flto --with-ssl=/opt/homebrew/opt/openssl --with-libexpat=/opt/homebrew/opt/expat --disable-static"
|
|
make_test: "yes"
|
|
clang_analysis: "yes"
|
|
- name: ubsan (gcc undefined behaviour sanitizer)
|
|
os: ubuntu-latest
|
|
config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static'
|
|
make_test: "yes"
|
|
- name: asan (gcc address sanitizer)
|
|
os: ubuntu-latest
|
|
config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static'
|
|
make_test: "yes"
|
|
- name: Apple iPhone on iOS, arm64
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: aarch64-apple-ios
|
|
OPENSSL_HOST: ios64-cross
|
|
IOS_SDK: iPhoneOS
|
|
IOS_CPU: arm64
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Apple TV on iOS, arm64
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: aarch64-apple-ios
|
|
OPENSSL_HOST: ios64-cross
|
|
IOS_SDK: AppleTVOS
|
|
IOS_CPU: arm64
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Apple Watch on iOS, armv7
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: armv7-apple-ios
|
|
OPENSSL_HOST: ios-cross
|
|
IOS_SDK: WatchOS
|
|
IOS_CPU: armv7k
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: iPhoneSimulator on OS X, x86_64
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: x86_64-apple-ios
|
|
OPENSSL_HOST: iphoneos-cross
|
|
IOS_SDK: iPhoneSimulator
|
|
IOS_CPU: x86_64
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: AppleTVSimulator on OS X, x86_64
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: x86_64-apple-ios
|
|
OPENSSL_HOST: iphoneos-cross
|
|
IOS_SDK: AppleTVSimulator
|
|
IOS_CPU: x86_64
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: WatchSimulator on OS X, i386
|
|
os: macos-latest
|
|
AUTOTOOLS_HOST: i386-apple-ios
|
|
OPENSSL_HOST: iphoneos-cross
|
|
IOS_SDK: WatchSimulator
|
|
IOS_CPU: i386
|
|
test_ios: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Android armv7a
|
|
os: ubuntu-latest
|
|
AUTOTOOLS_HOST: armv7a-linux-androidabi
|
|
OPENSSL_HOST: android-arm
|
|
ANDROID_CPU: armv7a
|
|
ANDROID_API: 23
|
|
test_android: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Android aarch64
|
|
os: ubuntu-latest
|
|
AUTOTOOLS_HOST: aarch64-linux-android
|
|
OPENSSL_HOST: android-arm64
|
|
ANDROID_CPU: aarch64
|
|
ANDROID_API: 23
|
|
test_android: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Android x86
|
|
os: ubuntu-latest
|
|
AUTOTOOLS_HOST: i686-linux-android
|
|
OPENSSL_HOST: android-x86
|
|
ANDROID_CPU: x86
|
|
ANDROID_API: 23
|
|
test_android: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Android x86_64
|
|
os: ubuntu-latest
|
|
AUTOTOOLS_HOST: x86_64-linux-android
|
|
OPENSSL_HOST: android-x86_64
|
|
ANDROID_CPU: x86_64
|
|
ANDROID_API: 23
|
|
test_android: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: Windows
|
|
os: windows-latest
|
|
test_windows: "yes"
|
|
config: "no"
|
|
make: "no"
|
|
- name: FreeBSD
|
|
os: ubuntu-latest
|
|
config: "no"
|
|
make: "no"
|
|
with_cross_platform_action: "yes"
|
|
cross_platform_os: "freebsd"
|
|
cross_platform_arch: "x86-64"
|
|
cross_platform_version: "14.1"
|
|
cross_platform_config: "--enable-debug --disable-flto --with-libevent --disable-static"
|
|
- name: OpenBSD
|
|
os: ubuntu-latest
|
|
config: "no"
|
|
make: "no"
|
|
with_cross_platform_action: "yes"
|
|
cross_platform_os: "openbsd"
|
|
cross_platform_arch: "x86-64"
|
|
cross_platform_version: "7.5"
|
|
cross_platform_config: "--enable-debug --disable-flto --with-libevent --disable-static"
|
|
- name: NetBSD
|
|
os: ubuntu-latest
|
|
config: "no"
|
|
make: "no"
|
|
with_cross_platform_action: "yes"
|
|
cross_platform_os: "netbsd"
|
|
cross_platform_arch: "x86-64"
|
|
cross_platform_version: "10.0"
|
|
cross_platform_config: "--enable-debug --disable-flto --with-libevent --disable-static"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: false
|
|
persist-credentials: false
|
|
- name: test_windows
|
|
if: ${{ matrix.test_windows == 'yes' }}
|
|
env:
|
|
LIBEXPAT_FNAME: expat-2.7.0
|
|
LIBEXPAT_VERSION_DIR: R_2_7_0
|
|
shell: bash
|
|
run: |
|
|
export unboundpath=`pwd`
|
|
echo unboundpath=${unboundpath}
|
|
cd ..
|
|
export prepath=`pwd`
|
|
echo prepath=${prepath}
|
|
echo "choco install winflexbison3"
|
|
choco install winflexbison3
|
|
echo 'LEX="win_flex"'
|
|
export LEX="win_flex"
|
|
echo 'YACC="win_bison -y"'
|
|
export YACC="win_bison -y"
|
|
mkdir openssl
|
|
echo "curl openssl"
|
|
curl -L -k -s -S -o openssl-3.2.0.tar.gz https://www.openssl.org/source/openssl-3.2.0.tar.gz
|
|
tar xzf openssl-3.2.0.tar.gz
|
|
cd openssl-3.2.0
|
|
# remove pod::Usage because we do not need -help or -man output
|
|
# from the Configure script, this fixes it for openssl 1.1.1
|
|
#echo "Fixup ./Configure by removing use Pod::Usage require"
|
|
#sed -e 's/use Pod::Usage//' < Configure > Configure.fix
|
|
# ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl"
|
|
# pacman is used to install for msys2, with
|
|
# C:/msys64/usr/bin/pacman -S perl
|
|
echo "C:/msys64/usr/bin/perl ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix=\""$prepath/openssl"\" PERL=\"C:/msys64/usr/bin/perl\""
|
|
C:/msys64/usr/bin/perl ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl" PERL="C:/msys64/usr/bin/perl"
|
|
# make the libs only, build faster
|
|
echo "make build_libs"
|
|
#make
|
|
make build_libs
|
|
mv Makefile Makefile.orig
|
|
# fixup \\ in the installtop to /.
|
|
echo "fixup INSTALLTOP"
|
|
sed -e 's?^INSTALLTOP=.*$?INSTALLTOP='"$prepath"'/openssl?' < Makefile.orig > Makefile
|
|
# install the includes and libs only, build faster
|
|
echo "make install_dev"
|
|
#make install_sw
|
|
make install_dev
|
|
cd ..
|
|
mkdir expat
|
|
echo "curl expat"
|
|
curl -L -k -s -S -o $LIBEXPAT_FNAME.tar.gz https://github.com/libexpat/libexpat/releases/download/$LIBEXPAT_VERSION_DIR/$LIBEXPAT_FNAME.tar.gz
|
|
tar xzf $LIBEXPAT_FNAME.tar.gz
|
|
cd $LIBEXPAT_FNAME
|
|
echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\""
|
|
./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib"
|
|
# fixup SHELL is treated specially, but SHELZZ is not by make.
|
|
echo "Fixup Makefiles by renaming SHELL to SHELLZZ"
|
|
mv Makefile Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < Makefile.orig > Makefile
|
|
mv lib/Makefile lib/Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < lib/Makefile.orig > lib/Makefile
|
|
mv doc/Makefile doc/Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < doc/Makefile.orig > doc/Makefile
|
|
mv examples/Makefile examples/Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < examples/Makefile.orig > examples/Makefile
|
|
mv tests/Makefile tests/Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < tests/Makefile.orig > tests/Makefile
|
|
mv xmlwf/Makefile xmlwf/Makefile.orig
|
|
sed -e 's/SHELL/SHELLZZ/g' < xmlwf/Makefile.orig > xmlwf/Makefile
|
|
echo "make"
|
|
make
|
|
echo "make install"
|
|
make install
|
|
cd ..
|
|
echo "unbound"
|
|
cd unbound
|
|
echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\" --disable-shared"
|
|
./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" --disable-shared
|
|
make
|
|
# specific test output
|
|
#make testbound.exe; ./testbound.exe -s
|
|
#make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv
|
|
make test
|
|
- name: test_android
|
|
if: ${{ matrix.test_android == 'yes' }}
|
|
env:
|
|
AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }}
|
|
OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }}
|
|
ANDROID_API: ${{ matrix.ANDROID_API }}
|
|
ANDROID_CPU: ${{ matrix.ANDROID_CPU }}
|
|
run: |
|
|
#(already installed) ./contrib/android/install_tools.sh
|
|
export ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
|
|
echo ANDROID_PREFIX=${ANDROID_PREFIX}
|
|
export ANDROID_SDK_ROOT="$HOME/android-sdk"
|
|
echo ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}
|
|
export ANDROID_NDK_ROOT="$HOME/android-ndk"
|
|
echo ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT}
|
|
export AUTOTOOLS_BUILD="$(./config.guess)"
|
|
echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD}
|
|
export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig"
|
|
echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
|
|
export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$ANDROID_PREFIX --with-ssl=$ANDROID_PREFIX --disable-gost --with-libexpat=$ANDROID_PREFIX"
|
|
echo CONFIG_OPTS=${CONFIG_OPTS}
|
|
echo "::group::install_ndk"
|
|
echo "./contrib/android/install_ndk.sh"
|
|
./contrib/android/install_ndk.sh
|
|
echo "::endgroup::"
|
|
echo "::group::setenv_android.sh"
|
|
echo "./contrib/android/setenv_android.sh"
|
|
source ./contrib/android/setenv_android.sh
|
|
echo "::endgroup::"
|
|
echo "::group::install_openssl"
|
|
echo "./contrib/android/install_openssl.sh"
|
|
./contrib/android/install_openssl.sh
|
|
echo "::endgroup::"
|
|
echo "::group::install_expat"
|
|
echo "./contrib/android/install_expat.sh"
|
|
./contrib/android/install_expat.sh
|
|
echo "::endgroup::"
|
|
echo "::group::configure"
|
|
echo "./configure ${CONFIG_OPTS}"
|
|
./configure ${CONFIG_OPTS}
|
|
echo "::endgroup::"
|
|
echo "::group::make"
|
|
# make is here to preserve environment variables
|
|
make
|
|
echo "::endgroup::"
|
|
echo "::group::make install"
|
|
make install
|
|
echo "::endgroup::"
|
|
- name: test ios
|
|
if: ${{ matrix.test_ios == 'yes' }}
|
|
env:
|
|
AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }}
|
|
OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }}
|
|
IOS_SDK: ${{ matrix.IOS_SDK }}
|
|
IOS_CPU: ${{ matrix.IOS_CPU }}
|
|
run: |
|
|
#(already installed) ./contrib/ios/install_tools.sh
|
|
export AUTOTOOLS_BUILD="$(./config.guess)"
|
|
echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD}
|
|
export IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
|
echo IOS_PREFIX=${IOS_PREFIX}
|
|
export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig"
|
|
echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH}
|
|
export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX"
|
|
echo CONFIG_OPTS=${CONFIG_OPTS}
|
|
echo "::group::setenv_ios.sh"
|
|
echo "./contrib/ios/setenv_ios.sh"
|
|
source ./contrib/ios/setenv_ios.sh
|
|
echo "::endgroup::"
|
|
echo "::group::install_openssl"
|
|
echo "./contrib/ios/install_openssl.sh"
|
|
./contrib/ios/install_openssl.sh
|
|
echo "::endgroup::"
|
|
echo "::group::install_expat"
|
|
echo "./contrib/ios/install_expat.sh"
|
|
./contrib/ios/install_expat.sh
|
|
echo "::endgroup::"
|
|
echo "::group::configure"
|
|
echo "./configure ${CONFIG_OPTS}"
|
|
./configure ${CONFIG_OPTS}
|
|
echo "::endgroup::"
|
|
echo "::group::make"
|
|
# make is here to preserve environment variables
|
|
make
|
|
echo "::endgroup::"
|
|
echo "::group::make install"
|
|
make install
|
|
echo "::endgroup::"
|
|
- name: cross-platform-action on ${{ matrix.cross_platform_os }} ${{ matrix.cross_platform_version }}
|
|
if: ${{ matrix.with_cross_platform_action == 'yes' }}
|
|
uses: cross-platform-actions/action@v0.25.0
|
|
env:
|
|
CROSS_PLATFORM_OS: ${{ matrix.cross_platform_os }}
|
|
with:
|
|
environment_variables: CROSS_PLATFORM_OS
|
|
operating_system: ${{ matrix.cross_platform_os }}
|
|
architecture: ${{ matrix.cross_platform_arch }}
|
|
version: ${{ matrix.cross_platform_version }}
|
|
shell: bash
|
|
memory: 4G
|
|
cpu_count: 2
|
|
run: |
|
|
set -e -x
|
|
if test "$CROSS_PLATFORM_OS" = "freebsd"; then sudo pkg install -y openssl libevent expat; fi
|
|
if test "$CROSS_PLATFORM_OS" = "openbsd"; then sudo pkg_add libevent; fi
|
|
if test "$CROSS_PLATFORM_OS" = "netbsd"; then sudo pkgin -y install libevent; fi
|
|
echo "::group::configure"
|
|
./configure ${{ matrix.cross_platform_config }}
|
|
echo "::endgroup::"
|
|
echo "::group::make"
|
|
make
|
|
echo "::endgroup::"
|
|
echo "::group::make test"
|
|
make test
|
|
echo "::endgroup::"
|
|
- name: install libevent
|
|
if: ${{ matrix.install_libevent == 'yes' }}
|
|
run: sudo apt-get install libevent-dev
|
|
- name: install expat
|
|
if: ${{ matrix.install_expat == 'yes' }}
|
|
run: brew install expat
|
|
- name: configure
|
|
if: ${{ matrix.config != 'no' }}
|
|
run: ./configure ${{ matrix.config }}
|
|
- name: make
|
|
if: ${{ matrix.make != 'no' }}
|
|
run: make
|
|
- name: make test
|
|
if: ${{ matrix.make_test == 'yes' }}
|
|
run: make test
|
|
- name: clang-analysis
|
|
if: ${{ matrix.clang_analysis == 'yes' }}
|
|
run: (cd testdata/clang-analysis.tdir; bash clang-analysis.test)
|