diff options
Diffstat (limited to 'package/build.linux')
-rwxr-xr-x | package/build.linux | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/package/build.linux b/package/build.linux new file mode 100755 index 000000000..07c4de454 --- /dev/null +++ b/package/build.linux @@ -0,0 +1,291 @@ +#!/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/* $build_path/features + + echo "Copy plugins from $SRCDIR to $build_path/plugins" + cp -r $SRCDIR/* $build_path/plugins +} + +__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." + ## ex) cp -rf ~~~~/file.file ${INSTALL_DIR}/${ide_root_path_name}/ +} + +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<NF;i++){if($i ~ /^OS:/){print $1,$i}}}' ${SRCDIR}/package/pkginfo.manifest | tr ' ' '@'` + for pkgname_and_platform in ${pkgname_and_platform_list} + do + pkgname_and_platform=`echo $pkgname_and_platform | tr '@' ' '` + package_name=`echo ${pkgname_and_platform} | cut -f1 -d " " | cut -f2 -d ":"` + platform=`echo ${pkgname_and_platform} | cut -f2 -d " " | cut -f2 -d ":"` + + if [ "x${BUILD_TARGET_OS}" = "x${platform}" ] + then + build_plugins + else + echo "" + fi + done +} + +# install +install() +{ + pkgname_and_platform_list=`awk 'BEGIN{RS="\n\n"; FS="\n"} /Package:/{for(i=1;i<NF;i++){if($i ~ /^OS:/){print $1,$i}}}' ${SRCDIR}/package/pkginfo.manifest | tr ' ' '@'` + for pkgname_and_platform in ${pkgname_and_platform_list} + do + echo "=========================================INSTALL============================================" + pkgname_and_platform=`echo $pkgname_and_platform | tr '@' ' '` + package_name=`echo ${pkgname_and_platform} | cut -f1 -d " " | cut -f2 -d ":"` + platform=`echo ${pkgname_and_platform} | cut -f2 -d " " | cut -f2 -d ":"` + + if [ "x${BUILD_TARGET_OS}" = "x${platform}" ] + then + packaging_plugins + else + echo "" + fi + done +} + +[ "$1" = "clean" ] && clean +[ "$1" = "build" ] && build +[ "$1" = "install" ] && install +exit 0 |