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 : 1120
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Packaging

Message par Jérôme » 20 mai 2013, 10:29

Ah oui, :) Merci Yves
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 » 20 mai 2013, 11:30

Merge effectué. :)

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

Re: Packaging

Message par djinn » 20 mai 2013, 11:38

Jérôme a écrit :il me semble qu'il y avait un soucis avec la création du RPM. As-tu regardé ce que ça donnait ?
La création de RPM devrait être ok, comme indiqué précédemment (reste à voir leur installation), par contre nous n'avons pas pu tester sous Windows (make exe). De plus, le code a l'air assez spécifique à ta machine…
Au besoin, on corrigera au fur et à mesure.

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

Re: Packaging

Message par Yves » 20 mai 2013, 11:42

Dans la version 13.03, le menu était en français sur OS X. Le problème de traduction est apparu suite à la mise à jour de l'environnement de développement. Finalement, seule la traduction des boîtes de dialogue est améliorée. J'ai adapté NEWS en conséquence.

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

Re: Packaging

Message par djinn » 20 mai 2013, 11:46

Bien reçu.

jbreizh
Messages : 51
Inscription : 14 déc. 2012, 22:46

Re: Packaging

Message par jbreizh » 07 févr. 2014, 00:29

hello,
juste pour signaler que sur la doc de py2exe, il y a une fonction bien pratique pour gérer data_files sur cette pagehttp://www.py2exe.org/index.cgi/data_files.
Juste pour illustrer l'intérêt de cette fonction, je vous montre mon setup.py avant et après (a peu de chose près vu que j'ai un peu changer l'arborescence entre temps):
avant:

Code : Tout sélectionner

from distutils.core import setup
import glob
from actimaths.values import VERSION, DESCRIPTION, LICENSE, COPYRIGHTS, MAIL, WEBSITE

