> What is left is to decide to MIR zopfli or to disable it (Project is
archived and not moving for a while, use case is only extreme slow but
dense compression). Athos and Grayson will have a look which is the
better way to go ...

In docker.io-app, pigz is used with the default compression level (-6).
zopfli is only enabled when -11 is enabled.

Therefore, for docker.io-app, pigz can be built without linking to zopfli at 
all (i.e., -DNOZOPFLI).
For other reverse dependencies of pigz (all in universe), we should rely on 
autopkgtests to catch any issues for the ones using -11 (if any).

Now, for packaging specifics, I will leave the Debian patch which uses the 
archive available shared library instead of the embedded one. I will also leave 
zopfli-dev as a B-D to avoid build failures and minimize our delta. Then, I 
will pass the NOZOPFLI flag to disable the zopfli support there.
This will help us avoiding any surprises on re-linking against the embedded 
library there (due to how the debian patch is works). Then, if we ever 
mistakenly link against the zopfli shared library, a component mismatch should 
warn us about it and drive us back to a correct build.

BEFORE_NOZOPFLI:
$ dpkg-deb -f ../pigz_2.8-2ubuntu1_amd64.deb Depends
libc6 (>= 2.34), libzopfli1 (>= 1.0.3), zlib1g (>= 1:1.2.6)


AFTER_NOZOPFLI
$ dpkg-deb -f ../pigz_2.8-2ubuntu2_amd64.deb Depends
libc6 (>= 2.34), zlib1g (>= 1:1.2.6)

And ensuring the binaries are clean of it. This is the old version of
pigz (noble) statically linked to zopfli:

$ strings pigz/usr/bin/{unpigz,pigz} | grep -i zopfli
zopfli/src/zopfli/tree.c
zopfli/src/zopfli/lz77.c
limit <= ZOPFLI_MAX_MATCH
limit >= ZOPFLI_MIN_MATCH
p < ZOPFLI_WINDOW_SIZE
zopfli/src/zopfli/cache.c
zopfli/src/zopfli/squeeze.c
k <= ZOPFLI_MAX_MATCH
zopfli/src/zopfli/deflate.c
cost < ZOPFLI_LARGE_FLOAT
  -0 to -9, -11        Compression level (level 11, zopfli, is much slower)
bestlength == ZopfliMaxCachedSublen(lmc, pos, length)
length_array[index] <= ZOPFLI_MAX_MATCH
zopfli/src/zopfli/blocksplitter.c
ZopfliBlockSplitLZ77
ZopfliBlockSplit
ZopfliLZ77Greedy
ZopfliSublenToCache
ZopfliFindLongestMatch
ZopfliVerifyLenDist
ZopfliStoreLitLenDist
ZopfliCalculateBitLengths
ZopfliCalculateEntropy
ZopfliLengthsToSymbols
zopfli/src/zopfli/tree.c
zopfli/src/zopfli/lz77.c
limit <= ZOPFLI_MAX_MATCH
limit >= ZOPFLI_MIN_MATCH
p < ZOPFLI_WINDOW_SIZE
zopfli/src/zopfli/cache.c
zopfli/src/zopfli/squeeze.c
k <= ZOPFLI_MAX_MATCH
zopfli/src/zopfli/deflate.c
cost < ZOPFLI_LARGE_FLOAT
  -0 to -9, -11        Compression level (level 11, zopfli, is much slower)
bestlength == ZopfliMaxCachedSublen(lmc, pos, length)
length_array[index] <= ZOPFLI_MAX_MATCH
zopfli/src/zopfli/blocksplitter.c
ZopfliBlockSplitLZ77
ZopfliBlockSplit
ZopfliLZ77Greedy
ZopfliSublenToCache
ZopfliFindLongestMatch
ZopfliVerifyLenDist
ZopfliStoreLitLenDist
ZopfliCalculateBitLengths
ZopfliCalculateEntropy
ZopfliLengthsToSymbols

Now the current version in stonking (dynamically linked):

$ strings  old_pigz/usr/bin/{unpigz,pigz} | grep -i zopfli
ZopfliDeflatePart
ZopfliInitOptions
libzopfli.so.1
  -0 to -9, -11        Compression level (level 11, zopfli, is much slower)
ZopfliDeflatePart
ZopfliInitOptions
libzopfli.so.1
  -0 to -9, -11        Compression level (level 11, zopfli, is much slower)

Finally, the version I am about to uplaod to stonking (not linked):

$ strings  new_pigz/usr/bin/{unpigz,pigz} | grep -i zopfli
NO OUTPUT

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2150649

Title:
   [MIR] Promote pigz

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pigz/+bug/2150649/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to