From: Paul Eggert <eggert@cs.ucla.edu>
To: Max Nikulin <manikulin@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>, emacs-devel@gnu.org
Subject: Re: master 4a1f69ebca 2/2: Use (TICKS . HZ) for current-time etc.
Date: Fri, 29 Apr 2022 11:10:03 -0700 [thread overview]
Message-ID: <b6f0e882-3f4e-bc56-1046-15ec1c248363@cs.ucla.edu> (raw)
In-Reply-To: <106f5128-680b-f25e-1316-f7308c49b625@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 517 bytes --]
On 4/29/22 07:22, Max Nikulin wrote:
> It was still working in most real-life cases.
Yes, the current code breaks only in fine-grained cases. Most of the
time it'll work fine since people rarely compile the same file twice in
the same second.
> From my point of view, it is better to rewrite `org-compile-time' to
> treat the case when there were no file prior to the call as that the
> file has been updated without comparison of timestamps
Yes, that sounds simpler and better. How about the attached patch?
[-- Attachment #2: 0001-Improve-org-compile-file-timestamp-handling.patch --]
[-- Type: text/x-patch, Size: 2512 bytes --]
From fbd6561952acf359236afcf7957a197376a18c66 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri, 29 Apr 2022 11:06:00 -0700
Subject: [PATCH] Improve org-compile-file timestamp handling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* lisp/org/org-macs.el (org-file-newer-than-p):
Don’t lose timestamp information in an attempt to work around
problems on filesystems with coarse-grained timestamps.
(org-compile-file): Use only filesystem timestamps;
don’t try to compare them to the current time, as
the filesystem clock may be different from our clock.
---
lisp/org/org-macs.el | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index bb0562dde0..907043580a 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -260,14 +260,8 @@ org-file-newer-than-p
"Non-nil if FILE is newer than TIME.
FILE is a filename, as a string, TIME is a Lisp time value, as
returned by, e.g., `current-time'."
- (and (file-exists-p file)
- ;; Only compare times up to whole seconds as some file-systems
- ;; (e.g. HFS+) do not retain any finer granularity. As
- ;; a consequence, make sure we return non-nil when the two
- ;; times are equal.
- (not (time-less-p (org-time-convert-to-integer
- (nth 5 (file-attributes file)))
- (org-time-convert-to-integer time)))))
+ (when-let ((mtime (file-attribute-modification-time (file-attributes file))))
+ (time-less-p time mtime)))
(defun org-compile-file (source process ext &optional err-msg log-buf spec)
"Compile a SOURCE file using PROCESS.
@@ -301,7 +295,7 @@ org-compile-file
(full-name (file-truename source))
(out-dir (or (file-name-directory source) "./"))
(output (expand-file-name (concat base-name "." ext) out-dir))
- (time (current-time))
+ (time (file-attribute-modification-time (file-attributes output)))
(err-msg (if (stringp err-msg) (concat ". " err-msg) "")))
(save-window-excursion
(pcase process
@@ -320,7 +314,7 @@ org-compile-file
(_ (error "No valid command to process %S%s" source err-msg))))
;; Check for process failure. Output file is expected to be
;; located in the same directory as SOURCE.
- (unless (org-file-newer-than-p output time)
+ (unless (or (not time) (org-file-newer-than-p output time))
(error (format "File %S wasn't produced%s" output err-msg)))
output))
--
2.34.1
next prev parent reply other threads:[~2022-04-29 18:10 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-27 6:37 master 4a1f69ebca 2/2: Use (TICKS . HZ) for current-time etc Mark Barton
2022-04-27 7:20 ` Po Lu
2022-04-27 7:39 ` Paul Eggert
2022-04-27 16:55 ` Stefan Monnier
2022-04-28 22:27 ` Paul Eggert
2022-04-29 14:22 ` Max Nikulin
2022-04-29 18:10 ` Paul Eggert [this message]
2022-04-30 10:56 ` Max Nikulin
2022-05-06 16:56 ` [PATCH] org-macs.el: Do not compare wall time and file modification time Max Nikulin
2022-05-11 12:28 ` Max Nikulin
2022-05-11 16:24 ` Paul Eggert
2022-05-12 16:55 ` Max Nikulin
2022-05-12 22:52 ` Paul Eggert
2022-05-13 12:28 ` Max Nikulin
2022-05-13 18:00 ` Paul Eggert
2022-10-02 3:49 ` Ihor Radchenko
2022-10-09 8:18 ` [PATCH v2] " Max Nikulin
2022-10-21 3:27 ` Ihor Radchenko
[not found] <165091562900.12167.2356992007535632125@vcs2.savannah.gnu.org>
[not found] ` <20220425194030.030A8C01687@vcs2.savannah.gnu.org>
2022-04-26 9:38 ` master 4a1f69ebca 2/2: Use (TICKS . HZ) for current-time etc Lars Ingebrigtsen
2022-04-26 10:20 ` Manuel Uberti
2022-04-26 10:38 ` Po Lu
2022-04-26 14:42 ` Bozhidar Batsov
2022-04-26 20:29 ` Paul Eggert
2022-04-27 0:36 ` Po Lu
2022-04-27 1:18 ` Paul Eggert
2022-04-27 1:29 ` Po Lu
2022-04-27 4:10 ` Paul Eggert
2022-04-26 20:28 ` Paul Eggert
2022-04-27 12:17 ` Lars Ingebrigtsen
2022-04-26 23:54 ` Michael Heerdegen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b6f0e882-3f4e-bc56-1046-15ec1c248363@cs.ucla.edu \
--to=eggert@cs.ucla.edu \
--cc=emacs-devel@gnu.org \
--cc=emacs-orgmode@gnu.org \
--cc=manikulin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.