User: curvirgo
Date: 05/12/11 14:56:36

Added:
 /ja/www/documents/develop/
  jabuild.function

Log:
 Buildscript.fonction for 2.0 only

File Changes:

Directory: /ja/www/documents/develop/
=====================================

File [added]: jabuild.function
Url: 
http://ja.openoffice.org/source/browse/ja/www/documents/develop/jabuild.function?rev=1.1&content-type=text/vnd.viewcvs-markup
Added lines: 459
----------------
# Encoding is UTF-8. (There is no BOM.)

# ==================================================
# メッセージを表示する
# ==================================================
PrintMessage ()
{
  local MESSAGE=${1}
  echo
  echo "=================================================="
  echo "${MESSAGE}"
  echo "=================================================="
}

# ==================================================
# ディレクトリが存在しなければ作成する
# ==================================================
CreateDirectory ()
{
  local DIR_NAME=${1}
  local MESSAGE=${2}
  [ -d ${DIR_NAME} ] || {
    [ x${MESSAGE} = x ] || PrintMessage "${MESSAGE}"
    mkdir -p -v ${DIR_NAME}
  }
}

# ==================================================
# ファイルのダウンロードを行う
# ==================================================
DownloadFile ()
{
  local FILE_LOCATE=${1}
  local FILE_NAME=${2}
  [ ! -f ${TEMP_DIR}/${FILE_NAME} -o -f ${TEMP_DIR}/${FILE_NAMEE}.chk ] && {
    cd ${TEMP_DIR}
    touch ${TEMP_DIR}/${FILE_NAME}.chk
    wget -c ${FILE_LOCATE}/${FILE_NAME} -O ${TEMP_DIR}/${FILE_NAME} && rm -f 
${TEMP_DIR}/${FILE_NAME}.chk
    cd ${SRC_ROOT}
  }
}

# ==================================================
# ビルドするプラットホームのチェックを行い表示する
# ==================================================
GetPlatform ()
{
  local PLATFORM=NotSupported
  [ `uname -s` = Linux ] && PLATFORM=LinuxIntel
  [ `uname -s` = SunOS ] && PLATFORM=SolarisSparc
  [ `uname -s` = SunOS -a `uname -m` = i86pc ] && PLATFORM=SolarisIntel
  [ `uname -s` = SunOS -a "${COM}" = "GCC" ] && PLATFORM=SolarisSparcGcc
  [ `uname -s` = SunOS -a `uname -m` = i86pc -a "${COM}" = "GCC" ] && 
PLATFORM=SolarisIntelGcc
  [ `uname -s | grep CYGWIN` ] && PLATFORM=Win32Intel
  [ `uname -s` = Linux -a `uname -m` = ppc ] && PLATFORM=LinuxPPC
  [ `uname -s` = Linux -a `uname -m` = x86_64 ] && PLATFORM=LinuxAMD
  echo ${PLATFORM}
}

# ==================================================
# 
Linuxのディストリビューションを確認しデフォルトパッケージ名を表示する
# ==================================================
GetDefaultPackage ()
{
  local PACKAGE_FORMAT=portable
  [ -f /etc/vine-release ] && PACKAGE_FORMAT=rpm
  [ -f /etc/redhat-release ] && PACKAGE_FORMATE=rpm
  [ -f /etc/debian-version ] && PACKAGE_FORMAT=deb
  echo ${PACKAGE_FORMAT}
}

# ==================================================
# patchファイルを探し出し適用する
# ==================================================
ApplyPatch ()
{
  local PATCH_DIR=${1}
  for PATCH in `echo ${PATCH_DIR}/*.patch | sed '/\*/d'`
  do
    PrintMessage "Patch File : ${PATCH}" | tee -a ${SRC_ROOT}/patch.log
    ${GNUPATCH} -p1 < ${PATCH} | tee -a ${SRC_ROOT}/patch.log
  done
}

# ==================================================
# confiugreスクリプトを実行する
# ==================================================
Configure ()
{
  local CONFIG_FLAGS=${1}
  PrintMessage "Running configure script."
  cd ${SRC_ROOT}/config_office &> /dev/null
  if [ $? ]; then
    eval ./configure ${CONFIG_FLAGS} || {
      PrintMessage "Configure failed. Fix it!"
      exit
    }
    cd ${SRC_ROOT}
  else
    PrintMessage "config_office directory is not found !! Retry sourcefile 
download."
    exit
  fi
}

