diff mbox series

[1/2] package/minizip: add minizip-zlib support

Message ID 20220108224337.3702128-1-fontaine.fabrice@gmail.com
State Superseded
Headers show
Series [1/2] package/minizip: add minizip-zlib support | expand

Commit Message

Fabrice Fontaine Jan. 8, 2022, 10:43 p.m. UTC
Add a virtual package to allow the user to select the minizip provider:
 - the current minizip (which has been renamed minizip-ng since
   https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a)
 - the 'legacy' minizip provided by zlib which is still widely supported
   by various opensource packages such as domoticz

There is no need to add entries in Config.legacy as the previous options
are kept and the default provider of minizip is minizip-ng.

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 DEVELOPERS                                    |  2 +
 .../minizip-ng.hash}                          |  2 +-
 package/minizip-ng/minizip-ng.mk              | 76 +++++++++++++++++++
 package/minizip-zlib/minizip-zlib.hash        |  4 +
 package/minizip-zlib/minizip-zlib.mk          | 24 ++++++
 package/minizip/Config.in                     | 40 +++++++++-
 package/minizip/minizip.mk                    | 69 +----------------
 7 files changed, 144 insertions(+), 73 deletions(-)
 rename package/{minizip/minizip.hash => minizip-ng/minizip-ng.hash} (82%)
 create mode 100644 package/minizip-ng/minizip-ng.mk
 create mode 100644 package/minizip-zlib/minizip-zlib.hash
 create mode 100644 package/minizip-zlib/minizip-zlib.mk

Comments

Arnout Vandecappelle July 27, 2022, 10:02 a.m. UTC | #1
Hi Fabrice,

On 08/01/2022 23:43, Fabrice Fontaine wrote:
> Add a virtual package to allow the user to select the minizip provider:

  A virtual package should be used when the alternatives are more or less 
drop-in replacements. Here, however, they are absolutely not: they install 
completely different header files and libraries. There is no way that something 
that expects minizip-ng can build with minizip-zlib or vice versa.

  In addition, the two can be installed in parallel.

  So there's no reason at all to make it a virtual package.

>   - the current minizip (which has been renamed minizip-ng since
>     https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a)

  It would make more sense to switch the existing minizip package to this new 
upstream repository.

  We could rename the package to minizip-ng, but we generally avoid that. It's 
just annoyance for people who upgrade buildroot (legacy handling helps, but it 
is still annoying), and there is no benefit at all other than "consistency".

>   - the 'legacy' minizip provided by zlib which is still widely supported
>     by various opensource packages such as domoticz

  We should just add a package minizip-zlib.


> There is no need to add entries in Config.legacy as the previous options
> are kept and the default provider of minizip is minizip-ng.
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

[snip]
> diff --git a/package/minizip-zlib/minizip-zlib.mk b/package/minizip-zlib/minizip-zlib.mk
> new file mode 100644
> index 0000000000..67d4e31f41
> --- /dev/null
> +++ b/package/minizip-zlib/minizip-zlib.mk
> @@ -0,0 +1,24 @@
> +################################################################################
> +#
> +# minizip-zlib
> +#
> +################################################################################
> +
> +MINIZIP_ZLIB_VERSION = 1.2.11
> +MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz
> +MINIZIP_ZLIB_SITE = http://www.zlib.net
> +MINIZIP_ZLIB_LICENSE = Zlib
> +MINIZIP_ZLIB_LICENSE_FILES = README
> +MINIZIP_ZLIB_INSTALL_STAGING = YES
> +MINIZIP_ZLIB_PROVIDES = minizip
> +MINIZIP_ZLIB_SUBDIR = contrib/minizip
> +MINIZIP_ZLIB_AUTORECONF = YES

  Please add a comment why autoreconf is needed.

  Regards,
  Arnout

> +MINIZIP_ZLIB_DEPENDENCIES = zlib
> +
> +ifeq ($(BR2_PACKAGE_MINIZIP_DEMOS),y)
> +MINIZIP_ZLIB_CONF_OPTS += --enable-demos
> +else
> +MINIZIP_ZLIB_CONF_OPTS += --disable-demos
> +endif
> +
> +$(eval $(autotools-package))
[snip]
Fabrice Fontaine July 27, 2022, 12:05 p.m. UTC | #2
Hi Arnout,

Le mer. 27 juil. 2022 à 13:08, Arnout Vandecappelle <arnout@mind.be> a
écrit :

>   Hi Fabrice,
>
> On 08/01/2022 23:43, Fabrice Fontaine wrote:
> > Add a virtual package to allow the user to select the minizip provider:
>
>   A virtual package should be used when the alternatives are more or less
> drop-in replacements. Here, however, they are absolutely not: they install
> completely different header files and libraries. There is no way that
> something
> that expects minizip-ng can build with minizip-zlib or vice versa.
>
>   In addition, the two can be installed in parallel.
>

