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