OBS User unknown 2009-05-15 22:05:38 +00:00 committed by Git OBS Bridge
parent 5862093f38
commit 3fb275e5df
4 changed files with 78 additions and 113 deletions

View File

@ -1,31 +0,0 @@
Index: src/Makefile
===================================================================
--- src/Makefile 2009-05-06 21:31:08.000000000 +0200
+++ src/Makefile 2009-05-06 21:33:06.000000000 +0200
@@ -69,7 +69,7 @@ endif
all: $(BIN) $(SBIN) $(USRBIN)
init: init.o init_utmp.o
- $(CC) $(LDFLAGS) $(STATIC) -o $@ init.o init_utmp.o -lselinux -lsepol
+ $(CC) $(LDFLAGS) -Wl,--as-needed -o $@ init.o init_utmp.o -lselinux -lsepol
halt: halt.o ifdown.o hddown.o utmp.o reboot.h
$(CC) $(LDFLAGS) -o $@ halt.o ifdown.o hddown.o utmp.o
@@ -90,7 +90,7 @@ runlevel: runlevel.o
$(CC) $(LDFLAGS) -o $@ runlevel.o
sulogin: sulogin.o
- $(CC) $(LDFLAGS) -o $@ sulogin.o $(LCRYPT) -lselinux
+ $(CC) $(LDFLAGS) -Wl,--as-needed -o $@ sulogin.o $(LCRYPT) -lselinux
wall: dowall.o wall.o
$(CC) $(LDFLAGS) -o $@ dowall.o wall.o
@@ -99,7 +99,7 @@ shutdown: dowall.o shutdown.o utmp.o reb
$(CC) $(LDFLAGS) -o $@ dowall.o shutdown.o utmp.o
bootlogd: bootlogd.o
- $(CC) $(LDFLAGS) -o $@ bootlogd.o -lutil
+ $(CC) $(LDFLAGS) -Wl,--as-needed -o $@ bootlogd.o -lutil
init.o: init.c init.h set.h reboot.h initreq.h
$(CC) -c $(CFLAGS) $(IFLAGS) init.c

View File

