| #!/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. |
| |
| 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. |
| |
| command_completed |
| info "Done. Wrote output to ${output_dir}" |