All checks were successful
CI Code / Check spelling (pull_request) Successful in 23s
CI Code / Check coding style (pull_request) Successful in 38s
CI Code / Linux (arch) (pull_request) Successful in 12m20s
CI Code / Linux (ubuntu) (pull_request) Successful in 14m59s
CI Code / Linux (debian) (pull_request) Successful in 15m18s
Add the -C flag to ./configure to enable caching, reducing redundant resource fetching during builds when packages and the machine remain unchanged. Caching may cause issues only if applied across different machines or if packages are modified, neither of which is the case during the build.
155 lines
4.5 KiB
Bash
Executable File
155 lines
4.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
log_content()
|
|
{
|
|
echo
|
|
echo "Content of $1:"
|
|
cat "$1"
|
|
}
|
|
|
|
error_handler()
|
|
{
|
|
ERR_CODE=$?
|
|
|
|
log_content ./config.log
|
|
log_content ./test-suite.log
|
|
log_content ./test-suite-memcheck.log
|
|
|
|
echo
|
|
echo "Error ${ERR_CODE} with command '${BASH_COMMAND}' on line ${BASH_LINENO[0]}. Exiting."
|
|
echo
|
|
exit ${ERR_CODE}
|
|
}
|
|
|
|
trap error_handler ERR
|
|
|
|
num_cores()
|
|
{
|
|
# Check for cores, for systems with:
|
|
# Line 1. Linux w/ coreutils, or...
|
|
# Line 2. OpenBSD, FreeBSD, NetBSD or macOS, or...
|
|
# Line 3. Fallback for Linux w/o coreutils (glibc).
|
|
nproc \
|
|
|| sysctl -n hw.ncpu \
|
|
|| getconf _NPROCESSORS_ONLN 2>/dev/null
|
|
}
|
|
|
|
./bootstrap.sh
|
|
|
|
tests=()
|
|
MAKE="make --quiet -j$(num_cores)"
|
|
CC="gcc"
|
|
|
|
ARCH="$(uname | tr '[:upper:]' '[:lower:]')"
|
|
|
|
case "$ARCH" in
|
|
linux*)
|
|
tests=(
|
|
"--enable-notifications --enable-icons-and-clipboard --enable-otr --enable-pgp
|
|
--enable-omemo --enable-plugins --enable-c-plugins
|
|
--enable-python-plugins --with-xscreensaver --enable-omemo-qrcode --enable-gdk-pixbuf"
|
|
"--disable-notifications --disable-icons-and-clipboard --disable-otr --disable-pgp
|
|
--disable-omemo --disable-plugins --disable-c-plugins
|
|
--disable-python-plugins --without-xscreensaver"
|
|
"--disable-notifications"
|
|
"--disable-icons-and-clipboard"
|
|
"--disable-otr"
|
|
"--disable-pgp"
|
|
"--disable-omemo --disable-omemo-qrcode"
|
|
"--disable-pgp --disable-otr"
|
|
"--disable-pgp --disable-otr --disable-omemo"
|
|
"--disable-plugins"
|
|
"--disable-python-plugins"
|
|
"--disable-c-plugins"
|
|
"--disable-c-plugins --disable-python-plugins"
|
|
"--without-xscreensaver"
|
|
"--disable-gdk-pixbuf"
|
|
"")
|
|
source /etc/profile.d/debuginfod.sh 2>/dev/null || true
|
|
;;
|
|
darwin*)
|
|
tests=(
|
|
"--enable-notifications --enable-icons-and-clipboard --enable-otr --enable-pgp
|
|
--enable-omemo --enable-plugins --enable-c-plugins
|
|
--enable-python-plugins"
|
|
"--disable-notifications --disable-icons-and-clipboard --disable-otr --disable-pgp
|
|
--disable-omemo --disable-plugins --disable-c-plugins
|
|
--disable-python-plugins"
|
|
"--disable-notifications"
|
|
"--disable-icons-and-clipboard"
|
|
"--disable-otr"
|
|
"--disable-pgp"
|
|
"--disable-omemo"
|
|
"--disable-pgp --disable-otr"
|
|
"--disable-pgp --disable-otr --disable-omemo"
|
|
"--disable-plugins"
|
|
"--disable-python-plugins"
|
|
"--disable-c-plugins"
|
|
"--disable-c-plugins --disable-python-plugins"
|
|
"")
|
|
;;
|
|
openbsd*)
|
|
MAKE="gmake"
|
|
# TODO(#1231):
|
|
# `-std=gnu99 -fexec-charset=UTF-8` to silence:
|
|
# src/event/server_events.c:1453:19: error: universal character names are only valid in C++ and C99
|
|
# src/event/server_events.c:1454:19: error: universal character names are only valid in C++ and C99
|
|
CC="egcc -std=gnu99 -fexec-charset=UTF-8"
|
|
|
|
tests=(
|
|
"--enable-notifications --enable-icons-and-clipboard --enable-otr --enable-pgp
|
|
--enable-omemo --enable-plugins --enable-c-plugins
|
|
--enable-python-plugins"
|
|
"--disable-notifications --disable-icons-and-clipboard --disable-otr --disable-pgp
|
|
--disable-omemo --disable-plugins --disable-c-plugins
|
|
--disable-python-plugins"
|
|
"--disable-notifications"
|
|
"--disable-icons-and-clipboard"
|
|
"--disable-otr"
|
|
"--disable-pgp"
|
|
"--disable-omemo"
|
|
"--disable-pgp --disable-otr"
|
|
"--disable-pgp --disable-otr --disable-omemo"
|
|
"--disable-plugins"
|
|
"--disable-python-plugins"
|
|
"--disable-c-plugins"
|
|
"--disable-c-plugins --disable-python-plugins"
|
|
"")
|
|
;;
|
|
esac
|
|
|
|
case "$ARCH" in
|
|
linux*)
|
|
echo
|
|
echo "--> Building with ./configure -C ${tests[0]} --enable-valgrind $*"
|
|
echo
|
|
|
|
# shellcheck disable=SC2086
|
|
./configure -C ${tests[0]} --enable-valgrind $*
|
|
|
|
$MAKE CC="${CC}"
|
|
if grep '^ID=' /etc/os-release | grep -q -e debian; then
|
|
$MAKE check-valgrind
|
|
else
|
|
$MAKE check-valgrind || log_content ./test-suite-memcheck.log
|
|
fi
|
|
$MAKE distclean
|
|
;;
|
|
esac
|
|
|
|
for features in "${tests[@]}"
|
|
do
|
|
echo
|
|
echo "--> Building with ./configure -C ${features} $*"
|
|
echo
|
|
|
|
# shellcheck disable=SC2086
|
|
./configure -C $features $*
|
|
|
|
$MAKE CC="${CC}"
|
|
$MAKE check
|
|
|
|
./profanity -v
|
|
$MAKE clean
|
|
done
|