In order to reduce number of operations over rb-tree and process them in batches simultaneously, all the timers changes are temporary stored in array. While processing of these changes, the same memory is also used for storing pointers to postpone timers adding. As the same block of memory has been referenced by two different types of pointers (nxt_timer_change_t * and nxt_timer_t **), some compilers may reorder operations with these pointers and produce broken code. See ticket #221 on GitHub for a particular case. Now the same "nxt_timer_change_t" structure is used in both cases. Also, reverted the -fno-strict-aliasing flag, which has been introduced in ef76227ec159 as a workaround for this issue.
236 lines
6.1 KiB
RPMSpec
236 lines
6.1 KiB
RPMSpec
# 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
|
|
|
|
%define CC_OPT %{optflags} -fPIC
|
|
%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
|