update to use efl svn
[maemo-efl] / trunk / scripts / repository-functions.sh
1 #!/bin/sh
2
3 ###########################################################
4 # Maemo-efl building script
5 # Repository functions definitions
6 #
7 # Note: helper-functions.sh and var-definitions.sh needed.
8 ###########################################################
9
10 git_clone_repository() {
11     local repo
12     repo=$1
13     $__git_clone $repo.git >> $__output_file 2>&1
14     return $?
15 }
16
17 git_update_repository() {
18     local repo
19     repo=$1
20
21     if [ ! -d $repo ]; then
22         error "  Trying to update invalid repository"
23     fi
24
25     cd $repo
26     $__git_pull >> $__output_file 2>&1 || return 1
27     cd - > /dev/null 2>&1
28
29     return 0
30 }
31
32 git_clean_repository() {
33     local repo
34     repo=$1
35
36     if [ ! -d $repo ]; then
37         error "  Trying to clean invalid repository"
38     fi
39
40     cd $repo
41     $__git_reset >> $__output_file 2>&1 || return 1
42     $__git_clean >> $__output_file 2>&1 || return 1
43     cd - > /dev/null 2>&1
44
45     return 0
46 }
47
48 svn_checkout_repository() {
49     local repo
50     local rev
51     repo=$1
52     rev=$2
53
54     if [ -n "$rev" ]; then
55         rev="-r $rev"
56     fi
57     $__svn_checkout $repo $rev >> $__output_file 2>&1
58     return $?
59 }
60
61 svn_update_repository() {
62     local repo
63     local rev
64     repo=$1
65     rev=$2
66
67     if [ -n "$rev" ]; then
68         rev="-r $rev"
69     fi
70
71     if [ ! -d $repo ]; then
72         error "  Trying to update invalid repository"
73     fi
74
75     cd $repo
76     $__svn_update $repo $rev>> $__output_file 2>&1 || return 1
77     cd - > /dev/null 2>&1
78
79     return 0
80 }
81
82 svn_latest_rev() {
83     __svn_latest_rev=`$__svn info $__svn_repo | $__grep "Last Changed Rev:" | cut -d" " -f4`
84 }
85
86 get_sources() {
87     local modules
88     local repo
89     local git
90     local pkg_version
91     local svn_rev
92     local rep_rev
93     local svn_rev_str
94
95     modules=`echo $1|$__sed -e 's/:/ /g'`
96     repo=$2
97
98     for module in $modules; do
99
100         if [ ! -d $module ]; then
101             error "Directory $module does not exist."
102         fi
103
104         cd $module
105
106         pkg_version=`$__dpkg_parsechangelog | $__grep Version: | cut -d" " -f2`
107         svn_rev=`echo $pkg_version | $__sed -nr 's/.*svn([0-9]+).*/\1/p'`
108         git=`echo $repo|$__grep "git://"`
109
110         if [ -n "$svn_rev" ]; then
111                 svn_rev_str="(rev: $svn_rev)"
112         else
113                 svn_rev_str=
114         fi
115
116         if [ $__force_remove -eq 1 ]; then
117                 if [ -d $module ]; then
118                     rm -rf $module
119                 fi
120         fi
121
122         if [ -n "$git" ]; then
123             if [ -d $module/.git ]; then
124                 if [ ! $__update_repositories -eq 0 ]; then
125                     log_to_file "Updating existing repository at $PWD/$module"
126
127                     msg_begin "  Updating $module repository"
128                     git_update_repository $module
129                     msg_end $?
130                 else
131                     log_to_file "Skipping update of $module repository"
132                 fi
133             elif [ -d $module ]; then
134                 log_to_file "Removing invalid repository at $PWD/$module"
135                 rm -rf $module
136             fi
137
138             if [ ! -d $module ]; then
139                 msg_begin "  Cloning $repo/$module.git"
140                 git_clone_repository $repo/$module
141                 msg_end $?
142             fi
143         else
144             if [ -d $module/.svn ]; then
145                 rep_rev=`$__svn info $module | $__sed -nr 's/Revision: ([0-9]*)/\1/p'`
146                 if [ ! $__update_repositories -eq 0 -a "x$rep_rev" != "x$svn_rev" ]; then
147                     log_to_file "Updating existing repository at $PWD/$module"
148                     msg_begin "  Updating $module repository $svn_rev_str"
149                     svn_update_repository $module $svn_rev
150                     msg_end 0
151                     rep_rev=`$__svn info $module | $__sed -nr 's/Revision: ([0-9]*)/\1/p'`
152                     if [ "x$rep_rev" != "x$svn_rev" ]; then
153                         warn "Unable to update the repository to rev. $svn_rev"
154                     fi
155                 else
156                     log_to_file "Skipping update of $module repository"
157                 fi
158             elif [ -d $module ]; then
159                  log_to_file "Removing invalid repository at $PWD/$module"
160                  rm -rf $module
161             fi
162
163             if [ ! -d $module ]; then
164                  msg_begin "  Checking out $repo$module $svn_rev_str"
165                  svn_checkout_repository $repo$module $svn_rev
166                  if [ $? -ne 0 ]; then
167                       warn "Unable to checkput the repository to rev. $svn_rev"
168                  else
169                      msg_end 0
170                  fi
171             fi
172
173         fi
174
175         cd ..
176     done
177 }
178
179 download_modules() {
180     # Download e17 modules
181     if [ ! -z $__lib_modules ];then
182         msg "Downloading e17 modules"
183         get_sources $__lib_modules $__svn_repo
184     fi
185
186     # Download python modules under proto/python/efl
187     if [ ! -z $__python_modules ];then
188         msg "Downloading python modules"
189         get_sources $__python_modules $__svn_repo$__e17_python_efl
190     fi
191
192     # Download python-efl-utils module$
193     if [ ! -z $__python_efl_utils_module ];then
194         get_sources $__python_efl_utils_module $__git_repo$__e17_python_efl_utils
195     fi
196
197     # Download python-dispatcher module
198     #get_sources $__python_dispatcher_module $__git_repo$__e17_python_dispatcher
199 }
200
201 clean_modules() {
202     msg_begin "Cleaning up modules directories"
203     for module in `echo $__all_modules|$__sed -e 's/:/ /g'`; do
204         if [ -d $module/$module ]; then
205             rm -rf $module/$module
206         fi
207     done
208     msg_end $?
209 }