# ==================================================
# ビルド用環境変数を設定する
# ==================================================
LoadBuildEnvironment ()
{
  if [ x${OOO_BUILD_SYSTEM} = xWin32Intel ]; then
    source ./winenv.set.sh
  else
    source ./${OOO_BUILD_SYSTEM}Env.Set.sh
  fi
}

# ==================================================
# 指定されたプロジェクトをビルドする
# ==================================================
BuildProject ()
{
  local PROJECT=${1}
  local OPTION=${2}
  cd ${SRC_ROOT}/${PROJECT}
  build.pl ${OPTION} || {
    PrintMessage "Can't build ${PROJECT}, fix the bug above."
    exit
  }
  [ x`echo ${PROJECT} | grep -i instsetoo` = x ] && deliver.pl
  cd ${SRC_ROOT}
}

# ==================================================
# 
呼び出し元の環境変数BLD_OPTIONにParallelビルドのオプションを追加、環境変数MAXPROCESS=1を設定する
# Parallelビルドであれば0、Serialビルドであれば1を返す
# ==================================================
ParallelSetting ()
{
  [ x${PARALLEL_BUILD} = xYes ] && {
    export MAXPROCESS=1
    BLD_OPTION="${BLD_OPTION} -P${MAX_JOBS}"
    return 0
  }
  return 1
}

# ==================================================
# rpmインストールセット : 
desktop-integration以下にインストールに不要なdebパッケージがある為それを削除する
# rpmランゲージパック : 
自己解凍スクリプトになっているものを削除し、すでにtar.gz形式でアーカイブされてしまっているファイルを、(後々tar.bz2形式でアーカイブする関係上)ここで一旦展開しておく
# ==================================================
AddhocFix_rpm ()
{
  local PACKAGE_TYPE=${1}
  cd ${RPM_DIR} &> /dev/null && {
    case ${PACKAGE_TYPE} in
      InstallSet)
        PrintMessage "Delete deb_package desktop-integration file"
        rm -fv ./desktop-integration/*.deb
        ;;
      LanguagePack)
        rm -f *.sh
        for file in `echo *.tar.gz | sed '/\*/d'`
        do
          tar zxf ${file}
          rm -f ${file}
        done
        ;;
      *)
        ;;
    esac
    cd ..
  }
}

# ==================================================
# portable : 
core01とそれ以外のパッケージで相互に依存チェックがある為、インストール時に無限ループに陥る現象を解消する為に、core01インストールスクリプト部の依存チェックルーチン部分を削除する。
# ==================================================
AddhocFix_portable ()
{
  local PACKAGE_TYPE=${1}
  cd ${PORTABLE_DIR} &> /dev/null && {
    [ x${PACKAGE_TYPE} = xInstallSet ] && {
      local COUNT=`grep -in 'requires openoffice.org-core02' 
openoffice.org-core01.install | sed 's/:/ /' | awk '{print $1}'`
      let COUNT=COUNT-1
      head -n ${COUNT} openoffice.org-core01.install >  ${TEMP_DIR}/tempfile
      COUNT=`grep -in 'Backing up old versions' openoffice.org-core01.install | 
sed 's/:/ /' | awk '{print $1}'`
      tail +${COUNT} openoffice.org-core01.install >>  ${TEMP_DIR}/tempfile
      mv -f ${TEMP_DIR}/tempfile openoffice.org-core01.install
    }
    for file in `echo *.install | sed '/\*/d'`
    do
      cat ${file} | sed "s/awk '{print \$11}'/awk '{print \$10}'/" > 
${TEMP_DIR}/tempfile
      mv -f ${TEMP_DIR}/tempfile ${file}
    done
    rm -f *.tar.gz
    cd ..
  }
}

