# gcc version für bestimmte pakete ändern

## Christian99

Hi, ich verwende normalerweise gcc-4.7 seit er im portage ist. leider funktioniert er für einzelne pakete (noch) nicht. kann ich für einzelne Pakete die compilerversion ändern?

schöne Grüße

Christian

----------

## Max Steel

Versuch mal über die /etc/portage/env/ Dateien was zu drehen. Habs selber noch nicht ausprobiert, aber wenns für einzelne Dateien sein soll kann man da vielleicht etwas managen (diese Dateien werden ausgewertet wie Shell-scripte.)

----------

## Christian99

Danke, was muss ich denn da setzen? CC und CXX oder noch mehr?

----------

## bbgermany

Hi,

ich hatte grad das gleiche Problem mit cmake und gcc-4.6.3.

Meine normalen CFLAGS mit "-march=corei7-avx -O2 -pipe" wollte das Paket nicht. Also fix die Datei /etc/protage/env/dev-util/cmake mit folgendem Inhalt erstellt:

```

CFLAGS="-O0 -pipe"

CXXFLAGS="${CFLAGS}"

```

und schon gings.

MfG Stefan

----------

## Christian99

das ist schon klar, aber ich wollte wissen was für variablen ich setzen muss um den Compiler zu ändern.

----------

## bell

Ich würde sowas in die Globale Konfigurationsdatei /etc/portage/bashrc packen:

(pseudo-code / ungetestet)

```
case $PN in

    app-xxx/xxx )

        GCC_NEEDED=x86_64-pc-linux-gnu-4.7.0;;

    app-yyy/yyyy )

        GCC_NEEDED=x86_64-pc-linux-gnu-4.7.0;;

    * )    # default

        GCC_NEEDED=x86_64-pc-linux-gnu-4.5.3;;

esac

if [ $(gcc-config -c) != $GCC_NEEDED ]; then

   gcc-config $GCC_NEEDED

fi
```

Wenn es funktioniert, so wird vor jedem Bau geprüft welcher GCC benötigt wird und ggf. gewechselt.

Falls Du das Skript fertig hast, bitte posten   :Wink:  Wie gesagt, bisher ist es nur eine Idee.

----------

## Klaus Meier

Noch ein Tip von mir. Ich habe vor kurzem auch mit dem 4.7 experimentiert. Lass besser noch die Finger von. Einige Anwendungen, die sich übersetzen ließen, sind dann abgestürzt. Und das merkt man so direkt wirklich nur, wenn es eine Desktopanwendung ist. Es sind aber in den letzten Tagen auch viele neue Patches für den 4.7 eingepflegt worden. Vielleicht ist die Situation jetzt ja besser.

Aber denk immer dran, wenn seltsames passiert.

----------

## mv

 *Klaus Meier wrote:*   

> Einige Anwendungen, die sich übersetzen ließen, sind dann abgestürzt.

 

So ein Problem hatte ich bei keinem Paket. Kannst Du Pferd und Reiter nennen?

----------

## Klaus Meier

 *mv wrote:*   

>  *Klaus Meier wrote:*   Einige Anwendungen, die sich übersetzen ließen, sind dann abgestürzt. 
> 
> So ein Problem hatte ich bei keinem Paket. Kannst Du Pferd und Reiter nennen?

 

Eine Anwendung war Evolution in einer Version von 3.4. Weiß jetzt nicht mehr, ob 3.4.1 oder 3.4.2. Und dann bin ich ganz schnell wieder zurück zum gcc-4.5.3. Der 4.6.3 war damals noch hardmasked. Ob es noch eine andere Anwendung war, kann ich nicht mehr sagen. Es kann auch an einer Bibliothek liegen, die Evolution nutzt.

Aber: Die Binaries waren im Vergleich zum 4.5.3 schon deutlich kleiner.

