Hello, As we've discussed multiple times, the following kind of dependencies is completely broken and can't work:
|| ( media-libs/libav:= media-libs/ffmpeg:= ) For this reason, I would like to employ the solution used by Exherbo. More specifically, use: libav? ( media-libs/libav:= ) !libav? ( media-libs/ffmpeg:= ) This has two advantages: 1. gives users more explicit control over whether they want to use libav or ffmpeg. Since the two have mutual blockers, right now random packages could have tried to force you to switch from one to the other. However, most often Portage would just give you terribly unreadable blockers. 2. Subslots work correctly. Rebuilds are forced when the chosen library is upgraded. Moreover, USE flag change causes a rebuild when user decides to change the ffmpeg provider. The new USE flag descriptions would be: ffmpeg - Enable ffmpeg- or libav-based audio/video codec support libav - Prefer libav over ffmpeg This implies that USE=ffmpeg is only present if ffmpeg/libav support is optional while USE=libav is present to provide the choice between ffmpeg and libav. While this isn't the most clear solution, it provides backwards compatibility with the current use of USE=ffmpeg. Any comments? -- Best regards, Michał Górny