diff options
Diffstat (limited to 'meta/lib/oeqa/runtime/smart.py')
-rw-r--r-- | meta/lib/oeqa/runtime/smart.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/meta/lib/oeqa/runtime/smart.py b/meta/lib/oeqa/runtime/smart.py index c7a5753991..c8ba433cdd 100644 --- a/meta/lib/oeqa/runtime/smart.py +++ b/meta/lib/oeqa/runtime/smart.py | |||
@@ -1,5 +1,7 @@ | |||
1 | import unittest | 1 | import unittest |
2 | import re | 2 | import re |
3 | import oe | ||
4 | import subprocess | ||
3 | from oeqa.oetest import oeRuntimeTest, skipModule | 5 | from oeqa.oetest import oeRuntimeTest, skipModule |
4 | from oeqa.utils.decorators import * | 6 | from oeqa.utils.decorators import * |
5 | from oeqa.utils.httpserver import HTTPService | 7 | from oeqa.utils.httpserver import HTTPService |
@@ -53,9 +55,46 @@ class SmartBasicTest(SmartTest): | |||
53 | class SmartRepoTest(SmartTest): | 55 | class SmartRepoTest(SmartTest): |
54 | 56 | ||
55 | @classmethod | 57 | @classmethod |
58 | def create_index(self, arg): | ||
59 | index_cmd = arg | ||
60 | try: | ||
61 | bb.note("Executing '%s' ..." % index_cmd) | ||
62 | result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8") | ||
63 | except subprocess.CalledProcessError as e: | ||
64 | return("Index creation command '%s' failed with return code %d:\n%s" % | ||
65 | (e.cmd, e.returncode, e.output.decode("utf-8"))) | ||
66 | if result: | ||
67 | bb.note(result) | ||
68 | return None | ||
69 | |||
70 | @classmethod | ||
56 | def setUpClass(self): | 71 | def setUpClass(self): |
57 | self.repolist = [] | 72 | self.repolist = [] |
58 | self.repo_server = HTTPService(oeRuntimeTest.tc.d.getVar('DEPLOY_DIR', True), oeRuntimeTest.tc.target.server_ip) | 73 | |
74 | # Index RPMs | ||
75 | rpm_createrepo = bb.utils.which(os.getenv('PATH'), "createrepo") | ||
76 | index_cmds = [] | ||
77 | rpm_dirs_found = False | ||
78 | archs = (oeRuntimeTest.tc.d.getVar('ALL_MULTILIB_PACKAGE_ARCHS', True) or "").replace('-', '_').split() | ||
79 | for arch in archs: | ||
80 | rpm_dir = os.path.join(oeRuntimeTest.tc.d.getVar('DEPLOY_DIR_RPM', True), arch) | ||
81 | idx_path = os.path.join(oeRuntimeTest.tc.d.getVar('WORKDIR', True), 'rpm', arch) | ||
82 | db_path = os.path.join(oeRuntimeTest.tc.d.getVar('WORKDIR', True), 'rpmdb', arch) | ||
83 | if not os.path.isdir(rpm_dir): | ||
84 | continue | ||
85 | if os.path.exists(db_path): | ||
86 | bb.utils.remove(dbpath, True) | ||
87 | lockfilename = oeRuntimeTest.tc.d.getVar('DEPLOY_DIR_RPM', True) + "/rpm.lock" | ||
88 | lf = bb.utils.lockfile(lockfilename, False) | ||
89 | oe.path.copyhardlinktree(rpm_dir, idx_path) | ||
90 | bb.utils.unlockfile(lf) | ||
91 | index_cmds.append("%s --dbpath %s --update -q %s" % (rpm_createrepo, db_path, idx_path)) | ||
92 | rpm_dirs_found = True | ||
93 | # Create repodata¬ | ||
94 | result = oe.utils.multiprocess_exec(index_cmds, self.create_index) | ||
95 | if result: | ||
96 | bb.fatal('%s' % ('\n'.join(result))) | ||
97 | self.repo_server = HTTPService(oeRuntimeTest.tc.d.getVar('WORKDIR', True), oeRuntimeTest.tc.target.server_ip) | ||
59 | self.repo_server.start() | 98 | self.repo_server.start() |
60 | 99 | ||
61 | @classmethod | 100 | @classmethod |