[Pkg-zsh-devel] Bug#849288: Bug#849288: Bug#849288: zsh-dev: installing config.h breaks reproducibility (followup to #776964)

Daniel Shahaf d.s at daniel.shahaf.name
Sun Dec 25 17:02:36 UTC 2016


Control: retitle -1 zsh-dev: installs header files containing declarations of non-"mod_export" functions (followup to #776964)

Axel Beckert wrote on Sun, Dec 25, 2016 at 17:17:36 +0100:
> Both issues are about zsh-dev not being reproducibly if once /bin/sh
> is dash and once bash.
> 
> One issue (upstream) is about fixing configure.ac, Makefile.am so that
> this no more happens.
> 
> The other issue (this Debian bug report) is about whether we want to
> continue to differ from upstream wrt. the inclusion of config.h in the
> zsh-dev package.

Yes.  This issue is not just about config.h, actually; it's about how
the package installs _all_ *.h and *.epro files, without making
a distinction between what's an interface between core and modules, and
what's an intra-core interface.  ("intraface"?)

For functions, the distinction is easy: only functions that are tagged
"mod_export" should be used by modules, however, zsh-dev installs
prototypes of other functions as well, such as findpwd().  That function
is defined with external linkage (= without the "static" keyword), but
without the "mod_export" annotation, meaning that modules that #include
/usr/include/zsh/utils.epro will be able to call findpwd(), even though
upstream does not consider that function a public/stable API.

For preprocessor macros and type definitions there is no equivalent of
the "mod_export" explicit scoping tag, however, we have no reason to
believe that every single #define and typedef shared between different
*.c files of zsh core, is blessed for use by modules.  We shouldn't
install #define's and type definitions that upstream has not
specifically blessed as an interface between modules and core.

> Obviously the following actions would resolve this Debian bug report
> (#849288):
> 
> * Upstream changes its code to install config.h as well.
> * We stop shipping config.h. That would reopen #776964.

To be clear, these options are mutually exclusive, not cumulative.

And they refer not just to config.h but in general, to all header files
(*.h, *.epro) that are installed by zsh-dev v. by upstream.

> But what I currently plan to do is to use the patch from
> http://www.zsh.org/mla/workers/2016/msg02716.html and hence make
> zsh-dev reproducible again without having decided on the config.h
> inclusion discusssion.

+1, and thanks.  I'll push it upstream soon.

> Would that action close this issue, too, or not? Because if zsh-dev
> becomes reproducible, this is mere a "we differ from upstream" issue,
> nothing more and not really a bug anymore, at most a wishlist item.

Making zsh-dev reproducible would not close this issue.  This issue is
about the divergence from upstream: since zsh-dev.deb installs headers
upstream does not, users of zsh-dev could rely on interfaces that
upstream does not bless for usage by modules.  (Such as findpwd())

Apologies for not giving these details and concrete example earlier;
that might have been clearer.  I've retitled this bug to clarify its
scope.

Cheers,

Daniel



More information about the Pkg-zsh-devel mailing list