On 2015-05-26 02:43 +0200, Thomas Dickey wrote:

> ----- Original Message -----
> | From: "Sven Joachim" <svenj...@gmx.de>
> | To: "Helmut Grohne" <hel...@subdivi.de>
> | Cc: "Thomas Dickey" <dic...@his.com>, 786...@bugs.debian.org
> | Sent: Monday, May 25, 2015 8:31:29 AM
> | Subject: Bug#786436: ncurses FTBFS: configure loops
> | 
> | Am 25.05.2015 um 13:43 schrieb Helmut Grohne:
> | 
> | > On Mon, May 25, 2015 at 01:37:17PM +0200, Sven Joachim wrote:
> | >> Since the pkg-config files are only created at "make
> | >> install.libs", we
> | >> currently need to install the library into a temporary location.
> | >>  I've
> | >> come up with the following patch:
> | >> 
> | >> --8<---------------cut here---------------start------------->8---
> | >> diff --git a/debian/rules b/debian/rules
> | >> index a52135b..c3b7d6e 100755
> | >> --- a/debian/rules
> | >> +++ b/debian/rules
> | >> @@ -275,8 +275,9 @@ $(wobjdir-32)/config.status:
> | >> config.guess-stamp
> | >>  
> | >>  $(objdir-test)/config.status: build-wide config.guess-stamp
> | >>          test -d $(objdir-test) || mkdir $(objdir-test)
> | >> -        cd $(objdir-test) && CFLAGS="$(CFLAGS)" $(srcdir)/test/configure
> | >> \
> | >> -                $(CONFARGS-TEST)
> | >> +        cd $(objdir-test) && CFLAGS="$(CFLAGS)" \
> | >> +
> | >>          
> PKG_CONFIG_LIBDIR=$(wobjdir)/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
> | >> \
> | >> +                $(srcdir)/test/configure $(CONFARGS-TEST)
> | >>  
> | >>  build-arch build-indep: build
> | >>  
> | >> @@ -308,8 +309,7 @@ build-debug: $(objdir-debug)/config.status
> | >>  build-wide: $(wobjdir)/config.status
> | >>          cd $(wobjdir) && $(MAKE)
> | >>          # needed for building the examples
> | >> -        mv $(wobjdir)/lib/libncursesw.so
> | >> $(wobjdir)/lib/libncursesw.so.saved
> | >> -        echo "INPUT(libncursesw.so.5 -ltinfo)" >
> | >> $(wobjdir)/lib/libncursesw.so
> | >> +        $(MAKE) -C $(wobjdir) DESTDIR=$(wobjdir) install.libs
> | >>          touch $@
> | >>  
> | >>  build-wide-static: $(wobjdir-static)/config.status
> | >> --8<---------------cut here---------------end--------------->8---
> | >
> | > If ncurses uses any external pkg-config files, then this patch
> | > breaks
> | > cross building, because the pkg-config cross wrapper only sets
> | > PKG_CONFIG_LIBDIR when it is unset.
> | >
> | > Given that libgpm-dev does not ship a .pc file, it seems likely
> | > that
> | > this is not the case.
> | 
> | It surely is not, but the cross build is broken anyway:
> | 
> | ,----
> | | checking for specific curses-directory...
> | | /tmp/ncurses-5.9+20150516/obj-wide
> | | checking for specified curses library type... ncursesw
> | | checking for multibyte character support... yes
> | | checking pkg-config for ncursesw... yes
> | | checking if the ncursesw package files work... configure: error:
> | | cannot run test program while cross compiling
> | `----
> | 
> | Sounds like something for Thomas to look at.
>
> This (cannot run...) at least is a problem in something I have changed
> recently.
>
> The apparent cause of the infinite loop
> (seen here by disabling the pkg-config and ncurses*-config checks)
> is a while-loop in CF_ADD_INCDIR, which has been (it seems)
> waiting since 2007 for someone to notice a problem...

The 20150530 patch fixes the "cannot run test program while cross
compiling" error, but cross-building is still broken. :-(  Here is a
diff of the respective Makefiles for the test programs between the
working native amd64 build and the failing armhf cross build:

--8<---------------cut here---------------start------------->8---
--- Makefile-amd64      2015-06-02 08:41:20.237128650 +0200
+++ Makefile-armhf      2015-06-02 08:02:12.830544856 +0200
@@ -75,11 +75,11 @@
 CTAGS          = ctags
 ETAGS          = etags
 
-CC             = gcc
-CPP            = gcc -E
+CC             = arm-linux-gnueabihf-gcc
+CPP            = arm-linux-gnueabihf-gcc -E
 
 CFLAGS         = -g -O2 -fstack-protector-strong -Wformat 
-Werror=format-security 
-CPPFLAGS       = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H -D_FORTIFY_SOURCE=2 
-D_GNU_SOURCE -I/tmp/ncurses-5.9+20150530/obj-wide/include -D_GNU_SOURCE 
-I/usr/include/ -I/usr/include/ncursesw 
+CPPFLAGS       = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H -D_FORTIFY_SOURCE=2 
-D_GNU_SOURCE -I/tmp/ncurses-5.9+20150530/obj-wide/include
 
 CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
 
@@ -109,7 +109,7 @@
 LDFLAGS_PROFILE        = $(LDFLAGS) $(CFLAGS_PROFILE)
 LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) 
 
-TEST_ARGS      =   -lformw -lmenuw -lpanelw -lncursesw -ltinfo 
+TEST_ARGS      =   -lformw -lmenuw -lpanelw 
 
 # use these for linking with all of the libraries
 LIBS_DEFAULT   = $(TEST_ARGS)  $(TEST_LIBS) $(MATH_LIB)
--8<---------------cut here---------------end--------------->8---

As you can see, "-lncursesw -ltinfo" is missing, which of course leads
to unresolved symbols trying to link the programs.  The following lines
from config.log seem to be relevant:

,----
| configure:6075: checking pkg-config for ncursesw
| configure:6078: result: yes
| configure:6081: checking if the ncursesw package files work
| configure:6119: arm-linux-gnueabihf-gcc -o conftest -g -O2 
-fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 
-D_GNU_SOURCE -I/tmp/ncurses-5.9+20150530/obj-wide/include -D_GNU_SOURCE 
-I/usr/include/ -I/usr/include/ncursesw  
-L/tmp/ncurses-5.9+20150530/obj-wide/lib -Wl,-z,relro conftest.c 
-L/usr/lib/arm-linux-gnueabihf -lncursesw -ltinfo  >&5
| configure:6122: $? = 0
| configure:6125: test -s conftest
| configure:6128: $? = 0
| configure:6167: result: unknown
`----

