Summary: Tools and libraries for subscription and repository management
Name: subscription-manager
Version: 1.29.35
Release: 1
License: GPLv2+
Group: System/Configuration/Packaging
Url: https://github.com/candlepin/subscription-manager/
Source0: https://github.com/candlepin/subscription-manager/archive/%{name}-%{version}-1.tar.gz?/%{name}-%{name}-%{version}-1.tar.gz
Source1: https://github.com/candlepin/subscription-manager-rhsm-certificates/archive/%{name}-rhsm-certificates-20220623-1.tar.gz?/%{name}-rhsm-certificates-%{name}-rhsm-certificates-20220623-1.tar.gz
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: gettext
BuildRequires: intltool
BuildRequires: python3dist(python-dateutil)
BuildRequires: python3dist(setuptools)
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(libdnf)
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(python3)
Requires: logrotate
Requires: %{name}-plugin-dnf = %{EVRD}
Requires: %{name}-rhsm-certificates = %{EVRD}
Requires: python3-cloud-what = %{EVRD}
Requires: python3-gobject2
Requires: python3-%{name}-rhsm = %{EVRD}
Requires: usermode-consoleonly
Requires: virt-what
Requires: python3dist(dbus-python)
Requires: python3dist(decorator)
Requires: python3dist(ethtool)
Requires: python3dist(iniparse)
Requires: python3dist(python-dateutil)
Requires: python3dist(python-dmidecode)
Requires: python3dist(simplejson)
Requires: python3-librepo
Requires: python3-gi
Requires(post,preun,postun): systemd
%description
The Subscription Manager package provides programs and libraries to allow users
to manage subscriptions and yum repositories from the Red Hat entitlement
platform.
%files -f rhsm.lang
%doc README.md
%license LICENSE
%attr(644,root,root) %config(noreplace) %{_sysconfdir}/rhsm/rhsm.conf
%attr(644,root,root) %{_sysconfdir}/rhsm/syspurpose/valid_fields.json
%attr(644,root,root) %{_tmpfilesdir}/%{name}.conf
%attr(644,root,root) %{_unitdir}/rhsmcertd.service
%attr(755,root,root) %{_bindir}/rct
%attr(755,root,root) %{_bindir}/rhsmcertd
%attr(755,root,root) %{_bindir}/rhsm-debug
%attr(755,root,root) %dir %{_sysconfdir}/pki/consumer
%attr(755,root,root) %dir %{_sysconfdir}/pki/entitlement
%attr(755,root,root) %dir %{_sysconfdir}/rhsm
%attr(755,root,root) %dir %{_sysconfdir}/rhsm/facts
%attr(755,root,root) %dir %{_var}/lib/rhsm
%attr(755,root,root) %dir %{_var}/lib/rhsm/cache
%attr(755,root,root) %dir %{_var}/lib/rhsm/facts
%attr(755,root,root) %dir %{_var}/lib/rhsm/packages
%attr(755,root,root) %dir %{_var}/log/rhsm
%attr(755,root,root) %{_libexecdir}/rhsmcertd-worker
%attr(755,root,root) %{_libexecdir}/rhsm-facts-service
%attr(755,root,root) %{_libexecdir}/rhsm-service
%attr(755,root,root) %{_libexecdir}/rhsm-package-profile-uploader
%attr(755,root,root) %{_sbindir}/%{name}
%{_bindir}/%{name}
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/dnf/plugins/%{name}.conf
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/dnf/plugins/product-id.conf
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/com.redhat.RHSM1.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/com.redhat.RHSM1.Facts.conf
%{_datadir}/bash-completion/completions/%{name}
%{_datadir}/bash-completion/completions/rct
%{_datadir}/bash-completion/completions/rhsmcertd
%{_datadir}/bash-completion/completions/rhsm-debug
%{_datadir}/dbus-1/system-services/com.redhat.RHSM1.Facts.service
%{_datadir}/dbus-1/system-services/com.redhat.RHSM1.service
%{_datadir}/polkit-1/actions/com.redhat.RHSM1.Facts.policy
%{_datadir}/polkit-1/actions/com.redhat.RHSM1.policy
%dir %{_datadir}/rhsm-plugins
%dir %{python3_sitearch}/syspurpose
%dir %{_sysconfdir}/rhsm/pluginconf.d
%ghost %attr(755,root,root) %dir %{_var}/run/rhsm
%ghost %{_sysconfdir}/yum.repos.d/redhat.repo
%ghost %{_sysconfdir}/yum.repos.d/rosa.repo
%{_libdir}/libdnf/plugins/product-id.so
%{_mandir}/man5/rhsm.conf.5.xz
%{_mandir}/man8/%{name}.8*
%{_mandir}/man8/rct.8*
%{_mandir}/man8/rhsmcertd.8*
%{_mandir}/man8/rhsm-debug.8.xz
%{python3_sitearch}/rct
%{python3_sitearch}/rhsm_debug
%{python3_sitearch}/rhsmlib/
%{python3_sitearch}/subscription_manager/
%{python3_sitearch}/subscription_manager-%{version}-py*.egg-info/
%{python3_sitearch}/syspurpose/*.py*
%{python3_sitearch}/syspurpose/__pycache__
%{_sysconfdir}/pam.d/%{name}
%{_sysconfdir}/security/console.apps/%{name}
%{_unitdir}/rhsm-facts.service
%{_unitdir}/rhsm.service
%post
%tmpfiles_create %{_tmpfilesdir}/%{name}.conf
%systemd_post rhsmcertd.service
%systemd_post rhsm.service
%systemd_post rhsm-facts.service
%preun
%systemd_preun rhsmcertd.service
%systemd_preun rhsm.service
%systemd_preun rhsm-facts.service
#----------------------------------------------------------------------------
%package -n python3-%{name}-rhsm
Summary: A Python library to communicate with a Red Hat Unified Entitlement Platform
Group: System/Configuration/Packaging
Requires: python3dist(python-dateutil)
Requires: python3dist(iniparse)
Requires: %{name}-rhsm-certificates = %{EVRD}
Requires: python3-cloud-what = %{EVRD}
Requires: python3dist(rpm)
Provides: python3-rhsm = %{EVRD}
%description -n python3-%{name}-rhsm
A small library for communicating with the REST interface of a Red Hat Unified
Entitlement Platform. This interface is used for the management of system
entitlements, certificates, and access to content.
%files -n python3-%{name}-rhsm
%doc README.md
%license LICENSE
%{python3_sitearch}/rhsm
#----------------------------------------------------------------------------
%package -n python3-cloud-what
Summary: Python package for detection of public cloud provider
Group: System/Configuration/Packaging
Requires: python3dist(requests)
%ifarch %{ix86} x86_64 aarch64
Requires: dmidecode
%endif
%description -n python3-cloud-what
This package contains a Python module for detection and collection of public
cloud metadata and signatures.
%files -n python3-cloud-what
%doc README.md
%license LICENSE
%attr(750,root,root) %dir %{_var}/cache/cloud-what
%{python3_sitearch}/cloud_what
#----------------------------------------------------------------------------
%package plugin-ostree
Summary: A plugin for handling OSTree content
Group: System/Configuration/Packaging
Requires: %{name} = %{EVRD}
%description plugin-ostree
Enables handling of content of type 'ostree' in any certificates
from the server. Populates /ostree/repo/config as well as updates
the remote in the currently deployed .origin file.
%files plugin-ostree
%doc README.md
%license LICENSE
%{_datadir}/rhsm-plugins/ostree_content.py*
%{_datadir}/rhsm-plugins/__pycache__/*ostree*
%{python3_sitearch}/subscription_manager/plugin/ostree
%{_sysconfdir}/rhsm/pluginconf.d/ostree_content.OstreeContentPlugin.conf
#----------------------------------------------------------------------------
%package plugin-container
Summary: A plugin for handling container content
Group: System/Configuration/Packaging
Requires: %{name} = %{EVRD}
%description plugin-container
Enables handling of content of type 'containerImage' in any certificates
from the server. Populates /etc/docker/certs.d appropriately.
%files plugin-container
%{_datadir}/rhsm-plugins/container_content.py*
%{_datadir}/rhsm-plugins/__pycache__/*container*
%{python3_sitearch}/subscription_manager/plugin/container
%{_sysconfdir}/rhsm/pluginconf.d/container_content.ContainerContentPlugin.conf
%post plugin-container
%{__python3} %{_datadir}/rhsm-plugins/container_content.py || :
#----------------------------------------------------------------------------
%package plugin-dnf
Summary: Subscription Manager plugins for DNF
Group: System/Configuration/Packaging
Requires: %{name} = %{EVRD}
%description plugin-dnf
This package provides plugins to interact with repositories and subscriptions
from the Red Hat entitlement platform; contains subscription-manager and
product-id plugins.
%files plugin-dnf
%doc README.md
%license LICENSE
%{_libdir}/libdnf/plugins/product-id.so
%{python3_sitelib}/dnf-plugins
#----------------------------------------------------------------------------
%package rhsm-certificates
Summary: Certificates required to communicate with a Red Hat Unified Entitlement Platform
Group: System/Configuration/Packaging
%description rhsm-certificates
This package contains certificates required for communicating with the REST interface
of a Red Hat Unified Entitlement Platform, used for the management of system entitlements
and to receive access to content.
%files rhsm-certificates
%doc README.md
%license LICENSE
%dir %{_sysconfdir}/rhsm
%dir %{_sysconfdir}/rhsm/ca
%{_sysconfdir}/rhsm/ca/*.pem
#----------------------------------------------------------------------------
%prep
%autosetup -p1 -n %{name}-%{name}-%{version}-1 -a1
%build
make -f Makefile \
CFLAGS="%{optflags}" \
LDFLAGS="%{ldflags} -lpython%{py3_ver}" \
OS_DIST="rosa" \
PYTHON="%{__python3}" \
PYTHON_SITELIB=%{python3_sitearch} \
VERSION=%{version}-%{release}
pushd src/plugins/libdnf
%cmake -DCMAKE_BUILD_TYPE="Release"
%make
popd
%install
make -f Makefile install \
COMPLETION_DIR=%{_datadir}/bash-completion/completions \
DESTDIR=%{buildroot} \
INSTALL_DNF_PLUGINS=true \
OS_DIST=rosa \
OS_VERSION=2021.1 \
PREFIX=%{_prefix} \
PYTHON=%{__python3} \
PYTHON_SITELIB=%{python3_sitearch} \
VERSION=%{version}-%{release}
pushd src/plugins/libdnf
%make_install -C build
popd
pushd %{name}-rhsm-certificates*
%make_install \
PREFIX=%{_prefix} \
SYSCONFDIR=%{_sysconfdir}
popd
# Replace physical link
ln -sf consolehelper %{buildroot}%{_bindir}/subscription-manager
mkdir -p %{buildroot}/lib/systemd/system/
mv %{buildroot}/usr/lib/systemd/system/*.service %{buildroot}/lib/systemd/system/
# fake out repo files
mkdir %{buildroot}%{_sysconfdir}/yum.repos.d
touch %{buildroot}%{_sysconfdir}/yum.repos.d/redhat.repo
touch %{buildroot}%{_sysconfdir}/yum.repos.d/rosa.repo
# fake out the certificate directories
mkdir -p %{buildroot}%{_sysconfdir}/pki/consumer
mkdir -p %{buildroot}%{_sysconfdir}/pki/entitlement
# fix timestamps on our byte compiled files so them match across arches
find %{buildroot} -name \*.py -exec touch -r %{SOURCE0} '{}' \;
%find_lang rhsm
# fix python shebang
sed '1 s,^.*$,#!%{__python3},' -i %{buildroot}%{python3_sitearch}/subscription_manager/action_client.py
chmod +x %{buildroot}%{python3_sitearch}/subscription_manager/action_client.py