diff options
author | Colin Walters <walters@verbum.org> | 2016-09-08 07:11:52 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2016-09-08 13:35:59 +0000 |
commit | 845dc651962b2c106872428336c9d81c2ed12432 (patch) | |
tree | 90e5682e578e4a3fc72b08532addc592aa1a8743 | |
parent | f760a4612a234268815c5ed3941c11840d469b3b (diff) | |
download | ostree-845dc651962b2c106872428336c9d81c2ed12432.tar.gz |
repo: Revert default timestamp from 1 back to 0
Quoting Dan Nicholson in
<https://github.com/ostreedev/ostree/pull/330#issuecomment-245499099>
mtime of 0 has been the semantics of ostree deployments from basically
the beginning of the project. We (and others, see
flatpak/flatpak@b5204c9) rely on that fact when generating trees.
In particular, this affects caches that use the mtime of the
associated file or directory to determine if the cache is valid. By
arbitrarily changing the mtime of the files to something else, all
the caches we setup in the build are now invalidated. Preseeding
caches is really important to the user experience as it avoids
having the user wait while they're regenerated on first run.
Now, we could change our build infrastructure to preset all the
mtimes to 1 to match this change, but what does that do for our
existing users who are on an ostree that deploys with mtimes of 0?
We could just revert this change at Endless (and the associated one
in Flatpak), and that would be fine for our users. However, if we
point non-Endless users to our apps, they'll have the great
experience of waiting 10 seconds the first time they launch it while
the fontconfig cache is rebuilt unnecessarily.
Closes: #495
Approved by: jlebon
-rw-r--r-- | docs/manual/repo.md | 9 | ||||
-rw-r--r-- | src/libostree/ostree-repo-private.h | 2 | ||||
-rwxr-xr-x | tests/basic-test.sh | 4 |
3 files changed, 8 insertions, 7 deletions
diff --git a/docs/manual/repo.md b/docs/manual/repo.md index c23a4453..6e307ba3 100644 --- a/docs/manual/repo.md +++ b/docs/manual/repo.md @@ -58,10 +58,11 @@ comparing timestamps. For Git, the logical choice is to not mess with timestamps, because unnecessary rebuilding is better than a broken tree. However, OSTree has to hardlink files to check them out, and commits are assumed to be internally consistent with no build steps needed. For this reason, OSTree -acts as though all timestamps are set to time_t 1, so that comparisons will be -considered up-to-date. 1 is a better choice than 0 because some programs use 0 -as a special value; for example, GNU Tar warns of an "implausibly old time -stamp" with 0. +acts as though all timestamps are set to time_t 0, so that comparisons will be +considered up-to-date. Note that for a few releases, OSTree used 1 to fix +warnings such as GNU Tar emitting "implausibly old time stamp" with 0; however, +until we have a mechanism to transition cleanly to 1, for compatibilty OSTree +is reverted to use zero again. # Repository types and locations diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index 92d8a084..e8d5550f 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -32,7 +32,7 @@ G_BEGIN_DECLS #define _OSTREE_SUMMARY_CACHE_DIR "summaries" #define _OSTREE_CACHE_DIR "cache" -#define OSTREE_TIMESTAMP (1) +#define OSTREE_TIMESTAMP (0) typedef enum { OSTREE_REPO_TEST_ERROR_PRE_COMMIT = (1 << 0) diff --git a/tests/basic-test.sh b/tests/basic-test.sh index c4828d90..9db56e77 100755 --- a/tests/basic-test.sh +++ b/tests/basic-test.sh @@ -392,9 +392,9 @@ else $OSTREE checkout test2 test2-checkout fi stat '--format=%Y' test2-checkout/baz/cow > cow-mtime -assert_file_has_content cow-mtime 1 +assert_file_has_content cow-mtime 0 stat '--format=%Y' test2-checkout/baz/deeper > deeper-mtime -assert_file_has_content deeper-mtime 1 +assert_file_has_content deeper-mtime 0 echo "ok content mtime" cd ${test_tmpdir} |