# Conditional build:
%bcond_with order # with experimental order patch
-%define rel 1.8
-%define subver 69
-%define githash 9cf04f5
-%define php_min_version 5.3.7
-%include /usr/lib/rpm/macros.php
+%define rel 1
+#define subver 37
+#define githash a8d4c81db
+%define php_min_version 7.1.3
Summary: Eventum Issue / Bug tracking system
Summary(pl.UTF-8): Eventum - system śledzenia spraw/błędów
Name: eventum
-Version: 3.0.10
+Version: 3.6.4
Release: %{?subver:1.%{subver}.%{?githash:g%{githash}.}}%{rel}
License: GPL v2+
Group: Applications/WWW
-#Source0: https://github.com/eventum/eventum/releases/download/v%{version}/%{name}-%{version}.tar.gz
-Source0: %{name}-%{version}-%{subver}-g%{githash}.tar.gz
-# Source0-md5: a849ee92409155c89dd2972e5fdba18a
+Source0: https://github.com/eventum/eventum/releases/download/v%{version}/%{name}-%{version}.tar.xz
+# Source0-md5: 68bef5cfe7c0d6aadc16e49473892907
+#Source0: https://github.com/eventum/eventum/releases/download/snapshot/%{name}-%{version}-%{subver}-g%{githash}.tar.xz
Source1: %{name}-apache.conf
Source2: %{name}-mail-queue.cron
Source3: %{name}-mail-download.cron
Source4: %{name}-reminder.cron
Source5: %{name}-monitor.cron
-Source6: %{name}-cvs.php
-Source8: %{name}-irc.init
-Source9: %{name}-irc.sysconfig
Source10: sphinx.crontab
Source13: %{name}-router-postfix.sh
Source14: %{name}.logrotate
#Patch4: https://github.com/glensc/eventum/compare/cf_escape.patch
# packaging patches that probably never go upstream
Patch100: %{name}-paths.patch
-Patch101: %{name}-cvs-config.patch
Patch107: %{name}-gettext.patch
Patch108: autoload.patch
# some tests
Patch200: %{name}-fixed-nav.patch
-URL: http://eventum.mysql.org/
-BuildRequires: /usr/bin/php
+URL: https://wiki.github.com/eventum/eventum/
BuildRequires: gettext-tools
-BuildRequires: php(core) >= %{php_min_version}
-BuildRequires: rpm-php-pearprov >= 4.0.2-98
BuildRequires: rpmbuild(macros) >= 1.654
BuildRequires: sed >= 4.0
+BuildRequires: tar >= 1:1.22
+BuildRequires: xz
+Requires(post): sudo
Requires(postun): /usr/sbin/groupdel
Requires(postun): /usr/sbin/userdel
Requires(pre): /bin/id
Requires(pre): /usr/sbin/useradd
Requires: fonts-TTF-RedHat-liberation
Requires: php(core) >= %{php_min_version}
+Requires: php(ds)
Requires: php(filter)
Requires: php(iconv)
Requires: php(imap)
Requires: php(json)
Requires: php(mbstring)
-Requires: php(mysqli)
Requires: php(pcre)
+Requires: php(pdo_mysql)
Requires: php(session)
Requires: php-Smarty >= 3.1
Requires: php-Smarty-plugin-gettext
Requires: php-ZendFramework-Config >= 2.4
Requires: php-ZendFramework-Loader >= 2.4
-Requires: php-ZendFramework-Mail >= 2.4.9-2
+Requires: php-ZendFramework-Mail >= 2.4.13-2
Requires: php-ZendFramework-Mime >= 2.4
+Requires: php-ZendFramework-ServiceManager >= 2.4
Requires: php-ZendFramework-Validator >= 2.4
Requires: php-monolog >= 1.17.2
-Requires: php-pear-DB
-Requires: php-pear-Mail
-Requires: php-pear-Mail_Mime
-Requires: php-pear-Mail_mimeDecode
-Requires: php-pear-Math_Stats
-Requires: php-pear-Net_SMTP
-Requires: php-pear-Net_Socket
-Requires: php-pear-Net_URL
-Requires: php-pear-PEAR-core
-Requires: php-pear-Text_Diff
-Requires: php-pear-XML_RPC
Requires: php-psr-Log >= 1.0.0-2
-Requires: php-symfony2-Config >= 2.7.7
-Requires: php-symfony2-Filesystem >= 2.7.7
-Requires: php-symfony2-HttpFoundation >= 2.7.7
-Requires: php-symfony2-OptionsResolver >= 2.7.7
-Requires: php-symfony2-Serializer >= 2.7.7
-Requires: php-symfony2-Yaml >= 2.7.7
Requires: phplot >= 5.8.0
Requires: webapps
Requires: webserver(access)
Suggests: localedb
Suggests: php(mcrypt)
Suggests: php(openssl)
-Suggests: php-pear-Net_LDAP2
-Suggests: php-pear-Net_POP3
Suggests: webserver(setenv)
Provides: group(eventum)
Provides: user(eventum)
BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _noautoreq_pear ../init.php ../../init.php init.php /usr/share/eventum/init.php /etc/webapps/.* %{_appdir}/.* .*Smarty.class.php Services/JSON.php class.date_helper.php sphinxapi.php Net/LDAP2.* Auth/SASL.* Util.php smarty_internal.*
-
-# exclude optional php dependencies
-%define _noautophp php-gnupg php-hash php-pecl-http php-tk
-
-%define _noautoreq %{_noautophp}
-
%define _libdir %{_prefix}/lib/%{name}
%define _appdir %{_datadir}/%{name}
%define _smartydir %{php_data_dir}/Smarty
Eventum is a user-friendly and flexible issue tracking system that can
be used by a support department to track incoming technical support
requests, or by a software development team to quickly organize tasks
-and bugs. Eventum is used by the MySQL AB Technical Support team, and
-has allowed us to dramatically improve our response times.
+and bugs.
%description -l pl.UTF-8
Eventum to przyjazny dla użytkownika system śledzenia spraw, który
może być używany przez dział obsługi do śledzenia przychodzących żądań
obsługi technicznej albo przez zespół tworzący oprogramowanie do
-szybkiej organizacji zadań i błędów. Eventum jest używany przez zespół
-Technical Support MySQL AB i umożliwił im znacząco poprawić czasy
-reakcji.
+szybkiej organizacji zadań i błędów.
%package setup
Summary: Eventum setup package
via Postfix.
The Postfix configuration instructions you can find from
-<http://eventum.mysql.org/wiki/index.php/Setting_up_email_routing_with_postfix>.
+<https://github.com/eventum/eventum/wiki/System-Admin:-Setting-up-email-routing-with-postfix>
%description router-postfix -l pl.UTF-8
Ten pakiet udostępnia metodę przekazywania notatek i listów do Eventum
przez Postfiksa.
Opis konfiguracji Postfiksa można znaleźć pod adresem
-<http://eventum.mysql.org/wiki/index.php/Setting_up_email_routing_with_postfix>.
-
-%package irc
-Summary: Eventum IRC Notification Bot
-Summary(pl.UTF-8): IRC-owy bot powiadamiający dla Eventum
-Group: Applications/WWW
-Requires(post,preun): /sbin/chkconfig
-Requires: %{name} = %{version}-%{release}
-Requires: php(pcntl)
-Requires: php(sockets)
-Requires: php-pear-Net_SmartIRC >= 1.1.9
-Requires: rc-scripts >= 0.4.0.18
-
-%description irc
-The IRC notification bot is a nice feature for remote teams that want
-to handle issues and want to have a quick and easy way to get simple
-notifications. Right now the bot notifies of the following actions:
-- New Issues
-- Blocked emails
-- Issues that got their assignment list changed
-
-NOTE: You will need to manually edit the bot.php script to set your
-appropriate preferences, like IRC server and channel that the bot
-should join.
-
-%description irc -l pl.UTF-8
-IRC-owy bot powiadamiający to miła funkcjonalność dla zdalnych
-zespołów chcących obsługiwać sprawy i mieć szybki i łatwy sposób na
-uzyskiwanie prostych powiadomień. Aktualnie bot powiadamia o
-następujących zdarzeniach:
-- nowych sprawach
-- zablokowanych listach
-- sprawach, dla których zmieniła się lista powiązań
-
-UWAGA: w celu wprowadzenia własnych ustawień, takich jak serwer IRC i
-kanał używany przez bota, trzeba ręcznie zmodyfikować skrypt bot.php .
-
-%package cli
-Summary: Eventum command-line interface
-Summary(pl.UTF-8): Interfejs linii poleceń dla Eventum
-Group: Applications/WWW
-Requires: php(core) >= %{php_min_version}
-Requires: php(phar)
-Requires: php-pear-XML_RPC
-
-%description cli
-The Eventum command-line interface allows you to access most of the
-features of the web interface straight from your command shell.
-
-%description cli -l pl.UTF-8
-Interfejs linii poleceń Eventum pozwala na dostęp do większości
-funkcji interfejsu WWW prosto z linii poleceń powłoki.
-
-%package scm
-Summary: Eventum SCM integration
-Summary(pl.UTF-8): Integracja SCM dla Eventum
-Group: Applications/WWW
-Requires: php(core) >= %{php_min_version}
-Requires: php(json)
-Requires: php(pcre)
-Requires: php(spl)
-Suggests: cvs
-Suggests: git-core
-Suggests: php(openssl)
-Suggests: subversion
-
-%description scm
-This feature allows your software development teams to integrate your
-Source Control Management system with your Issue Tracking System.
-
-The integration is implemented in such a way that it will be forward
-compatible with pretty much any SCM system, such as CVS.
-
-For installation see
-</eventum/help.php?topic=scm_integration_installation>.
-
-%description scm -l pl.UTF-8
-Ten pakiet pozwala zespołom programistów na integrację systemu
-zarządzania źródłami (SCM - Source Control Management) z systemem
-śledzenia spraw.
-
-Integracja jest zaimplementowana tak, aby być kompatybilna w przód z
-prawie każdym systemem SCM, jak np. CVS.
-
-Szczegóły na temat instalacji można przeczytać pod
-</eventum/help.php?topic=scm_integration_installation>.
+<https://github.com/eventum/eventum/wiki/System-Admin:-Setting-up-email-routing-with-postfix>
%package sphinx
Summary: Eventum Sphinx Search
%{?with_order:%patch2 -p1}
#%patch3 -p0
#%patch4 -p1
-
%{?with_order:cp -p %{SOURCE16} htdocs/images}
-
#%patch200 -p1
# produce default sphinx config
# packaging
%patch100 -p1
-%patch101 -p1
%patch107 -p1
%patch108 -p1
rm htdocs/.htaccess.dist
-# deprecated in favour of process_all_emails.php
-rm bin/route_*.php
-
-# cleanup vendor. keep only needed libraries.
-# (the rest are packaged with system packages)
-mv vendor vendor.dist
-vendor() {
- local path dir
- for path; do
- dir=$(dirname $path)
- test -d vendor/$dir || mkdir -p vendor/$dir
- mv vendor.dist/$path vendor/$path
- done
-}
-vendor autoload.php
-vendor composer/autoload_{classmap,files,namespaces,real,psr4}.php
-vendor composer/ClassLoader.php
-vendor ircmaxell/{password-compat,random-lib,security-lib}
-vendor defuse/php-encryption
-vendor ramsey/array_column
-vendor willdurand/email-reply-parser
-vendor symfony/polyfill-php55
-vendor theorchard/monolog-cascade
+rm config/config.dist.php
+
+# cleanup libs taken from system, everything else gets bundled
+rm -r vendor/fonts/liberation
+rm -r vendor/monolog/monolog
+rm -r vendor/php-gettext/php-gettext
+rm -r vendor/phplot/phplot
+rm -r vendor/psr/log
+rm -r vendor/smarty-gettext/smarty-gettext
+rm -r vendor/smarty/smarty
+rm -r vendor/sphinx/php-sphinxapi
+rm -r vendor/zendframework/zend-config
+rm -r vendor/zendframework/zend-loader
+rm -r vendor/zendframework/zend-mail
+rm -r vendor/zendframework/zend-mime
+rm -r vendor/zendframework/zend-servicemanager
+rm -r vendor/zendframework/zend-stdlib
+rm -r vendor/zendframework/zend-validator
# remove backups from patching as we use globs to package files to buildroot
find '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v
$RPM_BUILD_ROOT/etc/{rc.d/init.d,cron.d,logrotate.d,sysconfig} \
$RPM_BUILD_ROOT/var/{run,cache,lib}/%{name} \
$RPM_BUILD_ROOT/var/log/{archive/,}%{name} \
- $RPM_BUILD_ROOT/var/lib/%{name}/routed_{emails,drafts,notes} \
+ $RPM_BUILD_ROOT/var/lib/%{name}/{routed_{emails,drafts,notes},storage} \
$RPM_BUILD_ROOT%{systemdtmpfilesdir}
-%{__make} install-eventum install-cli install-scm install-localization \
+%{__make} install-eventum install-localization \
sysconfdir=%{_webappdir} \
localedir=%{_localedir} \
DESTDIR=$RPM_BUILD_ROOT
cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/cron.d/%{name}-monitor
cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/cron.d/%{name}-sphinx
-cp -p config/irc_config.dist.php $RPM_BUILD_ROOT%{_webappdir}/irc_config.php
-
-install -p %{SOURCE8} $RPM_BUILD_ROOT/etc/rc.d/init.d/eventum-irc
-cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/eventum-irc
-
cp -p %{SOURCE14} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
# postfix router
%find_lang %{name}
-# scm
-cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/scm.php
-
%clean
rm -rf $RPM_BUILD_ROOT
for a in \
errors.log login_attempts.log \
eventum.log \
- cli.log \
- irc_bot_error.log irc_bot_smartirc.log \
+ auth.log cli.log \
; do
test -f /var/log/%{name}/$a && continue
install -m 0620 -o root -g http /dev/null /var/log/%{name}/$a
# run database update if configured
test -s %{_webappdir}/config.php && \
-%{_appdir}/bin/upgrade.php || :
+sudo -H -u http -- %{_appdir}/bin/upgrade.php || :
# nuke Smarty templates cache after upgrade
rm -f /var/cache/eventum/*.php
fi
%post setup
-chmod 660 %{_webappdir}/{config,private_key}.php
-chown root:http %{_webappdir}/{config,private_key}.php
+chmod 660 %{_webappdir}/{config,private_key,secret_key}.php
+chown root:http %{_webappdir}/{config,private_key,secret_key}.php
%postun setup
if [ "$1" = "0" ] && [ -f %{_webappdir}/config.php ]; then
- chmod 640 %{_webappdir}/{config,private_key}.php
- chown root:http %{_webappdir}/{config,private_key}.php
-fi
-
-%post irc
-/sbin/chkconfig --add eventum-irc
-%service eventum-irc restart "Eventum IRC Bot"
-
-%preun irc
-if [ "$1" = 0 ]; then
- %service eventum-irc stop
- /sbin/chkconfig --del eventum-irc
+ chmod 640 %{_webappdir}/{config,private_key,secret_key}.php
+ chown root:http %{_webappdir}/{config,private_key,secret_key}.php
fi
%triggerin -- apache1 < 1.3.37-3, apache1-base
%triggerun -- lighttpd
%webapp_unregister lighttpd %{_webapp}
-%triggerpostun -- %{name} < 3.0.0-0.2
-for f in /etc/cron.d/eventum-*; do
- # crontabs moved to bin
- %{__sed} -i -e '
- s,/usr/share/eventum/crons/process_mail_queue.php,%{_appdir}/bin/process_mail_queue.php,
- s,/usr/share/eventum/crons/download_emails.php,%{_appdir}/bin/download_emails.php,
- s,/usr/share/eventum/crons/check_reminders.php,%{_appdir}/bin/check_reminders.php,
- s,/usr/share/eventum/crons/monitor.php,%{_appdir}/bin/monitor.php,
- ' $f
-done
-
%files -f %{name}.lang
%defattr(644,root,root,755)
-%attr(751,root,root) %dir %{_webappdir}
-%attr(751,root,root) %dir %{_webappdir}/custom_field
-%attr(751,root,root) %dir %{_webappdir}/templates
-%attr(751,root,root) %dir %{_webappdir}/workflow
+%attr(771,root,http) %dir %{_webappdir}
+%attr(751,root,http) %dir %{_webappdir}/crm
+%attr(751,root,http) %dir %{_webappdir}/custom_field
+%attr(751,root,http) %dir %{_webappdir}/partner
+%attr(751,root,http) %dir %{_webappdir}/templates
+%attr(751,root,http) %dir %{_webappdir}/workflow
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/config.php
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/htpasswd
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/private_key.php
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/secret_key.php
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/apache.conf
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/httpd.conf
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/lighttpd.conf
-%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/config.php
-%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/private_key.php
%attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/setup.php
-%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/htpasswd
-%dir %attr(711,root,http) /var/log/%{name}
+%dir %attr(731,root,http) /var/log/%{name}
%attr(620,root,http) %ghost /var/log/%{name}/*
%dir %attr(750,root,root) /var/log/archive/%{name}
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
%{_appdir}/config
%dir %{_appdir}/bin
+%attr(755,root,root) %{_appdir}/bin/extension.php
+%attr(755,root,root) %{_appdir}/bin/ldapsync.php
+%attr(755,root,root) %{_appdir}/bin/migrate_storage_adapter.php
%attr(755,root,root) %{_appdir}/bin/process_all_emails.php
%attr(755,root,root) %{_appdir}/bin/upgrade.php
%{_appdir}/autoload.php
+%{_appdir}/globals.php
%{_appdir}/init.php
+%{_appdir}/phinx.php
%dir %{_appdir}/htdocs
%{_appdir}/htdocs/*.php
%{_appdir}/htdocs/*.ico
%{_appdir}/htdocs/components
%{_appdir}/templates
-%dir %{_appdir}/upgrade
-%{_appdir}/upgrade/*.sql
-%{_appdir}/upgrade/patches
+%dir %{_appdir}/db
+%dir %{_appdir}/db/migrations
+%{_appdir}/db/migrations/*.php
%{_appdir}/res
%{_appdir}/src
%{_appdir}/vendor
%dir %{_appdir}/lib
%{_appdir}/lib/eventum
-%exclude %{_appdir}/lib/eventum/class.monitor.php
+%exclude %{_appdir}/src/Console/Command/MailDownloadCommand.php
+%exclude %{_appdir}/src/Console/Command/MailQueueProcessCommand.php
+%exclude %{_appdir}/src/Console/Command/MailQueueTruncateCommand.php
+%exclude %{_appdir}/src/Console/Command/MonitorCommand.php
+%exclude %{_appdir}/src/Console/Command/ReminderCheckCommand.php
%dir %{_libdir}
%attr(770,root,http) %dir /var/lib/%{name}/routed_emails
%attr(770,root,http) %dir /var/lib/%{name}/routed_drafts
%attr(770,root,http) %dir /var/lib/%{name}/routed_notes
+# attachment storage
+%attr(770,root,http) %dir /var/lib/%{name}/storage
%files setup
%defattr(644,root,root,755)
%files mail-queue
%defattr(644,root,root,755)
+%{_appdir}/src/Console/Command/MailQueueProcessCommand.php
+%{_appdir}/src/Console/Command/MailQueueTruncateCommand.php
%attr(755,root,root) %{_appdir}/bin/process_mail_queue.php
%attr(755,root,root) %{_appdir}/bin/truncate_mail_queue.php
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-mail-queue
%files mail-download
%defattr(644,root,root,755)
+%{_appdir}/src/Console/Command/MailDownloadCommand.php
%attr(755,root,root) %{_appdir}/bin/download_emails.php
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-mail-download
%files reminder
%defattr(644,root,root,755)
+%{_appdir}/src/Console/Command/ReminderCheckCommand.php
%attr(755,root,root) %{_appdir}/bin/check_reminders.php
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-reminder
%files monitor
%defattr(644,root,root,755)
-%{_appdir}/lib/eventum/class.monitor.php
+%{_appdir}/src/Console/Command/MonitorCommand.php
%attr(755,root,root) %{_appdir}/bin/monitor.php
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-monitor
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/router-postfix
-%files irc
-%defattr(644,root,root,755)
-%attr(640,root,eventum) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/irc_config.php
-%attr(640,root,eventum) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/eventum-irc
-%attr(755,root,root) %{_appdir}/bin/irc-bot.php
-%attr(754,root,root) /etc/rc.d/init.d/%{name}-irc
-
-%files cli
-%defattr(644,root,root,755)
-%doc cli/eventumrc
-%attr(755,root,root) %{_bindir}/%{name}
-
-%files scm
-%defattr(644,root,root,755)
-%attr(751,root,root) %dir %{_sysconfdir}
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/scm.php
-%attr(755,root,root) %{_sbindir}/eventum-cvs-hook
-%attr(755,root,root) %{_sbindir}/eventum-git-hook
-%attr(755,root,root) %{_sbindir}/eventum-svn-hook
-%attr(755,root,root) %{_sbindir}/helpers.php
-
%files sphinx
%defattr(644,root,root,755)
%{_webappdir}/sphinx.conf.php