On 02/10/2017 05:57 AM, Michał Górny wrote:
> W dniu 09.02.2017, czw o godzinie 14∶39 -0800, użytkownik Zac Medico
> napisał:
>> On 12/01/2014 01:28 PM, Michał Górny wrote:
>>> Add support for the user patch applying function.
>>> ---
>>> bin/eapi.sh | 4 ++++
>>> bin/phase-helpers.sh | 22 ++++++++++++++++++++++
>>> 2 files changed, 26 insertions(+)
>>>
>>> diff --git a/bin/eapi.sh b/bin/eapi.sh
>>> index 8ffffbb..6e78750 100644
>>> --- a/bin/eapi.sh
>>> +++ b/bin/eapi.sh
>>> @@ -76,6 +76,10 @@ ___eapi_has_eapply() {
>>> [[ ! ${1-${EAPI}} =~
>>> ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
>>> }
>>>
>>> +___eapi_has_eapply_user() {
>>> + [[ ! ${1-${EAPI}} =~
>>> ^(0|1|2|3|4|4-python|4-slot-abi|5|5-hdepend|5-progress)$ ]]
>>> +}
>>> +
>>> ___eapi_has_master_repositories() {
>>> [[ ${1-${EAPI}} =~ ^(5-progress)$ ]]
>>> }
>>> diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
>>> index e9fbbb4..f4b64ee 100644
>>> --- a/bin/phase-helpers.sh
>>> +++ b/bin/phase-helpers.sh
>>> @@ -986,6 +986,28 @@ if ___eapi_has_eapply; then
>>> }
>>> fi
>>>
>>> +if ___eapi_has_eapply_user; then
>>> + eapply_user() {
>>> + local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches
>>> +
>>> + local d applied
>>> + # possibilities:
>>> + # 1. ${CATEGORY}/${P}-${PR} (note: -r0 desired to avoid applying
>>> + # ${P} twice)
>>> + # 2. ${CATEGORY}/${P}
>>> + # 3. ${CATEGORY}/${PN}
>>> + # all of the above may be optionally followed by a slot
>>> + for d in
>>> "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/*}}; do
>>> + if [[ -d ${d} ]]; then
>>> + eapply "${d}"
>>> + applied=1
>>
>> I think it should break out of the loop here, like epatch_user does.
>
> As the comment above suggests, it was intentional that all directories
> are used.
>
>> It doesn't make sense to apply more-specific patches before
>> less-specific patches, does it?
>
> Maybe. It would probably be most reasonable to sort them all by
> filename, and apply in that order. Also allowing patch with the same
> filename to override/skip patch from less specific directory.
Yeah that sounds good. If we do that then it will be roughly compatible
with the existing behavior, so if we're lucky then nobody will complain.
I've filed a corresponding feature request bug:
https://bugs.gentoo.org/show_bug.cgi?id=608880
>> Maybe we can just treat this as a bug fix? Is anyone relying on the
>> multiple directory usage?
>
> That sounds like a major behavior change for a 'fix'. I'm using multiple
> directories though it's all pretty much a workaround solution, so I
> guess it doesn't matter if we keep it stable.
If we wanted to disable the multi directory support, I guess we could
make it trigger an ewarn message before we really change the behavior,
but I think I like the sorting/override/skip idea better.
>>
>>> + fi
>>> + done
>>> +
>>> + [[ -n ${applied} ]] && ewarn "User patches applied."
>>> + }
>>> +fi
>>> +
>>> if ___eapi_has_master_repositories; then
>>> master_repositories() {
>>> local output repository=$1 retval
>>>
>>
>>
>
--
Thanks,
Zac