name starts with "kde"; \fBemerge \-\-search "%gcc$"\fR searches for any
package that ends with "gcc"; \fBemerge \-\-search "office"\fR searches for
any package that contains the word "office". If you want to include the
-category into the search string, prepend an @: \fBemerge --search
+category into the search string, prepend an @: \fBemerge \-\-search
"%@^dev-java.*jdk"\fR. If you want to search the package descriptions as well,
use the \fB\-\-searchdesc\fR action.
.TP
matched as regular expressions.
.TP
.BR \-\-sync
-Initiates a portage tree update with one of the rsync.gentoo.org
-mirrors. \fBNote that any changes you have made to the portage
-tree will be erased\fR. Except for special circumstances,
-this uses \fBrsync\fR to do the update. See \fBmake.conf\fR(5)'s
-description of PORTDIR_OVERLAY for a method to avoid deletions.
+This updates the portage tree that is located in the
+directory that the PORTDIR variable refers to (default
+location is /usr/portage). The SYNC variable specifies
+the remote URI from which files will be synchronized.
+The \fBPORTAGE_SYNC_STALE\fR variable configures
+warnings that are shown when emerge \-\-sync has not
+been executed recently.
+
+\fBWARNING:\fR
+The emerge \-\-sync action will modify and/or delete
+files located inside the directory that the PORTDIR
+variable refers to (default location is /usr/portage).
+For more information, see the PORTDIR documentation in
+the make.conf(5) man page.
+
+\fBNOTE:\fR
+The \fBemerge\-webrsync\fR program will download the entire
+portage tree as a tarball, which is much faster than emerge
+\-\-sync for first time syncs.
+
.TP
.BR "\-\-unmerge " (\fB\-C\fR)
\fBWARNING: This action can remove important packages!\fR Removes
\fIebuilds\fR. For a dependency aware version of \fB\-\-unmerge\fR,
use \fB\-\-depclean\fR or \fB\-\-prune\fR.
.TP
-.BR "\-\-update " (\fB\-u\fR)
-Updates packages to the best version available, which may not always be the
-highest version number due to masking for testing and development.
-Package atoms
-specified on the command line are greedy, meaning that unspecific atoms may
-match multiple installed versions of slotted packages.
-.TP
.BR "\-\-version " (\fB\-V\fR)
Displays the version number of \fBemerge\fR.
.SH "OPTIONS"
constraint is removed, hopefully leading to a more
readable dependency tree.
.TP
+.BR "\-\-update " (\fB\-u\fR)
+Updates packages to the best version available, which may
+not always be the highest version number due to masking
+for testing and development. Package atoms specified on
+the command line are greedy, meaning that unspecific
+atoms may match multiple versions of slotted packages.
+.TP
.BR "\-\-use\-ebuild\-visibility[=n]"
Use unbuilt ebuild metadata for visibility
checks on built packages.
print(" emerge -S 'perl.*module'")
print()
print(" "+green("--sync"))
- print(" Tells emerge to update the Portage tree as specified in")
- print(" The SYNC variable found in /etc/make.conf. By default, SYNC instructs")
- print(" emerge to perform an rsync-style update with rsync.gentoo.org.")
+ desc = "This updates the portage tree that is located in the " + \
+ "directory that the PORTDIR variable refers to (default " + \
+ "location is /usr/portage). The SYNC variable specifies " + \
+ "the remote URI from which files will be synchronized. " + \
+ "The PORTAGE_SYNC_STALE variable configures " + \
+ "warnings that are shown when emerge --sync has not " + \
+ "been executed recently."
+ for line in wrap(desc, desc_width):
+ print(desc_indent + line)
print()
- print(" 'emerge-webrsync' exists as a helper app to emerge --sync, providing a")
- print(" method to receive the entire portage tree as a tarball that can be")
- print(" extracted and used. First time syncs would benefit greatly from this.")
+ print(desc_indent + turquoise("WARNING:"))
+ desc = "The emerge --sync action will modify and/or delete " + \
+ "files located inside the directory that the PORTDIR " + \
+ "variable refers to (default location is /usr/portage). " + \
+ "For more information, see the PORTDIR documentation in " + \
+ "the make.conf(5) man page."
+ for line in wrap(desc, desc_width):
+ print(desc_indent + line)
print()
- print(" "+turquoise("WARNING:"))
- print(" If using our rsync server, emerge will clean out all files that do not")
- print(" exist on it, including ones that you may have created. The exceptions")
- print(" to this are the distfiles, local and packages directories.")
+ print(desc_indent + green("NOTE:"))
+ desc = "The emerge-webrsync program will download the entire " + \
+ "portage tree as a tarball, which is much faster than emerge " + \
+ "--sync for first time syncs."
+ for line in wrap(desc, desc_width):
+ print(desc_indent + line)
print()
print(" "+green("--unmerge")+" ("+green("-C")+" short option)")
print(" "+turquoise("WARNING: This action can remove important packages!"))
print(" ebuilds. For a dependency aware version of --unmerge, use")
print(" --depclean or --prune.")
print()
- print(" "+green("--update")+" ("+green("-u")+" short option)")
- print(" Updates packages to the best version available, which may not")
- print(" always be the highest version number due to masking for testing")
- print(" and development. Package atoms specified on the command")
- print(" line are greedy, meaning that unspecific atoms may match multiple")
- print(" installed versions of slotted packages.")
- print()
print(" "+green("--version")+" ("+green("-V")+" short option)")
print(" Displays the currently installed version of portage along with")
print(" other information useful for quick reference on a system. See")
for line in wrap(desc, desc_width):
print(desc_indent + line)
print()
+ print(" "+green("--update")+" ("+green("-u")+" short option)")
+ desc = "Updates packages to the best version available, which may " + \
+ "not always be the highest version number due to masking " + \
+ "for testing and development. Package atoms specified on " + \
+ "the command line are greedy, meaning that unspecific " + \
+ "atoms may match multiple versions of slotted packages."
+ for line in wrap(desc, desc_width):
+ print(desc_indent + line)
+ print()
print(" " + green("--use-ebuild-visibility") + "[=%s]" % turquoise("n"))
desc = "Use unbuilt ebuild metadata for visibility " + \
"checks on built packages."
+# Copyright 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
if self.myroot == "/" and \
match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]) and \
not self.vartree.dbapi.cpv_exists(self.mycpv):
+ # Load lazily referenced portage submodules into memory,
+ # so imports won't fail during portage upgrade/downgrade.
+ portage.proxy.lazyimport._preload_portage_submodules()
settings = self.settings
base_path_orig = os.path.dirname(settings["PORTAGE_BIN_PATH"])
from tempfile import mkdtemp
_module_proxies = {}
_module_proxies_lock = threading.RLock()
+def _preload_portage_submodules():
+ """
+ Load lazily referenced portage submodules into memory,
+ so imports won't fail during portage upgrade/downgrade.
+ Note that this recursively loads only the modules that
+ are lazily referenced by currently imported modules,
+ so some portage submodules may still remain unimported
+ after this function is called.
+ """
+ while True:
+ remaining = False
+ for name in list(_module_proxies):
+ if name.startswith('portage.'):
+ remaining = True
+ _unregister_module_proxy(name)
+ if not remaining:
+ break
+
def _register_module_proxy(name, proxy):
_module_proxies_lock.acquire()
try: