actexec : fork sous win xp

Si vous avez trouvé un bug ou ce que vous pensez être un bug n'hésitez pas à le signaler. Cela permettra sa correction.
Post Reply
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

actexec : fork sous win xp

Post by Michel »

Je lance actexec avec un script en paramètre avec windows XP (sous virtualbox), le processus se termine immédiatement, mais s'exécute quand même correctement, rendant la main à la ligne de commande dès son lancement.

Du coup c'est un peu difficile si on veut enchaîner plusieurs scripts séquentiellement.
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

Bon, j'ai un palliatif en lançant le processus avec un start :-)

Code: Select all

C:\Program Files\Actionaz>start /WAIT actexec.exe  monscript.ascr
Par contre on ne voit pas les options de lancement quand on lance sous windows.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Oui les programmes console sous Windows c'est vraiment pas terrible...

En fait le soucis c'est que ActExec doit être une application graphique et non console car elle peut afficher des fenêtres.
Du coup Windows n'affiche pas la sortie standard des applications graphiques.

Une raison supplémentaire pour passer sur Ubuntu (ou autre GNU/Linux) :D
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

Jmgr wrote:Une raison supplémentaire pour passer sur Ubuntu (ou autre GNU/Linux) :D
Oh mais j'y suis :mrgreen:
l'application que je teste est sous Windows, que je lance sous VirtualBox sur ma Ubuntu 12.04. Du coup on peut conclure que que Actionaz fonctionne très bien avec Virtualbox :)
Qu'est ce qui est utilisé pour la compil sous windows? si j'ai un peu de temps, j'aimerais pouvoir "regarder sous le capot"...
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

La compilation sous Windows se fait avec le compilateur de Microsoft, j'ai beau être un libriste je dois admettre que GCC sous Windows n'est pas vraiment au point : il génère des exécutables plus gros et plus lents...

Pour Windows, les étapes sont :
1) Compiler Qt avec le support du SSL (les versions binaires ne l'activent pas par défaut)
2) Compiler Qt Mobility
3) Compiler Qt Script Generator & générer les scripts & les compiler
4) Compiler les différents plugins (SQL, mediaplayer, etc.)
5) qmake -r && nmake

Il est à noter que les étapes 3 et 4 peuvent être passées, par contre cela va réduire le nombre de fonctionnalités du logiciel.
L'étape 1 dure environ une journée sur un PC moderne.

Le code source est dispo sur GitHub : https://github.com/Jmgr/actionaz
Si tu es motivé voilà la todolist : http://wiki.actionaz.org/doku.php?id=fr:todolist
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

Après quelques jours de lutte, j'en suis à 3)
j'ai une erreur de compil pour qtscriptgenerator

Code: Select all

