Subject: [bug#62153] [PATCH 0/2] Add Docker layered image for pack and system

From: Oleg Pykhalov <[email-masked]>
Date: Sat, 03 Jun 2023 22:10:15 +0300

Greg Hogan <[email-masked]> writes:

> On Wed, May 31, 2023 at 9:14 AM Oleg Pykhalov <[email-masked]> wrote:
> [...]
>> Do you mean use layered images by default without ability to build all
>> in a single layer?  Current layered implementation is slow to build
>> because it needs to calculate a size of each layer, pack, and compress.
>> So if user wants a faster build, a non-layered image is still an option.
>>
>> Regards,
>> Oleg.
>
> I am trying out your patch, and wanted to benchmark the runtime
> difference between docker and docker-layered packs, but the latter
> looks to be failing with any compression other than the default gzip.
> In particular, I was looking to disable compression with
> '--compression=none'.

I'll send a fixed v4 revision for '--compression=none'. Unfortunately,
because we cannot append to an existing compressed tarball:

    tar: Cannot update compressed archives
    Try 'tar --help' or 'tar --usage' for more information.

adding more compression types requires to write a handler for every
compressor separately in guix/docker.scm file:
--8<---------------cut here---------------start------------->8---
      (if layered-image?
          (begin
            (invoke "tar" "-rf" "image.tar" "config.json")
            (if compressor
                (begin
                  (apply invoke `(,@compressor "image.tar"))
                  (copy-file "image.tar.gz" image))
                (copy-file "image.tar" image)))
--8<---------------cut here---------------end--------------->8---

I would like to vote that addional compressors could be added later if
needed.

Regards,
Oleg.