# Copyright (C) 2016 Intel Corporation # Released under the MIT license (see COPYING.MIT) import os import subprocess from oeqa.core.case import OETestCase class OESDKTestCase(OETestCase): def _run(self, cmd): return subprocess.check_output(". %s > /dev/null; %s;" % \ (self.tc.sdk_env, cmd), shell=True, stderr=subprocess.STDOUT, universal_newlines=True) def fetch(self, workdir, dl_dir, url, archive=None): if not archive: from urllib.parse import urlparse archive = os.path.basename(urlparse(url).path) if dl_dir: tarball = os.path.join(dl_dir, archive) if os.path.exists(tarball): return tarball tarball = os.path.join(workdir, archive) subprocess.check_output(["wget", "-O", tarball, url]) return tarball def check_elf(self, path, target_os=None, target_arch=None): """ Verify that the ELF binary $path matches the specified target OS/architecture, or if not specified the currently configured MACHINE's OS/architecture. """ import oe.qa, oe.elf if not target_os or not target_arch: output = self._run("echo $OECORE_TARGET_OS:$OECORE_TARGET_ARCH") target_os, target_arch = output.strip().split(":") machine_data = oe.elf.machine_dict(None)[target_os][target_arch] (machine, osabi, abiversion, endian, bits) = machine_data elf = oe.qa.ELFFile(path) elf.open() self.assertEqual(machine, elf.machine(), "Binary was %s but expected %s" % (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine))) self.assertEqual(bits, elf.abiSize()) self.assertEqual(endian, elf.isLittleEndian())