| #!/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. |
| |
| # Populates a directory with everything necessary to build a remote test driver |
| # container. |
| |
| # BuildAndCopyTastItems builds and copies all Tast related executables |
| # and data to targets. |
| BuildAndCopyTastItems() { |
| # Emerge tast related executables. |
| sudo emerge tast-cmd |
| sudo emerge tast-remote-tests-cros |
| local tast_dir="$1/tast" |
| local tast_bin_dir="${tast_dir}/bin" |
| # Copy tast related items. |
| mkdir -p "${tast_bin_dir}" |
| cp /usr/bin/tast "${tast_bin_dir}" |
| cp /usr/bin/tast_rtd "${tast_bin_dir}" |
| cp /usr/bin/remote_test_runner "${tast_bin_dir}" |
| cp -pdr /usr/libexec/tast/bundles "${tast_dir}" |
| cp -pdr /usr/share/tast/data "${tast_dir}" |
| cp -pdr /etc/tast/vars "${tast_dir}" |
| cp -pdr /home/"${USER}"/trunk/chromite/ssh_keys "${tast_dir}" |
| } |
| |
| readonly script_dir="$(dirname "$(realpath -e "${BASH_SOURCE[0]}")")" |
| . "${script_dir}/common.sh" || exit 1 |
| |
| # Script must run inside the chroot |
| assert_inside_chroot "$@" |
| |
| # Do not run as root |
| assert_not_root_user |
| |
| DEFINE_string output_dir "" "Dir in which to put Dockerfile and dependencies" |
| |
| # Parse command line flags |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| |
| # Only now can we die on error. shflags functions leak non-zero error codes, |
| # so will die prematurely if 'switch_to_strict_mode' is specified before now. |
| switch_to_strict_mode |
| |
| output_dir="${FLAGS_output_dir}" |
| if [[ -z "${FLAGS_output_dir}" ]]; then |
| info "No --output_dir provided. Using temp dir instead" |
| output_dir=$(mktemp -d) |
| fi |
| |
| if [[ ! -d "${output_dir}" ]]; then |
| error "output_dir ${output_dir} must exist as a directory" |
| exit 1 |
| fi |
| |
| if [[ -n "$(ls -A "${output_dir}")" ]]; then |
| error "output_dir ${output_dir} must be empty" |
| exit 1 |
| fi |
| |
| # Write out a simple Dockerfile. |
| cat > "${output_dir}/Dockerfile" <<- EOF |
| FROM ubuntu:bionic |
| WORKDIR /usr/src/rtd/ |
| COPY rtd/ . |
| EOF |
| |
| # Create the remote test driver folder and copy test content into it. |
| rtd_dir="${output_dir}/rtd" |
| mkdir "${rtd_dir}" |
| # Build and copy the tnull (fake) RTD. |
| sudo emerge tnull |
| cp /usr/bin/tnull "${rtd_dir}/" |
| |
| # tast and tauto entries will eventually go here. |
| BuildAndCopyTastItems "${rtd_dir}" |
| |
| command_completed |
| info "Done. Wrote output to ${output_dir}" |