From b37e0362d7abf929aa3494839f0000311a280d1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= <jeremy@asynk.ch>
Date: Tue, 14 Jun 2011 10:58:05 +0200
Subject: add easy_e17.sh

---
 easy_e17.sh | 1411 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1411 insertions(+)
 create mode 100644 easy_e17.sh

diff --git a/easy_e17.sh b/easy_e17.sh
new file mode 100644
index 0000000..7c6ecd4
--- /dev/null
+++ b/easy_e17.sh
@@ -0,0 +1,1411 @@
+#!/usr/bin/env bash
+
+#############################################################################
+# This script is a result of the ideas from the people of different e       #
+# channels at irc.freenode.net                                              #
+# It will checkout the repository and compile e17.                          #
+#                                                                           #
+# License: BSD licence                                                      #
+# Get the latest version at http://omicron.homeip.net/projects/#easy_e17.sh #
+# Coded by Brian 'morlenxus' Miculcy (morlenxus@gmx.net)                    #
+#                                                                           #
+last_changes="2010-10-12"                                                   #
+version="1.4.0"                                                             #
+#############################################################################
+
+
+# Internal variables, run easy_e17.sh --help to get a cleaner way!
+tmp_path="/tmp/easy_e17"
+logs_path="$tmp_path/install_logs"
+status_path="$tmp_path/status"
+src_cache_path="$tmp_path/src_cache"
+src_path="$HOME/e17_src"
+
+src_url="http://svn.enlightenment.org/svn/e/trunk"
+src_rev="HEAD"
+conf_files="/etc/easy_e17.conf $HOME/.easy_e17.conf $PWD/.easy_e17.conf"
+
+efl_basic="eina eet evas ecore efreet eio eeze e_dbus embryo edje"
+efl_extra="imlib2 emotion ethumb libeweather elementary enlil libast python-evas python-ecore python-e_dbus python-edje python-ethumb python-emotion python-elementary shellementary"
+bin_basic="exchange e"
+bin_extra="e_phys editje elicit elsa emote empower enjoy enki ephoto Eterm expedite exquisite eyelight image-viewer rage"
+e_modules_bin="emprint exalt"
+e_modules_extra="alarm calendar cpu deskshow diskio drawer efm_nav efm_path efm_pathbar everything-mpris everything-pidgin everything-tracker everything-wallpaper everything-websearch eweather exalt-client exebuf execwatch itask itask-ng flame forecasts iiirk language mail mem moon mpdule net news notification eooorg penguins photo places quickaccess rain screenshot skel slideshow snow taskbar tclock tiling uptime weather winlist-ng winselector wlan"
+
+packages_basic="$efl_basic $bin_basic"
+packages_half="$efl_basic $bin_basic $e_modules_bin $e_modules_extra"
+packages_full="$efl_basic $bin_basic $e_modules_bin $e_modules_extra $efl_extra $bin_extra"
+packages=$packages_basic	# default
+
+cmd_src_test="svn info"
+cmd_src_list="svn list -r"
+cmd_src_checkout="svn checkout -r "
+cmd_src_update_conflicts_solve="svn update --accept theirs-full -r"
+cmd_src_update_conflicts_ask="svn update -r"
+src_mode="packages"
+ignore_dirs="devs DOCS E16 EXAMPLES TEST THEMES web"
+autogen_args=""		# evas:--enable-gl-x11
+linux_distri=""		# if your distribution is wrongly detected, define it here
+nice_level=0		# nice level (19 == low, -20 == high)
+os=$(uname)			# operating system
+threads=2			# make -j <threads>
+
+animation="star"
+online_source="http://omicron.homeip.net/projects/easy_e17/easy_e17.sh"	# URL of latest stable release
+
+
+#############################################################################
+function logo ()
+{
+	clear
+	echo -e "\033[1m-------------------------------\033[7m Easy_e17.sh $version \033[0m\033[1m------------------------------\033[0m"
+	echo -e "\033[1m  Developers:\033[0m      Brian 'morlenxus' Miculcy"
+	echo -e "                   David 'onefang' Seikel"
+	echo -e "\033[1m  Contributors:\033[0m    Tim 'amon' Zebulla"
+	echo -e "                   Daniel G. '_ke' Siegel"
+	echo -e "                   Stefan 'slax' Langner"
+	echo -e "                   Massimiliano 'Massi' Calamelli"
+	echo -e "                   Thomas 'thomasg' Gstaedtner"
+	echo -e "                   Roberto 'rex' Sigalotti"
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo -e "\033[1m  Updates:\033[0m         http://omicron.homeip.net/projects/#easy_e17.sh"
+	echo -e "\033[1m  Support:\033[0m         #e.de (irc.freenode.net)"
+	echo -e "                   morlenxus@gmx.net"
+	echo -e "\033[1m  Patches:\033[0m         Generally accepted, please contact me!"
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo 
+	echo
+	echo -e "\033[1m-----------------------------\033[7m Current Configuration \033[0m\033[1m----------------------------\033[0m"
+	echo "  Install path:    $install_path"
+	echo "  Source path:     $src_path"
+	echo "  Source url:      $src_url (Revision: $src_rev)"
+	echo "  Source mode:     $src_mode"
+	echo "  Logs path:       $logs_path"
+	if [ "$linux_distri" ]; then
+		echo "  OS:              $os (Distribution: $linux_distri)"
+	else
+		echo "  OS:              $os"
+	fi
+	echo
+	echo "  Packages:        $packages"
+	if [ "$skip" ]; then echo "  Skipping:        $skip"; fi
+	if [ "$only" ]; then echo "  Only:            $only"; fi
+	echo
+	if [ -z "$action" ]; then action="MISSING!"; fi
+	echo "  Script action:   $action"
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo
+	
+	if [ "$action" == "script" ]; then return; fi	
+
+	if [ $1 == 0 ]; then
+		if [ "$2" ]; then
+			echo -e "\033[1m-------------------------------\033[7m Bad script argument \033[0m\033[1m----------------------------\033[0m"
+			echo -e "  \033[1m$2\033[0m"
+		fi
+	else
+		echo -e "\033[1m--------------------------------\033[7m Build phase $1/3 \033[0m\033[1m-------------------------------\033[0m"
+	fi
+
+	if [ -z "$2" ]; then
+		case $1 in
+			0)
+				if [ "$os" == "not supported" ]; then
+					echo -e "\033[1m-------------------------------\033[7m Not supported OS \033[0m\033[1m------------------------------\033[0m"
+				  	echo "  Your operating system '$(uname)' is not supported by this script."
+					echo "  If possible please provide a patch."
+				else if [ -z "$fullhelp" ]; then
+					echo -e "\033[1m-----------------\033[7m Short help 'easy_e17.sh <ACTION> <OPTIONS...>' \033[0m\033[1m---------------\033[0m"
+					echo "  -i, --install            = ACTION: install efl+e17"
+					echo "  -u, --update             = ACTION: update your installed software"
+					echo "      --packagelist=<list> = software package list:"
+					echo "                             - basic: only e17 (default)"
+					echo "                             - half:  only e17 and extra modules"
+					echo "                             - full:  simply everything"
+					echo "      --help               = full help"
+				else
+					echo -e "\033[1m-----------------\033[7m Full help 'easy_e17.sh <ACTION> <OPTIONS...>' \033[0m\033[1m----------------\033[0m"
+					echo -e "  \033[1mACTION:\033[0m"
+					echo "  -i, --install                       = ACTION: install efl+e17"
+					echo "  -u, --update                        = ACTION: update installed software"
+					echo "      --only=<name1>,<name2>,...      = ACTION: install ONLY named libs/apps"
+					echo "      --packagelist=<list>            = software package list:"
+					echo "                                        - basic: only e17 (default)"
+					echo "                                        - half:  only e17 and extra modules"
+					echo "                                        - full:  simply everything"
+					echo
+					echo "      --srcupdate                     = update only the sources"
+					echo "  -v, --check-script-version          = check for a newer release of easy_e17"
+					echo "      --help                          = this help"
+					echo
+					echo -e "  \033[1mOPTIONS:\033[0m"
+					echo "      --conf=<file>                   = use an alternate configuration file"
+					echo "      --instpath=<path>               = change the default install path"
+					echo "      --srcpath=<path>                = change the default source path"
+					echo "      --srcurl=<url>                  = change the default source url"
+					echo "      --srcmode=<packages/full>       = checkout only required package source"
+					echo "                                        or simply everthing (huge)"
+					echo "      --srcrev=<revision>             = set the default source revision"
+					echo "      --asuser                        = do everything as the user, not as root"
+					echo "      --no-sudopwd                    = sudo don't need a password..."
+					echo "  -c, --clean                         = clean the sources before building"
+					echo "                                        (more --cleans means more cleaning, up"
+					echo "                                        to a maximum of three, which will"
+					echo "                                        uninstall e17)"
+					echo "  -s, --skip-srcupdate                = don't update sources"
+					echo "  -a, --ask-on-src-conflicts          = ask what to do with a conflicting"
+					echo "                                        source file"
+					echo "      --skip=<name1>,<name2>,...      = this will skip installing the named"
+					echo "                                        libs/apps"
+					echo "  -d, --docs                          = generate programmers documentation"
+					echo "      --postscript=<name>             = full path to a script to run as root"
+					echo "                                        after installation"
+					echo "  -e, --skip-errors                   = continue compiling even if there is"
+					echo "                                        an error"
+					echo "  -w, --wait                          = don't exit the script after finishing,"
+					echo "                                        this allows 'xterm -e ./easy_e17.sh -i'"
+					echo "                                        without closing the xterm"
+					echo "      --anim=<animation>              = build animation:"
+					echo "                                        - star: rotating star (default)"
+					echo "                                        - weeh: waving man"
+					echo "  -n  --disable-notification          = disable the osd notification"
+					echo "  -k, --keep                          = don't delete the temporary dir"
+					echo
+					echo "  -l, --low                           = use lowest nice level (19, slowest,"
+					echo "                                        takes more time to compile, select"
+					echo "                                        this if you need to work on the pc"
+					echo "                                        while compiling)"
+					echo "      --normal                        = default nice level ($nice_level),"
+					echo "                                        will be automatically used"
+					echo "  -h, --high                          = use highest nice level (-20, fastest,"
+					echo "                                        slows down the pc)"
+					echo "      --cache                         = Use a common configure cache and"
+					echo "                                        ccache if available"
+					echo "      --threads=<int>                 = 'make' can use threads, recommended on"
+					echo "                                        smp systems (default: 2 threads)"
+					echo "      --autogen_args=<n1>:<o1>+<o2>,. = pass some options to autogen:"
+					echo "                                        <name1>:<opt1>+<opt2>,<name2>:<opt1>+..."
+					echo "      --cflags=<flag1>,<flag2>,...    = pass cflags to the gcc"
+					echo "      --ldflags=<flag1>,<flag2>,...   = pass ldflags to the gcc"
+					echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+					echo
+					echo -e "\033[1m----------------------\033[7m Configurationfile '~/.easy_e17.conf' \033[0m\033[1m--------------------\033[0m"
+					echo "  Just create this file and save your favourite arguments."
+					echo "  Example: If you use a diffent source path, add this line:"
+					echo "           --srcpath=$HOME/enlightenment/e17_src"
+				fi fi
+				;;
+			1)
+				echo "- running some basic system checks"
+				echo "- source checkout/update"
+				;;
+			2)
+				echo "- lib-compilation and installation"
+				echo "- apps-compilation and installation"
+				;;
+			3)
+				echo "- cleaning"
+				echo "- install notes"
+				;;
+		esac
+	fi
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo
+	echo
+}
+
+function define_os_vars ()
+{
+	case $os in
+		Darwin)
+			install_path="/opt/e17"
+			# ldconfig="/sbin/ldconfig" # FIXME: Someone with Darwin seeing this should check availability!
+			make="make"
+			export ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I /opt/local/share/aclocal"
+			export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/opt/local/lib/pkgconfig"
+			export CPPFLAGS="$CPPFLAGS -I/opt/local/include"
+			export LDFLAGS="$LDFLAGS -Wl,-L/opt/local/lib"
+			;;
+		FreeBSD)
+			install_path="/usr/local/e17"
+			ldconfig="/sbin/ldconfig"
+			make="gmake"
+			export ACLOCAL_FLAGS=" -I /usr/local/share/aclocal"
+			export CPPFLAGS="$CPPFLAGS -I/usr/local/include -I/usr/X11R6/include -I$install_path/include"
+			export CFLAGS="$CFLAGS -lintl -liconv -L/usr/local/lib -L/usr/X11R6/lib -L$install_path/lib -I/usr/local/include -I/usr/X11R6/include -I$install_path/include" # FIXME: Someone with FreeBSD seeing this should check if includes are needed here!
+			export LDFLAGS="$LDFLAGS -lexecinfo"
+			;;
+		NetBSD)
+			install_path="/usr/pkg/e17"
+			ldconfig="config"
+			make="make"
+			export CFLAGS+="$CFLAGS -I/usr/pkg/include -I/usr/X11R7/include"
+			export CPPFLAGS+="$CPPFLAGS -I/usr/pkg/include -I/usr/X11R7/include"
+			export LDFLAGS+="$LDFLAGS -L/usr/pkg/include -L/usr/pkg/lib -L/usr/X11R7/lib"
+			;;
+
+		Linux)
+			install_path="/opt/e17"
+			ldconfig="/sbin/ldconfig"
+			make="make"
+
+			if [ -z "$linux_distri" ]; then
+				if [ -e "/etc/debian_version" ]; then linux_distri="debian"; fi
+				if [ -e "/etc/gentoo-release" ]; then linux_distri="gentoo"; fi
+				if [ -e "/etc/redhat-release" ]; then linux_distri="redhat"; fi
+				if [ -e "/etc/SuSE-release" ];   then linux_distri="suse";	 fi
+			fi
+			;;
+		SunOS)
+			install_path="/opt/e17"
+			ldconfig="$(which crle) -u"	# there is no command like ldconfig on solaris! "crle" does nearly the same.
+			make="make"
+			;;
+		*)
+			os="not supported"
+			logo 0
+			set_title
+			exit 0
+			;;
+	esac
+}
+
+function find_src_path ()
+{
+	package=$1
+	subdir=$2
+	depth=$3
+	cachefile=$src_cache_path/cache_`echo "$subdir" | tr '/' '_'`
+
+	if [ $depth -gt 3 ]; then return; fi
+
+
+	if [ ! -e "$cachefile" ]; then
+		$cmd_src_list $src_rev "$src_url/$subdir" | egrep "/$" >$cachefile
+	fi
+	contents=`cat $cachefile`
+
+	for dir in $contents; do
+		if [ "$dir" == "$package/" ]; then
+			echo "$subdir/$dir"
+			return
+		fi
+	done
+	for dir in $contents; do
+		found=0
+		for pkg in $packages; do
+			if [ "$dir" == "$pkg/" ]; then found=1; fi
+		done
+		if [ $found == 1 ]; then continue; fi
+		for idir in $ignore_dirs; do
+			if [ "$dir" == "$idir/" ]; then found=1; fi
+		done
+		if [ $found == 1 ]; then continue; fi
+
+		svn_path=`find_src_path $package "$subdir/$dir" $(($depth+1))`
+		if [ "$svn_path" ]; then
+			echo "$svn_path"
+			return
+		fi
+	done
+}
+
+function find_local_path ()
+{
+	name=$1
+	path=""
+
+	for dir in `find "$src_path" -maxdepth 3 -type d -name "$name" | awk -F "$src_path" '{print $2}'`; do
+		found=0
+		for idir in $ignore_dirs; do
+			topdir=`echo "$dir" | cut -d'/' -f1`
+			if [ "$topdir" == "$idir" ]; then found=1; fi
+		done
+		if [ $found == 1 ]; then continue; fi
+
+		if [ "${#dir}" -lt "${#path}" ] || [ -z "$path" ]; then
+			path=$dir
+		fi
+	done
+
+	if [ "$path" ]; then echo "$src_path/$path"; fi
+}
+
+function backoff_loop
+{
+	src_cmd=$1
+
+	backoff=30
+	attempt=1;
+
+	while [ 1 ]; do
+		$src_cmd | tee -a "$tmp_path/source_update.log"
+		if [ "${PIPESTATUS[0]}" -gt 0 ]; then
+			attempt=$(($attempt + 1))
+   	        set_title "Source update failed, trying again in $backoff seconds..."
+			for (( i = $backoff / 2; i > 0; i-- )) do
+				echo -n -e "\rFAILED! Next attempt $attempt in \033[1m$i\033[0m seconds"
+				sleep 1
+			done
+			echo -n -e "\r                                                            \r"
+		else
+			break
+		fi
+	done
+}
+
+function get_src ()
+{
+	cd "$src_path"
+	if [ "$src_mode" == "packages" ]; then
+		package=$1
+		src_path_pkg="$src_path$package"
+		mkdir -p "$src_path_pkg" 2>/dev/null
+
+		if [ "`$cmd_src_test $src_path_pkg &>/dev/null; echo $?`" == 0 ]; then
+			set_title "Updating sources in '$src_path_pkg' ..."
+			echo "- updating sources in '$src_path_pkg' ..."
+
+			if [ "$ask_on_src_conflicts" ]; then
+					backoff_loop "$cmd_src_update_conflicts_ask $src_rev $package"
+			else	backoff_loop "$cmd_src_update_conflicts_solve $src_rev $package"; fi
+		else
+			set_title "Checkout sources in '$src_path_pkg' ..."
+
+ 			echo "- searching for direct source url for '$package' ..."
+			path=`find_src_path $package '' 1`
+			if [ "$path" ]; then
+				src_url_pkg="$src_url/$path"
+
+				echo "- checkout sources in '$src_path_pkg' ..."
+				backoff_loop "$cmd_src_checkout $src_rev $src_url_pkg $src_path_pkg"
+			else
+				echo "- direct source url not found, package moved to OLD/?"
+			fi
+		fi
+	elif [ "$src_mode" == "full" ]; then
+		if [ "`$cmd_src_test &>/dev/null; echo $?`" == 0 ]; then
+			set_title "Updating sources in '$src_path' ..."
+			echo "- updating sources in '$src_path' ..."
+
+			if [ "$ask_on_src_conflicts" ]; then
+					backoff_loop "$cmd_src_update_conflicts_ask $src_rev"
+			else	backoff_loop "$cmd_src_update_conflicts_solve $src_rev"; fi
+		else
+			set_title "Checkout sources in '$src_path' ..."
+			echo "- checkout sources in '$src_path' ..."
+			backoff_loop "$cmd_src_checkout $src_rev $src_url $src_path"
+		fi
+	fi
+}
+
+function build_each ()
+{	for pkg in $packages; do compile $pkg; done
+}
+
+function run_command ()
+{
+	name=$1
+	path=$2
+	title=$3
+	log_title=$4
+	mode_needed=$5
+	cmd=$6
+
+	set_title "$name: $title ($pkg_pos/$pkg_total)"
+	echo -n "$log_title"
+	logfile_banner "$cmd" "$logs_path/$name.log"
+
+	if [ $mode_needed == "rootonly" ]; then
+		mode_needed=$mode
+	else
+		if [ $nice_level -ge 0 ]; then
+			mode_needed="user"
+		fi
+	fi
+	rm -f $status_path/$name.noerrors
+	case "$mode_needed" in
+		"sudo")
+			echo "$sudopwd" | sudo -S PKG_CONFIG_PATH="$PKG_CONFIG_PATH" PYTHONPATH="$PYTHONPATH" \
+					 		  nice -n $nice_level $cmd >> "$logs_path/$name.log" 2>&1 && touch $status_path/$name.noerrors &
+			;;
+		*)
+			nice -n $nice_level $cmd >> "$logs_path/$name.log" 2>&1 && touch $status_path/$name.noerrors &
+			;;
+	esac	
+
+	pid="$!"
+	rotate "$pid" "$name"
+}
+
+function write_appname ()
+{
+	name=$1
+	hidden=$2
+	cnt=${#name}
+	max=27
+
+	if [ "$hidden" ]; then
+		c=-3
+		while [ ! $c = $cnt ]; do
+			echo -n " "
+			c=$(($c+1))
+		done
+	else
+		echo -n "- $name "
+	fi
+
+	while [ ! $cnt = $max ]; do
+		echo -n "."
+		cnt=$(($cnt+1))
+	done
+	echo -n " "
+}
+
+function compile ()
+{
+	name=$1
+
+	write_appname "$name"
+	
+	for one in $skip; do
+		if [ "$name" == "$one" ]; then
+			echo "SKIPPED"
+			touch $status_path/$name.skipped
+			return
+		fi
+	done
+	if [ "$only" ] || [ "$action" == "update" ]; then
+		found=""
+		for one in $only; do
+			if [ "$name" == "$one" ]; then found=1; fi
+		done
+		if [ -z "$found" ]; then
+			echo "SKIPPED"
+			touch $status_path/$name.skipped
+			return
+		fi
+	fi
+
+	pkg_pos=$(($pkg_pos+1))
+
+	if [ -e "$status_path/$name.installed" ]; then
+		echo "previously installed"
+		return
+	fi
+	path=`find_local_path $name`
+	if [ ! -d "$path" ]; then
+		echo "SOURCEDIR NOT FOUND"
+		set_notification "critical" "Package '$name': sourcedir not found"
+		return
+	fi
+	cd "$path"
+
+	rm -f $status_path/$name.noerrors
+	rm -f "$logs_path/$name.log"
+
+	if [ $clean -ge 1 ]; then
+		if [ -e "Makefile" ]; then
+			if [ $clean -eq 1 ]; then
+				run_command "$name" "$path" "clean" "clean  : " "$mode" "$make -j $threads clean"
+				if [ ! -e "$status_path/$name.noerrors" ]; then
+					if [ "$skip_errors" ]; then
+						write_appname "$name" "hidden"	# clean might fail, that's ok
+					else
+						return
+					fi
+				fi
+			fi
+			if [ $clean -eq 2 ]; then
+				run_command "$name" "$path" "distclean" "distcln: " "$mode" "$make -j $threads clean distclean"
+				if [ ! -e "$status_path/$name.noerrors" ]; then
+					if [ "$skip_errors" ]; then
+						write_appname "$name" "hidden"	# distclean might fail, that's ok
+					else
+						return
+					fi
+				fi
+			fi
+			if [ $clean -ge 3 ]; then
+				run_command "$name" "$path" "uninstall" "uninst : " "rootonly" "$make -j $threads uninstall clean distclean"
+				if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+
+			    # It's no longer installed if we just uninstalled it.
+			    # Even if the uninstall failed, it's best to mark it as uninstalled so that a partial uninstall gets fixed later.
+			    rm -f $status_path/$name.installed
+			fi
+		fi
+	fi
+
+	# get autogen arguments
+	args=""
+	for app_arg in `echo $autogen_args | tr -s '\,' ' '`; do
+		app=`echo $app_arg | cut -d':' -f1`
+		if [ "$app" == "$name" ]; then
+			args="$args `echo $app_arg | cut -d':' -f2- | tr -s '+' ' '`"
+		fi
+	done
+	
+	if [ -e "autogen.sh" ]; then
+		run_command "$name" "$path" "autogen" "autogen: " "$mode"    "./autogen.sh --prefix=$install_path $accache $args"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "make"    "make:    " "$mode"    "$make -j $threads"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "install" "install: " "rootonly" "$make install"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+	elif [ -e "bootstrap" ]; then
+		run_command "$name" "$path" "bootstrap" "bootstr: " "$mode"    "./bootstrap"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "configure" "config:  " "$mode"    "./configure --prefix=$install_path $accache $args"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "make"      "make:    " "$mode"    "$make -j $threads"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "install"   "install: " "rootonly" "$make install"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+	elif [ -e "Makefile.PL" ]; then
+		run_command "$name" "$path" "perl"    "perl:    " "$mode"    "perl Makefile.PL prefix=$install_path $args"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "make"    "make:    " "$mode"    "$make -j $threads"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "install" "install: " "rootonly" "$make install"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+	elif [ -e "setup.py" ]; then
+		run_command "$name" "$path" "python"   "python:  " "$mode"    "python setup.py build build_ext --include-dirs=$PYTHONINCLUDE $args"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "install"  "install: " "rootonly" "python setup.py install --prefix=$install_path install_headers --install-dir=$PYTHONINCLUDE"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+	elif [ -e "Makefile" ]; then
+		make_extra="PREFIX=$install_path"
+		run_command "$name" "$path" "make"    "make:    " "$mode"    "$make $make_extra -j $threads"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		run_command "$name" "$path" "install" "install: " "rootonly" "$make $make_extra install"
+		if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+	else
+		echo "no build system"
+		set_notification "critical" "Package '$name': no build system"
+		touch $status_path/$name.nobuild
+		return
+	fi
+	
+	if [ "$gen_docs" ]; then
+		if [ -e "gendoc" ]; then
+			run_command "$name" "$path" "docs" "docs   : " "$mode" "sh gendoc"
+			if [ ! -e "$status_path/$name.noerrors" ] ; then return ; fi
+		fi
+	fi
+
+	# All done, mark it as installed OK.
+	touch $status_path/$name.installed
+	rm -f $status_path/$name.noerrors
+	echo "ok"
+	set_notification "normal" "Package '$name': build successful"
+}
+
+function rotate ()
+{
+	pid=$1
+	name=$2
+	animation_state=1
+	log_line=""
+	
+	case $animation in
+		"weeh") echo -n "     " ;;
+		*)		echo -n "   " ;;
+	esac
+	while [ "`ps -p $pid -o comm=`" ]; do
+		last_line=`tail -1 "$logs_path/$name.log"`
+		if [ ! "$log_line" = "$last_line" ]; then
+			case $animation in
+				"weeh")
+					# waving man
+					echo -e -n "\b\b\b\b\b"
+					case $animation_state in
+						1)
+							echo -n "["
+							echo -n -e "\033[1m"
+							echo -n "\\o\\"
+							echo -n -e "\033[0m"
+							echo -n "]"
+							animation_state=2
+							;;
+						2)
+							echo -n "["
+							echo -n -e "\033[1m|o|\033[0m"
+							echo -n "]"
+							animation_state=3
+							;;
+						3)
+							echo -n "["
+							echo -n -e "\033[1m/o/\033[0m"
+							echo -n "]"
+							animation_state=4
+							;;
+						4)
+							echo -n "["
+							echo -n -e "\033[1m|o|\033[0m"
+							echo -n "]"
+							animation_state=5
+							;;
+						5)
+							echo -n "["
+							echo -n -e "\033[1m"
+							echo -n "\\o/"
+							echo -n -e "\033[0m"
+							echo -n "]"
+							animation_state=6
+							;;
+						6)
+							echo -n "["
+							echo -n -e "\033[1m|o|\033[0m"
+							echo -n "]"
+							animation_state=1
+							;;
+
+					esac
+					;;
+				*)
+					# rotating star
+					echo -e -n "\b\b\b"
+					case $animation_state in
+						1)
+							echo -n "["
+							echo -n -e "\033[1m|\033[0m"
+							echo -n "]"
+							animation_state=2
+							;;
+						2)
+							echo -n "["
+							echo -n -e "\033[1m/\033[0m"
+							echo -n "]"
+							animation_state=3
+							;;
+						3)
+							echo -n "["
+							echo -n -e "\033[1m-\033[0m"
+							echo -n "]"
+							animation_state=4
+							;;
+						4)
+							echo -n "["
+							echo -n -e "\033[1m"
+							echo -n "\\"
+							echo -n -e "\033[0m"
+							echo -n "]"
+							animation_state=1
+							;;
+					esac
+					;;
+				esac
+			log_line=$last_line
+		fi
+		sleep 1
+	done
+
+	if [ -e "$status_path/$name.noerrors" ]; then
+		case $animation in
+			"weeh")	del_lines 14 ;;
+			*)		del_lines 12 ;;
+		esac
+	else
+		case $animation in
+			"weeh")	del_lines 5 ;;
+			*)		del_lines 3 ;;
+		esac
+
+		echo -e "\033[1mERROR!\033[0m"
+		set_notification "critical" "Package '$name': build failed"
+
+		if [ ! "$skip_errors" ]; then
+        	set_title "$name: ERROR"
+			echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+			echo
+			echo -e "\033[1m-----------------------------------\033[7m Last loglines \033[0m\033[1m------------------------------\033[0m"
+			echo -n -e "\033[1m"
+			tail -25 "$logs_path/$name.log"
+			echo -n -e "\033[0m"
+			echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+			echo
+			echo "-> Get more informations by checking the log file '$logs_path/$name.log'!"
+			echo
+			set_title
+			exit 2
+		fi
+	fi
+}
+
+function del_lines ()
+{
+	cnt=0
+	max=$1
+	while [ ! "$cnt" == "$max" ]; do
+		echo -n -e "\b \b"
+		cnt=$(($cnt+1))
+	done
+}
+
+function error ()
+{
+	echo -e "\n\n\033[1mERROR: $1\033[0m\n\n"
+    set_title "ERROR: $1"
+	set_notification "critical" "Error: $1"
+	exit 2
+}
+
+function set_title ()
+{
+	if [ "$1" ]; then message="- $1"; fi
+
+	if [ "$DISPLAY" ]; then
+	    case "$TERM" in
+			xterm*|rxvt*|Eterm|eterm|Aterm|aterm)
+	        	echo -ne "\033]0;Easy_e17.sh $message\007"
+				;;
+	    esac
+	fi	
+}
+
+function set_notification ()
+{
+	if [ -z "$DISPLAY" ] || [ "$notification_disabled" ]; then return; fi
+	notifier="$install_path/bin/e-notify-send"
+	urgency=$1
+	text=$2
+
+	if [ -e "$notifier" ]; then
+		$notifier -u "$urgency" -t 5000 -i "$install_path/share/enlightenment/data/images/enlightenment.png" \
+				  -n "easy_e17.sh" "easy_e17.sh" "$text" &>/dev/null
+	fi
+}
+
+function logfile_banner ()
+{
+	cmd=$1
+	logfile=$2
+	echo "-------------------------------------------------------------------------------" >> "$logfile"
+	echo "EASY_E17 $version CMD: $cmd"													   >> "$logfile"
+	echo "-------------------------------------------------------------------------------" >> "$logfile"
+}
+
+function cnt_pkgs () {
+    pkg_total=0
+    pkg_pos=0
+    
+    if [ -n "$only" ]; then
+		pkg_total=`echo "$only" | wc -w`
+    else
+		pkg_total=`echo "$packages" | wc -w`
+    fi
+} 
+
+function check_script_version ()
+{
+	echo "- local version .............. $version"
+	echo -n "- downloading script ......... " 
+	remote_version=`wget $online_source -q -U "easy_e17.sh/$version" -O - | grep -m 2 -o [0-9]\.[0-9]\.[0-9] | sort -n | head -n 1`
+	if [ "$remote_version" ]; then
+		echo "ok"
+		echo "- remote version ............. $remote_version"	
+		remote_ver=`echo "$remote_version" | tr -d '.'`
+		local_ver=`echo "$version" | tr -d '.'`
+		echo
+		echo -n "- update available ........... "
+		if [ $remote_ver -gt $local_ver ]; then
+				echo -e "\033[1mYES!\033[0m"
+		else	echo "no"; fi
+	else
+		echo -e "\033[1mERROR!\033[0m"
+	fi
+}
+
+
+# SCRIPT: 
+EASY_PWD=`pwd`
+set_title 
+define_os_vars
+accache=""
+easy_options=""
+command_options=$@
+clean=0
+
+# Check for alternate conf file first.
+test_options=$command_options
+for arg in $test_options; do
+	option=`echo "'$arg'" | cut -d'=' -f1 | tr -d "'"`
+	value=`echo "'$arg'" | cut -d'=' -f2- | tr -d "'"`
+	if [ "$value" == "$option" ]; then value=""; fi
+	if [ "$option" == "--conf" ]; then conf_files="$conf_files $value"; fi 
+done
+
+# remove duplicated configfile entries
+for filea in $conf_files; do
+	exists=0
+	for fileb in $tmp_conf_files; do
+		if [ "$filea" == "$fileb" ]; then
+			exists=1
+			break
+		fi
+	done
+
+	if [ $exists -eq 0 ]; then tmp_conf_files="$tmp_conf_files $filea"; fi
+done
+conf_files=$tmp_conf_files
+
+for file in $conf_files; do
+	if [ -e "$file" ]; then
+		# load configfile 
+		for option in `cat "$file"`; do
+			easy_options="$easy_options $option"
+		done
+	fi
+done
+
+# append arguments
+easy_options="$easy_options $command_options" 
+
+# check options
+for arg in $easy_options
+do
+	option=`echo "'$arg'" | cut -d'=' -f1 | tr -d "'"`
+	value=`echo "'$arg'" | cut -d'=' -f2- | tr -d "'"`
+	if [ "$value" == "$option" ]; then value=""; fi
+
+	# $action can't be set twice
+	if [ "$action" ]; then 
+		if [ "$option" == "-i" ] ||
+		   [ "$option" == "--install" ] ||
+		   [ "$option" == "-u" ] ||
+		   [ "$option" == "--update" ] ||
+		   [ "$option" == "--only" ] ||
+		   [ "$option" == "--srcupdate" ] ||
+		   [ "$option" == "-v" ] ||
+		   [ "$option" == "--check-script-version" ]; then
+			logo 0 "Only one action allowed! (currently using '--$action' and '$option')"
+			exit 1
+		fi
+	fi
+	
+	case "$option" in
+		-i|--install)				action="install" ;;
+		-u|--update)				action="update" ;;
+		--packagelist)
+			case $value in
+				"half")				packages="$packages_half" ;;
+				"full")				packages="$packages_full" ;;
+				*)					packages="$packages_basic" ;;
+			esac
+			;;
+		--conf)					;;
+		--only)
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			action="only"
+			only="`echo "$value" | tr -s '\,' '\ '` $only"
+			;;
+		-v|--check-script-version)	action="script" ;;
+		--srcupdate)
+			action="srcupdate"
+			skip="$packages"
+			;;
+		--instpath)					install_path="$value" ;;
+		--srcpath)					src_path="$value" ;;
+		--srcurl)					src_url="$value" ;;
+		--srcmode)
+			case $value in
+				"packages")			src_mode="packages" ;;
+				"full")				src_mode="full" ;;
+				*)					src_mode="packages" ;;
+			esac
+			;;
+		--srcrev)
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			src_rev="$value"
+			;;
+		--asuser)					asuser=1 ;;
+		--no-sudopwd)				no_sudopwd=1 ;;
+		-c|--clean)					clean=$(($clean + 1))	;;
+		-d|--docs)					gen_docs=1 ;;
+		--postscript)				easy_e17_post_script="$value" ;;
+		-s|--skip-srcupdate)		skip_srcupdate=1 ;;
+		-a|--ask-on-src-conflicts)	ask_on_src_conflicts=1 ;;
+		--skip)
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			skip="`echo "$value" | tr -s '\,' '\ '` $skip"
+			;;
+		-e|--skip-errors)			skip_errors=1 ;;		
+		-w|--wait)					wait=1 ;;
+		--anim)
+			case $value in
+				"weeh")	animation="weeh" ;;
+				*)		animation="star" ;;
+			esac
+			;;
+		-n|--disable-notification)	notification_disabled=1 ;;
+		-k|--keep)					keep=1 ;;
+
+		-l|--low) 					nice_level=19 ;;
+		--normal) ;;
+		-h|--high) 					nice_level=-20 ;;
+		--cache)
+			accache=" --cache-file=$tmp_path/easy_e17.cache"
+			ccache=`whereis ccache`
+			if [ ! "$ccache" = "ccache:" ]; then
+			    export CC="ccache gcc"
+			fi
+			;;
+		--threads)
+			if [ -z "$value" ] || ! expr "$value" : "[0-9]*$" >/dev/null || [ "$value" -lt 1 ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			threads=$value
+			;;
+		--autogen_args)	
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			autogen_args="$value"
+			;;
+		--cflags)
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			CFLAGS="$CFLAGS `echo "$value" | tr -s '\,' '\ '`"
+			;;
+		--ldflags)
+			if [ -z "$value" ]; then
+				logo 0 "Missing value for argument '$option'!"
+				exit 1
+			fi
+			LDFLAGS="$LDFLAGS `echo "$value" | tr -s '\,' '\ '`"
+			;;
+		--help)
+			fullhelp=1
+			logo 0
+			exit 0
+			;;
+		*)
+			logo 0 "Unknown argument '$option'!"
+			exit 1
+			;;
+	esac
+done
+
+
+# Sanity check stuff if doing everything as user.
+if [ "$asuser" ] && [ $nice_level -lt 0 ]; then
+	nice_level=0
+fi
+
+# Fix issues with a slash at the end
+if [ ! "${src_path:$((${#src_path}-1)):1}" == "/" ]; then
+	src_path="$src_path/"
+fi
+
+# quit if some basic option is missing
+if [ -z "$action" ] || [ -z "$install_path" ] || [ -z "$src_path" ]; then
+	logo 0
+	exit 1
+fi
+
+# check for script updates
+if [ "$action" == "script" ]; then
+	logo 0
+	echo -e "\033[1m------------------------------\033[7m Check script version \033[0m\033[1m----------------------------\033[0m"
+	check_script_version
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo
+	exit 0
+fi
+
+
+# run script normally
+logo 1
+set_title "Basic system checks"
+echo -e "\033[1m-------------------------------\033[7m Basic system checks \033[0m\033[1m----------------------------\033[0m"
+echo -n "- creating temporary dirs .... "
+mkdir -p "$tmp_path"		2>/dev/null
+mkdir -p "$logs_path"		2>/dev/null
+mkdir -p "$status_path"		2>/dev/null
+mkdir -p "$src_cache_path"	2>/dev/null
+mkdir -p "$src_path"		2>/dev/null
+chmod 700 "$tmp_path"
+echo "ok"
+
+max=15
+for dep in automake gcc $make `echo "$cmd_src_checkout" | cut -d' ' -f1`; do
+	cnt=${#dep}
+
+    echo -n "- '$dep' available "
+    while [ ! $cnt = $max ]; do
+        echo -n "."
+        cnt=$(($cnt+1))
+    done
+    echo -n " "
+
+	if [ `type $dep &>/dev/null; echo $?` -ne 0 ]; then
+		echo -e "\033[1mNOT INSTALLED!\033[0m"
+		error "Command missing!"
+	else
+		echo "ok"
+	fi
+done
+
+
+if [ ! "$action"  == "srcupdate" ]; then
+	echo -n "- build-user ................. "
+	if [ ! "$LOGNAME" == "root" ]; then
+		if [ "$asuser" ]; then
+			echo "$LOGNAME (as user)"
+			mode="user"
+		else
+			echo "$LOGNAME (non-root)"
+			echo -n "- sudo available ............. "
+			sudotest=`type sudo &>/dev/null ; echo $?`
+			if [ "$sudotest" == 0 ]; then
+				if [ "$no_sudopwd" == 1 ]; then
+					echo "ok"
+				else
+					sudo -K
+					if [ -e "$tmp_path/sudo.test" ]; then
+						rm -f "$tmp_path/sudo.test"
+					fi
+					while [ -z "$sudopwd" ]; do
+						echo -n "enter sudo-password: "
+						stty -echo
+						read sudopwd
+						stty echo
+			
+						# password check
+						echo "$sudopwd" | sudo -S touch "$tmp_path/sudo.test" &>/dev/null
+						if [ ! -e "$tmp_path/sudo.test" ]; then
+							sudopwd=""
+						fi
+					done
+					rm -f "$tmp_path/sudo.test"
+				fi
+				echo 
+				mode="sudo"
+			else
+				error "You're not root and sudo isn't available. Please run this script as root!"
+			fi
+		fi
+	else
+		echo "root"
+		mode="root"
+	fi
+
+	echo -n "- setting env variables ...... " 
+	export PATH="$install_path/bin:$PATH"
+	export ACLOCAL_FLAGS="-I $install_path/share/aclocal $ACLOCAL_FLAGS"
+	export LD_LIBRARY_PATH="$install_path/lib:$LD_LIBRARY_PATH"
+	export PKG_CONFIG_PATH="$install_path/lib/pkgconfig:$PKG_CONFIG_PATH"
+	export CPPFLAGS="$CPPFLAGS -I$install_path/include"
+	export LDFLAGS="$LDFLAGS -L$install_path/lib"
+	export CFLAGS="$CFLAGS"
+	export PYTHONPATH=`python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$install_path')" 2>/dev/null`
+	export PYTHONINCLUDE=`python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc(prefix='$install_path')" 2>/dev/null`
+	echo "ok"
+
+	echo -n "- creating destination dirs .. " 
+	case "$mode" in
+		user|root)	mkdir -p "$install_path/share/aclocal" ;;
+		sudo)		echo "$sudopwd" | sudo -S mkdir -p "$install_path/share/aclocal" ;;
+	esac
+	# PYTHON BINDING FIXES
+	if [ "$PYTHONPATH" ]; then
+		case "$mode" in
+			user|root)	mkdir -p "$PYTHONPATH" ;;
+			sudo)		echo "$sudopwd" | sudo -S mkdir -p "$PYTHONPATH" ;;
+		esac
+	fi
+	if [ "$PYTHONINCLUDE" ]; then
+		case "$mode" in
+			user|root)	mkdir -p "$PYTHONINCLUDE" ;;
+			sudo)		echo "$sudopwd" | sudo -S mkdir -p "$PYTHONINCLUDE" ;;
+		esac
+	fi
+	echo "ok"
+	
+	echo -n "- checking lib-path in ld .... "
+	case $os in
+		FreeBSD) ;; # TODO: placeholder
+		SunOS)	 ;; # TODO: need more testing of adding libraries on different solaris versions. atm this is not working
+		Linux)
+			libpath="`grep -r -l -i -m 1 $install_path/lib /etc/ld.so.conf*`"
+			if [ -z "$libpath" ]; then
+				case $linux_distri in
+					gentoo)
+						e17ldcfg="/etc/env.d/40e17paths"
+						echo -e "PATH=$install_path/bin\nROOTPATH=$install_path/sbin:$install_path/bin\nLDPATH=$install_path/lib\nPKG_CONFIG_PATH=$install_path/lib/pkgconfig" > $e17ldcfg 
+						env-update &> /dev/null
+						echo "ok (path has been added to $e17ldcfg)";
+						;;
+
+					*)
+						if [ "`grep -l 'include /etc/ld.so.conf.d/' /etc/ld.so.conf`" ]; then
+							e17ldcfg="/etc/ld.so.conf.d/e17.conf"
+						else
+							e17ldcfg="/etc/ld.so.conf";
+							cp $e17ldcfg $tmp_path;
+						fi
+
+						case "$mode" in
+							"user") ;;
+							"root")	echo "$install_path/lib" >>$e17ldcfg ;;
+							"sudo")
+								echo "$install_path/lib" >> $tmp_path/`basename $e17ldcfg`
+								echo "$sudopwd" | sudo -S mv -f $tmp_path/`basename $e17ldcfg` $e17ldcfg
+								;;
+						esac
+						if [ "$asuser" ]; then
+								echo "skipped (running as user)";
+						else	echo "ok (path has been added to $e17ldcfg)"; fi
+						;;
+				esac
+			else
+				echo "ok ($libpath)";
+			fi
+			;;
+	esac
+fi
+
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+
+# sources
+echo -e "\033[1m-----------------------------\033[7m Source checkout/update \033[0m\033[1m---------------------------\033[0m"
+if [ -z "$skip_srcupdate" ]; then
+	rm "$tmp_path/source_update.log" 2>/dev/null
+
+	cd "$src_path"
+	if [ "`$cmd_src_test &>/dev/null; echo $?`" == 0 ]; then
+		if [ "$src_mode" == "packages" ]; then
+			echo -e "\033[1m- Full checkout found, changed source mode to 'full'!\033[0m"
+			src_mode="full"
+		fi
+	fi
+
+	if [ "$src_mode" == "packages" ]; then
+		if [ "$only" ]; then
+			for pkgo in $only; do
+				for pkga in $packages; do
+					if [ "$pkgo" == "$pkga" ]; then
+						get_src $pkgo
+					fi
+				done
+			done
+		else
+			for pkg in $packages; do
+				get_src $pkg
+			done
+		fi
+	elif [ "$src_mode" == "full" ]; then
+		get_src
+	fi
+else
+	echo -e "\n                                - - - SKIPPED - - -\n"
+fi
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+
+if [ "$action" == "update" ] && [ -e "$tmp_path/source_update.log" ]; then
+	echo -e "\033[1m--------------------------------\033[7m Parsing updates \033[0m\033[1m-------------------------------\033[0m"
+
+	for dir in `egrep "^[A|D|G|U] " "$tmp_path/source_update.log" | \
+				awk '{print $2}' | sed 's,[^/]*$,,g' | sort -u`; do
+		add_pkg=""
+        found=0 
+		for idir in $ignore_dirs; do
+			topdir=`echo "$dir" | cut -d'/' -f1`
+			if [ "$topdir" == "$idir" ]; then found=1; fi
+		done
+		if [ $found == 1 ]; then continue; fi
+
+		for pkg in $packages; do
+			if [ `echo "$dir" | egrep -q "^$pkg/|/$pkg/"; echo $?` == 0 ]; then
+				if [ ! `echo "$only" | egrep -q "^$pkg | $pkg\$ | $pkg "; echo $?` == 0 ]; then
+					only="$pkg $only"
+					echo "- $pkg"
+				fi
+				break
+			fi
+		done
+	done
+	
+	if [ -z "$only" ]; then
+		echo -e "\n                         - - - NO UPDATES AVAILABLE - - -\n"
+	fi
+
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo
+fi
+
+cnt_pkgs	# Count packages
+
+
+echo -n "-> PREPARING FOR PHASE 2..."
+set_title "Preparing for phase 2... compilation & installation"
+sleep 5
+
+if [ "$action" == "install" ]; then
+	set_notification "normal" "Now building packages..."
+elif [ "$action" == "only" ]; then
+	set_notification "normal" "Now building following packages: $only"
+elif [ "$action" == "update" ]; then
+	if [ "$only" ]; then
+			set_notification "normal" "Now building following packages: $only"
+	else	set_notification "normal" "Everything is up to date, nothing to build"; fi
+fi
+logo 2
+echo -e "\033[1m------------------------------\033[7m Installing packages \033[0m\033[1m-----------------------------\033[0m"
+pkg_pos=0
+build_each
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+# Restore current directory in case post processing wants to be pathless.
+cd $EASY_PWD
+
+echo -e "\033[1m-----------------------------\033[7m Finishing installation \033[0m\033[1m---------------------------\033[0m"
+echo -n "- registering libraries ...... "
+if [ -z "$asuser" ]; then
+	case "$mode" in
+		"sudo") echo "$sudopwd" | sudo -S nice -n $nice_level $ldconfig > /dev/null 2>&1 ;;
+		*) nice -n $nice_level $ldconfig > /dev/null 2>&1 ;;
+	esac
+	echo "ok"
+else
+	echo "skipped"
+fi
+echo -n "- post install script ........ "
+if [ "$easy_e17_post_script" ]; then
+	echo -n " '$easy_e17_post_script' ... "
+	case "$mode" in
+		"sudo") echo "$sudopwd" | sudo -S nice -n $nice_level $easy_e17_post_script ;;
+		*) nice -n $nice_level $easy_e17_post_script ;;
+	esac
+	echo "ok"
+else	
+	echo "skipped"
+fi
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+
+echo -n "-> PREPARING FOR PHASE 3..."
+set_title "Preparing for phase 3..."
+sleep 5
+
+logo 3
+set_title "Finished"
+
+for file in $logs_path/*.log ; do
+	if [ "$file" == "$logs_path/*.log" ]; then break; fi
+
+	pkg=`basename "$file" | cut -d'.' -f1`
+	if [ -e "$status_path/$pkg.installed" ]; then
+		packages_installed="$packages_installed $pkg"
+	else
+		if [ -e "$status_path/$pkg.skipped" ]; then
+			packages_skipped="$packages_skipped $pkg"
+		else
+			if [ -e "$status_path/$pkg.nobuild" ]; then
+					packages_nobuild="$packages_nobuild $pkg"
+			else	packages_failed="$packages_failed $pkg"; fi
+		fi
+	fi
+done
+
+echo -e "\033[1m--------------------------------\033[7m Cleaning temp dir \033[0m\033[1m-----------------------------\033[0m"
+if [ -z "$keep" ]; then
+	if [ "$packages_failed" ]; then
+		echo -n "- saving logs ................ "	
+		for pkg in $packages_installed; do
+			rm "$status_path/$pkg.installed" 2>/dev/null
+			rm "$logs_path/$pkg.log" 2>/dev/null
+		done
+	else
+		echo -n "- deleting temp dir .......... "
+		rm -rf $tmp_path 2>/dev/null
+	fi	
+	echo "ok"
+else	
+	echo "- saving temp dir ............ ok"
+fi
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+if [ "$packages_failed" ]; then
+	echo -e "\033[1m---------------------------------\033[7m Failed packages \033[0m\033[1m------------------------------\033[0m"
+	for pkg in $packages_failed; do
+		echo "- $pkg (error log: $logs_path/$pkg.log)"
+	done
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo 
+	set_notification "critical" "Script finished with build errors"
+else
+	set_notification "normal" "Script finished successful"
+fi
+
+if [ "$action" == "install" ]; then
+	echo
+	echo "INSTALL NOTES:"
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+	echo "The most incredible and really unbelievable dream has become true:"
+	echo "You compiled e17 successfully!"
+	echo 
+	echo "Starting e17:"
+	echo "Create a file ~/.xsession with the line 'exec $install_path/bin/enlightenment_start'."
+	echo "Add a link to this file using 'ln -s ~/.xsession ~/.xinitrc'."
+	echo
+	echo "If you're using a login manager (GDM/KDM), select the session type 'default' in them."
+	echo "If you're using the startx command, simply execute it now."
+	echo
+	echo "Note: e17 is still not released and it won't be in the near future. So don't"
+	echo "ask for a stable release. e17 is still very buggy and only for experienced users"
+	echo "who know what they do..."
+	echo 
+	echo "Rasterman didn't write this script so don't ask him for help with it."
+	echo
+	echo "Hint: From now on you can easily keep your installation up to date."
+	echo "Simply run easy_e17.sh with -u instead of -i ."
+	echo
+	echo "We hope you will enjoy your trip into e17... Have fun!"
+	echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+fi
+
+echo
+echo "ADD THESE ENVIRONMENT VARIABLES:"
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo "export PATH=\"$install_path/bin:\$PATH\""
+echo "export PYTHONPATH=\"`python -c \"import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$install_path')\" 2>/dev/null`:\$PYTHONPATH\""
+echo "export LD_LIBRARY_PATH=\"$install_path/lib:\$LD_LIBRARY_PATH\""
+echo -e "\033[1m--------------------------------------------------------------------------------\033[0m"
+echo
+
+# Clear this out if we ever set it.
+export CC=""
+
+# exit script or wait?
+if [ "$wait" ]; then
+	echo
+	echo -e -n "\033[1mThe script is waiting here - simply press [enter] to exit.\033[0m"
+	read
+fi	
+
+set_title
+if [ "$packages_failed" ]; then
+		exit 2
+else	exit 0; fi
-- 
cgit v1.1-2-g2b99