.gear/etckeeper.spec | 230 +++++++++++++++++++++ .gear/merge | 1 + .gear/rules | 3 + .../tags/4535cb6de35d66ea516356930d24608154282bc5 | 22 ++ .gear/tags/list | 1 + apt.conf | 5 +- debian/cron.daily | 0 etckeeper | 5 +- etckeeper.8 | 6 +- etckeeper.conf | 2 +- list-installed.d/50list-installed | 2 +- post-install.d/50vcs-commit | 6 +- pre-commit.d/20warn-problem-files | 2 +- pre-install.d/10packagelist | 7 +- 14 files changed, 275 insertions(+), 17 deletions(-) diff --git a/.gear/etckeeper.spec b/.gear/etckeeper.spec new file mode 100644 index 0000000..3351c97 --- /dev/null +++ b/.gear/etckeeper.spec @@ -0,0 +1,230 @@ +%define _unpackaged_files_terminate_build 1 + +Name: etckeeper +Version: 1.18.8 +Release: alt2 + +Summary: Etckeeper help to keep your /etc directory in VCS repository +License: GPL-2.0-or-later +Group: System/Configuration/Other +Url: https://etckeeper.branchable.com/ +Source: %name-%version.tar +Patch: %name-%version-%release.patch +BuildArch: noarch +AutoReq: yes,noshell +Requires: coreutils diffutils findutils grep sh +Requires: git-core >= 1.6.0 +Requires: perl-base +Obsoletes: %name-origin < %version-%release + +Packager: Evgenii Terechkov + +%description +etckeeper is a collection of tools to let /etc be stored in a VCS +repository. It hooks into apt/yum/packman/etc to automatically commit +changes made to /etc during package upgrades. It's quite modular and +configurable, while also being simple to use if you understand the +basics of working with VCS. + +%prep +%setup +%patch -p1 + +%build +%install +make install DESTDIR=%buildroot +install -D debian/cron.daily %buildroot%_sysconfdir/cron.daily/%name + +# We dont want bzr now: +rm -rf %buildroot%_libdir/python* +# There is no cruft package for ALT: +rm -rf %buildroot%_sysconfdir/cruft + +mv -v %buildroot%_sysconfdir/apt/apt.conf.d/05%name %buildroot%_sysconfdir/apt/apt.conf.d/%name.conf + +%check +find %buildroot -type f | xargs file | grep 'shell script' | cut -d: -f1 | xargs -n1 -t bash -n + +%post +if [ -e %_sysconfdir/.git/hooks/pre-commit ] && grep -E '^(/us[rb]/s?bin/)?%name' %_sysconfdir/.git/hooks/pre-commit >/dev/null 2>&1; then + echo "Replacing path to etckeeper in %_sysconfdir/.git/hooks/pre-commit" + sed -i 's!^/usr/sbin/etckeeper!etckeeper!;s!^/usr/bin/etckeeper!etckeeper!;s!^/usb/sbin/etckeeper!etckeeper!' %_sysconfdir/.git/hooks/pre-commit +fi + +%files +%_bindir/%name +%_sysconfdir/%name +%config(noreplace) %_sysconfdir/%name/%name.conf +%_sysconfdir/apt/apt.conf.d/%name.conf +%_man8dir/%{name}.* +/usr/share/bash-completion/completions/%name +%_cachedir/%name +%_sysconfdir/cron.daily/%name +%_unitdir/%{name}.* +%doc README.md GPL + +%changelog +* Tue Jun 28 2022 Vitaly Chikunov 1.18.8-alt2 +- Fixed annoying 'egrep is obsolescent' warning. +- Updated License, Group, and Url tags. + +* Sun Sep 30 2018 Terechkov Evgenii 1.18.8-alt1 +- 1.18.8 + +* Sat Aug 26 2017 Terechkov Evgenii 1.18.7-alt1 +- 1.18.7 + +* Sat Jun 25 2016 Terechkov Evgenii 1.18.4-alt1 +- 1.18.4 + +* Sat Apr 4 2015 Terechkov Evgenii 1.18.1-alt1 +- 1.18.1 + +* Sun Mar 1 2015 Terechkov Evgenii 1.17-alt1 +- 1.17 + +* Tue Oct 28 2014 Terechkov Evgenii 1.15-alt1 +- 1.15 + +* Sat Jun 28 2014 Terechkov Evgenii 1.12-alt1 +- 1.12 + +* Sat Sep 28 2013 Terechkov Evgenii 1.9-alt1 +- 1.9 + +* Mon Jun 24 2013 Terechkov Evgenii 1.4-alt1 +- 1.4 + +* Sun Dec 23 2012 Terechkov Evgenii 0.64-alt1 +- 0.64 + +* Sat Feb 18 2012 Terechkov Evgenii 0.61-alt1 +- 0.61 +- Require perl again +- Require fresh git-core + +* Wed Nov 9 2011 Terechkov Evgenii 0.57-alt1 +- 0.57 + +* Fri Sep 30 2011 Terechkov Evgenii 0.56-alt1 +- 0.56-87-ge3eadd8 + +* Sat Mar 19 2011 Terechkov Evgenii 0.53-alt1 +- 0.53 +- Drop useless and dangerous etckeeper-origin + +* Fri Jan 14 2011 Terechkov Evgenii 0.51-alt2 +- Update from upstream (ALT#24903) + +* Mon Dec 27 2010 Terechkov Evgenii 0.51-alt1 +- 0.51 + +* Tue Dec 7 2010 Terechkov Evgenii 0.50-alt6 +- Workaround for #24678 + +* Wed Dec 1 2010 Terechkov Evgenii 0.50-alt5.1 +- Fixup postin script + +* Wed Dec 1 2010 Terechkov Evgenii 0.50-alt5 +- git-20101201 (workaround for #24479) + +* Thu Nov 11 2010 Terechkov Evgenii 0.50-alt4 +- etckeeper-origin + +* Sun Nov 7 2010 Terechkov Evgenii 0.50-alt3 +- Futher filter out alt-specific hardlinked files complains + +* Mon Oct 25 2010 Terechkov Evgenii 0.50-alt2 +- Drop useless /etc/skel* complains + +* Sun Oct 24 2010 Terechkov Evgenii 0.50-alt1 +- 0.50 + +* Tue Sep 14 2010 Terechkov Evgenii 0.49-alt1 +- 0.49 + +* Sat Jul 17 2010 Terechkov Evgenii 0.48-alt1 +- 0.48 + +* Mon May 31 2010 Terechkov Evgenii 0.47-alt1 +- 0.47 + +* Mon May 17 2010 Terechkov Evgenii 0.46-alt1 +- 0.46 + +* Fri Apr 16 2010 Terechkov Evgenii 0.45-alt1 +- 0.45 + +* Thu Apr 15 2010 Terechkov Evgenii 0.44-alt1 +- 0.44 + +* Fri Feb 19 2010 Terechkov Evgenii 0.43-alt1 +- 0.43 + +* Fri Oct 2 2009 Terechkov Evgenii 0.41-alt2 +- Package list generation fixed + +* Sun Sep 27 2009 Terechkov Evgenii 0.41-alt1 +- 0.41 + +* Thu Aug 27 2009 Terechkov Evgenii 0.40-alt1 +- 0.40 + +* Thu Jul 9 2009 Terechkov Evgenii 0.38-alt1 +- 0.38 + +* Sat Jul 4 2009 Terechkov Evgenii 0.37-alt2 +- Document ETCKEEPER_CONF_DIR in man page (ALT #20587) +- Description updated + +* Tue Jun 9 2009 Terechkov Evgenii 0.37-alt1 +- 0.37 + +* Sun May 17 2009 Terechkov Evgenii 0.36-alt1 +- 0.36 + +* Thu May 14 2009 Terechkov Evgenii 0.35-alt2 +- Typo fixed (ALT #20038) +- Dont require perl anymore +- Dont build bzr plugin (requires python) + +* Thu May 7 2009 Terechkov Evgenii 0.35-alt1 +- 0.35 + +* Thu Apr 16 2009 Terechkov Evgenii 0.34-alt4 +- Upgrade from etckeeper < 0.34-alt2 fixed (ALT #19638) + +* Thu Apr 2 2009 Terechkov Evgenii 0.34-alt3 +- Paths in precommit hook fixed + +* Wed Apr 1 2009 Terechkov Evgenii 0.34-alt2 +- Cron paths fixed + +* Sat Mar 21 2009 Terechkov Evgenii 0.34-alt1 +- 0.34 + +* Sun Feb 8 2009 Terechkov Evgenii 0.27-alt1.1 +- Stupid typo in apt conf fixed + +* Sun Feb 8 2009 Terechkov Evgenii 0.27-alt1 +- 0.27 + +* Sat Sep 20 2008 Terechkov Evgenii 0.21-alt1 +- 0.21 + +* Sat Jul 19 2008 Terechkov Evgenii 0.20-alt1 +- 0.20 +- Patch updated (obsoleted code removed, package list support for RPM added) +- Obsoleted fix removed from spec + +* Sat Mar 22 2008 Terechkov Evgenii 0.12-alt1 +- 0.12 + +* Sun Feb 10 2008 Terechkov Evgenii 0.10-alt2 +- Unneeded patches removed + +* Sat Feb 9 2008 Terechkov Evgenii 0.10-alt1 +- 0.10 + +* Wed Jan 2 2008 Terechkov Evgenii 0.6-alt0 +- Initial build for ALT Linux Sisyphus diff --git a/.gear/merge b/.gear/merge new file mode 100644 index 0000000..e297d4d --- /dev/null +++ b/.gear/merge @@ -0,0 +1 @@ +merge: upstream master diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..8594f6e --- /dev/null +++ b/.gear/rules @@ -0,0 +1,3 @@ +tar: @version@:. +diff: @version@:. . +spec: .gear/etckeeper.spec diff --git a/.gear/tags/4535cb6de35d66ea516356930d24608154282bc5 b/.gear/tags/4535cb6de35d66ea516356930d24608154282bc5 new file mode 100644 index 0000000..1e05cba --- /dev/null +++ b/.gear/tags/4535cb6de35d66ea516356930d24608154282bc5 @@ -0,0 +1,22 @@ +object c120e9ff5f9f35d8f744b0ee093e39c179125147 +type commit +tag 1.18.8 +tagger Joey Hess 1528229043 -0400 + +tagging package etckeeper version 1.18.8 +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEKKUAw1IH6rcvbA8l2xLbD/BfjzgFAlsW7LMACgkQ2xLbD/Bf +jziCyA/+N7ZsTzid4gUv787Q8FzmZqn2B43xJCks69gtV9Hx5DTM4zY6t6hIaTT9 +aNz99lgCoEIiCKq9CRGITJMg+jBxE0NT/YAU5DeOIZls3sDwu12w0VLtFkwWqlFH +TnwWw+BXLV8kgyBB6jjB5BgEOThUcIdP0DcShZRWQjjoeNSfeSQAxBg21gqvvXHm +IoyoTsTKvUNdReg7DID3ACobv3VTuwzTt0GLvkrm8D46iGAtcJl/14M/ZiN5ZEV4 +8FVDRcP3QKiYFyuEQd6AOY803GWKpnV1Cznv4kHMGhTq+0wWqTF7gPs4km0Xd3Bv +fdSZzgRQHpK/NpYTfRf4sVOqE5SS3OkLWAvi5ak3MWzXd+qYokHp0VuIoxOXGAH5 +e8IULW1XCv9/inzCFD7fFqtctXqlEnGy5hOtL4DCuK5OnLD5znmatn4kV8QpONJN +8RGgTgYgvRpG9kfYM2fB/WyuTy2MTbbcibqKFRDRGj+BNXT5O1oo5MxPdMX0TqcQ +pPTGjqqpB/7NWsbT4Xg06tzWVmhDHlOVuxqTxKXu/PAg41p1ax762wxWKZqrDlT8 +FebTV6f3AGPezliM+0JuEzjVNFU2XvBZFVSr0ehtgm2b01WsPwDiwQmvApBKDUB6 +iDWwdPXfgjHXd4G7B3uNj9GibVGz0RHNX7AfJ45w5ZJM28HFjyM= +=EnyW +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 0000000..95d1cb9 --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1 @@ +4535cb6de35d66ea516356930d24608154282bc5 1.18.8 diff --git a/apt.conf b/apt.conf index 5e690a2..f2bda8a 100644 --- a/apt.conf +++ b/apt.conf @@ -1,5 +1,2 @@ -DPkg::Pre-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi"; }; -DPkg::Post-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper post-install; fi"; }; - -RPM::Pre-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi"; }; +RPM::Pre-Install-Pkgs { "xargs| (if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi)"; }; RPM::Post-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper post-install; fi"; }; diff --git a/debian/cron.daily b/debian/cron.daily old mode 100644 new mode 100755 diff --git a/etckeeper b/etckeeper index 9adbec0..eb95af1 100755 --- a/etckeeper +++ b/etckeeper @@ -4,6 +4,7 @@ set -e if [ -z "$ETCKEEPER_CONF_DIR" ]; then ETCKEEPER_CONF_DIR=/etc/etckeeper fi +export ETCKEEPER_CONF_DIR conf="$ETCKEEPER_CONF_DIR/etckeeper.conf" @@ -84,7 +85,7 @@ elif [ "$command" = "pre-apt" ]; then command=pre-install fi -if echo "$command" | LANG=C egrep -q '[^-a-z_]'; then +if echo "$command" | LANG=C grep -E -q '[^-a-z_]'; then echo "etckeeper: invalid command $command" >&2 exit 1 fi @@ -142,7 +143,7 @@ else # fallback if perl isn't present for script in $ETCKEEPER_CONF_DIR/$command.d/*; do if [ ! -d "$script" -a -x "$script" ]; then - echo "$script" | egrep -q "/[-a-zA-Z0-9]+$" + echo "$script" | grep -E -q "/[-a-zA-Z0-9]+$" [ $? -eq 0 ] && "$script" "$@" fi done diff --git a/etckeeper.8 b/etckeeper.8 index 6164351..d289492 100644 --- a/etckeeper.8 +++ b/etckeeper.8 @@ -29,14 +29,14 @@ This is called as a pre-commit hook. It stores metadata and does sanity checks. .TP .B pre-install -This is called by apt's DPkg::Pre-Install-Pkgs hook, or by equivalent hooks +This is called by apt's RPM::Pre-Install-Pkgs hook, or by equivilant hooks of other package managers. It allows committing any uncommitted changes before packages are installed, upgraded, etc. .TP .B post-install -This is called by apt's DPkg::Post-Invoke hook, or by equivalent hooks +This is called by apt's RPM::Post-Invoke hook, or by equivilant hooks of other package managers. It commits changes made by packages into the -repository. (You can also call this by hand after running dpkg by hand.) +repository. (You can also call this by hand after running apt/rpm by hand.) .TP .B unclean This returns true if the directory contains uncommitted changes. diff --git a/etckeeper.conf b/etckeeper.conf index f13de1c..921c70b 100644 --- a/etckeeper.conf +++ b/etckeeper.conf @@ -37,7 +37,7 @@ HIGHLEVEL_PACKAGE_MANAGER=apt # The low-level package manager that's being used. # (dpkg, rpm, pacman, pacmatic, pacman-g2, apk etc) -LOWLEVEL_PACKAGE_MANAGER=dpkg +LOWLEVEL_PACKAGE_MANAGER=rpm # To push each commit to a remote, put the name of the remote here. # (eg, "origin" for git). Space-separated lists of multiple remotes diff --git a/list-installed.d/50list-installed b/list-installed.d/50list-installed index d89b8ce..5426481 100755 --- a/list-installed.d/50list-installed +++ b/list-installed.d/50list-installed @@ -12,7 +12,7 @@ else # format "package version\n" (or something similar). if [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then dpkg-query -W -f '${Status}\t${Package} ${Version} ${Architecture}\n' | \ - egrep '(ok installed|ok config-files)' | cut -f2,3 + grep -E '(ok installed|ok config-files)' | cut -f2,3 elif [ "$LOWLEVEL_PACKAGE_MANAGER" = rpm ]; then rpm -qa --qf "%|epoch?{%{epoch}}:{0}|:%{name}-%{version}-%{release}.%{arch}\n" | sort elif [ "$LOWLEVEL_PACKAGE_MANAGER" = pacman ]; then diff --git a/post-install.d/50vcs-commit b/post-install.d/50vcs-commit index 53138c8..a80bd31 100755 --- a/post-install.d/50vcs-commit +++ b/post-install.d/50vcs-commit @@ -12,7 +12,7 @@ if etckeeper unclean; then echo "$message" echo echo "Package changes:" - etckeeper list-installed | diff -U0 $pl.pre-install - | tail -n+4 | egrep '^[-+]' || true + etckeeper list-installed | diff -U0 $pl.pre-install - | tail -n+4 | grep -E '^[-+]' || true ) | etckeeper commit --stdin else etckeeper commit "$(printf "$message")" @@ -25,4 +25,6 @@ if etckeeper unclean; then fi fi -rm -f $pl.pre-install $pl.fmt +if [ -e $pl.pre-install ]; then + rm -f $pl.pre-install $pl.fmt ||: # rm -f return 1 in file exist, but permission denied +fi diff --git a/pre-commit.d/20warn-problem-files b/pre-commit.d/20warn-problem-files index 6bd5c2b..2c1b11e 100755 --- a/pre-commit.d/20warn-problem-files +++ b/pre-commit.d/20warn-problem-files @@ -2,7 +2,7 @@ set -e exclude_internal () { - egrep -v '(^|/)(\.git|\.hg|\.bzr|_darcs)/' + grep -E -v '(^|/)(\.git|\.hg|\.bzr|_darcs)/' | grep -E -v '^services$|^hosts$|^localtime$|^resolv.conf$|^skel[/.]|^host.conf$|^nsswitch.conf$' } if [ "$VCS" = bzr ] || [ "$VCS" = darcs ]; then diff --git a/pre-install.d/10packagelist b/pre-install.d/10packagelist index fbd4ac3..f46350a 100755 --- a/pre-install.d/10packagelist +++ b/pre-install.d/10packagelist @@ -1,5 +1,6 @@ #!/bin/sh # This list will be later used when committing. -mkdir -p /var/cache/etckeeper/ -etckeeper list-installed > /var/cache/etckeeper/packagelist.pre-install -etckeeper list-installed fmt > /var/cache/etckeeper/packagelist.fmt +list=/var/cache/etckeeper/packagelist +mkdir -p "`dirname $list`" 2>/dev/null && touch $list.pre-install 2>/dev/null || exit 0 # for non-root usage +etckeeper list-installed > $list.pre-install +etckeeper list-installed fmt > $list.fmt