[OE-core] [PATCH] oeqa/selftest: check if rm_work is enabled

Randy MacLeod randy.macleod at windriver.com
Thu Aug 9 14:07:47 UTC 2018


On 08/09/2018 04:54 AM, Richard Purdie wrote:
> On Wed, 2018-08-08 at 13:27 -0400, Randy MacLeod wrote:
>> On 07/28/2018 04:53 AM, Anuj Mittal wrote:
>>> rm_work if enabled leads to some tests failing that rely on
>>> artifacts being present. Check if rm_work.bbclass is included and
>>> show an error and exit if it is.
>>>
>>> Fixes [YOCTO #12694]
>>>
>>> Signed-off-by: Anuj Mittal <anuj.mittal at intel.com>
>>> ---
>>>    meta/lib/oeqa/selftest/context.py | 4 ++++
>>>    1 file changed, 4 insertions(+)
>>>
>>> diff --git a/meta/lib/oeqa/selftest/context.py
>>> b/meta/lib/oeqa/selftest/context.py
>>> index 16812ba96e..3a70f9e77b 100644
>>> --- a/meta/lib/oeqa/selftest/context.py
>>> +++ b/meta/lib/oeqa/selftest/context.py
>>> @@ -187,6 +187,10 @@ class
>>> OESelftestTestContextExecutor(OETestContextExecutor):
>>>                self.tc.logger.error("You have buildhistory enabled
>>> already and this isn't recommended for selftest, please disable it
>>> first.")
>>>                raise OEQAPreRun
>>>    
>>> +        if "rm_work.bbclass" in self.tc.td["BBINCLUDED"]:
>>> +            self.tc.logger.error("You have rm_work enabled which
>>> isn't recommended while running oe-selftest. Please disable it
>>> before continuing.")
>>> +            raise OEQAPreRun
>>> +
>>>            if "PRSERV_HOST" in self.tc.td:
>>>                self.tc.logger.error("Please unset PRSERV_HOST in
>>> order to run oe-selftest")
>>>                raise OEQAPreRun
>>>
>>
>> Enabling rm_work should NOT be an error, and eventually it should not
>> trigger any warnings. OEQA should only test the results of a build
>> not how the build was done.

Uh, oh. I had written this email but then realized that
the parts of oeqa that require that rm_work be disabled
are testing the internals of the build so I swear I didn't
send the email! :)


> 
> I'm torn on this. My thoughts:
> 
> I'd really like the results of oe-selftest to be consistent and
> deterministic. If we expect it to work with and without rm_work we
> really start having to test both, otherwise you can comparatively
> easily find odd failures with one and not the other. I've accidentally
> left it enabled, then puzzled over odd test results for an age on too
> many occasions :(.
> 
> I'm still of the view that rm_work is a horrible hack. Its one I've
> bent over backwards to try and keep working over the years[1] since a
> lot of people use it, that doesn't mean its any less of a hack though
> as when you understand what it does and how it does it, it really is
> horrible.
> ([1]I made 26 out of 47 changes to the class in the past 12 years)

Good to know. It is still useful so I guess it'll stay around until
storage is just incredibly cheap. Aren't we there yet:
    https://jcmit.net/flash2015.htm
If rm_work is such a hack, maybe we should schedule it to be removed.

> 
> If you step back and think about it, the use of rm_work precludes tests
> from poking into WORKDIR or at the very least makes them have to care
> about a lot of very specific task ordering of tasks which may or may
> not be present. It doesn't seem unreasonable for selftests to actually
> look in WORKDIR to ensure builds are doing the correct things.

I agree!

> 
>> I reviewed some of the rm_work related defects:
>>
>> 1. https://bugzilla.yoctoproject.org/show_bug.cgi?id=12647
>>     The warning was intentional based on Paul's comment.
> 
> There were two issues, one rm_work, the other warning piece isn't an
> issue.
> 
>> 2. https://bugzilla.yoctoproject.org/show_bug.cgi?id=12655
>>     The logs seem to only say that the error goes away when
>>     rm_work is NOT enabled. I'd prefer to understand what it is
>>     that's causing the failure and perhaps add to the packages
>>     recipe so that the output passes the OEQA tests.
> 
> The issue is that the test looks for an intermediate file in
> WORKDIR/sysroot-destdir. rm_work removes it before the test can find
> it.
> 
>> 3. https://bugzilla.yoctoproject.org/show_bug.cgi?id=12694
>>     Title was: oe-selftest should warn if rm_work is enabled
>>     but the commit makes it an error.
>>
>> Any disagreement about making it be a warning?
>>
>> rm_work saves lots of storage space so I'm reluctant to make
>> OEQA require that it is NOT used.
> 
> We're not requiring OEQA not use it globally, we're requiring oe-
> selftest not enable it. The other OEQA components (image, SDK, eSDK
> tests) all are unaffected.

Yeah, once I realized that yesterday, I decided not to send
my email (which managed to escape somehow anyway).
> 
> As things stand today several tests break with it. I've no doubt we
> could 'fix' them in some way to avoid the problems but do we require
> any new test author to test with and without rm_work? Do we start
> requiring the autobuilder test both combinations?
> 
> When the user runs oe-selftest, I really want them to get the same
> results as our autobuilder so we're consistent everywhere. We've had
> numerous problems in that regard, e.g. buildhistory enabled/not enabled
> and I think its reasonable for the code to check for things which are
> known to introduce inconsistency? We have made a lot of progress in
> being much more consistent.

I see. That makes sense.

We'll continue with some builds using rm_work and the ones that run
oeqa omitting that feature.

Thanks for the background Richard.

../Randy

> 
> Cheers,
> 
> Richard
> 
> 
> 
> 


-- 
# Randy MacLeod
# Wind River Linux



More information about the Openembedded-core mailing list