| # Copyright 2017 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. |
| |
| description "Install payloads for Chrome OS test and factory software" |
| author "chromium-os-dev@chromium.org" |
| |
| # `cros_payload` is a system to maintain and install file or block device |
| # resources, especially for Chrome OS factory software. |
| # This upstart job will run and clean the installer stubs prepared by |
| # cros_payload. Read go/cros_payload for more details. |
| |
| start on stopping startup |
| task |
| |
| script |
| PAYLOADS="/usr/local/opt/cros_payloads" |
| INSTALL_DIR="${PAYLOADS}/install" |
| # To make sure the log is always read-able (i.e., not in encrypted stateful |
| # partition) for debugging, use a separate log file. |
| LOG_FILE="${INSTALL_DIR}/log" |
| |
| if [ ! -d "${INSTALL_DIR}" ]; then |
| exit |
| fi |
| cd "${PAYLOADS}" |
| |
| for script in "${INSTALL_DIR}"/*.sh; do |
| if [ ! -f "${script}" ]; then |
| continue |
| fi |
| |
| echo "$(date): Installing [${script}]..." >>"${LOG_FILE}" |
| if ! sh "${script}" >>"${LOG_FILE}" 2>&1; then |
| continue |
| fi |
| |
| # Unstable system may crash and reboot unexpectedly so we have to sync |
| # and wait for a while, make sure the installation was completed, before |
| # being able to remove the installation stubs safely. |
| (sync && sleep 3 && rm -f "${script}") & |
| done |
| |
| # Wait for all background process to complete. |
| wait |
| end script |