Blame aeolus-conductor.spec

a4a3969
%global app_root %{_datadir}/%{name}
a4a3969
%global doc_root %{_datadir}/%{name}-doc
a4a3969
a4a3969
Name:     aeolus-conductor
Chris Lalancette 29a8d11
Version:  0.4.0
80edc31
Release:  2%{?dist}
a4a3969
Summary:  The Aeolus Conductor
a4a3969
a4a3969
Group:    Applications/System
a4a3969
License:  GPLv2+ and MIT and BSD
a4a3969
URL:      http://aeolusproject.org
a4a3969
a4a3969
# to build source tarball
Scott Seago 028b759
# git clone  git://git.fedorahosted.org/aeolus/conductor.git
Scott Seago 028b759
# git checkout v0.3.0_RC_1
a4a3969
# make dist
Scott Seago 028b759
# cp aeolus-conductor-0.3.0.tar.gz ~/rpmbuild/SOURCES
Scott Seago 028b759
Source0:    aeolus-conductor-%{version}.tar.gz
a4a3969
a4a3969
Requires: ruby >= 1.8.1
a4a3969
Requires: ruby(abi) = 1.8
Chris Lalancette eb26e8d
Requires: rubygem(rails) >= 3.0.7
Chris Lalancette 29a8d11
Requires: rubygem(haml) >= 3.1
a4a3969
Requires: rubygem(nokogiri) >= 1.4.0
Chris Lalancette eb26e8d
Requires: rubygem(will_paginate) >= 3.0
Scott Seago 028b759
Requires: rubygem(deltacloud-client) >= 0.4.0
a4a3969
Requires: rubygem(simple-navigation)
Chris Lalancette 29a8d11
Requires: rubygem(rest-client) >= 1.6.1
a4a3969
Requires: rubygem(builder)
a4a3969
Requires: rubygem(json)
a4a3969
Requires: rubygem(rack-restful_submit)
a4a3969
Requires: rubygem(uuidtools)
Chris Lalancette 29a8d11
Requires: rubygem(sqlite3)
Chris Lalancette eb26e8d
Requires: rubygem(fastercsv)
Scott Seago 028b759
Requires: rubygem(rails_warden)
Scott Seago 028b759
Requires: rubygem(aeolus-image)
Chris Lalancette 29a8d11
Requires: rubygem(pg)
Scott Seago 028b759
Requires: rubygem(ruby-net-ldap)
Scott Seago 028b759
Requires: rubygem(oauth)
a4a3969
Requires: postgresql
a4a3969
Requires: postgresql-server
a4a3969
a4a3969
# to ensure the service is actually started
a4a3969
# and is accessible in the init script
a4a3969
Requires: curl
a4a3969
Scott Seago 028b759
BuildRequires: rubygem(sass)
Chris Lalancette eb26e8d
a4a3969
BuildArch: noarch
a4a3969
a4a3969
%description
a4a3969
The Aeolus Conductor, a web UI for managing cloud instances.
a4a3969
a4a3969
%package daemons
a4a3969
Summary:   Aeolus Conductor daemons
a4a3969
Group:     Applications/Internet
a4a3969
License:   GPLv2+
a4a3969
Requires: %{name} = %{version}-%{release}
a4a3969
Requires: httpd >= 2.0
a4a3969
Requires: rubygem(thin) >= 1.2.5
a4a3969
Requires(post): chkconfig
a4a3969
Requires(preun): chkconfig
a4a3969
Requires(preun): initscripts
a4a3969
a4a3969
%description daemons
a4a3969
The configuration and daemons necessary to run and proxy the Aeolus Conductor.
a4a3969
a4a3969
%package doc
a4a3969
Summary: Aeolus Conductor documentation
a4a3969
Group:   Documentation
a4a3969
Requires: %{name} = %{version}-%{release}
a4a3969
a4a3969
%description doc
a4a3969
Documentation for the Aeolus Conductor.
a4a3969
a4a3969
%package devel
a4a3969
Summary: Aeolus Conductor development and testing files
a4a3969
Group:   Applications/Internet
a4a3969
Requires: %{name} = %{version}-%{release}
a4a3969
Requires: rubygem(cucumber)
a4a3969
Requires: rubygem(rspec)
a4a3969
Requires: rubygem(timecop)
a4a3969
Requires: rubygem(cucumber-rails)
Scott Seago 028b759
Requires: rubygem(rspec-rails) >= 2.6.1
Scott Seago 028b759
Requires: rubygem(capybara) >= 1.0.0
Chris Lalancette 29a8d11
Requires: rubygem(database_cleaner) >= 0.5.0
a4a3969
Requires: rubygem(factory_girl)
Chris Lalancette 29a8d11
Requires: rubygem(vcr)
Chris Lalancette 29a8d11
Requires: rubygem(factory_girl_rails)
Scott Seago 028b759
Requires: rubygem(webmock)
Scott Seago 028b759
Requires: rubygem(launchy)
a4a3969
a4a3969
%description devel
a4a3969
Tests and other development tools for the Aeolus Conductor.
a4a3969
a4a3969
%prep
a4a3969
%setup -q
a4a3969
a4a3969
%build
a4a3969
a4a3969
%pre
a4a3969
getent group aeolus >/dev/null || /usr/sbin/groupadd -g 451 -r aeolus 2>/dev/null || :
a4a3969
getent passwd aeolus >/dev/null || \
a4a3969
    /usr/sbin/useradd -u 451 -g aeolus -c "aeolus" \
