From e5c878662182c4bd4de1a090dd0ae8166b483919 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Mon, 23 Aug 2021 09:15:29 +0200 Subject: sys-apps/etckeeper: install conf-update.d hook In newer versions of portage (> 3.0.22), dispatch-conf will invoke hooks found in /etc/portage/update-conf.d. See also portage commit 6e86186244d0 ("dispatch-conf: Add support for conf-update.d hook directory") [1]. 1: https://gitweb.gentoo.org/proj/portage.git/commit/?id=6e86186244d048e3edd5c11c18cfb4eee98a0d56 Signed-off-by: Florian Schmaus Closes: https://github.com/gentoo/gentoo/pull/22075 Signed-off-by: Georgy Yakovlev --- sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild | 92 ++++++++++++++++++++++ sys-apps/etckeeper/etckeeper-1.18.16.ebuild | 87 -------------------- .../etckeeper/files/etckeeper-conf-update-hook | 32 ++++++++ 3 files changed, 124 insertions(+), 87 deletions(-) create mode 100644 sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild delete mode 100644 sys-apps/etckeeper/etckeeper-1.18.16.ebuild create mode 100644 sys-apps/etckeeper/files/etckeeper-conf-update-hook (limited to 'sys-apps') diff --git a/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild new file mode 100644 index 000000000000..0591f38928ef --- /dev/null +++ b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild @@ -0,0 +1,92 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit bash-completion-r1 prefix systemd tmpfiles + +DESCRIPTION="A collection of tools to let /etc be stored in a repository" +HOMEPAGE="https://etckeeper.branchable.com/" +SRC_URI="https://git.joeyh.name/index.cgi/etckeeper.git/snapshot/${P}.tar.gz" + +LICENSE="GPL-2" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +SLOT="0" +IUSE="cron test" + +BDEPEND="test? ( + dev-util/bats + dev-vcs/git +)" + +RDEPEND="app-portage/portage-utils + cron? ( virtual/cron ) + || ( + dev-vcs/git + dev-vcs/mercurial + dev-vcs/darcs + ) +" + +RESTRICT="!test? ( test )" + +PATCHES=( "${FILESDIR}"/${PN}-1.18.14-gentoo.patch ) + +src_prepare() { + default + hprefixify *.d/* etckeeper + sed -i \ + -e s'@zsh/vendor-completions@zsh/site-functions@' \ + -e s"@/lib/systemd/system@"$(systemd_get_systemunitdir)"@" \ + Makefile || die + rm -v init.d/60darcs-deleted-symlinks || die +} + +src_compile() { + : +} + +src_install() { + emake DESTDIR="${ED}" install + + doenvd "$(prefixify_ro "${FILESDIR}"/99${PN})" + + newbashcomp bash_completion ${PN} + dodoc doc/README.mdwn + newdoc "${FILESDIR}"/bashrc-r1 bashrc.example + + rm -rv "${ED}/var/cache" || die + newtmpfiles "${FILESDIR}/${PN}".tmpfilesd "${PN}".conf + + if use cron ; then + exeinto /etc/cron.daily + newexe - etckeeper <<'_EOF_' +#!/bin/sh +set -e +if [ -e /etc/etckeeper/daily ] && [ -e /etc/etckeeper/etckeeper.conf ]; then + . /etc/etckeeper/etckeeper.conf + if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then + /etc/etckeeper/daily + fi +fi +_EOF_ + fi + + local conf_update_dir="/etc/portage/conf-update.d" + insinto "${conf_update_dir}" + newins "${FILESDIR}/${PN}-conf-update-hook" "${PN}" + fperms 755 "${conf_update_dir}/${PN}" +} + +pkg_postinst() { + tmpfiles_process "${PN}.conf" + + elog "${PN} supports git, mercurial and darcs" + elog "This ebuild just ensures at least one is installed!" + elog + elog "You may want to adjust your /etc/portage/bashrc" + elog "see the example file in /usr/share/doc/${PF}" + elog + elog "To initialise your etc-dir as a repository run:" + elog "${PN} init -d /etc" +} diff --git a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild b/sys-apps/etckeeper/etckeeper-1.18.16.ebuild deleted file mode 100644 index 7338b278ab35..000000000000 --- a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit bash-completion-r1 prefix systemd tmpfiles - -DESCRIPTION="A collection of tools to let /etc be stored in a repository" -HOMEPAGE="https://etckeeper.branchable.com/" -SRC_URI="https://git.joeyh.name/index.cgi/etckeeper.git/snapshot/${P}.tar.gz" - -LICENSE="GPL-2" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" -SLOT="0" -IUSE="cron test" - -BDEPEND="test? ( - dev-util/bats - dev-vcs/git -)" - -RDEPEND="app-portage/portage-utils - cron? ( virtual/cron ) - || ( - dev-vcs/git - dev-vcs/mercurial - dev-vcs/darcs - ) -" - -RESTRICT="!test? ( test )" - -PATCHES=( "${FILESDIR}"/${PN}-1.18.14-gentoo.patch ) - -src_prepare() { - default - hprefixify *.d/* etckeeper - sed -i \ - -e s'@zsh/vendor-completions@zsh/site-functions@' \ - -e s"@/lib/systemd/system@"$(systemd_get_systemunitdir)"@" \ - Makefile || die - rm -v init.d/60darcs-deleted-symlinks || die -} - -src_compile() { - : -} - -src_install() { - emake DESTDIR="${ED}" install - - doenvd "$(prefixify_ro "${FILESDIR}"/99${PN})" - - newbashcomp bash_completion ${PN} - dodoc doc/README.mdwn - newdoc "${FILESDIR}"/bashrc-r1 bashrc.example - - rm -rv "${ED}/var/cache" || die - newtmpfiles "${FILESDIR}/${PN}".tmpfilesd "${PN}".conf - - if use cron ; then - exeinto /etc/cron.daily - newexe - etckeeper <<'_EOF_' -#!/bin/sh -set -e -if [ -e /etc/etckeeper/daily ] && [ -e /etc/etckeeper/etckeeper.conf ]; then - . /etc/etckeeper/etckeeper.conf - if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then - /etc/etckeeper/daily - fi -fi -_EOF_ - fi -} - -pkg_postinst() { - tmpfiles_process "${PN}.conf" - - elog "${PN} supports git, mercurial and darcs" - elog "This ebuild just ensures at least one is installed!" - elog - elog "You may want to adjust your /etc/portage/bashrc" - elog "see the example file in /usr/share/doc/${PF}" - elog - elog "To initialise your etc-dir as a repository run:" - elog "${PN} init -d /etc" -} diff --git a/sys-apps/etckeeper/files/etckeeper-conf-update-hook b/sys-apps/etckeeper/files/etckeeper-conf-update-hook new file mode 100644 index 000000000000..d0546c8776d3 --- /dev/null +++ b/sys-apps/etckeeper/files/etckeeper-conf-update-hook @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -eu + +# etckeeper hook for portage's conf-update hooks (e.g. invoked by +# dispatch-conf). Requires portage > 3.0.22. + +# Do nothing if etckeeper is not initialized. +if [[ ! -f "/etc/etckeeper/etckeeper.conf" ]]; then + exit +fi + +echo "conf-update.d ${@}" + +case "${1}" in + pre-session) + echo "Commiting uncommited changes before starting a configuration update session" + etckeeper pre-install + ;; + post-session) + echo "Commiting uncommited changes before after finishing a configuration update session" + etckeeper post-install + ;; + post-update) + ACTION=${1} + FILE_PATH=${2} + FILE=$(basename "${FILE_PATH}") + + echo "Commiting changes for ${FILE}" + etckeeper vcs add "${FILE_PATH}" + etckeeper vcs commit -m "${FILE}: ${ACTION} (conf-update.d hook)" + ;; +esac -- cgit v1.2.3-65-gdbad