mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-08 05:26:58 +02:00
63 lines
1.8 KiB
Bash
63 lines
1.8 KiB
Bash
# Copyright (c) 2012 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.
|
|
|
|
test_image_content() {
|
|
local root="$1"
|
|
local returncode=0
|
|
|
|
if [[ -z "$BOARD" ]]; then
|
|
die '$BOARD is undefined!'
|
|
fi
|
|
local portageq="portageq-$BOARD"
|
|
|
|
local binaries=(
|
|
"$root/usr/boot/vmlinuz"
|
|
"$root/bin/sed"
|
|
)
|
|
|
|
for test_file in "${binaries[@]}"; do
|
|
if [ ! -f "$test_file" ]; then
|
|
error "test_image_content: Cannot find '$test_file'"
|
|
returncode=1
|
|
fi
|
|
done
|
|
|
|
local libs=( $(sudo find "$root" -type f -name '*.so*') )
|
|
|
|
# Check that all .so files, plus the binaries, have the appropriate
|
|
# dependencies.
|
|
local check_deps="${BUILD_LIBRARY_DIR}/check_deps"
|
|
if ! "$check_deps" "$root" "${binaries[@]}" "${libs[@]}"; then
|
|
error "test_image_content: Failed dependency check"
|
|
returncode=1
|
|
fi
|
|
|
|
local blacklist_dirs=(
|
|
"$root/usr/share/locale"
|
|
)
|
|
for dir in "${blacklist_dirs[@]}"; do
|
|
if [ -d "$dir" ]; then
|
|
warn "test_image_content: Blacklisted directory found: $dir"
|
|
# Only a warning for now, size isn't important enough to kill time
|
|
# playing whack-a-mole on things like this this yet.
|
|
#error "test_image_content: Blacklisted directory found: $dir"
|
|
#returncode=1
|
|
fi
|
|
done
|
|
|
|
# Check that there are no conflicts between /* and /usr/*
|
|
local pkgdb=$(ROOT="${root}" $portageq vdb_path)
|
|
local files=$(awk '$2 ~ /^\/(bin|sbin|lib|lib32|lib64)\// {print $2}' \
|
|
"${pkgdb}"/*/*/CONTENTS)
|
|
local check_file
|
|
for check_file in $files; do
|
|
if grep -q "^... /usr$check_file " "${pkgdb}"/*/*/CONTENTS; then
|
|
error "test_image_content: $check_file conflicts with /usr$check_file"
|
|
returncode=1
|
|
fi
|
|
done
|
|
|
|
return $returncode
|
|
}
|