bootimage 0.10.2

Tool to create a bootable OS image from a kernel binary.
Documentation
# Unreleased

# 0.10.2 – 2020-12-10

- Fix nightly breakage of doctests in workspaces ([#69]https://github.com/rust-osdev/bootimage/pull/69)

# 0.10.1 – 2020-08-03

- Parse `--version` argument without subcommand (`bootimage --version`) ([#67]https://github.com/rust-osdev/bootimage/pull/67)

# 0.10.0 – 2020-08-03

- **Breaking:** Consider all other exit codes besides 'test-success-exit-code' as failures ([#65]https://github.com/rust-osdev/bootimage/pull/65)
  - Also runs tests with `-no-reboot` by default, configurable through a new `test-no-reboot` config key

# 0.9.0 – 2020-07-17

- **Breaking:** Make `cargo bootimage` use `cargo build` instead of `cargo xbuild` ([#63]https://github.com/rust-osdev/bootimage/pull/63)

# 0.8.1 – 2020-07-17

- Add support for building bootloaders using `-Zbuild-std ([#62](https://github.com/rust-osdev/bootimage/pull/62))

# 0.8.0

- **Breaking:**  Rewrite: Remove support for `bootimage {run, test}` ([#55]https://github.com/rust-osdev/bootimage/pull/55)

# 0.7.10

- Add support for doctests ([#52]https://github.com/rust-osdev/bootimage/pull/52)

# 0.7.9

- Set empty RUSTFLAGS to ensure that no .cargo/config applies ([#51]https://github.com/rust-osdev/bootimage/pull/51)

# 0.7.8

- Don't exit with expected exit code when failed to read QEMU exit code ([#47]https://github.com/rust-osdev/bootimage/pull/47)

# 0.7.7

- Pass location of kernel's Cargo.toml to bootloader ([#45]https://github.com/rust-osdev/bootimage/pull/45)

# 0.7.6

- If the bootloader has a feature named `binary`, enable it ([#43]https://github.com/rust-osdev/bootimage/pull/43)

# 0.7.5

- Set XBUILD_SYSROOT_PATH when building bootloader ([#41]https://github.com/rust-osdev/bootimage/pull/41)
- Update Azure Pipelines CI script ([#40]https://github.com/rust-osdev/bootimage/pull/40)

# 0.7.4

- Align boot image size on a 512 byte boundary to fix boot in VirtualBox (see [#35]https://github.com/rust-osdev/bootimage/issues/35)

# 0.7.3

- Fix `cargo bootimage` on Windows (there was a bug in the argument parsing)

# 0.7.2

- New features for `bootimage runner`
    - Pass additional arguments to the run command (e.g. QEMU)
    - Consider all binaries in the `target/deps` folder as test executables
    - Apply `test-timeout` config key when running tests in `bootimage runner`
    - Don't apply `run-args` for test executables
    - Add a new `test-args` config key for test arguments
    - Add a new `test-success-exit-code` config key for interpreting an exit code as success
        - This is useful when the `isa-debug-exit` QEMU device is used.
    - Improve printing of the run command (print string instead of array, print non-canonicalized executable path, respect `--quiet`)

# 0.7.1

- Fix for backwards compatibility: Ignore `test-` executables for `bootimage run`.
    - This ensures that `bootimage run` still works without the need for a `--bin` argument if all other executables are integration tests.
    - This only changes the default, you can still run test executables by passing `--bin test-.`

# 0.7.0

## Breaking

- Rewrite for new bootloader build system
  - Compatible with bootloader 0.5.1+
- Remove the following config options: `output`, `bootloader.*`, `minimum_image_size`, and `package_filepath`
  - The bootloader is now fully controlled through cargo dependencies.
  - For using a bootloader crate with name different than `bootloader` use [cargo's rename feature]https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#renaming-dependencies-in-cargotoml.
- Remove support for `bootloader_precompiled`
  - The `bootloader` crate compiles fine on all architectures for some time and should be prefered
- Require the `llvm-tools-preview` rustup component
- Pass the QEMU exit code in `bootimage run`

## Other

- Add support for default targets declared in `.cargo/config` files
- Add a `cargo-bootimage` executable that is equivalent to `bootimage build` and can be used as cargo subcommand (`cargo bootimage`)
- Add a new `bootimage runner` subcommand that can be used as `target.[…].runner` in `.cargo/config` files
- Make test timeout configurable and increase default to 5 minutes
- Move crate to 2018 edition
- Refactor and cleanup the code
- Remove the dependency on `failure`
    - Use a custom `ErrorMessage` type instead
- Add a new `run-args` config key
- Add a new `--quiet` argument to suppress output

# 0.6.6

- Update dependencies

# 0.6.5

- You can now mark integration tests as success/failure by setting the exit code in the QEMU `isa-debug-exit` device. See [#32]https://github.com/rust-osdev/bootimage/issues/32 for more information.

# 0.6.4

- Canonicalize paths before comparing them when invoking `bootimage test`
  - This caused an error on Windows where the path in the cargo metadata is not fully canonicalized
- Improve CI infrastructure

# 0.6.3

- Canonicalize paths before comparing them when invoking `bootimage build`
  - This caused an error on Windows where the path in the cargo metadata is not fully canonicalized

# 0.6.2

- Fix build on Windows (don't use the `.` directory)

# 0.6.1

- Fix: bootimage should now work correctly with `--manifest-path`

# 0.6.0

(Yanked from crates.io because of a bug fixed in 0.6.1.)

**Breaking**:

- When no `--manifest-path` argument is passed, `bootimage` defaults to the `Cargo.toml` in the current directory instead of the workspace root.
  - This fixes compilation of projects that are part of a workspace