Sophie

Sophie

distrib > Mageia > 8 > x86_64 > by-pkgid > 2ec0eceea813ba59c238da943c04a95b > files > 6

ejabberd-20.12-3.mga8.src.rpm

%global _hardened_build 1
%global srcname ejabberd

# Since we require the version in both BuildRequires and Requires, let's make these variables for
# easier maintenance.
%global base64url_ver 1.0.1
%global cache_tab_ver 1.0.26
%global eimp_ver 1.0.18
%global epam_ver 1.0.10
%global esip_ver 1.0.39
%global ezlib_ver 1.0.9
%global fast_tls_ver 1.1.8
%global fast_xml_ver 1.1.45
%global fast_yaml_ver 1.0.29
%global idna_ver 6.0.0
%global jiffy_ver 1.0.5
%global jose_ver 1.9.0
%global luerl_ver 0.3
%global mqtree_ver 1.0.11
%global p1_acme_ver 1.0.10
%global p1_mysql_ver 1.0.17
%global p1_oauth2_ver 0.6.8
%global p1_pgsql_ver 1.1.10
%global p1_utils_ver 1.0.21
%global pkix_ver 1.0.7
%global stringprep_ver 1.0.24
%global stun_ver 1.0.40
%global xmpp_ver 1.5.1
%global yconf_ver 1.0.9

Name:           ejabberd
Version:        20.12
Release:        %mkrel 3
BuildArch:      noarch

License:        GPLv2+
Summary:        A distributed, fault-tolerant Jabber/XMPP server
Group:          System/Servers
URL:            https://www.ejabberd.im/
VCS:            scm:git:https://github.com/processone/ejabberd.git
Source0:        https://github.com/processone/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
Source2:        ejabberd.logrotate

# Support for systemd
Source4:        ejabberd.service
Source5:        ejabberd.tmpfiles.conf

# PAM support
Source9:        ejabberdctl.pam
Source11:       ejabberd.pam

# polkit support
Source12:       ejabberdctl.polkit.actions
Source13:       ejabberdctl.polkit.rules

# Mageia/Fedora-specific
Patch3:         ejabberd-0003-Install-into-BINDIR-instead-of-SBINDIR.patch
#Patch4:         ejabberd-0004-Enable-systemd-notification-if-available.patch


BuildRequires:  elixir >= 1.4.4
BuildRequires:  erlang-base64url >= %{base64url_ver}
BuildRequires:  erlang-cache_tab >= %{cache_tab_ver}
BuildRequires:  erlang-eimp >= %{eimp_ver}
BuildRequires:  erlang-epam >= %{epam_ver}
BuildRequires:  erlang-esip >= %{esip_ver}
BuildRequires:  erlang-ezlib >= %{ezlib_ver}
BuildRequires:  erlang-fast_tls >= %{fast_tls_ver}
BuildRequires:  erlang-fast_xml >= %{fast_xml_ver}
BuildRequires:  erlang-fast_yaml >= %{fast_yaml_ver}
BuildRequires:  erlang-idna >= %{idna_ver}
BuildRequires:  erlang-jiffy >= %{jiffy_ver}
BuildRequires:  erlang-jose >= %{jose_ver}
BuildRequires:  erlang-lager >= 3.6
BuildRequires:  erlang-luerl >= %{luerl_ver}
BuildRequires:  erlang-mqtree >= %{mqtree_ver}
BuildRequires:  erlang-odbc
BuildRequires:  erlang-p1_acme >= %{p1_acme_ver}
BuildRequires:  erlang-p1_mysql >= %{p1_mysql_ver}
BuildRequires:  erlang-p1_oauth2 >= %{p1_oauth2_ver}
BuildRequires:  erlang-p1_pgsql >= %{p1_pgsql_ver}
BuildRequires:  erlang-p1_utils >= %{p1_utils_ver}
BuildRequires:  erlang-pkix >= %{pkix_ver}
BuildRequires:  erlang-rebar
BuildRequires:  erlang-sd_notify
BuildRequires:  erlang-stringprep >= %{stringprep_ver}
BuildRequires:  erlang-stun >= %{stun_ver}
BuildRequires:  erlang-xmpp >= %{xmpp_ver}
BuildRequires:  erlang-yconf >= %{yconf_ver}
BuildRequires:  expat-devel >= 1.95
BuildRequires:  git
BuildRequires:  libyaml-devel >= 0.1.4
BuildRequires:  openssl-devel >= 1.0.0
BuildRequires:  pam-devel

BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires: make

# For creating user and group
Requires(pre):  shadow-utils

Requires(post): openssl
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd

Provides: user(%{name})
Provides: group(%{name})

# From rebar
Requires:  elixir >= 1.4.4
Requires:  erlang-base64url >= %{base64url_ver}
Requires:  erlang-cache_tab >= %{cache_tab_ver}
Requires:  erlang-eimp >= %{eimp_ver}
Requires:  erlang-epam >= %{epam_ver}
Requires:  erlang-esip >= %{esip_ver}
Requires:  erlang-ezlib >= %{ezlib_ver}
Requires:  erlang-fast_tls >= %{fast_tls_ver}
Requires:  erlang-fast_xml >= %{fast_xml_ver}
Requires:  erlang-fast_yaml >= %{fast_yaml_ver}
Requires:  erlang-idna >= %{idna_ver}
Requires:  erlang-jiffy >= %{jiffy_ver}
Requires:  erlang-jose >= %{jose_ver}
Requires:  erlang-luerl >= %{luerl_ver}
Requires:  erlang-mqtree >= %{mqtree_ver}
Requires:  erlang-os_mon
Requires:  erlang-p1_acme >= %{p1_acme_ver}
Requires:  erlang-p1_mysql >= %{p1_mysql_ver}
Requires:  erlang-p1_oauth2 >= %{p1_oauth2_ver}
Requires:  erlang-p1_pgsql >= %{p1_pgsql_ver}
Requires:  erlang-p1_utils >= %{p1_utils_ver}
Requires:  erlang-pkix >= %{pkix_ver}
Requires:  erlang-stringprep >= %{stringprep_ver}
Requires:  erlang-stun >= %{stun_ver}
Requires:  erlang-xmpp >= %{xmpp_ver}
Requires:  erlang-yconf >= %{yconf_ver}
# We install a logrotate.d file
Requires:   logrotate
# for /usr/bin/pkexec
Requires:   polkit
# for flock in ejabberdctl
Requires:   util-linux


%description
ejabberd is a Free and Open Source distributed fault-tolerant
Jabber/XMPP server. It is mostly written in Erlang, and runs on many
platforms (tested on Linux, FreeBSD, NetBSD, Solaris, Mac OS X and
Windows NT/2000/XP).

%prep
%autosetup -p1

# Upstream seems to import erlang-xmpp and erlang-fast_xml in a way that isn't compatible with them
# being system libraries. We need to patch the include statements to fix this.
# https://github.com/processone/ejabberd/pull/1446/
find . -name "*.hrl" | xargs sed -i \
    "s/include(\"fxml.hrl/include_lib(\"fast_xml\/include\/fxml.hrl/"
find . -name "*.erl" | xargs sed -i "s/include(\"jid.hrl/include_lib(\"xmpp\/include\/jid.hrl/"
find . -name "*.hrl" | xargs sed -i "s/include(\"ns.hrl/include_lib(\"xmpp\/include\/ns.hrl/"
find . -name "*.erl" | xargs sed -i "s/include(\"xmpp.hrl/include_lib(\"xmpp\/include\/xmpp.hrl/"
find . -name "*.hrl" | xargs sed -i \
    "s/include(\"xmpp_codec.hrl/include_lib(\"xmpp\/include\/xmpp_codec.hrl/"

