Merge pull request #8863 from fuzionnz/CRM-19215
[civicrm-core.git] / distmaker / distmaker.sh
1 #!/bin/bash -v
2 set -e
3
4 # This is distmaker script for CiviCRM
5 # Author: michau
6 # "Protected by an electric fence and copyright control."
7 # Thanks to Kleptones for moral support when writing this.
8
9 # You need to ensure the following variables are defined. They are traditionally defined
10 # in distmaker.conf but you can also defined them as an environment variable or by
11 # calling the script with env DM_REF_CORE=4.7 (for example).
12 #
13 # DM_SOURCEDIR=/home/user/svn/civicrm <- sources
14 # DM_GENFILESDIR=/home/user/generated <- generated files
15 # DM_TMPDIR=/tmp <- temporary files (will be deleted afterwards)
16 # DM_TARGETDIR=/tmp/outdir <- target dir for tarballs
17 # DM_REF_CORE=master <- Git branch/tag name
18 #
19 # Optional variables
20 # DM_PHP=/opt/php5/bin/php <- php5 binary
21 # DM_RSYNC=/usr/bin/rsync <- rsync binary
22 # DM_VERSION=trunk.r1234 <- what the version number should be
23 # DM_ZIP=/usr/bin/zip <- zip binary
24 #
25 #
26 # ========================================================
27 # DO NOT MODIFY BELOW
28 # ========================================================
29
30
31 # Where are we called from?
32 P=`dirname $0`
33 # Current dir
34 ORIGPWD=`pwd`
35 source "$P/dists/common.sh"
36
37 # Set no actions by default
38 BPACK=0
39 D5PACK=0
40 D56PACK=0
41 D7DIR=0
42 J5PACK=0
43 WP5PACK=0
44 SK5PACK=0
45 L10NPACK=0
46
47 # Display usage
48 display_usage()
49 {
50 echo
51 echo "Usage: "
52 echo " distmaker.sh OPTION"
53 echo
54 echo "Options available:"
55 echo " all - generate all available tarballs"
56 echo " l10n - generate internationalization data"
57 echo " Backdrop - generate Backdrop PHP5 module"
58 echo " Drupal|d5 - generate Drupal7 PHP5 module"
59 echo " Drupal6|d5.6 - generate Drupal6 PHP5 module"
60 echo " d7_dir - generate Drupal7 PHP5 module, but output to a directory, no tarball"
61 echo " Joomla|j5 - generate Joomla PHP5 module"
62 echo " WordPress|wp5 - generate Wordpress PHP5 module"
63 echo " sk - generate Drupal StarterKit module"
64 echo
65 echo "You also need to have distmaker.conf file in place."
66 echo "See distmaker.conf.dist for example contents."
67 echo "Alternatively you can set the required variables as "
68 echo "environment variables, eg. for your machine or by calling "
69 echo "this script using "
70 echo
71 echo "env DM_TARGETDIR=/path/to/output/dir/for/files/or/tarball distmaker.sh all"
72 echo
73 echo "optional environmentals:"
74 echo " DM_SOURCEDIR "
75 echo " DM_GENFILESDIR (default $TMPDIR/genfiles)"
76 echo " DM_TARGETDIR= (default $TMPDIR/civicrm)"
77 echo " DM_OUTPUTDIR= (default $DM_TARGETDIR/civicrm_files)"
78 echo
79
80 }
81
82 THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )";
83
84 # Check if config is ok.
85 check_conf()
86 {
87 if [ -f $P/distmaker.conf ] ; then
88 source "$P/distmaker.conf"
89 fi
90
91 if [ -z $DM_SOURCEDIR ] ; then
92 DM_SOURCEDIR="$THIS_DIR/..";
93 echo "Setting source dir to $DM_SOURCEDIR";
94 fi
95
96 if [ -z $DM_TMPDIR ] && [ -e $TMPDIR ] ; then
97 DM_TMPDIR=$TMPDIR/civicrm
98 fi
99
100 if [ -z $DM_GENFILESDIR ] && [ -e $TMPDIR ] ; then
101 DM_GENFILESDIR=$TMPDIR/genfiles
102 fi
103
104 if [ -z $DM_PACKAGESDIR ] ; then
105 DM_PACKAGESDIR="$DM_SOURCEDIR/packages"
106 fi
107
108 if [ -z $DM_OUTPUTDIR ] ; then
109 DM_OUTPUTDIR="$DM_TARGETDIR/civicrm_files"
110 fi
111
112 # Test for distmaker.conf file availability, cannot proceed without it anyway
113 if [ -z $DM_GENFILESDIR ] || [ -z $DM_TMPDIR ] || [ -z $DM_TARGETDIR ]; then
114 echo; echo "Required variables not defined!"; echo;
115 display_usage
116 echo "your variables"
117 echo "DM_SOURCEDIR : $DM_SOURCEDIR";
118 echo "DM_TARGETDIR : $DM_TARGETDIR (required)";
119 echo "DM_TMPDIR : $DM_TMPDIR";
120 echo "DM_GENFILESDIR : $DM_GENFILESDIR";
121 echo "DM_PACKAGESDIR : $DM_PACKAGESDIR";
122 echo "Current directory is : $THIS_DIR";
123 exit 1
124 else
125 export DM_SOURCEDIR DM_GENFILESDIR DM_TMPDIR DM_TARGETDIR DM_PHP DM_RSYNC DM_ZIP DM_VERSION DM_REF_CORE DM_REF_DRUPAL DM_REF_DRUPAL6 DM_REF_JOOMLA DM_REF_WORDPRESS DM_REF_PACKAGES
126 if [ ! -d "$DM_SOURCEDIR" ]; then
127 echo; echo "ERROR! " DM_SOURCEDIR "directory not found!"; echo "(if you get empty directory name, it might mean that one of necessary variables is not set)"; echo;
128 fi
129 for k in "$DM_GENFILESDIR" "$DM_TARGETDIR" "$DM_TMPDIR"; do
130 if [ -z "$k" ] ; then
131 echo; echo "ERROR! " $k "directory not found!"; echo "(if you get empty directory name, it might mean that one of necessary variables is not set)"; echo;
132 exit 1
133 fi
134 if [ ! -d "$k" ]; then
135 mkdir -p "$k"
136 fi
137 done
138 fi
139 }
140
141 # Let's go.
142
143 check_conf
144
145 # Figure out what to do
146 case $1 in
147 # L10N PHP5
148 l10n)
149 echo; echo "Generating L10N module"; echo;
150 L10NPACK=1
151 ;;
152
153 # BACKDROP PHP5
154 Backdrop)
155 echo; echo "Generating Backdrop PHP5 module"; echo;
156 BPACK=1
157 ;;
158
159 # DRUPAL7 PHP5
160 d5|Drupal)
161 echo; echo "Generating Drupal7 PHP5 module"; echo;
162 D5PACK=1
163 ;;
164
165 # Drupal 7 - Output to directory
166 d7_dir)
167 echo; echo "Generating Drupal7 Directory"; echo;
168 D7DIR=1
169 ;;
170
171 # DRUPAL7 PHP5 StarterKit package
172 sk)
173 echo; echo "Generating Drupal7 PHP5 starter kit minimal module"; echo;
174 SKPACK=1
175 ;;
176
177 # DRUPAL6 PHP5
178 d5.6|Drupal6)
179 echo; echo "Generating Drupal6 PHP5 module"; echo;
180 D56PACK=1
181 ;;
182
183 # JOOMLA PHP5
184 j5|Joomla)
185 echo; echo "Generating Joomla PHP5 module"; echo;
186 J5PACK=1
187 ;;
188
189 # WORDPRESS PHP5
190 wp5|WordPress)
191 echo; echo "Generating Wordpress PHP5 module"; echo;
192 WP5PACK=1
193 ;;
194
195 # ALL
196 all)
197 echo; echo "Generating all the tarballs we've got (not the directories). "; echo;
198 BPACK=1
199 D5PACK=1
200 D56PACK=1
201 J5PACK=1
202 WP5PACK=1
203 SKPACK=1
204 L10NPACK=1
205 ;;
206
207 # USAGE
208 *)
209 display_usage
210 exit 0
211 ;;
212
213 esac
214
215 ## Make sure we have the right branch or tag
216 dm_git_checkout "$DM_SOURCEDIR" "$DM_REF_CORE"
217 dm_git_checkout "$DM_PACKAGESDIR" "$DM_REF_PACKAGES"
218
219 ## in theory, this shouldn't matter, but GenCode is CMS-dependent, and we've been doing our past builds based on D7
220 GENCODE_CMS=
221 if [ -d "$DM_SOURCEDIR/backdrop" ]; then
222 dm_git_checkout "$DM_SOURCEDIR/backdrop" "$DM_REF_BACKDROP"
223 GENCODE_CMS=Backdrop
224 fi
225 if [ -d "$DM_SOURCEDIR/drupal" ]; then
226 dm_git_checkout "$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
227 GENCODE_CMS=Drupal
228 fi
229
230 ## Get latest dependencies
231 dm_generate_vendor "$DM_SOURCEDIR"
232 ## if we already have a bower_compoents dir empty it.
233 if [ -d "$DM_SOURCEDIR/bower_components" ]; then
234 rm -rf $DM_SOURCEDIR/bower_components/*
235 fi
236 dm_generate_bower "$DM_SOURCEDIR"
237
238 # Before anything - regenerate DAOs
239
240 cd $DM_SOURCEDIR/xml
241 ${DM_PHP:-php} GenCode.php schema/Schema.xml $DM_VERSION $GENCODE_CMS
242
243 cd $ORIGPWD
244
245 if [ "$L10NPACK" = 1 ]; then
246 echo; echo "Packaging for L10N"; echo;
247 bash $P/dists/l10n.sh
248 fi
249
250 if [ "$BPACK" = 1 ]; then
251 echo; echo "Packaging for Backdrop, PHP5 version"; echo;
252 dm_git_checkout "$DM_SOURCEDIR/backdrop" "$DM_REF_BACKDROP"
253 bash $P/dists/backdrop_php5.sh
254 fi
255
256 if [ "$D56PACK" = 1 ]; then
257 echo; echo "Packaging for Drupal6, PHP5 version"; echo;
258 dm_git_checkout "$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL6"
259 bash $P/dists/drupal6_php5.sh
260 fi
261
262 if [ "$D5PACK" = 1 ]; then
263 echo; echo "Packaging for Drupal7, PHP5 version"; echo;
264 dm_git_checkout "$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
265 bash $P/dists/drupal_php5.sh
266 fi
267
268 if [ "$D7DIR" = 1 ]; then
269 echo; echo "Packaging for Drupal7, Directory not tarball, PHP5 version"; echo;
270 dm_git_checkout "$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
271 bash $P/dists/drupal7_dir_php5.sh
272 fi
273
274 if [ "$SKPACK" = 1 ]; then
275 echo; echo "Packaging for Drupal7, PHP5 StarterKit version"; echo;
276 dm_git_checkout "$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
277 bash $P/dists/drupal_sk_php5.sh
278 fi
279
280 if [ "$J5PACK" = 1 ]; then
281 echo; echo "Packaging for Joomla, PHP5 version"; echo;
282 dm_git_checkout "$DM_SOURCEDIR/joomla" "$DM_REF_JOOMLA"
283 bash $P/dists/joomla_php5.sh
284 fi
285
286 if [ "$WP5PACK" = 1 ]; then
287 echo; echo "Packaging for Wordpress, PHP5 version"; echo;
288 dm_git_checkout "$DM_SOURCEDIR/WordPress" "$DM_REF_WORDPRESS"
289 bash $P/dists/wordpress_php5.sh
290 fi
291
292 unset DM_SOURCEDIR DM_GENFILESDIR DM_TARGETDIR DM_TMPDIR DM_PHP DM_RSYNC DM_VERSION DM_ZIP
293 echo;echo "DISTMAKER Done.";echo;