Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 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 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-30T15:12:16.000Z (7 months ago)
- Last Synced: 2024-10-14T16:57:23.088Z (3 months ago)
- Topics: ebuild, gentoo, scripts
- Language: Shell
- Homepage:
- Size: 145 KB
- Stars: 16
- Watchers: 4
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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.
* `miscompile-reduce.sh`: Script for reducing miscompilations w/ cvise.
### llvm
* `build-llvm`: Sets args I usually want for CMake, bit like `bisect-gcc`.