File prosody.spec of Package prosody

#
# spec file for package prosody
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%if 0%{?suse_version} > 1230 || 0%{?rhel_version} > 600 || 0%{?centos_version} > 600 || 0%{?fedora_version} >= 20 || 0%{?el7}%{?fc20}%{?fc21}%{?fc22}%{?fc23}%{?fc24}%{?fc25}
%bcond_without  systemd
%define _piddir /run
%else
%bcond_with     systemd
%define _piddir %{_localstatedir}/run
%endif

%{!?_tmpfilesdir: %global _tmpfilesdir /usr/lib/tmpfiles.d }

Name:           prosody
Version:        0.9.12
Release:        0
Summary:        Modern flexible communications server for Jabber/XMPP
License:        MIT
Group:          Productivity/Networking/Other
Url:            http://prosody.im/downloads/source
Source:         http://prosody.im/downloads/source/%{name}-%{version}.tar.gz
Source2:        http://prosody.im/downloads/source/%{name}-%{version}.tar.gz.asc
Source3:        %{name}.keyring
Source4:        %{name}.service
Source5:        prosody.tmpfile
# Make prosody work on systems that have lua 5.1 AND 5.2 installed
Patch0:         prosody-lua51coexist.patch
Patch1:         prosody-configure.patch
Patch2:         prosody-makefile.patch
# PATCH-FIX-OPENSUSE marguerite@opensuse.org - enable Unix features
Patch3:         prosody-cfg.patch
BuildRequires:  libidn-devel
BuildRequires:  libopenssl-devel
Requires:       lua51-luaexpat
Requires:       lua51-luafilesystem
Requires:       lua51-luasec
Requires:       lua51-luasocket
Requires(pre):  permissions
Requires(pre):  pwdutils
Recommends:     lua51-luadbi
Recommends:     lua51-luaevent
Recommends:     lua51-zlib
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} <= 1210
BuildRequires:  lua-devel
BuildRequires:  openssl
Requires:       lua
%else
BuildRequires:  lua51-devel
Requires:       lua51
%endif
%if %{with systemd}
%{?systemd_requires}
BuildRequires:  systemd
%endif

%description
Prosody is a flexible communications server for Jabber/XMPP written in Lua.
It aims to be easy to use, and light on resources.
For developers it aims to be easy to extend and give a flexible system
on which to rapidly develop added functionality, or prototype new protocols.

%prep
%setup -q
%patch0 -p1
%patch1
%patch2
%patch3 -p1

sed -i 's|@@LIBDIR@@|%{_libdir}|g;s|@@INCLUDEDIR@@|%{_includedir}|g;' configure
sed -i 's|@@LIBDIR@@|%{_libdir}|g;s|@@INCLUDEDIR@@|%{_includedir}|g;' Makefile
sed -i 's|@@PIDDIR@@|%{_piddir}|g;' prosody.cfg.lua.dist

%build
# CFLAGS need to keep -fPIC for shared modules
./configure --lua-suffix="5.1" --cflags="%{optflags} -fPIC" --c-compiler=gcc

make %{?_smp_mflags}

%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}

%if %{with systemd}
install -D -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/%{name}.service

# tmpfiles.d
install -D -m 0644 %{SOURCE5} %{buildroot}%{_tmpfilesdir}/%{name}.conf

mkdir -p %{buildroot}%{_sbindir}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcprosody
%endif #systemd

# mkdir read/write by prosody
mkdir -p %{buildroot}%{_piddir}/prosody
mkdir -p %{buildroot}%{_localstatedir}/log/prosody

# clean up for rpmlint
chmod 644 %{buildroot}/%{_libdir}/prosody/prosody.version
chmod -R g+rX,o= %{buildroot}%{_sysconfdir}/prosody

%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 -c "user for %{name}" %{name}
%if %{with systemd}
%service_add_pre %{name}.service

%post
%service_add_post %{name}.service
systemd-tmpfiles --create %{_tmpfilesdir}/%{name}.conf ||:

%preun
%service_del_preun %{name}.service

%postun
%service_del_postun %{name}.service
%endif

