diff options
author | Daniel Gryniewicz <dang@gentoo.org> | 2005-05-24 21:08:00 +0000 |
---|---|---|
committer | Daniel Gryniewicz <dang@gentoo.org> | 2005-05-24 21:08:00 +0000 |
commit | 4647466e95c86e18326530b7d1004edd0b683c9f (patch) | |
tree | cba8b26128fb5d0fb568b9a289bf71425f2b8829 /app-admin/logrotate | |
parent | add back in a better named patch (diff) | |
download | historical-4647466e95c86e18326530b7d1004edd0b683c9f.tar.gz historical-4647466e95c86e18326530b7d1004edd0b683c9f.tar.bz2 historical-4647466e95c86e18326530b7d1004edd0b683c9f.zip |
Added 3.7.1, took maintainership
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'app-admin/logrotate')
-rw-r--r-- | app-admin/logrotate/ChangeLog | 30 | ||||
-rw-r--r-- | app-admin/logrotate/Manifest | 21 | ||||
-rw-r--r-- | app-admin/logrotate/files/digest-logrotate-3.7.1 | 1 | ||||
-rw-r--r-- | app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch | 433 | ||||
-rw-r--r-- | app-admin/logrotate/files/logrotate-3.7.1-datehack.patch | 12 | ||||
-rw-r--r-- | app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch | 14 | ||||
-rw-r--r-- | app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch | 386 | ||||
-rw-r--r-- | app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch | 12 | ||||
-rw-r--r-- | app-admin/logrotate/logrotate-3.7.1.ebuild | 70 | ||||
-rw-r--r-- | app-admin/logrotate/metadata.xml | 1 |
10 files changed, 972 insertions, 8 deletions
diff --git a/app-admin/logrotate/ChangeLog b/app-admin/logrotate/ChangeLog index c77ca6a15460..33c7ca7b676c 100644 --- a/app-admin/logrotate/ChangeLog +++ b/app-admin/logrotate/ChangeLog @@ -1,6 +1,34 @@ # ChangeLog for app-admin/logrotate # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/ChangeLog,v 1.33 2005/01/02 03:56:46 pebenito Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/ChangeLog,v 1.34 2005/05/24 21:08:00 dang Exp $ + +*logrotate-3.7.1 (24 May 2005) + + 24 May 2005; <dang@gentoo.org> + +files/logrotate-3.7.1-dateext-maxage.patch, + +files/logrotate-3.7.1-datehack.patch, + +files/logrotate-3.7.1-ignore-hidden.patch, + +files/logrotate-3.7.1-manpage-fixes.patch, + +files/logrotate-3.7.1-taboo-to-debug.patch, metadata.xml, + +logrotate-3.7.1.ebuild: + + Taking over as maintainer. + + New version of logrotate from upstream. + Fixes from upstream: + - Rotated files now have correct ownership and permissions + Fixes from Debian 3.7-3: + - Manpage fixes + - Improved datehack fix for bug in old versions of logrotate + - Make printing of messages related to skipped logroate.d files DEBUG + messages rather than ERROR messages + Fixes from Suse: + - dateext - Enable usage of the rotation date as the file extension, + rather than sequential numbering + - maxage - Enable deletion of rotated files older than a certain age + Local fixes: + - Ignore dotfiles in logrotate.d/ directory, to keep emerges from + breaking logrotate via ._cfg* files 01 Jan 2005; Chris PeBenito <pebenito@gentoo.org> logrotate-3.7.ebuild: SELinux code is now integrated in 3.7. Adjust ebuild accordingly. diff --git a/app-admin/logrotate/Manifest b/app-admin/logrotate/Manifest index de58f9e57d02..96d4ca026f95 100644 --- a/app-admin/logrotate/Manifest +++ b/app-admin/logrotate/Manifest @@ -1,19 +1,26 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 +MD5 ce6cc3c8473d2b7a00b4078d1cf02e91 logrotate-3.7.1.ebuild 1726 MD5 098cc168fade54d752abb4316bf4860f logrotate-3.7.ebuild 1679 -MD5 dffd46174e78b327c834fc3e4b1cf848 metadata.xml 160 -MD5 c91000d75cded213bc6dc76306f5e24c ChangeLog 4544 MD5 67f6426c285df9fc96384c47d68ae3a6 logrotate-3.6.5-r1.ebuild 1730 +MD5 e0045388b2875ed4503ed3206191a40c ChangeLog 5572 +MD5 c7533062993ae53a9a32d0a58416cd84 metadata.xml 216 +MD5 81c68aeb06c91c02ebbea3c42123fb38 files/logrotate-3.7.1-manpage-fixes.patch 15470 +MD5 d268cc741e71398dc2a14bcdc0bcfeb2 files/logrotate-3.7.1-ignore-hidden.patch 517 +MD5 b6b2dec981e0b573366f5d0e74783b5b files/logrotate-3.7.1-taboo-to-debug.patch 517 +MD5 8d4271dd12289c4da96b3e4f1fbd0868 files/logrotate-3.7.1-datehack.patch 516 MD5 ef1405c48d23249f97330709d1d2a093 files/logrotate-3.6.5-selinux.diff.bz2 1440 +MD5 4942e4ea3f05b91d9d24504c4ddbc776 files/digest-logrotate-3.7 69 MD5 bdf48119e016d4ee8b829da9e83959bf files/digest-logrotate-3.6.5-r1 71 -MD5 cf1ca2cfa810abaefc504a76ca38b52a files/logrotate.cron 52 +MD5 8259bf9cd3b5bc37dd4cdda62cc9c2de files/logrotate-3.7.1-dateext-maxage.patch 14282 MD5 5692e613153f372df5b7510b39ba9c5c files/logrotate.conf 731 -MD5 4942e4ea3f05b91d9d24504c4ddbc776 files/digest-logrotate-3.7 69 +MD5 cf1ca2cfa810abaefc504a76ca38b52a files/logrotate.cron 52 +MD5 746e982f984139e917c7d7ee39af40fa files/digest-logrotate-3.7.1 67 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) -iD8DBQFCZNeRjUHll2nfF60RAhFZAKDF+ZjTVblooNsCKsZGIzZ9/3w9yQCePGAC -aKjdp90JbX6X7PNU7s09Bkk= -=fbT2 +iD8DBQFCk5e/omPajV0RnrERAmykAJ9nk9rm6zHHEfHg8SpJZ1UiP1HlGQCfUm0v +Mf/3XgUz30j//QqbhAuBXSs= +=T/WR -----END PGP SIGNATURE----- diff --git a/app-admin/logrotate/files/digest-logrotate-3.7.1 b/app-admin/logrotate/files/digest-logrotate-3.7.1 new file mode 100644 index 000000000000..8b29cfeb69d0 --- /dev/null +++ b/app-admin/logrotate/files/digest-logrotate-3.7.1 @@ -0,0 +1 @@ +MD5 1fc20d457b35bbfb0c5bc2e2b47759df logrotate-3.7.1.tar.bz2 31953 diff --git a/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch b/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch new file mode 100644 index 000000000000..1623b4bf1281 --- /dev/null +++ b/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch @@ -0,0 +1,433 @@ +diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c +--- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400 ++++ logrotate-3.7.1/config.c 2005-05-24 12:21:09.000000000 -0400 +@@ -511,6 +511,14 @@ + newlog->flags &= ~LOG_FLAG_IFEMPTY; + + *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "dateext")) { ++ newlog->flags |= LOG_FLAG_DATEEXT; ++ ++ *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "nodateext")) { ++ newlog->flags &= ~LOG_FLAG_DATEEXT; ++ ++ *endtag = oldchar, start = endtag; + } else if (!strcmp(start, "noolddir")) { + newlog->oldDir = NULL; + +@@ -670,6 +678,21 @@ + } + *endtag = oldchar, start = endtag; + } ++ } else if (!strcmp(start, "maxage")) { ++ *endtag = oldchar, start = endtag; ++ ++ if (!isolateValue(configFile, lineNum, "maxage count", &start, ++ &endtag)) { ++ oldchar = *endtag, *endtag = '\0'; ++ ++ newlog->rotateAge = strtoul(start, &chptr, 0); ++ if (*chptr || newlog->rotateAge < 0) { ++ message(MESS_ERROR, "%s:%d bad maximum age '%s'\n", ++ configFile, lineNum, start); ++ return 1; ++ } ++ *endtag = oldchar, start = endtag; ++ } + } else if (!strcmp(start, "errors")) { + message(MESS_DEBUG, "%s: %d: the errors directive is deprecated and no longer used.\n", + configFile, lineNum); +diff -u -ruN logrotate-3.7.1.orig/logrotate.8 logrotate-3.7.1/logrotate.8 +--- logrotate-3.7.1.orig/logrotate.8 2003-08-07 07:13:14.000000000 -0400 ++++ logrotate-3.7.1/logrotate.8 2005-05-24 12:21:09.000000000 -0400 +@@ -200,6 +200,11 @@ + Log files are rotated every day. + + .TP ++\fBdateext\fR ++Archive old versions of log files adding a daily extension like YYYYMMDD ++instead of simply adding a number. ++ ++.TP + \fBdelaycompress\fR + Postpone compression of the previous log file to the next rotation cycle. + This has only effect when used in combination with \fBcompress\fR. +@@ -246,6 +251,12 @@ + instead of the just-rotated file (this is the default). + + .TP ++\fBmaxage\fR \fIcount\fR ++Remove rotated logs older than <count> days. The age is only checked ++if the logfile is to be rotated. The files are mailed to the ++configured address if \fBmaillast\fR and \fBmail\fR are configured. ++ ++.TP + \fBmissingok\fR + If the log file is missing, go on to the next one without issuing an error + message. See also \fBnomissingok\fR. +diff -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c +--- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400 ++++ logrotate-3.7.1/logrotate.c 2005-05-24 12:21:09.000000000 -0400 +@@ -11,6 +11,7 @@ + #include <sys/wait.h> + #include <time.h> + #include <unistd.h> ++#include <glob.h> + + #ifdef WITH_SELINUX + #include <selinux/selinux.h> +@@ -22,6 +23,10 @@ + #include "log.h" + #include "logrotate.h" + ++#if !defined(GLOB_ABORTED) && defined(GLOB_ABEND) ++#define GLOB_ABORTED GLOB_ABEND ++#endif ++ + typedef struct { + char * fn; + struct tm lastRotated; /* only tm.mon, tm_mday, tm_year are good! */ +@@ -42,6 +47,14 @@ + char * mailCommand = DEFAULT_MAIL_COMMAND; + time_t nowSecs = 0; + ++static int globerr(const char * pathname, int theerr) { ++ message(MESS_ERROR, "error accessing %s: %s\n", pathname, ++ strerror(theerr)); ++ ++ /* We want the glob operation to continue, so return 0 */ ++ return 1; ++} ++ + static logState * findState(const char * fn, struct stateSet * sip) { + int i; + logState * states = sip->states; +@@ -49,9 +62,11 @@ + struct tm now = *localtime(&nowSecs); + time_t lr_time; + ++ /* find the filename fn in the statesPtr list */ + for (i = 0; i < numStates; i++) + if (!strcmp(fn, states[i].fn)) break; + ++ /* not in statesPtr list, so add new entry */ + if (i == numStates) { + i = numStates++; + states = realloc(states, sizeof(*states) * numStates); +@@ -121,6 +136,17 @@ + return rc; + } + ++static int removeLogFile(char * name) { ++ message(MESS_DEBUG, "removing old log %s\n", name); ++ ++ if (!debug && unlink(name)) { ++ message(MESS_ERROR, "Failed to remove old log %s: %s\n", ++ name, strerror(errno)); ++ return 1; ++ } ++ return 0; ++} ++ + static int compressLogFile(char * name, logInfo * log, struct stat *sb) { + char * compressedName; + const char ** fullCommand; +@@ -265,6 +291,25 @@ + return rc; + } + ++static int mailLogWrapper (char * mailFilename, char * mailCommand, int logNum, logInfo * log) { ++ /* if the log is compressed (and we're not mailing a ++ * file whose compression has been delayed), we need ++ * to uncompress it */ ++ if ((log->flags & LOG_FLAG_COMPRESS) && ++ !((log->flags & LOG_FLAG_DELAYCOMPRESS) && ++ (log->flags & LOG_FLAG_MAILFIRST))) { ++ if (mailLog(mailFilename, mailCommand, ++ log->uncompress_prog, log->logAddress, ++ log->files[logNum])) ++ return 1; ++ } else { ++ if (mailLog(mailFilename, mailCommand, NULL, ++ log->logAddress, mailFilename)) ++ return 1; ++ } ++ return 0; ++} ++ + static int copyTruncate(char * currLog, char * saveLog, struct stat * sb, int flags) { + char buf[BUFSIZ]; + int fdcurr = -1, fdsave = -1; +@@ -479,6 +524,9 @@ + char * baseName; + char * dirName; + char * firstRotated; ++ char * glob_pattern; ++ glob_t globResult; ++ int rc; + size_t alloc_size; + int rotateCount = log->rotateCount ? log->rotateCount : 1; + int logStart = (log->logStart == -1) ? 1 : log->logStart; +@@ -509,7 +557,7 @@ + + alloc_size = strlen(dirName) + strlen(baseName) + + strlen(log->files[logNum]) + strlen(fileext) + +- strlen(compext) + 10; ++ strlen(compext) + 18; + + oldName = alloca(alloc_size); + newName = alloca(alloc_size); +@@ -531,16 +579,116 @@ + /* First compress the previous log when necessary */ + if (log->flags & LOG_FLAG_COMPRESS && + log->flags & LOG_FLAG_DELAYCOMPRESS) { +- struct stat sbprev; +- +- sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); +- if (stat(oldName, &sbprev)) { +- message(MESS_DEBUG, "previous log %s does not exist\n", +- oldName); +- } else { +- hasErrors = compressLogFile(oldName, log, &sbprev); ++ if (log->flags & LOG_FLAG_DATEEXT) { ++ /* glob for uncompressed files with our pattern */ ++ glob_pattern = malloc(strlen(dirName) + strlen(baseName) ++ + strlen(fileext) + 44 ); ++ sprintf(glob_pattern, ++ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s", ++ dirName, baseName, fileext); ++ rc = glob(glob_pattern, 0, globerr, &globResult); ++ if (!rc && globResult.gl_pathc > 0) { ++ for (i = 0; i < globResult.gl_pathc && !hasErrors; i++) { ++ struct stat sbprev; ++ sprintf(oldName,"%s",(globResult.gl_pathv)[i]); ++ if (stat(oldName, &sbprev)) { ++ message(MESS_DEBUG, "previous log %s does not exist\n", oldName); ++ } else { ++ hasErrors = compressLogFile(oldName, log, &sbprev); ++ } ++ } ++ } else { ++ message (MESS_DEBUG, "glob finding logs to compress failed\n"); ++ /* fallback to old behaviour */ ++ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ } ++ globfree(&globResult); ++ free(glob_pattern); ++ } else { ++ struct stat sbprev; ++ ++ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ if (stat(oldName, &sbprev)) { ++ message(MESS_DEBUG, "previous log %s does not exist\n", ++ oldName); ++ } else { ++ hasErrors = compressLogFile(oldName, log, &sbprev); ++ } + } + } ++ ++ firstRotated = alloca(strlen(dirName) + strlen(baseName) + ++ strlen(fileext) + strlen(compext) + 30); ++ ++ if(log->flags & LOG_FLAG_DATEEXT) { ++ /* glob for compressed files with our pattern ++ * and compress ext */ ++ glob_pattern = malloc(strlen(dirName)+strlen(baseName) ++ +strlen(fileext)+strlen(compext)+44); ++ sprintf(glob_pattern, ++ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s%s", ++ dirName, baseName, fileext, compext); ++ rc = glob(glob_pattern, 0, globerr, &globResult); ++ if (!rc) { ++ /* search for files to drop, if we find one remember it, ++ * if we find another one mail and remove the first and ++ * remember the second and so on */ ++ struct stat fst_buf; ++ int mail_out = -1; ++ /* remove the first (n - rotateCount) matches ++ * no real rotation needed, since the files have ++ * the date in their name */ ++ for (i = 0; i < globResult.gl_pathc; i++) { ++ if( !stat((globResult.gl_pathv)[i],&fst_buf) ) { ++ if ((i <= ((int)globResult.gl_pathc - rotateCount)) ++ || ((log->rotateAge > 0) ++ && (((nowSecs - fst_buf.st_mtime)/60/60/24) ++ > log->rotateAge))) { ++ if ( mail_out != -1 ) { ++ if (!hasErrors && log->logAddress) { ++ char * mailFilename = (globResult.gl_pathv)[mail_out]; ++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log); ++ if (!hasErrors) ++ hasErrors = removeLogFile(mailFilename); ++ } ++ } ++ mail_out = i; ++ } ++ } ++ } ++ if ( mail_out != -1 ) { ++ /* oldName is oldest Backup found (for unlink later) */ ++ sprintf(oldName, "%s", (globResult.gl_pathv)[mail_out]); ++ strcpy(disposeName, oldName); ++ } else ++ disposeName = NULL; ++ } else { ++ message (MESS_DEBUG, "glob finding old rotated logs failed\n"); ++ disposeName = NULL; ++ } ++ /* firstRotated is most recently created/compressed rotated log */ ++ sprintf(firstRotated, "%s/%s-%04d%02d%02d%s%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, fileext, compext); ++ globfree(&globResult); ++ free(glob_pattern); ++ } else { ++ if ( log->rotateAge ) { ++ struct stat fst_buf; ++ for (i=1; i <= rotateCount; i++) { ++ sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName, ++ rotateCount + 1, fileext, compext); ++ if(!stat(oldName,&fst_buf) ++ && (((nowSecs - fst_buf.st_mtime)/60/60/24) ++ > log->rotateAge)) { ++ char * mailFilename = (globResult.gl_pathv)[i]; ++ if (!hasErrors && log->logAddress) ++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log); ++ if (!hasErrors) ++ hasErrors = removeLogFile(mailFilename); ++ } ++ } ++ } + + sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName, + logStart + rotateCount, fileext, compext); +@@ -548,8 +696,6 @@ + + strcpy(disposeName, oldName); + +- firstRotated = alloca(strlen(dirName) + strlen(baseName) + +- strlen(fileext) + strlen(compext) + 30); + sprintf(firstRotated, "%s/%s.%d%s%s", dirName, baseName, + logStart, fileext, + (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext); +@@ -600,12 +746,27 @@ + } + } + } +- ++ } /* !LOG_FLAG_DATEEXT */ ++ + finalName = oldName; +- +- /* note: the gzip extension is *not* used here! */ +- sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); +- ++ ++ if(log->flags & LOG_FLAG_DATEEXT) { ++ char * destFile = alloca(strlen(dirName) + strlen(baseName) + ++ strlen(fileext) + strlen(compext) + 30); ++ struct stat fst_buf; ++ sprintf(finalName, "%s/%s-%04d%02d%02d%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, fileext); ++ sprintf(destFile, "%s%s", finalName, compext); ++ if(!stat(destFile,&fst_buf)) { ++ message (MESS_DEBUG, "destination %s already exists, skipping rotation\n", firstRotated); ++ hasErrors = 1; ++ } ++ } else { ++ /* note: the gzip extension is *not* used here! */ ++ sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ } ++ + /* if the last rotation doesn't exist, that's okay */ + if (!debug && access(disposeName, F_OK)) { + message(MESS_DEBUG, "log %s doesn't exist -- won't try to " +@@ -613,9 +774,6 @@ + disposeName = NULL; + } + +- free(dirName); +- free(baseName); +- + if (!hasErrors) { + if (log->pre && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) { + message(MESS_DEBUG, "running prerotate script\n"); +@@ -722,33 +880,12 @@ + else + mailFilename = disposeName; + +- if (mailFilename) { +- /* if the log is compressed (and we're not mailing a +- file whose compression has been delayed), we need +- to uncompress it */ +- if ((log->flags & LOG_FLAG_COMPRESS) && +- !((log->flags & LOG_FLAG_DELAYCOMPRESS) && +- (log->flags & LOG_FLAG_MAILFIRST))) { +- if (mailLog(mailFilename, mailCommand, +- log->uncompress_prog, log->logAddress, +- log->files[logNum])) +- hasErrors = 1; +- } else { +- if (mailLog(mailFilename, mailCommand, NULL, +- log->logAddress, mailFilename)) +- hasErrors = 1; +- } +- } ++ if (mailFilename) ++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log); + } + + if (!hasErrors && disposeName) { +- message(MESS_DEBUG, "removing old log %s\n", disposeName); +- +- if (!debug && unlink(disposeName)) { +- message(MESS_ERROR, "Failed to remove old log %s: %s\n", +- disposeName, strerror(errno)); +- hasErrors = 1; +- } ++ hasErrors = removeLogFile(disposeName); + } + } + +@@ -761,6 +898,8 @@ + } + } + #endif ++ free(dirName); ++ free(baseName); + return hasErrors; + } + +@@ -1047,7 +1186,9 @@ + + int main(int argc, const char ** argv) { + logInfo defConfig = { NULL, NULL, 0, NULL, ROT_SIZE, +- /* threshHold */ 1024 * 1024, 0, ++ /* threshHold */ 1024 * 1024, ++ /* rotateCount */ 0, ++ /* rotateAge */ 0, + /* log start */ -1, + /* pre, post */ NULL, NULL, + /* first, last */ NULL, NULL, +diff -u -ruN logrotate-3.7.1.orig/logrotate.h logrotate-3.7.1/logrotate.h +--- logrotate-3.7.1.orig/logrotate.h 2003-08-07 07:13:14.000000000 -0400 ++++ logrotate-3.7.1/logrotate.h 2005-05-24 12:21:09.000000000 -0400 +@@ -15,6 +15,7 @@ + #define LOG_FLAG_MAILFIRST (1 << 6) + #define LOG_FLAG_SHAREDSCRIPTS (1 << 7) + #define LOG_FLAG_COPY (1 << 8) ++#define LOG_FLAG_DATEEXT (1 << 9) + + #define NO_FORCE_ROTATE 0 + #define FORCE_ROTATE 1 +@@ -34,6 +35,7 @@ + enum { ROT_DAYS, ROT_WEEKLY, ROT_MONTHLY, ROT_SIZE, ROT_FORCE } criterium; + unsigned int threshhold; + int rotateCount; ++ int rotateAge; + int logStart; + char * pre, * post, * first, * last; + char * logAddress; diff --git a/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch b/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch new file mode 100644 index 000000000000..69121aafa9a0 --- /dev/null +++ b/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch @@ -0,0 +1,12 @@ +diff -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c +--- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400 ++++ logrotate-3.7.1/logrotate.c 2005-05-24 12:12:26.000000000 -0400 +@@ -1002,7 +1002,7 @@ + } + + /* Hack to hide earlier bug */ +- if ((year != 1900) && (year < 1996 || year > 2100)) { ++ if ((year != 1900) && (year < 1970 || year > 2100)) { + message(MESS_ERROR, "bad year %d for file %s in state file %s\n", + year, argv[0], stateFilename); + fclose(f); diff --git a/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch b/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch new file mode 100644 index 000000000000..390de7537c67 --- /dev/null +++ b/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch @@ -0,0 +1,14 @@ +--- logrotate-3.7/config.c.orig 2005-04-26 22:57:53.000000000 -0400 ++++ logrotate-3.7/config.c 2005-04-26 22:59:36.000000000 -0400 +@@ -142,6 +142,11 @@ + (!fname[1] || (fname[1] == '.' && !fname[2]))) + return 0; + ++ /* Don't include 'hidden' files either; this breaks Gentoo ++ portage config file management http://bugs.gentoo.org/87683 */ ++ if (fname[0] == '.') ++ return 0; ++ + /* Check if fname is ending in a taboo-extension; if so, return + false */ + for (i = 0; i < tabooCount; i++) { diff --git a/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch b/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch new file mode 100644 index 000000000000..d4492447ed73 --- /dev/null +++ b/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch @@ -0,0 +1,386 @@ +diff -u -ruN logrotate-3.7.1.orig/logrotate.8 logrotate-3.7.1/logrotate.8 +--- logrotate-3.7.1.orig/logrotate.8 2003-08-07 07:13:14.000000000 -0400 ++++ logrotate-3.7.1/logrotate.8 2005-05-24 12:13:09.000000000 -0400 +@@ -3,7 +3,8 @@ + .SH NAME + logrotate \- rotates, compresses, and mails system logs + .SH SYNOPSIS +-\fBlogrotate\fR [-dv] [-f|--force] [-s|--state \fIfile\fR] \fIconfig_file\fR+ ++\fBlogrotate\fR [\fB\-dv\fR] [\fB\-f\fR|\fB\-\-force\fR] ++[\fB\-s\fR|\fB-\-state\ \fIstatefile\fR] \fIconfig_file\fR .. + .SH DESCRIPTION + \fBlogrotate\fR is designed to ease administration of systems that generate + large numbers of log files. It allows automatic rotation, compression, +@@ -11,16 +12,16 @@ + weekly, monthly, or when it grows too large. + .P + Normally, \fBlogrotate\fR is run as a daily cron job. It will not modify +-a log multiple times in one day unless the criterium for that log is +-based on the log's size and \fBlogrotate\fR is being run multiple times +-each day, or unless the \fB-f\fR or \fB-force\fR option is used. ++a log more than once in one day unless the criterion for that log is ++based on the log's size and \fBlogrotate\fR is being run more than once ++each day, or unless the \fB-f\fR or \fB-\-force\fR option is used. + .P + Any number of config files may be given on the command line. Later config + files may override the options given in earlier files, so the order +-in which the \fBlogrotate\fR config files are listed in is important. ++in which the \fBlogrotate\fR config files are listed is important. + Normally, a single config file which includes any other config files + which are needed should be used. See below for more information on how +-to use the \fIinclude\fR directive to accomplish this. If a directory ++to use the \fBinclude\fR directive to accomplish this. If a directory + is given on the command line, every file in that directory is used as + a config file. + .P +@@ -36,14 +37,15 @@ + be made to the logs or to the \fBlogrotate\fR state file. + + .TP +-\fB-f, -\-force\fR ++\fB-f\fR, \fB-\-force\fR + Tells \fBlogrotate\fR to force the rotation, even if it doesn't think + this is necessary. Sometimes this is useful after adding new entries to +-\fBlogrotate\fR, or if old log files have been removed by hand, as the +-new files will be created, and logging will continue correctly. ++a \fBlogrotate\fR config file, or if old log files have been removed ++by hand, as the new files will be created, and logging will continue ++correctly. + + .TP +-\fB-m, -\-mail <command>\fR ++\fB-m\R, \B-\-mail <command>\fR + Tells \fBlogrotate\fR which command to use when mailing logs. This + command should accept two arguments: 1) the subject of the message, and + 2) the recipient. The command must then read a message on standard input +@@ -51,22 +53,26 @@ + -s\fR. + + .TP +-\fB-s, -\-state <statefile>\fR ++\fB-s\fR, \fB-\-state <statefile>\fR + 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 ++if \fBlogrotate\fR is being run as a different user for various sets of + log files. The default state file is \fI/var/lib/logrotate/status\fR. + + .TP + \fB-\-usage\fR + Prints a short usage message. + ++.TP ++\fB-v\fR, \fB--verbose\fR ++Display messages during rotation. ++ + .SH CONFIGURATION FILE + + \fBlogrotate\fR reads everything about the log files it should be handling + from the series of configuration files specified on the command line. Each + configuration file can set global options (local definitions override + global ones, and later definitions override earlier ones) and specify +-a logfile to rotate. A simple configuration file looks like this: ++some logfiles to rotate. A simple configuration file looks like this: + + .nf + .ta +3i +@@ -77,17 +83,17 @@ + rotate 5 + weekly + postrotate +- /sbin/killall -HUP syslogd ++ /bin/killall -HUP syslogd + endscript + } + + "/var/log/httpd/access.log" /var/log/httpd/error.log { + rotate 5 + mail www@my.org +- size=100k ++ size 100k + sharedscripts + postrotate +- /sbin/killall -HUP httpd ++ /bin/killall -HUP httpd + endscript + } + +@@ -97,7 +103,7 @@ + olddir /var/log/news/old + missingok + postrotate +- kill -HUP `cat /var/run/inn.pid` ++ kill -HUP `cat /var/run/inn.pid` + endscript + nocompress + } +@@ -107,23 +113,23 @@ + The first few lines set global options; in the example, logs are + compressed after they are rotated. Note that comments may appear + anywhere in the config file as long as the first non-whitespace +-character on the line is a #. ++character on the line is a \fB#\fR. + +-The next section of the config files defined how to handle the log file ++The next section of the config file defines how to handle the log file + \fI/var/log/messages\fR. The log will go through five weekly rotations before + being removed. After the log file has been rotated (but before the old + version of the log has been compressed), the command +-\fI/sbin/killall -HUP syslogd\fR will be executed. ++\fI/bin/killall -HUP syslogd\fR will be executed. + + The next section defines the parameters for both + \fI/var/log/httpd/access.log\fR and \fI/var/log/httpd/error.log\fR. +-They are rotated whenever is grows over 100k is size, and the old logs ++Each is rotated whenever it grows over 100k is size, and the old log + files are mailed (uncompressed) to www@my.org after going through 5 + rotations, rather then being removed. The \fBsharedscripts\fR means that + the \fBpostrotate\fR script will only be run once, not once for each +-log which is rotated. Note that the double quotes around the first filename +-at the beginning of this section allows logrotate to rotate logs with +-spaces in the name. Normal shell quoting rules apply, with ', ", and \\ ++log which is rotated. Note that log file names may be enclosed in ++quotes (and that quotes are required if the name contains spaces). ++Normal shell quoting rules apply, with \fB'\fR, \fB"\fR, and \fB\\\fR + characters supported. + + The last section defines the parameters for all of the files in +@@ -135,29 +141,33 @@ + rotate all files, including previously rotated ones. A way around this + is to use the \fBolddir\fR directive or a more exact wildcard (such as *.log). + ++If the directory \fI/var/log/news\fR does not exist, this will cause ++\fBlogrotate\fR to report an error. This error cannot be stopped with ++the \fBmissingok\fR directive. ++ + Here is more information on the directives which may be included in + a \fBlogrotate\fR configuration file: + + .TP + \fBcompress\fR +-Old versions of log files are compressed with \fBgzip\fR by default. See also +-\fBnocompress\fR. ++Old versions of log files are compressed with \fBgzip\fR(1) by default. ++See also \fBnocompress\fR. + + .TP + \fBcompresscmd\fR + Specifies which command to use to compress log files. The default is +-\fBgzip\fR. See also \fBcompress\fR. ++\fBgzip\fR(1). See also \fBcompress\fR. + + .TP + \fBuncompresscmd\fR + Specifies which command to use to uncompress log files. The default is +-\fBgunzip\fR. ++\fBgunzip\fR(1). + + .TP + \fBcompressext\fR + Specifies which extension to use on compressed logfiles, if compression +-is enabled. The default follows that of the configured compression +-command. ++is enabled. The default follows that of the default compression ++command (.gz). + + .TP + \fBcompressoptions\fR +@@ -174,9 +184,9 @@ + + .TP + \fBcopytruncate\fR +-Truncate the original log file in place after creating a copy, +-instead of moving the old log file and optionally creating a new one, +-It can be used when some program can not be told to close its logfile ++Truncate the original log file to zero size in place after creating a copy, ++instead of moving the old log file and optionally creating a new one. ++It can be used when some program cannot be told to close its logfile + and thus might continue writing (appending) to the previous log file forever. + Note that there is a very small time slice between copying the file and + truncating it, so some logging data might be lost. +@@ -188,7 +198,7 @@ + Immediately after rotation (before the \fBpostrotate\fR script is run) + the log file is created (with the same name as the log file just rotated). + \fImode\fR specifies the mode for the log file in octal (the same +-as \fBchmod(2)\fR), \fIowner\fR specifies the user name who will own the ++as \fBchmod\fR)(2), \fIowner\fR specifies the user name who will own the + log file, and \fIgroup\fR specifies the group the log file will belong + to. Any of the log file attributes may be omitted, in which case those + attributes for the new file will use the same values as the original log +@@ -202,20 +212,20 @@ + .TP + \fBdelaycompress\fR + Postpone compression of the previous log file to the next rotation cycle. +-This has only effect when used in combination with \fBcompress\fR. +-It can be used when some program can not be told to close its logfile ++This only has effect when used in combination with \fBcompress\fR. ++It can be used when some program cannot be told to close its logfile + and thus might continue writing to the previous log file for some time. + + .TP + \fBextension \fIext\fR + Log files are given the final extension \fIext\fR after rotation. If +-compression is used, the compression extension (normally \fB.gz\fR) ++compression is used, the compression extension (normally \fI.gz\fR) + appears after \fIext\fR. + + .TP + \fBifempty\fR +-Rotate the log file even if it is empty, overiding the \fBnotifempty\fR +-option (ifempty is the default). ++Rotate the log file even if it is empty, overriding the \fBnotifempty\fR ++option (\fBifempty\fR is the default). + + .TP + \fBinclude \fIfile_or_directory\fR +@@ -226,12 +236,12 @@ + which are ignored are files which are not regular files (such as + directories and named pipes) and files whose names end with one of + the taboo extensions, as specified by the \fBtabooext\fR directive. +-The \fBinclude\fR directive may not appear inside of a log file ++The \fBinclude\fR directive may not appear inside a log file + definition. + + .TP + \fBmail \fIaddress\fR +-When a log is rotated out-of-existence, it is mailed to \fIaddress\fR. If ++When a log is rotated out of existence, it is mailed to \fIaddress\fR. If + no mail should be generated by a particular log, the \fBnomail\fR directive + may be used. + +@@ -257,8 +267,7 @@ + + .TP + \fBnocompress\fR +-Old versions of log files are not compressed with \fBgzip\fR. See also +-\fBcompress\fR. ++Old versions of log files are not compressed. See also \fBcompress\fR. + + .TP + \fBnocopy\fR +@@ -281,7 +290,7 @@ + + .TP + \fBnomail\fR +-Don't mail old log files to any address. ++Do not mail old log files to any address. + + .TP + \fBnomissingok\fR +@@ -289,12 +298,12 @@ + + .TP + \fBnoolddir\fR +-Logs are rotated in the same directory the log normally resides in (this ++Logs are rotated in the directory they normally reside in (this + overrides the \fBolddir\fR option). + + .TP + \fBnosharedscripts\fR +-Run \fBprerotate\fR and \fBpostrotate\fR scripts for every script which ++Run \fBprerotate\fR and \fBpostrotate\fR scripts for every log which + is rotated (this is the default, and overrides the \fBsharedscripts\fR + option). + +@@ -315,16 +324,15 @@ + \fBpostrotate\fR/\fBendscript\fR + The lines between \fBpostrotate\fR and \fBendscript\fR (both of which + must appear on lines by themselves) are executed after the log file is +-rotated. These directives may only appear inside of a log file definition. +-See \fBprerotate\fR as well. ++rotated. These directives may only appear inside a log file definition. ++See also \fBprerotate\fR. + + .TP + \fBprerotate\fR/\fBendscript\fR + The lines between \fBprerotate\fR and \fBendscript\fR (both of which + must appear on lines by themselves) are executed before the log file is + rotated and only if the log will actually be rotated. These directives +-may only appear inside of a log file definition. See \fBpostrotate\fR +-as well. ++may only appear inside a log file definition. See also \fBpostrotate\fR. + + .TP + \fBfirstaction\fR/\fBendscript\fR +@@ -340,30 +348,31 @@ + must appear on lines by themselves) are executed once after all log + files that match the wildcarded pattern are rotated, after postrotate script + is run and only if at least one log is rotated. These directives may only +-appear inside of a log file definition. See \fBlastaction\fR as well. ++appear inside a log file definition. See also \fBfirstaction\fR. + + .TP + \fBrotate \fIcount\fR +-Log files are rotated <count> times before being removed or mailed to the ++Log files are rotated \fIcount\fR times before being removed or mailed to the + address specified in a \fBmail\fR directive. If \fIcount\fR is 0, old versions + are removed rather then rotated. + + .TP +-\fBsize \fIsize\fR ++\fBsize \fIsize\fR[\fBG\fR|\fBM\fR|\fBk\fR] + Log files are rotated when they grow bigger then \fIsize\fR bytes. If + \fIsize\fR is followed by \fIM\fR, the size if assumed to be in megabytes. +-If the \fIk\fR is used, the size is in kilobytes. So \fBsize 100\fR, +-\fIsize 100k\fR, and \fIsize 100M\fR are all valid. ++If the \fIG\fR suffix is used, the size is in gigabytes. ++If the \fIk\fR suffix is used, the size is in kilobytes. So \fBsize 100\fR, ++\fIsize 100k\fR, \fIsize 100M\fR and \fIsize 1G\fR are all valid. + + .TP + \fBsharedscripts\fR +-Normally, \fBprescript\fR and \fBpostscript\fR scripts are run for each ++Normally, \fBprerotate\fR and \fBpostrotate\fR scripts are run for each + log which is rotated, meaning that a single script may be run multiple + times for log file entries which match multiple files (such as the +-/var/log/news/* example). If \fBsharedscript\fR is specified, the scripts ++\fI/var/log/news/*\fR example). If \fBsharedscript\fR is specified, the scripts + are only run once, no matter how many logs match the wildcarded pattern. + However, if none of the logs in the pattern require rotating, the scripts +-will not be run at all. This option overrides the \fbnosharedscripts\fR ++will not be run at all. This option overrides the \fBnosharedscripts\fR + option. + + .TP +@@ -377,18 +386,20 @@ + .TP + \fBtabooext\fR [+] \fIlist\fR + The current taboo extension list is changed (see the \fBinclude\fR directive +-for information on the taboo extensions). If a + precedes the list of +-extensions, the current taboo extension list is augmented, otherwise it ++for information on the taboo extensions). If a \fB+\fR precedes \fIlist\fR, ++the current taboo extension list is augmented by \fIlist\fR, otherwise it + is replaced. At startup, the taboo extension list +-contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~. ++contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~. Note that all hidden ++files (files starting with .) are ignored. ++ + + .TP + \fBweekly\fR + Log files are rotated if the current weekday is less then the weekday + of the last rotation or if more then a week has passed since the last + rotation. This is normally the same as rotating logs on the first day +-of the week, but it works better if \fIlogrotate\fR is not run every +-night. ++of the week, but if \fBlogrotate\fR is not being run every night a log ++rotation will happen at the first valid opportunity. + + .SH FILES + .PD 0 +@@ -400,11 +411,15 @@ + Configuration options. + + .SH SEE ALSO +-.IR gzip (1) ++.BR gzip (1) + + .SH AUTHORS + .nf + Erik Troan <ewt@redhat.com> + .nf + Preston Brown <pbrown@redhat.com> ++.nf ++Corrections and changes for Debian by Paul Martin <pm@debian.org> ++.nf ++Corrections and changes for Gentoo by Daniel Gryniewicz <dang@gentoo.org> + .fi diff --git a/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch b/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch new file mode 100644 index 000000000000..2e07188f5ad9 --- /dev/null +++ b/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch @@ -0,0 +1,12 @@ +diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c +--- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400 ++++ logrotate-3.7.1/config.c 2005-05-24 12:13:41.000000000 -0400 +@@ -147,7 +147,7 @@ + for (i = 0; i < tabooCount; i++) { + if (!strcmp(fname + strlen(fname) - strlen(tabooExts[i]), + tabooExts[i])) { +- message(MESS_ERROR, "Ignoring %s, because of %s " ++ message(MESS_DEBUG, "Ignoring %s, because of %s " + "ending\n", fname, tabooExts[i]); + + return 0; diff --git a/app-admin/logrotate/logrotate-3.7.1.ebuild b/app-admin/logrotate/logrotate-3.7.1.ebuild new file mode 100644 index 000000000000..39cd8ac5b087 --- /dev/null +++ b/app-admin/logrotate/logrotate-3.7.1.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/logrotate-3.7.1.ebuild,v 1.1 2005/05/24 21:08:00 dang Exp $ + +inherit eutils + +DESCRIPTION="Rotates, compresses, and mails system logs" +HOMEPAGE="http://www.gentoo.org" +SRC_URI="mirror://gentoo/${PN}-${PV}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~ia64 ~amd64 ~ppc64 ~s390 ~hppa" +IUSE="selinux" + +RDEPEND=" + >=dev-libs/popt-1.5 + selinux? ( sys-libs/libselinux )" + +DEPEND="${DEPEND} + >=sys-apps/portage-2.0.47-r10 + >=sys-apps/sed-4 + selinux? ( sec-policy/selinux-logrotate )" + +src_unpack() { + unpack ${P}.tar.bz2 + + cd ${S} + + sed -i \ + -e "s:CFLAGS += -g:CFLAGS += -g ${CFLAGS}:" \ + -e "/CVSROOT =/d" \ + Makefile || die "sed failed" + + epatch ${FILESDIR}/${P}-dateext-maxage.patch + epatch ${FILESDIR}/${P}-datehack.patch + epatch ${FILESDIR}/${P}-ignore-hidden.patch + epatch ${FILESDIR}/${P}-manpage-fixes.patch + epatch ${FILESDIR}/${P}-taboo-to-debug.patch +} + +src_compile() { + local myconf + useq selinux && myconf='WITH_SELINUX=yes' + emake ${myconf} || die "emake failed" +} + +src_install() { + insinto /usr + dosbin logrotate + doman logrotate.8 + dodoc examples/logrotate* + + exeinto /etc/cron.daily + doexe ${FILESDIR}/logrotate.cron + + insinto /etc + doins ${FILESDIR}/logrotate.conf + + keepdir /etc/logrotate.d +} + +pkg_postinst() { + einfo "If you wish to have logrotate e-mail you updates, please" + einfo "emerge mail-client/mailx and configure logrotate in" + einfo "/etc/logrotate.conf appropriately" + einfo + einfo "Additionally, /etc/logrotate.conf may need to be modified" + einfo "for your particular needs. See man logrotate for details." +} diff --git a/app-admin/logrotate/metadata.xml b/app-admin/logrotate/metadata.xml index 20ce219711a2..9871f0dcebcc 100644 --- a/app-admin/logrotate/metadata.xml +++ b/app-admin/logrotate/metadata.xml @@ -2,4 +2,5 @@ <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> <herd>no-herd</herd> +<maintainer><email>dang@gentoo.org</email></maintainer> </pkgmetadata> |