Skip to content

Commit

Permalink
Merge branch 'release-candidate' into stable
Browse files Browse the repository at this point in the history
  • Loading branch information
Wenyu Zhang committed Apr 21, 2020
2 parents c20fecd + 5f9b5eb commit 211c402
Show file tree
Hide file tree
Showing 306 changed files with 1,082 additions and 7,994 deletions.
24 changes: 0 additions & 24 deletions .bazelrc

This file was deleted.

1 change: 0 additions & 1 deletion .bazelversion

This file was deleted.

279 changes: 0 additions & 279 deletions .kokoro
Original file line number Diff line number Diff line change
Expand Up @@ -42,74 +42,6 @@ source "${scripts_dir}/package_managers.sh"
# This currently points to version 0.21.3, the last version that supports Xcode 9
SOURCEKITTEN_FORMULA="https://raw.githubusercontent.com/Homebrew/homebrew-core/c5a8a094f9e1dd8e41ed24785acef07ef7092d0d/Formula/sourcekitten.rb"

fix_bazel_imports() {
echo "Rewriting imports for bazel..."

private_components() {
find "components/private" -type d | cut -d'/' -f3 | sort | uniq
}

rewrite_tests() {
find "${stashed_dir}"components/private/*/tests -type f -name '*.swift' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/private/*/tests -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/tests -type f -name '*.swift' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/tests -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/schemes/*/tests -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
}
rewrite_examples() {
find "${stashed_dir}"components/private/*/examples -type f -name '*.swift' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/private/*/examples -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/private/*/examples -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/examples -type f -name '*.swift' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/examples -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/examples -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
}
rewrite_source() {
find "${stashed_dir}"components/private/*/src -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/private/*/src -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/src -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/*/src -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/schemes/*/src -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"components/schemes/*/src -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
}
rewrite_catalogs() {
find "${stashed_dir}"catalog/MDC* -type f -name '*.swift' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"catalog/MDC* -type f -name '*.m' -exec perl -pi -e "$1" {} + || true
find "${stashed_dir}"catalog/MDC* -type f -name '*.h' -exec perl -pi -e "$1" {} + || true
}

stashed_dir=""
rewrite_examples "s/import <MaterialComponentsBeta\/(.+)>/import\/\*Material beta framework import\*\/ \"\1\"/"
rewrite_catalogs "s/import <CatalogByConvention\/CatalogByConvention\.h>/import\/\*Material prefix framework import\*\/ \"CatalogByConvention.h\"/"
rewrite_examples "s/import <MaterialComponents\/Material(.+)\.h>/import\/\*Material prefix framework import\*\/ \"Material\1.h\"/"
rewrite_source "s/import <MaterialComponentsBeta\/(.+)>/import\/\*Material beta framework import\*\/ \"\1\"/"
rewrite_source "s/import <Motion(.+)\/Motion.+\.h>/import \"Motion\1.h\"/"
rewrite_source "s/import <MDFTextAccessibility\/MDFTextAccessibility\.h>/import \"MDFTextAccessibility.h\"/"
rewrite_source "s/import <MaterialComponents\/Material(.+)\.h>/import\/\*Material prefix framework import\*\/ \"Material\1.h\"/"
rewrite_source "s/import <MaterialComponents\/MDC(.+)\.h>/import\/\*MDC prefix framework import\*\/ \"MDC\1.h\"/"
rewrite_tests "s/import <MaterialComponentsBeta\/Material(.+)Beta\.h>/import\/\*Material beta prefix framework import\*\/ \"Material\1Beta.h\"/"
rewrite_tests "s/import <MaterialComponents\/Material(.+)\.h>/import\/\*Material prefix framework import\*\/ \"Material\1.h\"/"
rewrite_tests "s/import <MDFTesting\/MDFTesting\.h>/import \"MDFTesting.h\"/"
stashed_dir="$(pwd)/"
reset_imports() {
echo "Undoing import rewrites for bazel..."

# Undoes our source changes from above.
rewrite_tests "s/import\/\*Material beta prefix framework import\*\/ \"Material(.+).h\"/import <MaterialComponentsBeta\/Material\1\.h>/"
rewrite_catalogs "s/import\/\*Material prefix framework import\*\/ \"CatalogByConvention\.h\"/import <CatalogByConvention\/CatalogByConvention\.h>/"
rewrite_examples "s/import\/\*Material beta framework import\*\/ \"(.+)\"/import <MaterialComponentsBeta\/\1>/"
rewrite_examples "s/import\/\*Material prefix framework import\*\/ \"Material(.+)\.h\"/import <MaterialComponents\/Material\1\.h>/"
rewrite_source "s/import\/\*Material beta framework import\*\/ \"(.+)\"/import <MaterialComponentsBeta\/\1>/"
rewrite_source "s/import \"Motion(.+)\.h\"/import <Motion\1\/Motion\1.h>/"
rewrite_source "s/import \"MDFTextAccessibility\.h\"/import <MDFTextAccessibility\/MDFTextAccessibility.h>/"
rewrite_source "s/import\/\*Material prefix framework import\*\/ \"Material(.+)\.h\"/import <MaterialComponents\/Material\1\.h>/"
rewrite_source "s/import\/\*MDC prefix framework import\*\/ \"MDC(.+)\.h\"/import <MaterialComponents\/MDC\1\.h>/"
rewrite_tests "s/import\/\*Material prefix framework import\*\/ \"Material(.+)\.h\"/import <MaterialComponents\/Material\1\.h>/"
rewrite_tests "s/import \"MDFTesting\.h\"/import <MDFTesting\/MDFTesting.h>/"
}
trap reset_imports EXIT
}

