# [XBMC]Erreur de compilation avec le USE flag CEC

## StinGer_Uesugi

Bon bah voilà, tout est dans le titre. Comment je fais ?

 :Laughing:   :Laughing:   Nan je plaisante.

Ça fait plusieurs jours que j'essaie d'installer XBMC, mais je n'y parviens pas. Le truc, c'est que les messages d'erreurs varient et semblent aléatoires. Enfin c'est plus qu'il y a N erreurs possibles et qu'à chaque tentative, je tombe sur 1 parmi N. Je sais pas si c'est très clair.

Les dernières lignes du dernier build.log :

```
CPP     xbmc/dbwrappers/sqlitedataset.o

In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/bits/locale_facets.h:2608:0,

                 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/bits/basic_ios.h:39,

                 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/ios:45,

                 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/ostream:40,

                 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/iostream:40,

                 from sqlitedataset.cpp:29:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/bits/locale_facets.tcc: In member function ‘virtual _OutIter std::num_put<_CharT, _OutIter>::do_put(std::num

_put<_CharT, _OutIter>::iter_type, std::ios_base&, std::num_put<_CharT, _OutIter>::char_type, bool) const’:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/include/g++-v4/bits/locale_facets.tcc:1106:81: erreur: expected primary-expression before ‘:’ token

CPP     xbmc/addons/ScreenSaver.o

make[1]: *** [sqlitedataset.o] Erreur 1

make: *** [xbmc/dbwrappers/dbwrappers.a] Erreur 2

make: *** Attente des tâches non terminées....

CPP     xbmc/addons/Service.o

CPP     xbmc/addons/Skin.o

CPP     xbmc/addons/Visualisation.o

AR      xbmc/addons/addons.a

 * ERROR: media-tv/xbmc-11.0 failed (compile phase):

 *   emake failed

 * 

 * If you need support, post the output of `emerge --info '=media-tv/xbmc-11.0'`,

 * the complete build log and the output of `emerge -pqv '=media-tv/xbmc-11.0'`.

 * The complete build log is located at '/var/tmp/portage/media-tv/xbmc-11.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/media-tv/xbmc-11.0/temp/environment'.

 * Working directory: '/var/tmp/portage/media-tv/xbmc-11.0/work/xbmc-11.0'

 * S: '/var/tmp/portage/media-tv/xbmc-11.0/work/xbmc-11.0'
```

Pour info, la ligne incriminée dans locale_facets.tcc :

```
const _CharT* __name = __v ? __lc->_M_truename

                           : __lc->_M_falsename;

```

(Qui est bien sur deux lignes. Je vois pas en quoi ça gênerait mais bon, sait-on jamais...)

Mon make.conf :

```
# Host Setting                                                                                                                                                   

# ============                                                                                                                                                   

#

CHOST="x86_64-pc-linux-gnu"

# Host and optimization settings

# ==============================

#

CFLAGS="-march=native -mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm -O2 -pipe"

CXXFLAGS="${CFLAGS}"

FFLAGS="${CFLAGS}"

FCFLAGS="${FFLAGS}"

# Fetching files

# ==============

#

GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/ http://mirrors.linuxant.fr/distfiles.gentoo.org/ ftp://mirrors.linuxant.fr/distfiles.gentoo.org/ ftp://mirror.ovh.net/gentoo-distfiles/ http://mirror.ovh.net/gentoo-distfiles/"

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

# Advanced Features

# =================

#

EMERGE_DEFAULT_OPTS="--quiet-build"

MAKEOPTS="-j3"

PORTAGE_ELOG_CLASSES="*"

# Use flags

# =========

#

#USE="3dnow X a52 acl acpi alsa branding bzip2 cdda cddb cracklib css dri dts dvd encode exif fbcon ffmpeg flac hddtemp ieee1394 jpeg jpeg2k -ldap lm_sensors mad matroska mime mmx mng mp3 mp4 mpeg nls ogg opengl png policykit samba smp sse sse2 sse3 taglib theora threads tiff udev unicode usb vorbis win32docs wmf x264 xvid zsh-completion"

USE="3dnow X a52 acl acpi alsa branding bzip2 cdda cddb cracklib css dri dts dvd encode exif fbcon ffmpeg flac hddtemp ieee1394 jpeg jpeg2k lm_sensors mad matroska mime mmx mng mp3 mp4 mpeg nls ogg opengl png policykit samba smp sse sse2 sse3 taglib theora threads tiff udev unicode usb vorbis win32docs wmf x264 xvid zsh-completion"

# X Configuration

# ===============

#

VIDEO_CARDS="radeon"

INPUT_DEVICES="evdev"

```

