# [SOLVED] Przejście z gcc 3 na gcc 4 - popsułem . . .

## GHunterPL

Witam.

Po raz kolejny coś popsułem   :Laughing:   Taka rola życiowego pawiana, co codziennie musi się jakimś żarciem uciapać, a czego się nie tknie to zepsuje   :Laughing: 

Ale przechodząc do konkretów...

Naszło mnie na usunięcie starego gcc-3.3.6-r1. Nie potrzebuję go, więc postanowiłem usunąć.

Niestety zamiast skierować się do gentoo.org i poczytać o upgrade gcc, po prostu zrobiłem emerge -C sys-devel/gcc-3.3.6-r1 

Efekt? Bardzo ciekawy.

Po zamaskowaniu powyższej wersji gcc poprzez package.mask oraz zrobieniu emerge -uDNp world pojawiła się informacja o konieczności instalacji libstdc++-V3-3.3.6.

Ok, kompatybilność najważniejsza. Niestety emerge się nie udał...

```
   -c /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c -o collect2.o

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c: In function 'notice':

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:363: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c: In function 'fatal_perror':

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:375: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c: In function 'fatal':

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:393: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c: In function 'error':

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:409: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c: In function 'dump_file':

/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:515: warning: comparison of unsigned expression < 0 is always false

In function 'open',

    inlined from 'collect_execute' at /var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/gcc-3.3.6/gcc/collect2.c:1575:

/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments

make[1]: *** [collect2.o] Błąd 1

make[1]: Opuszczenie katalogu `/var/tmp/portage/sys-libs/libstdc++-v3-3.3.6/work/build/gcc'

