ci: Use update_deps script in Travis-CI
Using the script causes CI to build the "known-good" versions of the
dependent repositories. This should improve the stability of the
CI testing of Vulkan-ValidationLayers.
If Travis CI is triggered by a cron job, it builds the master branch
of the dependent repositories.
Add Vulkan-Tools to "ci_only" repo list in known-good file since
the CI tests need the mock ICD.
diff --git a/.travis.yml b/.travis.yml
index d1baea6..8a984e6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -63,7 +63,6 @@
curl -L http://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-diff.py -o scripts/clang-format-diff.py;
fi
# Misc setup
- - |
- export core_count=$(nproc || echo 4) && echo core_count = $core_count
- set +e
@@ -71,96 +70,42 @@
- set -e
- |
if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Build glslang for Vulkan-ValidationLayers and VulkanTools
- cd ${TRAVIS_BUILD_DIR}
- git clone https://github.com/KhronosGroup/glslang.git
- cd glslang
- ./update_glslang_sources.py
- mkdir build
- cd build
- cmake -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Debug ..
- make install -j $core_count
- cd ${TRAVIS_BUILD_DIR}
+ # Build all dependencies for Vulkan-ValidationLayers
+ if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]]; then
+ # Build master branch when triggered by (daily) cron job
+ ${TRAVIS_BUILD_DIR}/scripts/update_deps.py --dir=${TRAVIS_BUILD_DIR}/external --ref=master
+ else
+ ${TRAVIS_BUILD_DIR}/scripts/update_deps.py --dir=${TRAVIS_BUILD_DIR}/external
+ fi
fi
- |
if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Build Vulkan-Headers
- cd ${TRAVIS_BUILD_DIR}
- git clone https://github.com/KhronosGroup/Vulkan-Headers.git Vulkan-Headers
- cd Vulkan-Headers
- mkdir build
- cd build
- cmake -DCMAKE_INSTALL_PREFIX=install ..
- make install
- cd ${TRAVIS_BUILD_DIR}
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Get VulkanTools and build DevSim
- mkdir -p external
- cd external
- git clone https://github.com/LunarG/VulkanTools.git
- cd VulkanTools
- ./update_external_sources.sh
- # Build as few components as possible
- cmake -H. -Bbuild -DGLSLANG_INSTALL_DIR=${TRAVIS_BUILD_DIR}/glslang/build/install \
- -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install \
- -DBUILD_LOADER=NO -DBUILD_TESTS=NO \
- -DBUILD_DEMOS=NO -DBUILD_VKTRACE=NO -DBUILD_VLF=NO -DBUILD_VKJSON=NO -DBUILD_VIA=NO -DBUILD_ICD=NO
- make -C build -j $core_count
- cd ${TRAVIS_BUILD_DIR}
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Build Vulkan-Loader for Vulkan-ValidationLayers
- cd ${TRAVIS_BUILD_DIR}
- git clone https://github.com/KhronosGroup/Vulkan-Loader.git
- cd Vulkan-Loader
- mkdir build
- cd build
- cmake -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Debug ..
- make install -j $core_count
- cd ${TRAVIS_BUILD_DIR}
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Build Vulkan-Tools for Vulkan-ValidationLayers
- cd ${TRAVIS_BUILD_DIR}
- git clone https://github.com/KhronosGroup/Vulkan-Tools.git
- cd Vulkan-Tools
- mkdir build
- cd build
- cmake -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install -DVULKAN_LOADER_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Loader/build/install -DCMAKE_BUILD_TYPE=Debug -DBUILD_CUBE=OFF -DBUILD_VULKANINFO=OFF ..
- make -j $core_count
- cd ${TRAVIS_BUILD_DIR}
- fi
- - |
- if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
- # Fetch googletest componenet to build validation layer tests
+ # Fetch googletest component to build validation layer tests
echo Fetching googletest external dependencies for building validation layer tests
- git clone https://github.com/google/googletest.git external/googletest
+ git clone https://github.com/google/googletest.git ${TRAVIS_BUILD_DIR}/external/googletest
+ fi
+ - |
+ if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
# Build Vulkan-ValidationLayers
cd ${TRAVIS_BUILD_DIR}
mkdir build
cd build
- cmake -DVULKAN_HEADERS_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Headers/build/install -DGLSLANG_INSTALL_DIR=${TRAVIS_BUILD_DIR}/glslang/build/install -DVULKAN_LOADER_INSTALL_DIR=${TRAVIS_BUILD_DIR}/Vulkan-Loader/build/install -DCMAKE_BUILD_TYPE=Debug ..
- make -j $core_count
- cd ${TRAVIS_BUILD_DIR}
+ cmake -C ${TRAVIS_BUILD_DIR}/external/helper.cmake -DCMAKE_BUILD_TYPE=Debug ..
+ cmake --build . -- -j$core_count
fi
- |
if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]]; then
# Run Tests
cd ${TRAVIS_BUILD_DIR}
- export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/Vulkan-Loader/build/loader:$LD_LIBRARY_PATH
+ export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/external/Vulkan-Loader/build/loader:$LD_LIBRARY_PATH
export VK_LAYER_PATH=${TRAVIS_BUILD_DIR}/external/VulkanTools/build/layersvt:${TRAVIS_BUILD_DIR}/build/layers
- export VK_ICD_FILENAMES=${TRAVIS_BUILD_DIR}/Vulkan-Tools/build/icd/VkICD_mock_icd.json
+ export VK_ICD_FILENAMES=${TRAVIS_BUILD_DIR}/external/Vulkan-Tools/build/icd/VkICD_mock_icd.json
build/tests/vk_layer_validation_tests
for profile in tests/device_profiles/*.json
do
echo Testing with profile $profile
VK_DEVSIM_FILENAME=$profile build/tests/vk_layer_validation_tests --devsim
done
- cd ${TRAVIS_BUILD_DIR}
fi
- |
if [[ "$VULKAN_BUILD_TARGET" == "ANDROID" ]]; then
diff --git a/scripts/known_good.json b/scripts/known_good.json
index 10c16be..e8dbe66 100644
--- a/scripts/known_good.json
+++ b/scripts/known_good.json
@@ -68,6 +68,27 @@
"ci_only" : [
"TRAVIS"
]
+ },
+ {
+ "name" : "Vulkan-Tools",
+ "url" : "https://github.com/KhronosGroup/Vulkan-Tools.git",
+ "sub_dir" : "Vulkan-Tools",
+ "build_dir" : "Vulkan-Tools/build",
+ "install_dir" : "Vulkan-Tools/build/install",
+ "commit" : "origin/sdk-1.1.77",
+ "deps" : [
+ {
+ "var_name" : "VULKAN_HEADERS_INSTALL_DIR",
+ "repo_name" : "Vulkan-Headers"
+ },
+ {
+ "var_name" : "VULKAN_LOADER_INSTALL_DIR",
+ "repo_name" : "Vulkan-Loader"
+ }
+ ],
+ "ci_only" : [
+ "TRAVIS"
+ ]
}
],
"install_names" : {