blob: 7676f6ea0aa2162aa13bc54b9de3f5becc57d281 [file] [log] [blame]
#!/usr/bin/env bash
# SPDX-License-Identifier: MIT
set -ev
#
# We expect this to be set in the environment, but if it's not, most selinux projects
# just have the same name as upstream, so choose that.
#
export SELINUX_DIR="${SELINUX_DIR:-/root/selinux}"
# CI Debug output if things go squirrely.
getenforce
id -Z
nproc
pwd
# Turn off enforcing for the setup to prevent any weirdness from breaking
# the CI.
setenforce 0
dnf clean all -y
dnf install -y \
--allowerasing \
--skip-broken \
git \
audit-libs-devel \
bison \
bzip2-devel \
CUnit-devel \
diffutils \
flex \
gcc \
gettext \
glib2-devel \
make \
libcap-devel \
libcap-ng-devel \
pam-devel \
pcre2-devel \
xmlto \
python3-devel \
ruby-devel \
swig \
perl-Test \
perl-Test-Harness \
perl-Test-Simple \
selinux-policy-devel \
gcc \
libselinux-devel \
net-tools \
netlabel_tools \
iptables \
lksctp-tools-devel \
attr \
libbpf-devel \
keyutils-libs-devel \
kernel-devel \
quota \
xfsprogs-devel \
libuuid-devel \
e2fsprogs \
jfsutils \
dosfstools \
kernel-devel-"$(uname -r)" \
kernel-modules-"$(uname -r)"
#
# Move to selinux code and build
#
cd "$SELINUX_DIR"
# Show HEAD commit for sanity checking
git config --global --add safe.directory "$SELINUX_DIR"
git log --oneline -1
#
# Build and replace userspace components
#
make clean distclean
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install-pywrap
make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 relabel
#
# Get the selinux testsuite, but don't clone it in selinux git directory, move to $HOME
# first.
#
cd "$HOME"
rm -rf selinux-testsuite
git clone --depth=1 https://github.com/SELinuxProject/selinux-testsuite.git
cd selinux-testsuite
# The testsuite must be run in enforcing mode
setenforce 1
#
# Run the test suite
#
make test