Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Compilation sur Debian
#1
Salut,

Comme certains le savent, j'ai installé Debian sur mon Mele A2000G, en version stable.

J'y ai compilé les paquets pour Enlightenment (en utilisant les sources provenant d'unstable), ça m'a pris de longues heures.

Je tente maintenant de compiler calaos_base. Sur l'issue que j'avais ouvert sur GitHub (https://github.com/calaos/calaos_base/issues/25), naguirre/captainigloo a indiqué qu'avec GCC 4.7 ça pose problème. En effet, ça pose problème.

J'ai déjà patché de la manière suivante :

Code:
diff --git a/src/bin/calaos_server/JsonApiClient.cpp b/src/bin/calaos_server/JsonApiClient.cpp
index ef70fc8..aac7586 100644
--- a/src/bin/calaos_server/JsonApiClient.cpp
+++ b/src/bin/calaos_server/JsonApiClient.cpp
@@ -173,6 +173,11 @@ JsonApiClient::JsonApiClient(Ecore_Con_Client *cl):
         http_parser_init(parser, HTTP_REQUEST);
         parser->data = this;

+        // moved initialization to the constructor
+        parse_done = false;
+        has_field = false;
+        has_value = false;
+
         Utils::logger("network") << Priority::DEBUG << "JsonApiClient::JsonApiClient("
                                  << this << "): Ok" << log4cpp::eol;
}
diff --git a/src/bin/calaos_server/JsonApiClient.h b/src/bin/calaos_server/JsonApiClient.h
index 6f4544e..eb58adb 100644
--- a/src/bin/calaos_server/JsonApiClient.h
+++ b/src/bin/calaos_server/JsonApiClient.h
@@ -45,7 +45,7 @@ using namespace Calaos;
                         http_parser_settings parser_settings;
                         http_parser *parser;

-                        bool parse_done = false;
+                        bool parse_done;
                         unsigned char request_method;
                         unordered_map<string, string> request_headers;

@@ -58,7 +58,7 @@ using namespace Calaos;
                         void CloseConnection();

                         //for parsing purposes
-                        bool has_field = false, has_value = false;
+                        bool has_field, has_value;
                         string hfield, hvalue;
                         string bodymessage;
                         string parse_url;

J'espère n'avoir pas fait de connerie, vu que je n'ai jamais fait de C++ je n'ai aucune certitude.

Je rencontre maintenant l'erreur suivante, que je ne sais pas "corriger". Quelqu'un pourrait me guider ?

Code:
JsonApiClient.cpp: In member function ‘json_t* JsonApiClient::buildJsonRoomIO(Calaos::Room*) [with T = Calaos::Input, json_t = json_t]’:
JsonApiClient.cpp:463:81:   instantiated from here
JsonApiClient.cpp:407:22: error: no matching function for call to ‘Calaos::Room::get_size()’
JsonApiClient.cpp:407:22: note: candidates are:
./Room.h:78:21: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Input*>::value, void>::type* <anonymous> > int Calaos::Room::get_size()
./Room.h:82:21: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Output*>::value, void>::type* <anonymous> > int Calaos::Room::get_size()
JsonApiClient.cpp:410:44: error: no matching function for call to ‘Calaos::Room::get_io(int&)’
JsonApiClient.cpp:410:44: note: candidates are:
./Room.h:86:19: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Input*>::value, void>::type* <anonymous> > T Calaos::Room::get_io(int)
./Room.h:90:19: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Output*>::value, void>::type* <anonymous> > T Calaos::Room::get_io(int)
JsonApiClient.cpp: In member function ‘json_t* JsonApiClient::buildJsonRoomIO(Calaos::Room*) [with T = Calaos::Output, json_t = json_t]’:
JsonApiClient.cpp:464:83:   instantiated from here
JsonApiClient.cpp:407:22: error: no matching function for call to ‘Calaos::Room::get_size()’
JsonApiClient.cpp:407:22: note: candidates are:
./Room.h:78:21: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Input*>::value, void>::type* <anonymous> > int Calaos::Room::get_size()
./Room.h:82:21: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Output*>::value, void>::type* <anonymous> > int Calaos::Room::get_size()
JsonApiClient.cpp:410:44: error: no matching function for call to ‘Calaos::Room::get_io(int&)’
JsonApiClient.cpp:410:44: note: candidates are:
./Room.h:86:19: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Input*>::value, void>::type* <anonymous> > T Calaos::Room::get_io(int)
./Room.h:90:19: note: template<class T, typename std::enable_if<std::is_same<T, Calaos::Output*>::value, void>::type* <anonymous> > T Calaos::Room::get_io(int)
Sébastien Maccagnoni-Munch - Maison en autorénovation, on ne garde que les murs
Automate Wago 750-849 (mais pas de KNX), centrale Beaglebone Black, Calaos 2.0, détecteurs de mouvement HC-SR501, éclairage LED, gradation DALI
Sonorisation Squeezebox avec Raspberry Pi (piCorePlayer), Kia Soul EV en charge toutes les nuits...
Reply
#2
Salut,

