3 %bcond_with order # with experimental order patch
7 #define githash d9bc22cf6
8 %define php_min_version 7.1.3
9 Summary: Eventum Issue / Bug tracking system
10 Summary(pl.UTF-8): Eventum - system śledzenia spraw/błędów
13 Release: %{?subver:1.%{subver}.%{?githash:g%{githash}.}}%{rel}
15 Group: Applications/WWW
16 Source0: https://github.com/eventum/eventum/releases/download/v%{version}/%{name}-%{version}.tar.xz
17 # Source0-md5: 59635b7c5b6c016fce3cdb5626303666
18 #Source0: https://github.com/eventum/eventum/releases/download/snapshot/%{name}-%{version}-%{subver}-g%{githash}.tar.xz
19 Source1: %{name}-apache.conf
20 Source2: %{name}-mail-queue.cron
21 Source3: %{name}-mail-download.cron
22 Source4: %{name}-reminder.cron
23 Source5: %{name}-monitor.cron
24 Source10: sphinx.crontab
25 Source13: %{name}-router-postfix.sh
26 Source14: %{name}.logrotate
27 Source15: %{name}-lighttpd.conf
28 Source16: http://www.isocra.com/images/updown2.gif
29 # Source16-md5: deb6eeb2552ba757d3a949ed10c4107d
30 Source17: %{name}.tmpfiles
31 Patch2: %{name}-order.patch
32 #Patch3: group-users.patch
33 #Patch4: https://github.com/glensc/eventum/compare/cf_escape.patch
34 # packaging patches that probably never go upstream
35 Patch100: %{name}-paths.patch
36 Patch107: %{name}-gettext.patch
37 Patch108: autoload.patch
39 Patch200: %{name}-fixed-nav.patch
40 URL: https://wiki.github.com/eventum/eventum/
41 BuildRequires: gettext-tools
42 BuildRequires: rpmbuild(macros) >= 1.654
43 BuildRequires: sed >= 4.0
44 BuildRequires: tar >= 1:1.22
47 Requires(postun): /usr/sbin/groupdel
48 Requires(postun): /usr/sbin/userdel
49 Requires(pre): /bin/id
50 Requires(pre): /usr/bin/getgid
51 Requires(pre): /usr/sbin/groupadd
52 Requires(pre): /usr/sbin/useradd
53 Requires: fonts-TTF-RedHat-liberation
54 Requires: php(core) >= %{php_min_version}
59 Requires: php(mbstring)
61 Requires: php(pdo_mysql)
62 Requires: php(session)
63 Requires: php-Smarty >= 3.1
64 Requires: php-Smarty-plugin-gettext
65 Requires: php-ZendFramework-Config >= 2.4
66 Requires: php-ZendFramework-Loader >= 2.4
67 Requires: php-ZendFramework-Mail >= 2.4.13-2
68 Requires: php-ZendFramework-Mime >= 2.4
69 Requires: php-ZendFramework-ServiceManager >= 2.4
70 Requires: php-ZendFramework-Validator >= 2.4
71 Requires: php-monolog >= 1.17.2
72 Requires: php-pear-Math_Stats
73 Requires: php-pear-Net_SMTP
74 Requires: php-pear-Net_Socket
75 Requires: php-pear-Net_URL
76 Requires: php-pear-PEAR-core
77 Requires: php-psr-Log >= 1.0.0-2
78 Requires: phplot >= 5.8.0
80 Requires: webserver(access)
81 Requires: webserver(alias)
82 Requires: webserver(indexfile)
83 Requires: webserver(php) >= 4.2.0
86 Suggests: php(openssl)
87 Suggests: php-pear-Net_POP3
88 Suggests: webserver(setenv)
89 Provides: group(eventum)
90 Provides: user(eventum)
91 Obsoletes: eventum-base < 3.0.3-1.305
92 Obsoletes: eventum-route-drafts < 3.0.8-1.1
93 Obsoletes: eventum-route-emails < 3.0.8-1.1
94 Obsoletes: eventum-route-notes < 3.0.8-1.1
95 Conflicts: logrotate < 3.8.0
97 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
99 %define _libdir %{_prefix}/lib/%{name}
100 %define _appdir %{_datadir}/%{name}
101 %define _smartydir %{php_data_dir}/Smarty
102 %define _webapps /etc/webapps
103 %define _webapp %{name}
104 %define _webappdir %{_webapps}/%{_webapp}
105 %define _sysconfdir /etc/%{name}
108 Eventum is a user-friendly and flexible issue tracking system that can
109 be used by a support department to track incoming technical support
110 requests, or by a software development team to quickly organize tasks
113 %description -l pl.UTF-8
114 Eventum to przyjazny dla użytkownika system śledzenia spraw, który
115 może być używany przez dział obsługi do śledzenia przychodzących żądań
116 obsługi technicznej albo przez zespół tworzący oprogramowanie do
117 szybkiej organizacji zadań i błędów.
120 Summary: Eventum setup package
121 Summary(pl.UTF-8): Pakiet do wstępnej konfiguracji Eventum
122 Group: Applications/WWW
123 Requires: %{name} = %{version}-%{release}
126 Install this package to configure initial Eventum installation. You
127 should uninstall this package when you're done, as it considered
128 insecure to keep the setup files in place.
130 %description setup -l pl.UTF-8
131 Ten pakiet należy zainstalować w celu wstępnej konfiguracji Eventum po
132 pierwszej instalacji. Potem należy go odinstalować, jako że
133 pozostawienie plików instalacyjnych mogłoby być niebezpieczne.
136 Summary: Eventum documentation and Wiki
140 Eventum documentation and copy of Wiki.
143 Summary: Eventum mail queue process
144 Summary(pl.UTF-8): Przetwarzanie kolejki poczty Eventum
145 Group: Applications/WWW
146 Requires: %{name} = %{version}-%{release}
149 %description mail-queue
150 Beginning with the first release of Eventum, emails are not directly
151 sent out from the various scripts, but rather added to a mail queue
152 table that is processed by a cron job. If an email cannot be sent, it
153 will be marked as such in the mail queue log, and the cron job script
154 will re-try to send it again the next time it runs.
156 This package contains the cron job.
158 %description mail-queue -l pl.UTF-8
159 Od pierwszego wydania Eventum poczta nie jest wysyłana bezpośrednio z
160 różnych skryptów, lecz dodawana do kolejki przetwarzanej z crona.
161 Jeśli poczta nie może być wysłana, będzie odpowiednio oznaczona w logu
162 kolejki poczty, a skrypt z crona będzie próbował wysłać ją ponownie
165 Ten pakiet zawiera zadanie dla crona.
167 %package mail-download
168 Summary: Eventum email download
169 Summary(pl.UTF-8): Ściąganie poczty Eventum
170 Group: Applications/WWW
171 Requires: %{name} = %{version}-%{release}
174 %description mail-download
175 In order for Eventum's email integration feature to work, you need to
176 setup a cron job to run the script every so often.
178 This package contains the cron job.
180 %description mail-download -l pl.UTF-8
181 Aby integracja poczty elektronicznej w Eventum działała, trzeba
182 ustawić zadanie crona, aby uruchamiał odpowiedni skrypt wystarczająco
185 Ten pakiet zawiera zadanie dla crona.
188 Summary: Eventum Reminder System
189 Summary(pl.UTF-8): System przypominania dla Eventum
190 Group: Applications/WWW
191 Requires: %{name} = %{version}-%{release}
194 %description reminder
195 The reminder system was designed with the objective as serving as a
196 safe net for issues that need attention. Depending on what
197 configuration you create, you may have several reminders (or alerts)
198 be sent out whenever an issue needs attention, for whatever parameter
199 you may deem necessary.
201 This package contains the cron job.
203 %description reminder -l pl.UTF-8
204 System przypominania został zaprojektowany tak, aby służył jako
205 bezpieczna sieć dla spraw wymagających uwagi. W zależności od
206 konfiguracji można ustawić różne przypominajki (lub alarmy) wysyłane
207 przy każdej sprawie wymagającej uwagi lub przy parametrze, który można
210 Ten pakiet zawiera zadanie dla crona.
213 Summary: Eventum Heartbeat Monitor
214 Summary(pl.UTF-8): Monitor życia dla Eventum
215 Group: Applications/WWW
216 Requires: %{name} = %{version}-%{release}
221 The heartbeat monitor is a feature designed for the administrator that
222 wants to be alerted whenever a common problem in Eventum is detected,
223 like the database server not being available anymore, or maybe when
224 the recommended permissions for certain configuration files are
227 Please note that before running the heartbeat monitor, you may need to
228 customize some of the checks to be appropriate for your own system,
229 particularly the permission and file checks on
230 Monitor::checkConfiguration().
232 This package contains the cron job.
234 %description monitor -l pl.UTF-8
235 Monitor życia to funkcjonalność zaprojektowana dla administratora
236 chcącego być alarmowanym przy każdym wykryciu popularnego problemu z
237 Eventum, jak nie działanie serwera bazy danych albo zmiana uprawnień
238 do plików konfiguracyjnych.
240 Należy zauważyć, że przed uruchomieniem tego monitora może być
241 konieczne dostosowanie niektórych testów do systemu, w szczególności
242 testów uprawnień i plików w Monitor::checkConfiguration().
244 Ten pakiet zawiera zadanie dla crona.
246 %package router-postfix
247 Summary: Eventum Mail Routing - Postfix
248 Summary(pl.UTF-8): Przekazywanie poczty Eventum - Postfix
249 Group: Applications/Mail
250 Requires: %{name} = %{version}-%{release}
252 Provides: eventum(router)
253 Obsoletes: eventum(router)
255 %description router-postfix
256 This package provides way of routing notes and emails back to Eventum
259 The Postfix configuration instructions you can find from
260 <https://github.com/eventum/eventum/wiki/System-Admin:-Setting-up-email-routing-with-postfix>
262 %description router-postfix -l pl.UTF-8
263 Ten pakiet udostępnia metodę przekazywania notatek i listów do Eventum
266 Opis konfiguracji Postfiksa można znaleźć pod adresem
267 <https://github.com/eventum/eventum/wiki/System-Admin:-Setting-up-email-routing-with-postfix>
270 Summary: Eventum Sphinx Search
271 Group: Applications/WWW
272 Requires: %{name} = %{version}-%{release}
277 Sphinx search integration for Eventum.
279 This package contains the cron job.
282 %setup -q -n %{name}-%{version}%{?githash:-%{subver}-g%{githash}}
286 # bug fixes / features
287 %{?with_order:%patch2 -p1}
290 %{?with_order:cp -p %{SOURCE16} htdocs/images}
293 # produce default sphinx config
294 # must be run before paths.patch
296 cat <<'EOF' > config/config.php
298 define('APP_SQL_DBTYPE', 'mysql');
299 define('APP_SQL_DBHOST', 'localhost:/var/lib/mysql/mysql.sock');
300 define('APP_SQL_DBPORT', 3306);
301 define('APP_SQL_DBNAME', 'eventum');
302 define('APP_SQL_DBUSER', 'mysql');
303 define('APP_SQL_DBPASS', '');
304 define('APP_TABLE_PREFIX', 'eventum_');
306 php config/sphinx.conf.php > config/sphinx.conf
315 rm htdocs/.htaccess.dist
316 rm config/config.dist.php
318 # cleanup libs taken from system, everything else gets bundled
319 rm -r vendor/fonts/liberation
320 rm -r vendor/monolog/monolog
321 rm -r vendor/pear/pear-core-minimal
322 rm -r vendor/pear/pear_exception
323 rm -r vendor/pear-pear.php.net/Math_Stats
324 rm -r vendor/php-gettext/php-gettext
325 rm -r vendor/phplot/phplot
327 rm -r vendor/smarty-gettext/smarty-gettext
328 rm -r vendor/smarty/smarty
329 rm -r vendor/sphinx/php-sphinxapi
330 rm -r vendor/zendframework/zend-config
331 rm -r vendor/zendframework/zend-loader
332 rm -r vendor/zendframework/zend-mail
333 rm -r vendor/zendframework/zend-mime
334 rm -r vendor/zendframework/zend-servicemanager
335 rm -r vendor/zendframework/zend-stdlib
336 rm -r vendor/zendframework/zend-validator
338 # remove backups from patching as we use globs to package files to buildroot
339 find '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v
342 %{__make} -C localization
345 rm -rf $RPM_BUILD_ROOT
347 $RPM_BUILD_ROOT{%{_webappdir}/{custom_field,templates,workflow},%{_sysconfdir},%{_bindir},%{_sbindir},%{_libdir}} \
348 $RPM_BUILD_ROOT/etc/{rc.d/init.d,cron.d,logrotate.d,sysconfig} \
349 $RPM_BUILD_ROOT/var/{run,cache,lib}/%{name} \
350 $RPM_BUILD_ROOT/var/log/{archive/,}%{name} \
351 $RPM_BUILD_ROOT/var/lib/%{name}/{routed_{emails,drafts,notes},storage} \
352 $RPM_BUILD_ROOT%{systemdtmpfilesdir}
354 %{__make} install-eventum install-localization \
355 sysconfdir=%{_webappdir} \
356 localedir=%{_localedir} \
357 DESTDIR=$RPM_BUILD_ROOT
359 ln -s %{_webappdir} $RPM_BUILD_ROOT%{_appdir}/config
361 cp -a vendor $RPM_BUILD_ROOT%{_appdir}
364 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/ht
366 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
367 cp -a examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
369 %{?with_order:cp -a htdocs/ajax $RPM_BUILD_ROOT%{_appdir}/htdocs}
371 touch $RPM_BUILD_ROOT%{_webappdir}/htpasswd
372 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webappdir}/apache.conf
373 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webappdir}/httpd.conf
374 cp -p %{SOURCE15} $RPM_BUILD_ROOT%{_webappdir}/lighttpd.conf
376 install -d $RPM_BUILD_ROOT/etc/sphinx
377 #cp -p config/sphinx.conf $RPM_BUILD_ROOT/etc/sphinx/%{name}.conf
378 cp -p config/sphinx.conf.php $RPM_BUILD_ROOT%{_webappdir}
380 cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.d/%{name}-mail-queue
381 cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/cron.d/%{name}-mail-download
382 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/%{name}-reminder
383 cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/cron.d/%{name}-monitor
384 cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/cron.d/%{name}-sphinx
386 cp -p %{SOURCE14} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
389 install -p %{SOURCE13} $RPM_BUILD_ROOT%{_libdir}/router-postfix
391 cp -p %{SOURCE17} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
396 rm -rf $RPM_BUILD_ROOT
399 %groupadd -g 146 %{name}
400 %useradd -u 146 -d /var/lib/%{name} -g %{name} -c "Eventum User" %{name}
401 %addusertogroup http %{name}
404 # create empty ghost files
405 # these permissions ensure the logs are write only
407 errors.log login_attempts.log \
411 test -f /var/log/%{name}/$a && continue
412 install -m 0620 -o root -g http /dev/null /var/log/%{name}/$a
415 # run database update if configured
416 test -s %{_webappdir}/config.php && \
417 sudo -H -u http -- %{_appdir}/bin/upgrade.php || :
419 # nuke Smarty templates cache after upgrade
420 rm -f /var/cache/eventum/*.php
422 # Restart webserver on upgrade to get .mo translations reloaded.
423 # actually php engines "php-fcgi" and "php-fpm" needed only, apache is restarted anyway via webapp trigger.
424 %php_webserver_restart
427 if [ "$1" = "0" ]; then
429 rm -f /var/cache/eventum/*.php 2>/dev/null || :
433 if [ "$1" = "0" ]; then
439 chmod 660 %{_webappdir}/{config,private_key,secret_key}.php
440 chown root:http %{_webappdir}/{config,private_key,secret_key}.php
443 if [ "$1" = "0" ] && [ -f %{_webappdir}/config.php ]; then
444 chmod 640 %{_webappdir}/{config,private_key,secret_key}.php
445 chown root:http %{_webappdir}/{config,private_key,secret_key}.php
448 %triggerin -- apache1 < 1.3.37-3, apache1-base
449 %webapp_register apache %{_webapp}
451 %triggerun -- apache1 < 1.3.37-3, apache1-base
452 %webapp_unregister apache %{_webapp}
454 %triggerin -- apache < 2.2.0, apache-base
455 %webapp_register httpd %{_webapp}
457 %triggerun -- apache < 2.2.0, apache-base
458 %webapp_unregister httpd %{_webapp}
460 %triggerin -- lighttpd
461 %webapp_register lighttpd %{_webapp}
463 %triggerun -- lighttpd
464 %webapp_unregister lighttpd %{_webapp}
466 %files -f %{name}.lang
467 %defattr(644,root,root,755)
468 %attr(771,root,http) %dir %{_webappdir}
469 %attr(751,root,http) %dir %{_webappdir}/crm
470 %attr(751,root,http) %dir %{_webappdir}/custom_field
471 %attr(751,root,http) %dir %{_webappdir}/partner
472 %attr(751,root,http) %dir %{_webappdir}/templates
473 %attr(751,root,http) %dir %{_webappdir}/workflow
474 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/apache.conf
475 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/httpd.conf
476 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/lighttpd.conf
477 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/config.php
478 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/private_key.php
479 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/secret_key.php
480 %attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/setup.php
481 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_webappdir}/htpasswd
483 %dir %attr(731,root,http) /var/log/%{name}
484 %attr(620,root,http) %ghost /var/log/%{name}/*
485 %dir %attr(750,root,root) /var/log/archive/%{name}
486 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
492 %attr(755,root,root) %{_appdir}/bin/extension.php
493 %attr(755,root,root) %{_appdir}/bin/ldapsync.php
494 %attr(755,root,root) %{_appdir}/bin/migrate_storage_adapter.php
495 %attr(755,root,root) %{_appdir}/bin/process_all_emails.php
496 %attr(755,root,root) %{_appdir}/bin/upgrade.php
498 %{_appdir}/autoload.php
499 %{_appdir}/globals.php
502 %dir %{_appdir}/htdocs
503 %{_appdir}/htdocs/*.php
504 %{_appdir}/htdocs/*.ico
505 %{_appdir}/htdocs/ajax
506 %{_appdir}/htdocs/css
507 %{_appdir}/htdocs/customer
508 %{_appdir}/htdocs/images
510 %{_appdir}/htdocs/manage
511 %{_appdir}/htdocs/reports
512 %{_appdir}/htdocs/rpc
513 %{_appdir}/htdocs/components
517 %dir %{_appdir}/db/migrations
518 %{_appdir}/db/migrations/*.php
524 %{_appdir}/lib/eventum
525 %exclude %{_appdir}/src/Console/Command/MailDownloadCommand.php
526 %exclude %{_appdir}/src/Console/Command/MailQueueProcessCommand.php
527 %exclude %{_appdir}/src/Console/Command/MailQueueTruncateCommand.php
528 %exclude %{_appdir}/src/Console/Command/MonitorCommand.php
529 %exclude %{_appdir}/src/Console/Command/ReminderCheckCommand.php
533 %{systemdtmpfilesdir}/%{name}.conf
535 %dir /var/lib/%{name}
536 %dir %attr(730,root,http) /var/run/%{name}
537 %dir %attr(730,root,http) /var/cache/%{name}
540 %attr(770,root,http) %dir /var/lib/%{name}/routed_emails
541 %attr(770,root,http) %dir /var/lib/%{name}/routed_drafts
542 %attr(770,root,http) %dir /var/lib/%{name}/routed_notes
544 %attr(770,root,http) %dir /var/lib/%{name}/storage
547 %defattr(644,root,root,755)
548 %{_appdir}/htdocs/setup
551 %defattr(644,root,root,755)
553 %{_examplesdir}/%{name}-%{version}
556 %defattr(644,root,root,755)
557 %{_appdir}/src/Console/Command/MailQueueProcessCommand.php
558 %{_appdir}/src/Console/Command/MailQueueTruncateCommand.php
559 %attr(755,root,root) %{_appdir}/bin/process_mail_queue.php
560 %attr(755,root,root) %{_appdir}/bin/truncate_mail_queue.php
561 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-mail-queue
564 %defattr(644,root,root,755)
565 %{_appdir}/src/Console/Command/MailDownloadCommand.php
566 %attr(755,root,root) %{_appdir}/bin/download_emails.php
567 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-mail-download
570 %defattr(644,root,root,755)
571 %{_appdir}/src/Console/Command/ReminderCheckCommand.php
572 %attr(755,root,root) %{_appdir}/bin/check_reminders.php
573 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-reminder
576 %defattr(644,root,root,755)
577 %{_appdir}/src/Console/Command/MonitorCommand.php
578 %attr(755,root,root) %{_appdir}/bin/monitor.php
579 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-monitor
581 %files router-postfix
582 %defattr(644,root,root,755)
583 %attr(755,root,root) %{_libdir}/router-postfix
586 %defattr(644,root,root,755)
587 %{_webappdir}/sphinx.conf.php
588 #%attr(750,root,http) %config(noreplace) %verify(not md5 mtime size) /etc/sphinx/%{name}.conf
589 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}-sphinx