# emerge -ued world sinnvoll, wenn man CFLAGS ändert ?

## tobiasbeil

Hi all

Ich habe ein paar verständnisfragen:

ich habe meine CFLAGS etwas optimiert und möchte nun das

komplette system, also OS+Kernel+Programme mit den geänderten

CFLAGS in der /etc/make.conf (re)kompilieren.

Habe ich die ManPage richtig verstanden,

dass ich dann (dieses Wochende ca. 24h lang  :Sad:  ) einfach:

"emerge -ued world"

eingeben muss, oder doch lieber stage1 alles von vorne ?

PS: was ist der unterschied zw. dem da oben,

und folgender zeile, die angeblich auch alles(?) neukompiliert:

qpkg -nc -I | sort | uniq | NOCOLOR=true xargs emerge 2>&1 >qpkg-make.log

Was soll ich eher/lieber benutzen, wenn ich alles neukompilieren will ?

Obere (emerge...) oder Untere Zeile (qpkg...) ?

Ausserdem:

Wird dann auch der Kernel automatisch neukompiliert, oder muss ich den

Kernel vorher mit den geänderten CFLAGS neukompilieren ?

(der liegt bei mir auf /usr/src/linux-2.6.xx/ oder so ähnlich)

Da ich sowas noch nie gemacht habe und ich weis,

dass es sehr sher lange dauern wird, wollte ich im vorfeld

sicher gehen, also sorry wenn der ein oder andere dies

für eine nuub frage hällt.  :Sad: 

----------

## tobiasbeil

ach ja,

was ist wenn ich noch zusätzlich dem emerge "--buildpkg" hinzufüge ?

(also im endeffekt "emerge -uedB world" ?)

habe ich es richtig verstanden, dass dann zusätzlich binaries erzeugt werden,

die ich beispielsweise für zukünftige verwendung benutzen kann,

vorrausgesetzt natürlich ich steige nicht auf nen anderen CPU Typ um ?

Muss ich dann extra viel speicherplatz haben ?

Momentan "df -m" 4096 blocks 2508 used,

es sind also noch < 1.6 gig frei. Denkt ihr das reicht,

oder soll ich extra für die binaries speicher ausweiten ?

----------

## schachti

 *tobiasbeil wrote:*   

> 
> 
> ich habe meine CFLAGS etwas optimiert und möchte nun das
> 
> komplette system, also OS+Kernel+Programme mit den geänderten
> ...

 

Wenn Du nur ein klein wenig optimiert hast, wirst Du bei 99,9% aller Programme keinen Unterscheid spüren und kannst Dir das Neukompilieren des kompletten Systems sparen - das spart Zeit und Strom, also Geld.  :Wink: 

 *tobiasbeil wrote:*   

> 
> 
> Habe ich die ManPage richtig verstanden,
> 
> dass ich dann (dieses Wochende ca. 24h lang  ) einfach:
> ...

 

Mach einfach emerge -e world, das sollte reichen.

 *tobiasbeil wrote:*   

> 
> 
> PS: was ist der unterschied zw. dem da oben,
> 
> und folgender zeile, die angeblich auch alles(?) neukompiliert:
> ...

 

Diese Zeile findet heraus, welche Packete auf Deinem System installiert sind, und kompiliert sie alle einzeln. Hat den Vorteil, daß - wenn das Installieren eines Pakets mit einem Fehler abbricht - alle anderen Pakete trotzdem installiert werden.

 *tobiasbeil wrote:*   

> 
> 
> Was soll ich eher/lieber benutzen, wenn ich alles neukompilieren will ?
> 
> Obere (emerge...) oder Untere Zeile (qpkg...) ?
> ...

 

Geschmackssache.

 *tobiasbeil wrote:*   

> 
> 
> Wird dann auch der Kernel automatisch neukompiliert,
> 
> 

 

Nein.

 *tobiasbeil wrote:*   

