summaryrefslogtreecommitdiffstats
path: root/unit.spec
diff options
context:
space:
mode:
Diffstat (limited to 'unit.spec')
-rw-r--r--unit.spec240
1 files changed, 198 insertions, 42 deletions
diff --git a/unit.spec b/unit.spec
index a5223c7..a0ab603 100644
--- a/unit.spec
+++ b/unit.spec
@@ -1,53 +1,78 @@
# remirepo/fedora spec file for unit-php
#
-# Copyright (c) 2019-2021 Remi Collet
-# License: CC-BY-SA
-# http://creativecommons.org/licenses/by-sa/4.0/
+# SPDX-FileCopyrightText: Copyright 2019-2025 Remi Collet
+# SPDX-License-Identifier: CECILL-2.1
+# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
#
# Please, preserve the changelog entries
#
+# TODO otel support (--otel, requires rust/cargo...)
+
%bcond_without tests
+# require ONLINE build for sources download
+%bcond_with wasm
+# need vendored rust libraries
+%bcond_without otel
+%if 0%{?fedora} || 0%{?rhel} >= 9
+# RPM 4.19 feature
+%bcond_without sysusers
+%else
+%bcond_with sysusers
+%endif
%global gh_owner nginx
%global project unit
-%global gh_commit 8b954d833110c70f641561fd141b27b2b72a5022
+%global gh_commit 8ab74a8cc929272eb8683d3f6ab4cb406465fd34
%global gh_short %(c=%{gh_commit}; echo ${c:0:7})
Name: unit
Summary: NGINX Unit application server
-Version: 1.26.1
-Release: 3%{?dist}
-License: ASL 2.0
+Version: 1.34.2
+Release: 1%{?dist}
+# unit is Apache-2.0
+# rust libraries are Apache-2.0 or MIT
+License: Apache-2.0 AND MIT
URL: https://unit.nginx.org/
Source0: https://github.com/%{gh_owner}/%{project}/archive/%{gh_commit}/%{project}-%{version}-%{gh_short}.tar.gz
Source1: unit.service
-Source2: unit.init
+Source2: unit-debug.service
Source3: unit.sysconf
Source4: unit.logrotate
-
-# Use system crypto policy
-# https://github.com/nginx/unit/pull/215
-Patch0: %{project}-syspol.patch
-# Workaround for OpenSSL 3.0
-# https://github.com/nginx/unit/pull/598
-Patch1: %{project}-openssl3.patch
-# Woraroung use-afer-free
-# https://github.com/nginx/unit/issues/639
-Patch2: %{project}-github639.patch
+# awfull hack, use a bundled rust registry
+Source5: makedeps.sh
+Source6: %{project}-deps-%{version}.tgz
+Source7: unit.sysusers
BuildRequires: make
BuildRequires: gcc
BuildRequires: openssl-devel
BuildRequires: pcre2-devel
+# command tool only to pull library dependencies
+BuildRequires: njs
+BuildRequires: libnjs-devel >= 0.8.3
BuildRequires: systemd
+%if %{with otel}
+BuildRequires: cargo >= 1.73
+BuildRequires: rust >= 1.73
+%endif
+%if %{with wasm}
+BuildRequires: clang
+BuildRequires: llvm
+%endif
+BuildRequires: systemd-rpm-macros
-%{?systemd_requires}
+%{?systemd_ordering}
+%if %{with sysusers}
+%{?sysusers_requires_compat}
+%else
Requires(pre): /usr/sbin/useradd
+%endif
Requires: logrotate
Provides: nginx-unit = %{version}-%{release}
+Provides: unit-r%{version}
%description
@@ -68,12 +93,42 @@ Library and include files required for NGINX Unit modules development.
%prep
+%if %{without otel}
%setup -qn %{project}-%{gh_commit}
-%patch0 -p1 -b .syspol
-%patch1 -p1 -b .openssl3
-%patch2 -p1 -b .gcc12
-
-cp pkg/rpm/rpmbuild/SOURCES/unit.example.config example.config
+%else
+%setup -qn %{project}-%{gh_commit} -a6
+
+: Create cargo configuration to use vendor directory
+mkdir .cargo
+cat << EOF | tee .cargo/config.toml
+[build]
+jobs = %(echo %{?_smp_mflags} | sed 's/\-j//')
+rustc = "%{_bindir}/rustc"
+
+[env]
+CFLAGS = "%{build_cflags}"
+CXXFLAGS = "%{build_cxxflags}"
+LDFLAGS = "%{build_ldflags}"
+
+[term]
+verbose = true
+
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "$PWD/mycargo"
+EOF
+
+: Bundled libraries Licenses
+for i in $(cd mycargo; ls */LICEN*)
+do
+ cp mycargo/$i $(dirname $i)-$(basename $i .md)
+done
+
+: Required rust version
+grep -h rust-version mycargo/*/Cargo.toml src/otel/Cargo.toml | sort -u | tail -n 8
+%endif
%build
@@ -83,37 +138,51 @@ cp pkg/rpm/rpmbuild/SOURCES/unit.example.config example.config
unitconf() {
./configure \
--libdir=%{_libdir} \
+ --sbindir=%{_sbindir} \
--prefix=%{_prefix} \
- --state=%{_sharedstatedir}/unit \
+ --statedir=%{_sharedstatedir}/unit \
--control="unix:/run/unit/control.sock" \
--pid=/run/unit/unit.pid \
+ --runstatedir=/var/run \
--log=/var/log/unit/unit.log \
- --tmp=/var/tmp \
+ --logdir=/var/log \
+ --tmpdir=/var/tmp \
--user=unit \
--group=unit \
--openssl \
--cc-opt="%{optflags}" \
--tests \
+ --njs \
+%if %{with otel}
+ --otel \
+%endif
$*
}
unitconf \
- --modules=%{_libdir}/unit/debug-modules \
+ --modulesdir=%{_libdir}/unit/debug-modules \
--debug
-make %{?_smp_mflags}
-make %{?_smp_mflags} build/libunit.a
+make %{?_smp_mflags} E=0 V=1
+make %{?_smp_mflags} build/lib/libunit.a E=0 V=1
mv build build-debug
+%if %{with wasm}
+make %{?_smp_mflags} -C pkg/contrib .libunit-wasm E=0 V=1
+%endif
+
unitconf \
- --modules=%{_libdir}/unit/modules
-make %{?_smp_mflags}
+ --modulesdir=%{_libdir}/unit/modules
+make %{?_smp_mflags} E=0 V=1
%install
-DESTDIR=%{buildroot} make unitd-install libunit-install manpage-install
+DESTDIR=%{buildroot} make unitd-install libunit-install manpage-install E=0 V=1
+
+install -m755 -D tools/unitc %{buildroot}%{_bindir}/unitc
+install -m755 -D tools/setup-unit %{buildroot}%{_bindir}/setup-unit
-install -m755 build-debug/unitd %{buildroot}%{_sbindir}/unitd-debug
-install -m644 build-debug/libunit.a %{buildroot}%{_libdir}/libunit-debug.a
+install -m755 build-debug/sbin/unitd %{buildroot}%{_sbindir}/unitd-debug
+install -m644 build-debug/lib/libunit.a %{buildroot}%{_libdir}/libunit-debug.a
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
mkdir -p %{buildroot}%{_libdir}/%{name}/modules
@@ -126,21 +195,38 @@ install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# init scripts
install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
+install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}-debug.service
mkdir -p %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d
+# relocate when sbindir is /usr/bin
+sed -e 's:/usr/sbin:%{_sbindir}:' -i %{buildroot}%{_unitdir}/*.service
+
+%if %{with wasm}
+mkdir -p %{buildroot}%{_includedir}/unit/
+install -m 644 pkg/contrib/libunit-wasm/src/c/libunit-wasm.a %{buildroot}%{_libdir}/
+install -m 644 pkg/contrib/libunit-wasm/src/c/include/unit/unit-wasm.h %{buildroot}%{_includedir}/unit/
+%endif
+
+%if %{with sysusers}
+install -p -D -m 0644 %{SOURCE7} %{buildroot}%{_sysusersdir}/unit.conf
+%endif
%check
%if %{with tests}
-make tests %{?_smp_mflags}
+make tests %{?_smp_mflags} E=0 V=1
./build/tests
%endif
%pre
+%if %{with sysusers}
+%sysusers_create_compat %{SOURCE7}
+%else
getent group unit >/dev/null || groupadd -r unit
getent passwd unit >/dev/null || \
useradd -r -g unit -s /sbin/nologin \
- -d /nonexistent -c "unit user" unit
+ -d /nonexistent -c "NGINX Unit user" unit
+%endif
%post
%systemd_post %{name}.service
@@ -168,10 +254,10 @@ More info: https://unit.nginx.org/installation/#official-packages
BANNER
%files
-%{!?_licensedir:%global license %%doc}
-%license LICENSE
-%doc NOTICE README CHANGES
-%doc example.config
+%license *LICENSE*
+%doc NOTICE CHANGES *.md
+%attr(0755,root,root) %{_bindir}/unitc
+%attr(0755,root,root) %{_bindir}/setup-unit
%attr(0755,root,root) %{_sbindir}/unitd
%attr(0755,root,root) %{_sbindir}/unitd-debug
%dir %{_sysconfdir}/unit
@@ -183,18 +269,88 @@ BANNER
%{_mandir}/man8/unitd.8*
%dir %{_sysconfdir}/systemd/system/%{name}.service.d
-%{_unitdir}/unit.service
-%dir %attr(0755,root,root) %ghost /run/unit
+%{_unitdir}/%{name}.service
+%{_unitdir}/%{name}-debug.service
+%dir %attr(0755,root,root) %ghost /run/%{name}
+%if %{with sysusers}
+%{_sysusersdir}/%{name}.conf
+%endif
%files devel
# API is not stable YET, so keep the static library for now (like upstream packages)
%{_libdir}/libunit.a
%{_libdir}/libunit-debug.a
+%if %{with wasm}
+%{_libdir}/libunit-wasm.a
+%dir %{_includedir}/unit
+%{_includedir}/unit/*.h
+%endif
%{_includedir}/nxt_*.h
+%{_datadir}/pkgconfig/unit.pc
%changelog
+* Tue Mar 4 2025 Remi Collet <remi@remirepo.net> - 1.34.2-1
+- update to 1.34.2
+
+* Sat Feb 15 2025 Remi Collet <remi@remirepo.net> - 1.34.1-3
+- add a sysusers.d file (Fedora and EL >= 9)
+
+* Fri Feb 14 2025 Remi Collet <remi@remirepo.net> - 1.34.1-2
+- F42: workaround /usr/sbin merged in /usr/bin
+- add unit-debug service
+
+* Mon Jan 13 2025 Remi Collet <remi@remirepo.net> - 1.34.1-1
+- update to 1.34.1
+
+* Thu Dec 19 2024 Remi Collet <remi@remirepo.net> - 1.34.0-2
+- re-license spec file to CECILL-2.1
+- enable otel support
+- fix build of tests with otel using patch from
+ https://github.com/nginx/unit/pull/1521
+
+* Thu Dec 19 2024 Remi Collet <remi@remirepo.net> - 1.34.0-1
+- update to 1.34.0
+
+* Wed Sep 18 2024 Remi Collet <remi@remirepo.net> - 1.33.0-1
+- update to 1.33.0 using njs 0.8.5
+
+* Tue Mar 26 2024 Remi Collet <remi@remirepo.net> - 1.32.1-1
+- update to 1.32.1
+
+* Tue Feb 27 2024 Remi Collet <remi@remirepo.net> - 1.32.0-1
+- update to 1.32.0 using njs 0.8.2
+
+* Wed Dec 20 2023 Remi Collet <remi@remirepo.net> - 1.31.1-3
+- enable NGINX JavaScript (njs) configuration extension
+
+* Mon Nov 6 2023 Remi Collet <remi@remirepo.net> - 1.31.1-2
+- weak dependencies on systemd
+
+* Thu Oct 19 2023 Remi Collet <remi@remirepo.net> - 1.31.1-1
+- update to 1.31.1
+
+* Thu Aug 31 2023 Remi Collet <remi@remirepo.net> - 1.31.0-1
+- update to 1.31.0
+
+* Thu May 11 2023 Remi Collet <remi@remirepo.net> - 1.30.0-1
+- update to 1.30.0
+- add unitc and setup-unit commands
+
+* Wed Mar 1 2023 Remi Collet <remi@remirepo.net> - 1.29.1-1
+- update to 1.29.1
+
+* Thu Dec 15 2022 Remi Collet <remi@remirepo.net> - 1.29.0-1
+- update to 1.29.0
+- drop patches merged upstream
+
+* Tue Sep 13 2022 Remi Collet <remi@remirepo.net> - 1.28.0-1
+- update to 1.28.0
+
+* Thu Jun 2 2022 Remi Collet <remi@remirepo.net> - 1.27.0-1
+- update to 1.27.0
+
* Mon Feb 21 2022 Remi Collet <remi@remirepo.net> - 1.26.1-3
- test build for upstream patch