On 2021/11/12 01:36, Mischa Baars wrote:
Hi All,

All of my makefiles only compile source files and link object files that
are NEW, as in the modification timestamp is newer than OR EQUAL TO the
access timestamp, such that when I include a new source file into a project
or produce a new object file during compilation of the project, it does not
take more time than required.
-----
   You realize the updating of the atime field is variable based on file
system mount options, like 'noatime', 'strictatime' 'relatime', 'atime'.

You mention bash's -N flag which compares mtime+atime, but more important to how
that works is how the file system is mounted.

If the defaults changed in your distribution, the behavior of bash's -N would
change as well, completely independent of bash.

If you are running on a file system mounted with 'noatime', bash's -N would be of little use... Not sure about the other atime variants. If you use 'strictatime' I'd expect it should work as you expect, but there are performance penalties with that.
Looking forward to a fix!
----
You might want to try 'strictatime' on your file systems where you need
strict behavior, but that does create a performance penalty across the whole
file system.

Better is to use bash's (-nt or -ot) That will compare modification fields and not suffer from 'atime' behavior differences.



Reply via email to