1# distribution specific definitions 2%define use_systemd (0%{?rhel} && 0%{?rhel} >= 7) || (0%{?suse_version} >= 1315) 3%define bdir %{_builddir}/%{name}-%{version} 4%define dotests 0 5 6%if ( 0%{?rhel} == 5 || 0%{?rhel} == 6 ) 7Requires: initscripts >= 8.36 8%endif 9 10%if 0%{?rhel} == 7 11Requires: systemd 12BuildRequires: systemd-units 13%if 0%{?amzn} == 0 14%define dist .el7 15%endif 16%endif 17 18%if 0%{?suse_version} == 1315 19BuildRequires: systemd 20Requires: systemd 21%endif 22 23%define CC_OPT %{optflags} -fPIC 24%define LD_OPT -Wl,-z,relro -Wl,-z,now -pie 25 26%define CONFIGURE_ARGS $(echo "%%CONFIGURE_ARGS%%") 27 28Provides: nginx-unit 29 30Name: unit 31Summary: NGINX Unit 32Version: %%VERSION%% 33Release: %%RELEASE%%%{?dist}.ngx 34License: ASL 2.0 35Vendor: Nginx Software, Inc. 36URL: https://unit.nginx.org/ 37Packager: Nginx Software, Inc. <https://www.nginx.com> 38Group: System Environment/Daemons 39 40Source0: unit-%{version}.tar.gz 41Source1: unit.service 42Source2: unit.init 43Source3: unit.sysconf 44Source4: unit.saveconfig.sh 45Source5: unit.loadconfig.sh 46Source6: unit.example.config 47 48BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) 49 50%description 51NGINX Unit is a runtime and delivery environment for modern distributed 52applications. It runs the application code in multiple languages 53(PHP, Python, Go, etc.), and tightly couples it with traffic delivery 54in and out of the application. Take this application server and proxy 55directly in the cloud / container environments and fully control your app 56dynamically via an API. 57 58%if 0%{?suse_version} 59%debug_package 60%endif 61 62%prep 63%setup -q 64 65%build 66./configure \ 67 %{CONFIGURE_ARGS} \ 68 --modules=%{_libdir}/unit/debug-modules \ 69 --cc-opt="%{CC_OPT}" \ 70 --ld-opt="%{LD_OPT}" \ 71 --debug 72%{__make} %{?_smp_mflags} 73%{__mv} build build-debug 74./configure \ 75 %{CONFIGURE_ARGS} \ 76 --modules=%{_libdir}/unit/modules \ 77 --cc-opt="%{CC_OPT}" \ 78 --ld-opt="%{LD_OPT}" 79%{__make} %{?_smp_mflags} 80%{__mv} build build-nodebug 81 82%install 83%{__rm} -rf %{buildroot} 84%{__ln_s} build-nodebug build 85DESTDIR=%{buildroot} make unitd-install 86%{__install} -m755 %{bdir}/build-debug/unitd \ 87 %{buildroot}%{_sbindir}/unitd-debug 88%{__mkdir} -p %{buildroot}%{_libdir}/unit/modules 89%{__mkdir} -p %{buildroot}%{_libdir}/unit/debug-modules 90%{__mkdir} -p %{buildroot}%{_sharedstatedir}/unit 91%{__mkdir} -p %{buildroot}%{_sysconfdir}/sysconfig 92%{__install} -m 644 -p %{SOURCE3} \ 93 %{buildroot}%{_sysconfdir}/sysconfig/unit 94%{__mkdir} -p %{buildroot}%{_sysconfdir}/unit 95%{__mkdir} -p %{buildroot}%{_datadir}/doc/unit/examples 96%{__install} -m 644 -p %{SOURCE6} \ 97 %{buildroot}%{_datadir}/doc/unit/examples/example.config 98%{__install} -m 644 -p CHANGES \ 99 %{buildroot}%{_datadir}/doc/unit/ 100%{__install} -m 644 -p NOTICE \ 101 %{buildroot}%{_datadir}/doc/unit/COPYRIGHT 102%{__install} -m 644 -p README \ 103 %{buildroot}%{_datadir}/doc/unit/ 104 105# init scripts 106%if %{use_systemd} 107%{__rm} -rf %{buildroot}%{_initrddir}/ 108%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/unit.service 109%{__mkdir} -p %{buildroot}%{_libexecdir}/initscripts/legacy-actions/unit 110%{__install} -m755 %SOURCE4 \ 111 %{buildroot}%{_libexecdir}/initscripts/legacy-actions/unit/saveconfig 112%{__install} -m755 %SOURCE5 \ 113 %{buildroot}%{_libexecdir}/initscripts/legacy-actions/unit/loadconfig 114%else 115%{__mkdir} -p %{buildroot}%{_initrddir} 116%{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}%{_initrddir}/unit 117%endif 118 119QA_SKIP_BUILD_ROOT=1 120export QA_SKIP_BUILD_ROOT 121 122%check 123%if %{dotests} 124cd %{bdir} && make tests && ./build/tests 125%endif 126 127%clean 128%{__rm} -rf %{buildroot} 129 130%post 131if [ $1 -eq 1 ]; then 132%if %{use_systemd} 133 /usr/bin/systemctl preset unit.service >/dev/null 2>&1 ||: 134%else 135 /sbin/chkconfig --add unit 136%endif 137 cat <<BANNER 138---------------------------------------------------------------------- 139 140Thank you for installing NGINX Unit! 141 142Additional modules are available in standalone packages. 143To see the available modules, run "yum list available unit-\*". 144 145Online documentation is available at https://unit.nginx.org/ 146 147---------------------------------------------------------------------- 148BANNER 149fi 150 151%preun 152if [ $1 -eq 0 ]; then 153%if %{use_systemd} 154 /usr/bin/systemctl --no-reload disable unit.service >/dev/null 2>&1 ||: 155 /usr/bin/systemctl stop unit.service >/dev/null 2>&1 ||: 156%else 157 /sbin/service unit stop >/dev/null 2>&1 158 /sbin/chkconfig --del unit 159%endif 160fi 161 162%postun 163%if %{use_systemd} 164/usr/bin/systemctl daemon-reload >/dev/null 2>&1 ||: 165%endif 166if [ $1 -ge 1 ]; then 167%if %{use_systemd} 168 /usr/bin/systemctl try-restart unit.service >/dev/null 2>&1 ||: 169%else 170 /sbin/service unit condrestart >/dev/null 2>&1 ||: 171%endif 172fi 173 174%files 175%defattr(-,root,root,-) 176%attr(0755,root,root) %{_sbindir}/unitd 177%attr(0755,root,root) %{_sbindir}/unitd-debug 178%config(noreplace) %{_sysconfdir}/sysconfig/unit 179%dir %{_sysconfdir}/unit 180%if %{use_systemd} 181%{_unitdir}/unit.service 182%dir %{_libexecdir}/initscripts/legacy-actions/unit 183%{_libexecdir}/initscripts/legacy-actions/unit/* 184%else 185%{_initrddir}/unit 186%endif 187%dir %{_datadir}/doc/unit 188%{_datadir}/doc/unit/* 189%dir %{_libdir}/unit/modules 190%dir %{_libdir}/unit/debug-modules 191%dir %{_sharedstatedir}/unit 192 193%changelog 194