Blob Blame History Raw
Summary: Application for remote coredump analysis
Name: retrace-server
Version: 1.18.1
Release: 1%{?dist}
License: GPLv2+
URL: https://github.com/abrt/retrace-server
Source0: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz

%if 0%{?fedora} >= 29
# There are Python plugins in /usr/share/retrace-server/plugins
%global _python_bytecompile_extra 0
%endif

BuildArch: noarch

BuildRequires: intltool
BuildRequires: libtool
BuildRequires: texinfo
BuildRequires: asciidoc
BuildRequires: xmlto
%if 0%{?fedora} >= 29
BuildRequires: python2-devel
%endif
BuildRequires: lsof

Requires: rsync
Requires: mock >= 1.4.7
Requires: xz
Requires: gzip
Requires: bzip2
Requires: tar
Requires: p7zip
Requires: unzip
Requires: lzop
Requires: lsof
Requires: elfutils
Requires: createrepo >= 0.9.9-27
%if 0%{?fedora} > 27
Requires: python2-mod_wsgi
Requires: python2-webob
Requires: python2-magic
Requires: python2-requests
Requires: python2-requests-kerberos
Requires: python2-distro
Requires: python2-bugzilla
Requires: python2-six
BuildRequires: python2-six
%else
Requires: mod_wsgi
Requires: python-webob
Requires: python-magic
Requires: python-requests
Requires: python-requests-kerberos
Requires: python-distro
Requires: python-bugzilla
Requires: python-six
BuildRequires: python-six
%endif
Requires: mod_ssl
Requires: sqlite
Requires: yum-utils
Requires: crash >= 5.1.7
Requires: wget
Requires: kexec-tools
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 27)
Requires(preun): /sbin/install-info
Requires(post): /sbin/install-info
%endif
Requires(post): /usr/bin/crontab

Obsoletes: abrt-retrace-server < 2.0.3
Provides: abrt-retrace-server = 2.0.3

%description
The retrace server provides a coredump analysis and backtrace
generation service over a network using HTTP protocol.

%prep
%setup -q

%build
autoconf
%configure
make %{?_smp_mflags}

%install
make install DESTDIR=${RPM_BUILD_ROOT} mandir=%{_mandir}

# Remove byte-compiled python files generated by automake.
# automake uses system's python for all *.py files, even
# for those which needs to be byte-compiled with different
# version (python2/python3).
# rpm can do this work and use the appropriate python version.
find $RPM_BUILD_ROOT -name "*.py[co]" -delete

mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/cache/%{name}
mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/cache/%{name}/kernel
mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/cache/%{name}/download
mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/log/%{name}
mkdir -p ${RPM_BUILD_ROOT}/%{_localstatedir}/spool/%{name}
mkdir -p ${RPM_BUILD_ROOT}/%{_datadir}/%{name}

%if 0%{?fedora} >= 29
%py_byte_compile %{__python2} ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins
%endif

rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir

%{find_lang} %{name}

%pre
#retrace uid/gid reserved in setup, rhbz #706012
%define retrace_gid_uid 174
getent group retrace > /dev/null || groupadd -f -g %{retrace_gid_uid} --system retrace
getent passwd retrace > /dev/null || useradd --system -g retrace -u %{retrace_gid_uid} -d %{_datadir}/%{name} -s /sbin/nologin retrace
exit 0

%post
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 27)
/sbin/install-info %{_infodir}/%{name} %{_infodir}/dir 2> /dev/null || :
%endif
/usr/sbin/usermod -a -G mock retrace 2> /dev/null || :

if [ "$1" = 1 ]
then
#add disabled crontab entries to retrace's crontab
    %define retrace_crontab_entry0 "# 0 * * * * /usr/bin/retrace-server-cleanup >> /var/log/retrace-server/cleanup_error.log 2>&1"
    %define retrace_crontab_entry1 "#0 0,12 * * * /usr/bin/retrace-server-reposync fedora 15 i386 >> /var/log/retrace-server/reposync_error.log 2>&1"
    %define retrace_crontab_entry2 "#0 2,14 * * * /usr/bin/retrace-server-reposync fedora 15 x86_64 >> /var/log/retrace-server/reposync_error.log 2>&1"
    %define retrace_crontab_entry3 "#0 4,16 * * * /usr/bin/retrace-server-reposync fedora 16 i386 >> /var/log/retrace-server/reposync_error.log 2>&1"
    %define retrace_crontab_entry4 "#0 6,18 * * * /usr/bin/retrace-server-reposync fedora 16 x86_64 >> /var/log/retrace-server/reposync_error.log 2>&1"
    %define retrace_crontab_entry5 "#0 8,20 * * * /usr/bin/retrace-server-reposync fedora rawhide i386 >> /var/log/retrace-server/reposync_error.log 2>&1"
    %define retrace_crontab_entry6 "#0 10,22 * * * /usr/bin/retrace-server-reposync fedora rawhide x86_64 >> /var/log/retrace-server/reposync_error.log 2>&1"

    (crontab -u retrace -l 2> /dev/null; echo %{retrace_crontab_entry0}; \
     echo %{retrace_crontab_entry1}; echo %{retrace_crontab_entry2}; \
     echo %{retrace_crontab_entry3}; echo %{retrace_crontab_entry4}; \
     echo %{retrace_crontab_entry5}; echo %{retrace_crontab_entry6};) | crontab -u retrace - 2> /dev/null
