ci: combine static and shared linking build tests
Save some cpu time and disk by testing linking against static and shared library in single environments. The .ci/linux-build.sh is modified so it reconfigures an existing build directory: an empty DEF_LIB= means that static and shared builds are to be tested. ABI checks, documentation generation and unit tests are disabled for static builds as they would be redundant with the check against dynamically linked binaries, if any. Note: - --cross-file is an option that can be passed to meson only when creating a build environment, - for some other reason, --buildtype and other non -D options are only accepted when setting up a build directory with meson. When reconfiguring, only their -D$option forms are accepted, Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Aaron Conole <aconole@redhat.com>
This commit is contained in:
parent
04d59ab2cf
commit
1785806098
@ -1,5 +1,11 @@
|
||||
#!/bin/sh -xe
|
||||
|
||||
if [ -z "${DEF_LIB:-}" ]; then
|
||||
DEF_LIB=static ABI_CHECKS= BUILD_DOCS= RUN_TESTS= $0
|
||||
DEF_LIB=shared $0
|
||||
exit
|
||||
fi
|
||||
|
||||
# Builds are run as root in containers, no need for sudo
|
||||
[ "$(id -u)" != '0' ] || alias sudo=
|
||||
|
||||
@ -78,10 +84,6 @@ if [ "$RISCV64" = "true" ]; then
|
||||
cross_file=config/riscv/riscv64_linux_gcc
|
||||
fi
|
||||
|
||||
if [ -n "$cross_file" ]; then
|
||||
OPTS="$OPTS --cross-file $cross_file"
|
||||
fi
|
||||
|
||||
if [ "$BUILD_DOCS" = "true" ]; then
|
||||
OPTS="$OPTS -Denable_docs=true"
|
||||
fi
|
||||
@ -101,8 +103,8 @@ else
|
||||
fi
|
||||
|
||||
OPTS="$OPTS -Dplatform=generic"
|
||||
OPTS="$OPTS --default-library=$DEF_LIB"
|
||||
OPTS="$OPTS --buildtype=debugoptimized"
|
||||
OPTS="$OPTS -Ddefault_library=$DEF_LIB"
|
||||
OPTS="$OPTS -Dbuildtype=debugoptimized"
|
||||
OPTS="$OPTS -Dcheck_includes=true"
|
||||
if [ "$MINI" = "true" ]; then
|
||||
OPTS="$OPTS -Denable_drivers=net/null"
|
||||
@ -118,7 +120,16 @@ if [ "$ASAN" = "true" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
meson build --werror $OPTS
|
||||
OPTS="$OPTS -Dwerror=true"
|
||||
|
||||
if [ -d build ]; then
|
||||
meson configure build $OPTS
|
||||
else
|
||||
if [ -n "$cross_file" ]; then
|
||||
OPTS="$OPTS --cross-file $cross_file"
|
||||
fi
|
||||
meson setup build $OPTS
|
||||
fi
|
||||
ninja -C build
|
||||
|
||||
if [ -z "$cross_file" ]; then
|
||||
|
28
.github/workflows/build.yml
vendored
28
.github/workflows/build.yml
vendored
@ -35,21 +35,12 @@ jobs:
|
||||
config:
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: static
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: shared
|
||||
mini: mini
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: shared
|
||||
checks: doc+tests
|
||||
- os: ubuntu-20.04
|
||||
compiler: clang
|
||||
library: static
|
||||
- os: ubuntu-20.04
|
||||
compiler: clang
|
||||
library: shared
|
||||
checks: asan+doc+tests
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
@ -61,23 +52,12 @@ jobs:
|
||||
cross: mingw
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: static
|
||||
cross: aarch64
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: shared
|
||||
cross: aarch64
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: static
|
||||
cross: ppc64le
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: shared
|
||||
cross: ppc64le
|
||||
- os: ubuntu-20.04
|
||||
compiler: gcc
|
||||
library: shared
|
||||
cross: riscv64
|
||||
|
||||
steps:
|
||||
@ -222,16 +202,8 @@ jobs:
|
||||
config:
|
||||
- image: fedora:35
|
||||
compiler: gcc
|
||||
library: static
|
||||
- image: fedora:35
|
||||
compiler: gcc
|
||||
library: shared
|
||||
- image: fedora:35
|
||||
compiler: clang
|
||||
library: static
|
||||
- image: fedora:35
|
||||
compiler: clang
|
||||
library: shared
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
|
Loading…
Reference in New Issue
Block a user