blob: fd39d9d91f5cbaafaa2ad8cbf063039b19c2afd5 [file] [log] [blame]
#!/bin/bash
# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# check_cronet_dependencies.sh - Prints new Cronet's deps to stdout.
#
# Arguments:
# $1: relative path to file containing old/known Cronet's dependencies.
#
# Output:
# Exit code 0: deduped list of new Cronet's dependencies to stdout.
# Otherwise: something went wrong.
set -e
OLD_DEPS=$(realpath "$1")
GN_PATH=$(realpath "../../buildtools/linux64/gn")
TMP_DIR=$(mktemp -d -p ./)
trap "rm -rf ${TMP_DIR}" EXIT
# gn desc *might* modify the target build dir. To be sure that doesn't affect
# the current build, create a new build dir with the same gn args and run gn
# desc there instead.
GN_ARGS=$(cat args.gn | tr '\n' ' ' | sed "s/ = /=/g")
"$GN_PATH" gen "$TMP_DIR" --args="$GN_ARGS" &>/dev/null
(
cd $TMP_DIR
NEW_DEPS=$(mktemp -p ./)
# Create new dependencies list and drop duplicates.
"$GN_PATH" desc ./ //components/cronet/android:cronet deps --all |
awk -F ':' '{new_deps[$1]=1}; END{for(dep in new_deps) print dep}' |
sort > "$NEW_DEPS"
# Filter out dependencies that already existed. I.e., print new dependencies to
# stdout.
awk 'NR==FNR {old_deps[$0]=1; next} {if(!old_deps[$0]) print $0}' \
"$OLD_DEPS" "$NEW_DEPS" |
sort
)