That's not completely true: minizip(-ng) and minizip-legacy can be
installed in parallel only if compatibility headers are disabled (which is
done since commit fc166894b3f257c4cb20d84368c918f3335dadf5).
Ideally, it would be great to enable back those compatibility headers.
Should I make this new option dependent on !BR2_PACKAGE_MINIZIP_LEGACY
instead of making a virtual package?

>
>
>   So there's no reason at all to make it a virtual package.
>

I decided to make a virtual package because there was already a virtual
package for zlib and zlib-ng.
I thought that we were in the same situation with minizip(-ng) and
minizip-legacy.


>
> >   - the current minizip (which has been renamed minizip-ng since
> >
> https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a
> )
>
>   It would make more sense to switch the existing minizip package to this
> new
> upstream repository.
>

Actually, we're already shipping minizip-ng as minizip. However, minizip-ng
is not really widely used by the opensource community. For example,
domoticz only supports minizip-legacy.


>
>   We could rename the package to minizip-ng, but we generally avoid that.
> It's
> just annoyance for people who upgrade buildroot (legacy handling helps,
> but it
> is still annoying), and there is no benefit at all other than
> "consistency".


OK, I can send a v2 which doesn't rename minizip as minizip-ng.


>
> >   - the 'legacy' minizip provided by zlib which is still widely supported
> >     by various opensource packages such as domoticz
>
>   We should just add a package minizip-zlib.
>

>
> > There is no need to add entries in Config.legacy as the previous options
> > are kept and the default provider of minizip is minizip-ng.
> >
> > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>
> [snip]
> > diff --git a/package/minizip-zlib/minizip-zlib.mk
> b/package/minizip-zlib/minizip-zlib.mk
> > new file mode 100644
> > index 0000000000..67d4e31f41
> > --- /dev/null
> > +++ b/package/minizip-zlib/minizip-zlib.mk
> > @@ -0,0 +1,24 @@
> >
> +################################################################################
> > +#
> > +# minizip-zlib
> > +#
> >
> +################################################################################
> > +
> > +MINIZIP_ZLIB_VERSION = 1.2.11
> > +MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz
> > +MINIZIP_ZLIB_SITE = http://www.zlib.net
> > +MINIZIP_ZLIB_LICENSE = Zlib
> > +MINIZIP_ZLIB_LICENSE_FILES = README
> > +MINIZIP_ZLIB_INSTALL_STAGING = YES
> > +MINIZIP_ZLIB_PROVIDES = minizip
> > +MINIZIP_ZLIB_SUBDIR = contrib/minizip
> > +MINIZIP_ZLIB_AUTORECONF = YES
>
>   Please add a comment why autoreconf is needed.
>
>   Regards,
>   Arnout
>
> > +MINIZIP_ZLIB_DEPENDENCIES = zlib
> > +
> > +ifeq ($(BR2_PACKAGE_MINIZIP_DEMOS),y)
> > +MINIZIP_ZLIB_CONF_OPTS += --enable-demos
> > +else
> > +MINIZIP_ZLIB_CONF_OPTS += --disable-demos
> > +endif
> > +
> > +$(eval $(autotools-package))
> [snip]
>

Best Regards,

Fabrice
Arnout Vandecappelle July 27, 2022, 12:49 p.m. UTC | #3
On 27/07/2022 14:05, Fabrice Fontaine wrote:
> Hi Arnout,
> 
> Le mer. 27 juil. 2022 à 13:08, Arnout Vandecappelle <arnout@mind.be 
> <mailto:arnout@mind.be>> a écrit :
> 
>        Hi Fabrice,
> 
>     On 08/01/2022 23:43, Fabrice Fontaine wrote:
>      > Add a virtual package to allow the user to select the minizip provider:
> 
>        A virtual package should be used when the alternatives are more or less
>     drop-in replacements. Here, however, they are absolutely not: they install
>     completely different header files and libraries. There is no way that something
>     that expects minizip-ng can build with minizip-zlib or vice versa.
> 
>        In addition, the two can be installed in parallel.
> 
> 
> That's not completely true: minizip(-ng) and minizip-legacy can be installed in 
> parallel only if compatibility headers are disabled (which is done since commit 
> fc166894b3f257c4cb20d84368c918f3335dadf5).
> Ideally, it would be great to enable back those compatibility headers.
> Should I make this new option dependent on !BR2_PACKAGE_MINIZIP_LEGACY instead 
> of making a virtual package?

  Ah, I missed that, thanks for the observation.

  But then I wonder: can't domoticz be compiled with BR2_PACKAGE_MINIZIP_LEGACY? 
