%global _hardened_build 1
# version revision
%global revision 2880
%if 0%{?rhel} >= 7
%global _with_systemd 1
%endif
%if 0%{?fedora}
%global _with_systemd 1
%endif
Name: yadifa
Version: 1.0.3
Release: 2%{?dist}
Summary: Lightweight authoritative Name Server with DNSSEC capabilities
Group: System Environment/Daemons
License: GPLv2
URL: http://www.yadifa.eu
Source0: http://cdn.yadifa.eu/sites/default/files/releases/%{name}-%{version}-%{revision}.tar.gz
Source1: yadifad.service
Source2: yadifad.init
Source3: yadifa.logrotate
%{?el5:BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)}
BuildRequires: openssl-devel
Requires: yadifa-libs = %{version}-%{release}
%if 0%{?_with_systemd}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
BuildRequires: systemd
%else
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires(postun): initscripts
%endif
%description
YADIFA is a name server implementation developed from scratch by .eu.
It is portable across multiple operating systems and supports DNSSEC,
TSIG, DNS notify, DNS update, IPv6.
%package libs
Summary: Libraries used by the YADIFA packages
Group: Applications/System
%description libs
Contains libraries used by YADIFA DNS server
%package devel
Summary: Header files and libraries needed for YADIFA development
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
The yadifa-devel package contains header files and libraries
required for development with YADIFA DNS server
%prep
%setup -q -n %{name}-%{version}-%{revision}
%build
export CPPFLAGS="%{optflags} -g"
export LDFLAGS="$LDFLAGS -lssl -lcrypto"
# avoid gcc-4.1 bug
%ifarch i386
%{?el5:export CPPFLAGS="$CPPFLAGS -pthread -march=i486"}
%endif
%configure --enable-shared --disable-static
# don't mess with rpath
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/libtool
# avoid unused-direct-shlib-dependency
sed -i -e 's! -shared ! -Wl,--as-needed\0!g' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/libtool
# respect filesystem hierarhy
sed -i 's|PREFIX "/etc/"|"/etc/"|g' sbin/yadifad/confs.h
sed -i 's|PREFIX "/var|"/var|g' sbin/yadifad/confs.h
sed -i 's|PACKAGE ".pid"|"yadifad.pid"|g' sbin/yadifad/confs.h
sed -i 's|/var/log|/var/log/yadifa|g' sbin/yadifad/confs.h
sed -i 's|/usr/local/var|/var|g' etc/yadifad.conf.example
sed -i 's|/var/log|/var/log/yadifa|g' etc/yadifad.conf.example
# set proper build options
sed -i 's|-mtune=native||g' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/Makefile
sed -i 's|-fno-ident -ansi -pedantic||g' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/Makefile
sed -i '/^YRCFLAGS = -DNDEBUG $(CCOPTIMISATIONFLAGS) -DCMR/d' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/Makefile
sed -i '/^YPCFLAGS = -DNDEBUG $(CCOPTIMISATIONFLAGS) -pg -DCMP/d' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/Makefile
sed -i '/^YDCFLAGS = -DDEBUG $(DEBUGFLAGS) -DCMD/d' \
{.,lib/dnscore,lib/dnsdb,lib/dnszone,sbin/yadifad}/Makefile
# change configuration options
sed -i '/daemon/s/off/on/g' etc/yadifad.conf.example
sed -i '/^[\ \t]*# Enable EDNS0 support/d' etc/yadifad.conf.example
sed -i '/^[\ \t]*edns0[\ \t]*on/d' etc/yadifad.conf.example
make %{?_smp_mflags}
%install
%if 0%{?el5}
rm -rf %{buildroot}
%endif
make install DESTDIR=%{buildroot}
install -Dpm 0644 etc/yadifad.conf.example %{buildroot}%{_sysconfdir}/yadifad.conf
mkdir -p %{buildroot}%{_localstatedir}/log/yadifa
rm -f %{buildroot}%{_libdir}/*.la
# rhel6 workaround
rm -rf %{buildroot}%{_defaultdocdir}/yadifa
%if 0%{?_with_systemd}
install -Dpm 0644 %{SOURCE1} %{buildroot}%{_unitdir}/yadifad.service
%else
install -Dpm 0755 %{SOURCE2} %{buildroot}%{_initrddir}/yadifad
%endif
install -Dpm 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/yadifa
%if 0%{?el5}
%clean
rm -rf %{buildroot}
%endif
%post
%if 0%{?_with_systemd}
%systemd_post yadifad.service
%else
/sbin/chkconfig --add yadifad
%endif
exit 0
%preun
%if 0%{?_with_systemd}
%systemd_preun yadifad.service
%else
if [ $1 = 0 ]; then
/sbin/service yadifad stop > /dev/null 2>&1
/sbin/chkconfig --del yadifad
fi
%endif
exit 0
%postun
%if 0%{?_with_systemd}
%systemd_postun_with_restart yadifad.service
%else
if [ "$1" -ge "1" ]; then
/sbin/service yadifad condrestart > /dev/null 2>&1
fi
%endif
exit 0
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files
%doc AUTHORS COPYING ChangeLog NEWS README TODO
# rhel6 workaround
%doc etc/*.conf.example
%config(noreplace) %{_sysconfdir}/yadifad.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/yadifa
%if 0%{?_with_systemd}
%{_unitdir}/yadifad.service
%else
%{_initrddir}/yadifad
%endif
%{_localstatedir}/zones
%{_localstatedir}/log/yadifa
%{_sbindir}/yadifad
%{_mandir}/man1/*.1*
%{_mandir}/man5/*.5*
%files libs
%{_libdir}/libdnscore.so.0*
%{_libdir}/libdnsdb.so.0*
%{_libdir}/libdnszone.so.0*
%files devel
%{_includedir}/dnscore
%{_includedir}/dnsdb
%{_includedir}/dnszone
%{_libdir}/libdnscore.so
%{_libdir}/libdnsdb.so
%{_libdir}/libdnszone.so
%changelog
* Thu Aug 28 2014 Denis Fateyev <denis@fateyev.com> - 1.0.3-2
- Build options clarification
- Minor specfile cleanup
* Sat Aug 16 2014 Denis Fateyev <denis@fateyev.com> - 1.0.3-1
- Initial Fedora RPM release