# A few dependencies are configured to be found in the deps folder instead of in system libs
# https://github.com/processone/ejabberd/issues/1850
perl -p -i -e "s|deps/p1_utils/include|$(rpm -ql erlang-p1_utils | grep -E '/include$' )|g" rebar.config
perl -p -i -e "s|deps/fast_xml/include|$(rpm -ql erlang-fast_xml | grep -E '/include$' )|g" rebar.config
perl -p -i -e "s|deps/xmpp/include|$(rpm -ql erlang-xmpp | grep -E '/include$' )|g"   rebar.config

%build
autoreconf -ivf

%configure --disable-graphics --enable-odbc --enable-mysql --enable-pgsql --enable-pam --enable-zlib --enable-debug --libdir=%{_libdir}/erlang/lib/ --with-erlang=%{_libdir}/erlang/ --enable-system-deps --enable-stun

%{erlang_compile}

%install
%{erlang_install}

sed -e "s*{{rootdir}}*%{_prefix}*" \
    -e "s*{{installuser}}*%{name}*" \
    -e "s*{{bindir}}*%{_bindir}*" \
    -e "s*{{libdir}}*%{_erllibdir}*" \
    -e "s*{{sysconfdir}}*%{_sysconfdir}*" \
    -e "s*{{localstatedir}}*/var*" \
    -e "s*{{docdir}}*%{_datadir}/doc/%{name}*" \
    -e "s*{{erl}}*%{_bindir}/erl*" \
    -e "s*{{epmd}}*%{_bindir}/epmd*" ejabberdctl.template \
> ejabberdctl.example

install -d -m 0750 %{buildroot}%{_sysconfdir}/%{name}
install -D -p -m 0644 ejabberd.yml.example %{buildroot}%{_sysconfdir}/%{name}/ejabberd.yml
install -D -p -m 0644 ejabberdctl.cfg.example %{buildroot}%{_sysconfdir}/%{name}/ejabberdctl.cfg
install -D -p -m 0644 inetrc %{buildroot}%{_sysconfdir}/%{name}/inetrc

install -D -p -m 0755 ejabberdctl.example %{buildroot}%{_bindir}/ejabberdctl

install -d -m 0750 %{buildroot}/var/lib/ejabberd
install -d -m 0750 %{buildroot}/var/lock/ejabberdctl
install -d -m 0750 %{buildroot}/var/log/ejabberd

# fix example SSL certificate path to real one, which we created recently (see above)
%{__perl} -pi -e 's!/path/to/ssl.pem!/etc/ejabberd/ejabberd.pem!g' %{buildroot}/etc/ejabberd/ejabberd.yml

install -D -p -m 0755 tools/captcha.sh %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/bin/captcha.sh
# fix captcha path
%{__perl} -pi -e 's!/lib/ejabberd/priv/bin/captcha.sh!%{_libdir}/%{name}/priv/bin/captcha.sh!g' %{buildroot}/etc/ejabberd/ejabberd.yml

install -D -p -m 0644 %{S:9} %{buildroot}%{_sysconfdir}/pam.d/ejabberdctl
install -D -p -m 0644 %{S:11} %{buildroot}%{_sysconfdir}/pam.d/ejabberd

# install systemd entry
install -D -m 0644 -p %{S:4} %{buildroot}%{_unitdir}/%{name}.service
install -D -m 0644 -p %{S:5} %{buildroot}%{_tmpfilesdir}/%{name}.conf

# install config for logrotate
install -D -p -m 0644  %{S:2} %{buildroot}%{_sysconfdir}/logrotate.d/ejabberd

