diff --git a/internal/rosa/busybox.go b/internal/rosa/busybox.go index 14631b2..3f8d1ae 100644 --- a/internal/rosa/busybox.go +++ b/internal/rosa/busybox.go @@ -32,6 +32,16 @@ func (a busyboxBin) Dependencies() []pkg.Artifact { 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. func (a busyboxBin) String() string { return "expand-" + a.bin.(fmt.Stringer).String() diff --git a/internal/rosa/etc.go b/internal/rosa/etc.go index 1168729..f94e63c 100644 --- a/internal/rosa/etc.go +++ b/internal/rosa/etc.go @@ -86,8 +86,27 @@ nobody:x:65534: // Kind returns the hardcoded [pkg.Kind] value. func (cureEtc) Kind() pkg.Kind { return kindEtc } -// Params is a noop. -func (cureEtc) Params(*pkg.IContext) {} +// Params writes whether iana-etc is populated. +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. func (cureEtc) IsExclusive() bool { return false }