On Thu, 11 Nov 2004 21:57:41 +0900
Jason Stubbs <jstubbs@g.o> wrote:
> 1) Something Mr_Bones_ said - "Emerge should do the least amount
> of work necessary to fulfill a user's request". That seems like
> a logical statement to me. I also interpret that portage should
> do it if it can as well.
That seems logical, but sometimes warning the user that his
request is stupid may be better for him. I mean, if emerging a
fortran program implies two gcc merges, and then emerging another
fortran program implies again two more gcc merges, etc., i think
the user will not be that happy of having been blindly obeyed.
With the "failure at depend time" approach, what would happen is
that the user would have to change is USE flags, re-emerge gcc
once for all, and then he would be able to emerge as many fortran
programs he wants. And his system would also stay consistent. That
is, thanks to the human intervention it requires, a much smarter
overall process imho.
> Example time. :)
I think it may help to also look at real world examples. As a
beginning, a quick grep on "re-emerge" in current tree gives me:
- sys-devel/gcc[gcj], sys-devel/gcc[java]
Both DEPEND and RDEPEND (apps link to libgcj.so), despite it is
implicit since it is a system package.
Example: app-text/pdftk
- sys-devel/gcc[fortran], sys-devel/gcc[f77], sys-devel/gcc[g77]
(doh! Did the USE flag name really changed that often?)
I think it is a DEPEND only, so this one fall into your #1
example.
Example: app-sci/molden
- sys-devel/gcc[multilib]
Both DEPEND and RDEPEND.
Example: games-emulation/zsnes
- dev-python/gnome-python[gtkhtml]
RDEPEND only.
Example: media-sound/solfege
- x11-libs/wxGTK[-unicode]
Both DEPEND and RDEPEND.
Example: media-sound/freqtweak
- media-libs/gd[jpeg]
Both DEPEND and RDEPEND.
Example: app-admin/analog
- x11-libs/qt[mysql]
Both DEPEND and RDEPEND.
Example: media-tv/mythfrontend
- dev-dotnet/gtk-sharp[gnome]
Both DEPEND and RDEPEND.
Example: dev-dotnet/gtksourceview-sharp
- dev-dotnet/gtk-sharp[gtkhtml]
Both DEPEND and RDEPEND.
Example: dev-util/monodoc
- media-libs/imlib2[X]
Both DEPEND and RDEPEND.
Example: media-libs/giblib
- dev-php/php[session], dev-php/mod_php[session]
Both DEPEND and RDEPEND.
Example: www-apps/mythweb
This list is for sure not complete, but what we can see is that in
most cases, this deps are at least RDEPEND deps. That means that
if we want emerge to preserve system consistency (installed
packages respect make.conf+package.use flags), there is nothing
clever to do for emerge, but to fail at depend time and ask the
user to change his flags and re-emerge some packages (that is
Olivier's example #7).
The only exception is g77, but i think "fortran" is a default USE
flag in most profiles, no? So there should not be that many users
missing that compiler, and if there are any, my opinion is that
they will prefer to have a bit of manual work to do than to look
emerge reinstalling gcc several times.
So my opinion is that, _so far_, there seems to be no real need
for the clever solution you've proposed, and that the simpler
check and failure approach would be enough. But sure, that may not
be true anymore in the future (or with some packages that i've
missed).
--
TGL.
--
gentoo-dev@g.o mailing list
|