64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/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.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Ideally integration tests should run under bazel, and just consume the npm
							 | 
						||
| 
								 | 
							
								# packages via `deps`. Until that works, we manually build the npm packages and then
							 | 
						||
| 
								 | 
							
								# copy the results to the appropriate `dist` location.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -u -e -o pipefail
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cd "$(dirname "$0")"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# basedir is the workspace root
							 | 
						||
| 
								 | 
							
								readonly base_dir=$(pwd)/..
							 | 
						||
| 
								 | 
							
								# We need to resolve the Bazel binary in the node modules because running Bazel
							 | 
						||
| 
								 | 
							
								# through `yarn bazel` causes additional output that throws off command stdout.
							 | 
						||
| 
								 | 
							
								readonly bazel_bin=$(yarn bin)/bazel
							 | 
						||
| 
								 | 
							
								readonly bin=$(${bazel_bin} info bazel-bin)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildTargetPackages() {
							 | 
						||
| 
								 | 
							
								  # List of targets to build, e.g. core, common, compiler, etc.
							 | 
						||
| 
								 | 
							
								  targets=$(${bazel_bin} query --output=label 'attr("tags", "\[.*release-with-framework.*\]", //packages/...) intersect kind(".*_package", //packages/...)')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # Path to the output directory into which we copy the npm packages.
							 | 
						||
| 
								 | 
							
								  dest_path="$1"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # Either "legacy" (view engine) or "aot" (ivy)
							 | 
						||
| 
								 | 
							
								  compile_mode="$2"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # Human-readable description of the build.
							 | 
						||
| 
								 | 
							
								  desc="$3"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  echo "##################################"
							 | 
						||
| 
								 | 
							
								  echo "scripts/build-packages-dist.sh:"
							 | 
						||
| 
								 | 
							
								  echo "  building @angular/* npm packages"
							 | 
						||
| 
								 | 
							
								  echo "  mode: ${desc}"
							 | 
						||
| 
								 | 
							
								  echo "##################################"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # Use --config=release so that snapshot builds get published with embedded version info
							 | 
						||
| 
								 | 
							
								  echo "$targets" | xargs ${bazel_bin} build --config=release --define=compile=${compile_mode}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [[ -d "${base_dir}/${dest_path}" ]] || mkdir -p ${base_dir}/${dest_path}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  dirs=`echo "$targets" | sed -e 's/\/\/packages\/\(.*\):npm_package/\1/'`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for pkg in ${dirs}; do
							 | 
						||
| 
								 | 
							
								    # Skip any that don't have an "npm_package" target
							 | 
						||
| 
								 | 
							
								    src_dir="${bin}/packages/${pkg}/npm_package"
							 | 
						||
| 
								 | 
							
								    dest_dir="${base_dir}/${dest_path}/${pkg}"
							 | 
						||
| 
								 | 
							
								    if [[ -d ${src_dir} ]]; then
							 | 
						||
| 
								 | 
							
								      echo "# Copy artifacts to ${dest_dir}"
							 | 
						||
| 
								 | 
							
								      rm -rf ${dest_dir}
							 | 
						||
| 
								 | 
							
								      cp -R ${src_dir} ${dest_dir}
							 | 
						||
| 
								 | 
							
								      chmod -R u+w ${dest_dir}
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |