#! /usr/bin/env bash ################################################################################ # Updates and recompiles a local KDE tree from SVN # # (c) 2000, 2001, 2002, 2003 by Frerich Raabe # # (c) 2002, 2003 by Stephan Kulow # ################################################################################ # Do not edit this file, change kde-buildrc instead! # ################################################################################ # These strings are defined as variables to make the output look more # consistent. # str_okay="done!" str_error="failed!" # The variables whose name is prefixed with ERR_ hold the error codes which # are returned by the script and depend on the reason for aborting the # execution. # # No error has been noticed, everything seems to be fine. # err_no_error="0" # Could not change into a directory of a module - wrong owner/access # settings? # err_change_into_mod_dir="1" # Could not find the file 'Makefile.in' for a module, mostly happens if # 'make -f Makefile.cvs' hasn't been executed for a module. # err_no_makefile_in="2" # The 'configure' command failed for a module because the system doesn't # support certain features - I hope you activated logfile generation... ;) # err_configure_fail="3" # The compilation of a module failed - if the module is defined in # $critical_modules (see below) the execution is aborted, otherwise the script # will continue with the next module. # err_compile_fail="4" # The installation of a module failed - this mostly happens if there's not # enough free disk space on the partition which $KDEDIRS is mounted to. # err_install_fail="5" # The $KDESRCDIR variable wasn't set or contains a non-existant directory. # err_inv_kdesrcdir="6" # The $QTDIR variable wasn't set, points to a non-existant directory or # doesn't contain a bin/, lib/, or include/ subdirectory. # err_inv_qtdir="7" # .... # The configuration file couldn't be found. # err_no_config="11" # You can't mix CVS_CLEAN and INCREMENTAL_BUILD # err_cvsclean_incremental="12" # You can't mix BUILD_CLEAN and INCREMENTAL_BUILD # err_buildclean_incremental="13" # Certain modules depend on others - those "base" modules which are required # by others to compile and/or run should be listed here to ensure that the # script is aborted in case on of these modules doesn't build. # These modules needs to be build and installed in this specific order! # critical_modules="arts tdelibs tdebase" # Internal variable, do not change. # dateformat="`date +%Y%m%d`" # Private variables fro controlling kppp # we_started_kppp="FALSE" # Connects to the internet using kppp if desired # kppp_connect() { if [ "$USE_KPPP" = "TRUE" ]; then kppp_process=`dcopfind -a kppp-*` if [ "$kppp_process" = "" ]; then #kppp not running kppp > /dev/null 2>&1 & sleep $KPPP_LOAD_TIME `dcop $(dcopfind -a kppp-*) KpppIface beginConnect` #wait for a while sleep $KPPP_CONNECT_TIME kppp_connected=`dcop $(dcopfind -a kppp-*) KpppIface isConnected` if [ "$kppp_connected" = "true" ]; then we_started_kppp="TRUE" echo Connected OK else echo Could not connect, maybe you need to increase KPPP_CONNECT_TIME fi else kppp_connected=`dcop $(dcopfind -a kppp-*) KpppIface isConnected` if [ "$kppp_connected" = "false" ]; then #Start a connection `dcop $(dcopfind -a kppp-*) KpppIface beginConnect` #wait for a while sleep $KPPP_CONNECT_TIME kppp_connected=`dcop $(dcopfind -a kppp-*) KpppIface isConnected` if [ "$kppp_connected" = "true" ]; then we_started_kppp="TRUE" echo Connected OK else echo Could not connect, maybe you need to increase KPPP_CONNECT_TIME fi else echo Kppp is already connected to the internet fi fi fi } # Disconnects from the internet using kppp if desired # kppp_disconnect() { if [ "$USE_KPPP" = "TRUE" ]; then if [ $(dcopfind -a kppp-*) = "" ]; then #kppp not running echo Kppp was not running so cannot be disconnected else if [ "$we_started_kppp" = "TRUE" ]; then echo Disconnecting kppp `dcop $(dcopfind -a kppp-*) KpppIface disconnect` else echo We didnt connect using kppp so we wont disconnect fi fi fi } # This method gives some kind of status message in the title bar of Konsole, # xterm, etc.. Thanks have to go to Malte Starostik # for the code :-) set_title() { which printf > /dev/null 2>&1 || return if ([ "$TERM" = "xterm" ] || [ "$TERM" = "xterm-color" ] || [ "$TERM" = "screen" ]) && tty -s; then printf "\033]0;$1\007" fi } # moves a log file to be named $1, so one can see on first glance move_logfile() { rename_logfile=`echo $logfile | sed -e "s,-build-,-$1-,"` mv "$logfile" "$rename_logfile" logfile=$rename_logfile } # Executes the given command, logging the output to $logfile if requested. # log_cmd() { if [ -n "$logfile" ]; then eval "$1 >> $logfile 2>&1" else eval "$1" fi return $? } module_variable() { eval "$1=\$BASE_$1" varname="$1_"`echo $module|tr a-z A-Z|tr - _|sed "s/\(.*\)-[0-9]*/\1/g"`; # e.g. $1_ARTS etc. varvalue=`eval echo '$'$varname` if [ -n "$varvalue" ]; then eval "$1=\"$varvalue\"" fi } # Inserts a "-> blah <---" style separator into $logfile, and starts a timer log_section() { [ -z "$logfile" ] && return 0 len=`echo $1 | wc -m | sed -e "s,^ *,,"` echo "------------------------------------------------------------------------" \ | sed -e "s,^,-> $1 <," -e "s,.\{$len\}$,," >> $logfile 2>&1 starttime=`date +%s` } # Computes the time elapsed since the last log_section call, # inserts a "----" separator, and the time needed, into $logfile log_endsection() { [ -z "$logfile" ] && return 0 compute_time echo "----------------------------------------------------------------------------" >> $logfile 2>&1 printf "%s for module %s done. Time needed: %02d:%02d:%02d\n" "$1" $module $hours $minutes $seconds >> $logfile 2>&1 echo "" >> $logfile 2>&1 } # This function computes the time which was needed for a certain task, using # expr (instead of shell-specific features) for portability. # compute_time() { duration=`expr \`date +%s\` - $starttime` hours=`expr $duration / 3600` minutes=`expr $duration % 3600 / 60` seconds=`expr $duration % 60` } prepare_update() { # This checks whether the user wants a certain branch and generates the # command line. # cmd_update="svn" if test -d $KDESRCDIR/$module; then test -z "$SUBDIR" && { cmd_update="$cmd_update update" ; return; } cmd_update="$cmd_update switch -r HEAD" else cmd_update="$cmd_update co" fi if [ -z "$ACCOUNT" ]; then cmd_update="$cmd_update $ANONSVNROOT$SUBDIR" else cmd_update="$cmd_update" if [ "$SSHACCOUNT" = "yes" ]; then cmd_update="$cmd_update svn+ssh://$ACCOUNT@svn.kde.org/home/kde$SUBDIR" else cmd_update="$cmd_update https://$ACCOUNT@svn.kde.org/home/kde$SUBDIR" fi fi if [ -n "$CHECKOUT_PARTIAL" -a "$1" = "toponly" ]; then # TODO cmd_update="$cmd_update -N" fi if test ! -d $KDESRCDIR/$module; then cmd_update="$cmd_update $module" fi } # This function installs a compiled CVS module. # install_module() { echo -n " Installing..." set_title "Installing module $module..." log_section "Installation" if log_cmd "$cmd_make_install"; then log_endsection "Installation" if [ -n "$KDELOGDIR" ]; then echo "Build of module $module successfully finished at `date +%c`" >> $logfile [ -n "$cmd_compress" ] && eval "$cmd_compress $logfile" fi echo "$str_okay" echo "Module $module successfully installed in $KDEDIRS!" move_logfile "finished" else echo "$str_error" move_logfile "failed" [ -n "$cmd_compress" ] && eval "$cmd_compress $logfile" [ $critical -eq 0 ] || exit $err_compile_fail fi } make_makefile_cvs() { cmd_make_makefile_cvs="$MAKE -f Makefile.cvs" if [ "$NICECOMPILE" = yes ]; then cmd_make_makefile_cvs="nice $cmd_make_makefile_cvs" fi unset UNSERMAKE || true if [ -n "$USE_UNSERMAKE" ] && \ !(echo $NO_UNSERMAKE_MODULES | grep $module > /dev/null 2>&1); then export UNSERMAKE=$USE_UNSERMAKE fi if [ "$INCREMENTAL_BUILD" = "yes" -a -e "Makefile.in" ]; then cmd_make_makefile_cvs="echo Warning: no Makefile.cvs for module $module - as requested" fi if log_cmd "$cmd_make_makefile_cvs"; then echo "$str_okay" else echo "$str_error" fi } # Disable zsh feature CDPATH= # Get current configuration, bail out if it couldn't be found. # Search order is $PWD:$HOME:`dirname $0` # The name in $HOME is .kde-buildrc (note the leading '.') if [ -e "$PWD/kde-buildrc" ]; then rc_file="$PWD/kde-buildrc" else if [ -e "$HOME/.kde-buildrc" ]; then rc_file="$HOME/.kde-buildrc" else if [ -e "`dirname $0`/kde-buildrc" ]; then rc_file="`dirname $0`/kde-buildrc" else echo "ERROR: Cannot locate configuration file kde-buildrc!"; exit $err_no_config fi fi fi INCREMENTAL_BUILD="no" . $rc_file if [ "${INCREMENTAL_BUILD}" = "yes" -a "${CVS_CLEAN}" = "yes" ]; then echo "ERROR: Cannot use CVS_CLEAN=\"yes\" and INCREMENTAL_BUILD=\"yes\" together!"; exit $err_cvsclean_incremental fi if [ "${INCREMENTAL_BUILD}" = "yes" -a "${BUILD_CLEAN}" = "yes" ]; then echo "ERROR: Cannot use BUILD_CLEAN=\"yes\" and INCREMENTAL_BUILD=\"yes\" together!"; exit $err_buildclean_incremental fi domakecvs=1 dosvnupdate=1 dousage=0 specifiedModules="" # Parse args # while [ $# != 0 ] do arg=$1 case "$arg" in --help) dousage=1 break ;; --version) # Show version echo "$0 version 0.8.15" exit $err_no_error ;; --no-update) dosvnupdate=0 ;; --no-check) domakecvs=0 ;; --incremental) INCREMENTAL_BUILD="yes" ;; --full) INCREMENTAL_BUILD="no" ;; -*) echo "Unhandled option $arg" dousage=1 break ;; *) specifiedModules="$specifiedModules $arg" ;; esac shift done # Show help info if [ "$dousage" -eq 1 ]; then echo "usage: $0 [--options] [modules]" echo "--no-update Do not update from SVN." echo "--no-check Do not re-run Makefile.cvs." echo "--incremental Start make right after update - risky. This also" echo " disables the BUILD_CLEAN and CVS_CLEAN options." echo "--full Do full setup even when INCREMENTAL_BUILD is set." echo "--help Show this message." exit $err_no_error fi # Expand ~ QTDIR=`echo "$QTDIR" | sed -e "s,^\~/,$HOME/,"` KDESRCDIR=`echo "$KDESRCDIR" | sed -e "s,^\~/,$HOME/,"` KDEBUILDDIR=`echo "$KDEBUILDDIR" |sed -e "s,^\~/,$HOME/,"` KDEDIRS=`echo "$KDEDIRS" |sed -e "s,^\~/,$HOME/,"` KDELOGDIR=`echo "$KDELOGDIR" |sed -e "s,^\~/,$HOME/,"` # Make sure some paths are according to the rc file. Note that there are AFAIK # UNIX flavors which don't support LD_LIBRARY_PATH PATH=$QTDIR/bin:$KDEDIRS/bin:$PATH MANPATH=$QTDIR/doc/man:$MANPATH LD_LIBRARY_PATH=$KDEDIRS/lib:$QTDIR/lib:$LD_LIBRARY_PATH if [ -n "$USE_UNSERMAKE" ]; then if [ -n "$MAKE" ]; then echo "overwriting MAKE=$USE_UNSERMAKE" fi MAKE=$USE_UNSERMAKE UNSERMAKE_PATH=`dirname $USE_UNSERMAKE` PATH=$UNSERMAKE_PATH:$PATH fi if [ -z "$MAKE" ]; then MAKE=make fi if [ -n "$specifiedModules" ]; then # In case someone with a tdebase dir in $PWD does autocompletion.. modules=$( echo $specifiedModules | sed -e 's/\///g' ) else if [ "$ONLYLISTEDMODULES" = yes ]; then if [ "$USETDESUPPORT" = yes ]; then modules="tdesupport $critical_modules $KDEMODULES" else modules="$critical_modules $KDEMODULES" fi else modules="$critical_modules" # This generates in 'modules' a list of the modules which shall be updated. # potential_modules=`find $KDESRCDIR -type d -mindepth 1 \ -maxdepth 1 -follow | sed -e "s@.*/?*@@"` for module in $potential_modules; do if [ -d $KDESRCDIR/$module/CVS -a -w $KDESRCDIR/$module ] \ && !(echo $EXCLUDE | grep -q $module) \ && !(echo $modules | grep -q $module) ; then modules="$modules $module" fi done fi fi # Various checks to ensure that the user didn't specify invalid data which # would make our script break. # if [ -n "$KDELOGDIR" -a ! -d "$KDELOGDIR" ]; then if ! mkdir -p "$KDELOGDIR" > /dev/null 2>&1; then echo "WARNING: Could not create logfile-directory." echo "WARNING: Logfile generation deactivated." KDELOGDIR="" fi else if [ -n "$KDELOGDIR" -a ! -w "$KDELOGDIR" ]; then echo "WARNING: Could not obtain write access to specified logfile-directory." echo "WARNING: Logfile generation deactivated." KDELOGDIR="" fi fi if [ -n "$KDELOGDIR" ]; then str_error="$str_error Check the logfile in $KDELOGDIR for further information." fi if [ ! -d "$KDESRCDIR" ]; then echo "ERROR: Invalid source directory specified!"; exit $err_inv_kdesrcdir fi if [ ! -d "$QTDIR" -o ! -d "$QTDIR/lib" -o ! -d "$QTDIR/bin" -o ! -d "$QTDIR/include" ]; then echo "ERROR: Invalid Qt directory specified!"; exit $err_inv_qtdir fi if [ "$COMPRESSLOGS" = yes ]; then if which bzip2 > /dev/null 2>&1; then cmd_compress="`which bzip2` -f " else if which gzip > /dev/null 2>&1; then cmd_compress="`which gzip` -f " else echo "WARNING: Neither bzip2 nor gzip was found, disabling compression of logfiles." cmd_compress="" fi fi fi if which sudo > /dev/null 2>&1; then cmd_sudo="sudo" else cmd_sudo="su -c" fi # Clean the installation directory if selected. # if test "$INSTALLFROMSCRATCH" = yes && test -z "$specifiedModules" ; then mkdir -p $KDEDIRS 2> /dev/null if [ ! -w $KDEDIRS ]; then echo "Enter the root password to clean the installation directory." echo "WARNING: All files and directories in $KDEDIRS will be deleted!" echo -n "Please enter root " eval "$cmd_sudo rm -rf $KDEDIRS/*" else rm -rf $KDEDIRS/* fi fi # Optionally activate cheap tweaks. # if [ "$TWEAKCOMPILE" = yes ]; then CFLAGS="-O0" CXXFLAGS="-O0" export CFLAGS CXXFLAGS fi # Preprocess configuration keys, expand keywords (DISTCC) # if echo $MAKE_OPTS_COMPILE | grep DISTCC > /dev/null; then if [ -n "$DISTCC_HOSTS" ]; then hosts=0 for host in $DISTCC_HOSTS; do hosts=$((${hosts} + 1)) done hosts=$((${hosts} * 2)) else hosts=1 fi MAKE_OPTS_COMPILE=`echo $MAKE_OPTS_COMPILE | sed -e "s,DISTCC,$hosts,"` fi if echo $MAKE_OPTS_COMPILE | grep TEAMBUILDER > /dev/null; then if ! which tbcompiler > /dev/null 2>&1; then echo "TEAMBUILDER is not in PATH and OPTS_COMPILE has TEAMBUILDER" exit 1 fi hosts=`tbcompiler -joblimit` if [ -z "$hosts" ]; then hosts=1 fi MAKE_OPTS_COMPILE=`echo $MAKE_OPTS_COMPILE | sed -e "s,TEAMBUILDER,$hosts,"` fi #Connect to the internet before we start enything # kppp_connect # Guess what? We'll finally start checking out the modules. :-) # # If we want to use unsermake, update that at the very beginning, so that # all the modules make use of the most recent unsermake version. # if [ -n "$USE_UNSERMAKE" ] && [ "$dosvnupdate" -eq 1 ]; then echo -n "Updating unsermake copy in $UNSERMAKE_PATH..." cd "$UNSERMAKE_PATH" svn up > /dev/null 2>&1 echo $str_okay fi BASE_CONFIGUREFLAGS="$CONFIGUREFLAGS" BASE_SUBDIR=$SUBDIR BASE_CHECKOUT_PARTIAL="$CHECKOUT_PARTIAL" for module in $modules; do module_variable SUBDIR SUBDIR=`echo $SUBDIR | sed -e "s,@MODULE@,$module,"` module_variable CHECKOUT_PARTIAL if [ -n "$KDELOGDIR" ]; then rm -f $KDELOGDIR/$module-build-* rm -f $KDELOGDIR/$module-failed-* rm -f $KDELOGDIR/$module-finished-* logfile="$KDELOGDIR/$module-build-$dateformat.log" echo "===============================================================================" > $logfile echo "Build log of module $module, started on `date +%c`" >> $logfile echo "===============================================================================" >> $logfile echo "" >> $logfile fi set_title "Updating module $module..." if [ "$dosvnupdate" -eq 0 ]; then echo -n "Checking module $module (no svn update)..." cmd_update_raw="echo Warning: no svn update of module $module - as requested" else if [ -n "$BRANCH" ]; then echo -n "Updating module $module ($BRANCH)..." else echo -n "Updating module $module ..." fi prepare_update cmd_update_raw="$cmd_update" fi log_section "Update $cmd_update" if [ "$dosvnupdate" -ne 0 -a -n "$CHECKOUT_PARTIAL" ]; then cmd_update_raw="$cmd_update -l $module" fi if test -d $KDESRCDIR/$module; then cd $KDESRCDIR/$module else cd $KDESRCDIR fi if ! log_cmd "$cmd_update_raw"; then echo "$str_error" continue fi if [ "$dosvnupdate" -ne 0 -a -n "$CHECKOUT_PARTIAL" ]; then prepare_update toponly echo "defined subdirs!" for part_dir in $CHECKOUT_PARTIAL; do echo -n "Updating subdirectory $part_dir" log_cmd "$cmd_update $module/$part_dir" echo " $str_okay" done echo -n "Final touch..." fi if [ "$CVS_CLEAN" = "yes" -a -e admin/Makefile.common -a "$INCREMENTAL_BUILD" != "yes" ]; then cmd_make_cvs_clean="$MAKE -f admin/Makefile.common cvs-clean" fi if ! log_cmd "$cmd_make_cvs_clean"; then echo "$str_error" continue fi if [ ! -e Makefile.cvs ]; then echo "$str_okay" continue fi if [ $domakecvs = 1 ] ; then make_makefile_cvs else echo "$src_okay" continue fi log_endsection "Updating" done # Now disconnect from the internet as we've finished updating # kppp_disconnect for module in $modules; do module_variable CONFIGUREFLAGS # Nothing to do for kde-common [ "$module" = "kde-common" ] && continue logfile="$KDELOGDIR/$module-build-$dateformat.log" critical=0 for m in $critical_modules; do if [ $m = $module ]; then critical=1; fi; done if ! cd $KDESRCDIR/$module; then if [ $critical -eq 1 ]; then echo "ERROR: Could not change into directory $KDESRCDIR/$module!" exit $err_change_into_mod_dir else echo "WARNING: Could not change into directory $KDESRCDIR/$module." echo "WARNING: Skipping module $module." continue fi fi # Check whether 'make -f Makefile.cvs' has been called. # if [ ! -e "Makefile.in" ]; then if [ $critical -eq 1 ]; then echo "ERROR: Please execute '$MAKE -f Makefile.cvs' first for module $module!" exit $err_no_makefile_in else echo "WARNING: '$MAKE -f Makefile.cvs' seems not to be executed for" echo "WARNING: module $module, skipping compilation." continue fi fi echo "Building module: $module" if [ -n "$KDEBUILDDIR" ]; then if [ "$BUILD_CLEAN" = "yes" -a "$INCREMENTAL_BUILD" != "yes" ]; then if [ -d $KDEBUILDDIR/$module ]; then echo -n " Removing build dir..." set_title "Removing build dir for module $module..." rm -rf $KDEBUILDDIR/$module echo $str_okay fi fi mkdir -p $KDEBUILDDIR/$module cd $KDEBUILDDIR/$module fi # Configure the module. # echo -n " Configuring..." set_title "Configuring module $module..." if [ -n "$KDEBUILDDIR" ]; then cmd_configure="$KDESRCDIR/$module/configure $CONFIGUREFLAGS --with-qt-dir=$QTDIR" else cmd_configure="./configure $CONFIGUREFLAGS --with-qt-dir=$QTDIR" fi if echo $CONFIGUREFLAGS | grep -v -- "--prefix=" 2>/dev/null >/dev/null; then cmd_configure="$cmd_configure --prefix=$KDEDIRS" fi [ "$NICECOMPILE" = yes ] && cmd_configure="nice $cmd_configure" configure_skipped=0 if [ "$INCREMENTAL_BUILD" = "yes" -a -e "Makefile" ]; then cmd_configure_orig=$cmd_configure cmd_configure="echo Warning: no configure for module $module - as requested" configure_skipped=1 fi log_section "Configuration" if [ -n "$KDELOGDIR" -a $configure_skipped -ne 1 ]; then echo $cmd_configure >> $logfile fi if ! log_cmd "$cmd_configure"; then echo "$str_error" move_logfile "failed" [ -n "$cmd_compress" ] && eval "$cmd_compress $logfile" [ $critical -eq 0 ] || exit $err_compile_fail continue fi log_endsection "Configuration" if [ $configure_skipped -eq 1 ]; then echo " skipped." else echo "$str_okay" fi if [ $configure_skipped -eq 1 ]; then echo -n " Updating Makefile..." cmd_make_makefile="$MAKE $MAKE_OPTS Makefile" [ "$NICECOMPILE" = yes ] && cmd_make_makefile="nice $cmd_make_makefile" log_section "Updating Makefile" if [ -n "$KDELOGDIR" ]; then echo $cmd_make_makefile >> $logfile fi if ! log_cmd "$cmd_make_makefile"; then echo -n " Falling back to normal Makefile.cvs ..." worked=0 if [ -n "$KDEBUILDDIR" ]; then cd $KDESRCDIR/$module # get back to the supermarket fi rm Makefile.in make_makefile_cvs if [ -n "$KDEBUILDDIR" ]; then cd $KDEBUILDDIR/$module # got the sugar, honey? fi echo -n " Configuring..." if log_cmd "$cmd_configure_orig"; then if log_cmd "$cmd_make_makefile"; then worked=1 fi fi if [ $worked -ne 1 ]; then echo "$str_error" move_logfile "failed" [ -n "$cmd_compress" ] && eval "$cmd_compress $logfile" [ $critical -eq 0 ] || exit $err_compile_fail continue fi fi log_endsection "Updating Makefile" echo "$str_okay" fi # Compile the module. # echo -n " Compiling..." set_title "Compiling module $module..." use_compile_target=no [ -f $KDESRCDIR/$module/Makefile.am.in ] && [ -n "$MAKE_OPTS_COMPILE" ] && [ -n "$USE_UNSERMAKE" ] \ && ! (echo $NO_UNSERMAKE_MODULES | grep $module > /dev/null 2>&1) \ && use_compile_target=yes if [ "$use_compile_target" = yes ]; then cmd_make="$MAKE $MAKE_OPTS_COMPILE" else cmd_make="$MAKE $MAKE_OPTS" fi [ $critical -eq 0 ] && cmd_make="$cmd_make -k" [ "$NICECOMPILE" = yes ] && cmd_make="nice $cmd_make" [ "$use_compile_target" = yes ] && cmd_make="$cmd_make compile" log_section "Compilation $cmd_make" log_cmd "$cmd_make" retval=$? if [ $retval -eq 0 ]; then log_endsection "Compilation" echo "$str_okay" # Link the module if [ "$use_compile_target" = yes ]; then echo -n " Linking..." set_title "Linking module $module..." cmd_make="$MAKE $MAKE_OPTS" [ $critical -eq 0 ] && cmd_make="$cmd_make -k" [ "$NICECOMPILE" = yes ] && cmd_make="nice $cmd_make" log_section "Linking $cmd_make" log_cmd "$cmd_make" retval=$? if [ $retval -eq 0 ]; then log_endsection "Linking" echo "$str_okay" fi fi fi if [ $retval -eq 0 ]; then # Install the module. # cmd_make_install="$MAKE $MAKE_OPTS" [ $critical -eq 0 ] && cmd_make_install="$cmd_make_install -k" [ "$NICECOMPILE" = yes ] && cmd_make_install="nice $cmd_make_install" cmd_make_install="$cmd_make_install install" if [ ! -w $KDEDIRS ]; then eval "$cmd_sudo \"$cmd_make_install\"" else install_module fi else echo "$str_error" # Attempt to display the actual error grep -m1 -A2 ":[0-9]*: error:" $logfile move_logfile "failed" [ -n "$cmd_compress" ] && eval "$cmd_compress $logfile" [ $critical -eq 0 ] || exit $err_compile_fail fi done set_title "KDE build finished." exit $err_no_error =head1 NAME kde-build - Updates and recompiles a tree of KDE modules =head1 SYNOPSIS kde-build =head1 DESCRIPTION kde-build has been designed to keep a local copy of several KDE modules up to date and recompile them. Those modules have to be saved in a common directory, e.g. something like ~/kde-src/ | +-> tdelibs/ | +-> tdebase/ | \-> tdenetwork/ In this case, the KDE source directory would be ~/kde-src/. The script will take care of compiling them in the correct order, checks for dependencies and resolves them as far as possible. Please note that, prior to first invocation of the script, the configuration file 'F' has to be modified to reflect the local environment, such as paths etc. =head1 RETURN VALUE The following error codes are returned by the script. 0 - No error seems to have occured. 1 - The script could not change into the directory of a module. 2 - The script could not open the file 'Makefile.in' of a module. 3 - The configuration of a module failed. 4 - The compilation of a module failed. 5 - The installation of a module failed. 6 - An invalid source directory was specified. 7 - An invalid Qt directory was specified. 11 - The configuration file F couldn't be loaded. 12 - Both CVS_CLEAN and INCREMENTAL_BUILD were set 13 - Both BUILD_CLEAN and INCREMENTAL_BUILD were set =head1 EXAMPLES cd ~/scripts/; vi ./kde-buildrc; ./kde-build On Debian systems, an example F can be found in the directory /usr/share/doc/tdesdk-scripts/. =head1 BUGS Probably. =head1 TODO Add a DIAGNOSIS section to this man page. =head1 AUTHOR Frerich Raabe =cut # vim:et:ts=2:sw=2