selinux-refpolicy/.travis.yml
cgzones 79ff2a45bf use travis cache
cache SELinux userspace build
2017-01-06 19:55:17 +01:00

104 lines
3.6 KiB
YAML
Executable File

# Derived from Nicolas Iooss: https://github.com/fishilico/selinux-refpolicy-patched/blob/travis-upstream/.travis.yml
language: generic
matrix:
fast_finish: true
env:
- TYPE=standard DISTRO=redhat MONOLITHIC=y SYSTEMD=y
- TYPE=standard DISTRO=redhat MONOLITHIC=n SYSTEMD=y
- TYPE=standard DISTRO=debian MONOLITHIC=y SYSTEMD=y
- TYPE=standard DISTRO=debian MONOLITHIC=n SYSTEMD=y
- TYPE=standard DISTRO=gentoo MONOLITHIC=y SYSTEMD=n
- TYPE=standard DISTRO=gentoo MONOLITHIC=n SYSTEMD=n
- TYPE=mcs DISTRO=redhat MONOLITHIC=y SYSTEMD=y
- TYPE=mcs DISTRO=redhat MONOLITHIC=n SYSTEMD=y
- TYPE=mcs DISTRO=debian MONOLITHIC=y SYSTEMD=y
- TYPE=mcs DISTRO=debian MONOLITHIC=n SYSTEMD=y
- TYPE=mcs DISTRO=gentoo MONOLITHIC=y SYSTEMD=n
- TYPE=mcs DISTRO=gentoo MONOLITHIC=n SYSTEMD=n
- TYPE=mls DISTRO=redhat MONOLITHIC=y SYSTEMD=y
- TYPE=mls DISTRO=redhat MONOLITHIC=n SYSTEMD=y
- TYPE=mls DISTRO=debian MONOLITHIC=y SYSTEMD=y
- TYPE=mls DISTRO=debian MONOLITHIC=n SYSTEMD=y
- TYPE=mls DISTRO=gentoo MONOLITHIC=y SYSTEMD=n
- TYPE=mls DISTRO=gentoo MONOLITHIC=n SYSTEMD=n
# Uncomment to use Travis-CI container infrastructure (https://docs.travis-ci.com/user/ci-environment/)
sudo: false
#dist: trusty # libustr-dev not whitelisted for trusty
# Uncomment these two lines to use Travis-CI Trusty Beta environment
#sudo: required
#dist: trusty
cache:
directories:
- ${TRAVIS_BUILD_DIR}/selinux
addons:
apt:
packages:
# Install SELinux userspace utilities dependencies
- bison
- flex
- gettext
- libaudit-dev
- libbz2-dev
- libustr-dev
- libpcre3-dev
- swig
before_install:
- lsb_release -a
- bison -V
- flex -V
- swig -version
- python -V
install:
- SELINUX_USERSPACE_VERSION=20161014
- |
if [[ "${SELINUX_USERSPACE_VERSION}" != "$(cat ${TRAVIS_BUILD_DIR}/selinux/travis.version)" ]]; then
# Download current SELinux userspace tools and libraries
curl -sS -L "https://github.com/SELinuxProject/selinux/archive/${SELINUX_USERSPACE_VERSION}.tar.gz" | tar xz
mv "selinux-${SELINUX_USERSPACE_VERSION}" selinux-src
# Ubuntu 12.04 coreutils is too old to provide "ln --relative" :(
sed 's/ln -sf --relative /ln -sf /' -i selinux-src/libsepol/src/Makefile
sed 's/ln -sf --relative /ln -sf /' -i selinux-src/libselinux/src/Makefile
# Drop secilc to break xmlto dependence (secilc isn't used here anyway)
sed -i -e 's/secilc//' selinux-src/Makefile
# Drop sepolicy to break setools dependence (sepolicy isn't used anyway)
sed -i -e 's/sepolicy//' selinux-src/policycoreutils/Makefile
# Drop restorecond to break glib dependence
sed -i -e 's/ restorecond//' selinux-src/policycoreutils/Makefile
# Drop sandbox to break libcap-ng dependence
sed -i -e 's/ sandbox//' selinux-src/policycoreutils/Makefile
# Compile and install SELinux toolchain into ~/selinux
# On Ubuntu 12.04, default CFLAGS make the build fail in libsepol/cil with:
# error: declaration of 'index' shadows a global declarationo
make "DESTDIR=${TRAVIS_BUILD_DIR}/selinux" CFLAGS="-O2 -Wall" -C selinux-src install
echo "${SELINUX_USERSPACE_VERSION}" > "${TRAVIS_BUILD_DIR}/selinux/travis.version"
fi
# Use TEST_TOOLCHAIN variable to tell refpolicy Makefile about the installed location
- export TEST_TOOLCHAIN="${TRAVIS_BUILD_DIR}/selinux"
# Drop build.conf settings to listen to env vars
- sed -r -i -e '/(MONOLITHIC|TYPE|DISTRO|SYSTEMD)/d' build.conf
script:
- echo $TYPE $DISTRO $MONOLITHIC $SYSTEMD
- make bare
- make conf
- make
- make validate