# TODO # - webservers integration # - system js packages, jquery, jquery-ui, etc # - do we need to package .less and not minified .js? nose.cfg? # - handle upgrades on version change: # $ rb-site upgrade /path/to/rb/install Summary: Web-based code review tool Name: reviewboard Version: 1.7.4 Release: 0.13 License: MIT Group: Applications/Networking URL: http://www.review-board.org/ Source0: http://downloads.reviewboard.org/releases/ReviewBoard/1.7/ReviewBoard-%{version}.tar.gz # Source0-md5: 6576730e935964a9780feffa52114460 Source1: apache.conf Patch0: default-cache-file-path.patch BuildRequires: fslint BuildRequires: python-django >= 1.4.3 BuildRequires: python-django-evolution >= 0.6.7 BuildRequires: python-djblets >= 0.7.8 BuildRequires: python-jsmin BuildRequires: python-modules BuildRequires: python-setuptools BuildRequires: python-sqlite BuildRequires: rpm-pythonprov BuildRequires: rpmbuild(macros) >= 1.219 BuildRequires: sed >= 4.0 Requires: patch Requires: patchutils Requires: python-PIL Requires: python-dateutil Requires: python-django >= 1.4.3 Requires: python-django-evolution >= 0.6.7 Requires: python-django-pipeline >= 1.2.22 Requires: python-djblets >= 0.7.1 Requires: python-docutils Requires: python-flup Requires: python-markdown >= 2.2.1 Requires: python-memcached Requires: python-mimeparse Requires: python-nose Requires: python-paramiko >= 1.7.6 Requires: python-pygments >= 1.5 Requires: python-pysvn Requires: python-pytz Requires: python-recaptcha Requires: python-slimit # Pull one of webserver modes Suggests: apache-mod_python Suggests: apache-mod_wsgi # Pull in the client libraries for all of the supported databases Requires: python-MySQLdb Requires: python-psycopg2 Requires: python-sqlite # Pull in the tools for working with common repositories Requires: git-core Requires: mercurial Requires: subversion # optional things Suggests: python-ldap Suggests: python-rbtools Obsoletes: ReviewBoard < 1.7.0 BuildArch: noarch BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _webapps /etc/webapps %define _webapp %{name} %define _sysconfdir %{_webapps}/%{_webapp} %define _appdir %{_datadir}/%{_webapp} %description Review Board is a powerful web-based code review tool that offers developers an easy way to handle code reviews. It scales well from small projects to large companies and offers a variety of tools to take much of the stress and time out of the code review process. %prep %setup -q -n ReviewBoard-%{version} %patch0 -p1 %{__sed} -i -e '1s,^#!.*python,#!%{__python},' reviewboard/manage.py # Remove packaged egg-info so it's regenerated by setup.py %{__rm} -r ReviewBoard*.egg-info %build %{__python} setup.py build %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/var/cache/%{name} %{__python} setup.py install \ --skip-build \ --optimize=2 \ --root $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_sysconfdir} cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/apache.conf cp -p $RPM_BUILD_ROOT%{_sysconfdir}/{apache,httpd}.conf # create htdocs structure that rb-site install would create # TODO: maybe move rb htdocs instead of symlinking here? D=$RPM_BUILD_ROOT%{_appdir}/htdocs install -d $D/{media/{ext,uploaded/images},static} ln -s %{py_sitescriptdir}/%{name}/htdocs/errordocs $D S=$D/static ln -s %{py_sitescriptdir}/%{name}/htdocs/static/admin $S/admin ln -s %{py_sitescriptdir}/djblets/static $S/djblets ln -s %{py_sitescriptdir}/%{name}/htdocs/static/lib $S/lib ln -s %{py_sitescriptdir}/%{name}/htdocs/static/rb $S/rb # The rb-site executable has a PyGTK GUI, so would normally # require us to ship a .desktop file. However it can only be run when supplied # a directory as a command-line argument, hence it wouldn't be meaningful to # create a .desktop file for it. %py_postclean # hardlink files with fingerprinted variants findup -m $RPM_BUILD_ROOT # scripts that have a shebang and are meaningful to run; make executable: # need to reinstall as py_postclean has removed .py install -p reviewboard/manage.py $RPM_BUILD_ROOT%{py_sitescriptdir}/%{name}/manage.py # Remove test data from the installed packages #%{__rm} $RPM_BUILD_ROOT%{py_sitescriptdir}/%{name}/nose.cfg %{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/%{name}/diffviewer/testdata \ $RPM_BUILD_ROOT%{py_sitescriptdir}/%{name}/scmtools/testdata \ $RPM_BUILD_ROOT%{py_sitescriptdir}/webtests %clean rm -rf $RPM_BUILD_ROOT %triggerin -- apache1 < 1.3.37-3, apache1-base %webapp_register apache %{_webapp} %triggerun -- apache1 < 1.3.37-3, apache1-base %webapp_unregister apache %{_webapp} %triggerin -- apache < 2.2.0, apache-base %webapp_register httpd %{_webapp} %triggerun -- apache < 2.2.0, apache-base %webapp_unregister httpd %{_webapp} %files %defattr(644,root,root,755) %doc AUTHORS COPYING INSTALL NEWS README %dir %attr(750,root,http) %{_sysconfdir} %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/apache.conf %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/httpd.conf %attr(755,root,root) %{_bindir}/rb-site %attr(755,root,root) %{_bindir}/rbssh %dir %attr(770,root,http) /var/cache/%{name} %dir %{py_sitescriptdir}/%{name} %{py_sitescriptdir}/%{name}/*.py[co] %{py_sitescriptdir}/%{name}/nose.cfg %attr(755,root,root) %{py_sitescriptdir}/%{name}/manage.py %{py_sitescriptdir}/%{name}/accounts %{py_sitescriptdir}/%{name}/admin %{py_sitescriptdir}/%{name}/attachments %{py_sitescriptdir}/%{name}/changedescs %{py_sitescriptdir}/%{name}/cmdline %{py_sitescriptdir}/%{name}/diffviewer %{py_sitescriptdir}/%{name}/extensions %{py_sitescriptdir}/%{name}/hostingsvcs %{py_sitescriptdir}/%{name}/htdocs %{py_sitescriptdir}/%{name}/notifications %{py_sitescriptdir}/%{name}/reviews %{py_sitescriptdir}/%{name}/scmtools %{py_sitescriptdir}/%{name}/site %{py_sitescriptdir}/%{name}/ssh %{py_sitescriptdir}/%{name}/templates %{py_sitescriptdir}/%{name}/webapi %{py_sitescriptdir}/ReviewBoard-%{version}-*.egg-info %dir %{_appdir} %dir %{_appdir}/htdocs %{_appdir}/htdocs/static %{_appdir}/htdocs/errordocs # FIXME: media remap to /var %{_appdir}/htdocs/media %dir %{py_sitescriptdir}/%{name}/static %dir %{py_sitescriptdir}/%{name}/static/lib %dir %{py_sitescriptdir}/%{name}/static/lib/js %{py_sitescriptdir}/%{name}/static/lib/js/backbone-0.9.2.min.js %{py_sitescriptdir}/%{name}/static/lib/js/csshover2.htc %dir %{py_sitescriptdir}/%{name}/static/lib/js/flot %{py_sitescriptdir}/%{name}/static/lib/js/flot/excanvas.min.js %{py_sitescriptdir}/%{name}/static/lib/js/flot/jquery.flot.min.js %{py_sitescriptdir}/%{name}/static/lib/js/flot/jquery.flot.pie.js %{py_sitescriptdir}/%{name}/static/lib/js/flot/jquery.flot.pie.min.js %{py_sitescriptdir}/%{name}/static/lib/js/flot/jquery.flot.selection.js %{py_sitescriptdir}/%{name}/static/lib/js/flot/jquery.flot.selection.min.js %{py_sitescriptdir}/%{name}/static/lib/js/jasmine-1.3.1.js %{py_sitescriptdir}/%{name}/static/lib/js/jasmine-html-1.3.1.js %{py_sitescriptdir}/%{name}/static/lib/js/jquery-1.8.2.min.js %{py_sitescriptdir}/%{name}/static/lib/js/jquery-ui-1.8.24.custom.min.js %{py_sitescriptdir}/%{name}/static/lib/js/jquery.form.js %{py_sitescriptdir}/%{name}/static/lib/js/jquery.masonry.js %{py_sitescriptdir}/%{name}/static/lib/js/jquery.timesince.js %{py_sitescriptdir}/%{name}/static/lib/js/less-1.3.1.min.js %{py_sitescriptdir}/%{name}/static/lib/js/pngfix.htc %{py_sitescriptdir}/%{name}/static/lib/js/ui.autocomplete.js %{py_sitescriptdir}/%{name}/static/lib/js/ui.autocomplete.min.js %{py_sitescriptdir}/%{name}/static/lib/js/underscore-1.3.3.min.js %dir %{py_sitescriptdir}/%{name}/static/rb %dir %{py_sitescriptdir}/%{name}/static/rb/css %{py_sitescriptdir}/%{name}/static/rb/css/*.css %{py_sitescriptdir}/%{name}/static/rb/css/*.less %{py_sitescriptdir}/%{name}/static/rb/images %dir %{py_sitescriptdir}/%{name}/static/rb/js %{py_sitescriptdir}/%{name}/static/rb/js/*.js %{py_sitescriptdir}/%{name}/static/rb/js/models %{py_sitescriptdir}/%{name}/static/rb/js/utils %{py_sitescriptdir}/%{name}/static/rb/js/views