diff options
Diffstat (limited to 'unit.spec')
-rw-r--r-- | unit.spec | 240 |
1 files changed, 198 insertions, 42 deletions
@@ -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 |