New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Binaires plus petits et "Cannot exec ocamlrun" #452
Comments
Comment by mbouaziz Bonjour Guillaume, Nous sommes conscient qu'il y a des choses qui ne vont pas dans le build actuel. |
Comment by GuillaumeBrochu OK merci pour l'info sur les problématiques en cours. Content aussi d'apprendre qu'il semble y avoir quelque chose en cours pour fusionner avec le dépôt de Geneanet. En attendant que vous trouviez les solutions aux problèmes de plomberie, si jamais je voulais compiler des binaires temporaires non-officiels pour Windows, quel serait le meilleur commit à utiliser (i.e. le commit le plus récent à être dans un état fonctionnel pour la compilation sous Windows). Merci. |
Comment by a2line Le script de mars 2016 (repris de celui d'Appveyor) pour Windows a été éprouvé fin juin par Crockignol qui a compilé pour Windows avec succès : il lui a suffit de lancer le script avec les droits d'administrateur pour éviter tous les problèmes. Après l'installation des outils, pour compiler GeneWeb avec des exécutables fonctionnels en natif hors Cygwin (les gros .exe !), il faut retourner au commit du 8 mai, au dernier commit ça ne fonctionne que depuis Cygwin.
Je mets à jour le wiki en ce sens, j'aurais du le faire dès juin. Par contre à nouveau, je ne suis pas sûr qu'il soit bon de diffuser une version intermédiaire du logiciel pour éviter les problèmes de communication incidents et faciliter le dépannage : version alpha, version gwmr, version de Dominique (+ celle de Charly le Prof), version Windows du 8 mai… ?! |
Comment by GuillaumeBrochu Merci A2 pour ces précisions. La raison pourquoi, je pense, il faudrait une version 7 "quelconque" est qu'il n'y a plus AUCUNE version 7 pré-compilée de disponible nulle part (les exécutables de la V7.00-alpha ne sont même plus disponibles). Comme les utilisateurs qui fréquentent le forum de Geneanet recherchent presque tous une version qui soit compatible avec les événements, et que ceux-ci, pour la plupart, n'ont pas les aptitudes requises pour compiler geneweb eux-même, ils n'ont présentement aucune option. Comme la nature a horreur du vide, j'ai commencé à regarder ce qu'il faudrait faire pour avoir un package binaire pour la version 7 que je pourrais distribuer à titre personnel comme Mickaël il y a quelques années... |
Comment by GuillaumeBrochu J'ai essayé de compiler le commit du 8 mai sous windows avec le script de A2, en y ajoutant toutefois ces lignes après la ligne du git clone:
La ligne "git status" permet de m'assurer que le git checkout a bien fonctionné. Or, la compilation ne se rend pas à la fin (aucun sous-dossier "distribution" n'est créé) et j'obtiens cette erreur:
A2, est-ce que cela fonctionne de ton côté, ou as-tu la même erreur que moi? |
Comment by a2line T'aurais pas oublié le export Chaque ligne %CYG_BASH% re-ouvre une console, et ce export doit être sur la même ligne avant le make. (Note qu'on aura pu besoin de cette commande en rab à terme, déjà au dernier commit on en a pu besoin.) |
Comment by GuillaumeBrochu Voici le script simplifié que j'ai utilisé (essentiellement, je n'ai conservé que la section 64 bits, j'ai retiré les lignes pour l'installation de cygwin que j'ai fait préalablement, et j'ai ajouté les lignes pour le git checkout). Le "export CYGWIN=winsymlinks:native" y figure encore.
|
Comment by GuillaumeBrochu Je ne sais pas si c'est grave et si cela explique le résultat obtenu, mais j'ai un message d'erreur à propos de curl au début du script:
|
Comment by a2line Rohh.. j'ai la même erreur que toi et je l'ai vue mille fois cette erreur en plus, Mehdi avait résolu ça avec le export ...!! De mémoire le seul truc que j'ai changé depuis c'est une update/upgrade Opam. C'est lourd ces trucs qui fonctionnent un jour et plus trois mois plus tard d’autant que je suis à peu près sûr de l'avoir compilé avec succès : j'avais déjà cette branche « win8mai » en local, et j'ai relu le log irc avec Crockignol qui avait réussi aussi. Du coup ça me laisse un peu perplexe cette histoire… !! |
Comment by a2line Du coup j'ai refait opam update/upgrade et ça compile ! |
Comment by GuillaumeBrochu J'ai fait le test suivant:
Voici le résultat:
EDIT: Je crois que le problème est au niveau de la commande curl... c'est peut-être mon installation de cygwin qui ne fonctionne pas bien... |
Comment by GuillaumeBrochu Mise à jour: J'ai tout effacé mon dossier cygwin et ré-installé à partir de zéro via un nouveau fichier setup-x86_64.exe fraîchement téléchargé. Ceci a réglé le problème de la commande curl. On note toutefois que j'ai dû exécuter le script DEUX FOIS, car lors de la première fois, le script a continué avant que l'installation des packages cygwin ne soit terminée (i.e. le script semble passer à la ligne 12 sans que la ligne 11 ne soit terminée, voir https://gist.github.com/a2line/f134c88c80eafcf0411b38e32a0a7128#file-opamwin-bat-L11), ce qui cause une erreur à la ligne 12. Si on ré-exécute le script une seconde fois, la ligne 12 est OK car curl est déjà installé. En outre, avant de tout effacer, j'ai remarqué que j'avais deux packages curl de téléchargé dans var/cache/packages, curl-7.50.1-1 et curl-7.50.2-1 (voir aussi : https://cygwin.com/cgi-bin2/package-grep.cgi?grep=curl&arch=x86_64), le second étant daté du 8 septembre. C'est peut-être une mise-à-jour du package curl qui a causé mon problème avec curl... (voir ici : #58 (comment)) Mais ceci est de l'histoire ancienne, le problème avec curl est maintenant réglé. Par contre, je tombe encore sur l'erreur:
Il manque donc probablement un petit quelquechose pour que le script soit fonctionnel à 100% (opam update/upgraade, voir #58 (comment)). |
Comment by a2line Non, je ne pense pas qu'il y en ai besoin, quand on installe les paquets avec Opam il met ceux à jour. J'ai vérifié que les deux .tar d'Opam sont toujours aux mêmes URLs, ça n'a pas bougé. J'ai donc relancé le script tel quel sur un vieux p4 x86 qui trainait et j'ai compilé GeneWeb d'une traite ! Est-ce que tu lances bien ton prompt/cmd avec les droits d’administrateur ? Il y en a obligatoirement besoin pour les symlinks (explications au pied de cette page) et c'est d'ailleurs le seul problème qu'avait eu Crockignol ; on a tourné en rond pendant 2 h pour rien avant d'identifier ce problème « symlinks sous Win que pour les admins » (en gros RTFM !! je l'ai mis en gras pour le prochain !). |
Comment by GuillaumeBrochu En effet, les droits administrateurs règlent les deux problèmes qu'il me restait : la ligne 12 n'est plus exécutée avant que la ligne 11 ne soit terminée, et la compilation se rend jusqu'à la fin sans l'erreur "Illegal character (\000)". Merci. Afin de rendre le script encore plus "idiot proof", il serait peut-être bon de mettre un gros message au début du script, rappelant à l'utilisateur qu'il faut lancer le script avec les privilèges administrateurs, ou bien tester si le script a été exécuté avec les privilèges administrateurs (voir http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights). |
Comment by a2line Bonne idée. Cette vérification évitera des malheurs. J'ai ajouté un pti bout de code en m'inspirant du thread stackoverflow sans avoir vraiment testé car je n'arrive pas à trouver un prompt sans droits admin (le comble ?!:). Ça devrait relancer le script automatiquement avec les bons droits. Je testerais demain car là pas envie de redémarrer l'ordi pour activer l'UAC. |
Comment by GuillaumeBrochu Merci, je vais valider que cela fonctionne ce soir sur mon Windows 10 64 bits. |
Comment by a2line Ok pour moi. Ça a l'air de faire ce que ça disait sur le thread : j'ai lancé un prompt sans être admin, puis le batch, la popup pour l'UAC s'ouvre que l'on valide et un second prompt en admin execute le script (win7 x64 pro). Parfait. |
Comment by GuillaumeBrochu Ça fonctionne bien aussi de mon côté. C'est une bonne idée de relancer automatiquement le script avec les droits administrateurs, car ça évite de devoir expliquer le concept d' "invite de commandes avec droits d'administrateurs" à ceux qui ne savent pas de quoi il s'agit! Petit bémol, j'avais initialement un "é" dans le nom de dossier (ex : Généalogie...) contenant le script et ça empêche le script de s'auto-ré-exécuter. En changeant le nom du dossier pour y retirer le "é", ça fonctionne. Autre suggestion d'amélioration vraiment mineure : ajuster automatiquement le nom du répertoire de cygwin selon si windows 32 ou 64 bits. En mode 64 bits, le nom de dossier par défaut lors de l'installation de Cygwin est C:\cygwin64 et non C:\cygwin. |
Comment by a2line L'intérêt est aussi qu'on peut double-cliquer sur le .bat sans avoir à ouvrir une console. J'ai corrigé quand au répertoire par défaut pour l'installation 64 bit, merci pour cette remarque. |
Pour ceux qui voudraient tester GeneWeb à jour (avec ocamlrun), il faut modifier légèrement les .bat pour lancer les exe avec bash. Adaptez le chemin en fonction de votre installation de Cygwin (ici
gwsetup.bat (to launch it, but quite useless because most functions don't work because of syntax)
Edit: attention, le server gwd lancé de cette manière n'est pas visible par les autres machines du réseau local… |
En fait c'est d'un très simple, pour retrouver ses exes « plus gros et sans besoin d'ocamlrun», on compile avec |
Je confirme que le nouveau script (pris intégralement sans aucune modification, https://gist.github.com/a2line/f134c88c80eafcf0411b38e32a0a7128) a compilé sans erreur du 1er coup, et ce, en repartant de mon installation de cygwin d'il y a deux mois dans laquelle je n'ai effacé que le dossier C:\cygwin64\home\user\geneweb 👍 |
Encore un petit message sur cette issue pour archiver ici que j'ai également supprimé du script le |
Issue by GuillaumeBrochu
Monday Aug 29, 2016 at 02:57 GMT
Originally opened as https://github.com/geneweb/geneweb_tmp/issues/58
En essayant de compiler la branche master en date du jour, j'ai observé ceci:
Avec linux:
la compilation fonctionne, les binaires fonctionnent comme prévu (j'ai seulement testé gwsetup, gwc, et gwu), mais la taille des fichiers binaires est environ 2-3x plus petite que lors de mon dernier test de compilation dont j'ai conservé le résultat (en date du 14 mai 2016).
Avec windows (en utilisant les scripts cygwin du wiki, http://geneweb.tuxfamily.org/wiki/OCaml):
la compilation fonctionne, mais j'obtiens l'erreur "Cannot exec ocamlrun" lorsque j'essaie d'exécuter les fichiers exécutables (ex : gwc, gwu, gwd...) dans le sous-dossier "distribution".
De plus, toujours avec windows, si je modifie le script avec un "git clone -b distrib-6-08-ocaml-4-xx" afin de compiler la version 6 au lieu de la branche master, les exécutables sont alors fonctionnels sans l'erreur ci-haut mentionnée et la taille des fichiers binaires est 2-3x plus grande que pour la branche master.
C'est comme si quelque chose avait récemment changé dans les makefiles et que certaines librairies ne sont plus liées aux exécutables comme avant. Voir : http://stackoverflow.com/questions/27547289/how-do-i-compile-my-ocaml-code-into-a-standalone-bytecode-executable
Est-ce voulu?
The text was updated successfully, but these errors were encountered: