mirror of
https://github.com/xcat2/confluent.git
synced 2026-10-20 06:35:33 +00:00
b86e0aa27f
Neither is packaged by EPEL or Ubuntu, so the hard dependency made the server uninstallable there without --nodeps or a stub package. Both are already optional in the code: httpapi drops passkey support when webauthn does not import, and the Lenovo IMM2 BIOS settings path reports the missing module as unsupported functionality. Recommend them instead, as the SUSE branch already does for webauthn. See xcat2/confluent#192.
124 lines
5.5 KiB
Cheetah
124 lines
5.5 KiB
Cheetah
%define name confluent_server
|
|
%define version #VERSION#
|
|
%define fversion %{lua:
|
|
sv, _ = string.gsub("#VERSION#", "[~]", "-")
|
|
print(sv)
|
|
}
|
|
%define release 1
|
|
|
|
Summary: confluent systems management server
|
|
Name: %{name}
|
|
Version: %{version}
|
|
Release: %{release}
|
|
Source0: %{name}-%{fversion}.tar.gz
|
|
License: Apache-2.0
|
|
Group: Development/Libraries
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
|
|
Prefix: %{_prefix}
|
|
BuildArch: noarch
|
|
Requires: confluent_vtbufferd
|
|
%if 0%{?python3_version_nodots} >= 313
|
|
# 3.13 removed crypt from the stdlib, and stored credentials are hashed with
|
|
# it. Recommends rather than Requires: some 3.13 distros package no candidate
|
|
# at all, where a hard dependency would make the rpm uninstallable.
|
|
Recommends: python3-legacycrypt
|
|
%endif
|
|
%if "%{dist}" == ".el9"
|
|
Requires: python3-asyncssh, python3-cryptography, confluent_client == %{version}, python3-pyparsing, python3-netifaces, python3-pyasn1 >= 0.2.3, python3-pysnmp >= 4.3.4, python3-lxml, python3-setuptools, python3-dateutil, python3-cffi, python3-pyOpenSSL python3-msgpack python3-libarchive-c python3-yaml python3-yarl python3-aiohttp openssl iproute
|
|
# httpapi drops passkey support without webauthn, and only BIOS settings on
|
|
# IMM2-era Lenovo BMCs need eficompressor. Neither is in EPEL.
|
|
Recommends: python3-webauthn python3-eficompressor
|
|
%else
|
|
%if "%{dist}" == ".el10"
|
|
Requires: python3-asyncssh, python3-cryptography, confluent_client == %{version}, python3-pyparsing, python3-psutil, python3-pyasn1 >= 0.2.3, python3-pysnmp >= 4.3.4, python3-lxml,python3-setuptools, python3-dateutil, python3-cffi, python3-pyOpenSSL python3-msgpack python3-libarchive-c python3-yaml openssl iproute python3-yarl python3-aiohttp
|
|
# httpapi drops passkey support without webauthn, which is not in EPEL
|
|
Recommends: python3-webauthn
|
|
%else
|
|
%if 0%{?suse_version}
|
|
# python3-dbm is split out there, PyYAML keeps its upstream capitalisation
|
|
Requires: python3-dbm, python3-asyncssh, python3-cryptography, confluent_client == %{version}, python3-pyparsing, python3-psutil, python3-pyasn1 >= 0.2.3, python3-pysnmp >= 4.3.4, python3-lxml, python3-setuptools, python3-dateutil, python3-cffi, python3-pyOpenSSL, python3-msgpack, python3-libarchive-c, python3-PyYAML, python3-yarl, python3-aiohttp, openssl, iproute
|
|
# httpapi imports webauthn behind a try/except and drops passkey support
|
|
# without it, and openSUSE packages no candidate, so recommend it instead.
|
|
Recommends: python3-webauthn
|
|
%endif
|
|
%endif
|
|
%endif
|
|
|
|
Vendor: Lenovo
|
|
Url: https://github.com/lenovo/confluent
|
|
|
|
%description
|
|
Server for console management and systems management aggregation
|
|
|
|
%prep
|
|
%setup -n %{name}-%{fversion}
|
|
|
|
%build
|
|
%if "%{dist}" == ".el7"
|
|
python2 setup.py build
|
|
%else
|
|
python3 setup.py build
|
|
%endif
|
|
|
|
%install
|
|
%if "%{dist}" == ".el7"
|
|
python2 setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES.bare --install-purelib=/opt/confluent/lib/python --install-scripts=/opt/confluent/bin
|
|
%else
|
|
python3 setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES.bare --install-purelib=/opt/confluent/lib/python --install-scripts=/opt/confluent/bin
|
|
%endif
|
|
for file in $(grep confluent/__init__.py INSTALLED_FILES.bare); do
|
|
rm $RPM_BUILD_ROOT/$file
|
|
done
|
|
grep -v confluent/__init__.py INSTALLED_FILES.bare > INSTALLED_FILES
|
|
%if 0%{?suse_version}
|
|
# openSUSE patches setuptools to write a literal "#!python" placeholder into
|
|
# installed scripts and expects the packager to rewrite it. The stock
|
|
# %%python3_fix_shebang only looks at %%{_bindir}, so do it for our prefix.
|
|
sed -i '1s|^#!python|#!/usr/bin/python3|' $RPM_BUILD_ROOT/opt/confluent/bin/*
|
|
%endif
|
|
# Only do non-root confluent if systemd of the platform supports it
|
|
systemd-analyze verify $RPM_BUILD_ROOT/usr/lib/systemd/system/confluent.service 2>&1 | grep "'AmbientCapabilities'" > /dev/null && sed -e 's/User=.*//' -e 's/Group=.*//' -e 's/AmbientCapabilities=.*//' -i $RPM_BUILD_ROOT/usr/lib/systemd/system/confluent.service
|
|
cat INSTALLED_FILES
|
|
|
|
%pre
|
|
getent group confluent > /dev/null || /usr/sbin/groupadd -r confluent
|
|
getent passwd confluent > /dev/null || /usr/sbin/useradd -r -g confluent -d /var/lib/confluent -s /sbin/nologin confluent
|
|
mkdir -p /etc/confluent /var/lib/confluent /var/log/confluent /var/cache/confluent
|
|
chown confluent:confluent /etc/confluent /var/lib/confluent /var/log/confluent /var/cache/confluent
|
|
|
|
%post
|
|
sysctl -p /usr/lib/sysctl.d/confluent.conf >& /dev/null
|
|
NEEDCHOWN=0
|
|
NEEDSTART=0
|
|
[ -n "$(find /etc/confluent /var/log/confluent /var/cache/confluent -uid 0 -print -quit 2>/dev/null)" ] && NEEDCHOWN=1
|
|
if [ $NEEDCHOWN = 1 ]; then
|
|
if systemctl is-active confluent > /dev/null; then
|
|
NEEDSTART=1
|
|
systemctl stop confluent
|
|
fi
|
|
chown -R confluent:confluent /etc/confluent /var/log/confluent /var/cache/confluent
|
|
fi
|
|
systemctl daemon-reload
|
|
if systemctl is-active confluent > /dev/null || [ $NEEDSTART = 1 ]; then /usr/bin/systemctl restart confluent >& /dev/null; fi
|
|
# -e is false for a dangling link, so an existing bad one is replaced. Linux-PAM
|
|
# reads vendor defaults from /usr/lib/pam.d and distributions are migrating there
|
|
# package by package; openssh has already done so on SUSE 16.
|
|
if [ ! -e /etc/pam.d/confluent ]; then
|
|
for pamsrc in /etc/pam.d/sshd /usr/lib/pam.d/sshd; do
|
|
if [ -f $pamsrc ]; then
|
|
ln -sf $pamsrc /etc/pam.d/confluent
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
true
|
|
|
|
%clean
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
%files -f INSTALLED_FILES
|
|
%license /opt/confluent/share/licenses/confluent_server/LICENSE
|
|
%license /opt/confluent/share/licenses/confluent_server/COPYRIGHT
|
|
%defattr(-,root,root)
|
|
/opt/confluent
|