diff --git a/internal/rosa/all.go b/internal/rosa/all.go index ecb764e2..747ddaa6 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -136,6 +136,7 @@ const ( Rsync Sed Setuptools + SPIRVHeaders SquashfsTools Strace TamaGo diff --git a/internal/rosa/glslang.go b/internal/rosa/glslang.go new file mode 100644 index 00000000..c5aa2f49 --- /dev/null +++ b/internal/rosa/glslang.go @@ -0,0 +1,55 @@ +package rosa + +import ( + "slices" + "strings" + + "hakurei.app/internal/pkg" +) + +func (t Toolchain) newSPIRVHeaders() (pkg.Artifact, string) { + const ( + version = "1.4.341.0" + checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD" + ) + return t.NewPackage("spirv-headers", version, pkg.NewHTTPGetTar( + nil, "https://github.com/KhronosGroup/SPIRV-Headers/archive/"+ + "refs/tags/vulkan-sdk-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ), nil, &CMakeHelper{ + Cache: []KV{ + {"CMAKE_BUILD_TYPE", "Release"}, + }, + }), version +} +func init() { + artifactsM[SPIRVHeaders] = Metadata{ + f: Toolchain.newSPIRVHeaders, + + Name: "spirv-headers", + Description: "machine-readable files for the SPIR-V Registry", + Website: "https://github.com/KhronosGroup/SPIRV-Headers", + + ID: 230542, + + // upstream changed version scheme, anitya incapable of filtering them + latest: func(v *Versions) string { + for _, s := range v.Stable { + fields := strings.SplitN(s, ".", 4) + if len(fields) != 4 { + continue + } + if slices.ContainsFunc(fields, func(f string) bool { + return slices.ContainsFunc([]byte(f), func(d byte) bool { + return d < '0' || d > '9' + }) + }) { + continue + } + return s + } + return v.Latest + }, + } +}