4 # This is distmaker script for CiviCRM
6 # "Protected by an electric fence and copyright control."
7 # Thanks to Kleptones for moral support when writing this.
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).
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
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
26 # ========================================================
28 # ========================================================
31 # Where are we called from?
35 source "$P/dists/common.sh"
37 # Set no actions by default
54 echo " distmaker.sh OPTION"
56 echo "Options available:"
57 echo " all - generate all available tarballs"
58 echo " l10n - generate internationalization data"
59 echo " Backdrop - generate Backdrop PHP5 module"
60 echo " Drupal|d5 - generate Drupal7 PHP5 module"
61 echo " Drupal6|d5.6 - generate Drupal6 PHP5 module"
62 echo " d7_dir - generate Drupal7 PHP5 module, but output to a directory, no tarball"
63 echo " Joomla|j5 - generate Joomla PHP5 module"
64 echo " WordPress|wp5 - generate Wordpress PHP5 module"
65 echo " patchset - generate a tarball with patch files"
66 echo " sk - generate Drupal StarterKit module"
68 echo "You also need to have distmaker.conf file in place."
69 echo "See distmaker.conf.dist for example contents."
70 echo "Alternatively you can set the required variables as "
71 echo "environment variables, eg. for your machine or by calling "
72 echo "this script using "
74 echo "env DM_TARGETDIR=/path/to/output/dir/for/files/or/tarball distmaker.sh all"
76 echo "optional environmentals:"
78 echo " DM_GENFILESDIR (default $TMPDIR/genfiles)"
79 echo " DM_TARGETDIR= (default $TMPDIR/civicrm)"
80 echo " DM_OUTPUTDIR= (default $DM_TARGETDIR/civicrm_files)"
85 THIS_DIR
="$( cd "$
( dirname "${BASH_SOURCE[0]}" )" && pwd )";
87 # Check if config is ok.
90 if [ -f $P/distmaker.conf
] ; then
91 source "$P/distmaker.conf"
94 if [ -z $DM_SOURCEDIR ] ; then
95 DM_SOURCEDIR
="$THIS_DIR/..";
96 echo "Setting source dir to $DM_SOURCEDIR";
99 if [ -z $DM_TMPDIR ] && [ -e $TMPDIR ] ; then
100 DM_TMPDIR
=$TMPDIR/civicrm
103 if [ -z $DM_GENFILESDIR ] && [ -e $TMPDIR ] ; then
104 DM_GENFILESDIR
=$TMPDIR/genfiles
107 if [ -z $DM_PACKAGESDIR ] ; then
108 DM_PACKAGESDIR
="$DM_SOURCEDIR/packages"
111 if [ -z $DM_OUTPUTDIR ] ; then
112 DM_OUTPUTDIR
="$DM_TARGETDIR/civicrm_files"
115 # Test for distmaker.conf file availability, cannot proceed without it anyway
116 if [ -z $DM_GENFILESDIR ] ||
[ -z $DM_TMPDIR ] ||
[ -z $DM_TARGETDIR ]; then
117 echo; echo "Required variables not defined!"; echo;
119 echo "your variables"
120 echo "DM_SOURCEDIR : $DM_SOURCEDIR";
121 echo "DM_TARGETDIR : $DM_TARGETDIR (required)";
122 echo "DM_TMPDIR : $DM_TMPDIR";
123 echo "DM_GENFILESDIR : $DM_GENFILESDIR";
124 echo "DM_PACKAGESDIR : $DM_PACKAGESDIR";
125 echo "Current directory is : $THIS_DIR";
128 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_DRUPAL8 DM_REF_JOOMLA DM_REF_WORDPRESS DM_REF_PACKAGES
129 if [ ! -d "$DM_SOURCEDIR" ]; then
130 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;
132 for k
in "$DM_GENFILESDIR" "$DM_TARGETDIR" "$DM_TMPDIR"; do
133 if [ -z "$k" ] ; then
134 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;
137 if [ ! -d "$k" ]; then
148 # Figure out what to do
152 echo; echo "Generating L10N module"; echo;
158 echo; echo "Generating Backdrop PHP5 module"; echo;
164 echo; echo "Generating Drupal7 PHP5 module"; echo;
168 # Drupal 7 - Output to directory
170 echo; echo "Generating Drupal7 Directory"; echo;
174 # DRUPAL7 PHP5 StarterKit package
176 echo; echo "Generating Drupal7 PHP5 starter kit minimal module"; echo;
182 echo; echo "Generating Drupal6 PHP5 module"; echo;
188 echo; echo "Generating Joomla PHP5 module"; echo;
194 echo; echo "Generating Wordpress PHP5 module"; echo;
200 echo; echo "Generating patchset"; echo;
206 echo; echo "Generating repo report module"; echo;
212 echo; echo "Generating all the tarballs we've got (not the directories). "; echo;
232 ## Make sure we have the right branch or tag
233 dm_git_checkout
"$DM_SOURCEDIR" "$DM_REF_CORE"
234 dm_git_checkout
"$DM_PACKAGESDIR" "$DM_REF_PACKAGES"
236 ## in theory, this shouldn't matter, but GenCode is CMS-dependent, and we've been doing our past builds based on D7
238 if [ -d "$DM_SOURCEDIR/backdrop" ]; then
239 dm_git_checkout
"$DM_SOURCEDIR/backdrop" "$DM_REF_BACKDROP"
242 if [ -d "$DM_SOURCEDIR/drupal" ]; then
243 dm_git_checkout
"$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
246 if [ -d "$DM_SOURCEDIR/drupal-8" ]; then
247 dm_git_checkout
"$DM_SOURCEDIR/drupal-8" "$DM_REF_DRUPAL8"
250 ## Get fresh dependencies
251 [ -d "$DM_SOURCEDIR/vendor" ] && rm -rf $DM_SOURCEDIR/vendor
252 [ -d "$DM_SOURCEDIR/bower_components" ] && rm -rf $DM_SOURCEDIR/bower_components
253 dm_generate_vendor
"$DM_SOURCEDIR"
255 # Before anything - regenerate DAOs
258 ${DM_PHP:-php} GenCode.php schema
/Schema.xml
$DM_VERSION $GENCODE_CMS
262 if [ "$L10NPACK" = 1 ]; then
263 echo; echo "Packaging for L10N"; echo;
264 bash
$P/dists
/l10n.sh
267 if [ "$BPACK" = 1 ]; then
268 echo; echo "Packaging for Backdrop, PHP5 version"; echo;
269 dm_git_checkout
"$DM_SOURCEDIR/backdrop" "$DM_REF_BACKDROP"
270 bash
$P/dists
/backdrop_php5.sh
273 if [ "$D56PACK" = 1 ]; then
274 echo; echo "Packaging for Drupal6, PHP5 version"; echo;
275 dm_git_checkout
"$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL6"
276 bash
$P/dists
/drupal6_php5.sh
279 if [ "$D5PACK" = 1 ]; then
280 echo; echo "Packaging for Drupal7, PHP5 version"; echo;
281 dm_git_checkout
"$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
282 bash
$P/dists
/drupal_php5.sh
285 if [ "$D7DIR" = 1 ]; then
286 echo; echo "Packaging for Drupal7, Directory not tarball, PHP5 version"; echo;
287 dm_git_checkout
"$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
288 bash
$P/dists
/drupal7_dir_php5.sh
291 if [ "$SKPACK" = 1 ]; then
292 echo; echo "Packaging for Drupal7, PHP5 StarterKit version"; echo;
293 dm_git_checkout
"$DM_SOURCEDIR/drupal" "$DM_REF_DRUPAL"
294 bash
$P/dists
/drupal_sk_php5.sh
297 if [ "$J5PACK" = 1 ]; then
298 echo; echo "Packaging for Joomla, PHP5 version"; echo;
299 dm_git_checkout
"$DM_SOURCEDIR/joomla" "$DM_REF_JOOMLA"
300 bash
$P/dists
/joomla_php5.sh
303 if [ "$WP5PACK" = 1 ]; then
304 echo; echo "Packaging for Wordpress, PHP5 version"; echo;
305 dm_git_checkout
"$DM_SOURCEDIR/WordPress" "$DM_REF_WORDPRESS"
306 bash
$P/dists
/wordpress_php5.sh
309 if [ "$PATCHPACK" = 1 ]; then
310 echo; echo "Packaging for patchset tarball"; echo;
311 bash
$P/dists
/patchset.sh
314 if [ "$REPOREPORT" = 1 ]; then
315 echo; echo "Preparing repository report"; echo;
317 L10NPACK
="$L10NPACK" \
325 bash
$P/dists
/repo-report.sh
328 unset DM_SOURCEDIR DM_GENFILESDIR DM_TARGETDIR DM_TMPDIR DM_PHP DM_RSYNC DM_VERSION DM_ZIP
329 echo;echo "DISTMAKER Done.";echo;