Summary: | app-portage/gentoolkit-0.2.4_pre7 - revdep-rebuild fails to handle removed packages | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Davide Pesavento <pesa> |
Component: | Tools | Assignee: | Portage Tools Team <tools-portage> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | jdelga06, michael |
Priority: | High | Keywords: | InVCS |
Version: | 2.1 | ||
Hardware: | All | ||
OS: | All | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 170220 | ||
Attachments: | revdep-rebuild_r453_better_version_checking.patch |
Description
Davide Pesavento (RETIRED)
2008-01-10 17:31:53 UTC
Using app-portage/gentoolkit-0.2.4_pre7. What does the following command return? portageq best_visible / app-office/openoffice:0 Right. I locally masked >=app-office/openoffice-2.3.1. That command returns nothing. Anyway, revdep-rebuild doesn't honour the '-e' option on the command line, and could try to validate emerge's output (bailing out with an appropriate error message) rather than continuing and producing a wrong emerge command. Please upload the .revdep-rebuild* files from your home directory. (Run revdep-rebuild with the -k flag to keep it from deleting temporary files.) in get_build_order() <SNIP> REBUILD_GREP=$(emerge --nodeps $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g') && emerge --deep $RAW_REBUILD_LIST | sed 's/\[[^]]*\]//g' | grep -F "$REBUILD_GREP" > $LIST.5_order || { eerror eerror 'Warning: Failed to resolve package order.' eerror 'Will merge in arbitrary order' eerror </SNIP> If $RAW_REBUILD_LIST contains the string '=app-office/openoffice-2.3.0' and 2.3.0 is not available, then emerge --nospinner --pretend --oneshot --quiet --nodeps $RAW_REBUILD_LIST would create the error message in comment #0: !!! All ebuilds that could satisfy "=app-office/openoffice-2.3.0" have been masked. !!! One of the following masked packages is required to complete your request: - app-office/openoffice-2.3.0 (masked by: EAPI-1 , CHOST:) For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook. But what does *not* make sense is two things that I haven't been able to figure out yet. 1) Why is the error message 'Warning: Failed to resolve package order...' not being triggered, and 2) Why is the output, which afaict goes to STDERR, getting captured in a STDIN redirect? Created attachment 141796 [details, diff] revdep-rebuild_r453_better_version_checking.patch Patch against rev 453 that does several things slightly different: - Doesn't hunt for versions unless -e is specified, by default just uses slots - Fixes this bug and I think also in Bug #199507 where get_package_order() didn't handle emerge failures because it was in a pipeline. - Removes packages from the immediate build list if they cannot be merged automatically because of blocking, masking, or treecleaning. Informs the user of this. - Fixed a minor bug caused by grepping for $LIST.4_package_owners even when that file doesn't exist. Hopefully didn't regress :) *** Bug 208485 has been marked as a duplicate of this bug. *** Patch works fine here. [...] * Evaluating package order * * Portage could not find any version of the following packages it could build: * app-office/openoffice:0 * * (Perhaps they are masked, blocked, or removed from portage.) * Try to emerge them manually. * * Warning: Portage cannot rebuild any of the necessary packages. $ svn commit -m "Apply patch to better handle masked and removed packages. (Bug 205227)" Sending revdep-rebuild/revdep-rebuild Transmitting file data . Committed revision 462. Released in gentoolkit-0.2.4_rc2 |