# [gelöst]cpuid2cpuflags

## flammenflitzer

```
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpuflags
```

 Funktioniert nicht, da /etc/portage/package.use eine Datei ist. Ist das ein Bug oder hat sich da in der Verzeichnisstruktur etwas geändert?

```
bash: /etc/portage/package.use/00cpuflags: Ist kein Verzeichnis
```

Last edited by flammenflitzer on Sat Jan 20, 2018 3:42 pm; edited 1 time in total

----------

## franzf

package.use, package.accept_keywords etc. kann man schon seit Ewigkeiten als Verzeichnis anlegen. Es ist aber immer noch optional. Du hast package.use als Datei. Dann musst du den Befehl natürlich anpassen. Oder du siehst einen Vorteil in der neuen Struktur und machst aus package.use ein Verzeichnis  :Wink: 

Edit: "Befehl anpassen" schließt die Umleitung mit ein: ">" ersetzt den Inhalt, du willst unbedingt ">>" verwenden, um die neuen Zeilen anzuhängen!!!!!

----------

## mike155

Ich wundere mich, was hier vor sich geht.

1) Früher hat man die CPU Flags bei den USE Flags eingetragen. 

2) In 2015 gab es dann eine Änderung. Seitdem soll man die CPU Flags nicht mehr bei den USE Flags eintragen, sondern als separate Variable in make.conf:

```
CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
```

3) Jetzt lese ich im Gentoo Wiki und in der Readme-Datei von cpuid2cpuflags etwas von: echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpuflags

Ist das eine erneute Änderung? Braucht man das zusätzlich zu CPU_FLAGS_X86? Oder anstelle von?

----------

## franzf

Du hast die ELOG-Ausgabe nicht gelesen (oder cpuid2cpuflags nicht installiert/aktualisiert). Hintergrund ist die Kompatibilität zu Paludis.

```
Please note that the output has changed in v2. The new format is suitable

both for Portage and Paludis. To use it, e.g.:

 $ echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpuflags

(you may need to convert package.use into a directory if you want to use

separate file as presented here)
```

----------

## asturm

Und die News nicht gelesen: 2015-01-28  cpu_flags_x86-introduction

EDIT: Hm, die scheint zwischenzeitlich verloren gegangen zu sein...

----------

## flammenflitzer

Ich habe jetzt ein Verzeichnis /etc/portage/package.use/. Dort habe ich die alte Datei package.use und die neue 00cpuflags.

----------

## mike155

 *asturm wrote:*   

> Und die News nicht gelesen: 2015-01-28  cpu_flags_x86-introduction
> 
> EDIT: Hm, die scheint zwischenzeitlich verloren gegangen zu sein...

 

Sehr witzig  :Wink: 

Das News-Item gibt es natürlich noch, z.B. hier: https://archives.gentoo.org/gentoo-commits/message/b83469277f6b787ab24d72835722ea09

Und dort steht genau das drin, was ich oben beschrieben habe: man soll die CPU Flags von den USE Flags in die neue Variable CPU_FLAGS_X86 kopieren - und dann nach einem Jahr bei den USE flags löschen. Das habe ich damals getan - und jetzt frage ich mich, was die empfohlene Anweisung 

```
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpuflags 
```

soll? Ist es das gleiche wie CPU_FLAGS_X86 in make.conf? Braucht man es zusätzlich? Braucht man es anstelle von CPU_FLAGS_X86?

----------

## franzf

Wie oben geschrieben: paludis-Unterstützung. make.conf kennt dieser Paketmanager nicht, ebenso CPU_FLAGS als Umgebungsvariable. Und nachdem portage den "*/*" kennt (was früher nicht der Fall war) ist es einfacher, die CPU_FLAGS-Einstellung so zu setzen. Außerdem ist es eine Umgebungsvariable weniger im Build-Environment - k.A. inwieweit das evtl. für Probleme o.Ä. sorgte wie z.B. LIGUAS...

----------

## flammenflitzer

 *mike155 wrote:*   

> 
> 
> soll? Ist es das gleiche wie CPU_FLAGS_X86 in make.conf? Braucht man es zusätzlich? Braucht man es anstelle von CPU_FLAGS_X86?

 

Interessiert mich auch. Nach dem Eintrag in den Pfad 

```
/etc/portage/package.use/00cpuflags
```

 wurden bei mir 2 Pakete neu compilliert, obwohl ich den gleichen Eintrag in der make.conf habe.

```
cat /etc/portage/package.use/00cpuflags

*/* CPU_FLAGS_X86: aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3
```

```
cat /etc/make.conf | grep CPU_FLAGS_X86

CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
```

----------

## mike155

 *franzf wrote:*   

> Wie oben geschrieben: paludis-Unterstützung. make.conf kennt dieser Paketmanager nicht, ebenso CPU_FLAGS als Umgebungsvariable. Und nachdem portage den "*/*" kennt (was früher nicht der Fall war) ist es einfacher, die CPU_FLAGS-Einstellung so zu setzen.

 

Hallo franzf, danke für Deine ausführliche Antwort! Ich glaube, dass ich es jetzt verstanden habe: man kann die CPU Flags ENTWEDER über die Variable CPU_FLAGS_X86 in make.conf ODER über den Eintrag in package.use setzen - wobei letzteres den Vorteil hat, dass dann auch Paludis damit umgehen kann.

Da ich Paludis nicht nutze, kann ich aber vermutlich bei der make.conf-Variante bleiben, oder?

 *franzf wrote:*   

> Außerdem ist es eine Umgebungsvariable weniger im Build-Environment

 

Das wiederum verstehe ich nicht. Wenn ich "emerge --info" starte, wird in beiden Fällen eine Umgebungsvariable CPU_FLAGS_X86 ausgegeben.

Interessanterweise hat diese bei der make.conf-Variante genau den Inhalt, den ich in make.conf definiert habe. Bei der packages.use-Variante werden die CPU-Flags jedoch umsortiert. So wird aus

```
*/* CPU_FLAGS_X86: aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3

```

bei emerge --info:

```
CPU_FLAGS_X86="mmx mmxext sse sse2 aes avx f16c pclmul popcnt sse3 sse4_1 sse4_2 ssse3"
```

Keine Ahnung, ob das etwas ausmacht?

----------

## flammenflitzer

Ich habe beide Einträge. emerge --info 

```
CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
```

 Passt.

Danke an alle.

----------

## mike155

 *flammenflitzer wrote:*   

> Ich habe beide Einträge.

 

Ich bezweifele, dass das gut ist! Die CPU Flags sollten - wie auch alle anderen Daten - nur einmal definiert werden - und nicht mehrfach.

Deswegen frage ich ja so genau nach, was die richtige Stelle ist.

----------