> 
> 
>  oder muss ich den
> 
> Kernel vorher mit den geänderten CFLAGS neukompilieren ?
> ...

 

Nein, die CFLAGS in /etc/make.conf haben AFAIK keinen Einfluß auf den Kernel.

Wie sehen denn Deine neuen CFLAGS aus? Und was hast Du "optimiert"?

----------

## oscarwild

Vorweg: Bevor Du Deinen Rechner für einen Tag als Heizplatte nutzt, überleg Dir gut, ob es das wert ist. Ein paar Prozent Leistung hin oder her wirst Du als Anwender kaum merken, eine Überoptimierung der cflags kann mehr Schaden anrichten als es nutzt. Wenns denn wirklich sein muss, der richtige Weg ist emerge --emptytree world.

Der Kernel wird nicht automatisch compiliert, emerge <kernel-sources> bewirkt lediglich das herunterladen und installieren der Kernelquellen, die Du dann selbst compilieren musst. Ich bin mir aber nicht sicher, ob die CFLAGS beim Kernel überhaupt relevant sind...

----------

## schachti

 *tobiasbeil wrote:*   

> 
> 
> was ist wenn ich noch zusätzlich dem emerge "--buildpkg" hinzufüge ?
> 
> (also im endeffekt "emerge -uedB world" ?)
> ...

 

Ja. Macht meiner Meinung nach nur Sinn, wenn man mehrere identische Rechner hat oder man regelmäßig neu installiert.

 *tobiasbeil wrote:*   

> 
> 
> Muss ich dann extra viel speicherplatz haben ?
> 
> 

 

Zumindest genug, um zusätzlich noch die Binärpakete speichern zu können.  :Wink: 

 *tobiasbeil wrote:*   

> 
> 
> es sind also noch < 1.6 gig frei. Denkt ihr das reicht,
> 
> 

 

Wenn Du OpenOffice selbst kompilierst, reicht es nicht, ansonsten hängt es natürlich davon ab, welche Pakete Du installiert hast.

----------

## tobiasbeil

vorher: -mcpu=i686 -O2 -pipe

nachher(geplant): -march=pentium4 -O2 -pipe -fomit-frame-pointer -ffast-math -mfpmath=sse,387 -mmmx -msse2

hab mich an die SAFE CFLAGS aus der Gentoo Wiki gehalten.

----------

## schachti

 *tobiasbeil wrote:*   

> 
> 
> vorher: -mcpu=i686 -O2 -pipe
> 
> nachher(geplant): -march=pentium4 -O2 -pipe -fomit-frame-pointer -ffast-math -mfpmath=sse,387 -mmmx -msse2
> ...

 

ok, das sollte in der Tat eine merkbare Verbesserung bewirken - ich würde allerdings dringend von -ffast-math abraten!

 *man gcc wrote:*   

> 
> 
> This option should never be turned on by any -O option since it can result in incorrect output for programs which depend on an exact implementation of IEEE or ISO rules/specifications for math functions.
> 
> 

 

----------

## tobiasbeil

Frage:

wo werden die bnaries gespeichert ??

angeblich laut wiki in ${PKGDIR}/All

aber echo ${PKGDIR} gibt nichts aus, ebenso wie set | grep PKGDIR.

Oder ist das garnicht per default definiert ?  :Shocked: 

----------

## schachti

Bei mir laut grep -r PKGDIR /etc/ in /usr/portage/packages.

----------

## STiGMaTa_ch

 *tobiasbeil wrote:*   

> Frage:
> 
> wo werden die bnaries gespeichert ??
> 
> angeblich laut wiki in ${PKGDIR}/All
> ...

 

All diese Variabeln werden entweder von Hand in /etc/make.conf gesetzt oder durch die defaults gesetzt. Um zu sehen was bei dir benutzt wird, mach am besten ein 

```
emerge --info | grep PKGDIR
```

Lieber Gruss

STiGMaTa

----------

## tobiasbeil

PS:  nur aus neugier ?

