Gentoo Archives: gentoo-commits

From: Magnus Granberg <zorry@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/tinderbox-cluster:master commit in: pym/tbc/
Date: Wed, 02 Mar 2016 20:50:37
Message-Id: 1456951859.e57dd6203e4c04ac18c4b5333bf6c78b1a1eff11.zorry@gentoo
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: