xref: /OK3568_Linux_fs/yocto/poky/meta/lib/oeqa/sdk/utils/sdkbuildproject.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# Copyright (C) 2016 Intel Corporation
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# SPDX-License-Identifier: MIT
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunimport os
8*4882a593Smuzhiyunimport subprocess
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunfrom oeqa.utils.buildproject import BuildProject
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunclass SDKBuildProject(BuildProject):
13*4882a593Smuzhiyun    def __init__(self, testpath, sdkenv, uri, testlogdir, builddatetime,
14*4882a593Smuzhiyun            foldername=None, dl_dir=None):
15*4882a593Smuzhiyun        self.sdkenv = sdkenv
16*4882a593Smuzhiyun        self.testdir = testpath
17*4882a593Smuzhiyun        self.targetdir = testpath
18*4882a593Smuzhiyun        os.makedirs(testpath, exist_ok=True)
19*4882a593Smuzhiyun        self.datetime = builddatetime
20*4882a593Smuzhiyun        self.testlogdir = testlogdir
21*4882a593Smuzhiyun        os.makedirs(self.testlogdir, exist_ok=True)
22*4882a593Smuzhiyun        self.logfile = os.path.join(self.testlogdir, "sdk_target_log.%s" % self.datetime)
23*4882a593Smuzhiyun        BuildProject.__init__(self, uri, foldername, tmpdir=testpath, dl_dir=dl_dir)
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun    def download_archive(self):
26*4882a593Smuzhiyun        self._download_archive()
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun        cmd = 'tar xf %s -C %s' % (os.path.join(self.targetdir, self.archive), self.targetdir)
29*4882a593Smuzhiyun        subprocess.check_output(cmd, shell=True)
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun        #Change targetdir to project folder
32*4882a593Smuzhiyun        self.targetdir = os.path.join(self.targetdir, self.fname)
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun    def run_configure(self, configure_args='', extra_cmds=''):
35*4882a593Smuzhiyun        return super(SDKBuildProject, self).run_configure(configure_args=(configure_args or '$CONFIGURE_FLAGS'), extra_cmds=extra_cmds)
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun    def run_install(self, install_args=''):
38*4882a593Smuzhiyun        return super(SDKBuildProject, self).run_install(install_args=(install_args or "DESTDIR=%s/../install" % self.targetdir))
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun    def log(self, msg):
41*4882a593Smuzhiyun        if self.logfile:
42*4882a593Smuzhiyun            with open(self.logfile, "a") as f:
43*4882a593Smuzhiyun               f.write("%s\n" % msg)
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun    def _run(self, cmd):
46*4882a593Smuzhiyun        self.log("Running . %s; " % self.sdkenv + cmd)
47*4882a593Smuzhiyun        try:
48*4882a593Smuzhiyun            output = subprocess.check_output(". %s; " % self.sdkenv + cmd, shell=True,
49*4882a593Smuzhiyun                                             executable='/bin/bash', stderr=subprocess.STDOUT)
50*4882a593Smuzhiyun        except subprocess.CalledProcessError as exc:
51*4882a593Smuzhiyun            print(exc.output.decode('utf-8'))
52*4882a593Smuzhiyun            return exc.returncode
53*4882a593Smuzhiyun        return 0
54