Packaging

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur : Développeurs

Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
Messages : 1130
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Packaging

Message par Jérôme » 28 avr. 2013, 18:10

Arnaud a écrit :Problème apparemment réglé : cela fonctionne sous firefox, mais pas sous chrome chez moi, alors que d'après le code source, il n'y a aucune raison.
Merci Arnaud. Le bouton preview ne fonctionne toujours pas je crois. Je n'ai jamais réussi à le faire fonctionner depuis que la partie admin est passée en https. Tu n'aurais pas une idée par hasard ?
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 28 avr. 2013, 18:55

Yves a écrit :Sur mon environnement, en essayant de compiler lxml avec tes indications, j'obtiens l'erreur suivante:
RuntimeError: ERROR: Trying to build without Cython, but pre-generated 'src/lxml/lxml.etree.c' is not available (pass --without-cython to ignore this error).
Oui, ça m'a fait la même chose (désolé, j'ai oublié entre-temps); il faut installer Cython:

Code : Tout sélectionner

$ pip install "Cython>=0.18"
Au cas où j'ai oublié une autre étape, la doc est là.
Vas-y étape par étape, ça va marcher. :)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 28 avr. 2013, 20:28

OK, j'ai installé Cython, mais sur mon environnement avec python 2.7.4 (x86-64/i386 ou bien i386/PPC), la compilation avec tes indications, aboutit quand même à des librairies 64 bits:
ld: warning: in /Users/administrateur/lxml/build/tmp/libxml2/lib/libexslt.a, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Users/administrateur/lxml/build/tmp/libxml2/lib/libiconv.a, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Users/administrateur/lxml/build/tmp/libxml2/lib/libxml2.a, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Users/administrateur/lxml/build/tmp/libxml2/lib/libxslt.a, file was built for unsupported file format which is not the architecture being linked (i386)

Avatar de l’utilisateur
Arnaud
Critique officiel de pyromaths
Messages : 609
Inscription : 26 août 2006, 21:49
Localisation : Allemagne
Contact :

Re: Packaging

Message par Arnaud » 28 avr. 2013, 20:36

Jérôme a écrit :Le bouton preview ne fonctionne toujours pas je crois. Je n'ai jamais réussi à le faire fonctionner depuis que la partie admin est passée en https. Tu n'aurais pas une idée par hasard ?
C'est réparé : il manquait une condition pour la réécriture d'url https dans la config apache.

Pour le reste, problème réglé pour chrome aussi, donc tout devrait être revenu à la normale.

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 29 avr. 2013, 09:25

Yves a écrit :OK, j'ai installé Cython, mais sur mon environnement avec python 2.7.4 (x86-64/i386 ou bien i386/PPC), la compilation avec tes indications, aboutit quand même à des librairies 64 bits:
Autant pour moi: il n'y a pas de point-virgule entre env et python setup.py build, autrement l'environnement créé n'est pas utilisé. Il fallait lire:

Code : Tout sélectionner

$ pip install "Cython>=0.18"
$ git clone git://github.com/lxml/lxml.git
$ cd lxml
$ env CFLAGS=-m32 CXXFLAGS=-m32 python setup.py build --static-deps
$ sudo python setup.py install
Bien entendu, l'alternative à env c'est d'exporter définitivement ces variables d'environnement pour tout le shell:

Code : Tout sélectionner

$ export CFLAGS=-m32 CXXFLAGS=-m32
$ python setup.py build --static-deps
Le plus sûr au point où tu en es c'est de faire tabula rasa et recommencer, avec:

Code : Tout sélectionner

