Matthew R. Lee wrote:
> I've just been doing my regular emerge -pvu world and the system wants to 
> update xorg-x11 to 7.2, fine.  To do this I needed to add some packages to 
> the packages.keywords file, again fine.
> My problem is I had to go through the cycle emerge -pvu world add a package 
> to 
> package.keywords 11 times, to deal with the 11 masked packages that 
> xorg-x11-7.2 required.
> So the question is, is there anyway to get emerge to list all the masked 
> dependencies required all at once?  (i.e. when I run emerge -pvu world the 
> first time). I've looked at the man page but didn't see an obvious solution.
> Thanks 
> Matt
>   

It is a mini-repeat of what one had to do to get 7.0 installed.
There were a lot more masked packages to add at that time. I still have
a script I wrote for that purpose, it adds any encountered unstable
ebuilds to the /etc/portage/portage.keywords file and masked ebuilds to 
/etc/portage/portage.unmask file:

------------------

#!/bin/sh

LASTADD=''
UNMASK=''

if [ -z "$*" ]; then
  echo Need package name to emerge
  exit
fi

until emerge --deep --nocolor --verbose --pretend $* >/tmp/autokw$$; do
  if egrep "All ebuilds that could satisfy \".*\" have been masked." 
/tmp/autokw$$; then
    #echo error from portage looking at output
    EBUILD=`grep "^- " /tmp/autokw$$ | head -n 1 |\
      sed -e 's/^- \(.*\)-[0-9].*$/\1/'`
    if [ "$EBUILD" == "$LASTADD" -o -z "$EBUILD" ]; then
      echo oops same as last time or null: [$EBUILD]
      if [ ! -z "$UNMASK" ]; then
        echo already tried to unmask package
        rm /tmp/autokw$$
        exit
      fi
      echo trying to add to unmask
      if grep "All ebuilds that could satisfy" /tmp/autokw$$; then
        EBUILD=`grep "All ebuilds that " /tmp/autokw$$ | head -n 1 |\
          sed -e 's/.*"\([^"]*\).*$/\1/'`
        echo $EBUILD >> /etc/portage/package.unmask
        UNMASK="yes"
        LASTADD=''
      fi
    else
      echo adding [$EBUILD] to keywords file
      echo -e "$EBUILD\t~x86" >>/etc/portage/package.keywords;
      LASTADD=$EBUILD
      UNMASK=''
    fi
  else
    echo could not parse output
    cat /tmp/autokw$$
    break
 fi
done
[ -e "/tmp/autokw$$" ] && rm /tmp/autokw$$

------------------

It's just a hack but it has worked for me a couple of days ago for 7.2 ebuild. 
On that note, I have also found the etcportclean script useful (just google for 
it). It scans your /etc/portage files and tells you if you have any redundant 
entries there. The script might be broken a little from memory but it has 
worked quite well for me over a long time.

Eugene.

-- 
gentoo-user@gentoo.org mailing list

Reply via email to