Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale::

@umgfoin said in Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale:::

Additionally I needed:

ncurses-devel

in common/ECLogger.cpp:
#include <climits>
(defines UINT_MAX)

in common/ustringutil.cpp l. 1365/1366:
const_cast <unsigned char>

Wasn’t aware of the ncurses dependency. Wanted to remove it from my system to test out, but took out several more dependencies.

The following 4 packages are going to be REMOVED:
    libxml2-devel ncurses-devel php5-devel readline-devel

We are making libicu a hard requirement now, so in the future this error message you experienced should be gone and instead configure will complain about missing libicu-devel.

Thanks for reminding me of this problem.

Bo

Hi Bo,
with today’s master we have a new (or related) problem building kopano-stats:

ld: ECtools/stats/kopano_stats-stats.o: undefined reference to symbol ‘wtimeout’
//lib64/libtinfo.so.5: error adding symbols: DSO missing from command line

make  all-recursive
make[1]: Verzeichnis „/usr/src/kopano/kopanocore“ wird betreten
Making all in .
make[2]: Verzeichnis „/usr/src/kopano/kopanocore“ wird betreten
  CXXLD  kopano-stats
/opt/rh/devtoolset-6/root/usr/libexec/gcc/x86_64-redhat-linux/6.2.1/ld: ECtools/stats/kopano_stats-stats.o: undefined reference to symbol 'wtimeout'
//lib64/libtinfo.so.5: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

@umgfoin said in Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale:::

ld: ECtools/stats/kopano_stats-stats.o: undefined reference to symbol ‘wtimeout’
//lib64/libtinfo.so.5: error adding symbols: DSO missing from command line

From what I can see this one should come from ncurses. I compiled the master yesterday without problems. When running configure do you see?

ncurses libs	:	-L/usr/lib64/ncurses6 -lncursesw -ltinfo

Bo

My entry looks different:

ncurses libs    :       -lncursesw

If I manually add -ltinfo to NCURSES_LIBS = in Makefile, it builds.

What does the following commands give you?

11:02:47 bo@bo-suse ~/src/kopanocore (master) > ncursesw5-config --libs
-lncursesw -ltinfo
11:02:50 bo@bo-suse ~/src/kopanocore (master) > ncursesw6-config --libs
-L/usr/lib64/ncurses6 -lncursesw -ltinfo

Assume not the same as mine?

Bo

Yes, just -lncursesw

[tadao@ando kopanocore]# ncursesw5-config --libs
-lncursesw
[tadao@ando kopanocore]# ncursesw6-config --libs
-bash: ncursesw6-config: Kommando nicht gefunden.

“Kommando nicht gefunden” ~ command not found ;-)

@umgfoin said in Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale:::

Yes, just -lncursesw

[tadao@ando kopanocore]# ncursesw5-config --libs
-lncursesw
[tadao@ando kopanocore]# ncursesw6-config --libs
-bash: ncursesw6-config: Kommando nicht gefunden.

“Kommando nicht gefunden” ~ command not found ;-)

Yeah that’s the problem. But it used to work?

Bo

@bosim
Yes, used to work 2 days ago.

My findings:
libncurses links against libltinfo. If we don’t/ can’t explicitely specify this dependancy, newer toolchains can be called with ld-flag --copy-dt-needed-entries. As stated here, implicitely satisfying deep-link dependencies is no longer default behaviour for ld. The above flag forces this behaviour.

With option LDFLAGS = -Xlinker --copy-dt-needed-entries in Makefile, the dependency is correctly resolved, again.
Atleast valid for gcc version 6.2.1 20160916 (Red Hat 6.2.1-3) (GCC)
++umgfoin.

@umgfoin said in Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale:::

Yes, used to work 2 days ago.

I looked for commits related to configure.ac, but couldn’t find anything that changed that. Did you get any updates from your distribution?

Bo

@bosim said:

Did you get any updates from your distribution?

Nothing obvious - since 14.03.:

MariaDB-xxx,
php71,
perl-XML-LibXML,
perl-Test-Harness

@umgfoin said in Building kc master: ./.libs/libmapi.so: undefined reference to `KC::ECLocale:::

@bosim said:

Did you get any updates from your distribution?

Nothing obvious - since 14.03.:

MariaDB-xxx,
php71,
perl-XML-LibXML,
perl-Test-Harness

That’s wierd, I will create a JIRA ticket to investigate.
https://jira.kopano.io/browse/KC-600

long ago but for reference: fixed upstream. https://bugs.centos.org/view.php?id=6668

Hi @mkromer ,
thanks - read that, too, but though differently stated in the rel-notes of ncurses-5.7-4.20090207.el6, we still get:

[hias@wurzler kopano-core]# ncurses5-config --libs
-lncurses

[hias@wurzler kopano-core]# ncursesw5-config --libs
-lncursesw

[hias@wurzler kopano-core]# pkg-config ncurses --libs
-lncurses

[hias@wurzler kopano-core]# ncurses5-config --version
5.7.20090207

A working fix is switching to ncurses-header instead of curses.h in configure.ac:

AC_CHECK_HEADERS([ncurses.h])
versus
AC_CHECK_HEADERS([curses.h])

++umgfoin.