From: David-John Willis Date: Tue, 27 Oct 2009 15:51:00 +0000 (+0000) Subject: slim: Add SLiM X desktop manager and patches to ensure it is secure and supports... X-Git-Tag: Release-2010-05/1~185 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=openpandora.oe.git;a=commitdiff_plain;h=031c0d6b3fa5f6b97beec60705e4d80ef60053bf slim: Add SLiM X desktop manager and patches to ensure it is secure and supports PAM. --- diff --git a/recipes/slim/slim/Makefile.oe b/recipes/slim/slim/Makefile.oe new file mode 100644 index 0000000..ade4e29 --- /dev/null +++ b/recipes/slim/slim/Makefile.oe @@ -0,0 +1,64 @@ +# Makefile for slim - OpenEmbedded +####################################################### + + +LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg -lrt +CUSTOM=-DHAVE_SHADOW + +USE_PAM=1 +ifdef USE_PAM +LDFLAGS+= -lpam +CUSTOM+= -DUSE_PAM +endif + +####################################################### + +NAME=slim +VERSION=1.3.1 + +DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \ + -DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\" + +OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \ + panel.o util.o +ifdef USE_PAM +OBJECTS+=PAM.o +endif + +all: slim + +slim: $(OBJECTS) + $(CXX) $(LDFLAGS) $(OBJECTS) -o $(NAME) + +.cpp.o: + $(CXX) $(CXXFLAGS) $(DEFINES) $(CUSTOM) -c $< -o $@ + +.c.o: + $(CC) $(CFLAGS) $(DEFINES) $(CUSTOM) -c $< -o $@ + +install: slim install-theme + install -D -m 755 slim $(DESTDIR)$(PREFIX)/bin/slim + install -D -m 644 slim.1 $(DESTDIR)$(MANDIR)/man1/slim.1 + test -e $(DESTDIR)$(CFGDIR)/slim.conf || \ + install -D -m 644 slim.conf $(DESTDIR)$(CFGDIR)/slim.conf + +clean: + @rm -f slim *.o + +dist: + @rm -rf $(NAME)-$(VERSION) + @mkdir $(NAME)-$(VERSION) + @cp -r *.cpp *.h *.c Makefile Makefile.* COPYING ChangeLog INSTALL README TODO \ + xinitrc.sample slim.1 THEMES themes slim.conf $(NAME)-$(VERSION) + @rm -rf $(NAME)-$(VERSION)/themes/.svn $(NAME)-$(VERSION)/themes/default/.svn + @tar cvzf $(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION) + @rm -rf $(NAME)-$(VERSION) + + +install-theme: + install -D -m 644 themes/default/slim.theme \ + $(DESTDIR)$(PREFIX)/share/slim/themes/default/slim.theme + install -D -m 644 themes/default/panel.png \ + $(DESTDIR)$(PREFIX)/share/slim/themes/default/panel.png + install -D -m 644 themes/default/background.jpg \ + $(DESTDIR)$(PREFIX)/share/slim/themes/default/background.jpg diff --git a/recipes/slim/slim/Makefile.patch b/recipes/slim/slim/Makefile.patch new file mode 100644 index 0000000..957b517 --- /dev/null +++ b/recipes/slim/slim/Makefile.patch @@ -0,0 +1,20 @@ +--- a/Makefile 2009-08-23 13:56:12.000000000 +0900 ++++ b/Makefile 2009-08-23 13:56:51.000000000 +0900 +@@ -7,7 +7,7 @@ + CC=/usr/bin/gcc + CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include + CXXFLAGS=$(CFLAGS) +-LDFLAGS=-lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg ++LDFLAGS=-L/usr/X11R6/lib -lXft -lX11 -lpng12 -lm -lXmu -lpng -ljpeg + CUSTOM=-DHAVE_SHADOW + ifdef USE_PAM + LDFLAGS+= -lpam +@@ -15,7 +15,7 @@ + endif + PREFIX=/usr + CFGDIR=/etc +-MANDIR=/usr/man ++MANDIR=/usr/share/man + DESTDIR= + ####################################################### + diff --git a/recipes/slim/slim/delay.patch b/recipes/slim/slim/delay.patch new file mode 100644 index 0000000..abab191 --- /dev/null +++ b/recipes/slim/slim/delay.patch @@ -0,0 +1,12 @@ +--- slim-1.3.1-orig/app.cpp.orig 2007-07-15 22:09:28.000000000 +0800 ++++ slim-1.3.1/app.cpp 2008-05-06 23:33:40.000000000 +0800 +@@ -884,9 +884,6 @@ + ServerPID = -1; + break; + } +- alarm(15); +- pause(); +- alarm(0); + + // Wait for server to start up + if(WaitForServer() == 0) { diff --git a/recipes/slim/slim/fix-manpage.patch b/recipes/slim/slim/fix-manpage.patch new file mode 100644 index 0000000..24f0d9e --- /dev/null +++ b/recipes/slim/slim/fix-manpage.patch @@ -0,0 +1,9 @@ +Index: slim-1.3.0/slim.1 +=================================================================== +--- slim-1.3.0.orig/slim.1 2008-09-13 11:20:32.000000000 +0000 ++++ slim-1.3.0/slim.1 2008-09-13 11:20:35.000000000 +0000 +@@ -1,4 +1,3 @@ +-." Text automatically generated by txt2man-1.4.7 + .TH slim 1 "January 09, 2006" "" "" + .SH NAME + \fBslim \fP- Simple LogIn Manager diff --git a/recipes/slim/slim/ftbfs_gcc_4.4.patch b/recipes/slim/slim/ftbfs_gcc_4.4.patch new file mode 100644 index 0000000..7038636 --- /dev/null +++ b/recipes/slim/slim/ftbfs_gcc_4.4.patch @@ -0,0 +1,12 @@ +# From http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505332 + +--- a/switchuser.h 2009-09-21 16:10:43.000000000 +0900 ++++ b/switchuser.h 2009-09-21 16:11:06.000000000 +0900 +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include "const.h" + #include "cfg.h" diff --git a/recipes/slim/slim/pam-unix2.patch b/recipes/slim/slim/pam-unix2.patch new file mode 100644 index 0000000..2163d20 --- /dev/null +++ b/recipes/slim/slim/pam-unix2.patch @@ -0,0 +1,89 @@ +diff -rc slim-1.3.1-orig/app.cpp slim-1.3.1/app.cpp +*** slim-1.3.1-orig/app.cpp 2008-09-26 02:54:15.000000000 +0200 +--- slim-1.3.1/app.cpp 2009-02-17 19:50:06.000000000 +0100 +*************** +*** 41,48 **** + Panel* panel = *static_cast(appdata_ptr); + int result = PAM_SUCCESS; + for (int i=0; iresp=0; +! resp[i]->resp_retcode=0; + switch(msg[i]->msg_style){ + case PAM_PROMPT_ECHO_ON: + // We assume PAM is asking for the username +--- 41,48 ---- + Panel* panel = *static_cast(appdata_ptr); + int result = PAM_SUCCESS; + for (int i=0; imsg_style){ + case PAM_PROMPT_ECHO_ON: + // We assume PAM is asking for the username +*************** +*** 51,63 **** + case Panel::Suspend: + case Panel::Halt: + case Panel::Reboot: +! resp[i]->resp=strdup("root"); + break; + + case Panel::Console: + case Panel::Exit: + case Panel::Login: +! resp[i]->resp=strdup(panel->GetName().c_str()); + break; + } + break; +--- 51,63 ---- + case Panel::Suspend: + case Panel::Halt: + case Panel::Reboot: +! (*resp)[i].resp=strdup("root"); + break; + + case Panel::Console: + case Panel::Exit: + case Panel::Login: +! (*resp)[i].resp=strdup(panel->GetName().c_str()); + break; + } + break; +*************** +*** 73,79 **** + + default: + panel->EventHandler(Panel::Get_Passwd); +! resp[i]->resp=strdup(panel->GetPasswd().c_str()); + break; + } + break; +--- 73,79 ---- + + default: + panel->EventHandler(Panel::Get_Passwd); +! (*resp)[i].resp=strdup(panel->GetPasswd().c_str()); + break; + } + break; +*************** +*** 89,97 **** + } + if (result!=PAM_SUCCESS){ + for (int i=0; iresp==0) continue; +! free(resp[i]->resp); +! resp[i]->resp=0; + }; + free(*resp); + *resp=0; +--- 89,97 ---- + } + if (result!=PAM_SUCCESS){ + for (int i=0; i +# rewriten to use the x-window-manager alternative +# modified to also use the x-session-manager alternative by Arthur Korn +# Copyright 2000 Wichert Akkerman +# Modified to use the freedesktop.org .desktop like kdm and gdm +# +# This script will read the list of installed window managers from +# the freedesktop .desktop files in /X11/sessions/:/dm/Sessions/: +# /xsessions/ +# and update the sessions line in /etc/slim.conf. +# BEWARE: It doesn't ask any questions about this. It just does it. It +# takes an optional list of window managers. + +use strict; +use File::DesktopEntry; + +my $wm_list=''; +my %desktop_files; + +unless (@ARGV) { + #my @wm_list = ('default'); + my @wm_list; + foreach my $dir ('/etc/X11/sessions/','/etc/dm/Sessions/','/usr/share/xsessions/') { + next unless (opendir DIR, $dir); + my @files; + @files = grep { /\.desktop$/ && -r "$dir/$_" } readdir(DIR); + foreach my $file (@files) { + push @{$desktop_files{$file}}, "$dir/$file"; + } + } + DESKTOP: foreach my $desktop_file (keys(%desktop_files)) { + foreach my $file (@{$desktop_files{$desktop_file}}) { + my $entry = File::DesktopEntry->new_from_file($file); + next DESKTOP if (defined($entry->get_value('Hidden')) + and $entry->get_value('Hidden') eq 'true'); + if ($entry->get_value('Name') =~ /^gnome$/i) { + push (@wm_list, 'gnome'); + } + elsif ($entry->get_value('Name') =~ /^kde$/i) { + push (@wm_list, 'kde'); + } + elsif (defined($entry->get_value('Exec'))) { + push (@wm_list, $entry->get_value('Exec')); + } + else { # not found, go to next file + next; + } + # found, proceed to next destop file + next DESKTOP; + } + } + $wm_list = join (',', sort @wm_list) . ',custom'; +} else { + $wm_list = join (',', sort @ARGV); +} + +open (SLIM_CONFIG_FILE, '/etc/slim.conf.new') + or die "Can't open /etc/slim.conf.new for writing: $!"; + +while () { + s|^(sessions\s*).*|$1$wm_list|; + print NEW_SLIM_CONFIG_FILE; +} + +close(SLIM_CONFIG_FILE); +close(NEW_SLIM_CONFIG_FILE); + +rename '/etc/slim.conf.new', '/etc/slim.conf' + or die "Can't rename /etc/slim.conf.new: $!"; + +exit 0; diff --git a/recipes/slim/slim/xauth_secret_support.patch b/recipes/slim/slim/xauth_secret_support.patch new file mode 100644 index 0000000..c2d4044 --- /dev/null +++ b/recipes/slim/slim/xauth_secret_support.patch @@ -0,0 +1,316 @@ +# From http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=529306 +# Commited to upstream. + +diff --git a/Makefile b/Makefile +index a01bafd..9bd5555 100644 +--- a/Makefile ++++ b/Makefile +@@ -7,7 +7,7 @@ CXX=/usr/bin/g++ + CC=/usr/bin/gcc + CFLAGS=-Wall -I. -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include + CXXFLAGS=$(CFLAGS) +-LDFLAGS=-L/usr/X11R6/lib -lXft -lX11 -lpng12 -lm -lXmu -lpng -ljpeg ++LDFLAGS=-L/usr/X11R6/lib -lXft -lX11 -lpng12 -lm -lXmu -lpng -ljpeg -lrt + CUSTOM=-DHAVE_SHADOW + ifdef USE_PAM + LDFLAGS+= -lpam +@@ -25,7 +25,8 @@ VERSION=1.3.1 + DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \ + -DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\" + +-OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o panel.o ++OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \ ++ panel.o util.o + ifdef USE_PAM + OBJECTS+=PAM.o + endif +diff --git a/Makefile.freebsd b/Makefile.freebsd +index 3ff326e..c925a39 100644 +--- a/Makefile.freebsd ++++ b/Makefile.freebsd +@@ -24,7 +24,8 @@ VERSION=1.3.1 + DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \ + -DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\" + +-OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o panel.o ++OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \ ++ panel.o util.o + .ifdef USE_PAM + OBJECTS+=PAM.o + .endif +diff --git a/Makefile.netbsd b/Makefile.netbsd +index ad8bb8b..45f33e6 100644 +--- a/Makefile.netbsd ++++ b/Makefile.netbsd +@@ -24,7 +24,8 @@ VERSION=1.3.1 + DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \ + -DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\" + +-OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o panel.o ++OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \ ++ panel.o util.o + .ifdef USE_PAM + OBJECTS+=PAM.o + .endif +diff --git a/Makefile.openbsd b/Makefile.openbsd +index b1829f8..1205b84 100644 +--- a/Makefile.openbsd ++++ b/Makefile.openbsd +@@ -20,7 +20,8 @@ VERSION=1.3.1 + DEFINES=-DPACKAGE=\"$(NAME)\" -DVERSION=\"$(VERSION)\" \ + -DPKGDATADIR=\"$(PREFIX)/share/slim\" -DSYSCONFDIR=\"$(CFGDIR)\" + +-OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o panel.o ++OBJECTS=jpeg.o png.o main.o image.o numlock.o cfg.o switchuser.o app.o \ ++ util.o panel.o + + .SUFFIXES: .c.o .cpp.o + +diff --git a/app.cpp b/app.cpp +index 83ae947..0ac8c3a 100644 +--- a/app.cpp ++++ b/app.cpp +@@ -24,6 +24,7 @@ + #include + #include "app.h" + #include "numlock.h" ++#include "util.h" + + + #ifdef HAVE_SHADOW +@@ -128,15 +129,18 @@ void User1Signal(int sig) { + + + #ifdef USE_PAM +-App::App(int argc, char** argv): +- pam(conv, static_cast(&LoginPanel)){ ++App::App(int argc, char** argv) ++ : pam(conv, static_cast(&LoginPanel)), + #else +-App::App(int argc, char** argv){ ++App::App(int argc, char** argv) ++ : + #endif ++ mcookiesize(32) // Must be divisible by 4 ++{ + int tmp; + ServerPID = -1; + testing = false; +- mcookie = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; ++ mcookie = string(App::mcookiesize, 'a'); + daemonmode = false; + force_nodaemon = false; + firstlogin = true; +@@ -1127,13 +1131,13 @@ string App::findValidRandomTheme(const string& set) + name = name.substr(0, name.length() - 1); + } + +- srandom(getpid()+time(NULL)); ++ Util::srandom(Util::makeseed()); + + vector themes; + string themefile; + Cfg::split(themes, name, ','); + do { +- int sel = random() % themes.size(); ++ int sel = Util::random() % themes.size(); + + name = Cfg::Trim(themes[sel]); + themefile = string(THEMESDIR) +"/" + name + THEMESFILE; +@@ -1160,33 +1164,33 @@ void App::replaceVariables(string& input, + } + + ++/* ++ * We rely on the fact that all bits generated by Util::random() ++ * are usable, so we are taking full words from its output. ++ */ + void App::CreateServerAuth() { + /* create mit cookie */ +- int i, r; +- int hexcount = 0; +- string authfile; +- string cmd; ++ uint16_t word; ++ uint8_t hi, lo; ++ int i; ++ string authfile; + const char *digits = "0123456789abcdef"; +- srand( time(NULL) ); +- for ( i = 0; i < 31; i++ ) { +- r = rand()%16; +- mcookie[i] = digits[r]; +- if (r>9) +- hexcount++; ++ Util::srandom(Util::makeseed()); ++ for (i = 0; i < App::mcookiesize; i+=4) { ++ word = Util::random() & 0xffff; ++ lo = word & 0xff; ++ hi = word >> 8; ++ mcookie[i] = digits[lo & 0x0f]; ++ mcookie[i+1] = digits[lo >> 4]; ++ mcookie[i+2] = digits[hi & 0x0f]; ++ mcookie[i+3] = digits[hi >> 4]; + } +- /* MIT-COOKIE: even occurrences of digits and hex digits */ +- if ((hexcount%2) == 0) { +- r = rand()%10; +- } else { +- r = rand()%5+10; +- } +- mcookie[31] = digits[r]; + /* reinitialize auth file */ + authfile = cfg->getOption("authfile"); + remove(authfile.c_str()); + putenv(StrConcat("XAUTHORITY=", authfile.c_str())); +- cmd = cfg->getOption("xauth_path") + " -q -f " + authfile + " add :0 . " + mcookie; +- system(cmd.c_str()); ++ Util::add_mcookie(mcookie, ":0", cfg->getOption("xauth_path"), ++ authfile); + } + + char* App::StrConcat(const char* str1, const char* str2) { +diff --git a/app.h b/app.h +index 7b4bd10..9a44269 100644 +--- a/app.h ++++ b/app.h +@@ -101,6 +101,8 @@ private: + + std::string themeName; + std::string mcookie; ++ ++ const int mcookiesize; + }; + + +diff --git a/switchuser.cpp b/switchuser.cpp +index e72a8fc..ec298e1 100644 +--- a/switchuser.cpp ++++ b/switchuser.cpp +@@ -10,6 +10,7 @@ + */ + + #include "switchuser.h" ++#include "util.h" + + using namespace std; + +@@ -53,10 +54,10 @@ void SwitchUser::Execute(const char* cmd) { + } + + void SwitchUser::SetClientAuth(const char* mcookie) { +- int r; ++ bool r; + string home = string(Pw->pw_dir); + string authfile = home + "/.Xauthority"; + remove(authfile.c_str()); +- string cmd = cfg->getOption("xauth_path") + " -q -f " + authfile + " add :0 . " + mcookie; +- r = system(cmd.c_str()); ++ r = Util::add_mcookie(mcookie, ":0", cfg->getOption("xauth_path"), ++ authfile); + } +diff --git a/util.cpp b/util.cpp +new file mode 100644 +index 0000000..5ed972f +--- /dev/null ++++ b/util.cpp +@@ -0,0 +1,69 @@ ++/* SLiM - Simple Login Manager ++ Copyright (C) 2009 Eygene Ryabinkin ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++*/ ++ ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "util.h" ++ ++/* ++ * Adds the given cookie to the specified Xauthority file. ++ * Returns true on success, false on fault. ++ */ ++bool Util::add_mcookie(const std::string &mcookie, const char *display, ++ const std::string &xauth_cmd, const std::string &authfile) ++{ ++ FILE *fp; ++ std::string cmd = xauth_cmd + " -f " + authfile + " -q"; ++ ++ fp = popen(cmd.c_str(), "w"); ++ if (!fp) ++ return false; ++ fprintf(fp, "remove %s\n", display); ++ fprintf(fp, "add %s %s %s\n", display, ".", mcookie.c_str()); ++ fprintf(fp, "exit\n"); ++ ++ pclose(fp); ++ return true; ++} ++ ++/* ++ * Interface for random number generator. Just now it uses ordinary ++ * random/srandom routines and serves as a wrapper for them. ++ */ ++void Util::srandom(unsigned long seed) ++{ ++ ::srandom(seed); ++} ++ ++long Util::random(void) ++{ ++ return ::random(); ++} ++ ++/* ++ * Makes seed for the srandom() using "random" values obtained from ++ * getpid(), time(NULL) and others. ++ */ ++long Util::makeseed(void) ++{ ++ struct timespec ts; ++ long pid = getpid(); ++ long tm = time(NULL); ++ ++ if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) { ++ ts.tv_sec = ts.tv_nsec = 0; ++ } ++ ++ return pid + tm + (ts.tv_sec ^ ts.tv_nsec); ++} +diff --git a/util.h b/util.h +new file mode 100644 +index 0000000..b8d2993 +--- /dev/null ++++ b/util.h +@@ -0,0 +1,24 @@ ++/* SLiM - Simple Login Manager ++ Copyright (C) 2009 Eygene Ryabinkin ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++*/ ++#ifndef __UTIL_H__ ++#define __UTIL_H__ ++ ++#include ++ ++namespace Util { ++ bool add_mcookie(const std::string &mcookie, const char *display, ++ const std::string &xauth_cmd, const std::string &authfile); ++ ++ void srandom(unsigned long seed); ++ long random(void); ++ ++ long makeseed(void); ++}; ++ ++#endif /* __UTIL_H__ */ diff --git a/recipes/slim/slim_1.3.1.bb b/recipes/slim/slim_1.3.1.bb new file mode 100644 index 0000000..a038ea6 --- /dev/null +++ b/recipes/slim/slim_1.3.1.bb @@ -0,0 +1,98 @@ +DESCRIPTION="Simple Login Manager" +HOMEPAGE="http://slim.berlios.de" +LICENSE = "GPL" + +PR = "r0.4" + +inherit update-rc.d + +DEPEND="virtual/x11 libxmu libpng libjpeg libpam freetype" + +RDEPEND="${DEPEND} perl xauth" + +S = "${WORKDIR}/${PN}-${PV}/" + +SRC_URI=" \ + http://download.berlios.de/${PN}/${P}.tar.gz \ + file://fix-manpage.patch;patch=1 \ +# file://slim-conf.patch;patch=1 \ + file://ftbfs_gcc_4.4.patch;patch=1 \ + file://Makefile.patch;patch=1 \ + file://xauth_secret_support.patch;patch=1 \ + file://delay.patch;patch=1 \ + file://pam-unix2.patch;patch=1 \ + file://rc.slim \ + file://slim-dynwm \ + file://update_slim_wmlist \ + file://Makefile.oe \ + file://slim.pamd \ +" + +EXTRA_OEMAKE += " \ + USE_PAM=1 \ + PREFIX=${prefix} \ + CFGDIR=${sysconfdir} \ + MANDIR=${mandir} \ + DESTDIR=${D} \ + CFLAGS+=-I${STAGING_INCDIR}/freetype2 \ + CXXFLAGS+=-I${STAGING_INCDIR}/freetype2 \ + LDFLAGS+=-lXft \ + LDFLAGS+=-lX11 \ + LDFLAGS+=-lfreetype \ + LDFLAGS+=-lXrender \ + LDFLAGS+=-lfontconfig \ + LDFLAGS+=-lpng12 \ + LDFLAGS+=-lz \ + LDFLAGS+=-lm \ + LDFLAGS+=-lcrypt \ + LDFLAGS+=-lXmu \ + LDFLAGS+=-lpng \ + LDFLAGS+=-ljpeg \ + LDFLAGS+=-lrt \ + LDFLAGS+=-lpam \ +" + +#EXTRA_OEMAKE += "-I${STAGING_INCDIR}/freetype2" +#EXTRA_OEMAKE += 'EXTRA_CFLAGS="-I${STAGING_INCDIR}/freetype2"' + +#do_compile_prepend() { +# # respect C[XX]FLAGS, fix crosscompile, +# # fix linking order for --as-needed" +# sed -i -e "s:^CXX=.*:CXX=$(CXX) ${CXXFLAGS}:" \ +# -e "s:^CC=.*:CC=$(CC) ${CFLAGS}:" \ +# -e "s:^MANDIR=.*:MANDIR=/usr/share/man:" \ +# -e "s:^\t\(.*\)\ \$(LDFLAGS)\ \(.*\):\t\1\ \2\ \$(LDFLAGS):g" \ +# -r -e "s:^LDFLAGS=(.*):LDFLAGS=\1 ${LDFLAGS}:" \ +# Makefile" +#} + +do_compile_prepend() { + cp -pP ${WORKDIR}/Makefile.oe ${S}/Makefile +} + +# USE_PAM=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX} CC=${TARGET_CC} \ +# CXX=${TARGET_CXX} DESTDIR=${D} MANDIR=${mandir} PREFIX=${prefix} CFGDIR=${sysconfdir} + +do_install() { + oe_runmake install + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/slim-dynwm ${D}${bindir}/ + install -m 0755 ${WORKDIR}/update_slim_wmlist ${D}${bindir}/ + install -d ${D}${sysconfdir}/pam.d/ + install -m 0644 ${WORKDIR}/slim.pamd ${D}${sysconfdir}/pam.d/slim + install -d ${D}${sysconfdir}/init.d/ + cp -pP ${WORKDIR}/rc.slim ${D}${sysconfdir}/init.d/slim-init +} + +INITSCRIPT_NAME = "slim-init" +INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." + +pkg_postinst_${PN} () { +# Register SLiM as default DM +mkdir -p ${sysconfdir}/X11/ +echo "${bindir}/slim-dynwm" > ${sysconfdir}/X11/default-display-manager +} + +pkg_postrm_${PN} () { +sed -i /slim-dynwm/d ${sysconfdir}/X11/default-display-manager || true +} diff --git a/recipes/slim/slim_themes1.2.3.bb.old b/recipes/slim/slim_themes1.2.3.bb.old new file mode 100644 index 0000000..0c4e7b4 --- /dev/null +++ b/recipes/slim/slim_themes1.2.3.bb.old @@ -0,0 +1,23 @@ +DESCRIPTION = "GNOME editor" +SECTION = "x11/gnome" +LICENSE = "GPL" + +DEPENDS = "iso-codes gnome-common glib-2.0 gtk+ gconf gtksourceview2" +RDEPENDS += " gtksourceview2" + +PR = "r1" + +inherit gnome pkgconfig + +EXTRA_OECONF = "--disable-scrollkeeper" + +do_configure_prepend () { + cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S} +} + +do_stage () { + autotools_stage_all +} + +FILES_${PN} += "${libdir}/gedit-2/plugin* ${datadir}/gedit-2" +FILES_${PN}-dbg += "${libdir}/gedit-2/plugin-loaders/.debug ${libdir}/gedit-2/plugins/.debug"