From 09b14aa48e621e4263c095769bbd2697893eef8d Mon Sep 17 00:00:00 2001
From: Cecil Hugh Watson <knoppmyth@gmail.com>
Date: Tue, 10 Feb 2009 23:29:38 -0800
Subject: Needed for Splashy.

---
 abs/core-testing/directfb/ChangeLog                |   5 +
 abs/core-testing/directfb/PKGBUILD                 |  26 ++
 abs/core-testing/directfb/dfb_serial.diff          |  10 +
 abs/core-testing/initscripts-splashy/PKGBUILD      |  31 +++
 .../initscripts-splashy/initscripts-splash.install |  25 ++
 abs/core-testing/initscripts-splashy/splash        | 310 +++++++++++++++++++++
 abs/core-testing/initscripts-splashy/splash.conf   |   4 +
 abs/core-testing/splashy/PKGBUILD                  |  46 +++
 abs/core-testing/splashy/splashy-functions         |  92 ++++++
 abs/core-testing/splashy/splashy.initcpio_hook     |  48 ++++
 abs/core-testing/splashy/splashy.initcpio_install  |  51 ++++
 abs/core-testing/splashy/splashy.install           |  15 +
 abs/core-testing/sysvinit-mod/PKGBUILD             |  29 ++
 abs/core-testing/sysvinit-mod/sysvinit.diff        | 276 ++++++++++++++++++
 14 files changed, 968 insertions(+)
 create mode 100644 abs/core-testing/directfb/ChangeLog
 create mode 100644 abs/core-testing/directfb/PKGBUILD
 create mode 100644 abs/core-testing/directfb/dfb_serial.diff
 create mode 100644 abs/core-testing/initscripts-splashy/PKGBUILD
 create mode 100644 abs/core-testing/initscripts-splashy/initscripts-splash.install
 create mode 100644 abs/core-testing/initscripts-splashy/splash
 create mode 100644 abs/core-testing/initscripts-splashy/splash.conf
 create mode 100644 abs/core-testing/splashy/PKGBUILD
 create mode 100644 abs/core-testing/splashy/splashy-functions
 create mode 100755 abs/core-testing/splashy/splashy.initcpio_hook
 create mode 100755 abs/core-testing/splashy/splashy.initcpio_install
 create mode 100644 abs/core-testing/splashy/splashy.install
 create mode 100644 abs/core-testing/sysvinit-mod/PKGBUILD
 create mode 100644 abs/core-testing/sysvinit-mod/sysvinit.diff

