[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.
>>>
>>> TINYCHANGE
>>> ---
>>> 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.
Anthony
ox-latex-timestamp.patch
Description: Binary data
ox-latex-timestamp-maint.patch
Description: Binary data
- [O] [PATCH] org-latex-compile timestamp checks, Anthony Cowley, 2016/01/14
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/15
- Re: [O] [PATCH] org-latex-compile timestamp checks, Anthony Cowley, 2016/01/15
- Re: [O] [PATCH] org-latex-compile timestamp checks, Nicolas Goaziou, 2016/01/16
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/16
- Re: [O] [PATCH] org-latex-compile timestamp checks,
Anthony Cowley <=
- Re: [O] [PATCH] org-latex-compile timestamp checks, Nicolas Goaziou, 2016/01/21
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/21
- Re: [O] [PATCH] org-latex-compile timestamp checks, Anthony Cowley, 2016/01/26
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/26
- Re: [O] [PATCH] org-latex-compile timestamp checks, Nicolas Goaziou, 2016/01/26
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/26
- Re: [O] [PATCH] org-latex-compile timestamp checks, Nicolas Goaziou, 2016/01/28
- Re: [O] [PATCH] org-latex-compile timestamp checks, Rasmus, 2016/01/28
- Re: [O] [PATCH] org-latex-compile timestamp checks, Anthony Cowley, 2016/01/28