wieso sind keine binary repositories oder ähnliches zumindest für x86 rechner bekannt ?

oder anders gefragt, gibts da internetseiten mit binaries für gentoo und für x86 ?

wenn man mit i686 kompiliert ist es nur wenig langsamer als direkt auf p4/amdxp optimiert,

aber auf alles CPUs > PentiumPro lauffähig, oder nicht ?

----------

## psyqil

 *tobiasbeil wrote:*   

> wieso sind keine binary repositories oder ähnliches zumindest für x86 rechner bekannt ?

 Wegen der erschlagenden Vielfalt, die man da irgendwie fabrizieren müßte:

```
psyqil ~$ wc -l /usr/portage/profiles/use.*

  361 /usr/portage/profiles/use.desc

  977 /usr/portage/profiles/use.local.desc

 1338 total
```

 *Quote:*   

> oder anders gefragt, gibts da internetseiten mit binaries für gentoo und für x86 ?

 http://chinstrap.alternating.net/ *Quote:*   

> wenn man mit i686 kompiliert ist es nur wenig langsamer als direkt auf p4/amdxp optimiert,
> 
> aber auf alles CPUs > PentiumPro lauffähig, oder nicht ?

 Jup!

----------

## STiGMaTa_ch

 *tobiasbeil wrote:*   

> PS:  nur aus neugier ?
> 
> wieso sind keine binary repositories oder ähnliches zumindest für x86 rechner bekannt ?
> 
> oder anders gefragt, gibts da internetseiten mit binaries für gentoo und für x86 ?
> ...

 

Naja... schauen wir uns mal das Paket php-4.3.11 an:

 *Quote:*   

> dev-php/php-4.3.11  +X +berkdb +crypt +curl -debug -doc -fdftk -firebird -flash -freetds +gd -gd-external +gdbm -gmp -hardenedphp -imap -informix +ipv6 -java +jpeg -kerberos -ldap -mcal -memlimit -mssql +mysql +ncurses +nls -oci8 -odbc +pam +png -postgres +readline -snmp +spell +ssl +tiff +truetype +xml2 -yaz

 

Das sind all die USE Flags, welche man für dieses Paket setzen kann. 41 Stück um genau zu sein. Wie willst du nun das Binary erstellen? Mit all den (rot) gesetzten Optionen wie auf meinem Rechner? Vielleicht mag das für die eine Hälfte der Nutzer stimmen, doch was ist mit denen die Java oder Flash Unterstützung in PHP wollen? Und was machst du mit dem, der zwar all meine Optionen bis auf ssl, Java und Flash haben möchte? Wieder ein eigenes Binary?

Tja, und wenn man jetzt mal ein wenig rechnet siehst du plötzlich folgendes.

Wenn du jede nur erdenkliche USE Flag Kombination des PHP Paketes abdecken willst, musst du 2^41 Pakete erzeugen. Das entspricht 2'199'023'255'552 (in Worten ca. 2.2 Billionen ) Paketen. Wenn wir nun davon ausgehen, dass je nach gewählter USE Flag Kombination das .tbz gepackte File ca. 1.5MB gross wird, musst du alleine für das PHP Paket 3'145'728 (3 Mio!!!) Terrabyte Speicherplatz aufwenden. Oh... und natürlich darf man nicht vergessen, dass dies nur für eine Architektur ist. Da du ja aber auch noch AMD's, PPC's SPARC's etc. hast, darfst du die Menge an Platz noch mit der Anzahl an Architekturen multiplizieren.  :Cool: 

Uebrigens... Irgendwer muss diese Pakete ja auch noch kompilieren  :Wink:  habe grad mal gemessen wie lange das kompilieren auf meinem 1.7GHz Centrino Mobile Laptop dauert...

188s

Das bedeutet 2'199'023'255'552 * 188s = 413'416'372'043'776s / 31449600s (~1 Jahr in sekunden) = 13'145'361.8 Jahre !!!!

