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