#2679 RFE: Cascading rebuild support
Opened by demiobenour. Modified

C libraries often provide excellent ABI compatibility, and some C++ libraries do as well. However, many newer languages have no ABI compatibility at all.

Specifically, Haskell, OCaml, Rust, and (I believe) Go all require that if a module is recompiled, all of its transitive reverse dependencies must also be recompiled. In the case of Rust, there are at least two reasons for this:

  1. Rust requires cross-crate inlining to get good performance. For example, slice indexing in Rust is implemented as a library call! If it cannot be inlined, performance will be terrible.
  2. Rust uses monomorphization for generics. This allows for zero-cost abstractions, but means that generic code is compiled as part of the library user’s code, not as part of the library.

However, this leads to a problem. If a critical security fix needs to be made in a Rust library, all packages that depend on it must be recompiled. Koji should do this automatically.


I really wish this was integrated into Koji myself. This functionality exists as an add-on to Koji: Koschei.

However, @msimacek has not made it possible for Koschei to be used to automate rebuilds that would be submitted for release.

There's also the underlying issue that Koji would need some way to mutate NVRs for rebuilds automatically. That's where @pingou's rpmautospec comes into play: packages that opt into this framework will properly support auto-rebuild and release workflows that you and many others (including myself) have asked for many years about.

Metadata Update from @tkopecek:
- Custom field Size adjusted to None
- Issue tagged with: discussion

This issue has been migrated to Fedora Forge:
https://forge.fedoraproject.org/koji/koji/issues/2679

Please continue any further discussion there.

Metadata