a4a3969
    -s /sbin/nologin -r -d /var/aeolus aeolus 2> /dev/null || :
a4a3969
a4a3969
%install
a4a3969
%{__mkdir} -p %{buildroot}
a4a3969
%{__mkdir} -p %{buildroot}%{app_root}
a4a3969
%{__mkdir} -p %{buildroot}%{doc_root}
a4a3969
%{__mkdir} -p %{buildroot}%{_initrddir}
a4a3969
%{__mkdir} -p %{buildroot}%{_sysconfdir}/sysconfig
a4a3969
%{__mkdir} -p %{buildroot}%{_sysconfdir}/httpd/conf.d
a4a3969
%{__mkdir} -p %{buildroot}%{_sysconfdir}/logrotate.d
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{_localstatedir}/lib/%{name}
a4a3969
%{__mkdir} -p %{buildroot}%{_localstatedir}/log/%{name}
a4a3969
%{__mkdir} -p %{buildroot}%{_localstatedir}/run/%{name}
a4a3969
a4a3969
# now copy over the rails source files.  This is a bit verbose, but only
a4a3969
# takes in the stuff we need (and no backup files, etc)
a4a3969
a4a3969
# we use these special constructs to find only the files we care about.
a4a3969
# the name of the variable has to be the file extension you are looking for.
a4a3969
# the contents of the variable are the directories in which files with this
a4a3969
# extension may exist.  For instance cgi="public" means that src/public/*.cgi
a4a3969
# will be copied from the source into the RPM.
a4a3969
builder="app/views/errors"
a4a3969
css="public/stylesheets public/stylesheets/jquery.ui-1.8.1 \
a4a3969
     public/javascripts/jquery-svg"
a4a3969
feature="features"
a4a3969
gif="public/images public/stylesheets/images"
a4a3969
haml="app/views/hardware_profiles app/views/realm_mappings \
a4a3969
      app/views/users app/views/provider_accounts \
a4a3969
      app/views/roles app/views/providers app/views/settings \
a4a3969
      app/views/realms app/views/pool_families app/views/layouts\
a4a3969
      app/views/quotas app/views/permissions \
a4a3969
      app/views/deployments app/views/pools \
a4a3969
      app/views/instances app/views/user_sessions \
Scott Seago 028b759
      app/views/catalog_entries app/views/catalogs \
Scott Seago 028b759
      app/views/provider_types"
a4a3969
html="public"
a4a3969
ico="public"
a4a3969
jpg="public/images public/stylesheets/images"
a4a3969
js="public/javascripts public/javascripts/jquery-svg \
a4a3969
    public/javascripts/jquery.ui-1.8.1 \
Chris Lalancette eb26e8d
    public/javascripts/jquery.ui-1.8.1/ui/minified \
