blob: ac2a2bf3078f2d7bfe85204ddadf06815b7e4b9f [file] [log] [blame] [edit]
#!/bin/bash
#
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Exit immediately if a command exits with a non-zero status.
set -e
# --- Configuration ---
# Get the absolute path of the directory where this script is located. This is
# crucial for making all other paths relative and predictable.
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
# Default verbosity level
VERBOSITY=1
# Check for QUIET environment variable
if [[ -n "${QUIET}" ]]; then
VERBOSITY=0
fi
# --- Determine Host Profile Directory ---
HOST_PROFILE_DIR=""
# Check if the first argument ($1) was provided.
if [ -n "$1" ]; then
# Use the provided argument as the directory name.
HOST_PROFILE_DIR="$1"
echo "Using specified host profile directory: $HOST_PROFILE_DIR"
else
# If no argument is provided, guess based on the machine architecture.
ARCH=$(uname -m)
echo "No host profile directory specified. Guessing based on architecture: $ARCH"
if [[ "$ARCH" == "arm64" || "$ARCH" == "aarch64" ]]; then
HOST_PROFILE_DIR="host_profile_arm64"
elif [[ "$ARCH" == "x86_64" ]]; then
# This is a common directory name for x86-64 builds.
HOST_PROFILE_DIR="host_profile"
else
# If the architecture is not recognized, exit with an error.
echo "ERROR: Unsupported architecture '$ARCH'."
echo "Please provide the host profile directory as the first argument."
echo "Example: $0 host_profile_arm64"
exit 1
fi
fi
# --- Define Paths Relative to the Script ---
# Path to the executable to run.
EXECUTABLE="$SCRIPT_DIR/../../out/$HOST_PROFILE_DIR/licenses_cpp"
# The root directory for the license check.
WORKING_DIR="$SCRIPT_DIR/../.."
# The data directory required by the license tool.
DATA_DIR="$SCRIPT_DIR/../tools/licenses_cpp/data"
# The output path for the generated licenses file. This will be created
# in the directory where you *run* the script from (your current working directory).
LICENSES_OUTPUT_PATH="$SCRIPT_DIR/../sky/packages/sky_engine/LICENSE_CPP.new"
LICENSES_PATH="$SCRIPT_DIR/../sky/packages/sky_engine/LICENSE"
# --- Validation ---
# Before running, check that the required executable and directories actually exist.
if [ ! -f "$EXECUTABLE" ]; then
echo "ERROR: Executable not found at the expected path: $EXECUTABLE"
echo "Please ensure the project has been built and this script is in the correct location."
exit 1
fi
# --- Run Command ---
"$EXECUTABLE" \
--working_dir "$WORKING_DIR" \
--data_dir "$DATA_DIR" \
--licenses_path "$LICENSES_OUTPUT_PATH" \
--root_package "flutter" \
--v $VERBOSITY
if ! git diff \
--no-index \
--exit-code \
--ignore-cr-at-eol \
--ignore-matching-lines="^You may obtain a copy of this library's Source Code Form from:.*" \
"$LICENSES_PATH" \
"$LICENSES_OUTPUT_PATH"; then
echo "The licenses have changed."
echo "Please review added licenses and update //engine/src/flutter/sky/packages/sky_engine/LICENSE"
echo "The license check can be repeated locally with //engine/src/flutter/ci/licenses_cpp.sh"
echo "Make sure your licenses_cpp executable is built. For example:"
echo " et build -c host_profile_arm64 //flutter/tools/licenses_cpp"
echo "When executed locally the following command can update the licenses after a run:"
echo "cp $LICENSES_OUTPUT_PATH $LICENSES_PATH"
exit 1
fi
rm "$LICENSES_OUTPUT_PATH"