mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-23 02:05:01 +03:00
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:
parent
c2d439f115
commit
7c267d6089
@ -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.
|
||||
|
@ -347,6 +347,8 @@ else
|
||||
fi
|
||||
stat '--format=%Y' test2-checkout/baz/cow > cow-mtime
|
||||
assert_file_has_content cow-mtime 0
|
||||
stat '--format=%Y' test2-checkout/baz/deeper > deeper-mtime
|
||||
assert_file_has_content deeper-mtime 0
|
||||
echo "ok content mtime"
|
||||
|
||||
cd ${test_tmpdir}
|
||||
|
Loading…
x
Reference in New Issue
Block a user