[Pkg-zsh-devel] Bug#849288: zsh-dev: installing config.h breaks reproducibility (followup to #776964)
Axel Beckert
abe at debian.org
Tue Dec 27 17:21:43 UTC 2016
Hi Daniel,
Daniel Shahaf wrote:
> 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"?)
Ah, ok.
> 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.
So let me recap:
* Upstream installs only header files which are marked mod_export.
This does not include e.g. config.h.
* config.h is needed in some cases anyways, c.f. #776964.
So after that, it looks to me (again) like an upstream issue to me:
Upstream does not install all files necessary to compile external
modules. http://www.zsh.org/mla/workers/2016/msg02720.html seems to
summarize this issue rather well.
> > 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.
Yes, that list was meant mutually exclusive.
> > 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.
Planned to import that, but got confused, as patch thinks that patch
is already applied:
→ GET http://www.zsh.org/mla/workers/2016/msg02716.html | tail -53 | head -27
diff --git a/configure.ac b/configure.ac
index 920c2fc..dda52bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2309,21 +2309,6 @@ AH_TEMPLATE([HAVE_FIFOS],
if test x$zsh_cv_sys_fifo = xyes; then
AC_DEFINE(HAVE_FIFOS)
fi
-dnl ---------------------
-dnl echo style of /bin/sh
-dnl ---------------------
-AC_CACHE_CHECK(if echo in /bin/sh interprets escape sequences,
-zsh_cv_prog_sh_echo_escape,
-[if test "`/bin/sh -c \"echo '\\n'\"`" = "\\n"; then
- zsh_cv_prog_sh_echo_escape=no
-else
- zsh_cv_prog_sh_echo_escape=yes
-fi])
-AH_TEMPLATE([SH_USE_BSD_ECHO],
-[Define to 1 if /bin/sh does not interpret \ escape sequences.])
-if test x$zsh_cv_prog_sh_echo_escape = xno; then
- AC_DEFINE(SH_USE_BSD_ECHO)
-fi
dnl -----------
dnl test for whether link() works
→ GET http://www.zsh.org/mla/workers/2016/msg02716.html | tail -53 | head -27 | patch -p1
patching file configure.ac
Reversed (or previously applied) patch detected! Assume -R? [n] ^C
→ egrep -n 'HAVE_FIFOS|SH_USE_BSD_ECHO|test for whether link' configure.ac
2307:AH_TEMPLATE([HAVE_FIFOS],
2310: AC_DEFINE(HAVE_FIFOS)
2322:AH_TEMPLATE([SH_USE_BSD_ECHO],
2325: AC_DEFINE(SH_USE_BSD_ECHO)
2329:dnl test for whether link() works
I don't get why patch thinks that the patch is already applied. It's
clearly not. Anyone an idea here?
> > 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.
I agree. And there's currently no bug report for that reproducibility
issue. (Not sure if opening one helps, though.)
> I've retitled this bug to clarify its scope.
Thanks!
Regards, Axel
--
,''`. | Axel Beckert <abe at debian.org>, http://people.debian.org/~abe/
: :' : | Debian Developer, ftp.ch.debian.org Admin
`. `' | 4096R: 2517 B724 C5F6 CA99 5329 6E61 2FF9 CD59 6126 16B5
`- | 1024D: F067 EA27 26B9 C3FC 1486 202E C09E 1D89 9593 0EDE
More information about the Pkg-zsh-devel
mailing list