efl/src/bin
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
..
ecore_buffer meson: modify install path of bqmgr binary 2019-02-27 21:20:31 +01:00
ecore_con bin/eet and ecore_con: remove Evil.h when not necessary and include evil_private.h when necessary 2019-05-17 13:51:50 -04:00
ecore_evas exotic: remove left-overs from Exotic support 2019-12-04 12:21:28 -08:00
edje edje_cc_handlers: update documentation of "fixed" to be clearer 2020-06-15 15:43:53 +02:00
eet bin/eet and ecore_con: remove Evil.h when not necessary and include evil_private.h when necessary 2019-05-17 13:51:50 -04:00
eeze efl: remove EFL_EO_API_SUPPORT macro 2019-03-18 12:13:59 +01:00
efl bin/efl and ecore: include evil_private.h when appropriate 2019-05-17 11:53:35 +01:00
efl_canvas_wl efl/wl: add docs for base compositor object 2020-03-13 12:17:22 -04:00
efl_js
efl_mono_msbuild_gen csharp: Add licensing information. 2019-10-24 10:10:56 -03:00
efreet efreetd - cache - add more statinfo work around 0 mtime distros 2020-06-18 11:18:35 +01:00
eina replace strndup with eina_strndup, remove strndup definition in evil and elm_test_dnd 2019-05-03 13:13:57 +01:00
eldbus ledbus - fix codegen to not conflict keys with eldbus inyternal 2019-01-09 18:57:22 +00:00
elementary elementary/example: Fix memory leak in gengrid test 2020-06-15 15:42:09 +02:00
elua build: fix macos build 2019-02-22 08:53:20 -05:00
embryo embryo: don't use sizeof() when strlen() is intended 2019-10-18 13:29:20 -04:00
eolian eolian_gen: mark empty setter value params as unused 2020-04-28 19:50:45 +02:00
eolian_cxx cxx: Add license to CXX bindings. 2019-10-24 10:40:16 -03:00
eolian_js eolian: rename param direction enum and fields for consistency 2019-09-26 16:56:13 +02:00
eolian_mono 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
ethumb here comes meson 2018-10-02 17:22:50 +02:00
ethumb_client here comes meson 2018-10-02 17:22:50 +02:00
exactness exactness_player: do not test for delay_ms 2020-05-05 16:14:48 +02:00