# script zum auflösen von useflag abhängigkeiten

## schmutzfinger

ich hatte vor kurzem ein paar probleme weil es immer wieder neue use flags gibt. https://forums.gentoo.org/viewtopic.php?t=195792

jetzt habe ich mir ein kleines script geschrieben um alle pakete zu finden, die von einem bestimmten flag betroffen sind. auserdem kann das script feststellen welche dieser pakete neu gemergt werden müssen, weil das flag heute nichtmehr aktiv ist bzw weil es damals nicht aktiv war.

das script setzt vorraus das app-portage/gentoolkit installiert ist.

```

#!/bin/bash

#/opt/bin/flagusers

# findet alle gerade installierten ebuilds, die von einem bestimmen useflag beeinflusst werden

# 15.07.04

for dir in `qpkg -I -nc`

do 

        ver=$(qpkg -I -v -nc $dir| head -n1|cut -d"/" -f2 )

        if  cat /usr/portage/"$dir"/"$ver".ebuild 2>/dev/null| grep IUSE | grep "$1" > /dev/null 

        then

                if [ -n "$2" ] && [ "$2" = "-u" ]

                then

                        uses=$(etcat -u $dir | grep $1 | cut -b 2,4)

                        if [ "$uses" = "+-" ] || [ "$uses" = "-+" ]

                        then

                                echo $dir/$ver.ebuild

                        fi

                else

                

                        echo $dir/$ver.ebuild

                fi

        fi            

done

```

Bsp:

#alle installierten ebuilds die von "mmx" betroffen sind

flagusers mmx

#alle die im "etcat -u" ein +- oder -+ haben

flagusers mmx  -u  

#mergt selbige

for i in `flagusers mmx -u`; do emerge $i;done

#alle die neu gemergt werden müssten wenn man das mysql useflag aktivieren würde

USE="mysql" flagusers mysql -u

naja man muss ja nicht unbedingt gleich alles neu mergen, aber ich zB hab mmx irgendwie vergessen und da ich mir einbilde das das vielleicht doch was für mein xorg bringen könnte werde ich wohl demnächst nochmal mergen.

----------

## toskala

sehr löblich, aber scripte mir lieber ein script was mich von neuen useflags in kenntnis setzt   :Twisted Evil: 

aber sonst gut gut  :Smile: 

----------

## Mac Fly

toskala, wär das nix für dich? So ein Script könnte ich und bestimmt auch andere gut brauchen  :Wink: 

----------

## psyqil

```
cp /usr/portage/profiles/use.* /etc/portage/
```

oder sonstwohin und dann 

```
emerge sync

diff /etc/portage/use.desc /usr/portage/profiles/use.desc

diff /etc/portage/use.local.desc /usr/portage/profiles/use.local.desc

cp /usr/portage/profiles/use.* /etc/portage/
```

Bin ja auch mal neugierig, wie oft da so was passiert...hab heut aber schon gesynct, teste ich also erst morgen...also heute...mann, ist das hell draußen!

Guts Nächtle!

----------

## Sas

AFAIK ist oder war so eine Funktion (also das Neu-Kompilieren betroffener Pakete) doch auch für Portage in Planung (--newuse), wie siehts denn damit aus?

----------

## sirro

 *Sas wrote:*   

> AFAIK ist oder war so eine Funktion (also das Neu-Kompilieren betroffener Pakete) doch auch für Portage in Planung (--newuse), wie siehts denn damit aus?

 

von --newuse habe ich noch nicht gehört. Aber bei portage-2.0.51 gibt es eine (IMO) tolle Neuerung:

Bei einem emerge -pv werden nicht nur die USE-Flags angezeigt sondern auch mit einem * markiert wenn sie beim letzen mal anders gesetzt waren.

Nur leider werden dabei neue USE-Flags nicht makiert.  :Sad:  Mir würde es auf jeden Fall reichen, wenn das an dieser Stelle makiert werden würde. Am besten mit einem anderen Symbol als *, damit man es leicht unterscheiden kann...

Hier nochmal ein Beispiel, so sieht es momentan unter portage-2.0.51_pre13 aus:

```
# emerge -pv lighttpd

These are the packages that I would merge, in order: (Paket ist momentan mit +php installiert)

Calculating dependencies ...done!

[ebuild     U ] net-www/lighttpd-1.2.4 [1.2.3] -ldap -mysql -php* +ssl 0 kB [1] 

Total size of downloads: 0 kB
```

EDIT: ein wenig Offtopic geworden. Seht es als Teaser für das neue portage  :Wink: 

----------

## Earthwings

Ja, --newuse is in Portage 2.0.51, aber scheint mir noch nicht das zu tun, was es soll. Oder ich habe es falsch bedient (emerge --newuse world -pv)

----------

## sirro

 *Earthwings wrote:*   

> Ja, --newuse is in Portage 2.0.51, aber scheint mir noch nicht das zu tun, was es soll. Oder ich habe es falsch bedient (emerge --newuse world -pv)

 

Habs gerade auch mal probiert. Bei mir gibt er alles aus, was wie oben beschrieben mindestens einen veränderten Flag enthält... Dazu wird der Mplayer angezeigt, bei dem ein Flags entfernt wurden.

Das einzige was nicht angezeigt wird ist, sind Pakete mit einem neuen Flag (testweise ein neues zu einem hinzugefügt).

Auf jedenfall ist --newuse jetzt schon eine bereicherung für mich (endlich mal alles meinen USE-Flags anpassen  :Wink: ) Das anzeigen von neuen USE-Flags, was man von --newuse ja erwarten würde funktioniert (noch) nicht.

----------

