From 0cd552c0dc7b2aa1da692737f0f7d257b08ecdbc Mon Sep 17 00:00:00 2001 From: Maxim Kalaev Date: Thu, 26 Jul 2012 15:21:30 +0300 Subject: packaging: added basic RPM building --- configure.py | 20 ++++++++++++++++++++ misc/packaging/ninja.spec | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 misc/packaging/ninja.spec diff --git a/configure.py b/configure.py index bf2596c..b8c6d86 100755 --- a/configure.py +++ b/configure.py @@ -386,6 +386,26 @@ n.comment('Build only the main binary by default.') n.default(ninja) n.newline() +if host == 'linux': + n.comment('Packaging') + n.rule('rpmbuild', + command="rpmbuild \ + --define 'ver git' \ + --define \"rel `git rev-parse --short HEAD`\" \ + --define '_topdir %(pwd)/rpm-build' \ + --define '_builddir %{_topdir}' \ + --define '_rpmdir %{_topdir}' \ + --define '_srcrpmdir %{_topdir}' \ + --define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' \ + --define '_specdir %{_topdir}' \ + --define '_sourcedir %{_topdir}' \ + --quiet \ + -bb misc/packaging/ninja.spec", + description='Building RPM..') + n.build('rpm', 'rpmbuild', + implicit=['ninja','README', 'COPYING', doc('manual.html')]) + n.newline() + n.build('all', 'phony', all_targets) print 'wrote %s.' % BUILD_FILENAME diff --git a/misc/packaging/ninja.spec b/misc/packaging/ninja.spec new file mode 100644 index 0000000..d513c6d --- /dev/null +++ b/misc/packaging/ninja.spec @@ -0,0 +1,33 @@ +Summary: Ninja is a small build system with a focus on speed. +Name: ninja +Version: %{ver} +Release: %{rel}%{?dist} +Group: Development/Tools +License: Apache 2.0 +URL: https://github.com/martine/ninja + +%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. + +Ninja joins a sea of other build systems. Its distinguishing goal is to be fast. It is born from my work on the Chromium browser project, +which has over 30,000 source files and whose other build systems (including one built from custom non-recursive Makefiles) can take ten +seconds to start building after changing one file. Ninja is under a second. + +%build +# Assuming we've bootstrapped already.. +../ninja manual ninja -C .. + +%install +mkdir -p %{buildroot}%{_bindir} %{buildroot}%{_docdir} +cp -p ../ninja %{buildroot}%{_bindir}/ +git log --oneline --pretty=format:'%h: %s (%an, %cd)' --abbrev-commit --all > GITLOG + +%files +%defattr(-, root, root) +%doc GITLOG ../COPYING ../README ../doc/manual.html +%{_bindir}/* + +%clean +mv %{_topdir}/*.rpm .. +rm -rf %{_topdir} -- cgit v0.12