Ludovic Courtès <l...@gnu.org> writes: > 宋文武 <iyzs...@gmail.com> skribis: > >> Ludovic Courtès <l...@gnu.org> writes: >> >>> 宋文武 <iyzs...@gmail.com> skribis: >>> >>>> * gnu/packages/ninja.scm: New file. >>>> * gnu-system.am (GNU_SYSTEM_MODULES): Add it. >>> >>> [...] >>> >>>> + 'check >>>> + (lambda _ >>>> + (and (zero? (system "./configure.py")) >>>> + (zero? (system "./ninja ninja_test")) >>>> + ;; SubprocessTest.InterruptChild fail when using >>>> 'system*'. >>>> + ;; SubprocessTest.SetWithLots was skipped. >>>> + ;; XXX: Raise [ulimit -n] well above 1025 to make this >>>> test go. >>> >>> Does it mean that the test is currently failing? >> Yes, SetWithLots fail with the 'Raise ...' line. > > Oh, I see. Then can you make it clearer in the comment: > > ;; SubprocessTest.SetWithLots fails with: > ;; > ;; Raise [ulimit -n] well above 1025 to make this test go. > ;; > ;; Skip it. > >>>> + (zero? (system (string-append >>>> + "./ninja_test " >>>> + "--gtest_filter=" >>>> + "-SubprocessTest.SetWithLots"))))) >>> >>> Please use ‘system*’ (with separate arguments) rather than ‘system’. >>> The latter runs “/bin/sh -c ...” whereas the former runs the program >>> directly. >> Use 'system*' to run "./ninja_test" will cause InterruptChild to fail :( >> (as I mentioned in the comment) > > Ah right, that’s weird, but could you mention in the comment (1) how it > fails, and (2) that because of this, we use ‘system’ instead of > ‘system*’? > > It’s important to explain both the problem and the solution/consequence, > otherwise it can be hard by reading the comment to understand if we’re > talking about an unfixed issue, a fixed issue, or a fix. > > OK to push with these changes.
>From 712f161a358a4bbcf005c5875e6d91eff21bdef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzs...@gmail.com> Date: Fri, 9 Jan 2015 21:37:30 +0800 Subject: [PATCH] gnu: Add ninja.
* gnu/packages/ninja.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. --- gnu-system.am | 1 + gnu/packages/ninja.scm | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 gnu/packages/ninja.scm diff --git a/gnu-system.am b/gnu-system.am index 4086067..39459b8 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -191,6 +191,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/ncurses.scm \ gnu/packages/netpbm.scm \ gnu/packages/nettle.scm \ + gnu/packages/ninja.scm \ gnu/packages/node.scm \ gnu/packages/noweb.scm \ gnu/packages/ntp.scm \ diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm new file mode 100644 index 0000000..fe3f955 --- /dev/null +++ b/gnu/packages/ninja.scm @@ -0,0 +1,87 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Sou Bunnbu <iyzs...@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages ninja) + #:use-module ((guix licenses) #:select (asl2.0)) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages) + #:use-module (gnu packages python)) + +(define-public ninja + (package + (name "ninja") + (version "1.5.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/martine/ninja/" + "archive/v" version ".tar.gz")) + (sha256 + (base32 + "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (alist-replace + 'configure + (lambda _ + (substitute* "src/subprocess-posix.cc" + (("/bin/sh") (which "sh")))) + (alist-replace + 'build + (lambda _ + (zero? (system* "./configure.py" "--bootstrap"))) + (alist-replace + 'check + (lambda _ + (and (zero? (system* "./configure.py")) + (zero? (system* "./ninja" "ninja_test")) + ;; SubprocessTest.SetWithLots fails with: + ;; Raise [ulimit -n] well above 1025 to make this test go. + ;; Skip it. + ;; + ;; SubprocessTest.InterruptChild fails when using 'system*': + ;; *** Failure in src/subprocess_test.cc:83 + ;; ExitInterrupted == subproc->Finish() + ;; Pass it by using 'system' instead of 'system*'. + (zero? (system (string-append + "./ninja_test " + "--gtest_filter=" + "-SubprocessTest.SetWithLots"))))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (doc (string-append out "/share/doc/ninja"))) + (mkdir-p bin) + (copy-file "ninja" (string-append bin "/ninja")) + (mkdir-p doc) + (copy-file "doc/manual.asciidoc" + (string-append doc "/manual.asciidoc")))) + %standard-phases)))))) + (native-inputs `(("python" ,python-2))) + (home-page "http://martine.github.io/ninja/") + (synopsis "Small build system") + (description + "Ninja is a small build system with a focus on speed. It differs from +other build systems in two major respects: it is designed to have its input +files generated by a higher-level build system, and it is designed to run +builds as fast as possible.") + (license asl2.0))) -- 2.1.2
Is this OK? > > Thanks, > Ludo’.