make: *** [all-gcc] Błąd 2

 [31;01m*[0m 

 [31;01m*[0m ERROR: sys-libs/libstdc++-v3-3.3.6 failed.

 [31;01m*[0m Call stack:

 [31;01m*[0m               ebuild.sh, line   49:  Called src_compile

 [31;01m*[0m             environment, line 3061:  Called die

 [31;01m*[0m The specific snippet of code:

 [31;01m*[0m       S="${WORKDIR}/build" emake all-target-libstdc++-v3 LIBPATH="${LIBPATH}" BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || die

 [31;01m*[0m  The die message:

 [31;01m*[0m   (no error message)

 [31;01m*[0m 
```

Ok, tu zacząłem korzystać z google  :Wink:  i znalazłem podręcznik dotyczący aktualizacji gcc dla Gentoo, dokładnie to ten. Zrobiłem czynności wymagane w punkcie 2.1, niestety nie pomogło- oczywiście musiało się okazać, że libstdc++ trzeba zemergować PRZED usunięciem gcc 3.* ...

Kombinując z google, niektórymi tematami z bugzilli, i logiką [której niestety było za mało] podstanowiłem zemergować gcc-3.3.6-r1.

Niestety również nie poszło

```
   -c /var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c -o collect2.o

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c: In function 'notice':

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:369: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c: In function 'fatal_perror':

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:381: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c: In function 'fatal':

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:399: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c: In function 'error':

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:415: warning: traditional C rejects ISO C style function definitions

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c: In function 'dump_file':

/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:521: warning: comparison of unsigned expression < 0 is always false

In function 'open',

    inlined from 'collect_execute' at /var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/gcc-3.3.6/gcc/collect2.c:1581:

/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments

make[2]: *** [collect2.o] Błąd 1

make[2]: Opuszczenie katalogu `/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/build/gcc'

make[1]: *** [stage1_build] Błąd 2

make[1]: Opuszczenie katalogu `/var/tmp/portage/sys-devel/gcc-3.3.6-r1/work/build/gcc'

make: *** [bootstrap-lean] Błąd 2

 [31;01m*[0m 

 [31;01m*[0m ERROR: sys-devel/gcc-3.3.6-r1 failed.

 [31;01m*[0m Call stack:

 [31;01m*[0m               ebuild.sh, line   49:  Called src_compile

 [31;01m*[0m             environment, line 4669:  Called toolchain_src_compile

 [31;01m*[0m             environment, line 5192:  Called gcc_src_compile

 [31;01m*[0m             environment, line 2996:  Called gcc_do_make

 [31;01m*[0m             environment, line 2787:  Called die

 [31;01m*[0m The specific snippet of code:

 [31;01m*[0m       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed with ${GCC_MAKE_TARGET}";

 [31;01m*[0m  The die message:

 [31;01m*[0m   emake failed with bootstrap-lean

 [31;01m*[0m 
```

Niestety tutaj nie znalazłem żadnego konkretu na bugzilli, aczkolwiek mogłem coś pominąć.

```
Portage 2.1.6.7 (default/linux/x86/2008.0, gcc-4.3.3, glibc-2.9_p20081201-r1, 2.6.28-gentoo-r1 i686)

=================================================================

System uname: Linux-2.6.28-gentoo-r1-i686-Intel-R-_Celeron-R-_M_processor_1400MHz-with-glibc2.0

Timestamp of tree: Fri, 30 Jan 2009 07:45:01 +0000

app-shells/bash:     3.2_p48

dev-lang/python:     2.5.4-r2

dev-util/cmake:      2.6.2-r1

sys-apps/baselayout: 2.0.0

sys-apps/openrc:     0.4.2

sys-apps/sandbox:    1.3.3

sys-devel/autoconf:  2.13, 2.63

sys-devel/automake:  1.5, 1.9.6-r2, 1.10.2

sys-devel/binutils:  2.19

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   2.2.6a

virtual/os-headers:  2.6.28-r1

ACCEPT_KEYWORDS="x86 ~x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=i686 -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-O2 -march=i686 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks fixpackages parallel-fetch protect-owned sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="ftp://ftp.vectranet.pl/gentoo/ "

LANG="pl_PL"

LC_ALL="pl_PL"

LDFLAGS="-Wl,-O1"

LINGUAS="pl"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="X acl alsa berkdb bzip2 cdr cli cracklib crypt cups dbus divx dri ffmpeg firefox fortran gdbm gif glitz gmedia gpm gtk gtk2 hal iconv ipv6 isdnlog jbig jpeg jpeg2k jpg live mad midi mikmod mp3 mp4 mudflap ncurses nls nptl nptlonly opengl openmp oss pam pcre pdf perl png pppd python qt3 qt4 quicktime readline realmedia realplayer reflection seamonkey session spl ssl svg symlink sysfs tcpd truetype unicode win32codecs wma wmp x86 xcb xcomposite xinerama xorg xscreensaver xulrunner xv xvid xvmc zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="pl" USERLAND="GNU" VIDEO_CARDS="intel"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

Pomocy   :Embarassed: Last edited by GHunterPL on Sat Jan 31, 2009 5:29 pm; edited 1 time in total

----------

## Qlawy

brawa, podwójne, jedne za pomysł i wykonanie, drugie za odszukanie tak starego systemu gdzie jeszcze gcc-3.* było.

opcje generalnie dwie masz:

1. Postawić system od nowa na tym co masz

2. chroot i emerge w chroocie z użyciem binarek z zewnętrznego hosta

generalnie metoda pierwsza poniekąd sprowadza się do drugiej.

Z takim bałaganem jak zrobiłeś, to moim zdaniem lepszym rozwiązaniem dla systemu byłoby odświeżenie go - tj zostawić konfigi i /home, a potem zainstalować nowy system, wiem, że to brzmi jak format c: ale to zajmie dużo mniej czasu i efekt jest raczej pewniejszy.

----------

## GHunterPL

Z użyciem zewnętrznych binarek- tzn. jakich? Skąd?

----------

## Qlawy

tych które są na livecd

----------

## GHunterPL

Minimal cd się kwalifikuje czy niebardzo?

----------

## Belliash

A mi sie nie chce wierzyc ze to jedyne wyjscia...

Jezeli dzisiaj instalujemy system... Mamy w nim GCC 3? NIE! Mamy w nim libstdc++? NIE!

```
PECET / # epm -qa | grep gcc

gcc-4.3.2

gcc-config-1.4.0-r4

PECET / # epm -qa | grep libstd

PECET / #
```

Zaten cos musi go zastepowac, albo w ogole nie jest potrzebny...

Na poczatek uzylbym opcji --tree ktora pokazalaby mi jaki pakiet wymaga libstdc++ ....

Wtedy moze bysmy cos poradzili... Moze to jakis program, moze da sie go usunac, zaktualizowac system i wtedy ponownie zainstalowac?

Ciezko powiedziec...

Aczkolwiek z racji iz lubie eksperymentowac, chetnie bym Ci pomogl  :Wink: 

A moze wspolnie znalezli bysmy jakies rozwiazanie... Oczywiscie nie moge nic zagwarantowac ale mysle ze nie ma takiego problemu ktorego nie daloby sie rozwiazac. Moze co najwyzej byc brak pomyslu na jego rozwiazanie  :Cool: 

----------

## GHunterPL

Tak jak pisałem problem dotyczy libstdc++-v3, więc jego rozpatrywałem

```
notebook ~ # emerge libstdc++-v3 -t -p

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!

[ebuild  N    ] sys-libs/libstdc++-v3-3.3.6  USE="nls nptl -build (-multilib)" 

```

Jedyny zależny od niego pakiet to może być libstdc++, aczkolwiek... tego też pewien nie jestem.

----------

## Belliash

 *GHunterPL wrote:*   

> Tak jak pisałem problem dotyczy libstdc++-v3, więc jego rozpatrywałem
> 
> ```
> notebook ~ # emerge libstdc++-v3 -t -p
> 
> ...

 

nie tak.....................................................

emerge -uDNpt world

----------

## GHunterPL

```
notebook ~ # emerge -uDNpt world

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!

[nomerge      ] virtual/libstdc++-3.3 

[ebuild  N    ]  sys-libs/libstdc++-v3-3.3.6  USE="nls nptl -build (-multilib)" 

notebook ~ # 

```

----------

## mziab

Pokaż:

```
equery d libstdc++
```

----------

## GHunterPL

```
notebook ~ # equery d libstdc++

[ Searching for packages depending on libstdc++... ]

media-libs/win32codecs-20071007-r4 (real? =virtual/libstdc++-3.3*)

notebook ~ # 

```

----------

## mziab

Wygląda na to, że to znany bug: #232102

----------

## GHunterPL

 *mziab wrote:*   

> Wygląda na to, że to znany bug: #232102

 

Rozumiem że to jest lekarstwo na buga? Mam to dać w formie patcha do ebuilda?

----------

## mziab

Tak, do tego to się sprowadza  :Smile: 

----------

## GHunterPL

```
>>> Installing sys-libs/libstdc++-v3-3.3.6

>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

notebook libstdc++-v3 # 

```

Gra i trąbi  :Wink: 

Dzięki wielkie za pomoc  :Smile: 

----------

