(Created page with "= Transitioning to Minizip-ng as compatible replacement for Minizip <!-- The name of your change proposal --> = == Summary == <!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". --> Transition of the minizip to m...") |
No edit summary |
||
Line 37: | Line 37: | ||
ON_QA -> change is fully code complete | ON_QA -> change is fully code complete | ||
--> | --> | ||
* FESCo issue: <will be assigned by the Wrangler> | * FESCo issue: <will be assigned by the Wrangler> | ||
* Tracker bug: <will be assigned by the Wrangler> | * Tracker bug: <will be assigned by the Wrangler> | ||
Line 43: | Line 42: | ||
== Detailed Description == | == 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 a few of them are not building due to this change. Everything is described in this [https://bugzilla.redhat.com/show_bug.cgi?id=2235710#c4 Bugzilla], <TODO rebuilt all depended packages to see the impact>. | |||
== Benefit to Fedora == | == Benefit to Fedora == | ||
Line 84: | Line 82: | ||
https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack) | https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack) | ||
--> | --> | ||
* 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 == | == Scope == | ||
* Proposal owners: | * 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. | |||
* Release engineering: TODO | |||
* 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. | |||
== 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 | |||
<!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | <!-- REQUIRED FOR SYSTEM WIDE CHANGES --> | ||
== Contingency Plan == | == Contingency Plan == | ||
* Contingency mechanism: Revert the change to Zlib and rebuild dependent packages. | |||
* Contingency mechanism: | * Contingency deadline: Beta freeze | ||
* Blocks release? TODO | |||
* Contingency deadline: Beta freeze | |||
* Blocks release? | |||
== Documentation == | == Documentation == | ||
TODO | |||
== Release Notes == | == Release Notes == | ||
TODO |
Revision as of 21:07, 11 October 2023
Transitioning to Minizip-ng as compatible replacement for Minizip
Summary
Transition of the minizip to minizip-ng as it brings much more optimization and also this change is strongly tied to the Zlib Transition Change as by removing zlib package it will also remove minizip-compat subpackage.
Owner
- Name: Lukas Javorsky
- Email: ljavorsk@redhat.com
Current status
- Targeted release: Fedora Linux 40
- Last updated: 2023-10-11
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
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 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 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 a few of them are not building due to this change. Everything is described in this Bugzilla, <TODO rebuilt all depended packages to see the impact>.
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.
- Minizip-ng will be rebuilt with minizip-compatible API, obsoleting minizip-compat-1.3
- Other developers: Help with build failures may be requested.
- Release engineering: TODO
- 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.
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 Zlib and rebuild dependent packages.
- Contingency deadline: Beta freeze
- Blocks release? TODO
Documentation
TODO
Release Notes
TODO