git: 1a76a776c71c - main - sysutils/anacron: Fix start after resume

Fernando Apesteguía fernape at FreeBSD.org
Wed Apr 7 11:23:29 UTC 2021


The branch main has been updated by fernape:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1a76a776c71cf0cf74e8e66586cc64cc6896b558

commit 1a76a776c71cf0cf74e8e66586cc64cc6896b558
Author:     Fernando Apesteguía <fernape at FreeBSD.org>
AuthorDate: 2021-04-07 11:16:00 +0000
Commit:     Fernando Apesteguía <fernape at FreeBSD.org>
CommitDate: 2021-04-07 11:20:03 +0000

    sysutils/anacron: Fix start after resume
    
    The anacron utility should be run by it's rc(8) script after resume, since the
    time to run jobs from the anacrontab(5) might have passed while the system was
    sleeping.
    
    PR:     253567
    Reported by:    walter.von.entferndt at posteo.net
    Approved by:    dz at 426.ch (maintainer)
---
 sysutils/anacron/Makefile              | 20 +++++++++++---------
 sysutils/anacron/files/anacron.in      | 31 +++++++++++++++++++++++--------
 sysutils/anacron/files/patch-log.c     | 10 ++++++++++
 sysutils/anacron/files/patch-main.c    | 10 ++++++++++
 sysutils/anacron/files/patch-matchrx.c |  6 +++++-
 sysutils/anacron/files/patch-runjob.c  | 13 +++++++++++--
 sysutils/anacron/files/pkg-message.in  | 15 ++++++++++-----
 sysutils/anacron/pkg-plist             | 12 +++++++-----
 8 files changed, 87 insertions(+), 30 deletions(-)

diff --git a/sysutils/anacron/Makefile b/sysutils/anacron/Makefile
index 944f2f537689..795bcf61a49d 100644
--- a/sysutils/anacron/Makefile
+++ b/sysutils/anacron/Makefile
@@ -2,7 +2,7 @@
 
 PORTNAME=	anacron
 PORTVERSION=	2.3
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	sysutils
 MASTER_SITES=	SF
 
@@ -13,20 +13,22 @@ LICENSE=	GPLv2+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
 USES=		gmake
-USE_RC_SUBR=	anacron
+USE_RC_SUBR=	${PORTNAME}
 SUB_FILES=	pkg-message
+PLIST_SUB=	PORTNAME=${PORTNAME}
+SUB_LIST+=	PORTNAME=${PORTNAME} COMMENT="${COMMENT}"
 
 post-patch:
-.for f in Makefile anacron.8 anacrontab.5
-	@${REINPLACE_CMD} -e 's|\(/etc/anacrontab\)|${PREFIX}\1|' ${WRKSRC}/${f}
+.for f in Makefile ${PORTNAME}.8 ${PORTNAME}tab.5
+	@${REINPLACE_CMD} -e 's|\(/etc/${PORTNAME}tab\)|${PREFIX}\1|' ${WRKSRC}/${f}
 .endfor
 	@${REINPLACE_CMD} -e 's|^CFLAGS = .*||' ${WRKSRC}/Makefile
 
 do-install:
