From 1541d44afc30bb2695095bad9e4b06b9bb7a8806 Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Tue, 22 Nov 2011 20:24:01 +0530 Subject: Enhanced scripts to support command line build from source. --- build/gmc-build.sh | 123 ++++++++++++++++++++++++++++++++++++++--------- build/package-backend.sh | 7 +++ build/package-gateway.sh | 20 ++++++-- 3 files changed, 124 insertions(+), 26 deletions(-) diff --git a/build/gmc-build.sh b/build/gmc-build.sh index d227ffb1..c25713a9 100755 --- a/build/gmc-build.sh +++ b/build/gmc-build.sh @@ -1,12 +1,13 @@ USAGE_ERR=1 -BUILD_DIR=/tmp/buckminster/glustermc -BUCKMINSTER_URL=http://download.eclipse.org/tools/buckminster/headless-3.6/ -TARGET_PLATFORM_URL=/data/private/gmc-target.git -SRC_URL=/data/private/gmc-src.git +BUCKMINSTER_URL=http://download.eclipse.org/tools/buckminster/headless-3.7/ +TARGET_PLATFORM_URL=git@github.com:gluster/gmc.git +SRC_URL=git@github.com:gluster/gmc-target.git BUCKMINSTER_PRODUCT_NAME=org.eclipse.buckminster.cmdline.product -MAIN_FEATURE=com.gluster.storage.management.console.feature.webstart +GMC_WEBSTART_PROJECT=com.gluster.storage.management.console.feature.webstart +GMC_CORE_PROJECT=com.gluster.storage.management.core +GMG_PROJECT=com.gluster.storage.management.gateway TYPE_ALL="a" TYPE_SETUP="s" @@ -30,6 +31,10 @@ showBold() { # Get the director that can be used to install headless buckminster get_director() { + rm -rf ${TOOLS_DIR} + mkdir -p ${TOOLS_DIR} + cd ${TOOLS_DIR} + echo "Downloading `startBold`director`stopBold`..." wget http://ftp.daum.net/eclipse//tools/buckminster/products/director_latest.zip echo "Installing director..." @@ -38,46 +43,114 @@ get_director() install_buckminster() { + rm -rf ${BUCKMINSTER_HOME} + mkdir -p ${BUCKMINSTER_HOME} + echo "Installing `startBold`Buckminster`stopBold`..." - cd director + cd ${TOOLS_DIR}/director ./director -r ${BUCKMINSTER_URL} -d ${BUCKMINSTER_HOME} -p Buckminster -i ${BUCKMINSTER_PRODUCT_NAME} echo "Setting up Buckminster..." cd ${BUCKMINSTER_HOME} + echo " => core" ./buckminster install ${BUCKMINSTER_URL} org.eclipse.buckminster.core.headless.feature + echo " => pde" ./buckminster install ${BUCKMINSTER_URL} org.eclipse.buckminster.pde.headless.feature + echo " => git" ./buckminster install ${BUCKMINSTER_URL} org.eclipse.buckminster.git.headless.feature + echo " => emma" ./buckminster install ${BUCKMINSTER_URL} org.eclipse.buckminster.emma.headless.feature } configure_workspace() { echo "Configuring the workspace..." + rm -rf ${WORKSPACE_DIR} + mkdir -p ${WORKSPACE_DIR} cd ${WORKSPACE_DIR} - rm -rf * - git clone ${TARGET_PLATFORM_URL} - git clone ${SRC_URL} + #git clone ${TARGET_PLATFORM_URL} + #git clone ${SRC_URL} + + cp -R ${BASE_DIR}/gmc/* . 2>/dev/null + ln -fs ${BASE_DIR}/gmc-target . echo "Importing target platform..." - ../buckminster importtarget --active gmc-src/com.gluster.storage.management.releng/gluster-management-console.target + ${BUCKMINSTER_HOME}/buckminster importtarget -data ${WORKSPACE_DIR} --active gmc-target/com.gluster.storage.management.console.target/gmc.target echo "Importing component query for glustermc..." - ../buckminster import gmc-src/com.gluster.storage.management.releng/com.gluster.storage.management.console.feature.webstart.cquery + ${BUCKMINSTER_HOME}/buckminster import -data ${WORKSPACE_DIR} build/com.gluster.storage.management.console.feature.webstart.cquery + #${BUCKMINSTER_HOME}/buckminster import -data ${WORKSPACE_DIR} build/com.gluster.storage.management.core.cquery + echo "Importing component query for glustermg..." + ${BUCKMINSTER_HOME}/buckminster import -data ${WORKSPACE_DIR} build/com.gluster.storage.management.gateway.cquery cd - } -build() +build_gmc() { - echo "Cleaning build directory..." - rm -rf ${BUILD_DIR}/* + os=${1} + ws=${2} + arch=${3} + cd ${WORKSPACE_DIR} + DIST_DIR=${DIST_BASE}/gmc/${os}.${ws}.${arch} + if [ ! -d ${DIST_DIR} ]; then + mkdir -p ${DIST_DIR} + fi - echo "Exporting the product..." - ./buckminster perform --properties ${PROPERTIES_FILE} ${MAIN_FEATURE}#create.eclipse.jnlp.product - ./buckminster perform --properties ${PROPERTIES_FILE} ${MAIN_FEATURE}#copy.root.files + echo "Building GMC for [${os}.${ws}.${arch}" + ${BUCKMINSTER_HOME}/buckminster perform -Dbuckminster.output.root=${DIST_DIR} -data ${WORKSPACE_DIR} -Dtarget.os=${os} -Dtarget.ws=${ws} -Dtarget.arch=${arch} -Dcbi.include.source=false --properties ${PROPERTIES_FILE} ${GMC_WEBSTART_PROJECT}#create.eclipse.jnlp.product + ${BUCKMINSTER_HOME}/buckminster perform -Dbuckminster.output.root=${DIST_DIR} --properties ${PROPERTIES_FILE} ${GMC_WEBSTART_PROJECT}#copy.root.files # buckminster signs the jars using eclipse certificate - hence unsign and sign them again echo "Signing product jars..." - ./buckminster perform --properties ${PROPERTIES_FILE} ${MAIN_FEATURE}#unsign.jars - ./buckminster perform --properties ${PROPERTIES_FILE} ${MAIN_FEATURE}#sign.jars + ${BUCKMINSTER_HOME}/buckminster perform --properties ${PROPERTIES_FILE} ${GMC_WEBSTART_PROJECT}#unsign.jars + ${BUCKMINSTER_HOME}/buckminster perform --properties ${PROPERTIES_FILE} ${GMC_WEBSTART_PROJECT}#sign.jars +} + +build_gmg() +{ + cd ${WORKSPACE_DIR} + export DIST_DIR=${DIST_BASE}/gmg + if [ ! -d ${DIST_DIR} ]; then + mkdir -p ${DIST_DIR} + fi + + echo "Building CORE..." + ${BUCKMINSTER_HOME}/buckminster perform -Dbuckminster.output.root=${DIST_DIR} -data ${WORKSPACE_DIR} -Dcbi.include.source=false --properties ${PROPERTIES_FILE} ${GMC_CORE_PROJECT}#bundle.jar + echo "Building Gateway..." + ${BUCKMINSTER_HOME}/buckminster perform -Dbuckminster.output.root=${DIST_DIR} -data ${WORKSPACE_DIR} -Dcbi.include.source=false --properties ${PROPERTIES_FILE} ${GMG_PROJECT}#archive + + echo "Packaging Gateway..." + ${SCRIPT_DIR}/package-gateway.sh ${DIST_DIR} ${DIST_BASE}/gmc +} + +package_backend() +{ + cd ${WORKSPACE_DIR} + + echo "Packaging backend scripts" + export DIST_DIR=${DIST_BASE}/gmg-backend + if [ ! -d ${DIST_DIR} ]; then + mkdir -p ${DIST_DIR} + fi + + ${SCRIPT_DIR}/package-backend.sh ${DIST_DIR} +} + +build_gmc_all() +{ + build_gmc linux gtk x86 + build_gmc linux gtk x86_64 + build_gmc win32 win32 x86 + build_gmc win32 win32 x86_64 + build_gmc macosx cocoa x86 + build_gmc macosx cocoa x86_64 +} + +build() +{ + export VERSION=1.0.0 + build_gmc_all + build_gmg + package_backend } #----------------------------------- @@ -85,8 +158,8 @@ build() #----------------------------------- echo -if [ $# -ne 2 ]; then - echo "Usage: ${0} " +if [ $# -ne 1 ]; then + echo "Usage: ${0} " echo "build-type value can be one of:" echo " `startBold` ${TYPE_ALL}`stopBold` - Sets up the build directoryand then triggers a full build" echo " `startBold` ${TYPE_SETUP}`stopBold` - Sets up the build directory; doesn't trigger build" @@ -96,9 +169,13 @@ if [ $# -ne 2 ]; then fi BUILD_MODE=${1} -BUCKMINSTER_HOME=${2} +BASE_DIR=${PWD}/../.. +TOOLS_DIR=${BASE_DIR}/tools +DIST_BASE=${BASE_DIR}/dist +BUCKMINSTER_HOME=${TOOLS_DIR}/buckminster WORKSPACE_DIR=${BUCKMINSTER_HOME}/workspace -PROPERTIES_FILE=${WORKSPACE_DIR}/gmc-src/com.gluster.storage.management.releng/glustermc_build.properties +PROPERTIES_FILE=${WORKSPACE_DIR}/build/glustermc_build.properties +SCRIPT_DIR=${PWD} if [ "${BUILD_MODE}" == "${TYPE_ALL}" -o "${BUILD_MODE}" == "${TYPE_SETUP}" ]; then get_director diff --git a/build/package-backend.sh b/build/package-backend.sh index 03664381..f9fc57be 100755 --- a/build/package-backend.sh +++ b/build/package-backend.sh @@ -22,6 +22,9 @@ get-scripts() #--------------------------------------------- # Main Action Body #--------------------------------------------- +if [ $? -eq 1 ]; then + DIST_DIR=${1} +fi echo "Packaging Gluster Management Gateway Back-end Scripts..." prepare-script-dir @@ -30,5 +33,9 @@ get-scripts /bin/rm -rf ${TAR_NAME} ${TAR_NAME}.gz tar cvf ${TAR_NAME} ${ROOT_DIR} gzip ${TAR_NAME} +if [ ! -z "${DIST_DIR}" ]; then + mv ${TAR_NAME}.gz ${DIST_DIR} +fi +/bin/rm -rf ${ROOT_DIR} echo "Done!" diff --git a/build/package-gateway.sh b/build/package-gateway.sh index 6dc1e9db..bce436d9 100755 --- a/build/package-gateway.sh +++ b/build/package-gateway.sh @@ -2,7 +2,7 @@ WAR_NAME="glustermg.war" WAR_SCRIPTS_DIR=${WAR_NAME}/scripts NEW_WAR_NAME="glustermg" TAR_NAME=${NEW_WAR_NAME}-${VERSION}.war.tar -SERVER_DIST_DIR="${WORKSPACE}/buckminster.output" +SERVER_DIST_DIR=${DIST_DIR:-${WORKSPACE}/buckminster.output} prepare-dist-dir() { @@ -48,7 +48,11 @@ get-dist() OS=${2} WS=${3} - OUT_DIR="${WORKSPACE}/../../${BRANCH}-glustermc/workspace/arch/${ARCH}/os/${OS}/ws/${WS}/buckminster.output/com.gluster.storage.management.console.feature.webstart*.feature/glustermc" + if [ -z "${GMC_DIST_DIR}" ]; then + OUT_DIR="${WORKSPACE}/../../${BRANCH}-glustermc/workspace/arch/${ARCH}/os/${OS}/ws/${WS}/buckminster.output/com.gluster.storage.management.console.feature.webstart*.feature/glustermc" + else + OUT_DIR="${GMC_DIST_DIR}/${OS}.${WS}.${ARCH}/com.gluster.storage.management.console.feature.webstart*.feature/glustermc" + fi NEW_DIR=${WAR_NAME}/${OS}.${WS}.${ARCH} cp -R ${OUT_DIR} ${NEW_DIR} @@ -75,7 +79,13 @@ get-scripts() #--------------------------------------------- # Main Action Body #--------------------------------------------- -echo "Packaging Gluster Management Server..." + +if [ $# -eq 2 ]; then + DIST_DIR=${1} + GMC_DIST_DIR=${2} +fi + +echo "Packaging GlusterFS Management Gateway..." prepare-dist-dir get-scripts @@ -87,4 +97,8 @@ get-console-dists tar cvf ${TAR_NAME} ${NEW_WAR_NAME} gzip ${TAR_NAME} +if [ ! -z "${DIST_DIR}" ]; then + mv ${TAR_NAME}.gz ${DIST_DIR} +fi + echo "Done!" -- cgit