1
1
mirror of https://github.com/goreleaser/nfpm synced 2026-07-29 11:49:48 +02:00
Files
nfpm/rpm/relations.go
Dj Gilcrease e1c7b33e10 feat: replace rpmpack with a more complete implementation (#1104)
* feat: replace rpmpack with a more complete implementation

* chore: add extra testing

* feat: add lang support and config|tree support for rpm

---------

Co-authored-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2026-06-29 21:50:09 -03:00

41 lines
1.1 KiB
Go

package rpm
import (
"github.com/goreleaser/nfpm/v2"
"go.digitalxero.dev/rpm"
)
// rpmSenseScriptPost marks a dependency as Requires(post).
// https://github.com/rpm-software-management/rpm/blob/master/include/rpm/rpmds.h
const rpmSenseScriptPost = 1 << 10
// applyRelations maps the nfpm dependency lists onto the package builder.
func applyRelations(b rpm.PackageBuilder, info *nfpm.Info) error {
addAll := func(set rpm.RelationSetBuilder, items []string) {
for _, item := range items {
set.AddParsed(item)
}
set.Done()
}
addAll(b.Provides(), info.Provides)
addAll(b.Requires(), info.Depends)
addAll(b.Recommends(), info.Recommends)
addAll(b.Obsoletes(), info.Replaces)
addAll(b.Suggests(), info.Suggests)
addAll(b.Conflicts(), info.Conflicts)
// Requires(post) dependencies carry the post-install scriptlet sense.
for _, item := range info.RPM.Requires.Post {
rel, err := rpm.ParseRelation(item)
if err != nil {
return err
}
b.Requires().
With(rel.Name(), rel.Version(), rel.Sense()|rpm.SenseScriptPost).
Done()
}
return nil
}