#!/bin/bash -x build_path=${SRCDIR}/build_result __set_parameter() { build_id=${package_name} build_type=N build_result_directory=${build_type}.${build_id} build_result_path="$build_path/$build_result_directory" architecture=x86 ide_root_path_name=IDE case ${platform} in linux) archive_platform_name=linux windowing=gtk ;; windows) archive_platform_name=win32 windowing=win32 ;; *) echo "${platform} is not support yet." ;; esac result_archive_file=${build_id}-${archive_platform_name}.${windowing}.${architecture}.zip } __set_build_parameter() { case ${platform} in linux) reference_ide_path=${ROOTDIR}/indigo-pde/eclipse ;; windows) reference_ide_path=${ROOTDIR}/indigo-winpde/eclipse ;; *) echo "${platform} is not support yet." ;; esac } __set_install_parameter() { INSTALL_DIR=${SRCDIR}/package/${package_name}.package.${platform}/data } __clean_build_environment() { if [ -d $build_path ] then echo "Build result directory : [$build_path]" else echo "Make build result directory [$build_path]" mkdir -p $build_path fi echo "Remove legacy build files..." if [ -d ${build_result_path}/${archive_platform_name}.${windowing}.${architecture} ] then rm -rf ${build_result_path}/${archive_platform_name}.${windowing}.${architecture} fi if [ -e ${build_result_path}/${result_archive_file} ] then rm -rf ${build_result_path}/${result_archive_file} fi if [ -d ${build_path}/tmp ] then rm -rf ${build_path}/tmp fi if [ -d ${build_path}/buildRepo ] then rm -rf ${build_path}/buildRepo fi rm -r ${build_path}/*.xml rm -r ${build_path}/*.properties rm -r ${build_path}/*.clean if [ -d $build_path/plugins ] then echo "plugins directory recreate..." rm -rf $build_path/plugins mkdir $build_path/plugins else echo "Make plugins directory..." mkdir $build_path/plugins fi if [ -d $build_path/features/ ] then echo "features directory recreate..." rm -rf $build_path/features mkdir $build_path/features else echo "Make features directory..." mkdir $build_path/features fi } __copy_build_sources() { echo "Copy features from $SRCDIR to $build_path/features" cp -r $SRCDIR/*.feature $build_path/features echo "Copy plugins from $SRCDIR to $build_path/plugins" cp -r $SRCDIR/* $build_path/plugins rm -rf $build_path/plugins/*.feature } __copy_dependency_plugins() { dependency_plugin_path=${ROOTDIR}/${ide_root_path_name} if [ -d ${dependency_plugin_path} ] then cp -rf ${dependency_plugin_path}/features/* ${build_path}/features/ cp -rf ${dependency_plugin_path}/plugins/* ${build_path}/plugins/ fi } __make_ant_build_properties_file() { builder_path="${SRCDIR}/builder" parent_path_of_based_eclipse=${reference_ide_path}/.. echo "Make build.properties file..." if [ ! -e $builder_path/build.properties.clean ] ; then echo "ERROR : \"build.properties.clean\" file does not exist..." exit 1 fi cp $builder_path/build.properties.clean $build_path cp $builder_path/customTargets.xml $build_path if [ -d $reference_ide_path ] then sed -e "s;\(^buildDirectory=\).*;\1${build_path};g" \ -e "s;\(^base=\).*;\1${parent_path_of_based_eclipse};g" \ -e "s;\(^baseLocation=\).*;\1${reference_ide_path};g" \ -e "s;\(^configs=\).*;\1${archive_platform_name},${windowing},${architecture};g" \ -e "s;\(^buildType=\).*;\1${build_type};g" \ -e "s;\(^buildId=\).*;\1${build_id};g" \ -e "s;\(^archivePrefix=\).*;\1${build_id};g" \ < $build_path/build.properties.clean > $build_path/build.properties else echo "ERROR : target eclipse is not exist." exit 1 fi } __execute_pde_build() { echo "Execute Product Ant Builder..." equinox_launcher=`echo org.eclipse.equinox.launcher_*.jar` pde_build=`echo org.eclipse.pde.build_*` java -jar ${reference_ide_path}/plugins/$equinox_launcher -application org.eclipse.ant.core.antRunner -buildfile ${reference_ide_path}/plugins/$pde_build/scripts/productBuild/productBuild.xml -Dbuilder=$build_path -Dosgi.locking=none 2>&1 if [ $? != 0 ]; then echo "Build failed..." exit 1 fi } __unzip_plugin_pack() { echo "unzip to $build_result_path" unzip -a $build_result_path/${result_archive_file} -d $build_result_path/${archive_platform_name}.${windowing}.${architecture} } build_plugins() { case ${platform} in linux) echo "build plugin for ${platform}" ;; windows) echo "build plugin for ${platform}" ;; *) echo "${platform} is not support yet." exit 1 ;; esac __set_parameter __set_build_parameter __clean_build_environment __copy_build_sources __copy_dependency_plugins __make_ant_build_properties_file __execute_pde_build __unzip_plugin_pack echo "Build SUCCESS. You will find SDK IDE in \"${build_result_path}\"." } __clean_packaging_environment() { if [ -d ${INSTALL_DIR} ] then rm -rf ${INSTALL_DIR} else mkdir -p ${INSTALL_DIR} fi } __copy_necessary_binaries() { echo "add necessary files." } packaging_plugins() { __set_parameter __set_install_parameter __clean_packaging_environment __copy_necessary_binaries install_ide_path=${INSTALL_DIR}/${ide_root_path_name} if [ ! -d ${install_ide_path} ] then mkdir -p ${install_ide_path} fi cp -rf ${build_result_path}/${archive_platform_name}.${windowing}.${architecture}/${package_name}/* ${install_ide_path}/ } # clean clean() { echo "=========================================CLEAN============================================" make clean rm -rf ${SRCDIR}/*.zip rm -rf ${SRCDIR}/*.tar.gz rm -rf ${build_path} } # build build() { echo "=========================================BUILD============================================" pkgname_and_platform_list=`awk 'BEGIN{RS="\n\n"; FS="\n"} /Package:/{for(i=1;i