github: add build workflow
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
7b78b571b7
commit
84cccd3eb5
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
PACKAGES=(
|
||||||
|
bc
|
||||||
|
btrfs-tools
|
||||||
|
dnsutils
|
||||||
|
libcap-ng-dev
|
||||||
|
libncursesw5-dev
|
||||||
|
libpam-dev
|
||||||
|
libudev-dev
|
||||||
|
gtk-doc-tools
|
||||||
|
mdadm
|
||||||
|
ntp
|
||||||
|
socat
|
||||||
|
)
|
||||||
|
|
||||||
|
PACKAGES_OPTIONAL=(
|
||||||
|
libsystemd-daemon-dev
|
||||||
|
libsystemd-journal-dev
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
COMPILER="${COMPILER:?}"
|
||||||
|
COMPILER_VERSION="${COMPILER_VERSION:?}"
|
||||||
|
RELEASE="$(lsb_release -cs)"
|
||||||
|
|
||||||
|
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
|
||||||
|
|
||||||
|
if [[ "$COMPILER" == clang ]]; then
|
||||||
|
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
|
||||||
|
# Following snippet was borrowed from https://apt.llvm.org/llvm.sh
|
||||||
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||||
|
add-apt-repository -y "deb http://apt.llvm.org/$RELEASE/ llvm-toolchain-$RELEASE-$COMPILER_VERSION main"
|
||||||
|
PACKAGES+=(clang-$COMPILER_VERSION lldb-$COMPILER_VERSION lld-$COMPILER_VERSION clangd-$COMPILER_VERSION)
|
||||||
|
elif [[ "$COMPILER" == gcc ]]; then
|
||||||
|
# Latest gcc stack deb packages provided by
|
||||||
|
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
|
||||||
|
add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||||
|
PACKAGES+=(gcc-$COMPILER_VERSION)
|
||||||
|
else
|
||||||
|
fatal "Unknown compiler: $COMPILER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get -y update --fix-missing
|
||||||
|
apt-get -y build-dep util-linux
|
||||||
|
apt-get -y install "${PACKAGES[@]}"
|
||||||
|
apt-get -y install "${PACKAGES_OPTIONAL[@]}" || true
|
||||||
|
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
|
@ -0,0 +1,55 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PHASES=(${@:-CONFIGURE MAKE INSTALL CHECK DISTCHECK})
|
||||||
|
COMPILER="${COMPILER:?}"
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
for phase in "${PHASES[@]}"; do
|
||||||
|
case $phase in
|
||||||
|
CONFIGURE)
|
||||||
|
opts = "--disable-use-tty-group \
|
||||||
|
--disable-makeinstall-chown \
|
||||||
|
--enable-all-programs \
|
||||||
|
--enable-asan \
|
||||||
|
--enable-ubsan \
|
||||||
|
--enable-werror"
|
||||||
|
|
||||||
|
if [[ "$COMPILER" == clang ]]; then
|
||||||
|
opts="$opts --enable-fuzzing-engine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "## CONFIGURE: git-clean"
|
||||||
|
sudo -E git clean -xdf
|
||||||
|
|
||||||
|
echo "## CONFIGURE: autogen.sh"
|
||||||
|
./autogen.sh
|
||||||
|
|
||||||
|
echo "## CONFIGURE: $opts --"
|
||||||
|
./configure $opts
|
||||||
|
;;
|
||||||
|
MAKE)
|
||||||
|
echo "## MAKE"
|
||||||
|
make -j V=1
|
||||||
|
make -j check-programs V=1
|
||||||
|
;;
|
||||||
|
INSTALL)
|
||||||
|
echo "## MAKE INSTALL"
|
||||||
|
make install DESTDIR=/tmp/dest
|
||||||
|
;;
|
||||||
|
CHECK)
|
||||||
|
echo "## MAKE CHECK"
|
||||||
|
./tests/run.h --show-diff
|
||||||
|
;;
|
||||||
|
DISTCHECK)
|
||||||
|
echo "## MAKE DISTCHECK"
|
||||||
|
make distcheck
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo >&2 "Unknown phase '$phase'"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
name: Build test
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'cibuild'
|
||||||
|
paths-ignore:
|
||||||
|
- 'Documentation/**'
|
||||||
|
- 'lib*/docs/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
env:
|
||||||
|
- { COMPILER: "gcc", COMPILER_VERSION: "10" }
|
||||||
|
- { COMPILER: "clang", COMPILER_VERSION: "10" }
|
||||||
|
env: ${{ matrix.env }}
|
||||||
|
steps:
|
||||||
|
- name: Repository checkout
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
- name: Ubuntu setup (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
|
||||||
|
run: sudo -E .github/workflows/cibuild-setup-ubuntu.sh
|
||||||
|
- name: Congure & Make (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
|
||||||
|
run: .github/workflows/cibuild.sh CONFIGURE MAKE
|
||||||
|
- name: Make install
|
||||||
|
run: .github/workflows/cibuild.sh INSTALL
|
||||||
|
- name: Make distcheck
|
||||||
|
run: .github/workflows/cibuild.sh DISTCHECK
|
||||||
|
- make: Check
|
||||||
|
run: sudo -E .github/workflows/cibuild.sh CHECK
|
Loading…
Reference in New Issue