cmake_release.sh 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712
  1. #!/bin/sh
  2. #=============================================================================
  3. #
  4. # Program: CMake - Cross-Platform Makefile Generator
  5. # Module: $RCSfile$
  6. # Language: C++
  7. # Date: $Date$
  8. # Version: $Revision$
  9. #
  10. # Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
  11. # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
  12. #
  13. # This software is distributed WITHOUT ANY WARRANTY; without even
  14. # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  15. # PURPOSE. See the above copyright notices for more information.
  16. #
  17. #=============================================================================
  18. #
  19. # CMake UNIX Release Script.
  20. #
  21. # Run with no arguments for documentation.
  22. #
  23. # Release version number.
  24. TAG="Release-1-6-6"
  25. VERSION="1.6.6"
  26. RELEASE="1"
  27. PREVIOUS_VERSION="1.4.7"
  28. PREVIOUS_RELEASE="1"
  29. # CVSROOT setting used to check out CMake.
  30. CVSROOT=":pserver:[email protected]:/cvsroot/CMake"
  31. CVSROOT_GREP=":pserver:[email protected]:[0-9]*/cvsroot/CMake"
  32. # CMake release root directory.
  33. RELEASE_ROOT_NAME="CMakeReleaseRoot"
  34. RELEASE_ROOT="${HOME}/${RELEASE_ROOT_NAME}"
  35. # Installation prefix used during tarball creation. Tarballs are
  36. # relative to the installation prefix and do not include this in their
  37. # paths.
  38. PREFIX="/usr/local"
  39. # Directory relative to PREFIX where documentation should be placed.
  40. DOC_DIR="/doc/cmake"
  41. # No default compiler. The config file must provide it.
  42. CC=""
  43. CXX=""
  44. CFLAGS=""
  45. CXXFLAGS=""
  46. # Details of remote invocation.
  47. [ -z "$REMOTE" ] && SELF="$0"
  48. #-----------------------------------------------------------------------------
  49. usage()
  50. {
  51. cat <<EOF
  52. CMake Release Script Usage:
  53. $0 [command]
  54. Typical usage:
  55. Cleanup remote host release directory:
  56. $0 remote <host> clean
  57. Create binary release tarball:
  58. $0 remote_binary <host>
  59. Create source release tarball:
  60. $0 remote_source <host>
  61. Upload tarballs:
  62. $0 upload
  63. Create and upload cygwin package:
  64. $0 cygwin_package
  65. $0 cygwin_upload
  66. Available commands:
  67. EOF
  68. cat "$0" | awk '
  69. /^#--*$/ { doc=1; text="" }
  70. /(^#$|^#[^-].*$)/ {
  71. if(doc)
  72. {
  73. if(text != "") { text = sprintf("%s %s\n", text, $0) }
  74. else { text = sprintf(" %s\n", $0) }
  75. }
  76. }
  77. /^[A-Za-z0-9_]*\(\)$/ {
  78. doc=0;
  79. if(text != "") { printf("%s:\n%s\n", $0, text) }
  80. }
  81. '
  82. }
  83. #-----------------------------------------------------------------------------
  84. error_log()
  85. {
  86. echo "An error has been logged to $1:" &&
  87. cat "$1" &&
  88. return 1
  89. }
  90. #-----------------------------------------------------------------------------
  91. check_host()
  92. {
  93. HOST="$1"
  94. if [ -z "$HOST" ]; then
  95. echo "Must specify host."
  96. return 1
  97. fi
  98. }
  99. #-----------------------------------------------------------------------------
  100. # Run a command on the specified remote host.
  101. #
  102. # remote <host> [command]
  103. #
  104. # Only one level of remote invocation is allowed. The <host>
  105. # specification must be a valid ssh destination with public
  106. # key authentication and no password.
  107. remote()
  108. {
  109. if [ ! -z "$REMOTE" ]; then
  110. echo "Cannot do recursive remote calls."
  111. return 1
  112. fi
  113. check_host "$1" || return 1
  114. shift
  115. RTASK="'$1'"; shift; for i in "$@"; do RTASK="${RTASK} '$i'"; done
  116. RESULT=0
  117. echo "------- Running remote task on $HOST. -------" &&
  118. (echo "REMOTE=\"1\"" &&
  119. (echo TASK=\"`(eval echo '${RTASK}') | (sed 's/"/\\\\"/g')`\") &&
  120. cat $SELF) | ssh -e none "$HOST" /bin/sh || RESULT=1
  121. echo "-------- Remote task on $HOST done. --------" &&
  122. return $RESULT
  123. }
  124. #-----------------------------------------------------------------------------
  125. # Copy tarballs from the specified host.
  126. #
  127. # remote_copy <host> [EXPR]
  128. #
  129. # The <host> specification must be a valid ssh destination
  130. # with public key authentication and no password. Only
  131. # files matching the given expression are copied. If
  132. # no expression is given, "*" is used.
  133. remote_copy()
  134. {
  135. check_host "$1" || return 1
  136. EXPR="$2"
  137. [ ! -z "$EXPR" ] || EXPR="*"
  138. echo "------- Copying tarballs from $HOST. -------" &&
  139. scp "$HOST:${RELEASE_ROOT_NAME}/Tarballs/${EXPR}" . &&
  140. echo "---- Done copying tarballs from $HOST. -----"
  141. }
  142. #-----------------------------------------------------------------------------
  143. remote_copy_source()
  144. {
  145. check_host "$1" || return 1
  146. remote_copy "$HOST" "cmake-${VERSION}.tar*"
  147. }
  148. #-----------------------------------------------------------------------------
  149. remote_copy_binary()
  150. {
  151. check_host "$1" || return 1
  152. remote_copy "$HOST" "cmake-${VERSION}-*"
  153. }
  154. #-----------------------------------------------------------------------------
  155. # Create source tarballs on the specified host and copy them locally.
  156. #
  157. # remote_source <host>
  158. #
  159. # The <host> specification must be a valid ssh destination
  160. # with public key authentication and no password.
  161. remote_source()
  162. {
  163. check_host "$1" || return 1
  164. remote "$HOST" source_tarball &&
  165. remote_copy_source "$HOST"
  166. }
  167. #-----------------------------------------------------------------------------
  168. # Create binary tarballs on the specified host and copy them locally.
  169. #
  170. # remote_binary <host>
  171. #
  172. # The <host> specification must be a valid ssh destination
  173. # with public key authentication and no password.
  174. remote_binary()
  175. {
  176. check_host "$1" || return 1
  177. remote "$HOST" binary_tarball &&
  178. remote_copy_binary "$HOST"
  179. }
  180. #-----------------------------------------------------------------------------
  181. # Upload any tarballs in the current directory to the CMake FTP site.
  182. #
  183. # upload
  184. #
  185. # The user must be able to ssh to [email protected] with public
  186. # key authentication and no password.
  187. upload()
  188. {
  189. echo "------- Copying tarballs to www.cmake.org. -------"
  190. scp cmake-${VERSION}*tar.* [email protected]:/projects/FTP/pub/cmake
  191. echo "---- Done copying tarballs to www.cmake.org. -----"
  192. }
  193. #-----------------------------------------------------------------------------
  194. setup()
  195. {
  196. [ -z "${DONE_setup}" ] || return 0 ; DONE_setup="yes"
  197. mkdir -p ${RELEASE_ROOT}/Logs &&
  198. echo "Entering ${RELEASE_ROOT}" &&
  199. cd ${RELEASE_ROOT}
  200. }
  201. #-----------------------------------------------------------------------------
  202. # Remove the release root directory.
  203. #
  204. # clean
  205. #
  206. clean()
  207. {
  208. cd "${HOME}" &&
  209. echo "Cleaning up ${RELEASE_ROOT}" &&
  210. rm -rf "${RELEASE_ROOT_NAME}"
  211. }
  212. #-----------------------------------------------------------------------------
  213. cvs_login()
  214. {
  215. [ -z "${DONE_cvs_login}" ] || return 0 ; DONE_cvs_login="yes"
  216. setup || return 1
  217. (
  218. if [ -f "${HOME}/.cvspass" ]; then
  219. CVSPASS="${HOME}/.cvspass"
  220. else
  221. CVSPASS=""
  222. fi
  223. if [ -z "`grep \"$CVSROOT_GREP\" ${CVSPASS} /dev/null`" ]; then
  224. echo "cmake" | cvs -q -z3 -d $CVSROOT login
  225. else
  226. echo "Already logged in."
  227. fi
  228. ) >Logs/cvs_login.log 2>&1 || error_log Logs/cvs_login.log
  229. }
  230. #-----------------------------------------------------------------------------
  231. utilities()
  232. {
  233. [ -z "${DONE_utilities}" ] || return 0 ; DONE_utilities="yes"
  234. cvs_login || return 1
  235. (
  236. if [ -d "ReleaseUtilities/CVS" ]; then
  237. cd ReleaseUtilities && cvs -z3 -q update -dAP
  238. else
  239. rm -rf CheckoutTemp &&
  240. mkdir CheckoutTemp &&
  241. cd CheckoutTemp &&
  242. cvs -q -z3 -d $CVSROOT co -r ${TAG} CMake/Utilities/Release &&
  243. mv CMake/Utilities/Release ../ReleaseUtilities &&
  244. cd .. &&
  245. rm -rf CheckoutTemp
  246. fi
  247. ) >Logs/utilities.log 2>&1 || error_log Logs/utilities.log
  248. }
  249. #-----------------------------------------------------------------------------
  250. config()
  251. {
  252. [ -z "${DONE_config}" ] || return 0 ; DONE_config="yes"
  253. utilities || return 1
  254. CONFIG_FILE="config_`uname`"
  255. echo "Loading ${CONFIG_FILE} ..."
  256. . ${RELEASE_ROOT}/ReleaseUtilities/${CONFIG_FILE} >Logs/config.log 2>&1 || error_log Logs/config.log
  257. if [ -z "${CC}" ] || [ -z "${CXX}" ] || [ -z "${PLATFORM}" ]; then
  258. echo "${CONFIG_FILE} should specify CC, CXX, and PLATFORM." &&
  259. return 1
  260. fi
  261. export CC CXX CFLAGS CXXFLAGS PATH LD_LIBRARY_PATH
  262. }
  263. #-----------------------------------------------------------------------------
  264. checkout()
  265. {
  266. [ -z "${DONE_checkout}" ] || return 0 ; DONE_checkout="yes"
  267. config || return 1
  268. echo "Exporting cmake from cvs ..." &&
  269. (
  270. rm -rf cmake-${VERSION} &&
  271. rm -rf CheckoutTemp &&
  272. mkdir CheckoutTemp &&
  273. cd CheckoutTemp &&
  274. cvs -q -z3 -d $CVSROOT export -r ${TAG} CMake &&
  275. mv CMake ../cmake-${VERSION} &&
  276. cd .. &&
  277. rm -rf CheckoutTemp
  278. ) >Logs/checkout.log 2>&1 || error_log Logs/checkout.log
  279. }
  280. #-----------------------------------------------------------------------------
  281. # Create source tarballs for CMake.
  282. #
  283. # source_tarball
  284. #
  285. source_tarball()
  286. {
  287. [ -z "${DONE_source_tarball}" ] || return 0 ; DONE_source_tarball="yes"
  288. config || return 1
  289. [ -d "cmake-${VERSION}" ] || checkout || return 1
  290. echo "Creating source tarballs ..." &&
  291. (
  292. mkdir -p Tarballs &&
  293. rm -rf Tarballs/cmake-${VERSION}.tar* &&
  294. tar cvf Tarballs/cmake-${VERSION}.tar cmake-${VERSION} &&
  295. gzip -c Tarballs/cmake-${VERSION}.tar >Tarballs/cmake-${VERSION}.tar.gz &&
  296. compress Tarballs/cmake-${VERSION}.tar
  297. ) >Logs/source_tarball.log 2>&1 || error_log Logs/source_tarball.log
  298. }
  299. #-----------------------------------------------------------------------------
  300. write_cache()
  301. {
  302. cat > CMakeCache.txt <<EOF
  303. BUILD_TESTING:BOOL=OFF
  304. EOF
  305. }
  306. #-----------------------------------------------------------------------------
  307. cache()
  308. {
  309. [ -z "${DONE_cache}" ] || return 0 ; DONE_cache="yes"
  310. config || return 1
  311. echo "Writing CMakeCache.txt ..." &&
  312. (
  313. rm -rf "cmake-${VERSION}-${PLATFORM}" &&
  314. mkdir -p "cmake-${VERSION}-${PLATFORM}" &&
  315. cd "cmake-${VERSION}-${PLATFORM}" &&
  316. write_cache
  317. ) >Logs/cache.log 2>&1 || error_log Logs/cache.log
  318. }
  319. #-----------------------------------------------------------------------------
  320. configure()
  321. {
  322. [ -z "${DONE_configure}" ] || return 0 ; DONE_configure="yes"
  323. config || return 1
  324. [ -d "cmake-${VERSION}" ] || checkout || return 1
  325. cache || return 1
  326. echo "Running configure ..." &&
  327. (
  328. cd "cmake-${VERSION}-${PLATFORM}" &&
  329. ../cmake-${VERSION}/configure --prefix=${PREFIX}
  330. ) >Logs/configure.log 2>&1 || error_log Logs/configure.log
  331. }
  332. #-----------------------------------------------------------------------------
  333. build()
  334. {
  335. [ -z "${DONE_build}" ] || return 0 ; DONE_build="yes"
  336. config || return 1
  337. if [ ! -d "cmake-${VERSION}-${PLATFORM}/Bootstrap" ]; then
  338. configure || return 1
  339. fi
  340. echo "Running make ..." &&
  341. (
  342. cd "cmake-${VERSION}-${PLATFORM}" &&
  343. make
  344. ) >Logs/build.log 2>&1 || error_log Logs/build.log
  345. }
  346. #-----------------------------------------------------------------------------
  347. tests()
  348. {
  349. [ -z "${DONE_tests}" ] || return 0 ; DONE_tests="yes"
  350. config || return 1
  351. [ -f "cmake-${VERSION}-${PLATFORM}/Source/ccmake" ] || build || return 1
  352. echo "Running tests ..." &&
  353. (
  354. cd "cmake-${VERSION}-${PLATFORM}" &&
  355. rm -rf Tests &&
  356. ./Source/ctest -V
  357. ) >Logs/tests.log 2>&1 || error_log Logs/tests.log
  358. }
  359. #-----------------------------------------------------------------------------
  360. install()
  361. {
  362. [ -z "${DONE_install}" ] || return 0 ; DONE_install="yes"
  363. config || return 1
  364. [ -d "cmake-${VERSION}-${PLATFORM}/Tests/Simple" ] || tests || return 1
  365. echo "Running make install ..." &&
  366. (
  367. rm -rf Install &&
  368. cd "cmake-${VERSION}-${PLATFORM}" &&
  369. make install DESTDIR="${RELEASE_ROOT}/Install"
  370. ) >Logs/install.log 2>&1 || error_log Logs/install.log
  371. }
  372. #-----------------------------------------------------------------------------
  373. strip()
  374. {
  375. [ -z "${DONE_strip}" ] || return 0 ; DONE_strip="yes"
  376. config || return 1
  377. [ -f "Install/usr/local/bin/ccmake" ] || install || return 1
  378. echo "Stripping executables ..." &&
  379. (
  380. strip Install${PREFIX}/bin/*
  381. ) >Logs/strip.log 2>&1 || error_log Logs/strip.log
  382. }
  383. #-----------------------------------------------------------------------------
  384. manifest()
  385. {
  386. [ -z "${DONE_manifest}" ] || return 0 ; DONE_manifest="yes"
  387. config || return 1
  388. [ -f "Install/usr/local/bin/ccmake" ] || install || return 1
  389. echo "Writing MANIFEST ..." &&
  390. (
  391. mkdir -p Install${PREFIX}${DOC_DIR} &&
  392. rm -rf Install${PREFIX}${DOC_DIR}/MANIFEST &&
  393. touch Install${PREFIX}${DOC_DIR}/MANIFEST &&
  394. cd Install${PREFIX} &&
  395. FILES=`find . -type f |sed 's/^\.\///'` &&
  396. cd ${RELEASE_ROOT} &&
  397. (cat >> Install${PREFIX}${DOC_DIR}/MANIFEST <<EOF
  398. ${FILES}
  399. EOF
  400. ) &&
  401. rm -rf Install/README &&
  402. (cat > Install/README <<EOF
  403. CMake $VERSION binary for $PLATFORM
  404. Extract the file "cmake-${VERSION}-${PLATFORM}-files.tar" into your
  405. destination directory (typically /usr/local). The following files will
  406. be extracted:
  407. ${FILES}
  408. EOF
  409. )
  410. ) >Logs/manifest.log 2>&1 || error_log Logs/manifest.log
  411. }
  412. #-----------------------------------------------------------------------------
  413. # Create binary tarballs for CMake.
  414. #
  415. # binary_tarball
  416. #
  417. binary_tarball()
  418. {
  419. [ -z "${DONE_binary_tarball}" ] || return 0 ; DONE_binary_tarball="yes"
  420. config || return 1
  421. strip || return 1
  422. manifest || return 1
  423. echo "Creating binary tarballs ..." &&
  424. (
  425. mkdir -p Tarballs &&
  426. rm -rf Install/cmake-${VERSION}-${PLATFORM}-files.tar &&
  427. (
  428. cd Install${PREFIX} &&
  429. tar cvf ${RELEASE_ROOT}/Install/cmake-${VERSION}-${PLATFORM}-files.tar *
  430. ) &&
  431. rm -rf Tarballs/cmake-${VERSION}-${PLATFORM}.tar* &&
  432. (
  433. cd Install &&
  434. tar cvf ${RELEASE_ROOT}/Tarballs/cmake-${VERSION}-${PLATFORM}.tar cmake-${VERSION}-${PLATFORM}-files.tar README
  435. ) &&
  436. (
  437. cd Tarballs &&
  438. gzip -c cmake-${VERSION}-${PLATFORM}.tar >cmake-${VERSION}-${PLATFORM}.tar.gz &&
  439. compress cmake-${VERSION}-${PLATFORM}.tar
  440. )
  441. ) >Logs/binary_tarball.log 2>&1 || error_log Logs/binary_tarball.log
  442. }
  443. #-----------------------------------------------------------------------------
  444. cygwin_source_tarball()
  445. {
  446. [ -z "${DONE_cygwin_source_tarball}" ] || return 0 ; DONE_cygwin_source_tarball="yes"
  447. config || return 1
  448. [ -d "cmake-${VERSION}" ] || checkout || return 1
  449. echo "Creating cygwin source tarball ..." &&
  450. (
  451. mkdir -p Cygwin &&
  452. rm -rf Cygwin/cmake-${VERSION}.tar.bz2 &&
  453. tar cvjf Cygwin/cmake-${VERSION}.tar.bz2 cmake-${VERSION}
  454. ) >Logs/cygwin_source_tarball.log 2>&1 || error_log Logs/cygwin_source_tarball.log
  455. }
  456. #-----------------------------------------------------------------------------
  457. cygwin_source_patch()
  458. {
  459. [ -z "${DONE_cygwin_source_patch}" ] || return 0 ; DONE_cygwin_source_patch="yes"
  460. config || return 1
  461. [ -d "cmake-${VERSION}" ] || checkout || return 1
  462. echo "Creating source patch for cygwin ..." &&
  463. (
  464. mkdir -p Cygwin &&
  465. rm -rf Cygwin/Patched &&
  466. mkdir -p Cygwin/Patched &&
  467. (tar c cmake-${VERSION} | (cd Cygwin/Patched; tar x)) &&
  468. cd Cygwin/Patched &&
  469. mkdir -p cmake-${VERSION}/CYGWIN-PATCHES &&
  470. (
  471. CYGVERSION=`uname -r`
  472. cat > cmake-${VERSION}/CYGWIN-PATCHES/cmake.README <<EOF
  473. cmake
  474. --------------------------------------
  475. Runtime requirements:
  476. cygwin-${CYGVERSION} or newer
  477. Build requirements
  478. cygwin-${CYGVERSION} or newer
  479. make
  480. Canonical homepage:
  481. http://www.cmake.org
  482. Canonical download:
  483. ftp://www.cmake.org/pub/cmake/
  484. ------------------------------------
  485. Build instructions:
  486. unpack cmake-${VERSION}-${RELEASE}-src.tar.bz2
  487. if you use setup to install this src package, it will be
  488. unpacked under /usr/src automatically
  489. cd /usr/src
  490. ./cmake-${VERSION}-${RELEASE}.sh all
  491. This will create:
  492. /usr/src/cmake-${VERSION}-${RELEASE}.tar.bz2
  493. /usr/src/cmake-${VERSION}-${RELEASE}-src.tar.bz2
  494. -------------------------------------------
  495. Port Notes:
  496. <none>
  497. ------------------
  498. Cygwin port maintained by: CMake Developers <[email protected]>
  499. EOF
  500. ) &&
  501. (
  502. cat > cmake-${VERSION}/CYGWIN-PATCHES/setup.hint <<EOF
  503. # CMake setup.hint file for cygwin setup.exe program
  504. category: Devel
  505. requires: libncurses6 cygwin
  506. sdesc: "A cross platform build manger"
  507. ldesc: "CMake is a cross platform build manager. It allows you to specify build parameters for C and C++ programs in a cross platform manner. For cygwin Makefiles will be generated. CMake is also capable of generating microsoft project files, nmake, and borland makefiles. CMake can also perform system inspection operations like finding installed libraries and header files."
  508. prev: ${PREVIOUS_VERSION}-${PREVIOUS_RELEASE}
  509. curr: ${VERSION}-${RELEASE}
  510. EOF
  511. ) &&
  512. dos2unix cmake-${VERSION}/CYGWIN-PATCHES/setup.hint &&
  513. cp cmake-${VERSION}/CYGWIN-PATCHES/setup.hint ../setup.hint &&
  514. (diff -urN "../../cmake-${VERSION}" "cmake-${VERSION}" > "../cmake-${VERSION}-${RELEASE}.patch"; [ "$?" = "1" ])
  515. ) >Logs/cygwin_source_patch.log 2>&1 || error_log Logs/cygwin_source_patch.log
  516. }
  517. #-----------------------------------------------------------------------------
  518. cygwin_package_script()
  519. {
  520. [ -z "${DONE_cygwin_package_script}" ] || return 0 ; DONE_cygwin_package_script="yes"
  521. utilities || return 1
  522. echo "Creating cygwin packaging script ..." &&
  523. (
  524. mkdir -p Cygwin &&
  525. cp ReleaseUtilities/cygwin-package.sh.in Cygwin/cmake-${VERSION}-${RELEASE}.sh &&
  526. chmod u+x Cygwin/cmake-${VERSION}-${RELEASE}.sh
  527. ) >Logs/cygwin_package_script.log 2>&1 || error_log Logs/cygwin_package_script.log
  528. }
  529. #-----------------------------------------------------------------------------
  530. # Create the CMake cygwin package files.
  531. #
  532. # cygwin_package
  533. #
  534. # This command should be run from a cygwin prompt.
  535. cygwin_package()
  536. {
  537. [ -z "${DONE_cygwin_package}" ] || return 0 ; DONE_cygwin_package="yes"
  538. config || return 1
  539. [ -f "Cygwin/cmake-${VERSION}.tar.bz2" ] || cygwin_source_tarball || return 1
  540. [ -f "Cygwin/cmake-${VERSION}-${RELEASE}.patch" ] || cygwin_source_patch || return 1
  541. [ -f "Cygwin/cmake-${VERSION}-${RELEASE}.sh" ] || cygwin_package_script || return 1
  542. echo "Running cygwin packaging script ..." &&
  543. (
  544. rm -rf Cygwin/Package &&
  545. mkdir -p Cygwin/Package &&
  546. cd Cygwin/Package &&
  547. cp ../setup.hint . &&
  548. cp ../cmake-${VERSION}.tar.bz2 . &&
  549. cp ../cmake-${VERSION}-${RELEASE}.patch . &&
  550. cp ../cmake-${VERSION}-${RELEASE}.sh . &&
  551. ./cmake-${VERSION}-${RELEASE}.sh all
  552. ) >Logs/cygwin_package.log 2>&1 || error_log Logs/cygwin_package.log
  553. }
  554. #-----------------------------------------------------------------------------
  555. # Upload the CMake cygwin package files.
  556. #
  557. # cygwin_upload
  558. #
  559. # This should be run after "cygwin_package".
  560. cygwin_upload()
  561. {
  562. setup || return 1
  563. echo "------- Copying cywgin packages to www.cmake.org. -------"
  564. scp Cygwin/Package/cmake-${VERSION}-${RELEASE}-src.tar.bz2 \
  565. Cygwin/Package/cmake-${VERSION}-${RELEASE}.tar.bz2 \
  566. Cygwin/Package/setup.hint \
  567. [email protected]:/projects/FTP/pub/cmake/cygwin
  568. echo "---- Done copying cygwin packages to www.cmake.org. -----"
  569. }
  570. #-----------------------------------------------------------------------------
  571. win32_zipfile()
  572. {
  573. setup || return 1
  574. echo "Creating windows non-admin install zip file ..." &&
  575. (
  576. mkdir -p Win32 &&
  577. cd "c:/Program Files" &&
  578. rm -rf cmake-${VERSION}-x86-win.zip &&
  579. zip -r cmake-${VERSION}-x86-win.zip CMake \
  580. -x CMake/INSTALL.LOG -x CMake/UNWISE.EXE -x CMake/WiseUpdt.exe &&
  581. mv cmake-${VERSION}-x86-win.zip ${RELEASE_ROOT}/Win32
  582. ) >Logs/win32_zipfile.log 2>&1 || error_log Logs/win32_zipfile.log
  583. }
  584. #-----------------------------------------------------------------------------
  585. win32_upload()
  586. {
  587. setup || return 1
  588. echo "------- Copying windows zip file to www.cmake.org. -------"
  589. scp Win32/cmake-${VERSION}-x86-win.zip \
  590. [email protected]:/projects/FTP/pub/cmake
  591. echo "---- Done copying windows zip file to www.cmake.org. -----"
  592. }
  593. #-----------------------------------------------------------------------------
  594. # Install CMake into the OSX package directory structure.
  595. #
  596. # osx_install
  597. #
  598. # This will build CMake if it is not already built.
  599. osx_install()
  600. {
  601. [ -z "${DONE_osx_install}" ] || return 0 ; DONE_osx_install="yes"
  602. config || return 1
  603. [ -f "cmake-${VERSION}-${PLATFORM}/Source/ccmake" ] || build || return 1
  604. if [ -z "${WX_RESOURCES}" ]; then
  605. echo "${CONFIG_FILE} should specify WX_RESOURCES."
  606. return 1
  607. fi
  608. echo "Running make install for OSX package ..." &&
  609. (
  610. rm -rf OSX &&
  611. mkdir -p OSX/Package_Root/Applications &&
  612. mkdir -p OSX/Resources/PreFlight &&
  613. mkdir -p OSX/Resources/PostFlight &&
  614. (
  615. cd "cmake-${VERSION}-${PLATFORM}" &&
  616. make install DESTDIR="${RELEASE_ROOT}/OSX/Package_Root"
  617. ) &&
  618. cp cmake-${VERSION}/Copyright.txt OSX/Resources/License.txt &&
  619. cp -r cmake-${VERSION}-${PLATFORM}/Source/CMake.app OSX/Package_Root/Applications &&
  620. echo "APPL????" > OSX/Package_Root/Applications/CMake.app/Contents/PkgInfo &&
  621. cp "${WX_RESOURCES}" OSX/Package_Root/Applications/CMake.app/Contents/Resources/wxCMakeSetup.rsrc
  622. ) >Logs/osx_install.log 2>&1 || error_log Logs/osx_install.log
  623. }
  624. #-----------------------------------------------------------------------------
  625. run()
  626. {
  627. CMD="'$1'"; shift; for i in "$@"; do CMD="${CMD} '$i'"; done
  628. eval "$CMD"
  629. }
  630. # Determine task and evaluate it.
  631. if [ -z "$TASK" ] && [ -z "$REMOTE" ] ; then
  632. if [ -z "$1" ]; then
  633. usage
  634. else
  635. run "$@"
  636. fi
  637. else
  638. [ -z "$TASK" ] || eval run "$TASK"
  639. fi