85 lines
2.5 KiB
YAML
85 lines
2.5 KiB
YAML
|
name: "Build SELinux userspace"
|
||
|
|
||
|
env:
|
||
|
SELINUX_SRC: "${{ github.workspace }}/selinux-src"
|
||
|
SELINUX_BIN: "${{ github.workspace }}/selinux-bin"
|
||
|
|
||
|
on:
|
||
|
workflow_call:
|
||
|
inputs:
|
||
|
version:
|
||
|
description: "Userspace version (a git commit ID, tag, or branch)"
|
||
|
required: false
|
||
|
type: string
|
||
|
outputs:
|
||
|
source-id:
|
||
|
description: "Userspace source artifact ID"
|
||
|
value: ${{ jobs.build.outputs.source-id }}
|
||
|
binary-id:
|
||
|
description: "Userspace binary artifact ID"
|
||
|
value: ${{ jobs.build.outputs.binary-id }}
|
||
|
|
||
|
jobs:
|
||
|
build:
|
||
|
runs-on: ubuntu-22.04
|
||
|
outputs:
|
||
|
source-id: ${{ steps.upload-src-artifact.outputs.artifact-id }}
|
||
|
binary-id: ${{ steps.upload-bin-artifact.outputs.artifact-id }}
|
||
|
|
||
|
steps:
|
||
|
- name: Checkout SELinux userspace tools and libs
|
||
|
uses: actions/checkout@v4
|
||
|
with:
|
||
|
repository: SELinuxProject/selinux
|
||
|
ref: "${{ inputs.version }}"
|
||
|
path: "${{ env.SELINUX_SRC }}"
|
||
|
|
||
|
- name: Install dependencies
|
||
|
shell: bash
|
||
|
run: |
|
||
|
sudo apt-get update -q
|
||
|
sudo apt-get install -qy \
|
||
|
bison \
|
||
|
flex \
|
||
|
gettext \
|
||
|
libaudit-dev \
|
||
|
libbz2-dev \
|
||
|
libpcre3-dev \
|
||
|
libxml2-utils \
|
||
|
swig
|
||
|
|
||
|
- name: Compile
|
||
|
shell: bash
|
||
|
id: compile
|
||
|
working-directory: "${{ env.SELINUX_SRC }}"
|
||
|
run: |
|
||
|
# Drop secilc to break xmlto dependence (secilc isn't used here anyway)
|
||
|
sed -i -e 's/secilc//' Makefile
|
||
|
# Drop sepolicy to break setools dependence (sepolicy isn't used anyway)
|
||
|
sed -i -e 's/sepolicy//' policycoreutils/Makefile
|
||
|
# Drop restorecond to break glib dependence
|
||
|
sed -i -e 's/ restorecond//' policycoreutils/Makefile
|
||
|
# Drop sandbox to break libcap-ng dependence
|
||
|
sed -i -e 's/ sandbox//' policycoreutils/Makefile
|
||
|
# Compile and install SELinux toolchain
|
||
|
make OPT_SUBDIRS=semodule-utils install
|
||
|
# set output directory on successful/pre-existing compile
|
||
|
echo "DESTDIR=\"${DESTDIR}\"" >> $GITHUB_OUTPUT
|
||
|
env:
|
||
|
DESTDIR: "${{ env.SELINUX_BIN }}"
|
||
|
CFLAGS: "-O2"
|
||
|
|
||
|
- name: Upload source artifact
|
||
|
uses: actions/upload-artifact@v4
|
||
|
id: upload-src-artifact
|
||
|
with:
|
||
|
name: selinux-src
|
||
|
path: "${{ env.SELINUX_SRC }}/"
|
||
|
|
||
|
- name: Upload binary artifact
|
||
|
uses: actions/upload-artifact@v4
|
||
|
id: upload-bin-artifact
|
||
|
with:
|
||
|
name: selinux-bin
|
||
|
path: "${{ env.SELINUX_BIN }}/"
|