mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 22:16:58 +02:00
The messages printed out by the code that checks if chromium's libcros and the system's libcros are in sync were kind of confusing and not quite accurate. The system library implements a range of API versions, and it is chromium that requires a particular version of the API. The messages now clearly reflect this. BUG=None TEST=manual Change-Id: I7308d7eb724edfb7fa11edbe0fbec86ee12c5afe Reviewed-on: http://gerrit.chromium.org/gerrit/1136 Reviewed-by: David James <davidjames@chromium.org> Tested-by: Chris Masone <cmasone@chromium.org>
119 lines
3.2 KiB
Bash
Executable File
119 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2010 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.
|
|
|
|
# --- BEGIN COMMON.SH BOILERPLATE ---
|
|
# Load common CrOS utilities. Inside the chroot this file is installed in
|
|
# /usr/lib/crosutils. Outside the chroot we find it relative to the script's
|
|
# location.
|
|
find_common_sh() {
|
|
local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")"))
|
|
local path
|
|
|
|
SCRIPT_ROOT=
|
|
for path in "${common_paths[@]}"; do
|
|
if [ -r "${path}/common.sh" ]; then
|
|
SCRIPT_ROOT=${path}
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
find_common_sh
|
|
. "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1)
|
|
# --- END COMMON.SH BOILERPLATE ---
|
|
|
|
# Flags
|
|
DEFINE_string root "" \
|
|
"The root file system to check."
|
|
|
|
# Parse command line
|
|
FLAGS "$@" || exit 1
|
|
eval set -- "${FLAGS_ARGV}"
|
|
|
|
# Die on any errors
|
|
set -e
|
|
|
|
# Check all parts of a pipe
|
|
set -o pipefail
|
|
|
|
ROOT="$FLAGS_root"
|
|
if [[ ! -d "$ROOT" ]]; then
|
|
echo "Error: Root FS does not exist ($ROOT)"
|
|
exit 1
|
|
fi
|
|
|
|
BINARIES="$ROOT/usr/bin/Xorg
|
|
$ROOT/usr/bin/chromeos-wm
|
|
$ROOT/boot/vmlinuz
|
|
$ROOT/sbin/session_manager
|
|
$ROOT/bin/sed
|
|
$ROOT/opt/google/chrome/chrome"
|
|
|
|
EXITCODE=0
|
|
for i in $BINARIES; do
|
|
if ! [[ -f $i ]]; then
|
|
echo test_build_root: Cannot find $i
|
|
EXITCODE=1
|
|
fi
|
|
done
|
|
|
|
# Extract the version number from lines like:
|
|
# kCrosAPIMinVersion = 29,
|
|
# kCrosAPIVersion = 30
|
|
extract_cros_version() {
|
|
NAME="$1"
|
|
FILE="$2"
|
|
VERSION=$(perl -ne "print \$1 if /^\\s*${NAME}\\s*=\\s*(\\d+)/" "$FILE")
|
|
test -z "$VERSION" && die "Failed to get $NAME from $FILE"
|
|
echo $VERSION
|
|
}
|
|
|
|
# Check the libcros version compatibility, like we do in libcros at run time.
|
|
# See also platform/cros/version_check.cc and load.cc.
|
|
check_cros_version() {
|
|
CHROME_CROS="${ROOT}/opt/google/chrome/include/chromeos_cros_api.h"
|
|
SYSTEM_CROS="${ROOT}/usr/include/cros/chromeos_cros_api.h"
|
|
|
|
if [ ! -f "$SYSTEM_CROS" ]; then
|
|
echo "test_build_root: Missing libcros headers."
|
|
return 1
|
|
fi
|
|
|
|
|
|
if [ ! -f "$CHROME_CROS" ]; then
|
|
# For compatiblity with old versions of Chrome which don't install headers
|
|
# and already check the libcros version, skip the check here.
|
|
return 0
|
|
fi
|
|
|
|
# Get the version of libcros in the chromium tree.
|
|
VERSION=$(extract_cros_version kCrosAPIVersion "${CHROME_CROS}")
|
|
|
|
# Get the min version of libcros in the chromium os tree.
|
|
MIN_VERSION=$(extract_cros_version kCrosAPIMinVersion "${SYSTEM_CROS}")
|
|
|
|
# Get the max version of libcros in the chromium os tree.
|
|
MAX_VERSION=$(extract_cros_version kCrosAPIVersion "${SYSTEM_CROS}")
|
|
|
|
if [ "$MIN_VERSION" -gt "$VERSION" ]; then
|
|
echo "test_build_root: System libcros not compatible with Chromium."
|
|
echo "Chromium requires version $VERSION, but system provides $MIN_VERSION"
|
|
echo "or later."
|
|
return 1
|
|
fi
|
|
if [ "$VERSION" -gt "$MAX_VERSION" ]; then
|
|
echo "test_build_root: System libcros not compatible with Chromium headers."
|
|
echo "Chromium requires version $VERSION, but system provides $MAX_VERSION"
|
|
echo "or earlier."
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
check_cros_version || EXITCODE=1
|
|
|
|
exit $EXITCODE
|