mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
The ‘show’ command has been completely rewritten. It has different output and now does the following: - Interacts with local package versions. Checks in the local package catalog, and returns the local versions along with the server versions. When ‘meteor show’ is run with a specific version request (‘meteor show foo@<version>’), default to showing the local package version (but show a message that a server version is available). Running ‘meteor show foo@local’ will always show the local version (useful for version-less local packages). - Simplify the interface. Instead of various ‘show-*’ flags, we only have one: show-all. By default, we only show the top 5 official (non-prerelease) unmigrated versions of a package (+ local version, if applicable). This can be overridden with ‘show-all’, and we let the user know that more versions are available. For releases, ‘show-all’ will show non-recommended releases. - Display publication time for non-local package versions. This makes it easier to run ‘meteor show <name>’ and see if <name> is actively maintained. For local packages, we display the root directory (useful for large apps or running with the LOCAL_PACKAGE_DIRS variable, for example). - For non-local package versions, show if the version is ‘installed’ (downloaded into the warehouse). This involved minor changes to tropohouse.js. The idea is that this should give a pretty good clue whether the version can be added offline. - Show version dependencies. This should help the user understand, track down and debug constraint solver failures. - Do not show version architectures except in —ejson mode. - Allow an ‘—ejson’ flag to get the output in EJSON format. That should make scripting easier. (As a bonus, for release versions, the EJSON output acts as a nice template for the release configuration file.) The search command now does the following: - Interacts with local package versions. Specifically, local versions override equivalent server versions. Also, ‘search’ works on local packages (so, for example, ‘meteor search troposphere’ inside the package server app will give you the troposphere package). - Allows an ‘—ejson’ flag to get the outout in EJSON format. Minor changes to some minor testing infrastructure: - A new skeleton package, package-for-show. Its versions contain different values for various metadata, so we can test that metadata comes from the right version. - In several places, replace the pattern of copying around package.js files with using the replace function on a placeholder string. (Mostly, as applied to package versions). This is based on these hackpads: https://mdg.hackpad.com/Showing-Package-Metadata-HdGo3Lzx3hR and https://mdg.hackpad.com/Meteor-Search-Output-1xxEzrAK9YU.
188 lines
6.1 KiB
Bash
Executable File
188 lines
6.1 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
|
|
IOS_SIM_URL="http://android-bundle.s3.amazonaws.com/ios-sim.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.
|
|
NODE_BUILD_NUMBER=8
|
|
NODE_VERSION=0.10.33
|
|
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="http://${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.
|
|
MONGO_BUILD_NUMBER=3
|
|
MONGO_VERSION=2.4.12
|
|
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="http://${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"
|
|
|
|
# TODO Move this into dev-bundle-tool-package.js when it can be safely
|
|
# installed that way (i.e. without build nan/runas build errors).
|
|
# XXX This contains a patch to expose the errno from failed syscalls, so
|
|
# we can better understand why some users can't use pathwatcher.
|
|
# We have to install from the npm registry in order to get coffeescript
|
|
# output. The patch is https://github.com/atom/node-pathwatcher/pull/53
|
|
npm install meteor-pathwatcher-tweaks@2.3.5
|
|
|
|
# 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 browserify-zlib/node_modules/pako/benchmark
|
|
delete browserify-zlib/node_modules/pako/test
|
|
delete buffer/perf
|
|
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="http://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
|