efl/src
Carsten Haitzler 125648cc92 efreetd - cache - add more statinfo work around 0 mtime distros
some distros 9notably in this case nixos) want to do reproducible
builds. to them this means going around setting mtime for all files to
0. this means efreetd not only thinks mtime is invalid/stupid (0 is
generally just that as midnight on jan 1 1970 is not exactly a
sensible dare for a modified timestamp of a file as no filesystem with
any sanity will have not been modified since that time), but it keeps
mtime at 0 even when things update. this totally breaks efreetd that
expects to find mtime increases over time as things change. it's
necessary because it has to perform a "are mu caches up to date" scan
of all file data it caches and it needs to know if it should rebuild
something based on this.

so this does a few things:

1. it makes mtime have to be an exact match to the cache, not cache
mtime >= file mtime. so any change forward or back is an inavlidation.
2. it now also uses ctime, mode, size, uid, gid, block count and if a
symlink, the sha1 of the symlink path in addition and any change to
these == invalid.

this adds a lot of code and changes how dirs get scanned a bit but it
means it can pick up changes on these 0 mtime distros.

interestingly the policy of mtime being 0 is to have a reprodcible fs
... but ctime still changes and is > 0, as does inode info, so it's
not actually possible to have it totally work... but they try still,
so this is a fix for that problem.

whilst i was doing thisi also noticed efreetd re-red dirs many times
due to icon theme inhritance. i also fixed that to do a LOT less
syscalls by only scanning a dir once as i was rejigging the scanning
code at the time anyway. this should optimize thr scan costs at
efreetd startup too.

@fix
@opt
2020-06-18 11:18:35 +01:00
..
benchmarks Fix build with gcc 10 (which has -fno-common enabled by default). 2020-01-31 14:31:57 +01:00
bin efreetd - cache - add more statinfo work around 0 mtime distros 2020-06-18 11:18:35 +01:00
bindings C#: Update C# code-generation to use a new ICustomMarshaler in some string usages that were leaking 2020-03-23 14:18:16 -03:00
edje_external elm: resolve float comparison warnings 2020-05-09 09:26:42 +01:00
examples evas examples - build box example again - missing header 2020-06-15 15:37:10 +02:00
generic remove vlc, gst-0.10, xine deps, modules as they are broken 2020-03-08 12:36:01 +00:00
lib efreetd - cache - add more statinfo work around 0 mtime distros 2020-06-18 11:18:35 +01:00
modules modules: vnc: allow building for FreeBSD with a different header path 2020-06-15 15:44:24 +02:00
scripts scripts - eina - remove eina-bench-cmp as its disbaled from install 2020-01-06 16:36:31 +00:00
static_libs canvas svg: fix missing break. 2020-06-15 15:38:30 +02:00
tests Eina file test: use the correct Eina file object 2020-06-15 15:35:27 +02:00
wayland_protocol