From Fedora Project Wiki
No edit summary
(adding release notes tracker)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Transitioning to Minizip-ng as compatible replacement for Minizip <!-- The name of your change proposal --> =
== Transitioning to Minizip-ng as compatible replacement for Minizip ==
 




Line 19: Line 20:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF40]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 37: Line 38:
ON_QA -> change is fully code complete
ON_QA -> change is fully code complete
-->
-->
* FESCo issue: <will be assigned by the Wrangler>
* [https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org/thread/C4KFY6SI24ITGOJFLC33I7BOPVU3TUSW/ Announced]
* Tracker bug: <will be assigned by the Wrangler>
* [https://discussion.fedoraproject.org/t/f40-change-proposal-transitioning-to-minizip-ng-as-compatible-replacement-for-minizip/95805 Discussion Thread]
* Release notes tracker: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/3108 #3108]
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=2252766 #2252766]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/1082 #1082]


== Detailed Description ==
== Detailed Description ==
Line 126: Line 129:
* Libdigidocpp: [https://bugzilla.redhat.com/show_bug.cgi?id=2240599 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 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.
* 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.





Latest revision as of 20:11, 28 February 2024

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

Current status

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 only two of them are not building due to this change. Chromium; reported in this Bugzilla. Libdigidocpp; reported in this Bugzilla.

Everything else is described in the minizip-ng rebase Bugzilla.

Early feedback from community in the 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 upstream issue.

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

  • OpenColorIO: 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 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