Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compilations successives

4 réponses
Avatar
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/

4 réponses

Avatar
Ph. Ivaldi
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/
Avatar
Olivier
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.
Avatar
Matthieu Moy
Ph. Ivaldi writes:

Avant de me lancer dans un fork de (compile) je voudrais savoir s'il
existe déjà une solution simple.



rubber ?

--
Matthieu
Avatar
Ph. Ivaldi
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/