From 91d24aa1cd432e93d5193a32b9436ab16588b5c7 Mon Sep 17 00:00:00 2001 From: Roy Kaldung Date: Thu, 24 Sep 2015 23:15:26 +0200 Subject: [PATCH 1/2] new spec --- extras/zammad-von-wem-auch-immer.spec | 210 +++++++++++++++++++++ extras/zammad.spec | 259 ++++++++------------------ 2 files changed, 285 insertions(+), 184 deletions(-) create mode 100644 extras/zammad-von-wem-auch-immer.spec diff --git a/extras/zammad-von-wem-auch-immer.spec b/extras/zammad-von-wem-auch-immer.spec new file mode 100644 index 000000000..8c0232584 --- /dev/null +++ b/extras/zammad-von-wem-auch-immer.spec @@ -0,0 +1,210 @@ +Name: zammad +Version: 0.1 +Release: 1%{?dist} +Summary: Zammad Application +# Some of the gems compile, and thus this can't be noarch +BuildArch: x86_64 +Group: Application/Internet +License: AGPL +URL: https://github.com/martinie/zammmad +# XXX You'll have to create the logrotate script for your application +Source0: %{name}.logrotate +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# XXX Building this rpm requires that bundle is available on the path of the user +# that is running rpmbuild. But I'm not sure how to require that there is a +# bundle in the path. +#BuildRequires: /usr/bin/bundle +# XXX Also require gem on the PATH +# BuildRequires: /usr/bin/gem + +# XXX Note that you might not require all the below. It will depend on what your gems require to build. + +# From docs: http://nokogiri.org/tutorials/installing_nokogiri.html +# and: https://github.com/thoughtbot/capybara-webkit/wiki/Installing-QT +# which hinted that I should look for something like qt webkit devel ... +BuildRequires: libxml2 gcc ruby-devel libxml2-devel libxslt libxslt-devel +# for...I forgot to record what gem requires this to build... +BuildRequires: qt-devel qtwebkit-devel +# for curb +BuildRequires: libcurl-devel +# for sqlite3 +BuildRequires: sqlite-devel +# ^^ There may be more requirements above for building on a new dev/rpmbuild env + +# XXX Remove if not using apache/passenger/mysql +# Assuming will run via passenger + apache +Requires: mod_passenger, httpd +# And use mysql as the db +Requires: mysql-server + +# In order to rotate the logs +Requires: logrotate + +# What repository to pull the actual code from +# (assuming git here, you'll need to change for svn or hg) +%define git_repo git@github.com:martini/%{name}.git + +# +# DIRS +# - Trying to follow Linux file system hierarchy +# +%define appdir %{rails_home}/%{name} +%define docdir %{_docdir}/railsapps/%{name} +%define libdir %{_libdir}/railsapps/%{name} +%define logdir /var/log/railsapps/%{name} +%define configdir /etc/railsapps/%{name} +%define cachedir /var/cache/railsapps/%{name} +%define datadir /var/lib/railsapps/%{name} +%define logrotatedir /etc/logrotate.d/ + +%description +Some description of the application + +%prep +rm -rf ./%{name} +git clone %{git_repo} +pushd %{name} + git checkout v%{version} +popd + + +%build +pushd %{name} + + # Install all required gems into ./vendor/bundle using the handy bundle commmand + bundle install --deployment + + # Compile assets, this only has to be done once AFAIK, so in the RPM is fine + rm -rf ./public/assets/* + bundle exec rake assets:precompile + + # For some reason bundler doesn't install itself, this is probably right, + # but I guess it expects bundler to be on the server being deployed to + # already. But the rails-helloworld app crashes on passenger looking for + # bundler, so it would seem to me to be required. So, I used gem to install + # bundler after bundle deployment. :) And the app then works under passenger. + + PWD=`pwd` + cat > gemrc < %prep -rm -rf ./%{name} -git clone %{git_repo} -pushd %{name} - git checkout v%{version} -popd - +#%setup %build -pushd %{name} - - # Install all required gems into ./vendor/bundle using the handy bundle commmand - bundle install --deployment - - # Compile assets, this only has to be done once AFAIK, so in the RPM is fine - rm -rf ./public/assets/* - bundle exec rake assets:precompile - - # For some reason bundler doesn't install itself, this is probably right, - # but I guess it expects bundler to be on the server being deployed to - # already. But the rails-helloworld app crashes on passenger looking for - # bundler, so it would seem to me to be required. So, I used gem to install - # bundler after bundle deployment. :) And the app then works under passenger. - - PWD=`pwd` - cat > gemrc < /tmp/otrs-old.tmp +#fi +# useradd +export OTRSUSER=zammad +echo -n "Check OTRS user ... " +#if id $OTRSUSER >/dev/null 2>&1; then +# echo "$OTRSUSER exists." +# # update home dir +# usermod -d /opt/otrs $OTRSUSER +#else +# useradd $OTRSUSER -d /opt/otrs/ -s /bin/bash -g zammad -c 'Zammad user' && echo "$OTRSUSER added." +#fi - # - # Doc - # - mv ./doc $RPM_BUILD_ROOT/%{docdir} +%post - # - # Config - # - # - only doing database.yml now, might be wrong... - # - XXX What other config files are there if any? +# run OTRS rebuild config, delete cache, if the system was already in use (i.e. upgrade). +export OTRSUSER=zammad - mv ./config/database.yml $RPM_BUILD_ROOT/%{configdir} - pushd config - ln -s %{configdir}/database.yml ./database.yml - popd - - # - # lib - # - - mv ./vendor $RPM_BUILD_ROOT/%{libdir} - ln -s %{libdir}/vendor ./vendor - - # - # tmp/cache - # - - mv ./tmp $RPM_BUILD_ROOT/%{cachedir} - ln -s %{cachedir}/tmp ./tmp - - # - # log - # - - # Only do logdir not logdir/log - rm -rf ./log - #rm ./log/development.log - #rm ./log/test.log - #mv ./log $RPM_BUILD_ROOT/%{logdir} - ln -s %{logdir} ./log - - # - # Everything left goes in appdir - # - - mv ./* $RPM_BUILD_ROOT/%{appdir} - - # - # logrotate - # - cp %{SOURCE0} $RPM_BUILD_ROOT/%{logrotatedir}/%{name} - -popd %clean -rm -rf $RPM_BUILD_ROOT +#rm -rf $RPM_BUILD_ROOT %files -%defattr(-,root,root,-) -%{appdir} -%{libdir} -%{docdir} -%config %{configdir}/database.yml -# passenger runs as nobody apparently and then http as apache, and I'm not sure which -# needs which...so for now do nobody:apache...wonder if it should be set to run as apache? -%attr(770,nobody,apache) %{logdir} -%attr(770,nobody,apache) %{cachedir} -# %dir allows an empty directory, which this will be at an initial install -%attr(770,nobody,apache) %dir %{datadir} -%{logrotatedir}/%{name} -%doc +#%config(noreplace) /etc/sysconfig/otrs +#%config /etc/httpd/conf.d/zzz_otrs.conf +#/etc/rc.d/init.d/otrs +/opt/zammad +# +%changelog +* Mon Dec 17 2012 - mb@otrs.com +- Added dependencies to Digest::SHA, Net::LDAP and Crypt::SSLeay, available from base repositories. +- Removed dependency on Time::HiRes in favor of perl-core package. From 96085b91831a465321a9bfa36db7467e0f7f69f8 Mon Sep 17 00:00:00 2001 From: Roy Kaldung Date: Thu, 24 Sep 2015 23:18:45 +0200 Subject: [PATCH 2/2] create zammad user and added requirements --- extras/zammad.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extras/zammad.spec b/extras/zammad.spec index 8ad64dc0b..9d4b9ebeb 100644 --- a/extras/zammad.spec +++ b/extras/zammad.spec @@ -16,6 +16,8 @@ Version: 0.0 License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Group: Applications/Mail Provides: zammad +Requires(pre): /usr/sbin/useradd, /usr/bin/getent +Requires(postun): /usr/sbin/userdel Requires: cronie httpd Autoreqprov: no Release: 01 @@ -27,6 +29,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build %prep +/usr/bin/getent passwd zammad || /usr/sbin/useradd -d /opt/zammad -s /bin/bash zammad #%setup %build