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