diff --git a/abs/core-testing/directfb/ChangeLog b/abs/core-testing/directfb/ChangeLog
new file mode 100644
index 0000000..4e10ded
--- /dev/null
+++ b/abs/core-testing/directfb/ChangeLog
@@ -0,0 +1,5 @@
+2008-07-29  Eric Belanger  <eric@archlinux.org>
+
+	* directfb 1.2.0-1
+	* Upstream update
+	* Added ChangeLog
diff --git a/abs/core-testing/directfb/PKGBUILD b/abs/core-testing/directfb/PKGBUILD
new file mode 100644
index 0000000..76e86d1
--- /dev/null
+++ b/abs/core-testing/directfb/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD,v 1.7 2008/08/02 19:48:28 Snowman Exp $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+
+pkgname=directfb
+pkgver=1.2.7
+pkgrel=1
+pkgdesc="A thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system on top of the Linux Framebuffer Device"
+arch=('i686' 'x86_64')
+url="http://www.directfb.org"
+license=('LGPL')
+depends=('libjpeg' 'libxext' 'sdl' 'sysfsutils' 'libpng' 'freetype2')
+options=('!libtool')
+source=(http://www.directfb.org/downloads/Core/DirectFB-${pkgver}.tar.gz dfb_serial.diff)
+md5sums=('59ca16f600e96c8c104a485ff7c322c6'
+	 '5993ae20546b80d0e5fa4f7b367e2f82')
+
+build() {
+  cd ${srcdir}/DirectFB-${pkgver}
+#  patch -p0 < ../dfb_serial.diff
+  ./configure --prefix=/usr --sysconfdir=/etc --enable-static --enable-zlib \
+              --enable-x11 --enable-sdl --disable-vnc --disable-osx \
+              --enable-video4linux2 --enable-voodoo || return 1
+  make || return 1
+  make DESTDIR=${pkgdir} install || return 1
+} 
diff --git a/abs/core-testing/directfb/dfb_serial.diff b/abs/core-testing/directfb/dfb_serial.diff
new file mode 100644
index 0000000..638467b
--- /dev/null
+++ b/abs/core-testing/directfb/dfb_serial.diff
@@ -0,0 +1,10 @@
+--- lib/direct/serial.h.orig	2009-02-11 05:40:20.000000000 +0000
++++ lib/direct/serial.h	2009-02-11 05:40:44.000000000 +0000
+@@ -31,6 +31,7 @@
+ 
+ #include <direct/types.h>
+ #include <direct/debug.h>
++#include <linux/types.h>
+ 
+ struct __D_DirectSerial {
+      int   magic;
diff --git a/abs/core-testing/initscripts-splashy/PKGBUILD b/abs/core-testing/initscripts-splashy/PKGBUILD
new file mode 100644
index 0000000..1c8dbed
--- /dev/null
+++ b/abs/core-testing/initscripts-splashy/PKGBUILD
@@ -0,0 +1,31 @@
+# Contributor: Lexiw <llexiw@gmail.com>
+# Contributor: Jeremy Sands <cto@jeremysands.com>
+
+pkgname=initscripts-splashy
+pkgver=2008.09
+pkgrel=2
+pkgdesc="System initialization/bootup scripts with splash support"
+arch=('i686' 'x86_64')
+url="http://www.archlinux.org"
+license=('GPL')
+groups=('base')
+backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown)
+depends=('glibc' 'bash' 'awk' 'grep' 'coreutils' 'sed' 'udev>=118' 'net-tools' 'ncurses' 'sysvinit-mod')
+provides=('initscripts')
+conflicts=('initscripts')
+install=initscripts-splash.install
+source=(ftp://ftp.archlinux.org/other/initscripts/initscripts-${pkgver}-${pkgrel}.tar.gz
+	splash.conf
+	splash)
+md5sums=('c28214d35643570cde56dd1142348aa7'
+         'fe6da7a9242aca91779e165979bb7e3d'
+         'd3fffe7133e6096937195084d2746889')
+
+build() {
+  cd ${startdir}/src/initscripts-${pkgver}-${pkgrel}/
+
+  DESTDIR=$startdir/pkg ./install.sh
+
+  install -D -m644 ${startdir}/splash ${startdir}/pkg/etc/rc.d/functions.d/splash
+  install -D -m644 ${startdir}/splash.conf ${startdir}/pkg/etc/splash.conf
+}
diff --git a/abs/core-testing/initscripts-splashy/initscripts-splash.install b/abs/core-testing/initscripts-splashy/initscripts-splash.install
new file mode 100644
index 0000000..9fffa9b
--- /dev/null
+++ b/abs/core-testing/initscripts-splashy/initscripts-splash.install
@@ -0,0 +1,25 @@
+post_upgrade() {
+  cat << "EOF"
+-----------------------------------------------------------
+IMPORTANT NOTICE FOR ENCRYPTION USERS
+
+The "password" column in /etc/crypttab has now
+two special keywords:
+- ASK  ask for a passphrase on boot
+- SWAP use a random key and create swapspace
+       This is particularly dangerous, as the
+       volume in question will be overwritten
+       If you use SWAP as your passphrase (which
+       is insecure anyway), be sure to remove it
+       from /etc/crypttab to avoid dataloss!
+
+See /etc/crypttab(.pacnew) for more information.
+-----------------------------------------------------------
+Attention netcfg users: netcfg is no longer included as
+part of the initscripts package.
+Be aware that rc.conf's NET_PROFILES has changed to
+NETWORKS, and that netcfg must be installed separately.
+For more info, see the netcfg man page.
+-----------------------------------------------------------
+EOF
+}
diff --git a/abs/core-testing/initscripts-splashy/splash b/abs/core-testing/initscripts-splashy/splash
new file mode 100644
index 0000000..a3e49a4
--- /dev/null
+++ b/abs/core-testing/initscripts-splashy/splash
@@ -0,0 +1,310 @@
+#
+# initscripts-splash functions
+#
+
+. /etc/splash.conf
+
+if [ "$SPLASH_DEBUG" = "true" ]; then
+	if ! [ -d /var/log/splash ]; then
+		mkdir -p /var/log/splash
+	fi
+	if ! [ -f /var/log/splash/splash.log ]; then
+		mount -ns -t tmpfs -o size=1M tmpfs /var/log/splash
+		echo "Hello damned debugger" > /var/log/splash/splash.log
+	fi
+fi
+
+debug_log() {
+	[ "$SPLASH_DEBUG" = "true" ] || return 1
+
+	echo "$1" >> /var/log/splash/splash.log
+}
+
+splash_enabled_cmdline() { debug_log "$0 ${FUNCNAME}"
+	local ENABLE=false
+	local SINGLE=false
+
+	for x in $CMDLINE; do
+		case $x in
+			single)
+				SINGLE=true
+			;;
+			splash)
+				ENABLE=true
+			;;
+			nosplash)
+				ENABLE=false
+			;;
+		esac
+	done
+
+	[ "${SINGLE}" = "false" ] || return 1
+	[ "${ENABLE}" = "true" ] || return 1
+
+	return 0
+}
+
+splash_enabled_config() { debug_log "$0 ${FUNCNAME}"
+	if [[ -n ${SPLASH} && -f /etc/rc.d/${SPLASH}-functions ]]; then
+		return 0
+	else
+		if [[ -f /etc/rc.d/splashy-functions ]]; then
+			SPLASH="splashy"
+			return 0
+		else
+			return 1
+		fi
+	fi
+}
+
+if [ -z "$RUNLEVEL" ]; then
+	return 0
+fi
+
+if ! splash_enabled_cmdline; then
+	return 0
+fi
+
+if ! splash_enabled_config; then
+	return 0
+fi
+
+count_daemons() {
+	local COUNT=0
+	for daemon in "${DAEMONS[@]}"; do
+		if [ "$daemon" = "${daemon#!}" ]; then
+			((COUNT++))
+		fi
+	done
+
+	echo ${COUNT}
+}
+
+count_stats() {
+	local COUNT=$(grep -e status -e stat_busy /etc/${1} | grep -c -v \#)
+
+	if ! [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
+		((COUNT--))
+	fi
+	if ! [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
+		((COUNT--))
+	fi
+
+	echo ${COUNT}
+}
+
+set_sysinit() { debug_log "$0 ${FUNCNAME}"
+	SPLASH_PROGRESS_STATS=$(count_stats rc.sysinit)
+	SPLASH_PROGRESS_DAEMONS=$(count_daemons)
+	SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
+	SPLASH_PROGRESS_COUNT=0
+	SPLASH_AUTORUN_COMMAND="splash_sysinit"
+
+	debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
+}
+
+set_multi() { debug_log "$0 ${FUNCNAME}"
+	SPLASH_PROGRESS_STATS=$(count_stats rc.sysinit)
+	SPLASH_PROGRESS_DAEMONS=$(count_daemons)
+	SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
+	SPLASH_PROGRESS_COUNT=$(($SPLASH_PROGRESS_STATS-1))
+	SPLASH_AUTORUN_COMMAND="splash_multi"
+
+	debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
+}
+
+set_shutdown() { debug_log "$0 ${FUNCNAME}"
+	SPLASH_PROGRESS_STATS=$(count_stats rc.shutdown)
+	SPLASH_RUNNING_DAEMONS=(`/bin/ls /var/run/daemons`)
+	SPLASH_PROGRESS_DAEMONS=${#SPLASH_RUNNING_DAEMONS[*]}
+	SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
+	SPLASH_PROGRESS_COUNT=0
+	SPLASH_AUTORUN_COMMAND="splash_shutdown"
+
+	debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
+}
+
+if [ -z "${SPLASH_INIT_DONE}" ]; then
+	export SPLASH_INIT_DONE="true"
+
+	debug_log "$0 Running initscript..."
+
+	case "$RUNLEVEL" in
+		S)
+			set_sysinit
+			SPLASH_STATUS_MESSAGE="Booting Arch Linux..."
+			;;
+		3)
+			set_multi
+			SPLASH_STATUS_MESSAGE="Loading daemons..."
+			;;
+		5)
+			set_multi
+			SPLASH_STATUS_MESSAGE="Loading daemons..."
+			;;
+		6)
+			set_shutdown
+			SPLASH_STATUS_MESSAGE="Rebooting Arch Linux..."
+			;;
+		0)
+			set_shutdown
+			SPLASH_STATUS_MESSAGE="Shutting down Arch Linux..."
+			;;
+	esac
+fi
+
+. /etc/rc.d/${SPLASH}-functions
+
+# splash functions:
+
+splash_progress() { debug_log "$0 ${FUNCNAME}"
+	if [ -n "$SPLASH_PROGRESS_COUNT" ]; then
+		${SPLASH}_progress $SPLASH_PROGRESS_COUNT $SPLASH_PROGRESS_TOTAL
+		((SPLASH_PROGRESS_COUNT++))
+	fi
+}
+
+splash_print() { debug_log "$0 ${FUNCNAME}"
+	${SPLASH}_print "${1}"
+
+	debug_log "$1"
+}
+
+splash_exit() { debug_log "$0 ${FUNCNAME}"
+	${SPLASH}_exit ${DEFAULT_TTY} ${SWITCH_TTY}
+}
+
+splash_sysinit() { debug_log "$0 ${FUNCNAME}"
+	${SPLASH}_sysinit ${DEFAULT_TTY}
+}
+
+splash_multi() { debug_log "$0 ${FUNCNAME}"
+	${SPLASH}_multi
+
+	trap splash_exit 0
+	splash_progress
+}
+
+splash_shutdown() { debug_log "$0 ${FUNCNAME}"
+	${SPLASH}_shutdown ${DEFAULT_TTY}
+
+	if [ -n "`pidof $SPLASH`" ]; then
+		export KILLALL5_OPTS="-o `pidof $SPLASH`"
+	fi
+}
+
+if [ -n "${SPLASH_AUTORUN_COMMAND}" ]; then
+	$SPLASH_AUTORUN_COMMAND
+	splash_print "${SPLASH_STATUS_MESSAGE}"
+	sleep 0.5
+fi
+
+# functions:
+
+deltext() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "${DEL_TEXT}"
+	else
+		return 0
+	fi
+}
+
+printhl() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "${C_OTHER}${PREFIX_HL} ${C_H1}${1}${C_CLEAR} \n"
+	else
+		return 0
+	fi
+}
+
+printsep() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "\n${C_SEPARATOR}   ------------------------------\n"
+	else
+		return 0
+	fi
+}
+
+stat_bkgd() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
+		deltext
+		printf "   ${C_OTHER}[${C_BKGD}BKGD${C_OTHER}]${C_CLEAR} "
+	fi
+}
+
+stat_busy() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
+		printf "${SAVE_POSITION}"
+		deltext
+		printf "   ${C_OTHER}[${C_BUSY}BUSY${C_OTHER}]${C_CLEAR} "
+	fi
+	splash_print "${1}"
+}
+
+stat_append() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "${RESTORE_POSITION}"
+		printf "${C_MAIN}${1}${C_CLEAR}"
+		printf "${SAVE_POSITION}"
+	else
+		return 0
+	fi
+}
+
+stat_done() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		deltext
+		printf "   ${C_OTHER}[${C_DONE}DONE${C_OTHER}]${C_CLEAR} \n"
+	fi
+	splash_progress
+}
+
+stat_fail() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		printf "   ${C_OTHER}[${C_FAIL}FAIL${C_OTHER}]${C_CLEAR} \n"
+	fi
+	splash_print "Something failed, killing splash..."
+	sleep 2
+	splash_exit
+}
+
+#daemons:
+
+log_daemon() { debug_log "$0 ${FUNCNAME}"
+	case $1 in
+		?dm|slim)
+			splash_exit
+		;;
+	esac
+}
+
+start_daemon() { debug_log "$0 ${FUNCNAME}"
+	log_daemon $1
+	splash_progress
+	/etc/rc.d/$1 start
+}
+
+start_daemon_bkgd() { debug_log "$0 ${FUNCNAME}"
+	if [ "$CONSOLE_PRINT" == "true" ]; then
+		stat_bkgd "Starting $1"
+	fi
+	log_daemon $1
+	(/etc/rc.d/$1 start) &>/dev/null &
+	splash_progress
+}
+
+stop_daemon() { debug_log "$0 ${FUNCNAME}"
+	/etc/rc.d/$1 stop
+
+	for daemon in ${SPLASH_RUNNING_DAEMONS[@]}; do
+		if [ "$daemon" = "$1" ]; then
+			splash_progress
+			break
+		fi
+	done
+}
+
+# End of file
+# vim: set ts=2 noet:
diff --git a/abs/core-testing/initscripts-splashy/splash.conf b/abs/core-testing/initscripts-splashy/splash.conf
new file mode 100644
index 0000000..3f82053
--- /dev/null
+++ b/abs/core-testing/initscripts-splashy/splash.conf
@@ -0,0 +1,4 @@
+DEFAULT_TTY=8
+SWITCH_TTY=1
+CONSOLE_PRINT=true
+SPLASH_DEBUG=false
diff --git a/abs/core-testing/splashy/PKGBUILD b/abs/core-testing/splashy/PKGBUILD
new file mode 100644
index 0000000..be38e8c
--- /dev/null
+++ b/abs/core-testing/splashy/PKGBUILD
@@ -0,0 +1,46 @@
+# Contributor: Lexiw <llexiw@gmail.com>
+# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+# Contributor: dongiovanni <dongiovanni@archlinux.de>
+# Contributor: Darwin Bautista <djclue917@gmail.com>
+# Contributor: Jeremy Sands <cto@jeremysands.com>
+# Contributor: Tons of people here http://bbs.archlinux.org/viewtopic.php?id=48978
+
+pkgname=splashy
+pkgver=0.3.13
+pkgrel=1
+pkgdesc="A next-generation user-space boot splashing system for Linux systems"
+arch=('i686' 'x86_64')
+url="http://splashy.alioth.debian.org/"
+license=('GPL')
+depends=('file' 'glib2' 'initscripts-splashy' 'directfb')
+makedepends=('perl' 'pkgconfig' 'procps' 'gcc' 'make')
+options=('!libtool')
+source=(https://alioth.debian.org/frs/download.php/2691/splashy-0.3.13.tar.gz
+	splashy.initcpio_install
+	splashy.initcpio_hook
+	splashy.install
+	splashy-functions)
+md5sums=('03b7ee4f31c56ee61463772f74bad8a0'
+         '89ab896c3b6d8edc70f7233d4f447897'
+         'f2d1b7ca4560a2888b08c5580dc8afae'
+	 'c22046f52421e0663e02375e399ef37a'
+         '91972fc154635806923befe3a70a1299')
+
+build() {
+	cd ${startdir}/src/${pkgname}-${pkgver}
+
+	./configure --prefix=/usr --libdir=/usr/lib --sysconfdir=/etc --sbindir=/sbin --datarootdir=/usr/share --mandir=/usr/share/man --includedir=/usr/include
+	make || return 1
+	make DESTDIR=${startdir}/pkg install
+
+	# Remove unnecessary files
+	rm -rf ${startdir}/pkg/etc/{console-tools,default,init.d,lsb-base-logging.sh}
+	rm -rf ${startdir}/pkg/usr/share/initramfs-tools
+
+	install -D -m644 ${startdir}/splashy.initcpio_install ${startdir}/pkg/lib/initcpio/install/splashy
+	install -D -m644 ${startdir}/splashy.initcpio_hook ${startdir}/pkg/lib/initcpio/hooks/splashy
+	install -D -m644 ${startdir}/splashy-functions ${startdir}/pkg/etc/rc.d/splashy-functions
+
+	sed -e 's|>/etc/splashy/themes<|>/usr/share/splashy/themes<|' -i ${startdir}/pkg/etc/splashy/config.xml
+}
+install=${pkgname}.install
diff --git a/abs/core-testing/splashy/splashy-functions b/abs/core-testing/splashy/splashy-functions
new file mode 100644
index 0000000..037cb27
--- /dev/null
+++ b/abs/core-testing/splashy/splashy-functions
@@ -0,0 +1,92 @@
+#
+# splashy functions
+#
+
+# functions:
+
+splashy_wait_till_ready() { debug_log "$0 ${FUNCNAME}"
+	local tries=50
+
+	/sbin/splashy_update "print" 2> /dev/null
+
+	while [ $? -ne 0 ]; do
+		[ $tries -ne 0 ] || return 1
+		((tries--))
+		sleep 0.1
+		/sbin/splashy_update "print" 2> /dev/null
+	done
+
+	debug_log "tries=$((50-$tries))"
+}
+
+splashy_print() { debug_log "$0 ${FUNCNAME}"
+	/sbin/splashy_update "print ${1}" 2> /dev/null
+}
+
+splashy_sysinit() { debug_log "$0 ${FUNCNAME}"
+	splashy_wait_till_ready
+}
+
+splashy_multi() { debug_log "$0 ${FUNCNAME}"
+	return 0
+}
+
+splashy_shutdown() { debug_log "$0 ${FUNCNAME}"
+	clear > /dev/tty${1}
+	/sbin/splashy_chvt ${1}
+
+	splashy shutdown 2> /dev/null
+
+	splashy_wait_till_ready
+}
+
+splashy_kill() { debug_log "$0 ${FUNCNAME}"
+	local tries=50
+	while pidof splashy > /dev/null; do
+		[ $tries -ne 0 ] || return 1
+		((tries--))
+
+		kill -15 `pidof splashy`
+		sleep 0.2
+		pidof splashy > /dev/null || break
+		kill -9 `pidof splashy`
+		sleep 0.2
+	done
+	debug_log "tries=$((50-$tries))"
+}
+
+splashy_exit() { debug_log "$0 ${FUNCNAME}"
+	pidof splashy > /dev/null || return 1
+
+	/usr/bin/setterm -cursor off > /dev/tty8
+	
+	/sbin/splashy_update "progress 100" 2> /dev/null
+	sleep 0.3
+	/sbin/splashy_update "exit" 2> /dev/null
+	sleep 0.3
+
+	splashy_kill
+
+	if [ "$(fgconsole 2>/dev/null)" = "${1}" ]; then
+		clear > /dev/tty${1} || true
+	fi
+
+	/usr/bin/setterm -cursor off > /dev/tty7
+
+	if [ -n "${2}" ]; then
+		if [ "$(fgconsole 2>/dev/null)" != "${2}" ]; then 
+			/sbin/splashy_chvt ${2} || true
+		else
+			# fall back to tty1
+			/sbin/splashy_chvt 1 || true
+		fi
+	fi
+}
+
+splashy_progress() { debug_log "$0 ${FUNCNAME}"
+	PROGRESS=$(((${1}*100)/${2}))
+	/sbin/splashy_update "progress ${PROGRESS}" 2> /dev/null
+}
+
+# End of file
+# vim: set ts=2 noet:
diff --git a/abs/core-testing/splashy/splashy.initcpio_hook b/abs/core-testing/splashy/splashy.initcpio_hook
new file mode 100755
index 0000000..5e960b9
--- /dev/null
+++ b/abs/core-testing/splashy/splashy.initcpio_hook
@@ -0,0 +1,48 @@
+# vim: set ft=sh:
+run_hook() {
+	[ -x /sbin/splashy ] || return
+
+	SPLASH=false
+	SINGLE=false
+
+	for x in $(cat /proc/cmdline); do
+	    case $x in
+		single)
+		    SINGLE=true
+		;;
+		splash)
+		    SPLASH=true
+		;;
+		nosplash)
+		    SPLASH=false
+		;;
+	    esac
+	done
+
+	[ "${SINGLE}" = "false" ] || return
+	[ "${SPLASH}" = "true" ] || return
+
+#if [ -s /proc/fb ]; then
+#        while read fbno desc; do
+#                mknod /dev/fb${fbno} c 29 ${fbno}
+#        done < /proc/fb
+#else
+#        mknod /dev/fb0 c 29 0
+#fi
+
+#for i in 0 1 2 3 4 5 6 7 8; do
+#	test -c /dev/tty${i} || \
+#            mknod /dev/tty${i} c 4 ${i}
+#done
+
+	msg -n ":: Loading Splashy..."
+
+	if [ -x /sbin/splashy_chvt ]; then
+		/sbin/splashy_chvt 8
+	fi
+
+	/sbin/splashy boot
+	sleep 1 #we need a better solution
+
+	msg "done."
+}
diff --git a/abs/core-testing/splashy/splashy.initcpio_install b/abs/core-testing/splashy/splashy.initcpio_install
new file mode 100755
index 0000000..86efda8
--- /dev/null
+++ b/abs/core-testing/splashy/splashy.initcpio_install
@@ -0,0 +1,51 @@
+# vim: set ft=sh:
+install() {
+    [ -x /sbin/splashy ] || return 1
+
+    THEMES_DIR="$(splashy_config --get-key /splashy/themes 2> /dev/null)"
+    CURRENT_THEME="$(splashy_config --get-key /splashy/current_theme 2> /dev/null)"
+
+    add_binary "/sbin/splashy"
+    add_file "/sbin/splashy_chvt"
+    add_file "/etc/splashy/config.xml"
+    add_full_dir "${THEMES_DIR}/${CURRENT_THEME}"
+
+    #shared libraries needed by splashy
+    add_file "/usr/lib/libsplashycnf.so.1"
+    add_file "/usr/lib/libsplashy.so.1"
+    add_file "/usr/lib/libglib-2.0.so.0"
+    add_file "/usr/lib/libdirectfb-1.2.so.0"
+    add_file "/usr/lib/libfusion-1.2.so.0"
+    add_file "/usr/lib/libdirect-1.2.so.0"
+    add_file "/usr/lib/libpng12.so.0"
+    add_file "/usr/lib/libjpeg.so.62"
+    add_file "/usr/lib/libfreetype.so.6"
+    add_file "/lib/libm.so.6"
+    add_file "/lib/libpthread.so.0"
+    add_file "/usr/lib/libz.so.1"
+    add_file "/lib/libdl.so.2"
+    add_file "/lib/libc.so.6"
+    add_file "/lib/libpcre.so.0"
+    add_file "/lib/libsysfs.so.2"
+    add_file "/usr/lib/directfb-1.2-0/wm/libdirectfbwm_default.so"
+    add_file "/usr/lib/directfb-1.2-0/systems/libdirectfb_fbdev.so"
+    add_file "/usr/lib/directfb-1.2-0/inputdrivers/libdirectfb_keyboard.so"
+    add_file "/usr/lib/directfb-1.2-0/interfaces/IDirectFBFont/libidirectfbfont_ft2.so"
+    add_file "/usr/lib/directfb-1.2-0/interfaces/IDirectFBFont/libidirectfbfont_default.so"
+    add_file "/usr/lib/directfb-1.2-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so"
+    add_file "/usr/lib/directfb-1.2-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so"
+
+    if [ $(arch) = "x86_64" ]; then
+        add_file "/lib/ld-linux-x86-64.so.2"
+    else
+        add_file "/lib/ld-linux.so.2"
+    fi
+
+    SCRIPT="splashy"
+}
+
+help() {
+echo "This hook includes Splashy in the initramfs image."
+}
+
+#EOF
diff --git a/abs/core-testing/splashy/splashy.install b/abs/core-testing/splashy/splashy.install
new file mode 100644
index 0000000..4b1eaba
--- /dev/null
+++ b/abs/core-testing/splashy/splashy.install
@@ -0,0 +1,15 @@
+pkgname=splashy
+
+post_install() {
+  cat << _EOF 
+
+==> You'll probably want to see the page on the wiki
+==> to do final configuration and install of splashy:
+==> http://wiki.archlinux.org/index.php/Splashy
+
+_EOF
+}
+
+post_upgrade() {
+  post_install $1
+}
diff --git a/abs/core-testing/sysvinit-mod/PKGBUILD b/abs/core-testing/sysvinit-mod/PKGBUILD
new file mode 100644
index 0000000..172ed18
--- /dev/null
+++ b/abs/core-testing/sysvinit-mod/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Simon Bachmann <simonbachmann@freesurf.ch>
+pkgname=sysvinit-mod
+pkgver=2.86
+pkgrel=2
+pkgdesc="Linux System V Init, with a patched killall5 to enable omission of specified pids"
+arch=('i686' 'x86_64')
+url="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/"
+license=('GPL')
+depends=('shadow' 'util-linux' 'coreutils' 'glibc' 'awk')
+provides=('sysvinit')
+conflicts=('sysvinit')
+source=(ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/sysvinit-$pkgver.tar.gz sysvinit.diff)
+md5sums=('7d5d61c026122ab791ac04c8a84db967' '9fa3c71e4a12465239135d67a8859315')
+
+build() {
+  cd $startdir/src/sysvinit-$pkgver
+  #patch killall5
+  patch -p1 < $startdir/src/sysvinit.diff || return 1
+  cp src/init.c src/init.c.backup
+  sed 's/\(.*\)\(Sending processes\)\(.*\)/\1\2 started by init\3/' \
+     src/init.c > tmp~
+  mv tmp~ src/init.c
+  mkdir -p $startdir/pkg/bin $startdir/pkg/sbin
+  mkdir -p $startdir/pkg/usr/bin
+  mkdir -p $startdir/pkg/usr/man/man5 $startdir/pkg/usr/man/man8
+  mkdir -p $startdir/pkg/usr/man/man1 $startdir/pkg/usr/include
+  make -C src || return 1
+  make -C src MANDIR=/usr/man ROOT=$startdir/pkg install
+}
diff --git a/abs/core-testing/sysvinit-mod/sysvinit.diff b/abs/core-testing/sysvinit-mod/sysvinit.diff
new file mode 100644
index 0000000..d26f7cc
--- /dev/null
+++ b/abs/core-testing/sysvinit-mod/sysvinit.diff
@@ -0,0 +1,276 @@
+diff -r -u sysvinit-2.86/COPYRIGHT sysvinit-2.86.patched/COPYRIGHT
+--- sysvinit-2.86/COPYRIGHT	2004-07-30 12:12:12.000000000 +0000
++++ sysvinit-2.86.patched/COPYRIGHT	2008-04-15 14:28:52.000000000 +0000
+@@ -12,7 +12,7 @@
+ 
+     You should have received a copy of the GNU General Public License
+     along with this program; if not, write to the Free Software
+-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ 
+ On Debian GNU/Linux systems, the complete text of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL'.
+diff -r -u sysvinit-2.86/man/killall5.8 sysvinit-2.86.patched/man/killall5.8
+--- sysvinit-2.86/man/killall5.8	2004-06-09 12:47:45.000000000 +0000
++++ sysvinit-2.86.patched/man/killall5.8	2008-04-15 14:28:52.000000000 +0000
+@@ -4,14 +4,29 @@
+ .SH SYNOPSIS
+ .B killall5
+ .RB -signalnumber
++.RB [ \-o
++.IR omitpid ]
++.RB [ \-o
++.IR omitpid.. ]
+ .SH DESCRIPTION
+ .B killall5
+ is the SystemV killall command. It sends a signal to all processes except
+ kernel threads and the processes in its own session, so it won't kill
+ the shell that is running the script it was called from. Its primary
+ (only) use is in the \fBrc\fP scripts found in the /etc/init.d directory.
++.SH OPTIONS
++.IP "-o \fIomitpid\fP"
++Tells \fIkillall5\fP to omit processes with that process id.
++.SH NOTES
++\fIkillall5\fP can also be invoked as pidof, which is simply a
++(symbolic) link to the \fIkillall5\fP program.
++.SH EXIT STATUS
++The program return zero if it killed processes.  It return 2 if no
++process were killed, and 1 if it was unable to find any processes
++(/proc/ is missing).
+ .SH SEE ALSO
+ .BR halt (8),
+-.BR reboot (8)
++.BR reboot (8),
++.BR pidof (8)
+ .SH AUTHOR
+ Miquel van Smoorenburg, miquels@cistron.nl
+diff -r -u sysvinit-2.86/man/pidof.8 sysvinit-2.86.patched/man/pidof.8
+--- sysvinit-2.86/man/pidof.8	1998-09-02 12:49:33.000000000 +0000
++++ sysvinit-2.86.patched/man/pidof.8	2008-04-15 14:28:52.000000000 +0000
+@@ -27,13 +27,20 @@
+ .IP -x
+ Scripts too - this causes the program to also return process id's of
+ shells running the named scripts.
+-.IP -o \fIomitpid\fP
++.IP "-o \fIomitpid\fP"
+ Tells \fIpidof\fP to omit processes with that process id. The special
+ pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP
+ program, in other words the calling shell or shell script.
++.SH "EXIT STATUS"
++.TP
++.B 0
++At least one program was found with the requested name.
++.TP
++.B 1
++No program was found with the requested name.
+ .SH NOTES
+-\fIpidof\fP is simply a (symbolic) link to the \fIkillall5\fP program,
+-which should also be located in \fP/sbin\fP.
++\fIpidof\fP is actually the same program as \fIkillall5\fP;
++the program behaves according to the name under which it is called.
+ .PP
+ When \fIpidof\fP is invoked with a full pathname to the program it
+ should find the pid of, it is reasonably safe. Otherwise it is possible
+@@ -43,6 +50,7 @@
+ .BR shutdown (8),
+ .BR init (8),
+ .BR halt (8),
+-.BR reboot (8)
++.BR reboot (8),
++.BR killall5 (8)
+ .SH AUTHOR
+ Miquel van Smoorenburg, miquels@cistron.nl
+diff -r -u sysvinit-2.86/src/killall5.c sysvinit-2.86.patched/src/killall5.c
+--- sysvinit-2.86/src/killall5.c	2004-07-30 12:16:23.000000000 +0000
++++ sysvinit-2.86.patched/src/killall5.c	2008-04-15 14:28:52.000000000 +0000
+@@ -378,8 +378,8 @@
+ 	int		foundone = 0;
+ 	int		ok = 0;
+ 
+-	/* Try to stat the executable. */
+-	if (prog[0] == '/' && stat(prog, &st) == 0) dostat++;
++	if (! prog)
++		return NULL;
+ 
+ 	/* Get basename of program. */
+ 	if ((s = strrchr(prog, '/')) == NULL)
+@@ -387,9 +387,16 @@
+ 	else
+ 		s++;
+ 
++	if (! *s)
++		return NULL;
++
+ 	q = (PIDQ_HEAD *)xmalloc(sizeof(PIDQ_HEAD));
+ 	q = init_pid_q(q);
+ 
++	/* Try to stat the executable. */
++	if (prog[0] == '/' && stat(prog, &st) == 0)
++		dostat++;
++
+ 	/* First try to find a match based on dev/ino pair. */
+ 	if (dostat) {
+ 		for (p = plist; p; p = p->next) {
+@@ -404,15 +411,35 @@
+ 	if (!foundone) for (p = plist; p; p = p->next) {
+ 		ok = 0;
+ 
+-		/* Compare name (both basename and full path) */
+-		ok += (p->argv0 && strcmp(p->argv0, prog) == 0);
+-		ok += (p->argv0 && strcmp(p->argv0base, s) == 0);
++		/*             matching        nonmatching
++		 * proc name   prog name       prog name
++		 * ---         -----------     ------------
++		 *   b         b, p/b, q/b
++		 * p/b         b, p/b          q/b
++		 *
++		 * Algorithm: Match if:
++		 *    cmd = arg
++		 * or cmd = base(arg)
++		 * or base(cmd) = arg
++		 *
++		 * Specifically, do not match just because base(cmd) = base(arg)
++		 * as was done in earlier versions of this program, since this
++		 * allows /aaa/foo to match /bbb/foo .
++		 */
++		ok |=
++			(p->argv0 && strcmp(p->argv0, prog) == 0)
++			|| (p->argv0 && s != prog && strcmp(p->argv0, s) == 0)
++			|| (p->argv0base && strcmp(p->argv0base, prog) == 0);
+ 
+ 		/* For scripts, compare argv[1] as well. */
+-		if (scripts_too && p->argv1 &&
+-		    !strncmp(p->statname, p->argv1base, STATNAMELEN)) {
+-			ok += (strcmp(p->argv1, prog) == 0);
+-			ok += (strcmp(p->argv1base, s) == 0);
++		if (
++			scripts_too && p->statname && p->argv1base
++			&& !strncmp(p->statname, p->argv1base, STATNAMELEN)
++		) {
++			ok |=
++				(p->argv1 && strcmp(p->argv1, prog) == 0)
++				|| (p->argv1 && s != prog && strcmp(p->argv1, s) == 0)
++				|| (p->argv1base && strcmp(p->argv1base, prog) == 0);
+ 		}
+ 
+ 		/*
+@@ -423,7 +450,7 @@
+ 		    (p->argv0 == NULL ||
+ 		     p->argv0[0] == 0 ||
+ 		     strchr(p->argv0, ' '))) {
+-			ok += (strcmp(p->statname, s) == 0);
++			ok |= (strcmp(p->statname, s) == 0);
+ 		}
+ 		if (ok) add_pid_to_q(q, p);
+ 	}
+@@ -548,20 +575,28 @@
+ 			}
+ 		}
+ 	}
+-	printf("\n");
++	if (!first)
++		printf("\n");
+ 	closelog();
+ 	return(first ? 1 : 0);
+ }
+ 
+ 
+ 
++#define KILLALL_OMITSZ	16
++
+ /* Main for either killall or pidof. */
+ int main(int argc, char **argv)
+ {
+ 	PROC		*p;
+ 	int		pid, sid = -1;
++	pid_t		opid[KILLALL_OMITSZ];
++	int		i, oind, omit = 0;
+ 	int		sig = SIGKILL;
+ 
++	/* return non-zero if no process was killed */
++	int		retval = 2;
++
+ 	/* Get program name. */
+ 	if ((progname = strrchr(argv[0], '/')) == NULL)
+ 		progname = argv[0];
+@@ -576,10 +611,34 @@
+ 		return main_pidof(argc, argv);
+ 
+ 	/* Right, so we are "killall". */
++	for (oind = KILLALL_OMITSZ-1; oind > 0; oind--)
++		opid[oind] = 0;
++
+ 	if (argc > 1) {
+-		if (argc != 2) usage();
+-		if (argv[1][0] == '-') (argv[1])++;
+-		if ((sig = atoi(argv[1])) <= 0 || sig > 31) usage();
++		for (i = 1; i < argc; i++) {
++			if (argv[i][0] == '-') (argv[i])++;
++			if (argv[i][0] == 'o') {
++				if (++i >= argc) usage();
++				if (oind >= KILLALL_OMITSZ -1) {
++					nsyslog(LOG_ERR,"omit pid buffer size "
++						"%d exceeded!\n",
++						KILLALL_OMITSZ);
++					closelog();
++					exit(1);
++				}
++				if ((opid[oind] = atoi(argv[i])) < 1) {
++					nsyslog(LOG_ERR,
++						"illegal omit pid value "
++						"(%s)!\n", argv[i]);
++					closelog();
++					exit(1);
++				}
++				oind++;
++				omit = 1;
++			}
++			else if ((sig = atoi(argv[1])) <= 0 || sig > 31)
++				usage();
++		}
+ 	}
+ 
+ 	/* First get the /proc filesystem online. */
+@@ -602,15 +661,26 @@
+ 	/* Read /proc filesystem */
+ 	if (readproc() < 0) {
+ 		kill(-1, SIGCONT);
+-		exit(1);
++		return(1);
+ 	}
+ 
+-	/* Now kill all processes except our session. */
++	/* Now kill all processes except init (pid 1) and our session. */
+ 	sid = (int)getsid(0);
+ 	pid = (int)getpid();
+-	for (p = plist; p; p = p->next)
+-		if (p->pid != pid && p->sid != sid && !p->kernel)
+-			kill(p->pid, sig);
++	for (p = plist; p; p = p->next) {
++		if (p->pid == 1 || p->pid == pid || p->sid == sid || p->kernel)
++			continue;
++		if (omit) {
++			for (i = 0; i < oind; i++)
++				if (opid[i] == p->pid)
++					break;
++			/* On a match, continue with the for loop above. */
++			if (i < oind)
++				continue;
++		}
++		kill(p->pid, sig);
++		retval = 0;
++	}
+ 
+ 	/* And let them continue. */
+ 	kill(-1, SIGCONT);
+@@ -618,5 +688,8 @@
+ 	/* Done. */
+ 	closelog();
+ 
+-	return 0;
++	/* Force the kernel to run the scheduler */
++	usleep(1);
++
++	return retval;
+ }
+
-- 
cgit v0.12