rpms/initscripts/OLPC-2 initscripts-8.54.1-olpc.patch, NONE, 1.1 initscripts.spec, 1.142, 1.143
John (J5) Palmieri (johnp)
fedora-extras-commits at redhat.com
Thu Aug 9 21:26:45 UTC 2007
- Previous message (by thread): rpms/gnome-session/devel gnome-session-2.15.90-window-manager.patch, 1.4, 1.5 gnome-session.spec, 1.131, 1.132
- Next message (by thread): rpms/perl-MogileFS-Utils/devel .cvsignore, 1.2, 1.3 perl-MogileFS-Utils.spec, 1.1, 1.2 sources, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: johnp
Update of /cvs/pkgs/rpms/initscripts/OLPC-2
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18516
Modified Files:
initscripts.spec
Added Files:
initscripts-8.54.1-olpc.patch
Log Message:
- branch and optimize for olpc
- add olpc-dm the new display manager for olpc
- don't start netfs, network or netconsole anymore
initscripts-8.54.1-olpc.patch:
--- NEW FILE initscripts-8.54.1-olpc.patch ---
--- initscripts-8.54.1/inittab.olpc 2006-10-12 13:51:04.000000000 -0400
+++ initscripts-8.54.1/inittab 2007-08-08 18:50:45.000000000 -0400
@@ -15,7 +15,7 @@
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
-id:3:initdefault:
+id:5:initdefault:
# System initialization.
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
2:2345:respawn:/sbin/mingetty tty2
-3:2345:respawn:/sbin/mingetty tty3
-4:2345:respawn:/sbin/mingetty tty4
-5:2345:respawn:/sbin/mingetty tty5
-6:2345:respawn:/sbin/mingetty tty6
+3:2345:respawn:/sbin/agetty ttyS0 115200 vt100
# Run xdm in runlevel 5
-x:5:respawn:/etc/X11/prefdm -nodaemon
+x:5:respawn:/sbin/olpc-dm
--- /dev/null 2007-08-06 13:44:09.062126627 -0400
+++ initscripts-8.54.1/src/olpc-dm.c 2007-08-09 17:22:01.000000000 -0400
@@ -0,0 +1,595 @@
+#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;
+}
+
+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
+ */
+ ttyn = "/dev/tty2";
+
+ if (strncmp(ttyn, "/dev/", 5) == 0)
+ tty_name = ttyn+5;
+ else
+ tty_name = ttyn;
+
+ if (strncmp(ttyn, "/dev/tty", 8) == 0)
+ tty_number = ttyn+8;
+ else
+ {
+ char *p = ttyn;
+ while (*p && !isdigit(*p)) p++;
+ tty_number = p;
+ }
+
+ printf("TTY: %s\n", tty_name);
+
+ /* find names of Virtual Console devices, for later mode change */
+ snprintf(vcsn, sizeof(vcsn), "/dev/vcs%s", tty_number);
+ snprintf(vcsan, sizeof(vcsan), "/dev/vcsa%s", tty_number);
+
+ /* set pgid to pid */
+ setpgrp();
+ /* this means that setsid() will fail */
+
+ {
+ struct termios tt, ttt;
+
+ tcgetattr(0, &tt);
+ ttt = tt;
+ ttt.c_cflag &= ~HUPCL;
+
+ /* These can fail, e.g. with ttyn on a read-only filesystem */
+ chown(ttyn, 0, 0);
+ chmod(ttyn, TTY_MODE);
+
+ /* Kill processes left on this tty */
+ tcsetattr(0,TCSAFLUSH,&ttt);
+ signal(SIGHUP, SIG_IGN); /* so vhangup() wont kill us */
+ vhangup();
+ signal(SIGHUP, SIG_DFL);
+
+ /* open stdin,stdout,stderr to the tty */
+ opentty(ttyn);
+
+ /* restore tty modes */
+ tcsetattr(0,TCSAFLUSH,&tt);
+ }
+
+ openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
+
+ retcode = pam_start("login", OLPC_USER, &conv, &pamh);
+ if(retcode != PAM_SUCCESS)
+ {
+ fprintf(stderr, "login: PAM Failure, aborting: %s\n",
+ pam_strerror(pamh, retcode));
+ syslog(LOG_ERR, "Couldn't initialize PAM: %s",
+ pam_strerror(pamh, retcode));
+ exit(99);
+ }
+ /* hostname & tty are either set to NULL or their correct values,
+ depending on how much we know */
+ retcode = pam_set_item(pamh, PAM_RHOST, hostname);
+ PAM_FAIL_CHECK;
+ retcode = pam_set_item(pamh, PAM_TTY, tty_name);
+ PAM_FAIL_CHECK;
+ retcode = pam_set_item(pamh, PAM_USER_PROMPT, "You shouldn't see this login prompt");
+ 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, "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);
+ }
+
+ chown(ttyn, pwd->pw_uid,
+ (gr = getgrnam(TTYGRPNAME)) ? gr->gr_gid : pwd->pw_gid);
+ chmod(ttyn, TTY_MODE);
+
+ /* if tty is one of the VC's then change owner and mode of the
+ special /dev/vcs devices as well */
+ if (consoletty(0))
+ {
+ chown(vcsn, pwd->pw_uid, (gr ? gr->gr_gid : pwd->pw_gid));
+ chown(vcsan, pwd->pw_uid, (gr ? gr->gr_gid : pwd->pw_gid));
+ chmod(vcsn, TTY_MODE);
+ chmod(vcsan, TTY_MODE);
+ }
+
+
+ setgid(pwd->pw_gid);
+
+ if (*pwd->pw_shell == '\0')
+ pwd->pw_shell = _PATH_BSHELL;
+
+ {
+ char *ep;
+
+ if(!((ep = getenv("TERM")) && (termenv = strdup(ep))))
+ termenv = "dumb";
+ }
+
+
+ environ = (char**)malloc(sizeof(char*));
+ memset(environ, 0, sizeof(char*));
+
+ setenv("HOME", pwd->pw_dir, 0); /* legal to override */
+ setenv("PATH", _PATH_DEFPATH, 1);
+
+ setenv("SHELL", pwd->pw_shell, 1);
+ setenv("TERM", termenv, 1);
+
+ /* mailx will give a funny error msg if you forget this one */
+ {
+ char tmp[MAXPATHLEN];
+ /* avoid snprintf */
+ if (sizeof(_PATH_MAILDIR) + strlen(pwd->pw_name) + 1 < MAXPATHLEN)
+ {
+ sprintf(tmp, "%s/%s", _PATH_MAILDIR, pwd->pw_name);
+ setenv("MAIL",tmp,0);
+ }
+ }
+
+ /* 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]);
+ }
+ }
+
+ if (!strncmp(tty_name, "ttyS", 4))
+ syslog(LOG_INFO, "DIALUP AT %s BY %s", tty_name, pwd->pw_name);
+
+ /* 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, "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("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("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 ();
+
+ /* fork and exec startx. wait on child to cleanup */
+ execl("/usr/bin/startx", "startx", "--", "-fp", "built-ins", "-wr", NULL);
+
+ return 0;
+}
--- initscripts-8.54.1/src/Makefile.olpc 2006-09-27 15:59:05.000000000 -0400
+++ initscripts-8.54.1/src/Makefile 2007-08-09 13:50:38.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
Index: initscripts.spec
===================================================================
RCS file: /cvs/pkgs/rpms/initscripts/OLPC-2/initscripts.spec,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -r1.142 -r1.143
--- initscripts.spec 25 Jun 2007 16:51:17 -0000 1.142
+++ initscripts.spec 9 Aug 2007 21:26:12 -0000 1.143
@@ -3,8 +3,9 @@
Version: 8.54.1
License: GPL
Group: System Environment/Base
-Release: 1
+Release: 2
Source: initscripts-%{version}.tar.bz2
+Patch0: initscripts-8.54.1-olpc.patch
BuildRoot: /%{_tmppath}/%{name}-%{version}-%{release}-root
Requires: mingetty, /bin/awk, /bin/sed, mktemp, e2fsprogs >= 1.15
Requires: /sbin/sysctl, syslog
@@ -35,6 +36,7 @@
%prep
%setup -q
+%patch0 -p1 -b .olpc
%build
make
@@ -66,10 +68,6 @@
chmod 664 /var/log/wtmp /var/run/utmp
chmod 600 /var/log/btmp
-/sbin/chkconfig --add netfs
-/sbin/chkconfig --add network
-/sbin/chkconfig --add netconsole
-
# Handle converting prefdm back to respawn
if fgrep -q "x:5:once:/etc/X11/prefdm -nodaemon" /etc/inittab ; then
sed --in-place=.rpmsave 's|^x:5:once:/etc/X11/prefdm -nodaemon|x:5:respawn:/etc/X11/prefdm -nodaemon|g' /etc/inittab
@@ -201,8 +199,14 @@
%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
%changelog
+* Thu Aug 09 2007 John (J5) Palmieri <johnp at redhat.com> 8.54.1-2
+- branch and optimize for olpc
+- add olpc-dm the new display manager for olpc
+- don't start netfs, network or netconsole anymore
+
* Mon Jun 25 2007 Bill Nottingham <notting at redhat.com> 8.54.1-1
- netfs: check for rpcbind, not portmap (#245595)
- Previous message (by thread): rpms/gnome-session/devel gnome-session-2.15.90-window-manager.patch, 1.4, 1.5 gnome-session.spec, 1.131, 1.132
- Next message (by thread): rpms/perl-MogileFS-Utils/devel .cvsignore, 1.2, 1.3 perl-MogileFS-Utils.spec, 1.1, 1.2 sources, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list