I haven't looked into the zlib changelogs, but since minizip is under contrib/, 
I don't actually expect much activity there. So it makes more sense to use 
minizip-ng everywhere.

  Hang on... Where is BR2_PACKAGE_MINIZIP_LEGACY? Where are those compatibility 
headers? I checked the source of our current minizip(-ng) and can't find them 
anywhere, and I don't see BR2_PACKAGE_MINIZIP_LEGACY in your patch either...

  Oh, hang on 2: there is in fact a MZ_COMPAT cmake option which we currently 
don't enable, and it looks like that one does enable the compatibility headers.

>        So there's no reason at all to make it a virtual package.
> 
> 
> I decided to make a virtual package because there was already a virtual package 
> for zlib and zlib-ng.
> I thought that we were in the same situation with minizip(-ng) and minizip-legacy.

  zlib and zlib-ng are both maintained, so that's different.

  I'd propose the following:

if MZ_COMPAT works with domoticz; then
	1. Add BR2_PACKAGE_MINIZIP_LEGACY
	2. Select BR2_PACKAGE_MINIZIP{,_LEGACY} from domoticz
else
	1. Introduce minizip-legacy as a virtual package
	2. Add BR2_PACKAGE_MINIZIP_LEGACY_COMPAT to minizip that implements the virtual 
package
	3. Add minizip-zlib package
	4. select minizip-zlib from domoticz
fi

  Note that for 4. you need something like we have for openssl, an additional 
blind symbol that allows selecting a specific minizip-legacy implementation.


>      >   - the current minizip (which has been renamed minizip-ng since
>      >
>     https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a
>     <https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a>)
> 
>        It would make more sense to switch the existing minizip package to this new
>     upstream repository.
> 
> 
> Actually, we're already shipping minizip-ng as minizip.

  Yes, but we are currently using a different github project.

  So before (or independent) of all the rest, I'd send a patch that just changes 
the SITE used by minizip.


> However, minizip-ng is 
> not really widely used by the opensource community. For example, domoticz only 
> supports minizip-legacy.

  vlc at least seems to support it. And those are the only two in buildroot that 
have any minizip support AFAICS, so not much basis to draw a conclusion.


  Regards,
  Arnout

>        We could rename the package to minizip-ng, but we generally avoid that. It's
>     just annoyance for people who upgrade buildroot (legacy handling helps, but it
>     is still annoying), and there is no benefit at all other than "consistency". 
> 
> 
> OK, I can send a v2 which doesn't rename minizip as minizip-ng.
> 
> 
>      >   - the 'legacy' minizip provided by zlib which is still widely supported
>      >     by various opensource packages such as domoticz
> 
>        We should just add a package minizip-zlib.
> 
> 
> 
>      > There is no need to add entries in Config.legacy as the previous options
>      > are kept and the default provider of minizip is minizip-ng.
>      >
>      > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com
>     <mailto:fontaine.fabrice@gmail.com>>
> 
>     [snip]
>      > diff --git a/package/minizip-zlib/minizip-zlib.mk
>     <http://minizip-zlib.mk> b/package/minizip-zlib/minizip-zlib.mk
>     <http://minizip-zlib.mk>
>      > new file mode 100644
>      > index 0000000000..67d4e31f41
>      > --- /dev/null
>      > +++ b/package/minizip-zlib/minizip-zlib.mk <http://minizip-zlib.mk>
>      > @@ -0,0 +1,24 @@
>      >
>     +################################################################################
>      > +#
>      > +# minizip-zlib
>      > +#
>      >
>     +################################################################################
>      > +
>      > +MINIZIP_ZLIB_VERSION = 1.2.11
>      > +MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz
>      > +MINIZIP_ZLIB_SITE = http://www.zlib.net <http://www.zlib.net>
>      > +MINIZIP_ZLIB_LICENSE = Zlib
>      > +MINIZIP_ZLIB_LICENSE_FILES = README
>      > +MINIZIP_ZLIB_INSTALL_STAGING = YES
>      > +MINIZIP_ZLIB_PROVIDES = minizip
>      > +MINIZIP_ZLIB_SUBDIR = contrib/minizip
>      > +MINIZIP_ZLIB_AUTORECONF = YES
> 
>        Please add a comment why autoreconf is needed.
> 
>        Regards,
>        Arnout
> 
>      > +MINIZIP_ZLIB_DEPENDENCIES = zlib
>      > +
>      > +ifeq ($(BR2_PACKAGE_MINIZIP_DEMOS),y)
>      > +MINIZIP_ZLIB_CONF_OPTS += --enable-demos
>      > +else
>      > +MINIZIP_ZLIB_CONF_OPTS += --disable-demos
>      > +endif
>      > +
>      > +$(eval $(autotools-package))
>     [snip]
> 
> 
> Best Regards,
> 
> Fabrice
Fabrice Fontaine July 27, 2022, 1:12 p.m. UTC | #4
Le mer. 27 juil. 2022 à 14:49, Arnout Vandecappelle <arnout@mind.be> a
écrit :

