1- # For more documentation, See:
2- # - https://developer.fedoraproject.org/deployment/rpm/about.html
3- # - https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd
4-
51%global sozu_user sozu
62
73Summary: A lightweight, fast, always-up reverse proxy server.
@@ -19,26 +15,21 @@ BuildRequires: m4
1915BuildRequires: selinux-policy-devel
2016BuildRequires: systemd
2117BuildRequires: protobuf
22- # BuildRequires: rust
18+ BuildRequires: rust
19+ BuildRequires: cargo
20+ BuildRequires: protobuf-compiler
21+ BuildRequires: gcc
22+
2323BuildRoot: %{_tmppath }/%{name }-%{version }-%{release }-root
2424
2525%description
2626%{summary }
2727
2828%prep
29-
30- %if "%{_build_mode }" == "RELEASE"
3129%setup -n %{name }-%{version }
32- %else
33- %setup -q
34- %endif
3530
3631%build
37- %if " %{_build_mode}" == " RELEASE"
38- cargo build --release -p sozu --locked
39- %else
40- cargo build -p sozu --locked
41- %endif
32+ cargo build --release
4233
4334%install
4435rm -rf %{buildroot }
@@ -51,57 +42,95 @@ cp os-build/systemd/%{name}@.service %{buildroot}%{_unitdir}/%{name}@.service
5142
5243#service binary file
5344mkdir -p %{buildroot }%{_bindir }/
54- %if "%{_build_mode }" == "RELEASE"
5545cp -p target/release/%{name } %{buildroot }%{_bindir }/
56- %else
57- cp -p target/debug/%{name } %{buildroot }%{_bindir }/
58- %endif
5946
6047# server assets
6148mkdir -p %{buildroot }%{_datadir }/sozu/{pki,html}
6249cp -p lib/assets/{certificate.pem,key.pem,certificate_chain.pem} %{buildroot }%{_datadir }/%{name }/pki
63- cp -p lib/assets/{404.html,503.html} %{buildroot }%{_datadir }/%{name }/html
50+ cp -p command/assets/custom_404.html %{buildroot }%{_datadir }/%{name }/html/404.html
51+ cp -p command/assets/custom_503.html %{buildroot }%{_datadir }/%{name }/html/503.html
6452
6553#service running directory
66- mkdir -p %{buildroot }%{_localstatedir }/var/lib /%{name }
67- touch %{buildroot }%{_localstatedir }/var/lib /%{name }/state.json
54+ mkdir -p %{buildroot }%{_sharedstatedir } /%{name }
55+ touch %{buildroot }%{_sharedstatedir } /%{name }/state.json
6856
6957# selinux
7058cd os-build/selinux
7159make -f /usr/share/selinux/devel/Makefile
7260bzip2 -z %{name }.pp
73-
7461mkdir -p %{buildroot }%{_datadir }/selinux/packages
7562cp -p %{name }.pp.bz2 %{buildroot }%{_datadir }/selinux/packages
63+ cd ../../
64+
65+ # runtime directory
66+ mkdir -p %{buildroot }%{_rundir }/%{name }
67+
68+ # Install license and documentation
69+ install -d %{buildroot }%{_licensedir }/%{name }
70+ install -m 644 LICENSE %{buildroot }%{_licensedir }/%{name }/LICENSE
71+
72+ install -d %{buildroot }%{_docdir }/%{name }
73+ install -m 644 README.md %{buildroot }%{_docdir }/%{name }/
74+ install -m 644 CHANGELOG.md %{buildroot }%{_docdir }/%{name }/
75+ install -m 644 CONTRIBUTING.md %{buildroot }%{_docdir }/%{name }/
76+ install -m 644 RELEASE.md %{buildroot }%{_docdir }/%{name }/
77+ install -d %{buildroot }%{_docdir }/%{name }/doc
78+ install -m 644 doc/architecture.md %{buildroot }%{_docdir }/%{name }/doc
79+ install -m 644 doc/configure.md %{buildroot }%{_docdir }/%{name }/doc
80+ install -m 644 doc/configure_cli.md %{buildroot }%{_docdir }/%{name }/doc
81+ install -m 644 doc/debugging_strategies.md %{buildroot }%{_docdir }/%{name }/doc
82+ install -m 644 doc/design_motivation.md %{buildroot }%{_docdir }/%{name }/doc
83+ install -m 644 doc/getting_started.md %{buildroot }%{_docdir }/%{name }/doc
84+ install -m 644 doc/how_to_use.md %{buildroot }%{_docdir }/%{name }/doc
85+ install -m 644 doc/lexicon.md %{buildroot }%{_docdir }/%{name }/doc
86+ install -m 644 doc/lifetime_of_a_session.md %{buildroot }%{_docdir }/%{name }/doc
87+ install -m 644 doc/recipes.md %{buildroot }%{_docdir }/%{name }/doc
88+ install -m 644 doc/README.md %{buildroot }%{_docdir }/%{name }/doc
89+ install -m 644 doc/tools_libraries.md %{buildroot }%{_docdir }/%{name }/doc
90+ install -m 644 doc/why_you_should_use.md %{buildroot }%{_docdir }/%{name }/doc
7691
7792%clean
7893rm -rf %{buildroot }
7994
8095%post
8196semodule -i %{_datadir }/selinux/packages/%{name }.pp.bz2
82-
83- # selinux initial set file types
84- chcon -t %{name }_unit_file_t %{_localstatedir }/run/%{name }/%{name }.service
85- chcon -t %{name }_unit_file_t %{_localstatedir }/run/%{name }/%{name }@.service
97+ chcon -t %{name }_unit_file_t %{_unitdir }/%{name }.service
98+ chcon -t %{name }_unit_file_t %{_unitdir }/%{name }@.service
8699chcon -t %{name }_exec_t %{_bindir }/%{name }*
87- chcon -R -t %{name }_var_run_t %{_localstatedir }/var/lib/%{name }/
88-
89- %postun
90- semodule -r %{name }
100+ chcon -R -t %{name }_var_run_t %{_sharedstatedir }/%{name }/
101+ chcon -R -t %{name }_var_run_t %{_rundir }/%{name }/
91102
92103%files
93104%defattr(-,root,root,-)
94105%config(noreplace) %{_sysconfdir }/%{name }/config.toml
95106%{_bindir }/%{name }
96- %{_localstatedir }/run /%{name }
97- %{_localstatedir }/var/lib /%{name }
107+ %{_rundir } /%{name }
108+ %{_sharedstatedir } /%{name }
98109%{_datadir }/%{name }
99110%{_datadir }/selinux/packages/%{name }.pp.bz2
100111%{_unitdir }/%{name }.service
101112%{_unitdir }/%{name }@.service
102113
103- %doc CHANGELOG.md CONTRIBUTING.md README.md RELEASE.md doc/architecture.md doc/configure.md doc/configure_cli.md doc/debugging_strategies.md doc/design_motivation.md doc/getting_started.md doc/how_to_use.md doc/lexicon.md doc/lifetime_of_a_session.md doc/managing_workers.md doc/recipes.md doc/tools_libraries.md doc/why_you_should_use.md
104- %license LICENSE
114+ %doc
115+ %doc %{_docdir }/%{name }/README.md
116+ %doc %{_docdir }/%{name }/CHANGELOG.md
117+ %doc %{_docdir }/%{name }/CONTRIBUTING.md
118+ %doc %{_docdir }/%{name }/RELEASE.md
119+ %doc %{_docdir }/%{name }/doc/architecture.md
120+ %doc %{_docdir }/%{name }/doc/configure.md
121+ %doc %{_docdir }/%{name }/doc/configure_cli.md
122+ %doc %{_docdir }/%{name }/doc/debugging_strategies.md
123+ %doc %{_docdir }/%{name }/doc/design_motivation.md
124+ %doc %{_docdir }/%{name }/doc/getting_started.md
125+ %doc %{_docdir }/%{name }/doc/how_to_use.md
126+ %doc %{_docdir }/%{name }/doc/lexicon.md
127+ %doc %{_docdir }/%{name }/doc/lifetime_of_a_session.md
128+ %doc %{_docdir }/%{name }/doc/recipes.md
129+ %doc %{_docdir }/%{name }/doc/README.md
130+ %doc %{_docdir }/%{name }/doc/tools_libraries.md
131+ %doc %{_docdir }/%{name }/doc/why_you_should_use.md
132+
133+ %license %{_licensedir }/%{name }/LICENSE
105134
106135%changelog
107136* Wed Oct 29 2025 Florentin Dubois <florentin.dubois@clever-cloud.com>
@@ -114,11 +143,11 @@ semodule -r %{name}
114143- release 1.0.4
115144* Wed Jul 17 2024 Emmanuel Bosquet <bjokac@gmail.com>
116145- release 1.0.3
117- * Wed may 29 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
146+ * Wed May 29 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
118147- release 1.0.1
119148* Tue Apr 16 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
120149- release 1.0.0
121- * Fri Apr 5 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
150+ * Fri Apr 05 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
122151- release 1.0.0-rc.2
123152* Tue Mar 19 2024 Florentin Dubois <florentin.dubois@clever-cloud.com>
124153- release 1.0.0-rc.1
@@ -131,4 +160,6 @@ semodule -r %{name}
131160* Mon Jan 23 2023 Florentin Dubois <florentin.dubois@clever-cloud.com>
132161- Update packaging
133162* Sat Jul 31 2021 Igal Alkon <igal.alkon@versatile.ai>
134- * Mon May 15 2017 Philip Woolford <woolford.philip@gmail.com> 0.1-1
163+ - 0.13.0-1
164+ * Mon May 15 2017 Philip Woolford <woolford.philip@gmail.com>
165+ - 0.1-1
0 commit comments