mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
This time with actual Node 0.10.40, not some random commit because Jenkins is running old versions of git where `git clone -b garbage` isn't an error!
180 lines
5.8 KiB
Bash
Executable File
180 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -u
|
|
|
|
# Read the bundle version from the meteor shell script.
|
|
BUNDLE_VERSION=$(perl -ne 'print $1 if /BUNDLE_VERSION=(\S+)/' meteor)
|
|
if [ -z "$BUNDLE_VERSION" ]; then
|
|
echo "BUNDLE_VERSION not found"
|
|
exit 1
|
|
fi
|
|
|
|
source "$(dirname $0)/build-dev-bundle-common.sh"
|
|
echo CHECKOUT DIR IS "$CHECKOUT_DIR"
|
|
echo BUILDING DEV BUNDLE "$BUNDLE_VERSION" IN "$DIR"
|
|
|
|
# ios-sim is used to run iPhone simulator from the command-line. Doesn't make
|
|
# sense to build it for linux.
|
|
if [ "$OS" == "osx" ]; then
|
|
# the build from source is not going to work on old OS X versions, until we
|
|
# upgrade our Mac OS X Jenkins machine, download the precompiled tarball
|
|
|
|
# which rake # rake is required to build ios-sim
|
|
# git clone https://github.com/phonegap/ios-sim.git
|
|
# cd ios-sim
|
|
# git checkout 2.0.1
|
|
# rake build
|
|
# which build/Release/ios-sim # check that we have in fact got the binary
|
|
# mkdir -p "$DIR/lib/ios-sim"
|
|
# cp -r build/Release/* "$DIR/lib/ios-sim/"
|
|
|
|
# Download the precompiled tarball
|
|
# See docs on building the new ios_sim: https://mdg.hackpad.com/Building-ios-sim-tarball-9aHVf0rGcwE
|
|
IOS_SIM_URL="http://android-bundle.s3.amazonaws.com/ios-sim.mavericks.xcode6.tgz"
|
|
curl "$IOS_SIM_URL" | tar xfz -
|
|
mkdir -p "$DIR/lib/ios-sim"
|
|
cp -r ios-sim/ios-sim "$DIR/lib/ios-sim"
|
|
fi
|
|
|
|
cd "$DIR"
|
|
|
|
S3_HOST="s3.amazonaws.com/com.meteor.jenkins"
|
|
|
|
# Update these values after building the dev-bundle-node Jenkins project.
|
|
# Also make sure to update NODE_VERSION in generate-dev-bundle.ps1.
|
|
NODE_VERSION=0.10.40
|
|
NODE_BUILD_NUMBER=18
|
|
NODE_TGZ="node_${PLATFORM}_v${NODE_VERSION}.tar.gz"
|
|
if [ -f "${CHECKOUT_DIR}/${NODE_TGZ}" ] ; then
|
|
tar zxf "${CHECKOUT_DIR}/${NODE_TGZ}"
|
|
else
|
|
NODE_URL="https://${S3_HOST}/dev-bundle-node-${NODE_BUILD_NUMBER}/${NODE_TGZ}"
|
|
echo "Downloading Node from ${NODE_URL}"
|
|
curl "${NODE_URL}" | tar zx
|
|
fi
|
|
|
|
# Update these values after building the dev-bundle-mongo Jenkins project.
|
|
# Also make sure to update MONGO_VERSION in generate-dev-bundle.ps1.
|
|
MONGO_VERSION=2.6.7
|
|
MONGO_BUILD_NUMBER=6
|
|
MONGO_TGZ="mongo_${PLATFORM}_v${MONGO_VERSION}.tar.gz"
|
|
if [ -f "${CHECKOUT_DIR}/${MONGO_TGZ}" ] ; then
|
|
tar zxf "${CHECKOUT_DIR}/${MONGO_TGZ}"
|
|
else
|
|
MONGO_URL="https://${S3_HOST}/dev-bundle-mongo-${MONGO_BUILD_NUMBER}/${MONGO_TGZ}"
|
|
echo "Downloading Mongo from ${MONGO_URL}"
|
|
curl "${MONGO_URL}" | tar zx
|
|
fi
|
|
|
|
cd "$DIR/build"
|
|
|
|
# export path so we use our new node for later builds
|
|
export PATH="$DIR/bin:$PATH"
|
|
which node
|
|
which npm
|
|
|
|
# When adding new node modules (or any software) to the dev bundle,
|
|
# remember to update LICENSE.txt! Also note that we include all the
|
|
# packages that these depend on, so watch out for new dependencies when
|
|
# you update version numbers.
|
|
|
|
# First, we install the modules that are dependencies of tools/server/boot.js:
|
|
# the modules that users of 'meteor bundle' will also have to install. We save a
|
|
# shrinkwrap file with it, too. We do this in a separate place from
|
|
# $DIR/server-lib/node_modules originally, because otherwise 'npm shrinkwrap'
|
|
# will get confused by the pre-existing modules.
|
|
mkdir "${DIR}/build/npm-server-install"
|
|
cd "${DIR}/build/npm-server-install"
|
|
node "${CHECKOUT_DIR}/scripts/dev-bundle-server-package.js" >package.json
|
|
npm install
|
|
npm shrinkwrap
|
|
|
|
mkdir -p "${DIR}/server-lib/node_modules"
|
|
# This ignores the stuff in node_modules/.bin, but that's OK.
|
|
cp -R node_modules/* "${DIR}/server-lib/node_modules/"
|
|
|
|
mkdir "${DIR}/etc"
|
|
mv package.json npm-shrinkwrap.json "${DIR}/etc/"
|
|
|
|
# Fibers ships with compiled versions of its C code for a dozen platforms. This
|
|
# bloats our dev bundle. Remove all the ones other than our
|
|
# architecture. (Expression based on build.js in fibers source.)
|
|
shrink_fibers () {
|
|
FIBERS_ARCH=$(node -p -e 'process.platform + "-" + process.arch + "-v8-" + /[0-9]+\.[0-9]+/.exec(process.versions.v8)[0]')
|
|
mv $FIBERS_ARCH ..
|
|
rm -rf *
|
|
mv ../$FIBERS_ARCH .
|
|
}
|
|
|
|
cd "$DIR/server-lib/node_modules/fibers/bin"
|
|
shrink_fibers
|
|
|
|
# Now, install the npm modules which are the dependencies of the command-line
|
|
# tool.
|
|
mkdir "${DIR}/build/npm-tool-install"
|
|
cd "${DIR}/build/npm-tool-install"
|
|
node "${CHECKOUT_DIR}/scripts/dev-bundle-tool-package.js" >package.json
|
|
npm install
|
|
# Refactor node modules to top level and remove unnecessary duplicates.
|
|
npm dedupe
|
|
cp -R node_modules/* "${DIR}/lib/node_modules/"
|
|
|
|
cd "${DIR}/lib"
|
|
|
|
# Clean up some bulky stuff.
|
|
cd node_modules
|
|
|
|
# Used to delete bulky subtrees. It's an error (unlike with rm -rf) if they
|
|
# don't exist, because that might mean it moved somewhere else and we should
|
|
# update the delete line.
|
|
delete () {
|
|
if [ ! -e "$1" ]; then
|
|
echo "Missing (moved?): $1"
|
|
exit 1
|
|
fi
|
|
rm -rf "$1"
|
|
}
|
|
|
|
delete browserstack-webdriver/docs
|
|
delete browserstack-webdriver/lib/test
|
|
|
|
delete sqlite3/deps
|
|
delete wordwrap/test
|
|
delete moment/min
|
|
|
|
# dedupe isn't good enough to eliminate 3 copies of esprima, sigh.
|
|
find . -path '*/esprima/test' | xargs rm -rf
|
|
find . -path '*/esprima-fb/test' | xargs rm -rf
|
|
|
|
# dedupe isn't good enough to eliminate 4 copies of JSONstream, sigh.
|
|
find . -path '*/JSONStream/test/fixtures' | xargs rm -rf
|
|
|
|
# Not sure why dedupe doesn't lift these to the top.
|
|
pushd cordova/node_modules/cordova-lib/node_modules/cordova-js/node_modules/browserify/node_modules
|
|
delete crypto-browserify/test
|
|
delete umd/node_modules/ruglify/test
|
|
popd
|
|
|
|
cd "$DIR/lib/node_modules/fibers/bin"
|
|
shrink_fibers
|
|
|
|
# Download BrowserStackLocal binary.
|
|
BROWSER_STACK_LOCAL_URL="https://browserstack-binaries.s3.amazonaws.com/BrowserStackLocal-07-03-14-$OS-$ARCH.gz"
|
|
|
|
cd "$DIR/build"
|
|
curl -O $BROWSER_STACK_LOCAL_URL
|
|
gunzip BrowserStackLocal*
|
|
mv BrowserStackLocal* BrowserStackLocal
|
|
mv BrowserStackLocal "$DIR/bin/"
|
|
|
|
echo BUNDLING
|
|
|
|
cd "$DIR"
|
|
echo "${BUNDLE_VERSION}" > .bundle_version.txt
|
|
rm -rf build
|
|
|
|
tar czf "${CHECKOUT_DIR}/dev_bundle_${PLATFORM}_${BUNDLE_VERSION}.tar.gz" .
|
|
|
|
echo DONE
|