C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xutility(275) : error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie dro
ite de type 'rpp::pp_output_iterator<_Container>' (ou il n'existe pas de conversion acceptable)
        with
        [
            _Container=std::string
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\parser\rpp\pp-iterator.h(74): peut être 'rpp::pp_output_iterator<_Container> &rpp::pp_outpu
t_iterator<_Container>::operator =(const char &)'
        with
        [
            _Container=std::string
        ]
        lors de la tentative de mise en correspondance de la liste des arguments '(rpp::pp_output_iterator<_Container>, rpp::pp_output_iterator<_Container>)'
        with
        [
            _Container=std::string
        ]
        C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xutility(2176) : voir la référence à l'instanciation de la fonction modèle '_Iter &std::_Rechec
ked<_OutIt,_OutIt>(_Iter &,_UIter)' en cours de compilation
        with
        [
            _Iter=rpp::pp_output_iterator<std::string>,
            _OutIt=rpp::pp_output_iterator<std::string>,
            _UIter=rpp::pp_output_iterator<std::string>
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\parser\rpp\pp-internal.h(83) : voir la référence à l'instanciation de la fonction modèle '_
OutIt std::copy<std::_String_iterator<_Elem,_Traits,_Alloc>,_OutputIterator>(_InIt,_InIt,_OutIt)' en cours de compilation
        with
        [
            _OutIt=rpp::pp_output_iterator<std::string>,
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Alloc=std::allocator<char>,
            _OutputIterator=rpp::pp_output_iterator<std::string>,
            _InIt=std::_String_iterator<char,std::char_traits<char>,std::allocator<char>>
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\parser\rpp\pp-engine-bits.h(500) : voir la référence à l'instanciation de la fonction modèl
e 'void rpp::_PP_internal::output_line<_OutputIterator>(const std::string &,int,_OutputIterator)' en cours de compilation
        with
        [
            _OutputIterator=rpp::pp_output_iterator<std::string>
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\parser\rpp\pp-engine-bits.h(116) : voir la référence à l'instanciation de la fonction modèl
e 'void rpp::pp::operator ()<const _Elem*,_OutputIterator>(_InputIterator,_InputIterator,_OutputIterator)' en cours de compilation
        with
        [
            _Elem=char,
            _OutputIterator=rpp::pp_output_iterator<std::string>,
            _InputIterator=const char *
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\parser\rpp\pp-engine-bits.h(84) : voir la référence à l'instanciation de la fonction modèle
 'void rpp::pp::file<rpp::pp_output_iterator<_Container>>(FILE *,_OutputIterator)' en cours de compilation
        with
        [
            _Container=std::string,
            _OutputIterator=rpp::pp_output_iterator<std::string>
        ]
        c:\devactionaz\qtscriptgenerator\qtscriptgenerator\generator\main.h(130) : voir la référence à l'instanciation de la fonction modèle 'void rpp::pp::file
<rpp::pp_output_iterator<_Container>>(const std::string &,_OutputIterator)' en cours de compilation
        with
        [
            _Container=std::string,
            _OutputIterator=rpp::pp_output_iterator<std::string>
        ]
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xutility(275) : error C2582: 'operator =' fonction non disponible dans 'rpp::pp_output_iterator<_Contai
ner>'
        with
        [
            _Container=std::string
        ]
est-ce que quelqu'un l'a compilé sous windows récemment ?


Ma config :
Win XP 32bits, Visual Studio 2010
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Ah oui j'avais oublié : il faut patcher qtscriptgenerator, voilà le sujet de StackOverflow qui m'a aidé à corriger ce bug : http://stackoverflow.com/questions/2791 ... tudio-2010
Plus précisément :
Just an update.. I've replaced the assignment line with _M_result = __v._M_result;. I think that makes more sense. Still plugging away at it.. – guesser May 8 '10 at 6:18

This fixed my problem -- qtscriptgenerator generated the bindings and it all seems to work. Thank you. I would upvote your answer, but my reputation's too low. .......... To clarify my comments here.. I replaced the _M_result.push_back(*__v._M_result.begin()); in my first comment with _M_result = __v._M_result;. – guesser May 8 '10 at 7:18

Alright, I'm a newb. I found the little check mark and accepted the answer. Thanks again. – guesser May 8 '10 at 19:10

For anyone else trying to build qtscriptgenerator with Visual Studio who stumbles upon this answer.. I will also mention that during the final stage of building the bindings, I had to hack around a couple 0-sized arrays. To get it to build, comment those out, and also comment out the for-loops that reference them (the for loops typically go from 0 to <0.. so there's no effect anyway). – guesser May 8 '10 at 19:20
En fait il y a deux choses à faire, 1) remplacer _M_result.push_back(__v); par _M_result = __v._M_result; (pas certain que la modification soit exactement celle-là; j'ai le code chez moi mais pas ici)
2) Supprimer les tableaux de taille 0 dans le code généré par le qtscriptgenerator une fois compilé
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

Merci, je vais patcher.
Du coup, je me propose pour faire la partie "windows" de ta page compilation sur le wiki, je suis dedans jusqu'au cou !
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Bonne idée, mais à la limite c'est peut-être plus simple de faire une version pour les gens qui veulent juste avoir la dernière version du dépôt.
C'est à dire sans les bindings SQL, sans SSL (donc pas besoin de recompiler Qt) et sans le "qtscriptgenerator".
Peut-être créer un autre chapitre dédié au développeurs avec toutes les fonctionnalités activées.
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »


Pour Windows, les étapes sont :
1) Compiler Qt avec le support du SSL (les versions binaires ne l'activent pas par défaut)
2) Compiler Qt Mobility
3) Compiler Qt Script Generator & générer les scripts & les compiler
4) Compiler les différents plugins (SQL, mediaplayer, etc.)
5) qmake -r && nmake
Je pense qu'il manque OpenCV dans la liste des dépendances. Je l'ai ramené et compilé, par contre, je ne vois pas où je peux dire à Actionaz où il peut trouver les librairies et les .h, à moins d'aller modifier à la main les Makefile.

Est-ce qu'il y a un autre moyen de le faire ?
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Oui, c'est au moment de l'appel de qmake qu'on peut le passer en paramètre.
Par exemple chez moi c'est :

Code: Select all

qmake -r -spec win32-msvc2010 "CONFIG+=release" "BOOST_INCLUDE=$BOOST_INCLUDE" "OPENCV_INCLUDE=$OPENCV_INCLUDE" "OPENCV_LIB=$OPENCV_LIB" "OPENCV_LIB_CORE=$OPENCV_LIB_CORE" "OPENCV_LIB_IMGPROC=$OPENCV_LIB_IMGPROC"
Avec

Code: Select all

BOOST_INCLUDE="F:/libs/boost_1_49_0"
OPENCV_INCLUDE="F:/libs/opencv/build/include"
OPENCV32_LIB="F:/libs/opencv/build/x86/vc10/lib"
OPENCV64_LIB="F:/libs/opencv/build/x64/vc10/lib"
OPENCV_LIB_CORE="opencv_core231"
OPENCV_LIB_IMGPROC="opencv_imgproc231"
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

j'ai une erreur de compilation sur readregistryinstance.cpp :

Code: Select all

  readregistryinstance.cpp
actions\readregistryinstance.cpp(63): error C2664: 'ActionTools::ActionInstance::setVariable' : impossible de convertir le paramètre 2 de 'QVariant' en 'const QScriptValue &'
          Raison : impossible de convertir de 'QVariant' en 'const QScriptValue'
          Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
la ligne en question est :

Code: Select all

setVariable(variable, resultValue);
Ça semble être lié à ce commit d'il y a 2 jours :
https://github.com/Jmgr/actionaz/commit ... cee945fa85
j'ai essayer de corriger, mais pour le moment, je ne vois pas comment faire rentrer un QVariant dans un QScriptValue ... :-(
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Ah, oui, c'est toujours le problème quand on développe sur un OS : penser à tester sur les autres...
Solution temporaire, ajouter

Code: Select all

#include <QScriptEngine>
au début et remplacer

Code: Select all

setVariable(variable, resultValue);
par

Code: Select all

setVariable(variable, scriptEngine()->newVariant(resultValue));
"My software never has bugs. It just develops random features."
Michel
Posts: 20
Joined: 18 Oct 2012, 10:32

Re: actexec : fork sous win xp

Post by Michel »

j'ai un nouveau problème que je n'arrive pas à résoudre dans mon long chemin vers la compilation... décidément !

dans le répertoire gui, j'ai un problème d'édition de lien :

Code: Select all

link /LIBPATH:"c:\DevActionaz\qt-everywhere-opensource-src-4.8.4\lib" /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /MANIFEST /MANIFESTFILE:"generated\actionaz.
intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b6414
4ccf1df' language='*' processorArchitecture='*'" /VERSION:3.50 /OUT:..\actionaz.exe @C:\DOCUME~1\ADMINI~1.0AC\LOCALS~1\Temp\nm3A3.tmp
main.obj : error LNK2019: symbole externe non résolu "public: void __thiscall QtSingleApplication::setActivationWindow(class QWidget *,bool)" (?setActivationWin
dow@QtSingleApplication@@QAEXPAVQWidget@@_N@Z) référencé dans la fonction _main
main.obj : error LNK2019: symbole externe non résolu "public: bool __thiscall QtSingleApplication::sendMessage(class QString const &,int)" (?sendMessage@QtSingl
eApplication@@QAE_NABVQString@@H@Z) référencé dans la fonction _main
..\actionaz.exe : fatal error LNK1120: 2 externes non résolus
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\link.EXE"' : code retour '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"' : code retour '0x2'
j'en comprend qu'il me manque QtSingleApplication, que je retrouve dans actiontools\qtsingleapplication, mais je ne vois pas pourquoi le problème apparaît maintenant.

une idée ? ...
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: actexec : fork sous win xp

Post by Jmgr »

Désolé de la réponse tardive, je n'étais pas chez moi et sans connection à Internet.

Hm, dans ce cas je tenterais d'exécuter à nouveau qmake -r et de recompiler tout le projet.
"My software never has bugs. It just develops random features."
Post Reply