From 61edbb7cedf69aaa6dc1e5037ff6909d613a3770 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 8 Aug 2012 18:49:24 -0500 Subject: svsvinit: includes our patch for halt_init --- abs/core/sysvinit/0001-simplify-writelog.patch | 126 +++++++++++++++++++++ ...02-remove-ansi-escape-codes-from-log-file.patch | 80 +++++++++++++ abs/core/sysvinit/PKGBUILD | 37 +++--- abs/core/sysvinit/__changelog | 33 +----- abs/core/sysvinit/halt-init.patch | 12 -- abs/core/sysvinit/halt_init.patch | 11 ++ abs/core/sysvinit/sysvinit.install | 3 + 7 files changed, 249 insertions(+), 53 deletions(-) create mode 100644 abs/core/sysvinit/0001-simplify-writelog.patch create mode 100644 abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch delete mode 100644 abs/core/sysvinit/halt-init.patch create mode 100644 abs/core/sysvinit/halt_init.patch create mode 100644 abs/core/sysvinit/sysvinit.install diff --git a/abs/core/sysvinit/0001-simplify-writelog.patch b/abs/core/sysvinit/0001-simplify-writelog.patch new file mode 100644 index 0000000..cc28f14 --- /dev/null +++ b/abs/core/sysvinit/0001-simplify-writelog.patch @@ -0,0 +1,126 @@ +From 5577552eb1344ddd661893564b1e628f8edcf13d Mon Sep 17 00:00:00 2001 +From: Florian Pritz +Date: Fri, 15 Jun 2012 16:41:52 +0200 +Subject: [PATCH 1/2] simplify writelog() + +All we do is prepend the date and remove \r. We don't handle color +codes, but the user can just cat the log file in a terminal and it will +interpret the codes correctly. + +Signed-off-by: Florian Pritz +--- + bootlogd.c | 76 +++++++++++++++++------------------------------------------- + 1 file changed, 21 insertions(+), 55 deletions(-) + +diff --git a/bootlogd.c b/bootlogd.c +index 570d382..e36e261 100644 +--- a/bootlogd.c ++++ b/bootlogd.c +@@ -68,11 +68,6 @@ int didnl = 1; + int createlogfile = 0; + int syncalot = 0; + +-struct line { +- char buf[256]; +- int pos; +-} line; +- + /* + * Console devices as listed on the kernel command line and + * the mapping to actual devices in /dev +@@ -351,63 +346,34 @@ int consolename(char *res, int rlen) + */ + void writelog(FILE *fp, unsigned char *ptr, int len) + { +- time_t t; +- char *s; +- char tmp[8]; +- int olen = len; +- int dosync = 0; +- int tlen; +- +- while (len > 0) { +- tmp[0] = 0; +- if (didnl) { ++ int dosync = 0; ++ int i; ++ static int first_run = 1; ++ ++ for (i = 0; i < len; i++) { ++ int ignore = 0; ++ ++ /* prepend date to every line */ ++ if (*(ptr-1) == '\n' || first_run) { ++ time_t t; ++ char *s; + time(&t); + s = ctime(&t); + fprintf(fp, "%.24s: ", s); +- didnl = 0; ++ dosync = 1; ++ first_run = 0; + } +- switch (*ptr) { +- case 27: /* ESC */ +- strcpy(tmp, "^["); +- break; +- case '\r': +- line.pos = 0; +- break; +- case 8: /* ^H */ +- if (line.pos > 0) line.pos--; +- break; +- case '\n': +- didnl = 1; +- dosync = 1; +- break; +- case '\t': +- line.pos += (line.pos / 8 + 1) * 8; +- if (line.pos >= (int)sizeof(line.buf)) +- line.pos = sizeof(line.buf) - 1; +- break; +- case 32 ... 127: +- case 161 ... 255: +- tmp[0] = *ptr; +- tmp[1] = 0; +- break; +- default: +- sprintf(tmp, "\\%03o", *ptr); +- break; +- } +- ptr++; +- len--; + +- tlen = strlen(tmp); +- if (tlen && (line.pos + tlen < (int)sizeof(line.buf))) { +- memcpy(line.buf + line.pos, tmp, tlen); +- line.pos += tlen; ++ if (*ptr == '\r') { ++ ignore = 1; + } +- if (didnl) { +- fprintf(fp, "%s\n", line.buf); +- memset(&line, 0, sizeof(line)); ++ ++ if (!ignore) { ++ fwrite(ptr, sizeof(char), 1, fp); + } +- } + ++ ptr++; ++ } + if (dosync) { + fflush(fp); + if (syncalot) { +@@ -415,7 +381,7 @@ void writelog(FILE *fp, unsigned char *ptr, int len) + } + } + +- outptr += olen; ++ outptr += len; + if (outptr >= endptr) + outptr = ringbuf; + +-- +1.7.10.4 + diff --git a/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch b/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch new file mode 100644 index 0000000..89b3280 --- /dev/null +++ b/abs/core/sysvinit/0002-remove-ansi-escape-codes-from-log-file.patch @@ -0,0 +1,80 @@ +From 8d0022d9540112a92ce8d88c91c4ac10bad8c9ef Mon Sep 17 00:00:00 2001 +From: Florian Pritz +Date: Sun, 24 Jun 2012 15:49:51 +0200 +Subject: [PATCH 2/2] remove ansi escape codes from log file + +References: https://en.wikipedia.org/wiki/ANSI_escape_code + +Signed-off-by: Florian Pritz +--- + bootlogd.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 43 insertions(+), 2 deletions(-) + +diff --git a/bootlogd.c b/bootlogd.c +index e36e261..88e610d 100644 +--- a/bootlogd.c ++++ b/bootlogd.c +@@ -349,6 +349,7 @@ void writelog(FILE *fp, unsigned char *ptr, int len) + int dosync = 0; + int i; + static int first_run = 1; ++ static int inside_esc = 0; + + for (i = 0; i < len; i++) { + int ignore = 0; +@@ -364,10 +365,50 @@ void writelog(FILE *fp, unsigned char *ptr, int len) + first_run = 0; + } + +- if (*ptr == '\r') { +- ignore = 1; ++ /* remove escape sequences, but do it in a way that allows us to stop ++ * in the middle in case the string was cut off */ ++ if (inside_esc == 1) { ++ /* first '[' is special because if we encounter it again, it should be considered the final byte */ ++ if (*ptr == '[') { ++ /* multi char sequence */ ++ ignore = 1; ++ inside_esc = 2; ++ } else { ++ /* single char sequence */ ++ if (*ptr >= 64 && *ptr <= 95) { ++ ignore = 1; ++ } ++ inside_esc = 0; ++ } ++ } else if (inside_esc == 2) { ++ switch (*ptr) { ++ case '0' ... '9': /* intermediate chars of escape sequence */ ++ case ';': ++ case 32 ... 47: ++ if (inside_esc) { ++ ignore = 1; ++ } ++ break; ++ case 64 ... 126: /* final char of escape sequence */ ++ if (inside_esc) { ++ ignore = 1; ++ inside_esc = 0; ++ } ++ break; ++ } ++ } else { ++ switch (*ptr) { ++ case '\r': ++ ignore = 1; ++ break; ++ case 27: /* ESC */ ++ ignore = 1; ++ inside_esc = 1; ++ break; ++ } + } + ++ + if (!ignore) { + fwrite(ptr, sizeof(char), 1, fp); + } +-- +1.7.10.4 + diff --git a/abs/core/sysvinit/PKGBUILD b/abs/core/sysvinit/PKGBUILD index c3ba701..27d5a09 100644 --- a/abs/core/sysvinit/PKGBUILD +++ b/abs/core/sysvinit/PKGBUILD @@ -1,6 +1,5 @@ -# $Id: PKGBUILD 92996 2010-10-02 19:26:38Z eric $ +# $Id: PKGBUILD 162726 2012-06-29 06:27:09Z bluewind $ # Maintainer: Eric Belanger -# Contributor: judd pkgname=sysvinit pkgver=2.88 @@ -10,33 +9,43 @@ arch=('i686' 'x86_64') url="http://savannah.nongnu.org/projects/sysvinit" license=('GPL') groups=('base') -depends=('shadow' 'util-linux' 'coreutils' 'glibc' 'awk' 'poweroff-scripts') -source=(http://download.savannah.gnu.org/releases/sysvinit/${pkgname}-${pkgver}dsf.tar.bz2 halt-init.patch) +depends=('util-linux' 'coreutils' 'glibc' 'awk' 'poweroff-scripts') +install=sysvinit.install +source=(http://download.savannah.gnu.org/releases/sysvinit/${pkgname}-${pkgver}dsf.tar.bz2 + "0001-simplify-writelog.patch" + "0002-remove-ansi-escape-codes-from-log-file.patch" + "halt_init.patch") build() { cd "${srcdir}/${pkgname}-${pkgver}dsf" - patch -p0 < ${srcdir}/halt-init.patch - make || return 1 + + # FS#30005 + patch -p1 -d "src" -i "${srcdir}/0001-simplify-writelog.patch" + patch -p1 -d "src" -i "${srcdir}/0002-remove-ansi-escape-codes-from-log-file.patch" + patch -p0 < ${srcdir}/halt_init.patch + make } package() { cd "${srcdir}/${pkgname}-${pkgver}dsf" make ROOT="${pkgdir}" install + # mountpoint is now provided by util-linux instead + cd "${pkgdir}" + rm bin/mountpoint + rm usr/share/man/man1/mountpoint.1 + # Rename some stuff so it does not bigfoot changes needed for runit cd "${pkgdir}/sbin" rm -f reboot poweroff - #These will be created in the poweroff-scripts post-install section - #This should be removed when moving to 64 and we have no legacy to worry about - #ln -s halt.init reboot.init - #ln -s halt.init poweroff.init - - - mv halt halt.init mv shutdown shutdown.init + + } md5sums=('6eda8a97b86e0a6f59dabbf25202aa6f' - 'cd4c5767f63ca5881e3e1f1c4f10f896') + 'e3e82a3a38415518f52f78a622ef0262' + '04f0ab28340df08bb47d066669bc4519' + 'aec0de91c1d2f56e78393d400fd238a7') diff --git a/abs/core/sysvinit/__changelog b/abs/core/sysvinit/__changelog index f249199..0609292 100644 --- a/abs/core/sysvinit/__changelog +++ b/abs/core/sysvinit/__changelog @@ -1,30 +1,9 @@ -patch halt to work with runit +halt_init.patch + # Rename some stuff so it does not bigfoot changes needed for runit + cd "${pkgdir}/sbin" + rm -f reboot poweroff + mv halt halt.init + mv shutdown shutdown.init ---- src/halt.c.orig 2008-08-30 17:25:02.000000000 +0000 -+++ src/halt.c 2008-08-30 18:10:29.000000000 +0000 -@@ -186,6 +186,14 @@ - if (!strcmp(progname, "reboot")) do_reboot = 1; - if (!strcmp(progname, "poweroff")) do_poweroff = 1; - -+ if (!strcmp(progname, "reboot.init")) do_reboot = 1; -+ if (!strcmp(progname, "poweroff.init")) do_poweroff = 1; -+ -+ //fprintf(stderr, "%d: do_reboot \n ", do_reboot); -+ //fprintf(stderr, "%d: do_poweroff \n ", do_poweroff); -+ //fprintf(stderr, "%s: \n", progname); -+ //do_nothing = 1; -+ - /* - * Get flags - */ -# mjh 08-17-2011 -* mv halt to halt-init -* mv shutdown shutdown-init -* rm -f reboot poweroff -* remove sysvinit.install - -#add -jm -'poweroff-scripts' as a depend - diff --git a/abs/core/sysvinit/halt-init.patch b/abs/core/sysvinit/halt-init.patch deleted file mode 100644 index 0885252..0000000 --- a/abs/core/sysvinit/halt-init.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- src/halt.c.orig 2010-02-26 13:45:49.000000000 +0000 -+++ src/halt.c 2010-12-02 17:42:51.000000000 +0000 -@@ -198,6 +198,9 @@ - if (!strcmp(progname, "reboot")) do_reboot = 1; - if (!strcmp(progname, "poweroff")) do_poweroff = 1; - -+ if (!strcmp(progname, "reboot.init")) do_reboot = 1; -+ if (!strcmp(progname, "poweroff.init")) do_poweroff = 1; -+ - /* - * Get flags - */ diff --git a/abs/core/sysvinit/halt_init.patch b/abs/core/sysvinit/halt_init.patch new file mode 100644 index 0000000..4f10932 --- /dev/null +++ b/abs/core/sysvinit/halt_init.patch @@ -0,0 +1,11 @@ +--- src/halt.c.orig 2010-02-26 13:45:49.000000000 +0000 ++++ src/halt.c 2012-08-07 23:13:06.321378085 +0000 +@@ -197,6 +197,8 @@ + + if (!strcmp(progname, "reboot")) do_reboot = 1; + if (!strcmp(progname, "poweroff")) do_poweroff = 1; ++ if (!strcmp(progname, "reboot.init")) do_reboot = 1; ++ if (!strcmp(progname, "poweroff.init")) do_poweroff = 1; + + /* + * Get flags diff --git a/abs/core/sysvinit/sysvinit.install b/abs/core/sysvinit/sysvinit.install new file mode 100644 index 0000000..2f0e62e --- /dev/null +++ b/abs/core/sysvinit/sysvinit.install @@ -0,0 +1,3 @@ +post_upgrade() { + [ -x sbin/init ] && sbin/init u +} -- cgit v0.12