| #!/bin/bash |
| # |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # This script ensures absence of a <!-- tainted --> tag in image's license. |
| |
| # Abort on error. |
| set -e |
| |
| # Load common constants and variables. |
| . "$(dirname "$0")/common.sh" |
| |
| usage() { |
| echo "Usage ${PROG} image" |
| } |
| |
| main() { |
| if [[ $# -ne 1 ]]; then |
| usage |
| exit 1 |
| fi |
| |
| local image="$1" |
| |
| local loopdev rootfs |
| if [[ -d "${image}" ]]; then |
| rootfs="${image}" |
| else |
| rootfs=$(make_temp_dir) |
| loopdev=$(loopback_partscan "${image}") |
| mount_loop_image_partition_ro "${loopdev}" 3 "${rootfs}" |
| fi |
| |
| local license_dir license tainted_tag tainted_status |
| license_dir="${rootfs}/opt/google/chrome/" |
| if [[ ! -d "${license_dir}" ]]; then |
| echo "Directory ${license_dir} does not exist. Skipping the tainted check." |
| exit 0 |
| fi |
| |
| license=$(find "${license_dir}" -name about_os_credits.html 2>/dev/null) |
| if [[ -z "${license}" ]]; then |
| echo "License file about_os_credits.html not found in ${license_dir}" |
| exit 1 |
| fi |
| |
| tainted_tag="<!-- tainted -->" |
| tainted_status=$(grep "${tainted_tag}" "${license}") |
| if [[ -n "${tainted_status}" ]]; then |
| echo "${license}:" |
| echo "License file contains packages with LICENSE=TAINTED." |
| echo "Remove those packages or modify their license to allow signing." |
| # Print the list of tainted packages. |
| sed -n '/Image is TAINTED/,/<\/ul>/{ |
| # Strip out HTML tags. |
| s/<[^>]*>//g |
| # Delete any empty lines. |
| /^[[:space:]]*$/d |
| p |
| }' "${license}" |
| fi |
| exit 0 |
| } |
| main "$@" |