File ircd-ratbox.spec of Package ircd-ratbox

# norootforbuild
%define pkg_name    ircd-ratbox
%define _suffix     ratbox
%define dir_prefix  ratbox/ircd
%define modules_dir %{_libdir}/ratbox/ircd/modules
%define help_dir    %{_datadir}/ratbox/ircd/help
%define conf_dir    %{_sysconfdir}/%{dir_prefix}
%define log_dir     %{_var}/log/%{dir_prefix}
%define rat_run_dir %{_var}/run/ratbox
%define run_dir     %{rat_run_dir}/ircd
%define servlink    %{_sbindir}/servlink-%{_suffix}
#
Name:          ircd-ratbox
Version:       3.0.8
Release:       0
#
License:       GPL-2.0
Group:         Productivity/Networking/IRC
#
BuildRoot:     %{_tmppath}/%{pkg_name}-%{version}-build
BuildRequires: openssl-devel pkgconfig bison flex zlib-devel sqlite3-devel
PreReq:        %insserv_prereq %fillup_prereq
Conflicts: %{pkg_name}-testing
#
URL:           http://www.ratbox.org/
Source:        http://www.ratbox.org/download/%{pkg_name}-%{version}.tar.bz2
Source1:       %{pkg_name}.init
Patch:         ircd-ratbox-3.0.8_contrib_modules_path.patch
Patch1:        ircd-ratbox-3.0.8_undefined_behavior_m_oper.patch
#
Summary:       ircd-ratbox is an advanced, stable and fast ircd.
%description
ircd-ratbox is an advanced, stable, fast ircd. It is an evolution where
ircd-hybrid left off around version 7-rc1. It supports the TS3 and TS5
protocols, and is used on EFnet and other IRC networks.

Authors:
--------
    AndroSyn, Aaron Sethman <androsyn@ratbox.org>
    fl, Lee Hardy <lee@leeh.co.uk>
    larne, Edward Brocklesby <ejb@goth.net>

%prep
%setup -n %{pkg_name}-%{version}
%patch
%patch1
#
# fix the config
#
%{__sed} -i                                                                                 \
    -e 's|#servlink_path = "/usr/local/ircd/bin/servlink";|servlink_path = "%{servlink}";|' \
    -e 's|/usr/local/ircd/modules|%{modules_dir}|g'                                         \
    -e 's|/usr/local/ircd/etc/|%{conf_dir}|g'                                               \
    -e 's|"logs/|"%{log_dir}/|g'                                                            \
doc/example.*conf
#
# fix path to the binaries. otherwise stuff like /restart is broken
#
%{__sed} -i                                      \
    -e 's|bin|sbin|'                             \
    -e 's|\(BINPATH "/.*\)"|\1-%{_suffix}"|g'    \
    -e 's|ETCPATH "/ircd.pid"|"%{run_dir}/pid"|' \
include/config.h

%build
#autoreconf -fi
export CFLAGS="%{optflags} -Wno-unused"
%if %suse_version > 1000
export CFLAGS="$CFLAGS -fstack-protector"
%endif
export CFLAGS="$CFLAGS -fpic -DPIC"
export LIBS="-pie"
%configure                          \
    --bindir=%{_sbindir}            \
    --with-helpdir=%{help_dir}      \
    --with-confdir=%{conf_dir}      \
    --with-logdir=%{log_dir}        \
    --with-moduledir=%{modules_dir} \
    --enable-ipv6                   \
    --enable-openssl                \
    --enable-zlib                   \
    --enable-warnings               \
    --with-nicklen=32               \
    --enable-services
%{__make}
%{__make} -C contrib


%install
%{__install} -Dd -m 0755 \
    %{buildroot}%{_sysconfdir}/init.d \
    %{buildroot}%{modules_dir} \
    %{buildroot}%{conf_dir} %{buildroot}%{log_dir} \
    %{buildroot}%{help_dir} %{buildroot}%{run_dir} \
    %{buildroot}%{_docdir}/%{pkg_name}/{contrib,technical}
