1 |
commit: e5c878662182c4bd4de1a090dd0ae8166b483919 |
2 |
Author: Florian Schmaus <flow <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Aug 23 07:15:29 2021 +0000 |
4 |
Commit: Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Sep 13 10:34:22 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e5c87866 |
7 |
|
8 |
sys-apps/etckeeper: install conf-update.d hook |
9 |
|
10 |
In newer versions of portage (> 3.0.22), dispatch-conf will invoke |
11 |
hooks found in /etc/portage/update-conf.d. See also portage commit |
12 |
6e86186244d0 ("dispatch-conf: Add support for conf-update.d hook |
13 |
directory") [1]. |
14 |
|
15 |
1: |
16 |
https://gitweb.gentoo.org/proj/portage.git/commit/?id=6e86186244d048e3edd5c11c18cfb4eee98a0d56 |
17 |
|
18 |
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org> |
19 |
Closes: https://github.com/gentoo/gentoo/pull/22075 |
20 |
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org> |
21 |
|
22 |
...-1.18.16.ebuild => etckeeper-1.18.16-r1.ebuild} | 5 ++++ |
23 |
.../etckeeper/files/etckeeper-conf-update-hook | 32 ++++++++++++++++++++++ |
24 |
2 files changed, 37 insertions(+) |
25 |
|
26 |
diff --git a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild |
27 |
similarity index 91% |
28 |
rename from sys-apps/etckeeper/etckeeper-1.18.16.ebuild |
29 |
rename to sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild |
30 |
index 7338b278ab3..0591f38928e 100644 |
31 |
--- a/sys-apps/etckeeper/etckeeper-1.18.16.ebuild |
32 |
+++ b/sys-apps/etckeeper/etckeeper-1.18.16-r1.ebuild |
33 |
@@ -71,6 +71,11 @@ if [ -e /etc/etckeeper/daily ] && [ -e /etc/etckeeper/etckeeper.conf ]; then |
34 |
fi |
35 |
_EOF_ |
36 |
fi |
37 |
+ |
38 |
+ local conf_update_dir="/etc/portage/conf-update.d" |
39 |
+ insinto "${conf_update_dir}" |
40 |
+ newins "${FILESDIR}/${PN}-conf-update-hook" "${PN}" |
41 |
+ fperms 755 "${conf_update_dir}/${PN}" |
42 |
} |
43 |
|
44 |
pkg_postinst() { |
45 |
|
46 |
diff --git a/sys-apps/etckeeper/files/etckeeper-conf-update-hook b/sys-apps/etckeeper/files/etckeeper-conf-update-hook |
47 |
new file mode 100644 |
48 |
index 00000000000..d0546c8776d |
49 |
--- /dev/null |
50 |
+++ b/sys-apps/etckeeper/files/etckeeper-conf-update-hook |
51 |
@@ -0,0 +1,32 @@ |
52 |
+#!/usr/bin/env bash |
53 |
+set -eu |
54 |
+ |
55 |
+# etckeeper hook for portage's conf-update hooks (e.g. invoked by |
56 |
+# dispatch-conf). Requires portage > 3.0.22. |
57 |
+ |
58 |
+# Do nothing if etckeeper is not initialized. |
59 |
+if [[ ! -f "/etc/etckeeper/etckeeper.conf" ]]; then |
60 |
+ exit |
61 |
+fi |
62 |
+ |
63 |
+echo "conf-update.d ${@}" |
64 |
+ |
65 |
+case "${1}" in |
66 |
+ pre-session) |
67 |
+ echo "Commiting uncommited changes before starting a configuration update session" |
68 |
+ etckeeper pre-install |
69 |
+ ;; |
70 |
+ post-session) |
71 |
+ echo "Commiting uncommited changes before after finishing a configuration update session" |
72 |
+ etckeeper post-install |
73 |
+ ;; |
74 |
+ post-update) |
75 |
+ ACTION=${1} |
76 |
+ FILE_PATH=${2} |
77 |
+ FILE=$(basename "${FILE_PATH}") |
78 |
+ |
79 |
+ echo "Commiting changes for ${FILE}" |
80 |
+ etckeeper vcs add "${FILE_PATH}" |
81 |
+ etckeeper vcs commit -m "${FILE}: ${ACTION} (conf-update.d hook)" |
82 |
+ ;; |
83 |
+esac |