From bb230378e080bdfdb4e323ec94a44064d67b3386 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 19 May 2026 23:48:21 +0900 Subject: [PATCH] internal/rosa/package: migrate glslang Signed-off-by: Ophestra --- internal/rosa/glslang.go | 121 +------------------------------ internal/rosa/package/glslang.az | 31 ++++++++ internal/rosa/package/spirv.az | 47 ++++++++++++ internal/rosa/state.go | 37 ++++++++++ internal/rosa/state_native.go | 4 - 5 files changed, 116 insertions(+), 124 deletions(-) create mode 100644 internal/rosa/package/glslang.az create mode 100644 internal/rosa/package/spirv.az diff --git a/internal/rosa/glslang.go b/internal/rosa/glslang.go index c51c7937..e9ca6aa3 100644 --- a/internal/rosa/glslang.go +++ b/internal/rosa/glslang.go @@ -1,125 +1,6 @@ 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, newFromGitHub( - "KhronosGroup/SPIRV-Headers", - "vulkan-sdk-"+version, - checksum, - ), nil, &CMakeHelper{ - // upstream has no tests - SkipTest: true, - }), version -} -func init() { - native.mustRegister(Toolchain.newSPIRVHeaders, &Metadata{ - 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 - }, - }) -} - -func (t Toolchain) newSPIRVTools() (pkg.Artifact, string) { - const ( - version = "2026.1" - checksum = "ZSQPQx8NltCDzQLk4qlaVxyWRWeI_JtsjEpeFt3kezTanl9DTHfLixSUCezMFBjv" - ) - return t.NewPackage("spirv-tools", version, newFromGitHub( - "KhronosGroup/SPIRV-Tools", - "v"+version, - checksum, - ), nil, &CMakeHelper{ - Cache: []KV{ - {"SPIRV-Headers_SOURCE_DIR", "/system"}, - }, - }, - Python, - - SPIRVHeaders, - ), version -} -func init() { - native.mustRegister(Toolchain.newSPIRVTools, &Metadata{ - Name: "spirv-tools", - Description: "an API and commands for processing SPIR-V modules", - Website: "https://github.com/KhronosGroup/SPIRV-Tools", - - Dependencies: P{ - SPIRVHeaders, - }, - - ID: 14894, - - latest: (*Versions).getStable, - }) -} - -func (t Toolchain) newGlslang() (pkg.Artifact, string) { - const ( - version = "16.3.0" - checksum = "xyqDf8k3-D0_BXHGi0uLgMglnJ05Rf3j73QgbDs3sGtKNdBIQhY8JfqX1NcNoJQN" - ) - return t.NewPackage("glslang", version, newFromGitHub( - "KhronosGroup/glslang", - version, - checksum, - ), &PackageAttr{ - // test suite writes to source - Writable: true, - Chmod: true, - }, &CMakeHelper{ - Cache: []KV{ - {"BUILD_SHARED_LIBS", "ON"}, - {"ALLOW_EXTERNAL_SPIRV_TOOLS", "ON"}, - }, - }, - Python, - Bash, - Diffutils, - - SPIRVTools, - ), version -} -func init() { - native.mustRegister(Toolchain.newGlslang, &Metadata{ - Name: "glslang", - Description: "reference front end for GLSL/ESSL", - Website: "https://github.com/KhronosGroup/glslang", - - ID: 205796, - }) -} +import "hakurei.app/internal/pkg" func (t Toolchain) newSPIRVLLVMTranslator() (pkg.Artifact, string) { const ( diff --git a/internal/rosa/package/glslang.az b/internal/rosa/package/glslang.az new file mode 100644 index 00000000..1b9dc8e1 --- /dev/null +++ b/internal/rosa/package/glslang.az @@ -0,0 +1,31 @@ +package glslang { + description = "reference front end for GLSL/ESSL"; + website = "https://github.com/KhronosGroup/glslang"; + anitya = 205796; + + version* = "16.3.0"; + source = remoteGitHub { + suffix = "KhronosGroup/glslang"; + tag = version; + checksum = "xyqDf8k3-D0_BXHGi0uLgMglnJ05Rf3j73QgbDs3sGtKNdBIQhY8JfqX1NcNoJQN"; + }; + + // test suite writes to source + writable = true; + chmod = true; + + exec = cmake { + cache = { + "BUILD_SHARED_LIBS": "ON"; + "ALLOW_EXTERNAL_SPIRV_TOOLS": "ON"; + }; + }; + + inputs = [ + python, + bash, + diffutils, + + spirv-tools, + ]; +} diff --git a/internal/rosa/package/spirv.az b/internal/rosa/package/spirv.az new file mode 100644 index 00000000..45ee1dc6 --- /dev/null +++ b/internal/rosa/package/spirv.az @@ -0,0 +1,47 @@ +package spirv-headers { + description = "machine-readable files for the SPIR-V Registry"; + website = "https://github.com/KhronosGroup/SPIRV-Headers"; + anitya = 230542; + // upstream changed version scheme, anitya incapable of filtering them + latest = anityaFilterSPIRV; + + version* = "1.4.341.0"; + source = remoteGitHub { + suffix = "KhronosGroup/SPIRV-Headers"; + tag = "vulkan-sdk-"+version; + checksum = "0PL43-19Iaw4k7_D8J8BvoJ-iLgCVSYZ2ThgDPGfAJwIJFtre7l0cnQtLjcY-JvD"; + }; + + exec = cmake { + // upstream has no tests + skipTest = true; + }; +} + +package spirv-tools { + description = "an API and commands for processing SPIR-V modules"; + website = "https://github.com/KhronosGroup/SPIRV-Tools"; + anitya = 14894; + latest = anityaFallback; + + version* = "2026.1"; + source = remoteGitHub { + suffix = "KhronosGroup/SPIRV-Tools"; + tag = "v"+version; + checksum = "ZSQPQx8NltCDzQLk4qlaVxyWRWeI_JtsjEpeFt3kezTanl9DTHfLixSUCezMFBjv"; + }; + + exec = cmake { + cache = { + "SPIRV-Headers_SOURCE_DIR": "/system"; + }; + }; + + inputs = [ + python, + + spirv-headers, + ]; + + runtime = [ spirv-headers ]; +} diff --git a/internal/rosa/state.go b/internal/rosa/state.go index 2a938064..d0e2c5a3 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -454,6 +454,23 @@ func (s *S) getFrame() azalea.Frame { } return v.Latest }, + k("anityaFilterSPIRV"): func(v *Versions) string { + for _, e := range v.Stable { + fields := strings.SplitN(e, ".", 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 e + } + return v.Latest + }, } s.frame.Func = map[unique.Handle[azalea.Ident]]azalea.F{ @@ -689,6 +706,26 @@ func (s *S) getFrame() azalea.Frame { return }}, + k("cmake"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var attr CMakeHelper + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("append"): &attr.Append, + k("buildType"): &attr.BuildType, + k("cache"): &attr.Cache, + k("postInstall"): &attr.Script, + k("test"): &attr.Test, + k("skipTest"): &attr.SkipTest, + k("make"): &attr.Make, + }); err != nil { + return + } + v = &attr + set = true + return + }}, + k("meson"): {F: func( args azalea.FArgs, ) (v any, set bool, err error) { diff --git a/internal/rosa/state_native.go b/internal/rosa/state_native.go index 401c46f7..ef7b2b0a 100644 --- a/internal/rosa/state_native.go +++ b/internal/rosa/state_native.go @@ -7,7 +7,6 @@ var ( KernelHeaders = H("kernel-headers") Firmware = H("firmware") ACL = H("acl") - ArgpStandalone = H("argp-standalone") Automake = H("automake") Bash = H("bash") Binutils = H("binutils") @@ -78,8 +77,6 @@ var ( Libxtrans = H("libxtrans") LMSensors = H("lm_sensors") M4 = H("m4") - MuslFts = H("musl-fts") - MuslObstack = H("musl-obstack") NSS = H("nss") NSSCACert = H("nss-cacert") Ncurses = H("ncurses") @@ -99,7 +96,6 @@ var ( PythonWheel = H("python-wheel") QEMU = H("qemu") Sed = H("sed") - SPIRVHeaders = H("spirv-headers") SPIRVLLVMTranslator = H("spirv-llvm-translator") SPIRVTools = H("spirv-tools") SquashfsTools = H("squashfs-tools")