#!/bin/bash
# It is using flagedit to remove keyword
# Usage: solve_mp ghc-bin
#
# Author: epcim[at]apelalive.net
TMPF=/tmp/.my_solveMaskedPackages
for round_no in `seq 1 1000`; do
echo ----------------------------------------
echo - ROUND: $round_no
rm $TMPF
## emerge -pDN
emerge -p$1 $2 > $TMPF
if cat $TMPF | grep '!!! All ebuilds'; then
#select latest ebuild
line=`cat $TMPF | grep '^- ' | head -n1`;
#if masked by keyword - parse name
n=`echo $line | sed -e "s/- \(.*\) (masked by.*/\\1/"`;
#if masked by package mask - parse name
n1=`echo $line | grep 'masked by' | grep 'package.mask' | sed -e "s/^- \(.*\) (masked by.*/\\1/"`;
#echo - ROUND: $round_no
echo - N: $n,N1: $n1
#HARD MASKED
#parse pattern for searching in /etc/portage/package.unmask (pkg name for first '.' )
n2=`echo $n1 | sed -e "s/\(.*\)\.\(.*\)/\\1/"`;
if [ $n2 ] ; then
#echo - ROUND: $round_no
echo - hard masked
if grep $n2 /etc/portage/package.unmask; then
echo "Already unmasked by package.mask"
else
if cat $TMPF | grep 'masked by' | grep 'package.mask'; then
echo '!! package.mask resolved - unmask manualy... !!';
echo "echo '=$n1' >> /etc/portage/package.unmask";
break;
fi
fi;
fi;
#MASKED BY KEYWORD
if cat $TMPF | grep 'masked by' | grep '~x86 keyword'; then
#echo - ROUND: $round_no
echo - masked by keyword
echo - flagedit "=$n" -- "~x86";
sudo flagedit "=$n" -- "~x86";
fi;
else
echo "All ebuilds sucesfully solved!"
break;
fi;
done