| #!/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}" |