>
>
> On 27/07/2022 14:05, Fabrice Fontaine wrote:
> > Hi Arnout,
> >
> > Le mer. 27 juil. 2022 à 13:08, Arnout Vandecappelle <arnout@mind.be
> > <mailto:arnout@mind.be>> a écrit :
> >
> >        Hi Fabrice,
> >
> >     On 08/01/2022 23:43, Fabrice Fontaine wrote:
> >      > Add a virtual package to allow the user to select the minizip
> provider:
> >
> >        A virtual package should be used when the alternatives are more
> or less
> >     drop-in replacements. Here, however, they are absolutely not: they
> install
> >     completely different header files and libraries. There is no way
> that something
> >     that expects minizip-ng can build with minizip-zlib or vice versa.
> >
> >        In addition, the two can be installed in parallel.
> >
> >
> > That's not completely true: minizip(-ng) and minizip-legacy can be
> installed in
> > parallel only if compatibility headers are disabled (which is done since
> commit
> > fc166894b3f257c4cb20d84368c918f3335dadf5).
> > Ideally, it would be great to enable back those compatibility headers.
> > Should I make this new option dependent on !BR2_PACKAGE_MINIZIP_LEGACY
> instead
> > of making a virtual package?
>
>   Ah, I missed that, thanks for the observation.
>
>   But then I wonder: can't domoticz be compiled with
> BR2_PACKAGE_MINIZIP_LEGACY?
> I haven't looked into the zlib changelogs, but since minizip is under
> contrib/,
> I don't actually expect much activity there. So it makes more sense to use
> minizip-ng everywhere.
>
>   Hang on... Where is BR2_PACKAGE_MINIZIP_LEGACY? Where are those
> compatibility
> headers? I checked the source of our current minizip(-ng) and can't find
> them
> anywhere, and I don't see BR2_PACKAGE_MINIZIP_LEGACY in your patch
> either...
>

My patch didn't add any BR2_PACKAGE_MINIZIP_LEGACY option. This was just a
proposal to avoid making a virtual package.


>
>   Oh, hang on 2: there is in fact a MZ_COMPAT cmake option which we
> currently
> don't enable, and it looks like that one does enable the compatibility
> headers.
>

MZ_COMPAT was disabled by commit fc166894b3f257c4cb20d84368c918f3335dadf5
to avoid a build failure with domoticz.


>
> >        So there's no reason at all to make it a virtual package.
> >
> >
> > I decided to make a virtual package because there was already a virtual
> package
> > for zlib and zlib-ng.
> > I thought that we were in the same situation with minizip(-ng) and
> minizip-legacy.
>
>   zlib and zlib-ng are both maintained, so that's different.
>

Actually, minizip and minizip(-ng) are both maintained. Latest commit on
minizip was made on January:
https://github.com/madler/zlib/commits/master/contrib/minizip/minizip.c


>
>   I'd propose the following:
>
> if MZ_COMPAT works with domoticz; then
>         1. Add BR2_PACKAGE_MINIZIP_LEGACY
>         2. Select BR2_PACKAGE_MINIZIP{,_LEGACY} from domoticz
> else
>         1. Introduce minizip-legacy as a virtual package
>         2. Add BR2_PACKAGE_MINIZIP_LEGACY_COMPAT to minizip that
> implements the virtual
> package
>         3. Add minizip-zlib package
>         4. select minizip-zlib from domoticz
> fi
>
>   Note that for 4. you need something like we have for openssl, an
> additional
> blind symbol that allows selecting a specific minizip-legacy
> implementation.
>

OK, I'll go for the second option.


>
>
> >      >   - the current minizip (which has been renamed minizip-ng since
> >      >
> >
> https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a
> >     <
> https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a
> >)
> >
> >        It would make more sense to switch the existing minizip package
> to this new
> >     upstream repository.
> >
> >
> > Actually, we're already shipping minizip-ng as minizip.
>
>   Yes, but we are currently using a different github project.
>
>   So before (or independent) of all the rest, I'd send a patch that just
> changes
> the SITE used by minizip.
>

OK, I'll send a patch but basically this is the same github project:
https://github.com/nmoinvaz/minizip-ng is just a symlink to
https://github.com/zlib-ng/minizip-ng


