DESCRIPTION = "Scripts to support the first run wizard on the OpenPandora."
LICENSE = "GPLV2"
-RDEPENDS = "pandora-auto-startx zenity dbus"
-
-# Based on the scripts by JohnX/Mer Project - http://wiki.maemo.org/Mer/
+RDEPENDS = "hsetroot zenity dbus"
COMPATIBLE_MACHINE = "omap3-pandora"
-PR = "r1"
+PR = "r2"
SRC_URI = " \
- file://first-boot-wizard.sh \
+ file://first-run-wizard.sh \
+ file://rc.firstrun \
+ file://op_default.png \
"
+inherit update-rc.d
+
+INITSCRIPT_NAME = "oprun-init"
+INITSCRIPT_PARAMS = "start 29 2 3 4 5 . stop 29 2 3 4 5 ."
+
do_install() {
- install -d ${D}${sbindir}
- cp -pP ${WORKDIR}/first-boot-wizard.sh ${D}${sbindir}/first-boot-wizard.sh
+ install -d ${D}${prefix}/pandora/scripts/
+ install -m 0755 ${WORKDIR}/first-run-wizard.sh ${D}${prefix}/pandora/scripts/
+
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/rc.firstrun ${D}${sysconfdir}/init.d/oprun-init
+
+ install -d ${D}${datadir}/backgrounds/
+ install -m 0644 ${WORKDIR}/op_default.png ${D}${datadir}/backgrounds/
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} += "/lib/firmware"
+FILES_${PN} += "${prefix} ${sysconfdir}"
--- /dev/null
+#!/bin/sh
+
+# Based on the scripts by JohnX/Mer Project - http://wiki.maemo.org/Mer/
+# Reworked for the OpenPandora - John Willis/Michael Mrozek
+
+# You can start the wizard from the shell using 'xinit ./first-boot-init.sh'
+# Maybe we run it for the first time from rc5.d and delete the symlink at the end of the script?
+
+export LANG=en_GB.UTF-8
+export GTK2_RC_FILES=/usr/share/themes/Xfce/gtk-2.0/gtkrc
+
+# We will load up a background image here as soon as we have a tool for that :)
+WALLPAPER=`/usr/share/backgrounds/op_default.png`
+hsetroot -center $WALLPAPER
+
+# Greet the user
+zenity --info --title="Pandoras Box has been opened." --text "Welcome. This Wizard will help you setting up your Pandora before your first use."
+
+# Should we really enable SWAP?
+#swap_part=$(sfdisk -l /dev/mmcblk? | grep swap | cut -d" " -f1)
+#if [ x$swap_part != x ] ; then
+# use_swap=$(zenity --title="Enable swap?" --text "Swap partition found. Would you like to use it?" --list --radiolist --column " " --column "Answer" TRUE "Use swap on $swap_part" FALSE "Do not use swap")
+# if [ "$use_swap" = "Use swap on $swap_part" ] ; then
+# swapon $swap_part
+# echo "$swap_part none swap sw 0 0" >> /etc/fstab
+# fi
+#fi
+
+# First, setup the full name and username.
+
+while ! name=$(zenity --title="Enter your name" --entry --text "Please enter your full name.") || [ "x$name" = "x" ] ; do
+ zenity --title="Error" --error --text="Please try again."
+done
+
+username_guess=$(echo "$name" | cut -d" " -f1 | tr A-Z a-z)
+
+while ! username=$(zenity --title="Enter your username" --entry --text "Please choose a short username.
+It should be all lowercase and
+contain only letters and numbers." --entry-text "$username_guess") || [ "x$username" = "x" ] ; do
+ zenity --title="Error" --error --text="Please try again."
+done
+
+# Note: Group wheel doesn't exist in the current image! Should be created for easy sudo!
+
+while ! useradd -c "$name,,," -G adm,audio,video,netdev,wheel,plugdev "$username" ; do
+ username=$(zenity --title="Please check username" --entry --text "Please be sure that your
+username consists of only
+letters and numbers." --entry-text "$username")
+done
+
+# Password setup.
+
+password=""
+while [ x$password = x ] ; do
+ password1=$(zenity --title=Password --entry --text="Choose a new password." --hide-text)
+ password2=$(zenity --title=Confirm --entry --text="Confirm your new password." --hide-text)
+ if [ $password1 != $password2 ] ; then
+ zenity --title="Error" --error --text="Passwords don't match.
+Please try again."
+ else if [ x$password1 = x ] ; then
+ zenity --title="Error" --error --text="Password can't be blank!
+Please try again."
+ else
+ password=$password1
+ fi
+ fi
+done
+
+# Setting the password doesn't work yet (permission issues)
+
+passwd "$username" <<EOF
+$password
+$password
+EOF
+
+
+# Name our little baby
+
+while ! hostname=$(zenity --title="Name your Pandora" --entry --text "Please choose a name for
+your Pandora. It should only contain
+letters, numbers and dashes." --entry-text "$username-pandora") || [ "x$hostname" = "x" ]; do
+ zenity --title="Error" --error --text="Please try again."
+done
+
+echo $hostname > /etc/hostname
+echo "127.0.0.1 localhost.localdomain localhost $hostname" > /etc/hosts
+#cat /usr/share/first-boot-wizard/hosts-template >> /etc/hosts
+hostname -F /etc/hostname
+
+
+# Set the correct user for Autologin and enable / disable it.
+
+if zenity --question --title="Autologin" --text="Do you want to automatically login on startup?\n\nSecurity warning: This skips the password check on startup" --ok-label="Yes, enable Autologin" --cancel-label="Do not enable Autologin"; then
+ # echo "PREFERED_USER=$username" > /etc/default/autologin
+ sed -i "s/.*default_user.*/default_user $username/g" /etc/slim.conf
+ sed -i 's/.*auto_login.*/auto_login yes/g' /etc/slim.conf
+ else
+ sed -i 's/.*auto_login.*/auto_login no/g' /etc/slim.conf
+fi
+
+# I don't know yet how to setup which GUI will run as default. At the moment, it just creates a small file and puts XFCE or cpasjuste into it :)
+
+if zenity --question --title="Default GUI" --text="Now you can choose whether you want to boot into a full desktop or a gaming console-like launcher as default.\n\nYou can always change that setting later." --ok-label="Full Desktop (XFCE)" --cancel-label="Gaming
+console-like Launcher"; then
+ echo XFCE > /etc/bootup.cfg
+ else
+ echo cpasjuste > /etc/bootup.cfg
+fi
+
+zenity --info --title="Finished" --text "This concludes the First Boot Wizard.\nThanks for buying the Pandora. Enjoy the device!"
+
--- /dev/null
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: opruninit
+# Required-Start: #adjust
+# Required-Stop: #adjust
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+DESC="OpenPandora First Run Deamon"
+NAME="opruninit"
+
+PID=`pidof -o %PPID -x first-run-wizard.sh`
+OPRUNINIT='xinit /usr/pandora/first-run-wizard.sh'
+
+d_stop() {
+ if [ $PID ]
+ then
+ kill $PID
+ else
+ echo "$DESC: $NAME not running."
+ fi
+}
+
+d_start() {
+ if [ $PID ]
+ then
+ echo "$DESC: $NAME already running."
+ else
+ $OPRUNINIT -d 3
+ fi
+}
+
+d_reload() {
+ if [ $PID ]
+ then
+ kill -HUP $PID
+ else
+ echo "$DESC: $NAME not running."
+ fi
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: $NAME"
+ d_start
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: $NAME"
+ d_stop
+ echo "."
+ ;;
+ reload)
+ echo -n "Reloading $DESC: $NAME"
+ d_reload
+ echo "."
+ ;;
+ restart|force-reload)
+ echo -n "Restarting $DESC: $NAME"
+ d_stop
+ sleep 1
+ d_start
+ echo "."
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0