Hooray! We can now actually build the packages
authoretrunko <eblima@gmail.com>
Thu, 6 Dec 2007 19:52:28 +0000 (19:52 +0000)
committeretrunko <eblima@gmail.com>
Thu, 6 Dec 2007 19:52:28 +0000 (19:52 +0000)
trunk/build-all.sh

index 7de772b..aaf07d7 100755 (executable)
@@ -16,6 +16,7 @@ __head=`which head`
 __mkdir=`which mkdir`
 __sed=`which sed`
 __uname=`which uname`
+__chmod=`which chmod`
 
 # git definitions
 __git_clone="$__git clone -q"
@@ -124,26 +125,59 @@ function finish_log() {
 EOF
 }
 
-function clone() {
+function clone_repository() {
     local repo
     repo=$1
     `$__git_clone $repo.git >> $__output_file 2>&1 `
     return $?
 }
 
-function pull() {
+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 $?
+    cd - > /dev/null 2>&1
+
+    return 0
 }
 
-function clean() {
+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`
     `$__git_clean >> $__output_file 2>&1`
-    return $?
+    cd - > /dev/null 2>&1
+
+    return 0
 }
 
 function build_pkg() {
-    echo "build_pkg"
+    local dir
+    dir=$1
+
+    cat << EOF >> $dir/sbox_build_pkg
+#!/bin/bash
+
+cd $dir/`basename $dir`
+./autogen.sh >> $dir/sbox_build_pkg.log 2>&1
+$__sbox_dpkg_buildpackage $__build_pkg_options >> $dir/sbox_build_pkg.log 2>&1
+exit \$?
+EOF
+
+    `$__chmod 755 $dir/sbox_build_pkg`
+    `$__sbox $dir/sbox_build_pkg`
     return $?
 }
 
@@ -164,31 +198,35 @@ function get_sources() {
     repo=$2
 
     for module in $modules; do
-        if [ -d $module/$module/.git ]; then
+
+        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/$module"
-                cd $module/$module
+                log_to_file "Updating existing repository at $PWD/$module"
+
                 msg_begin "  Updating $module repository"
-                pull
+                update_repository $module
                 msg_end $?
-                cd - > /dev/null 2>&1
             else
                 log_to_file "Skipping update of $module repository"
             fi
-        elif [ -d $module/$module ]; then
-            log_to_file "Removing invalid repository at $PWD/$module/$module"
-            rm -rf $module/$module
+        elif [ -d $module ]; then
+            log_to_file "Removing invalid repository at $PWD/$module"
+            rm -rf $module
         fi
 
-        if [ ! -d $module/$module ]; then
-            cd $module
+        if [ ! -d $module ]; then
             msg_begin "  Cloning $repo/$module.git"
-            clone $repo/$module
+            clone_repository $repo/$module
             msg_end $?
-            cd - > /dev/null 2>&1
-        elif [ ! -d $module ]; then
-            error "Directory $module does not exist."
         fi
+
+        cd ..
     done
 }
 
@@ -237,15 +275,16 @@ function setup_sbox() {
     fi
 
     __sbox="$__sbox_path/login"
-    __sbox_sb_conf="$__sbox /scratchbox/tools/bin/sb-conf"
+    __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_buildpackage="$__sbox $__sbox_maemo3_debian_bin_path/dpkg-buildpackage"
+    __sbox_dpkg_buildpackage="$__sbox_maemo3_debian_bin_path/dpkg-buildpackage"
 
     __sbox_debian_sarge_bin_path="/scratchbox/devkits/debian-sarge/bin"
-    __sbox_dch="$__sbox $__sbox_debian_sarge_bin_path/dch"
+    __sbox_dch="$__sbox_debian_sarge_bin_path/dch"
 
-    PATH="$__orig_path:$__sbox_maemo3_debian_bin_path:$__sbox_debian_sarge_bin_path"
+    PATH="$__orig_path:$__sbox_tools_bin_path:$__sbox_maemo3_debian_bin_path:$__sbox_debian_sarge_bin_path"
 }
 
 ###########################################################
@@ -326,25 +365,57 @@ for target in `$__sbox_sb_conf list --targets`; do
     # For each module
     for module in `echo $__lib_modules $__python_modules $__python_etk_module|$__sed -e 's/:/ /g'`; do
         msg "  Building $module packages for $__distro $__arch"
-        cd $module/$module
 
-        if [ -d ./debian ]; then
+        if [ -d "./$module/$module/debian" ]; then
             msg_begin "  Removing existing debian directory"
-            rm -rf ./debian
+            rm -rf "./$module/$module/debian"
             msg_end $?
         fi
 
-        cp -r ../debian .
+        msg_begin "  Copying specific debian directory"
+        if [ -d "./$module/debian_$__distro" ]; then
+            cp -r "./$module/debian_$__distro" "./$module/$module/debian"
+        elif [ -d "./$module/debian" ]; then
+            cp -r "./$module/debian" "./$module/$module/"
+        else
+            error "  Missing debian directory for $module"
+        fi
+        msg_end $?
+
+        if [ -d "/tmp/$module" ]; then
+            msg_begin "  Removing temporary $module"
+            rm -rf "/tmp/$module"
+            msg_end $?
+        fi
 
-        # Build package
-        `$__sbox_dpkg_buildpackage $__build_pkg_options >> $__output_file 2>&1`
+        msg_begin "  Copying $module dir to /tmp"
+        cp -r $module /tmp
+        msg_end $?
+
+        msg_begin "  Cleaning $module repository"
+        clean_repository $module/$module
+        msg_end $?
+
+        msg_begin "  Building $module packages"
+        build_pkg /tmp/$module
+        msg_end $?
+
+        msg_begin "  Copying $module packages"
+        if [ "x$__arch" != "xarm" ]; then
+            mv /tmp/$module/*.dsc /tmp/$module/*.tar.gz $__pkg_dir
+        fi
+        mv /tmp/$module/*.deb /tmp/$module/*.changes $__pkg_dir
+        msg_end $?
+
+        msg_begin "  Removing temporary $module"
+        rm -rf /tmp/$module
+        msg_end $?
 
         # Install packages
 
         # Clean tree
-        clean
+        clean_repository $module
 
-        cd - > /dev/null 2>&1
     done
 done