daily pastebin goal
64%
SHARE
TWEET

Untitled

a guest Jun 13th, 2012 13 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. #####################################################
  3. # File Name: launch-build-machine.sh
  4. #
  5. # Purpose :
  6. #
  7. # Author: Julien Bonjean (julien@bonjean.info)
  8. #
  9. # Creation Date: 2009-10-20
  10. # Last Modified: 2010-04-22 16:42:57 -0400
  11. #####################################################
  12.  
  13. #set -x
  14.  
  15. . `dirname $0`/setenv.sh
  16.  
  17. IS_RELEASE=
  18. VERSION_INDEX="1"
  19. IS_KDE_CLIENT=
  20. DO_PUSH=1
  21. DO_LOGGING=1
  22. DO_UPLOAD=1
  23. SNAPSHOT_TAG=`date +%Y%m%d`
  24. TAG_NAME_PREFIX=
  25. VERSION_NUMBER="1.1.0"
  26.  
  27. LAUNCHPAD_PACKAGES=( "sflphone-client-gnome" "sflphone-common" "sflphone-client-kde" "sflphone-plugins")
  28.  
  29. echo
  30. echo "    /***********************\\"
  31. echo "    | SFLPhone build system |"
  32. echo "    \\***********************/"
  33. echo
  34.  
  35. for PARAMETER in $*
  36. do
  37.         case ${PARAMETER} in
  38.         --help)
  39.                 echo
  40.                 echo "Options :"
  41.                 echo " --skip-push"
  42.                 echo " --skip-upload"
  43.                 echo " --kde-client"
  44.                 echo " --no-logging"
  45.                 echo " --release"
  46.                 echo " --version-index=[1,2,...]"
  47.                 echo
  48.                 exit 0;;
  49.         --skip-push)
  50.                 unset DO_PUSH;;
  51.         --skip-upload)
  52.                 unset DO_UPLOAD;;
  53.         --kde-client)
  54.                 IS_KDE_CLIENT=1;;
  55.         --no-logging)
  56.                 unset DO_LOGGING;;
  57.         --release)
  58.                 IS_RELEASE=1;;
  59.         --version-index=*)
  60.                 VERSION_INDEX=(${PARAMETER##*=});;
  61.         *)
  62.                 echo "Unknown parameter : ${PARAMETER}"
  63.                 exit -1;;
  64.         esac
  65. done
  66.  
  67. #########################
  68. # LAUNCHPAD
  69. #########################
  70.  
  71. # change to working directory
  72. cd ${LAUNCHPAD_DIR}
  73.  
  74. if [ "$?" -ne "0" ]; then
  75.         echo " !! Cannot cd to launchpad directory"
  76.         exit -1
  77. fi
  78.  
  79. # logging
  80. if [ ${DO_LOGGING} ]; then
  81.  
  82.         rm -f ${ROOT_DIR}/packaging.log >/dev/null 2>&1
  83.  
  84.         # open file descriptor
  85.         exec 3<> ${ROOT_DIR}/packaging.log
  86.  
  87.         # redirect outputs (stdout & stderr)
  88.         exec 1>&3
  89.         exec 2>&3
  90. fi
  91.  
  92. if [ ${RELEASE_MODE} ]; then
  93.         echo "Release mode"
  94. else
  95.         echo "Snapshot mode"
  96. fi
  97.  
  98. if [ ${IS_KDE_CLIENT} ]; then
  99.         TAG_NAME_PREFIX="kde."
  100. fi
  101.  
  102. #########################
  103. # COMMON PART
  104. #########################
  105.  
  106. cd ${REFERENCE_REPOSITORY}
  107.  
  108. echo "Update reference sources"
  109. if [ ${IS_RELEASE} ]; then
  110.         git checkout . && git checkout -f release && git pull
  111. else
  112.         git checkout . && git checkout -f master && git pull
  113. fi
  114.  
  115. echo "Retrieve build info"
  116. # retrieve info we may need
  117. if [ ${IS_KDE_CLIENT} ]; then
  118.         TAG_NAME_PREFIX="kde."
  119.         LAUNCHPAD_PACKAGES=( "sflphone-client-kde" )
  120. fi
  121. CURRENT_RELEASE_TAG_NAME=`git describe --tags --abbrev=0`
  122. PREVIOUS_RELEASE_TAG_NAME=`git describe --tags --abbrev=0 ${CURRENT_RELEASE_TAG_NAME}^`
  123. CURRENT_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${CURRENT_RELEASE_TAG_NAME} | tail -n 1`
  124. PREVIOUS_RELEASE_COMMIT_HASH=`git show --pretty=format:"%H" -s ${PREVIOUS_RELEASE_TAG_NAME} | tail -n 1`
  125. CURRENT_COMMIT=`git show --pretty=format:"%H"  -s | tail -n 1`
  126. CURRENT_RELEASE_TYPE=${CURRENT_RELEASE_TAG_NAME##*.}
  127. PREVIOUS_RELEASE_TYPE=${PREVIOUS_RELEASE_TAG_NAME##*.}
  128. if [ ${IS_KDE_CLIENT} ]; then
  129.         CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_TAG_NAME%.*}
  130.         CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_VERSION#*.}
  131.         PREVIOUS_VERSION=${PREVIOUS_RELEASE_TAG_NAME%.*}
  132.         PREVIOUS_VERSION=${PREVIOUS_VERSION#*.}
  133. else
  134.         CURRENT_RELEASE_VERSION=${CURRENT_RELEASE_TAG_NAME}
  135.         PREVIOUS_VERSION=${PREVIOUS_RELEASE_TAG_NAME}
  136. fi
  137.  
  138. cd ${LAUNCHPAD_DIR}
  139.  
  140. COMMIT_HASH_BEGIN=""
  141. COMMIT_HASH_END=""
  142. SOFTWARE_VERSION=""
  143. LAUNCHPAD_CONF_PREFIX=""
  144.  
  145. if [ ${IS_RELEASE} ]; then
  146.         SOFTWARE_VERSION="${CURRENT_RELEASE_VERSION}"
  147.         COMMIT_HASH_BEGIN="${PREVIOUS_RELEASE_COMMIT_HASH}"
  148.         LAUNCHPAD_CONF_PREFIX="sflphone"
  149. else
  150.         SOFTWARE_VERSION="${VERSION_NUMBER}-rc${SNAPSHOT_TAG}"
  151.         COMMIT_HASH_BEGIN="${CURRENT_RELEASE_COMMIT_HASH}"
  152.         LAUNCHPAD_CONF_PREFIX="sflphone-nightly"
  153. fi
  154.  
  155. VERSION="${SOFTWARE_VERSION}~ppa${VERSION_INDEX}~SYSTEM"
  156.  
  157. echo "Clean build directory"
  158. git clean -f -x ${LAUNCHPAD_DIR}/* >/dev/null
  159.  
  160. get_dir_name() {
  161.     case $1 in
  162.         sflphone-common)
  163.         echo daemon
  164.         ;;
  165.         sflphone-plugins)
  166.         echo plugins
  167.         ;;
  168.         sflphone-client-gnome)
  169.         echo gnome
  170.         ;;
  171.         sflphone-client-kde)
  172.         echo kde
  173.         ;;
  174.         *)
  175.         exit 1
  176.         ;;
  177.     esac
  178. }
  179.  
  180. for LAUNCHPAD_PACKAGE in ${LAUNCHPAD_PACKAGES[*]}
  181. do
  182.         echo " Package: ${LAUNCHPAD_PACKAGE}"  
  183.  
  184.         echo "  --> Clean old sources"
  185.         git clean -f -x ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/* >/dev/null
  186.  
  187.         DEBIAN_DIR="${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/debian"
  188.  
  189.         echo "  --> Clean debian directory"
  190.         git checkout ${DEBIAN_DIR}
  191.  
  192.         echo "  --> Retrieve new sources"
  193.         DIRNAME=`get_dir_name ${LAUNCHPAD_PACKAGE}`
  194.         cp -r ${REFERENCE_REPOSITORY}/${DIRNAME}/* ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}
  195.  
  196.         echo "  --> Update software version number (${SOFTWARE_VERSION})"
  197.         echo "${SOFTWARE_VERSION}" > ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/VERSION
  198.  
  199.         echo "  --> Update debian changelog"
  200.  
  201. cat << END > ${WORKING_DIR}/sfl-git-dch.conf
  202. WORKING_DIR="${REFERENCE_REPOSITORY}"
  203. SOFTWARE="${LAUNCHPAD_PACKAGE}"
  204. VERSION="${VERSION}"
  205. DISTRIBUTION="SYSTEM"
  206. CHANGELOG_FILE="${DEBIAN_DIR}/changelog"
  207. COMMIT_HASH_BEGIN="${COMMIT_HASH_BEGIN}"
  208. COMMIT_HASH_END="${COMMIT_HASH_END}"
  209. IS_RELEASE=${IS_RELEASE}
  210. export DEBFULLNAME="Julien Bonjean"
  211. export DEBEMAIL="julien.bonjean@savoirfairelinux.com"
  212. export EDITOR="echo"
  213. END
  214.  
  215.         ${WORKING_DIR}/sfl-git-dch-2.sh ${WORKING_DIR}/sfl-git-dch.conf ${REFERENCE_REPOSITORY}/${DIRNAME}/
  216.         if [ "$?" -ne "0" ]; then
  217.                 echo "!! Cannot update debian changelogs"
  218.                 exit -1
  219.         fi
  220.  
  221.         if [ "${LAUNCHPAD_PACKAGE}"  == "sflphone-client-kde" ]; then
  222.                 version_kde=$(echo ${VERSION}  | grep -e '[0-9]*\.[0-9.]*' -o | head -n1)
  223.                 sed -i -e "s/Standards-Version: [0-9.A-Za-z]*/Standards-Version: ${version_kde}/" ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}/debian/control
  224.                 tar -C ${LAUNCHPAD_DIR}/ -cjf ${LAUNCHPAD_DIR}/sflphone-client-kde_${version_kde}.orig.tar.bz2  ${LAUNCHPAD_PACKAGE}
  225.         fi
  226.  
  227.         rm -f ${WORKING_DIR}/sfl-git-dch.conf >/dev/null 2>&1
  228.  
  229.         cd ${LAUNCHPAD_DIR}
  230.  
  231.         cp ${DEBIAN_DIR}/changelog ${DEBIAN_DIR}/changelog.generic
  232.        
  233.         for LAUNCHPAD_DISTRIBUTION in ${LAUNCHPAD_DISTRIBUTIONS[*]}
  234.         do
  235.  
  236.                 LOCAL_VERSION="${SOFTWARE_VERSION}~ppa${VERSION_INDEX}~${LAUNCHPAD_DISTRIBUTION}"
  237.  
  238.                 cp ${DEBIAN_DIR}/changelog.generic ${DEBIAN_DIR}/changelog
  239.  
  240.                 sed -i "s/SYSTEM/${LAUNCHPAD_DISTRIBUTION}/g" ${DEBIAN_DIR}/changelog
  241.  
  242.                 cd ${LAUNCHPAD_DIR}/${LAUNCHPAD_PACKAGE}
  243.                 if [ "$IS_KDE_CLIEN" != "1" ]; then
  244.                         ./autogen.sh
  245.                 fi
  246.                 debuild -S -sa -kFDFE4451
  247.                 cd ${LAUNCHPAD_DIR}
  248.  
  249.                 if [ ${DO_UPLOAD} ] ; then
  250.                         dput -f -c ${LAUNCHPAD_DIR}/dput.conf ${LAUNCHPAD_CONF_PREFIX}-${LAUNCHPAD_DISTRIBUTION} ${LAUNCHPAD_PACKAGE}_${LOCAL_VERSION}_source.changes
  251.                 fi
  252.         done
  253.  
  254.         cp ${DEBIAN_DIR}/changelog.generic ${DEBIAN_DIR}/changelog
  255. done
  256.  
  257. # if push is activated
  258. #if [[ ${DO_PUSH} && ${IS_RELEASE} ]];then
  259. #       echo " Doing commit"
  260. #       git commit -m "[#1262] Released ${SOFTWARE_VERSION}" .
  261. #
  262. #       echo " Pushing commit"
  263. #       git push origin release
  264. #fi
  265.  
  266. # close file descriptor
  267. exec 3>&-
  268.  
  269. exit 0
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top