xref: /unit/pkg/rpm/unit.spec.in (revision 2027:04ae78e6813d)
1# distribution specific definitions
2%define bdir %{_builddir}/%{name}-%{version}
3%define dotests 0
4
5%if 0%{?rhel}%{?fedora}
6BuildRequires: gcc
7%if 0%{?amzn2}
8BuildRequires: openssl11-devel
9%else
10BuildRequires: openssl-devel
11%endif
12%endif
13
14%if 0%{?rhel}
15%if 0%{?amzn} == 0
16%define dist .el%{?rhel}
17%endif
18%endif
19
20%if 0%{?suse_version} >= 1315
21BuildRequires: libopenssl-devel
22%endif
23
24%define CC_OPT %{optflags} -fPIC
25%define LD_OPT -Wl,-z,relro -Wl,-z,now -pie
26
27%define CONFIGURE_ARGS $(echo "%%CONFIGURE_ARGS%%")
28
29Provides: nginx-unit
30
31Name: unit
32Summary: NGINX Unit
33Version: %%VERSION%%
34Release: %%RELEASE%%%{?dist}.ngx
35License: ASL 2.0
36Vendor: %%PACKAGE_VENDOR%%
37URL: https://unit.nginx.org/
38Group: System Environment/Daemons
39
40Source0: unit-%{version}.tar.gz
41Source1: unit.service
42Source2: unit-debug.service
43Source3: unit.example.config
44Source4: unit.logrotate
45
46BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
47BuildRequires: systemd
48Requires(post):    systemd
49Requires(preun):   systemd
50Requires(postun):  systemd
51
52BuildRequires: pcre2-devel
53
54%description
55NGINX Unit is a runtime and delivery environment for modern distributed
56applications. It runs the application code in multiple languages
57(PHP, Python, Go, etc.), and tightly couples it with traffic delivery
58in and out of the application. Take this application server and proxy
59directly in the cloud / container environments and fully control your app
60dynamically via an API.
61
62%if 0%{?suse_version}
63%debug_package
64%endif
65
66%if (0%{?fedora}) || (0%{?rhel} >= 8)
67%define _debugsource_template %{nil}
68%endif
69
70%package devel
71Summary: NGINX Unit (development files)
72Version: %%VERSION%%
73Release: %%RELEASE%%%{?dist}.ngx
74Group: Development/Libraries
75Requires: unit == %%VERSION%%-%%RELEASE%%%{?dist}.ngx
76%description devel
77Library and include files required for NGINX Unit modules development.
78
79%prep
80%setup -q
81
82%build
83./configure \
84	%{CONFIGURE_ARGS} \
85	--modules=%{_libdir}/unit/debug-modules \
86	--libdir=%{_libdir} \
87	--cc-opt="%{CC_OPT}" \
88	--ld-opt="%{LD_OPT}" \
89	--debug
90%{__make} %{?_smp_mflags}
91%{__make} %{?_smp_mflags} build/libunit.a
92%{__mv} build build-debug
93./configure \
94	%{CONFIGURE_ARGS} \
95	--modules=%{_libdir}/unit/modules \
96	--libdir=%{_libdir} \
97	--cc-opt="%{CC_OPT}" \
98	--ld-opt="%{LD_OPT}"
99%{__make} %{?_smp_mflags}
100%{__mv} build build-nodebug
101
102%install
103%{__rm} -rf %{buildroot}
104%{__ln_s} build-nodebug build
105DESTDIR=%{buildroot} make unitd-install libunit-install manpage-install
106%{__install} -m755 %{bdir}/build-debug/unitd \
107    %{buildroot}%{_sbindir}/unitd-debug
108%{__install} -m644 %{bdir}/build-debug/libunit.a \
109    %{buildroot}%{_libdir}/libunit-debug.a
110%{__mkdir} -p %{buildroot}%{_libdir}/unit/modules
111%{__mkdir} -p %{buildroot}%{_libdir}/unit/debug-modules
112%{__mkdir} -p %{buildroot}%{_sharedstatedir}/unit
113%{__mkdir} -p %{buildroot}%{_localstatedir}/log/unit
114%{__mkdir} -p %{buildroot}%{_localstatedir}/run/unit
115%{__mkdir} -p %{buildroot}%{_sysconfdir}/logrotate.d
116%{__install} -m 644 -p %{SOURCE4} \
117    %{buildroot}%{_sysconfdir}/logrotate.d/unit
118%{__mkdir} -p %{buildroot}%{_sysconfdir}/unit
119%{__mkdir} -p %{buildroot}%{_datadir}/doc/unit/examples
120%{__install} -m 644 -p %{SOURCE3} \
121    %{buildroot}%{_datadir}/doc/unit/examples/example.config
122%{__install} -m 644 -p CHANGES \
123    %{buildroot}%{_datadir}/doc/unit/
124%{__install} -m 644 -p NOTICE \
125    %{buildroot}%{_datadir}/doc/unit/COPYRIGHT
126%{__install} -m 644 -p README \
127    %{buildroot}%{_datadir}/doc/unit/
128
129%{__rm} -rf %{buildroot}%{_initrddir}/
130%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/unit.service
131%{__install} -p -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/unit-debug.service
132
133QA_SKIP_BUILD_ROOT=1
134export QA_SKIP_BUILD_ROOT
135
136%check
137%if %{dotests}
138cd %{bdir} && make tests && ./build/tests
139%endif
140%{__rm} -rf %{buildroot}/usr/src
141cd %{bdir}
142grep -v 'usr/src' debugfiles.list > debugfiles.list.new && mv debugfiles.list.new debugfiles.list
143cat /dev/null > debugsources.list
144%if 0%{?suse_version} >= 1500
145cat /dev/null > debugsourcefiles.list
146%endif
147
148%clean
149%{__rm} -rf %{buildroot}
150
151%post
152getent group unit >/dev/null || groupadd -r unit
153getent passwd unit >/dev/null || \
154    useradd -r -g unit -s /sbin/nologin \
155    -d /nonexistent -c "unit user" unit
156if [ $1 -eq 1 ]; then
157    /usr/bin/systemctl preset unit.service >/dev/null 2>&1 ||:
158    /usr/bin/systemctl preset unit-debug.service >/dev/null 2>&1 ||:
159    cat <<BANNER
160----------------------------------------------------------------------
161
162Thank you for installing NGINX Unit!
163
164Additional modules are available in standalone packages.
165To see the available modules, run "yum list available unit-\*".
166
167Online documentation is available at https://unit.nginx.org/
168
169----------------------------------------------------------------------
170BANNER
171fi
172
173%preun
174if [ $1 -eq 0 ]; then
175    /usr/bin/systemctl --no-reload disable unit.service >/dev/null 2>&1 ||:
176    /usr/bin/systemctl stop unit.service >/dev/null 2>&1 ||:
177fi
178
179%postun
180/usr/bin/systemctl daemon-reload >/dev/null 2>&1 ||:
181if [ $1 -ge 1 ]; then
182    /usr/bin/systemctl try-restart unit.service >/dev/null 2>&1 ||:
183fi
184
185%triggerpostun -- unit < 1.22.0
186cat <<BANNER
187----------------------------------------------------------------------
188
189WARNING:
190
191Since version 1.22.0, Unit's non-privileged processes run as unit:unit by
192default.  Review your system permissions and Unit configuration so apps and
193routes that relied on these processes running as nobody:nogroup stay working.
194
195More info: https://unit.nginx.org/installation/#official-packages
196
197----------------------------------------------------------------------
198BANNER
199
200%files
201%defattr(-,root,root,-)
202%attr(0755,root,root) %{_sbindir}/unitd
203%attr(0755,root,root) %{_sbindir}/unitd-debug
204%dir %{_sysconfdir}/unit
205%{_unitdir}/unit.service
206%{_unitdir}/unit-debug.service
207%dir %attr(0755,root,root) %ghost %{_localstatedir}/run/unit
208%dir %{_datadir}/doc/unit
209%{_datadir}/doc/unit/*
210%dir %{_libdir}/unit/modules
211%dir %{_libdir}/unit/debug-modules
212%dir %{_sharedstatedir}/unit
213%dir %attr(0755,root,root) %{_localstatedir}/log/unit
214%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
215%{_mandir}/man8/unitd.8*
216
217%files devel
218%{_libdir}/libunit.a
219%{_libdir}/libunit-debug.a
220%{_includedir}/nxt_*.h
221
222%changelog
223