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:
David Marchand 2022-10-17 16:07:31 +02:00
parent 04d59ab2cf
commit 1785806098
2 changed files with 18 additions and 35 deletions

View File

@ -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

View File

@ -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