| Index: src/scripts/sync_build_test.sh
 | 
| diff --git a/src/scripts/sync_build_test.sh b/src/scripts/sync_build_test.sh
 | 
| index b8474b6dfa36a5f91837856e60fa5d77e6bc6c11..5dfe7cf10f6902ed735b41042635a01ab7a2eb53 100755
 | 
| --- a/src/scripts/sync_build_test.sh
 | 
| +++ b/src/scripts/sync_build_test.sh
 | 
| @@ -46,40 +46,41 @@
 | 
|  . "$(dirname "$0")/common.sh"
 | 
|  
 | 
|  
 | 
| -DEFINE_string top "" \
 | 
| -    "Root directory of your checkout (defaults to determining from your cwd)"
 | 
| -DEFINE_string repo "${CHROMIUMOS_REPO}" "gclient repo for chromiumos"
 | 
| -DEFINE_boolean sync ${FLAGS_TRUE} "Sync the checkout"
 | 
| -DEFINE_boolean force_make_chroot ${FLAGS_FALSE} "Run make_chroot indep of sync"
 | 
| +DEFINE_string board "x86-generic" "Board setting"
 | 
|  DEFINE_boolean build ${FLAGS_TRUE} \
 | 
|      "Build all code (but not necessarily master image)"
 | 
| -DEFINE_boolean master ${FLAGS_TRUE} "Master an image from built code"
 | 
| +DEFINE_boolean build_autotest ${FLAGS_FALSE} "Build autotest"
 | 
| +DEFINE_string buildbot_uri "${BUILDBOT_URI}" \
 | 
| +    "Base URI to buildbot build location which contains LATEST file"
 | 
| +DEFINE_string chronos_passwd "${CHRONOS_PASSWD}" \
 | 
| +    "Use this as the chronos user passwd (defaults to \$CHRONOS_PASSWD)"
 | 
| +DEFINE_string chroot "" "Chroot to build/use"
 | 
| +DEFINE_boolean force_make_chroot ${FLAGS_FALSE} "Run make_chroot indep of sync"
 | 
|  DEFINE_string grab_buildbot "" \
 | 
|      "Instead of building, grab this full image.zip URI generated by the \
 | 
|  buildbot"
 | 
| -DEFINE_string chronos_passwd "${CHRONOS_PASSWD}" \
 | 
| -    "Use this as the chronos user passwd (defaults to \$CHRONOS_PASSWD)"
 | 
| -DEFINE_boolean mod_image_for_test ${FLAGS_FALSE} "Modify the image for testing"
 | 
| -DEFINE_boolean build_autotest ${FLAGS_FALSE} "Build autotest"
 | 
|  DEFINE_boolean image_to_live ${FLAGS_FALSE} \
 | 
|      "Put the resulting image on live instance (requires --remote)"
 | 
| -DEFINE_string remote "" \
 | 
| -    "Use this hostname/IP for live updating and running tests"
 | 
|  DEFINE_string image_to_usb "" \
 | 
|      "Treat this device as USB and put the image on it after build"
 | 
| +# You can set jobs > 1 but then your build may break and you may need
 | 
| +# to retry.  Setting it to 1 is best for non-interactive sessions.
 | 
| +DEFINE_boolean interactive ${FLAGS_FALSE} \
 | 
| +    "Tell user what we plan to do and wait for input to proceed" i
 | 
| +DEFINE_integer jobs -1 "Concurrent build jobs"
 | 
| +DEFINE_boolean master ${FLAGS_TRUE} "Master an image from built code"
 | 
| +DEFINE_boolean mod_image_for_test ${FLAGS_FALSE} "Modify the image for testing"
 | 
| +DEFINE_string remote "" \
 | 
| +    "Use this hostname/IP for live updating and running tests"
 | 
| +DEFINE_string repo "${CHROMIUMOS_REPO}" "gclient repo for chromiumos"
 | 
| +DEFINE_boolean sync ${FLAGS_TRUE} "Sync the checkout"
 | 
|  DEFINE_string test "" \
 | 
|      "Test the built image with the given params to run_remote_tests"
 | 
| -DEFINE_string buildbot_uri "${BUILDBOT_URI}" \
 | 
| -    "Base URI to buildbot build location which contains LATEST file"
 | 
| +DEFINE_string top "" \
 | 
| +    "Root directory of your checkout (defaults to determining from your cwd)"
 | 
| +DEFINE_boolean withdev ${FLAGS_TRUE} "Build development packages"
 | 
