From the Terminal
When you run emerge portage does a series of things to your package in order:
To set up a patch working environment we're going to go ahead and let it do all of that up to prepare. We will do this with the ebuild command:
ebuild file.ebuild fetch ebuild file.ebuild unpack ebuild file.ebuild prepare
Now we copy the work directory to our own directory:
sudo cp -R /var/tmp/portage/www-client/ungoogled-chromium-88.0.4324.150-r2/work ~/Sources/ungoogled-chromium-88.0.4324.150-r2-work sudo chown -R akujin:users /var/tmp/portage/www-client/ungoogled-chromium-88.0.4324.150-r2/work ~/Sources/ungoogled-chromium-88.0.4324.150-r2-work
Now we have our work directory where we can build our patch. The patch will be applied after prepare is done running so that is why we copied the work directory right after prepare was done running. In our copy of the work directory we need to initialize the folder as a git repo so we go ahead and run:
git init git add . git commit
Now we can make the modifications we want to make. After you're done simply stage your changes and run:
sudo sh -c "git diff --staged > /etc/portage/patches/www-client/ungoogled-chromium/macos-hotkeys-on-linux.patch"
You can test your new patch simply by running emerge on your package.
Sometimes when you want to emerge something or upgrade something you will have dependency slot conflicts like this example.
To fix this problem you'd need to emerge all kde-frameworks/* packages you currently have installed to upgrade them all at once since it's all part of one framework.
The following commands let you do so with ease.
equery l kde-frameworks/* -F '$category/$name'
The output of which you can send right into emerge like so.
sudo emerge --ask -1 --verbose-conflicts $(equery l kde-frameworks/* -F '$category/$name')
Now you'll hopefully get a clean emerge.