Some checks failed
CI / Check spelling (pull_request) Successful in 18s
CI / Check coding style (pull_request) Successful in 31s
CI / Linux (ubuntu) (pull_request) Failing after 1m19s
CI / Linux (debian) (pull_request) Failing after 1m32s
CI / Linux (arch) (pull_request) Has been cancelled
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 ${tests[0]} --enable-valgrind $*"
|
|
echo
|
|
|
|
# shellcheck disable=SC2086
|
|
./configure ${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 ${features} $*"
|
|
echo
|
|
|
|
# shellcheck disable=SC2086
|
|
./configure -C $features $*
|
|
|
|
$MAKE CC="${CC}"
|
|
$MAKE check
|
|
|
|
./profanity -v
|
|
$MAKE clean
|
|
done
|