Sync from SUSE:SLFO:Main ninja revision 83fe305d16eb928a0c060f391e422a73

This commit is contained in:
Adrian Schröter 2024-05-03 17:03:33 +02:00
commit b2e5bb1c07
7 changed files with 429 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

12
macros.ninja Normal file
View File

@ -0,0 +1,12 @@
%__ninja %{_bindir}/ninja
%__ninja_common_opts -v %{?_smp_mflags}
%ninja_build \
%{__ninja} %{__ninja_common_opts}
%ninja_install \
DESTDIR=%{buildroot} %{__ninja} install %{__ninja_common_opts}
%ninja_test \
%{__ninja} test %{__ninja_common_opts}

BIN
ninja-1.11.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,41 @@
Index: src/subprocess_test.cc
===================================================================
--- a/src/subprocess_test.cc.orig
+++ b/src/subprocess_test.cc
@@ -216,36 +216,6 @@ TEST_F(SubprocessTest, SetWithMulti) {
}
}
-#if defined(USE_PPOLL)
-TEST_F(SubprocessTest, SetWithLots) {
- // Arbitrary big number; needs to be over 1024 to confirm we're no longer
- // hostage to pselect.
- const unsigned kNumProcs = 1025;
-
- // Make sure [ulimit -n] isn't going to stop us from working.
- rlimit rlim;
- ASSERT_EQ(0, getrlimit(RLIMIT_NOFILE, &rlim));
- if (rlim.rlim_cur < kNumProcs) {
- printf("Raise [ulimit -n] above %u (currently %lu) to make this test go\n",
- kNumProcs, rlim.rlim_cur);
- return;
- }
-
- vector<Subprocess*> procs;
- for (size_t i = 0; i < kNumProcs; ++i) {
- Subprocess* subproc = subprocs_.Add("/bin/echo");
- ASSERT_NE((Subprocess *) 0, subproc);
- procs.push_back(subproc);
- }
- while (!subprocs_.running_.empty())
- subprocs_.DoWork();
- for (size_t i = 0; i < procs.size(); ++i) {
- ASSERT_EQ(ExitSuccess, procs[i]->Finish());
- ASSERT_NE("", procs[i]->GetOutput());
- }
- ASSERT_EQ(kNumProcs, subprocs_.finished_.size());
-}
-#endif // !__APPLE__ && !_WIN32
// TODO: this test could work on Windows, just not sure how to simply
// read stdin.

11
ninja-re2c-g.patch Normal file
View File

@ -0,0 +1,11 @@
--- ninja-1.11.0/configure.py.orig 2022-05-18 10:45:04.772811782 +0200
+++ ninja-1.11.0/configure.py 2022-05-18 10:45:13.968857314 +0200
@@ -479,7 +479,7 @@
return False
if has_re2c():
n.rule('re2c',
- command='re2c -b -i --no-generation-date --no-version -o $out $in',
+ command='re2c -g -b -i --no-generation-date --no-version -o $out $in',
description='RE2C $out')
# Generate the .cc files in the source directory so we can check them in.
n.build(src('depfile_parser.cc'), 're2c', src('depfile_parser.in.cc'))

268
ninja.changes Normal file
View File

