travis: Install all dependencies for most of jobs

+ keep 1 build with minimal dependencies.

Currently travis has installed toolchain with native libraries, glibc
and kernel headers so some of the packages listed are already installed.
Missing are most of headers + libnuma, libtirpc and 32-bit libs.

The only exception is selinux support on 32bit build as as
libsepol1-dev:i386 conflict with libsepol1-dev for amd64, thus both
cannot be installed.

During reinstallation for build with minimal dependencies we need to
filter out some packages as toolchain package depends on it.

For minimal build chosen clang 3.9 (changed existing job).

Signed-off-by: Petr Vorel <pvorel@suse.cz>
Acked-by: Cyril Hrubis <chrubis@suse.cz>
diff --git a/.travis.yml b/.travis.yml
index cc56274..2087e41 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,8 +2,10 @@
 
 matrix:
     include:
+
+        # normal native in-tree builds
         - os: linux
-          env: BUILD="native"
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-4.9
           addons:
               apt:
@@ -11,7 +13,7 @@
                   packages: ['gcc-4.9']
 
         - os: linux
-          env: BUILD="native"
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-5
           addons:
               apt:
@@ -19,7 +21,7 @@
                   packages: ['gcc-5']
 
         - os: linux
-          env: BUILD="native"
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-6
           addons:
               apt:
@@ -27,7 +29,7 @@
                   packages: ['gcc-6']
 
         - os: linux
-          env: BUILD="native"
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-7
           addons:
               apt:
@@ -35,6 +37,23 @@
                   packages: ['gcc-7']
 
         - os: linux
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
+          compiler: clang-4.0
+          addons:
+              apt:
+                  sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
+                  packages: ['clang-4.0']
+
+        - os: linux
+          env: BUILD="native" INSTALL_PACKAGES="$BUILD"
+          compiler: clang-5.0
+          addons:
+              apt:
+                  sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
+                  packages: ['clang-5.0']
+
+        # minimal build (some headers and libraries are missing)
+        - os: linux
           env: BUILD="native"
           compiler: clang-3.9
           addons:
@@ -42,24 +61,9 @@
                   sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-3.9']
                   packages: ['clang-3.9']
 
+        # 32-bit in-tree cross-compile builds
         - os: linux
-          env: BUILD="native"
-          compiler: clang-4.0
-          addons:
-              apt:
-                  sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
-                  packages: ['clang-4.0']
-
-        - os: linux
-          env: BUILD="native"
-          compiler: clang-5.0
-          addons:
-              apt:
-                  sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
-                  packages: ['clang-5.0']
-
-        - os: linux
-          env: BUILD="32"
+          env: BUILD="32" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-4.9
           addons:
               apt:
@@ -67,15 +71,16 @@
                   packages: ['gcc-4.9', 'gcc-4.9-multilib', 'linux-libc-dev:i386']
 
         - os: linux
-          env: BUILD="32"
+          env: BUILD="32" INSTALL_PACKAGES="$BUILD"
           compiler: gcc-6
           addons:
               apt:
                   sources: ['ubuntu-toolchain-r-test']
                   packages: ['gcc-6', 'gcc-6-multilib', 'linux-libc-dev:i386']
 
+        # out-of-tree build
         - os: linux
-          env: BUILD="out"
+          env: BUILD="out" INSTALL_PACKAGES="native"
           compiler: gcc-7
           addons:
               apt:
@@ -87,4 +92,15 @@
         secure: "b/xcA/K5OyQvPPnd0PRahTH5LJu8lgz8goGHvhXpHo+ZPsPgTDXNFo5cX9fSOkMuFKeoW8iGl0wOgK2+ptc8mbYDw277K4RFIHRHeV/KIoE1EzjQnEFiL8J0oHCAvDj12o0AXeriTyY9gICXKbR31Br6Zh5eKViDJe2OAGeHeDU="
 
 before_install:
+    # installing / removing dependencies
+    - if [ "$INSTALL_PACKAGES" = "" ]; then
+          sudo apt remove $(cat .travis.packages_native | grep -v -e 'libc6' -e 'libc6-dev' -e 'linux-libc-dev' -e 'libacl1')
+      ; else
+          sudo apt install -qq $(cat .travis.packages_native)
+      ; fi
+
+    - if [ "$INSTALL_PACKAGES" = "32" ]; then
+          sudo apt install -qq $(cat .travis.packages_i386)
+      ; fi
+
 script: ./build.sh $BUILD