#!/bin/bash ############################################################################# # This script is based on the very good prework from trickster. # # It is a result of the work from the people from #e.de (irc.freenode.net). # # It will checkout the cvs and compile e17. # # # # License: BSD licence # # Get the latest version at http://omicron.homeip.net/projects/#easy_e17.sh # # Rewrite by morlenxus (morlenxus@gmx.net) # # # last_changes="2007-01-15" # version="1.1.2" # ############################################################################# # Edit these variables if you like: install_path="/opt/e17" cvs_path="$HOME/e17_cvs" tmp_path="/tmp/easy_e17" logs_path="$tmp_path/install_logs" cvs_srv=":pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e"; efl="imlib2 edb eet evas ecore efreet epeg embryo edje epsilon esmart emotion engrave etk ewl exml enhance" apps="e entrance eclair evfs edje_viewer edje_editor emphasis empower entrance_edit_gui entropy ephoto estickies exhibit extrackt" apps_misc="engage scrot rage" e17_modules="alarm bling cpu deskshow emu flame forecasts language mail mem mixer moon net photo rain screenshot slideshow snow taskbar tclock uptime weather winselector wlan" os=$(uname) autogen_args="" # evas:--disable-gl-x11,ecore:--disable-ecore-evas-gl max_backoff=360 # Actual maximum backoff time is roughly this number in seconds. threads=2 # make -j nice_level=0 # nice level (19 == low, -20 == high) ############################################################################# 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 'wtfoo' Zebulla" echo -e " Daniel G. '_ke' Siegel" echo -e " Stefan 'slax' Langner" 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, #get-e (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 " CVS path: $cvs_path" echo " CVS server: $cvs_srv" echo " Logs path: $logs_path" echo " OS: $os" echo echo " Libaries: $efl" echo " Applications: $apps" echo " Miscellaneous: $apps_misc" echo " Modules: $e17_modules" if [ "$skip" ]; then echo " Skipping: $skip" fi if [ "$only" ]; then echo " Only: $only" fi echo if [ "$skip_cvsupdate" ]; then echo " Skip cvs update: yes" fi if [[ clean -eq 1 ]] ; then echo " Run clean: yes" fi if [[ clean -eq 2 ]] ; then echo " Run distclean: yes" fi if [[ clean -ge 3 ]] ; then echo " Run uninstall: yes" fi if [ "$skip_errors" ]; then echo " Skip errors: yes" fi if [ "$gen_docs" ]; then echo " Generate docs: yes" fi if [ "$easy_e17_post_script" ]; then echo " Post install: $easy_e17_post_script" fi if [ "$wait" ]; then echo " Wait on exit: yes" fi if [ "$keep" ]; then echo " Keep tempdir: yes" fi if [ "$accache" ]; then echo " Use caches: yes" fi if [ "$threads" -ne 2 ]; then echo " Threads: $threads" fi if [ "$nice_level" -ne 0 ]; then echo " Nice level: $nice_level" fi if [ -z "$action" ]; then action="MISSING!" fi echo " Script action: $action" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo if [ ! $1 = 0 ]; then echo -e "\033[1m--------------------------------\033[7m Build phase $1/3 \033[0m\033[1m-------------------------------\033[0m" fi 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 ' \033[0m\033[1m---------------\033[0m" echo " -i, --install = action: compile and install ALL of e17" echo " -u, --update = action: update your installed e17" echo " --help = full help" else echo -e "\033[1m-----------------\033[7m Full help 'easy_e17.sh ' \033[0m\033[1m----------------\033[0m" echo -e " \033[1mACTION (ONLY ONE SELECTION POSSIBLE):\033[0m" echo " -i, --install = action: compile and install ALL of e17" echo " -u, --update = action: update your installed e17" echo " -c, --clean = action: clean the sources" echo " (more --cleans means more cleaning, up" echo " to a maximum of three, which will" echo " uninstall e17." echo " If used with one of the other actions," echo " this will clean first.)" echo " --only=,,... = action: checkout and compile ONLY the" echo " named libs/apps" echo " --cvsupdate = update only the cvs tree" echo " --help = this help" echo echo -e " \033[1mOPTIONS:\033[0m" echo " --instpath= = change the default install path" echo " --cvspath= = change the default cvs path" echo " --cvssrv= = change the default cvs server" echo " -s, --skip-cvsupdate = no update for your local cvs copy" echo " --skip=,,... = this will skip installing the named" echo " libs/apps" echo " -d, --docs = generate programmers documentation" echo " --postscript= = 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 " -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= = make can use threads, recommended on smp" echo " systems (default: 2 threads)" echo echo " --efl=,,... = compile libraries in this order" echo " --apps=,... = compile e17 applications in this order" echo " --apps_misc=,... = compile e17 misc in this order" echo " --e17_modules=,... = compile e17 modules in this order" 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 cvs path, add this line:" echo " --cvspath=/home/brian.miculcy/enlightenment/e17_cvs" fi fi ;; 1) echo "- running some basic system checks" echo "- pre cleaning" echo "- cvs checkout/update" ;; 2) echo "- lib-compilation and installation" echo "- apps-compilation and installation" ;; 3) echo "- cleaning" echo "- install notes" ;; esac echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo echo } function define_os_vars () { case $os in SunOS) ldconfig="$(which crle) -u" # there is no command like ldconfig on solaris! "crle" does nearly the same. ;; Linux) ldconfig="/sbin/ldconfig" ;; *) os="not supported" logo 0 exit ;; esac } function find_path () { basedir="$cvs_path/$1" name=$2 path="" for dir in `find "$basedir" -type d -name "$name" | awk -F "$cvs_path/" '{print $2}' | egrep -v -i "/bin/|/cvs/|/data/|/docs/|/oe/|/src/|/test/"`; do if [ "${#dir}" -lt "${#path}" ] || [ -z "$path" ]; then path=$dir fi done echo "$cvs_path/$path" } function backoff_loop { cvscommand=$1 backoff=$(( 4 + (RANDOM % 5) )) attempt=1; while [ 1 ]; do if [ "$action" == "update" ] || [ "$action" == "cvsupdate" ]; then $cvscommand | tee --append "$tmp_path/cvs_update.log" else $cvscommand fi if [ "${PIPESTATUS[0]}" -gt 0 ]; then attempt=$(($attempt + 1)) for (( i = $backoff / 2; i > 0; i-- )) do set_title "Checkout FAILED! Next attempt $attempt in $i seconds" echo -n -e "\rFAILED! Next attempt $attempt in \033[1m$i\033[0m seconds" sleep 1 done echo -n -e "\r \r" if [[ backoff -le max_backoff ]] ; then backoff=$(( ($backoff * 2) + (RANDOM % 5) )) fi else break fi done } function get_cvs () { repo=$1 cd $cvs_path if [ -d "$repo" ]; then if [ -n "$only" ]; then set_title "Updating source of '$repo' ($pkg_pos/$pkg_total)" echo "- updating source of '`basename "$repo"`' (please wait, this won't output much) ..." else set_title "Updating source of repo '$repo'" echo "- updating source of repo '$repo' (please wait, this won't output much) ..." fi cd "$repo" backoff_loop "cvs -z3 -q update -dP" else if [ -n "$only" ]; then set_title "Checkout source of '$repo' ($pkg_pos/$pkg_total)" echo "- checkout source of '`basename "$repo"`' ..." else set_title "Checkout source of repo '$repo'" echo "- checkout source of repo '$repo' ..." fi backoff_loop "cvs -z3 -q -d $cvs_srv co $repo" fi echo } function build_each () { repo="$1" array=$2 for name in $array do path=`find_path $repo $name` compile "$name" "$path" done } function compile () { name=$1 path=$2 cnt=${#name} max=27 echo -n "- $name " while [ ! $cnt = $max ] do echo -n "." cnt=`expr $cnt + 1` done echo -n " " for one in $skip do if [ "$name" == "$one" ]; then echo "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" return fi fi if [ ! -d "$path" ]; then echo "NOT FOUND" return fi cd "$path" touch "$logs_path/$name.log" pkg_pos=`expr $pkg_pos + 1` if [[ clean -ge 1 ]] ; then if [ ! -e "Makefile" ]; then echo "CAN'T CLEAN" return fi if [[ clean -eq 1 ]] ; then make clean >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & fi if [[ clean -eq 2 ]] ; then echo -n "distclean: " make clean distclean >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & fi if [[ clean -ge 3 ]] ; then echo -n "uninstall: " case "$mode" in "root") nice -n $nice_level make uninstall clean distclean >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level make uninstall clean distclean >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; esac fi pid="$!" rotate "$pid" "$name" del_lines 12 rm $tmp_path/$name.noerrors 2>/dev/null echo "ok" return fi if [ -e "$tmp_path/$name.noerrors" ]; then echo "previously installed" return fi # get autogen arguments args="" for app_arg in `echo $autogen_args | cut -d',' -f- | tr -s '\,' '\ '` do app=`echo $app_arg | cut -d':' -f1` if [ "$app" == "$name" ]; then args="$args `echo $app_arg | cut -d':' -f2-`" fi done if [ ! -e "autogen.sh" ]; then echo "CAN'T AUTOGEN" return fi set_title "$name: autogen ($pkg_pos/$pkg_total)" echo -n "autogen: " if [ $nice_level -ge 0 ]; then nice -n $nice_level ./autogen.sh --prefix=$install_path $accache $args >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & else case "$mode" in "root") nice -n $nice_level ./autogen.sh --prefix=$install_path $accache $args >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level ./autogen.sh --prefix=$install_path $accache $args >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; esac fi pid="$!" rotate "$pid" "$name" for package in $failed_packages do if [ "$package" == "$name" ]; then return fi done del_lines 12 rm $tmp_path/$name.noerrors set_title "$name: make ($pkg_pos/$pkg_total)" echo -n "make : " if [ $nice_level -ge 0 ]; then nice -n $nice_level make -j $threads >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & else case "$mode" in "root") nice -n $nice_level make -j $threads >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level make -j $threads >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; esac fi pid="$!" rotate "$pid" "$name" for package in $failed_packages do if [ "$package" == "$name" ]; then return fi done del_lines 12 rm $tmp_path/$name.noerrors if [ "$gen_docs" ]; then if [ -e "gendoc" ]; then set_title "$name: docs ($pkg_pos/$pkg_total)" echo -n "docs : " if [ $nice_level -ge 0 ]; then nice -n $nice_level sh gendoc >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & else case "$mode" in "root") nice -n $nice_level sh gendoc >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level sh gendoc >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & ;; esac fi pid="$!" rotate "$pid" "$name" for package in $failed_packages do if [ "$package" == "$name" ]; then return fi done del_lines 12 rm $tmp_path/$name.noerrors fi fi set_title "$name: install ($pkg_pos/$pkg_total)" echo -n "install: " case "$mode" in "root") nice -n $nice_level make install >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & pid="$!" rotate "$pid" "$name" for package in $failed_packages do if [ "$package" == "$name" ]; then return fi done nice -n $nice_level $ldconfig del_lines 12 echo "ok" ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level make install >> "$logs_path/$name.log" 2>&1 && touch $tmp_path/$name.noerrors & pid="$!" rotate "$pid" "$name" for package in $failed_packages do if [ "$package" == "$name" ]; then return fi done echo "$sudopwd" | sudo -S nice -n $nice_level $ldconfig &>/dev/null del_lines 12 echo "ok" ;; esac } function rotate () { pid=$1 name=$2 star=1 log_line="" while [ "`ps -p $pid -o comm=`" ] do last_line=`tail -1 "$logs_path/$name.log"` if [ ! "$log_line" = "$last_line" ]; then echo -e -n "\b\b\b" case $star in 1) echo -n "[" echo -n -e "\033[1m|\033[0m" echo -n "]" star=2 ;; 2) echo -n "[" echo -n -e "\033[1m/\033[0m" echo -n "]" star=3 ;; 3) echo -n "[" echo -n -e "\033[1m-\033[0m" echo -n "]" star=4 ;; 4) echo -n "[" echo -n -e "\033[1m" echo -n "\\" echo -n -e "\033[0m" echo -n "]" star=1 ;; esac log_line=$last_line fi sleep 1 done if [ ! -e "$tmp_path/$name.noerrors" ]; then del_lines 12 echo -e "\033[1mERROR!\033[0m" 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 exit else failed_packages="$failed_packages $name" fi fi } function del_lines () { cnt=0 max=$1 while [ ! "$cnt" == "$max" ] do echo -n -e "\b \b" cnt=`expr $cnt + 1` done } function error () { set_title "ERROR: $1" echo -e "\n\n\033[1mERROR: $1\033[0m\n\n" 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 get_repo () { if [ -n "$only" ]; then # single install for pkg in $only do for each in $efl do if [ "$each" == "$pkg" ]; then path=`find_path "e17/" "$pkg"` get_cvs "$path" fi done for each in $apps do if [ "$each" == "$pkg" ]; then path=`find_path "e17/" "$pkg"` get_cvs "$path" fi done for each in $apps_misc do if [ "$each" == "$pkg" ]; then path=`find_path "misc/" "$pkg"` get_cvs "$path" fi done for each in $e17_modules do if [ "$each" == "$pkg" ]; then path=`find_path "e_modules/" "$pkg"` get_cvs "$path" fi done done else # full install get_cvs e17 get_cvs misc get_cvs e_modules get_cvs devs fi } function cnt_pkgs () { pkg_total=0 pkg_pos=0 if [ -n "$only" ]; then for each in $only do pkg_total=`expr $pkg_total + 1` done else # Maybe some regexp which counts the spaces is faster? total_pkgs="$efl $apps $apps_misc $e17_modules" for each in $total_pkgs do pkg_total=`expr $pkg_total + 1` done fi } # SCRIPT: set_title define_os_vars accache="" easy_options="" clean=0 if [ -e "$HOME/.easy_e17.conf" ]; then # load configfile for option in `cat "$HOME/.easy_e17.conf"` do easy_options="$easy_options $option" done fi # append arguments easy_options="$easy_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" == "--cvsupdate" ]; then logo 0 exit fi fi case "$option" in "-i") action="install" ;; "--install") action="install" ;; "-u") action="update" ;; "--update") action="update" ;; "-c") clean=$(( $clean + 1 )) ;; "--clean") clean=$(( $clean + 1 )) ;; "--only") if [ -z "$value" ]; then logo 0 exit fi action="only" only="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '` $only" ;; "--cvsupdate") action="cvsupdate" skip="$efl $apps $apps_misc $e17_modules" ;; "--instpath") install_path="$value" ;; "--cvspath") cvs_path="$value" ;; "--cvssrv") cvs_srv="$value" export CVS_RSH="ssh" ;; "-d") gen_docs=1 ;; "--docs") gen_docs=1 ;; "--postscript") easy_e17_post_script="$value" ;; "-s") skip_cvsupdate=1 ;; "--skip-cvsupdate") skip_cvsupdate=1 ;; "--skip") if [ -z "$value" ]; then logo 0 exit fi skip="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '` $skip" ;; "-e") skip_errors=1 ;; "--skip-errors") skip_errors=1 ;; "-w") wait=1 ;; "--wait") wait=1 ;; "-k") keep=1 ;; "--keep") keep=1 ;; "-l") nice_level=19 ;; "--low") nice_level=19 ;; "--normal") ;; "-h") nice_level=-20 ;; "--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 exit fi threads=$value ;; "--efl") if [ -z "$value" ]; then logo 0 exit fi efl="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '`" ;; "--apps") if [ -z "$value" ]; then logo 0 exit fi apps="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '`" ;; "--apps_misc") if [ -z "$value" ]; then logo 0 exit fi apps_misc="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '`" ;; "--e17_modules") if [ -z "$value" ]; then logo 0 exit fi e17_modules="`echo "$value" | cut -d"," -f- | tr -s '\,' '\ '`" ;; "--help") fullhelp=1 logo 0 exit ;; *) logo 0 exit ;; esac done if [ -z "$action" ]; then if [[ clean -ge 1 ]] ; then action="clean" fi fi if [ -z "$action" ] || [ -z "$install_path" ] || [ -z "$cvs_path" ]; then logo 0 exit fi logo 1 set_title "Basic system checks" echo -e "\033[1m-------------------------------\033[7m Basic system checks \033[0m\033[1m----------------------------\033[0m" echo -n "- cvs-dir .................... " mkdir -p "$cvs_path" 2>/dev/null if [ ! -w "$cvs_path" ]; then error "The cvs-dir '$cvs_path' isn't writeable!" else echo "ok" fi touch "$HOME/.cvspass" 2>/dev/null echo -n "- creating script dirs ....... " mkdir -p "$tmp_path" 2>/dev/null chmod 700 "$tmp_path" mkdir -p "$logs_path" 2>/dev/null echo "ok" if [ ! "$action" == "cvsupdate" ]; then echo -n "- build-user ................. " if [ ! "$LOGNAME" == "root" ]; then echo "$LOGNAME (non-root)" echo -n "- sudo available ............. " sudotest=`type sudo &>/dev/null ; echo $?` if [ "$sudotest" == 0 ]; then 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 echo mode="sudo" rm -f "$tmp_path/sudo.test" else error "You're not root and sudo isn't available. Please run this script as root!" fi else echo "root" mode="root" fi echo -n "- adding path to env ......... " export PATH="$PATH:$install_path/bin" export PKG_CONFIG_PATH="$install_path/lib/pkgconfig:$PKG_CONFIG_PATH" echo "ok" echo -n "- checking lib-path in ldc ... " case $os in SunOS) e17ldcfg="";; # need more testing of adding libaries on different solaris versions. atm this is not working Linux) e17ldcfg="`grep -r -l -i -m 1 $install_path/lib /etc/ld.so.conf*`" if [ -z "$e17ldcfg" ]; then if [ "`grep -l 'include /etc/ld.so.conf.d/' /etc/ld.so.conf`" ]; then e17ldcfg="/etc/ld.so.conf.d/e17.conf" rm $e17ldcfg 2>/dev/null else e17ldcfg="/etc/ld.so.conf"; cp $e17ldcfg $tmp_path; fi case "$mode" in "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 echo "ok (path has been added to $e17ldcfg)"; else echo "ok ($e17ldcfg)"; fi ;; esac echo -n "- setting compile options .... " export CPPFLAGS="$CPPFLAGS -I$install_path/include" export LDFLAGS="$LDFLAGS -L$install_path/lib" echo "ok" fi echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo # do the clean first if not just cleaning. if [[ clean -ge 1 ]] ; then if [ "$action" != "clean" ]; then set_title "Pre cleaning" sleep 5 echo -e "\033[1m----------------------------\033[7m Precleaning libaries (EFL) \033[0m\033[1m------------------------\033[0m" pkg_pos=0 build_each "e17/" "$efl" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo echo -e "\033[1m-----------------------------\033[7m Precleaning applications \033[0m\033[1m-------------------------\033[0m" build_each "e17/" "$apps" build_each "misc/" "$apps_misc" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo echo -e "\033[1m-----------------------------\033[7m Precleaning e17 modules \033[0m\033[1m--------------------------\033[0m" build_each "e_modules/" "$e17_modules" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo clean=0 fi fi # cvs echo -e "\033[1m-------------------------------\033[7m CVS checkout/update \033[0m\033[1m----------------------------\033[0m" if [ -z "$skip_cvsupdate" ]; then rm "$tmp_path/cvs_update.log" 2>/dev/null get_repo else echo -e "\n - - - SKIPPED - - -\n" fi echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo if [ "$action" == "update" ] && [ -e "$tmp_path/cvs_update.log" ]; then for update in `egrep "^[P|U] " "$tmp_path/cvs_update.log" | egrep "apps/|libs/|proto/" | cut -d'/' -f2 | sort -u`; do for package in $efl $apps; do if [ "$update" == "$package" ]; then only="$update $only" fi done done for update in `egrep "^[P|U] " "$tmp_path/cvs_update.log" | egrep -v "apps/|libs/|proto/" | cut -d'/' -f1 | sort -u`; do for package in $apps_misc $e17_modules; do if [ "$update" == "$package" ]; then only="$update $only" fi done done fi # Count packages cnt_pkgs echo -n "-> PREPARING FOR PHASE 2..." set_title "Preparing for phase 2... compilation & installation" sleep 5 logo 2 echo -e "\033[1m---------------------------\033[7m Installing libaries (EFL) \033[0m\033[1m--------------------------\033[0m" pkg_pos=0 build_each "e17/" "$efl" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo echo -e "\033[1m----------------------------\033[7m Installing applications \033[0m\033[1m---------------------------\033[0m" build_each "e17/" "$apps" build_each "misc/" "$apps_misc" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo echo -e "\033[1m-----------------------------\033[7m Installing e17 modules \033[0m\033[1m---------------------------\033[0m" build_each "e_modules/" "$e17_modules" 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" if [ -z "$keep" ]; then echo -e "\033[1m--------------------------------\033[7m Cleaning temp dir \033[0m\033[1m-----------------------------\033[0m" if [ "$failed_packages" ]; then echo -n "- saving logs ................ " for noerrorfile in $tmp_path/*.noerrors ; do package=`basename "$noerrorfile" | cut -d'.' -f1` rm "$noerrorfile" 2>/dev/null rm "$logs_path/$package.log" 2>/dev/null done else echo -n "- del temp dir ............... " rm -rf $tmp_path 2>/dev/null fi echo "ok" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo fi if [ "$easy_e17_post_script" ]; then echo -e "\033[1m-------------------------------\033[7m Post install script \033[0m\033[1m----------------------------\033[0m" case "$mode" in "root") nice -n $nice_level $easy_e17_post_script ;; "sudo") echo "$sudopwd" | sudo -S nice -n $nice_level $easy_e17_post_script ;; esac echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo fi if [ "$failed_packages" ]; then echo -e "\033[1m---------------------------------\033[7m Failed packages \033[0m\033[1m------------------------------\033[0m" for package in $failed_packages do echo "- $package (error log: $logs_path/$package.log)" done echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo fi if [ "$action" == "install" ]; then echo "INSTALL NOTES:" echo "-----------------------------------------------------------------------------" echo "The most incredible and really unbelivable dream has become true:" echo "You compiled e17 sucessfully!" 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 "We hope you will enjoy your trip into e17... Have fun!" echo -e "\033[1m--------------------------------------------------------------------------------\033[0m" echo fi # 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