On Thursday 24 February 2005 04:10 pm, Damian Kolkowski 
<[EMAIL PROTECTED]> wrote:
> * Boyd Stephen Smith Jr. <[EMAIL PROTECTED]> [2005-02-24 18:08]:
> > Well, the problem is that the package in question may not be in your
> > world file
>
> Heh, I write all of this below and now I understand you :-)
>
> My world file? I thought that everything is in my "world file" - hmmm..?

Nope.  If you emerge foo-bar/baz and that pulls in foo-bat/gonzo as a 
dependency, foo-bat/gonzo is not placed in your world file.  Similarly, 
dependencies of foo-bat/gonzo are pulled in but not added to world.

If you want emerge <package> to not add the package to world, you should 
use --oneshot (-1).  If you want to add a package to world that is 
installed, you can simply place it in there youself.  If you want to add a 
package to world that is not installed or you don't want to mess with the 
world file manually, just emerge <package>.

BTW, there's no need for quotes around the phrase 'world file'.  Portage 
literally maintains a file, named world, in /var/lib/portage that directs 
the behavior of emerge world.

[In fact, there's a nice GLEP that will, if implemented, allow (somewhat) 
arbitary files structed like world in /var/lib/portage/sets to direct 
portage similarly.]

> Fortunately it works good for "ldap" and evolution :-D And there is no
> need in my gentoo case to use -uD :-)

While what you attempted worked in this particular case, you are 
misunderstanding how emerge world works, and how --newuse and -D modify 
that separately and together.

> > If it's not, --newuse will not pick up on it, unless you add --deep
> > (-D).  --ask (-a) is better than pretend, 'cept that it has to be used
> > interactively.  --verbose (-v) and --tree (-t) make the pretend
> > information a lot more useful.  I suppose --update (-u) was a bit of
> > overkill.
> >
> > I rarely, if ever, go without -avt.  Of course, -uD and --newuse are
> > only added as needed.
>
> I do not agre :-)
>
> If we use "--newuse" because we add USE="ldap", emerge will find
> packages that need to be install [1], so something like -D, -u in that
> case is useles :-)

No, as I said before, if you do emerge --newuse world it will only 
(initially) scan world for packages that have new use flags, if none exist 
then no package will be recompiled, even if a dependency has had it's use 
flags change.  [When a package is slated for recompile, emerge does, then 
check it's dependencies.]

This is the same with -u (or a combination of the two).  Only packages in 
your world file will be checked for an up/downgrade, as well a dependecies 
of any package that does need to be remerged.  If a dependcy has been 
updated, but not it's dependent in world, it will not be recompiled.

--deep (-D) changes this behavior so that all dependencies are scanned for 
possible remerge, even if the package it depends on is up-to-date w.r.t. 
the -u and --newuse options passed on the command-line.

[Can a dev (Ciran?) back me up on this or am I just talking out of my 
arse?]

> P.S. I have small wuestion:
>
> Why is this happening?

Read my text above and you should understand the problem.

What is hapening is that kdenetwork is not in your world file AND the item 
in your world file that depends on it does not have a wifi option but does 
have an ldap option.

When you specify just wifi, emerge never checks the kdenetwork package for 
new use flags because what it depends on doesn't need to be remerged.

When you specific both ldap and wifi, emerge notices that the dependent 
needs to be recompiled because of the changed ldap flag, then it scans 
it's dependencies and notices that kdenetwork needs to be remerged due to 
the changes wifi flag.

Also, hopefully you are using 'USE="blah" emerge <stuff>' syntax just as an 
example; you really shouldn't be using that if you want to keep your use 
flags maintainable.

-- 
Boyd Stephen Smith Jr.
[EMAIL PROTECTED]
ICQ: 514984 YM/AIM: DaTwinkDaddy

[1] But only if that package is in the world file or a there is a direct 
dependecy chain of packages that need to be remerged leading to it.  After 
a use-flag change, you really want to 'emerge -D --newuse world'.
--
gentoo-user@gentoo.org mailing list

Reply via email to