https://github.com/thesamesam/sam-gentoo-scripts
Set of scripts I use for Gentoo development.
https://github.com/thesamesam/sam-gentoo-scripts
ebuild gentoo scripts
Last synced: 12 months ago
JSON representation
Set of scripts I use for Gentoo development.
- Host: GitHub
- URL: https://github.com/thesamesam/sam-gentoo-scripts
- Owner: thesamesam
- License: gpl-2.0
- Created: 2022-03-14T22:16:12.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-03-07T02:13:39.000Z (about 1 year ago)
- Last Synced: 2025-03-18T10:01:37.720Z (12 months ago)
- Topics: ebuild, gentoo, scripts
- Language: Shell
- Homepage:
- Size: 182 KB
- Stars: 20
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-package-maintainer - sam-gentoo-scripts - [sams](https://github.com/thesamesam) Gentoo development scripts (Gentoo / Quickstart)
README
A collection of scripts for Gentoo development.
### Miscellaneous
#### QA
* `find-new-pkg-by`: list new packages by a maintainer (useful for finding
e.g. proxied maintainers who add more packages than they maintain, and possibly
directing them to GURU for such bits)
* `find-unmaintained`: find packages nominally maintained but with no commits
from their maintainer recently
* `report-bugs-pkgcheck`: report bugs on Bugzilla en-masse for packages
triggering a given `pkgcheck` check/warning
#### Keywords
* `at-find-unkeyworded-for-arch`: find packages unkeyworded for `${TARGET_ARCH}`
relative to `${BASE_ARCH}` (e.g. suppose trying to get `riscv` parity with `arm64`)
* `find-unkeyworded`: find packages which have an unkeyworded version in ::gentoo
for all arches. This sometimes happens and is forgotten about after committing
something "unkeyworded for testing".
### Maintenance
* `gbump`: bump group of packages (and commits if desired). Calls
`bump-generic` under the hood.
* `bump-generic`: bumps package to new version, copying from last visible
version in the repository. Used as a basis for other scripts too.
* `bump-go`: bumps Go package to a new version (generates dependency tarball
for you).
* `bump-rust`: bumps Rust package to a new version (generates CRATES variable
contents for you) (NOTE: deprecated in favour of app-portage/pycargoebuild).
* `git-revbump-all`: revbump all changed packages (NOTE: this needs some fixes
first, see comment at top of script)
#### Niche
* `generate-cmake-docs`: generate man page tarball for `dev-util/cmake`
* `generate-libunwind-docs`: generate man page tarball for `sys-libs/libunwind`
* `generate-sshuttle-docs`: generate man page tarball for `net-proxy/sshuttle`
* `generate-qemu-docs`: generate man page tarball for `app-emulation/qemu`
* `generate-pkgdev-docs`: generate man page tarball for `dev-util/pkgdev`
* `generate-libabigail-docs`: generate man page tarball for `dev-util/libabigail`
* `generate-iputils-docs`: generate man page tarball for `net-misc/iputils`
* `generate-ccache-docs`: generate man page tarball for `dev-util/ccache`
* `generate-libnet-docs`: generate man page tarball for `net-libs/libnet`
* `generate-pipewire-docs`: generate man page tarball for `media-video/pipewire`
* `gather-keys`: generate a clean keyring containing keys for a list of
given fingerprints after scraping keyservers for them.
### git
#### Assorted scripts
* `check-all-changed-pkgs`: run `ebuild .. clean prepare` (or up to some other
phase) on all packages with local pending changes. Useful for ensuring e.g.
mass revbumps or other QA fixes haven't broken e.g. applying patches (think
of e.g. `${PF}` being used in `PATCHES`)
* `commit-changed-pkgs`: commits each of the local changes per-package with
a given commit message
* `sort-branch origin/master my-changes`: sorts commits by commit summary -
does all work in a temporary branch and leaves `my-changes` alone. Can
choose to throw away the sorted branch if merge conflicts occur
#### rebase-filter-maint
Takes a branch and creates a filtered version based on included/excluded maintainers.
Optionally can create the inverse too.
Suppose you have a branch with changes across the Gentoo tree affecting a range
of maintainers.
##### Usage
```
$ cd ~/git/gentoo
$ git checkout my-large-change-set
# Make your changes!
# Configure the script as appropriate
$ bash ~/scripts/rebase-filter-maint --maintainer «maintainer regex»
$ git checkout my-large-change-set-identifier-blacklist
```
The `maintainer regex` may also be provided by providing the `maintainers` envvar before the script is called.
By default the script will operate on your working branch. This may be changed by passing `--minefield «branch name»`
The default configuration is to blacklist commits (i.e. cherry pick everything that doesn't match your regex). The inverse can be achieved by providing the `--whitelist` flag.
> **Note**:
> - The script does not currently handle passing both `--whitelist` and `--blacklist`; results may be unpredictable.
> - When run this script **will** perform a `git reset` on `origin/master`.
##### Example (whitelist)
Our branch is `controversial` with a load of changes some people might
want to discuss, but others you know are okay with.
You might set the list to be maintainers with whom you have a good rapport
and choose the whitelist mode.
`rebase-filter-maint` will then create a branch called `controversial-${identifier}-whitelist`
containing all commits affecting those maintainers, so you can push it straight away.
If you choose, `rebase-filter-maint` will create an inverse branch called
`controversial-${identifier}-blacklist` containing all commits affecting non-listed
maintainers. This is a branch you might have to submit for review or similar.
##### Example (blacklist)
Our branch is `straightforward` and we think the changes are non-controversial,
but we want to leave certain packages maintained by e.g. base-system@ or toolchain@
because those deserve extra care due to their importance.
In this case, you might want to choose the blacklist mode.
`rebase-filter-maint` will then create a branch called `straightforward-${identifier}-blacklist`
which contains all commits that need more care. This is a branch you might have to
submit for review or similar.
If you choose, `rebase-filter-maint` will create an inverse branch called
`straightforward-${identifier}-whitelist` containing all commits affecting
maintainers whose packages we can touch. This is a branch you might be
able to just push.
### gcc
* `generate_snapshot_index.py`: Generates a text file `known_snapshots.txt` which
indexes snapshots and the commit they were based on.
* `bisect-gcc`: Unpolished script used for `git bisect run` when bisecting GCC.
* `bisect-binutils`: Ditto.
* `bisect-gdb`: Ditto.
* `miscompile-reduce.sh`: Script for reducing miscompilations w/ cvise.
### llvm
* `build-llvm`: Sets args I usually want for CMake, bit like `bisect-gcc`.