Les "-mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm" sont peut-être pas utiles avec le "-march=native". Il me semblait avoir lu ou constaté un truc comme quoi gcc activait pas ces flags sur mon CPU, mais je sais plus. Je pense pas que ça change grand chose de toutes façons. (J'entends par là que ce n'est pas la présence de ces flags qui font échouer la compilation.)

emerge --info '=media-tv/xbmc-11.0'

```
Portage 2.1.11.62 (default/linux/amd64/13.0, gcc-4.6.3, glibc-2.15-r3, 3.7.10-gentoo-r1-stg9 x86_64)                                                             

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

                         System Settings                                                                                                                         

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

System uname: Linux-3.7.10-gentoo-r1-stg9-x86_64-AMD_E-450_APU_with_Radeon-tm-_HD_Graphics-with-gentoo-2.2

KiB Mem:     3638356 total,    260700 free

KiB Swap:    2097148 total,   2097144 free

Timestamp of tree: Mon, 20 May 2013 16:15:01 +0000

ld GNU ld (GNU Binutils) 2.22

app-shells/bash:          4.2_p45

dev-lang/python:          2.7.3-r3, 3.2.3-r2

dev-util/cmake:           2.8.9

dev-util/pkgconfig:       0.28

sys-apps/baselayout:      2.2

sys-apps/openrc:          0.11.8

sys-apps/sandbox:         2.5

sys-devel/autoconf:       2.13, 2.69

sys-devel/automake:       1.10.3, 1.11.6, 1.12.6

sys-devel/binutils:       2.22-r1

sys-devel/gcc:            4.6.3

sys-devel/gcc-config:     1.7.3

sys-devel/libtool:        2.4-r1

sys-devel/make:           3.82-r4

sys-kernel/linux-headers: 3.7 (virtual/os-headers)

sys-libs/glibc:           2.15-r3

Repositories: gentoo

ACCEPT_KEYWORDS="amd64"

ACCEPT_LICENSE="* -@EULA"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=native -mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"

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"

CXXFLAGS="-march=native -mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

EMERGE_DEFAULT_OPTS="--quiet-build"

FCFLAGS="-march=native -mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm -O2 -pipe"

FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"

FFLAGS="-march=native -mmmx -msse -msse2 -mssse3 -msse4a -mpopcnt -mabm -O2 -pipe"

GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/ http://mirrors.linuxant.fr/distfiles.gentoo.org/ ftp://mirrors.linuxant.fr/distfiles.gentoo.org/ ftp://mirror.ovh.net/gentoo-distfiles/ http://mirror.ovh.net/gentoo-distfiles/"

LANG="fr_FR.UTF-8"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

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

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY=""

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

USE="3dnow X a52 acl acpi alsa amd64 berkdb branding bzip2 cdda cddb cli cracklib crypt css cxx dri dts dvd encode exif fbcon ffmpeg flac fortran gdbm gpm hddtemp iconv ieee1394 ipv6 jpeg jpeg2k lm_sensors mad matroska mime mmx mng modules mp3 mp4 mpeg mudflap multilib ncurses nls nptl ogg opengl openmp pam pcre png policykit readline samba session smp sse sse2 sse3 ssl taglib tcpd theora threads tiff udev unicode usb vorbis win32docs wmf x264 xvid zlib zsh-completion" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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="authn_core authz_core socache_shmcb unixd 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 cgi cgid 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" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="radeon" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

```

