Project:LLVM/Contributing

From Gentoo Wiki
Jump to:navigation Jump to:search

LLVM maintenance in Gentoo is quite specific, for a number of reasons:

  1. Upstream only maintains the newest branch at a time, but a lot of software requires old versions, so we end up maintaining all these old branches for years.
  2. Building and testing LLVM packages takes a lot of time.
  3. Any changes that could result in rebuilds may mean that a lot of users will have to spend significant time rebuilding multiple versions.
  4. On top of that, the whole thing is quite fragile.

For this reasons, if you'd like to contribute to the ebuilds, then please bear the following in mind:

  1. We do not accept downstream patches for the currently maintained versions. Please either send a patch upstream or — if the thing absolutely needs to be done downstream — figure out a patch-free solution that's not too hacky (a simple sed, a wrapper script). Downstream patches for old versions are acceptable, provided that they are simpler than backporting the proper fix from newer versions.
  2. We do not accept patches in FILESDIR, we do patchsets instead. For testing, keep your patches in /etc/portage/patches. For submission, please either just tell us (e.g. on a bug) which upstream commits to cherry-pick, or attach git-friendly patches that we can git am.
  3. Ideally, draft every new change on a single version (ideally, the newest .9999), and send that for early review. Don't waste your time patching other versions until the approach is approved.
  4. Patch only the newest version of every slot. For the main slot, it's fine to do just .9999 — we copy it to every successive snapshot.
  5. Revbumps are expensive. Ideally, we'll advise you whether to revbump or not (and how) while reviewing your draft change (the one you should make for the newest version only).