setup(name = "actimaths",
    version = VERSION,
    description = DESCRIPTION,
    license = LICENSE,
    author = COPYRIGHTS,
    author_email = MAIL,
    url = WEBSITE,
    package_dir={'actimaths':'actimaths'},
packages=['actimaths','actimaths.exercices_actimaths','actimaths.exercices_actimaths.outils','actimaths.exercices_actimaths.classes','actimaths.exercices_pyromaths','actimaths.exercices_pyromaths.outils','actimaths.exercices_pyromaths.classes'],
    data_files=[
        (r'share/applications', [r'data/linux/actimaths.desktop']),
        (r'share/actimaths/images', [r'data/images/actimaths.ico',r'data/images/actimaths.png', r'data/images/whatsthis.png']),
        (r'share/actimaths/images/vignettes', glob.glob(r'data/images/vignettes/*.png')),
        (r'share/actimaths/packages', glob.glob(r'data/packages/*')),  
        (r'share/actimaths/actimaths/modeles/page/BiColonneIdentique', glob.glob(r'data/actimaths/modeles/page/BiColonneIdentique/*.tex')),
        (r'share/actimaths/actimaths/modeles/page/BiColonneInverse', glob.glob(r'data/actimaths/modeles/page/BiColonneInverse/*.tex')),
        (r'share/actimaths/actimaths/modeles/page/MonoColonne', glob.glob(r'data/actimaths/modeles/page/MonoColonne/*.tex')),
        (r'share/actimaths/actimaths/modeles/page/Test', glob.glob(r'data/actimaths/modeles/page/Test/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/BiColonneIdentique', glob.glob(r'data/actimaths/modeles/presentation/BiColonneIdentique/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/BiColonneIdentiqueCompteur', glob.glob(r'data/actimaths/modeles/presentation/BiColonneIdentiqueCompteur/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/BiColonneInverse', glob.glob(r'data/actimaths/modeles/presentation/BiColonneInverse/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/BiColonneInverseCompteur', glob.glob(r'data/actimaths/modeles/presentation/BiColonneInverseCompteur/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/MonoColonne', glob.glob(r'data/actimaths/modeles/presentation/MonoColonne/*.tex')),
        (r'share/actimaths/actimaths/modeles/presentation/MonoColonneCompteur', glob.glob(r'data/actimaths/modeles/presentation/MonoColonneCompteur/*.tex')),
       (r'share/actimaths/actimaths/onglets', glob.glob(r'data/actimaths/onglets/*.xml')),
        (r'share/actimaths/pyromaths/modeles/page/TriColonne', glob.glob(r'data/pyromaths/modeles/page/TriColonne/*.tex')),
        (r'share/actimaths/pyromaths/modeles/page/BiColonne', glob.glob(r'data/pyromaths/modeles/page/BiColonne/*.tex')),
        (r'share/actimaths/pyromaths/modeles/page/MonoColonne', glob.glob(r'data/pyromaths/modeles/page/MonoColonne/*.tex')),
        (r'share/actimaths/pyromaths/modeles/presentation/Vignette',glob.glob(r'data/pyromaths/modeles/presentation/Vignette/*.tex')),
        (r'share/actimaths/pyromaths/onglets', glob.glob(r'data/pyromaths/onglets/*.xml')),
         ],
    scripts = ["actimaths-gui"],
    platforms = ['unix'],
    long_description = DESCRIPTION
    )
après:

Code : Tout sélectionner

from distutils.core import setup
import glob, os
from actimaths.values import VERSION, DESCRIPTION, LICENSE, COPYRIGHTS, MAIL, WEBSITE

def find_data_files(source,target,patterns):
    if glob.has_magic(source) or glob.has_magic(target):
        raise ValueError("Magic not allowed in src, target")
    ret = {}
    for pattern in patterns:
        pattern = os.path.join(source,pattern)
        for filename in glob.glob(pattern):
            if os.path.isfile(filename):
                targetpath = os.path.join(target,os.path.relpath(filename,source))
                path = os.path.dirname(targetpath)
                ret.setdefault(path,[]).append(filename)
    return sorted(ret.items())

setup(name = "actimaths",
    version = VERSION,
    description = DESCRIPTION,
    license = LICENSE,
    author = COPYRIGHTS,
    author_email = MAIL,
    url = WEBSITE,
    packages=['actimaths',
              'actimaths.exercices_actimaths','actimaths.exercices_actimaths.outils',
              'actimaths.exercices_pyromaths','actimaths.exercices_pyromaths.outils'],
    data_files = [(r'share/applications', [r'data/actimaths.desktop'])] + find_data_files('data','share/actimaths/',["*/*","*/*/*","*/*/*/*","*/*/*/*/*"]),     
    scripts = ["actimaths-gui"],
    platforms = ['unix'],
    long_description = DESCRIPTION
    )
C'est quand même moins dégueulasse ;)

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

Re: Packaging

Message par Jérôme » 17 mai 2014, 19:30

Bonjour,
j'ai bossé sur Pyromaths (si, si) et je voudrais sortir une version 14.05. J'y ai intégré la formidable api exercice de Djinn. C'est vraiment un vrai plaisir que de faire de nouveaux exercices. Merci.
Par contre, je ne parviens pas à créer le binaire Windows. Si tu pouvais m'indiquer comment m'y prendre, ce serait sympa. Sinon, il va falloir que je prenne le temps de comprendre ce que tu as fait.
À bientôt.
jérôme
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 : 465
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 21 mai 2014, 00:13

Salut Jérôme,

Sur Mac, je suis parvenu à créer l'application, version 14.05 (voir le sujet API Exercice)

Cependant, un bug est apparu. Sur OS X 10.9, le nom par défaut du fichier est toujours Untitled quelque soit le nom enregistré dans les préférences. Le problème n'est pas présent sur Mac OS X 10.6.
Une idée pour forcer Pyromaths.app à utiliser le nom de fichier défini dans pyromaths.xml ?

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

Re: Packaging

Message par Jérôme » 21 mai 2014, 13:21

Bonjour Yves,
merci pour ton implication fidèle. Je n'ai malheureusement pas d'idée pour l'instant. C'est très étonnant que ça fonctionne sur une version mais pas sur l'autre. À moins que ce ne soit la version de PyQT qui ait changé, et qu'il y ait une modification à faire dans le code.
Actuellement, je suis en train de travailler sur une machine virtuelle afin de passer à Debian Wheezy sur le serveur. Je dois adapter le site, qui tourne sous Django, afin qu'il soit compatible avec la nouvelle version. Et je dois adapter Pyromaths en ligne, pour qu'il soit compatible avec la nouvelle API. Quand ce sera fini, je m'occuperai de nouveau du packaging.
À plus tard.
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 : 465
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 21 mai 2014, 13:46

Jérôme a écrit :À moins que ce ne soit la version de PyQT qui ait changé, et qu'il y ait une modification à faire dans le code
Oui, la version de PyQt a changé par rapport à celle utilisée pour Pyromaths 13.03. Tout mon environnement de développement a été mis à jour pour être en mesure de réaliser le packaging avec la nouvelle arborescence. L'application a été réalisée avec les dernières versions disponibles, Qt 4.8.6 et PyQt 4.10.4.

Quand tu auras achevé l'upgrade vers Debian Wheezy, je suis preneur de toutes les suggestions pour les modifications à apporter dans le code pour corriger ce soucis de nom de fichier.

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

Re: Packaging

Message par Jérôme » 21 mai 2014, 13:59

OK. Je regarderai ça de plus prêt à ce moment là.
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 : 465
Inscription : 21 janv. 2009, 20:40
Contact :

Re: Packaging

Message par Yves » 21 mai 2014, 14:05

Merci et bon courage pour la mise à jour du serveur et l'adaptation de Pyromaths en ligne.

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

Re: Packaging

Message par Yves » 21 mai 2014, 23:02

Voici quelques précisions sur le problème de nom de fichier par défaut:

Pyromaths 14.05, compilée sur OS X 10.9, présente le bug relatif au nom de fichier sur OS X 10.9, mais fonctionne correctement sur OS X 10.6.

Pyromaths 13.03 fonctionne bien sur OS X 10.9.

Après pas mal d’essais pour déterminer quel élément de mon environnement de développement posait problème, j’ai écarté PyQt car, même en réalisant le packaging avec mon ancienne version de PyQt, le soucis est présent.

Je pense que le soucis vient de lxml qui était en version 2 et est maintenant en version 3. Et bien sûr, impossible de réinstaller la version 2 de lxml sur OS X 10.9, il y a des erreurs de compilation.

Reste à voir si il est possible d’apporter des modifications dans le code pour retrouver le comportement attendu.

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

Re: Packaging

Message par Yves » 22 mai 2014, 18:07

En poursuivant mes investigations à propos du problème du nom de fichier, j'ai découvert d'autres erreurs. Voici un récapitulatif des problèmes avec Pyromaths 14.05 sous OS X 10.9, je suis ouvert à toutes les suggestions pour corriger ces problèmes, en particulier les points 1 et 4:
  1. Erreur avec "Tous les exercices"
    La création de "Tous les exercices" ne fonctionne plus:
    Traceback (most recent call last):
      File "/Users/administrateur/pyromaths/src/pyromaths/interface.py", line 522, in creer_tous_les_exercices
        System.creation(parametres)
      File "/Users/administrateur/pyromaths/src/pyromaths/outils/System.py", line 161, in creation
        f0.writelines(line + "\n" for line in exercice.tex_statement())
    AttributeError: 'tuple' object has no attribute 'tex_statement'
  2. unsupported hash type
    Ce problème n'est pas visible par l'utilisateur final, les erreurs s'affichent juste dans la Console:
    ERROR:root:code for hash md5 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    File "hashlib.pyo", line 91, in __get_builtin_constructor
    ValueError: unsupported hash type md5
    ERROR:root:code for hash sha1 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    __get_builtin_constructor
    ValueError: unsupported hash type sha1
    ERROR:root:code for hash sha224 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    File "hashlib.pyo", line 91, in __get_builtin_constructor
    ValueError: unsupported hash type sha224
    ERROR:root:code for hash sha256 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    File "hashlib.pyo", line 91, in __get_builtin_constructor
    ValueError: unsupported hash type sha256
    ERROR:root:code for hash sha384 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    File "hashlib.pyo", line 91, in __get_builtin_constructor
    ValueError: unsupported hash type sha384
    ERROR:root:code for hash sha512 was not found.
    Traceback (most recent call last):
    File "hashlib.pyo", line 139, in <module>
    File "hashlib.pyo", line 91, in __get_builtin_constructor
    ValueError: unsupported hash type sha512
    J'ai visiblement un soucis avec mon openssl et mon environnement de développement:
    >>> import hashlib 
    >>> print(hashlib.__file__) 
    /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.pyc
    >>> print(hashlib.md5) 
    <built-in function openssl_md5>
    >>> import _md5 
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named _md5
  3. Unknown class '_FITagEditorView'
    Ce problème n'est pas visible par l'utilisateur final, les erreurs s'affichent juste dans la Console. Ce problème est aussi présent avec Pyromaths 13.03 sur OS X 10.9.
    Unknown class '_FITagEditorView', using 'NSView' instead. Encountered in Interface Builder file at path /System/Library/Frameworks/AppKit.framework/Resources/French.lproj/NSNavPanelContentView.nib.
    May 22 09:02:11 iMac pyromaths[1757] <Notice>: 2014-05-22 09:02:11.474 pyromaths[1757:507] Unknown class '_FITagEditorView', using 'NSView' instead. Encountered in Interface Builder file at path /System/Library/Frameworks/AppKit.framework/Resources/French.lproj/NSNavPanelContentView.nib.
  4. Erreur avec le nom de fichier
    Sur OS X 10.9 uniquement, le nom par défaut du fichier généré par Pyromaths 14.05 est toujours Untitled quelque soit le nom enregistré dans les préférences, dans pyromaths.xml . Pyromaths 13.03 fonctionne bien sur OS X 10.9.Une piste éventuelle : lxml qui était en version 2 et est maintenant en version 3 :? .

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

Re: Packaging

Message par Jérôme » 22 mai 2014, 19:23

Bonjour Yves,
concernant l'option Tous les exercices, je proposerais bien qu'on la supprime. Elle n'a que peu d'utilité.
Les trois autres erreurs sont spécifiques MacOS et je n'ai pour l'instant aucun recule dessus.

De mon côté, j'ai un soucis sous Windows. L'exécutable que je crée ne fonctionne pas comme attendu. En effet, il n'affiche qu'un seul onglet, celui des options. pourtant, quand j'exécute le code Pyromaths directement avec Python, ça fonctionne... Je continue de chercher.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Répondre