Wiki -> https://fedoraproject.org/wiki/Changes/MinizipNGTransition

This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.

== Summary ==
Transition of the minizip to minizip-ng as it brings much more
optimization and also this change is strongly tied to the
[https://fedoraproject.org/wiki/Changes/ZlibNGTransition Zlib
Transition Change] as by removing zlib package it will also remove
minizip-compat subpackage.

== Owner ==
* Name: [[User:ljavorsk| Lukas Javorsky]]
* Email: ljavo...@redhat.com


== Detailed Description ==
As zlib is about to be migrated to zlib-ng, the minizip-compat
subpackage will be removed as well. Thus we need to rebuild all of the
packages that depend on the minizip-compat with minizip-ng-compat.

Also with this, we can add the minizip-ng (without compat) to the
Fedora repository as some packages might want to migrate to the more
feature-rich implementation of minizip.

This change is strongly related to the
[https://fedoraproject.org/wiki/Changes/ZlibNGTransition Zlib
Transition Change].

== Feedback ==
Packages that require `minizip-ng` (the current compat version) have
been rebuilt with the correct `minizip-ng-compat` package with its new
API of version 4 in this
[https://copr.fedorainfracloud.org/coprs/ljavorsk/minizip-ng/packages/
COPR repository].

Packages that depend on the `minizip-compat` (subpackage of zlib
package) will need to be rebuilt as well. There have been some
attempts and only two of them are not building due to this change.
Chromium; reported in
[https://bugzilla.redhat.com/show_bug.cgi?id=2242271 this Bugzilla].
Libdigidocpp; reported in
[https://bugzilla.redhat.com/show_bug.cgi?id=2240599 this Bugzilla].

Everything else is described in the
[https://bugzilla.redhat.com/show_bug.cgi?id=2235710 minizip-ng rebase
Bugzilla].

Early feedback from community in the
[https://lists.fedoraproject.org/archives/list/de...@lists.fedoraproject.org/thread/AJFWDXMTJ5WOMCYO3R6UF6PZAZ6DRMXR/
fedora-devel email thread]


== Benefit to Fedora ==

* minizip-ng has the following features
** Zlib, BZIP2, LZMA, XZ, and ZSTD compression methods.
** Password protection through Traditional PKWARE and WinZIP AES encryption.
** Buffered streaming for improved I/O performance.
** NTFS timestamp support for UTC last modified, last accessed, and
creation dates.
** Disk split support for splitting zip archives into multiple files.
** Preservation of file attributes across file systems.
** Follow and store symbolic links.
** Unicode filename support through UTF-8 encoding.
** Legacy character encoding support CP437, CP932, CP936, CP950.
** Streaming interface for easy implementation of additional platforms.

== Scope ==
* Proposal owners:
** Minizip-ng will be rebuilt with minizip-compatible API, obsoleting
minizip-compat-1.3
*** Minizip-ng compat mode will be distributed in a new package called
minizip-ng-compat, with its respective minizip-ng-compat-devel.
*** Initially, minizip-ng-compat will provide minizip-compat = 1.2.13
and minizip-ng-compat-devel will provide minizip-compat-devel =
1.2.13.
*** These versions will be updated following the support added to
minizip-ng upstream.
** As minizip-ng also bumped the soname, the packages critical to this
change will need to be rebuilt in the side-tag. Packages that depend
on the minizip-compat will be rebuilt with the new
Requires/Buildrequires to minizip-ng-compat (doesn't have to be
rebuilt in side-tag).
*** This may help to catch ABI-compatibility issues soon.
* Other developers: Help with build failures may be requested. All of
the packages that fails to build with this change have been reported
in Bugzilla
* Release engineering: No action required
* Policies and guidelines: N/A
* Trademark approval: N/A
* Alignment with Objectives: N/A

== Upgrade/compatibility impact ==
Minizip-ng has a minizip-compat mode that aims to preserve both API
and ABI compatibility with the original Minizip. This is only
applicable on the packages that currently require the `minizip-compat`
package.
Packages that require the `minizip-ng-devel` shared library will be
changed to require the new name `minizip-ng-devel-compat` and also
will be rebuilt in side-tag. Packages that only require the
`minizip-ng` without it's shared library will be changed to
`minizip-ng-compat`, so they don't end up with non-compat version of
minizip-ng.

Minizip-ng-compat doesn't provide the full compatible version of
ioapi.h file. Function unzGetCurrentFileZStreamPos64 is not present in
this header file as discussed in the
[https://github.com/zlib-ng/minizip-ng/issues/447#issuecomment-1773022947
upstream issue].

Currently there are 3 packages that fails to build with new minizip-ng-compat:

* Chromium: [https://bugzilla.redhat.com/show_bug.cgi?id=2242271
reported Bugzilla]; possible remediation - use bundled minizip library

* Libdigidocpp: [https://bugzilla.redhat.com/show_bug.cgi?id=2240599
reported Bugzilla]; possible remediation - use bundled minizip library

* OpenColorIO: [https://bugzilla.redhat.com/show_bug.cgi?id=2239262
reported Bugzilla]; possible remediation - don't upgrade minizip-ng
package to the new 4th version of API (stay with minizip-ng-3.10.0).
Not preferred as we want to have the latest and greatest versions in
Fedora.


== How To Test ==
Update the packages and verify they build without any issues.

== User Experience ==
This change will increase compression efficiency and performance.

== Dependencies ==
List of the packages from Fedora 40

=== Requires (minizip-compat) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*'
| grep -v 'src$' | pkgname

chromedriver

chromium

chromium-common

chromium-headless

domoticz

hashcat

libdigidocpp

minizip-compat-devel

springlobby

=== BuildRequires (minizip-compat) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-compat*'
| grep 'src$' | pkgname

chromium

domoticz

hashcat

libdigidocpp

springlobby

=== Requires (minizip-ng (currently built with compat flags)) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' |
grep -v 'src$' | pkgname

collada-dom

dolphin-emu

dolphin-emu-tool

freexl

keepassxc

libnuml

librasterlite2

libsbml

libspatialite

libxlsxwriter

minizip-ng-devel

OpenColorIO

OpenColorIO-tools

perl-LibSBML

python3-libsbml

qmc2

qmc2-arcade

R-libSBML

ruby-SBML

sigil

vxl

widelands

xiphos

zfstream

zfstream-devel

=== BuildRequires (minizip-ng (currently built with compat flags)) ===
repoquery -q --repo=rawhide{,-source} --whatrequires 'minizip-ng*' |
grep 'src$' | pkgname

collada-dom

COPASI

dolphin-emu

freexl

keepassxc

libCombine

libnuml

librasterlite2

libsbml

libsedml

libspatialite

libxlsxwriter

OpenColorIO

qmc2

sigil

spatialite-gui

spatialite-tools

vxl

widelands

wordgrinder

xiphos

zfstream

== Contingency Plan ==

* Contingency mechanism: Revert the change to Minizip and rebuild
dependent packages. However, if we want to revert to minizip-compat,
the [https://fedoraproject.org/wiki/Changes/ZlibNGTransition Zlib
Transition Change] needs to be reverted as well (minizip-compat is
subpackage of zlib package).
* Contingency deadline: Beta freeze
* Blocks release? No

== Documentation ==

== Release Notes ==



-- 
Aoife Moloney

Fedora Operations Architect

Fedora Project

Matrix: @amoloney:fedora.im

IRC: amoloney
_______________________________________________
devel-announce mailing list -- devel-announce@lists.fedoraproject.org
To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to