[roll] Roll fuchsia [installer] move do_install() to library

do_install() performs the top-level workflow of copying images from one
disk (USB) to another (local storage). Moving this into the library will
allow both the installer USB and userspace fastboot to use this
workflow.

The big trick here was that the installer supports status callbacks so
that the caller can be notified as various actions are taken and report
them back to the user (e.g. display them on screen or send fastboot INFO
messages). Previously these callbacks were owned and moved around, but
this didn't work in the library because it needs to send the callback
multiple times, once for each partition copied.

To fix this, the API now borrows a callback reference only during flash,
rather than owning it and keeping it around. This matches the current
usage better anyway; the current user (just the installer) gives a new
short-lived callback each time so there's no need to store it long-term
internally.

Original-Bug: b/282797139
Test: NUC11 installer USB still seems to work
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/883720
Original-Revision: b482b201132466095bd21f928289e2f7c39b9f6b
GitOrigin-RevId: d1c44a3af5e503503ca71cb5e393ec79e671283d
Change-Id: I56adf8512cc0a59f964801ca32e81b096b4782d1
1 file changed
tree: e9c971f9a75e528616f64c978e1b8db06af9e5d7
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.