diff --git a/Utilities/Release/cmake_release.sh b/Utilities/Release/cmake_release.sh new file mode 100755 index 0000000000..958b4e6e2a --- /dev/null +++ b/Utilities/Release/cmake_release.sh @@ -0,0 +1,324 @@ +#!/bin/sh +#============================================================================= +# +# Program: CMake - Cross-Platform Makefile Generator +# Module: $RCSfile$ +# Language: C++ +# Date: $Date$ +# Version: $Revision$ +# +# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. +# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even +# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the above copyright notices for more information. +# +#============================================================================= + +# +# CMake UNIX Release Script. +# + +SELF="$0" +CVSROOT=:pserver:anonymous@www.cmake.org:/cvsroot/CMake +TAG="Release-1-6" +VERSION="1.6.beta2" +RELEASE="1" +PREVIOUS_VERSION="1.4.7" +PREVIOUS_RELEASE="1" +RELEASE_ROOT_NAME="CMakeReleaseRoot" +RELEASE_ROOT="${HOME}/${RELEASE_ROOT_NAME}" +CC="" +CXX="" +CFLAGS="" +CXXFLAGS="" +PREFIX="/usr/local" +INSTALL_SUBDIRS="bin share doc" +DOC_DIR="/doc/cmake" + +#----------------------------------------------------------------------------- +usage() +{ + echo "Usage!!" +} + +#----------------------------------------------------------------------------- +error_log() +{ + echo "An error has been logged to $1:" && + cat "$1" +} + +#----------------------------------------------------------------------------- +remote() +{ + HOST="$1" + shift + REMOTE_TASK="$@" + echo "------- Running remote task on $HOST. -------" + (echo "TASK=\"${REMOTE_TASK}\"" && cat $SELF) | ssh "$HOST" /bin/sh 2>/dev/null + echo "-------- Remote task on $HOST done. --------" +} + +#----------------------------------------------------------------------------- +remote_copy() +{ + HOST="$1" + echo "------- Copying tarballs from $HOST. -------" + scp "$HOST:${RELEASE_ROOT_NAME}/Tarballs/*" . + echo "---- Done copying tarballs from $HOST. -----" +} + +#----------------------------------------------------------------------------- +setup() +{ + [ -z "${DONE_setup}" ] || return 0 ; DONE_setup="yes" + mkdir -p ${RELEASE_ROOT}/Logs && + echo "Entering ${RELEASE_ROOT}" && + cd ${RELEASE_ROOT} +} + +#----------------------------------------------------------------------------- +clean() +{ + setup || return 1 + echo "Cleaning up ${RELEASE_ROOT}" + rm -rf cmake-* + rm -rf ReleaseUtilities +} + +#----------------------------------------------------------------------------- +cvs_login() +{ + [ -z "${DONE_cvs_login}" ] || return 0 ; DONE_cvs_login="yes" + setup || return 1 + ( + if [ -f "${HOME}/.cvspass" ]; then + CVSPASS="${HOME}/.cvspass" + else + CVSPASS="" + fi + if [ -z "`grep \"$CVSROOT\" ${CVSPASS} /dev/null`" ]; then + echo "cmake" | cvs -q -z3 -d $CVSROOT cvs_login + else + echo "Already logged in." + fi + ) >Logs/cvs_login.log 2>&1 || error_log Logs/cvs_login.log +} + +#----------------------------------------------------------------------------- +utilities() +{ + [ -z "${DONE_utilities}" ] || return 0 ; DONE_utilities="yes" + cvs_login || return 1 + ( + if [ -d "ReleaseUtilities/CVS" ]; then + cd ReleaseUtilities && cvs -z3 -q update -dAP + else + rm -rf CheckoutTemp && + mkdir CheckoutTemp && + cd CheckoutTemp && + cvs -q -z3 -d $CVSROOT co CMake/Utilities/Release && + mv CMake/Utilities/Release ../ReleaseUtilities && + cd .. && + rm -rf CheckoutTemp + fi + ) >Logs/utilities.log 2>&1 || error_log Logs/utilities.log +} + +#----------------------------------------------------------------------------- +config() +{ + [ -z "${DONE_config}" ] || return 0 ; DONE_config="yes" + utilities || return 1 + CONFIG_FILE="config_`uname`" + echo "Loading ${CONFIG_FILE} ..." + . ${RELEASE_ROOT}/ReleaseUtilities/${CONFIG_FILE} >Logs/config.log 2>&1 || error_log Logs/config.log + if [ -z "${CC}" ] || [ -z "${CXX}" ] || [ -z "${PLATFORM}" ]; then + echo "${CONFIG_FILE} should specify CC, CXX, and PLATFORM." && + return 1 + fi +} + +#----------------------------------------------------------------------------- +checkout() +{ + [ -z "${DONE_checkout}" ] || return 0 ; DONE_checkout="yes" + config || return 1 + echo "Exporting cmake from cvs ..." && + ( + rm -rf cmake-${VERSION} && + rm -rf CheckoutTemp && + mkdir CheckoutTemp && + cd CheckoutTemp && + cvs -q -z3 -d $CVSROOT export -r ${TAG} CMake && + mv CMake ../cmake-${VERSION} && + cd .. && + rm -rf CheckoutTemp + ) >Logs/checkout.log 2>&1 || error_log Logs/checkout.log +} + +#----------------------------------------------------------------------------- +source_tarball() +{ + [ -z "${DONE_source_tarball}" ] || return 0 ; DONE_source_tarball="yes" + config || return 1 + [ -d "cmake-${VERSION}" ] || checkout || return 1 + echo "Creating source tarballs ..." && + ( + mkdir -p Tarballs && + rm -rf Tarballs/cmake-${VERSION}.tar* && + tar cvf Tarballs/cmake-${VERSION}.tar cmake-${VERSION} && + gzip -c Tarballs/cmake-${VERSION}.tar >Tarballs/cmake-${VERSION}.tar.gz && + compress Tarballs/cmake-${VERSION}.tar + ) >Logs/source_tarball.log 2>&1 || error_log Logs/source_tarball.log +} + +#----------------------------------------------------------------------------- +write_cache() +{ + cat > CMakeCache.txt <Logs/cache.log 2>&1 || error_log Logs/cache.log +} + +#----------------------------------------------------------------------------- +configure() +{ + [ -z "${DONE_configure}" ] || return 0 ; DONE_configure="yes" + config || return 1 + [ -d "cmake-${VERSION}" ] || checkout || return 1 + cache || return 1 + echo "Running configure ..." && + ( + cd "cmake-${VERSION}-${PLATFORM}" && + ../cmake-${VERSION}/configure --prefix=${PREFIX} + ) >Logs/configure.log 2>&1 || error_log Logs/configure.log +} + +#----------------------------------------------------------------------------- +build() +{ + [ -z "${DONE_build}" ] || return 0 ; DONE_build="yes" + config || return 1 + if [ ! -d "cmake-${VERSION}-${PLATFORM}/Bootstrap" ]; then + configure || return 1 + fi + echo "Running make ..." && + ( + cd "cmake-${VERSION}-${PLATFORM}" && + make + ) >Logs/build.log 2>&1 || error_log Logs/build.log +} + +#----------------------------------------------------------------------------- +install() +{ + [ -z "${DONE_install}" ] || return 0 ; DONE_install="yes" + config || return 1 + [ -f "cmake-${VERSION}-${PLATFORM}/Source/ccmake" ] || build || return 1 + echo "Running make install ..." && + ( + rm -rf Install && + cd "cmake-${VERSION}-${PLATFORM}" && + make install DESTDIR="${RELEASE_ROOT}/Install" + ) >Logs/install.log 2>&1 || error_log Logs/install.log +} + +#----------------------------------------------------------------------------- +strip() +{ + [ -z "${DONE_strip}" ] || return 0 ; DONE_strip="yes" + config || return 1 + [ -f "Install/usr/local/bin/ccmake" ] || install || return 1 + echo "Stripping executables ..." && + ( + strip Install${PREFIX}/bin/* + ) >Logs/strip.log 2>&1 || error_log Logs/strip.log +} + +#----------------------------------------------------------------------------- +manifest() +{ + [ -z "${DONE_manifest}" ] || return 0 ; DONE_manifest="yes" + config || return 1 + [ -f "Install/usr/local/bin/ccmake" ] || install || return 1 + echo "Writing MANIFEST ..." && + ( + mkdir -p Install${PREFIX}${DOC_DIR} && + rm -rf Install${PREFIX}${DOC_DIR}/MANIFEST && + touch Install${PREFIX}${DOC_DIR}/MANIFEST && + cd Install${PREFIX} && + FILES=`find ${INSTALL_SUBDIRS} -type f |sed 's/^\.\///'` && + cd ${RELEASE_ROOT} && + (cat >> Install${PREFIX}${DOC_DIR}/MANIFEST < Install/README <Logs/manifest.log 2>&1 || error_log Logs/manifest.log +} + +#----------------------------------------------------------------------------- +package() +{ + [ -z "${DONE_package}" ] || return 0 ; DONE_package="yes" + config || return 1 + strip || return 1 + manifest || return 1 + echo "Creating binary tarballs ..." && + ( + mkdir -p Tarballs && + rm -rf Install/cmake-${VERSION}-${PLATFORM}-files.tar && + ( + cd Install${PREFIX} && + tar cvf ${RELEASE_ROOT}/Install/cmake-${VERSION}-${PLATFORM}-files.tar ${INSTALL_SUBDIRS} + ) && + rm -rf Tarballs/cmake-${VERSION}-${PLATFORM}.tar* && + ( + cd Install && + tar cvf ${RELEASE_ROOT}/Tarballs/cmake-${VERSION}-${PLATFORM}.tar cmake-${VERSION}-${PLATFORM}-files.tar README + ) && + ( + cd Tarballs && + gzip -c cmake-${VERSION}-${PLATFORM}.tar >cmake-${VERSION}-${PLATFORM}.tar.gz && + compress cmake-${VERSION}-${PLATFORM}.tar + ) + ) >Logs/package.log 2>&1 || error_log Logs/package.log +} + +if [ -z "$TASK" ]; then + TASK="$@" +fi + +if [ -z "$TASK" ]; then + TASK="usage" +fi + +eval $TASK diff --git a/Utilities/Release/config_Darwin b/Utilities/Release/config_Darwin new file mode 100644 index 0000000000..03f3c262fd --- /dev/null +++ b/Utilities/Release/config_Darwin @@ -0,0 +1,12 @@ +PLATFORM="darwin" +CC="cc" +CXX="c++" + +# Write entries into the cache file before building cmake. +write_cache() +{ +cat > CMakeCache.txt < UserMakeRules.cmake < CMakeCache.txt < CMakeCache.txt < UserMakeRules.cmake < CMakeCache.txt < CMakeCache.txt <