|  DEFINE_boolean unittest ${FLAGS_TRUE} "Run unit tests"
 | 
| -DEFINE_boolean interactive ${FLAGS_FALSE} \
 | 
| -    "Tell user what we plan to do and wait for input to proceed" i
 | 
| -DEFINE_boolean portage ${FLAGS_TRUE} "Use portage-based build"
 | 
| -DEFINE_string board "x86-generic" "Board setting (portage)"
 | 
| -DEFINE_string toolchain "i686-pc-linux-gnu" "Toolchain setting (portage)"
 | 
| -# You can set build_jobs > 1 but then your build may break and you may need
 | 
| -# to retry.  Setting it to 1 is best for non-interactive sessions.
 | 
| -DEFINE_integer build_jobs 1 "Concurrent build jobs (portage)"
 | 
| +
 | 
|  
 | 
|  # Returns a heuristic indicating if we believe this to be a google internal
 | 
|  # development environment.
 | 
| @@ -111,7 +112,18 @@ function validate_and_set_param_defaults() {
 | 
|    fi
 | 
|  
 | 
|    # Canonicalize any symlinks
 | 
| -  FLAGS_top=$(readlink -f "${FLAGS_top}")
 | 
| +  if [[ -d "${FLAGS_top}" ]]; then
 | 
| +    FLAGS_top=$(readlink -f "${FLAGS_top}")
 | 
| +  fi
 | 
| +
 | 
| +  if [[ -z "${FLAGS_chroot}" ]]; then
 | 
| +    FLAGS_chroot="${FLAGS_top}/chroot"
 | 
| +  fi
 | 
| +
 | 
| +  # If chroot does not exist, force making it
 | 
| +  if [[ ! -d "${FLAGS_chroot}" ]]; then
 | 
| +    FLAGS_force_make_chroot=${FLAGS_TRUE}
 | 
| +  fi
 | 
|  
 | 
|    if [[ -z "${FLAGS_repo}" ]]; then
 | 
|      if is_google_environment; then
 | 
| @@ -170,13 +182,8 @@ function validate_and_set_param_defaults() {
 | 
|      # TODO(kmixter): Make this more efficient by either doing incremental
 | 
|      # building, or only building if the tests we're running needs to be.
 | 
|      FLAGS_build_autotest=${FLAGS_TRUE}
 | 
| -  fi
 | 
| -
 | 
| -  if [[ -e "${FLAGS_top}/src/scripts/new_make_env.sh" ]]; then
 | 
| -    if [[ ${FLAGS_portage} -ne ${FLAGS_TRUE} ]]; then
 | 
| -      echo "WARNING: It looks like you wanted to pass --portage to "
 | 
| -      echo "build with the portage method"
 | 
| -    fi
 | 
| +    # If you're modding for test, you also want developer packages.
 | 
| +    FLAGS_withdev=${FLAGS_TRUE}
 | 
|    fi
 | 
|  
 | 
|    if [[ -n "${FLAGS_image_to_usb}" ]]; then
 | 
| @@ -203,15 +210,23 @@ function describe_steps() {
 | 
|      fi
 | 
|    fi
 | 
|    if [[ ${FLAGS_force_make_chroot} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    echo " * (Re-)create development chroot (make_chroot.sh)"
 | 
| +    echo " * Rebuild chroot (make_chroot) in ${FLAGS_chroot}"
 | 
|    fi
 | 
|    local set_passwd=${FLAGS_FALSE}
 | 
|    if [[ ${FLAGS_build} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    echo " * Build image (build_platform_packages.sh, build_kernel.sh)"
 | 
| +    local withdev=""
 | 
| +    local jobs=" single job (slow but safe)"
 | 
| +    if [[ ${FLAGS_jobs} -gt 1 ]]; then
 | 
| +      jobs=" ${FLAGS_jobs} jobs (may cause build failure)"
 | 
| +    fi
 | 
| +    if [[ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ]]; then
 | 
| +      withdev=" with dev packages"
 | 
| +    fi
 | 
| +    echo " * Build image${withdev}${jobs}"
 | 
|      set_passwd=${FLAGS_TRUE}
 | 
|    fi
 | 
|    if [[ ${FLAGS_master} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    echo " * Master image (build_image.sh)"
 | 
| +    echo " * Master image (build_image)"
 | 
|    fi
 | 
|    if [[ -n "${FLAGS_grab_buildbot}" ]]; then
 | 
|      if [[ "${FLAGS_grab_buildbot}" == "LATEST" ]]; then
 | 
| @@ -232,7 +247,7 @@ function describe_steps() {
 | 
|      fi
 | 
|    fi
 | 
|    if [[ ${FLAGS_build_autotest} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    echo " * Build autotest"
 | 
| +    echo " * Cross-build autotest client tests (build_autotest)"
 | 
|    fi
 | 
|    if [[ -n "${FLAGS_image_to_usb}" ]]; then
 | 
|      echo " * Write the image to USB device ${FLAGS_image_to_usb}"
 | 
| @@ -329,7 +344,7 @@ function run_phase() {
 | 
|  function run_phase_in_chroot() {
 | 
|    local desc="$1"
 | 
|    shift
 | 
| -  run_phase "${desc}" ./enter_chroot.sh -- "$@"
 | 
| +  run_phase "${desc}" ./enter_chroot.sh "--chroot=${FLAGS_chroot}" -- "$@"
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -368,10 +383,6 @@ CHROMEOS_EXT_SUITE="karmic"
 | 
|  CHROMEOS_CHROME_DIR="${base_dir}/chrome"
 | 
|  EOF
 | 
|    fi
 | 
| -  if [[ ${FLAGS_portage} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    chdir_relative src/third_party
 | 
| -    chromiumos-overlay/chromeos/scripts/setup_source_tree.sh
 | 
| -  fi
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -444,16 +455,24 @@ function main() {
 | 
|  
 | 
|    set_start_time
 | 
|  
 | 
| +  local withdev_param=""
 | 
| +  if [[ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ]]; then
 | 
| +    withdev_param="--withdev"
 | 
| +  fi
 | 
| +
 | 
| +  local jobs_param=""
 | 
| +  if [[ ${FLAGS_jobs} -gt 1 ]]; then
 | 
| +    jobs_param="--jobs=${FLAGS_jobs}"
 | 
| +  fi
 | 
| +
 | 
| +  local board_param="--board=${FLAGS_board}"
 | 
| +
 | 
|    if [[ ! -e "${FLAGS_top}" ]]; then
 | 
|      config_new_checkout
 | 
|    fi
 | 
|  
 | 
|    if [[ ${FLAGS_sync} -eq ${FLAGS_TRUE} ]]; then
 | 
|      sync
 | 
| -    # The package repository is now potentially out of date, so
 | 
| -    # reflect that.
 | 
| -    run_phase "Removing existing package repo" sudo rm -rf repo
 | 
| -    FLAGS_force_make_chroot=${FLAGS_TRUE}
 | 
|    fi
 | 
|  
 | 
|    if [[ -n "${FLAGS_grab_buildbot}" ]]; then
 | 
| @@ -462,33 +481,24 @@ function main() {
 | 
|  
 | 
|    if [[ ${FLAGS_force_make_chroot} -eq ${FLAGS_TRUE} ]]; then
 | 
|      chdir_relative src/scripts
 | 
| -    if [[ ${FLAGS_portage} -eq ${FLAGS_TRUE} ]]; then
 | 
| -      run_phase "Replacing chroot" ./new_make_env.sh --replace
 | 
| -    else
 | 
| -      run_phase "Replacing chroot" ./make_chroot.sh --replace
 | 
| -    fi
 | 
| +    run_phase "Replacing chroot" ./make_chroot --replace \
 | 
| +        "--chroot=${FLAGS_chroot}" ${jobs_param}
 | 
|    fi
 | 
|  
 | 
|    if [[ ${FLAGS_build} -eq ${FLAGS_TRUE} ]]; then
 | 
|      chdir_relative src/scripts
 | 
| -    if [[ ${FLAGS_portage} -eq ${FLAGS_TRUE} ]]; then
 | 
| -      # Only setup board target if the directory does not exist
 | 
| -      if [[ ! -d "${DEFAULT_CHROOT_DIR}/build/${FLAGS_board}" ]]; then
 | 
| -        run_phase_in_chroot "Setting up board target" \
 | 
| -            ./setup_board "--board=${FLAGS_board}" \
 | 
| -            "--toolchain=${FLAGS_toolchain}"
 | 
| -      fi
 | 
| -      run_phase_in_chroot "Building packages" \
 | 
| -          ./new_build_pkgs.sh "--board=${FLAGS_board}" \
 | 
| -          "--jobs=${FLAGS_build_jobs}"
 | 
| -    else
 | 
| -      run_phase_in_chroot "Building platform packages and kernel" \
 | 
| -          "./build_platform_packages.sh && ./build_kernel.sh"
 | 
| +    # Only setup board target if the directory does not exist
 | 
| +    if [[ ! -d "${FLAGS_top}/chroot/build/${FLAGS_board}" ]]; then
 | 
| +      run_phase_in_chroot "Setting up board target" \
 | 
| +          ./setup_board "${board_param}"
 | 
|      fi
 | 
| +    run_phase_in_chroot "Building packages" \
 | 
| +        ./build_packages "${board_param}" \
 | 
| +        ${jobs_param} ${withdev_param}
 | 
|  
 | 
|      # TODO(kmixter): Enable this once build_tests works, but even
 | 
|      # then only do it when not cross compiling.
 | 
| -    if [[ ${FLAGS_portage} -eq ${FLAGS_FALSE} ]]; then
 | 
| +    if [[ '' ]]; then
 | 
|        run_phase_in_chroot "Building and running unit tests" \
 | 
|          "./build_tests.sh && ./run_tests.sh"
 | 
|      fi
 | 
| @@ -501,29 +511,21 @@ function main() {
 | 
|        ./enter_chroot.sh "echo '${FLAGS_chronos_passwd}' | \
 | 
|                          ~/trunk/src/scripts/set_shared_user_password.sh"
 | 
|      fi
 | 
| -    if [[ ${FLAGS_portage} -eq ${FLAGS_TRUE} ]]; then
 | 
| -      run_phase_in_chroot "Mastering image" ./new_build_image.sh \
 | 
| -          "--board=${FLAGS_board}" --replace
 | 
| -    else
 | 
| -      run_phase_in_chroot "Mastering image" ./build_image.sh --replace
 | 
| -    fi
 | 
| -  fi
 | 
| -
 | 
| -  local board_param=""
 | 
| -  if [[ ${FLAGS_portage} -eq ${FLAGS_TRUE} ]]; then
 | 
| -    board_param="--board=${FLAGS_board}"
 | 
| +    run_phase_in_chroot "Mastering image" ./build_image \
 | 
| +        "${board_param}" --replace ${withdev_param} \
 | 
| +        ${jobs_param}
 | 
|    fi
 | 
|  
 | 
|    if [[ ${FLAGS_mod_image_for_test} -eq ${FLAGS_TRUE} ]]; then
 | 
|      chdir_relative src/scripts
 | 
|      run_phase_in_chroot "Modifying image for test" \
 | 
| -        "./mod_image_for_test.sh" ${board_param}
 | 
| +        "./mod_image_for_test.sh" "${board_param}" --yes
 | 
|    fi
 | 
|  
 | 
|    if [[ -n "${FLAGS_image_to_usb}" ]]; then
 | 
|      chdir_relative src/scripts
 | 
|      run_phase "Installing image to USB" \
 | 
| -        ./image_to_usb.sh --yes "--to=${FLAGS_image_to_usb}" ${board_param}
 | 
| +        ./image_to_usb.sh --yes "--to=${FLAGS_image_to_usb}" "${board_param}"
 | 
|    fi
 | 
|  
 | 
|    if [[ ${FLAGS_image_to_live} -eq ${FLAGS_TRUE} ]]; then
 | 
| @@ -534,7 +536,8 @@ function main() {
 | 
|  
 | 
|    if [[ ${FLAGS_build_autotest} -eq ${FLAGS_TRUE} ]]; then
 | 
|      chdir_relative src/scripts
 | 
| -    run_phase_in_chroot "Building autotest" "./build_autotest.sh" ${board_param}
 | 
| +    run_phase_in_chroot "Building autotest" "./build_autotest.sh" \
 | 
| +      --noprompt "${board_param}"
 | 
|    fi
 | 
|  
 | 
|    if [[ -n "${FLAGS_test}" ]]; then
 | 
| @@ -543,7 +546,7 @@ function main() {
 | 
|      # have multiple parameters
 | 
|      run_phase "Running tests on Chromium OS machine ${FLAGS_remote}" \
 | 
|        ./run_remote_tests.sh "--remote=${FLAGS_remote}" ${FLAGS_test} \
 | 
| -      ${board_param}
 | 
| +      "${board_param}"
 | 
|    fi
 | 
|  
 | 
|    echo "Successfully used ${FLAGS_top} to:"
 | 
| 
 |