From 2e839545c7f363b50ae760c9b9c15da9e7619da9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 18 Jul 2015 23:27:18 +0200 Subject: 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. --- gnu-system.am | 1 + gnu/packages/ninja.scm | 17 +++-------------- gnu/packages/patches/ninja-zero-mtime.patch | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 gnu/packages/patches/ninja-zero-mtime.patch 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 + } -- cgit v1.2.3