From 05408d178b3bb65f895b011705ade34c34b8dce6 Mon Sep 17 00:00:00 2001 From: Cecil Hugh Watson Date: Sat, 4 Sep 2010 15:54:43 -0700 Subject: fbsplash:Bumped/Updated for LinHES 7. --- abs/core-testing/fbsplash/PKGBUILD | 103 ++-- abs/core-testing/fbsplash/__changelog | 4 - abs/core-testing/fbsplash/darch.tar.bz2 | Bin 1572821 -> 0 bytes abs/core-testing/fbsplash/extra/encrypt_hook.patch | 24 - abs/core-testing/fbsplash/fbcondecor.conf | 6 + abs/core-testing/fbsplash/fbcondecor.daemon | 55 ++ abs/core-testing/fbsplash/fbsplash-basic.sh | 201 +++++++ abs/core-testing/fbsplash/fbsplash.bootsteps | 1 - abs/core-testing/fbsplash/fbsplash.conf | 8 - abs/core-testing/fbsplash/fbsplash.daemon | 56 -- abs/core-testing/fbsplash/fbsplash.git.patch | 166 ++++++ abs/core-testing/fbsplash/fbsplash.initcpio_hook | 102 ++++ .../fbsplash/fbsplash.initcpio_install | 117 +++- abs/core-testing/fbsplash/fbsplash.inithooks | 91 --- abs/core-testing/fbsplash/fbsplash.install | 36 +- abs/core-testing/fbsplash/splash-functions-arch.sh | 71 --- abs/core-testing/fbsplash/splash-functions.sh | 618 --------------------- abs/core-testing/fbsplash/splash.conf | 63 +++ 18 files changed, 768 insertions(+), 954 deletions(-) delete mode 100644 abs/core-testing/fbsplash/__changelog delete mode 100644 abs/core-testing/fbsplash/darch.tar.bz2 delete mode 100644 abs/core-testing/fbsplash/extra/encrypt_hook.patch create mode 100644 abs/core-testing/fbsplash/fbcondecor.conf create mode 100644 abs/core-testing/fbsplash/fbcondecor.daemon create mode 100644 abs/core-testing/fbsplash/fbsplash-basic.sh delete mode 100644 abs/core-testing/fbsplash/fbsplash.bootsteps delete mode 100644 abs/core-testing/fbsplash/fbsplash.conf delete mode 100644 abs/core-testing/fbsplash/fbsplash.daemon create mode 100644 abs/core-testing/fbsplash/fbsplash.git.patch create mode 100644 abs/core-testing/fbsplash/fbsplash.initcpio_hook delete mode 100644 abs/core-testing/fbsplash/fbsplash.inithooks delete mode 100644 abs/core-testing/fbsplash/splash-functions-arch.sh delete mode 100644 abs/core-testing/fbsplash/splash-functions.sh create mode 100644 abs/core-testing/fbsplash/splash.conf 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 +# Maintainer: Heiko Baums +# Contributor: Kurt J. Bosch 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.bz2 deleted file mode 100644 index 0faab98..0000000 Binary files a/abs/core-testing/fbsplash/darch.tar.bz2 and /dev/null differ 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 # +# Based on the work of Greg Helton # +# Thomas Baechler # +# 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?= +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< # - -# 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 # - -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 -# Maintainer: Michal Januszewski - -# 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 -# svc_stop -# svc_started -# svc_stopped -# svc_start_failed -# svc_stop_failed -# svc_input_begin -# svc_input_end -# rc_init - 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 -# -------- -# 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 . 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: -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: -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: -# -# Inform the splash daemon about service status changes. -splash_svc_update() { - splash_comm_send "update_svc $1 $2" -} - -# args: -splash_svc_start() { - local svc="$1" - - splash_svc_update "${svc}" "svc_start" - splash_comm_send "paint" -} - -# args: -splash_svc_stop() { - local svc="$1" - - splash_svc_update "${svc}" "svc_stop" - splash_comm_send "paint" -} - -# args: -splash_input_begin() { - local svc="$1" - - if [ "$(splash_get_mode)" = "silent" ]; then - splash_verbose - export SPL_SVC_INPUT_SILENT="${svc}" - fi -} - -# args: -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: -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: -# - 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: -# -# 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: -# -# 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: -# -# 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 # -- cgit v0.12