summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/runtime/utils/targetbuildproject.py
blob: de17ba01f89a54c0b3f3b6671712d8d0d5b625f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Copyright (C) 2016 Intel Corporation
# Released under the MIT license (see COPYING.MIT)

from oeqa.utils.buildproject import BuildProject

class TargetBuildProject(BuildProject):

    def __init__(self, target, uri, foldername=None, dl_dir=None):
        self.target = target
        self.targetdir = "~/buildtest/"
        BuildProject.__init__(self, uri, foldername, dl_dir=dl_dir)

    def download_archive(self):
        self.target.run("mkdir " + self.targetdir + " || true")

        self._download_archive()

        status, output = self.target.copyTo(self.localarchive, self.targetdir)
        if status:
            raise Exception('Failed to copy archive to target, '
                            'output: %s' % output)

        cmd = 'tar xf %s%s -C %s' % (self.targetdir,
                                     self.archive,
                                     self.targetdir)
        status, output = self.target.run(cmd)
        if status:
            raise Exception('Failed to extract archive, '
                            'output: %s' % output)

        # Change targetdir to project folder
        self.targetdir = self.targetdir + self.fname

    # The timeout parameter of target.run is set to 0
    # to make the ssh command run with no timeout.
    def _run(self, cmd):
        ret = self.target.run(cmd, 0)
        msg = "Command %s failed with exit code %s: %s" % (cmd, ret[0], ret[1])
        if ret[0] != 0:
            raise Exception(msg)
        return ret[0]