Chris Lalancette eb26e8d
    public/javascripts/backbone"
a4a3969
json="spec/fixtures"
a4a3969
key="features/upload_files"
a4a3969
opts="spec"
a4a3969
png="public/images public/images/icons public/stylesheets/images \
a4a3969
     public/stylesheets/jquery.ui-1.8.1/images"
a4a3969
rake="lib/tasks"
Chris Lalancette 29a8d11
rb="app/models app/controllers app/helpers app/services app/util config \
Scott Seago 028b759
    config/initializers config/environments db db/migrate \
Chris Lalancette 29a8d11
    features/support features/step_definitions lib spec spec/controllers \
Chris Lalancette 29a8d11
    spec/factories spec/helpers spec/models spec/services"
a4a3969
rhtml="app/views/layouts"
a4a3969
svg="public/images public/images/icons public/javascripts/jquery-svg"
a4a3969
ttf="public/fonts"
a4a3969
txt="public"
a4a3969
yml="config config/locales"
a4a3969
Chris Lalancette 29a8d11
for filetype in builder css feature gif haml html ico jpg js json key opts png \
Chris Lalancette 29a8d11
    rake rb rhtml scss svg ttf txt yml; do
a4a3969
    dirs=${!filetype}
a4a3969
a4a3969
    for dir in $dirs; do
a4a3969
        %{__mkdir} -p %{buildroot}%{app_root}/$dir