>
>
> > However, minizip-ng is
> > not really widely used by the opensource community. For example,
> domoticz only
> > supports minizip-legacy.
>
>   vlc at least seems to support it. And those are the only two in
> buildroot that
> have any minizip support AFAICS, so not much basis to draw a conclusion.
>
>
>   Regards,
>   Arnout
>
> >        We could rename the package to minizip-ng, but we generally avoid
> that. It's
> >     just annoyance for people who upgrade buildroot (legacy handling
> helps, but it
> >     is still annoying), and there is no benefit at all other than
> "consistency".
> >
> >
> > OK, I can send a v2 which doesn't rename minizip as minizip-ng.
> >
> >
> >      >   - the 'legacy' minizip provided by zlib which is still widely
> supported
> >      >     by various opensource packages such as domoticz
> >
> >        We should just add a package minizip-zlib.
> >
> >
> >
> >      > There is no need to add entries in Config.legacy as the previous
> options
> >      > are kept and the default provider of minizip is minizip-ng.
> >      >
> >      > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com
> >     <mailto:fontaine.fabrice@gmail.com>>
> >
> >     [snip]
> >      > diff --git a/package/minizip-zlib/minizip-zlib.mk
> >     <http://minizip-zlib.mk> b/package/minizip-zlib/minizip-zlib.mk
> >     <http://minizip-zlib.mk>
> >      > new file mode 100644
> >      > index 0000000000..67d4e31f41
> >      > --- /dev/null
> >      > +++ b/package/minizip-zlib/minizip-zlib.mk <
> http://minizip-zlib.mk>
> >      > @@ -0,0 +1,24 @@
> >      >
> >
>  +################################################################################
> >      > +#
> >      > +# minizip-zlib
> >      > +#
> >      >
> >
>  +################################################################################
> >      > +
> >      > +MINIZIP_ZLIB_VERSION = 1.2.11
> >      > +MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz
> >      > +MINIZIP_ZLIB_SITE = http://www.zlib.net <http://www.zlib.net>
> >      > +MINIZIP_ZLIB_LICENSE = Zlib
> >      > +MINIZIP_ZLIB_LICENSE_FILES = README
> >      > +MINIZIP_ZLIB_INSTALL_STAGING = YES
> >      > +MINIZIP_ZLIB_PROVIDES = minizip
> >      > +MINIZIP_ZLIB_SUBDIR = contrib/minizip
> >      > +MINIZIP_ZLIB_AUTORECONF = YES
> >
> >        Please add a comment why autoreconf is needed.
> >
> >        Regards,
> >        Arnout
> >
> >      > +MINIZIP_ZLIB_DEPENDENCIES = zlib
> >      > +
> >      > +ifeq ($(BR2_PACKAGE_MINIZIP_DEMOS),y)
> >      > +MINIZIP_ZLIB_CONF_OPTS += --enable-demos
> >      > +else
> >      > +MINIZIP_ZLIB_CONF_OPTS += --disable-demos
> >      > +endif
> >      > +
> >      > +$(eval $(autotools-package))
> >     [snip]
> >
> >
> > Best Regards,
> >
> > Fabrice
>

Best Regards,

Fabrice
Arnout Vandecappelle July 27, 2022, 1:31 p.m. UTC | #5
On 27/07/2022 15:12, Fabrice Fontaine wrote:
> 
> 
> Le mer. 27 juil. 2022 à 14:49, Arnout Vandecappelle <arnout@mind.be 
> <mailto:arnout@mind.be>> a écrit :
> 
> 
> 
>     On 27/07/2022 14:05, Fabrice Fontaine wrote:
>      > Hi Arnout,
>      >
>      > Le mer. 27 juil. 2022 à 13:08, Arnout Vandecappelle <arnout@mind.be
>     <mailto:arnout@mind.be>
>      > <mailto:arnout@mind.be <mailto:arnout@mind.be>>> a écrit :
[snip]
>        Oh, hang on 2: there is in fact a MZ_COMPAT cmake option which we currently
>     don't enable, and it looks like that one does enable the compatibility headers.
> 
> 
> MZ_COMPAT was disabled by commit fc166894b3f257c4cb20d84368c918f3335dadf5 to 
> avoid a build failure with domoticz.

  That may have been fixed in minizip-ng by now.

  But anyway, my original point remains: minizip-ng doesn't actually install 
anything that conflicts with minizip-zlib, so there's no reason to make it a 
virtual package.

  And I now also checked it with libzip. libzip installs in /usr/include, 
minizip-zlib installs in /usr/include/minizip, so there's no conflict.

  Just to be sure, you can perhaps also run a test against php with libzip enabled?


