summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-07-18 23:27:18 +0200
committerLudovic Courtès <ludo@gnu.org>2015-07-18 23:27:18 +0200
commit2e839545c7f363b50ae760c9b9c15da9e7619da9 (patch)
treeca2cb9147e50431b4e1fcd7626e2c50812c826ad
parentc5c4c4b437f977f4aaedb34a258cd94146c93d4d (diff)
downloadguix-2e839545c7f363b50ae760c9b9c15da9e7619da9.tar.gz
guix-2e839545c7f363b50ae760c9b9c15da9e7619da9.tar.xz
gnu: ninja: Do not report files with mtime = 0 as missing.
This is a followup to 47f315a. * gnu/packages/patches/ninja-zero-mtime.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/ninja.scm (ninja)[source]: Reinstate 'patches' field and add this patch. [arguments]: Remove 'apply-ninja-tests.patch' phase.
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/ninja.scm17
-rw-r--r--gnu/packages/patches/ninja-zero-mtime.patch19
3 files changed, 23 insertions, 14 deletions
diff --git a/gnu-system.am b/gnu-system.am
index f5847031b2..4c2d5cc90c 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -537,6 +537,7 @@ dist_patch_DATA = \
gnu/packages/patches/ngircd-handle-zombies.patch \
gnu/packages/patches/ngircd-no-dns-in-tests.patch \
gnu/packages/patches/ninja-tests.patch \
+ gnu/packages/patches/ninja-zero-mtime.patch \
gnu/packages/patches/nss-pkgconfig.patch \
gnu/packages/patches/nvi-assume-preserve-path.patch \
gnu/packages/patches/nvi-dbpagesize-binpower.patch \
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index b55dd37e78..a0eb109bbb 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -23,7 +23,6 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
- #:use-module (gnu packages base)
#:use-module (gnu packages python))
(define-public ninja
@@ -38,23 +37,13 @@
(sha256
(base32
"1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw"))
- ;; XXX Ninja's build system doesn't cope well with zeroed
- ;; time stamps in the source tree, so we must avoid using
- ;; 'patch-and-repack'.
- #; (patches (list (search-patch "ninja-tests.patch")))))
+ (patches (map search-patch
+ '("ninja-zero-mtime.patch" "ninja-tests.patch")))))
(build-system gnu-build-system)
- (native-inputs `(("python" ,python-2)
- ("patch" ,patch)
- ("ninja-tests.patch" ,(search-patch "ninja-tests.patch"))))
+ (native-inputs `(("python" ,python-2)))
(arguments
'(#:phases
(modify-phases %standard-phases
- (add-after
- 'unpack 'apply-ninja-tests.patch
- ;; XXX Apply the patch here to avoid 'patch-and-repack'. See above.
- (lambda* (#:key inputs #:allow-other-keys)
- (zero? (system* "patch" "--force" "-p1" "-i"
- (assoc-ref inputs "ninja-tests.patch")))))
(replace
'configure
(lambda _
diff --git a/gnu/packages/patches/ninja-zero-mtime.patch b/gnu/packages/patches/ninja-zero-mtime.patch
new file mode 100644
index 0000000000..c9b9e8d798
--- /dev/null
+++ b/gnu/packages/patches/ninja-zero-mtime.patch
@@ -0,0 +1,19 @@
+Work around a design defect in Ninja whereby a zero mtime is used to
+denote missing files (we happen to produce files that have a zero mtime
+and yet really do exist.)
+
+--- ninja-1.5.3/src/disk_interface.cc 2014-11-24 18:37:47.000000000 +0100
++++ ninja-1.5.3/src/disk_interface.cc 2015-07-18 23:20:38.572290139 +0200
+@@ -194,6 +194,12 @@ TimeStamp RealDiskInterface::Stat(const
+ }
+ return -1;
+ }
++
++ if (st.st_mtime == 0)
++ // All the code assumes that mtime == 0 means "file missing". Here we
++ // know the file is not missing, so tweak the mtime.
++ st.st_mtime = 1;
++
+ return st.st_mtime;
+ #endif
+ }