a4a3969
        %{__cp} src/$dir/*.$filetype %{buildroot}%{app_root}/$dir
a4a3969
    done
a4a3969
done
a4a3969
Chris Lalancette eb26e8d
# precompile stylesheets
Scott Seago 028b759
%{__mkdir} %{buildroot}%{app_root}/public/stylesheets/compiled
Scott Seago 028b759
sass --style compact ./src/app/stylesheets/application.scss %{buildroot}%{app_root}/public/stylesheets/compiled/application.css
Scott Seago 028b759
sass --style compact ./src/app/stylesheets/custom.scss %{buildroot}%{app_root}/public/stylesheets/compiled/custom.css
Scott Seago 028b759
sass --style compact ./src/app/stylesheets/layout.scss %{buildroot}%{app_root}/public/stylesheets/compiled/layout.css
Scott Seago 028b759
sass --style compact ./src/app/stylesheets/login.scss %{buildroot}%{app_root}/public/stylesheets/compiled/login.css
Chris Lalancette eb26e8d
a4a3969
# misc files
a4a3969
%{__cp} src/Rakefile %{buildroot}%{app_root}
a4a3969
%{__cp} src/config.ru %{buildroot}%{app_root}
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{app_root}/config
a4a3969
%{__cp} src/config/database.pg %{buildroot}%{app_root}/config
a4a3969
%{__cp} src/config/database.mysql %{buildroot}%{app_root}/config
a4a3969
%{__cp} src/config/database.sqlite %{buildroot}%{app_root}/config
a4a3969
# here we copy the postgres configuration to be the default.  While this is
a4a3969
# something of a policy we are encoding in the RPM, it is nice to give the user
a4a3969
# sane defaults.  The user can still override this with their own configuration
a4a3969
%{__cp} src/config/database.pg %{buildroot}%{app_root}/config/database.yml
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{app_root}/dbomatic
a4a3969
%{__cp} src/dbomatic/dbomatic %{buildroot}%{app_root}/dbomatic
a4a3969
a4a3969
# move documentation to the correct place
a4a3969
%{__cp} src/doc/* %{buildroot}/%{doc_root}
a4a3969
a4a3969
# copy over init scripts and various config
a4a3969
%{__cp} conf/aeolus-conductor %{buildroot}%{_initrddir}
a4a3969
%{__cp} conf/conductor-dbomatic %{buildroot}%{_initrddir}
a4a3969
%{__cp} conf/aeolus-conductor-httpd.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/aeolus-conductor.conf
a4a3969
%{__cp} conf/aeolus-conductor.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/aeolus-conductor
a4a3969
%{__cp} conf/aeolus-conductor.sysconf %{buildroot}%{_sysconfdir}/sysconfig/aeolus-conductor
a4a3969
%{__cp} conf/conductor-rails.sysconf %{buildroot}%{_sysconfdir}/sysconfig/conductor-rails
Scott Seago 028b759
%{__mkdir} -p %{buildroot}%{_libdir}/../lib/tmpfiles.d
Scott Seago 028b759
%{__cp} conf/aeolus-tmpfiles.conf %{buildroot}%{_libdir}/../lib/tmpfiles.d/aeolus.conf
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{app_root}/config/image_descriptor_xmls
a4a3969
a4a3969
# Creating these files now to make sure the logfiles will be owned
a4a3969
# by aeolus:aeolus. This is a temporary workaround while we've still
a4a3969
# got root-owned daemon processes. Once we resolve that issue
a4a3969
# these files will no longer be added explicitly here.
a4a3969
touch %{buildroot}%{_localstatedir}/log/%{name}/thin.log
a4a3969
touch %{buildroot}%{_localstatedir}/log/%{name}/rails.log
a4a3969
touch %{buildroot}%{_localstatedir}/log/%{name}/dbomatic.log
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{app_root}/log
a4a3969
a4a3969
# copy script files over
a4a3969
%{__cp} -r src/script %{buildroot}%{app_root}
a4a3969
a4a3969
%{__mkdir} -p %{buildroot}%{_sysconfdir}/%{name}
a4a3969
a4a3969
%post
a4a3969
# symlink the configuration bits from /usr/share/aeolus-conductor/config
a4a3969
# into /etc/aeolus-conductor.  Note that we unceremoniously use -f here;
a4a3969
# if the user had broken the symlinks and put data in here, it would have been
a4a3969
# completely ignored *anyway*
a4a3969
%{__ln_s} -f %{app_root}/config/environments/development.rb %{_sysconfdir}/%{name}
a4a3969
%{__ln_s} -f %{app_root}/config/environments/production.rb %{_sysconfdir}/%{name}
a4a3969
%{__ln_s} -f %{app_root}/config/environments/test.rb %{_sysconfdir}/%{name}
a4a3969
%{__ln_s} -f %{app_root}/config/database.yml %{_sysconfdir}/%{name}
Scott Seago 028b759
%{__ln_s} -f %{app_root}/config/settings.yml %{_sysconfdir}/%{name}
a4a3969
a4a3969
%postun
a4a3969
# kind of a weird construct.  There are two cases where postun gets called;
a4a3969
# during the removal of a package and during the cleanup after an upgrade.
a4a3969
# During removal, we want to remove the symlinks; during upgrade we do not.
a4a3969
# Therefore, we check to see if app_root/app is still there; if it is,
a4a3969
# then we assume it is an upgrade and do nothing, otherwise we assume it is
a4a3969
# a removal and delete the symlinks
a4a3969
if [ ! -d %{app_root}/app ]; then
a4a3969
   rm -f %{_sysconfdir}/%{name}/development.rb
a4a3969
   rm -f %{_sysconfdir}/%{name}/production.rb
a4a3969
   rm -f %{_sysconfdir}/%{name}/test.rb
a4a3969
   rm -f %{_sysconfdir}/%{name}/database.yml
Scott Seago 028b759
   rm -f %{_sysconfdir}/%{name}/settings.yml
a4a3969
fi
a4a3969
a4a3969
%post daemons
a4a3969
# Register the services
a4a3969
/sbin/chkconfig --add aeolus-conductor
a4a3969
/sbin/chkconfig --add conductor-dbomatic
a4a3969
a4a3969
%preun daemons
a4a3969
if [ $1 = 0 ]; then
a4a3969
   /sbin/service aeolus-conductor stop > /dev/null 2>&1
a4a3969
   /sbin/chkconfig --del aeolus-conductor
a4a3969
   /sbin/service conductor-dbomatic stop > /dev/null 2>&1
a4a3969
   /sbin/chkconfig --del conductor-dbomatic
a4a3969
fi
a4a3969
a4a3969
%files
a4a3969
%dir %{app_root}
a4a3969
%{app_root}/app
a4a3969
%{app_root}/config
a4a3969
%{app_root}/config.ru
a4a3969
%{app_root}/db
a4a3969
%{app_root}/dbomatic
a4a3969
%{app_root}/lib
a4a3969
%{app_root}/log
a4a3969
%{app_root}/public
a4a3969
%{app_root}/Rakefile
a4a3969
%config %{_sysconfdir}/%{name}
a4a3969
%doc AUTHORS COPYING
a4a3969
a4a3969
%files daemons
a4a3969
%{_initrddir}/aeolus-conductor
a4a3969
%{_initrddir}/conductor-dbomatic
a4a3969
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
a4a3969
%config(noreplace) %{_sysconfdir}/sysconfig/aeolus-conductor
a4a3969
%config(noreplace) %{_sysconfdir}/sysconfig/conductor-rails
a4a3969
%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf
a4a3969
%attr(-, aeolus, aeolus) %{_localstatedir}/lib/%{name}
a4a3969
%attr(-, aeolus, aeolus) %{_localstatedir}/run/%{name}
a4a3969
%attr(-, aeolus, aeolus) %{_localstatedir}/log/%{name}
a4a3969
%doc AUTHORS COPYING
Scott Seago 028b759
%{_libdir}/../lib/tmpfiles.d/aeolus.conf
a4a3969
a4a3969
%files doc
a4a3969
%{doc_root}
a4a3969
%doc AUTHORS COPYING
a4a3969
a4a3969
%files devel
a4a3969
%{app_root}/features
a4a3969
%{app_root}/script
a4a3969
%{app_root}/spec
a4a3969
a4a3969
%changelog
80edc31
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.0-2
80edc31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
80edc31
Scott Seago 028b759
* Tue Oct 11 2011 Scott Seago <sseago@redhat.com> - 0.4.0-1
Scott Seago 028b759
- New upstream release
Scott Seago 028b759
Scott Seago 028b759
* Thu Sep 08 2011 Chris Lalancette <clalance@redhat.com> - 0.4.0-0.2gitb6e37f9738
Chris Lalancette eb26e8d
- Update to latest upstream to pull in many fixes
Chris Lalancette eb26e8d
Scott Seago 028b759
* Fri Jul 29 2011 Chris Lalancette <clalance@redhat.com> - 0.4.0-0.1git101cab5693
Chris Lalancette 29a8d11
- Update to upstream git commit, to get the rails 3 code
Chris Lalancette 29a8d11
a4a3969
* Thu Jul 21 2011 Mo Morsi <mmorsi@redhat.com> - 0.3.0-2
a4a3969
- update Source0 checkout instructions
a4a3969
a4a3969
* Wed Jul 20 2011 Mo Morsi <mmorsi@redhat.com> - 0.3.0-1
a4a3969
- new upstream release
a4a3969
- changes to conform to fedora guidelines
a4a3969
a4a3969
* Tue Apr 05 2011 Chris Lalancette <clalance@redhat.com> - 0.0.3-2
a4a3969
- Large spec file cleanup
a4a3969
- Split out development files into a -devel package
a4a3969
- Remove external dependencies and add to the aeolus-all package
a4a3969
a4a3969
* Thu Jan 20 2011 Chris Lalancette <clalance@redhat.com> - 0.0.3-1
a4a3969
- Rename from deltacloud-aggregator to aeolus-conductor
a4a3969
a4a3969
* Mon Sep 27 2010 Chris Lalancette <clalance@redhat.com> - 0.0.2-3
a4a3969
- Added new rubygem-parseconfig dependency
a4a3969
- Turn on services during install with chkconfig
a4a3969
a4a3969
* Sat Mar 6 2010 Ian Main <imain@redhat.com> - 0.0.2-2
a4a3969
- removed taskomatic from packaging.
a4a3969
a4a3969
* Wed Feb 18 2010 Mohammed Morsi <mmorsi@redhat.com> - 0.0.2-1
a4a3969
- renamed portal to aggregator
a4a3969
- updated / cleaned up package
a4a3969
a4a3969
* Fri Sep  1 2009  <sseago@redhat.com> - 0.0.1-1
a4a3969
- Initial build.