diff options
-rw-r--r-- | abs/core/fbsplash/PKGBUILD | 38 | ||||
-rw-r--r-- | abs/core/fbsplash/fbsplash-basic.sh | 39 | ||||
-rw-r--r-- | abs/core/fbsplash/fbsplash.git.patch | 166 | ||||
-rw-r--r-- | abs/core/fbsplash/fbsplash.initcpio_hook | 128 | ||||
-rw-r--r-- | abs/core/fbsplash/fbsplash.initcpio_install | 176 | ||||
-rw-r--r-- | abs/core/fbsplash/splash.conf | 31 | ||||
-rw-r--r-- | abs/core/fbsplash/splash_start_initcpio.patch | 22 |
7 files changed, 202 insertions, 398 deletions
diff --git a/abs/core/fbsplash/PKGBUILD b/abs/core/fbsplash/PKGBUILD index 3b25af8..49725d4 100644 --- a/abs/core/fbsplash/PKGBUILD +++ b/abs/core/fbsplash/PKGBUILD @@ -2,39 +2,50 @@ # Contributor: Kurt J. Bosch <kjb-temp-2009 at alpenjodel.de> pkgname=fbsplash -pkgver=1.5.4.3 -pkgrel=38 +pkgver=1.5.4.4 +pkgrel=7 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') depends=('miscsplashutils' 'freetype2' 'libjpeg' 'libpng' 'libmng' 'lcms' 'gpm') -optdepends=('kernel26-fbcondecor: enable console background images' +optdepends=('linux-fbcondecor: enable console background images' 'fbsplash-extras: additional functionality like daemon icons' 'uswsusp-fbsplash: suspend to disk with fbsplash' - 'python2: convert themes from splashy to 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://dev.gentoo.org/~spock/projects/gensplash/archive/splashutils-${pkgver}.tar.bz2 - fbsplash.git.patch +source=(http://download.berlios.de/fbsplash/splashutils-${pkgver}.tar.bz2 + splash_start_initcpio.patch splash.conf fbsplash-basic.sh fbsplash.initcpio_install fbsplash.initcpio_hook fbcondecor.daemon fbcondecor.conf) +md5sums=('2a16704c4adde97b58812cd89e3f2342' + '4045e315c52f5a576fca4f7e634eeb91' + '90708a96038d7d7921c2e9fde938c058' + 'a6b0b9c5c7a460380a7db127e0278164' + '24e2a7bbc2d18fe3ec10093665cd7a6e' + '4a3ac992a5042fa9770cbd3fdb7e1465' + '715926469d05eecd345c052e6248ca32' + 'b3db9d4fd902b62ac9e38589677e2d16') + build() { cd ${srcdir}/splashutils-${pkgver} - # patch for building splashutils with glibc and dynamical linking - patch -Np0 -i ${srcdir}/fbsplash.git.patch 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 + # fix set_event_dev call for initcpio usage (if evdev module is there) + #patch -Np2 -i ${srcdir}/splash_start_initcpio.patch + + export LIBS="-lbz2" ./configure --prefix=/usr --sysconfdir=/etc --without-klibc --enable-fbcondecor --with-gpm --with-mng --with-png --with-ttf --with-ttf-kernel make } @@ -57,7 +68,7 @@ package() { # Install fbsplash scripts and config file install -D -m644 ${srcdir}/splash.conf etc/conf.d/splash - install -D -m744 ${srcdir}/fbsplash-basic.sh etc/rc.d/functions.d/fbsplash-basic.sh + 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 @@ -65,12 +76,3 @@ package() { install -D -m644 ${srcdir}/fbcondecor.conf etc/conf.d/fbcondecor install -D -m755 ${srcdir}/fbcondecor.daemon etc/rc.d/fbcondecor } - -md5sums=('c722cd4148817b9c50381d9bdc1ea6ef' - '3a338c60ed0710c8b7e3e08929db521a' - '8f342632af1075667d6e11871a9e5d7e' - 'e69753dac753b8ba4e2e29ef5a9c46ca' - 'e29b3db6ee059b9950febe976a0f2881' - 'ac2351bc918b101bb9249ce8940722be' - '715926469d05eecd345c052e6248ca32' - 'b3db9d4fd902b62ac9e38589677e2d16') diff --git a/abs/core/fbsplash/fbsplash-basic.sh b/abs/core/fbsplash/fbsplash-basic.sh index 2834060..4403b86 100644 --- a/abs/core/fbsplash/fbsplash-basic.sh +++ b/abs/core/fbsplash/fbsplash-basic.sh @@ -12,18 +12,20 @@ [[ $PREVLEVEL && $RUNLEVEL ]] || return 0 -# Do nothing if improved scripts are installed -[ -r /etc/rc.d/functions.d/fbsplash-extras.sh ] && return +# Do nothing if advanced script is 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" + # splash-functions.sh will run splash_setup which needs /proc + # code line copied from /etc/rc.sysinit + /bin/mountpoint -q /proc || /bin/mount -n -t proc proc /proc -o nosuid,noexec,nodev + export SPLASH_PUSH_MESSAGES SPLASH_VERBOSE_ON_ERRORS . /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 + SPLASH_STEPS=3 # sysinit steps + SPLASH_STEPS_DONE=0 esac # Verbose mode is handled by fbcondecor kernel patch and daemon script @@ -38,8 +40,8 @@ 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 + if /bin/mountpoint -q /run/.splash-cache; then + /bin/mount --move /run/.splash-cache $spl_cachedir || return splash_comm_send set message "$SPLASH_BOOT_MESSAGE" # Mount a tmpfs else @@ -59,7 +61,7 @@ case $0 in /etc/rc.sysinit ) splash_progress } splash_sysinit_postfsck() { # fsck failure emergency exit - [ ${fsckret} -gt 1 -a ${fsckret} -ne 32 ] && chvt 1 + (( fsckret > 1 && fsckret != 32 )) && chvt 1 } splash_sysinit_end() { splash_progress @@ -108,19 +110,13 @@ case $0 in /etc/rc.sysinit ) splash_shutdown_start() { splash_begin } - ## http://bugs.archlinux.org/task/10536 ## FIX ME ## - splash_shutdown_prekillall() { /bin/sleep .1; } + splash_shutdown_prekillall() { + splash_comm_send progress $(( 65535*1/3 )); splash_comm_send paint + [[ -r $spl_pidfile ]] && add_omit_pids $( <$spl_pidfile ) + } 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_comm_send progress $(( 65535*2/3 )); splash_comm_send paint } - ## splash_shutdown_poweroff() { SPLASH_EXIT_TYPE=staysilent splash_stop } @@ -131,7 +127,7 @@ splash_progress_init() { case $daemon in $SPLASH_XSERVICE | @$SPLASH_XSERVICE ) break ;; \!* |@* ) continue esac - SPLASH_STEPS+=1 + (( SPLASH_STEPS++ )) done } @@ -141,7 +137,6 @@ splash_progress() { } # 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" diff --git a/abs/core/fbsplash/fbsplash.git.patch b/abs/core/fbsplash/fbsplash.git.patch deleted file mode 100644 index 15f041c..0000000 --- a/abs/core/fbsplash/fbsplash.git.patch +++ /dev/null @@ -1,166 +0,0 @@ -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/fbsplash/fbsplash.initcpio_hook b/abs/core/fbsplash/fbsplash.initcpio_hook index 62048df..02617a2 100644 --- a/abs/core/fbsplash/fbsplash.initcpio_hook +++ b/abs/core/fbsplash/fbsplash.initcpio_hook @@ -1,99 +1,49 @@ 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 + # avoid exporting configuration + ( + SPLASH_INIT_MESSAGE="Initializing the kernel" + # Get configuration and functions (faking sysinit for config file hacks) + PREVLEVEL=N; RUNLEVEL=S + . /sbin/splash-functions.sh + unset PREVLEVEL RUNLEVEL - if ! [ "$console" = tty1 -o "$SPLASH_SANITY" = insane ]; then - err "Fbsplash requires console=tty1 in kernel line!" - return 1 - fi + [ "${SPLASH_MODE_REQ}" = "silent" ] || exit 0 - # 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 + # Start the daemon here if possible + # to show animations early and gain some bootup speed + if [ -x "$spl_daemon" ]; then 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 + set -e + # Mount the cache within /run to get it moved to the new root + mkdir /run/.splash-cache + ( spl_cachedir=/run/.splash-cache; splash_cache_prep ) + # Take over any existing cache content + mkdir -p $spl_cachedir + parent=$( dirname $spl_cachedir ) + mv $spl_cachedir $parent/.splash-cache + cp -a $parent/.splash-cache /run/ + # Symlink for starting the daemon + ln -s /run/.splash-cache $spl_cachedir + # 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 + cd /run/.splash-cache + set +e + SPLASH_BOOT_MESSAGE="${SPLASH_INIT_MESSAGE}" + splash_start && sleep .1 # allow the daemon to open the event dev + exit 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 ] - } + # Start the fbcondecor helper if not already done by fbcondecor kernel if ! fbcondecor_supported; then BOOT_MSG="${SPLASH_INIT_MESSAGE}" \ /sbin/fbcondecor_helper 2 init 0 0 $SPLASH_THEME diff --git a/abs/core/fbsplash/fbsplash.initcpio_install b/abs/core/fbsplash/fbsplash.initcpio_install index 4485f91..841405b 100644 --- a/abs/core/fbsplash/fbsplash.initcpio_install +++ b/abs/core/fbsplash/fbsplash.initcpio_install @@ -1,104 +1,95 @@ -install() { - ( - . /etc/conf.d/splash +build() { + # Add config file, splash-functions and the helper + add_file /etc/conf.d/splash + add_file /sbin/splash-functions.sh + add_binary /sbin/fbcondecor_helper - if /bin/mountpoint -q /lib/splash/cache; then - /bin/umount /lib/splash/cache - fi - - # Add the helper - add_binary /sbin/fbcondecor_helper - - # Add the daemon for early start - if [[ $SPLASH_DAEMON = early ]]; then - add_binary /sbin/fbsplashd.static - fi + # Get in configuration, parameters and functions + . /etc/conf.d/splash + . /sbin/splash-functions.sh - # 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 + # Unmount any stale cache tmpfs + splash_cache_cleanup - # 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 - } + SPLASH_PROFILE=off - # Check if cfg file name or path - _match_cfg() { - [[ "$1" =~ (^|/)[0-9]+x[0-9]+\.cfg$ ]] - } + if [[ $SPLASH_DAEMON = early ]]; then + # Add stuff needed to run splash_start function (except optional evdev module) + add_dir $spl_tmpdir + add_binary $spl_daemon + if [[ -e /etc/rc.d/functions.d/fbsplash-extras.sh ]]; then + . /etc/rc.d/functions.d/fbsplash-extras.sh + # Add files from a prepared cache (faking sysinit) + splash_cache_prep_initcpio && add_full_dir $spl_cachedir + fi + fi - # 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 - } + # List file paths contained in given Fbsplash theme cfg files + # (Only file paths containing at least one slash will be found by this.) + fbsplash_list_paths() { + (( $# )) || return 0 + /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 + } - # Add global non-cfg files - _add_non_cfg_files /etc/splash + # Check if arg is a theme cfg file path + fbsplash_is_cfg() { + [[ $1 =~ ^/etc/splash/[^/]+/[0-9]+x[0-9]+\.cfg$ ]] + } - # 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 + # Add all files referenced by path in given theme cfg files + # args: <theme-root-dir> <cfg-file>... + fbsplash_add_files_from_cfgs() { + local file theme_dir=$1; shift + while read file; do + if [[ $file == /* ]]; then + add_file $file + else # Path may be relative to /etc/splash or theme-dir + local found=0 + for file in /etc/splash/$file "$theme_dir"/$file; do + [[ -f $file ]] && { add_file $file; found=1; } 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 + (( found )) || error "Theme '${theme_dir##*/}': File not found: '$file'" 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 - ) + done < <( fbsplash_list_paths "$@" ) + } + + # Add common files (may be referenced in cfg by plain file name) + local file + for file in /etc/splash/*; do + [[ -f $file ]] && add_file "$file" + done + + # Add themes + local file theme + for theme in $SPLASH_THEMES; do + if [[ -d /etc/splash/$theme && $theme != */* ]]; then + add_full_dir /etc/splash/$theme + local files=() + for file in /etc/splash/$theme/*.cfg; do + [[ -f $file ]] && fbsplash_is_cfg "$file" && files+=( $file ) + done + fbsplash_add_files_from_cfgs /etc/splash/$theme "${files[@]}" + elif [[ -f /etc/splash/$theme ]] && fbsplash_is_cfg /etc/splash/$theme; then + file=/etc/splash/$theme; theme=${theme%/*} + add_file $file + fbsplash_add_files_from_cfgs /etc/splash/$theme $file + # Add all non-cfg files from theme dir (may be referenced by plain file name) + for file in /etc/splash/$theme/*; do + [[ -f $file ]] && ! fbsplash_is_cfg "$file" && add_file "$file" + done + else + error "Theme invalid or not found: '$theme'" + fi + done SCRIPT="fbsplash" } @@ -106,8 +97,7 @@ install() { help() { 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. + Fbsplash daemon as specified in /etc/conf.d/splash. HELPEOF } diff --git a/abs/core/fbsplash/splash.conf b/abs/core/fbsplash/splash.conf index 5360792..8eb3a44 100644 --- a/abs/core/fbsplash/splash.conf +++ b/abs/core/fbsplash/splash.conf @@ -2,15 +2,21 @@ # /etc/conf.d/splash # +#### WARNING! +## This file is also sourced in the initcpio hook. +## No BASH-code (like arrays) is allowed here! + #### 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 - linhes/1024x768.cfg - linhes/800x600.cfg -) +SPLASH_THEMES=" + arch-black + arch-banner-icons/1024x768.cfg + arch-banner-icons/1280x800.cfg + arch-banner-noicons/1024x768.cfg + arch-banner-noicons/1280x800.cfg +" ## Override the initial silent splash screen status message defaults. ## Note: '$progress' will be replaced by Fbsplash itself. @@ -23,16 +29,21 @@ 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, +## Include and use the Fbsplash daemon (1.5 MiB) in the initcpio ## instead of the small helper only. -## Note: Themes with 'scripts/rc_init-pre' like 'arch-banner-icons' are not supported. +## Usefull to show animations early. +## Note: Themes with 'scripts/rc_init-pre' like 'arch-banner-icons' are +## supported now if fbsplash-extras>=2.0.10 is installed, but there +## might still be some sophisticated ones which break when using this. SPLASH_DAEMON="early" ## Make the splash daemon use fade effects. ## Note: The initcpio helper does only use the kernel parameter! +# Just use fadein on bootup and fadeout on shutdown/reboot +case $PREVLEVEL in N ) SPLASH_EFFECTS="fadein" ; esac +case $RUNLEVEL in [06] ) SPLASH_EFFECTS="fadeout"; esac +# Uncomment this line to allways use both # 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. @@ -52,7 +63,7 @@ SPLASH_AUTOVERBOSE=0 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. +## Set this to avoid virtual terminal change struggle between X and Fbsplash. SPLASH_XSERVICE="gdm" #SPLASH_XSERVICE="kdm" #SPLASH_XSERVICE="xdm" diff --git a/abs/core/fbsplash/splash_start_initcpio.patch b/abs/core/fbsplash/splash_start_initcpio.patch new file mode 100644 index 0000000..ff4ae96 --- /dev/null +++ b/abs/core/fbsplash/splash_start_initcpio.patch @@ -0,0 +1,22 @@ +diff -ru src.orig//splashutils-1.5.4.3/scripts/splash-functions.sh.in src//splashutils-1.5.4.3/scripts/splash-functions.sh.in +--- src.orig//splashutils-1.5.4.3/scripts/splash-functions.sh.in 2008-11-13 20:54:19.000000000 +0100 ++++ src//splashutils-1.5.4.3/scripts/splash-functions.sh.in 2011-03-03 09:45:29.258901793 +0100 +@@ -250,6 +250,9 @@ + # Start the splash daemon + BOOT_MSG="$(splash_get_boot_message)" ${spl_daemon} --theme="${SPLASH_THEME}" --pidfile="${spl_pidfile}" --type=${ttype} ${options} + ++ # First let the daemon open the event dev before it's gone away in case this is run in the initcpio ++ splash_set_event_dev ++ + # Set the silent TTY and boot message + splash_comm_send "set tty silent ${SPLASH_TTY}" + +@@ -261,8 +264,6 @@ + + splash_comm_send "set autoverbose ${SPLASH_AUTOVERBOSE}" + +- splash_set_event_dev +- + return 0 + } + |