# ==================================================
# slackware : install/slack-desc内のPackager [EMAIL PROTECTED]
# ==================================================
AddhocFix_slackware ()
{
  cd ${PORTABLE_DIR} && {
    for file in `echo * | sed '/\*/d'`
    do
      [ -d ${file} ] && rm -fr ${file}
    done
    mkdir -p tempdir
    for file in `echo *.tgz | sed '/\*/d'`
    do
      PrintMessage "Unpacking installation set [ File : ${file}]"
      tar zxf ${file} -Ctempdir && rm -f ${file}
      PrintMessage "Replace Packager Name : [EMAIL PROTECTED] -> 
${BUILDER_NAME}"
      cat tempdir/install/slack-desc | eval sed 's/[EMAIL 
PROTECTED]/${BUILDER_NAME}/' > slack-desc
      mv -f slack-desc tempdir/install
      PrintMessage "Repacking installation set [ File : ${file}]"
      local FILENAME=`basename ${file} .tgz`
      cd tempdir && tar cf ../${FILENAME}.tar . && cd .. && gzip -9 
${FILENAME}.tar && mv ${FILENAME}.tar.gz ${FILENAME}.tgz
      rm -fr tempdir/*
    done
    rm -fr tempdir
    cd ..
  }
}

# ==================================================
# 再パッケージングを行う(LinuxIntel : 
パッケージフォーマット毎に再パッケージングを繰り返す)
# ==================================================
RebuildPackage ()
{
  local PACKAGE_TYPE=${1}
  local PACKAGE_FORMAT=${2}
  case ${PACKAGE_TYPE} in
    openoffice)
      PrintMessage "Create package. [Type : InstallSet] [Format : 
${PACKAGE_FORMAT}]"
      ;;
    ooolanguagepack)
      PrintMessage "Create package. [Type : LanguagePack] [Format : 
${PACKAGE_FORMAT}]"
      ;;
    *)
      PrintMessage "Unknown package type !!"
      exit
      ;;
  esac
  cd ${SRC_ROOT}/instsetoo_native/util &> /dev/null
  if [ $? ]; then
    if [ x${PACKAGE_FORMAT} = xnative ]; then
      dmake ${PACKAGE_TYPE} ${BUILD_OPTION}
    else
      PKGFORMAT=${PACKAGE_FORMAT} dmake ${PACKAGE_TYPE} ${BUILD_OPTION}
    fi
    cd ${SRC_ROOT}
  else
    PrintMessage "instsetoo_native/util directory is not found !! Retry 
sourcefile download."
    exit
  fi
}

# ==================================================
# パッケージングを行う
# ==================================================
Package ()
{
  local PACKAGE_DIR=${1}
  local PACKAGE_CMD=${2}
  local PACKAGE_TYPE=${3}
  if [ -d ${PACKAGE_DIR} ]; then
    cd ${PACKAGE_DIR}
    ${PACKAGE_CMD}
    cd ${SRC_ROOT}
  else
    PrintMessage "${PACKAGE_TYPE} not found, check ${PACKAGE_TYPE}."
  fi
}

# ==================================================
# LinuxIntel : 
複数のパッケージを作成する場合は、それぞれのパッケージを構築し直してからインストールセット及びランゲージパックを作成する
# ==================================================
CreatePackage ()
{
  local PACKAGE_TYPE=${1}
  local PACKAGE_FORMAT=${2}
  [ x${PACKAGE_FORMAT} = x ] && PACKAGE_FORMAT=native
  case ${PACKAGE_TYPE} in
    InstallSet)
      local PKG_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice"
      local PKG_NAME="OOo_${VERSION}_${OOO_BUILD_SYSTEM}_install"
      RebuildPackage openoffice ${PACKAGE_FORMAT}
      ;;
    LanguagePack)
      local 
PKG_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice_languagepack"
      local PKG_NAME="OOo_${VERSION}_${OOO_BUILD_SYSTEM}_langpack"
      RebuildPackage ooolanguagepack ${PACKAGE_FORMAT}
      ;;
    *)
      PrintMessage "Unknown package option !!"
      exit
      ;;
  esac
  for LANGUAGE in ${LANGUAGES}
  do
    local PACKAGE_NAME="${PKG_NAME}_${LANGUAGE}_${BUILDER_NAME}"
    PrintMessage "Packaging [Type : ${PACKAGE_TYPE}] [Language : ${LANGUAGE}] 
[Format : ${PACKAGE_FORMAT}]"
    case ${OOO_BUILD_SYSTEM} in
      LinuxIntel)
        local PACKAGE_DIR="${PKG_DIR}/${PACKAGE_FORMAT}/install/${LANGUAGE}"
        local PACKAGE_CMD="tar jcvf 
${PKGOUTDIR}/${PACKAGE_NAME}_${PACKAGE_FORMAT}.tar.bz2 *"
        cd ${PACKAGE_DIR} &> /dev/null && {
          case ${PACKAGE_FORMAT} in
            portable)
              AddhocFix_portable ${PACKAGE_TYPE}
              ;;
            rpm)
              AddhocFix_rpm ${PACKAGE_TYPE}
              ;;
            slackware)
              AddhocFix_slackware
              ;;
            *)
              ;;
          esac
          cd ${SRC_ROOT}
        }
        ;;
      Win32Intel)
        local PACKAGE_DIR="${PKG_DIR}/msi/install/${LANGUAGE}"
        local PACKAGE_CMD="zip -r ${PKGOUTDIR}/${PACKAGE_NAME}.zip *"
        cd ${PACKAGE_DIR}_download &> /dev/null && {
          ${GNUCP} -vp *_${LANGUAGE}.exe ${PKGOUTDIR}/${PACKAGE_NAME}.exe
          cd ${SRC_ROOT}
        }
        ;;
      *)
        local PACKAGE_DIR="${PKG_DIR}/*/install/${LANGUAGE}"
        local PACKAGE_CMD="tar zcvf ${PKGOUTDIR}/${PACKAGE_NAME}.tar.gz *"
        ;;
    esac
    Package "${PACKAGE_DIR}" "${PACKAGE_CMD}" "${PACKAGE_TYPE}"
  done
}

