libostree: set directory mtimes to 0 on checkout

We already set all file mtimes to 0 so that they are constant
over all checkouts, and can be made constant with a known value from
the system where the ostree was created.

However, this was not happening for directories. Zero their mtimes too.

This is important for shipping a fontconfig cache in the ostree;
the fontconfig cache files embed a directory mtime.
This commit is contained in:
Daniel Drake authored and Colin Walters committed 2015-02-18 18:27:18 -05:00
1 parent c2d439f115
commit 7c267d6089
2 files changed
+18

No files matched your search

+16
View File
@@ -691,6 +691,22 @@ checkout_tree_at (OstreeRepo *self,
}
}
/* Set directory mtime to 0, so that it is constant for all checkouts.
* Must be done after setting permissions and creating all children.
*/
if (!did_exist)
{
const struct timespec times[2] = { { 0, UTIME_OMIT }, { 0, } };
do
res = futimens (destination_dfd, times);
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
{
gs_set_error_from_errno (error, errno);
goto out;
}
}
/* Finally, fsync to ensure all entries are on disk. Ultimately
* this should be configurable for the case where we're constructing
* buildroots.