summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian2010-04-11 19:48:33 +0200
committerSebastian2010-04-11 19:48:33 +0200
commitc8f51a43fa97e5f42df9b82d1427c33b8d988bb8 (patch)
tree1a4d69f701fede992dfa3b61e3ead9d2381a3b20
parentadded dependency based system to run defined tasks (diff)
downloadbroot-c8f51a43fa97e5f42df9b82d1427c33b8d988bb8.tar.gz
broot-c8f51a43fa97e5f42df9b82d1427c33b8d988bb8.tar.xz
broot-c8f51a43fa97e5f42df9b82d1427c33b8d988bb8.zip
added function to quickly access a shell inside chroot
started with enlightenment lib package (incomplete, commit just for transfer)
-rwxr-xr-xbroot.sh7
-rw-r--r--chroot-scripts/build-e.sh250
-rwxr-xr-xchroot-scripts/easy_e17.sh1398
-rw-r--r--inc/chroot-functions.inc.sh2
-rw-r--r--inc/helper.inc.sh1
-rw-r--r--tasks/build_e.sh18
-rw-r--r--tasks/shell.task.sh8
7 files changed, 1684 insertions, 0 deletions
diff --git a/broot.sh b/broot.sh
index e3d2c74..dd4d06f 100755
--- a/broot.sh
+++ b/broot.sh
@@ -3,6 +3,10 @@
. ./inc/env.inc.sh # read slx config to find paths
. ./inc/functions.inc.sh
+if [ "$(whoami)" != "root" ]; then
+ echo " You need to be root"
+ exit 12
+fi
case $1 in
"setup")
@@ -15,6 +19,9 @@ case $1 in
tasks="build_busybox"
# chroot-exec /root/bin/build-bb.sh
;;
+ "shell")
+ tasks="shell"
+ ;;
"build-initramfs-pkgs")
tasks="build_busybox build_packages build_kernel"
# updateScripts
diff --git a/chroot-scripts/build-e.sh b/chroot-scripts/build-e.sh
new file mode 100644
index 0000000..79ec812
--- /dev/null
+++ b/chroot-scripts/build-e.sh
@@ -0,0 +1,250 @@
+#!/bin/bash
+
+###
+# this is a convenience script for getting/updating e17 from svn.
+# (this is what you need to build e17 and entrance).
+###
+
+###
+# settings - feel free to change these...
+###
+# the directory to install into (a full path to where on the system to install)
+PREFIX="/usr/local"
+# install as root ("yes" or "no") - note. you CAN install as a user too, but
+# only into directories you have permission to install into. also you will
+# need to modify your LD_LIBRARY_PATH shell variable to access things
+ROOT_INSTALL="yes"
+# build enlightenment - the window manager ("yes" or "no")
+BUILD_E="no"
+###
+# end config
+###
+
+
+
+
+
+
+# modules
+CORE_MODULES="eina eet evas ecore e_dbus efreet embryo edje"
+E_MODULES="e"
+
+MODULES=$CORE_MODULES
+if [ $BUILD_E == "yes" ]; then
+ MODULES=$MODULES" "$E_MODULES
+fi
+
+# actual working parts of the script (no need to really touch this)
+if [ $ROOT_INSTALL == "yes" ]; then
+ echo "---------------------------------------------------------------------"
+ echo ""
+ # test sudo
+ echo "Check sudo access"
+ NOSUDO="no"
+ sudo ls /root || NOSUDO="yes"
+
+ if [ $NOSUDO == "yes" ]; then
+ echo "You have no sudo access. You need this to install on the system."
+ echo "Try add this line to your /etc/sudoers file:"
+ echo ""
+ echo $USER" ALL=(ALL) NOPASSWD: ALL"
+ exit -1
+ fi
+
+ # check ldo.so.conf
+ echo "Check /etc/ld.so.conf sanity"
+ LDCONF=`grep $PREFIX/lib /etc/ld.so.conf /etc/ld.so.conf.d/*`
+ if [ -z "$LDCONF" ]; then
+ echo "Add "$PREFIX"/lib to /etc/ld.so.conf please."
+ exit -1
+ fi
+fi
+
+if [ "$NOSUDO" == "no" ]; then
+ # detect distribution here
+ if [ -f "/etc/apt/sources.list" ]; then
+ F=`grep "gutsy" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="ubuntu-gutsy"
+ else
+ F=`grep "feisty" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="ubuntu-feisty"
+ else
+ F=`grep "hardy" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="ubuntu-hardy"
+ else
+ F=`grep "intrepid" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="ubuntu-intrepid"
+ else
+ F=`grep "unstable" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="debian-unstable"
+ else
+ F=`grep " sid" "/etc/apt/sources.list"`
+ if [ -n "$F" ]; then
+ DISTRO="debian-unstable"
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ echo "Detected distribution: $DISTRO"
+ if [ "$DISTRO" == "debian-unstable" ]; then
+## FIXME: unknown is this works or not
+ sudo apt-get update
+ sudo apt-get install \
+ xterm make gcc bison flex subversion \
+ automake1.10 autoconf autoconf-archive libtool gettext \
+ libc6-dev \
+ zlib1g-dev libjpeg62-dev \
+ libpng12-dev libfreetype6-dev \
+ libxrender-dev libx11-dev libxinerama-dev \
+ libxss-dev libxext-dev libxrandr-dev libxp-dev \
+ libxfixes-dev libxdamage-dev libxcursor-dev \
+ libpam0g-dev
+ elif [ "$DISTRO" == "ubuntu-feisty" ]; then
+ sudo apt-get update
+ sudo apt-get install \
+ xterm make gcc bison flex subversion automake1.10 autoconf autotools-dev \
+ autoconf-archive libtool gettext \
+ libpam0g-dev libfreetype6-dev libpng12-dev zlib1g-dev libjpeg-dev \
+ libtiff-dev libungif4-dev librsvg2-dev libx11-dev libxcursor-dev \
+ libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev \
+ libxcomposite-dev libxss-dev libxp-dev libxext-dev libxinerama-dev \
+ libxft-dev libxfont-dev libxi-dev libxv-dev libxkbfile-dev \
+ libxkbui-dev libxres-dev libxtst-dev libltdl3-dev libglu1-xorg-dev \
+ libglut3-dev xserver-xephyr libdbus-1-dev
+ elif [ "$DISTRO" == "ubuntu-gutsy" ]; then
+ sudo apt-get update
+ sudo apt-get install \
+ xterm make gcc bison flex subversion automake1.10 autoconf autotools-dev \
+ autoconf-archive libtool gettext \
+ libpam0g-dev libfreetype6-dev libpng12-dev zlib1g-dev libjpeg-dev \
+ libtiff-dev libungif4-dev librsvg2-dev libx11-dev libxcursor-dev \
+ libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev \
+ libxcomposite-dev libxss-dev libxp-dev libxext-dev libxinerama-dev \
+ libxft-dev libxfont-dev libxi-dev libxv-dev libxkbfile-dev \
+ libxkbui-dev libxres-dev libxtst-dev libltdl3-dev libglu1-xorg-dev \
+ libglut3-dev xserver-xephyr libdbus-1-dev
+ elif [ "$DISTRO" == "ubuntu-hardy" ]; then
+ sudo apt-get update
+ sudo apt-get install \
+ xterm make gcc bison flex subversion automake1.10 autoconf autotools-dev \
+ autoconf-archive libtool gettext \
+ libpam0g-dev libfreetype6-dev libpng12-dev zlib1g-dev libjpeg-dev \
+ libtiff-dev libungif4-dev librsvg2-dev libx11-dev libxcursor-dev \
+ libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev \
+ libxcomposite-dev libxss-dev libxp-dev libxext-dev libxinerama-dev \
+ libxft-dev libxfont-dev libxi-dev libxv-dev libxkbfile-dev \
+ libxkbui-dev libxres-dev libxtst-dev libltdl3-dev libglu1-xorg-dev \
+ libglut3-dev xserver-xephyr libdbus-1-dev
+ elif [ "$DISTRO" == "ubuntu-intrepid" ]; then
+ #sudo apt-get update
+ sudo apt-get install \
+ xterm make gcc bison flex subversion automake1.10 autoconf autotools-dev \
+ autoconf-archive libtool gettext \
+ libpam0g-dev libfreetype6-dev libpng12-dev zlib1g-dev libjpeg62-dev \
+ libtiff4-dev libungif4-dev librsvg2-dev libx11-dev libxcursor-dev \
+ libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev \
+ libxcomposite-dev libxss-dev libxp-dev libxext-dev libxinerama-dev \
+ libxft-dev libxfont-dev libxi-dev libxv-dev libxkbfile-dev \
+ libxkbui-dev libxres-dev libxtst-dev libltdl7-dev libglu1-xorg-dev \
+ libglut3-dev xserver-xephyr libdbus-1-dev
+ elif [ "$DISTRO" == "sample-distribution" ]; then
+ echo "sample distro"
+ # FIXME: put in whatever commands are needed to get a good list of
+ # dependencies for e and install themb - svn build tools etc. too. only
+ # put what is needed - there are optional libs like libtiiff/gif etc.
+ # but they hve no direct required to really suggested usefulness.
+ else
+ echo "Your distribution is not supported. Please adit this script and"
+ echo "add a section to detect your distribution and then to install"
+ echo "required packages for it."
+ fi
+fi
+
+# make sure we have the prefix in the PATH for now
+export PATH="$PREFIX/bin:$PATH"
+export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
+export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
+
+CLEAN="no"
+
+# check if we have a svn tree already
+if [ -d ./e/e/.svn ]; then
+ echo "---------------------------------------------------------------------"
+ echo ""
+ echo "Updating SVN"
+ CLEAN="yes"
+ cd ./e
+ for I in $MODULES; do
+ cd $I
+ svn update
+ cd ..
+ done
+ cd ..
+else
+ # get svn
+ echo "---------------------------------------------------------------------"
+ echo ""
+ echo "Checking out SVN"
+ mkdir e
+ cd e
+ for I in $MODULES; do
+ svn co http://svn.enlightenment.org/svn/e/trunk/$I
+ done
+ cd ..
+fi
+
+# enable error abort from now on
+set -e
+
+# build and install it all
+echo "---------------------------------------------------------------------"
+echo ""
+echo "Build..."
+for I in $MODULES; do
+ pushd e/$I
+ echo "---------------------------------------------------------------------"
+ echo ""
+ echo "Building: "$I
+ echo ""
+ if [ $CLEAN == "yes" ]; then
+ make clean distclean || true
+ fi
+ echo ""
+ echo "Autofoo: "$I
+ echo ""
+ ./autogen.sh --prefix=$PREFIX
+ echo ""
+ echo "Compiling: "$I
+ echo ""
+ make
+ echo ""
+ echo "Installing: "$I
+ echo ""
+ if [ $ROOT_INSTALL == "yes" ]; then
+ sudo make install
+ sudo ldconfig
+ else
+ make install
+ fi
+ popd
+done
+
+echo "---------------------------------------------------------------------"
+echo ""
+echo "NOTE: you will want to add "$PREFIX"/bin to your user's (and maybe"
+echo " root's) PATH variable. (see your documentation on the PATH shell"
+echo " variable for more information on how to do this)."
+if [ $ROOT_INSTALL == "no" ]; then
+echo "NOTE: you will want to add "$PREFIX"/lib to your user's (and maybe"
+echo " root's) LD_LIBRARY_PATH variable. (see your documentation on the"
+echo " LD_LIBRARY_PATH shell variable for more information on how to do"
+echo " this)."
+fi
diff --git a/chroot-scripts/easy_e17.sh b/chroot-scripts/easy_e17.sh
new file mode 100755
index 0000000..2d2fdad
--- /dev/null
+++ b/chroot-scripts/easy_e17.sh
@@ -0,0 +1,1398 @@
+#!/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-03-16" #
+version="1.3.2" #
+#############################################################################
+
+
+# Internal variables, most are available through cmd args!
+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"
+conf_files="/etc/easy_e17.conf $HOME/.easy_e17.conf $PWD/.easy_e17.conf"
+
+efl_basic="eina eet evas ecore efreet e_dbus embryo edje elementary"
+efl_extra="imlib2 ethumb emotion elementary enlil ewl libast libeweather python-evas python-ecore python-e_dbus python-edje python-ethumb python-emotion python-elementary shellementary"
+bin_basic="exchange e"
+bin_extra="e_phys eyelight editje elicit elitaire empower emprint enki ephoto Eterm expedite exquisite exalt image-viewer rage"
+e_modules_extra="alarm calendar cpu deskshow diskio drawer efm_nav efm_path efm_pathbar emu exalt-client execwatch eweather flame forecasts iiirk language mail mem moon mpdule net news notification penguins photo places quickaccess rain screenshot skel slideshow snow taskbar tclock tiling uptime weather winselector wlan"
+
+packages_basic="$efl_basic $bin_basic"
+packages_half="$efl_basic $bin_basic $e_modules_extra"
+packages_full="$efl_basic $efl_extra $bin_basic $bin_extra $e_modules_extra"
+packages=$elf_basic #$packages_basic # default
+
+cmd_src_test="svn info"
+cmd_src_list="svn list"
+cmd_src_checkout="svn checkout"
+cmd_src_update_conflicts_solve="svn update --accept theirs-full"
+cmd_src_update_conflicts_ask="svn update"
+src_mode="packages"
+ignore_dirs="devs DOCS E16 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, #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 " Source path: $src_path"
+ echo " Source url: $src_url"
+ 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 " --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_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
+ if [ `echo "$dir" | grep -q "$idir"; echo $?` == 0 ]; 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 $package"
+ else backoff_loop "$cmd_src_update_conflicts_solve $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_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"
+ else backoff_loop "$cmd_src_update_conflicts_solve"; fi
+ else
+ set_title "Checkout sources in '$src_path' ..."
+ echo "- checkout sources in '$src_path' ..."
+ backoff_loop "$cmd_src_checkout $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
+ for each in $only; do
+ pkg_total=$(($pkg_total+1))
+ done
+ else
+ # FIXME: Maybe some regexp which counts the spaces is faster?
+ for each in $packages; do
+ pkg_total=$(($pkg_total+1))
+ done
+ 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") action="install" ;;
+ "--install") action="install" ;;
+ "-u") action="update" ;;
+ "--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") action="script" ;;
+ "--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
+ ;;
+ "--asuser") asuser=1 ;;
+ "--no-sudopwd") no_sudopwd=1 ;;
+ "-c") clean=$(($clean + 1)) ;;
+ "--clean") clean=$(($clean + 1)) ;;
+ "-d") gen_docs=1 ;;
+ "--docs") gen_docs=1 ;;
+ "--postscript") easy_e17_post_script="$value" ;;
+ "-s") skip_srcupdate=1 ;;
+ "--skip-srcupdate") skip_srcupdate=1 ;;
+ "-a") ask_on_src_conflicts=1 ;;
+ "--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=1 ;;
+ "--skip-errors") skip_errors=1 ;;
+ "-w") wait=1 ;;
+ "--wait") wait=1 ;;
+ "--anim")
+ case $value in
+ "weeh") animation="weeh" ;;
+ *) animation="star" ;;
+ esac
+ ;;
+ "-n") notification_disabled=1 ;;
+ "--disable-notification") notification_disabled=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 "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 script 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 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 "- checking lib-path in ldc ... "
+ 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
+ if [ `echo "$dir" | grep -q "$idir"; echo $?` == 0 ]; 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
diff --git a/inc/chroot-functions.inc.sh b/inc/chroot-functions.inc.sh
index 5693a54..35f2589 100644
--- a/inc/chroot-functions.inc.sh
+++ b/inc/chroot-functions.inc.sh
@@ -1,4 +1,5 @@
chroot-exec () {
+ export HOME="/root"
if [ $(mount |grep -c $BROOT_BUILDROOT_PATH/dev) -eq 0 ]; then
setupBindmounts
fi
@@ -6,6 +7,7 @@ chroot-exec () {
}
chroot-aptinstall () {
+ export HOME="/root"
if [ $(mount |grep -c $BROOT_BUILDROOT_PATH/dev) -eq 0 ]; then
setupBindmounts
fi
diff --git a/inc/helper.inc.sh b/inc/helper.inc.sh
index 00c1915..6f63dfe 100644
--- a/inc/helper.inc.sh
+++ b/inc/helper.inc.sh
@@ -3,6 +3,7 @@ setupBindmounts() {
mount -o bind /proc $BROOT_BUILDROOT_PATH/proc
mount -t devtmpfs dev $BROOT_BUILDROOT_PATH/dev
chroot $BROOT_BUILDROOT_PATH mount -t devpts devpts /dev/pts
+ [ "x$(cat /proc/mounts | grep -q "/tmp/deb")" == "x" ] && mount -o bind /tmp/deb $BROOT_BUILDROOT_PATH/var/cache/apt/archives
}
destroyBindmounts() {
diff --git a/tasks/build_e.sh b/tasks/build_e.sh
new file mode 100644
index 0000000..9dc40c7
--- /dev/null
+++ b/tasks/build_e.sh
@@ -0,0 +1,18 @@
+build_e_package_dependencies="buildtools"
+
+build_e() {
+ local ME=build_busybox
+ chroot-aptinstall automake pkgconfig debus-1-dev liblua5.1-0-dev \
+ xterm make gcc bison flex subversion \
+ automake1.10 autoconf autoconf-archive libtool gettext \
+ libc6-dev \
+ zlib1g-dev libjpeg62-dev \
+ libpng12-dev libfreetype6-dev \
+ libxrender-dev libx11-dev libxinerama-dev \
+ libxss-dev libxext-dev libxrandr-dev libxp-dev \
+ libxfixes-dev libxdamage-dev libxcursor-dev \
+ libpam0g-dev doxygen
+
+ echo " Building e"
+ chroot-exec /root/bin/build-e.sh >> $BROOT_LOG.$ME
+}
diff --git a/tasks/shell.task.sh b/tasks/shell.task.sh
new file mode 100644
index 0000000..cf38adc
--- /dev/null
+++ b/tasks/shell.task.sh
@@ -0,0 +1,8 @@
+shell() {
+ if [ ! -e $BROOT_BUILDROOT_PATH/bootstraped ]; then
+ echo " Can't find buildroot."
+ exit 13
+ fi
+ echo " Switching to chroot"
+ chroot-exec /bin/bash
+}