[yocto] [yocto-autobuilder][PATCHv2 4/5] autobuilder/buildsteps: Add DAFTFlash buildstep

Aníbal Limón anibal.limon at linux.intel.com
Mon Jul 3 09:37:20 PDT 2017



On 07/03/2017 09:03 AM, Joshua Lock wrote:
> On Tue, 2017-06-06 at 10:46 -0500, Aníbal Limón wrote:
>> This will execute daft flash cycle without reboot and prepare the dut
>> for sanity tests.
>>
>> [YOCTO #10604]
>>
>> Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
>> Signed-off-by: Monserrat Sedeno <monserratx.sedeno.bustos.intel.com>
> 
> Typo in the email address here.
> 
>> Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho at linux.intel.com>
>> ---
>>  config/autobuilder.conf.example                    |  1 +
>>  .../autobuilder/buildsteps/DaftFlash.py            | 42
>> ++++++++++++++++++++++
>>  lib/python2.7/site-packages/autobuilder/config.py  |  1 +
>>  3 files changed, 44 insertions(+)
>>  create mode 100644 lib/python2.7/site-
>> packages/autobuilder/buildsteps/DaftFlash.py
>>
>> diff --git a/config/autobuilder.conf.example
>> b/config/autobuilder.conf.example
>> index e5ec16b..2e992cf 100644
>> --- a/config/autobuilder.conf.example
>> +++ b/config/autobuilder.conf.example
>> @@ -98,3 +98,4 @@ PERFORMANCE_MAIL_SIG = "Multiline\nSig\nLine"
>>  
>>  [Daft]
>>  DAFT_WORKER_DEVICES_CFG = "/etc/daft/devices.cfg"
>> +DAFT_WORKER_WORKSPACE = "/home/ab/workspace"
>> diff --git a/lib/python2.7/site-
>> packages/autobuilder/buildsteps/DaftFlash.py b/lib/python2.7/site-
>> packages/autobuilder/buildsteps/DaftFlash.py
>> new file mode 100644
>> index 0000000..d5f6de8
>> --- /dev/null
>> +++ b/lib/python2.7/site-packages/autobuilder/buildsteps/DaftFlash.py
>> @@ -0,0 +1,42 @@
>> +import os
>> +
>> +from autobuilder.config import DAFT_WORKER_WORKSPACE
>> +from buildbot.steps.shell import ShellCommand
>> +
>> +class DaftFlash(ShellCommand):
>> +    haltOnFailure = True
>> +
>> +    name = "DaftFlash"
>> +
>> +    def __init__(self, factory, argdict=None, **kwargs):
>> +        self.tests = None
>> +        self.factory = factory
>> +        for k, v in argdict.iteritems():
>> +            setattr(self, k, v)
>> +        self.description = "DUT Flashing"
>> +        self.timeout = 100000
>> +        kwargs['timeout']=self.timeout
>> +        ShellCommand.__init__(self, **kwargs)
>> +
>> +    def start(self):
>> +        workspace_dir = DAFT_WORKER_WORKSPACE
>> +
>> +        dut_name = self.getProperty('dut_name')
>> +        workdir = self.getProperty('workdir')
>> +        image = self.getProperty('BUILDIMAGES')
> 
> Remember to fix this when you rename the property.
> 
>> +        machine = self.getProperty('MACHINE')
>> +
>> +        image_path = os.path.join(workdir, 'build', 'build', 'tmp',
>> 'deploy',
>> +                'images', machine, '%s-%s.hddimg' % (image,
>> machine))
>> +        image_name = os.path.basename(image_path)
>> +
>> +        # XXX: DAFT needs to have the image in a shared workspace 
>> +        self.command = "cp %s %s; " % (image_path, workspace_dir)
>> +
>> +        self.command += "cd %s; " % (workspace_dir)
>> +
>> +        # XXX: DAFT needs to be executed by root user
> 
> Why's that? Is that an intrinsic requirement of DAFT or is it because
> DAFT wants to use certain devices that are typically owned by root? Can
> we instead make the requirement that the user running daft has
> permissions and groups correctly configured to access these devices?

I don't have too much insight about this security issue, i think there
is because the deployment resources files are on /root directory, so i
agree that this needs to be changed but i don't know how much effort
will require.

I'm adding Jair since he knows more about this situation, and Miko that
as far as i know he works on refkit QA.

Cheers,
Anibal


> 
>> +        daft_cmd = "daft --setout %s %s" % (dut_name, image_name)
>> +        self.command += "sudo su -l -c 'cd {} && {}';
>> ".format(workspace_dir, daft_cmd)
>> +
>> +        ShellCommand.start(self)
>> diff --git a/lib/python2.7/site-packages/autobuilder/config.py
>> b/lib/python2.7/site-packages/autobuilder/config.py
>> index 5bcf6c6..fcc08f0 100644
>> --- a/lib/python2.7/site-packages/autobuilder/config.py
>> +++ b/lib/python2.7/site-packages/autobuilder/config.py
>> @@ -24,3 +24,4 @@ IPK_PUBLISH_DIR = os.environ.get("IPK_PUBLISH_DIR")
>>  DEB_PUBLISH_DIR = os.environ.get("DEB_PUBLISH_DIR")
>>  PERFORMANCE_PUBLISH_DIR = os.environ.get("PERFORMANCE_PUBLISH_DIR")
>>  DAFT_WORKER_DEVICES_CFG = os.environ.get("DAFT_WORKER_DEVICES_CFG")
>> +DAFT_WORKER_WORKSPACE = os.environ.get("DAFT_WORKER_WORKSPACE")



More information about the yocto mailing list