fi

%preun
if [ "$1" = 0 ]
then
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= 27)
    /sbin/install-info --delete %{_infodir}/retrace-server %{_infodir}/dir 2> /dev/null || :
%endif
#comment entries in retrace's crontab
    (crontab -u retrace -l 2> /dev/null | sed "s,^\([^#].*\)$,#\1,g") | crontab -u retrace - 2> /dev/null
fi

%files -f %{name}.lang
%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}-httpd.conf
%config(noreplace) %{_sysconfdir}/%{name}.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %attr(0755,retrace,retrace) %{_localstatedir}/cache/%{name}
%dir %attr(0755,retrace,retrace) %{_localstatedir}/cache/%{name}/kernel
%dir %attr(0755,retrace,retrace) %{_localstatedir}/cache/%{name}/download
%dir %attr(0750,retrace,retrace) %{_localstatedir}/log/%{name}
%dir %attr(0770,retrace,retrace) %{_localstatedir}/spool/%{name}
%{_bindir}/%{name}-worker
%{_bindir}/%{name}-interact
%{_bindir}/%{name}-cleanup
%{_bindir}/%{name}-reposync
%{_bindir}/%{name}-reposync-faf
%{_bindir}/%{name}-plugin-checker
%{_bindir}/%{name}-task
%{_bindir}/%{name}-bugzilla-refresh
%{_bindir}/%{name}-bugzilla-query
%{_bindir}/bt_filter
%{_bindir}/coredump2packages
%{python_sitelib}/retrace/
%{_datadir}/%{name}/
%doc %{_mandir}/man1/%{name}-cleanup.1*
%doc %{_mandir}/man1/%{name}-interact.1*
%doc %{_mandir}/man1/%{name}-reposync.1*
%doc %{_mandir}/man1/%{name}-worker.1*
%doc %{_mandir}/man1/%{name}-task.1*
%doc %{_infodir}/%{name}*
%doc README.md
%license COPYING

%changelog
* Fri Mar 01 2019 Martin Kutlak <mkutlak@redhat.com> 1.18.1-1
- cleanup: Add check for opened crash files
- reposync: Inform why creating of repository failed
- Correct syntax for gdb backtrace command
- Refactoring: Too long lines, missing whitespaces
- Add has_coredump() method to RetraceTask and upate get_md5_tasks()
- Modify get_md5_tasks to skip tasks with no vmcores or invalid md5sum files
- Add 'has_vmcore' method to RetraceTask
- spec: Bytecompile r-s plugins explicitly
- spec: Remove automake byte-compiled files
- spec: Correct the file ownership
- do not require install-info on F28+
- Adjust indentation according to pylint recommendation
- py3 compatibility: Replace filter function with a list equivalent
- py3 compatibility: Adjust urllib, urllib2 and urlparse
- Fix missing sys import
- Clean up of unused imports
- py3 compatibility: Adjust imports
- py3 compatibility: Resolution of range and xrange
- py3 compatibility: Replace ConfigParser module with configparser
- py3 compatibility: Classic division
- py3 compatibility: Adjust raise statement syntax
- py3 compatibility: Replace StringIO module with io module
- py3 compatibility: Removal of tuple parameter unpacking
- Refactoring: Missing or bad whitespace
- py3 compatibility: Set literals
- py3 compatibility: Use 'sorted' built-in function
- py3 compatibility: Replacement of basestring with six.string_types
- py3 compatibility: Ensure map function to return a list
- py3 compatibility: Replacement of 'has_key' with 'in'
- Make r-s-bugzilla-query query options configurable
- Load credentials from custom file
- manager: Make the bugzillano a clickable link
- Query the remaining bugzilla statuses
- retrace: Add reset_age method
- Implement retrace-server-bzquery tool
- Implement retrace-server-bugzilla-refresh tool
- Implement bugzilla field
- py3 compatibility: Octal literals
- py3 compatibility: try-except statement
- py3 compatibility: print statement is replaced with a print() function
- For vmcores that fail crash but have a large enough kernel log, try --minimal
- Set md5sum as soon as possible.
- Add dedup_vmcore to RetraceWorker and call from retrace-server-cleanup
- Fail task if the crash sys command exits with non-zero and kernellog is small
- Fix typo in exception handling of get_kernel_release
- Set default signal handler for SIGPIPE before calling Popen on 'crash --osrelease'
- Improve vmcore kernel parsing for certain scenarios and limit file scanning
- autogen: correctly parse buildrequires from spec file
- spec: Do not:x show every single change

