internal/rosa: migrate GNU software

These are quite trivial, so migrate them in one pass.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-05-18 18:20:17 +09:00
parent 37df040d85
commit 34822925e1
8 changed files with 712 additions and 845 deletions

View File

@@ -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) {