[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [PATCH] org-latex-compile timestamp checks

From: Anthony Cowley
Subject: Re: [O] [PATCH] org-latex-compile timestamp checks
Date: Sat, 16 Jan 2016 18:21:30 -0500

> On Jan 16, 2016, at 10:17 AM, Rasmus <address@hidden> wrote:
> Hi Anthony and Nicolas,
> Anthony Cowley <address@hidden> writes:
>> Thanks for taking a look, Rasmus! The bug is in Org, not Emacs. One
>> may perhaps assume the invariant that successive calls to
>> `current-time` will return non-decreasing values. One might also
>> assume the invariant that successive touches of different files will
>> result in file attributes with non-decreasing timestamps. It is mixing
>> the two that is the bug, and Emacs itself shouldn’t try to fix
>> that. To be clear, the limiting factor in this comparison is the
>> filesystem whose timestamp granularity is much coarser than the system
>> clock.
> Thanks for carefully explaining exactly what is going on here.
>> We could do something like generate an entirely separate temporary
>> file before compilation, and use its timestamp as the reference by
>> which compilation output is evaluated. However, the approach of
>> checking file freshness with a one-second granularity seems like a
>> pretty good compromise.
> I think the approach is fine now.  See below.
>>> Maybe you could just check the log directly for failures rather than
>>> checking the file attributes, if these are not reliable.
>>> Also, what is the ‘take‘?  I don’t seem to have it in my Emacs…
>> Sorry about that. Believe it or not I had already rewritten those two
>> lines — as simple as they are — trying to not include extra
>> dependencies. I’ve attached an updated patch that uses subseq from
>> cl.el. I hope that is okay.
> Actually, it's part of cl-lib now (in the broadest understanding of
> cl-lib).
> Since this is a bugfix I guess you should use org-sublist (*shiver*) in
> maint and cl-subseq in master.  We can’t use cl-lib in maint, right
> Nicolas?
> Nicolas Goaziou <address@hidden> writes:
>> Anthony Cowley <address@hidden> writes:
>>> * lisp/ox-latex.el (org-latex-compile): Improve timestamp check on HFS+
>>>  filesystem by only considering 1-second clock resolution.
>>> Previously, the call to (current-time) could return a timestamp with
>>> a non-zero microsecond or picosecond fields, while the file attribute
>>> always has zeros for these fields. The check that the generated file is
>>> newer than the reference timestamp only succeeded when the time to
>>> generate the file crossed a 1-second clock interval.
>>> ---
>>> lisp/ox-latex.el | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>> diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
>>> index a57677b..f803b7e 100644
>>> --- a/lisp/ox-latex.el
>>> +++ b/lisp/ox-latex.el
>>> @@ -3576,7 +3576,8 @@ Return PDF file name or an error if it couldn't be 
>>> produced."
>>>     ;; Check for process failure.  Provide collected errors if
>>>     ;; possible.
>>>     (if (or (not (file-exists-p pdffile))
>>> -           (time-less-p (nth 5 (file-attributes pdffile)) time))
>>> +           (time-less-p (subseq (nth 5 (file-attributes pdffile)) 0 2)
>>> +                        (subseq time 0 2)))
>> This sounds good. Thank you.
>> Although, I suggest to use `cl-subseq' instead of its alias. Also, it
>> may be worth commenting that trick right into the source.
> Yes, it should.

I’ve attached two remixes of the original patch: the first uses cl-subseq, the 
second uses org-sublist.


Attachment: ox-latex-timestamp.patch
Description: Binary data

Attachment: ox-latex-timestamp-maint.patch
Description: Binary data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]