rpms/initscripts/OLPC-2 initscripts-8.54.1-olpc.patch, 1.9, 1.10 initscripts.spec, 1.154, 1.155
Bernardo Innocenti (bernie)
fedora-extras-commits at redhat.com
Mon Oct 15 19:08:00 UTC 2007
Author: bernie
Update of /cvs/pkgs/rpms/initscripts/OLPC-2
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv24936
Modified Files:
initscripts-8.54.1-olpc.patch initscripts.spec
Log Message:
* Fri Oct 12 2007 Bernardo Innocenti <bernie at codewiz.org> - 8.54.1-11
- Drop olpc-dm: it is now in olpc-dm.
initscripts-8.54.1-olpc.patch:
Index: initscripts-8.54.1-olpc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/initscripts/OLPC-2/initscripts-8.54.1-olpc.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- initscripts-8.54.1-olpc.patch 1 Oct 2007 20:42:58 -0000 1.9
+++ initscripts-8.54.1-olpc.patch 15 Oct 2007 19:07:57 -0000 1.10
@@ -12,7 +12,8 @@
si::sysinit:/etc/rc.d/rc.sysinit
@@ -44,10 +44,7 @@ pr:12345:powerokwait:/sbin/shutdown -c "
# Run gettys in standard runlevels
- 1:2345:respawn:/sbin/mingetty tty1
+-1:2345:respawn:/sbin/mingetty tty1
++1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
-3:2345:respawn:/sbin/mingetty tty3
-4:2345:respawn:/sbin/mingetty tty4
@@ -22,609 +23,4 @@
# Run xdm in runlevel 5
-x:5:respawn:/etc/X11/prefdm -nodaemon
-+x:5:respawn:/sbin/olpc-dm
-diff -up /dev/null initscripts-8.54.1/src/olpc-dm.c
---- /dev/null 2007-09-18 09:50:57.766542723 -0400
-+++ initscripts-8.54.1/src/olpc-dm.c 2007-09-18 11:30:44.000000000 -0400
-@@ -0,0 +1,571 @@
-+#include <unistd.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <pwd.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <string.h>
-+#include <time.h>
-+#include <utmp.h>
-+#include <termios.h>
-+#include <setjmp.h>
-+#include <ctype.h>
-+#include <grp.h>
-+#include <sys/ioctl.h>
-+#include <sys/wait.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <sys/file.h>
-+#include <sys/syslog.h>
-+#include <sys/sysmacros.h>
-+#include <sys/param.h>
-+
-+#include <linux/major.h>
-+
-+#define OLPC_USER "olpc"
-+
-+#define TTY_MODE 0620
-+#define TTYGRPNAME "tty"
-+#define _PATH_HUSHLOGIN ".hushlogin"
-+
-+# include <security/pam_appl.h>
-+# include <security/pam_misc.h>
-+# define PAM_MAX_LOGIN_TRIES 3
-+# define PAM_FAIL_CHECK if (retcode != PAM_SUCCESS) { \
-+ fprintf(stderr,"\n%s\n",pam_strerror(pamh, retcode)); \
-+ syslog(LOG_ERR,"%s",pam_strerror(pamh, retcode)); \
-+ pam_end(pamh, retcode); exit(1); \
-+ }
-+# define PAM_END { \
-+ pam_setcred(pamh, PAM_DELETE_CRED); \
-+ retcode = pam_close_session(pamh,0); \
-+ pam_end(pamh,retcode); \
-+}
-+
-+int timeout = 60;
-+
-+struct passwd *pwd;
-+
-+static struct passwd pwdcopy;
-+char hostaddress[16]; /* used in checktty.c */
-+char *hostname; /* idem */
-+static char *username, *tty_name, *tty_number;
-+static char thishost[100];
-+static pid_t pid;
-+
-+static inline void xstrncpy(char *dest, const char *src, size_t n) {
-+ strncpy(dest, src, n-1);
-+ dest[n-1] = 0;
-+}
-+
-+static int childPid = 0;
-+static volatile int got_sig = 0;
-+
-+
-+
-+static void
-+parent_sig_handler(int signal)
-+{
-+ if(childPid)
-+ kill(-childPid, signal);
-+ else
-+ got_sig = 1;
-+ if(signal == SIGTERM)
-+ kill(-childPid, SIGHUP); /* because the shell often ignores SIGTERM */
-+}
-+
-+/* Nice and simple code provided by Linus Torvalds 16-Feb-93 */
-+/* Nonblocking stuff by Maciej W. Rozycki, macro at ds2.pg.gda.pl, 1999.
-+ He writes: "Login performs open() on a tty in a blocking mode.
-+ In some cases it may make login wait in open() for carrier infinitely,
-+ for example if the line is a simplistic case of a three-wire serial
-+ connection. I believe login should open the line in the non-blocking mode
-+ leaving the decision to make a connection to getty (where it actually
-+ belongs). */
-+static void
-+opentty(const char * tty)
-+{
-+ int i, fd, flags;
-+
-+ fd = open(tty, O_RDWR | O_NONBLOCK);
-+ if (fd == -1)
-+ {
-+ syslog(LOG_ERR, "FATAL: can't reopen tty: %s",
-+ strerror(errno));
-+ sleep(1);
-+ exit(1);
-+ }
-+
-+ flags = fcntl(fd, F_GETFL);
-+ flags &= ~O_NONBLOCK;
-+ fcntl(fd, F_SETFL, flags);
-+
-+ for (i = 0; i < fd; i++)
-+ close(i);
-+ for (i = 0; i < 3; i++)
-+ if (fd != i)
-+ dup2(fd, i);
-+ if (fd >= 3)
-+ close(fd);
-+}
-+
-+/* true if the filedescriptor fd is a console tty, very Linux specific */
-+static int
-+consoletty(int fd)
-+{
-+ struct stat stb;
-+
-+ if ((fstat(fd, &stb) >= 0)
-+ && (major(stb.st_rdev) == TTY_MAJOR)
-+ && (minor(stb.st_rdev) < 64))
-+ {
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+/* strip comments and leading white space*/
-+char *
-+strip(char *src)
-+{
-+ int tpos=0;
-+ int len;
-+ int i;
-+ int first_char_found=0;
-+ char *result;
-+
-+ len = strlen(src);
-+ result = (char *)malloc(len);
-+
-+ for (i=0; i < len; i++)
-+ {
-+ if (!first_char_found && !isblank((int)src[i]))
-+ first_char_found = 1;
-+
-+ if (first_char_found)
-+ {
-+ if (src[i] == (int)'#')
-+ break;
-+
-+ result[tpos] = src[i];
-+ tpos++;
-+ }
-+ }
-+
-+ if (tpos == 0)
-+ {
-+ /* blank line */
-+ free(result);
-+ result = NULL;
-+ }
-+ else
-+ result[tpos]='\0';
-+
-+ return result;
-+}
-+
-+void
-+source_i18n(void)
-+{
-+ FILE *f;
-+ char *line;
-+
-+ f = fopen("/etc/sysconfig/i18n", "r");
-+ if (!f)
-+ return;
-+
-+ while(fscanf(f, "%as", &line)==1)
-+ {
-+ char *sline;
-+
-+ sline = strip(line);
-+ if (sline == NULL)
-+ continue;
-+
-+ putenv(sline);
-+
-+ free(line);
-+ }
-+
-+ fclose(f);
-+}
-+
-+void
-+olpc_login(void)
-+{
-+ extern int optind;
-+ extern char *optarg, **environ;
-+ struct group *gr;
-+ int fflag, hflag, pflag, cnt;
-+ int quietlog;
-+ char *domain, *ttyn;
-+ char tbuf[MAXPATHLEN + 2];
-+ char *termenv;
-+ int retcode;
-+ pam_handle_t *pamh = NULL;
-+ struct pam_conv conv = { misc_conv, NULL };
-+ struct sigaction sa, oldsa_hup, oldsa_term;
-+ char vcsn[20], vcsan[20];
-+ pid = getpid();
-+
-+ signal(SIGQUIT, SIG_IGN);
-+ signal(SIGINT, SIG_IGN);
-+
-+ setpriority(PRIO_PROCESS, 0, 0);
-+
-+ gethostname(tbuf, sizeof(tbuf));
-+ xstrncpy(thishost, tbuf, sizeof(thishost));
-+ domain = index(tbuf, '.');
-+
-+ username = tty_name = hostname = NULL;
-+ fflag = hflag = pflag = 0;
-+
-+ for (cnt = getdtablesize(); cnt > 2; cnt--)
-+ close(cnt);
-+
-+ /* TODO: This is not right, we should open the display :0 but we need
-+ * to start X first. Flow should go like this once we get rid of startx
-+ * seteuid 0, setuid olpc -> start X -> start pam session -> fork ->
-+ * seteuid olpc -> start clients
-+ */
-+ tty_name = "tty2";
-+ tty_number = "2";
-+
-+ /* set pgid to pid */
-+ setpgrp();
-+ /* this means that setsid() will fail */
-+
-+ openlog("olpc-login", LOG_ODELAY, LOG_AUTHPRIV);
-+
-+ retcode = pam_start("olpc-login", OLPC_USER, &conv, &pamh);
-+ if(retcode != PAM_SUCCESS)
-+ {
-+ fprintf(stderr, "olpc-login: PAM Failure, aborting: %s\n",
-+ pam_strerror(pamh, retcode));
-+ syslog(LOG_ERR, "Couldn't initialize PAM: %s",
-+ pam_strerror(pamh, retcode));
-+ exit(99);
-+ }
-+ retcode = pam_set_item(pamh, PAM_TTY, tty_name);
-+ PAM_FAIL_CHECK;
-+
-+ /*
-+ * Authentication may be skipped (for example, during krlogin, rlogin, etc...),
-+ * but it doesn't mean that we can skip other account checks. The account
-+ * could be disabled or password expired (althought kerberos ticket is valid).
-+ * -- kzak at redhat.com (22-Feb-2006)
-+ */
-+ retcode = pam_acct_mgmt(pamh, 0);
-+
-+ if(retcode == PAM_NEW_AUTHTOK_REQD)
-+ retcode = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
-+
-+ PAM_FAIL_CHECK;
-+
-+ /*
-+ * Grab the user information out of the password file for future usage
-+ * First get the username that we are actually using, though.
-+ */
-+ retcode = pam_get_item(pamh, PAM_USER, (const void **) &username);
-+ PAM_FAIL_CHECK;
-+
-+ if (!username || !*username)
-+ {
-+ fprintf(stderr, "\nSession setup problem, abort.\n");
-+ syslog(LOG_ERR, "NULL user name in %s:%d. Abort.",
-+ __FUNCTION__, __LINE__);
-+ pam_end(pamh, PAM_SYSTEM_ERR);
-+ exit(1);
-+ }
-+
-+ if (!(pwd = getpwnam(username)))
-+ {
-+ fprintf(stderr, "\nSession setup problem, abort.\n");
-+ syslog(LOG_ERR, "Invalid user name \"%s\" in %s:%d. Abort.",
-+ username, __FUNCTION__, __LINE__);
-+ pam_end(pamh, PAM_SYSTEM_ERR);
-+ exit(1);
-+ }
-+
-+ /*
-+ * Create a copy of the pwd struct - otherwise it may get
-+ * clobbered by PAM
-+ */
-+ memcpy(&pwdcopy, pwd, sizeof(*pwd));
-+ pwd = &pwdcopy;
-+ pwd->pw_name = strdup(pwd->pw_name);
-+ pwd->pw_passwd = strdup(pwd->pw_passwd);
-+ pwd->pw_gecos = strdup(pwd->pw_gecos);
-+ pwd->pw_dir = strdup(pwd->pw_dir);
-+ pwd->pw_shell = strdup(pwd->pw_shell);
-+ if (!pwd->pw_name || !pwd->pw_passwd || !pwd->pw_gecos ||
-+ !pwd->pw_dir || !pwd->pw_shell)
-+ {
-+ fprintf(stderr, "olpc-login: Out of memory\n");
-+ syslog(LOG_ERR, "Out of memory");
-+ pam_end(pamh, PAM_SYSTEM_ERR);
-+ exit(1);
-+ }
-+ username = pwd->pw_name;
-+
-+ /*
-+ * Initialize the supplementary group list.
-+ * This should be done before pam_setcred because
-+ * the PAM modules might add groups during pam_setcred.
-+ */
-+ if (initgroups(username, pwd->pw_gid) < 0)
-+ {
-+ syslog(LOG_ERR, "initgroups: %m");
-+ fprintf(stderr, "\nSession setup problem, abort.\n");
-+ pam_end(pamh, PAM_SYSTEM_ERR);
-+ exit(1);
-+ }
-+
-+ retcode = pam_open_session(pamh, 0);
-+ PAM_FAIL_CHECK;
-+
-+ retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED);
-+ if (retcode != PAM_SUCCESS)
-+ pam_close_session(pamh, 0);
-+ PAM_FAIL_CHECK;
-+
-+ /* committed to login -- turn off timeout */
-+ alarm((unsigned int)0);
-+
-+ endpwent();
-+
-+ /* This requires some explanation: As root we may not be able to
-+ read the directory of the user if it is on an NFS mounted
-+ filesystem. We temporarily set our effective uid to the user-uid
-+ making sure that we keep root privs. in the real uid.
-+
-+ A portable solution would require a fork(), but we rely on Linux
-+ having the BSD setreuid() */
-+
-+ {
-+ char tmpstr[MAXPATHLEN];
-+ uid_t ruid = getuid();
-+ gid_t egid = getegid();
-+
-+ /* avoid snprintf - old systems do not have it, or worse,
-+ have a libc in which snprintf is the same as sprintf */
-+ if (strlen(pwd->pw_dir) + sizeof(_PATH_HUSHLOGIN) + 2 > MAXPATHLEN)
-+ quietlog = 0;
-+ else
-+ {
-+ sprintf(tmpstr, "%s/%s", pwd->pw_dir, _PATH_HUSHLOGIN);
-+ setregid(-1, pwd->pw_gid);
-+ setreuid(0, pwd->pw_uid);
-+ quietlog = (access(tmpstr, R_OK) == 0);
-+ setuid(0); /* setreuid doesn't do it alone! */
-+ setreuid(ruid, 0);
-+ setregid(-1, egid);
-+ }
-+ }
-+
-+ /* for linux, write entries in utmp and wtmp */
-+ {
-+ struct utmp ut;
-+ struct utmp *utp;
-+ struct timeval tv;
-+
-+ utmpname(_PATH_UTMP);
-+ setutent();
-+
-+ /* Find pid in utmp.
-+ login sometimes overwrites the runlevel entry in /var/run/utmp,
-+ confusing sysvinit. I added a test for the entry type, and the problem
-+ was gone. (In a runlevel entry, st_pid is not really a pid but some number
-+ calculated from the previous and current runlevel).
-+ Michael Riepe <michael at stud.uni-hannover.de>
-+ */
-+ while ((utp = getutent()))
-+ if (utp->ut_pid == pid
-+ && utp->ut_type >= INIT_PROCESS
-+ && utp->ut_type <= DEAD_PROCESS)
-+ break;
-+
-+ /* If we can't find a pre-existing entry by pid, try by line.
-+ BSD network daemons may rely on this. (anonymous) */
-+ if (utp == NULL)
-+ {
-+ setutent();
-+ ut.ut_type = LOGIN_PROCESS;
-+ strncpy(ut.ut_line, tty_name, sizeof(ut.ut_line));
-+ utp = getutline(&ut);
-+ }
-+
-+ if (utp)
-+ {
-+ memcpy(&ut, utp, sizeof(ut));
-+ }
-+ else
-+ {
-+ /* some gettys/telnetds don't initialize utmp... */
-+ memset(&ut, 0, sizeof(ut));
-+ }
-+
-+ if (ut.ut_id[0] == 0)
-+ strncpy(ut.ut_id, tty_number, sizeof(ut.ut_id));
-+
-+ strncpy(ut.ut_user, username, sizeof(ut.ut_user));
-+ xstrncpy(ut.ut_line, tty_name, sizeof(ut.ut_line));
-+ gettimeofday(&tv, NULL);
-+ ut.ut_tv.tv_sec = tv.tv_sec;
-+ ut.ut_tv.tv_usec = tv.tv_usec;
-+ ut.ut_type = USER_PROCESS;
-+ ut.ut_pid = pid;
-+ if (hostname)
-+ {
-+ xstrncpy(ut.ut_host, hostname, sizeof(ut.ut_host));
-+ if (hostaddress[0])
-+ memcpy(&ut.ut_addr_v6, hostaddress, sizeof(ut.ut_addr_v6));
-+ }
-+
-+ pututline(&ut);
-+ endutent();
-+
-+ updwtmp(_PATH_WTMP, &ut);
-+ }
-+
-+ setgid(pwd->pw_gid);
-+
-+ environ = (char**)malloc(sizeof(char*));
-+ memset(environ, 0, sizeof(char*));
-+
-+ source_i18n();
-+
-+ setenv("HOME", pwd->pw_dir, 0); /* legal to override */
-+ setenv("PATH", _PATH_DEFPATH, 1);
-+
-+ setenv("SHELL", pwd->pw_shell, 1);
-+ /*setenv("TERM", termenv, 1);*/
-+
-+ /* LOGNAME is not documented in login(1) but
-+ HP-UX 6.5 does it. We'll not allow modifying it.
-+ */
-+ setenv("LOGNAME", pwd->pw_name, 1);
-+
-+ {
-+ int i;
-+ char ** env = pam_getenvlist(pamh);
-+
-+ if (env != NULL)
-+ {
-+ for (i=0; env[i]; i++)
-+ putenv(env[i]);
-+ }
-+ }
-+
-+ /* allow tracking of good logins.
-+ -steve philp (sphilp at mail.alliance.net) */
-+
-+ if (hostname)
-+ syslog(LOG_INFO, "LOGIN ON %s BY %s FROM %s", tty_name,
-+ pwd->pw_name, hostname);
-+ else
-+ syslog(LOG_INFO, "LOGIN ON %s BY %s", tty_name,
-+ pwd->pw_name);
-+
-+ signal(SIGALRM, SIG_DFL);
-+ signal(SIGQUIT, SIG_DFL);
-+ signal(SIGTSTP, SIG_IGN);
-+
-+ /*
-+ * We must fork before setuid() because we need to call
-+ * pam_close_session() as root.
-+ */
-+ memset(&sa, 0, sizeof(sa));
-+ sa.sa_handler = SIG_IGN;
-+ sigaction(SIGINT, &sa, NULL);
-+
-+ sigaction(SIGHUP, &sa, &oldsa_hup); /* ignore while we detach from the tty */
-+ ioctl(0, TIOCNOTTY, NULL);
-+
-+ sa.sa_handler = parent_sig_handler;
-+ sigaction(SIGHUP, &sa, NULL);
-+ sigaction(SIGTERM, &sa, &oldsa_term);
-+
-+ closelog();
-+ childPid = fork();
-+ if (childPid < 0)
-+ {
-+ int errsv = errno;
-+ /* error in fork() */
-+ fprintf(stderr, "olpc-login: failure forking: %s", strerror(errsv));
-+ PAM_END;
-+ exit(0);
-+ }
-+
-+ if (childPid)
-+ {
-+ close(0); close(1); close(2);
-+ sa.sa_handler = SIG_IGN;
-+ sigaction(SIGQUIT, &sa, NULL);
-+ sigaction(SIGINT, &sa, NULL);
-+ while(wait(NULL) == -1 && errno == EINTR) /**/ ;
-+ openlog("olpc-login", LOG_ODELAY, LOG_AUTHPRIV);
-+ PAM_END;
-+ exit(0);
-+ }
-+
-+ sigaction(SIGHUP, &oldsa_hup, NULL);
-+ sigaction(SIGTERM, &oldsa_term, NULL);
-+ if(got_sig) exit(1);
-+
-+ /* child */
-+ /*
-+ * Problem: if the user's shell is a shell like ash that doesnt do
-+ * setsid() or setpgrp(), then a ctrl-\, sending SIGQUIT to every
-+ * process in the pgrp, will kill us.
-+ */
-+
-+ /* start new session */
-+ setsid();
-+
-+ /* make sure we have a controlling tty */
-+ openlog("olpc-login", LOG_ODELAY, LOG_AUTHPRIV); /* reopen */
-+
-+ /*
-+ * TIOCSCTTY: steal tty from other process group.
-+ */
-+ if (ioctl(0, TIOCSCTTY, (char *)1))
-+ {
-+ syslog(LOG_ERR, "Couldn't set controlling terminal: %s", strerror(errno));
-+ exit(1);
-+ }
-+
-+ signal(SIGINT, SIG_DFL);
-+
-+ /* discard permissions last so can't get killed and drop core */
-+ if(setuid(pwd->pw_uid) < 0 && pwd->pw_uid)
-+ {
-+ syslog(LOG_ALERT, "setuid() failed");
-+ exit(1);
-+ }
-+
-+ /* wait until here to change directory! */
-+ if (chdir(pwd->pw_dir) < 0)
-+ {
-+ printf("No directory %s!\n", pwd->pw_dir);
-+ if (chdir("/"))
-+ exit(0);
-+ pwd->pw_dir = "/";
-+ printf("Logging in with home = \"/\".\n");
-+ }
-+
-+ /* fork and exec startx. wait on child to cleanup */
-+ execl("/usr/bin/startx", "startx", "--", "-fp", "built-ins", "-wr", NULL);
-+ exit(0);
-+}
-+
-+int
-+main (int argc,
-+ char **argv)
-+{
-+ /* Use PAM to login as user*/
-+ olpc_login ();
-+
-+ return 0;
-+}
-diff -up initscripts-8.54.1/src/Makefile.olpc initscripts-8.54.1/src/Makefile
---- initscripts-8.54.1/src/Makefile.olpc 2006-09-27 15:59:05.000000000 -0400
-+++ initscripts-8.54.1/src/Makefile 2007-09-13 13:31:32.000000000 -0400
-@@ -1,7 +1,8 @@
- CFLAGS+=$(RPM_OPT_FLAGS) -Wall -D_GNU_SOURCE
-
- PROGS=usernetctl doexec netreport testd usleep ipcalc initlog \
-- fstab-decode getkey ppp-watch consoletype genhostid rename_device
-+ fstab-decode getkey ppp-watch consoletype genhostid rename_device \
-+ olpc-dm
- PPPWATCH_OBJS=ppp-watch.o shvar.o
- INITLOG_OBJS=initlog.o process.o
- USLEEP_OBJS=usleep.o
-@@ -28,6 +29,7 @@ install:
- install -m 755 consoletype $(ROOT)/sbin/consoletype
- install -m 755 rename_device $(ROOT)/lib/udev/rename_device
- install -m 755 ccw_init $(ROOT)/lib/udev/ccw_init
-+ install -m 755 olpc-dm $(ROOT)/sbin/olpc-dm
- install -m 644 initlog.1 $(ROOT)$(mandir)/man1
- install -m 644 genhostid.1 $(ROOT)$(mandir)/man1
- install -m 644 doexec.1 $(ROOT)$(mandir)/man1
-@@ -77,5 +79,8 @@ ppp-watch.o: ppp-watch.c
- rename_device: rename_device.c
- $(CC) $(CFLAGS) `pkg-config glib-2.0 --cflags` -o $@ $< `pkg-config glib-2.0 --libs`
-
-+olpc-dm: olpc-dm.c
-+ $(CC) $(CFLAGS) olpc-dm.c -o $@ -I/usr/include -lpam -lpam_misc
-+
- kmodule: kmodule.o
- $(CC) $(LDFLAGS) -o $@ $< -Wl,-Bstatic -lpopt -Wl,-Bdynamic -lkudzu -lpci
++x:5:once:/sbin/olpc-dm
Index: initscripts.spec
===================================================================
RCS file: /cvs/pkgs/rpms/initscripts/OLPC-2/initscripts.spec,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -r1.154 -r1.155
--- initscripts.spec 13 Oct 2007 01:29:52 -0000 1.154
+++ initscripts.spec 15 Oct 2007 19:07:57 -0000 1.155
@@ -209,11 +209,13 @@
%ghost %attr(0600,root,utmp) /var/log/btmp
%ghost %attr(0664,root,utmp) /var/log/wtmp
%ghost %attr(0664,root,utmp) /var/run/utmp
-/sbin/olpc-dm
%{_sysconfdir}/pam.d/olpc-login
%changelog
-* Fri Oct 12 2007 <bernie at codewiz.org> - 8.54.1-10
+* Fri Oct 12 2007 Bernardo Innocenti <bernie at codewiz.org> - 8.54.1-11
+- Drop olpc-dm: it is now in olpc-dm.
+
+* Fri Oct 12 2007 Bernardo Innocenti <bernie at codewiz.org> - 8.54.1-10
- Don't bind-mount /home/olpc/.Xauthority: unbreaks alternate boot
* Mon Oct 1 2007 <cscott at laptop.org> - 8.54.1-9
More information about the scm-commits
mailing list