internal/rosa/package: migrate glslang
All checks were successful
Test / Create distribution (push) Successful in 1m4s
Test / Sandbox (push) Successful in 2m52s
Test / Hakurei (push) Successful in 3m50s
Test / ShareFS (push) Successful in 3m48s
Test / Sandbox (race detector) (push) Successful in 5m24s
Test / Hakurei (race detector) (push) Successful in 6m27s
Test / Flake checks (push) Successful in 1m19s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-05-19 23:48:21 +09:00
parent f638c73933
commit bb230378e0
5 changed files with 116 additions and 124 deletions

View File

@@ -1,125 +1,6 @@
package rosa package rosa
import ( import "hakurei.app/internal/pkg"
"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,
})
}
func (t Toolchain) newSPIRVLLVMTranslator() (pkg.Artifact, string) { func (t Toolchain) newSPIRVLLVMTranslator() (pkg.Artifact, string) {
const ( const (

View File

@@ -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,
];
}

View File

@@ -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 ];
}

View File

@@ -454,6 +454,23 @@ func (s *S) getFrame() azalea.Frame {
} }
return v.Latest 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{ s.frame.Func = map[unique.Handle[azalea.Ident]]azalea.F{
@@ -689,6 +706,26 @@ func (s *S) getFrame() azalea.Frame {
return 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( k("meson"): {F: func(
args azalea.FArgs, args azalea.FArgs,
) (v any, set bool, err error) { ) (v any, set bool, err error) {

View File

@@ -7,7 +7,6 @@ var (
KernelHeaders = H("kernel-headers") KernelHeaders = H("kernel-headers")
Firmware = H("firmware") Firmware = H("firmware")
ACL = H("acl") ACL = H("acl")
ArgpStandalone = H("argp-standalone")
Automake = H("automake") Automake = H("automake")
Bash = H("bash") Bash = H("bash")
Binutils = H("binutils") Binutils = H("binutils")
@@ -78,8 +77,6 @@ var (
Libxtrans = H("libxtrans") Libxtrans = H("libxtrans")
LMSensors = H("lm_sensors") LMSensors = H("lm_sensors")
M4 = H("m4") M4 = H("m4")
MuslFts = H("musl-fts")
MuslObstack = H("musl-obstack")
NSS = H("nss") NSS = H("nss")
NSSCACert = H("nss-cacert") NSSCACert = H("nss-cacert")
Ncurses = H("ncurses") Ncurses = H("ncurses")
@@ -99,7 +96,6 @@ var (
PythonWheel = H("python-wheel") PythonWheel = H("python-wheel")
QEMU = H("qemu") QEMU = H("qemu")
Sed = H("sed") Sed = H("sed")
SPIRVHeaders = H("spirv-headers")
SPIRVLLVMTranslator = H("spirv-llvm-translator") SPIRVLLVMTranslator = H("spirv-llvm-translator")
SPIRVTools = H("spirv-tools") SPIRVTools = H("spirv-tools")
SquashfsTools = H("squashfs-tools") SquashfsTools = H("squashfs-tools")