%global rustfs_version 1.0.0 %global rustfs_prerelease alpha.50 %global rustfs_console_version 0.0.10 Name: rustfs Version: %{rustfs_version}%{?rustfs_prerelease:~%{rustfs_prerelease}} Release: %autorelease Summary: High-performance distributed object storage License: Apache-2.0 URL: https://github.com/rustfs/rustfs Source0: https://github.com/rustfs/rustfs/archive/refs/tags/%{rustfs_version}%{?rustfs_prerelease:-%{rustfs_prerelease}}.tar.gz Source1: https://gitlab.com/pg-packages/file-misc/-/raw/master/rustfs-console-6cd9e977721c06b0285c7324bb33ac6a14c403ea.zip Source2: %{name}.env Source3: %{name}-service.preset Source4: %{name}-tmpfiles.conf Patch0: 0000-disable-update-check.patch ExclusiveArch: x86_64 aarch64 BuildRequires: cargo BuildRequires: crudini BuildRequires: grep BuildRequires: rust-srpm-macros BuildRequires: sed BuildRequires: systemd-rpm-macros BuildRequires: tomcli BuildRequires: unzip BuildRequires: yarnpkg Requires: coreutils Requires: grep %{?systemd_requires} %{?sysusers_requires_compat} %description %{summary}. %prep %setup -q -n %{name}-%{rustfs_version}%{?rustfs_prerelease:-%{rustfs_prerelease}} %patch -p1 0 tomcli set Cargo.toml str workspace.package.version '%{rustfs_version}%{?rustfs_prerelease:-%{rustfs_prerelease}}' tomcli set Cargo.toml str workspace.dependencies.rustfs.version '%{rustfs_version}%{?rustfs_prerelease:-%{rustfs_prerelease}}' for __DEPENDENCY in $(tomcli get Cargo.toml workspace.dependencies | grep '^rustfs-' | grep 'version =' | awk '{ print $1 }'); do tomcli set Cargo.toml str "workspace.dependencies.${__DEPENDENCY}.version" '%{rustfs_version}%{?rustfs_prerelease:-%{rustfs_prerelease}}' done unzip "%{SOURCE1}" -d rustfs-console #tar --extract --file "%{SOURCE1}" #pushd console-%{rustfs_console_version} # keep the logo request local #grep --recursive --files-with-matches --extended-regexp 'https://.+logo\.svg' \ # | xargs --no-run-if-empty sed --in-place --regexp-extended 's|https://.+logo\.svg|~/assets/logo\.svg|g' #popd %build #pushd console-%{rustfs_console_version} #export NUXT_TELEMETRY_DISABLED=1 #export VERSION=%{rustfs_console_version} #yarn install #yarn build #yarn run generate #unset VERSION #unset NUXT_TELEMETRY_DISABLED #cp --verbose --recursive "$(realpath dist)/." ../rustfs/static/ #popd cp --verbose --recursive rustfs-console/. rustfs/static/ [ -e rustfs/static/.gitkeep ] && rm rustfs/static/.gitkeep if [ -n "$JENKINS_URL" ]; then cargo build --release --package rustfs --bins --jobs 2 else cargo build --release --package rustfs --bins --jobs '%{?_smp_build_ncpus}' fi %install install -D --mode=0755 target/release/rustfs %{buildroot}%{_bindir}/rustfs install -D --mode=0644 deploy/build/rustfs.service %{buildroot}%{_unitdir}/%{name}.service install -D --mode=0640 "%{SOURCE2}" %{buildroot}%{_sysconfdir}/default/%{name} install -D --mode=0644 "%{SOURCE3}" %{buildroot}%{_prefix}/lib/systemd/system-preset/90-%{name}.preset install -D --mode=0644 "%{SOURCE4}" %{buildroot}%{_exec_prefix}/lib/tmpfiles.d/%{name}.conf crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service Environment crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service EnvironmentFile crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service ExecStart crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service ReadWritePaths crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service StandardOutput crudini --del --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service StandardError crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service EnvironmentFile %{_sysconfdir}/default/%{name} crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service ExecStart '%{_bindir}/%{name} $RUSTFS_OPTS' crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service Group %{name} crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service ReadWritePaths %{_sharedstatedir}/%{name}/data crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service ReadWritePaths %{_sharedstatedir}/%{name}/work crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service Restart on-failure crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service User %{name} crudini --set --inplace "%{buildroot}%{_unitdir}/%{name}.service" Service WorkingDirectory %{_sharedstatedir}/%{name}/work %files %license LICENSE %{_bindir}/%{name} %{_unitdir}/%{name}.service %config(noreplace) %{_sysconfdir}/default/%{name} %{_prefix}/lib/systemd/system-preset/90-%{name}.preset %{_exec_prefix}/lib/tmpfiles.d/%{name}.conf %pre getent group %{name} > /dev/null || groupadd --system %{name} getent passwd %{name} > /dev/null || \ useradd --system --create-home --home-dir %{_sharedstatedir}/%{name} --gid %{name} \ -s /sbin/nologin -c "%{name} daemon" %{name} exit 0 %post if ! grep 'RUSTFS_SECRET_KEY=' %{_sysconfdir}/default/%{name} 2>&1 > /dev/null ; then printf '\nRUSTFS_SECRET_KEY="%s"\n' "$(head --bytes=64 /dev/urandom | base64 --wrap=0)" >> %{_sysconfdir}/default/%{name} printf '\nrustfs configuration file: %{_sysconfdir}/default/%{name}\n' fi %systemd_post %{name}.service %preun %systemd_preun %{name}.service %postun %systemd_postun %{name}.service %changelog %autochangelog