commit:     e57dd6203e4c04ac18c4b5333bf6c78b1a1eff11
Author:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Wed Mar  2 20:50:59 2016 +0000
Commit:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Wed Mar  2 20:50:59 2016 +0000
URL:        
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=e57dd620

add more support for use test

 pym/tbc/build_job.py  | 49 ++++++++++++++++++++++++++++++++++++-------------
 pym/tbc/db_mapping.py |  6 ++++--
 pym/tbc/flags.py      | 10 ++--------
 pym/tbc/package.py    | 18 +++++++++++++-----
 pym/tbc/sqlquerys.py  | 15 ++++++---------
 5 files changed, 61 insertions(+), 37 deletions(-)

diff --git a/pym/tbc/build_job.py b/pym/tbc/build_job.py
index dcec3b9..e8ab829 100644
--- a/pym/tbc/build_job.py
+++ b/pym/tbc/build_job.py
@@ -67,6 +67,14 @@ class build_job_action(object):
                build_cpv_list = []
                depclean_fail = True
                disable_test_features = False
+               enable_test_features = False
+               restrictions_test = False
+               restrictions_list= get_ebuild_restrictions(self._session, 
build_dict['ebuild_id'])
+               if restrictions_list:
+                       if "test" in restrictions_list:
+                               restrictions_test = True
+               if restrictions_test and "test" in settings.features:
+                       disable_test_features = True
                for k, build_use_flags_list in buildqueru_cpv_dict.items():
                        build_cpv_list.append("=" + k)
                        if not build_use_flags_list == None:
@@ -80,22 +88,37 @@ class build_job_action(object):
                                        f.write(filetext)
                                        f.write('\n')
                                        f.close
-               if not build_dict['build_useflags'] is None:
-                       if "test" in build_dict['build_useflags'] and "test" in 
settings.features:
-                               if build_dict['build_useflags']['test'] is 
False:
-                                       disable_test_features = True
-               restrictions_dict = get_ebuild_restrictions(self._session, 
build_dict['ebuild_id'])
-               if restrictions_dict:
-                       if "test" in restrictions_dict:
-                               disable_test_features = True
-               if disable_test_features:
-                       filetext = k + ' ' + 'notest.conf'
+
+                       if not build_dict['build_useflags'] is None:
+                               if "test" in build_dict['build_useflags']:
+                                       if build_dict['build_useflags']['test'] 
is False and "test" in settings.features:
+                                               disable_test_features = True
+                                       if build_dict['build_useflags']['test'] 
is True and not disable_test_features and "test" not in settings.features:
+                                               enable_test_features = True
+                       if disable_test_features:
+                               filetext = '=' + k + ' ' + 'notest.conf'
+                               log_msg = "filetext: %s" % filetext
+                               add_logs(self._session, log_msg, "info", 
self._config_id)
+                               with open("/etc/portage/package.env/99_env", 
"a") as f:
+                                       f.write(filetext)
+                                       f.write('\n')
+                                       f.close
+               if enable_test_features:
+                       filetext = k + ' ' + 'test.conf'
                        log_msg = "filetext: %s" % filetext
                        add_logs(self._session, log_msg, "info", 
self._config_id)
-                       with open("/etc/portage/package.env", "a") as f:
+                       with open("/etc/portage/package.env/99_env", "a") as f:
                                f.write(filetext)
                                f.write('\n')
                                f.close
+                       filetext = '=' + k + ' ' + 'test.conf'
+                       log_msg = "filetext: %s" % filetext
+                       add_logs(self._session, log_msg, "info", 
self._config_id)
+                       with open("/etc/portage/package.env/99_env", "a") as f:
+                               f.write(filetext)
+                               f.write('\n')
+                               f.close
+
                log_msg = "build_cpv_list: %s" % (build_cpv_list,)
                add_logs(self._session, log_msg, "info", self._config_id)
 
@@ -138,8 +161,8 @@ class build_job_action(object):
                        os.remove("/etc/portage/package.use/99_autounmask")
                        with open("/etc/portage/package.use/99_autounmask", 
"a") as f:
                                f.close
-                       os.remove("/etc/portage/package.env")
-                       with open("/etc/portage/package.env", "a") as f:
+                       os.remove("/etc/portage/package.env/99_env")
+                       with open("/etc/portage/package.env/99_env/", "a") as f:
                                f.close
                except:
                        pass

diff --git a/pym/tbc/db_mapping.py b/pym/tbc/db_mapping.py
index 86884bf..34ac324 100644
--- a/pym/tbc/db_mapping.py
+++ b/pym/tbc/db_mapping.py
@@ -12,11 +12,13 @@ class Keywords(Base):
        KeywordId = Column('keyword_id', Integer, primary_key=True)
        Keyword = Column('keyword', String)
        __tablename__ = 'keywords'
-       
+
 class Setups(Base):
        SetupId = Column('setup_id', Integer, primary_key=True)
        Setup = Column('setup', String(100))
        Profile = Column('profile', String(150))
+       Test = Column('test', Boolean, default=False)
+       Repoman = Column('repoman', Boolean, default=False)
        __tablename__ = 'setups'
 
 class Configs(Base):
@@ -25,7 +27,7 @@ class Configs(Base):
        SetupId = Column('setup_id', Integer, ForeignKey('setups.setup_id'))
        Host = Column('default_config', Boolean, default=False)
        __tablename__ = 'configs'
-       
+
 class Logs(Base):
        LogId = Column('log_id', Integer, primary_key=True)
        ConfigId = Column('config_id', Integer, ForeignKey('configs.config_id'))