move_derived_data_to_tmp() {
targetDir="${HOME}/Library/Developer/Xcode/DerivedData"
if [[ -d "$targetDir" ]]; then
Expand All @@ -118,215 +50,6 @@ move_derived_data_to_tmp() {
fi
}

# Uploads all of the bazel test artifacts to Kokoro's artifacts storage.
upload_bazel_test_artifacts() {
logs_dir="$KOKORO_ARTIFACTS_DIR/bazel_test_logs"
mkdir -p "$logs_dir"

# Copies each file from stdin to $KOKORO_ARTIFACTS_DIR and preserves the directory structure
copy_to_artifacts() {
cat - | while read file; do
directory="$logs_dir/$(dirname $file)"
mkdir -p "$directory"
cp "$file" "$logs_dir/$file"
done
}

brew_install rename

# rename all test.log to sponge_log.log and then copy them to the kokoro
# artifacts directory.
find -L . -name "test.log" -type f -exec rename 's/test.log/sponge_log.log/' {} \;
find -L . -name "sponge_log.log" -type f | copy_to_artifacts

# rename all test.xml to sponge_log.xml and then copy them to kokoro
# artifacts directory.
find -L . -name "test.xml" -type f -exec rename 's/test.xml/sponge_log.xml/' {} \;
find -L . -name "sponge_log.xml" -type f | copy_to_artifacts
}

# Upgrades kokoro's current bazel version to at least 0.20.0
upgrade_kokoro_bazel_if_needed() {
bazel version

if [ -f "$KOKORO_GFILE_DIR/use_bazel.sh" ]; then
bash "$KOKORO_GFILE_DIR/use_bazel.sh" 0.20.0
else
use_bazel.sh 0.20.0
fi
bazel version
}

run_bazel_affected() {
echo "Checking affected targets..."
if [ -z "$COMMAND" ]; then
COMMAND="test"
fi
if [ -z "$TARGET" ]; then
if [ "$COMMAND" == "test" ]; then
# Only return test targets.
bazel_kind="test"
else
# Return all affected targets.
bazel_kind="rule"
fi

if [ -n "$KOKORO_BUILD_NUMBER" ]; then
pushd github/repo >> /dev/null
fi

# `target_branch` is either the Pull Request destination branch (where it will be merged) or if
# none can be determined, defaults to `develop`.
if [ -n "$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH" ]; then
target_branch="$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH"
else
target_branch=develop
fi

# `base_sha` is the merge base of `target_branch` and the current HEAD.
base_sha=$(git merge-base "$target_branch" HEAD)

# We must upgrade bazel prior to running bazel query because we rely on features in bazel
# 0.20.
if [ -n "$KOKORO_BUILD_NUMBER" ]; then
upgrade_kokoro_bazel_if_needed
fi

# Output the affected targets to the logs. This also gives the affected_targets script the
# opportunity to fail.
scripts/affected_targets "$bazel_kind" "$base_sha...HEAD"

# `TARGET` is then all bazel targets affected by changes in the commit range between `base_sha`
# and `HEAD`. By default, that becomes all changes between the `develop` branch and the latest
# commit.
TARGET="$(scripts/affected_targets $bazel_kind $base_sha...HEAD)"

if [ -n "$KOKORO_BUILD_NUMBER" ]; then
popd >> /dev/null
fi
fi

if [ -z "$TARGET" ]; then
echo "Nothing to build."
exit 0
fi

comment_identifier="affected-targets"

if [ -z "$TARGET" ]; then
echo "Nothing to build."

if [ -n "$GITHUB_API_TOKEN" ]; then
delete_comment "$comment_identifier"
fi

exit 0
else
if [ -n "$GITHUB_API_TOKEN" ]; then
comment_tmp_path=$(mktemp -d)
comment_tmp_file="$comment_tmp_path/comment.tmp"
echo "bazel detected changes to the following targets:" > "$comment_tmp_file"
echo >> "$comment_tmp_file"
echo '```' >> "$comment_tmp_file"
echo "$TARGET" >> "$comment_tmp_file"
echo '```' >> "$comment_tmp_file"

post_comment "$comment_identifier" "$comment_tmp_file"
fi
fi

run_bazel
}

run_bazel() {
echo "Running bazel builds..."

if [ -n "$KOKORO_BUILD_NUMBER" ]; then
move_derived_data_to_tmp
fi

if [ -n "$KOKORO_BUILD_NUMBER" ]; then
upgrade_kokoro_bazel_if_needed
fi

if [ -n "$VERBOSE_OUTPUT" ]; then
verbosity_args="-s"
fi

if [ -z "$COMMAND" ]; then
COMMAND="test"
fi
if [ -z "$TARGET" ]; then
TARGET="//..."
fi

if [ -n "$KOKORO_BUILD_NUMBER" ]; then
select_xcode "$XCODE_VERSION"

# Move into our cloned repo
cd github/repo
fi

# Run against whichever Xcode is currently selected.
selected_xcode_developer_path=$(xcode-select -p)
selected_xcode_contents_path=$(dirname "$selected_xcode_developer_path")

xcode_version=$(cat "$selected_xcode_contents_path/version.plist" \
| grep "CFBundleShortVersionString" -A1 \
| grep string \
| cut -d'>' -f2 \
| cut -d'<' -f1)

if [ "$COMMAND" == "build" ]; then
echo "🏗️ $COMMAND with Xcode $xcode_version..."
elif [ "$COMMAND" == "test" ]; then
echo "🛠️ $COMMAND with Xcode $xcode_version..."

if [ -n "$VERBOSE_OUTPUT" ]; then
extra_args="--test_output=all"
else
extra_args="--test_output=errors"
fi
fi

fix_bazel_imports
if [ -n "$KOKORO_ARTIFACTS_DIR" ]; then
# Especially in the event of failure, we want our test artifacts to be uploaded.
trap upload_bazel_test_artifacts EXIT
fi

snapshot_dir="${repo_dir}/snapshot_test_goldens/goldens"
tmp_img_dir="$(mktemp -d)"

# Install git lfs if we're performing tests on kokoro
if [ -n "$KOKORO_BUILD_NUMBER" ] || [ -n "$AUTOBOT_BUILD_NUMBER" ]; then
if [ "$COMMAND" == "test" ]; then
brew_install git-lfs
git lfs install
git lfs pull

# Reset the simulators to prepare for hosted snapshot tests
sim_cleaner_tmp=$(mktemp -d)
git clone https://github.com/material-foundation/ios-simulator-utils.git "$sim_cleaner_tmp"
source "${sim_cleaner_tmp}/scripts/cleanup_simulators.sh"
perform_pre_test_cleanup "iPhone"
fi
fi

# Configure CI mode
if [ -n "$KOKORO_BUILD_NUMBER" ]; then
ci_mode="kokoro"
elif [ -n "$AUTOBOT_BUILD_NUMBER" ]; then
ci_mode="autobot"
fi

bazel $COMMAND $TARGET --xcode_version $xcode_version --ios_minimum_os=9.0 \
--ios_multi_cpus=i386,x86_64 $extra_args $verbosity_args \
--test_env="FB_REFERENCE_IMAGE_DIR=$snapshot_dir" \
--test_env="IMAGE_DIFF_DIR=$tmp_img_dir" \
--define ci_mode=$ci_mode
}

run_cocoapods() {
echo "Running cocoapods builds..."

Expand Down Expand Up @@ -611,8 +334,6 @@ if [ -n "$VERBOSE_OUTPUT" ]; then
fi

case "$DEPENDENCY_SYSTEM" in
"bazel") run_bazel ;;
"bazel-affected") run_bazel_affected ;;
"cocoapods") run_cocoapods ;;
"cocoapods-podspec") run_cocoapods ;;
"website") generate_website ;;
Expand Down
17 changes: 0 additions & 17 deletions BUILD

This file was deleted.

Loading

0 comments on commit 211c402

Please sign in to comment.