Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

actions: Add mmdebstrap action #515

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

nbuchwitz
Copy link
Contributor

@nbuchwitz nbuchwitz commented Aug 25, 2024

Add mmdebstrap [1] as a faster and more flexible alternative to debootstrap.

[1] https://gitlab.mister-muffin.de/josch/mmdebstrap

I am not really familar with go (day to day language is Python or C). Therefore I ask for your patience :-)

Comparison to deboostrap

Example recipe on a Raspberry Pi 5 in docker container with KVM enabled:

---
{{- $architecture := or .architecture "arm64"}}
{{- $tool := or .tool "mmdebstrap" }}
architecture: {{$architecture}}

actions:
  - action: {{ $tool }}
    suite: bookworm
    variant: minbase

  - action: apt
    description: Install some base packages
    packages:
      - procps

With deboostrap:

real    0m53.590s
user    0m38.792s
sys     0m25.345s

With mmdebstrap:

real    0m33.400s
user    0m24.239s
sys     0m8.838s

=> 20 seconds faster. I plan to build a kinda build-on-demand service around debos, so every second matters 😄

@obbardc
Copy link
Member

obbardc commented Aug 25, 2024

looks fine to me, but I remember @sjoerdsimons had some reservations about ai ply integrating another tool and would rather rewrite debootstrap in go utilising more efficient system libs (debootstrap is single threaded, assumes not much is installed on the target system etc etc)

@nbuchwitz nbuchwitz force-pushed the devel/add-mmdebstrap branch from 9dc9bce to a08740d Compare August 25, 2024 21:20
@nbuchwitz
Copy link
Contributor Author

nbuchwitz commented Aug 25, 2024

looks fine to me, but I remember @sjoerdsimons had some reservations about ai ply integrating another tool and would rather rewrite debootstrap in go utilising more efficient system libs (debootstrap is single threaded, assumes not much is installed on the target system etc etc)

Thanks for the fast response and the heads up. mmdebstrap deals with some major issues of deboostrap (some of them are even wontfix, like multiple mirrors etc). So maybe it is worth considering it (as an intermediate solution). Looking forward to @sjoerdsimons feedback

With uml or qemu the performance gain is even more: about 2 minutes less with uml and more than 3 minutes less with qemu in the ci tests.

@nbuchwitz nbuchwitz force-pushed the devel/add-mmdebstrap branch 2 times, most recently from 8393b9e to 297cc90 Compare August 25, 2024 22:00
Add mmdebstrap [1] as a faster and more flexible alternative to debootstrap.

[1] https://gitlab.mister-muffin.de/josch/mmdebstrap

Signed-off-by: Nicolai Buchwitz <[email protected]>
@nbuchwitz nbuchwitz force-pushed the devel/add-mmdebstrap branch from 297cc90 to 019151b Compare August 26, 2024 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants