diff options
author | Andrew Gregory | 2015-07-08 01:27:37 -0400 |
---|---|---|
committer | Andrew Gregory | 2015-07-08 01:27:37 -0400 |
commit | df32656a184af44d2a827fc9b85a32515e492aa5 (patch) | |
tree | bf9805ead0c86ded79d192826abf15d3d53d241d | |
download | aur-df32656a184af44d2a827fc9b85a32515e492aa5.tar.gz |
add openrc-sysvinit
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | 0001-Makefile-detect-dynamic-libcrypt.patch | 31 | ||||
-rw-r--r-- | 0001-simplify-writelog.patch | 125 | ||||
-rw-r--r-- | 0002-remove-ansi-escape-codes-from-log-file.patch | 79 | ||||
-rw-r--r-- | PKGBUILD | 43 | ||||
-rw-r--r-- | openrc-init.patch | 11 | ||||
-rw-r--r-- | sysvinit.install | 7 |
8 files changed, 321 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..745fc7b37d07 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,22 @@ +pkgbase = openrc-sysvinit + pkgdesc = Linux System V Init patched to use alternate inittab for openrc + pkgver = 2.88 + pkgrel = 10 + url = http://savannah.nongnu.org/projects/sysvinit + install = sysvinit.install + arch = i686 + arch = x86_64 + groups = base + license = GPL + depends = sysvinit + source = http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.88dsf.tar.bz2 + source = 0001-simplify-writelog.patch + source = 0002-remove-ansi-escape-codes-from-log-file.patch + source = openrc-init.patch + md5sums = 6eda8a97b86e0a6f59dabbf25202aa6f + md5sums = 26bfc38ccd225814ef9dd02842109df2 + md5sums = a913d77f6554699bc074428cc6b07589 + md5sums = f60460c6a3bc58376562fc76568bf3d7 + +pkgname = openrc-sysvinit + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..d725ba4cf0d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.tar.* +pkg/ +src/ diff --git a/0001-Makefile-detect-dynamic-libcrypt.patch b/0001-Makefile-detect-dynamic-libcrypt.patch new file mode 100644 index 000000000000..6eef631cab0b --- /dev/null +++ b/0001-Makefile-detect-dynamic-libcrypt.patch @@ -0,0 +1,31 @@ +From bd0ec99398e3ebdb54ea80200d7cc738a7f6657a Mon Sep 17 00:00:00 2001 +From: Andrew Gregory <andrew.gregory.8@gmail.com> +Date: Sat, 7 Dec 2013 10:17:41 -0500 +Subject: [PATCH] Makefile: detect dynamic libcrypt + +Even though the libcrypt detection was looking for libcrypt.a, sulogin +was being linked against libcrypt dynamically anyway because -static was +not used. Using libcrypt.a failed to find libcrypt on systems without +static libs, causing compiler errors. + +Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 9e80533..215ad19 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -89,7 +89,7 @@ else + endif + + # Additional libs for GNU libc. +-ifneq ($(wildcard /usr/lib*/libcrypt.a),) ++ifneq ($(wildcard /usr/lib*/libcrypt.*),) + SULOGINLIBS += -lcrypt + endif + +-- +1.8.4.2 + diff --git a/0001-simplify-writelog.patch b/0001-simplify-writelog.patch new file mode 100644 index 000000000000..6f1b63c7f832 --- /dev/null +++ b/0001-simplify-writelog.patch @@ -0,0 +1,125 @@ +From 5577552eb1344ddd661893564b1e628f8edcf13d Mon Sep 17 00:00:00 2001 +From: Florian Pritz <bluewind@xinu.at> +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 <bluewind@xinu.at> +--- + 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/0002-remove-ansi-escape-codes-from-log-file.patch b/0002-remove-ansi-escape-codes-from-log-file.patch new file mode 100644 index 000000000000..99c3cfa9e14a --- /dev/null +++ b/0002-remove-ansi-escape-codes-from-log-file.patch @@ -0,0 +1,79 @@ +From 8d0022d9540112a92ce8d88c91c4ac10bad8c9ef Mon Sep 17 00:00:00 2001 +From: Florian Pritz <bluewind@xinu.at> +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 <bluewind@xinu.at> +--- + 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/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..9f798e48e6a0 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,43 @@ +# Contributor: Eric Belanger <eric@archlinux.org> +# Maintainer: Andrew Gregory <andrew.gregory.8@gmail.com> + +pkgname=openrc-sysvinit +pkgdesc="Linux System V Init patched to use alternate inittab for openrc" +depends=('sysvinit') +install=sysvinit.install +pkgver=2.88 +pkgrel=10 +arch=('i686' 'x86_64') +url="http://savannah.nongnu.org/projects/sysvinit" +license=('GPL') +groups=('base') +source=(http://download.savannah.gnu.org/releases/sysvinit/sysvinit-${pkgver}dsf.tar.bz2 + "0001-simplify-writelog.patch" + "0002-remove-ansi-escape-codes-from-log-file.patch" + "openrc-init.patch") +md5sums=('6eda8a97b86e0a6f59dabbf25202aa6f' + '26bfc38ccd225814ef9dd02842109df2' + 'a913d77f6554699bc074428cc6b07589' + 'f60460c6a3bc58376562fc76568bf3d7') + +prepare() { + cd "$srcdir/sysvinit-${pkgver}dsf" + + # 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" + + # use /etc/openrc/inittab instead of /etc/inittab + patch -p1 -d "src" -i "$srcdir/openrc-init.patch" +} + +build() { + cd "$srcdir/sysvinit-${pkgver}dsf" + make -C src init +} + +package() { + cd "$srcdir/sysvinit-${pkgver}dsf" + install -d "$pkgdir/usr/bin" + install -m 755 src/init "$pkgdir/usr/bin/init-openrc" +} diff --git a/openrc-init.patch b/openrc-init.patch new file mode 100644 index 000000000000..869bb7dd2e2f --- /dev/null +++ b/openrc-init.patch @@ -0,0 +1,11 @@ +--- src/paths.h 2012-09-28 23:52:32.635670907 -0400 ++++ src/paths.h.new 2012-09-28 23:52:39.504932330 -0400 +@@ -26,7 +26,7 @@ + #define CONSOLE "/dev/console" /* Logical system console */ + #define SECURETTY "/etc/securetty" /* List of root terminals */ + #define SDALLOW "/etc/shutdown.allow" /* Users allowed to shutdown */ +-#define INITTAB "/etc/inittab" /* Location of inittab */ ++#define INITTAB "/etc/openrc/inittab" /* Location of inittab */ + #define INIT "/sbin/init" /* Location of init itself. */ + #define NOLOGIN "/etc/nologin" /* Stop user logging in. */ + #define FASTBOOT "/fastboot" /* Enable fast boot. */ diff --git a/sysvinit.install b/sysvinit.install new file mode 100644 index 000000000000..bbda4bee8da3 --- /dev/null +++ b/sysvinit.install @@ -0,0 +1,7 @@ +post_install() { + echo "To boot using OpenRC append init=/usr/bin/init-openrc to your kernel bootline." +} + +post_upgrade() { + [ -x usr/bin/init-openrc ] && usr/bin/init-openrc u +} |