Resolves: #1381719 - make /var/lib/logrotate/logrotate.status the default state file

This commit is contained in:
Kamil Dudka 2016-11-24 15:51:30 +01:00
parent bd1563184a
commit 3799546edf
3 changed files with 107 additions and 62 deletions

View File

@ -0,0 +1,90 @@
From eba6c5376e707d2ca0b9c40ea2387c19e8db1c5c Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
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 <kdudka@redhat.com>
---
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

View File

@ -1,57 +0,0 @@
From 70a8b71fd9d4951e69d1c4116dc28d2e1873d0eb Mon Sep 17 00:00:00 2001
From: rpm-build <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 <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

View File

@ -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 <kdudka@redhat.com> - 3.10.0-4
- make /var/lib/logrotate/logrotate.status the default state file (#1381719)
* Fri Nov 11 2016 Kamil Dudka <kdudka@redhat.com> - 3.10.0-3
- fix migration of state file from its previous location (#1393247)