summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <gentoo@mgorny.alt.pl>2010-07-27 09:31:47 +0200
committerZac Medico <zmedico@gentoo.org>2010-07-27 00:36:32 -0700
commitaddd9a9b6027260bfbde35efc5408b5efe5341d6 (patch)
treef6fc2dad6bf2f922db881393ad627ed2a1bb09e9
parentFix PackageSet._updateAtomMap() to use ExtendedAtomDict.setdefault() (diff)
downloadportage-multirepo-addd9a9b6027260bfbde35efc5408b5efe5341d6.tar.gz
portage-multirepo-addd9a9b6027260bfbde35efc5408b5efe5341d6.tar.bz2
portage-multirepo-addd9a9b6027260bfbde35efc5408b5efe5341d6.zip
Use a directory for the default set configuration.
Expect /usr/share/portage/config/sets to be a directory containing any number of set configuration files. The default Portage sets.conf should be now installed as sets/portage.conf, and other ebuilds are free to install their own set configuration files there.
-rw-r--r--cnf/sets/portage.conf (renamed from cnf/sets.conf)0
-rw-r--r--doc/config/sets.docbook5
-rw-r--r--man/emerge.14
-rw-r--r--pym/_emerge/main.py2
-rw-r--r--pym/portage/sets/__init__.py20
5 files changed, 20 insertions, 11 deletions
diff --git a/cnf/sets.conf b/cnf/sets/portage.conf
index 87280cef..87280cef 100644
--- a/cnf/sets.conf
+++ b/cnf/sets/portage.conf
diff --git a/doc/config/sets.docbook b/doc/config/sets.docbook
index 35beef41..edded893 100644
--- a/doc/config/sets.docbook
+++ b/doc/config/sets.docbook
@@ -9,8 +9,9 @@
ignored.
</para>
<para>
- At first it looks for the default configuration in
- <filename>/usr/share/portage/config</filename>.
+ At first it reads the default configuration from all of the files
+ located in <filename>/usr/share/portage/config/sets</filename>
+ directory.
The default config includes sets that are expected on all systems and
often critical for normal operation, like <varname>world</varname>,
<varname>system</varname> or <varname>security</varname>.
diff --git a/man/emerge.1 b/man/emerge.1
index 44cb292f..29c40da0 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -67,7 +67,7 @@ packages deemed necessary for your system to run properly. \fBworld\fR
encompasses both the \fBselected\fR and \fBsystem\fR sets. [See
\fBFILES\fR below for more information.] Other sets can exist depending
on the current configuration. The default set configuration is located
-in \fB/usr/share/portage/config/sets.conf\fR. Note that a \fIset\fR
+in the \fB/usr/share/portage/config/sets\fR directory. Note that a \fIset\fR
is generally used in conjunction with \fB\-\-update\fR. When used as
arguments to \fBemerge\fR sets have to be prefixed with \fB@\fR to be
recognized. Use the \fB\-\-list\-sets\fR action to display a list of
@@ -846,7 +846,7 @@ Zac Medico <zmedico@gentoo.org>
Here is a common list of files you will probably be interested in. For a
complete listing, please refer to the \fBportage\fR(5) man page.
.TP
-.B /usr/share/portage/config/sets.conf
+.B /usr/share/portage/config/sets/
Contains the default set configuration.
.TP
.B /var/lib/portage/world
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index b553e15e..e4449e80 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -1010,7 +1010,7 @@ def missing_sets_warning(root_config, missing_sets):
if root_config.sets:
msg.append(" sets defined: %s" % ", ".join(root_config.sets))
msg.append(" This usually means that '%s'" % \
- (os.path.join(portage.const.GLOBAL_CONFIG_PATH, "sets.conf"),))
+ (os.path.join(portage.const.GLOBAL_CONFIG_PATH, "sets/portage.conf"),))
msg.append(" is missing or corrupt.")
msg.append(" Falling back to default world and system set configuration!!!")
for line in msg:
diff --git a/pym/portage/sets/__init__.py b/pym/portage/sets/__init__.py
index fb87ce10..ab9869ce 100644
--- a/pym/portage/sets/__init__.py
+++ b/pym/portage/sets/__init__.py
@@ -176,9 +176,17 @@ class SetConfig(object):
return myatoms
def load_default_config(settings, trees):
- setconfigpaths = [os.path.join(GLOBAL_CONFIG_PATH, "sets.conf")]
- setconfigpaths.append(os.path.join(settings["PORTDIR"], "sets.conf"))
- setconfigpaths += [os.path.join(x, "sets.conf") for x in settings["PORTDIR_OVERLAY"].split()]
- setconfigpaths.append(os.path.join(settings["PORTAGE_CONFIGROOT"],
- USER_CONFIG_PATH, "sets.conf"))
- return SetConfig(setconfigpaths, settings, trees)
+ def _getfiles():
+ for path, dirs, files in os.walk(os.path.join(GLOBAL_CONFIG_PATH, "sets")):
+ for f in files:
+ yield os.path.join(path, f)
+
+ dbapi = trees["porttree"].dbapi
+ for repo in dbapi.getRepositories():
+ path = dbapi.getRepositoryPath(repo)
+ yield os.path.join(path, "sets.conf")
+
+ yield os.path.join(settings["PORTAGE_CONFIGROOT"],
+ USER_CONFIG_PATH, "sets.conf")
+
+ return SetConfig(_getfiles(), settings, trees)