# distribution specific definitions
%define use_systemd (0%{?rhel} >= 7 || 0%{?fedora} >= 19 || 0%{?suse_version} >= 1315)
%define bdir %{_builddir}/%{name}-%{version}
%define dotests 0
%if ( 0%{?rhel} == 5 || 0%{?rhel} == 6 )
Requires: initscripts >= 8.36
%endif
%if %{use_systemd}
BuildRequires: systemd
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%endif
%if 0%{?rhel}%{?fedora}
BuildRequires: gcc
BuildRequires: openssl-devel
%endif
%if 0%{?rhel}
%if 0%{?amzn} == 0
%define dist .el%{?rhel}
%endif
%endif
%if 0%{?suse_version} >= 1315
BuildRequires: libopenssl-devel
%endif
%if (0%{?rhel} == 6) && (%{_arch} == x86_64)
%define CC_OPT %{optflags} -fno-strict-aliasing -fPIC
%else
%define CC_OPT %{optflags} -fPIC
%endif
%define LD_OPT -Wl,-z,relro -Wl,-z,now -pie
%define CONFIGURE_ARGS $(echo "%%CONFIGURE_ARGS%%")
Provides: nginx-unit
Name: unit
Summary: NGINX Unit
Version: %%VERSION%%
Release: %%RELEASE%%%{?dist}.ngx
License: ASL 2.0
Vendor: Nginx Software, Inc.
URL: https://unit.nginx.org/
Packager: Nginx Software, Inc. <https://www.nginx.com>
Group: System Environment/Daemons
Source0: unit-%{version}.tar.gz
Source1: unit.service
Source2: unit.init
Source3: unit.sysconf
Source4: unit.example.config
Source5: unit.logrotate
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
NGINX Unit is a runtime and delivery environment for modern distributed
applications. It runs the application code in multiple languages
(PHP, Python, Go, etc.), and tightly couples it with traffic delivery
in and out of the application. Take this application server and proxy
directly in the cloud / container environments and fully control your app
dynamically via an API.
%if 0%{?suse_version}
%debug_package
%endif
%if 0%{?fedora}
%define _debugsource_template %{nil}
%endif
%package devel
Summary: NGINX Unit (development files)
Version: %%VERSION%%
Release: %%RELEASE%%%{?dist}.ngx
Group: Development/Libraries
Requires: unit == %%VERSION%%-%%RELEASE%%%{?dist}.ngx
%description devel
Library and include files required for NGINX Unit modules development.
%prep
%setup -q
%build
./configure \
%{CONFIGURE_ARGS} \
--modules=%{_libdir}/unit/debug-modules \
--libdir=%{_libdir} \
--cc-opt="%{CC_OPT}" \
--ld-opt="%{LD_OPT}" \
--debug
%{__make} %{?_smp_mflags}
%{__make} %{?_smp_mflags} build/libunit.a
%{__mv} build build-debug
./configure \
%{CONFIGURE_ARGS} \
--modules=%{_libdir}/unit/modules \
--libdir=%{_libdir} \
--cc-opt="%{CC_OPT}" \
--ld-opt="%{LD_OPT}"
%{__make} %{?_smp_mflags}
%{__mv} build build-nodebug
%install
%{__rm} -rf %{buildroot}
%{__ln_s} build-nodebug build
DESTDIR=%{buildroot} make unitd-install libunit-install
%{__install} -m755 %{bdir}/build-debug/unitd \
%{buildroot}%{_sbindir}/unitd-debug
%{__install} -m644 %{bdir}/build-debug/libunit.a \
%{buildroot}%{_libdir}/libunit-debug.a
%{__mkdir} -p %{buildroot}%{_libdir}/unit/modules
%{__mkdir} -p %{buildroot}%{_libdir}/unit/debug-modules
%{__mkdir} -p %{buildroot}%{_sharedstatedir}/unit
%{__mkdir} -p %{buildroot}%{_localstatedir}/log/unit
%{__mkdir} -p %{buildroot}%{_localstatedir}/run/unit
%if ! %{use_systemd}
%{__mkdir} -p %{buildroot}%{_sysconfdir}/sysconfig
%{__install} -m 644 -p %{SOURCE3} \
%{buildroot}%{_sysconfdir}/sysconfig/unitd
%endif
%{__mkdir} -p %{buildroot}%{_sysconfdir}/logrotate.d
%{__install} -m 644 -p %{SOURCE5} \
%{buildroot}%{_sysconfdir}/logrotate.d/unit
%{__mkdir} -p %{buildroot}%{_sysconfdir}/unit
%{__mkdir} -p %{buildroot}%{_datadir}/doc/unit/examples
%{__install} -m 644 -p %{SOURCE4} \
%{buildroot}%{_datadir}/doc/unit/examples/example.config
%{__install} -m 644 -p CHANGES \
%{buildroot}%{_datadir}/doc/unit/
%{__install} -m 644 -p NOTICE \
%{buildroot}%{_datadir}/doc/unit/COPYRIGHT
%{__install} -m 644 -p README \
%{buildroot}%{_datadir}/doc/unit/
# init scripts
%if %{use_systemd}
%{__rm} -rf %{buildroot}%{_initrddir}/
%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/unit.service
%else
%{__mkdir} -p %{buildroot}%{_initrddir}
%{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}%{_initrddir}/unit
%endif
QA_SKIP_BUILD_ROOT=1
export QA_SKIP_BUILD_ROOT
%check
%if %{dotests}
cd %{bdir} && make tests && ./build/tests
%endif
%{__rm} -rf %{buildroot}/usr/src
cd %{bdir}
grep -v 'usr/src' debugfiles.list > debugfiles.list.new && mv debugfiles.list.new debugfiles.list
cat /dev/null > debugsources.list
%if 0%{?suse_version} >= 1500
cat /dev/null > debugsourcefiles.list
%endif
%clean
%{__rm} -rf %{buildroot}
%post
if [ $1 -eq 1 ]; then
%if %{use_systemd}
/usr/bin/systemctl preset unit.service >/dev/null 2>&1 ||:
%else
/sbin/chkconfig --add unit
%endif
cat <<BANNER
----------------------------------------------------------------------
Thank you for installing NGINX Unit!
Additional modules are available in standalone packages.
To see the available modules, run "yum list available unit-\*".
Online documentation is available at https://unit.nginx.org/
----------------------------------------------------------------------
BANNER
fi
%preun
if [ $1 -eq 0 ]; then
%if %{use_systemd}
/usr/bin/systemctl --no-reload disable unit.service >/dev/null 2>&1 ||:
/usr/bin/systemctl stop unit.service >/dev/null 2>&1 ||:
%else
/sbin/service unit stop >/dev/null 2>&1
/sbin/chkconfig --del unit
%endif
fi
%postun
%if %{use_systemd}
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 ||:
%endif
if [ $1 -ge 1 ]; then
%if %{use_systemd}
/usr/bin/systemctl try-restart unit.service >/dev/null 2>&1 ||:
%else
/sbin/service unit condrestart >/dev/null 2>&1 ||:
%endif
fi
%files
%defattr(-,root,root,-)
%attr(0755,root,root) %{_sbindir}/unitd
%attr(0755,root,root) %{_sbindir}/unitd-debug
%dir %{_sysconfdir}/unit
%if %{use_systemd}
%{_unitdir}/unit.service
%dir %attr(0755,root,root) %ghost %{_localstatedir}/run/unit
%else
%config(noreplace) %{_sysconfdir}/sysconfig/unitd
%dir %attr(0755,root,root) %{_localstatedir}/run/unit
%{_initrddir}/unit
%endif
%dir %{_datadir}/doc/unit
%{_datadir}/doc/unit/*
%dir %{_libdir}/unit/modules
%dir %{_libdir}/unit/debug-modules
%dir %{_sharedstatedir}/unit
%dir %attr(0700,root,root) %{_localstatedir}/log/unit
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%files devel
%{_libdir}/libunit.a
%{_libdir}/libunit-debug.a
%{_includedir}/nxt_*.h
%changelog