2019-03-25 15:32:08 +00:00
|
|
|
#!/bin/sh -xe
|
|
|
|
|
|
|
|
on_error() {
|
|
|
|
if [ $? = 0 ]; then
|
|
|
|
exit
|
|
|
|
fi
|
2021-01-25 15:05:39 +00:00
|
|
|
FILES_TO_PRINT="build/meson-logs/testlog.txt"
|
|
|
|
FILES_TO_PRINT="$FILES_TO_PRINT build/.ninja_log"
|
|
|
|
FILES_TO_PRINT="$FILES_TO_PRINT build/meson-logs/meson-log.txt"
|
|
|
|
FILES_TO_PRINT="$FILES_TO_PRINT build/gdb.log"
|
2019-03-25 15:32:08 +00:00
|
|
|
|
|
|
|
for pr_file in $FILES_TO_PRINT; do
|
|
|
|
if [ -e "$pr_file" ]; then
|
|
|
|
cat "$pr_file"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
# We capture the error logs as artifacts in Github Actions, no need to dump
|
|
|
|
# them via a EXIT handler.
|
|
|
|
[ -n "$GITHUB_WORKFLOW" ] || trap on_error EXIT
|
2019-03-25 15:32:08 +00:00
|
|
|
|
2020-02-18 20:13:54 +00:00
|
|
|
install_libabigail() {
|
|
|
|
version=$1
|
|
|
|
instdir=$2
|
|
|
|
|
|
|
|
wget -q "http://mirrors.kernel.org/sourceware/libabigail/${version}.tar.gz"
|
|
|
|
tar -xf ${version}.tar.gz
|
|
|
|
cd $version && autoreconf -vfi && cd -
|
|
|
|
mkdir $version/build
|
|
|
|
cd $version/build && ../configure --prefix=$instdir && cd -
|
|
|
|
make -C $version/build all install
|
|
|
|
rm -rf $version
|
|
|
|
rm ${version}.tar.gz
|
|
|
|
}
|
|
|
|
|
2021-01-25 15:05:39 +00:00
|
|
|
configure_coredump() {
|
|
|
|
# No point in configuring coredump without gdb
|
|
|
|
which gdb >/dev/null || return 0
|
|
|
|
ulimit -c unlimited
|
|
|
|
sudo sysctl -w kernel.core_pattern=/tmp/dpdk-core.%e.%p
|
|
|
|
}
|
|
|
|
|
|
|
|
catch_coredump() {
|
|
|
|
ls /tmp/dpdk-core.*.* 2>/dev/null || return 0
|
|
|
|
for core in /tmp/dpdk-core.*.*; do
|
|
|
|
binary=$(sudo readelf -n $core |grep $(pwd)/build/ 2>/dev/null |head -n1)
|
|
|
|
[ -x $binary ] || binary=
|
|
|
|
sudo gdb $binary -c $core \
|
|
|
|
-ex 'info threads' \
|
|
|
|
-ex 'thread apply all bt full' \
|
|
|
|
-ex 'quit'
|
|
|
|
done |tee -a build/gdb.log
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
if [ "$AARCH64" = "true" ]; then
|
2021-10-29 11:27:57 +00:00
|
|
|
# Note: common/cnxk is disabled for Ubuntu 18.04
|
|
|
|
# https://bugs.dpdk.org/show_bug.cgi?id=697
|
|
|
|
OPTS="$OPTS -Ddisable_drivers=common/cnxk"
|
|
|
|
if [ "${CC%%clang}" != "$CC" ]; then
|
|
|
|
OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_clang_ubuntu1804"
|
|
|
|
else
|
|
|
|
OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
|
2021-01-21 15:51:43 +00:00
|
|
|
fi
|
2019-03-25 15:32:08 +00:00
|
|
|
fi
|
|
|
|
|
2021-11-08 17:53:11 +00:00
|
|
|
if [ "$PPC64LE" = "true" ]; then
|
|
|
|
OPTS="$OPTS --cross-file config/ppc/ppc64le-power8-linux-gcc-ubuntu1804"
|
|
|
|
fi
|
|
|
|
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
if [ "$BUILD_DOCS" = "true" ]; then
|
2019-08-13 13:22:16 +00:00
|
|
|
OPTS="$OPTS -Denable_docs=true"
|
|
|
|
fi
|
|
|
|
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
if [ "$BUILD_32BIT" = "true" ]; then
|
2019-11-19 15:15:43 +00:00
|
|
|
OPTS="$OPTS -Dc_args=-m32 -Dc_link_args=-m32"
|
2022-02-11 11:36:41 +00:00
|
|
|
OPTS="$OPTS -Dcpp_args=-m32 -Dcpp_link_args=-m32"
|
2019-11-19 15:15:43 +00:00
|
|
|
export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig"
|
|
|
|
fi
|
|
|
|
|
2020-03-16 17:09:21 +00:00
|
|
|
if [ "$DEF_LIB" = "static" ]; then
|
|
|
|
OPTS="$OPTS -Dexamples=l2fwd,l3fwd"
|
|
|
|
else
|
|
|
|
OPTS="$OPTS -Dexamples=all"
|
|
|
|
fi
|
|
|
|
|
2021-10-11 13:40:41 +00:00
|
|
|
OPTS="$OPTS -Dplatform=generic"
|
2019-03-25 15:32:08 +00:00
|
|
|
OPTS="$OPTS --default-library=$DEF_LIB"
|
2020-02-02 21:08:34 +00:00
|
|
|
OPTS="$OPTS --buildtype=debugoptimized"
|
2021-01-29 16:55:59 +00:00
|
|
|
OPTS="$OPTS -Dcheck_includes=true"
|
2021-11-17 11:28:43 +00:00
|
|
|
if [ "$MINI" = "true" ]; then
|
2022-02-26 18:36:51 +00:00
|
|
|
OPTS="$OPTS -Denable_drivers=net/null"
|
2021-11-17 11:28:43 +00:00
|
|
|
OPTS="$OPTS -Ddisable_libs=*"
|
|
|
|
fi
|
2020-03-16 17:09:21 +00:00
|
|
|
meson build --werror $OPTS
|
2019-03-25 15:32:08 +00:00
|
|
|
ninja -C build
|
2019-08-02 21:25:52 +00:00
|
|
|
|
2021-11-08 17:53:11 +00:00
|
|
|
if [ "$AARCH64" != "true" ] && [ "$PPC64LE" != "true" ]; then
|
2021-01-25 15:05:39 +00:00
|
|
|
failed=
|
|
|
|
configure_coredump
|
|
|
|
devtools/test-null.sh || failed="true"
|
|
|
|
catch_coredump
|
|
|
|
[ "$failed" != "true" ]
|
2019-11-22 15:54:29 +00:00
|
|
|
fi
|
|
|
|
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
if [ "$ABI_CHECKS" = "true" ]; then
|
2020-02-18 20:13:54 +00:00
|
|
|
if [ "$(cat libabigail/VERSION 2>/dev/null)" != "$LIBABIGAIL_VERSION" ]; then
|
|
|
|
rm -rf libabigail
|
|
|
|
# if we change libabigail, invalidate existing abi cache
|
|
|
|
rm -rf reference
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -d libabigail ]; then
|
2022-02-08 13:47:15 +00:00
|
|
|
install_libabigail "$LIBABIGAIL_VERSION" $(pwd)/libabigail
|
2020-02-18 20:13:54 +00:00
|
|
|
echo $LIBABIGAIL_VERSION > libabigail/VERSION
|
|
|
|
fi
|
|
|
|
|
|
|
|
export PATH=$(pwd)/libabigail/bin:$PATH
|
|
|
|
|
2020-02-02 21:08:34 +00:00
|
|
|
REF_GIT_REPO=${REF_GIT_REPO:-https://dpdk.org/git/dpdk}
|
|
|
|
|
|
|
|
if [ "$(cat reference/VERSION 2>/dev/null)" != "$REF_GIT_TAG" ]; then
|
|
|
|
rm -rf reference
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -d reference ]; then
|
|
|
|
refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG)
|
2022-02-08 13:47:15 +00:00
|
|
|
git clone --single-branch -b "$REF_GIT_TAG" $REF_GIT_REPO $refsrcdir
|
2020-12-04 17:36:22 +00:00
|
|
|
meson $OPTS -Dexamples= $refsrcdir $refsrcdir/build
|
2020-02-02 21:08:34 +00:00
|
|
|
ninja -C $refsrcdir/build
|
|
|
|
DESTDIR=$(pwd)/reference ninja -C $refsrcdir/build install
|
|
|
|
devtools/gen-abi.sh reference
|
2020-12-04 17:36:22 +00:00
|
|
|
find reference/usr/local -name '*.a' -delete
|
|
|
|
rm -rf reference/usr/local/bin
|
|
|
|
rm -rf reference/usr/local/share
|
2020-02-02 21:08:34 +00:00
|
|
|
echo $REF_GIT_TAG > reference/VERSION
|
|
|
|
fi
|
|
|
|
|
|
|
|
DESTDIR=$(pwd)/install ninja -C build install
|
|
|
|
devtools/gen-abi.sh install
|
|
|
|
devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-}
|
|
|
|
fi
|
|
|
|
|
ci: hook to GitHub Actions
With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.
Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
Instead, they are gathered in a "catch-all" step and attached as
artifacts.
- A cache entry is stored once and for all, but if no cache is found you
can inherit from the default branch cache. The cache is 5GB large, for
the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
processors that don't have the same capabilities. For DPDK, this
impacts the ccache content since everything was built with
-march=native so far, and we will end up with binaries that can't run
in a later build. The problem has not been seen in Travis CI (?) but
it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
default ccache for the week (useful for the ovsrobot).
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
2020-12-04 17:36:21 +00:00
|
|
|
if [ "$RUN_TESTS" = "true" ]; then
|
2021-01-25 15:05:39 +00:00
|
|
|
failed=
|
|
|
|
configure_coredump
|
|
|
|
sudo meson test -C build --suite fast-tests -t 3 || failed="true"
|
|
|
|
catch_coredump
|
|
|
|
[ "$failed" != "true" ]
|
2019-08-02 21:25:52 +00:00
|
|
|
fi
|