blob: cd640493cfdb71aa5b6b5c6be29820f3f9f1d0ae [file] [log] [blame] [edit]
#!/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 "$@"