| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | # Build the dist/packages-dist directory in the same fashion as the legacy | 
					
						
							|  |  |  | # /build.sh script, by building the npm packages with Bazel and copying files. | 
					
						
							|  |  |  | # This is needed for scripts and tests which are not updated to the Bazel output | 
					
						
							|  |  |  | # layout (which always matches the input layout). | 
					
						
							|  |  |  | # Do not add new dependencies on this script, instead adapt scripts to use the | 
					
						
							|  |  |  | # new layout, and write new tests as Bazel targets. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set -u -e -o pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cd "$(dirname "$0")" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # basedir is the workspace root | 
					
						
							|  |  |  | readonly basedir=$(pwd)/.. | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  | readonly bin=$(bazel info bazel-bin) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function buildTargetPackages() { | 
					
						
							|  |  |  |   targets="$1" | 
					
						
							|  |  |  |   destPath="$2" | 
					
						
							|  |  |  |   compileMode="$3" | 
					
						
							|  |  |  |   desc="$4" | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo "##################################" | 
					
						
							|  |  |  | echo "scripts/build-packages-dist.sh:" | 
					
						
							|  |  |  | echo "  building @angular/* npm packages" | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  | echo "  mode: ${desc}" | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | echo "##################################" | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  |   echo "$targets" | xargs bazel build --define=compile=$compileMode | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  |   [ -d "${basedir}/${destPath}" ] || mkdir -p $basedir/${destPath} | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  |   dirs=`echo "$targets" | grep '//packages/[^/]*:npm_package' | sed -e 's/\/\/packages\/\(.*\):npm_package/\1/'` | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  |   for pkg in $dirs; do | 
					
						
							|  |  |  |     # Skip any that don't have an "npm_package" target | 
					
						
							|  |  |  |     srcDir="${bin}/packages/${pkg}/npm_package" | 
					
						
							|  |  |  |     destDir="${basedir}/${destPath}/${pkg}" | 
					
						
							|  |  |  |     if [ -d $srcDir ]; then | 
					
						
							|  |  |  |       echo "# Copy artifacts to ${destDir}" | 
					
						
							|  |  |  |       rm -rf $destDir | 
					
						
							|  |  |  |       cp -R $srcDir $destDir | 
					
						
							|  |  |  |       chmod -R u+w $destDir | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | # Ideally these integration tests should run under bazel, and just list the npm | 
					
						
							|  |  |  | # packages in their deps[]. | 
					
						
							|  |  |  | # Until then, we have to manually run bazel first to create the npm packages we | 
					
						
							|  |  |  | # want to test. | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  | LEGACY_TARGETS=`bazel query --output=label 'kind(.*_package, //packages/...)'` | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | buildTargetPackages "$LEGACY_TARGETS" "dist/packages-dist" "legacy" "Production" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # We don't use the ivy build in the integration tests, only when publishing | 
					
						
							|  |  |  | # snapshots. | 
					
						
							|  |  |  | # This logic matches what we use in the .circleci/config.yml file to short- | 
					
						
							|  |  |  | # circuit execution of the publish-packages job. | 
					
						
							| 
									
										
										
										
											2018-08-17 22:00:27 +01:00
										 |  |  | [[  "${CIRCLE_PR_NUMBER-}" != "" | 
					
						
							|  |  |  |     || "${CIRCLE_PROJECT_USERNAME-}" != "angular" | 
					
						
							|  |  |  |     || "${CIRCLE_PROJECT_REPONAME-}" != "angular" | 
					
						
							| 
									
										
										
										
											2018-08-03 17:16:31 -07:00
										 |  |  | ]] && exit 0 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-05 11:38:46 -07:00
										 |  |  | IVY_JIT_TARGETS=`bazel query --output=label 'attr("tags", "\[.*ivy-jit.*\]", //packages/...) intersect kind(".*_package", //packages/...)'` | 
					
						
							|  |  |  | IVY_LOCAL_TARGETS=`bazel query --output=label 'attr("tags", "\[.*ivy-local.*\]", //packages/...) intersect kind(".*_package", //packages/...)'` | 
					
						
							|  |  |  | buildTargetPackages "$IVY_JIT_TARGETS" "dist/packages-dist-ivy-jit" "jit" "Ivy JIT" | 
					
						
							|  |  |  | buildTargetPackages "$IVY_LOCAL_TARGETS" "dist/packages-dist-ivy-local" "local" "Ivy AOT" | 
					
						
							| 
									
										
										
										
											2018-04-23 11:46:02 -07:00
										 |  |  | 
 |