User:Sam/Useful scripts

Something we need to work on within Gentoo is sharing workflows and tooling we all use on a daily basis as developers. A lot of us end up writing the same scripts for common tasks.

We should work towards having some common package for these, but for now, let's start with a list of such known scripts to try deduplicate!

General resources
I've tried to include vaguely what each provides but they all have an interesting list of tools you should try out rather than solely relying on the description.


 * (github) is a collection of miscellaneous QA tools, mostly for post-emerge output
 * (github) has miscellaneous scripts for bumping packages and diffing changes
 * ajak has a set of scripts available here.
 * slyfox has a collection of mainly keywording/stabilisation scripts available.

QA

 * is a -based commit helper replacement
 * is a QA tool similar to . Gentoo's CI runs on pkgcheck
 * is the traditional commit-based QA tool for ebuilds, but lacks checks which pkgcheck supports
 * mm1ke has scripts available here

Non-packages

 * qa-reports has a set of useful checks carried out periodicially on the repository.
 * Repository CI output
 * View per-maintainer QA reports by changing the  parameter.
 * Useful make.conf settings
 * mgorny's workflow for cleaning up old versions
 * mgorny's workflow with git/pkgcheck
 * Exhaustive wiki article on testing packages

Patching

 * slyfox published a set of hooks for Portage's called gitify which prepares the   as a git repository to easily obtain patches.
 * mpagano has explained how to use
 * A blog post on using it in Debian
 * Another on using it in Debian

Stabilisation / keywording

 * (github)
 * (github)
 * (github) which handles updating Bugzilla/your local tree, not the testing itself
 * mgorny's workflow
 * slyfox's workflow
 * sam's archtools
 * arthurzam's tattoo

Misc

 * (github) is a set of Python-specific tools
 * (github) is an ebuild generator for Haskell packages
 * racket-ebuild is an ebuild generator library (and small tools) written in Racket, used in collector2
 * (github) is a set of scripts for retiring Gentoo developers
 * bug-assign-user-js is a TamperMonkey script to easily assign bugs on Bugzilla

Chroots

 * (github)
 * gentoo-chrootiez
 * ((github)

Testing

 * juippis's lxd based workflow
 * mgorny's puremerge tool to install minimal dependencies (use in a chroot!)
 * ebuild-commander to run commands in a container easily
 * mgorny's systemd-nspawn-config
 * ajak's systemd-nspawn setup
 * mgorny's g-chroot
 * mgorny's g-chroot

Tinderboxing

 * toralf's tinderbox
 * ago's CI scripts
 * zorry's ongoing Buildbot-based CI tooling
 * The ongoing GKernelCI effort

Profile development

 * mgorny's profile tools
 * slyfox's profile tools

GitHub

 * (github) makes it easy to merge GitHub PRs
 * GitHub Action for pkgcheck
 * repoman for Travis (less relevant now Travis limited FOSS credits)
 * Using repoman with GitHub Actions
 * Using ebuild-commander to test overlays

Curious bits

 * Including ebuild generation as part of a release process
 * Test ebuild as part of Action

Creating custom images

 * sping's image-bootstrap
 * kubler (a container-based tool to work with ebuilds)
 * Gentoo over PXE
 * dm0's installer (creates images)
 * madmartin's pkgtester (creates images)
 * madmartin's pkgtester (creates images)

Configuration management

 * Ansible example (slashbeast)
 * Salt example (mattst88)

Building binary packages

 * sping's binary-gentoo to ease building binpkgs on non-Gentoo systems
 * mgorny's Dockerfile to build binpkgs for e.g. gentoo-kernel, pypy

Misc

 * portage-gentoo-git-config
 * gentoo-git-squash

Configurations/hooks
Just people's configs which they've shared that might be interesting to look at.


 * gentoo-portage-config ("Gentoo Portage config files (attempt to build a fully working LLVM+musl+Linux desktop)")
 * gentoo-cflags (someone's with some interesting hooks for hardening)
 * smaeul's portage config (some interesting musl bits and more hooks)
 * qt5-nosse2-postsync (example of how to patch e.g. an eclass after )

Overlays

 * toolchain-clang (work towards getting a fully LLVM/Clang system)
 * gentooLTO (work towards getting a fully LTO'd system)
 * loongson-overlay (out-of-tree support for the loongarch architecture/ISA)

Miscellaneous
Things I can't yet categorise in a better way.


 * paludis-gentoo-patches (a fork of Paludis to support newer Gentoo EAPIs)