From ef8de08ff1352f69cfab89b1b01545889ad5c891 Mon Sep 17 00:00:00 2001 From: Bill Hollings Date: Sun, 16 Jun 2019 12:00:22 -0400 Subject: [PATCH] Skip SPIRV-Tools build in Travis. Add fetchDependencies option to skip building SPIRV-Tools and use a template of pre-generated headers. Modify .travis.yml to use this. --- .travis.yml | 7 ++--- Docs/Whats_New.md | 1 + README.md | 2 +- Templates/spirv-tools/build.zip | Bin 0 -> 32870 bytes fetchDependencies | 53 ++++++++++++++++++++------------ 5 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 Templates/spirv-tools/build.zip diff --git a/.travis.yml b/.travis.yml index e5189a33..df2c4203 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,10 @@ language: objective-c osx_image: xcode10 # Build dependencies +# Travis has trouble with python3, which SPIRV-Tools requires, +# so skip the SPIRV-Tools build, and use templeted headers instead. install: - - brew install python3 - - pip3 install virtualenv - - virtualenv -p python3 . - - ./fetchDependencies -v + - ./fetchDependencies --skip-spirv-tools-build # Cache built deps cache: diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 9c4c3ddd..fbca82fe 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -20,6 +20,7 @@ Released TBD - On iOS GPU family 2 and earlier, support immutable depth-compare samplers as constexpr samplers hardcoded in MSL. +- Skip SPIRV-Tools build in Travis. diff --git a/README.md b/README.md index 046524c4..72d7fd14 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ on which **MoltenVK** relies: 1. Ensure you have `cmake` and `python3` installed: brew install cmake - brew install python + brew install python3 For faster dependency builds, you can also optionally install `ninja`: diff --git a/Templates/spirv-tools/build.zip b/Templates/spirv-tools/build.zip new file mode 100644 index 0000000000000000000000000000000000000000..2434da0314e54a7ae5981f9eba9f4a31f9df28b0 GIT binary patch literal 32870 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 azpwIt#RUBjcmV()e?0j /dev/null fi -#Make sure the embedded spirv-tools is built -build_repo "${REPO_NAME}/External/spirv-tools" +# Build the embedded spirv-tools, or use option of pre-generated headers +SPV_TLS_DIR="${REPO_NAME}/External/spirv-tools" +if [ ! "$SKIP_SPV_TLS_BLD" = "" ]; then + unzip -o -q -d "${SPV_TLS_DIR}" ../Templates/spirv-tools/build.zip + rm -rf "${SPV_TLS_DIR}/__MACOSX" +else + build_repo "${SPV_TLS_DIR}" +fi + # ----------------- Vulkan-Tools -------------------