From e32d9a6f80745586cb52055d728b62e96388cb03 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 22 Jul 2008 13:29:14 +0000 Subject: Update --depclean and --prune, removing warnings about libraries since those are now automatically accounted for. svn path=/main/trunk/; revision=11168 --- NEWS | 2 ++ man/emerge.1 | 31 +++++++++++++------------ pym/_emerge/__init__.py | 6 +++-- pym/_emerge/help.py | 62 ++++++++++++++++++++++++++++--------------------- 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 \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 . 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" -- cgit v1.2.3-1-g7c22