Linux Gentoo system wide epatch user

Linux Gentoo system wide epatch user/для тупых - epatch_user для любых ебилдов

В Gentoo есть очень полезная возможность наложить свои патчи на стандартный ebuild при сборке. Делается это так - патчи нужно сложить к примеру в /etc/portage/patches/net-proxy/wwwoffle для пакета net-proxy/wwwoffle и они применяца автоматом при сборке, ЕСЛИ! в ебилде вызов epatch_user в src_prepare(), а есть он блять не везде.. поэтому гдето это работает а гдето нет.

Но есть способ это исправить:

В /etc/portage/bashrc помещаем следующее:

pre_src_prepare() {
    [[ ${EAPI:-0} == [012345] ]] || return
    if ! type estack_push > /dev/null 2>&1; then
        local estack_names="eshopts_push eshopts_pop evar_push evar_push_set evar_pop estack_push estack_pop"
        source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${estack_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/estack.eclass)
    fi
    if ! type epatch_user > /dev/null 2>&1; then
        local epatch_names="EPATCH_SOURCE EPATCH_USER_SOURCE epatch_user_death_notice epatch_user epatch"
        source <(awk "/^# @(FUNCTION|VARIABLE): / { p = 0 } /^# @(FUNCTION|VARIABLE): (${epatch_names// /|})\$/ { p = 1 } p { print }" ${PORTDIR}/eclass/epatch.eclass)
    fi

    epatch_user

    for name in $epatch_names; do
        unset $name
    done
    for name in $estack_names; do
        unset $name
    done

}

Улыбимся/радуемся - гентуж блять!! рулит жеж нах!!😊