Compilations successives

Le
Ph. Ivaldi
Bonjour,

Je voudrais décomposer la compilation successive effectuée par une seule
commande bash en plusieurs compilations élémentaires.
Par exemple:
je voudrais remplacer la commande
latex toto.tex && { if [[ -f toto.asy ]]; then asy toto.asy &&
latex toto.tex >/dev/null ; else true; fi;} &&
dvips toto.dvi -o toto.ps && gv toto.ps

en la suite de commandes
latex toto.tex
asy toto.asy
latex toto.tex >/dev/null
dvips toto.dvi -o toto.ps
gv toto.ps

avec les tests qui conviennent en Elisp, tout ça en gardant la gestion
des erreurs fournie par la fonction '(compile)'.
Le but est de faire un enchaînement de commandes indépendant du shell et
fonctionnant aussi sous Windows; une sorte de 'makefile' en Elisp.

La solution consistant à faire un 'makefile' et un .bash ne me semble
pas viable puisque, par exemple, la commande 'gv' est paramétrable par
l'utilisateur.

Avant de me lancer dans un fork de (compile) je voudrais savoir s'il
existe déjà une solution simple.
--
Merci de votre aide,
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Ph. Ivaldi
Le #21784881
Je voudrais décomposer la compilation successive effectuée par une
seule commande bash en plusieurs compilations élémentaires.



Voici une version simplifiée de ce que j'ai pondu:

8<------8<------8<------8<------8<------8<------8<------8<------8<------
(defun asy-compilation-wait(&optional auto-close)
(let* ((buff (get-buffer "*asy-compilation*"))
(comp-proc (get-buffer-process buff)))
(while (and comp-proc (not (eq (process-status comp-proc) 'exit)))
(setq comp-proc (get-buffer-process buff))
(sit-for 1))
(if comp-proc
(setq asy-last-compilation-code (process-exit-status comp-proc))
(setq asy-last-compilation-code 0))))

(defun asy-internal-compile (command &optional auto-close)
(setq asy-last-compilation-code -1)
(let ((compilation-buffer-name-function
(lambda (mj) "*asy-compilation*")))
(compile command))
(asy-compilation-wait auto-close))
8<------8<------8<------8<------8<------8<------8<------8<------8<------

Ça s'utilise comme ça:

8<------8<------8<------8<------8<------8<------8<------8<------8<------
(asy-internal-compile (concat "latex -interaction=nonstopmode " b-b-n ".tex"))
(when (and (zerop asy-last-compilation-code) (file-readable-p (concat b-b-n ".asy")))
(asy-internal-compile (concat asy-command-location lasy-command " " b-b-n ".asy" dirstderr))
(when (zerop asy-last-compilation-code)
(asy-internal-compile (concat "latex -interaction=nonstopmode " b-b-n ".tex"))))
(when (zerop asy-last-compilation-code)
(asy-internal-compile (concat "dvips " b-b-n ".dvi -o " b-b-n ".ps") t)
(when (zerop asy-last-compilation-code)
(start-process "" nil ps-view-command (concat b-b-n ".ps"))))
8<------8<------8<------8<------8<------8<------8<------8<------8<------

Y-a-t-il mieux que

8<------8<------8<------8<------8<------8<------8<------8<------8<------
(while (and comp-proc (not (eq (process-status comp-proc) 'exit)))
(setq comp-proc (get-buffer-process buff))
(sit-for 1))
8<------8<------8<------8<------8<------8<------8<------8<------8<------

pour attendre qu'un processus se termine et récupérer le code de
sortie ?
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Olivier
Le #21784861
Ph. Ivaldi wrote:

Y-a-t-il mieux que

8<------8<------8<------8<------8<------8<------8<------8<------8<------
(while (and comp-proc (not (eq (process-status comp-proc) 'exit)))
(setq comp-proc (get-buffer-process buff))
(sit-for 1))
8<------8<------8<------8<------8<------8<------8<------8<------8<------

pour attendre qu'un processus se termine et récupérer le code de
sortie ?



C'est l'utilisation standard de (sit-for 1).
A.O.
Matthieu Moy
Le #21784851
Ph. Ivaldi
Avant de me lancer dans un fork de (compile) je voudrais savoir s'il
existe déjà une solution simple.



rubber ?

--
Matthieu
Ph. Ivaldi
Le #21784841
Le 04 juin 2007, Olivier écrivit :

Y-a-t-il mieux que
(while (and comp-proc (not (eq (process-status comp-proc) 'exit)))
(setq comp-proc (get-buffer-process buff))
(sit-for 1))
pour attendre qu'un processus se termine et récupérer le code de
sortie ?



C'est l'utilisation standard de (sit-for 1).



Ça me rassure, je n'étais pas sûr de moi.
Merci.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Publicité
Poster une réponse
Anonyme