Parfois, l'erreur est à propos d'un type non défini, _iI1 je crois, alors que dans les sources, il y a écrit _II1 et que c'est bel et bien ce type qui est défini.

Aussi, j'ai d'autres trucs bizarres. J'ai l'impression que tout vient d'un changement de USE flags que j'ai fait. J'ai enlevé -kde et -gnome de mes USE (oui parce que finalement, les GUIs, ça peut être bien  :Very Happy: ). J'ai ensuite eu pas mal de trucs à recompiler et j'ai dû m'y reprendre à plusieurs fois pour que certaines choses passent. Et dans les erreurs, y avait des problèmes qui ressemblaient à des problèmes d'encodage ou de saut de ligne. Genre le compilateur ne détectait pas que la suite de la déclaration de la fonction était à la ligne.

C'est possible que gcc déconne avec les encodage ? Je vois pas comment, mais sait-on jamais... Surtout que je comprends pas comment une majuscule peut-être lue en minuscule ou vice-versa.

J'attends vos propositions avec impatience parce que je sèche totalement là. Merci de votre aide !

----------

## El_Goretto

Alors, étape 1: obtiens 1 seul message message d'erreur "reproductible"  :Smile: 

Les erreurs aléatoires, surtout à la compilation, c'est souvent le signe d'une machine "malade" au niveau matériel.

----------

## guilc

D'accord avec El_Goretto

Commence par mettre un MAKEOPTS=-j1 et recompile.

2 options :

- ça compile => il y a un défaut de parallélisme

- ça compile pas => l'erreur devrait être toujours la même. Si c'est pas la même, ça pue le problème de toolchain. Si c'est la même, on pourra commencer à investiguer  :Wink: 

PS: peux-tu mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plaît ? Merci  :Smile: 

----------

## StinGer_Uesugi

 *guilc wrote:*   

> D'accord avec El_Goretto
> 
> PS: peux-tu mettre ton titre du topic en conformité avec les conventions de notre forum s'il te plaît ? Merci 

 

Le problème c'est que je sais pas trop quoi mettre comme thème parce que justement, je ne sais pas encore si c'est un problème de toolchain ou un problème vraiment de XBMC.

 *guilc wrote:*   

> D'accord avec El_Goretto
> 
> Commence par mettre un MAKEOPTS=-j1 et recompile.
> 
> 2 options :
> ...

 

J'ai eu une idée dans ce genre hier midi. J'ai lancé un :

```
emerge -e xbmc
```

Du coup, ça a recompilé la moitié du système, dont glibc et gcc. Et avec le résultat, je commence à envisager une origine possible.

Régulièrement, une compilation échoue. Mais si je fais un :

```
emerge -r
```

derrière, la compilation passe sans souci et tout continue jusqu'au prochain échec. Comme je ne scrute pas le truc tout le temps, il s'écoule un temps entre l'arrêt et la reprise d'emerge. Hors, le PC est un HTPC fanless. Du coup, je commence à me dire que c'est tout simplement le bousin qui chauffe trop et plante pour cause de légère surchauffe. Ensuite, comme il est au repos, il se refroidit, puis je le relance donc l'emerge passe sans souci.

D'un autre côté si c'était vraiment ça, lorsque je compile XBMC tout seul ça ne devrait pas planté.

Je fais fausse route selon vous ? Dans tous les cas, je vais essayer de lancer une compilation en foutant un ventilateur dessus ou je sais pas quoi pour refroidir davantage le système pendant ce temps. Et changer MAKEOPTS.

----------

## El_Goretto

Et bien suivant tes priorités, oui, tenter de refroidir le bestiau est une idée. Un coup de memstest ne fera pas de mal non plus.

Tu peux utiliser app-benchmarks/cpuburn pour vérifier l'hypothèse du "ça plante la compile quand il fait chaud".

----------

## StinGer_Uesugi

Oué j'ai déjà fait du memtest parce que le BIOS overcloackait par défaut la machine et je l'avais pas vu. Du coup la machine arrêtait pas de planter et j'ai cru que ça venait de mes barrettes.

J'ai désactiver cette m**** d'overcloacking par défaut et j'ai fait un coup de memtest pour vérifier : tout était OK.

Bon sinon, j'ai installé lm_sensors pour regarder un peu la température : 75°C quand ça tourne...

Je tente de recompiler les dépendances d'XBMC avec un "MAKEOPTS = -j1 -l0.85" histoire d'essayer de limiter l'échauffement (je suis pas physiquement avec la machine donc le ventilo va devoir attendre). (Y a cpulimit aussi mais là avec le -l0.85 ça fait à peu près ce que je veux.) Je regarde la température pour m'assurer que ça chauffe moins aussi.

Je vais voir ce que ça donne, mais j'ai l'impression qu'il faut que je cherche par là.

----------

## StinGer_Uesugi

Voilà, avec un ventilateur ça fonctionne mieux !

Et maintenant les erreurs de compilation sont répétables ! \o/ (J'aurais jamais cru pouvoir être content qu'une compilation échoue...   :Shocked:  )

Bon donc l'erreur (enfin les) :

```
CPP     xbmc/peripherals/devices/PeripheralCecAdapter.o

PeripheralCecAdapter.cpp: In constructor 'PERIPHERALS::CPeripheralCecAdapter::CPeripheralCecAdapter(PERIPHERALS::PeripheralType, PERIPHERALS::PeripheralBusType, const CStdString&, const CStdString&, int, int)':

PeripheralCecAdapter.cpp:84:14: error: 'CEC::cec_device_type_list' has no member named 'clear'

PeripheralCecAdapter.cpp:85:14: error: 'CEC::cec_device_type_list' has no member named 'add'

PeripheralCecAdapter.cpp:91:38: error: 'class CEC::ICECAdapter' has no member named 'GetMinLibVersion'

PeripheralCecAdapter.cpp:94:119: error: 'class CEC::ICECAdapter' has no member named 'GetMinLibVersion'

PeripheralCecAdapter.cpp:97:117: error: 'class CEC::ICECAdapter' has no member named 'GetMinLibVersion'

PeripheralCecAdapter.cpp:106:81: error: 'class CEC::ICECAdapter' has no member named 'GetLibVersionMajor'

PeripheralCecAdapter.cpp:106:117: error: 'class CEC::ICECAdapter' has no member named 'GetLibVersionMinor'

PeripheralCecAdapter.cpp: In member function 'virtual void PERIPHERALS::CPeripheralCecAdapter::Announce(ANNOUNCEMENT::EAnnouncementFlag, const char*, const char*, const CVariant&)':

PeripheralCecAdapter.cpp:176:23: error: 'class CEC::ICECAdapter' has no member named 'SetActiveView'

PeripheralCecAdapter.cpp: In member function 'virtual void PERIPHERALS::CPeripheralCecAdapter::ProcessNextCommand()':

PeripheralCecAdapter.cpp:410:51: error: 'class CEC::ICECAdapter' has no member named 'GetNextCommand'

PeripheralCecAdapter.cpp: In member function 'virtual bool PERIPHERALS::CPeripheralCecAdapter::GetNextCecKey(CEC::cec_keypress&)':

PeripheralCecAdapter.cpp:486:26: error: 'class CEC::ICECAdapter' has no member named 'GetNextKeypress'

PeripheralCecAdapter.cpp: In member function 'virtual void PERIPHERALS::CPeripheralCecAdapter::FlushLog()':

PeripheralCecAdapter.cpp:738:40: error: 'class CEC::ICECAdapter' has no member named 'GetNextLogMessage'

make[1]: *** [PeripheralCecAdapter.o] Error 1

make: *** [xbmc/peripherals/devices/peripheral-devices.a] Error 2

 * ERROR: media-tv/xbmc-11.0 failed (compile phase):

 *   emake failed
```

Bon du coup, j'ai désactivé le use flag CEC et là ça compile nickel. Donc maintenant, ma question : comment que je fais pour activer le CEC ? Bon d'un autre côté, il faudrait que je vérifie que ma télé est bien compatible CEC... Mais tout de même.

----------

