Difference between pages "Portage Profile Logic" and "Portage Profiles"

From Funtoo
(Difference between pages)
Redirect page
Jump to: navigation, search
m (Drobbins moved page Portage Profiles to Portage Profile Logic)
 
(Drobbins moved page Portage Profiles to Portage Profile Logic)
 
Line 1: Line 1:
== Gentoo Initialization ==
+
#REDIRECT [[Portage Profile Logic]]
 
+
Gentoo profile initialization has been documented in [https://github.com/funtoo/portage-funtoo/commit/4c6826a0029c3c8f0aa92e70b4e50f2ffc58c7fa#diff-0 this GitHub commit], and describes how Gentoo's Portage finds and processes profiles. Basically, Gentoo's Portage looks for profiles using this algorithm:
+
 
+
# Does <tt>/etc/make.profile</tt> exist? If so, it defines the primary profile.
+
# If not, does <tt>/etc/portage/make.profile</tt> exist? If so, it defines the primary profile.
+
# Recursively process the <tt>parent</tt> file found in the primary profile to build a list of all cascading profiles
+
# if <tt>/etc/portage/profile</tt> exists, it is a user-defined profile - tack it to the end of our profile list so it can modify anything in the cascading profiles.
+
 
+
Here is a more detailed description of the steps:
+
 
+
# Look for a profile directory/symlink at <tt>/etc/make.profile</tt>, if one exists, use this as the main profile directory.
+
# If <tt>/etc/make.profile</tt> doesn't exist, use <tt>/etc/portage/make.profile</tt> as a back-up location if it exists.
+
# If neither location exists, then a main profile directory doesn't exist and is undefined (None)
+
 
+
Using the main profile directory/symlink found above, the <tt>LocationsManager._addProfile()</tt> recursive function will be called that will create a list of all cascading profiles. This works by looking for a <tt>parent</tt> file in the profile directory. If this file exists, then each line is treated as a ''relative path'' and used to modify the path to the current profile, pointing to a "parent" profile that this particular profile modifies. There can be more than one parent, one per line. ''The first line in the <tt>parent</tt> file is the highest-priority parent.''
+
 
+
Once this list is created, the code checks to see if <tt>/etc/portage/profile</tt> directory exists. If it does, it is tacked at the end of the cascading profile list, meaning that it is evaluated last and this user-defined profile has the ability to modify any of the cascading profile settings. It provides an ideal hook point for a user-defined profile that can tweak anything the user wants to modify in the profile.
+
 
+
[[Category:Portage]]
+

Latest revision as of 03:56, 4 July 2014