Portage is Gentoo's default package manager. This post isn't supposed to be a tutorial, the handbook does a pretty good job of that already. I'm just recording a few tricks so I don't forget them.
User patches
While playing around with LDAP, I was trying to troubleshoot the
SASL_NOCANON
handling. “Gee,” I thought, “wouldn't it be nice to be
able to add debugging printfs to figure out what was happening?”
Unfortunately, I had trouble getting ldapwhoami
working when I
compiled it by hand. “Grrr,” I though, “I just want to add a simple
patch and do whatever the ebuild already does.” This is actually
pretty easy to do, once you're looking in the right places.
Write your patch
I'm not going to cover that here.
Place your patch where epatch_user
will find it
This would be under
/etc/portage/patches/<CATEGORY>/<PF|P|PN>/
If your ebuild already calls epatch_user
, or it uses an eclass like
base
that calls epatch_user
internally, you're done. If not, read
on…
Forcing epatch_user
While you could always write an overlay with an improved ebuild, a quicker fix for this kind of hack is /etc/portage/bashrc. I used:
if [ "${EBUILD_PHASE}" == "prepare" ]; then
echo ":: Calling epatch_user";
pushd "${S}"
epatch_user
popd
fi
to insert my patches at the beginning of the prepare
phase.
Cleaning up
It's safe to call epatch_user
multiple times, so you can leave this
setup in place if you like. However, you might run into problems if
you touch autoconf files, so you may want to move your
bashrc
somewhere else until you need it again!