mandir=${i18n}man${suffix:0:1}
fi
- if [[ ${mandir} =~ man[0-9n](|f|p|pm)$ ]] ; then
+ if [[ ${mandir} =~ man[0-9n](f|p|pm)?$ ]] ; then
if [[ -s ${x} ]] ; then
if [[ ! -d ${ED}/usr/share/man/${mandir} ]] ; then
install -d "${ED}/usr/share/man/${mandir}"
.BR \-\-depclean
Cleans the system by removing packages that are not associated
with explicitly merged packages. Depclean works by creating the
-full dependency tree from the system list and the world file,
+full dependency tree from the system and world sets,
then comparing it to installed packages. Packages installed, but
-not associated with an explicit merge are listed as candidates
-for unmerging. Inexperienced users are advised to use \fB\-\-pretend\fR
+not part of the dependency tree, will be uninstalled by depclean.
+Inexperienced users are advised to use \fB\-\-pretend\fR
with this option in order to see a preview of which packages
-will be uninstalled. \fBWARNING: Removing some
+will be uninstalled.
+
+\fBWARNING: Removing some
packages may cause packages which link to the removed package
to stop working and complain about missing libraries.\fR
Rebuild the complaining package to fix this issue. Also see
\fB\-\-with\-bdeps\fR for behavior with respect to build time dependencies that
-are not strictly required. Depclean serves as a dependency aware
+are not strictly required. Note that packages listed in
+package.provided (see \fBportage\fR(5)) may be removed by
+depclean, even if they are part of the world set.
+
+Depclean serves as a dependency aware
version of \fB\-\-unmerge\fR. When given one or more atoms, it will
unmerge matched packages that have no reverse dependencies. Use
\fB\-\-depclean\fR together with \fB\-\-verbose\fR to show reverse
.TP
.BR package.provided
A list of packages (one per line) that portage should assume have been
-provided. Useful for porting to non-Linux systems. Portage will not
-attempt to update a package that is listed here unless another package
-explicitly requires a version that is newer than what has been listed.
-Basically, it's a list that replaces the \fBemerge \-\-inject\fR syntax.
+provided. Useful for porting to non-Linux systems. Basically, it's a
+list that replaces the \fBemerge \-\-inject\fR syntax.
For example, if you manage your own copy of a 2.6 kernel, then you can
tell portage that 'sys-kernel/development-sources-2.6.7' is already taken
care of and it should get off your back about it.
+Portage will not attempt to update a package that is listed here unless
+another package explicitly requires a version that is newer than what
+has been listed. Dependencies that are satisfied by package.provided
+entries may cause installed packages satisfying equivalent dependencies
+to be removed by \fBemerge\fR(1) \fB\-\-depclean\fR actions (see the
+\fBACTIONS\fR section of the \fBemerge\fR(1) man page for more information).
+
Virtual packages (virtual/*) should not be specified in package.provided.
Depending on the type of virtual, it may be necessary to add an entry to the
virtuals file and/or add a package that satisfies a virtual to
print " file setup or other similar setups that the user may wish to run."
print
print " "+green("--depclean")
- print " Cleans the system by removing packages that are not associated"
- print " with explicitly merged packages. Depclean works by creating the"
- print " full dependency tree from the system list and the world file,"
- print " then comparing it to installed packages. Packages installed, but"
- print " not associated with an explicit merge are listed as candidates"
- print " for unmerging. Inexperienced users are advised to use --pretend"
- print " with this option in order to see a preview of which packages will"
- print " be uninstalled. "+turquoise(" WARNING: Removing some packages may cause")
- print " "+turquoise("packages which link to the removed package to stop working and")
- print " "+turquoise("complain about missing libraries. Rebuild the complaining package")
- print " "+turquoise("to fix this issue.")+" Also see --with-bdeps for behavior with"
- print " respect to build time dependencies that are not strictly"
- print " required. Depclean serves as a dependency aware version of"
- print " --unmerge. When given one or more atoms, it will unmerge matched"
- print " packages that have no reverse dependencies. Use --depclean"
- print " together with --verbose to show reverse dependencies."
+ paragraph = "Cleans the system by removing packages that are not associated " + \
+ "with explicitly merged packages. Depclean works by creating the " + \
+ "full dependency tree from the system and world sets, " + \
+ "then comparing it to installed packages. Packages installed, but " + \
+ "not part of the dependency tree, will be uninstalled by depclean. " + \
+ "Inexperienced users are advised to use --pretend " + \
+ "with this option in order to see a preview of which packages " + \
+ "will be uninstalled."
+ for line in wrap(paragraph, desc_width):
+ print desc_indent + line
+ print
+
+ paragraph = "WARNING: Removing some " + \
+ "packages may cause packages which link to the removed package " + \
+ "to stop working and complain about missing libraries. " + \
+ "Rebuild the complaining package to fix this issue. Also see " + \
+ "--with-bdeps for behavior with respect to build time dependencies that " + \
+ "are not strictly required. Note that packages listed in " + \
+ "package.provided (see portage(5)) may be removed by " + \
+ "depclean, even if they are part of the world set."
+ for line in wrap(paragraph, desc_width):
+ print desc_indent + line
+ print
+
+ paragraph = "Depclean serves as a dependency aware " + \
+ "version of --unmerge. When given one or more atoms, it will " + \
+ "unmerge matched packages that have no reverse dependencies. Use " + \
+ "--depclean together with --verbose to show reverse " + \
+ "dependencies."
+ for line in wrap(paragraph, desc_width):
+ print desc_indent + line
print
print " "+green("--info")
print " Displays important portage variables that will be exported to"
def _check_digests(filename, digests):
"""
- Check digests and displey a message if an error occurs.
+ Check digests and display a message if an error occurs.
@return True if all digests match, False otherwise.
"""
verified_ok, reason = portage.checksum.verify_all(filename, digests)
return 0
del distlocks_subdir
+ distdir_writable = can_fetch and not fetch_to_ro
+
for myfile in filedict:
"""
fetched status
writemsg("!!! Insufficient space to store %s in %s\n" % (myfile, mysettings["DISTDIR"]), noiselevel=-1)
has_space = False
- if use_locks and can_fetch:
+ if distdir_writable and use_locks:
waiting_msg = None
if not parallel_fetchonly and "parallel-fetch" in features:
waiting_msg = ("Fetching '%s' " + \
match, mystat = _check_distfile(
myfile_path, pruned_digests, eout)
if match:
- if can_fetch and not fetch_to_ro:
+ if distdir_writable:
try:
apply_secpass_permissions(myfile_path,
gid=portage_gid, mode=0664, mask=02,
del e
continue
- if can_fetch and mystat is None:
+ if distdir_writable and mystat is None:
# Remove broken symlinks if necessary.
try:
os.unlink(myfile_path)
if mystat is not None:
if mystat.st_size == 0:
- if can_fetch:
+ if distdir_writable:
try:
os.unlink(myfile_path)
except OSError:
pass
- elif can_fetch:
+ elif distdir_writable:
if mystat.st_size < fetch_resume_size and \
mystat.st_size < size:
writemsg((">>> Deleting distfile with size " + \
"File renamed to '%s'\n\n" % \
temp_filename, noiselevel=-1)
- if can_fetch and ro_distdirs:
+ if distdir_writable and ro_distdirs:
readonly_file = None
for x in ro_distdirs:
filename = os.path.join(x, myfile)
# If the file is empty then it's obviously invalid. Remove
# the empty file and try to download if possible.
if mystat.st_size == 0:
- if can_fetch:
+ if distdir_writable:
try:
os.unlink(myfile_path)
except EnvironmentError:
(reason[1], reason[2]), noiselevel=-1)
if reason[0] == "Insufficient data for checksum verification":
return 0
- if can_fetch and not restrict_fetch:
+ if distdir_writable:
temp_filename = \
_checksum_failure_temp_file(
mysettings["DISTDIR"], myfile)
import os
from portage.util import grabfile_package, stack_lists
from portage.sets.base import PackageSet
+from portage.const import EPREFIX
__all__ = ["PackagesSystemSet"]
def __init__(self, profile_paths):
super(PackagesSystemSet, self).__init__()
self._profile_paths = profile_paths
- self.description = "System packages for profile %s" % self._profile_paths[-1]
-
+ if profile_paths:
+ description = self._profile_paths[-1]
+ if description == EPREFIX+"/etc/portage/profile" and \
+ len(self._profile_paths) > 1:
+ description = self._profile_paths[-2]
+ else:
+ description = None
+ self.description = "System packages for profile %s" % description
+
def load(self):
mylist = [grabfile_package(os.path.join(x, "packages")) for x in self._profile_paths]
mylist = stack_lists(mylist, incremental=1)