[ostree] core: Set mtime of content objects to 0
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Set mtime of content objects to 0
- Date: Sun, 15 Dec 2013 16:33:41 +0000 (UTC)
commit fe5ed36461a52b38cb366162bfd222ad3b326bf2
Author: Roddy Shuler <roddy endlessm com>
Date: Thu Dec 12 14:56:19 2013 -0800
core: Set mtime of content objects to 0
This is necessary to satisfy tools such as guile and python, which
compare mtimes to determine whether or not source files need to be
compiled.
https://bugzilla.gnome.org/show_bug.cgi?id=720363
src/libostree/ostree-repo-commit.c | 18 ++++++++++++++++++
tests/test-basic.sh | 7 +++++++
2 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c
index 4fc46c3..caa5103 100644
--- a/src/libostree/ostree-repo-commit.c
+++ b/src/libostree/ostree-repo-commit.c
@@ -100,6 +100,7 @@ commit_loose_object_trusted (OstreeRepo *self,
{
int fd;
int res;
+ struct timespec times[2];
g_assert (temp_out != NULL);
@@ -134,6 +135,23 @@ commit_loose_object_trusted (OstreeRepo *self,
if (!gs_fd_set_all_xattrs (fd, xattrs, cancellable, error))
goto out;
}
+
+ /* To satisfy tools such as guile which compare mtimes
+ * to determine whether or not source files need to be compiled,
+ * set the modification time to 0.
+ */
+ times[0].tv_sec = 0; /* atime */
+ times[0].tv_nsec = UTIME_OMIT;
+ times[1].tv_sec = 0; /* mtime */
+ times[1].tv_nsec = 0;
+ do
+ res = futimens (fd, times);
+ while (G_UNLIKELY (res == -1 && errno == EINTR));
+ if (G_UNLIKELY (res == -1))
+ {
+ ot_util_set_error_from_errno (error, errno);
+ goto out;
+ }
}
/* Ensure that in case of a power cut, these files have the data we
diff --git a/tests/test-basic.sh b/tests/test-basic.sh
index dd6103b..2ac197f 100755
--- a/tests/test-basic.sh
+++ b/tests/test-basic.sh
@@ -310,3 +310,10 @@ ${CMD_PREFIX} ostree --repo=repo remote show-url aremote > aremote-url.txt
assert_file_has_content aremote-url.txt 'http.*remote\.example\.com/repo'
echo "ok remote show-url"
+cd ${test_tmpdir}
+rm -rf test2-checkout
+$OSTREE checkout test2 test2-checkout
+stat '--format=%Y' test2-checkout/baz/cow > cow-mtime
+assert_file_has_content cow-mtime 0
+echo "ok content mtime"
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]