aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--internal/rosa/glslang.go121
-rw-r--r--internal/rosa/package/glslang.az31
-rw-r--r--internal/rosa/package/spirv.az47
-rw-r--r--internal/rosa/state.go37
-rw-r--r--internal/rosa/state_native.go4
5 files changed, 116 insertions, 124 deletions
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")