%files
%defattr(-,root,root)
%config %attr(-,root,prosody) %{_sysconfdir}/prosody/
%{_bindir}/prosody
%{_bindir}/prosodyctl
%dir %{_libdir}/prosody
%dir %{_libdir}/prosody/core
%{_libdir}/prosody/core/certmanager.lua
%{_libdir}/prosody/core/configmanager.lua
%{_libdir}/prosody/core/hostmanager.lua
%{_libdir}/prosody/core/loggingmanager.lua
%{_libdir}/prosody/core/moduleapi.lua
%{_libdir}/prosody/core/modulemanager.lua
%{_libdir}/prosody/core/portmanager.lua
%{_libdir}/prosody/core/rostermanager.lua
%{_libdir}/prosody/core/s2smanager.lua
%{_libdir}/prosody/core/sessionmanager.lua
%{_libdir}/prosody/core/stanza_router.lua
%{_libdir}/prosody/core/storagemanager.lua
%{_libdir}/prosody/core/usermanager.lua
%dir %{_libdir}/prosody/modules
%dir %{_libdir}/prosody/modules/adhoc
%{_libdir}/prosody/modules/adhoc/adhoc.lib.lua
%{_libdir}/prosody/modules/adhoc/mod_adhoc.lua
%{_libdir}/prosody/modules/mod_admin_adhoc.lua
%{_libdir}/prosody/modules/mod_admin_telnet.lua
%{_libdir}/prosody/modules/mod_announce.lua
%{_libdir}/prosody/modules/mod_auth_anonymous.lua
%{_libdir}/prosody/modules/mod_auth_cyrus.lua
%{_libdir}/prosody/modules/mod_auth_internal_hashed.lua
%{_libdir}/prosody/modules/mod_auth_internal_plain.lua
%{_libdir}/prosody/modules/mod_bosh.lua
%{_libdir}/prosody/modules/mod_c2s.lua
%{_libdir}/prosody/modules/mod_component.lua
%{_libdir}/prosody/modules/mod_compression.lua
%{_libdir}/prosody/modules/mod_dialback.lua
%{_libdir}/prosody/modules/mod_disco.lua
%{_libdir}/prosody/modules/mod_groups.lua
%{_libdir}/prosody/modules/mod_http.lua
%{_libdir}/prosody/modules/mod_http_errors.lua
%{_libdir}/prosody/modules/mod_http_files.lua
%{_libdir}/prosody/modules/mod_iq.lua
%{_libdir}/prosody/modules/mod_lastactivity.lua
%{_libdir}/prosody/modules/mod_legacyauth.lua
%{_libdir}/prosody/modules/mod_message.lua
%{_libdir}/prosody/modules/mod_motd.lua
%{_libdir}/prosody/modules/mod_net_multiplex.lua
%{_libdir}/prosody/modules/mod_offline.lua
%{_libdir}/prosody/modules/mod_pep.lua
%{_libdir}/prosody/modules/mod_ping.lua
%{_libdir}/prosody/modules/mod_posix.lua
%{_libdir}/prosody/modules/mod_presence.lua
%{_libdir}/prosody/modules/mod_privacy.lua
%{_libdir}/prosody/modules/mod_private.lua
%{_libdir}/prosody/modules/mod_proxy65.lua
%{_libdir}/prosody/modules/mod_pubsub.lua
%{_libdir}/prosody/modules/mod_register.lua
%{_libdir}/prosody/modules/mod_roster.lua
%dir %{_libdir}/prosody/modules/mod_s2s
%{_libdir}/prosody/modules/mod_s2s/mod_s2s.lua
%{_libdir}/prosody/modules/mod_s2s/s2sout.lib.lua
%{_libdir}/prosody/modules/mod_saslauth.lua
%{_libdir}/prosody/modules/mod_storage_internal.lua
%{_libdir}/prosody/modules/mod_storage_none.lua
%{_libdir}/prosody/modules/mod_storage_sql.lua
%{_libdir}/prosody/modules/mod_time.lua
%{_libdir}/prosody/modules/mod_tls.lua
%{_libdir}/prosody/modules/mod_uptime.lua
%{_libdir}/prosody/modules/mod_vcard.lua
%{_libdir}/prosody/modules/mod_version.lua
%{_libdir}/prosody/modules/mod_watchregistrations.lua
%{_libdir}/prosody/modules/mod_welcome.lua
%dir %{_libdir}/prosody/modules/muc
%{_libdir}/prosody/modules/muc/mod_muc.lua
%{_libdir}/prosody/modules/muc/muc.lib.lua
%{_libdir}/prosody/modules/sql.lib.lua
%dir %{_libdir}/prosody/modules/storage
%{_libdir}/prosody/modules/storage/mod_xep0227.lua
%{_libdir}/prosody/modules/storage/sqlbasic.lib.lua
%{_libdir}/prosody/modules/storage/xep227store.lib.lua
%dir %{_libdir}/prosody/net
%{_libdir}/prosody/net/adns.lua
%{_libdir}/prosody/net/connlisteners.lua
%{_libdir}/prosody/net/dns.lua
%dir %{_libdir}/prosody/net/http
%{_libdir}/prosody/net/http/codes.lua
%{_libdir}/prosody/net/http/parser.lua
%{_libdir}/prosody/net/http/server.lua
%{_libdir}/prosody/net/http.lua
%{_libdir}/prosody/net/httpserver.lua
%{_libdir}/prosody/net/server_event.lua
%{_libdir}/prosody/net/server.lua
%{_libdir}/prosody/net/server_select.lua
%{_libdir}/prosody/prosody.version
%dir %{_libdir}/prosody/util
%{_libdir}/prosody/util/adhoc.lua
%{_libdir}/prosody/util/array.lua
%{_libdir}/prosody/util/caps.lua
%{_libdir}/prosody/util/dataforms.lua
%{_libdir}/prosody/util/datamanager.lua
%{_libdir}/prosody/util/datetime.lua
%{_libdir}/prosody/util/debug.lua
%{_libdir}/prosody/util/dependencies.lua
%{_libdir}/prosody/util/encodings.so
%{_libdir}/prosody/util/envload.lua
%{_libdir}/prosody/util/events.lua
%{_libdir}/prosody/util/filters.lua
%{_libdir}/prosody/util/hashes.so
%{_libdir}/prosody/util/helpers.lua
%{_libdir}/prosody/util/hmac.lua
%{_libdir}/prosody/util/http.lua
%{_libdir}/prosody/util/import.lua
%{_libdir}/prosody/util/ip.lua
%{_libdir}/prosody/util/iterators.lua
%{_libdir}/prosody/util/jid.lua
%{_libdir}/prosody/util/json.lua
%{_libdir}/prosody/util/logger.lua
%{_libdir}/prosody/util/multitable.lua
%{_libdir}/prosody/util/net.so
%{_libdir}/prosody/util/openssl.lua
%{_libdir}/prosody/util/pluginloader.lua
%{_libdir}/prosody/util/pposix.so
%{_libdir}/prosody/util/prosodyctl.lua
%{_libdir}/prosody/util/pubsub.lua
%{_libdir}/prosody/util/rfc6724.lua
%dir %{_libdir}/prosody/util/sasl
%{_libdir}/prosody/util/sasl/anonymous.lua
%{_libdir}/prosody/util/sasl_cyrus.lua
%{_libdir}/prosody/util/sasl/digest-md5.lua
%{_libdir}/prosody/util/sasl.lua
%{_libdir}/prosody/util/sasl/plain.lua
%{_libdir}/prosody/util/sasl/scram.lua
%{_libdir}/prosody/util/serialization.lua
%{_libdir}/prosody/util/set.lua
%{_libdir}/prosody/util/signal.so
%{_libdir}/prosody/util/sql.lua
%{_libdir}/prosody/util/stanza.lua
%{_libdir}/prosody/util/template.lua
%{_libdir}/prosody/util/termcolours.lua
%{_libdir}/prosody/util/throttle.lua
%{_libdir}/prosody/util/timer.lua
%{_libdir}/prosody/util/uuid.lua
%{_libdir}/prosody/util/watchdog.lua
%{_libdir}/prosody/util/x509.lua
%{_libdir}/prosody/util/xml.lua
%{_libdir}/prosody/util/xmppstream.lua
%{_mandir}/man1/prosodyctl.1*
%dir %attr(-,prosody,prosody) %{_localstatedir}/lib/prosody
%dir %attr(-,prosody,prosody) %{_localstatedir}/log/prosody

%if %{with systemd}
%{_sbindir}/rcprosody
%{_unitdir}/%{name}.service
%{_tmpfilesdir}/%{name}.conf
%dir %attr(0755,prosody,prosody) %ghost %{_piddir}/prosody
%else
%dir %attr(0755,prosody,prosody)        %{_piddir}/prosody
%endif # systemd

%changelog
openSUSE Build Service is sponsored by