[Pkg-tcltk-devel] Bug#890243: tcl8.6: Please stop linking with libieee.a, removed in glibc 2.27

Aurelien Jarno aurel32 at debian.org
Mon Feb 12 11:55:45 UTC 2018


Package: tcl8.6
Version: 8.6.8+dfsg-2
Severity: normal
Tags: patch
User: debian-glibc at lists.debian.org
Usertags: 2.27

Starting with glibc 2.27, support for the "ieee" library (part of SVID
specification) has been removed. The libieee.a library is therefore not
shipped anymore.

tcl8.6 already works without this library however the configure script
detects it and enable support for it if available. The side effects are
that the "-lieee" link option is then shipped in tclConfig.sh, and that
the library ends up with the _LIB_VERSION symbol.

To avoid ease the glibc 2.27, I believe it's better to separate the two.
I have therefore attached a patch to always disable libieee support in
tcl8.6. The patch can be removed once glibc 2.27 is in testing (but can
also be kept safely). It will require tk8.6 to be rebuilt against the
new tcl8.6 as it also exports the "-lieee" link option through
tkConfig.sh and also removes the _LIB_VERSION symbol. A patch is also
attached for that.

Do you feel it is an acceptable way to proceed. Another alternative
would be to just declare the _LIB_VERSION symbol as optional in both
tcl8.6 and tk8.6, and handle the change through binNMUs as part of the
glibc 2.27 transition. Please feel free to suggest other options.

Thanks,
Aurelien
-------------- next part --------------
diff -Nru tcl8.6-8.6.8+dfsg/debian/libtcl8.6.symbols tcl8.6-8.6.8+dfsg/debian/libtcl8.6.symbols
--- tcl8.6-8.6.8+dfsg/debian/libtcl8.6.symbols
+++ tcl8.6-8.6.8+dfsg/debian/libtcl8.6.symbols
@@ -875,6 +875,5 @@
  TclpSetInitialEncodings at Base 8.6.0
  TclpUnloadFile at Base 8.6.2
  TclpUtfNcmp2 at Base 8.6.0
- _LIB_VERSION at Base 8.6.0
 #MISSING: 8.6.7# notifierInitMutex at Base 8.6.5
 #MISSING: 8.6.7# notifierMutex at Base 8.6.5
diff -Nru tcl8.6-8.6.8+dfsg/debian/patches/libeee.diff tcl8.6-8.6.8+dfsg/debian/patches/libeee.diff
--- tcl8.6-8.6.8+dfsg/debian/patches/libeee.diff
+++ tcl8.6-8.6.8+dfsg/debian/patches/libeee.diff
@@ -0,0 +1,73 @@
+Support for the "ieee" library (part of SVID specification) has been
+removed from glibc 2.27 onwards. While this is correctly autodetected
+in the configure script, it's better to already disable support for it
+as 1) it ends up in tclConfig.sh and 2) it slightly changes the symbol
+file.
+
+--- tcl8.6-8.6.8+dfsg.orig/unix/configure
++++ tcl8.6-8.6.8+dfsg/unix/configure
+@@ -4280,8 +4280,6 @@ $as_echo "#define TCL_CFGVAL_ENCODING \"
+     #--------------------------------------------------------------------
+     # On a few very rare systems, all of the libm.a stuff is
+     # already in libc.a.  Set compiler flags accordingly.
+-    # Also, Linux requires the "ieee" library for math to work
+-    # right (and it must appear before "-lm").
+     #--------------------------------------------------------------------
+ 
+     ac_fn_c_check_func "$LINENO" "sin" "ac_cv_func_sin"
+@@ -4291,40 +4289,6 @@ else
+   MATH_LIBS="-lm"
+ fi
+ 
+-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5
+-$as_echo_n "checking for main in -lieee... " >&6; }
+-if ${ac_cv_lib_ieee_main+:} false; then :
+-  $as_echo_n "(cached) " >&6
+-else
+-  ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lieee  $LIBS"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h.  */
+-
+-
+-int
+-main ()
+-{
+-return main ();
+-  ;
+-  return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+-  ac_cv_lib_ieee_main=yes
+-else
+-  ac_cv_lib_ieee_main=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+-    conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5
+-$as_echo "$ac_cv_lib_ieee_main" >&6; }
+-if test "x$ac_cv_lib_ieee_main" = xyes; then :
+-  MATH_LIBS="-lieee $MATH_LIBS"
+-fi
+-
+ 
+     #--------------------------------------------------------------------
+     # Interactive UNIX requires -linet instead of -lsocket, plus it
+--- tcl8.6-8.6.8+dfsg.orig/unix/tcl.m4
++++ tcl8.6-8.6.8+dfsg/unix/tcl.m4
+@@ -2475,12 +2475,9 @@ AC_DEFUN([SC_TCL_LINK_LIBS], [
+     #--------------------------------------------------------------------
+     # On a few very rare systems, all of the libm.a stuff is
+     # already in libc.a.  Set compiler flags accordingly.
+-    # Also, Linux requires the "ieee" library for math to work
+-    # right (and it must appear before "-lm").
+     #--------------------------------------------------------------------
+ 
+     AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+-    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+ 
+     #--------------------------------------------------------------------
+     # Interactive UNIX requires -linet instead of -lsocket, plus it
diff -Nru tcl8.6-8.6.8+dfsg/debian/patches/series tcl8.6-8.6.8+dfsg/debian/patches/series
--- tcl8.6-8.6.8+dfsg/debian/patches/series
+++ tcl8.6-8.6.8+dfsg/debian/patches/series
@@ -4,3 +4,4 @@
 confsearch.diff
 non-linux.diff
 manpages.diff
+libeee.diff
-------------- next part --------------
diff -Nru tk8.6-8.6.8/debian/control tk8.6-8.6.8/debian/control
--- tk8.6-8.6.8/debian/control
+++ tk8.6-8.6.8/debian/control
@@ -5,7 +5,7 @@
 Uploaders: Sergei Golovan <sgolovan at debian.org>
 Build-Depends: debhelper (>= 9.0.0), dpkg-dev (>= 1.16.1~), x11proto-core-dev,
  libx11-dev, libxt-dev, libxss-dev, libxext-dev, libxft-dev,
- tcl8.6-dev (>= 8.6.0-2)
+ tcl8.6-dev (>= 8.6.8+dfsg-3)
 Standards-Version: 4.1.3
 Homepage: http://www.tcl.tk/
 
diff -Nru tk8.6-8.6.8/debian/libtk8.6.symbols tk8.6-8.6.8/debian/libtk8.6.symbols
--- tk8.6-8.6.8/debian/libtk8.6.symbols
+++ tk8.6-8.6.8/debian/libtk8.6.symbols
@@ -439,4 +439,3 @@
  TkpTesttextCmd at Base 8.6.0
  TkpUseWindow at Base 8.6.0
  TkpWmSetState at Base 8.6.0
- _LIB_VERSION at Base 8.6.0


More information about the Pkg-tcltk-devel mailing list