Zac Medico posted on Thu, 26 Apr 2012 08:21:02 -0700 as excerpted:

> On 04/26/2012 02:55 AM, Duncan wrote:
>> Zac Medico posted on Wed, 25 Apr 2012 23:26:24 -0700 as excerpted:
>>
>>> On 04/25/2012 11:18 PM, Duncan wrote:
>>>> IOW, let's quit letting the perfect be the enemy of the good

>>> If that means settling on something that's fragile and prone to lots
>>> of bug reports, then it's not really practical

>> IMO[,] If all it does is the patching, but it /always/ does the
>> patching[,] and people know they need to use the overlay-ebuild
>> method to do anything beyond patching, [including eautoreconf,]
>> then it should "just work".

> Ignoring the problem doesn't make it go away. If we ignore the problem,
> then we end up dealing with bug reports of the form "FEATURES=userpatch
> doesn't work with this particular patch set" until the end of time.

Standard boilerplate resolved/DUP, pointing to the first one, resolved 
like this:

NOTABUG/INVALID.  The feature does what it says on the label and is 
working as designed.  The files are patched and the build bails out if 
the patch fails.  The userpatch feature is deliberately limited to 
patching, thus keeping the problem manageable and the code transparent 
and maintainable.  For anything fancy, including patches that need 
eautoreconf called afterward, the userpatch feature isn't the right 
tool.  Copy the ebuild to an overlay and edit it as necessary to both 
apply the patch and eautoreconf or whatever else needs done afterward.

> Also, don't forget to consider the possibility of interference between
> FEATURES=userpatch and epatch_user (applying same patches twice).

The existing phaselock-file solution should continue to work there.  Test 
for the existence of a file and punt if it's found; touch the file on 
first invocation.

The only caveat is that the existing eclass solution has changed the 
filename before.  Once the corresponding feature exists, both the eclass 
and the feature will have to use the same filename so as not to conflict 
with each other, thereby effectively locking down the name and preventing 
further changes to it.

> Overall, the "apply_user_patches_here" approach [1] seems pretty
> reasonable to me.
> 
> [1]
> http://archives.gentoo.org/gentoo-dev/
msg_c228be85e0c4e577ad194e6004d59062.xml

With the requirements that if the ebuild never calls it, it's still run 
immediately after source_prepare, thus ensuring that it gets called, AND 
that calling either autoreconf or eautoreconf without calling apply-user-
patches first is a repoman-checked error, it looks like it should work, 
agreed.

But I'm a bit wary as to the robustness.  And without a mechanism to 
apply the patches at a particular point (arguably, post-src-prepare) even 
in the absence of a specific apply-user-patches-here call, we're back 
where we were without a global solution, but if the hard-invocation is 
done, then we're back to either inefficiently running eautoreconf twice 
or forced into doing likely failure-prone detection, thus the worry over 
robustness.

But of course he who codes, decides.  We have existing and already proven 
code for the simple case, but if someone actually codes that complex 
approach, and it actually does both get us global coverage and avoid 
duplicated autoreconf runs, without hard to track down failures, I for 
one will certainly bless them! =:^)

I just don't want to have to wait until kingdom come for the "perfect" 
solution, when we already have a demonstrated "good enough 80-90% of the 
time" solution ready to roll out globally, if we'd just do it.

It's also worth pointing out that nothing prevents rolling out the "good 
enough" solution right away, then growing the complexity to cover the 
harder autoreconf cases when a solution for them actually gets coded.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman


Reply via email to