Skip to content

Commit

Permalink
Merge pull request ninja-build#369 from maximuska/proposed/packaging-rpm
Browse files Browse the repository at this point in the history
packaging: added basic RPM building
  • Loading branch information
evmar committed Jul 27, 2012
2 parents 83d5629 + 0cd552c commit 7bf3541
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
20 changes: 20 additions & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,26 @@ def shell_escape(str):
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
33 changes: 33 additions & 0 deletions misc/packaging/ninja.spec
Original file line number Diff line number Diff line change
@@ -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}

0 comments on commit 7bf3541

Please sign in to comment.