Du kannst mich ja dann in 13Mio Jahren wieder auferwecken um mir das Relikt PHP 4.3.11 zu zeigen  :Laughing: 

Lieber Gruss

STiGMaTa

----------

## schachti

Man könnte natürlich Pakete anbieten, die mit allen USE flags übersetzt und für Pentium optimiert sind - aber dann kann man ja gleich SuSE nehmen.  :Laughing: 

----------

## tobiasbeil

ok ihr habt recht.

so gesehen würde ich solche binaries garnicht nutzen wollen,

denn ich benutze sehr exotische use flags, weil mein gentoo

ja nicht echt ist sondern nur im colinux läuft... da braucht man

viele USE flags einfach systembedingt nicht.

aber trotzdem gut, dass ich auf die buildpkg option gestossen bin,

weil fürs wiederverwenden auf einem bestimmten system mit dem

gleichen einsatzzweck ist das mal super praktisch...

Danke euch allen für die schnelle Hilfe!

 :Very Happy: 

----------

## franzf

 *tobiasbeil wrote:*   

> 
> 
> nachher(geplant): 
> 
> ```
> ...

 

Lies mal bitte info gcc. Dann findest du folgendes:

 *info gcc wrote:*   

> 
> 
> _pentium4, pentium4m_
> 
>           Intel Pentium4 CPU with MMX, SSE and SSE2 instruction set
> ...

 

Also sind die Optionen -mmmx -msse2 überflüssig!

 *info gcc wrote:*   

> 
> 
> -mfpmath
> 
> `sse,387'
> ...

 

Mit diesen CGLAGS wirst du wahrscheinlich nicht glücklich, da recht experimentell!!!

Grüße

Franz

----------

## tobiasbeil

ja nee,

du schreibst ja minus "-" mmmx und minus "-" msse2,

also werden diese funktionen deaktiviert.









 :Wink: 

----------

## schachti

 *tobiasbeil wrote:*   

> 
> 
> ja nee,
> 
> du schreibst ja minus "-" mmmx und minus "-" msse2,
> ...

 

Nein, Du verwechselst das mit den USE flags. Die CFLAGS sind Optionen, die an den gcc direkt uebergeben werden, und die haben nun einmal das Format -OPTION, siehe man gcc.

----------

## tobiasbeil

war doch nur spass,

siehe smilie.

ich wollte nur auf sarkastische art und weise die nutzlosigkeit der tags mit (un-)sinn füllen...

----------

## tobiasbeil

Frage:

ist es normal dass der beim kompilieren von glibc 2.3.4 20041102 r1

beim erstellen der locales der rechner EWIGKEITEN braucht ?

er hat sich nicht aufgehängt, weil ich kann in ein anderes screen c-a n

rein und dort sonstige befehle ausführen.

cpu usage ist auch 99%, aber wie lange kann das denn schon brauchen ?

letztes mal hab ich ihn nach 13 std einfach neugebootet, weil ich dachte

das kann nicht sein, dass der innerhalb 2 std auf 15 von 233 packeten

kommt, und dann beim glibc alleine >9 std verbringt....

jemand ne idee ??

----------

## schachti

9 Stunden sind fuer meinen Geschmack etwas viel, auf meinem Athlon XP 2400+ war die glibc nach ca. 1-2 Stunden fertig (so genau habe ich es aber nicht mehr im Gedaechtnis).

----------

## tobiasbeil

emerge (15 of 233) ...

```
....

mkdir /var/tmp/portage/glibc-2.3.4.20041102-r1/image/usr/lib/locale

en_US.ISO-8859-1... done

en_US.UTF-8...

```

genau da steht er jetzt seit stunden (!!!!!!!!).

EDIT:

top sagt 99.9 % cpu geht an "ld.so".

also NIX macht er nicht, aber ETWAS scheint hinten nicht rauszukommen,

um es mal ganz plump zu formulieren.

EDIT2:

und ich hab nur 4 locales US iso/unicode DE iso/unicode... !!

----------