>      >        So there's no reason at all to make it a virtual package.
>      >
>      >
>      > I decided to make a virtual package because there was already a virtual
>     package
>      > for zlib and zlib-ng.
>      > I thought that we were in the same situation with minizip(-ng) and
>     minizip-legacy.
> 
>        zlib and zlib-ng are both maintained, so that's different.
> 
> 
> Actually, minizip and minizip(-ng) are both maintained. Latest commit on minizip 
> was made on January:
> https://github.com/madler/zlib/commits/master/contrib/minizip/minizip.c 
> <https://github.com/madler/zlib/commits/master/contrib/minizip/minizip.c>

  OK


>        I'd propose the following:
> 
>     if MZ_COMPAT works with domoticz; then
>              1. Add BR2_PACKAGE_MINIZIP_LEGACY
>              2. Select BR2_PACKAGE_MINIZIP{,_LEGACY} from domoticz
>     else
>              1. Introduce minizip-legacy as a virtual package
>              2. Add BR2_PACKAGE_MINIZIP_LEGACY_COMPAT to minizip that implements
>     the virtual
>     package
>              3. Add minizip-zlib package
>              4. select minizip-zlib from domoticz
>     fi
> 
>        Note that for 4. you need something like we have for openssl, an additional
>     blind symbol that allows selecting a specific minizip-legacy implementation.
> 
> 
> OK, I'll go for the second option.

  My conditional tree was wrong though. There is no real reason for us to 
support the compatibility mode of minizip-ng. We can simply add minilib-zlib as 
an independent, non-conflicting package. So:

if true; then
	1. Add minizip-zlib package
	2. select minizip-zlib from domoticz
fi

  It was just your mention of MZ_COMPAT that got me confused, sorry.


