internal/rosa: register custom artifacts

This also encodes extra information for iana-etc.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-02-05 17:50:48 +09:00
parent 27e2e3f996
commit 6ad21e2288
2 changed files with 31 additions and 2 deletions

View File

@@ -32,6 +32,16 @@ func (a busyboxBin) Dependencies() []pkg.Artifact {
return []pkg.Artifact{a.bin} return []pkg.Artifact{a.bin}
} }
func init() {
pkg.Register(kindBusyboxBin, func(r *pkg.IRReader) pkg.Artifact {
a := busyboxBin{r.Next().(pkg.FileArtifact)}
if _, ok := r.Finalise(); ok {
panic(pkg.ErrUnexpectedChecksum)
}
return a
})
}
// String returns the reporting name of the underlying file prefixed with expand. // String returns the reporting name of the underlying file prefixed with expand.
func (a busyboxBin) String() string { func (a busyboxBin) String() string {
return "expand-" + a.bin.(fmt.Stringer).String() return "expand-" + a.bin.(fmt.Stringer).String()

View File

@@ -86,8 +86,27 @@ nobody:x:65534:
// Kind returns the hardcoded [pkg.Kind] value. // Kind returns the hardcoded [pkg.Kind] value.
func (cureEtc) Kind() pkg.Kind { return kindEtc } func (cureEtc) Kind() pkg.Kind { return kindEtc }
// Params is a noop. // Params writes whether iana-etc is populated.
func (cureEtc) Params(*pkg.IContext) {} func (a cureEtc) Params(ctx *pkg.IContext) {
if a.iana != nil {
ctx.WriteUint32(1)
} else {
ctx.WriteUint32(0)
}
}
func init() {
pkg.Register(kindEtc, func(r *pkg.IRReader) pkg.Artifact {
a := cureEtc{}
if r.ReadUint32() != 0 {
a.iana = r.Next()
}
if _, ok := r.Finalise(); ok {
panic(pkg.ErrUnexpectedChecksum)
}
return a
})
}
// IsExclusive returns false: Cure performs a few trivial filesystem writes. // IsExclusive returns false: Cure performs a few trivial filesystem writes.
func (cureEtc) IsExclusive() bool { return false } func (cureEtc) IsExclusive() bool { return false }