aboutsummaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
Diffstat (limited to 'ci')
-rwxr-xr-xci/build.sh53
-rwxr-xr-xci/install-dependencies.sh77
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