1 |
commit: e57dd6203e4c04ac18c4b5333bf6c78b1a1eff11 |
2 |
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Mar 2 20:50:59 2016 +0000 |
4 |
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Mar 2 20:50:59 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=e57dd620 |
7 |
|
8 |
add more support for use test |
9 |
|
10 |
pym/tbc/build_job.py | 49 ++++++++++++++++++++++++++++++++++++------------- |
11 |
pym/tbc/db_mapping.py | 6 ++++-- |
12 |
pym/tbc/flags.py | 10 ++-------- |
13 |
pym/tbc/package.py | 18 +++++++++++++----- |
14 |
pym/tbc/sqlquerys.py | 15 ++++++--------- |
15 |
5 files changed, 61 insertions(+), 37 deletions(-) |
16 |
|
17 |
diff --git a/pym/tbc/build_job.py b/pym/tbc/build_job.py |
18 |
index dcec3b9..e8ab829 100644 |
19 |
--- a/pym/tbc/build_job.py |
20 |
+++ b/pym/tbc/build_job.py |
21 |
@@ -67,6 +67,14 @@ class build_job_action(object): |
22 |
build_cpv_list = [] |
23 |
depclean_fail = True |
24 |
disable_test_features = False |
25 |
+ enable_test_features = False |
26 |
+ restrictions_test = False |
27 |
+ restrictions_list= get_ebuild_restrictions(self._session, build_dict['ebuild_id']) |
28 |
+ if restrictions_list: |
29 |
+ if "test" in restrictions_list: |
30 |
+ restrictions_test = True |
31 |
+ if restrictions_test and "test" in settings.features: |
32 |
+ disable_test_features = True |
33 |
for k, build_use_flags_list in buildqueru_cpv_dict.items(): |
34 |
build_cpv_list.append("=" + k) |
35 |
if not build_use_flags_list == None: |
36 |
@@ -80,22 +88,37 @@ class build_job_action(object): |
37 |
f.write(filetext) |
38 |
f.write('\n') |
39 |
f.close |
40 |
- if not build_dict['build_useflags'] is None: |
41 |
- if "test" in build_dict['build_useflags'] and "test" in settings.features: |
42 |
- if build_dict['build_useflags']['test'] is False: |
43 |
- disable_test_features = True |
44 |
- restrictions_dict = get_ebuild_restrictions(self._session, build_dict['ebuild_id']) |
45 |
- if restrictions_dict: |
46 |
- if "test" in restrictions_dict: |
47 |
- disable_test_features = True |
48 |
- if disable_test_features: |
49 |
- filetext = k + ' ' + 'notest.conf' |
50 |
+ |
51 |
+ if not build_dict['build_useflags'] is None: |
52 |
+ if "test" in build_dict['build_useflags']: |
53 |
+ if build_dict['build_useflags']['test'] is False and "test" in settings.features: |
54 |
+ disable_test_features = True |
55 |
+ if build_dict['build_useflags']['test'] is True and not disable_test_features and "test" not in settings.features: |
56 |
+ enable_test_features = True |
57 |
+ if disable_test_features: |
58 |
+ filetext = '=' + k + ' ' + 'notest.conf' |
59 |
+ log_msg = "filetext: %s" % filetext |
60 |
+ add_logs(self._session, log_msg, "info", self._config_id) |
61 |
+ with open("/etc/portage/package.env/99_env", "a") as f: |
62 |
+ f.write(filetext) |
63 |
+ f.write('\n') |
64 |
+ f.close |
65 |
+ if enable_test_features: |
66 |
+ filetext = k + ' ' + 'test.conf' |
67 |
log_msg = "filetext: %s" % filetext |
68 |
add_logs(self._session, log_msg, "info", self._config_id) |
69 |
- with open("/etc/portage/package.env", "a") as f: |
70 |
+ with open("/etc/portage/package.env/99_env", "a") as f: |
71 |
f.write(filetext) |
72 |
f.write('\n') |
73 |
f.close |
74 |
+ filetext = '=' + k + ' ' + 'test.conf' |
75 |
+ log_msg = "filetext: %s" % filetext |
76 |
+ add_logs(self._session, log_msg, "info", self._config_id) |
77 |
+ with open("/etc/portage/package.env/99_env", "a") as f: |
78 |
+ f.write(filetext) |
79 |
+ f.write('\n') |
80 |
+ f.close |
81 |
+ |
82 |
log_msg = "build_cpv_list: %s" % (build_cpv_list,) |
83 |
add_logs(self._session, log_msg, "info", self._config_id) |
84 |
|
85 |
@@ -138,8 +161,8 @@ class build_job_action(object): |
86 |
os.remove("/etc/portage/package.use/99_autounmask") |
87 |
with open("/etc/portage/package.use/99_autounmask", "a") as f: |
88 |
f.close |
89 |
- os.remove("/etc/portage/package.env") |
90 |
- with open("/etc/portage/package.env", "a") as f: |
91 |
+ os.remove("/etc/portage/package.env/99_env") |
92 |
+ with open("/etc/portage/package.env/99_env/", "a") as f: |
93 |
f.close |
94 |
except: |
95 |
pass |
96 |
|
97 |
diff --git a/pym/tbc/db_mapping.py b/pym/tbc/db_mapping.py |
98 |
index 86884bf..34ac324 100644 |
99 |
--- a/pym/tbc/db_mapping.py |
100 |
+++ b/pym/tbc/db_mapping.py |
101 |
@@ -12,11 +12,13 @@ class Keywords(Base): |
102 |
KeywordId = Column('keyword_id', Integer, primary_key=True) |
103 |
Keyword = Column('keyword', String) |
104 |
__tablename__ = 'keywords' |
105 |
- |
106 |
+ |
107 |
class Setups(Base): |
108 |
SetupId = Column('setup_id', Integer, primary_key=True) |
109 |
Setup = Column('setup', String(100)) |
110 |
Profile = Column('profile', String(150)) |
111 |
+ Test = Column('test', Boolean, default=False) |
112 |
+ Repoman = Column('repoman', Boolean, default=False) |
113 |
__tablename__ = 'setups' |
114 |
|
115 |
class Configs(Base): |
116 |
@@ -25,7 +27,7 @@ class Configs(Base): |
117 |
SetupId = Column('setup_id', Integer, ForeignKey('setups.setup_id')) |
118 |
Host = Column('default_config', Boolean, default=False) |
119 |
__tablename__ = 'configs' |
120 |
- |
121 |
+ |
122 |
class Logs(Base): |
123 |
LogId = Column('log_id', Integer, primary_key=True) |
124 |
ConfigId = Column('config_id', Integer, ForeignKey('configs.config_id')) |
125 |
|
126 |
diff --git a/pym/tbc/flags.py b/pym/tbc/flags.py |
127 |
index 82b7d42..10c9390 100644 |
128 |
--- a/pym/tbc/flags.py |
129 |
+++ b/pym/tbc/flags.py |
130 |
@@ -1,14 +1,8 @@ |
131 |
-#!/usr/bin/python |
132 |
-# |
133 |
-# Copyright 1998-2015 Gentoo Foundation |
134 |
+# Copyright 1998-2016 Gentoo Foundation |
135 |
# Distributed under the terms of the GNU General Public License v2 |
136 |
|
137 |
# Origin flags.py from portage public api repo |
138 |
from __future__ import print_function |
139 |
-from _emerge.main import parse_opts |
140 |
-from _emerge.depgraph import backtrack_depgraph, depgraph, resume_depgraph |
141 |
-from _emerge.create_depgraph_params import create_depgraph_params |
142 |
-from _emerge.actions import load_emerge_config |
143 |
import portage |
144 |
import os |
145 |
|
146 |
@@ -163,7 +157,7 @@ class tbc_use_flags(object): |
147 |
iuse_flags = self.filter_flags(self.get_iuse(), use_expand_hidden, usemasked, useforced) |
148 |
#flags = filter_flags(use_flags, use_expand_hidden, usemasked, useforced) |
149 |
final_flags = self.filter_flags(final_use, use_expand_hidden, usemasked, useforced) |
150 |
- return iuse_flags, final_flags |
151 |
+ return iuse_flags, final_flags, usemasked |
152 |
|
153 |
def get_flags_looked(self): |
154 |
"""Retrieves all information needed to filter out hidden, masked, etc. |
155 |
|
156 |
diff --git a/pym/tbc/package.py b/pym/tbc/package.py |
157 |
index c069c7e..255ec67 100644 |
158 |
--- a/pym/tbc/package.py |
159 |
+++ b/pym/tbc/package.py |
160 |
@@ -56,16 +56,20 @@ class tbc_package(object): |
161 |
|
162 |
# Get the iuse and use flags for that config/setup and cpv |
163 |
init_useflags = tbc_use_flags(mysettings_setup, myportdb_setup, build_cpv) |
164 |
- iuse_flags_list, final_use_list = init_useflags.get_flags() |
165 |
+ iuse_flags_list, final_use_list, usemasked = init_useflags.get_flags() |
166 |
iuse_flags_list2 = [] |
167 |
for iuse_line in iuse_flags_list: |
168 |
iuse_flags_list2.append( init_useflags.reduce_flag(iuse_line)) |
169 |
- |
170 |
+ enable_test = False |
171 |
+ if SetupInfo.Test: |
172 |
+ if not "test" in usemasked: |
173 |
+ enable_test = True |
174 |
# Dict the needed info |
175 |
attDict = {} |
176 |
attDict['cpv'] = build_cpv |
177 |
attDict['useflags'] = final_use_list |
178 |
attDict['iuse'] = iuse_flags_list2 |
179 |
+ attDict['test'] = enable_test |
180 |
config_cpv_dict[ConfigInfo.SetupId] = attDict |
181 |
|
182 |
# Clean some cache |
183 |
@@ -156,6 +160,7 @@ class tbc_package(object): |
184 |
use_flagsDict[x] = True |
185 |
for x in use_disable: |
186 |
use_flagsDict[x] = False |
187 |
+ enable_test = v['test'] |
188 |
# Unpack packageDict |
189 |
i = 0 |
190 |
for k, v in packageDict.items(): |
191 |
@@ -163,9 +168,12 @@ class tbc_package(object): |
192 |
|
193 |
# Comper and add the cpv to buildqueue |
194 |
if build_cpv == k: |
195 |
- restrictions_dict = get_ebuild_restrictions(self._session, ebuild_id) |
196 |
- if restrictions_dict: |
197 |
- if "test" in restrictions_dict and "test" in use_flagsDict: |
198 |
+ # check if we need to enable or disable test |
199 |
+ if "test" in use_flagsDict and enable_test: |
200 |
+ use_flagsDict['test'] = True |
201 |
+ restrictions_list = get_ebuild_restrictions(self._session, ebuild_id) |
202 |
+ if restrictions_list: |
203 |
+ if "test" in restrictions_list and "test" in use_flagsDict: |
204 |
use_flagsDict['test'] = False |
205 |
add_new_build_job(self._session, ebuild_id, setup_id, use_flagsDict, self._config_id) |
206 |
# B = Build cpv use-flags config |
207 |
|
208 |
diff --git a/pym/tbc/sqlquerys.py b/pym/tbc/sqlquerys.py |
209 |
index 85621fe..60f4ba8 100644 |
210 |
--- a/pym/tbc/sqlquerys.py |
211 |
+++ b/pym/tbc/sqlquerys.py |
212 |
@@ -561,16 +561,13 @@ def get_ebuild_id_db(session, checksum, package_id, ebuild_version): |
213 |
|
214 |
def get_ebuild_restrictions(session, ebuild_id): |
215 |
restrictions = [] |
216 |
- try: |
217 |
- EbuildsRestrictionsInfo = session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).one() |
218 |
- except NoResultFound as e: |
219 |
+ EbuildsRestrictionsInfos = session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).all() |
220 |
+ if EbuildsRestrictionsInfos == []: |
221 |
return False |
222 |
- except MultipleResultsFound as e: |
223 |
- EbuildsRestrictionsInfos = session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).all() |
224 |
- for EbuildsRestrictionsInfo in EbuildsRestrictionsInfos: |
225 |
- restrictions.append(session.query(Restrictions).filter_by(RestrictionId = EbuildsRestrictionsInfo.RestrictionId).one()) |
226 |
- return restrictions |
227 |
- return restrictions.append(session.query(Restrictions).filter_by(RestrictionId = EbuildsRestrictionsInfo.RestrictionId).one()) |
228 |
+ for EbuildsRestrictionsInfo in EbuildsRestrictionsInfos: |
229 |
+ RestrictionsInfo = session.query(Restrictions).filter_by(RestrictionId = EbuildsRestrictionsInfo.RestrictionId).one() |
230 |
+ restrictions.append(RestrictionsInfo.Restriction) |
231 |
+ return restrictions |
232 |
|
233 |
def add_repoman_log(session, package_id, repoman_log, repoman_hash): |
234 |
try: |