From: Michał Górny Date: Tue, 27 Jul 2010 07:31:47 +0000 (+0200) Subject: Use a directory for the default set configuration. X-Git-Tag: v2.2_rc68~447 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=addd9a9b6027260bfbde35efc5408b5efe5341d6;p=portage.git 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. --- diff --git a/cnf/sets.conf b/cnf/sets/portage.conf similarity index 100% rename from cnf/sets.conf rename to cnf/sets/portage.conf diff --git a/doc/config/sets.docbook b/doc/config/sets.docbook index 35beef41d..edded8937 100644 --- a/doc/config/sets.docbook +++ b/doc/config/sets.docbook @@ -9,8 +9,9 @@ ignored. - At first it looks for the default configuration in - /usr/share/portage/config. + At first it reads the default configuration from all of the files + located in /usr/share/portage/config/sets + directory. The default config includes sets that are expected on all systems and often critical for normal operation, like world, system or security. diff --git a/man/emerge.1 b/man/emerge.1 index 44cb292f8..29c40da08 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 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 b553e15e3..e4449e805 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 fb87ce104..ab9869cee 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)