diff options
| author | Cecil Hugh Watson <knoppmyth@gmail.com> | 2010-09-04 22:54:43 (GMT) | 
|---|---|---|
| committer | Cecil Hugh Watson <knoppmyth@gmail.com> | 2010-09-04 22:54:43 (GMT) | 
| commit | 05408d178b3bb65f895b011705ade34c34b8dce6 (patch) | |
| tree | 4d17239774a3993a00cb4df34ec9c68dd20dccbf | |
| parent | 8531795e06d39d7edfea9bb2731ff171417669d5 (diff) | |
| download | linhes_pkgbuild-05408d178b3bb65f895b011705ade34c34b8dce6.zip linhes_pkgbuild-05408d178b3bb65f895b011705ade34c34b8dce6.tar.gz linhes_pkgbuild-05408d178b3bb65f895b011705ade34c34b8dce6.tar.bz2 | |
fbsplash:Bumped/Updated for LinHES 7.
18 files changed, 768 insertions, 954 deletions
| diff --git a/abs/core-testing/fbsplash/PKGBUILD b/abs/core-testing/fbsplash/PKGBUILD index 736da1f..dcec71a 100644 --- a/abs/core-testing/fbsplash/PKGBUILD +++ b/abs/core-testing/fbsplash/PKGBUILD @@ -1,56 +1,71 @@ -# Maintainer: Greg Helton <gt@fallendusk.org> +# Maintainer: Heiko Baums <heiko@baums-on-web.de> +# Contributor: Kurt J. Bosch <kjb-temp-2009 at alpenjodel.de>  pkgname=fbsplash  pkgver=1.5.4.3 -pkgrel=15 +pkgrel=33  pkgdesc="A userspace implementation of a splash screen for Linux (formerly known as gensplash)"  arch=('i686' 'x86_64')  url="http://fbsplash.berlios.de"  license=('GPL') -backup=('etc/conf.d/fbsplash.conf' 'etc/conf.d/fbsplash.bootsteps') -makedepends=('klibc') -depends=('initscripts' 'miscsplashutils' 'libjpeg' 'libpng' 'freetype2-static' 'gpm' 'libmng' 'which' 'linhes-splash')  -conflicts=('bootsplash' 'gensplash') +depends=('miscsplashutils' 'freetype2' 'libjpeg' 'libpng' 'libmng' 'lcms' 'gpm' 'linhes-splash')  +optdepends=('kernel26-fbcondecor: enable console background images' +            'fbsplash-extras: additional functionality like daemon icons' +            'uswsusp-fbsplash: suspend to disk with fbsplash' +            'python: convert themes from splashy to fbsplash') +conflicts=('fbsplash-scripts' 'initscripts-extras-fbsplash') +options=('!makeflags') +backup=('etc/conf.d/fbcondecor' 'etc/conf.d/splash')  install=fbsplash.install -source=(http://download.berlios.de/fbsplash/splashutils-${pkgver}.tar.bz2 \ -	http://code.thewrecker.net/files/darch.tar.bz2 \ -	fbsplash.inithooks \ -	splash-functions-arch.sh \ -	fbsplash.conf \ -	fbsplash.initcpio_install \ -	fbsplash.daemon fbsplash.bootsteps) +source=(http://dev.gentoo.org/~spock/projects/gensplash/archive/splashutils-${pkgver}.tar.bz2 +        fbsplash.git.patch +        splash.conf +        fbsplash-basic.sh +        fbsplash.initcpio_install +        fbsplash.initcpio_hook +        fbcondecor.daemon +        fbcondecor.conf) +  build() { -	cd ${startdir}/src/splashutils-${pkgver} - -	# Configure, make, and install -	./configure --prefix=/usr --sysconfdir=/etc --enable-fbcondecor --with-gpm --with-mng --with-png --with-ttf --with-ttf-kernel -	make || return 1 - 	cp -f ${startdir}/splash-functions.sh  ${startdir}/src/splashutils-1.5.4.3/scripts/splash-functions.sh -	make DESTDIR=${startdir}/pkg install || return 1 -	 -	# Create directories -	mkdir -p ${startdir}/pkg/lib/splash/cache -	mkdir -p ${startdir}/pkg/etc/splash -	mkdir -p ${startdir}/pkg/etc/rc.d/functions.d - -	# Install scripts -	install -D -m644 ${startdir}/src/fbsplash.initcpio_install ${startdir}/pkg/lib/initcpio/install/fbsplash -	install -D -m644 ${startdir}/src/fbsplash.conf ${startdir}/pkg/etc/conf.d/fbsplash.conf -	install -D -m744 ${startdir}/src/fbsplash.daemon ${startdir}/pkg/etc/rc.d/fbsplash -	install -D -m744 ${startdir}/src/splash-functions-arch.sh ${startdir}/pkg/sbin/splash-functions-arch.sh -	install -D -m755 $startdir/src/fbsplash.bootsteps ${startdir}/pkg/etc/conf.d/fbsplash.bootsteps - -	# install darch fbsplash theme -	cp -r ${startdir}/src/darch ${startdir}/pkg/etc/splash/darch -	 -	# install initscripts hooks -	install -D -m744 ${startdir}/src/fbsplash.inithooks ${startdir}/pkg/etc/rc.d/functions.d/fbsplash.sh +  cd ${srcdir}/splashutils-${pkgver} + +  # patch for building splashutils with glibc and dynamical linking +  patch -Np0 -i ${srcdir}/fbsplash.git.patch || return 1 +  autoreconf + +  # fix fbcondecor_ctl splash type +  sed -e 's,fbsplash_lib_init(fbspl_bootup),fbsplash_lib_init(fbspl_undef),' -i src/fbcon_decor_ctl.c + +  ./configure --prefix=/usr --sysconfdir=/etc --without-klibc --enable-fbcondecor --with-gpm --with-mng --with-png --with-ttf --with-ttf-kernel || return 1 +  make || return 1 +  make DESTDIR=${startdir}/pkg install || return 1 + +  cd ${pkgdir} + +  # fix duplicate slashes to get splash_cache_cleanup grep to work +  sed -r -e 's,^(export spl_.*="/)/+,\1,' -i sbin/splash-functions.sh + +  # fix the path to splash_util +  sed -r -e 's,^(export spl_util=)\"/bin/,\1"/sbin/,' -i sbin/splash-functions.sh + +  # provide the mountpoint needed by splash-functions.sh +  mkdir -p lib/splash/{cache,tmp} + +  # Install fbsplash scripts and config file +  install -D -m644 ${srcdir}/splash.conf etc/conf.d/splash +  install -D -m644 ${srcdir}/fbsplash-basic.sh etc/rc.d/functions.d/fbsplash-basic.sh +  install -D -m644 ${srcdir}/fbsplash.initcpio_install lib/initcpio/install/fbsplash +  install -D -m644 ${srcdir}/fbsplash.initcpio_hook lib/initcpio/hooks/fbsplash +  # Install fbcodecor script and config file +  install -D -m644 ${srcdir}/fbcondecor.conf etc/conf.d/fbcondecor +  install -D -m755 ${srcdir}/fbcondecor.daemon etc/rc.d/fbcondecor  }  md5sums=('c722cd4148817b9c50381d9bdc1ea6ef' -         '4ea33e99330abf4a9a468ac8c0ba48ca' -         '33b3c7c2050670db0e8b2efd9e088ed9' -         '8ffb29400a2518b16f3dbca653855268' -         '82ef6f37c2795db1b4fec0e6f8443c66' -         '21380586a5dafbf7045886ea4374ab65' -         'bb5154529e4b5fbc701cf4540c15a61a') +         '3a338c60ed0710c8b7e3e08929db521a' +         'a8f40c99a32d20d505aa24fbbd703008' +         'e69753dac753b8ba4e2e29ef5a9c46ca' +         'e29b3db6ee059b9950febe976a0f2881' +         'ac2351bc918b101bb9249ce8940722be' +         '715926469d05eecd345c052e6248ca32' +         'b3db9d4fd902b62ac9e38589677e2d16') diff --git a/abs/core-testing/fbsplash/__changelog b/abs/core-testing/fbsplash/__changelog deleted file mode 100644 index d673fc0..0000000 --- a/abs/core-testing/fbsplash/__changelog +++ /dev/null @@ -1,4 +0,0 @@ -modify  splash-functions to not use chvt for verbose -modify  fbsplash.inithooks to not display "setting up splash" -added default value for fbsplash.bootsteps - diff --git a/abs/core-testing/fbsplash/darch.tar.bz2 b/abs/core-testing/fbsplash/darch.tar.bz2Binary files differ deleted file mode 100644 index 0faab98..0000000 --- a/abs/core-testing/fbsplash/darch.tar.bz2 +++ /dev/null diff --git a/abs/core-testing/fbsplash/extra/encrypt_hook.patch b/abs/core-testing/fbsplash/extra/encrypt_hook.patch deleted file mode 100644 index f059048..0000000 --- a/abs/core-testing/fbsplash/extra/encrypt_hook.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- /lib/initcpio/hooks/encrypt	2008-09-12 12:29:38.000000000 -0400 -+++ encrypt.1	2008-10-28 08:13:34.000000000 -0400 -@@ -1,6 +1,7 @@ - # vim: set ft=sh: - # TODO this one needs some work to work with lots of different - #       encryption schemes -+. /sbin/splash-functions.sh - run_hook () - { -     /sbin/modprobe -a -q dm-crypt >/dev/null 2>&1 -@@ -59,6 +60,7 @@ run_hook () -                 fi -             fi -             # Ask for a passphrase -+	    splash_verbose -             if [ ${dopassphrase} -gt 0 ]; then -                 echo "" -                 echo "A password is required to access the ${cryptname} volume:" -@@ -119,4 +121,5 @@ run_hook () -         fi -         nuke ${ckeyfile} -     fi -+    splash_silent - } diff --git a/abs/core-testing/fbsplash/fbcondecor.conf b/abs/core-testing/fbsplash/fbcondecor.conf new file mode 100644 index 0000000..18db844 --- /dev/null +++ b/abs/core-testing/fbsplash/fbcondecor.conf @@ -0,0 +1,6 @@ + +# /etc/conf.d/fbcondecor +# + +## Virtual terminals to load with fbcondecor backgrounds +SPLASH_TTYS="1 2 3 4 5 6" diff --git a/abs/core-testing/fbsplash/fbcondecor.daemon b/abs/core-testing/fbsplash/fbcondecor.daemon new file mode 100644 index 0000000..4d78ea4 --- /dev/null +++ b/abs/core-testing/fbsplash/fbcondecor.daemon @@ -0,0 +1,55 @@ +#!/bin/bash + +# /etc/rc.d/fbcondecor + +# Set FbConDecor backgrounds +# + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/fbcondecor +. /sbin/splash-functions.sh + +splash_setup force + +retval=0 +[ -z "${SPLASH_TTYS%% }" ] && retval=1 +case "$1" +in start ) +	if [ "${SPLASH_MODE_REQ}" != "off" ]; then +		stat_busy "Setting FBconDecor console images" +		for tty in ${SPLASH_TTYS}; do +			# avoid blinking on boot +			[[ "$( fbcondecor_ctl --tty=${tty} -c getstate )" == *\ on ]] && continue +			fbcondecor_set_theme ${SPLASH_THEME} ${tty} || retval=1 +		done +		if [ $retval = 0 ]; then +			stat_done +		else +			stat_fail +		fi +	fi +;; stop ) +	stat_busy "Disabling FBconDecor console images" +	for tty in ${SPLASH_TTYS}; do +		# avoid errors on restart +		[[ "$( fbcondecor_ctl --tty=${tty} -c getstate )" == *\ off ]] && continue +		fbcondecor_ctl --tty=${tty} -c off || retval=1 +	done +	if [ $retval = 0 ]; then +		stat_done +	else +		stat_fail +	fi +;; restart ) +	$0 stop +	sleep .1 +	echo # don't swallow our status line +	$0 start +;; * ) +	echo "usage: $0 {start|stop|restart}" +esac + +exit 0 + +# EOF # diff --git a/abs/core-testing/fbsplash/fbsplash-basic.sh b/abs/core-testing/fbsplash/fbsplash-basic.sh new file mode 100644 index 0000000..2834060 --- /dev/null +++ b/abs/core-testing/fbsplash/fbsplash-basic.sh @@ -0,0 +1,201 @@ + +#  /etc/rc.d/functions.d/fbsplash-basic.sh                                   # + +#  Basic Fbsplash script for Arch Linux initscripts                          # +#                                                                            # +#  Author:                Kurt J. Bosch    <kjb-temp-2009 at alpenjodel.de>  # +#  Based on the work of   Greg Helton                <gt at fallendusk.org>  # +#                         Thomas Baechler         <thomas at archlinux.org>  # +#                         and others                                         # +#                                                                            # +#  Distributed under the terms of the GNU General Public License (GPL)       # + +[[ $PREVLEVEL && $RUNLEVEL ]] || return 0 + +# Do nothing if improved scripts are installed +[ -r /etc/rc.d/functions.d/fbsplash-extras.sh ] && return + +# Only do this where needed +# Since we use BASH, all important functions and variables are exported +case ${0#/etc/rc.} in sysinit | multi | shutdown ) +	export SPLASH_PUSH_MESSAGES="no" +	export SPLASH_VERBOSE_ON_ERRORS="no" +	. /sbin/splash-functions.sh # /etc/conf.d/splash is also sourced by this +	unset options opt i # eliminate splash_setup non local vars   ## FIX ME ## +	declare -ix SPLASH_STEPS=3 # sysinit steps +	declare -ix SPLASH_STEPS_DONE=0 +esac + +# Verbose mode is handled by fbcondecor kernel patch and daemon script +[[ $SPLASH_MODE_REQ = silent ]] || return 0 + +# Override - Don't try to use /usr/bin/basename +splash_comm_send() { +	[[ $( /bin/pidof -o %PPID $spl_daemon ) ]] && echo "$@" >$spl_fifo & +} + +case $0 in /etc/rc.sysinit ) +	# Prevent splash destruction +	CONSOLEFONT="" +	# Continue to use a splash daamon started in initcpio +	if /bin/mountpoint -q /dev/.splash-cache; then +		/bin/mount --move /dev/.splash-cache $spl_cachedir || return +		splash_comm_send set message "$SPLASH_BOOT_MESSAGE" +	# Mount a tmpfs +	else +		( splash_cache_prep ) || return +	fi +	add_hook sysinit_udevsettled  splash_sysinit_udevsettled +	add_hook sysinit_postfsck     splash_sysinit_postfsck +	add_hook sysinit_postfsckloop splash_sysinit_postfsck +	add_hook sysinit_premount     splash_sysinit_premount +	add_hook sysinit_end          splash_sysinit_end +	splash_sysinit_udevsettled() { +		splash_begin +		splash_progress_init +		splash_progress +	} +	splash_sysinit_premount() { +		splash_progress +	} +	splash_sysinit_postfsck() { # fsck failure emergency exit +		[ ${fsckret} -gt 1 -a ${fsckret} -ne 32 ] && chvt 1 +	} +	splash_sysinit_end() { +		splash_progress +	} +;; /etc/rc.multi ) +	add_hook multi_start splash_multi_start +	add_hook multi_end   splash_multi_end +	splash_multi_start() { +		SPLASH_STEPS_DONE=$SPLASH_STEPS +		splash_progress_init +	} +	start_daemon() { +		[[ $1 = $SPLASH_XSERVICE ]] && SPLASH_EXIT_TYPE=staysilent splash_stop +		/etc/rc.d/$1 start +		splash_progress +	} +	start_daemon_bkgd() { +		[[ $1 = $SPLASH_XSERVICE ]] && SPLASH_EXIT_TYPE=staysilent splash_stop +		stat_bkgd "Starting $1" +		( SPLASH_PUSH_MESSAGES="no" SPLASH_VERBOSE_ON_ERRORS="no" \ +			/etc/rc.d/$1 start ) &>/dev/null & +	} +	splash_multi_end() { +		if [[ $PREVLEVEL = N ]]; then +			if ! in_array "$SPLASH_XSERVICE" "${DAEMONS[@]}"; then +				if [[ $RUNLEVEL = 5 ]]; then +					SPLASH_EXIT_TYPE=staysilent splash_stop +				else +					splash_stop +					[[ $( $spl_bindir/fgconsole ) = $SPLASH_TTY ]] && chvt 1 +				fi +			fi +			# Now do setfont +			set_consolefont +			# Umount the tmpfs +			splash_cache_cleanup +		fi +	} +;; /etc/rc.shutdown ) +	( splash_cache_prep ) || return +	# Not using XSERVICE here to avoid missing errors - X should chvt back to SPLASH_TTY +	add_hook shutdown_start       splash_shutdown_start +	add_hook shutdown_prekillall  splash_shutdown_prekillall +	add_hook shutdown_postkillall splash_shutdown_postkillall +	add_hook shutdown_poweroff    splash_shutdown_poweroff +	splash_shutdown_start() { +		splash_begin +	} +	## http://bugs.archlinux.org/task/10536                       ## FIX ME ## +	splash_shutdown_prekillall() { /bin/sleep .1; } +	splash_shutdown_postkillall() { +		if [[ $( $spl_bindir/fgconsole ) = $SPLASH_TTY ]]; then +			stat_busy "Restarting Fbsplash daemon" +			PROGRESS=$(( 65535*2/3 )) splash_start +			if [[ -e $spl_cachedir/stop_failed-fbsplash-dummy ]]; then +				splash_comm_send update_svc fbsplash-dummy svc_stop_failed +			fi +			stat_done +		fi +	} +	## +	splash_shutdown_poweroff() { +		SPLASH_EXIT_TYPE=staysilent splash_stop +	} +esac + +splash_progress_init() { +	for daemon in "${DAEMONS[@]}"; do +		case $daemon in $SPLASH_XSERVICE | @$SPLASH_XSERVICE ) break +		;; \!* |@* ) continue +		esac +		SPLASH_STEPS+=1 +	done +} + +splash_progress() { +	splash_comm_send progress $(( 65535*++SPLASH_STEPS_DONE/SPLASH_STEPS )) +	splash_comm_send paint +} + +# Start the splash daemon - using upstream function +splash_set_event_dev() { :; } # override - Never grab the keyboard +splash_begin() { +	if ! [[ $( /bin/pidof -o %PPID $spl_daemon ) ]]; then +		stat_busy "Starting Fbsplash daemon" +		if [ -x /etc/splash/$SPLASH_THEME/scripts/rc_init-pre ]; then +			/etc/splash/$SPLASH_THEME/scripts/rc_init-pre ${0#/etc/rc.d} $RUNLEVEL +		fi && +		splash_start && +		stat_done || stat_fail +	fi +} + +# Stop the splash daemon - if any +splash_stop() { +	if [[ $( /bin/pidof -o %PPID $spl_daemon ) ]]; then +		SPLASH_PUSH_MESSAGES="no" stat_busy "Stopping Fbsplash daemon" +		splash_comm_send progress 65535; splash_comm_send paint; /bin/sleep .1 +		splash_comm_send exit $SPLASH_EXIT_TYPE +		# Wait for painting/fadeout +		local -i i=0 +		while [[ i++ -lt 100 && $( /bin/pidof -o %PPID $spl_daemon ) ]]; do +			/bin/sleep .1 +		done +		stat_done +	fi +} + +stat_busy() { +	printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " +	printf "${SAVE_POSITION}" +	deltext +	printf "   ${C_OTHER}[${C_BUSY}BUSY${C_OTHER}]${C_CLEAR} " +	SPLASH_BUSY_MSG=$1 +	if [[ $SPLASH_PUSH_MESSAGES = yes ]]; then +		splash_comm_send set message "${1}" +		splash_comm_send paint +	fi +} + +stat_fail() { +	deltext +	printf "   ${C_OTHER}[${C_FAIL}FAIL${C_OTHER}]${C_CLEAR} \n" +	local event=stop_failed; [[ $PREVLEVEL = N ]] && event=start_failed +	# Provide a general failure status event and write to msglog textbox +	splash_comm_send update_svc fbsplash-dummy svc_${event} +	splash_comm_send log "Error $SPLASH_BUSY_MSG" +	splash_comm_send paint +	# Save for daemon restart                                     ## FIX ME ## +	if /bin/mountpoint -q $spl_cachedir; then +		: >|$spl_cachedir/${event}-fbsplash-dummy +	fi +	# Upstream way of error handling +	if [[ $SPLASH_VERBOSE_ON_ERRORS = yes ]]; then +		chvt 1 +	fi +} + +# EOF # diff --git a/abs/core-testing/fbsplash/fbsplash.bootsteps b/abs/core-testing/fbsplash/fbsplash.bootsteps deleted file mode 100644 index 7273c0f..0000000 --- a/abs/core-testing/fbsplash/fbsplash.bootsteps +++ /dev/null @@ -1 +0,0 @@ -25 diff --git a/abs/core-testing/fbsplash/fbsplash.conf b/abs/core-testing/fbsplash/fbsplash.conf deleted file mode 100644 index ddd88f8..0000000 --- a/abs/core-testing/fbsplash/fbsplash.conf +++ /dev/null @@ -1,8 +0,0 @@ -# -# fbsplash.conf -# - -THEMES="linhes" -SPLASH_TTYS="1 2 3 4 5 6" - -#EOF diff --git a/abs/core-testing/fbsplash/fbsplash.daemon b/abs/core-testing/fbsplash/fbsplash.daemon deleted file mode 100644 index e615500..0000000 --- a/abs/core-testing/fbsplash/fbsplash.daemon +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -source /etc/rc.conf -source /etc/rc.d/functions - -source /sbin/splash-functions.sh -source /etc/conf.d/fbsplash.conf - -case "$1" in -	start) -		if [ "$(fbcondecor_supported)" = "true" ] -		then -			THEME="linhes" -			if [ -f /proc/cmdline ]; then -				OPTIONS=$(grep -o 'splash=[^ ]*' /proc/cmdline) -				for i in $(echo "${OPTIONS#*=}" | sed -e 's/,/ /g') -				do -					case ${i%:*} in -						theme)		THEME=${i#*:} ;; -					esac -				done -			fi -			stat_busy "Setting fbcondecor console images" -			for TTY in ${SPLASH_TTYS}; do -				fbcondecor_set_theme ${TTY} ${THEME} -			done -			stat_done -		fi -		save_boot_steps -		splash_exit -	;; - -	kill) -		if [ "$(fbcondecor_supported)" = "true" ] -		then -			stat_busy "Disabling fbcondecor console images" -			for TTY in ${SPLASH_TTYS}; do -				fbcondecor_remove_theme ${TTY} -			done -			stat_done -		fi -	;; - -	restart) -		$0 kill -		sleep 1 -		$1 start -	;; - -	*) -		echo "usage: $0 {start|restart|kill}" -esac -exit 0 - -#EOF - diff --git a/abs/core-testing/fbsplash/fbsplash.git.patch b/abs/core-testing/fbsplash/fbsplash.git.patch new file mode 100644 index 0000000..15f041c --- /dev/null +++ b/abs/core-testing/fbsplash/fbsplash.git.patch @@ -0,0 +1,166 @@ +From 4ecac1b2645afc8079aad4067a1aa0e8a96eab12 Mon Sep 17 00:00:00 2001 +From: =?utf8?q?Micha=C5=82=20Januszewski?= <spock@gentoo.org> +Date: Tue, 16 Feb 2010 23:30:18 +0100 +Subject: [PATCH] Make it possible to build fbcondecor_helper against glibc. + +--- + configure.ac     |   34 ++++++++++++++++++++++++++++++++++ + libs/Makefile.am |    2 ++ + src/Makefile.am  |   34 +++++++++++++++++++++++++++++++++- + 3 files changed, 69 insertions(+), 1 deletions(-) + +diff --git configure.ac configure.ac +index 63b1ff6..8db1498 100644 +--- configure.ac ++++ configure.ac +@@ -76,6 +76,23 @@ AC_ARG_ENABLE([klibc-shared], + ) + AM_CONDITIONAL([CONFIG_KLIBC_SHARED], [test "x${config_klibc_shared}" = "xyes"]) +  ++AC_ARG_ENABLE([static-binaries], ++  AC_HELP_STRING([--disable-static-binaries], [do not build any statically linked binaries]), ++  [ ++    AS_CASE(["${enableval}"], ++      [yes], [config_static_binaries="yes"], ++      [no],  [config_static_binaries="no"], ++             [AC_MSG_ERROR([bad value '${enableval}' for --disable-static-binaries])] ++    ) ++  ], ++  [config_static_binaries="yes"] ++) ++AM_CONDITIONAL([CONFIG_STATIC_BINARIES], [test "x${config_static_binaries}" = "xyes"]) ++AS_IF( ++  [test "x${config_static_binaries}" = "xyes"], ++  [AC_DEFINE([CONFIG_STATIC_BINARIES], [1], [Define to 1 to disable building of statically linked binaries.])] ++) ++ + AC_ARG_ENABLE([deprecated], +   AC_HELP_STRING([--enable-deprecated], [include support for deprecated features]), +   [ +@@ -333,6 +350,23 @@ AC_ARG_WITH([themedir], + ) + AC_SUBST([themedir]) +  ++AC_ARG_WITH([klibc], ++  AC_HELP_STRING([--without-klibc], [link the kernel helper against glibc instead of klibc]), ++  [ ++    AS_CASE(["${withval}"], ++      [yes], [config_klibc="yes"], ++      [no],  [config_klibc="no"], ++             [AC_MSG_ERROR([bad value ${withval} for --with-klibc])] ++    ) ++  ], ++  [config_klibc="yes"] ++) ++AM_CONDITIONAL([CONFIG_KLIBC], [test "x${config_klibc}" = "xyes"]) ++AS_IF( ++  [test "x${config_klibc}" = "xyes"], ++  [AC_DEFINE([CONFIG_KLIBC], [1], [use klibc])] ++) ++ + M_CFLFAGS= + M_LIBS= + AC_CHECK_HEADER( +diff --git libs/Makefile.am b/core/libs/Makefile.am +index 6675ec1..d070b29 100644 +--- libs/Makefile.am ++++ libs/Makefile.am +@@ -24,6 +24,7 @@ mostlyclean-local: \ +  + noinst_LIBRARIES = +  ++if CONFIG_KLIBC + if CONFIG_HELPER + noinst_LIBRARIES += libjpeg.a + if CONFIG_PNG +@@ -33,6 +34,7 @@ if CONFIG_TTF_KERNEL + noinst_LIBRARIES += libfreetype.a + endif + endif ++endif +  + libjpeg_a_SOURCES = + libpng_a_SOURCES = +diff --git src/Makefile.am b/core/src/Makefile.am +index fa6919d..7570b5e 100644 +--- src/Makefile.am ++++ src/Makefile.am +@@ -167,7 +167,6 @@ sbin_PROGRAMS += fbcondecor_ctl + endif + sbin_PROGRAMS += fbsplashd + bin_PROGRAMS  += splash_util +-eexecsbin_PROGRAMS += fbsplashctl +  + fbcondecor_ctl_SOURCES      = fbcon_decor_ctl.c fbcon_decor.h ../include/console_decor.h ../include/fbcondecor.h common.h fbsplash.h + fbcondecor_ctl_CPPFLAGS     = $(AM_CPPFLAGS) -DTARGET_UTIL $(libfbsplashrender_la_CFLAGS) +@@ -185,6 +184,9 @@ splash_util_CPPFLAGS        = $(AM_CPPFLAGS) -DTARGET_UTIL $(libfbsplashrender_l + splash_util_LDFLAGS         = $(AM_LDFLAGS) + splash_util_LDADD           = libfbsplashrender.la libfbsplash.la +  ++if CONFIG_STATIC_BINARIES ++eexecsbin_PROGRAMS += fbsplashctl ++ + fbsplashctl_SOURCES         = $(fbsplashd_SOURCES) $(splash_util_SOURCES) fbsplashctl.c + fbsplashctl_CFLAGS          = $(AM_CFLAGS) $(PTHREAD_STATIC_CFLAGS) $(RT_CFLAGS) $(libfbsplashrender_la_CFLAGS) -DUNIFIED_BUILD + fbsplashctl_CPPFLAGS        = $(fbsplashd_CPPFLAGS) $(splash_util_CPPFLAGS) +@@ -210,6 +212,7 @@ uninstall-hook: + if CONFIG_FBCON_DECOR + 	rm -f $(DESTDIR)$(eexecsbindir)/fbcondecor_ctl.static$(EXEEXT) + endif ++endif +  + ################################################################################ + # Kernel +@@ -219,6 +222,7 @@ if CONFIG_HELPER + eexecsbin_PROGRAMS  += fbcondecor_helper + endif +  ++if CONFIG_KLIBC + fbcondecor_helper_SOURCES = \ + 	kernel.c \ + 	libfbsplash.c \ +@@ -236,10 +240,12 @@ fbcondecor_helper_SOURCES = \ + 	common.h \ + 	render.h \ + 	fbsplash.h ++ + fbcondecor_helper_CPPFLAGS  = -DWITH_ERRLIST -DTARGET_KERNEL -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER + fbcondecor_helper_CFLAGS    = -Os -w -ffunction-sections -fdata-sections -I.@am__isrc@ + fbcondecor_helper_LDFLAGS   =  + fbcondecor_helper_LDADD     =  ++ + fbcondecor_helper_CFLAGS   += -I$(abs_top_builddir)/libs/libjpeg -I$(LIBJPEG_SOURCE) + fbcondecor_helper_LDADD    += $(top_builddir)/libs/libjpeg.a + if CONFIG_PNG +@@ -280,3 +286,29 @@ fbcondecor_helper-%.o: %.c + 	@$(call infmsg,CC,$@) + 	$(Q)$(MKDIR_P) $(@D) + 	$(Q)$(KLCC) $(fbcondecor_helper_CPPFLAGS) $(fbcondecor_helper_CFLAGS) $(INCLUDES) -c $< -o $@ ++else ++fbcondecor_helper_SOURCES = \ ++	kernel.c \ ++	libfbsplash.c \ ++	libfbsplashrender.c \ ++	fbcon_decor.c \ ++	common.c \ ++	parse.c \ ++	list.c \ ++	render.c \ ++	image.c \ ++	effects.c \ ++	fbcon_decor.h \ ++	../include/console_decor.h \ ++	../include/fbcondecor.h \ ++	common.h \ ++	render.h \ ++	fbsplash.h ++if CONFIG_TTF_KERNEL ++fbcondecor_helper_SOURCES  += ttf.c ttf.h ++endif ++fbcondecor_helper_CPPFLAGS = $(AM_CPPFLAGS) -DTARGET_KERNEL ++fbcondecor_helper_CFLAGS   = $(AM_CFLAGS) $(libfbsplashrender_la_CFLAGS) ++fbcondecor_helper_LDFLAGS  = $(AM_LDFLAGS) ++fbcondecor_helper_LDADD    = $(libfbsplashrender_la_LIBADD) ++endif +--  +1.6.5.GIT diff --git a/abs/core-testing/fbsplash/fbsplash.initcpio_hook b/abs/core-testing/fbsplash/fbsplash.initcpio_hook new file mode 100644 index 0000000..62048df --- /dev/null +++ b/abs/core-testing/fbsplash/fbsplash.initcpio_hook @@ -0,0 +1,102 @@ +run_hook () +{ +	SPLASH_INIT_MESSAGE="Initializing the kernel" +	SPLASH_MODE_REQ="off" +	SPLASH_THEME="default" +	SPLASH_TTY=16 +	SPLASH_TEXTBOX="no" +	SPLASH_AUTOVERBOSE=0 + +	. /etc/conf.d/splash + +	# Kernel parameters override config file +	local ifs="$IFS" +	IFS=',' +	set -- $splash +	IFS="$ifs" +	local arg effects +	for arg in "$@"; do +		case "$arg" +		in off      ) SPLASH_MODE_REQ="off" +		;; silent   ) SPLASH_MODE_REQ="silent" +		;; verbose  ) SPLASH_MODE_REQ="verbose" +		;; theme:?* ) SPLASH_THEME="${arg#theme:}" +		;;   tty:?* ) SPLASH_TTY="${arg#tty:}" +		;; insane   ) SPLASH_SANITY="insane" +		;; fadein | fadeout ) effects="$effects,$arg" +		esac +	done +	if [ -n "$effects" ]; then +		SPLASH_EFFECTS="${effects#,}" +	fi + +	if [ "${SPLASH_MODE_REQ}" != "silent" ]; then +		return +	fi + +	if ! [ "$console" = tty1 -o "$SPLASH_SANITY" = insane ]; then +		err "Fbsplash requires console=tty1 in kernel line!" +		return 1 +	fi + +	# Start the daemon here if possible +	# to show animations early and gain some bootup speed +	if [ -x /sbin/fbsplashd.static ]; then +		if [ -x /etc/splash/"$SPLASH_THEME"/scripts/rc_init-pre ]; then +			msg "Found '/etc/splash/$SPLASH_THEME/scripts/rc_init-pre'" +			msg "Not starting Fbsplash daemon - no theme hook support in initcpio." +		else +			msg "Starting Fbsplash Daemon" +			( +				set -e +				# Hold the cache and fifo within /dev to get it moved to the new root +				mkdir /dev/.splash-cache +				# code line derived from splash-functions.sh +				mount -t tmpfs cachedir /dev/.splash-cache -o rw,mode=0644,size=4096k +				# Take over any existing cache content +				mkdir -p /lib/splash/cache +				mv /lib/splash/cache /lib/splash/.splash-cache +				cp -a /lib/splash/.splash-cache /dev/ +				ln -s /dev/.splash-cache /lib/splash/cache +				mkfifo -m 600 /lib/splash/cache/.splash +				# Wait for any fbcondecor fadein - may take very long on some broken systems +				i=0 +				while [ -n "$( pidof fbcondecor_helper )" ]; do +					if [ $i -ge 50 ]; then +						err "timeout on waiting for fbcondecor_helper to die!" +						exit 1 +					fi +					sleep .1 +					i=$(( i + 1 )) +				done +				# Actually start the daemon +				options="" +				[ -n "$SPLASH_THEME"      ] && options="$options --theme=$SPLASH_THEME" +				[ -n "$SPLASH_EFFECTS"    ] && options="$options --effects=$SPLASH_EFFECTS" +				[ "$SPLASH_TEXTBOX" = yes ] && options="$options --textbox" +				cd /dev/.splash-cache +				BOOT_MSG="${SPLASH_INIT_MESSAGE}" \ +					/sbin/fbsplashd.static --type=bootup --pidfile=daemon.pid $options +				( +					echo set tty silent $SPLASH_TTY +					echo set mode silent +					echo repaint +					echo set autoverbose $SPLASH_AUTOVERBOSE +				) >/lib/splash/cache/.splash & +			) +			return +		fi +	fi + +	# Start the fbcondecor helper if not already done by fbcondecor kernel +	( +		# code copied from splash-functions.sh +		fbcondecor_supported() { +			[ -e /dev/fbsplash -o -e /dev/fbcondecor ] +		} +		if ! fbcondecor_supported; then +			BOOT_MSG="${SPLASH_INIT_MESSAGE}" \ +				/sbin/fbcondecor_helper 2 init 0 0 $SPLASH_THEME +		fi +	) +} diff --git a/abs/core-testing/fbsplash/fbsplash.initcpio_install b/abs/core-testing/fbsplash/fbsplash.initcpio_install index 3fdd7e9..4485f91 100644 --- a/abs/core-testing/fbsplash/fbsplash.initcpio_install +++ b/abs/core-testing/fbsplash/fbsplash.initcpio_install @@ -1,29 +1,114 @@  install() { -	[ -x /sbin/fbcondecor_helper ] || return 1 +	( +		. /etc/conf.d/splash -	source /etc/conf.d/fbsplash.conf -	[ -z "${THEME}" ] && THEME="linhes" +		if /bin/mountpoint -q /lib/splash/cache; then +			/bin/umount /lib/splash/cache +		fi -	add_binary "/sbin/fbcondecor_helper"	 +		# Add the helper +		add_binary /sbin/fbcondecor_helper -	add_device "/dev/null" c 1 3 -	add_device "/dev/console" c 5 1 -	add_device "/dev/tty0" c 4 0 +		# Add the daemon for early start +		if [[ $SPLASH_DAEMON = early ]]; then +			add_binary /sbin/fbsplashd.static +		fi -	for DIR in /dev /dev/fb /dev/misc /dev/vc /lib/splash/proc /lib/splash/sys -	do -		add_dir ${DIR} -	done +		# Add a clean config file avoiding errors when running the hook +		file=$( /usr/bin/mktemp ) +		for var in SPLASH_INIT_MESSAGE SPLASH_MODE_REQ SPLASH_THEME SPLASH_TTY \ +		           SPLASH_AUTOVERBOSE SPLASH_EFFECTS SPLASH_TEXTBOX +		do +			eval value=\"\$$var\" +			[ -n "$value" ] && echo $var="'$value'" +		done >|$file +		add_file $file /etc/conf.d/splash -	for THEME in ${THEMES} -	do -		add_full_dir "/etc/splash/${THEME}" -	done +		# List file paths contained in given Fbsplash theme cfg file +		_get_cfg_files() { +			< "$1" /bin/sed -re ' +				# convert all whitespace into single blanks +				s,[[:space:]]+, ,g ; t L1 +				:L1 +				# drop comments, grouping directives and blank lines +				/^ *([#<]|$)/ d +				# get a filepath or drop +				s,.*[ =]([^ ]*/[^ ]+).*,\1, ; t ; d +			' | /usr/bin/sort -u +		} + +		# Check if cfg file name or path +		_match_cfg() { +			[[ "$1" =~ (^|/)[0-9]+x[0-9]+\.cfg$ ]] +		} + +		# Add non-cfg files in given dir +		_add_non_cfg_files() { +			local file dir="$1" +			for file in $( /bin/ls "$dir" ); do +				if [ -f "$dir/$file" ]; then +					_match_cfg "$file" || add_file "$dir/$file" +				fi +			done +		} + +		# Add global non-cfg files +		_add_non_cfg_files /etc/splash + +		# Add themes +		dirs="" +		for theme in ${SPLASH_THEMES[*]}; do # string list and array allowed +			[ ${theme:0:1} = / ] || theme=/etc/splash/$theme +			if [ -f $theme ]; then +				if ! _match_cfg $theme; then +					err "Not a valid theme cfg file name: $theme" +					continue +				fi +				add_file $theme || continue +				dir=$( dirname $theme ) +				# Add non-cfg files in theme dir +				_add_non_cfg_files $dir +				# Add files refered in cfg file by paths +				for file in $( _get_cfg_files $theme ); do +					if [ ${file:0:1} = / ]; then +						add_file $file +						continue +					fi +					# Path may be relative to theme-dir or to /etc/splash +					[ -e $dir/$file -o ! -f /etc/splash/$file ] && add_file $dir/$file +					[ -e /etc/splash/$file -o ! -f $dir/$file ] && add_file /etc/splash/$file +				done +			elif [ -d $theme ]; then +				dir=$theme +				add_full_dir $dir +			else +				err "Theme not found: $theme" +				continue +			fi +			if [[ " "$dirs" " != *" "$dir" "* ]]; then +				dirs+=" "$dir +			fi +		done +		for dir in $dirs; do +			# Add the rc_init-pre script if we have one +			# Currently this just prevents early daemon start for the theme +			if [[ $SPLASH_DAEMON = early && -x $dir/scripts/rc_init-pre ]]; then +				add_file $dir/scripts/rc_init-pre || continue +				echo "WARNING: rc_init-pre script found - no early daemon with '${dir##*/}'!" >&2 +			fi +		done +	) + +	SCRIPT="fbsplash"  }  help() { -	echo "This hook includes Fbsplash in the initramfs image." +cat<<HELPEOF +  This hook adds the FBconDecor helper and Fbsplash themes and maybe the +  Fbsplash daemon as specified in /etc/conf.d/splash. Put it after udev +  for early daemon start or when using a FBconDecor kernel. +HELPEOF  }  #EOF diff --git a/abs/core-testing/fbsplash/fbsplash.inithooks b/abs/core-testing/fbsplash/fbsplash.inithooks deleted file mode 100644 index c396b92..0000000 --- a/abs/core-testing/fbsplash/fbsplash.inithooks +++ /dev/null @@ -1,91 +0,0 @@ -# fbsplash function.d script # -# Author: Greg Helton <gt@fallendusk.org> # - -# Who is calling? # -CALLER=$0 - -# splash stuff # -. /etc/conf.d/fbsplash.conf -. /sbin/splash-functions.sh - -# Redefine the stat functions # -stat_bkgd() { -	printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " -	deltext -	printf "   ${C_OTHER}[${C_BKGD}BKGD${C_OTHER}]${C_CLEAR} " -} - -stat_busy() { -	printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " -	printf "${SAVE_POSITION}" - 	deltext -	printf "   ${C_OTHER}[${C_BUSY}BUSY${C_OTHER}]${C_CLEAR} " -	# This checks to see if we just brought up the lo interface in rc.sysinit # -	# if so, start the progress bar # -	if [ "${1}" == 'Bringing up loopback interface' ]; then -		splash rc_init -	fi -        # Load variables # -        var_load STEP_NR MAX_STEPS RC_MULTI RC_SYSINIT RC_SHUTDOWN -        # Only update the splash progress if we're in sysinit, multi, or shutdown. # -        if [[ "${SPLASH_RC_MULTI}" == "1" || "${SPLASH_RC_SYSINIT}" == "1" || "${SPLASH_RC_SHUTDOWN}" == "1" ]]; then -                ((SPLASH_STEP_NR++)) -                SPLASH_PROGRESS=$((100*${SPLASH_STEP_NR}/${SPLASH_MAX_STEPS})) -                SPLASH_CURRENT_PROGRESS=${SPLASH_PROGRESS} -                splash_update_progress ${SPLASH_PROGRESS} -                var_save STEP_NR CURRENT_PROGRESS -        fi -	if [ "${SPLASH_RC_SHUTDOWN}" == "1" ]; then -		save_shutdown_steps -	fi - -} - -stat_done() { -	deltext -	printf "   ${C_OTHER}[${C_DONE}DONE${C_OTHER}]${C_CLEAR} \n" -} - -stat_fail() { -	deltext -	printf "   ${C_OTHER}[${C_FAIL}FAIL${C_OTHER}]${C_CLEAR} \n" -	splash_verbose -} - -start_daemon() { -	/etc/rc.d/$1 start -} - -# rc.sysinit # -if [ "$CALLER" == '/etc/rc.sysinit' ]; then -#	echo "fbsplash: Setting up splash..." -	splash_cache_prep -	SPLASH_MAX_STEPS=$(load_boot_steps) -	SPLASH_STEP_NR=0 -	SPLASH_RC_MULTI=0 -	SPLASH_RC_SYSINIT=1 -	SPLASH_RC_SHUTDOWN=0 -	var_save MAX_STEPS STEP_NR RC_MULTI RC_SYSINIT RC_SHUTDOWN -fi - -# rc.multi # -if [ "$CALLER" == '/etc/rc.multi' ]; then -	SPLASH_RC_MULTI=1 -	SPLASH_RC_SYSINIT=0 -	var_save RC_MULTI RC_SYSINIT -fi - -# rc.shutdown # -if [ "$CALLER" == '/etc/rc.shutdown' ]; then -#	echo "fbsplash: Setting up splash..." -	splash_cache_prep -	SPLASH_MAX_STEPS=$(load_shutdown_steps) -	SPLASH_SHUTDOWN_STEPS=1 -	SPLASH_STEP_NR=0 -	SPLASH_RC_MULTI=0 -	SPLASH_RC_SYSINIT=0 -	SPLASH_RC_SHUTDOWN=1 -	var_save MAX_STEPS STEP_NR RC_MULTI RC_SYSINIT RC_SHUTDOWN DAEMON_STEPS -	splash rc_init -fi - diff --git a/abs/core-testing/fbsplash/fbsplash.install b/abs/core-testing/fbsplash/fbsplash.install index 2899857..09da219 100644 --- a/abs/core-testing/fbsplash/fbsplash.install +++ b/abs/core-testing/fbsplash/fbsplash.install @@ -1,25 +1,19 @@ -  post_install() { -	echo ">" -	echo "> ATTENTION!!!:" -	echo "----------------------------------------------" -	echo "> fbsplash has been rewritten and no longer depends " -	echo "> on using a special initscripts. " -	echo "> Please read http://wiki.archlinux.org/fbsplash " -	echo "> for more details on the changes. " -	echo "----------------------------------------------" -	if ! [ -e /etc/conf.d/fbsplash.bootsteps ]; then -		echo "" -		echo "Creating step count files..." -		echo "Note: The first boot's percentage will be wrong. " -		echo "The scripts will update with the right steps after first boot" -		echo "" -		touch /etc/conf.d/fbsplash.bootsteps -		touch /etc/conf.d/fbsplash.shutdownsteps -		echo 25 > /etc/conf.d/fbsplash.bootsteps -		echo 20 > /etc/conf.d/fbsplash.shutdownsteps -	fi -		echo 20 > /etc/conf.d/fbsplash.shutdownsteps +	echo "------------------------------------------------------------" +	echo "> This package doesn't contain a default theme." +	echo "> You need to install one separately." +        echo "> To find some themes, just search AUR for \"fbsplash-theme\"," +        echo "> or GNOME-Look.org or KDE-Look.org for \"fbsplash\"." +        echo "------------------------------------------------------------" +        echo "> Configuration for fbsplash: /etc/conf.d/splash" +        echo "> Configuration for fbcondecor: /etc/conf.d/fbcondecor" +	echo "------------------------------------------------------------" +        echo "> Remember to rebuild the initrd after changing the" +        echo "> configuration." +        echo "------------------------------------------------------------" +	echo "> Please read http://wiki.archlinux.org/index.php/Fbsplash" +	echo "> for more details. " +	echo "------------------------------------------------------------"  }  post_upgrade() { diff --git a/abs/core-testing/fbsplash/splash-functions-arch.sh b/abs/core-testing/fbsplash/splash-functions-arch.sh deleted file mode 100644 index 977ccef..0000000 --- a/abs/core-testing/fbsplash/splash-functions-arch.sh +++ /dev/null @@ -1,71 +0,0 @@ -# ArchLinux specific splash functions # -# Author: Greg Helton <gt@fallendusk.org> # - -splash_init() { -	splash_setup	 -	splash_start -} - -splash_exit() { -	splash_comm_send "exit" -	splash_cache_cleanup -} - -splash_update_progress() { -	local PROGRESS -	PROGRESS=$(($1*65535/100)) -	splash_comm_send "progress ${PROGRESS}" -	splash_comm_send "repaint" -} - -var_save() { -for i in $@ ; -	do -		local var -		eval var=\$SPLASH_${i} -		echo "SPLASH_$i=$(echo ${var})" > ${spl_cachedir}/${i} -	done -} - -var_load() { -for i in $@ ; -	do -		local var -		eval var=\$SPLASH_${i} -		if [[ -z "$(echo ${var})" && -f ${spl_cachedir}/${i} ]] ; then -			source ${spl_cachedir}/${i} -		fi -	done -} - -save_boot_steps() { -	var_load STEP_NR -	echo $SPLASH_STEP_NR > /etc/conf.d/fbsplash.bootsteps -} - -load_boot_steps() { -	BOOT_STEPS=$(cat /etc/conf.d/fbsplash.bootsteps) -	# Fail safe, so we don't divide by 0 -	if [ $BOOT_STEPS = 0 ]; then -		BOOT_STEPS=1 -	fi -	printf $BOOT_STEPS -} - -save_shutdown_steps() { -	var_load SHUTDOWN_STEPS -	((SPLASH_SHUTDOWN_STEPS++)) -	echo $SPLASH_SHUTDOWN_STEPS > /etc/conf.d/fbsplash.shutdownsteps -	var_save SHUTDOWN_STEPS -} - -load_shutdown_steps() { -	SHUTDOWN_STEPS=$(cat /etc/conf.d/fbsplash.shutdownsteps) -	# Fail safe, so we don't divide by 0 -	if [ $SHUTDOWN_STEPS = 0 ]; then -		SHUTDOWN_STEPS=1 -	fi -	printf $SHUTDOWN_STEPS -} - -# EOF # diff --git a/abs/core-testing/fbsplash/splash-functions.sh b/abs/core-testing/fbsplash/splash-functions.sh deleted file mode 100644 index 1c17663..0000000 --- a/abs/core-testing/fbsplash/splash-functions.sh +++ /dev/null @@ -1,618 +0,0 @@ -# Distributed under the terms of the GNU General Public License v2 - -# Author:     Michal Januszewski <spock@gentoo.org> -# Maintainer: Michal Januszewski <spock@gentoo.org> - -# This file is a part of splashutils. The functions contained in this -# file are meant to be used by hook scripts in splash themes or by -# initscript systems. The code will be kept distro-agnostic to facilitate -# portability. It should also contain POSIX compatible code. No bashisms -# allowed! - -# #################################################################### -#    Change any settings ONLY if you are sure what you're doing. -#    Don't cry if it breaks afterwards. -# #################################################################### - -# The splash scripts need a cache which can be guaranteed to be -# both readable and writable at all times, even when the root fs -# is mounted read-only. To that end, an in-RAM fs is used. Valid -# values for spl_cachetype are 'tmpfs' and 'ramfs'. spl_cachesize -# is a size limit in KB, and it should probably be left with the -# default value. -export spl_cachesize="4096" -export spl_cachetype="tmpfs" -export spl_cachedir="//lib/splash/cache" -export spl_tmpdir="//lib/splash/tmp" -export spl_fifo="${spl_cachedir}/.splash" -export spl_pidfile="${spl_cachedir}/daemon.pid" -export spl_util="//bin/splash_util.static" -export spl_daemon="//sbin/fbsplashd.static" -export spl_decor="//sbin/fbcondecor_ctl.static" -export spl_bindir="//lib/splash/bin" - -# This is the main function which handles all events. -# Accepted parameters: -#  svc_start <name> -#  svc_stop <name> -#  svc_started <name> -#  svc_stopped <name> -#  svc_start_failed <name> -#  svc_stop_failed <name> -#  svc_input_begin <name> -#  svc_input_end <name> -#  rc_init <internal_runlevel> - used to distinguish between 'boot' and 'sysinit' -#  rc_exit -#  critical -splash() { -	local event="$1" -	shift - -	# Reload the splash settings in rc_init.  We could have set them wrong the -	# first time splash_setup was called (when splash-functions.sh was first -	# sourced) if /proc wasn't mounted. -	if [ "${event}" = "rc_init" ]; then -		splash_setup "force" -	else -		splash_setup -	fi - -	[ "${SPLASH_MODE_REQ}" = "off" ] && return - -	# Prepare the cache here -- rc_init-pre might want to use it -	if [ "${event}" = "rc_init" ]; then -		if [ "${RUNLEVEL}" = "S" -a "$1" = "sysinit" ]; then -			splash_cache_prep 'start' || return -		elif [ "${RUNLEVEL}" = "6" -o "${RUNLEVEL}" = "0" ]; then -			# Check if the splash cachedir is mounted readonly. If it is, -			# we need to mount a tmpfs over it. -			if ! touch "${spl_cachedir}/message" 2>/dev/null ; then -				splash_cache_prep 'stop' || return -			fi -		fi -	fi - -	local args="" - -	if [ "${event}" = "rc_init" -o "${event}" = "rc_exit" ]; then -		args="$* ${RUNLEVEL}" -	elif [ "${event}" = "svc_started" -o "${event}" = "svc_stopped" ]; then -		if [ -z "$2" ]; then -			# Backwards compatibility hack.  Add a 0 to the arguments to simulate -			# an error code. -			args="$* 0" -		else -			args="$*" - -			# Backwards compatibility: translate an error condition (non-zero -			# error code) into an appropriate event. -			if [ "$2" != "0" ]; then -				if [ "${event}" = "svc_started" ]; then -					event="svc_start_failed" -				else -					event="svc_stop_failed" -				fi -			fi -		fi -	else -		args="$*" -	fi - -	splash_profile "pre ${event} ${args}" - -	# Handle -pre event hooks -	if [ -x "/etc/splash/${SPLASH_THEME}/scripts/${event}-pre" ]; then -		/etc/splash/"${SPLASH_THEME}"/scripts/${event}-pre ${args} -	fi - -	case "$event" in -		svc_start)			splash_svc_start "$1";; -		svc_stop)			splash_svc_stop "$1";; -		svc_started) 		splash_svc "$1" "start";; -		svc_stopped)		splash_svc "$1" "stop";; -		svc_start_failed)	splash_svc_fail "$1" "start";; -		svc_stop_failed)	splash_svc_fail "$1" "stop";; -		svc_input_begin)	splash_input_begin "$1";; -		svc_input_end)		splash_input_end "$1";; -		rc_init) 			splash_init "$1" "${RUNLEVEL}";; -		rc_exit) 			splash_exit "${RUNLEVEL}";; -		critical) 			splash_verbose;; -	esac - -	splash_profile "post ${event} ${args}" - -	# Handle -post event hooks -	if [ -x "/etc/splash/${SPLASH_THEME}/scripts/${event}-post" ]; then -		/etc/splash/"${SPLASH_THEME}"/scripts/${event}-post ${args} -	fi - -	return 0 -} - -splash_setup() { -	# If it's already set up, let's not waste time on parsing the config -	# files again -	if [ "${SPLASH_THEME}" != "" -a "${SPLASH_TTY}" != "" -a "$1" != "force" ]; then -		return 0 -	fi - -	export SPLASH_EFFECTS="" -	export SPLASH_SANITY="" -	export SPLASH_TEXTBOX="no" -	export SPLASH_MODE_REQ="off" -	export SPLASH_PROFILE="off" -	export SPLASH_THEME="default" -	export SPLASH_TTY="16" -	export SPLASH_KDMODE="TEXT" -	export SPLASH_AUTOVERBOSE="0" -	export SPLASH_BOOT_MESSAGE="Booting the system (\$progress%)... Press F2 for verbose mode." -	export SPLASH_SHUTDOWN_MESSAGE="Shutting down the system (\$progress%)... Press F2 for verbose mode." -	export SPLASH_REBOOT_MESSAGE="Rebooting the system (\$progress%)... Press F2 for verbose mode." -	export SPLASH_XSERVICE="xdm" - -	[ -f /etc/splash/splash ] && . /etc/splash/splash -	[ -f /etc/conf.d/splash ] && . /etc/conf.d/splash -	[ -f /etc/conf.d/fbcondecor ] && . /etc/conf.d/fbcondecor - -	if [ -f /proc/cmdline ]; then -		options=$(grep -o 'splash=[^ ]*' /proc/cmdline) - -		# Execute this loop over $options so that we can process multiple -		# splash= arguments on the kernel command line. Useful for adjusting -		# splash parameters from ISOLINUX. -		for opt in ${options} ; do -			options=${opt#*=} - -			for i in $(echo "${options}" | sed -e 's/,/ /g') ; do -				case ${i%:*} in -					theme)		SPLASH_THEME=${i#*:} ;; -					tty)		SPLASH_TTY=${i#*:} ;; -					verbose) 	SPLASH_MODE_REQ="verbose" ;; -					silent)		SPLASH_MODE_REQ="silent" ;; -					kdgraphics)	SPLASH_KDMODE="GRAPHICS" ;; -					profile)	SPLASH_PROFILE="on" ;; -					insane)		SPLASH_SANITY="insane" ;; -				esac -			done -		done -	fi -} - -splash_get_boot_message() { -	if [ "${RUNLEVEL}" = "6" ]; then -		echo "${SPLASH_REBOOT_MESSAGE}" -	elif [ "${RUNLEVEL}" = "0" ]; then -		echo "${SPLASH_SHUTDOWN_MESSAGE}" -	else -		echo "${SPLASH_BOOT_MESSAGE}" -	fi -} - -splash_start() { -	if [ "${SPLASH_MODE_REQ}" = "verbose" ]; then -		${spl_decor} -c on 2>/dev/null -		return 0 -	elif [ "${SPLASH_MODE_REQ}" != "silent" ]; then -		return 0 -	fi - -	# Display a warning if the system is not configured to display init messages -	# on tty1. This can cause a lot of problems if it's not handled correctly, so -	# we don't allow silent splash to run on incorrectly configured systems. -	if [ "${SPLASH_MODE_REQ}" = "silent" -a "${SPLASH_SANITY}" != "insane" ]; then -		if [ -z "$(grep -E '(^| )CONSOLE=/dev/tty1( |$)' /proc/cmdline)" -a \ -			 -z "$(grep -E '(^| )console=tty1( |$)' /proc/cmdline)" ]; then -			clear -			splash_warn "You don't appear to have a correct console= setting on your kernel" -			splash_warn "command line. Silent splash will not be enabled. Please add" -			splash_warn "console=tty1 or CONSOLE=/dev/tty1 to your kernel command line" -			splash_warn "to avoid this message." -			if [ -n "$(grep 'CONSOLE=/dev/tty1' /proc/cmdline)" -o \ -				  -n "$(grep 'console=tty1' /proc/cmdline)" ]; then -				splash_warn "Note that CONSOLE=/dev/tty1 and console=tty1 are general parameters and" -				splash_warn "not splash= settings." -			fi -			return 1 -		fi - -		if [ -n "$(grep -E '(^| )CONSOLE=/dev/tty1( |$)' /proc/cmdline)" ]; then -			mount -n --bind / ${spl_tmpdir} -			if [ ! -c "${spl_tmpdir}/dev/tty1" ]; then -				umount -n ${spl_tmpdir} -				splash_warn "The filesystem mounted on / doesn't contain the /dev/tty1 device" -				splash_warn "which is required for the silent splash to function properly." -				splash_warn "Silent splash will not be enabled. Please create the appropriate" -				splash_warn "device node to avoid this message." -				return 1 -			fi -			umount -n ${spl_tmpdir} -		fi -	fi - -	rm -f "${spl_pidfile}" - -	# Prepare the communications FIFO -	rm -f "${spl_fifo}" 2>/dev/null -	mkfifo "${spl_fifo}" - -	local options="" -	[ "${SPLASH_KDMODE}" = "GRAPHICS" ] && options="--kdgraphics" -	[ -n "${SPLASH_EFFECTS}" ] && options="${options} --effects=${SPLASH_EFFECTS}" -	[ "${SPLASH_TEXTBOX}" = "yes" ] && options="${options} --textbox" - -	local ttype="bootup" -	if [ "${RUNLEVEL}" = "6" ]; then -		ttype="reboot" -	elif [ "${RUNLEVEL}" = "0" ]; then -		ttype="shutdown" -	fi - -	# Start the splash daemon -	BOOT_MSG="$(splash_get_boot_message)" ${spl_daemon} --theme="${SPLASH_THEME}" --pidfile="${spl_pidfile}" --type=${ttype} ${options} - -	# Set the silent TTY and boot message -	splash_comm_send "set tty silent ${SPLASH_TTY}" - -	if [ "${SPLASH_MODE_REQ}" = "silent" ]; then -		splash_comm_send "set mode silent" -		splash_comm_send "repaint" -		${spl_decor} -c on 2>/dev/null -	fi - -	splash_comm_send "set autoverbose ${SPLASH_AUTOVERBOSE}" - -	splash_set_event_dev - -	return 0 -} - -########################################################################### -# Cache-related functions -########################################################################### - -splash_cache_prep() { -	# Mount an in-RAM filesystem at spl_cachedir -	mount -ns -t "${spl_cachetype}" cachedir "${spl_cachedir}" \ -		-o rw,mode=0644,size="${spl_cachesize}"k - -	retval="$?" - -	if [ ${retval} -ne 0 ]; then -		splash_err "Unable to create splash cache - switching to verbose." -		splash_verbose -		return "${retval}" -	fi -} - -# args: list of files to save when the cache is umounted -#       Note that the 'profile' file is already handled and thus shouldn't -#       be included in the list. -splash_cache_cleanup() { -	# Don't try to clean anything up if the cachedir is not mounted. -	[ -z "$(grep ${spl_cachedir} /proc/mounts)" ] && return; - -	# Create the temp dir if necessary. -	if [ ! -d "${spl_tmpdir}" ]; then -		mkdir -p "${spl_tmpdir}" 2>/dev/null -		[ "$?" != "0" ] && return -	fi - -	# Make sure the splash daemon is dead. -	if [ -n "$(pgrep fbsplashd)" ]; then -		sleep 1 -		killall -9 "${spl_daemon##*/}" 2>/dev/null -	fi - -	# If /etc is not writable, don't update /etc/mtab. If it is -	# writable, update it to avoid stale mtab entries (bug #121827). -	local mntopt="" -	[ -w /etc/mtab ] || mntopt="-n" -	mount ${mntopt} --move "${spl_cachedir}" "${spl_tmpdir}" 2>/dev/null - -	# Don't try to copy anything if the cachedir is not writable. -	[ -w "${spl_cachedir}" ] || return - -	if [ "${SPLASH_PROFILE}" != "off" ]; then -		cp -a "${spl_tmpdir}/profile" "${spl_cachedir}" 2>/dev/null -	fi - -	while [ -n "$1" ]; do -		cp -a "${spl_tmpdir}/$1" "${spl_cachedir}" 2>/dev/null -		shift -	done - -	umount -l "${spl_tmpdir}" 2>/dev/null -} - -########################################################################### -# Common functions -########################################################################### - -# Sends data to the splash FIFO after making sure there's someone -# alive on the other end to receive it. -splash_comm_send() { -	if [ -z "`pidof $(basename ${spl_daemon})`" ]; then -		return 1 -	else -		splash_profile "comm $*" -		echo "$*" > "${spl_fifo}" & -	fi -} - -# Returns the current splash mode. -splash_get_mode() { -	local ctty="${spl_bindir}/fgconsole" -	local mode="$(${spl_util})" - -	if [ "${mode}" = "silent" ]; then -		echo "silent" -	else -		if [ -z "$(${spl_decor} -c getstate --tty=${ctty} 2>/dev/null | grep off)" ]; then -			echo "verbose" -		else -			echo "off" -		fi -	fi -} - -# chvt <n> -# -------- -# Switches to the n-th tty. -chvt() { -	local ntty=$1 - -#	if [ -x /usr/bin/chvt ] ; then -#		/usr/bin/chvt ${ntty} -#	else -		printf "\e[12;${ntty}]" -#	fi -} - -# Switches to verbose mode. -splash_verbose() { -#	chvt 1 -/bin/true -} - -# Switches to silent mode. -splash_silent() { -	splash_comm_send "set mode silent" -} - -# Saves profiling information -splash_profile() { -	if [ "${SPLASH_PROFILE}" = "on" ]; then -		echo "$(cat /proc/uptime | cut -f1 -d' '): $*" >> "${spl_cachedir}/profile" -	fi -} - -# Set the input device if it exists. This will make it possible to use F2 to -# switch from verbose to silent. -splash_set_event_dev() { -	local t="$(grep -Hsi keyboard /sys/class/input/input*/name | sed -e 's#.*input\([0-9]*\)/name.*#event\1#')" -	if [ -z "${t}" ]; then -		t="$(grep -Hsi keyboard /sys/class/input/event*/device/driver/description | grep -o 'event[0-9]\+')" -		if [ -z "${t}" ]; then -			for i in /sys/class/input/input* ; do -				if [ "$((0x$(cat $i/capabilities/ev) & 0x100002))" = "1048578" ]; then -					t="$(echo $i | sed -e 's#.*input\([0-9]*\)#event\1#')" -				fi -			done - -			if [ -z "${t}" ]; then -				# Try an alternative method of finding the event device. The idea comes -				# from Bombadil <bombadil(at)h3c.de>. We're couting on the keyboard controller -				# being the first device handled by kbd listed in input/devices. -				t="$(/bin/grep -s -m 1 '^H: Handlers=kbd' /proc/bus/input/devices | grep -o 'event[0-9]*')" -			fi -		fi -	fi -	[ -n "${t}" ] && splash_comm_send "set event dev /dev/input/${t}" -} - -########################################################################### -# Service -########################################################################### - -# args: <svc> <action> -splash_svc() { -	local srv="$1" -	local act="$2" - -	if [ "${act}" = "start" ]; then -		splash_svc_update "${srv}" "svc_started" -		if [ "${srv}" = "gpm" ]; then -			splash_comm_send "set gpm" -			splash_comm_send "repaint" -		fi -		splash_comm_send "log Service '${srv}' started." -	else -		splash_svc_update "${srv}" "svc_stopped" -		splash_comm_send "log Service '${srv}' stopped." -	fi - -	splash_update_progress "${srv}" -} - -# args: <svc> <action> -splash_svc_fail() { -	local srv="$1" -	local act="$2" - -	if [ "${SPLASH_VERBOSE_ON_ERRORS}" = "yes"  ]; then -		splash_verbose -		return 1 -	fi - -	if [ "${act}" = "start" ]; then -		splash_svc_update "${srv}" "svc_start_failed" -		splash_comm_send "log Service '${srv}' failed to start." -	else -		splash_svc_update "${srv}" "svc_stop_failed" -		splash_comm_send "log Service '${srv}' failed to stop." -	fi - -	splash_update_progress "${srv}" -} - -# args: <svc> <state> -# -# Inform the splash daemon about service status changes. -splash_svc_update() { -	splash_comm_send "update_svc $1 $2" -} - -# args: <svc> -splash_svc_start() { -	local svc="$1" - -	splash_svc_update "${svc}" "svc_start" -	splash_comm_send "paint" -} - -# args: <svc> -splash_svc_stop() { -	local svc="$1" - -	splash_svc_update "${svc}" "svc_stop" -	splash_comm_send "paint" -} - -# args: <svc> -splash_input_begin() { -	local svc="$1" - -	if [ "$(splash_get_mode)" = "silent" ]; then -		splash_verbose -		export SPL_SVC_INPUT_SILENT="${svc}" -	fi -} - -# args: <svc> -splash_input_end() { -	local svc="$1" - -	if [ "${SPL_SVC_INPUT_SILENT}" = "${svc}" ]; then -		splash_silent -		unset SPL_SVC_INPUT_SILENT -	fi -} - -########################################################################### -# Framebuffer Console Decorations functions -########################################################################### - -fbcondecor_supported() -{ -	[ -e /dev/fbsplash -o -e /dev/fbcondecor ] -} - -# args: <theme> <tty> -fbcondecor_set_theme() -{ -	local theme=$1 -	local tty=$2 - -	[ -x ${spl_decor} ] || return 1 - -	${spl_decor} --tty="${tty}" -t "${theme}" -c setcfg || return 1 -	${spl_decor} --tty="${tty}" -t "${theme}" -c setpic -q -	${spl_decor} --tty="${tty}" -c on -} - -########################################################################### -# Service list -########################################################################### - -# splash_svclist_get <type> -# ------------------------- -# type: -#  - start - to get a list of services to be started during bootup -#  - stop  - to get a list of services to be stopped during shutdown/reboot -splash_svclist_get() { -	if [ "$1" = "start" -a -r "${spl_cachedir}/svcs_start" ]; then -		cat "${spl_cachedir}/svcs_start" -	elif [ "$1" = "stop" -a -r "${spl_cachedir}/svcs_stop" ]; then -		cat "${spl_cachedir}/svcs_stop" -	fi -} - -splash_warn() { -	echo "$*" -} - -splash_err() { -	echo "$*" -} - -############################################################################ -# Functions to be overridden by distro-specific code -########################################################################### - -# args: <internal_runlevel> <runlevel> -# -# This function is called when an 'rc_init' event takes place, -# i.e. when the runlevel is changed. - -# It is normally used to initialize any internal splash-related  -# variables (e.g. ones used to track the boot progress), calculate -# and save the service list and call `splash_start` in appropriate  -# runlevels. -# -# Note that the splash cache is already intialized when this -# function is called. -splash_init() { -	if [ "$2" = "6" -o "$2" = "0" -o "$2" = "S" -a "$1" = "sysinit" ]; then -		splash_start -	fi -} - -# args: <runlevel> -# -# This function is called when an 'rc_exit' event takes place, -# i.e. at the end of processes all initscript from a runlevel. -splash_exit() { -	# If we're in sysinit or rebooting, do nothing. -	[ "$1" = "S" -o "$1" = "6" -o "$1" = "0" ] && return 0 - -	splash_comm_send "exit" -	splash_cache_cleanup -} - -# args: <svc> -# -# This function is called whenever the progress variable should be -# updated.  It should recalculate the progress and send it to the -# splash daemon. -splash_update_progress() { -	# splash_comm_send "progress ${progress}" -	# splash_comm_send "paint" -	return -} - -# Export functions if we're running bash. -if [ -n "${BASH}" ]; then -	export -f splash -	export -f splash_setup -	export -f splash_get_boot_message -	export -f splash_start -	export -f splash_cache_prep -	export -f splash_cache_cleanup -	export -f splash_comm_send -	export -f splash_get_mode -	export -f chvt -	export -f splash_verbose -	export -f splash_silent -	export -f splash_profile -	export -f splash_set_event_dev -	export -f splash_svclist_get -fi - -# Load any supplementary splash functions. -for i in /sbin/splash-functions-*.sh ; do -	[ -r "${i}" ] && . "${i}" -done - -splash_setup - -# vim:ts=4 diff --git a/abs/core-testing/fbsplash/splash.conf b/abs/core-testing/fbsplash/splash.conf new file mode 100644 index 0000000..74cada9 --- /dev/null +++ b/abs/core-testing/fbsplash/splash.conf @@ -0,0 +1,63 @@ +# +# /etc/conf.d/splash +# + +####  initcpio and Fbsplash daemon  ########################################## + +## Themes to include into initcpio +## For a smaller initcpio you may try theme cfg files instead of directories. +SPLASH_THEMES=( +    linhes +) + +## Override the initial silent splash screen status message defaults. +## Note: '$progress' will be replaced by Fbsplash itself. +## * initcpio - (no effect with fbcondecor kernel) +SPLASH_INIT_MESSAGE="Initializing the kernel" +## * bootup +SPLASH_BOOT_MESSAGE="Booting '$HOSTNAME' (\$progress%)" +## * reboot +SPLASH_REBOOT_MESSAGE="Rebooting '$HOSTNAME' (\$progress%)" +## * shutdown +SPLASH_SHUTDOWN_MESSAGE="Shutting down '$HOSTNAME' (\$progress%)" + +## To show animations early, include the Fbsplash daemon (1.5 MiB) into initcpio, too, +## instead of the small helper only. +## Note: Themes with 'scripts/rc_init-pre' like 'arch-banner-icons' are not supported. +SPLASH_DAEMON="early" + +## Make the splash daemon use fade effects. +## Note: The initcpio helper does only use the kernel parameter! +# SPLASH_EFFECTS="fadein,fadeout" +## Uggly hack to get that in from the kernel line :p +SPLASH_EFFECTS=$(e=();IFS=',';for w in $splash;do [[ $w == fade* ]]&&e+=($w);done;echo "${e[*]}") + +## Enable the textbox when starting the Fbsplash daemon. +## Useful if the theme provides a message log or other textbox. +## The scripts write any initscripts [FAIL] messages to the log. +## Note: The textbox can also be toggled by pressing F3-key. +SPLASH_TEXTBOX="yes" + +## Splash progress timeout +## If set to a positive value, Fbsplash will automatically switch to verbose +## mode if there is no progress for the specified number of seconds. +SPLASH_AUTOVERBOSE=0 + +####  scripts behaviour  ##################################################### + +## Change to verbose mode on any initscripts [FAIL] message +## Useful with very simple themes and also when starting Xorg from DAEMONS +SPLASH_VERBOSE_ON_ERRORS="no" + +## Name of the DAEMONS script starting Xorg if any +## Set this to avoid virtual terminal change struggle between Xorg and Fbsplash. +SPLASH_XSERVICE="gdm" +#SPLASH_XSERVICE="kdm" +#SPLASH_XSERVICE="xdm" +#SPLASH_XSERVICE="lxdm" +#SPLASH_XSERVICE="slim" + +## Push initscripts [BUSY] messages to the splash status message line. +SPLASH_PUSH_MESSAGES="no" + +# EOF # | 
