ci: Update to match current rpm-ostree
This copies the `ci/` directory from rpm-ostree, with much the same rationale; among other things we don't want to depend on the Docker hub. The specific reason I'm doing this is that I want to add a CentOS7 build, but that means we can't use `projectatomic/ostree-tester`, and at that point we might as well unwind it all. Closes: #917 Approved by: jlebon
This commit is contained in:
1 parent
2a3f17c7aa
commit
a98faa9113
6 files changed
+72
-110
No files matched your search
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/bash
|
||||
# Install build dependencies, run unit tests and installed tests.
|
||||
|
||||
set -xeuo pipefail
|
||||
|
||||
dn=$(dirname $0)
|
||||
. ${dn}/libbuild.sh
|
||||
${dn}/build.sh
|
||||
make check
|
||||
make syntax-check # TODO: do syntax-check under check
|
||||
# And now run the installed tests
|
||||
make install
|
||||
gnome-desktop-testing-runner -p 0 ostree
|
||||
|
||||
git clean -dfx && git submodule foreach git clean -dfx
|
||||
# And now a clang build to find unused variables; perhaps
|
||||
# in the future these could parallelize
|
||||
export CC=clang
|
||||
export CFLAGS='-Werror=unused-variable'
|
||||
build
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/bash
|
||||
# Install build dependencies, run unit tests and installed tests.
|
||||
|
||||
set -xeuo pipefail
|
||||
|
||||
dn=$(dirname $0)
|
||||
. ${dn}/libbuild.sh
|
||||
|
||||
install_builddeps ostree
|
||||
|
||||
dnf install -y sudo which attr fuse gjs parallel coccinelle clang \
|
||||
libubsan libasan libtsan PyYAML gnome-desktop-testing redhat-rpm-config \
|
||||
elfutils
|
||||
|
||||
build --enable-gtk-doc --enable-installed-tests=exclusive ${CONFIGOPTS:-}
|
||||
Executable
+55
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# Copyright 2017 Colin Walters <walters@verbum.org>
|
||||
# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
# This script is intended to be used as a CI gating check
|
||||
# that if a submodule is changed, the commit message contains
|
||||
# the text:
|
||||
#
|
||||
# Update submodule: submodulepath
|
||||
#
|
||||
# It's very common for people to accidentally change submodules, and having this
|
||||
# requirement is a small hurdle to pass.
|
||||
|
||||
# if running under PAPR, use the branch/PR HEAD actually
|
||||
# being tested rather than the merge sha
|
||||
HEAD=${PAPR_COMMIT:-HEAD}
|
||||
|
||||
tmpd=$(mktemp -d)
|
||||
touch ${tmpd}/.tmpdir
|
||||
cleanup_tmp() {
|
||||
# This sanity check ensures we don't delete something else
|
||||
if test -f ${tmpd}/.tmpdir; then
|
||||
rm -rf ${tmpd}
|
||||
fi
|
||||
}
|
||||
trap cleanup_tmp EXIT
|
||||
|
||||
gitdir=$(realpath $(pwd))
|
||||
# Create a temporary copy of this (using cp not git clone) so git doesn't
|
||||
# try to read the submodules from the Internet again. If we wanted to
|
||||
# require a newer git, we could use `git worktree`.
|
||||
cp -a ${gitdir} ${tmpd}/workdir
|
||||
cd ${tmpd}/workdir
|
||||
git log --pretty=oneline origin/master..$HEAD | while read logline; do
|
||||
commit=$(echo ${logline} | cut -f 1 -d ' ')
|
||||
git diff --name-only ${commit}^..${commit} > ${tmpd}/diff.txt
|
||||
git log -1 ${commit} > ${tmpd}/log.txt
|
||||
echo "Validating commit for submodules: $commit"
|
||||
git checkout -q "${commit}"
|
||||
git submodule update --init
|
||||
git submodule foreach --quiet 'echo $path'| while read submodule; do
|
||||
if grep -q -e '^'${submodule} ${tmpd}/diff.txt; then
|
||||
echo "Commit $commit modifies submodule: $submodule"
|
||||
expected_match="Update submodule: $submodule"
|
||||
if ! grep -q -e "$expected_match" ${tmpd}/log.txt; then
|
||||
sed -e 's,^,# ,' < ${tmpd}/log.txt
|
||||
echo "error: Commit message for ${commit} changes a submodule, but does not match regex ${expected_match}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Verified commit $commit matches regexp ${expected_match}"
|
||||
fi
|
||||
done
|
||||
done
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
make() {
|
||||
/usr/bin/make -j $(getconf _NPROCESSORS_ONLN) "$@"
|
||||
}
|
||||
|
||||
build() {
|
||||
env NOCONFIGURE=1 ./autogen.sh
|
||||
./configure --prefix=/usr --libdir=/usr/lib64 "$@"
|
||||
make V=1
|
||||
}
|
||||
|
||||
install_builddeps() {
|
||||
pkg=$1
|
||||
dnf -y install dnf-plugins-core
|
||||
dnf install -y @buildsys-build
|
||||
dnf install -y 'dnf-command(builddep)'
|
||||
|
||||
# builddeps+runtime deps
|
||||
dnf builddep -y $pkg
|
||||
dnf install -y $pkg
|
||||
rpm -e $pkg
|
||||
}
|
||||
Reference in new issue
Block a user