%makeinstall
%makeinstall -C contrib
#
# fix binary names. the package lack --suffix
#
for bin in ircd bantool ; do
    %{__mv} %{buildroot}%{_sbindir}/${bin} %{buildroot}%{_sbindir}/${bin}-%{_suffix}
done
# {__mv} -v %{buildroot}%{_mandir}/man8/ircd{,%{_suffix}}.8

%{__install} -m 0644 ChangeLog CREDITS SVN-Access INSTALL LICENSE README* RELNOTES \
    %{buildroot}%{_docdir}/%{pkg_name}

%{__install} -m 0644 contrib/{README,example_module.c,m_42.c} \
    %{buildroot}%{_docdir}/%{pkg_name}/contrib/

%{__install} -m 0644 doc/{*.txt,*.conf,README.cidr_bans,server-version-info} \
    %{buildroot}%{_docdir}/%{pkg_name}/

%{__install} -m 0644 doc/technical/* \
    %{buildroot}%{_docdir}/%{pkg_name}/technical/

%{__install} -m 0755 %{S:1} %{buildroot}%{_sysconfdir}/init.d/%{pkg_name}
%{__ln_s} -f %{_sysconfdir}/init.d/%{pkg_name} %{buildroot}%{_sbindir}/rc%{pkg_name}
%{__install} -m 0640 %{buildroot}%{conf_dir}/{example,ircd}.conf
#
find %{buildroot}%{_libdir} -name \*.la -print -delete
find %{buildroot}%{_libdir} -type l -name \*.so -print -delete

%clean
%{__rm} -rf %{buildroot};

%pre
/usr/sbin/groupadd -r ratbox &>/dev/null ||:
/usr/sbin/useradd -r -o -g ratbox -s /bin/false -c "%{pkg_name} daemon" -d %{run_dir} ratbox &>/dev/null || :

%preun
%stop_on_removal %{pkg_name}

%post
%fillup_and_insserv %{pkg_name}

%postun
%restart_on_update %{pkg_name}
%insserv_cleanup

%files
%defattr(-,root,root)
#
# config files
#
%dir %{_sysconfdir}/ratbox
%dir %attr(750,ratbox,ratbox) %{conf_dir}
#config(noreplace) %attr(640,ratbox,ratbox) %{conf_dir}/*line.conf
#config(noreplace) %attr(640,ratbox,ratbox) %{conf_dir}/resv.conf
%config(noreplace) %attr(640,root,ratbox) %{conf_dir}/ircd.motd
%config %attr(640,root,ratbox) %{conf_dir}/example*
%config(noreplace) %attr(640,root,ratbox) %{conf_dir}/ircd.conf
%{conf_dir}/genssl.sh
#
# init script and binaries
# 
%{_sysconfdir}/init.d/%{pkg_name}
%{_sbindir}/*-ratbox
%{_sbindir}/ratbox-mkpasswd
%dir %{_libexecdir}/ircd-ratbox/
%{_libexecdir}/ircd-ratbox/bandb
%{_libexecdir}/ircd-ratbox/resolver
%{_libexecdir}/ircd-ratbox/ssld
%{_libdir}/libcore.so
%{_libdir}/libratbox.so
#
# modules
#
%dir %{_libdir}/ratbox
%dir %{_libdir}/ratbox/ircd
%dir %{modules_dir}
%{modules_dir}/*.so
%dir %{modules_dir}/autoload
%{modules_dir}/autoload/*.so
%dir %{modules_dir}/contrib
%{modules_dir}/contrib/*.so
#
# help
#
%dir %{_datadir}/ratbox
%dir %{_datadir}/%{dir_prefix}
%dir %{help_dir}
%{help_dir}/*
#
# docs
#
%doc %{_docdir}/%{pkg_name}
#{_mandir}/man?/ircd*
#
# log dir
#
%dir %attr(750,ratbox,ratbox) %{_var}/log/ratbox
%dir %attr(750,ratbox,ratbox) %{log_dir}
%ghost %dir %attr(755,root,root)     %{rat_run_dir}
%ghost %dir %attr(750,ratbox,ratbox) %{run_dir}

%changelog
openSUSE Build Service is sponsored by