$ rm -rf libs/* build/*
$ python setup.py clean
$ env CFLAGS=-m32 CXXFLAGS=-m32 python setup.py build --static-deps
Dernière modification par djinn le 30 avr. 2013, 08:47, modifié 3 fois.

Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
Messages : 1130
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Packaging

Message par Jérôme » 29 avr. 2013, 19:14

Arnaud a écrit :
Jérôme a écrit :Le bouton preview ne fonctionne toujours pas je crois. Je n'ai jamais réussi à le faire fonctionner depuis que la partie admin est passée en https. Tu n'aurais pas une idée par hasard ?
C'est réparé : il manquait une condition pour la réécriture d'url https dans la config apache.
Alors là, je suis impressionné ! Merci Arnaud. :)
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 29 avr. 2013, 23:09

djinn a écrit :Autant pour moi: il n'y a pas de point-virgule entre env et python setup.py build
Avec tes dernières indications, j'obtiens bien une version de pyromaths i386 avec lxml compilé statiquement qui fonctionne sur OS X 10.6, 10.7 et 10.8 (mais pas sur 10.5) avec python-2.7.4-macosx10.6 ou python-2.7.4-macosx10.3 ou encore python-2.6.6-macosx10.3.

Pour info, voici les messages d'erreurs sur OS X 10.5 et python-2.7.4-macosx10.3:
$ /Users/administrateur/Desktop/Pyromaths.app/Contents/MacOS/pyromaths ; exit;
Traceback (most recent call last):
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/__boot__.py", line 316, in <module>
    _run()
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/__boot__.py", line 311, in _run
    exec(compile(source, path, 'exec'), globals(), globals())
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/pyromaths.py", line 2, in <module>
    pyromaths.main()
  File "pyromaths/pyromaths.pyc", line 33, in main
  File "pyromaths/outils/System.pyc", line 25, in <module>
  File "lxml/etree.pyc", line 14, in <module>
  File "lxml/etree.pyc", line 10, in __load
ImportError: dlopen(/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/lib/python2.7/lib-dynload/lxml/etree.so, 2): Symbol not found: _fopen$UNIX2003
  Referenced from: /Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/lib/python2.7/lib-dynload/lxml/etree.so
  Expected in: dynamic lookup
et aussi:
$ /Users/administrateur/Desktop/Pyromaths.app/Contents/MacOS/python ; exit;
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site
logout
et voici les messages d'erreurs sur OS X 10.5 et python-2.6.6-macosx10.3:
$ /Users/administrateur/Desktop/Pyromaths.app/Contents/MacOS/pyromaths ; exit;
Traceback (most recent call last):
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/__boot__.py", line 316, in <module>
    _run()
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/__boot__.py", line 311, in _run
    exec(compile(source, path, 'exec'), globals(), globals())
  File "/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/pyromaths.py", line 2, in <module>
    pyromaths.main()
  File "pyromaths/pyromaths.pyc", line 37, in main
  File "pyromaths/interface.pyc", line 23, in <module>
  File "PyQt4/QtGui.pyc", line 14, in <module>
  File "PyQt4/QtGui.pyc", line 10, in __load
ImportError: dlopen(/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/lib/python2.6/lib-dynload/PyQt4/QtGui.so, 2): no suitable image found.  Did find:
	/Users/administrateur/Desktop/Pyromaths.app/Contents/Resources/lib/python2.6/lib-dynload/PyQt4/QtGui.so: unknown required load command 0x80000022
2013-04-29 22:44:41.085 pyromaths[740:10b] Pyromaths Error
logout
et aussi:
$ /Users/administrateur/Desktop/Pyromaths.app/Contents/MacOS/python ; exit;
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Python 2.6.6 (r266:84374, Aug 31 2010, 11:00:51) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Mais, je le redis, cibler uniquement OS X 10.6, 10.7 et 10.8 ne me pose pas de problème ;)

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 30 avr. 2013, 07:19

Yves a écrit :Mais, je le redis, cibler uniquement OS X 10.6, 10.7 et 10.8 ne me pose pas de problème ;)
Adjugé! :)
Passons à la suite…

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 30 avr. 2013, 08:52

Suite à mes dernières installations, deux remarques:
  • py2app ne génère plus de fichiers debugs inutiles (peut-être, parce que j'ai installé py2app après PyQt) 8-)
  • py2app fonctionne correctement sans l'installation des setuptools-git ;)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 30 avr. 2013, 13:48

Suite aux avancées de djinn, j'ai écrit un nouvel article qui explique comment installer un environnement de développement sur OS X 10.8 et créer Pyromaths.app.
djinn a écrit :Passons à la suite…
Il y aura certainement des modifications à apporter à cet article ;)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 30 avr. 2013, 18:07

djinn a écrit :
Yves a écrit :Mais, je le redis, cibler uniquement OS X 10.6, 10.7 et 10.8 ne me pose pas de problème ;)
Adjugé! :)
Passons à la suite…
Si on cible OS X 10.6 et ultérieurs, on pourrait plutôt proposer une version 64 bits de Pyromaths, comme le conseille cet article:
Prior to OS X v10.6, all applications that shipped with the operating system were 32-bit applications. Beginning in v10.6, applications that ship with the operating system are generally 64-bit applications.

This means that in v10.5 and previous, the first third-party 64-bit application that a user runs causes the entire 64-bit framework stack to be brought into memory, resulting in a launch performance penalty and significant memory overhead.

Similarly, in v10.6 and later, the first non-64-bit-capable application pays a performance and memory footprint penalty because OS X must bring in the entire 32-bit framework stack. Thus, if you are primarily targeting OS X v10.6 and later, you should be 64-bit if at all possible.
J'ai adapté la documentation pour compiler en utilisant une architecture 64 bits :) .
Yves a écrit :py2app ne génère plus de fichiers debugs inutiles
Je me suis réjoui un peu vite, ils sont de retour ! :o

Le fichier qt.conf ne peut pas être éliminé sinon Pyromaths.app plante:
On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
QObject::moveToThread: Current thread (0x104e7a680) is not the object's thread (0x104f535f0).
Cannot move to target thread (0x104e7a680)
J'ai trouvé un fichier supplémentaire qu'on peut éliminer sans affecter le fonctionnement de l'application ;) :
Pyromaths.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/Qt.so

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 30 avr. 2013, 18:21

Bien joué. :)
Je suppose qu'on enlève l'option arch=i386 de setup.py du coup?
Au fait, est-ce que tu as "commité" quelque chose sur develop depuis qu'on a commencé à travailler sur le packaging mac?

J'ai deux suggestions pour la page tutoriel:
  1. Les liens "téléchargement" pointent vers l'entrée des sites en questions. Je me souviens que, lorsque j'ai suivi ce tuto, il m'est arrivé de galérer pour trouver la page download sur des sites que je ne connaissais pas. Surtout pour Qt, qui se trouve en fait sur un autre site dédié au projet open-source: qt-project.org; et la version que nous utilisons ne se trouve même pas sur la page download mais un lien plus loin, sur la page archives; Si j'ai bien compté, dans le meilleur des cas le fichier est à 6 clics du tuto :P . Et si on mettait des liens plus directs? Vers la page download considérée, voire vers le fichier que l'on doit ultimement télécharger?
  2. Et si on maintenait un script qui permette d'installer toutes ces dépendances, histoire de pouvoir créer un environnement de développement (sur une machine virtuelle par exemple) à moindre effort?
Dernière modification par djinn le 30 avr. 2013, 18:28, modifié 1 fois.

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 30 avr. 2013, 18:27

Yves a écrit :Le fichier qt.conf ne peut pas être éliminé sinon Pyromaths.app plante:
On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
QObject::moveToThread: Current thread (0x104e7a680) is not the object's thread (0x104f535f0).
Cannot move to target thread (0x104e7a680)
Étrange… :|
Est-ce que tu pourrais m'expliquer comment reproduire ce bug?
Yves a écrit :J'ai trouvé un fichier supplémentaire qu'on peut éliminer sans affecter le fonctionnement de l'application ;) :
Pyromaths.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/Qt.so
On va finir par t'appeler le nettoyeur! ;)

Avatar de l’utilisateur
Yves
Messages : 472
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 30 avr. 2013, 23:15

djinn a écrit :Je suppose qu'on enlève l'option arch=i386 de setup.py du coup?
On peut la remplacer par arch=x86_64. Mais est-ce vraiment utile car la commande ditto est quand même nécessaire pour éliminer les fichiers 32 bits superflus laissées par py2app ?
djinn a écrit :Au fait, est-ce que tu as "commité" quelque chose sur develop depuis qu'on a commencé à travailler sur le packaging mac?
J'ai commité setup.py au début de nos échanges, mais depuis il y a eu pas mal d'évolutions :) .
djinn a écrit :Les liens "téléchargement" pointent vers l'entrée des sites en questions
Je me suis posé la question avant de rédiger les articles et j'ai trouvé que c'était la solution la plus pérenne. Sur le tuto écrit il y a trois ans, un seul lien était mort. Alors, bien sûr, quelques clics supplémentaires sont nécessaires mais l'article est dédié à des développeurs et je ne pense pas que ce soit un obstacle insurmontable pour eux. J'ai également pensé à un script, mais les liens changent souvent et maintenir un tel script demanderait trop d'efforts par rapport aux facilités qu'il procurerait.
djinn a écrit :Étrange… :|
Est-ce que tu pourrais m'expliquer comment reproduire ce bug?
Peut-être en suivant la procédure décrite dans mon article:?

Avatar de l’utilisateur
djinn
Messages : 183
Inscription : 03 mars 2013, 10:38

Re: Packaging

Message par djinn » 01 mai 2013, 01:11

Yves a écrit :On peut la remplacer par arch=x86_64. Mais est-ce vraiment utile car la commande ditto est quand même nécessaire pour éliminer les fichiers 32 bits superflus laissées par py2app ?
Je n'ai pas trouvé de doc dessus, et je n'ai pas eu le courage d'aller voir dans le code: est-ce que tu as compris ce que fait exactement l'option arch de py2app?
Yves a écrit :
djinn a écrit :Est-ce que tu pourrais m'expliquer comment reproduire ce bug?
Peut-être en suivant la procédure décrite dans mon article:?
Je pose la question parce que j'ai effacé qt.conf il y a une bonne semaine; autrement dit, pendant quasiment toute notre exploration py2appesque je n'avais pas de qt.conf et je n'ai, à ce jour, jamais croisé ce bug (ni un fichier debug d'ailleurs).
À part la version différente d'OSX et le fait que tu utilises Xcode et moi non, je n'ai pas l'impression que nos environnements soient si différents. Or, comme je ne compte installer ni l'un ni l'autre… ;-)

Répondre