# Useflag mal (automatisch) gesetzt - mal nicht. Wieso?

## slick

Am Beispiel des Useflag gstreamer fiel es mir auf. Obwohl das Useflag nicht in der make.conf konfiguriert ist, wird es mal gesetzt, mal nicht. (es gibt keine package.use von mir) Also nach meinem Verständnis müßte es doch bestenfalls über das Profile (hier: default/linux/amd64/13.0/desktop) doch entweder gesetzt werden oder nicht. Aber mal so mal so? Irgendwie verliere ich gerade das Vertrauen in Portage. Was ist da los?

```
# emerge --info|grep gstreamer
```

-> Useflag nicht gefunden, aber:

```
emerge -pv x11-libs/wxGTK x11-libs/qt-webkit | grep gstreamer
```

 *Quote:*   

> [ebuild  N     ] x11-libs/wxGTK-2.8.12.1:2.8  USE="X opengl sdl tiff (-aqua) -debug -doc -gnome -gstreamer -odbc -pch" 30,578 kB
> 
> [ebuild  N     ] x11-libs/qt-webkit-4.8.4:4  USE="exceptions gstreamer jit (-aqua) -debug -icu -pch" 0 kB

 

----------

## py-ro

Ebuilds können selber ein Default festlegen, wenn nichts über das Profile oder deine Config festgelegt ist.

----------

## slick

Das würde aber bedeuten wenn ich etwas nicht haben möchte, z.B. nicht gstreamer support, reicht es nicht diesen nicht in die make.conf einzutragen, sondern ich muss ihn explizit als -gstreamer eintragen. 

Das führt IMHO schon wenig am Ziel der Useflags vorbei. Der ursprüngliche Gedanke war doch ich setze ein Useflag oder setze es nicht. Oder irre ich da?

Jetzt gibt es somit ja drei Optionen:

* ich setzte es explizit

* ich verbiete es explizit

* ich setze es weder noch erlaube ich es -> das Paket macht was es will

----------

## py-ro

Das geht mit dem Konzept einher weg von den globalen Use-Flags zu gehen und alles pro Paket zu pflegen, was sich ja schon länge abzeichnet/als richtig empfunden wird.

----------

## slick

hmm ... *grummel* ... ok

----------

## franzf

Ich finde in dem Fall macht es Sinn:

* wxGTK bringt scheinbar nur einen media-controller - ist relativ unwichtig, denke ich.

* qt-webkit braucht gstreamer für HTML5 (audio+video) - und das ist mMn. heutzutage Voraussetzung (vor allem als Linux-user, der so weit wie möglich von flash weg will)

Deshalb nimmt wxGTK einfach das globale USE-setting, qt-webkit setzt ein default-USE (kann man natürlich ausmachen, wenn man das nicht will)

----------

## toralf

 *py-ro wrote:*   

> Ebuilds können selber ein Default festlegen, wenn nichts über das Profile oder deine Config festgelegt ist.

 Ich frage mich, ob insbesondere die IUSE="...." Zeile in den ebuilds explizit ein USE flag einschalten kann, selbst wenn es global ausgeschaltet ist ?

----------

## py-ro

Die Reihenfolge ist:

ebuild < profile < make.conf < env

Also soweit ich weiß nicht.

----------

## Yamakuzure

Wenn in einem Ebuild sowas steht wie

```
IUSE="+foo"
```

, dann ist "foo" explizit aktiviert.

Die Reihenfolge, was wen überschreibt, wird durch die variable USE_ORDER festgelegt. Diese Reihenfolge sollte man niemals ändern, es sei denn, man weiß wirklich ganz genau, was man tut.

Standardmäßig (siehe "man make.conf") ist die Reihenfolge so: (Jeder Punkt überschreibt alle Nachfolgenden)Environment Variablen, wie zum Beispiel USE="foo" emerge bar/etc/portage/package.usemake.confmake.defaults und package.use aus /usr/portage/profile/.../ (Das sind mehrere, je nach Profil (eselect profile), die sich vererben)Ebuild IUSE (Das erwähnte "+foo")Repository Default, also zum Beispiel in /usr/portage/profiles/package.use, aber auch, wenn ich mich recht entsinne, aus den Overlays) und zuletztUmgebungseinstellungen aus /etc/env.dIch hoffe, ich konnte etwas Dunkel in das Licht bringen ... oder anders rum.  :Very Happy: 

----------

## toralf

 *Yamakuzure wrote:*   

> Wenn in einem Ebuild sowas steht wie
> 
> ```
> IUSE="+foo"
> ```
> ...

 Yup, das ist auch mein Verständnis.

----------

