blob: f0c4e78f68feacd383023bd9913ff2d427fd56fe [file] [log] [blame]
#!/bin/bash
# Copyright 2021 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.
set -euo pipefail
die() {
echo "$1" >&2
exit 1
}
USAGE="Usage: $0 [--noupdate]"
BUILD_PACKAGES=1
while (( "$#" )); do
case "$1" in
--help|-h)
echo "${USAGE}"
exit
;;
--noupdate)
BUILD_PACKAGES=0
;;
*)
echo "Unrecognized argument $1"
echo "${USAGE}"
exit 1
;;
esac
shift
done
HWTESTS=/mnt/host/source/src/platform2/lorgnette/hwtests
OUT=/tmp/wwcb_mfp_tests.tar.gz
PACKAGES=(
lorgnette-wwcb-tests
imagemagick
)
BOARD=amd64-generic
SYSROOT="/build/${BOARD}"
# Files that need to be copied with their shared libraries.
SYSROOT_BINS=(
/usr/bin/lorgnette_cli
/usr/local/bin/identify
)
# Files that need to be copied, but don't need shared libraries.
SYSROOT_STATIC_BINS=(
/usr/bin/test_scanner_capabilities
)
# Files to be installed from the current directory instead of sysroot.
HWTESTS_BINS=(
wwcb_scan_test.sh
)
[[ -f /etc/cros_chroot_version ]] || \
die "This script must be run inside the chroot."
[[ -d /build/amd64-generic ]] || \
die "Run build_packages --board=amd64-generic first"
if [[ -f "${OUT}" ]]; then
rm -f "${OUT}"
echo "Cleaned up existing output ${OUT}"
fi
if [[ "${BUILD_PACKAGES}" -ne 0 ]]; then
~/trunk/src/scripts/build_packages --board=amd64-generic "${PACKAGES[@]}"
fi
cd "${HWTESTS}" || die "Can't cd to ${HWTESTS}"
for f in "${SYSROOT_BINS[@]}" "${SYSROOT_STATIC_BINS[@]}"; do
[[ -f "${SYSROOT}${f}" ]] || \
die "${SYSROOT}${f} is missing. Run again without --noupdate."
done
ROOT=$(mktemp -d -t "wwcb_mfp.XXXXXX") || die "Can't create temp root"
PREFIX="${ROOT}/opt/wwcb_mfp"
mkdir -p "${PREFIX}"
lddtree -l \
-R "${SYSROOT}" \
--copy-to-tree="${PREFIX}" \
--generate-wrappers \
"${SYSROOT_BINS[@]}"
for f in "${SYSROOT_STATIC_BINS[@]}"; do
src="${SYSROOT}${f}"
instdir=$(dirname "${f}")
install -m 0755 -t "${PREFIX}${instdir}" "${src}"
done
install -m 0755 -t "${PREFIX}/usr/bin" "${HWTESTS_BINS[@]}"
# ImageMagick has a lot of extra modules and config files that need to be
# included manually.
mkdir -p "${PREFIX}/usr/local/etc"
cp -r "${SYSROOT}/usr/local/etc/ImageMagick-7" "${PREFIX}/usr/local/etc"
mkdir -p "${PREFIX}/usr/local/lib64/ImageMagick-7"
cp -r "${SYSROOT}/usr/local/lib64/"ImageMagick-7*/* \
"${PREFIX}/usr/local/lib64/ImageMagick-7"
mkdir -p "${ROOT}/bin"
install -m 0755 setup_shell "${ROOT}/bin/wwcb_mfp_env"
tar czvfC "${OUT}" "${ROOT}" .
rm -rf "${ROOT}"
echo "Tester tarball created as ${OUT}"