171 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -ex
 | |
| 
 | |
| echo =============================================================================
 | |
| echo "DART DEV COMPILER (DDC) BUILD"
 | |
| echo =============================================================================
 | |
| 
 | |
| # go to project dir
 | |
| SCRIPT_DIR=$(dirname $0)
 | |
| REPO_ROOT_DIR=`cd ${SCRIPT_DIR}/../..; pwd`
 | |
| source $SCRIPT_DIR/env_dart.sh
 | |
| cd $REPO_ROOT_DIR
 | |
| 
 | |
| # Variables
 | |
| DDC_TOTAL_WARNING_CAP="210"
 | |
| DDC_TOTAL_ERROR_CAP="0"
 | |
| DDC_DIR=`pwd`/tmp/dev_compiler
 | |
| DDC_VERSION="0.1.20"
 | |
| 
 | |
| # Get DDC
 | |
| mkdir -p tmp
 | |
| rm -rf tmp/dev_compiler
 | |
| git clone https://github.com/dart-lang/dev_compiler.git tmp/dev_compiler
 | |
| (cd $DDC_DIR && \
 | |
|   git checkout tags/$DDC_VERSION && \
 | |
|   $PUB get)
 | |
| 
 | |
| # Convert TypeScript to Dart
 | |
| ./node_modules/.bin/gulp build.js.cjs
 | |
| ./node_modules/.bin/gulp build/packages.dart
 | |
| ./node_modules/.bin/gulp build/pubspec.dart
 | |
| node ./scripts/ci/dart_ddc/pubspec_for_ddc.js \
 | |
|     --pubspec-file=dist/dart/playground/pubspec.yaml
 | |
| cd dist/dart/playground
 | |
| $PUB build --mode=debug
 | |
| cd build/web
 | |
| 
 | |
| # TODO: temporarily remove references to dart.js as ddc doesn't do it
 | |
| # automatically yet (https://github.com/dart-lang/dev_compiler/issues/437)
 | |
| echo `pwd`
 | |
| for htmlFile in `find ./src -name '*.html'`; do
 | |
|   tmpFile=$REPO_ROOT_DIR/tmp/scriptless_html.tmp
 | |
|   cat $htmlFile | grep -vE '<script.*dart\.js' >$tmpFile
 | |
|   mv $tmpFile $htmlFile
 | |
| done
 | |
| 
 | |
| ##############################################################################
 | |
| # Analyze code
 | |
| ##############################################################################
 | |
| 
 | |
| LOG_FILE="analyzer.log"
 | |
| set +e
 | |
| $DART_SDK/bin/dart $DDC_DIR/bin/dartdevc.dart \
 | |
|   --dart-sdk=$DART_SDK_LIB_SEARCH_PATH -o out \
 | |
|   src/animate/index.dart \
 | |
|   src/async/index.dart \
 | |
|   src/gestures/index.dart \
 | |
|   src/hash_routing/index.dart \
 | |
|   src/hello_world/index.dart \
 | |
|   src/key_events/index.dart \
 | |
|   src/model_driven_forms/index.dart \
 | |
|   src/observable_models/index.dart \
 | |
|   src/order_management/index.dart \
 | |
|   src/person_management/index.dart \
 | |
|   src/relative_assets/index.dart \
 | |
|   src/routing/index.dart \
 | |
|   src/sourcemap/index.dart \
 | |
|   src/svg/index.dart \
 | |
|   src/template_driven_forms/index.dart \
 | |
|   src/todo/index.dart \
 | |
|   src/zippy_component/index.dart \
 | |
|   >$LOG_FILE
 | |
| EXIT_CODE=`echo $?`
 | |
| set -e
 | |
| 
 | |
| # Analyzer exits with 1 when there are warnings and something crazy
 | |
| # like 255 when it crashes. We don't want to fail the build if its
 | |
| # only warnings (until our code is warning-free).
 | |
| if [[ "$EXIT_CODE" -ne "0" && "$EXIT_CODE" -ne "1" ]]
 | |