The native build has this instead:

,----
| configure:6075: checking pkg-config for ncursesw
| configure:6078: result: yes
| configure:6081: checking if the ncursesw package files work
| configure:6119: gcc -o conftest -g -O2 -fstack-protector-strong -Wformat 
-Werror=format-security -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE 
-I/tmp/ncurses-5.9+20150530/obj-wide/include -D_GNU_SOURCE -I/usr/include/ 
-I/usr/include/ncursesw  -L/tmp/ncurses-5.9+20150530/obj-wide/lib -Wl,-z,relro 
conftest.c -lncursesw -ltinfo  >&5
| configure:6122: $? = 0
| configure:6125: test -s conftest
| configure:6128: $? = 0
| configure:6141: gcc -o conftest -g -O2 -fstack-protector-strong -Wformat 
-Werror=format-security -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE 
-I/tmp/ncurses-5.9+20150530/obj-wide/include -D_GNU_SOURCE -I/usr/include/ 
-I/usr/include/ncursesw  -L/tmp/ncurses-5.9+20150530/obj-wide/lib -Wl,-z,relro 
conftest.c -lncursesw -ltinfo  >&5
| configure: In function 'main':
| configure:6137:18: warning: initialization discards 'const' qualifier from 
pointer target type
| configure:6144: $? = 0
| configure:6146: ./conftest
| configure:6149: $? = 0
| configure:6167: result: yes
| configure:13107: checking for new_panel in -lpanelw
`----

Cheers,
       Sven


-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to