@ -16,7 +16,7 @@
+patch -p0 -b -s --suffix=.selinux < ../sysvinit-2.86-selinux.patch
+patch -p0 -b -s --suffix=.fuse < ../sysvinit-2.86-fuse-no-kill.patch
--- src/Makefile
+++ src/Makefile 2006-08-18 14:45:28.000000000 +0200
+++ src/Makefile 2009-05-11 10:05:28.482401539 +0200
@@ -8,17 +8,20 @@
# Version: @(#)Makefile 2.85-13 23-Mar-2004 miquels@cistron.nl
#
@ -28,9 +28,9 @@
-LDFLAGS = -s
-STATIC =
+CFLAGS = -Wall $(RPM_OPT_FLAGS) -D_GNU_SOURCE -pipe
+LDFLAGS = -Wl,-warn-common
+STATIC = -static
+IFLAGS = -D__NO_STRING_INLINES -D__OPTIMIZE_SIZE__
+LDFLAGS = -Wl,-warn-common,--as-needed,-O2
+STATIC = -Wl,--reduce-memory-overheads,--hash-size=8599
+IFLAGS = -D__NO_STRING_INLINES -D__OPTIMIZE_SIZE__ -Os
# For some known distributions we do not build all programs, otherwise we do.
BIN =
@ -86,15 +86,6 @@
MANDIR = /usr/share/man
# Additional libs for GNU libc.
@@ -78,7 +90,7 @@ runlevel: runlevel.o
$(CC) $(LDFLAGS) -o $@ runlevel.o
sulogin: sulogin.o
- $(CC) $(LDFLAGS) $(STATIC) -o $@ sulogin.o $(LCRYPT) -lselinux
+ $(CC) $(LDFLAGS) -o $@ sulogin.o $(LCRYPT) -lselinux
wall: dowall.o wall.o
$(CC) $(LDFLAGS) -o $@ dowall.o wall.o
@@ -90,13 +102,13 @@ bootlogd: bootlogd.o
$(CC) $(LDFLAGS) -o $@ bootlogd.o -lutil
@ -174,7 +165,7 @@
} else
ttynm[0] = 0;
init++;
@@ -129,7 +133,7 @@ void wall(char *text, int fromshutdown,
@@ -129,7 +133,7 @@ void wall(char *text, int fromshutdown,
struct sigaction sa;
struct utmp *utmp;
time_t t;
@ -183,7 +174,7 @@
char line[81];
char *date, *p;
char *user, *tty;
@@ -178,11 +182,11 @@ void wall(char *text, int fromshutdown,
@@ -178,11 +182,11 @@ void wall(char *text, int fromshutdown,
while ((utmp = getutent()) != NULL) {
if(utmp->ut_type != USER_PROCESS ||
utmp->ut_user[0] == 0) continue;
@ -199,9 +190,9 @@
if (strstr(term, "/../")) continue;
--- src/init.c
+++ src/init.c
@@ -53,12 +53,12 @@
#include <selinux/selinux.h>
+++ src/init.c 2009-05-11 00:00:00.000000000 +0200
@@ -54,12 +54,12 @@
#include <sepol/sepol.h>
#ifdef __i386__
-# if (__GLIBC__ >= 2)
@ -216,7 +207,7 @@
# endif
# endif
#endif
@@ -68,6 +68,12 @@
@@ -70,6 +70,12 @@
#include "reboot.h"
#include "set.h"
@ -229,7 +220,7 @@
#ifndef SIGPWR
# define SIGPWR SIGUSR2
#endif
@@ -82,11 +88,15 @@
@@ -84,11 +90,15 @@
/* Set a signal handler. */
#define SETSIG(sa, sig, fun, flags) \
do { \
@ -245,7 +236,7 @@
/* Version information */
char *Version = "@(#) init " VERSION " " DATE " miquels@cistron.nl";
@@ -208,6 +218,7 @@ char *extra_env[NR_EXTRA_ENV];
@@ -212,6 +222,7 @@ char *extra_env[NR_EXTRA_ENV];
* This only works correctly because the linux select updates
* the elapsed time in the struct timeval passed to select!
*/
@ -253,7 +244,7 @@
void do_sleep(int sec)
{
struct timeval tv;
@@ -216,13 +227,14 @@ void do_sleep(int sec)
@@ -220,13 +231,14 @@ void do_sleep(int sec)
tv.tv_usec = 0;
while(select(0, NULL, NULL, NULL, &tv) < 0 && errno == EINTR)
@ -269,7 +260,7 @@
void *imalloc(size_t size)
{
void *m;
@@ -235,7 +247,7 @@ void *imalloc(size_t size)
@@ -239,7 +251,7 @@ void *imalloc(size_t size)
return m;
}
@ -278,7 +269,7 @@
char *istrdup(char *s)
{
char *m;
@@ -252,6 +264,7 @@ char *istrdup(char *s)
@@ -256,6 +268,7 @@ char *istrdup(char *s)
* Send the state info of the previous running init to
* the new one, in a version-independant way.
*/
@ -286,7 +277,7 @@
void send_state(int fd)
{
FILE *fp;
@@ -316,7 +329,7 @@ static int get_void(FILE *f)
@@ -320,7 +333,7 @@ static int get_void(FILE *f)
int c;
while ((c = getc(f)) != EOF && c != '\n')
@ -295,7 +286,7 @@
return (c != EOF);
}
@@ -333,7 +346,7 @@ static int get_cmd(FILE *f)
@@ -337,7 +350,7 @@ static int get_cmd(FILE *f)
return C_EOF;
for(i = 0; cmds[i].cmd && strcmp(cmds[i].name, cmd) != 0; i++)
@ -304,7 +295,7 @@
return cmds[i].cmd;
}
@@ -438,6 +451,7 @@ static CHILD *get_record(FILE *f)
@@ -448,6 +461,7 @@ static CHILD *get_record(FILE *f)
* Read the complete state info from the state pipe.
* Returns 0 on success
*/
@ -312,7 +303,7 @@
int receive_state(int fd)
{
FILE *f;
@@ -451,7 +465,7 @@ int receive_state(int fd)
@@ -461,7 +475,7 @@ int receive_state(int fd)
get_string(old_version, sizeof(old_version), f);
oops_error = 0;
for (pp = &family; (*pp = get_record(f)) != NULL; pp = &((*pp)->next))
@ -321,7 +312,7 @@
fclose(f);
return oops_error;
}
@@ -485,6 +499,7 @@ static int setproctitle(char *fmt, ...)
@@ -495,6 +509,7 @@ static int setproctitle(char *fmt, ...)
/*
* Set console_dev to a working console.
*/
@ -329,7 +320,7 @@
void console_init(void)
{
int fd;
@@ -524,6 +539,7 @@ void console_init(void)
@@ -534,6 +549,7 @@ void console_init(void)
/*
* Open the console with retries.
*/
@ -337,7 +328,7 @@
int console_open(int mode)
{
int f, fd = -1;
@@ -553,6 +569,7 @@ int console_open(int mode)
@@ -563,6 +579,7 @@ int console_open(int mode)
/*
* We got a signal (HUP PWR WINCH ALRM INT)
*/
@ -345,7 +336,7 @@
void signal_handler(int sig)
{
ADDSET(got_signals, sig);
@@ -561,6 +578,7 @@ void signal_handler(int sig)
@@ -571,6 +588,7 @@ void signal_handler(int sig)
/*
* SIGCHLD: one of our children has died.
*/
@ -353,7 +344,7 @@
void chld_handler()
{
CHILD *ch;
@@ -600,7 +618,8 @@ void chld_handler()
@@ -610,7 +628,8 @@ void chld_handler()
*
* The SIGCONT handler
*/
@ -363,7 +354,7 @@
{
got_cont = 1;
}
@@ -608,6 +627,7 @@ void cont_handler()
@@ -618,6 +637,7 @@ void cont_handler()
/*
* Fork and dump core in /.
*/
@ -371,7 +362,7 @@
void coredump(void)
{
static int dumped = 0;
@@ -641,6 +661,7 @@ void coredump(void)
@@ -651,6 +671,7 @@ void coredump(void)
* If we have the info, print where it occured.
* Then sleep 30 seconds and try to continue.
*/
@ -379,7 +370,7 @@
#if defined(STACK_DEBUG) && defined(__linux__)
void segv_handler(int sig, struct sigcontext ctx)
{
@@ -657,7 +678,7 @@ void segv_handler(int sig, struct sigcon
@@ -667,7 +688,7 @@ void segv_handler(int sig, struct sigcon
errno = saved_errno;
}
#else
@ -388,7 +379,7 @@
{
int saved_errno = errno;
@@ -672,7 +693,8 @@ void segv_handler()
@@ -682,7 +703,8 @@ void segv_handler()
/*
* The SIGSTOP & SIGTSTP handler
*/
@ -398,7 +389,7 @@
{
int saved_errno = errno;
@@ -685,6 +707,7 @@ void stop_handler()
@@ -695,6 +717,7 @@ void stop_handler()
/*
* Set terminal settings to reasonable defaults
*/
@ -406,7 +397,7 @@
void console_stty(void)
{
struct termios tty;
@@ -700,16 +723,23 @@ void console_stty(void)
@@ -710,16 +733,23 @@ void console_stty(void)
tty.c_cflag &= CBAUD|CBAUDEX|CSIZE|CSTOPB|PARENB|PARODD;
tty.c_cflag |= HUPCL|CLOCAL|CREAD;
@ -440,7 +431,7 @@
/*
* Set pre and post processing
@@ -719,6 +749,14 @@ void console_stty(void)
@@ -729,6 +759,14 @@ void console_stty(void)
tty.c_lflag = ISIG|ICANON|ECHO|ECHOCTL|ECHOPRT|ECHOKE;
/*
@ -455,7 +446,7 @@
* Now set the terminal line.
* We don't care about non-transmitted output data
* and non-read input data.
@@ -731,6 +769,7 @@ void console_stty(void)
@@ -741,6 +779,7 @@ void console_stty(void)
/*
* Print to the system console
*/
@ -463,7 +454,7 @@
void print(char *s)
{
int fd;
@@ -747,6 +786,7 @@ void print(char *s)
@@ -757,6 +796,7 @@ void print(char *s)
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)))
#endif
@ -471,7 +462,7 @@
void initlog(int loglevel, char *s, ...)
{
va_list va_alist;
@@ -789,6 +829,7 @@ char **init_buildenv(int child)
@@ -799,6 +839,7 @@ char **init_buildenv(int child)
char i_lvl[] = "RUNLEVEL=x";
char i_prev[] = "PREVLEVEL=x";
char i_cons[32];
@ -479,7 +470,7 @@
char **e;
int n, i;
@@ -808,6 +849,7 @@ char **init_buildenv(int child)
@@ -818,6 +859,7 @@ char **init_buildenv(int child)
snprintf(i_cons, sizeof(i_cons), "CONSOLE=%s", console_dev);
i_lvl[9] = thislevel;
i_prev[10] = prevlevel;
@ -487,7 +478,7 @@
e[n++] = istrdup(i_lvl);
e[n++] = istrdup(i_prev);
e[n++] = istrdup(i_cons);
@@ -836,6 +878,7 @@ void init_freeenv(char **e)
@@ -846,6 +888,7 @@ void init_freeenv(char **e)
* This function is too long and indents too deep.
*
*/
@ -495,7 +486,7 @@
int spawn(CHILD *ch, int *res)
{
char *args[16]; /* Argv array */
@@ -978,7 +1021,7 @@ int spawn(CHILD *ch, int *res)
@@ -988,7 +1031,7 @@ int spawn(CHILD *ch, int *res)
}
SETSIG(sa, SIGCHLD, SIG_DFL, SA_RESTART);
if ((pid = fork()) < 0) {
@ -504,7 +495,7 @@
exit(1);
}
if (pid > 0) {
@@ -1007,7 +1050,7 @@ int spawn(CHILD *ch, int *res)
@@ -1017,7 +1060,7 @@ int spawn(CHILD *ch, int *res)
* this with a temporary process.
*/
if ((pid = fork()) < 0) {
@ -513,7 +504,7 @@
exit(1);
}
if (pid == 0) {
@@ -1073,6 +1116,7 @@ int spawn(CHILD *ch, int *res)
@@ -1083,6 +1126,7 @@ int spawn(CHILD *ch, int *res)
/*
* Start a child running!
*/
@ -521,7 +512,7 @@
void startup(CHILD *ch)
{
/*
@@ -1115,6 +1159,7 @@ void startup(CHILD *ch)
@@ -1125,6 +1169,7 @@ void startup(CHILD *ch)
/*
* Read the inittab file.
*/
@ -529,7 +520,7 @@
void read_inittab(void)
{
FILE *fp; /* The INITTAB file */
@@ -1172,7 +1217,7 @@ void read_inittab(void)
@@ -1182,7 +1227,7 @@ void read_inittab(void)
* Skip comments and empty lines
*/
for(p = buf; *p == ' ' || *p == '\t'; p++)
@ -538,7 +529,7 @@
if (*p == '#' || *p == '\n') continue;
/*
@@ -1495,6 +1540,7 @@ void read_inittab(void)
@@ -1505,6 +1550,7 @@ void read_inittab(void)
* The entries that do not belong here at all are removed
* from the list.
*/
@ -546,7 +537,7 @@
void start_if_needed(void)
{
CHILD *ch; /* Pointer to child */
@@ -1540,6 +1586,7 @@ void start_if_needed(void)
@@ -1550,6 +1596,7 @@ void start_if_needed(void)
/*
* Ask the user on the console for a runlevel
*/
@ -554,7 +545,7 @@
int ask_runlevel(void)
{
const char prompt[] = "\nEnter runlevel: ";
@@ -1568,6 +1615,7 @@ int ask_runlevel(void)
@@ -1578,6 +1625,7 @@ int ask_runlevel(void)
* Search the INITTAB file for the 'initdefault' field, with the default
* runlevel. If this fails, ask the user to supply a runlevel.
*/
@ -562,7 +553,7 @@
int get_init_default(void)
{
CHILD *ch;
@@ -1616,6 +1664,7 @@ int get_init_default(void)
@@ -1626,6 +1674,7 @@ int get_init_default(void)
* the "old" INITLVL and arg == 0, try to read the new
* runlevel from that file first.
*/
@ -570,7 +561,7 @@
int read_level(int arg)
{
CHILD *ch; /* Walk through list */
@@ -1684,7 +1733,16 @@ int read_level(int arg)
@@ -1694,7 +1743,16 @@ int read_level(int arg)
initlog(L_VB, "Switching to runlevel: %c", foo);
}
@ -588,7 +579,7 @@
/* Check if this is a runlevel a, b or c */
if (strchr("ABC", foo)) {
@@ -1723,6 +1781,7 @@ int read_level(int arg)
@@ -1733,6 +1791,7 @@ int read_level(int arg)
* longer than 5 minutes, or inittab was read again due
* to user interaction.
*/
@ -596,7 +587,7 @@
void fail_check(void)
{
CHILD *ch; /* Pointer to child structure */
@@ -1755,6 +1814,7 @@ void fail_check(void)
@@ -1765,6 +1824,7 @@ void fail_check(void)
}
/* Set all 'Fail' timers to 0 */
@ -604,7 +595,7 @@
void fail_cancel(void)
{
CHILD *ch;
@@ -1769,6 +1829,7 @@ void fail_cancel(void)
@@ -1779,6 +1839,7 @@ void fail_cancel(void)
/*
* Start up powerfail entries.
*/
@ -612,7 +603,7 @@
void do_power_fail(int pwrstat)
{
CHILD *ch;
@@ -1802,6 +1863,7 @@ void do_power_fail(int pwrstat)
@@ -1812,6 +1873,7 @@ void do_power_fail(int pwrstat)
/*
* Check for state-pipe presence
*/
@ -620,7 +611,7 @@
int check_pipe(int fd)
{
struct timeval t;
@@ -1822,6 +1884,7 @@ int check_pipe(int fd)
@@ -1832,6 +1894,7 @@ int check_pipe(int fd)
/*
* Make a state-pipe.
*/
@ -628,7 +619,7 @@
int make_pipe(int fd)
{
int fds[2];
@@ -1839,6 +1902,7 @@ int make_pipe(int fd)
@@ -1849,6 +1912,7 @@ int make_pipe(int fd)
/*
* Attempt to re-exec.
*/
@ -636,7 +627,7 @@
void re_exec(void)
{
CHILD *ch;
@@ -1896,7 +1960,7 @@ void re_exec(void)
@@ -1906,7 +1970,7 @@ void re_exec(void)
* The existing init process execs a new init binary.
*/
env = init_buildenv(0);
@ -645,7 +636,7 @@
/*
* We shouldn't be here, something failed.
@@ -1914,6 +1978,7 @@ void re_exec(void)
@@ -1943,6 +2007,7 @@ void redo_utmp_wtmp(void)
* We got a change runlevel request through the
* init.fifo. Process it.
*/
@ -653,8 +644,8 @@
void fifo_new_level(int level)
{
#if CHANGE_WAIT
@@ -1942,7 +2007,7 @@ void fifo_new_level(int level)
runlevel == '1') console_stty();
@@ -1972,7 +2037,7 @@ void fifo_new_level(int level)
if (runlevel > '1' && runlevel < '6') redo_utmp_wtmp();
read_inittab();
fail_cancel();
- setproctitle("init [%c]", runlevel);
@ -662,7 +653,7 @@
}
}
}
@@ -2010,6 +2075,7 @@ void initcmd_setenv(char *data, int size
@@ -2040,6 +2105,7 @@ void initcmd_setenv(char *data, int size
* the 2.2 kernel credential stuff to see who we're talking to.
*
*/
@ -670,7 +661,7 @@
void check_init_fifo(void)
{
struct init_request request;
@@ -2075,7 +2141,7 @@ void check_init_fifo(void)
@@ -2105,7 +2171,7 @@ void check_init_fifo(void)
tv.tv_usec = 0;
n = select(pipe_fd + 1, &fds, NULL, NULL, &tv);
if (n <= 0) {
@ -679,7 +670,7 @@
continue;
}
@@ -2092,7 +2158,7 @@ void check_init_fifo(void)
@@ -2122,7 +2188,7 @@ void check_init_fifo(void)
return;
}
if (n <= 0) {
@ -688,7 +679,7 @@
initlog(L_VB, "error reading initrequest");
continue;
}
@@ -2164,6 +2230,7 @@ void check_init_fifo(void)
@@ -2194,6 +2260,7 @@ void check_init_fifo(void)
* This function is used in the transition
* sysinit (-> single user) boot -> multi-user.
*/
@ -696,7 +687,7 @@
void boot_transitions()
{
CHILD *ch;
@@ -2240,7 +2307,7 @@ void boot_transitions()
@@ -2270,7 +2337,7 @@ void boot_transitions()
write_utmp_wtmp("runlevel", "~~", runlevel + 256 * oldlevel, RUN_LVL, "~");
thislevel = runlevel;
prevlevel = oldlevel;
@ -705,7 +696,7 @@
}
}
}
@@ -2249,6 +2316,7 @@ void boot_transitions()
@@ -2279,6 +2346,7 @@ void boot_transitions()
* Init got hit by a signal. See which signal it is,
* and act accordingly.
*/
@ -713,7 +704,7 @@
void process_signals()
{
CHILD *ch;
@@ -2273,7 +2341,12 @@ void process_signals()
@@ -2303,7 +2371,12 @@ void process_signals()
}
if (ISMEMBER(got_signals, SIGINT)) {
@ -726,7 +717,7 @@
/* Tell ctrlaltdel entry to start up */
for(ch = family; ch; ch = ch->next)
if (ch->action == CTRLALTDEL)
@@ -2335,7 +2408,7 @@ void process_signals()
@@ -2365,7 +2438,7 @@ void process_signals()
runlevel == '1') console_stty();
read_inittab();
fail_cancel();
@ -735,7 +726,7 @@
DELSET(got_signals, SIGHUP);
}
}
@@ -2354,7 +2427,8 @@ void process_signals()
@@ -2384,7 +2457,8 @@ void process_signals()
/*
* The main loop
*/
@ -745,7 +736,7 @@
{
CHILD *ch;
struct sigaction sa;
@@ -2507,6 +2581,7 @@ int init_main()
@@ -2539,6 +2613,7 @@ int init_main()
/*
* Tell the user about the syntax we expect.
*/
@ -753,7 +744,7 @@
void usage(char *s)
{
fprintf(stderr, "Usage: %s 0123456SsQqAaBbCcUu\n", s);
@@ -2564,12 +2639,38 @@ int telinit(char *progname, int argc, ch
@@ -2596,12 +2671,38 @@ int telinit(char *progname, int argc, ch
request.sleeptime = sltime;
}
@ -794,7 +785,7 @@
close(fd);
alarm(0);
return 0;
@@ -2619,6 +2720,8 @@ int main(int argc, char **argv)
@@ -2652,6 +2753,8 @@ int main(int argc, char **argv)
p++;
else
p = argv[0];
@ -803,7 +794,7 @@
umask(022);
/* Quick check */
@@ -2651,7 +2754,7 @@ int main(int argc, char **argv)
@@ -2684,7 +2787,7 @@ int main(int argc, char **argv)
for (f = 0; f < argc; f++)
maxproclen += strlen(argv[f]) + 1;
reload = 1;
@ -812,7 +803,7 @@
init_main();
}
@@ -2680,7 +2783,7 @@ int main(int argc, char **argv)
@@ -2727,7 +2830,7 @@ int main(int argc, char **argv)
argv0 = argv[0];
argv[1] = NULL;
setproctitle("init boot");

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon May 11 10:27:43 CEST 2009 - werner@suse.de
- Make it build
-------------------------------------------------------------------
Thu May 7 12:47:36 CEST 2009 - werner@suse.de

View File

@ -30,7 +30,7 @@ Group: System/Base
PreReq: coreutils
AutoReqProv: on
Version: 2.86
Release: 208
Release: 209
Summary: SysV-Style init
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libselinux-devel libsepol-devel
@ -65,7 +65,6 @@ Patch18: sysvinit-2.86-selinux.patch
Patch19: sysvinit-2.86-fuse-no-kill.patch
Patch20: startpar-preload.diff
Patch21: startpar-bootchart.diff
Patch22: sysvinit-2.86-dynamically_link_init.patch
%description
System V style init programs by Miquel van Smoorenburg that control the
@ -101,7 +100,6 @@ Authors:
%patch -P 17 -b .hddown
%patch -P 18 -b .selinux
%patch -P 19 -b .fuse
%patch -P 22 -b .dynamic
%patch
pushd ../powerd-%{PDVER}
%patch -P 2
@ -329,6 +327,8 @@ rm -rf ${RPM_BUILD_ROOT}
%doc %{_mandir}/man8/mkill.8.gz
%changelog
* Mon May 11 2009 werner@suse.de
- Make it build
* Thu May 07 2009 werner@suse.de
- Reorder last patch in spec file
* Wed May 06 2009 crrodriguez@suse.de