Oula... Compiler direct sur la mele.... Aouch... ca doit prendre des plombes :p

Par contre j'ai une mauvaise nouvelle, tu ne pourras pas compiler avec gcc plus vieux que 4.8. Meme en changant le code, il y a trop de code dépendant des nouvelles fonctions du C++11, et celles-ci ne sont que supportés a partir de gcc 4.8

Désolé...

Tu as meilleurs temps d'utiliser Calaos-OS, et de le compiler toi meme si tu veux un truc spécifique.
Raoul,
Calaos Core Dev.
Calaos git sur NUC NUC5PPYH | Wago 750-849 | DALI RGB | Sondes NTC sur 750-464 | Sondes 1Wire DS18B20 avec adaptateur USB DS9490R | Nodes MySensors avec gateway USB | Ecran tactile ELO avec adaptateur USB/RS232 | Squeezebox Duet et Radio | Logitech Harmony Ultimate | Ampli Pioneer VSX921
Reply
#3
À tout hasard, est-ce que je peux tenter compiler Calaos avec GCC 4.8 alors que les libs ont été compilées avec GCC 4.7 ou alors ça ne marchera pas ?
(je suis un peu largué sur ces aspects, au fond de ma mémoire il y a des trucs comme quoi il faut que soft et libs aient été compilés avec le même compilateur mais je ne sais pas ce qu'il en est en réalité)

C'est basé sur quoi, Calaos-OS ?
Je veux que mon Mele ne fasse pas que serveur domotique, je souhaite pouvoir le gérer comme n'importe lequel de mes serveurs, y installer d'autres services, etc... c'est pourquoi je me suis tourné vers Debian.
Sébastien Maccagnoni-Munch - Maison en autorénovation, on ne garde que les murs
Automate Wago 750-849 (mais pas de KNX), centrale Beaglebone Black, Calaos 2.0, détecteurs de mouvement HC-SR501, éclairage LED, gradation DALI
Sonorisation Squeezebox avec Raspberry Pi (piCorePlayer), Kia Soul EV en charge toutes les nuits...
Reply
#4
@tiramiseb, cf ma reponse sur github Wink

Calaos os c'est basé sur openembedded. Ce qu'il faut voir c'est que la mele c'est une carte embarqué. Il faut un os optimisé pour, pour pouvoir en tirer le meilleur parti. Ce que debian ne peut pas faire, c'est une distro generaliste pour du serveur et des machines de type PC...

Il faut aussi garder a l'esprit qu'une mele ne fera pas tourner pleins de service en parallele. C'est un tout petit CPU avec peu de ressources... Ce qu'il faut pour calaos.
Raoul,
Calaos Core Dev.
Calaos git sur NUC NUC5PPYH | Wago 750-849 | DALI RGB | Sondes NTC sur 750-464 | Sondes 1Wire DS18B20 avec adaptateur USB DS9490R | Nodes MySensors avec gateway USB | Ecran tactile ELO avec adaptateur USB/RS232 | Squeezebox Duet et Radio | Logitech Harmony Ultimate | Ampli Pioneer VSX921
Reply
#5
Quote:Il faut aussi garder a l'esprit qu'une mele ne fera pas tourner pleins de service en parallele. C'est un tout petit CPU avec peu de ressources...

Mon Zaurus faisait tourner plusieurs services en parallèle, et il était largement moins puissant que ne l'est un Mele Smile




Je suis quand même tenté d'essayer de passer sur Jessie... sauf si tu peux me dire que ça ne vaut pas le coup.
J'aime bien l'idée d'avoir la même distro partout...

Et puis si ça ne marche pas, bah OpenEmbedded me rappellera des souvenirs, après tout c'est sur OpenZaurus que j'avais fait tourner "plusieurs services en parallèle"... Big Grin
Sébastien Maccagnoni-Munch - Maison en autorénovation, on ne garde que les murs
Automate Wago 750-849 (mais pas de KNX), centrale Beaglebone Black, Calaos 2.0, détecteurs de mouvement HC-SR501, éclairage LED, gradation DALI
Sonorisation Squeezebox avec Raspberry Pi (piCorePlayer), Kia Soul EV en charge toutes les nuits...
Reply
#6
Pour info, j'ai décidé de me simplifier la vie, je vais installer Calaos OS et donc (ré)utiliser OpenEmbedded Smile

Tant pis pour la compilation sur Debian...
Sébastien Maccagnoni-Munch - Maison en autorénovation, on ne garde que les murs
Automate Wago 750-849 (mais pas de KNX), centrale Beaglebone Black, Calaos 2.0, détecteurs de mouvement HC-SR501, éclairage LED, gradation DALI
Sonorisation Squeezebox avec Raspberry Pi (piCorePlayer), Kia Soul EV en charge toutes les nuits...
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)