aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/state.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-18 18:20:17 +0900
committerOphestra <cat@gensokyo.uk>2026-05-18 21:23:19 +0900
commit34822925e18cb35e1815d3837a8b55169953d876 (patch)
treeb623d2ff87dea4b2f9d5b2fc32a78ae135b8d11e /internal/rosa/state.go
parent37df040d85e06100c69c6aa3560b2e4ebf977255 (diff)
internal/rosa: migrate GNU software
These are quite trivial, so migrate them in one pass. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/state.go')
-rw-r--r--internal/rosa/state.go58
1 files changed, 55 insertions, 3 deletions
diff --git a/internal/rosa/state.go b/internal/rosa/state.go
index b01c4c38..fd363faf 100644
--- a/internal/rosa/state.go
+++ b/internal/rosa/state.go
@@ -382,11 +382,17 @@ func (s *S) getS() []azalea.Frame {
return unique.Make(azalea.Ident(name))
}
s.s = make([]azalea.Frame, 1, 1<<4)
+ s.s[0].Val = map[unique.Handle[azalea.Ident]]any{
+ k("jobsE"): jobsE,
+ k("jobsFlagE"): jobsFlagE,
+ k("jobsLE"): jobsLE,
+ k("jobsLFlagE"): jobsLFlagE,
+ }
s.s[0].Func = map[unique.Handle[azalea.Ident]]azalea.F{
// intenral/pkg built-ins
- unique.Make(azalea.Ident("remoteTar")): {F: func(
+ k("remoteTar"): {F: func(
args azalea.FArgs,
) (v any, set bool, err error) {
var url, checksum string
@@ -398,7 +404,7 @@ func (s *S) getS() []azalea.Frame {
}); err != nil {
return
}
- v = newTar(url, checksum, compress)
+ v = pkg.NewHTTPGetTar(nil, url, mustDecode(checksum), compress)
set = true
return
}, V: map[unique.Handle[azalea.Ident]]any{
@@ -407,9 +413,43 @@ func (s *S) getS() []azalea.Frame {
k("bzip2"): uint32(pkg.TarBzip2),
}},
+ k("remoteFile"): {F: func(
+ args azalea.FArgs,
+ ) (v any, set bool, err error) {
+ var url, checksum string
+ if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
+ k("url"): &url,
+ k("checksum"): &checksum,
+ }); err != nil {
+ return
+ }
+ v = pkg.NewHTTPGet(nil, url, mustDecode(checksum))
+ set = true
+ return
+ }},
+
+ // convenience functions
+
+ unique.Make(azalea.Ident("remoteGitLab")): {F: func(
+ args azalea.FArgs,
+ ) (v any, set bool, err error) {
+ var domain, suffix, ref, checksum string
+ if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
+ k("domain"): &domain,
+ k("suffix"): &suffix,
+ k("ref"): &ref,
+ k("checksum"): &checksum,
+ }); err != nil {
+ return
+ }
+ v = newFromGitLab(domain, suffix, ref, checksum)
+ set = true
+ return
+ }},
+
// high-level helpers
- unique.Make(azalea.Ident("make")): {F: func(
+ k("make"): {F: func(
args azalea.FArgs,
) (v any, set bool, err error) {
var attr MakeHelper
@@ -429,6 +469,8 @@ func (s *S) getS() []azalea.Frame {
k("skipCheck"): &attr.SkipCheck,
k("check"): &attr.Check,
k("install"): &attr.Install,
+
+ k("skipEarlyStageCheck"): &attr.SkipCheckEarly,
}); err != nil {
return
}
@@ -479,6 +521,8 @@ func (ctx *evalContext) f(
var (
attr PackageAttr
patches []string
+ excl bool
+ early bool
anitya int64
version string
@@ -501,6 +545,8 @@ func (ctx *evalContext) f(
k("env"): &attr.Env,
k("early"): &attr.ScriptEarly,
k("patches"): &patches,
+ k("exclusive"): &excl,
+ k("toyboxEarly"): &early,
k("exec"): &helper,
k("inputs"): &inputs,
@@ -526,6 +572,12 @@ func (ctx *evalContext) f(
unsafe.String(unsafe.SliceData(p), len(p)),
})
}
+ if excl {
+ attr.Flag |= TExclusive
+ }
+ if early {
+ attr.Flag |= TEarly
+ }
meta.ID = int(anitya)
meta.f = func(t Toolchain) (pkg.Artifact, string) {