@ -0,0 +1,268 @@
-------------------------------------------------------------------
Wed Aug 31 05:32:49 UTC 2022 - Christoph G <foss@grueninger.de>
- update to 1.11.1:
* A fix for a potential SIGFPE in the new (Docker-compatible)
default number of jobs detection.
-------------------------------------------------------------------
Wed May 18 08:46:55 UTC 2022 - Paolo Stivanin <info@paolostivanin.com>
- update to 1.11.0:
* this release adds Validation Nodes which are a new way to add jobs
like linters or static analyzers to the build graph
* support cpu limit on docker
* fixes to disk_interface
* fixes to ninja -t parameter
* optimize ninja -d stats
* add -q (quiet) option
- rebase ninja-disable-maxprocs-test.patch
- rebase ninja-re2c-g.patch
-------------------------------------------------------------------
Mon Apr 5 21:51:58 UTC 2021 - Cristian Rodríguez <crrodriguez@opensuse.org>
- ninja-re2c-g.patch tell re2c to generate gcc specific code using
the -g flag, this usually results in lexers that are 20-25% faster.
-------------------------------------------------------------------
Tue Dec 29 18:55:10 UTC 2020 - Dirk Müller <dmueller@suse.com>
- update to 1.10.2:
* The browse tool is now enabled when building with CMake
(so it's part of the official binaries again)
* it should now work in all circumstances to run the restat tool
by the generator on Windows
-------------------------------------------------------------------
Wed Nov 4 16:33:12 UTC 2020 - Ludwig Nussel <lnussel@suse.de>
- LFS fix for 32bit arch builds (gh#ninja-build/ninja#829)
-------------------------------------------------------------------
Mon Aug 24 20:25:43 UTC 2020 - Dirk Mueller <dmueller@suse.com>
- update to 1.10.1:
* https://groups.google.com/g/ninja-build/c/QQM54eAhrjU/m/q5zn_zTlAQAJ
-------------------------------------------------------------------
Mon Feb 3 21:21:44 UTC 2020 - Christoph G <foss@grueninger.de>
- update to version 1.10.0:
* New dyndep binding to support Fortran and C++20 modules
* Also there are three new tools: cleandead, restat, rules
-------------------------------------------------------------------
Wed Sep 11 12:49:19 UTC 2019 - Martin Pluskal <mpluskal@suse.com>
- Run more tests
- Small spec file improvements
-------------------------------------------------------------------
Wed Jan 30 20:23:01 UTC 2019 - Christoph G <foss@grueninger.de>
- Update to version 1.9.0:
* High-resolution timestamps
- Update ninja-disable-maxprocs-test.patch to include
upstream changes
- Drop ninja-64bit-timestamps.patch as it is part of 1.9.0
-------------------------------------------------------------------
Mon Jan 14 13:27:10 UTC 2019 - Adam Mizerski <adam@mizerski.pl>
- fix bash-completion path
-------------------------------------------------------------------
Thu Dec 6 09:56:57 UTC 2018 - Ismail Dönmez <idonmez@suse.com>
- Add ninja-64bit-timestamps.patch from upstream to use 64bit
timestamps, fixes bsc#1118619
- Fix bash-completion install path
-------------------------------------------------------------------
Tue Sep 12 08:38:18 UTC 2017 - mpluskal@suse.com
- Update to version 1.8.2:
* Restore tolerance of self-referencing phony build statements
* Factor ManifestParser options into a structure
- Drop support for building on old distributions
-------------------------------------------------------------------
Thu Sep 7 14:44:24 UTC 2017 - idonmez@suse.com
- Version update to 1.8.1
* Support more path components
* Performance improvement in highly parallerized and large build
-------------------------------------------------------------------
Wed Dec 7 09:52:57 UTC 2016 - mpluskal@suse.com
- Add macros.ninja (boo#1014177)
- Backport latest release to SLE12 bsc#1055189 fate#323787
-------------------------------------------------------------------
Tue Dec 6 14:07:36 UTC 2016 - badshah400@gmail.com
- Add macros.ninja as an external source file and install it to
the %{_rpmconfigdir}/macros.d/; this installs macros for RPM
that are in turn used by the RPM macros for meson.
-------------------------------------------------------------------
Sun Nov 13 11:08:00 UTC 2016 - mpluskal@suse.com
- Update to version 1.7.2:
* %e and %r work again in dumb terminals (#1146, #1148)
* `-t browse` now HTML-escapes rule names (#1157)
* an edge may now have 0 explicit outputs if it has implicit
outputs (#1159)
* make misc/measure.py python 3-compatible
* misc/write_fake_manifest.py now optionally writes source files,
use it to quickly produce large, buildable projects for testing
(#1109, #1198)
* on newer FreeBSDs, use ppoll()
- Refresh ninja-disable-maxprocs-test.patch
-------------------------------------------------------------------
Fri Apr 29 17:34:13 UTC 2016 - idonmez@suse.com
- Update to version 1.7.1
* Change default NINJA_STATUS to [%f/%t] github issue #1143
-------------------------------------------------------------------
Thu Apr 28 05:24:46 UTC 2016 - foss@grueninger.de
- update to version 1.7.0
* ninja now supports implicit outputs.
* Ninja's output has slightly changed, to make it easier to
automated tools to look at ninja's output.
* Ninja now explicitly handles SIGHUP and cleans up after itself.
* Ninja now uses posix_spawn instead of fork/exec to launch
subprocesses (on POSIX).
- adjust links to new wesite
-------------------------------------------------------------------
Tue Apr 26 13:27:25 UTC 2016 - matz@suse.de
- Make it build on SLE11 (use python2 there).
-------------------------------------------------------------------
Tue Feb 23 10:48:59 UTC 2016 - sndirsch@suse.com
- needed for building current llvm on sle12
(fate #315643-315645, 319159-319161, 319618)
-------------------------------------------------------------------
Sat Jan 30 21:39:59 UTC 2016 - mpluskal@suse.com
- Update dependencies
- Use optflags when building
- Make building more verbose
-------------------------------------------------------------------
Wed Jul 1 08:04:09 UTC 2015 - foss@grueninger.de
- Update to version 1.6.0
* rules are now scoped to the subninja they're in.
* dupe edges with multiple outputs now uses first edge
instead of last (#867)
* pools actually work now
* generators can now run more often than twice if needed
* unexpected output names now cause a rebuild instead of
a hard error
* POSIX-specific changes
+ child processes get detached from terminal
+ check for SIGINT after ppoll/pselect -> faster Ctrl-C
+ add an explicit SIGTERM signal handler
* Ran ninja under afl-fuzz and fixed all crashes and bugs it found
+ fix crashes on cyclic graphs with multiple outputs
+ failing stat() now aborts build
+ cyclic rule bindings no longer crash
+ dependency cycles with multiple outputs no longer get
ninja into a stuck state
- Update ninja-disable-maxprocs-test.patch to match upstream
changes
- use Python 3 for configure
-------------------------------------------------------------------
Wed Nov 26 07:42:03 UTC 2014 - idonmez@suse.com
- Update to version 1.5.3
* Reaping finished subprocesses now has precedence over
starting new jobs
* ninja no longer depends on googletest
- Install bash/zsh completion
- Install vim syntax file
- Implement %check
- Add ninja-disable-maxprocs-test.patch to disable max procs test,
it needs a ulimit raise.
-------------------------------------------------------------------
Thu Sep 11 10:21:01 UTC 2014 - idonmez@suse.com
- Only depend on python-base to trim down BuildRequires
- Do not build the html manual
- Use upstream pristine tarball
-------------------------------------------------------------------
Sun Jun 29 10:25:33 UTC 2014 - idonmez@suse.com
- Update to version 1.5.1
* Recompacting removes more entries from the build and deps logs.
* Add a manifest parsing perftest and generator that generates
random build manifests.
* $in, $out are escaped more robustly.
* `depfile=$out.d` now works if $out gets escaped.
* ninja doesn't error out when it tries to create a directory and
the directory already exists.
* Ninja now accepts both / and \ on windows when making directories.
* \r\n line endings are now accepted in depfiles.
* depfile file names can now contain '{' and '}'.
* -t compdb no longer crashes on edges with emtpy inputs.
* 'keeprsp' is now included in the spelling suggestestions for -d
* Many improvements to ninja-mode.el.
* ninja_syntax.py is now faster.
* bash completion and zsh completion provides completions more often.
* ninja.vim now highlights $$ correctly.
-------------------------------------------------------------------
Wed Sep 18 08:32:52 UTC 2013 - idonmez@suse.com
- Update to version 1.4.0
* Bug fixes
- Fix version field. Its 1.x not 3.x
-------------------------------------------------------------------
Wed Jun 5 14:36:06 UTC 2013 - idonmez@suse.com
- Update to git hash 0f53fd3
* Version 3.0 now
* Don't poll pipes using POLLRDHUP
* Recompact the deps log when it gets too big
-------------------------------------------------------------------
Wed Apr 17 09:19:56 UTC 2013 - idonmez@suse.com
- Update to git hash 7bf53c6
* Build ninja itself in deps mode
* Bugfixes
* Documentation updates
-------------------------------------------------------------------
Tue Mar 12 15:51:24 UTC 2013 - idonmez@suse.com
- Update to git hash ecc876e
* Add compdb command to generate compile_commands.json for clang.
* Add elapsed time (%e) to NINJA_STATUS.
-------------------------------------------------------------------
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
-------------------------------------------------------------------
Thu Jan 10 19:38:44 UTC 2013 - idonmez@suse.com
- First release

71
ninja.spec Normal file
View File

@ -0,0 +1,71 @@
#
# spec file for package ninja
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: ninja
Version: 1.11.1
Release: 0
Summary: A small build system closest in spirit to Make
License: Apache-2.0
Group: Development/Tools/Building
URL: https://ninja-build.org/
Source0: https://github.com/ninja-build/ninja/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: macros.ninja
Patch1: ninja-disable-maxprocs-test.patch
Patch2: ninja-re2c-g.patch
BuildRequires: gcc-c++
BuildRequires: python3-base
BuildRequires: re2c
%description
Ninja is yet another build system. It takes as input the interdependencies
of files (typically source code and output executables) and orchestrates
building them, quickly.
%prep
%autosetup -p1
%build
export CFLAGS="%{optflags}"
%if "%__isa_bits" == "32"
CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
%endif
export CXXFLAGS="$CFLAGS"
python3 ./configure.py --bootstrap --verbose
%install
install -D -p -m 0755 ninja %{buildroot}%{_bindir}/ninja
install -D -p -m 0644 misc/zsh-completion %{buildroot}%{_datadir}/zsh/site-functions/_ninja
install -D -p -m 0644 misc/ninja.vim %{buildroot}%{_datadir}/vim/site/syntax/ninja.vim
install -D -p -m 0644 misc/bash-completion %{buildroot}%{_datadir}/bash-completion/completions/ninja
install -D -p -m 0644 %{SOURCE1} %{buildroot}%{_rpmconfigdir}/macros.d/macros.ninja
%check
./ninja all
./ninja_test
python3 ./misc/ninja_syntax_test.py
python3 ./misc/output_test.py
%files
%license COPYING
%{_bindir}/ninja
%{_datadir}/bash-completion
%{_datadir}/vim
%{_datadir}/zsh
%{_rpmconfigdir}/macros.d/macros.ninja
%changelog