summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzamat H. Hackimov <azamat.hackimov@gmail.com>2016-12-12 11:50:37 +0500
committerLars Wendler <polynomial-c@gentoo.org>2016-12-12 09:46:25 +0100
commit79fc4caa544234246e9040e0610137070618e4c0 (patch)
tree69a299605487e7b01c407a3949ae17ed70bf416d
parentsys-process/anacron: Fixed incomplete EAPI-6 conversion (bug #602416). (diff)
downloadgentoo-79fc4caa544234246e9040e0610137070618e4c0.tar.gz
gentoo-79fc4caa544234246e9040e0610137070618e4c0.tar.bz2
gentoo-79fc4caa544234246e9040e0610137070618e4c0.zip
sys-apps/mlocate: Revbump - cleanup temporary files at cron.daily job
During updating database mlocate creates tmp-file. If daily cron job has failed (for example, after reboot), tmp-files are left in disk. Added rm command before updatedb to delete these orphained files. Package-Manager: portage-2.3.0 Closes: https://github.com/gentoo/gentoo/pull/3096
-rw-r--r--sys-apps/mlocate/files/mlocate.cron-r351
-rw-r--r--sys-apps/mlocate/mlocate-0.26-r2.ebuild63
2 files changed, 114 insertions, 0 deletions
diff --git a/sys-apps/mlocate/files/mlocate.cron-r3 b/sys-apps/mlocate/files/mlocate.cron-r3
new file mode 100644
index 000000000000..7f3252e9cc76
--- /dev/null
+++ b/sys-apps/mlocate/files/mlocate.cron-r3
@@ -0,0 +1,51 @@
+#! /bin/sh
+set -e
+
+# check if we run on battery and if so then don't run
+if which on_ac_power >/dev/null 2>&1; then
+ ON_BATTERY=0
+ on_ac_power >/dev/null 2>&1 || ON_BATTERY=$?
+ if [ "${ON_BATTERY}" -eq 1 ]; then
+ exit 0
+ fi
+fi
+
+# check if we are already running (lockfile)
+LOCKFILE="/var/lock/mlocate.daily.lock"
+if [ -e "${LOCKFILE}" ]; then
+ echo >&2 "Warning: \"${LOCKFILE}\" already present, not running updatedb."
+ exit 1
+fi
+touch "${LOCKFILE}"
+# trap the lockfile only if we really run the updatedb
+trap "rm -f ${LOCKFILE}" EXIT
+
+# source the user specified variables
+if [ -f /etc/mlocate-cron.conf ]; then
+ . /etc/mlocate-cron.conf
+fi
+
+# check the config file
+NODEVS=""
+if [ ! -f /etc/updatedb.conf ]; then
+ NODEVS=$(awk '$1 == "nodev" && $2 != "rootfs" { print $2 }' /proc/filesystems)
+fi
+
+# alter the priority of the updatedb process
+if [ -x /usr/bin/renice ]; then
+ /usr/bin/renice +${NICE:-19} -p $$ > /dev/null 2>&1
+fi
+if [ -x /usr/bin/ionice ] && /usr/bin/ionice -c3 true 2>/dev/null; then
+ /usr/bin/ionice -c${IONICE_CLASS:-2} -n${IONICE_PRIORITY:-7} -p $$ > /dev/null 2>&1
+fi
+
+# Cleanup old temp files from previous unsuccessful runs
+rm -f /var/lib/mlocate/mlocate.db.*
+
+# run the updatedb if possible
+if [ -x /usr/bin/updatedb ]; then
+ /usr/bin/updatedb -f "${NODEVS}"
+else
+ echo >&2 "Warning: \"/usr/bin/updatedb\" is not executable, unable to run updatedb."
+ exit 0
+fi
diff --git a/sys-apps/mlocate/mlocate-0.26-r2.ebuild b/sys-apps/mlocate/mlocate-0.26-r2.ebuild
new file mode 100644
index 000000000000..efb764baea1d
--- /dev/null
+++ b/sys-apps/mlocate/mlocate-0.26-r2.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils user toolchain-funcs
+
+DESCRIPTION="Merging locate is an utility to index and quickly search for files"
+HOMEPAGE="https://fedorahosted.org/mlocate/"
+SRC_URI="https://fedorahosted.org/releases/m/l/mlocate/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="nls selinux"
+
+RDEPEND="!sys-apps/slocate
+ !sys-apps/rlocate
+ selinux? ( sec-policy/selinux-slocate )"
+DEPEND="app-arch/xz-utils
+ nls? ( sys-devel/gettext )
+"
+
+pkg_setup() {
+ enewgroup locate
+}
+
+src_configure() {
+ econf $(use_enable nls)
+}
+
+src_compile() {
+ emake groupname=locate AR="$(tc-getAR)"
+}
+
+src_install() {
+ emake groupname=locate DESTDIR="${D}" install
+ dodoc AUTHORS ChangeLog README NEWS
+
+ insinto /etc
+ doins "${FILESDIR}"/updatedb.conf
+ doins "${FILESDIR}"/mlocate-cron.conf
+ fperms 0644 /etc/{updatedb,mlocate-cron}.conf
+
+ insinto /etc/cron.daily
+ newins "${FILESDIR}"/mlocate.cron-r3 mlocate
+ fperms 0755 /etc/cron.daily/mlocate
+
+ fowners 0:locate /usr/bin/locate
+ fperms go-r,g+s /usr/bin/locate
+
+ keepdir /var/lib/mlocate
+ chown -R 0:locate "${ED}"/var/lib/mlocate
+ fperms 0750 /var/lib/mlocate
+}
+
+pkg_postinst() {
+ elog "The database for the locate command is generated daily by a cron job,"
+ elog "if you install for the first time you can run the updatedb command manually now."
+ elog
+ elog "Note that the /etc/updatedb.conf file is generic,"
+ elog "please customize it to your system requirements."
+}