mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-26 22:16:22 +00:00
ci: Move CI related files into own directory
This commit is contained in:
67
ci/Dockerfile.arch
Normal file
67
ci/Dockerfile.arch
Normal file
@@ -0,0 +1,67 @@
|
||||
FROM archlinux
|
||||
|
||||
RUN pacman -Syu --noconfirm && pacman -S --needed --noconfirm \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
base-devel \
|
||||
check \
|
||||
cmake \
|
||||
cmocka \
|
||||
curl \
|
||||
debuginfod \
|
||||
doxygen \
|
||||
expat \
|
||||
gcc \
|
||||
git \
|
||||
gpgme \
|
||||
gtk2 \
|
||||
libgcrypt \
|
||||
libmicrohttpd \
|
||||
libnotify \
|
||||
libsignal-protocol-c \
|
||||
libomemo-c \
|
||||
libotr \
|
||||
libtool \
|
||||
libxss \
|
||||
make \
|
||||
openssl \
|
||||
pkg-config \
|
||||
python \
|
||||
wget \
|
||||
sqlite \
|
||||
valgrind \
|
||||
gdk-pixbuf2 \
|
||||
qrencode
|
||||
|
||||
RUN mkdir -p /usr/src/{stabber,profanity}
|
||||
|
||||
RUN useradd -mb /usr/src --shell=/bin/false aur && usermod -L aur
|
||||
USER aur
|
||||
|
||||
WORKDIR /usr/src/aur
|
||||
|
||||
# NOTE: These will change their extension to .tar.zst if a new snapshot is built
|
||||
# due to:
|
||||
# https://www.archlinux.org/news/now-using-zstandard-instead-of-xz-for-package-compression/
|
||||
RUN wget https://aur.archlinux.org/cgit/aur.git/snapshot/libstrophe-git.tar.gz
|
||||
|
||||
RUN tar -zxvf libstrophe-git.tar.gz
|
||||
|
||||
RUN pushd libstrophe-git && makepkg && popd
|
||||
|
||||
USER root
|
||||
|
||||
RUN pacman -U --noconfirm libstrophe-git/libstrophe-git-*.pkg.tar.zst
|
||||
|
||||
WORKDIR /usr/src
|
||||
#RUN git clone https://github.com/boothj5/stabber
|
||||
|
||||
#WORKDIR /usr/src/stabber
|
||||
#RUN ./bootstrap.sh
|
||||
#RUN ./configure --prefix=/usr --disable-dependency-tracking
|
||||
#RUN make
|
||||
#RUN make install
|
||||
|
||||
WORKDIR /usr/src/profanity
|
||||
COPY . /usr/src/profanity
|
||||
58
ci/Dockerfile.debian
Normal file
58
ci/Dockerfile.debian
Normal file
@@ -0,0 +1,58 @@
|
||||
# Build the latest Debian testing image
|
||||
FROM debian:testing
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
cmake \
|
||||
expect \
|
||||
gcc \
|
||||
git \
|
||||
libcmocka-dev \
|
||||
libcurl3-dev \
|
||||
libgcrypt-dev \
|
||||
libglib2.0-dev \
|
||||
libgpgme11-dev \
|
||||
libgtk-3-dev \
|
||||
libmicrohttpd-dev \
|
||||
libncursesw5-dev \
|
||||
libnotify-dev \
|
||||
libotr5-dev \
|
||||
libreadline-dev \
|
||||
libsignal-protocol-c-dev \
|
||||
libomemo-c-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libxss-dev \
|
||||
make \
|
||||
meson \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
python-dev-is-python3 \
|
||||
valgrind \
|
||||
libsqlite3-dev \
|
||||
libgdk-pixbuf-2.0-dev \
|
||||
libqrencode-dev
|
||||
|
||||
RUN mkdir -p /usr/src/{stabber,libstrophe,profanity}
|
||||
WORKDIR /usr/src
|
||||
|
||||
#RUN git clone https://github.com/boothj5/stabber
|
||||
RUN git clone -c http.sslverify=false https://github.com/strophe/libstrophe
|
||||
|
||||
#WORKDIR /usr/src/stabber
|
||||
#RUN ./bootstrap.sh
|
||||
#RUN ./configure --prefix=/usr --disable-dependency-tracking
|
||||
#RUN make
|
||||
#RUN make install
|
||||
|
||||
WORKDIR /usr/src/libstrophe
|
||||
RUN ./bootstrap.sh
|
||||
RUN ./configure --prefix=/usr
|
||||
RUN make
|
||||
RUN make install
|
||||
|
||||
WORKDIR /usr/src/profanity
|
||||
COPY . /usr/src/profanity
|
||||
69
ci/Dockerfile.fedora
Normal file
69
ci/Dockerfile.fedora
Normal file
@@ -0,0 +1,69 @@
|
||||
# Build the latest Fedora image
|
||||
FROM fedora:latest
|
||||
|
||||
# expect - for functional tests
|
||||
# libmicrohttpd - for stabber
|
||||
# glibc-locale - to have en_US locale
|
||||
RUN dnf install -y \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
awk \
|
||||
expect-devel \
|
||||
gcc \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-all-langpacks \
|
||||
gtk2-devel \
|
||||
libXScrnSaver-devel \
|
||||
libcmocka-devel \
|
||||
libcurl-devel \
|
||||
expat-devel \
|
||||
libgcrypt-devel \
|
||||
gpgme-devel \
|
||||
libmicrohttpd-devel \
|
||||
libnotify-devel \
|
||||
libotr-devel \
|
||||
libsignal-protocol-c-devel \
|
||||
libomemo-c-devel \
|
||||
libtool \
|
||||
libuuid-devel \
|
||||
make \
|
||||
ncurses-devel \
|
||||
python3 \
|
||||
python3-devel \
|
||||
readline-devel \
|
||||
openssl-devel \
|
||||
sqlite-devel \
|
||||
valgrind \
|
||||
gdk-pixbuf2-devel \
|
||||
qrencode-devel
|
||||
|
||||
# https://github.com/openSUSE/docker-containers-build/issues/26
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LANGUAGE en_US:en
|
||||
ENV LC_ALL en_US.UTF-8
|
||||
|
||||
RUN mkdir -p /usr/src
|
||||
WORKDIR /usr/src
|
||||
|
||||
#RUN mkdir -p /usr/src/stabber
|
||||
#RUN git clone https://github.com/boothj5/stabber
|
||||
#WORKDIR /usr/src/stabber
|
||||
#RUN ./bootstrap.sh
|
||||
#RUN ./configure --prefix=/usr --disable-dependency-tracking
|
||||
#RUN make
|
||||
#RUN make install
|
||||
|
||||
WORKDIR /usr/src
|
||||
RUN mkdir -p /usr/src/libstrophe
|
||||
RUN git clone -c http.sslverify=false https://github.com/strophe/libstrophe
|
||||
WORKDIR /usr/src/libstrophe
|
||||
RUN ./bootstrap.sh
|
||||
RUN ./configure --prefix=/usr
|
||||
RUN make
|
||||
RUN make install
|
||||
|
||||
RUN mkdir -p /usr/src/profanity
|
||||
WORKDIR /usr/src/profanity
|
||||
COPY . /usr/src/profanity
|
||||
59
ci/Dockerfile.tumbleweed
Normal file
59
ci/Dockerfile.tumbleweed
Normal file
@@ -0,0 +1,59 @@
|
||||
# Build the latest openSUSE Tumbleweed image
|
||||
FROM opensuse/tumbleweed
|
||||
|
||||
# expect - for functional tests
|
||||
# libmicrohttpd - for stabber
|
||||
# glibc-locale - to have en_US locale
|
||||
RUN zypper --non-interactive in --no-recommends \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
expect-devel \
|
||||
gcc \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-locale \
|
||||
gtk2-devel \
|
||||
libXss-devel \
|
||||
libcmocka-devel \
|
||||
libcurl-devel \
|
||||
libexpat-devel \
|
||||
libgcrypt-devel \
|
||||
libgpgme-devel \
|
||||
libstrophe-devel \
|
||||
libmicrohttpd-devel \
|
||||
libnotify-devel \
|
||||
libotr-devel \
|
||||
libsignal-protocol-c-devel \
|
||||
libomemo-c-devel \
|
||||
libtool \
|
||||
libuuid-devel \
|
||||
make \
|
||||
ncurses-devel \
|
||||
python310 \
|
||||
python310-devel \
|
||||
readline-devel \
|
||||
sqlite3-devel \
|
||||
valgrind \
|
||||
gdk-pixbuf-devel \
|
||||
qrencode-devel
|
||||
|
||||
# https://github.com/openSUSE/docker-containers-build/issues/26
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LANGUAGE en_US:en
|
||||
ENV LC_ALL en_US.UTF-8
|
||||
|
||||
RUN mkdir -p /usr/src
|
||||
WORKDIR /usr/src
|
||||
|
||||
#RUN mkdir -p /usr/src/stabber
|
||||
#RUN git clone git://github.com/boothj5/stabber.git
|
||||
#WORKDIR /usr/src/stabber
|
||||
#RUN ./bootstrap.sh
|
||||
#RUN ./configure --prefix=/usr --disable-dependency-tracking
|
||||
#RUN make
|
||||
#RUN make install
|
||||
|
||||
RUN mkdir -p /usr/src/profanity
|
||||
WORKDIR /usr/src/profanity
|
||||
COPY . /usr/src/profanity
|
||||
57
ci/Dockerfile.ubuntu
Normal file
57
ci/Dockerfile.ubuntu
Normal file
@@ -0,0 +1,57 @@
|
||||
FROM ubuntu:latest
|
||||
|
||||
ENV DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
expect \
|
||||
gcc \
|
||||
git \
|
||||
libcmocka-dev \
|
||||
libcurl3-dev \
|
||||
libgcrypt-dev \
|
||||
libglib2.0-dev \
|
||||
libgpgme11-dev \
|
||||
libgtk2.0-dev \
|
||||
libmicrohttpd-dev \
|
||||
libncursesw5-dev \
|
||||
libnotify-dev \
|
||||
libotr5-dev \
|
||||
libreadline-dev \
|
||||
libsignal-protocol-c-dev \
|
||||
libomemo-c-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libxss-dev \
|
||||
make \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
python-dev-is-python3 \
|
||||
valgrind \
|
||||
libsqlite3-dev \
|
||||
libgdk-pixbuf-2.0-dev \
|
||||
libqrencode-dev
|
||||
|
||||
RUN mkdir -p /usr/src/{stabber,libstrophe,profanity}
|
||||
WORKDIR /usr/src
|
||||
|
||||
#RUN git clone https://github.com/boothj5/stabber
|
||||
RUN git clone -c http.sslverify=false https://github.com/strophe/libstrophe
|
||||
|
||||
# TODO: Re-enable once libmicrohttpd-dev has been updated.
|
||||
#WORKDIR /usr/src/stabber
|
||||
#RUN ./bootstrap.sh
|
||||
#RUN ./configure --prefix=/usr --disable-dependency-tracking
|
||||
#RUN make
|
||||
#RUN make install
|
||||
|
||||
WORKDIR /usr/src/libstrophe
|
||||
RUN ./bootstrap.sh
|
||||
RUN ./configure --prefix=/usr
|
||||
RUN make
|
||||
RUN make install
|
||||
|
||||
WORKDIR /usr/src/profanity
|
||||
COPY . /usr/src/profanity
|
||||
154
ci/ci-build.sh
Executable file
154
ci/ci-build.sh
Executable file
@@ -0,0 +1,154 @@
|
||||
#!/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 $features $*
|
||||
|
||||
$MAKE CC="${CC}"
|
||||
$MAKE check
|
||||
|
||||
./profanity -v
|
||||
$MAKE clean
|
||||
done
|
||||
70
ci/ci-meson-build.sh
Executable file
70
ci/ci-meson-build.sh
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Exit on error
|
||||
set -e
|
||||
|
||||
error_handler()
|
||||
{
|
||||
ERR_CODE=$?
|
||||
echo
|
||||
echo "Error ${ERR_CODE} with command '${BASH_COMMAND}' on line ${BASH_LINENO[0]}. Exiting."
|
||||
# Meson logs are stored in the build directory
|
||||
if [ -f "build/meson-logs/testlog.txt" ]; then
|
||||
echo "--- Meson Test Log ---"
|
||||
cat build/meson-logs/testlog.txt
|
||||
fi
|
||||
exit ${ERR_CODE}
|
||||
}
|
||||
|
||||
trap error_handler ERR
|
||||
|
||||
tests=(
|
||||
"-Dnotifications=enabled -Dicons-and-clipboard=enabled -Dotr=enabled -Dpgp=enabled -Domemo=enabled -Dc-plugins=enabled -Dpython-plugins=enabled -Dxscreensaver=enabled -Domemo-qrcode=enabled -Dgdk-pixbuf=enabled"
|
||||
""
|
||||
"-Dnotifications=disabled"
|
||||
"-Dicons-and-clipboard=disabled"
|
||||
"-Dotr=disabled"
|
||||
"-Dpgp=disabled"
|
||||
"-Domemo=disabled -Domemo-qrcode=disabled"
|
||||
"-Dpgp=disabled -Dotr=disabled"
|
||||
"-Dpgp=disabled -Dotr=disabled -Domemo=disabled"
|
||||
"-Dpython-plugins=disabled"
|
||||
"-Dc-plugins=disabled"
|
||||
"-Dc-plugins=disabled -Dpython-plugins=disabled"
|
||||
"-Dxscreensaver=disabled"
|
||||
"-Dgdk-pixbuf=disabled"
|
||||
)
|
||||
|
||||
BACKEND_OPT=""
|
||||
if [ -n "${OMEMO_BACKEND}" ]; then
|
||||
BACKEND_OPT="-Domemo-backend=${OMEMO_BACKEND}"
|
||||
fi
|
||||
|
||||
# Run Valgrind check (Only on Linux, on first/full feature set)
|
||||
if [[ "$(uname | tr '[:upper:]' '[:lower:]')" == linux* ]]; then
|
||||
echo "--> Running Valgrind check with full features ${BACKEND_OPT}"
|
||||
|
||||
meson setup build_valgrind ${tests[0]} ${BACKEND_OPT} -Dtests=true -Db_sanitize=address,undefined
|
||||
meson compile -C build_valgrind
|
||||
|
||||
meson test -C build_valgrind --print-errorlogs --wrap=valgrind || echo "Valgrind issues detected"
|
||||
|
||||
rm -rf build_valgrind
|
||||
fi
|
||||
|
||||
# Iterate through all feature combinations
|
||||
for features in "${tests[@]}"
|
||||
do
|
||||
echo "----------------------------------------------------"
|
||||
echo "--> Building with: ${features} ${BACKEND_OPT}"
|
||||
echo "----------------------------------------------------"
|
||||
|
||||
rm -rf build_run
|
||||
|
||||
meson setup build_run ${features} ${BACKEND_OPT} -Dtests=true
|
||||
meson compile -C build_run
|
||||
|
||||
meson test -C build_run --print-errorlogs
|
||||
|
||||
./build_run/profanity -v
|
||||
done
|
||||
Reference in New Issue
Block a user