From 7f6dfb716780c964357b7548f0cc4be8a39c85ae Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Tue, 15 May 2018 14:11:53 -0600 Subject: cube: Download glslangValidator binary Obviates the need to set GLSLANG_REPO_ROOT or to have glslang otherwise installed for building this repo. --- scripts/fetch_glslangvalidator.py | 73 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 scripts/fetch_glslangvalidator.py (limited to 'scripts') diff --git a/scripts/fetch_glslangvalidator.py b/scripts/fetch_glslangvalidator.py new file mode 100755 index 00000000..02b93015 --- /dev/null +++ b/scripts/fetch_glslangvalidator.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2018 The Khronos Group Inc. +# Copyright (c) 2018 Valve Corporation +# Copyright (c) 2018 LunarG, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Mark Lobodzinski + + +# This script will download the latest glslang release binary and extract the +# glslangValidator binary needed by the cube and cubepp applications. +# +# It takes as its lone argument the filname (no path) describing the release +# binary name from the glslang github releases page. + +import sys +import os +import subprocess +import urllib.request +import zipfile + +REPO_DIR = os.path.join(os.getcwd(), "..") +GLSLANG_URL = "https://github.com/KhronosGroup/glslang/releases/download/master-tot" + +if __name__ == '__main__': + if len(sys.argv) != 2: + print("ERROR -- must include a single glslang release zipfile name argument") + sys.exit(); + + GLSLANG_FILENAME = sys.argv[1] + GLSLANG_COMPLETE_URL = GLSLANG_URL + "/" + GLSLANG_FILENAME + GLSLANG_OUTFILENAME = os.path.join(REPO_DIR, "glslang", GLSLANG_FILENAME) + GLSLANG_VALIDATOR_PATH = os.path.join(REPO_DIR, "glslang", "bin") + GLSLANG_VALIDATOR_FULL_PATH = os.path.join(REPO_DIR, "glslang", "bin", "glslangValidator") + GLSLANG_DIR = os.path.join(REPO_DIR, "glslang") + + if os.path.isdir(GLSLANG_DIR): + if os.path.isdir(GLSLANG_VALIDATOR_PATH): + dir_contents = os.listdir(GLSLANG_VALIDATOR_PATH) + for afile in dir_contents: + if "glslangValidator" in afile: + print(" Using glslangValidator at %s" % GLSLANG_VALIDATOR_PATH) + sys.exit(); + else: + os.mkdir(GLSLANG_DIR) + print(" Downloading glslangValidator binary from glslang releases dir") + sys.stdout.flush() + + # Download release zip file from glslang github releases site + urllib.request.urlretrieve(GLSLANG_COMPLETE_URL, GLSLANG_OUTFILENAME) + # Unzip the glslang binary archive + zipped_file = zipfile.ZipFile(GLSLANG_OUTFILENAME, 'r') + namelist = zipped_file.namelist() + for afile in namelist: + if "glslangValidator" in afile: + EXE_FILE_PATH = os.path.join(GLSLANG_DIR, afile) + zipped_file.extract(afile, GLSLANG_DIR) + os.chmod(EXE_FILE_PATH, 0o775) + break + zipped_file.close() + sys.exit(); -- cgit v1.2.3