Add a _get_slot_re() function.
authorZac Medico <zmedico@gentoo.org>
Mon, 11 Jun 2012 01:15:07 +0000 (18:15 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 11 Jun 2012 01:15:07 +0000 (18:15 -0700)
pym/_emerge/Package.py
pym/portage/dbapi/vartree.py
pym/portage/dep/__init__.py

index 75021b9f50e83a29f3496a0cd48be6f8aaeb43cd..91d7606b2965d567b39ce7e114757815270badc1 100644 (file)
@@ -8,7 +8,7 @@ from portage import _encodings, _unicode_decode, _unicode_encode
 from portage.cache.mappings import slot_dict_class
 from portage.const import EBUILD_PHASES
 from portage.dep import Atom, check_required_use, use_reduce, \
-       paren_enclose, _slot_re, _slot_separator, _repo_separator
+       paren_enclose, _get_slot_re, _slot_separator, _repo_separator
 from portage.versions import _pkg_str, _unknown_repo
 from portage.eapi import _get_eapi_attrs
 from portage.exception import InvalidDependString
@@ -51,7 +51,7 @@ class Package(Task):
                        self.metadata['CHOST'] = self.root_config.settings.get('CHOST', '')
                eapi_attrs = _get_eapi_attrs(self.metadata["EAPI"])
                slot = self.slot
-               if _slot_re.match(slot) is None:
+               if _get_slot_re(eapi_attrs).match(slot) is None:
                        self._invalid_metadata('SLOT.invalid',
                                "SLOT: invalid value: '%s'" % slot)
                        # Avoid an InvalidAtom exception when creating slot_atom.
index 517c873ab0371691280c419bf3af92288d6cc2ac..fbbf49dcf062e4d1f4317195ddd01435dbcd8648 100644 (file)
@@ -12,7 +12,8 @@ portage.proxy.lazyimport.lazyimport(globals(),
        'portage.dbapi.dep_expand:dep_expand',
        'portage.dbapi._MergeProcess:MergeProcess',
        'portage.dep:dep_getkey,isjustname,match_from_list,' + \
-               'use_reduce,_slot_re',
+               'use_reduce,_get_slot_re',
+       'portage.eapi:_get_eapi_attrs',
        'portage.elog:collect_ebuild_messages,collect_messages,' + \
                'elog_process,_merge_logentries',
        'portage.locks:lockdir,unlockdir,lockfile,unlockfile',
@@ -687,7 +688,8 @@ class vardbapi(dbapi):
                                        (mydir_mtime, cache_data)
                                self._aux_cache["modified"].add(mycpv)
 
-               if _slot_re.match(mydata['SLOT']) is None:
+               eapi_attrs = _get_eapi_attrs(mydata['EAPI'])
+               if _get_slot_re(eapi_attrs).match(mydata['SLOT']) is None:
                        # Empty or invalid slot triggers InvalidAtom exceptions when
                        # generating slot atoms for packages, so translate it to '0' here.
                        mydata['SLOT'] = _unicode_decode('0')
index d2df0425d287209a56bd5a09586d352520770de5..e6056b1045c6a111249018785ecbd84893844f0a 100644 (file)
@@ -55,6 +55,9 @@ _repo = r'(?:' + _repo_separator + '(' + _repo_name + ')' + ')?'
 
 _extended_cat = r'[\w+*][\w+.*-]*'
 
+def _get_slot_re(eapi_attrs):
+       return _slot_re
+
 _atom_re_cache = {}
 
 def _get_atom_re(eapi_attrs):