summaryrefslogblamecommitdiffstats
path: root/source/x/vulkan-sdk/fetch-sources.sh
blob: e67dfaf6d332a1a5e450fdb94290f9567f5a4e46 (plain) (tree)


























                                                                               
                                               
 
                            







































































                                                                                                                                                                      
#!/bin/sh

# Copyright 2017  Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Call this script with the version of the Vulkan-LoaderAndValidationLayers-sdk
# that you would like to fetch the sources for. This will fetch the SDK from
# github, and then look at the revisions listed in the external_revisions
# directory to fetch the proper glslang, SPIRV-Headers, and SPIRV-Tools.
#
# Example:  VERSION=1.1.73.0 ./fetch-sources.sh

VERSION=${VERSION:-1.1.73.0}

# Remove existing sources:
rm -rf Vulkan-LoaderAndValidationLayers-sdk* glslang-* SPIRV-Headers-* SPIRV-Tools-*

# Fetch SDK:
lftpget https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/sdk-${VERSION}/Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz

GLSLANG_REVISION=$(tar xOf Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz Vulkan-LoaderAndValidationLayers-sdk-${VERSION}/external_revisions/glslang_revision)

git clone https://github.com/KhronosGroup/glslang.git glslang-$GLSLANG_REVISION
cd glslang-$GLSLANG_REVISION
git checkout $GLSLANG_REVISION
SPIRV_TOOLS_REVISION=$(
python3 - << EOF
import json
with open('known_good.json') as f:
  known_good = json.load(f)
commits = known_good['commits']
print(commits[0]['commit'])
EOF
)
SPIRV_HEADERS_REVISION=$(
python3 - << EOF
import json
with open('known_good.json') as f:
  known_good = json.load(f)
commits = known_good['commits']
print(commits[1]['commit'])
EOF
)
# Cleanup.  We're not packing up the whole git repo.
find . -type d -name ".git*" -exec rm -rf {} \; 2> /dev/null
cd ..
tar cf glslang-${GLSLANG_REVISION}.tar glslang-${GLSLANG_REVISION}
rm -rf glslang-${GLSLANG_REVISION}
plzip -9 glslang-${GLSLANG_REVISION}.tar

git clone https://github.com/KhronosGroup/SPIRV-Headers.git SPIRV-Headers-${SPIRV_HEADERS_REVISION}
cd SPIRV-Headers-${SPIRV_HEADERS_REVISION}
git checkout ${SPIRV_HEADERS_REVISION}
# Cleanup.  We're not packing up the whole git repo.
find . -type d -name ".git*" -exec rm -rf {} \; 2> /dev/null
cd ..
tar cf SPIRV-Headers-${SPIRV_HEADERS_REVISION}.tar SPIRV-Headers-${SPIRV_HEADERS_REVISION}
rm -rf SPIRV-Headers-${SPIRV_HEADERS_REVISION}
plzip -9 SPIRV-Headers-${SPIRV_HEADERS_REVISION}.tar

git clone https://github.com/KhronosGroup/SPIRV-Tools.git SPIRV-Tools-${SPIRV_TOOLS_REVISION}
cd SPIRV-Tools-${SPIRV_TOOLS_REVISION}
git checkout ${SPIRV_TOOLS_REVISION}
# Only purge the .pack, since spirv_tools_commit_id.h needs to query the repo:
rm -f .git/objects/pack/pack-*.pack
cd ..
tar cf SPIRV-Tools-${SPIRV_TOOLS_REVISION}.tar SPIRV-Tools-${SPIRV_TOOLS_REVISION}
rm -rf SPIRV-Tools-${SPIRV_TOOLS_REVISION}
plzip -9 SPIRV-Tools-${SPIRV_TOOLS_REVISION}.tar

# Repack Vulkan-LoaderAndValidationLayers-sdk:
gzip -d Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz
plzip -9 Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar

# List URLs in vulkan-sdk.url:
echo "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/sdk-${VERSION}/Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz" > vulkan-sdk.url
echo "https://github.com/KhronosGroup/glslang/archive/${GLSLANG_REVISION}/glslang-${GLSLANG_REVISION}.tar.gz" >> vulkan-sdk.url
echo "https://github.com/KhronosGroup/SPIRV-Headers/archive/${SPIRV_HEADERS_REVISION}/SPIRV-Headers-${SPIRV_HEADERS_REVISION}.tar.gz" >> vulkan-sdk.url
echo "https://github.com/KhronosGroup/SPIRV-Tools/archive/${SPIRV_TOOLS_REVISION}/SPIRV-Tools-${SPIRV_TOOLS_REVISION}.tar.gz" >> vulkan-sdk.url

# Fix timestamps to be correct:
for file in *.tar.?z ; do
  TIMESTAMP="$(tar tvf $file | head -1 | cut -b 32-47)"
  touch -d "$TIMESTAMP" $file
done