* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/
@ 2011-06-19 19:42 Arfrever Frehtes Taifersar Arahesis
0 siblings, 0 replies; 5+ messages in thread
From: Arfrever Frehtes Taifersar Arahesis @ 2011-06-19 19:42 UTC (permalink / raw
To: gentoo-commits
commit: 9838a00a264c90faf8040e923096136a1c022247
Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Gentoo <DOT> Org>
AuthorDate: Sun Jun 19 19:40:32 2011 +0000
Commit: Arfrever Frehtes Taifersar Arahesis <arfrever <AT> gentoo <DOT> org>
CommitDate: Sun Jun 19 19:40:32 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=9838a00a
Bug #370693: Handle package.use.force and package.use.mask files from master
repositories.
---
pym/portage/package/ebuild/_config/UseManager.py | 35 ++++++++++-----------
pym/portage/repository/config.py | 3 ++
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py
index d9ca940..3905f4f 100644
--- a/pym/portage/package/ebuild/_config/UseManager.py
+++ b/pym/portage/package/ebuild/_config/UseManager.py
@@ -61,6 +61,8 @@ class UseManager(object):
self._puseforce_list = self._parse_profile_files_to_tuple_of_dicts("package.use.force", profiles)
self._pusedict = self._parse_user_files_to_extatomdict("package.use", abs_user_config, user_config)
+
+ self.repositories = repositories
def _parse_file_to_tuple(self, file_name):
ret = []
@@ -119,17 +121,12 @@ class UseManager(object):
def _parse_repository_files_to_dict_of_tuples(self, file_name, repositories):
ret = {}
for repo in repositories.repos_with_profiles():
- lines = []
- for master in repo.masters:
- lines.extend(self._parse_file_to_tuple(os.path.join(master.location, "profiles", file_name)))
- lines.extend(self._parse_file_to_tuple(os.path.join(repo.location, "profiles", file_name)))
- ret[repo.name] = tuple(lines)
+ ret[repo.name] = self._parse_file_to_tuple(os.path.join(repo.location, "profiles", file_name))
return ret
def _parse_repository_files_to_dict_of_dicts(self, file_name, repositories):
ret = {}
for repo in repositories.repos_with_profiles():
- # TODO: Handle master repositories.
ret[repo.name] = self._parse_file_to_dict(os.path.join(repo.location, "profiles", file_name))
return ret
@@ -149,12 +146,13 @@ class UseManager(object):
cp = cpv_getkey(remove_slot(pkg))
usemask = []
if hasattr(pkg, "repo") and pkg.repo != Package.UNKNOWN_REPO:
- usemask.append(self._repo_usemask_dict[pkg.repo])
- cpdict = self._repo_pusemask_dict[pkg.repo].get(cp)
- if cpdict:
- pkg_usemask = ordered_by_atom_specificity(cpdict, pkg)
- if pkg_usemask:
- usemask.extend(pkg_usemask)
+ for repo in [repo.name for repo in self.repositories[pkg.repo].masters] + [pkg.repo]:
+ usemask.append(self._repo_usemask_dict[repo])
+ cpdict = self._repo_pusemask_dict[repo].get(cp)
+ if cpdict:
+ pkg_usemask = ordered_by_atom_specificity(cpdict, pkg)
+ if pkg_usemask:
+ usemask.extend(pkg_usemask)
for i, pusemask_dict in enumerate(self._pusemask_list):
if self._usemask_list[i]:
usemask.append(self._usemask_list[i])
@@ -175,12 +173,13 @@ class UseManager(object):
cp = cpv_getkey(remove_slot(pkg))
useforce = []
if hasattr(pkg, "repo") and pkg.repo != Package.UNKNOWN_REPO:
- useforce.append(self._repo_useforce_dict[pkg.repo])
- cpdict = self._repo_puseforce_dict[pkg.repo].get(cp)
- if cpdict:
- pkg_useforce = ordered_by_atom_specificity(cpdict, pkg)
- if pkg_useforce:
- useforce.extend(pkg_useforce)
+ for repo in [repo.name for repo in self.repositories[pkg.repo].masters] + [pkg.repo]:
+ useforce.append(self._repo_useforce_dict[repo])
+ cpdict = self._repo_puseforce_dict[repo].get(cp)
+ if cpdict:
+ pkg_useforce = ordered_by_atom_specificity(cpdict, pkg)
+ if pkg_useforce:
+ useforce.extend(pkg_useforce)
for i, puseforce_dict in enumerate(self._puseforce_list):
if self._useforce_list[i]:
useforce.append(self._useforce_list[i])
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 35f5cdf..38ed6a1 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -486,6 +486,9 @@ class RepoConfigLoader(object):
return None
return self.treemap[repo_name]
+ def __getitem__(self, repo_name):
+ return self.prepos[repo_name]
+
def __iter__(self):
for repo_name in self.prepos_order:
yield self.prepos[repo_name]
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/
@ 2011-10-27 19:03 Zac Medico
0 siblings, 0 replies; 5+ messages in thread
From: Zac Medico @ 2011-10-27 19:03 UTC (permalink / raw
To: gentoo-commits
commit: 2794e1abc8139fc4bf36c1c4e4103ffcd2dd2f97
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 27 19:02:26 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Oct 27 19:02:26 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=2794e1ab
Fix profile-formats spelling in messages.
---
.../package/ebuild/_config/LocationsManager.py | 2 +-
pym/portage/repository/config.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py
index 0ab0950..d793625 100644
--- a/pym/portage/package/ebuild/_config/LocationsManager.py
+++ b/pym/portage/package/ebuild/_config/LocationsManager.py
@@ -128,7 +128,7 @@ class LocationsManager(object):
"'%(repo_name)s' is implicitly using 'portage-1' profile format, but "
"the repository profiles are not marked as that format. This will break "
"in the future. Please either convert the following paths "
- "to files, or add\nprofile-format = portage-1\nto the "
+ "to files, or add\nprofile-formats = portage-1\nto the "
"repositories layout.conf. Files: '%(files)s'\n")
% dict(profile_path=currentPath, repo_name=repo_loc,
files=', '.join(offenders))),
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 9bffd70..f773ae0 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -678,7 +678,7 @@ def parse_layout_conf(repo_location, repo_name=None):
unknown = raw_formats.difference(['pms', 'portage-1'])
if unknown:
warnings.warn((_("Repository named '%(repo_name)s' has unsupported "
- "profiles in use ('profile-format = %(unknown_fmts)s' setting in "
+ "profiles in use ('profile-formats = %(unknown_fmts)s' setting in "
"'%(layout_filename)s; please upgrade portage.") %
dict(repo_name=repo_name, layout_filename=layout_filename,
unknown_fmts=" ".join(unknown))),
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/
@ 2012-05-11 23:39 Zac Medico
0 siblings, 0 replies; 5+ messages in thread
From: Zac Medico @ 2012-05-11 23:39 UTC (permalink / raw
To: gentoo-commits
commit: 22996b1d7c7214da8f0bff76d9f814a00f58fdce
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Fri May 11 23:39:06 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri May 11 23:39:06 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=22996b1d
Cleanup profile-formats code.
---
.../package/ebuild/_config/LocationsManager.py | 5 ++++-
pym/portage/repository/config.py | 7 +++++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py
index 368c0dd..337edc4 100644
--- a/pym/portage/package/ebuild/_config/LocationsManager.py
+++ b/pym/portage/package/ebuild/_config/LocationsManager.py
@@ -28,6 +28,9 @@ _PORTAGE1_DIRECTORIES = frozenset([
_profile_node = collections.namedtuple('_profile_node',
'location portage1_directories')
+_allow_directories = frozenset(
+ ["portage-1-compat", "portage-1"])
+
class LocationsManager(object):
def __init__(self, config_root=None, eprefix=None, config_profile_path=None, local_config=True, \
@@ -130,7 +133,7 @@ class LocationsManager(object):
# protect against nested repositories. Insane configuration, but the longest
# path will be the correct one.
repo_loc, layout_data = max(intersecting_repos, key=lambda x:len(x[0]))
- allow_directories = any(x.startswith("portage-1")
+ allow_directories = any(x in _allow_directories
for x in layout_data['profile-formats'])
compat_mode = layout_data['profile-formats'] == ('portage-1-compat',)
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 71aefde..872c189 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -27,6 +27,9 @@ from portage import _unicode_encode
from portage import _encodings
from portage import manifest
+_valid_profile_formats = frozenset(
+ ['pms', 'portage-1'])
+
_repo_name_sub_re = re.compile(r'[^\w-]')
def _gen_valid_repo(name):
@@ -754,7 +757,7 @@ def parse_layout_conf(repo_location, repo_name=None):
raw_formats = ('portage-1-compat',)
else:
raw_formats = set(raw_formats.split())
- unknown = raw_formats.difference(['pms', 'portage-1'])
+ unknown = raw_formats.difference(_valid_profile_formats)
if unknown:
repo_name = _get_repo_name(repo_location, cached=repo_name)
warnings.warn((_("Repository named '%(repo_name)s' has unsupported "
@@ -764,7 +767,7 @@ def parse_layout_conf(repo_location, repo_name=None):
layout_filename=layout_filename,
unknown_fmts=" ".join(unknown))),
DeprecationWarning)
- raw_formats = tuple(raw_formats.intersection(['pms', 'portage-1']))
+ raw_formats = tuple(raw_formats.intersection(_valid_profile_formats))
data['profile-formats'] = raw_formats
return data, layout_errors
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/
@ 2012-05-16 20:47 Zac Medico
0 siblings, 0 replies; 5+ messages in thread
From: Zac Medico @ 2012-05-16 20:47 UTC (permalink / raw
To: gentoo-commits
commit: f39ac7dc706544d1f36392c7def6da0b9b6bebcf
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed May 16 20:47:26 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed May 16 20:47:26 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=f39ac7dc
RepoConfig: cleanup portage1_profiles code
---
.../package/ebuild/_config/LocationsManager.py | 8 +++-----
pym/portage/repository/config.py | 5 ++++-
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py
index 337edc4..1293c75 100644
--- a/pym/portage/package/ebuild/_config/LocationsManager.py
+++ b/pym/portage/package/ebuild/_config/LocationsManager.py
@@ -17,7 +17,8 @@ from portage.exception import DirectoryNotFound, ParseError
from portage.localization import _
from portage.util import ensure_dirs, grabfile, \
normalize_path, shlex_split, writemsg
-from portage.repository.config import parse_layout_conf
+from portage.repository.config import parse_layout_conf, \
+ _portage1_profiles_allow_directories
_PORTAGE1_DIRECTORIES = frozenset([
@@ -28,9 +29,6 @@ _PORTAGE1_DIRECTORIES = frozenset([
_profile_node = collections.namedtuple('_profile_node',
'location portage1_directories')
-_allow_directories = frozenset(
- ["portage-1-compat", "portage-1"])
-
class LocationsManager(object):
def __init__(self, config_root=None, eprefix=None, config_profile_path=None, local_config=True, \
@@ -133,7 +131,7 @@ class LocationsManager(object):
# protect against nested repositories. Insane configuration, but the longest
# path will be the correct one.
repo_loc, layout_data = max(intersecting_repos, key=lambda x:len(x[0]))
- allow_directories = any(x in _allow_directories
+ allow_directories = any(x in _portage1_profiles_allow_directories
for x in layout_data['profile-formats'])
compat_mode = layout_data['profile-formats'] == ('portage-1-compat',)
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 872c189..cb5beca 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -30,6 +30,9 @@ from portage import manifest
_valid_profile_formats = frozenset(
['pms', 'portage-1'])
+_portage1_profiles_allow_directories = frozenset(
+ ["portage-1-compat", "portage-1"])
+
_repo_name_sub_re = re.compile(r'[^\w-]')
def _gen_valid_repo(name):
@@ -160,7 +163,7 @@ class RepoConfig(object):
'sign-commit', 'sign-manifest', 'thin-manifest', 'update-changelog'):
setattr(self, value.lower().replace("-", "_"), layout_data[value])
- self.portage1_profiles = any(x.startswith("portage-1") \
+ self.portage1_profiles = any(x in _portage1_profiles_allow_directories
for x in layout_data['profile-formats'])
self.portage1_profiles_compat = layout_data['profile-formats'] == ('portage-1-compat',)
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/
@ 2012-05-21 5:29 Zac Medico
0 siblings, 0 replies; 5+ messages in thread
From: Zac Medico @ 2012-05-21 5:29 UTC (permalink / raw
To: gentoo-commits
commit: 6dd44c1b5f13c3628bc2e093fdf4b1ade4028b63
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu May 17 00:22:18 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon May 21 05:29:08 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6dd44c1b
Profile parent repo: references for bug #414961.
If "profile-formats = portage-2" is specified in metadata/layout.conf,
then paths such as 'gentoo:targets/desktop' or ':targets/desktop' in
profile parent files can be used to express paths relative to the root
'profiles' directory of a repository. When the repo name is omitted
before the colon, it refers to the current repository that the parent
file is inside of.
---
.../package/ebuild/_config/LocationsManager.py | 46 ++++++++++++++++++-
pym/portage/repository/config.py | 4 +-
2 files changed, 45 insertions(+), 5 deletions(-)
diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py
index 1293c75..f7a1177 100644
--- a/pym/portage/package/ebuild/_config/LocationsManager.py
+++ b/pym/portage/package/ebuild/_config/LocationsManager.py
@@ -29,6 +29,9 @@ _PORTAGE1_DIRECTORIES = frozenset([
_profile_node = collections.namedtuple('_profile_node',
'location portage1_directories')
+_allow_parent_colon = frozenset(
+ ["portage-2"])
+
class LocationsManager(object):
def __init__(self, config_root=None, eprefix=None, config_profile_path=None, local_config=True, \
@@ -94,7 +97,7 @@ class LocationsManager(object):
if self.profile_path:
try:
self._addProfile(os.path.realpath(self.profile_path),
- known_repos)
+ repositories, known_repos)
except ParseError as e:
writemsg(_("!!! Unable to parse profile: '%s'\n") % \
self.profile_path, noiselevel=-1)
@@ -121,9 +124,10 @@ class LocationsManager(object):
noiselevel=-1)
raise DirectoryNotFound(var)
- def _addProfile(self, currentPath, known_repos):
+ def _addProfile(self, currentPath, repositories, known_repos):
current_abs_path = os.path.abspath(currentPath)
allow_directories = True
+ allow_parent_colon = True
repo_loc = None
compat_mode = False
intersecting_repos = [x for x in known_repos if current_abs_path.startswith(x[0])]
@@ -134,6 +138,8 @@ class LocationsManager(object):
allow_directories = any(x in _portage1_profiles_allow_directories
for x in layout_data['profile-formats'])
compat_mode = layout_data['profile-formats'] == ('portage-1-compat',)
+ allow_parent_colon = any(x in _allow_parent_colon
+ for x in layout_data['profile-formats'])
if compat_mode:
offenders = _PORTAGE1_DIRECTORIES.intersection(os.listdir(currentPath))
@@ -175,6 +181,12 @@ class LocationsManager(object):
_("Empty parent file: '%s'") % parentsFile)
for parentPath in parents:
abs_parent = parentPath[:1] == os.sep
+ if not abs_parent and allow_parent_colon:
+ parentPath = self._expand_parent_colon(parentsFile,
+ parentPath, repo_loc, repositories)
+
+ # NOTE: This os.path.join() call is intended to ignore
+ # currentPath if parentPath is already absolute.
parentPath = normalize_path(os.path.join(
currentPath, parentPath))
@@ -185,7 +197,7 @@ class LocationsManager(object):
parentPath = os.path.realpath(parentPath)
if os.path.exists(parentPath):
- self._addProfile(parentPath, known_repos)
+ self._addProfile(parentPath, repositories, known_repos)
else:
raise ParseError(
_("Parent '%s' not found: '%s'") % \
@@ -195,6 +207,34 @@ class LocationsManager(object):
self.profiles_complex.append(
_profile_node(currentPath, allow_directories))
+ def _expand_parent_colon(self, parentsFile, parentPath,
+ repo_loc, repositories):
+ colon = parentPath.find(":")
+ if colon == -1:
+ return parentPath
+
+ if colon == 0:
+ if repo_loc is None:
+ raise ParseError(
+ _("Parent '%s' not found: '%s'") % \
+ (parentPath, parentsFile))
+ else:
+ parentPath = normalize_path(os.path.join(
+ repo_loc, 'profiles', parentPath[colon+1:]))
+ else:
+ p_repo_name = parentPath[:colon]
+ try:
+ p_repo_loc = repositories.get_location_for_name(p_repo_name)
+ except KeyError:
+ raise ParseError(
+ _("Parent '%s' not found: '%s'") % \
+ (parentPath, parentsFile))
+ else:
+ parentPath = normalize_path(os.path.join(
+ p_repo_loc, 'profiles', parentPath[colon+1:]))
+
+ return parentPath
+
def set_root_override(self, root_overwrite=None):
# Allow ROOT setting to come from make.conf if it's not overridden
# by the constructor argument (from the calling environment).
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index cb5beca..20f1919 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -28,10 +28,10 @@ from portage import _encodings
from portage import manifest
_valid_profile_formats = frozenset(
- ['pms', 'portage-1'])
+ ['pms', 'portage-1', 'portage-2'])
_portage1_profiles_allow_directories = frozenset(
- ["portage-1-compat", "portage-1"])
+ ["portage-1-compat", "portage-1", 'portage-2'])
_repo_name_sub_re = re.compile(r'[^\w-]')
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-05-21 5:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-19 19:42 [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_config/, pym/portage/repository/ Arfrever Frehtes Taifersar Arahesis
-- strict thread matches above, loose matches on Subject: below --
2011-10-27 19:03 Zac Medico
2012-05-11 23:39 Zac Medico
2012-05-16 20:47 Zac Medico
2012-05-21 5:29 Zac Medico
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox