File vector.spec of Package vector
#
# spec file for package vector
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global services hardened-vector.service vector.service
Name: vector
Version: 0.42.0
Release: 0
Summary: About A high-performance observability data pipeline
License: MPL-2.0
URL: https://vector.dev/
Source0: %{name}-%{version}.tar.zst
Source1: vendor.tar.zst
Source2: vector.conf
Source3: vector-systemd.conf
Source4: vector-systemd-journal-remote.conf
Patch1: use-env.patch
%if 0%{?suse_version} == 1500
# workaround for:
# zypper in cargo1.79 cargo cargo-packaging
# Problem: 1: the to be installed cargo-1.81.0-150500.27.21.1.x86_64 obsoletes 'cargo1.79' provided by the to be installed cargo1.79-1.79.0-150500.11.3.1.x86_64
# Solution 1: do not install cargo1.79-1.79.0-150500.11.3.1.x86_64
# Solution 2: do not install cargo-1.81.0-150500.27.21.1.x86_64
#
#!BuildIgnore: cargo
%endif
%global rust_version 1.80
BuildRequires: cargo-packaging
BuildRequires: cargo%{rust_version}
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: rust%{rust_version}
# for the group that we add ourself to
BuildRequires: systemd-journal-remote
BuildRequires: sysuser-shadow
BuildRequires: sysuser-tools
BuildRequires: zstd
BuildRequires: pkgconfig(krb5)
BuildRequires: pkgconfig(libsasl2)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(protobuf)
BuildRequires: pkgconfig(systemd)
%{?systemd_ordering}
%{?sysusers_requires}
%description
Vector is a high-performance, end-to-end (agent & aggregator) observability
data pipeline that puts you in control of your observability data. Collect,
transform, and route all your logs and metrics to any vendors you want today
and any other vendors you may want tomorrow. Vector enables dramatic cost
reduction, novel data enrichment, and data security where you need it, not
where it is most convenient for your vendors. Additionally, it is open source
and up to 10x faster than every alternative in the space.
%package systemd
Summary: For integration with systemd
Requires: %{name} = %{version}
Requires: systemd
Requires(pre): %{name} = %{version}
Requires(pre): systemd
Supplements: (vector and systemd)
%description systemd
Vector is a high-performance, end-to-end (agent & aggregator) observability
data pipeline that puts you in control of your observability data. Collect,
transform, and route all your logs and metrics to any vendors you want today
and any other vendors you may want tomorrow. Vector enables dramatic cost
reduction, novel data enrichment, and data security where you need it, not
where it is most convenient for your vendors. Additionally, it is open source
and up to 10x faster than every alternative in the space.
This package holds the integration files with the systemd group.
%package systemd-journal-remote
Summary: For integration with systemd-journal-remote
Requires: %{name}-systemd = %{version}
Requires: systemd-journal-remote
Requires(pre): %{name}-systemd = %{version}
Requires(pre): systemd-journal-remote
Supplements: (vector and systemd-journal-remote)
%description systemd-journal-remote
Vector is a high-performance, end-to-end (agent & aggregator) observability
data pipeline that puts you in control of your observability data. Collect,
transform, and route all your logs and metrics to any vendors you want today
and any other vendors you may want tomorrow. Vector enables dramatic cost
reduction, novel data enrichment, and data security where you need it, not
where it is most convenient for your vendors. Additionally, it is open source
and up to 10x faster than every alternative in the space.
This package holds the integration files with the systemd-journal-remote group.
%prep
%autosetup -p1 -a1
%build
export GIT_HASH_SHORT=v%{version}
%{cargo_build}
%sysusers_generate_pre %{SOURCE2} %{name} %{name}.conf
%sysusers_generate_pre %{SOURCE3} %{name}-systemd %{name}-systemd.conf
%sysusers_generate_pre %{SOURCE4} %{name}-systemd-journal-remote %{name}-systemd-journal-remote.conf
%install
install -D -m 0755 target/release/vector %{buildroot}%{_bindir}/vector
pushd distribution/systemd
install -D -m 0640 vector.default %{buildroot}%{_sysconfdir}/default/vector
install -D -m 0644 -t %{buildroot}%{_unitdir}/ hardened-vector.service vector.service
popd
install -D -m 0640 config/vector.yaml %{buildroot}%{_sysconfdir}/%{name}/vector.yaml
install -D -m 0644 -t %{buildroot}%{_sysusersdir}/ %{SOURCE2} %{SOURCE3} %{SOURCE4}
install -D -d -m 0750 %{buildroot}%{_localstatedir}/lib/vector
%pre -f %{name}.pre
%service_add_pre %{services}
%preun
%service_del_preun %{services}
%post
%service_add_post %{services}
%postun
%service_del_postun %{services}
%files
%license LICENSE*
%{_bindir}/vector
%doc *.md
%doc NOTICE
%doc config/examples/
%doc docs/
%config(noreplace) %attr(-,root,vector) %{_sysconfdir}/%{name}/
%config(noreplace) %{_sysconfdir}/default/vector
%{_unitdir}/*vector.service
%{_sysusersdir}/%{name}.conf
%dir %attr(-,vector,vector) %{_localstatedir}/lib/vector
%pre systemd -f %{name}-systemd.pre
%files systemd
%{_sysusersdir}/%{name}-systemd.conf
%pre systemd-journal-remote -f %{name}-systemd-journal-remote.pre
%files systemd-journal-remote
%{_sysusersdir}/%{name}-systemd-journal-remote.conf
%changelog