Und ansonsten: Warum für einige Pakete den 4.6.3 fest eintragen? Du übersetzt dein System mit 4.6.3. Und dann ein emerge -e mit 4.7.0. Die Pakete, die nicht durchgehen, hast du ja sowieso schon. Und die Updates machst du dann halt wieder mit dem 4.7.0. Und die, die nicht durchgehen, da schaltest du wieder auf den 4.6.3 um. Sonst übersetzt du einiges mit dem 4.6.3, was schon längst mit dem 4.7.0 geht. Denn da gibt es ein Feature:

```
# ChangeLog for media-video/vdr

# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2

# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.163 2012/$

  10 Jun 2012; Joerg Bornkessel <hd_brummy@gentoo.org> -vdr-1.6.0_p2-r9.eb$

  vdr-1.6.0_p2-r10.ebuild, +files/vdr-1.6.0_p2_gcc-4.7.patch,

  -files/vdr-1.6.0_p2_linguas.diff:

  fixed gcc-4.7 compile; cleanup; strip-linguas en fixing
```

Es werden ebuilds aktualisiert, ohne dass die Version der Anwendung hochgezählt wird. Also wird diese Anwendung beim Updaten auch nicht neu übersetzt. Ich würde da eine Liste anlegen mit Anwendungen, die sich mit dem 4.7.0 nicht übersetzen lassen und dann sporadisch mal die Changelogs ansehen.

----------

## mv

 *Klaus Meier wrote:*   

> Eine Anwendung war Evolution in einer Version von 3.4.

 

Ah, Gnome. Das habe ich hier nicht, und wenn schon ein Gnome-nahes Tool dann nur mit USE=-introspection. Das kann die unterschiedliche Erfahrung erklären. Aber:

 *Quote:*   

> Der 4.6.3 war damals noch hardmasked.

 

Du sprachst von 4.7. Meiner Erfahrung nach gab es von 4.6 auf 4.7 (im Gegensatz zu 4.5 auf 4.6) kaum Probleme. Große Ausnahme sind hardened-sources, aber das ist ein "hausgemachtes" Problem von hardened. Eine Laufzeit-Regression hatte ich auch mit 4.7 und firefox, aber die hatte mit graphite zu tun (und scheint nicht alle Benutzer zu betreffen).

----------

## Klaus Meier

Kann es jetzt ja noch mal versuchen, mache dann vorher  am einfachsten ein Backup...

----------

## franzf

Neben dem dass gestern gcc-4.7.1 released wurde und heute im Tree gelandet ist...

 *Klaus Meier wrote:*   

> Denn da gibt es ein Feature:
> 
> ```
> # ChangeLog for media-video/vdr
> 
> ...

 

Da gibt es ein Feature "hardmasked". Wenn ein Paket nicht richtig mit einem hart maskierten Paket zusammen arbeitet, dann fügt man einfach einen Patch ein ohne RevBump. Die zwei Alternativen wären 1) revbump und dadurch ALLEN die nicht bleeding edge fahren, ein rebuild aufhalsen, für etwas das sie gar nicht tangiert oder 2) Ein hart maskiertes revbump nur für die harten Jungs.

Nachteile sind offensichtlich:

1) Generiert viel zu viele rebuilds, der normalo User wird sich beschweren.

2) Wer soll das noch warten?!?

----------

## Klaus Meier

Da hat sich wohl in der letzten Zeit einiges getan. 4.7.1 klingt gut. Werde es wohl mal erneut testen.

Ok, lief beim Frühstück nebenher: evolution-3.4.2 mit gcc-4.7.1 übersetzt funktioniert. Na dann werde ich jetzt mal emerge -e world machen und heute abend schauen, was passiert ist.

----------

## Klaus Meier

Na ich hab es mal wieder versucht, folgendes ging nicht durch:

```
=dev-libs/crypto++-5.6.1-r3

=sys-devel/binutils-2.22-r1

=media-plugins/gst-plugins-ffmpeg-0.10.13-r1

=net-libs/webkit-gtk-1.8.1-r30
```

Zu den binutils gab es eben gerade einen Patch, die gehen jetzt auch. libreoffice werde ich mal über Nacht testen. Bislang funktioniert alles, aber habe ja noch nicht viel ausprobiert.

----------

