Hello community,
here is the log from the commit of package sysvinit for openSUSE:Factory
checked in at Mon Mar 9 23:36:05 CET 2009.
--------
--- sysvinit/sysvinit.changes 2009-03-05 17:45:14.000000000 +0100
+++ sysvinit/sysvinit.changes 2009-03-09 13:55:41.188001150 +0100
@@ -1,0 +2,5 @@
+Mon Mar 9 13:54:55 CET 2009 - werner(a)suse.de
+
+- Add patch from Debian people to startpar and mode to version 0.53
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
startpar-0.52.dif
startpar-0.52-preload.diff
startpar-0.52.tar.bz2
New:
----
startpar-0.53.dif
startpar-0.53.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sysvinit.spec ++++++
--- /var/tmp/diff_new_pack.d27810/_old 2009-03-09 23:34:55.000000000 +0100
+++ /var/tmp/diff_new_pack.d27810/_new 2009-03-09 23:34:55.000000000 +0100
@@ -24,13 +24,13 @@
%define KPVER 2.14
%define SCVER 1.09
%define SIVER 2.86
-%define START 0.52
+%define START 0.53
License: GPL v2 or later
Group: System/Base
PreReq: coreutils
AutoReqProv: on
Version: 2.86
-Release: 197
+Release: 198
Summary: SysV-Style init
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libselinux-devel libsepol-devel
@@ -38,7 +38,7 @@
Source2: killproc-2.14.tar.bz2
Source3: powerd-2.0.2.tar.bz2
Source4: showconsole-1.09.tar.bz2
-Source5: startpar-0.52.tar.bz2
+Source5: startpar-0.53.tar.bz2
Source6: rc.powerd
Source7: sysvinit-rpmlintrc
Source8: mkinitrd-boot.sh
@@ -57,13 +57,12 @@
Patch11: sysvinit-2.86-race.patch
Patch12: sysvinit-2.86-lib64.patch
Patch13: sysvinit-2.82-multiline.patch
-Patch14: startpar-0.52.dif
+Patch14: startpar-0.53.dif
Patch15: sysvinit-2.86-usage-message.patch
Patch16: sysvinit-2.86-full-time.patch
Patch17: sysvinit-2.86-hddown.patch
Patch18: sysvinit-2.86-selinux.patch
Patch19: sysvinit-2.86-fuse-no-kill.patch
-Patch20: startpar-0.52-preload.diff
%description
System V style init programs by Miquel van Smoorenburg that control the
@@ -111,7 +110,6 @@
popd
pushd ../startpar-%{START}
%patch -P 14
-%patch -P 20
popd
%_fixowner .
%_fixgroup .
@@ -325,6 +323,8 @@
%doc %{_mandir}/man8/mkill.8.gz
%changelog
+* Mon Mar 09 2009 werner(a)suse.de
+- Add patch from Debian people to startpar and mode to version 0.53
* Thu Mar 05 2009 werner(a)suse.de
- Updte to killproc 2.14 to include most of our patches and to
use openat(2), readlinkat(2), and opendirat(2) system calls.
++++++ startpar-0.52.dif -> startpar-0.53.dif ++++++
--- sysvinit/startpar-0.52.dif 2009-02-06 14:42:46.000000000 +0100
+++ sysvinit/startpar-0.53.dif 2009-02-12 14:52:45.000000000 +0100
@@ -1,137 +1,82 @@
---- makeboot.c
-+++ makeboot.c 2009-02-06 14:42:41.492201093 +0100
-@@ -13,6 +13,12 @@
- #include <errno.h>
- #include <limits.h>
- #include "makeboot.h"
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+# include <sys/types.h>
-+# include <sys/stat.h>
-+# include <fcntl.h>
-+static int o_flags = O_RDONLY;
-+#endif
-
-
- int tree_entries = 0;
-@@ -95,6 +101,7 @@ static struct makelist *new_list(struct
- /*
- * check whether the given target would create an infinte loop
- */
-+static int loop;
- static int check_loop(struct makenode *dep, struct makenode *src)
+--- startpar.c 2008-07-18 13:25:50.000000000 +0200
++++ startpar.c 2009-02-12 14:49:10.987760000 +0100
+@@ -29,6 +29,8 @@
+ #include <sys/select.h>
+ #include <sys/time.h>
+ #include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <sys/un.h>
+ #include <sys/sysinfo.h>
+ #include <sys/stat.h>
+ #include <time.h>
+@@ -64,6 +66,8 @@
+ static char *run_mode = NULL;
+ static struct makenode **nodevec;
+
++static enum { Unknown, Preload, NoPreload } ispreload = Unknown;
++
+ #define PBUF_SIZE 8192
+ struct prg {
+ char *name;
+@@ -248,6 +252,10 @@
+ if (read_proc(&prcs_run, &prcs_blked))
+ return par;
+
++ /* if we have preload running, we expect I/O not to be a problem */
++ if (ispreload == Preload)
++ prcs_blked = 0;
++
+ newpar = (par*numcpu) - prcs_run + 1; /* +1 for startpar its self */
+ newpar -= (int)(((double)prcs_blked)*iorate); /* I/O load reduction */
+
+@@ -271,6 +279,8 @@
+ return checksystem(par, start, false);
+ }
+
++#define SOCK_PATH "/dev/shm/preload_sock"
++
+ void run(struct prg *p)
{
- struct makelist *s;
-@@ -103,6 +110,8 @@ static int check_loop(struct makenode *d
- fprintf(stderr, "loop exists %s in %s!\n", dep->name, src->name);
- return 1;
- }
-+ if (loop++ > 999)
-+ return 1;
- if (check_loop(s->node, src))
- return 1;
- }
-@@ -117,6 +126,7 @@ static void add_depend(struct makenode *
- struct makenode *dep;
-
- dep = add_target(dst);
-+ loop = 0;
- if (check_loop(dep, node))
- return;
- dep->select = new_list(node, dep->select);
-@@ -158,11 +168,28 @@ void parse_makefile(const char *path)
- char *s, *strp, *p;
- struct makenode *node;
-
-- if ((fp = fopen(path, "r")) == NULL) {
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+ int fd;
-+
-+ if (getuid() == (uid_t)0)
-+ o_flags |= O_NOATIME;
-+ if ((fd = open(path, o_flags)) < 0) {
- fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
- exit(1);
- }
--
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
-+
-+ if ((fp = fdopen(fd, "r")) == NULL)
-+#else
-+ if ((fp = fopen(path, "r")) == NULL)
-+#endif
-+ {
-+ fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
-+ exit(1);
-+ }
+ char *m = 0;
+@@ -341,6 +351,40 @@
+
+ closeall();
+
++ if (!strcmp(arg, "start"))
++ {
++ int s, t, len;
++ struct sockaddr_un remote;
++ char str[100];
+
- while (fgets(buf, sizeof(buf), fp)) {
- for (s = buf; *s && isspace(*s); s++)
- ;
-@@ -198,6 +225,11 @@ void parse_makefile(const char *path)
- }
- }
- }
-+
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
-+#endif
-+
- fclose(fp);
-
- for (node = tree_list; node; node = node->next) {
-@@ -234,7 +266,17 @@ static void filter_files(const char *dir
-
- filter_prefix = prefix;
- snprintf(path, sizeof(path), "/etc/init.d/%s.d", dir);
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+ if ((i = open(path, o_flags|O_DIRECTORY|O_LARGEFILE)) >= 0) {
-+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_SEQUENTIAL);
-+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_NOREUSE);
-+ }
-+#endif
- ndirs = scandir(path, &dirlist, dirfilter, alphasort);
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+ if (i >= 0)
-+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_DONTNEED);
-+#endif
- /* mark all matching nodes */
- for (i = 0; i < ndirs; i++) {
- t = lookup_target(dirlist[i]->d_name + 3);
-@@ -342,6 +384,17 @@ struct makenode *pickup_task(void)
- }
- }
- if (best) {
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
-+ char path[128];
-+ int fd;
-+ snprintf(path, sizeof(path), "/etc/init.d/%s", best->name);
-+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
-+ close(fd);
-+ }
-+#endif
- blogger("service %s", best->name);
- best->status = T_RUNNING;
- }
-@@ -359,6 +412,17 @@ void finish_task(struct makenode *node)
- return;
- for (n = node->select; n; n = n->next)
- n->node->num_deps--;
-+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
++ s = socket(AF_UNIX, SOCK_STREAM, 0);
++ if (s != -1)
+ {
-+ char path[128];
-+ int fd;
-+ snprintf(path, sizeof(path), "/etc/init.d/%s", node->name);
-+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
-+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
-+ close(fd);
-+ }
++ memset(&remote, 0, sizeof(struct sockaddr_un));
++ remote.sun_family = AF_UNIX;
++ strcpy(remote.sun_path, SOCK_PATH);
++ len = strlen(remote.sun_path) + sizeof(remote.sun_family);
++
++ t = connect(s, (struct sockaddr *)&remote, len);
++ if (t != -1)
++ {
++ ispreload = Preload;
++ send(s, p->name, strlen(p->name), 0);
++ recv(s, str, 100, 0);
++ }
++ else if ( ispreload == Unknown)
++ {
++ /*
++ * if we connected to preload once, we know it ran.
++ * In case we can't connect to it later, it means it did
++ * its job and we can guess I/O is no longer a problem.
++ */
++ ispreload = NoPreload;
++ }
++ close(s);
+ }
-+#endif
- node->status = T_FINISHED;
- blogger("service %s done", node->name);
- }
++ }
++
+ if (run_mode)
+ {
+ char path[128];
+
++++++ startpar-0.52.tar.bz2 -> startpar-0.53.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/startpar-0.52/makeboot.c new/startpar-0.53/makeboot.c
--- old/startpar-0.52/makeboot.c 2008-07-18 11:15:21.000000000 +0200
+++ new/startpar-0.53/makeboot.c 2009-03-09 13:27:31.000000000 +0100
@@ -13,6 +13,12 @@
#include <errno.h>
#include <limits.h>
#include "makeboot.h"
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <fcntl.h>
+static int o_flags = O_RDONLY;
+#endif
int tree_entries = 0;
@@ -95,6 +101,7 @@
/*
* check whether the given target would create an infinte loop
*/
+static int loop;
static int check_loop(struct makenode *dep, struct makenode *src)
{
struct makelist *s;
@@ -103,6 +110,8 @@
fprintf(stderr, "loop exists %s in %s!\n", dep->name, src->name);
return 1;
}
+ if (loop++ > 999)
+ return 1;
if (check_loop(s->node, src))
return 1;
}
@@ -117,6 +126,7 @@
struct makenode *dep;
dep = add_target(dst);
+ loop = 0;
if (check_loop(dep, node))
return;
dep->select = new_list(node, dep->select);
@@ -158,11 +168,28 @@
char *s, *strp, *p;
struct makenode *node;
- if ((fp = fopen(path, "r")) == NULL) {
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ int fd;
+
+ if (getuid() == (uid_t)0)
+ o_flags |= O_NOATIME;
+ if ((fd = open(path, o_flags)) < 0) {
+ fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
+ exit(1);
+ }
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
+
+ if ((fp = fdopen(fd, "r")) == NULL)
+#else
+ if ((fp = fopen(path, "r")) == NULL)
+#endif
+ {
fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
exit(1);
}
-
+
while (fgets(buf, sizeof(buf), fp)) {
for (s = buf; *s && isspace(*s); s++)
;
@@ -198,6 +225,11 @@
}
}
}
+
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
+#endif
+
fclose(fp);
for (node = tree_list; node; node = node->next) {
@@ -233,16 +265,32 @@
struct makenode *t, *next;
filter_prefix = prefix;
+#ifdef SUSE /* SuSE */
snprintf(path, sizeof(path), "/etc/init.d/%s.d", dir);
+#else /* Debian */
+ snprintf(path, sizeof(path), "/etc/%s.d", dir);
+#endif
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ if ((i = open(path, o_flags|O_DIRECTORY|O_LARGEFILE)) >= 0) {
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_SEQUENTIAL);
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_NOREUSE);
+ }
+#endif
ndirs = scandir(path, &dirlist, dirfilter, alphasort);
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ if (i >= 0)
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_DONTNEED);
+#endif
/* mark all matching nodes */
- for (i = 0; i < ndirs; i++) {
- t = lookup_target(dirlist[i]->d_name + 3);
- if (t)
- t->status = 1;
- free(dirlist[i]);
+ if (ndirs >= 0) {
+ for (i = 0; i < ndirs; i++) {
+ t = lookup_target(dirlist[i]->d_name + 3);
+ if (t)
+ t->status = 1;
+ free(dirlist[i]);
+ }
+ free(dirlist);
}
- free(dirlist);
/* deselect non-matching nodes */
for (t = tree_list; t; t = next) {
next = t->next;
@@ -287,6 +335,7 @@
{
char buf[4] = "rc0";
if (! strcmp(action, "boot")) {
+#ifdef SUSE /* SuSE */
filter_files("boot", 'S', 0);
} else if (! strcmp(action, "halt")) {
filter_files("boot", 'K', 0);
@@ -300,6 +349,19 @@
filter_files(buf, 'K', 0);
buf[2] = *run;
filter_files(buf, 'S', 1);
+#else /* Debian */
+ filter_files("rcS", 'S', 0);
+ } else if (! strcmp(action, "start")) {
+ buf[2] = *prev;
+ filter_files(buf, 'S', 1);
+ buf[2] = *run;
+ filter_files(buf, 'S', 0);
+ } else {
+ buf[2] = *prev;
+ filter_files(buf, 'K', 1);
+ buf[2] = *run;
+ filter_files(buf, 'K', 0);
+#endif
}
}
@@ -342,6 +404,17 @@
}
}
if (best) {
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ char path[128];
+ int fd;
+ snprintf(path, sizeof(path), "/etc/init.d/%s", best->name);
+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
+ close(fd);
+ }
+#endif
blogger("service %s", best->name);
best->status = T_RUNNING;
}
@@ -359,6 +432,17 @@
return;
for (n = node->select; n; n = n->next)
n->node->num_deps--;
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
+ {
+ char path[128];
+ int fd;
+ snprintf(path, sizeof(path), "/etc/init.d/%s", node->name);
+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
+ close(fd);
+ }
+ }
+#endif
node->status = T_FINISHED;
blogger("service %s done", node->name);
}
@@ -435,13 +519,19 @@
struct makenode *nodevec;
char makefile[64];
- if (argc != 2)
- goto out;
+ if (argc != 4) {
+ fprintf(stderr, "usage: makeboot <action> [<prev> <run>]\n");
+ goto out;
+ }
+
nodevec = xcalloc(1, sizeof(*nodevec));
snprintf(makefile, sizeof(makefile), "depend.%s", argv[1]);
parse_makefile(makefile);
- check_run_files(argv[1], "5", "6");
+
+ fprintf(stderr, "check_run_files(%s, %s, %s)\n", argv[1], argv[2],
+ argv[3]);
+ check_run_files(argv[1], argv[2], argv[3]);
out:
while ((nodevec = pickup_task())) {
fprintf(stdout, "%s\n", nodevec->name);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/startpar-0.52/Makefile new/startpar-0.53/Makefile
--- old/startpar-0.52/Makefile 2008-07-18 13:01:56.000000000 +0200
+++ new/startpar-0.53/Makefile 2009-03-09 13:27:57.000000000 +0100
@@ -1,4 +1,5 @@
-VERSION = 0.52
+VERSION = 0.53
+ISSUSE = -DSUSE
INSTALL = install -m 755
INSTALL_DATA = install -m 644
@@ -14,7 +15,11 @@
CC = gcc
OPTFLAGS = -O2 -g -Wall -W
-CFLAGS = $(OPTFLAGS) -D_GNU_SOURCE
+CFLAGS = $(OPTFLAGS) -D_GNU_SOURCE $(ISSUSE)
+
+ifeq ($(MAKECMDGOALS),makeboot)
+CFLAGS += -DTEST
+endif
.c.o:
$(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -c $<
@@ -22,13 +27,15 @@
startpar: $(OBJS)
$(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -o $@ $(OBJS)
+makeboot: makeboot.c
+
install: startpar
$(INSTALL) -d $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir)
$(INSTALL) startpar $(DESTDIR)$(sbindir)/.
$(INSTALL_DATA) startpar.8 $(DESTDIR)$(man8dir)/.
clean:
- rm -f startpar $(OBJS)
+ rm -f startpar makeboot $(OBJS)
dest: clean
mkdir -p startpar-$(VERSION)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org