xref: /aosp_15_r20/external/selinux/scripts/ci/fedora-test-runner.sh (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
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