Fix handling of classic-style crontab following Wolfram's suggestion: /etc/crontab...
authorDiego Elio Pettenò <flameeyes@gentoo.org>
Fri, 14 May 2010 11:11:07 +0000 (11:11 +0000)
committerDiego Elio Pettenò <flameeyes@gentoo.org>
Fri, 14 May 2010 11:11:07 +0000 (11:11 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

sys-process/fcron/ChangeLog
sys-process/fcron/Manifest
sys-process/fcron/fcron-3.0.6-r1.ebuild [new file with mode: 0644]
sys-process/fcron/fcron-3.0.6.ebuild

index 6ac92d286b00e1f6483b0b5c35744a5527ce78e7..92fcb14197965b351752c0ecb3f89945e1ed5c0d 100644 (file)
@@ -1,6 +1,14 @@
 # ChangeLog for sys-process/fcron
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/ChangeLog,v 1.80 2010/05/04 11:44:37 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/ChangeLog,v 1.81 2010/05/14 11:11:07 flameeyes Exp $
+
+*fcron-3.0.6-r1 (14 May 2010)
+
+  14 May 2010; Diego E. Pettenò <flameeyes@gentoo.org> fcron-3.0.6.ebuild,
+  +fcron-3.0.6-r1.ebuild:
+  Fix handling of classic-style crontab following Wolfram's suggestion:
+  /etc/crontab is no longer installed by this, and check_system_crontabs is
+  set up to work out correctly the location of the fcrontab file.
 
   04 May 2010; Diego E. Pettenò <flameeyes@gentoo.org> metadata.xml:
   Update metadata and sign manifest with updated keys.
index 0d9570b15034333f67351ab3acbf7c869c329e9b..bb18ff11d48e6f3f1a8d40b178c724a8fccad064 100644 (file)
@@ -9,13 +9,14 @@ AUX fcrontab 332 RMD160 062faddf0551bebbf9834b796f9957cf49dbc967 SHA1 063f77dd90
 DIST fcron-3.0.5.src.tar.gz 551516 RMD160 7523bd7de39bb2aa96e61714ee98f389b1fb68b1 SHA1 73a1fe43305c6afaafd82086a17c03fa1ebcfac3 SHA256 f3360475a2d09598f24254e41d626b11be89aa8680933e6e35b7708edce90671
 DIST fcron-3.0.6.src.tar.gz 552805 RMD160 fadcb39ce106dcd61f31e1d4d6ab7c2d1149b36b SHA1 6b0a886931d9a89c65df33228384b07d672238bf SHA256 9c36b1bc6c931ec8b4ef55fef569ba17004b32f3ae0a72e3cc4ec4d15bee30a1
 EBUILD fcron-3.0.5-r2.ebuild 9682 RMD160 1523b79ba7c8076e818545e9f6b52d9e671cdc63 SHA1 4578b12aa9543afb12c0a39b68c10a00f54ff138 SHA256 c21718a4c23890336db02c7ce93385261f0eaf84f59691fc412f9eb4d914aa8c
-EBUILD fcron-3.0.6.ebuild 9247 RMD160 599bf0e58e260c41ef507b2b6839d7812684104f SHA1 5c1dedf32a4a98ed214d964460a2e816de54be35 SHA256 06d7d4aa8fd8c9450b0bd2404ec563f8d4eae34bd51433e5cd61a94e2bb4ace3
-MISC ChangeLog 19594 RMD160 62f2bd23931f596e972ab89b4f32ed4f0122d45b SHA1 fd7b858c71c750f721c1a842a8708de055f2c823 SHA256 d5a6f22ab5f41a7a4ccbf4ac17df5e322cddeb2c47495978c6b4c52e92aec795
+EBUILD fcron-3.0.6-r1.ebuild 9347 RMD160 11690faf98fc22f15fc1bd22a068314e25cfc449 SHA1 63e4bc61a0af571c4a343b82a0847168cbcf865e SHA256 3f443f7306267d197d826cfb03373b0345cb6785516a88ec15b3eed29444b3fa
+EBUILD fcron-3.0.6.ebuild 9344 RMD160 0ce1e8df4b23342cf3f4153904bd2c802fb31c0c SHA1 e1fef583a1307ce913497ea0482f8445a54a8a1c SHA256 8d763a6978fd5c0f215211e9e732596e72590b963378c8bf4b8697e957fb0ecd
+MISC ChangeLog 19942 RMD160 5879e21f1a401672d9c3f885e50ffd9b31bf370a SHA1 7bb0e071b21f8cd8c710bd75161c21b8a0050121 SHA256 fe6fb286fc2b87d3ce30e66ee47c7bbcbd3ba71eaa4162282909fdb3f71ed1db
 MISC metadata.xml 1145 RMD160 3c787c27fb9a19fe3fcdb2fa1b501833e6579618 SHA1 75284cc11130ee1667c9d084b82986cea8c097fe SHA256 d7fff4d99ba8746e3bafa21de44f3e46e8fecbdad28efaad62f1ff4560bca229
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.15 (GNU/Linux)
 
-iEYEARECAAYFAkvgCDUACgkQAiZjviIA2XgPPQCeN+pSRNO/vLtDM1tWbSIaGJjv
-ymkAoLhISpggbZSSFeoy/6sMbL1ZO5lI
-=X2yQ
+iEYEARECAAYFAkvtL9YACgkQAiZjviIA2XiyKgCg6I8LitcKvSbqWqHjwq38ojMR
+EewAoKk5ZVYYX313Y9algNHPHwHWkFMF
+=YYLa
 -----END PGP SIGNATURE-----
diff --git a/sys-process/fcron/fcron-3.0.6-r1.ebuild b/sys-process/fcron/fcron-3.0.6-r1.ebuild
new file mode 100644 (file)
index 0000000..3203d1d
--- /dev/null
@@ -0,0 +1,264 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/fcron-3.0.6-r1.ebuild,v 1.1 2010/05/14 11:11:07 flameeyes Exp $
+
+inherit cron pam eutils
+
+MY_P=${P/_/-}
+DESCRIPTION="A command scheduler with extended capabilities over cron and anacron"
+HOMEPAGE="http://fcron.free.fr/"
+SRC_URI="http://fcron.free.fr/archives/${MY_P}.src.tar.gz"
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~sparc ~x86 ~x86-fbsd"
+IUSE="debug pam selinux linguas_fr"
+
+DEPEND="selinux? ( sys-libs/libselinux )
+       pam? ( virtual/pam )"
+
+# see bug 282214 for the reason to depend on bash
+RDEPEND="${DEPEND}
+       app-shells/bash
+       app-editors/gentoo-editor
+       pam? ( >=sys-auth/pambase-20100310 )"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+       enewgroup fcron
+       enewuser fcron -1 -1 -1 fcron
+       rootuser=$(egetent passwd 0 | cut -d ':' -f 1)
+       rootgroup=$(egetent group 0 | cut -d ':' -f 1)
+}
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+
+       # respect LDFLAGS
+       sed -i "s:\(@LIBS@\):\$(LDFLAGS) \1:" Makefile.in || die "sed failed"
+
+       sed -i -e 's:/etc/fcrontab:/etc/fcron/fcrontab:' script/check_system_crontabs.sh || die
+}
+
+src_compile() {
+       local myconf
+
+       # Don't try to pass --with-debug as it'll play with cflags as
+       # well, and run foreground which is a _very_ nasty idea for
+       # Gentoo.
+       use debug && append-flags -DDEBUG
+
+       [[ -n "${rootuser}" ]] && myconf="${myconf} --with-rootname=${rootuser}"
+       [[ -n "${rootgroup}" ]] && myconf="${myconf} --with-rootgroup=${rootgroup}"
+
+       econf \
+               --with-cflags="${CFLAGS}" \
+               $(use_with pam) \
+               $(use_with selinux) \
+               --sysconfdir=/etc/fcron \
+               --with-username=fcron \
+               --with-groupname=fcron \
+               --with-piddir=/var/run \
+               --with-spooldir=/var/spool/fcron \
+               --with-fifodir=/var/run \
+               --with-fcrondyn=yes \
+               --disable-checks \
+               --with-editor=/usr/libexec/gentoo-editor \
+               --with-sendmail=/usr/sbin/sendmail \
+               --with-shell=/bin/sh \
+               --without-db2man --without-dsssl-dir \
+               ${myconf} \
+               || die "configure failed"
+
+       emake || die "make failed"
+
+       # bug #216460
+       sed -i \
+               -e 's:/usr/local/etc/fcron:/etc/fcron/fcron:g' \
+               -e 's:/usr/local/etc:/etc:g' \
+               -e 's:/usr/local/:/usr/:g' \
+               doc/*/*/*.{txt,1,5,8,html} \
+               || die "unable to fix documentation references"
+}
+
+src_install() {
+       # create directories that don't have special permissions first so
+       # that we can play with the permissions later
+       dodir /usr/bin /etc /var/spool
+
+       diropts -m6770 -o fcron -g fcron
+       keepdir /var/spool/fcron
+
+       # install fcron tools
+       insinto /usr/bin
+       dosbin fcron || die
+
+       # fcronsighup needs to be suid root, because it sends a HUP
+       # to the running fcron daemon
+       insopts -m6755 -o ${rootuser:-root} -g fcron
+       doins fcronsighup || die
+       insopts -m6755 -o fcron -g fcron
+       doins fcrondyn fcrontab || die
+
+       # /etc stuff
+       diropts -m0750 -o ${rootuser:-root} -g fcron
+       dodir /etc/fcron
+       insinto /etc/fcron
+       insopts -m0640 -o ${rootuser:-root} -g fcron
+       doins files/fcron.{allow,deny,conf} || die
+
+       diropts -m0755
+       insopts -m0644
+
+       # install /etc/crontab and /etc/fcrontab
+       insopts -m0640 -o ${rootuser:-root} -g ${rootgroup:-root}
+       doins "${FILESDIR}"/fcrontab || die
+
+       # install PAM files
+       pamd_mimic system-services fcron auth account session
+       cat - > "${T}"/fcrontab.pam <<EOF
+# Don't ask for the user's password; fcrontab will only allow to
+# change user if running as root.
+auth           sufficient              pam_permit.so
+
+# Still use the system-auth stack for account and session as the
+# sysadmin might have set up stuff properly, and also avoids
+# sidestepping limits (since fcrontab will run $EDITOR).
+account                include                 system-auth
+session                include                 system-auth
+EOF
+       newpamd "${T}"/fcrontab.pam fcrontab
+
+       # install init script
+       newinitd "${FILESDIR}"/fcron.init.2 fcron || die
+
+       # install the very handy check_system_crontabs script, POSIX sh variant
+       newsbin script/check_system_crontabs.sh check_system_crontabs || die
+
+       # doc stuff
+       dodoc MANIFEST VERSION "${FILESDIR}"/crontab \
+               doc/en/txt/{readme,thanks,faq,todo,relnotes,changes}.txt \
+               || die
+       newdoc files/fcron.conf fcron.conf.sample || die
+       dohtml doc/en/HTML/*.html || die
+       doman doc/en/man/*.{1,5,8} || die
+
+       # localized docs
+       for lang in fr; do
+               use linguas_${lang} || continue
+
+               doman -i18n=${lang} doc/${lang}/man/*.{1,5,8} || die
+               docinto html/${lang}
+               dohtml doc/${lang}/HTML/*.html || die
+       done
+}
+
+pkg_postinst() {
+       elog
+       elog "fcron has some important differences compared to vixie-cron:"
+       elog
+       elog "1. fcron stores the crontabs in ${ROOT}var/spool/fcron"
+       elog "   instead of ${ROOT}var/spool/cron/crontabs"
+       elog
+       elog "2. fcron uses a special binary file format for storing the"
+       elog "   crontabs in ${ROOT}var/spool/fcron/USERNAME,"
+       elog "   but the original plain text version is saved as"
+       elog "   ${ROOT}var/spool/fcron/USERNAME.orig for your"
+       elog "   reference (and for being edited with fcrontab)."
+       elog
+       elog "3. fcron does not feature a system crontab in exactly the"
+       elog "   same way as vixie-cron does. This version of fcron"
+       elog "   features a crontab for a pseudo-user 'systab' for use"
+       elog "   as the system crontab. Running a command like"
+       elog
+       elog "      fcrontab -u systab ${ROOT}etc/crontab"
+       elog
+       elog "   will write ${ROOT}etc/crontab to the fcron crontabs directory as"
+       elog
+       elog "      ${ROOT}var/spool/fcron/systab"
+       elog
+       elog "   Please note that changes to ${ROOT}etc/crontab will not become"
+       elog "   active automatically! fcron also does not use the directory"
+       elog "   ${ROOT}etc/cron.d by default like vixie-cron does."
+       elog "   Fortunately, it's possible to emulate vixie-cron's behavior"
+       elog "   with regards to ${ROOT}etc/crontab and ${ROOT}etc/cron.d by using a"
+       elog "   little helper script called 'check_system_crontabs'."
+       elog "   The file ${ROOT}etc/fcron/fcrontab (not ${ROOT}etc/crontab!) has been set up"
+       elog "   to run the script once a while to check whether"
+       elog "   ${ROOT}etc/fcron/fcrontab, ${ROOT}etc/crontab or files in ${ROOT}etc/cron.d/ have"
+       elog "   changed since the last generation of the systab and"
+       elog "   regenerate it from those three locations as necessary."
+       elog "   You should now run 'check_system_crontabs' once to properly"
+       elog "   generate an initial systab:"
+       elog
+       elog "      check_system_crontabs -v -i -f"
+       elog
+       elog "   The file ${ROOT}etc/fcron/fcrontab should only be used to run that"
+       elog "   script in order to ensure independence from the standard"
+       elog "   system crontab file ${ROOT}etc/crontab."
+       elog "   You may of course adjust the schedule for the script"
+       elog "   'check_system_crontabs' or any other setting in"
+       elog "   ${ROOT}etc/fcron/fcrontab as you desire."
+       elog
+       elog "If you do NOT want to use 'check_system_crontabs', you"
+       elog "might still want to activate the use of the well known"
+       elog "directories ${ROOT}etc/cron.{hourly|daily|weekly|monthly} by"
+       elog "just generating a systab once from ${ROOT}etc/crontab:"
+       elog
+       elog "   fcrontab -u systab ${ROOT}etc/crontab"
+       elog
+       elog "Happy fcron'ing!"
+       elog
+
+       ewarn
+       ewarn "Fixing permissions and ownership of ${ROOT}usr/bin/fcron{tab,dyn,sighup}"
+       chown fcron:fcron "${ROOT}"usr/bin/fcron{tab,dyn} >&/dev/null
+       chown ${rootuser:-root}:fcron "${ROOT}"usr/bin/fcronsighup >&/dev/null
+       chmod 6755 "${ROOT}"usr/bin/fcron{tab,dyn,sighup} >&/dev/null
+       ewarn "Fixing permissions and ownership of ${ROOT}etc/{fcron,fcrontab,crontab}"
+       chown -R ${rootuser:-root}:fcron "${ROOT}"etc/{fcron,crontab} >&/dev/null
+       chmod -R g+rX,o= "${ROOT}"etc/fcron "${ROOT}"etc/{fcron,crontab} >&/dev/null
+       ewarn
+
+       ewarn
+       ewarn "WARNING: fcron now uses a dedicated user and group"
+       ewarn "'fcron' for the suid/sgid programs/files instead of"
+       ewarn "the user and group 'cron' that were previously used."
+       ewarn
+       ewarn "fcron usage can now only be restricted by adding users"
+       ewarn "to the following files instead of to the group 'cron':"
+       ewarn
+       ewarn "   ${ROOT}etc/fcron/fcron.allow"
+       ewarn "   ${ROOT}etc/fcron/fcron.deny"
+       ewarn
+
+       if ls -1 "${ROOT}"var/spool/cron/fcrontabs/* >&/dev/null; then
+               ewarn
+               ewarn "WARNING: fcron now uses a dedicated fcron-specific"
+               ewarn "spooldir ${ROOT}var/spool/fcron instead of the commonly"
+               ewarn "used ${ROOT}var/spool/cron for several reasons."
+               ewarn
+               ewarn "Copying over existing crontabs from ${ROOT}var/spool/cron/fcrontabs"
+               cp "${ROOT}"var/spool/cron/fcrontabs/* "${ROOT}"var/spool/fcron/ >&/dev/null \
+                       || die "failed to migrate existing crontabs"
+               ewarn "You should now remove ${ROOT}var/spool/cron/fcrontabs!"
+               ewarn
+               ewarn "Fixing permissions and ownership of ${ROOT}var/spool/fcron"
+               chown root:root "${ROOT}"var/spool/fcron/* >&/dev/null
+               chmod 0600 "${ROOT}"var/spool/fcron/* >&/dev/null
+               chown fcron:fcron "${ROOT}"var/spool/fcron/*.orig >&/dev/null
+               chmod 0640 "${ROOT}"var/spool/fcron/*.orig >&/dev/null
+               ewarn
+               ewarn "*** YOU SHOULD IMMEDIATELY UPDATE THE"
+               ewarn "*** fcrontabs ENTRY IN ${ROOT}etc/fcron/fcron.conf"
+               ewarn "*** AND RESTART YOUR FCRON DAEMON!"
+       fi
+
+       elog ""
+       elog "Since version 3.0.5 the fcron init script will no longer wait for LDAP, MySQL"
+       elog "or PostgreSQL before starting. If you need any of these for authentication or"
+       elog "for jobs that are executed by fcron, please create a /etc/conf.d/fcron file to"
+       elog "set the rc_need variable to the list of services you should be waiting for."
+       elog ""
+}
index cc6b054840f7db370e7526f0706f289a9ac192ef..d474c5c0c456e97b2bb99937587bece897fca531 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/fcron-3.0.6.ebuild,v 1.1 2010/05/04 11:40:38 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-process/fcron/fcron-3.0.6.ebuild,v 1.2 2010/05/14 11:11:07 flameeyes Exp $
 
 inherit cron pam eutils
 
@@ -37,6 +37,8 @@ src_unpack() {
 
        # respect LDFLAGS
        sed -i "s:\(@LIBS@\):\$(LDFLAGS) \1:" Makefile.in || die "sed failed"
+
+       sed -i -e 's:/etc/fcrontab:/etc/fcron/fcrontab:' script/check_system_crontabs.sh || die
 }
 
 src_compile() {
@@ -111,7 +113,7 @@ src_install() {
 
        # install /etc/crontab and /etc/fcrontab
        insopts -m0640 -o ${rootuser:-root} -g ${rootgroup:-root}
-       doins "${FILESDIR}"/crontab "${FILESDIR}"/fcrontab || die
+       doins "${FILESDIR}"/fcrontab || die
 
        # install PAM files
        pamd_mimic system-services fcron auth account session
@@ -132,7 +134,7 @@ EOF
        newinitd "${FILESDIR}"/fcron.init.2 fcron || die
 
        # install the very handy check_system_crontabs script, POSIX sh variant
-       dosbin script/check_system_crontabs.sh || die
+       newsbin script/check_system_crontabs.sh check_system_crontabs || die
 
        # doc stuff
        dodoc MANIFEST VERSION "${FILESDIR}"/crontab \
@@ -182,9 +184,9 @@ pkg_postinst() {
        elog "   Fortunately, it's possible to emulate vixie-cron's behavior"
        elog "   with regards to ${ROOT}etc/crontab and ${ROOT}etc/cron.d by using a"
        elog "   little helper script called 'check_system_crontabs'."
-       elog "   The file ${ROOT}etc/fcrontab (not ${ROOT}etc/crontab!) has been set up"
+       elog "   The file ${ROOT}etc/fcron/fcrontab (not ${ROOT}etc/crontab!) has been set up"
        elog "   to run the script once a while to check whether"
-       elog "   ${ROOT}etc/fcrontab, ${ROOT}etc/crontab or files in ${ROOT}etc/cron.d/ have"
+       elog "   ${ROOT}etc/fcron/fcrontab, ${ROOT}etc/crontab or files in ${ROOT}etc/cron.d/ have"
        elog "   changed since the last generation of the systab and"
        elog "   regenerate it from those three locations as necessary."
        elog "   You should now run 'check_system_crontabs' once to properly"
@@ -192,12 +194,12 @@ pkg_postinst() {
        elog
        elog "      check_system_crontabs -v -i -f"
        elog
-       elog "   The file ${ROOT}etc/fcrontab should only be used to run that"
+       elog "   The file ${ROOT}etc/fcron/fcrontab should only be used to run that"
        elog "   script in order to ensure independence from the standard"
        elog "   system crontab file ${ROOT}etc/crontab."
        elog "   You may of course adjust the schedule for the script"
        elog "   'check_system_crontabs' or any other setting in"
-       elog "   ${ROOT}etc/fcrontab as you desire."
+       elog "   ${ROOT}etc/fcron/fcrontab as you desire."
        elog
        elog "If you do NOT want to use 'check_system_crontabs', you"
        elog "might still want to activate the use of the well known"
@@ -215,8 +217,8 @@ pkg_postinst() {
        chown ${rootuser:-root}:fcron "${ROOT}"usr/bin/fcronsighup >&/dev/null
        chmod 6755 "${ROOT}"usr/bin/fcron{tab,dyn,sighup} >&/dev/null
        ewarn "Fixing permissions and ownership of ${ROOT}etc/{fcron,fcrontab,crontab}"
-       chown -R ${rootuser:-root}:fcron "${ROOT}"etc/{fcron,fcrontab,crontab} >&/dev/null
-       chmod -R g+rX,o= "${ROOT}"etc/fcron "${ROOT}"etc/{fcron,fcrontab,crontab} >&/dev/null
+       chown -R ${rootuser:-root}:fcron "${ROOT}"etc/{fcron,crontab} >&/dev/null
+       chmod -R g+rX,o= "${ROOT}"etc/fcron "${ROOT}"etc/{fcron,crontab} >&/dev/null
        ewarn
 
        ewarn