cmake_release.sh 22 KB

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