commit ninja for openSUSE:Factory
Hello community, here is the log from the commit of package ninja for openSUSE:Factory checked in at 2013-02-22 16:55:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ninja (Old) and /work/SRC/openSUSE:Factory/.ninja.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "ninja", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/ninja/ninja.changes 2013-01-11 09:37:24.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.ninja.new/ninja.changes 2013-02-22 16:55:46.000000000 +0100 @@ -1,0 +2,7 @@ +Fri Feb 22 13:22:33 UTC 2013 - idonmez@suse.com + +- Update to git hash b26d217 + * Documentation updates + * Fix wrong usage of std::string::find + +------------------------------------------------------------------- Old: ---- ninja-8a4c9e05f7.tar.bz2 New: ---- ninja-b26d217.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ninja.spec ++++++ --- /var/tmp/diff_new_pack.gIW4CY/_old 2013-02-22 16:55:47.000000000 +0100 +++ /var/tmp/diff_new_pack.gIW4CY/_new 2013-02-22 16:55:47.000000000 +0100 @@ -16,18 +16,19 @@ # -%define _githash 8a4c9e05f7 +%define _githash b26d217 Name: ninja Summary: A small build system closest in spirit to Make License: Apache-2.0 Group: Development/Tools/Building -Version: 0.0_20121229 +Version: 0.0_20130222 Release: 0 Url: https://github.com/martine/ninja BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: asciidoc BuildRequires: gcc-c++ +BuildRequires: libxslt-tools BuildRequires: python Source0: ninja-%{_githash}.tar.bz2 ++++++ ninja-8a4c9e05f7.tar.bz2 -> ninja-b26d217.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/RELEASING new/ninja/RELEASING --- old/ninja/RELEASING 1970-01-01 01:00:00.000000000 +0100 +++ new/ninja/RELEASING 2013-02-22 14:20:51.000000000 +0100 @@ -0,0 +1,10 @@ +Notes to myself on all the steps to make for a Ninja release. + +1. git checkout release; git merge master +2. fix version number in source (it will likely conflict in the above) +3. fix version in doc/manual.asciidoc +4. grep doc/manual.asciidoc for XXX, fix version references +5. rebuild manual, put in place on website +6. commit, tag, push +7. construct release notes from prior notes + credits: git shortlog -s --no-merges REV.. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/bootstrap.py new/ninja/bootstrap.py --- old/ninja/bootstrap.py 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/bootstrap.py 2013-02-22 14:20:51.000000000 +0100 @@ -96,6 +96,7 @@ '-DNINJA_BOOTSTRAP']) if options.windows: cflags.append('-D_WIN32_WINNT=0x0501') + conf_args.append("--platform=mingw") if options.x64: cflags.append('-m64') args.extend(cflags) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/configure.py new/ninja/configure.py --- old/ninja/configure.py 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/configure.py 2013-02-22 14:20:51.000000000 +0100 @@ -279,7 +279,8 @@ 'manifest_parser', 'metrics', 'state', - 'util']: + 'util', + 'version']: objs += cxx(name) if platform in ('mingw', 'windows'): for name in ['subprocess-win32', @@ -396,9 +397,14 @@ n.comment('Generate the manual using asciidoc.') n.rule('asciidoc', - command='asciidoc -a toc -a max-width=45em -o $out $in', - description='ASCIIDOC $in') -manual = n.build(doc('manual.html'), 'asciidoc', doc('manual.asciidoc')) + command='asciidoc -b docbook -d book -o $out $in', + description='ASCIIDOC $out') +n.rule('xsltproc', + command='xsltproc --nonet doc/docbook.xsl $in > $out', + description='XSLTPROC $out') +xml = n.build(built('manual.xml'), 'asciidoc', doc('manual.asciidoc')) +manual = n.build(doc('manual.html'), 'xsltproc', xml, + implicit=doc('style.css')) n.build('manual', 'phony', order_only=manual) n.newline() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/doc/docbook.xsl new/ninja/doc/docbook.xsl --- old/ninja/doc/docbook.xsl 1970-01-01 01:00:00.000000000 +0100 +++ new/ninja/doc/docbook.xsl 2013-02-22 14:20:51.000000000 +0100 @@ -0,0 +1,17 @@ +<!-- This soup of XML is the minimum customization necessary to make the + autogenerated manual look ok. --> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY css SYSTEM "style.css"> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> + <xsl:template name="user.head.content"><style>&css;</style></xsl:template> + <xsl:template name="body.attributes"></xsl:template> + <xsl:param name="generate.toc" select="'book toc'"/> + <xsl:param name="chapter.autolabel" select="0" /> + <xsl:param name="toc.list.type">ul</xsl:param> + + <xsl:output method="html" encoding="utf-8" indent="no" + doctype-public=""/> +</xsl:stylesheet> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/doc/manual.asciidoc new/ninja/doc/manual.asciidoc --- old/ninja/doc/manual.asciidoc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/doc/manual.asciidoc 2013-02-22 14:20:51.000000000 +0100 @@ -209,20 +209,22 @@ Environment variables ~~~~~~~~~~~~~~~~~~~~~ -Ninja supports one environment variable to control its behavior. +Ninja supports one environment variable to control its behavior: +`NINJA_STATUS`, the progress status printed before the rule being run. -`NINJA_STATUS`:: The progress status printed before the rule being run. Several placeholders are available: -* `%s`: The number of started edges. -* `%t`: The total number of edges that must be run to complete the build. -* `%p`: The percentage of started edges. -* `%r`: The number of currently running edges. -* `%u`: The number of remaining edges to start. -* `%f`: The number of finished edges. -* `%o`: Overall rate of finished edges per second -* `%c`: Current rate of finished edges per second (average over builds specified by -j or its default) -* `%%`: A plain `%` character. -* The default progress status is `"[%s/%t] "` (note the trailing space + +`%s`:: The number of started edges. +`%t`:: The total number of edges that must be run to complete the build. +`%p`:: The percentage of started edges. +`%r`:: The number of currently running edges. +`%u`:: The number of remaining edges to start. +`%f`:: The number of finished edges. +`%o`:: Overall rate of finished edges per second +`%c`:: Current rate of finished edges per second (average over builds specified by -j or its default) +`%%`:: A plain `%` character. + +The default progress status is `"[%s/%t] "` (note the trailing space to separate from the build rule). Another example of possible progress status could be `"[%u/%r/%f] "`. @@ -354,17 +356,11 @@ follows an indented set of `variable = value` lines. The basic example above declares a new rule named `cc`, along with the -command to run. (In the context of a rule, the `command` variable is -special and defines the command to run. A full list of special -variables is provided in <<ref_rule,the reference>>.) - -Within the context of a rule, three additional special variables are -available: `$in` expands to the list of input files (`foo.c`) and -`$out` to the output file (`foo.o`) for the command. For use with -`$rspfile_content`, there is also `$in_newline`, which is the same as -`$in`, except that multiple inputs are separated by `\n`, rather than -spaces. - +command to run. In the context of a rule, the `command` variable +defines the command to run, `$in` expands to the list of +input files (`foo.c`), and `$out` to the output files (`foo.o`) for the +command. A full list of special variables is provided in +<<ref_rule,the reference>>. Build statements ~~~~~~~~~~~~~~~~ @@ -420,6 +416,8 @@ Pools ~~~~~ +_Available since Ninja 1.1._ + Pools allow you to allocate one or more rules or edges a finite number of concurrent jobs which is more tightly restricted than the default parallelism. @@ -532,6 +530,7 @@ default. +[[ref_log]] The Ninja log ~~~~~~~~~~~~~ @@ -545,6 +544,36 @@ `.ninja_log` will be kept in that directory instead. +[[ref_versioning]] +Version compatibility +~~~~~~~~~~~~~~~~~~~~~ + +_Available since Ninja 1.XXX._ + +Ninja version labels follow the standard major.minor.patch format, +where the major version is increased on backwards-incompatible +syntax/behavioral changes and the minor version is increased on new +behaviors. Your `build.ninja` may declare a variable named +`ninja_required_version` that asserts the minimum Ninja version +required to use the generated file. For example, + +----- +ninja_required_version = 1.1 +----- + +declares that the build file relies on some feature that was +introduced in Ninja 1.1 (perhaps the `pool` syntax), and that +Ninja 1.1 or greater must be used to build. Unlike other Ninja +variables, this version requirement is checked immediately when +the variable is encountered in parsing, so it's best to put it +at the top of the build file. + +Ninja always warns if the major versions of Ninja and the +`ninja_required_version` don't match; a major version change hasn't +come up yet so it's difficult to predict what behavior might be +required. + + Ninja file reference -------------------- @@ -630,9 +659,22 @@ considered part of its parent's scope; if it is indented less than the previous one, it closes the previous scope. +Top-level variables +~~~~~~~~~~~~~~~~~~~ + +Two variables are significant when declared in the outermost file scope. + +`builddir`:: a directory for some Ninja output files. See <<ref_log,the + discussion of the build log>>. (You can also store other build output + in this directory.) + +`ninja_required_version`:: the minimum verison of Ninja required to process + the build correctly. See <<ref_versioning,the discussion of versioning>>. + + +[[ref_rule]] Rule variables ~~~~~~~~~~~~~~ -[[ref_rule]] A `rule` block contains a list of `key = value` declarations that affect the processing of the rule. Here is a full list of special @@ -674,6 +716,20 @@ rebuilt if the command line changes; and secondly, they are not cleaned by default. +`in`:: the shell-quoted space-separated list of files provided as + inputs to the build line referencing this `rule`. (`$in` is provided + solely for convenience; if you need some subset or variant of this + list of files, just construct a new variable with that list and use + that instead.) + +`in_newline`:: the same as `$in` except that multiple inputs are + separated by newlines rather than spaces. (For use with + `$rspfile_content`; this works around a bug in the MSVC linker where + it uses a fixed-size buffer for processing input.) + +`out`:: the shell-quoted space-separated list of files provided as + outputs to the build line referencing this `rule`. + `restat`:: if present, causes Ninja to re-stat the command's outputs after execution of the command. Each output whose modification time the command did not change will be treated as though it had never @@ -700,13 +756,9 @@ build myapp.exe: link a.obj b.obj [possibly many other .obj files] ---- -Finally, the special `$in` and `$out` variables expand to the -shell-quoted space-separated list of files provided to the `build` -line referencing this `rule`. - +[[ref_dependencies]] Build dependencies ~~~~~~~~~~~~~~~~~~ -[[ref_dependencies]] There are three types of build dependencies which are subtly different. @@ -768,9 +820,9 @@ foo = bar ---- +[[ref_scope]] Evaluation and scoping ~~~~~~~~~~~~~~~~~~~~~~ -[[ref_scope]] Top-level variable declarations are scoped to the file they occur in. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/doc/style.css new/ninja/doc/style.css --- old/ninja/doc/style.css 1970-01-01 01:00:00.000000000 +0100 +++ new/ninja/doc/style.css 2013-02-22 14:20:51.000000000 +0100 @@ -0,0 +1,29 @@ +body { + margin: 5ex 10ex; + max-width: 40em; + line-height: 1.4; + font-family: sans-serif; + font-size: 0.8em; +} +h1, h2, h3 { + font-weight: normal; +} +pre, code { + font-family: x, monospace; +} +pre { + padding: 1ex; + background: #eee; + border: solid 1px #ddd; + min-width: 0; + font-size: 90%; +} +code { + color: #007; +} +.chapter { + margin-top: 4em; +} +p { + margin-top: 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/misc/packaging/ninja.spec new/ninja/misc/packaging/ninja.spec --- old/ninja/misc/packaging/ninja.spec 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/misc/packaging/ninja.spec 2013-02-22 14:20:51.000000000 +0100 @@ -5,8 +5,10 @@ Group: Development/Tools License: Apache 2.0 URL: https://github.com/martine/ninja -Source0: %{name}-%{version}-%{release}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release} +Source0: %{name}-%{version}-%{rel}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{rel} + +BuildRequires: asciidoc %description Ninja is yet another build system. It takes as input the interdependencies of files (typically source code and output executables) and @@ -17,7 +19,7 @@ seconds to start building after changing one file. Ninja is under a second. %prep -%setup -q -n %{name}-%{version}-%{release} +%setup -q -n %{name}-%{version}-%{rel} %build echo Building.. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/graph.cc new/ninja/src/graph.cc --- old/ninja/src/graph.cc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/src/graph.cc 2013-02-22 14:20:51.000000000 +0100 @@ -284,8 +284,10 @@ bool DependencyScan::LoadDepFile(Edge* edge, const string& path, string* err) { METRIC_RECORD("depfile load"); string content = disk_interface_->ReadFile(path, err); - if (!err->empty()) + if (!err->empty()) { + *err = "loading '" + path + "': " + *err; return false; + } // On a missing depfile: return false and empty *err. if (content.empty()) return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/manifest_parser.cc new/ninja/src/manifest_parser.cc --- old/ninja/src/manifest_parser.cc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/src/manifest_parser.cc 2013-02-22 14:20:51.000000000 +0100 @@ -23,6 +23,7 @@ #include "metrics.h" #include "state.h" #include "util.h" +#include "version.h" ManifestParser::ManifestParser(State* state, FileReader* file_reader) : state_(state), file_reader_(file_reader) { @@ -66,10 +67,15 @@ case Lexer::IDENT: { lexer_.UnreadToken(); string name; - EvalString value; - if (!ParseLet(&name, &value, err)) + EvalString let_value; + if (!ParseLet(&name, &let_value, err)) return false; - env_->AddBinding(name, value.Evaluate(env_)); + string value = let_value.Evaluate(env_); + // Check ninja_required_version immediately so we can exit + // before encountering any syntactic surprises. + if (name == "ninja_required_version") + CheckNinjaVersion(value); + env_->AddBinding(name, value); break; } case Lexer::INCLUDE: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/msvc_helper_main-win32.cc new/ninja/src/msvc_helper_main-win32.cc --- old/ninja/src/msvc_helper_main-win32.cc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/src/msvc_helper_main-win32.cc 2013-02-22 14:20:51.000000000 +0100 @@ -44,6 +44,31 @@ } } +void WriteDepFileOrDie(const char* object_path, CLWrapper* cl) { + string depfile_path = string(object_path) + ".d"; + FILE* depfile = fopen(depfile_path.c_str(), "w"); + if (!depfile) { + unlink(object_path); + Fatal("opening %s: %s", depfile_path.c_str(), GetLastErrorString().c_str()); + } + if (fprintf(depfile, "%s: ", object_path) < 0) { + unlink(object_path); + fclose(depfile); + unlink(depfile_path.c_str()); + Fatal("writing %s", depfile_path.c_str()); + } + vector<string> headers = cl->GetEscapedResult(); + for (vector<string>::iterator i = headers.begin(); i != headers.end(); ++i) { + if (fprintf(depfile, "%s\n", i->c_str()) < 0) { + unlink(object_path); + fclose(depfile); + unlink(depfile_path.c_str()); + Fatal("writing %s", depfile_path.c_str()); + } + } + fclose(depfile); +} + } // anonymous namespace int MSVCHelperMain(int argc, char** argv) { @@ -95,17 +120,7 @@ cl.SetEnvBlock((void*)env.data()); int exit_code = cl.Run(command); - string depfile = string(output_filename) + ".d"; - FILE* output = fopen(depfile.c_str(), "w"); - if (!output) { - Fatal("opening %s: %s", depfile.c_str(), GetLastErrorString().c_str()); - } - fprintf(output, "%s: ", output_filename); - vector<string> headers = cl.GetEscapedResult(); - for (vector<string>::iterator i = headers.begin(); i != headers.end(); ++i) { - fprintf(output, "%s\n", i->c_str()); - } - fclose(output); + WriteDepFileOrDie(output_filename, &cl); return exit_code; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/ninja.cc new/ninja/src/ninja.cc --- old/ninja/src/ninja.cc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/src/ninja.cc 2013-02-22 14:20:51.000000000 +0100 @@ -41,16 +41,13 @@ #include "metrics.h" #include "state.h" #include "util.h" +#include "version.h" // Defined in msvc_helper_main-win32.cc. int MSVCHelperMain(int argc, char** argv); namespace { -/// The version number of the current Ninja release. This will always -/// be "git" on trunk. -const char* kVersion = "git"; - /// Global information passed into subtools. struct Globals { Globals() : state(new State()) {} @@ -109,7 +106,7 @@ " -C DIR change to DIR before doing anything else\n" " -f FILE specify input build file [default=build.ninja]\n" "\n" -" -j N run N jobs in parallel [default=%d]\n" +" -j N run N jobs in parallel [default=%d, derived from CPUs available]\n" " -l N do not start new jobs if the load average is greater than N\n" #ifdef _WIN32 " (not yet implemented on Windows)\n" @@ -121,7 +118,7 @@ " -d MODE enable debugging (use -d list to list modes)\n" " -t TOOL run a subtool (use -t list to list subtools)\n" " terminates toplevel options; further flags are passed to the tool\n", - kVersion, config.parallelism); + kNinjaVersion, config.parallelism); } /// Choose a default value for the -j (parallelism) flag. @@ -772,7 +769,7 @@ working_dir = optarg; break; case OPT_VERSION: - printf("%s\n", kVersion); + printf("%s\n", kNinjaVersion); return 0; case 'h': default: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/util.cc new/ninja/src/util.cc --- old/ninja/src/util.cc 2013-01-10 20:39:40.000000000 +0100 +++ new/ninja/src/util.cc 2013-02-22 14:20:51.000000000 +0100 @@ -325,7 +325,7 @@ } #endif -#ifdef _WIN32 +#if defined(_WIN32) || defined(__CYGWIN__) double GetLoadAverage() { // TODO(nicolas.despres@gmail.com): Find a way to implement it on Windows. // Remember to also update Usage() when this is fixed. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/version.cc new/ninja/src/version.cc --- old/ninja/src/version.cc 1970-01-01 01:00:00.000000000 +0100 +++ new/ninja/src/version.cc 2013-02-22 14:20:51.000000000 +0100 @@ -0,0 +1,57 @@ +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "version.h" + +#include <stdlib.h> + +#include "util.h" + +const char* kNinjaVersion = "1.1.0.git"; + +void ParseVersion(const string& version, int* major, int* minor) { + size_t end = version.find('.'); + *major = atoi(version.substr(0, end).c_str()); + *minor = 0; + if (end != string::npos) { + size_t start = end + 1; + end = version.find('.', start); + *minor = atoi(version.substr(start, end).c_str()); + } +} + +void CheckNinjaVersion(const string& version) { + int bin_major, bin_minor; + ParseVersion(kNinjaVersion, &bin_major, &bin_minor); + int file_major, file_minor; + ParseVersion(version, &file_major, &file_minor); + + if (bin_major > file_major) { + Warning("ninja executable version (%s) greater than build file " + "ninja_required_version (%s); versions may be incompatible.", + kNinjaVersion, version.c_str()); + return; + } + + if ((bin_major == file_major && bin_minor < file_minor) || + bin_major < file_major) { + Fatal("ninja version (%s) incompatible with build file " + "ninja_required_version version (%s).", + kNinjaVersion, version.c_str()); + } +} + + + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ninja/src/version.h new/ninja/src/version.h --- old/ninja/src/version.h 1970-01-01 01:00:00.000000000 +0100 +++ new/ninja/src/version.h 2013-02-22 14:20:51.000000000 +0100 @@ -0,0 +1,32 @@ +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef NINJA_VERSION_H_ +#define NINJA_VERSION_H_ + +#include <string> +using namespace std; + +/// The version number of the current Ninja release. This will always +/// be "git" on trunk. +extern const char* kNinjaVersion; + +/// Parse the major/minor components of a version string. +void ParseVersion(const string& version, int* major, int* minor); + +/// Check whether \a version is compatible with the current Ninja version, +/// aborting if not. +void CheckNinjaVersion(const string& required_version); + +#endif // NINJA_VERSION_H_ -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de