Latexmk, do Makefile, do script bash, do Cron - Latexmk não sendo executado

1

Eu tenho vários repositórios Git com arquivos LaTeX que eu quero compor automaticamente. A idéia é ter um script bash central (executado por um cronjob) que executa um script bash em cada repositório, o qual (1) obtém novos commits e (2) executa make all , que deve chamar latexmk no LaTeX alterado arquivos.

O script bash central contém linhas como:

bash ./repos/repo-xyx/cron.sh

Então, em repos/repo-xyz/cron.sh é algo como:

cd "$(dirname "$0")"
git pull
make all
cd -

E no Makefile no mesmo diretório:

all: $(subst .tex,.pdf,$(wildcard *.tex))

%.pdf: %.tex
        latexmk -pdf -pdflatex="pdflatex -shell-escape" $< </dev/null

No crontab do meu usuário, eu tenho * * * * * bash .../cron.sh 2>&1 > .../cron.log e SHELL=/bin/bash .

Quando o cronjob é executado, eu leio o seguinte no log:

Already up-to-date.
latexmk -pdf -pdflatex="pdflatex -shell-escape" myfile.tex </dev/null
.../ (this comes from the line "cd -")

Como você pode ver, latexmk é invocado, mas não faz nada. myfile.pdf não é gerado.

Quando executo bash cron.sh (como o mesmo usuário) do diretório mais alto, isso faz funcionar.

O que poderia fazer com que o Makefile não executasse comandos quando executado a partir de um script bash que é executado por uma tarefa cron (pelo menos, acho que não é necessário executar este comando)?

Este é o GNU Make 3.81 em Linux ubuntu 3.13.0-51-generic #84-Ubuntu SMP Wed Apr 15 12:08:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux .

    
por Keelan 03.10.2015 / 12:52

1 resposta

0

O problema é que o caminho para pdflatex estava sendo definido no meu $HOME/.profile . Assim, mudei o cronjob para:

* * * * * . $HOME/.profile; bash .../cron.sh 2>&1 > .../cron.log

de acordo com o link .

    
por 03.10.2015 / 14:16