mirror of
https://github.com/rive-app/rive-cpp.git
synced 2026-01-18 21:21:17 +01:00
build: Clone dependencies with git instead of downloading a zip (#10271) a2e64c0505
It was a cool idea to download the repos as a zip, so that premake didn't have to rely on any external dependencies, but github was frequently giving us a successful download of an empty zip file. This was causing daily flakes on CI. Instead, just invoke 'git clone --depth=1 --branch ...' from premake. This should hopefully be more reliable, and it seems safe enough to depend on git being installed in the environment we're on. Also: * Update the dependencies that were using raw branch SHAs to point to official tags. 'git clone --branch' requires an official tag, and this will be more stable anyway. * Rename the dependency directories to "owner_project_tag" rather than a hash. Sometimes we need to poke around in those directories to debug issues, and it's easier to figure out what's what with descriptive names. Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
This commit is contained in:
@@ -1 +1 @@
|
|||||||
45e1b18c68de6288d122ee4345ccb9b004b219f0
|
a2e64c0505870c2a33e74cf4407989dd70f49387
|
||||||
|
|||||||
@@ -17,39 +17,25 @@ function m.github(project, tag)
|
|||||||
dependencies = path.getabsolute(_WORKING_DIR) .. '/dependencies'
|
dependencies = path.getabsolute(_WORKING_DIR) .. '/dependencies'
|
||||||
os.mkdir(dependencies)
|
os.mkdir(dependencies)
|
||||||
end
|
end
|
||||||
local hash = string.sub(string.sha1(project .. tag), 0, 9)
|
local dirname = project .. '_' .. tag
|
||||||
if not os.isdir(dependencies .. '/' .. hash) then
|
dirname = string.gsub(dirname, '/', '_')
|
||||||
function progress(total, current)
|
local dependency_path = dependencies .. '/' .. dirname
|
||||||
local ratio = current / total
|
if not os.isdir(dependency_path) then
|
||||||
ratio = math.min(math.max(ratio, 0), 1)
|
print('Fetching dependency ' .. project .. ' at tag ' .. tag .. '...')
|
||||||
local percent = math.floor(ratio * 100)
|
local gitcmd = 'git -c advice.detachedHead=false -C '
|
||||||
if total == current then
|
.. dependencies
|
||||||
iop('')
|
.. ' clone --depth 1 --branch '
|
||||||
else
|
.. tag
|
||||||
iop('Downloading ' .. project .. ' ' .. percent .. '%')
|
.. ' https://github.com/'
|
||||||
end
|
.. project
|
||||||
|
.. '.git'
|
||||||
|
.. ' '
|
||||||
|
.. dirname
|
||||||
|
if not os.execute(gitcmd) then
|
||||||
|
error('\nError executing command:\n ' .. cmd)
|
||||||
end
|
end
|
||||||
|
|
||||||
local downloadFilename = dependencies .. '/' .. hash .. '.zip'
|
|
||||||
http.download(
|
|
||||||
'https://github.com/' .. project .. '/archive/' .. tag .. '.zip',
|
|
||||||
downloadFilename,
|
|
||||||
-- Download progress explodes the github logs with megabytes of text.
|
|
||||||
-- github runners have a "CI" environment variable.
|
|
||||||
{
|
|
||||||
progress = not _OPTIONS['no-download-progress']
|
|
||||||
and os.getenv('CI') ~= 'true'
|
|
||||||
and progress,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
print('Downloaded ' .. project .. ' to ' .. dependencies .. '/' .. hash)
|
|
||||||
zip.extract(downloadFilename, dependencies .. '/' .. hash)
|
|
||||||
os.remove(downloadFilename)
|
|
||||||
end
|
end
|
||||||
local dirs = os.matchdirs(dependencies .. '/' .. hash .. '/*')
|
assert(os.isdir(dependency_path))
|
||||||
|
return dependency_path
|
||||||
local iter = pairs(dirs)
|
|
||||||
local currentKey, currentValue = iter(dirs)
|
|
||||||
return currentValue
|
|
||||||
end
|
end
|
||||||
return m
|
return m
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ if _OPTIONS['with_vulkan'] then
|
|||||||
vulkan_headers = dependency.github('KhronosGroup/Vulkan-Headers', 'vulkan-sdk-1.3.283')
|
vulkan_headers = dependency.github('KhronosGroup/Vulkan-Headers', 'vulkan-sdk-1.3.283')
|
||||||
vulkan_memory_allocator = dependency.github(
|
vulkan_memory_allocator = dependency.github(
|
||||||
'GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator',
|
'GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator',
|
||||||
'7942b798289f752dc23b0a79516fd8545febd718'
|
'v3.3.0'
|
||||||
)
|
)
|
||||||
defines({
|
defines({
|
||||||
'RIVE_VULKAN',
|
'RIVE_VULKAN',
|
||||||
@@ -96,7 +96,7 @@ else
|
|||||||
handle:close()
|
handle:close()
|
||||||
end
|
end
|
||||||
nproc = nproc:gsub('%s+', '') -- remove whitespace
|
nproc = nproc:gsub('%s+', '') -- remove whitespace
|
||||||
local python_ply = dependency.github('dabeaz/ply', '5c4dc94d4c6d059ec127ee1493c735963a5d2645')
|
local python_ply = dependency.github('dabeaz/ply', '3.11')
|
||||||
local makecommand = 'make -C '
|
local makecommand = 'make -C '
|
||||||
.. path.getabsolute('src/shaders')
|
.. path.getabsolute('src/shaders')
|
||||||
.. ' -j'
|
.. ' -j'
|
||||||
@@ -104,7 +104,7 @@ local makecommand = 'make -C '
|
|||||||
.. ' OUT='
|
.. ' OUT='
|
||||||
.. pls_shaders_absolute_dir
|
.. pls_shaders_absolute_dir
|
||||||
|
|
||||||
local minify_flags = '-p ' .. python_ply .. '/src'
|
local minify_flags = '-p ' .. python_ply
|
||||||
newoption({
|
newoption({
|
||||||
trigger = 'raw_shaders',
|
trigger = 'raw_shaders',
|
||||||
description = 'don\'t rename shader variables, or remove whitespace or comments',
|
description = 'don\'t rename shader variables, or remove whitespace or comments',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ if not vulkan_headers or not vulkan_memory_allocator then
|
|||||||
end
|
end
|
||||||
|
|
||||||
local dependency = require('dependency')
|
local dependency = require('dependency')
|
||||||
vk_bootstrap = dependency.github('charles-lunarg/vk-bootstrap', '30a13b2')
|
vk_bootstrap = dependency.github('charles-lunarg/vk-bootstrap', 'v1.4.307')
|
||||||
|
|
||||||
includedirs({ 'include' })
|
includedirs({ 'include' })
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user