* Thu Feb 01 2018 Matej Marusak <mmarusak@redhat.com> 1.18.0-1
- mark license as license
- Update Python 2 dependency declarations to new packaging standards
- defattr is not needed as this is default
- use standard python_sitelib macro
- remove old changelog entries
- we do not build for el6 any more
- remove group
- Remove duplicate RetraceWorker._fail call when start_vmcore fails
- Add md5sum and kernelver to email notifications, help text to failing notification
- Convert notify_email_success and notify_email_fail to a single method
- Create notify_email_success / notify_email_fail helpers
- Enable packages with epoch
- Update to new mock
- Set kernelver and vmlinux as soon as possible
- reposync: Cleanup is not done by default in createrepo
- Explicitly state python version in shebangs
- Fix unreadable crash subdirectory when tarball is submitted without group read permissions
- Try noarch when checking for package
- Add pylintrc
- Use dnf in mock config on Fedora
- Update mock config for new mock version
- Pylint updates
- Add commandline client
- Add aliases into FAF reposync
- Cleanup tmp FAF repository after failing
- Write coresize for vmcores
- Change error message
- Fix wrong html tag
- Set zero to non-existing type of tasks
- Fix typeo in manager.wsgi which creates a backtrace on non-ftp tasks.
- Bump version of gettext
- Change path for README.md
- Fix problem with missing modules on kernel versions with cached vmlinux files.
- No first retrace time when no existing task
- Make the reposync tool more verbose if required

* Thu Mar 30 2017 Matej Marusak <mmarusak@redhat.com> 1.17.0-1
- Enable creating releases with makefile
- Introduce gen-version
- Do not use fedorahosted.org as source
- Include md5sum of original archive in summary page
- Do not try to get default time when ftptask
- Fix character escape typo
- Change retrace-server httpd config
- Modify search for existing vmlinux files in cache to handle older kernel-debuginfos
- Default to hex mode for crash commands involving backtraces.
- Create directories for tests if they are not present
- Don't mention old wiki page
- Fix double call of _fail method
- Update README
- Allow any compression of man pages
- Autogen without args configures for debugging
- Run 'configure' at the end of 'autogen'
- Improve autogen to list and install dependencies
- Avoid circular dependency on kernel-debuginfo for vmlinux files already in cache
- Add plugin checking action
- Update documentation of plugin in README
- Use short form rhel when creating repository
- Fix methods arguments
- Move global variables to config.py.in
- Recover from missing start/finish task files
- Change error message in cleanup script
- Add '-ascending' argument to gdb
- Use devtoolset-4-gdb when used on RHEL
- Enable creating repository from faf repository
- Add 'make check'
- Correct eu-unstrip parser if FILE is .
- Not mark packages with different architectures as duplicity
- Separate worker start_retrace method
- Add class to wrap plugins accessing
- Add class to wrap configuration file reading
- Delete python labels when no python backtrace available
- Git ignore bytecode
- Add python backtrace, source and locals into backtrace
- Move src/lib to src/retrace to make testing retrace-server easier
- Add "exploitable" into LocationMatch in the httpd.conf
- Fix invalid syntax error in sys.stderr.print()

* Thu Jun 2 2016 Jakub Filak <jfilak@redhat.com> - 1.16-1
- Log failed to start tasks
- Gracefully handle the worker errors
- Move the FTP query operation to an AJAX operation
- Fix duplicate email if a vmcore task fails to determine the kernel version
- Fix typo preventing email notifications from working.
- Correct eu-unstrip parser if FILE is '-'
- Allow package names with Epoch

* Fri Mar 18 2016 Jakub Filak <jfilak@redhat.com> - 1.15-1
- Correct paths to Fedora development releases
- Fix small problem with strip_vmcore calling prepare_debuginfo
- Avoid calling prepare_debuginfo from retrace-server-interact after kernel version detection
- Move prepare_debuginfo and strip_vmcore inside RetraceTask
- Add vmlinux file inside RetraceTask
- Fix bt_filter missing last task/PID read if the last line was not blank
- Update the release information to be dynamic based off of plugins
- Including a Red Hat Enterprise Linux plugin
- Mock logging into retrace task's dir
- Enforce uniform mode bits for almost all RetraceTask files
- Fix incorrect group permissions when writing RetraceServer files especially with interactive mode
- Fix retrace-server-worker --restart backtrace due to unwriteable retrace_log
- Correct license address
- Add VMCoreTask and UsrCoreTask to config

* Tue Feb 16 2016 Jakub Filak <jfilak@redhat.com> - 1.14-1
- generated config.py for the target platform at build time
- update URL patterns for Fedora repositories
- spec: add sqlite and cron to requirements
- set "crash" inside get_crash_cmd file if the file does not exist
- fix get_use_mock typo
- use %%global for the nested python_site macro instead of %%define