Blame aeolus-conductor.spec

a4a3969
%global app_root %{_datadir}/%{name}
a4a3969
%global doc_root %{_datadir}/%{name}-doc
a4a3969
Chris Lalancette 5476e0a
%global alphatag gitb6e37f9738
Chris Lalancette fe25b58
a4a3969
Name:     aeolus-conductor
Chris Lalancette fe25b58
Version:  0.4.0
Chris Lalancette 5476e0a
Release:  0.2%{alphatag}%{?dist}%{?extra_release}
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
Chris Lalancette 5476e0a
# git clone git://git.fedorahosted.org/aeolus/conductor.git
Chris Lalancette 5476e0a
# cd conductor
Chris Lalancette 5476e0a
# git checkout b6e37f9738747cf848cbc94e3c2dcff819af3092
a4a3969
# make dist
Chris Lalancette fe25b58
# cp aeolus-conductor-0.4.0.tar.gz ~/rpmbuild/SOURCES
Chris Lalancette fe25b58
Source0:    aeolus-conductor-%{version}-%{alphatag}.tar.gz
a4a3969
a4a3969
Requires: ruby >= 1.8.1
a4a3969
Requires: ruby(abi) = 1.8
Chris Lalancette 5476e0a
Requires: rubygem(rails) >= 3.0.7
Chris Lalancette fe25b58
Requires: rubygem(haml) >= 3.1
a4a3969
Requires: rubygem(nokogiri) >= 1.4.0
Chris Lalancette 5476e0a
Requires: rubygem(will_paginate) >= 3.0
a4a3969
Requires: rubygem(parseconfig)
Chris Lalancette fe25b58
Requires: rubygem(authlogic) >= 3.0.2
a4a3969
Requires: rubygem(deltacloud-client) >= 0.0.9.8
Chris Lalancette fe25b58
Requires: rubygem(compass) >= 0.10.2
a4a3969
Requires: rubygem(compass-960-plugin)
a4a3969
Requires: rubygem(simple-navigation)
a4a3969
Requires: rubygem(typhoeus)
Chris Lalancette fe25b58
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 fe25b58
Requires: rubygem(sqlite3)
Chris Lalancette 5476e0a
Requires: rubygem(fastercsv)
Chris Lalancette fe25b58
Requires: rubygem(pg)
a4a3969
Requires: postgresql
a4a3969
Requires: postgresql-server
a4a3969
Requires: ruby-postgres
a4a3969
a4a3969
# to ensure the service is actually started
a4a3969
# and is accessible in the init script
a4a3969
Requires: curl
a4a3969
Chris Lalancette 5476e0a
BuildRequires: rubygem(compass) >= 0.10.2
Chris Lalancette 5476e0a
BuildRequires: rubygem(compass-960-plugin)
Chris Lalancette 5476e0a
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)
Chris Lalancette fe25b58
Requires: rubygem(rspec-rails) >= 2.0.1
Chris Lalancette fe25b58
Requires: rubygem(webrat) >= 0.7.2
Chris Lalancette fe25b58
Requires: rubygem(database_cleaner) >= 0.5.0
a4a3969
Requires: rubygem(factory_girl)
Chris Lalancette fe25b58
Requires: rubygem(vcr)
Chris Lalancette fe25b58
Requires: rubygem(factory_girl_rails)
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 \
Chris Lalancette 5476e0a
      app/views/catalog_entries app/views/catalogs"
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 5476e0a
    public/javascripts/jquery.ui-1.8.1/ui/minified \
Chris Lalancette 5476e0a
    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 fe25b58
rb="app/models app/controllers app/helpers app/services app/util config \
Chris Lalancette fe25b58
    config/initializers config/environments db db/migrate dutils \
Chris Lalancette fe25b58
    features/support features/step_definitions lib spec spec/controllers \
Chris Lalancette fe25b58
    spec/factories spec/helpers spec/models spec/services"
a4a3969
rhtml="app/views/layouts"
a4a3969
scss="app/stylesheets"
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 fe25b58
for filetype in builder css feature gif haml html ico jpg js json key opts png \
Chris Lalancette fe25b58
    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 5476e0a
# precompile stylesheets
Chris Lalancette 5476e0a
cd src
Chris Lalancette 5476e0a
compass compile --output-style compact
Chris Lalancette 5476e0a
%{__mv} public/stylesheets/compiled %{buildroot}%{app_root}/public/stylesheets/
Chris Lalancette 5476e0a
cd ..
Chris Lalancette 5476e0a
a4a3969
# misc files
a4a3969
%{__cp} src/Rakefile %{buildroot}%{app_root}
a4a3969
%{__cp} src/config.ru %{buildroot}%{app_root}
Chris Lalancette fe25b58
%{__cp} src/Gemfile %{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
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
touch %{buildroot}%{_localstatedir}/run/%{name}/event_log_position
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}
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
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}/dutils
a4a3969
%{app_root}/lib
a4a3969
%{app_root}/log
a4a3969
%{app_root}/public
a4a3969
%{app_root}/Rakefile
Chris Lalancette fe25b58
%{app_root}/Gemfile
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
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
Chris Lalancette 5476e0a
* Thu Sep 08 2011 Chris Lalancette <clalance@redhat.com> - 0.4.0-2
Chris Lalancette 5476e0a
- Update to latest upstream to pull in many fixes
Chris Lalancette 5476e0a
Chris Lalancette fe25b58
* Fri Jul 29 2011 Chris Lalancette <clalance@redhat.com> - 0.4.0-1
Chris Lalancette fe25b58
- Update to upstream git commit, to get the rails 3 code
Chris Lalancette fe25b58
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.