From 3799546edf2d8dc3bc1204ddb0a7e1d73b0f721b Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Nov 24 2016 15:19:47 +0000 Subject: Resolves: #1381719 - make /var/lib/logrotate/logrotate.status the default state file --- diff --git a/logrotate-3.10.0-state-file-path.patch b/logrotate-3.10.0-state-file-path.patch new file mode 100644 index 0000000..e67c3cf --- /dev/null +++ b/logrotate-3.10.0-state-file-path.patch @@ -0,0 +1,90 @@ +From eba6c5376e707d2ca0b9c40ea2387c19e8db1c5c Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Wed, 23 Nov 2016 17:55:20 +0100 +Subject: [PATCH] configure --with-state-file: specify default state file + +Closes #85 + +Upstream-commit: 72827266598b7c1c58e785069e955dea3523cc59 +Signed-off-by: Kamil Dudka +--- + config.h | 6 +++--- + configure.ac | 17 +++++++++++++++++ + logrotate.8 | 2 +- + 3 files changed, 21 insertions(+), 4 deletions(-) + +diff --git a/config.h b/config.h +index d715c5a..6740878 100644 +--- a/config.h ++++ b/config.h +@@ -8,23 +8,23 @@ + #define DEFAULT_MAIL_COMMAND "/usr/bin/mailx" + #define COMPRESS_COMMAND "/usr/contrib/bin/gzip" + #define UNCOMPRESS_COMMAND "/usr/contrib/bin/gunzip" ++#ifndef STATEFILE + #define STATEFILE "/var/run/logrotate.status" ++#endif /* STATEFILE */ + #endif + + #ifdef SunOS + #define DEFAULT_MAIL_COMMAND "/usr/bin/mailx" +-#define STATEFILE "/var/log/logrotate.status" + #endif + + #ifdef __NetBSD__ + #define DEFAULT_MAIL_COMMAND "/usr/bin/mail -s" + #define COMPRESS_COMMAND "/usr/bin/gzip" + #define UNCOMPRESS_COMMAND "/usr/bin/gunzip" +-#define STATEFILE "/var/log/logrotate.status" + #endif + + /* +- * Default settings for Linux - leave these last. ++ * Default settings (mainly for Linux) - leave these last. + */ + #ifndef DEFAULT_MAIL_COMMAND + #define DEFAULT_MAIL_COMMAND "/bin/mail" +diff --git a/configure.ac b/configure.ac +index a6580f1..63c016c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -40,6 +40,23 @@ AS_CASE(["$with_acl"], + AS_IF([test "$ac_cv_lib_acl_acl_get_file" = yes], + echo "1" > ./test/test.ACL;, echo "0" > ./test/test.ACL;) + ++AC_ARG_WITH([state-file-path], ++ AC_HELP_STRING([--with-state-file-path=PATH], ++ [path to state file (/var/lib/logrotate.status by default)]), ++ [ ++ case "$withval" in ++ yes|no) ++ AC_MSG_ERROR([--with-state-file-path=PATH requires a path to be specified]) ++ ;; ++ *) ++ STATE_FILE_PATH="$withval" ++ ;; ++ esac ++ ], ++ [ ++ STATE_FILE_PATH="/var/lib/logrotate.status" ++ ]) ++AC_DEFINE_UNQUOTED([STATEFILE], "$STATE_FILE_PATH") + + AC_CHECK_FUNCS([strptime qsort fork vfork madvise vsyslog]) + +diff --git a/logrotate.8 b/logrotate.8 +index 3f30472..77fdd4b 100644 +--- a/logrotate.8 ++++ b/logrotate.8 +@@ -558,7 +558,7 @@ Log files are rotated if the current year is not the same as the last rotation. + .SH FILES + .PD 0 + .TP 27 +-\fI/var/lib/logrotate.status\fR ++\fI/var/lib/logrotate/logrotate.status\fR + Default state file. + .TP 27 + \fI/etc/logrotate.conf\fR +-- +2.7.4 + diff --git a/logrotate-3.9.1-statusfile.patch b/logrotate-3.9.1-statusfile.patch deleted file mode 100644 index af849fc..0000000 --- a/logrotate-3.9.1-statusfile.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 70a8b71fd9d4951e69d1c4116dc28d2e1873d0eb Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Wed, 3 Aug 2016 14:30:19 +0200 -Subject: [PATCH] logrotate.cron: use /var/lib/logrotate/logrotate.status as - state file - -Signed-off-by: rpm-build ---- - examples/logrotate.cron | 2 +- - logrotate.8 | 10 ++++++++-- - 2 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/examples/logrotate.cron b/examples/logrotate.cron -index c6d50d4..967932e 100644 ---- a/examples/logrotate.cron -+++ b/examples/logrotate.cron -@@ -1,6 +1,6 @@ - #!/bin/sh - --/usr/sbin/logrotate /etc/logrotate.conf -+/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf - EXITVALUE=$? - if [ $EXITVALUE != 0 ]; then - /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" -diff --git a/logrotate.8 b/logrotate.8 -index 3f30472..9c62dc8 100644 ---- a/logrotate.8 -+++ b/logrotate.8 -@@ -66,6 +66,9 @@ and mail it to the recipient. The default mail command is \fB/bin/mail - Tells \fBlogrotate\fR to use an alternate state file. This is useful - if logrotate is being run as a different user for various sets of - log files. The default state file is \fI/var/lib/logrotate.status\fR. -+Note that logrotate cron job on Fedora overrides the default with -+\fI/var/lib/logrotate/logrotate.status\fR in order to support read-only -+mounted root file systems. - - .TP - \fB\-\-usage\fR -@@ -557,10 +560,13 @@ Log files are rotated if the current year is not the same as the last rotation. - - .SH FILES - .PD 0 --.TP 27 -+.TP 42 - \fI/var/lib/logrotate.status\fR - Default state file. --.TP 27 -+.TP 42 -+\fI/var/lib/logrotate/logrotate.status\fR -+Default state file used by logrotate cron job on Fedora. -+.TP 42 - \fI/etc/logrotate.conf\fR - Configuration options. - --- -2.5.5 - diff --git a/logrotate.spec b/logrotate.spec index d53a272..4cb7af7 100644 --- a/logrotate.spec +++ b/logrotate.spec @@ -1,16 +1,17 @@ Summary: Rotates, compresses, removes and mails system log files Name: logrotate Version: 3.10.0 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL+ Url: https://github.com/logrotate/logrotate Source: https://github.com/logrotate/logrotate/releases/download/%{version}/logrotate-%{version}.tar.xz Source1: rwtab -# Change the location of status file -Patch0: logrotate-3.9.1-statusfile.patch +# implement the --with-state-file-path option of configure (upstream patch) +Patch0: logrotate-3.10.0-state-file-path.patch BuildRequires: acl +BuildRequires: automake BuildRequires: git BuildRequires: libacl-devel BuildRequires: libselinux-devel @@ -31,8 +32,17 @@ log files on your system. %prep %autosetup -S git +printf "/autom4te.cache\n" >> .gitignore +git add .gitignore +git commit -m "update .gitignore" + +autoreconf -fiv +git add configure +git checkout INSTALL +git commit -m "regenerate ./configure" + %build -%configure +%configure --with-state-file-path=%{_localstatedir}/lib/logrotate/logrotate.status make %{?_smp_mflags} %check @@ -47,7 +57,6 @@ mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/logrotate install -p -m 644 examples/logrotate-default $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.conf install -p -m 755 examples/logrotate.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.daily/logrotate -touch $RPM_BUILD_ROOT/%{_localstatedir}/lib/logrotate/logrotate.status # Make sure logrotate is able to run on read-only root mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rwtab.d @@ -78,6 +87,9 @@ fi %config(noreplace) %{_sysconfdir}/rwtab.d/logrotate %changelog +* Thu Nov 24 2016 Kamil Dudka - 3.10.0-4 +- make /var/lib/logrotate/logrotate.status the default state file (#1381719) + * Fri Nov 11 2016 Kamil Dudka - 3.10.0-3 - fix migration of state file from its previous location (#1393247)