mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
178 lines
5.8 KiB
PowerShell
178 lines
5.8 KiB
PowerShell
# determine the platform
|
|
# use 32bit by default
|
|
$PLATFORM = "windows_x86"
|
|
$MONGO_VERSION = "3.2.6"
|
|
$NODE_VERSION = "4.5.0"
|
|
$NPM_VERSION = "3.10.7"
|
|
$PYTHON_VERSION = "2.7.12" # For node-gyp
|
|
|
|
# take it form the environment if exists
|
|
if (Test-Path env:PLATFORM) {
|
|
$PLATFORM = (Get-Item env:PLATFORM).Value
|
|
}
|
|
|
|
$script_path = Split-Path -parent $MyInvocation.MyCommand.Definition
|
|
$CHECKOUT_DIR = Split-Path -parent $script_path
|
|
|
|
# extract the bundle version from the meteor bash script
|
|
$BUNDLE_VERSION = Select-String -Path ($CHECKOUT_DIR + "\meteor") -Pattern 'BUNDLE_VERSION=(\S+)' | % { $_.Matches[0].Groups[1].Value } | Select-Object -First 1
|
|
$BUNDLE_VERSION = $BUNDLE_VERSION.Trim()
|
|
|
|
# generate-dev-bundle-xxxxxxxx shortly
|
|
# convert relative path to absolute path because not all commands know how to deal with this themselves
|
|
$DIR = $executionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath("${script_path}\..\gdbXXX")
|
|
echo $DIR
|
|
|
|
cmd /c rmdir "$DIR" /s /q
|
|
mkdir "$DIR"
|
|
cd "$DIR"
|
|
|
|
mkdir lib
|
|
mkdir lib\node_modules
|
|
mkdir bin
|
|
cd bin
|
|
|
|
$webclient = New-Object System.Net.WebClient
|
|
$shell = New-Object -com shell.application
|
|
|
|
mkdir "$DIR\7z"
|
|
cd "$DIR\7z"
|
|
$webclient.DownloadFile("http://www.7-zip.org/a/7z1602.msi", "$DIR\7z\7z.msi")
|
|
$webclient.DownloadFile("http://www.7-zip.org/a/7z1602-extra.7z", "$DIR\7z\extra.7z")
|
|
msiexec /i 7z.msi /quiet /qn /norestart
|
|
ping -n 4 127.0.0.1 | out-null
|
|
& "C:\Program Files*\7-Zip\7z.exe" x extra.7z
|
|
mv 7za.exe "$DIR\bin\7z.exe"
|
|
cd "$DIR\bin"
|
|
|
|
# download node
|
|
# same node on 32bit vs 64bit?
|
|
$node_link = "http://nodejs.org/dist/v${NODE_VERSION}/win-x86/node.exe"
|
|
$webclient.DownloadFile($node_link, "$DIR\bin\node.exe")
|
|
|
|
# On Windows we provide a reliable version of python.exe for use by
|
|
# node-gyp (the tool that rebuilds binary node modules). #WinPy
|
|
$py_msi_link = "http://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi"
|
|
$py_msi = "${DIR}\python.msi"
|
|
$webclient.DownloadFile($py_msi_link, $py_msi)
|
|
$py_dir = "${DIR}\python"
|
|
msiexec /i "$py_msi" TARGETDIR="$py_dir" /quiet /qn /norestart
|
|
$env:PATH = "${py_dir};${env:PATH}"
|
|
|
|
# download initial version of npm
|
|
$npm_zip = "$DIR\bin\npm.zip"
|
|
|
|
# These dist/npm archives were only published for 1.x versions of npm, and
|
|
# this is the most recent one.
|
|
$npm_link = "https://nodejs.org/dist/npm/npm-1.4.12.zip"
|
|
$webclient.DownloadFile($npm_link, $npm_zip)
|
|
|
|
$zip = $shell.NameSpace($npm_zip)
|
|
foreach($item in $zip.items()) {
|
|
$shell.Namespace("$DIR\bin").copyhere($item, 0x14) # 0x10 - overwrite, 0x4 - no dialog
|
|
}
|
|
|
|
rm -Recurse -Force $npm_zip
|
|
rm -Recurse -Force "$DIR\7z"
|
|
|
|
# add bin to the front of the path so we can use our own node for building
|
|
$env:PATH = "${DIR}\bin;${env:PATH}"
|
|
|
|
# Install the version of npm that we're actually going to expose from the
|
|
# dev bundle. Note that we use npm@1.4.12 to install npm@${NPM_VERSION}.
|
|
cd "${DIR}\lib"
|
|
npm install npm@${NPM_VERSION}
|
|
rm -Recurse -Force "${DIR}\bin\node_modules"
|
|
copy "${CHECKOUT_DIR}\scripts\npm.cmd" "${DIR}\bin\npm.cmd"
|
|
npm version
|
|
|
|
# npm depends on a hardcoded file path to node-gyp, so we need this to be
|
|
# un-flattened
|
|
cd node_modules\npm
|
|
npm install node-gyp
|
|
|
|
# Make sure node-gyp knows how to find its build tools.
|
|
$env:PYTHON = "${DIR}\python\python.exe"
|
|
$env:GYP_MSVS_VERSION = "2015"
|
|
$env:HOME = "$DIR";
|
|
$env:USERPROFILE = "$DIR";
|
|
|
|
# Make node-gyp install Node headers and libraries in $DIR\.node-gyp\.
|
|
# https://github.com/nodejs/node-gyp/blob/4ee31329e0/lib/node-gyp.js#L52
|
|
& "${DIR}\bin\node.exe" node_modules\node-gyp\bin\node-gyp.js install
|
|
$include_path = "${DIR}\.node-gyp\${NODE_VERSION}\include\node"
|
|
echo "Contents of ${include_path}:"
|
|
dir "$include_path"
|
|
|
|
# install dev-bundle-package.json
|
|
# use short folder names
|
|
# b for build
|
|
mkdir "$DIR\b\t"
|
|
cd "$DIR\b\t"
|
|
|
|
npm config set loglevel error
|
|
node "${CHECKOUT_DIR}\scripts\dev-bundle-server-package.js" | Out-File -FilePath package.json -Encoding ascii
|
|
npm install
|
|
npm shrinkwrap
|
|
|
|
mkdir -Force "${DIR}\server-lib\node_modules"
|
|
cmd /c robocopy "${DIR}\b\t\node_modules" "${DIR}\server-lib\node_modules" /e /nfl /ndl
|
|
|
|
mkdir -Force "${DIR}\etc"
|
|
Move-Item package.json "${DIR}\etc\"
|
|
Move-Item npm-shrinkwrap.json "${DIR}\etc\"
|
|
|
|
mkdir -Force "${DIR}\b\p"
|
|
cd "${DIR}\b\p"
|
|
node "${CHECKOUT_DIR}\scripts\dev-bundle-tool-package.js" | Out-File -FilePath package.json -Encoding ascii
|
|
npm install
|
|
cmd /c robocopy "${DIR}\b\p\node_modules" "${DIR}\lib\node_modules" /e /nfl /ndl
|
|
cd "$DIR"
|
|
cmd /c rmdir "${DIR}\b" /s /q
|
|
|
|
cd "$DIR"
|
|
mkdir "$DIR\mongodb"
|
|
mkdir "$DIR\mongodb\bin"
|
|
|
|
# download Mongo
|
|
$mongo_name = "mongodb-win32-i386-${MONGO_VERSION}"
|
|
If ($PLATFORM -eq 'windows_x86_64') {
|
|
# 64-bit would be mongodb-win32-x86_64-2008plus-${MONGO_VERSION}.zip
|
|
$mongo_name = "mongodb-win32-x86_64-2008plus-${MONGO_VERSION}"
|
|
}
|
|
$mongo_link = "https://fastdl.mongodb.org/win32/${mongo_name}.zip"
|
|
$mongo_zip = "$DIR\mongodb\mongo.zip"
|
|
|
|
$webclient.DownloadFile($mongo_link, $mongo_zip)
|
|
|
|
$zip = $shell.NameSpace($mongo_zip)
|
|
foreach($item in $zip.items()) {
|
|
$shell.Namespace("$DIR\mongodb").copyhere($item, 0x14) # 0x10 - overwrite, 0x4 - no dialog
|
|
}
|
|
|
|
cp "$DIR\mongodb\$mongo_name\bin\mongod.exe" $DIR\mongodb\bin
|
|
cp "$DIR\mongodb\$mongo_name\bin\mongo.exe" $DIR\mongodb\bin
|
|
|
|
rm -Recurse -Force $mongo_zip
|
|
rm -Recurse -Force "$DIR\mongodb\$mongo_name"
|
|
|
|
rm -Recurse -Force "$py_msi"
|
|
python --version
|
|
|
|
cd $DIR
|
|
|
|
# mark the version
|
|
echo "${BUNDLE_VERSION}" | Out-File .bundle_version.txt -Encoding ascii
|
|
|
|
cd "$DIR\.."
|
|
|
|
# rename the folder with the devbundle
|
|
cmd /c rename "$DIR" "dev_bundle_${PLATFORM}_${BUNDLE_VERSION}"
|
|
|
|
& "C:\Program Files*\7-zip\7z.exe" a -ttar dev_bundle.tar "dev_bundle_${PLATFORM}_${BUNDLE_VERSION}"
|
|
& "C:\Program Files*\7-zip\7z.exe" a -tgzip "${CHECKOUT_DIR}\dev_bundle_${PLATFORM}_${BUNDLE_VERSION}.tar.gz" dev_bundle.tar
|
|
del dev_bundle.tar
|
|
cmd /c rmdir "dev_bundle_${PLATFORM}_${BUNDLE_VERSION}" /s /q
|
|
|
|
echo "Done building Dev Bundle!"
|