Commit 734a63e0 authored by Gustavo Zacarias's avatar Gustavo Zacarias Committed by Peter Korsgaard
Browse files

vim: bump to version 7.4-333

parent 4ff03231
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
config BR2_PACKAGE_VIM
	bool "vim"
	depends on BR2_USE_MMU # uses fork()
	depends on BR2_USE_WCHAR
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
	help
@@ -15,6 +16,10 @@ config BR2_PACKAGE_VIM_RUNTIME
	default y
	help
	  Install VIM runtime (syntax highlighing + macros).
	  This option adds about 15MB of data to /usr/share/
	  This option adds about 11MB of data to /usr/share/

endif

comment "vim needs a toolchain w/ wchar"
	depends on !BR2_USE_WCHAR
	depends on BR2_USE_MMU
+0 −120
Original line number Diff line number Diff line
configure: use minimal LIBS during gettext check

In some configurations, vim fails to link correctly with messages such as:
edit.c:(.text+0x1614): undefined reference to `libintl_gettext'

In particular, this has been seen by the buildroot autobuilds (see [1]) but
has also been reported at [2] and [3].

In the bad case, the configure script says:
checking for NLS... gettext() works
In the good case, it says:
checking for NLS... gettext() works with -lintl

In the bad case, the system has libelf, vim detects that and takes it along
in $LIBS. Libelf needs libintl on this system, and so linking the test
program with -lelf will automatically take -lintl too. This causes configure
to think gettext() does not need libintl, while in reality it does.

In the good case, libelf is not present and thus not used. The first
configure test for gettext fails, and then configure retries with -lintl
(which succeeds).

Until now, there isn't really a problem. In both cases, you could link
correctly. In the 'bad' case, libintl is implicitly taken through libelf, in
the second case it is explicitly taken.

The real problem occurs because configure also tests whether the linker
supports --as-needed and uses it when possible, instead of the link.sh
script. However, --as-needed seems to cause libintl NOT to be taken in the
bad case, causing the undefined references to libintl_gettext.

This patch changes the configure script so that the gettext check does not
use additional libraries such as libelf. The test program is linked either
with nothing, or with libintl alone. This will cause libintl to
be added explicitly to LIBS, when needed.

[1] http://autobuild.buildroot.net/results/21b5a910e6a27fa1cb12d0002ffed7e6ed9d6c83/
[2] http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2012-November/243930.html
[3] http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2012-May/234184.html


Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Upstream-status: accepted (http://article.gmane.org/gmane.editors.vim.devel/43528)

---
 src/auto/configure |  11 ++++++-----
 src/configure.in   |  13 +++++++++----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/auto/configure b/src/auto/configure
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -12271,6 +12271,8 @@ fi
   if test -f po/Makefile; then
     have_gettext="no"
     if test -n "$MSGFMT"; then
+      olibs=$LIBS
+      LIBS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
@@ -12284,10 +12286,9 @@ gettext("Test");
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
-$as_echo "gettext() works" >&6; }; have_gettext="yes"
-else
-  olibs=$LIBS
-	  LIBS="$LIBS -lintl"
+$as_echo "gettext() works" >&6; }; have_gettext="yes"; LIBS=$olibs;
+else
+	  LIBS="-lintl"
 	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
@@ -12301,7 +12302,7 @@ gettext("Test");
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
-$as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes"
+$as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes"; LIBS="$olibs -lintl";
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
 $as_echo "gettext() doesn't work" >&6; };
diff --git a/src/configure.in b/src/configure.in
--- a/src/configure.in
+++ b/src/configure.in
@@ -3484,6 +3484,9 @@ if test "$MANDEF" = "man -s"; then
 fi
 
 dnl Check if gettext() is working and if it needs -lintl
+dnl We take care to base this on an empty LIBS: on some systems libelf would be
+dnl in LIBS and implicitly take along libintl. The final LIBS would then not
+dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
 AC_MSG_CHECKING(--disable-nls argument)
 AC_ARG_ENABLE(nls,
 	[  --disable-nls           Don't support NLS (gettext()).], ,
@@ -3502,16 +3505,18 @@ if test "$enable_nls" = "yes"; then
   if test -f po/Makefile; then
     have_gettext="no"
     if test -n "$MSGFMT"; then
+      olibs=$LIBS
+      LIBS=""
       AC_TRY_LINK(
 	[#include <libintl.h>],
 	[gettext("Test");],
-	AC_MSG_RESULT([gettext() works]); have_gettext="yes",
-	  olibs=$LIBS
-	  LIBS="$LIBS -lintl"
+	AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
+	  LIBS="-lintl"
 	  AC_TRY_LINK(
 	      [#include <libintl.h>],
 	      [gettext("Test");],
-	      AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
+	      AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
+	      LIBS="$olibs -lintl",
 	      AC_MSG_RESULT([gettext() doesn't work]);
 	      LIBS=$olibs))
     else
+2 −2
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@

VIM_SITE = https://vim.googlecode.com/hg
VIM_SITE_METHOD = hg
# 7.3 release patchlevel 762
VIM_VERSION = 699f8d8f096d
# 7.4 release patchlevel 333
VIM_VERSION = 8ae50e3ef8bf
VIM_DEPENDENCIES = ncurses $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext)
VIM_SUBDIR = src
VIM_CONF_ENV = vim_cv_toupper_broken=no \