# ==================================================
# SDKパッケージを作成する
# ==================================================

PackageSDK ()
{
  local LANGUAGE=${1}
  local 
PACKAGE_NAME="OOo_${VERSION}_${OOO_BUILD_SYSTEM}_sdk_${LANGUAGE}_${BUILDER_NAME}"
  local 
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice_SDK/*/install/${LANGUAGE}"
  local PACKAGE_CMD="tar zcvf ${PKGOUTDIR}/${PACKAGE_NAME}.tar.gz *"
  PrintMessage "Packaging SDK [Language : ${LANGUAGE} ]"
  case ${OOO_BUILD_SYSTEM} in
    LinuxIntel)
      
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice_SDK/rpm/install/${LANGUAGE}"
      PACKAGE_CMD="tar jcvf 
${PKGOUTDIR}/${PACKAGE_NAME}_${DEFAULT_PACKAGE}.tar.bz2 *"
      ;;
    Win32Intel)
      
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/OpenOffice_SDK/msi/install/${LANGUAGE}"
      PACKAGE_CMD="zip -r ${PKGOUTDIR}/${PACKAGE_NAME}.zip *"
      cd ${PACKAGE_DIR}_download &> /dev/null && {
        ${GNUCP} -vp *.exe ${PKGOUTDIR}/${PACKAGE_NAME}.exe
        cd ${SRC_ROOT}
      }
      ;;
    *)
      ;;
  esac
  Package "${PACKAGE_DIR}" "${PACKAGE_CMD}" SDK
}

# ==================================================
# SOLVERパッケージを作成する
# ==================================================
PackageSolver ()
{
  PrintMessage "Packaging SOLVER"
  if [ ${OOO_BUILD_SYSTEM} != Win32Intel ]; then
    tar zcvf 
${PKGOUTDIR}/OOo_${VERSION}_${OOO_BUILD_SYSTEM}_solver_${BUILDER_NAME}.tar.gz 
solver
  else
    zip -r 
${PKGOUTDIR}/OOo_${VERSION}_${OOO_BUILD_SYSTEM}_solver_${BUILDER_NAME}.zip 
solver
  fi
}

# ==================================================
# UNO Runtime Environmentパッケージを作成する
# ==================================================
PackageURE ()
{
  local URE_LINE_START=`grep -in "^ure" 
${SRC_ROOT}/instsetoo_native/util/openoffice.lst | sed 's/:/ /' | awk '{print 
$1}'`
  local URE_LINE_END=`tail +${URE_LINE_START} 
${SRC_ROOT}/instsetoo_native/util/openoffice.lst | grep -in "^}" | tr '\n' ' ' 
| sed 's/:/ /g' | awk '{print $1}'`
  local URE_VERSION=`tail +${URE_LINE_START} 
${SRC_ROOT}/instsetoo_native/util/openoffice.lst | grep -i 'package.*sion' | tr 
'\n' ' ' | awk '{print $2"-"$4}'`
  local 
PACKAGE_NAME="URE_${URE_VERSION}_${OOO_BUILD_SYSTEM}_install_${BUILDER_NAME}"
  local 
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/URE/*/install/en-US"
  local PACKAGE_CMD="tar zcvf ${PACKAGE_NAME}.tar.gz *"
  PrintMessage "Copy to PKGOUTDIR Pack UnoRuntime Environment"
  case ${OOO_BUILD_SYSTEM} in
    LinuxIntel)
      
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/URE/rpm/install/en-US"
      PACKAGE_CMD="tar jcvf ${PKGOUTDIR}/${PACKAGE_NAME}.tar.bz2 RPMS"
      ;;
    Win32Intel)
      
