summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-22 13:29:14 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-22 13:29:14 +0000
commite32d9a6f80745586cb52055d728b62e96388cb03 (patch)
treea09126204c09a0ab6d2330930db2df6cb81389af
parent84f8d38abb051a53778eaad5fde43658cbc54aca (diff)
downloadportage-e32d9a6f80745586cb52055d728b62e96388cb03.tar.gz
portage-e32d9a6f80745586cb52055d728b62e96388cb03.tar.bz2
portage-e32d9a6f80745586cb52055d728b62e96388cb03.zip
Update --depclean and --prune, removing warnings about libraries since those
are now automatically accounted for. svn path=/main/trunk/; revision=11168
-rw-r--r--NEWS2
-rw-r--r--man/emerge.131
-rw-r--r--pym/_emerge/__init__.py6
-rw-r--r--pym/_emerge/help.py62
4 files changed, 57 insertions, 44 deletions
diff --git a/NEWS b/NEWS
index d0d7f78fc..96af82dd2 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ News (mainly features/major bug fixes)
portage-2.2
-------------
+* Add link level dependency awareness to emerge --depclean and --prune actions
+ in order to protect against uninstallation of required libraries.
* Add emerge --jobs and --load-average options which specify behavior
for building packages in parallel or for generating metadata in parallel
with emerge --regen.
diff --git a/man/emerge.1 b/man/emerge.1
index bc9a7efc8..59d335f62 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -103,19 +103,22 @@ setups that the user may wish to run.
.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 and world sets,
+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 \fB\-\-pretend\fR
-with this option in order to see a preview of which packages
-will be uninstalled.
+See \fB\-\-with\-bdeps\fR for behavior with respect to build time dependencies
+that are not strictly required. Packages that are part of the world set will
+always be kept. They can be manually added to this set with \fIemerge
+\-\-noreplace <atom>\fR. As a safety measure, depclean will not remove any
+packages unless *all* required dependencies have been resolved. As a
+consequence, it is often necessary to run \fIemerge \-\-update \-\-newuse
+\-\-deep \-\-oneshot @system @world\fR prior to depclean.
-\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. Note that packages listed in
+\fBWARNING:\fR
+Inexperienced users are advised to use \fB\-\-pretend\fR with this
+option in order to see a preview of which packages
+will be uninstalled. Always study the list of packages
+to be cleaned for any obvious mistakes. 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.
@@ -150,11 +153,9 @@ unless the user has enabled FEATURES="metadata-transfer" in \fBmake.conf\fR(5).
.TP
.BR "\-\-prune " (\fB\-P\fR)
\fBWARNING: This action can remove important packages!\fR Removes all but the
-highest installed version of a package from your system. This action doesn't
-verify the possible binary compatibility between versions and can thus remove
-essential dependencies from your system. Use \fB\-\-prune\fR together with
-\fB\-\-verbose\fR to show reverse dependencies or with \fB\-\-nodeps\fR to
-ignore all dependencies.
+highest installed version of a package from your system. Use \fB\-\-prune\fR
+together with \fB\-\-verbose\fR to show reverse dependencies or with
+\fB\-\-nodeps\fR to ignore all dependencies.
.TP
.BR \-\-regen
Causes portage to check and update the dependency cache of all ebuilds in the
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 9126fa9e0..23230ee03 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -11455,8 +11455,10 @@ def action_depclean(settings, trees, ldpath_mtimes,
msg.append("\n")
msg.append("As a safety measure, depclean will not remove any packages\n")
msg.append("unless *all* required dependencies have been resolved. As a\n")
- msg.append("consequence, it is often necessary to run\n")
- msg.append(good("`emerge --update --newuse --deep world`") + " prior to depclean.\n")
+ msg.append("consequence, it is often necessary to run %s\n" % \
+ good("`emerge --update"))
+ msg.append(good("--newuse --deep --oneshot @system @world`") + \
+ " prior to depclean.\n")
if action == "depclean" and "--quiet" not in myopts and not myfiles:
portage.writemsg_stdout("\n")
diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py
index bf6a13834..b2c032b21 100644
--- a/pym/_emerge/help.py
+++ b/pym/_emerge/help.py
@@ -66,35 +66,42 @@ def help(myaction,myopts,havecolor=1):
print " file setup or other similar setups that the user may wish to run."
print
print " "+green("--depclean")
- 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."
+
+ 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. See --with-bdeps for behavior with " + \
+ "respect to build time dependencies that are not strictly " + \
+ "required. Packages that are part of the world set will " + \
+ "always be kept. They can be manually added to this set with " + \
+ "emerge --noreplace <atom>. As a safety measure, depclean " + \
+ "will not remove any packages unless *all* required dependencies " + \
+ "have been resolved. As a consequence, it is often necessary to " + \
+ "run emerge --update --newuse --deep --oneshot @system @world " + \
+ "prior to depclean."
+
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."
+ paragraph = "WARNING: Inexperienced users are advised to use " + \
+ "--pretend with this option in order to see a preview of which " + \
+ "packages will be uninstalled. Always study the list of packages " + \
+ "to be cleaned for any obvious mistakes. 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."
+ 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
@@ -116,12 +123,13 @@ def help(myaction,myopts,havecolor=1):
print
print " "+green("--prune")+" ("+green("-P")+" short option)"
print " "+turquoise("WARNING: This action can remove important packages!")
- print " Removes all but the highest installed version of a package"
- print " from your system. This action doesn't verify the possible binary"
- print " compatibility between versions and can thus remove essential"
- print " dependencies from your system. Use --prune together with"
- print " --verbose to show reverse dependencies or with --nodeps to"
- print " ignore all dependencies."
+ paragraph = "Removes all but the highest installed version of a " + \
+ "package from your system. Use --prune together with " + \
+ "--verbose to show reverse dependencies or with --nodeps " + \
+ "to ignore all dependencies. "
+
+ for line in wrap(paragraph, desc_width):
+ print desc_indent + line
print
print " "+green("--regen")
print " Causes portage to check and update the dependency cache of all"