diff options
Diffstat (limited to 'ci')
-rwxr-xr-x | ci/build.sh | 53 | ||||
-rwxr-xr-x | ci/install-dependencies.sh | 77 |
2 files changed, 130 insertions, 0 deletions
diff --git a/ci/build.sh b/ci/build.sh new file mode 100755 index 00000000..c50bb7f2 --- /dev/null +++ b/ci/build.sh @@ -0,0 +1,53 @@ +#!/bin/sh -ex +# +# Copyright (c) 2018-2024 The strace developers. +# All rights reserved. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +opts='-Doptimization=2 -Dwerror=true -Dpam_lastlog=enabled' + +case "${VENDORDIR-}" in + */*) + opts="$opts -Dvendordir=$VENDORDIR" + ;; +esac + +case "${USE_OPENSSL-}" in + yes) + opts="$opts -Dopenssl=enabled" + ;; +esac + +case "${ENABLE_DEBUG-}" in + yes) + opts="$opts -Dpam-debug=true" + ;; +esac + +echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION' +uname -a |head -1 +libc="$(ldd /bin/sh |sed -n 's|^[^/]*\(/[^ ]*/libc\.so[^ ]*\).*|\1|p' |head -1)" +$libc |head -1 +$CC --version |head -1 +meson --version |head -1 +ninja --version |head -1 +kver="$(printf '%s\n%s\n' '#include <linux/version.h>' 'LINUX_VERSION_CODE' | $CC -E -P -)" +printf 'kernel-headers %s.%s.%s\n' $((kver/65536)) $((kver/256%256)) $((kver%256)) +echo 'END OF BUILD ENVIRONMENT INFORMATION' + +mkdir build +meson setup $opts build + +# If "meson dist" supported -v option, it could be used here +# instead of all subsequent individual meson commands. + +meson compile -v -C build +mkdir build/destdir +DESTDIR=$(pwd)/build/destdir meson install -C build +meson test -v -C build + +if git status --porcelain |grep '^?'; then + echo >&2 'git status reported untracked files' + exit 1 +fi diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh new file mode 100755 index 00000000..d38aba98 --- /dev/null +++ b/ci/install-dependencies.sh @@ -0,0 +1,77 @@ +#!/bin/sh -ex +# +# Copyright (c) 2018-2019 The strace developers. +# All rights reserved. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +j=-j`nproc` || j= +type sudo >/dev/null 2>&1 && sudo=sudo || sudo= +packages=" +bison +docbook5-xml +docbook-xsl-ns +flex +gettext +libaudit-dev +libdb-dev +libfl-dev +libselinux1-dev +libssl-dev +libxml2-utils +meson +pkg-config +sed +w3m +xsltproc +xz-utils +$CC" + +retry_if_failed() +{ + for i in `seq 0 99`; do + "$@" && i= && break || sleep 1 + done + [ -z "$i" ] +} + +updated= +apt_get_install() +{ + [ -n "$updated" ] || { + retry_if_failed $sudo apt-get -qq update + updated=1 + } + retry_if_failed $sudo \ + apt-get -qq --no-install-suggests --no-install-recommends \ + install -y "$@" +} + +case "$CC" in + gcc-*) + retry_if_failed \ + $sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + ;; +esac + +case "$TARGET" in + x32|x86) + packages="$packages gcc-multilib" + case "$CC" in + gcc-*) packages="$packages $CC-multilib" ;; + esac + ;; +esac + +apt_get_install $packages + +case "${CHECK-}" in + coverage) + apt_get_install lcov python-pip python-setuptools + retry_if_failed \ + pip install --user codecov + ;; + valgrind) + apt_get_install valgrind + ;; +esac |