PACKAGE_DIR="${SRC_ROOT}/instsetoo_native/${OOOUTPATH}.pro/URE/msi/install/en-US"
      PACKAGE_CMD="zip -r ${PKGOUTDIR}/${PACKAGE_NAME}.zip *"
      cd ${PACKAGE_DIR}_download &> /dev/null && {
        ${GNUCP} -vp *_en-US.exe ${PKGOUTDIR}/${PACKAGE_NAME}.exe
        cd ${SRC_ROOT}
      }
      ;;
    *)
      ;;
  esac
  Package "${PACKAGE_DIR}" "${PACKAGE_CMD}" "Uno Runtime Environment"
}

# ==================================================
# LinuxIntel : 
SourceForge.jpの容量制限により100MバイトまでのファイルしかUpload出来ない為、coreパッケージとそれ以外のパッケージを分割する
# ==================================================
DividePackage ()
{
  local LANGUAGE=${1}
  local PACKAGE_FORMAT=${2}
  cd ${PKGOUTDIR} &> /dev/null
  for FILENAME in `echo 
*_install_${LANGUAGE}_${BUILDER_NAME}_${PACKAGE_FORMAT}.tar.bz2 | sed -e 
's/\.tar\.bz2//' -e '/\*/d'`
  do
    PrintMessage "Divide Package [Language = ${LANGUAGE}] : [Package = 
${PACKAGE_FORMAT}]"
    [ -d ${PKGOUTDIR}/${PACKAGE_FORMAT} ] || mkdir -vp 
${PKGOUTDIR}/${PACKAGE_FORMAT}
    cd ${PKGOUTDIR}/${PACKAGE_FORMAT}
    PrintMessage "UNPACKING FILENAME = ${FILENAME}.tar.bz2"
    tar jxvf ../${FILENAME}.tar.bz2
    case ${PACKAGE_FORMAT} in
      rpm)
        DIRECTORY=${RPM_DIR}
        ;;
      deb)
        DIRECTORY=${DEB_DIR}
        ;;
      portable)
        DIRECTORY=${PORTABLE_DIR}
        ;;
      slackware)
        DIRECTORY=${PORTABLE_DIR}
        ;;
    esac
    PrintMessage "Moving Core Files"
    [ -d ${PKGOUTDIR}/${PACKAGE_FORMAT}/core/${DIRECTORY} ] || mkdir -vp 
${PKGOUTDIR}/${PACKAGE_FORMAT}/core/${DIRECTORY}
    mv -v ${PKGOUTDIR}/${PACKAGE_FORMAT}/${DIRECTORY}/*core* 
${PKGOUTDIR}/${PACKAGE_FORMAT}/core/${DIRECTORY}
    PrintMessage "Packaging Filename = ${FILENAME}_other.tar.bz2"
    tar jcvf ${PKGOUTDIR}/${FILENAME}_other.tar.bz2 `echo * | sed 's/core//'`
    cd ${PKGOUTDIR}/${PACKAGE_FORMAT}/core
    PrintMessage "Packaging Filename = ${FILENAME}_core.tar.bz2"
    tar jcvf ${PKGOUTDIR}/${FILENAME}_core.tar.bz2 ${DIRECTORY}
    cd ${PKGOUTDIR}
    rm -fvr ${PKGOUTDIR}/${PACKAGE_FORMAT}
  done
  cd ${SRC_ROOT}
}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

メールによる返信