| then
 | |
|   echo "DDC compiler crashed with exit code $EXIT_CODE"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| cat $LOG_FILE
 | |
| EXIT_CODE=0
 | |
| 
 | |
| # TODO remove  `grep -v template.dart` after Tobias new compiler lands.
 | |
| 
 | |
| WARNING_COUNT=$(cat $LOG_FILE | grep -E '^warning.*' | grep -v template.dart | wc -l | sed -e 's/^[[:space:]]*//' || true)
 | |
| ERROR_COUNT=$(cat $LOG_FILE | grep -E '^severe.*' | wc -l | sed -e 's/^[[:space:]]*//' || true)
 | |
| 
 | |
| 
 | |
| if [[ "$ERROR_COUNT" -gt "$DDC_TOTAL_ERROR_CAP" ]]
 | |
| then
 | |
|   echo "Found severe errors in angular2 package"
 | |
|   EXIT_CODE=1
 | |
| fi
 | |
| 
 | |
| if [[ "$WARNING_COUNT" -gt "$DDC_TOTAL_WARNING_CAP" ]]
 | |
| then
 | |
|   echo "Too many warnings: $WARNING_COUNT"
 | |
|   EXIT_CODE=1
 | |
| else
 | |
|   echo "Warning count ok"
 | |
| fi
 | |
| 
 | |
| 
 | |
| ##############################################################################
 | |
| # Run e2e tests
 | |
| ##############################################################################
 | |
| 
 | |
| DIST_DIR="${REPO_ROOT_DIR}/dist/js/ddc"
 | |
| 
 | |
| # Build the apps (again)
 | |
| # TODO: ddc does not yet support compiling multiple html files. Ideally we
 | |
| # could build everything during analysis above.
 | |
| # See: https://github.com/dart-lang/dev_compiler/issues/430
 | |
| 
 | |
| ln -s `pwd`/packages src/hello_world/packages
 | |
| 
 | |
| set +e
 | |
| OUT_DIR="${DIST_DIR}/playground/src/hello_world"
 | |
| mkdir -p $OUT_DIR
 | |
| $DART_SDK/bin/dart $DDC_DIR/bin/dartdevc.dart \
 | |
|   --force-compile \
 | |
|   --dart-sdk=$DART_SDK_LIB_SEARCH_PATH -o $OUT_DIR \
 | |
|   src/hello_world/index.html
 | |
| EXIT_CODE=`echo $?`
 | |
| set -e
 | |
| 
 | |
| if [[ "$EXIT_CODE" -ne "0" && "$EXIT_CODE" -ne "1" ]]
 | |
| then
 | |
|   echo "DDC compiler crashed with exit code $EXIT_CODE"
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| 
 | |
| # Run e2e tests
 | |
| cd $REPO_ROOT_DIR
 | |
| 
 | |
| ./node_modules/.bin/webdriver-manager update
 | |
| 
 | |
| function killServer () {
 | |
|   kill $serverPid
 | |
| }
 | |
| 
 | |
| ./node_modules/.bin/gulp serve.js.ddc&
 | |
| serverPid=$!
 | |
| 
 | |
| echo CHROM_BIN=$CHROME_BIN
 | |
| echo CHROM_BIN_VERSION=`$CHROME_BIN --version`
 | |
| 
 | |
| trap killServer EXIT
 | |
| 
 | |
| # wait for server to come up
 | |
| sleep 10
 | |
| 
 | |
| function runSpec {
 | |
|   SPEC=$1
 | |
|   ./node_modules/.bin/protractor protractor-ddc.conf.js \
 | |
|       --browsers=${E2E_BROWSERS:-ChromeDesktop} \
 | |
|       --spec=$SPEC
 | |
| }
 | |
| 
 | |
| # TODO: add more e2e tests
 | |
| runSpec hello_world/hello_world_spec.js
 | |
| 
 | |
| echo 'Dart DDC build finished'
 | |
| exit $EXIT_CODE
 |