1#!/usr/bin/env bash 2# SPDX-License-Identifier: MIT 3set -ev 4 5# 6# We expect this to be set in the environment, but if it's not, most selinux projects 7# just have the same name as upstream, so choose that. 8# 9export SELINUX_DIR="${SELINUX_DIR:-/root/selinux}" 10 11# CI Debug output if things go squirrely. 12getenforce 13id -Z 14nproc 15pwd 16 17# Turn off enforcing for the setup to prevent any weirdness from breaking 18# the CI. 19setenforce 0 20 21dnf clean all -y 22dnf install -y \ 23 --allowerasing \ 24 --skip-broken \ 25 git \ 26 audit-libs-devel \ 27 bison \ 28 bzip2-devel \ 29 CUnit-devel \ 30 diffutils \ 31 flex \ 32 gcc \ 33 gettext \ 34 glib2-devel \ 35 make \ 36 libcap-devel \ 37 libcap-ng-devel \ 38 pam-devel \ 39 pcre2-devel \ 40 xmlto \ 41 python3-devel \ 42 ruby-devel \ 43 swig \ 44 perl-Test \ 45 perl-Test-Harness \ 46 perl-Test-Simple \ 47 selinux-policy-devel \ 48 gcc \ 49 libselinux-devel \ 50 net-tools \ 51 netlabel_tools \ 52 iptables \ 53 lksctp-tools-devel \ 54 attr \ 55 libbpf-devel \ 56 keyutils-libs-devel \ 57 kernel-devel \ 58 quota \ 59 xfsprogs-devel \ 60 libuuid-devel \ 61 e2fsprogs \ 62 jfsutils \ 63 dosfstools \ 64 rdma-core-devel \ 65 kernel-devel-"$(uname -r)" \ 66 kernel-modules-"$(uname -r)" 67 68# 69# Move to selinux code and build 70# 71cd "$SELINUX_DIR" 72 73# Show HEAD commit for sanity checking 74git config --global --add safe.directory "$SELINUX_DIR" 75git log --oneline -1 76 77# 78# Build and replace userspace components 79# 80make clean distclean 81make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install 82make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 install-pywrap 83make -j"$(nproc)" LIBDIR=/usr/lib64 SHLIBDIR=/lib64 relabel 84 85# 86# Get the selinux testsuite, but don't clone it in selinux git directory, move to $HOME 87# first. 88# 89cd "$HOME" 90rm -rf selinux-testsuite 91git clone --depth=1 https://github.com/SELinuxProject/selinux-testsuite.git 92cd selinux-testsuite 93 94# The testsuite must be run in enforcing mode 95setenforce 1 96 97# 98# Run the test suite 99# 100make test 101