etckeeper/etckeeper.spec
2023-04-21 16:48:26 +08:00

177 lines
5.8 KiB
RPMSpec

%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
%global dnf_is_mandatory 1
Name: etckeeper
Version: 1.18.20
Release: 1
Summary: Store /etc in a SCM system (git, mercurial, bzr or darcs)
License: GPLv2+
URL: https://etckeeper.branchable.com/
Source0: https://git.joeyh.name/index.cgi/etckeeper.git/snapshot/%{name}-%{version}.tar.gz
Source2: cron.daily
Patch0: etckeeper-makefile-remove-python-plugins.patch
Patch1: etckeeper-1.18.7-fix-rpm-ignores.patch
Patch2: etckeeper-1.18.18-fix-hg-warnings.patch
# From https://bugs.launchpad.net/ubuntu/+source/etckeeper/+bug/1826855
Patch3: etckeeper-add-breezy-python3-plugin.patch
# https://github.com/ansible/ansible/issues/54949
Patch4: etckeeper-1.18.18-fix-output-for-ansible.patch
BuildArch: noarch
BuildRequires: python3-markdown
Requires: git >= 1.6.1 perl-interpreter crontabs findutils hostname which
%if 0%{?dnf_is_mandatory}
Requires: %{name}-dnf = %{version}-%{release}
%endif
BuildRequires: systemd
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description
The etckeeper program is a tool to let /etc be stored in a git,
mercurial, bzr or darcs repository. It hooks into yum to automatically
commit changes made to /etc during package upgrades. It tracks file
metadata that version control systems do not normally support, but that
is important for /etc, such as the permissions of /etc/shadow. It's
quite modular and configurable, while also being simple to use if you
understand the basics of working with version control.
The default backend is git, if want to use a another backend please
install the appropriate tool (mercurial, darcs or bzr).
%{?bazaar: To use bazaar/breezy as backend, please also install the %{name}-%{bazaar} package.}
To start using the package please read %{_pkgdocdir}/README.
%if 0%{?with_brz}
%package brz
Summary: Support for bzr with etckeeper (via breezy)
BuildRequires: python3-devel brz
Requires: %{name} = %{version}-%{release} brz
%description brz
This package provides a brz (breezy) backend for etckeeper, if you want to use
etckeeper with (bzr) bazaar repositories, install this package.
%endif
%package dnf
Summary: DNF plugin for etckeeper support
BuildRequires: python3-devel
BuildRequires: dnf dnf-plugins-core make
Requires: %{name} = %{version}-%{release} dnf dnf-plugins-core
%description dnf
This package provides a DNF plugin for etckeeper. If you want to use
etckeeper with DNF, install this package.
%prep
%autosetup -p1
%if 0%{?with_yum}
sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=yum|' \
%else
sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=dnf|' \
%endif
-e 's|LOWLEVEL_PACKAGE_MANAGER=.*|LOWLEVEL_PACKAGE_MANAGER=rpm|' \
-i etckeeper.conf
sed -e 's|^prefix=.*|prefix=%{_prefix}|' \
-e 's|^bindir=.*|bindir=%{_bindir}|' \
-e 's|^etcdir=.*|etcdir=%{_sysconfdir}|' \
-e 's|^mandir=.*|mandir=%{_mandir}|' \
-e 's|^vardir=.*|vardir=%{_localstatedir}|' \
-e 's|^INSTALL=.*|INSTALL=install -p|' \
-e 's|^CP=.*|CP=cp -pR|' \
-e 's|^systemddir=.*|systemddir=%{_unitdir}|' \
-i Makefile
mkdir brz-plugin ; mv etckeeper-brz brz-plugin
mkdir dnf-plugin ; mv etckeeper-dnf dnf-plugin
%build
%make_build
%if 0%{?with_brz}
pushd brz-plugin
%define py_setup etckeeper-brz/__init__.py
%py3_build
popd
%endif
pushd dnf-plugin
%define py_setup etckeeper-dnf/etckeeper.py build
%py3_build
popd
`ls /usr/bin/ |grep "markdown"` -f README.html README.md
%install
%make_install
%if 0%{?with_brz}
pushd brz-plugin
%define py_setup etckeeper-brz/__init__.py
%py3_install
popd
%endif
pushd dnf-plugin
%define py_setup etckeeper-dnf/etckeeper.py build
%py3_install
popd
%if 0%{?dnf_is_mandatory}
sed -e 's|HIGHLEVEL_PACKAGE_MANAGER=.*|HIGHLEVEL_PACKAGE_MANAGER=dnf|' \
-i %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
%endif
install -D -p %{SOURCE2} %{buildroot}%{_sysconfdir}/cron.daily/%{name}
install -d %{buildroot}%{_localstatedir}/cache/%{name}
%post
if [ $1 -gt 1 ] ; then
%{_bindir}/%{name} update-ignore
fi
%systemd_post %{name}.service
%systemd_post %{name}.timer
%preun
%systemd_preun %{name}.service
%systemd_preun %{name}.timer
%postun
%systemd_postun %{name}.service
%systemd_postun %{name}.timer
%files
%doc README.html README.md
%license GPL
%{_bindir}/%{name}
%{_mandir}/man8/%{name}.8*
%dir %{_sysconfdir}/%{name}
%{_sysconfdir}/%{name}/*.d
%{_sysconfdir}/%{name}/daily
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%config(noreplace) %{_sysconfdir}/cron.daily/%{name}
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/%{name}
%dir %{_datadir}/zsh
%dir %{_datadir}/zsh/vendor-completions
%{_datadir}/zsh/vendor-completions/_%{name}
%if 0%{?with_yum}
%dir %{_prefix}/lib/yum-plugins
%{_prefix}/lib/yum-plugins/%{name}.*
%dir %{_sysconfdir}/yum/pluginconf.d
%config(noreplace) %{_sysconfdir}/yum/pluginconf.d/%{name}.conf
%endif
%{_localstatedir}/cache/%{name}
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}.timer
%if 0%{?with_brz}
%files brz
%dir %{python3_sitelib}/breezy/
%dir %{python3_sitelib}/breezy/plugins/
%{python3_sitelib}/breezy/plugins/%{name}/
%{python3_sitelib}/brz_%{name}-*.egg-info
%endif
%files dnf
%{python3_sitelib}/dnf-plugins/%{name}.py
%exclude %{python3_sitelib}/dnf-plugins/__init__.py
%{python3_sitelib}/dnf-plugins/__pycache__/%{name}.*
%exclude %{python3_sitelib}/dnf-plugins/__pycache__/__init__.*
%{python3_sitelib}/dnf_%{name}-*.egg-info
%changelog
* Fri Apr 21 2023 wangkai <13474090681@163.com> - 1.18.20-1
- Update to 1.18.20
* Tue Sep 7 2021 zhengyaohui <zhengyaohui1@huawei.com> - 1.18.16-1
- package init