diff --git a/pym/tbc/flags.py b/pym/tbc/flags.py
index 82b7d42..10c9390 100644
--- a/pym/tbc/flags.py
+++ b/pym/tbc/flags.py
@@ -1,14 +1,8 @@
-#!/usr/bin/python
-#
-# Copyright 1998-2015 Gentoo Foundation
+# Copyright 1998-2016 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # Origin flags.py from portage public api repo
 from __future__ import print_function
-from _emerge.main import parse_opts
-from _emerge.depgraph import backtrack_depgraph, depgraph, resume_depgraph
-from _emerge.create_depgraph_params import create_depgraph_params
-from _emerge.actions import load_emerge_config
 import portage
 import os
 
@@ -163,7 +157,7 @@ class tbc_use_flags(object):
                iuse_flags = self.filter_flags(self.get_iuse(), 
use_expand_hidden, usemasked, useforced)
                #flags = filter_flags(use_flags, use_expand_hidden, usemasked, 
useforced)
                final_flags = self.filter_flags(final_use, use_expand_hidden, 
usemasked, useforced)
-               return iuse_flags, final_flags
+               return iuse_flags, final_flags, usemasked
 
        def get_flags_looked(self):
                """Retrieves all information needed to filter out hidden, 
masked, etc.

diff --git a/pym/tbc/package.py b/pym/tbc/package.py
index c069c7e..255ec67 100644
--- a/pym/tbc/package.py
+++ b/pym/tbc/package.py
@@ -56,16 +56,20 @@ class tbc_package(object):
 
                                        # Get the iuse and use flags for that 
config/setup and cpv
                                        init_useflags = 
tbc_use_flags(mysettings_setup, myportdb_setup, build_cpv)
-                                       iuse_flags_list, final_use_list = 
init_useflags.get_flags()
+                                       iuse_flags_list, final_use_list, 
usemasked = init_useflags.get_flags()
                                        iuse_flags_list2 = []
                                        for iuse_line in iuse_flags_list:
                                                iuse_flags_list2.append( 
init_useflags.reduce_flag(iuse_line))
-
+                                       enable_test = False
+                                       if SetupInfo.Test:
+                                               if not "test" in usemasked:
+                                                       enable_test = True
                                        # Dict the needed info
                                        attDict = {}
                                        attDict['cpv'] = build_cpv
                                        attDict['useflags'] = final_use_list
                                        attDict['iuse'] = iuse_flags_list2
+                                       attDict['test'] = enable_test
                                        config_cpv_dict[ConfigInfo.SetupId] = 
attDict
 
                                # Clean some cache
@@ -156,6 +160,7 @@ class tbc_package(object):
                                        use_flagsDict[x] = True
                                for x in use_disable:
                                        use_flagsDict[x] = False
+                               enable_test = v['test']
                                # Unpack packageDict
                                i = 0
                                for k, v in packageDict.items():
@@ -163,9 +168,12 @@ class tbc_package(object):
 
                                        # Comper and add the cpv to buildqueue
                                        if build_cpv == k:
-                                               restrictions_dict = 
get_ebuild_restrictions(self._session, ebuild_id)
-                                               if restrictions_dict:
-                                                       if "test" in 
restrictions_dict and "test" in use_flagsDict:
+                                               # check if we need to enable or 
disable test
+                                               if "test" in use_flagsDict and 
enable_test:
+                                                       use_flagsDict['test'] = 
True
+                                               restrictions_list = 
get_ebuild_restrictions(self._session, ebuild_id)
+                                               if restrictions_list:
+                                                       if "test" in 
restrictions_list and "test" in use_flagsDict:
                                                                
use_flagsDict['test'] = False
                                                
add_new_build_job(self._session, ebuild_id, setup_id, use_flagsDict, 
self._config_id)
                                                # B = Build cpv use-flags config

diff --git a/pym/tbc/sqlquerys.py b/pym/tbc/sqlquerys.py
index 85621fe..60f4ba8 100644
--- a/pym/tbc/sqlquerys.py
+++ b/pym/tbc/sqlquerys.py
@@ -561,16 +561,13 @@ def get_ebuild_id_db(session, checksum, package_id, 
ebuild_version):
 
 def get_ebuild_restrictions(session, ebuild_id):
        restrictions = []
-       try:
-               EbuildsRestrictionsInfo = 
session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).one()
-       except NoResultFound as e:
+       EbuildsRestrictionsInfos = 
session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).all()
+       if EbuildsRestrictionsInfos == []:
                return False
-       except MultipleResultsFound as e:
-               EbuildsRestrictionsInfos = 
session.query(EbuildsRestrictions).filter_by(EbuildId = ebuild_id).all()
-               for EbuildsRestrictionsInfo in EbuildsRestrictionsInfos:
-                       
restrictions.append(session.query(Restrictions).filter_by(RestrictionId = 
EbuildsRestrictionsInfo.RestrictionId).one())
-               return restrictions
-       return 
restrictions.append(session.query(Restrictions).filter_by(RestrictionId = 
EbuildsRestrictionsInfo.RestrictionId).one())
+       for EbuildsRestrictionsInfo in EbuildsRestrictionsInfos:
+               RestrictionsInfo = 
session.query(Restrictions).filter_by(RestrictionId = 
EbuildsRestrictionsInfo.RestrictionId).one()
+               restrictions.append(RestrictionsInfo.Restriction)
+       return restrictions
 
 def add_repoman_log(session, package_id, repoman_log, repoman_hash):
        try:

Reply via email to