# create room for additional files (such as SQL schemas)
install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
# install sql-scripts for creating db schemes for various RDBMS
install -p -m 0644 sql/lite.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
install -p -m 0644 sql/mssql.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
install -p -m 0644 sql/mysql.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
install -p -m 0644 sql/pg.sql %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/sql/
# Install css files
install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/css
install -p -m 0644 priv/css/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/css/
# Install img files
install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/img
install -p -m 0644 priv/img/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/img/
# Install js files
install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/js
install -p -m 0644 priv/js/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/js/
# Install lua files
install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/lua
install -p -m 0644 priv/lua/* %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/lua/

install -d -m 0755 %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/msgs/
install -p -m 0644 priv/msgs/*.msg %{buildroot}%{_erllibdir}/%{name}-%{version}/priv/msgs/

# Install man page
install -d -m 0755 %{buildroot}%{_mandir}/man5/
install -p -m 0644 man/ejabberd.yml.5 %{buildroot}%{_mandir}/man5/

# Install polkit-related files
install -D -p -m 0644 %{S:12} %{buildroot}%{_datadir}/polkit-1/actions/ejabberdctl.policy
install -D -p -m 0644 %{S:13} %{buildroot}%{_datadir}/polkit-1/rules.d/51-ejabberdctl.rules

%check
%{rebar_eunit}


%pre
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -M \
-c "ejabberd" %{name} 2>/dev/null || :


if [ $1 -gt 1 ]; then
    # we should backup DB in every upgrade
    if ejabberdctl status >/dev/null ; then
        # Use timestamp to make database restoring easier
        TIME=$(date +%%Y-%%m-%%dT%%H:%%M:%%S)
        BACKUPDIR=$(mktemp -d -p /var/tmp/ ejabberd-$TIME.XXXXXX)
        chown ejabberd:ejabberd $BACKUPDIR
        BACKUP=$BACKUPDIR/ejabberd-database
        ejabberdctl backup $BACKUP
        # Change ownership to root:root because ejabberd user might be
        # removed on package removal.
        chown -R root:root $BACKUPDIR
        chmod 700 $BACKUPDIR
        echo
        echo The ejabberd database has been backed up to $BACKUP.
        echo
    fi

    # fix cookie path (since ver. 2.1.0 cookie stored in /var/lib/ejabberd/spool
    # rather than in /var/lib/ejabberd
    if [ -f /var/lib/ejabberd/spool/.erlang.cookie ]; then
        cp -pu /var/lib/ejabberd/{spool/,}.erlang.cookie
        echo
        echo The ejabberd cookie file was moved again.
        echo Please delete old one from /var/lib/ejabberd/spool/.erlang.cookie
        echo
    fi
fi

%post
%_post_service %{name}

# Create SSL certificate with default values if it doesn't exist
(cd /etc/ejabberd
if [ ! -f ejabberd.pem ]
then
    echo "Generating SSL certificate /etc/ejabberd/ejabberd.pem..."
    HOSTNAME=$(hostname -s 2>/dev/null || echo "localhost")
    DOMAINNAME=$(hostname -d 2>/dev/null || echo "localdomain")
    openssl req -new -x509 -days 365 -nodes -out ejabberd.pem \
                -keyout ejabberd.pem > /dev/null 2>&1 <<+++
.
.
.
$DOMAINNAME
$HOSTNAME
ejabberd
root@$HOSTNAME.$DOMAINNAME
+++
chown ejabberd:ejabberd ejabberd.pem
chmod 600 ejabberd.pem
fi)

%preun
%_preun_service %{name}

%postun
%_postun_service %{name}

%files
%license COPYING
%doc CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS.md README.md

%attr(750,ejabberd,ejabberd) %dir %{_sysconfdir}/ejabberd
%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberd.yml
%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberdctl.cfg
%attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/inetrc

%{_unitdir}/%{name}.service
%{_tmpfilesdir}/%{name}.conf

%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/pam.d/%{name}
%config(noreplace) %{_sysconfdir}/pam.d/ejabberdctl
%{_mandir}/man5/ejabberd.yml.5*
%{_datadir}/polkit-1/actions/ejabberdctl.policy
%{_datadir}/polkit-1/rules.d/51-ejabberdctl.rules
%{_bindir}/ejabberdctl

%{_erllibdir}/%{name}-%{version}

%attr(750,ejabberd,ejabberd) %dir /var/lib/ejabberd
%attr(750,ejabberd,ejabberd) %dir %ghost /var/lock/ejabberdctl
%attr(750,ejabberd,ejabberd) %dir /var/log/ejabberd


%changelog
* Mon Dec 21 2020 neoclust <neoclust> 20.12-3.mga8
+ Revision: 1662530
- Do not require SELinux

* Mon Dec 21 2020 neoclust <neoclust> 20.12-2.mga8
+ Revision: 1662505
- Rebuild with new dependancies
- Upgrade dependancies

* Sun Dec 20 2020 neoclust <neoclust> 20.12-1.mga8
+ Revision: 1661884
- New version 20.12
- Update first to version 20.07
- New version 20.12

* Wed Feb 12 2020 umeabot <umeabot> 18.06-2.mga8
+ Revision: 1511557
- Mageia 8 Mass Rebuild
+ wally <wally>
- replace deprecated %%configure2_5x

* Fri Sep 21 2018 wally <wally> 18.06-1.mga7
+ Revision: 1295250
- new version 18.06 (sync with Fedora)

* Sun Jan 08 2017 neoclust <neoclust> 16.09-4.mga6
+ Revision: 1080611
- Bump release to fix a BS failure
- New version 16.09
- new version 16.09

* Sun Oct 16 2016 tv <tv> 16.01-4.mga6
+ Revision: 1061153
- BR systemd-devel for macro definition (mga#12027)

* Mon Jul 18 2016 neoclust <neoclust> 16.01-3.mga6
+ Revision: 1042448
- Rebuild for armv5

* Sun May 08 2016 neoclust <neoclust> 16.01-2.mga6
+ Revision: 1010632
- New version 16.01
+ tv <tv>
- fix BRs with new erlang
- fix deps with new erlang

* Wed Mar 02 2016 umeabot <umeabot> 2.1.13-8.mga6
+ Revision: 983366
- Rebuild for openssl

* Mon Feb 08 2016 umeabot <umeabot> 2.1.13-7.mga6
+ Revision: 944412
- Mageia 6 Mass Rebuild

* Fri Oct 17 2014 luigiwalser <luigiwalser> 2.1.13-6.mga5
+ Revision: 779829
- rediff upstream patch to fix CVE-2014-8760
+ umeabot <umeabot>
- Second Mageia 5 Mass Rebuild

* Tue Sep 16 2014 umeabot <umeabot> 2.1.13-4.mga5
+ Revision: 678982
- Mageia 5 Mass Rebuild

* Tue Dec 31 2013 dmorgan <dmorgan> 2.1.13-3.mga4
+ Revision: 563431
- Fix Buildrequires with new texlive

* Tue Oct 22 2013 umeabot <umeabot> 2.1.13-2.mga4
+ Revision: 542900
- Mageia 4 Mass Rebuild

* Tue Oct 15 2013 mitya <mitya> 2.1.13-1.mga4
+ Revision: 498016
- New version 2.1.13
- Update patch 3
- Drop patches 9, 10, 11 (merged upstream)

* Sun Mar 24 2013 colin <colin> 2.1.11-8.mga3
+ Revision: 404859
- Add systemd requires and general post/pre fixes (mga#9302)

* Fri Jan 11 2013 umeabot <umeabot> 2.1.11-7.mga3
+ Revision: 349587
- Mass Rebuild - https://wiki.mageia.org/en/Feature:Mageia3MassRebuild

* Sun Nov 25 2012 colin <colin> 2.1.11-6.mga3
+ Revision: 321774
- Do not package tmpfiles conf in /etc
- Run systemd-tmpfiles --create on post install

* Fri Oct 26 2012 neoclust <neoclust> 2.1.11-5.mga3
+ Revision: 310285
- Fix config files
- Add systemd support

* Sun Jul 22 2012 neoclust <neoclust> 2.1.11-2.mga3
+ Revision: 273598
- Do not use Mandriva word ( thanks to jean-christophe)

* Sat Jul 07 2012 mitya <mitya> 2.1.11-1.mga3
+ Revision: 268768
- New version 2.1.11

* Mon Apr 23 2012 mitya <mitya> 2.1.10-1.mga2
+ Revision: 233044
- Fix BuildRequires
- Import ejabberd 2.1.10
- Created package structure for ejabberd.