>      >      >   - the current minizip (which has been renamed minizip-ng since
>      >      >
>      >
>     https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a
>     <https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a>
>      >   
>       <https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a <https://github.com/zlib-ng/minizip-ng/commit/db95894646b87f6178ceaa389cbdb5b1ba8cd97a>>)
>      >
>      >        It would make more sense to switch the existing minizip package to
>     this new
>      >     upstream repository.
>      >
>      >
>      > Actually, we're already shipping minizip-ng as minizip.
> 
>        Yes, but we are currently using a different github project.
> 
>        So before (or independent) of all the rest, I'd send a patch that just
>     changes
>     the SITE used by minizip.
> 
> 
> OK, I'll send a patch but basically this is the same github project:
> https://github.com/nmoinvaz/minizip-ng <https://github.com/nmoinvaz/minizip-ng> 
> is just a symlink to
> https://github.com/zlib-ng/minizip-ng <https://github.com/zlib-ng/minizip-ng>

  Yes, but we prefer to have the real project rather than a symlink...


  Regards,
  Arnout

[snip]
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index bbbb47f6ac..47a3d4bfe0 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -922,6 +922,8 @@  F:	package/mbedtls/
 F:	package/mbedtls3/
 F:	package/minissdpd/
 F:	package/minizip/
+F:	package/minizip-ng/
+F:	package/minizip-zlib/
 F:	package/mongodb/
 F:	package/motion/
 F:	package/mutt/
diff --git a/package/minizip/minizip.hash b/package/minizip-ng/minizip-ng.hash
similarity index 82%
rename from package/minizip/minizip.hash
rename to package/minizip-ng/minizip-ng.hash
index 3e87e64dae..f866363c93 100644
--- a/package/minizip/minizip.hash
+++ b/package/minizip-ng/minizip-ng.hash
@@ -1,3 +1,3 @@ 
 # Locally computed
-sha256  2ab219f651901a337a7d3c268128711b80330a99ea36bdc528c76b591a624c3c  minizip-3.0.4.tar.gz
+sha256  2ab219f651901a337a7d3c268128711b80330a99ea36bdc528c76b591a624c3c  minizip-ng-3.0.4.tar.gz
 sha256  675181c03fc1302a1c8554c00f7be9bb420c5dbc9dcc2013433cec144413de03  LICENSE
diff --git a/package/minizip-ng/minizip-ng.mk b/package/minizip-ng/minizip-ng.mk
new file mode 100644
index 0000000000..ec3903d226
--- /dev/null
+++ b/package/minizip-ng/minizip-ng.mk
@@ -0,0 +1,76 @@ 
+################################################################################
+#
+# minizip-ng
+#
+################################################################################
+
+MINIZIP_NG_VERSION = 3.0.4
+MINIZIP_NG_SITE = $(call github,zlib-ng,minizip-ng,$(MINIZIP_NG_VERSION))
+MINIZIP_NG_LICENSE = Zlib
+MINIZIP_NG_LICENSE_FILES = LICENSE
+MINIZIP_NG_CPE_ID_VENDOR = minizip_project
+MINIZIP_NG_CPE_ID_PRODUCT = minizip
+MINIZIP_NG_INSTALL_STAGING = YES
+MINIZIP_NG_PROVIDES = minizip
+MINIZIP_NG_DEPENDENCIES = host-pkgconf
+MINIZIP_NG_CONF_OPTS = \
+	$(if $(BR2_PACKAGE_MINIZIP_DEMOS),-DMZ_BUILD_TEST=ON) \
+	-DMZ_COMPAT=OFF \
+	-DMZ_FETCH_LIBS=OFF
+
+ifeq ($(BR2_PACKAGE_BZIP2),y)
+MINIZIP_NG_DEPENDENCIES += bzip2
+MINIZIP_NG_CONF_OPTS += -DMZ_BZIP2=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_BZIP2=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_LIBICONV),y)
+MINIZIP_NG_DEPENDENCIES += libiconv
+MINIZIP_NG_CONF_OPTS += -DMZ_ICONV=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_ICONV=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_LIBBSD),y)
+MINIZIP_NG_DEPENDENCIES += libbsd
+MINIZIP_NG_CONF_OPTS += -DMZ_LIBBSD=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_LIBBSD=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+MINIZIP_NG_DEPENDENCIES += openssl
+MINIZIP_NG_CONF_OPTS += \
+	-DMZ_OPENSSL=ON \
+	-DMZ_PKCRYPT=ON \
+	-DMZ_WZAES=ON
+else
+MINIZIP_NG_CONF_OPTS += \
+	-DMZ_OPENSSL=OFF \
+	-DMZ_PKCRYPT=OFF \
+	-DMZ_WZAES=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_XZ),y)
+MINIZIP_NG_DEPENDENCIES += xz
+MINIZIP_NG_CONF_OPTS += -DMZ_LZMA=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_LZMA=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+MINIZIP_NG_DEPENDENCIES += zlib
+MINIZIP_NG_CONF_OPTS += -DMZ_ZLIB=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_ZLIB=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_ZSTD),y)
+MINIZIP_NG_DEPENDENCIES += zstd
+MINIZIP_NG_CONF_OPTS += -DMZ_ZSTD=ON
+else
+MINIZIP_NG_CONF_OPTS += -DMZ_ZSTD=OFF
+endif
+
+$(eval $(cmake-package))
diff --git a/package/minizip-zlib/minizip-zlib.hash b/package/minizip-zlib/minizip-zlib.hash
new file mode 100644
index 0000000000..4d2c5c29d3
--- /dev/null
+++ b/package/minizip-zlib/minizip-zlib.hash
@@ -0,0 +1,4 @@ 
+# From http://www.zlib.net/
+sha256  4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066  zlib-1.2.11.tar.xz
+# License files, locally calculated
+sha256  7960b6b1cc63e619abb77acaea5427159605afee8c8b362664f4effc7d7f7d15  README
diff --git a/package/minizip-zlib/minizip-zlib.mk b/package/minizip-zlib/minizip-zlib.mk
new file mode 100644
index 0000000000..67d4e31f41
--- /dev/null
+++ b/package/minizip-zlib/minizip-zlib.mk
@@ -0,0 +1,24 @@ 
+################################################################################
+#
+# minizip-zlib
+#
+################################################################################
+
+MINIZIP_ZLIB_VERSION = 1.2.11
+MINIZIP_ZLIB_SOURCE = zlib-$(MINIZIP_ZLIB_VERSION).tar.xz
+MINIZIP_ZLIB_SITE = http://www.zlib.net
+MINIZIP_ZLIB_LICENSE = Zlib
+MINIZIP_ZLIB_LICENSE_FILES = README
+MINIZIP_ZLIB_INSTALL_STAGING = YES
+MINIZIP_ZLIB_PROVIDES = minizip
+MINIZIP_ZLIB_SUBDIR = contrib/minizip
+MINIZIP_ZLIB_AUTORECONF = YES
+MINIZIP_ZLIB_DEPENDENCIES = zlib
+
+ifeq ($(BR2_PACKAGE_MINIZIP_DEMOS),y)
+MINIZIP_ZLIB_CONF_OPTS += --enable-demos
+else
+MINIZIP_ZLIB_CONF_OPTS += --disable-demos
+endif
+
+$(eval $(autotools-package))
diff --git a/package/minizip/Config.in b/package/minizip/Config.in
index e4d185d9d7..b88091e809 100644
--- a/package/minizip/Config.in
+++ b/package/minizip/Config.in
@@ -1,13 +1,38 @@ 
 config BR2_PACKAGE_MINIZIP
