aboutsummaryrefslogtreecommitdiff
blob: 5f2360bdf2c2a72ffa6caa8e7dfab10f9ab4e43f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Derived from Nicolas Iooss: https://github.com/fishilico/selinux-refpolicy-patched/blob/travis-upstream/.travis.yml

language: generic

matrix:
  fast_finish: true

# for T in standard mls mcs ; do for D in arch debian gentoo ; do for I in n y ; do for M in y n ; do for S in n y ; do
# echo "  - TYPE=$T DISTRO=$D DIRECT_INITRC=$I MONOLITHIC=$M SYSTEMD=$S" ; done ; done ; done ; done ; done
env:
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=y WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=standard DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=y WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=y WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=mcs DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=y WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=n MONOLITHIC=n SYSTEMD=y WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=n WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=y SYSTEMD=y WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=n WERROR=y
  - TYPE=mls DISTRO=gentoo DIRECT_INITRC=y MONOLITHIC=n SYSTEMD=y WERROR=y

sudo: false
dist: trusty

cache:
  directories:
    - ${TRAVIS_BUILD_DIR}/selinux

addons:
  apt:
    packages:
    # Install SELinux userspace utilities dependencies
    - bison
    - flex
    - gettext
    - libaudit-dev
    - libbz2-dev
    - libpcre3-dev
    - swig

before_install:
  - lsb_release -a
  - bison -V
  - flex -V
  - swig -version
  - python -V

install:
  - SELINUX_USERSPACE_VERSION=master

  - export DESTDIR="${TRAVIS_BUILD_DIR}/selinux"
  - |
      if [[ "${SELINUX_USERSPACE_VERSION}" != "$(cat ${TRAVIS_BUILD_DIR}/selinux/travis.version)" ]]; then
        rm -fR selinux-src

        # Download current SELinux userspace tools and libraries
        git clone https://github.com/SELinuxProject/selinux.git selinux-src -b ${SELINUX_USERSPACE_VERSION}
        mv "selinux-${SELINUX_USERSPACE_VERSION}" selinux-src

        # 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
        make OPT_SUBDIRS=semodule-utils -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 '/(DIRECT_INITRC|MONOLITHIC|TYPE|DISTRO|SYSTEMD|WERROR)/d' build.conf

script:
  - echo $TYPE $DISTRO $DIRECT_INITRC $MONOLITHIC $SYSTEMD $WERROR
  - set -e
  - make bare
  - make conf
  - make
  - make validate

  - make xml
  - make html

  - make DESTDIR=${HOME}/tmp install
  - make DESTDIR=${HOME}/tmp install-headers
  - make DESTDIR=${HOME}/tmp install-src
  - make DESTDIR=${HOME}/tmp install-docs
  - make DESTDIR=${HOME}/tmp install-appconfig

branches:
  only:
    - /^travis-.*/
    - next
    - master

notifications:
  email: false