Advertisement
Guest User

Untitled

a guest
Jun 13th, 2012
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement