| Index: bin/cros_copy_upgrade_server.sh
|
| diff --git a/bin/cros_copy_upgrade_server.sh b/bin/cros_copy_upgrade_server.sh
|
| deleted file mode 100755
|
| index a32056039e413b30cb7d24ef486cc02cd867eb46..0000000000000000000000000000000000000000
|
| --- a/bin/cros_copy_upgrade_server.sh
|
| +++ /dev/null
|
| @@ -1,223 +0,0 @@
|
| -#!/bin/sh
|
| -
|
| -# Copyright (c) 2009 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.
|
| -
|
| -# Script to push the output of build_image.sh to a remote image server
|
| -
|
| -# TODO(pstew): Apparently the script files are in transition from
|
| -# src/scripts to src/scripts/bin. However this state has existed
|
| -# for months now, therefore we need to look for the common libs in
|
| -# both places
|
| -script_root=$(dirname $0)
|
| -if [ -f ${script_root}/../common.sh ] ; then
|
| - script_root=${script_root}/..
|
| -fi
|
| -
|
| -. "${script_root}/common.sh"
|
| -
|
| -# Flags
|
| -DEFINE_string upgrade_server "" "SSH-capable host for upgrade server install"
|
| -DEFINE_string dest_path "" "Directory on host to do install"
|
| -DEFINE_string client_address "" "IP Address of netbook to update"
|
| -DEFINE_string server_address "" "IP Address of upgrade server"
|
| -DEFINE_string client_prefix "ChromeOSUpdateEngine" \
|
| - "client_prefix arg to devserver. Old version is MementoSoftwareUpdate"
|
| -DEFINE_boolean old_prefix ${FLAGS_FALSE} "Use old MementoSoftwareUpdate"
|
| -DEFINE_boolean start_server ${FLAGS_TRUE} "Start up the server"
|
| -DEFINE_boolean stop_server ${FLAGS_FALSE} "Start up the server"
|
| -DEFINE_boolean no_copy_archive ${FLAGS_FALSE} "Skip copy of files to server"
|
| -DEFINE_string from "" "Image directory to upload to server"
|
| -
|
| -# Parse command line
|
| -FLAGS "$@" || exit 1
|
| -eval set -- "${FLAGS_ARGV}"
|
| -
|
| -set -e
|
| -
|
| -# Make sure dev server argument has been set
|
| -require_upgrade_server () {
|
| - if [ -z "${FLAGS_upgrade_server}" ] ; then
|
| - echo "The --upgrade-server= argument is mandatory"
|
| - exit 1
|
| - fi
|
| -}
|
| -
|
| -# Make sure a pointer to the latest image has been created
|
| -require_latest_image () {
|
| - [ -n "$latest_image" ] && return
|
| - if [ -n "${FLAGS_from}" ] ; then
|
| - latest_image=$(readlink -f ${FLAGS_from})
|
| - else
|
| - latest_image=$(env CHROMEOS_BUILD_ROOT=${SCRIPTS_DIR}/../build \
|
| - ${SCRIPTS_DIR}/get_latest_image.sh)
|
| - fi
|
| -}
|
| -
|
| -validate_devserver_path () {
|
| - if [ $(expr "${FLAGS_dest_path}" : '\.\.') != 0 ]; then
|
| - echo "Error: --dest_path argument (${FLAGS_dest_path}) must not be relative"
|
| - exit 1
|
| - fi
|
| - FLAGS_dest_path=/tmp/devserver/${FLAGS_dest_path##/tmp/devserver/}
|
| -}
|
| -
|
| -# Copy the various bits of the dev server scripts over to our remote host
|
| -create_devserver () {
|
| - FLAGS_dest_path=$1
|
| - validate_devserver_path
|
| -
|
| - echo "Creating dev server in ${FLAGS_upgrade_server}:${FLAGS_dest_path}..."
|
| -
|
| - require_upgrade_server
|
| - # Create new empty directory to hold server components
|
| - ssh "${FLAGS_upgrade_server}" rm -rf "${FLAGS_dest_path}" || true
|
| - ssh "${FLAGS_upgrade_server}" mkdir -p "${FLAGS_dest_path}/python"
|
| -
|
| - # Copy server components into place
|
| - (cd ${SCRIPTS_DIR}/../.. && \
|
| - tar zcfh - --exclude=.git --exclude=.svn --exclude=pkgroot \
|
| - src/scripts/lib \
|
| - src/scripts/start_devserver \
|
| - src/scripts/cros_generate_update_payload \
|
| - src/scripts/chromeos-common.sh \
|
| - src/scripts/{common,get_latest_image,mk_memento_images}.sh \
|
| - src/platform/dev) | \
|
| - ssh ${FLAGS_upgrade_server} "cd ${FLAGS_dest_path} && tar zxf -"
|
| -
|
| - # Copy Python web library into place out of the chroot
|
| - (cd ${SCRIPTS_DIR}/../../chroot/usr/lib/python*/site-packages && \
|
| - tar zcf - web*) | \
|
| - ssh ${FLAGS_upgrade_server} "cd ${FLAGS_dest_path}/python && tar zxf -"
|
| -}
|
| -
|
| -# Copy the latest image over to archive server
|
| -create_archive_dir () {
|
| - archive_dir=$1
|
| -
|
| - echo "Creating archive dir in ${FLAGS_upgrade_server}:${archive_dir}..."
|
| -
|
| - require_upgrade_server
|
| - require_latest_image
|
| -
|
| - # Copy the latest image into the newly created archive
|
| - ssh "${FLAGS_upgrade_server}" "mkdir -p ${archive_dir}"
|
| -
|
| - image_path=${latest_image##*build/}
|
| -
|
| - (cd ${SCRIPTS_DIR}/../build && tar zcf - ${image_path}) | \
|
| - ssh ${FLAGS_upgrade_server} "cd ${archive_dir} && tar zxf -"
|
| -
|
| - # unpack_partitions.sh lies in its hashbang. It really wants bash
|
| - unpack_script=${archive_dir}/${image_path}/unpack_partitions.sh
|
| - ssh ${FLAGS_upgrade_server} "sed -e 's/^#!\/bin\/sh/#!\/bin\/bash/' < ${unpack_script} > ${unpack_script}.new && chmod 755 ${unpack_script}.new && mv ${unpack_script}.new ${unpack_script}"
|
| -
|
| - # Since we are in static-only mode, we need to create a few links
|
| - for file in update.gz stateful.image.gz ; do
|
| - ssh ${FLAGS_upgrade_server} "cd ${archive_dir} && ln -sf ${image_path}/$file ."
|
| - ssh ${FLAGS_upgrade_server} "ln -sf ${archive_dir}/$file ${FLAGS_dest_path}/src/platform/dev/static"
|
| - done
|
| -}
|
| -
|
| -stop_server () {
|
| - require_upgrade_server
|
| - echo "Stopping remote devserver..."
|
| - echo "(Fast restart using \"$0 --upgrade_server=${FLAGS_upgrade_server} --dest_path=${FLAGS_dest_path} --no_copy_archive\")"
|
| - ssh ${FLAGS_upgrade_server} pkill -f ${archive_dir} || /bin/true
|
| -}
|
| -
|
| -# Start remote server
|
| -start_server () {
|
| - require_upgrade_server
|
| - echo "Starting remote devserver..."
|
| - server_logfile=/tmp/devserver_log.$$
|
| - portlist=/tmp/devserver_portlist.$$
|
| - echo "Server will be logging locally to $server_logfile"
|
| -
|
| - # Find a TCP listen socket that is not in use
|
| - ssh ${FLAGS_upgrade_server} "netstat -lnt" | awk '{ print $4 }' > $portlist
|
| - server_port=8081
|
| - while grep -q ":${server_port}$" $portlist; do
|
| - server_port=$[server_port + 1]
|
| - done
|
| - rm -f $portlist
|
| -
|
| - if [ "${FLAGS_old_prefix}" -eq ${FLAGS_TRUE} ] ; then
|
| - FLAGS_client_prefix=MementoSoftwareUpdate
|
| - fi
|
| -
|
| - ssh ${FLAGS_upgrade_server} "cd ${FLAGS_dest_path}/src/scripts && env PYTHONPATH=${remote_root}${FLAGS_dest_path}/python CHROMEOS_BUILD_ROOT=${archive_dir} ./start_devserver --archive_dir ${archive_dir} --client_prefix ${FLAGS_client_prefix} $server_port" > $server_logfile 2>&1 &
|
| - server_pid=$!
|
| -
|
| - trap server_cleanup 2
|
| -
|
| - # Wait for server to startup
|
| - while sleep 1; do
|
| - if fgrep -q 'Serving images from' $server_logfile; then
|
| - echo "Server is ready"
|
| - break
|
| - elif kill -0 ${server_pid}; then
|
| - continue
|
| - else
|
| - echo "Server failed to startup"
|
| - exit 1
|
| - fi
|
| - done
|
| -}
|
| -
|
| -server_cleanup () {
|
| - trap '' 2
|
| - stop_server
|
| - exit 0
|
| -}
|
| -
|
| -# If destination path wasn't set on command line, create one from scratch
|
| -if [ -z "${FLAGS_dest_path}" -a ${FLAGS_stop_server} -eq ${FLAGS_FALSE} ] ; then
|
| - require_latest_image
|
| - hostname=$(uname -n)
|
| - hostname=${hostname%%.*}
|
| - image_name=${latest_image##*/}
|
| - create_devserver ${hostname}_${image_name}
|
| - FLAGS_start_server=${FLAGS_TRUE}
|
| -else
|
| - validate_devserver_path
|
| -fi
|
| -
|
| -if [ ${FLAGS_stop_server} -eq ${FLAGS_FALSE} -a \
|
| - ${FLAGS_no_copy_archive} -eq ${FLAGS_FALSE} ] ; then
|
| - create_archive_dir "${FLAGS_dest_path}/archive"
|
| - FLAGS_start_server=${FLAGS_TRUE}
|
| -else
|
| - archive_dir="${FLAGS_dest_path}/archive"
|
| -fi
|
| -
|
| -if [ "${FLAGS_stop_server}" -eq ${FLAGS_TRUE} ] ; then
|
| - stop_server
|
| - exit 0
|
| -fi
|
| -
|
| -# Make sure old devserver is dead, then restart it
|
| -if [ "${FLAGS_start_server}" -eq ${FLAGS_TRUE} ] ; then
|
| - stop_server
|
| - start_server
|
| -
|
| - tail -f ${server_logfile} &
|
| -
|
| - # Now tell the client to load from the server
|
| - if [ -z "${FLAGS_server_address}" ] ; then
|
| - FLAGS_server_address=${FLAGS_upgrade_server}
|
| - fi
|
| - live_args="--update_url=http://${FLAGS_server_address}:${server_port}/update \
|
| - --remote=${FLAGS_client_address}"
|
| - if [ -n "${FLAGS_client_address}" ] ; then
|
| - echo "Running ${SCRIPTS_DIR}/image_to_live.sh $live_args"
|
| - ${SCRIPTS_DIR}/image_to_live.sh $live_args &
|
| - else
|
| - echo "Start client upgrade using:"
|
| - echo " ${SCRIPTS_DIR}/image_to_live.sh ${live_args}<client_ip_address>"
|
| - fi
|
| -
|
| - wait ${server_pid}
|
| -fi
|
| -
|
|
|