-	bool "minizip"
+	bool "minizip support"
+	help
+	  Select the desired minizip provider.
+
+if BR2_PACKAGE_MINIZIP
+
+choice
+	prompt "minizip variant"
+	default BR2_PACKAGE_MINIZIP_NG
+	help
+	  Select the desired minizip provider.
+
+config BR2_PACKAGE_MINIZIP_NG
+	bool "minizip-ng"
 	depends on BR2_USE_WCHAR
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+	select BR2_PACKAGE_HAS_MINIZIP
 	help
 	  Enables to extract files from a .zip archive file.
 	  It is compatible with PKZip 2.04g, WinZip, InfoZip,
 	  MimarSinan Codex Suite 2002 tools, and compatible sofware.
 
-	  https://github.com/nmoinvaz/minizip
+	  https://github.com/zlib-ng/minizip-ng
+
+config BR2_PACKAGE_MINIZIP_ZLIB
+	bool "minizip-zlib"
+	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_HAS_MINIZIP
+	help
+	  Legacy minizip provided in contrib/minizip of zlib.
+
+	  https://www.winimage.com/zLibDll/minizip.html
+
+endchoice
 
 config BR2_PACKAGE_MINIZIP_DEMOS
 	bool "minizip"
@@ -15,5 +40,12 @@  config BR2_PACKAGE_MINIZIP_DEMOS
 	help
 	  Enable minizip binary tool.
 
-comment "minizip needs a toolchain w/ wchar"
-	depends on !BR2_USE_WCHAR
+config BR2_PACKAGE_HAS_MINIZIP
+	bool
+
+config BR2_PACKAGE_PROVIDES_MINIZIP
+	string
+	default "minizip-zlib" if BR2_PACKAGE_MINIZIP_ZLIB
+	default "minizip-ng" if BR2_PACKAGE_MINIZIP_NG
+
+endif
diff --git a/package/minizip/minizip.mk b/package/minizip/minizip.mk
index 07f67c1354..95f1a17156 100644
--- a/package/minizip/minizip.mk
+++ b/package/minizip/minizip.mk
@@ -4,71 +4,4 @@ 
 #
 ################################################################################
 
-MINIZIP_VERSION = 3.0.4
-MINIZIP_SITE = $(call github,nmoinvaz,minizip,$(MINIZIP_VERSION))
-MINIZIP_DEPENDENCIES = host-pkgconf
-MINIZIP_INSTALL_STAGING = YES
-MINIZIP_CONF_OPTS = \
-	$(if $(BR2_PACKAGE_MINIZIP_DEMOS),-DMZ_BUILD_TEST=ON) \
-	-DMZ_COMPAT=OFF \
-	-DMZ_FETCH_LIBS=OFF
-MINIZIP_LICENSE = Zlib
-MINIZIP_LICENSE_FILES = LICENSE
-MINIZIP_CPE_ID_VENDOR = minizip_project
-
-ifeq ($(BR2_PACKAGE_BZIP2),y)
-MINIZIP_DEPENDENCIES += bzip2
-MINIZIP_CONF_OPTS += -DMZ_BZIP2=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_BZIP2=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_LIBICONV),y)
-MINIZIP_DEPENDENCIES += libiconv
-MINIZIP_CONF_OPTS += -DMZ_ICONV=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_ICONV=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_LIBBSD),y)
-MINIZIP_DEPENDENCIES += libbsd
-MINIZIP_CONF_OPTS += -DMZ_LIBBSD=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_LIBBSD=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
-MINIZIP_DEPENDENCIES += openssl
-MINIZIP_CONF_OPTS += \
-	-DMZ_OPENSSL=ON \
-	-DMZ_PKCRYPT=ON \
-	-DMZ_WZAES=ON
-else
-MINIZIP_CONF_OPTS += \
-	-DMZ_OPENSSL=OFF \
-	-DMZ_PKCRYPT=OFF \
-	-DMZ_WZAES=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_XZ),y)
-MINIZIP_DEPENDENCIES += xz
-MINIZIP_CONF_OPTS += -DMZ_LZMA=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_LZMA=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_ZLIB),y)
-MINIZIP_DEPENDENCIES += zlib
-MINIZIP_CONF_OPTS += -DMZ_ZLIB=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_ZLIB=OFF
-endif
-
-ifeq ($(BR2_PACKAGE_ZSTD),y)
-MINIZIP_DEPENDENCIES += zstd
-MINIZIP_CONF_OPTS += -DMZ_ZSTD=ON
-else
-MINIZIP_CONF_OPTS += -DMZ_ZSTD=OFF
-endif
-
-$(eval $(cmake-package))
+$(eval $(virtual-package))