Today, we build RPMs with FPM, a Ruby-based tool that wraps rpmbuild. We have a set of MSBuild targets that produce json that we used to generate the arguments to fpm. This poses a variety of problems:
- We need to maintain a separate Docker image that has the right version of Ruby installed.
- Adding a new flag to RPM images requires a significant amount of work.
- It's possible that we could at some point end up building RPM packages with newer RPM features that don't install on old distros (same problem as the old Deb tooling)
Moving to our own tooling gives us more control over the packages, especially as we're trying to build distro-independent packages (something rpmbuild isn't really designed to do).
This tooling can also be used to enable us to unwrap and rewrap RPM packages, which we need to do for signing.