mbox series

[v10,0/8] Migrate to mmdebstrap

Message ID 20240708061738.311938-1-amikan@ilbers.de
Headers show
Series Migrate to mmdebstrap | expand

Message

Anton Mikanovich July 8, 2024, 6:17 a.m. UTC
Switch Isar from debootstrap to mmdebstrap.

It makes isar-bootstrap target ~10..30% faster on both cross and native
rootfs types. Some measurements on qemuarm64-bookworm (required debs are
predownloaded and used during deb-dl-import):

- 20s vs 28s for "isar-bootstrap-host"
- 1m32s vs 1m48s for "isar-bootstrap-target

Also mmdebstrap support using SOURCE_DATE_EPOCH for images reproducibly
out of the box. But the main advantage is an ability to remove sudo for
debootstrapping later on (this needs "uidmap" package installed).

This change breaks Debian Buster support as host distro, but previous
isar-bootstrap (with Buster support) still can be selected by setting
in local.conf:

PREFERRED_PROVIDER_bootstrap-host ?= "isar-bootstrap-host"
PREFERRED_PROVIDER_bootstrap-target ?= "isar-bootstrap-target"

Changes since v9:
- Rebase on next.
- Separate common code into bbclass.
- Skip deb cache on rootfs packing.

Changes since v8:
- Rebase on next.
- Keep isar-bootstrap recipes.
- Implement bootstrap provider selection.

Changes since v7:
- Rebase on next.

Changes since v6:
- Reorder patches.

Changes since v5:
- Improve keyring handling.
- Fix mmdebstrap hooks.

Changes since v4:
- Rebase on next.
- Migrate from apt-key to gpg.
- Fix Ubuntu and RPi targets.
- Cleanup debootstrap mentions.
- Fix commit messages.

Changes since v3:
- Rebase on latest next.
- Remove temporary patch 7 since kas:4.0 already includes mmdebstrap.

Changes since v2:
- Rebase on next.
- Fix commit messages.
- Update host requirements.

Changes since v1:
- Move mmdebstrap tmpdir to workdir.
- Fix kas building.
- Improve mounts cleanup.

Anton Mikanovich (8):
  isar-bootstrap: Move common parts to bbclass
  meta: Add mmdebstrap recipe
  meta: Allow selecting bootstrap providers
  testsuite: Allow variable bootstrap providers
  mmdebstrap: Fix missing dpkg available
  mmdebstrap: Move preparations to hooks
  isar-bootstrap: Use tar output instead of directory
  user_manual.md: Update boostrap related documentation

 RECIPE-API-CHANGELOG.md                       |  13 +
 doc/user_manual.md                            |  15 +-
 meta-isar/conf/local.conf.sample              |   4 +
 meta/classes/bootstrap.bbclass                | 226 ++++++++++++++++
 meta/classes/rootfs.bbclass                   |  13 +-
 meta/conf/bitbake.conf                        |   3 +
 .../isar-bootstrap/isar-bootstrap-host.bb     |   2 +
 .../isar-bootstrap/isar-bootstrap-target.bb   |   2 +
 .../isar-bootstrap/isar-bootstrap.inc         | 242 +-----------------
 .../isar-mmdebstrap/isar-mmdebstrap-host.bb   |  19 ++
 .../isar-mmdebstrap/isar-mmdebstrap-target.bb |  14 +
 .../isar-mmdebstrap/isar-mmdebstrap.inc       | 215 ++++++++++++++++
 testsuite/cibase.py                           |   9 +-
 13 files changed, 538 insertions(+), 239 deletions(-)
 create mode 100644 meta/classes/bootstrap.bbclass
 create mode 100644 meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap-host.bb
 create mode 100644 meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap-target.bb
 create mode 100644 meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc