From: jesus Date: Thu, 17 Jul 2008 20:57:00 +0000 (+0000) Subject: New version of build scripts X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=a52210785284c98ec6fd502ab8b955c7585f100a;hp=0905a03871285d2e650318cfd0991fdca6d9a83d;p=maemo-efl New version of build scripts --- diff --git a/trunk/build-all.sh b/trunk/build-all.sh index a4c2c11..4169c6e 100755 --- a/trunk/build-all.sh +++ b/trunk/build-all.sh @@ -1,392 +1,53 @@ #!/bin/sh -source "helper-functions.sh" - -########################################################### -# Variable definitions -########################################################### -__this_script=`basename $0` -__this_script_dir=`dirname $0` -__orig_path=$PATH - -# Binaries -__date=`which date` -__git=`which git` -__head=`which head` -__mkdir=`which mkdir` -__sed=`which sed` -__uname=`which uname` -__chmod=`which chmod` -__grep=`which grep` -__egrep=`which egrep` -__debsign=`which debsign` - -# git definitions -__git_clone="$__git clone -q" -__git_pull="$__git pull -q" -__git_clean="$__git clean -q -x -d -f" -__git_reset="$__git reset --hard HEAD" -__git_repo="git://staff.get-e.org/" - -# e17 git repositories paths -__e17_libs="e17/libs" -__e17_proto="e17/proto" -__e17_python_efl="$__e17_proto/python-efl" -__e17_python_etk="users/cmarcelo" -__e17_python_efl_utils="users/barbieri" -#__e17_python_dispatcher="users/ulisses" - -# modules to build -#__lib_modules="edb eet evas ecore embryo edje efreet epeg epsilon emotion etk ewl e_dbus exml enhance" -__lib_modules="eet:evas:ecore:embryo:edje:imlib2:epeg:epsilon:etk:e_dbus" -__other_modules="himf-ecore:himf-ecore-chinook:lightmediascanner:python-lightmediascanner" -__python_modules="python-evas:python-ecore:python-edje:python-epsilon:python-e_dbus" -__python_etk_module="python-etk" -__python_efl_utils_module="python-efl_utils" -#__python_dispatcher_module="python-dispatcher" -__virtual_packages="efl-core python-efl-core" - -# dpkg definitions -__common_build_pkg_options="-rfakeroot -us -uc -D" - -# Packages dirs and log file -__today=`$__date +%Y%m%d` -__base_pkg_dir="$__this_script_dir/packages_$__today" -__output_file="$PWD/$__base_pkg_dir/packages_$__today.log" - -# Scratchbox definitions -__sbox_path="/scratchbox" - -# Other -__update_repositories=1 -__installed_packages="" - ########################################################### -# Function definitions +# Maemo-efl building script +# Build script +# ########################################################### -function usage() { - cat << EOF - -Usage: $__this_script [OPTIONS] - -Build script for EFL debian packages for Maemo. - -Options: - -c Don't update source repositories. - -h Show this usage guide. - -s PATH Specify alternate scratchbox path (default: $__sbox_path). - -EOF -} - -function create_log_file() { - if [ ! -r $__output_file ]; then - msg_begin "Creating log file" - touch $__output_file - msg_end $? - else - msg "Using existing log file: $__output_file" - fi -} - -function log_to_file() { - local now - local msg - msg=$1 - - if [ ! -r $__output_file ]; then - error "log_to_file(): Log file does not exist" - fi - - now=`$__date +%H:%M:%S` - echo "$now: $msg" >> $__output_file -} - -function start_log() { - local now - now=`$__date -R` - - echo "" >> $__output_file - - if [ $? != 0 ] ; then - error "start_log(): Could not create $__output_file file" - fi - - cat << EOF >> $__output_file -********************************************************* -* Started $__this_script: $now * -********************************************************* - -EOF -} - -function finish_log() { - local now - now=`$__date -R` - - if [ ! -r $__output_file ]; then - error "finish_log(): Log file does not exist" - fi - - cat << EOF >> $__output_file - -* Finished $__this_script: $now -EOF -} - -function clone_repository() { - local repo - repo=$1 - $__git_clone $repo.git >> $__output_file 2>&1 - return $? -} - -function update_repository() { - local repo - repo=$1 - - if [ ! -d $repo ]; then - error " Trying to update invalid repository" - fi - - cd $repo - $__git_pull >> $__output_file 2>&1 || return 1 - cd - > /dev/null 2>&1 - - return 0 -} - -function clean_repository() { - local repo - repo=$1 - - if [ ! -d $repo ]; then - error " Trying to clean invalid repository" - fi - - cd $repo - $__git_reset >> $__output_file 2>&1 || return 1 - $__git_clean >> $__output_file 2>&1 || return 1 - cd - > /dev/null 2>&1 - - return 0 -} - -function configure_pkg() { - local dir - dir=$1 - - cd $dir/`basename $dir` - - if [ -x ./autogen.sh ]; then - NOCONFIGURE=1 ./autogen.sh >> $dir/sbox_build_pkgs.log 2>&1 || return 1 - fi - - cd - > /dev/null 2>&1 - - return 0 -} - -function build_pkg() { - local dir - dir=$1 - - configure_pkg $dir || return 1 - - local DEB_BUILD_OPTIONS=n8x0 - if [ "x$__distro" = "xgregale" ]; then - DEB_BUILD_OPTIONS=n770 - fi - - cat << EOF > $dir/sbox_build_pkgs -#!/bin/sh - -export DEBFULLNAME="$DEBFULLNAME" -export DEBEMAIL="$DEBEMAIL" -export DEB_BUILD_OPTIONS="$DEB_BUILD_OPTIONS" - -cd $dir/`basename $dir` - -VERSION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d" " -f2 | cut -d- -f1 >> $dir/sbox_build_pkgs.log 2>&1 || exit 1\` -REVISION=\`$__sbox_dpkg_parsechangelog | grep Version: | cut -d- -f2 >> $dir/sbox_build_pkgs.log 2>&1 || exit 1\` - -# $__sbox_dch -v \$VERSION+cvs$__today-\$REVISION -D $__distro "Snapshot CVS release of $__today" >> $dir/sbox_build_pkgs.log 2>&1 || exit 1 -$__sbox_dpkg_buildpackage $__build_pkg_options >> $dir/sbox_build_pkgs.log 2>&1 -exit \$? -EOF - - $__chmod 755 $dir/sbox_build_pkgs - $__sbox $dir/sbox_build_pkgs - return $? -} - -function install_pkgs() { - local dir - dir=$1 - - cat << EOF > $dir/sbox_install_pkgs -#!/bin/sh - -cd $dir -$__sbox_dpkg --install *.deb >> $dir/sbox_install_pkgs.log 2>&1 -exit \$? -EOF - - $__chmod 755 $dir/sbox_install_pkgs - $__sbox $dir/sbox_install_pkgs || return 1 - - for package in $dir/*.deb; do - pkg=`basename $package | cut -d_ -f1` - echo $__installed_packages | tr " " "\n" | sort -u | $__egrep "\^$pkg\$" > /dev/null 2>&1 - - if [ ! $? -eq 0 ]; then - __installed_packages="$__installed_packages $pkg" - fi - done - - return 0 -} - -function uninstall_pkgs() { - - cat << EOF > /tmp/sbox_uninstall_pkgs -#!/bin/sh - -cd /tmp -$__sbox_dpkg --purge $__installed_packages >> /tmp/sbox_uninstall_pkgs.log 2>&1 -exit \$? -EOF - - __installed_packages="" - $__chmod 755 /tmp/sbox_uninstall_pkgs - #$__sbox /tmp/sbox_uninstall_pkgs - return $? -} - -function sign_pkgs() { - local dir - dir=$1 - - cd $dir - $__debsign *.changes >> $dir/sign_pkgs.log 2>&1 || return 1 - - cd - > /dev/null 2>&1 - - return 0 -} - -function get_sources() { - local modules - local repo - modules=`echo $1|$__sed -e 's/:/ /g'` - repo=$2 - - for module in $modules; do - - if [ ! -d $module ]; then - error "Directory $module does not exist." - fi - - cd $module - - if [ -d $module/.git ]; then - if [ ! $__update_repositories -eq 0 ]; then - log_to_file "Updating existing repository at $PWD/$module" - - msg_begin " Updating $module repository" - update_repository $module - msg_end $? - else - log_to_file "Skipping update of $module repository" - fi - elif [ -d $module ]; then - log_to_file "Removing invalid repository at $PWD/$module" - rm -rf $module - fi - - if [ ! -d $module ]; then - msg_begin " Cloning $repo/$module.git" - clone_repository $repo/$module - msg_end $? - fi - - cd .. - done -} - -function setup_distro() { - local target - local sources_list_file - local target_conf_file - local ret - target=$1 - sources_list_file=$__sbox_path/users/$USER/targets/$target/etc/apt/sources.list - target_conf_file=$__sbox_path/users/$USER/targets/$target.config - ret=1 - - log_to_file "setup_distro(): Target $target" - log_to_file "setup_distro(): sources.list file : $sources_list_file" - log_to_file "setup_distro(): config file: $target_conf_file" - - if [ "x$target" != "x" ] && [ -r $sources_list_file ] && [ -r $target_conf_file ]; then - # XXX: FIXME Figure out a better way to get the distro string - __distro=`$__head -1 $sources_list_file | cut -d" " -f3` - __arch=`$__grep SBOX_CPU= $target_conf_file | cut -d= -f2` - __pkg_dir="$__base_pkg_dir/$__distro/$__arch" - if [ "x$__arch" = "xarm" ] ; then - __build_pkg_options="$__common_build_pkg_options -B" - else - __build_pkg_options="$__common_build_pkg_options -I.svn -I.git -I.gitignore -I.cvsignore -sa" - fi - ret=0 - fi - - if [ $ret -eq 0 ]; then - log_to_file "setup_distro(): Configuration:" - log_to_file "setup_distro(): distro...........: $__distro" - log_to_file "setup_distro(): arch.............: $__arch" - log_to_file "setup_distro(): build options....: $__build_pkg_options" - log_to_file "setup_distro(): pkg_dir..........: $__pkg_dir" - fi - - return $ret -} - -function setup_sbox() { - if [ ! -d $__sbox_path ]; then - error "Invalid scratchbox path: $__sbox_path" - fi - - __sbox="$__sbox_path/login" - __sbox_tools_bin_path="$__sbox_path/tools/bin" - __sbox_sb_conf="$__sbox_tools_bin_path/sb-conf" - - __sbox_maemo3_debian_bin_path="/scratchbox/devkits/maemo3-debian/bin" - __sbox_dpkg="$__sbox_maemo3_debian_bin_path/dpkg" - __sbox_dpkg_buildpackage="$__sbox_dpkg-buildpackage" - __sbox_dpkg_parsechangelog="$__sbox_dpkg-parsechangelog" - - __sbox_debian_sarge_bin_path="/scratchbox/devkits/debian-sarge/bin" - __sbox_dch="$__sbox_debian_sarge_bin_path/dch" -} - -function change_sbox_target() { - local target - target=$1 - - $__sbox_sb_conf select $target >> $__output_file 2>&1 - return $? -} +source "./scripts/helper-functions.sh" +source "./scripts/var-definitions.sh" +source "./scripts/log-functions.sh" +source "./scripts/repository-functions.sh" +source "./scripts/package-functions.sh" +source "./scripts/setup-functions.sh" ########################################################### # Begin script ########################################################### + # Parse comand line options -while getopts "chs:" opt ; do +while getopts "anchs:t:p:" opt ; do case "$opt" in - c) + p) + __python_etk_module="" + __python_efl_utils_module="" + __lib_modules="" + __python_modules="" + __lib_modules_temp="" + __python_modules_temp="" + __not_all_pkgs=1 + __parameters=`echo $OPTARG | $__sed -e 's/:/ /g'` + for i in $__parameters; do + __i_temp=`echo $i | grep python` + if [ -z $__i_temp ]; then + __lib_modules_temp=$i:$__lib_modules_temp + else + if [ $__i_temp == "python-etk" ]; then + __python_etk_module="python-etk" + elif [ $__i_temp == "python-efl_utils" ]; then + __python_efl_utils_module="python-efl_utils" + else + __python_modules_temp=$i:$__python_modules_temp + fi + fi + done + __lib_modules=`echo $__lib_modules_temp | tr "[:upper:]" "[:lower:]"` + __python_modules=`echo $__python_modules_temp | tr "[:upper:]" "[:lower:]"` + ;; + c) __update_repositories=0 ;; h) @@ -397,20 +58,32 @@ while getopts "chs:" opt ; do __sbox_path=$OPTARG if [ "x$__sbox_path" = "x" ] || [ ! -d $__sbox_path ]; then error "Invalid scratchbox path: $__sbox_path" + exit 1 fi ;; - [?]) + n) + __no_signing=1 + ;; + t) + __sbox_targets_temp=`echo $OPTARG | tr "[:lower:]" "[:upper:]"` + ;; + ?) usage exit 1 ;; esac done -# Initial checks + +############################ +# Initial checks # +########################### +# Removing generated hash +rm -f $__tmp_hash # Check if we're running inside scratchbox if [ -r /targets/links/scratchbox.config ]; then - error "You should run this script ouside the scratchbox environment." + error "You should run this script outside the scratchbox environment." fi # Create base packages dir @@ -420,23 +93,45 @@ if [ ! -d $__base_pkg_dir ]; then msg_end $? fi +# Create tmp dir +if [ ! -d $__tmp_dir ]; then + msg_begin "Creating tmp dir $__tmp_dir" + $__mkdir -p $__tmp_dir + msg_end $? +fi + +# Create versions dir +if [ ! -d $__versions_dir ]; then + msg_begin "Creating versions dir $__versions_dir" + $__mkdir -p $__versions_dir + msg_end $? +fi + # Create log file create_log_file start_log # Download modules under e17/libs -msg "Downloading e17 modules" -get_sources $__lib_modules $__git_repo$__e17_libs +if [ ! -z $__lib_modules ];then + msg "Downloading e17 modules" + get_sources $__lib_modules $__git_repo$__e17_libs +fi # Download python modules under proto/python/efl -msg "Downloading python modules" -get_sources $__python_modules $__git_repo$__e17_python_efl +if [ ! -z $__python_modules ];then + msg "Downloading python modules" + get_sources $__python_modules $__git_repo$__e17_python_efl +fi # Download python-etk module -get_sources $__python_etk_module $__git_repo$__e17_python_etk +if [ ! -z $__python_etk_module ];then + get_sources $__python_etk_module $__git_repo$__e17_python_etk +fi # Download python-efl-utils module -get_sources $__python_efl_utils_module $__git_repo$__e17_python_efl_utils +if [ ! -z $__python_efl_utils_module ];then + get_sources $__python_efl_utils_module $__git_repo$__e17_python_efl_utils +fi # Download python-dispatcher module #get_sources $__python_dispatcher_module $__git_repo$__e17_python_dispatcher @@ -444,11 +139,16 @@ get_sources $__python_efl_utils_module $__git_repo$__e17_python_efl_utils # Setup scratchbox variables setup_sbox +# Setup scratchbox targets if option -t was used +if [ ! -z $__sbox_targets_temp ]; then + __sbox_targets=`echo $__sbox_targets_temp|$__sed -e 's/:/ /g'` +fi + ########################################################### # ARCHITECTURE DEPENDENT MODULES ########################################################### # For each scratchbox target -for target in `$__sbox_sb_conf list --targets`; do +for target in $__sbox_targets; do msg_begin "Checking distro and arch for target $target" setup_distro $target msg_end $? @@ -495,14 +195,14 @@ for target in `$__sbox_sb_conf list --targets`; do fi msg_end $? - if [ -d /tmp/$module/$module ]; then + if [ -d $__tmp_dir/$module/$module ]; then msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? fi - msg_begin " Copying $module dir to /tmp" - cp -u -r $module /tmp + msg_begin " Copying $module dir to $__tmp_dir" + cp -f -u -r $module $__tmp_dir msg_end $? msg_begin " Cleaning $module repository" @@ -510,26 +210,28 @@ for target in `$__sbox_sb_conf list --targets`; do msg_end $? msg_begin " Building $module packages" - build_pkg /tmp/$module + build_pkg $__tmp_dir/$module msg_end $? - msg_begin " Signing $module packages" - sign_pkgs /tmp/$module - msg_end $? + if [ -z $__no_signing ]; then + msg_begin " Signing $module packages" + sign_pkgs $__tmp_dir/$module + msg_end $? + fi msg_begin " Installing $module packages" - install_pkgs /tmp/$module + install_pkgs $__tmp_dir/$module msg_end $? msg_begin " Copying $module packages" if [ "x$__arch" != "xarm" ]; then - mv /tmp/$module/*.dsc /tmp/$module/*.tar.gz $__pkg_dir + mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__pkg_dir fi - mv /tmp/$module/*.deb /tmp/$module/*.changes $__pkg_dir + mv $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir msg_end $? msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? done @@ -543,7 +245,7 @@ exit 0 # ARCHITECTURE INDEPENDENT MODULES ########################################################### # For each scratchbox target -for target in `$__sbox_sb_conf list --targets`; do +for target in $__sbox_targets; do msg_begin "Checking distro and arch for target $target" setup_distro $target msg_end $? @@ -574,13 +276,13 @@ for target in `$__sbox_sb_conf list --targets`; do for module in $__python_efl_utils_module; do msg " Building $module packages for $__distro $__arch" - if [ ! -d /tmp/$module ]; then - mkdir /tmp/$module + if [ ! -d $__tmp_dir/$module ]; then + mkdir $__tmp_dir/$module fi - if [ -d /tmp/$module/$module ]; then + if [ -d $__tmp_dir/$module/$module ]; then msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? fi @@ -598,8 +300,8 @@ for target in `$__sbox_sb_conf list --targets`; do fi msg_end $? - msg_begin " Copying $module dir to /tmp" - cp -u -r $module /tmp + msg_begin " Copying $module dir to $__tmp_dir" + cp -f -u -r $module $__tmp_dir msg_end $? msg_begin " Cleaning $module repository" @@ -607,23 +309,25 @@ for target in `$__sbox_sb_conf list --targets`; do msg_end $? msg_begin " Building $module packages" - build_pkg /tmp/$module + build_pkg $__tmp_dir/$module msg_end $? - msg_begin " Signing $module packages" - sign_pkgs /tmp/$module - msg_end $? + if [ -z $__no_signing ]; then + msg_begin " Signing $module packages" + sign_pkgs $__tmp_dir/$module + msg_end $? + fi msg_begin " Installing $module packages" - install_pkgs /tmp/$module + install_pkgs $__tmp_dir/$module msg_end $? msg_begin " Copying $module packages" - mv /tmp/$module/*.dsc /tmp/$module/*.tar.gz /tmp/$module/*.deb /tmp/$module/*.changes $__pkg_dir + mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir msg_end $? msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? done @@ -636,7 +340,7 @@ done # VIRTUAL PACKAGES ########################################################### # For each scratchbox target -for target in `$__sbox_sb_conf list --targets`; do +for target in $__sbox_targets; do msg_begin "Checking distro and arch for target $target" setup_distro $target msg_end $? @@ -667,38 +371,40 @@ for target in `$__sbox_sb_conf list --targets`; do for module in $__virtual_packages; do msg " Building $module packages for $__distro $__arch" - if [ ! -d /tmp/$module ]; then - mkdir /tmp/$module + if [ ! -d $__tmp_dir/$module ]; then + mkdir $__tmp_dir/$module fi - if [ -d /tmp/$module/$module ]; then + if [ -d $__tmp_dir/$module/$module ]; then msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? fi - msg_begin " Copying $module dir to /tmp" - cp -u -r $module /tmp/$module + msg_begin " Copying $module dir to $__tmp_dir" + cp -f -u -r $module $__tmp_dir/$module msg_end $? msg_begin " Building $module packages" - build_pkg /tmp/$module + build_pkg $__tmp_dir/$module msg_end $? - msg_begin " Signing $module packages" - sign_pkgs /tmp/$module - msg_end $? + if [ -z $__no_signing ]; then + msg_begin " Signing $module packages" + sign_pkgs $__tmp_dir/$module + msg_end $? + fi msg_begin " Installing $module packages" - install_pkgs /tmp/$module + install_pkgs $__tmp_dir/$module msg_end $? msg_begin " Copying $module packages" - mv /tmp/$module/*.dsc /tmp/$module/*.tar.gz /tmp/$module/*.deb /tmp/$module/*.changes $__pkg_dir + mv $__tmp_dir/$module/*.dsc $__tmp_dir/$module/*.tar.gz $__tmp_dir/$module/*.deb $__tmp_dir/$module/*.changes $__pkg_dir msg_end $? msg_begin " Removing temporary $module" - rm -rf /tmp/$module/$module + rm -rf $__tmp_dir/$module/$module msg_end $? done @@ -709,3 +415,4 @@ done # END finish_log + diff --git a/trunk/helper-functions.sh b/trunk/helper-functions.sh deleted file mode 100755 index 36dacce..0000000 --- a/trunk/helper-functions.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Helper functions for utility scripts. - -COLOR_GOOD="\033[1;32m" -COLOR_WARN="\033[1;33m" -COLOR_ERROR="\033[1;31m" -COLOR_NORMAL="\033[0m" - -# error -error() { - echo -e " ${COLOR_ERROR}* E:${COLOR_NORMAL} $*" - exit 1 -} - -# warn -warn() { - echo -e " ${COLOR_WARN}* W:${COLOR_NORMAL} $*" -} - -# msg -msg() { - echo -e " ${COLOR_GOOD}*${COLOR_NORMAL} $*" -} - -# msg_begin -msg_begin() { - echo -en " ${COLOR_GOOD}*${COLOR_NORMAL} $* ..." -} - -# msg_end -msg_end() { - echo -en "\033[72G" - if [ $1 -eq 0 ]; then - echo -e "[ ${COLOR_GOOD}ok${COLOR_NORMAL} ]" - else - echo -e "[${COLOR_ERROR}fail${COLOR_NORMAL}]" - exit 1 - fi -}