-	${INSTALL_PROGRAM} ${WRKSRC}/anacron ${STAGEDIR}${PREFIX}/sbin
-	${INSTALL_MAN} ${WRKSRC}/anacron.8 ${STAGEDIR}${MAN8PREFIX}/man/man8
-	${INSTALL_MAN} ${WRKSRC}/anacrontab.5 ${STAGEDIR}${MAN5PREFIX}/man/man5
-	${INSTALL_DATA} ${FILESDIR}/anacrontab.sample ${STAGEDIR}${PREFIX}/etc
-	@${MKDIR} ${STAGEDIR}/var/spool/anacron
+	${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/sbin
+	${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.8 ${STAGEDIR}${MAN8PREFIX}/man/man8
+	${INSTALL_MAN} ${WRKSRC}/${PORTNAME}tab.5 ${STAGEDIR}${MAN5PREFIX}/man/man5
+	${INSTALL_DATA} ${FILESDIR}/${PORTNAME}tab.sample ${STAGEDIR}${PREFIX}/etc
+	@${MKDIR} ${STAGEDIR}/var/spool/${PORTNAME}
 
 .include <bsd.port.mk>
diff --git a/sysutils/anacron/files/anacron.in b/sysutils/anacron/files/anacron.in
index b3698b7e5cac..9e32e4420335 100644
--- a/sysutils/anacron/files/anacron.in
+++ b/sysutils/anacron/files/anacron.in
@@ -1,21 +1,36 @@
 #!/bin/sh
 
-# PROVIDE: anacron
+# PROVIDE: %%PORTNAME%%
 # REQUIRE: LOGIN
+# KEYWORD: resume
 
 #
-# Add the following line to /etc/rc.conf to enable anacron:
+# Execute one of the following commands as root to enable %%PORTNAME%%:
 #
-# anacron_enable="YES"
+#    service %%PORTNAME%% enable
+#    sysrc %%PORTNAME%%_enable=YES
 #
 
 . /etc/rc.subr
 
-name=anacron
-rcvar=anacron_enable
+name=%%PORTNAME%%
+command="%%PREFIX%%/sbin/%%PORTNAME%%"
+desc="%%COMMENT%%"
+extra_commands=resume
+rcvar=%%PORTNAME%%_enable
+required_vars=syslogd_enable
 
 load_rc_config $name
-: ${anacron_enable:=NO}
-command="%%PREFIX%%/sbin/anacron"
+: ${%%PORTNAME%%_enable:=NO}
 
-run_rc_command "$1"
+if [ $# -gt 0 -a $1 = "resume" ]; then
+   arg=start
+   if checkyesno $rcvar; then
+       info "starting ${name} after resume"
+   fi
+else
+   arg=$1
+fi
+debug "$name: \$1 = $1, arg = $arg"
+
+run_rc_command "$arg"
diff --git a/sysutils/anacron/files/patch-log.c b/sysutils/anacron/files/patch-log.c
new file mode 100644
index 000000000000..320a83d8c606
--- /dev/null
+++ b/sysutils/anacron/files/patch-log.c
@@ -0,0 +1,10 @@
+--- log.c.orig	2000-06-22 22:55:13 UTC
++++ log.c
+@@ -37,6 +37,7 @@
+ #include <unistd.h>
+ #include <syslog.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <stdarg.h>
+ #include <errno.h>
+ #include <signal.h>
diff --git a/sysutils/anacron/files/patch-main.c b/sysutils/anacron/files/patch-main.c
new file mode 100644
index 000000000000..12dafcab98f3
--- /dev/null
+++ b/sysutils/anacron/files/patch-main.c
@@ -0,0 +1,10 @@
+--- main.c.orig	2000-06-22 22:58:07 UTC
++++ main.c
+@@ -24,6 +24,7 @@
+ 
+ #include <time.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <unistd.h>
+ #include <signal.h>
+ #include <fcntl.h>
diff --git a/sysutils/anacron/files/patch-matchrx.c b/sysutils/anacron/files/patch-matchrx.c
index a8a5d456fbdd..ffba9b6baa56 100644
--- a/sysutils/anacron/files/patch-matchrx.c
+++ b/sysutils/anacron/files/patch-matchrx.c
@@ -1,6 +1,6 @@
 --- matchrx.c.orig	2000-06-20 23:12:18 UTC
 +++ matchrx.c
-@@ -23,6 +23,7 @@
+@@ -23,9 +23,11 @@
  
  
  #include <stdio.h>
@@ -8,3 +8,7 @@
  #include <regex.h>
  #include <stdarg.h>
  #include <stdlib.h>
++#include <string.h>
+ #include "matchrx.h"
+ 
+ int
diff --git a/sysutils/anacron/files/patch-runjob.c b/sysutils/anacron/files/patch-runjob.c
index a984d32ce1bb..781ea1693057 100644
--- a/sysutils/anacron/files/patch-runjob.c
+++ b/sysutils/anacron/files/patch-runjob.c
@@ -9,8 +9,6 @@
 -    int fd, i;
 +    int fd;
 +    char name[] = "/tmp/anacron.XXXXXX";
-+
-+    fd = mkstemp(name);
  
 -    i = 0;
 -    name = NULL;
@@ -25,6 +23,8 @@
 -	/* I'm not sure we actually need to be so persistent here */
 -    } while (fd == -1 && errno == EEXIST && i < max_retries);
 -    
++    fd = mkstemp(name);
++
      if (fd == -1) die_e("Can't open temporary file");
      if (unlink(name)) die_e("Can't unlink temporary file");
 -    free(name);
@@ -32,3 +32,12 @@
      fcntl(fd, F_SETFD, 1);    /* set close-on-exec flag */
      return fd;
  }
+@@ -84,7 +72,7 @@ username()
+ }
+ 
+ static void
+-xputenv(const char *s)
++xputenv(char *s)
+ {
+     if (putenv(s)) die_e("Can't set the environment");
+ }
diff --git a/sysutils/anacron/files/pkg-message.in b/sysutils/anacron/files/pkg-message.in
index 77c5d61d0db1..64d2be3ba0d6 100644
--- a/sysutils/anacron/files/pkg-message.in
+++ b/sysutils/anacron/files/pkg-message.in
@@ -2,12 +2,17 @@
 { type: install
   message: <<EOM
 Configuration hints:
-- Edit %%PREFIX%%/etc/anacrontab
+- Edit %%PREFIX%%/etc/%%PORTNAME%%tab
 - Deactivate the 'periodic' commands in /etc/crontab
-- Add a call to anacron to /etc/crontab, like
-  0  0  *  *  *    root    %%PREFIX%%/sbin/anacron
-- Add anacron_enable="YES" to /etc/rc.conf
-- Read anacron(8) and anacrontab(5)
+- Add a call to %%PORTNAME%% to /etc/crontab, like
+  0  0  *  *  *    root    %%PREFIX%%/sbin/%%PORTNAME%%
+- Add %%PORTNAME%%_enable="YES" to /etc/rc.conf
+  or execute one of the following commands as root:
+    service %%PORTNAME%% enable
+    sysrc %%PORTNAME%%_enable=YES
+- Read %%PORTNAME%%(8) and %%PORTNAME%%tab(5)
+- To avoid overlapping periodic(8) jobs, you may want to serialize jobs:
+    sysrc %%PORTNAME%%_flags+=" -s"
 EOM
 }
 ]
diff --git a/sysutils/anacron/pkg-plist b/sysutils/anacron/pkg-plist
index 7b449b2790e2..4206a632fe24 100644
--- a/sysutils/anacron/pkg-plist
+++ b/sysutils/anacron/pkg-plist
@@ -1,5 +1,7 @@
-sbin/anacron
- at sample etc/anacrontab.sample
- at unexec rmdir /var/spool/anacron 2>/dev/null || echo "If you are permanently removing this port, you should do a 'rm -rf /var/spool/anacron'."
-man/man8/anacron.8.gz
-man/man5/anacrontab.5.gz
+sbin/%%PORTNAME%%
+ at sample etc/%%PORTNAME%%tab.sample
+ at postexec mkdir -p /var/spool/%%PORTNAME%% 2>/dev/null
+ at postunexec rmdir /var/spool/%%PORTNAME%% 2>/dev/null || echo "If you are permanently removing this port, you should do a 'rm -rf /var/spool/%%PORTNAME%%'."
+man/man8/%%PORTNAME%%.8.gz
+man/man5/%%PORTNAME%%tab.5.gz
+ at dir /var/spool/%%PORTNAME%%


More information about the dev-commits-ports-all mailing list