Opened 15 years ago

Closed 15 years ago

#20415 closed defect (fixed)

doxygen fails, attempting to link against system libiconv

Reported by: conradwt (Conrad Taylor) Owned by: cssdev
Priority: Normal Milestone:
Component: ports Version: 1.8.0
Keywords: snowleopard Cc: xellos@…, scott@…, lhunath@…, thedoobs@…, stefan.janecek@…, luis.beca@…, permezel@…, faisal.moledina@…, wolf.st.kappesser@…, dackze+macports@…, petr@…, gt@…, tumdum@…, eilemann@…
Port: doxygen

Description (last modified by tobypeterson)

doxygen port failed to build to the below:

--->  Building doxygen
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_textproc_doxygen/work/doxygen-1.5.9" && /usr/bin/make -j2 all " returned error 2
Command output: vhdldocgen.cpp:1605: warning: deprecated conversion from string constant to 'char*'
vhdldocgen.cpp:1613: warning: deprecated conversion from string constant to 'char*'
vhdldocgen.cpp:1615: warning: deprecated conversion from string constant to 'char*'
vhdldocgen.cpp:1622: warning: deprecated conversion from string constant to 'char*'
vhdldocgen.cpp:1624: warning: deprecated conversion from string constant to 'char*'
vhdldocgen.cpp: In static member function 'static void VhdlDocGen::writeStringLink(const MemberDef*, QCString, OutputList&)':
vhdldocgen.cpp:2447: warning: deprecated conversion from string constant to 'char*'
/usr/bin/g++-4.2 -I/opt/local/include -c -pipe -D__FreeBSD__=6 -Wall -W -O2 -I../qtools -I../libpng -I../libmd5 -o ../objects/vhdlscanner.o vhdlscanner.cpp
/usr/bin/g++-4.2 -I/opt/local/include -c -pipe -D__FreeBSD__=6 -Wall -W -O2 -I../qtools -I../libpng -I../libmd5 -o ../objects/xmldocvisitor.o xmldocvisitor.cpp
vhdlscanner.l: In function 'void parseFunctionProto()':
vhdlscanner.l:412: warning: suggest a space before ';' or explicit braces around empty body in 'while' statement
/usr/bin/g++-4.2 -I/opt/local/include -c -pipe -D__FreeBSD__=6 -Wall -W -O2 -I../qtools -I../libpng -I../libmd5 -o ../objects/xmlgen.o xmlgen.cpp
rm -f ../lib/libdoxygen.a
ar cq ../lib/libdoxygen.a ../objects/ce_lex.o ../objects/ce_parse.o ../objects/classdef.o ../objects/classlist.o ../objects/cmdmapper.o ../objects/code.o ../objects/commentcnv.o ../objects/commentscan.o ../objects/cppvalue.o ../objects/debug.o ../objects/defgen.o ../objects/declinfo.o ../objects/defargs.o ../objects/define.o ../objects/definition.o ../objects/diagram.o ../objects/dirdef.o ../objects/docparser.o ../objects/docsets.o ../objects/doctokenizer.o ../objects/dot.o ../objects/doxygen.o ../objects/entry.o ../objects/filedef.o ../objects/filename.o ../objects/formula.o ../objects/ftvhelp.o ../objects/fortrancode.o ../objects/fortranscanner.o ../objects/groupdef.o ../objects/htags.o ../objects/htmldocvisitor.o ../objects/htmlgen.o ../objects/htmlhelp.o ../objects/indexlog.o ../objects/image.o ../objects/index.o ../objects/instdox.o ../objects/language.o ../objects/latexdocvisitor.o ../objects/latexgen.o ../objects/layout.o ../objects/logos.o ../objects/mandocvisitor.o ../objects/mangen.o ../objects/marshal.o ../objects/memberdef.o ../objects/membergroup.o ../objects/memberlist.o ../objects/membername.o ../objects/message.o ../objects/msc.o ../objects/namespacedef.o ../objects/objcache.o ../objects/outputgen.o ../objects/outputlist.o ../objects/pagedef.o ../objects/perlmodgen.o ../objects/pngenc.o ../objects/pre.o ../objects/pycode.o ../objects/pyscanner.o ../objects/qhp.o ../objects/qhpxmlwriter.o ../objects/reflist.o ../objects/rtfdocvisitor.o ../objects/rtfgen.o ../objects/rtfstyle.o ../objects/scanner.o ../objects/searchindex.o ../objects/store.o ../objects/tagreader.o ../objects/textdocvisitor.o ../objects/translator.o ../objects/util.o ../objects/version.o ../objects/vhdlcode.o ../objects/vhdldocgen.o ../objects/vhdlscanner.o ../objects/xmldocvisitor.o ../objects/xmlgen.o 
ranlib ../lib/libdoxygen.a
/usr/bin/make -f Makefile.doxygen    PERL=/opt/local/bin/perl all
/usr/bin/g++-4.2 -I/opt/local/include -c -pipe -D__FreeBSD__=6 -Wall -W -O2 -I../qtools -I../libpng -I../libmd5 -I. -o ../objects/main.o main.cpp
/usr/bin/g++-4.2 -Wl,-search_paths_first -o ../bin/doxygen ../objects/main.o  -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5 -liconv
Undefined symbols:
  "_libiconv_open", referenced from:
      _portable_iconv_open in libdoxycfg.a(portable_c.o)
  "_libiconv", referenced from:
      _portable_iconv in libdoxycfg.a(portable_c.o)
  "_libiconv_close", referenced from:
      _portable_iconv_close in libdoxycfg.a(portable_c.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [../bin/doxygen] Error 1
make[1]: *** [all] Error 2
make: *** [all] Error 2

Error: The following dependencies failed to build: doxygen
Error: Status 1 encountered during processing.


Change History (25)

comment:1 Changed 15 years ago by mf2k (Frank Schima)

Owner: changed from macports-tickets@… to css@…

comment:2 Changed 15 years ago by cssdev

Status: newassigned

Is this a duplicate of #19851? Can you verify that this is the latest version of the port? This iconv stuff changed again?

comment:3 Changed 15 years ago by conradwt (Conrad Taylor)

Yes, I was attempting to install doxygen version 1.5.9.

comment:4 Changed 15 years ago by tobypeterson

Looks like it is detecting libiconv_open (probably in macports' libiconv), but attempting to link against the system iconv, which doesn't contain the deprecated libiconv* symbols

comment:5 Changed 15 years ago by tobypeterson

Description: modified (diff)
Summary: doxygen failed to builddoxygen fails, attempting to link against system libiconv

comment:6 Changed 15 years ago by cssdev

Is this something specific to an unreleased version of MacOS X? I'm unable to duplicate the problem with Leopard.

It should hopefully be a matter of adding TMAKE_LFLAGS = -L{$prefix}/lib to the appropriate tmake.conf.

comment:7 in reply to:  6 Changed 15 years ago by tobypeterson

Replying to css@…:

Is this something specific to an unreleased version of MacOS X? I'm unable to duplicate the problem with Leopard.

It should hopefully be a matter of adding TMAKE_LFLAGS = -L{$prefix}/lib to the appropriate tmake.conf.

64-bit libiconv doesn't contain the deprecated symbols.

comment:8 Changed 15 years ago by xellos@…

Cc: xellos@… added

Cc Me!

comment:9 Changed 15 years ago by scott@…

Cc: scott@… added

Cc Me!

comment:10 Changed 15 years ago by lhunath@…

Cc: lhunath@… added

Cc Me!

comment:11 Changed 15 years ago by thedoobs@…

Cc: thedoobs@… added

Cc Me!

comment:12 Changed 15 years ago by stefan.janecek@…

Cc: stefan.janecek@… added

Cc Me!

comment:13 Changed 15 years ago by luis.beca@…

Cc: luis.beca@… added

Cc Me!

comment:14 Changed 15 years ago by permezel@…

Cc: permezel@… added

Cc Me!

comment:15 Changed 15 years ago by faisal.moledina@…

Cc: faisal.moledina@… added

Cc Me!

comment:16 Changed 15 years ago by tobypeterson

Cc: wolf.st.kappesser@… added

comment:17 Changed 15 years ago by tobypeterson

FYI - this should still be fixable without access to Snow Leopard. Just check the linking of the final build product (using otool -L) and make sure it's not linking against the system libiconv. That's a bug regardless of the OS version.

comment:18 Changed 15 years ago by dackze+macports@…

Cc: dackze+macports@… added

Cc Me!

comment:19 Changed 15 years ago by cssdev

I've been able to reproduce this error. I'll have to look into it after I return from travel. Doxygen needs to configure to include -L${prefix}/lib on its link line.

comment:20 Changed 15 years ago by petr@…

Cc: petr@… added

Cc Me!

comment:21 Changed 15 years ago by gt@…

Cc: gt@… added

Cc Me!

comment:22 Changed 15 years ago by tumdum@…

Cc: tumdum@… added

Cc Me!

comment:23 Changed 15 years ago by eilemann@…

Cc: eilemann@… added

Cc Me!

comment:24 in reply to:  description Changed 15 years ago by hans-bernd.duerr@…

Hello!

I'm very new to this community, but nevertheless I figured out a way to correct this bug:

  1. Install doxygen and get the error-message
  1. Perform a search for the packages, that macports downloaded - the easiest way is to search for the file "libdoxycfg.a"

find /opt/local/ | grep libdoxycfg.a

(my package directory is in

"/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_textproc_doxygen/work/doxygen-1.5.9/" )

  1. Go into the directory ./src
  1. Change the Makefile.doxygen by adding ${prefix}/include to the line INCPATH

e.g. INCPATH = -I../qtools -I../libpng -I../libmd5 -I. -I/opt/local/include

and by adding ${prefix}/lib to the line LIBS

e.g. LIBS = -L../lib -L/opt/local/lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5 -liconv

  1. Perform again

sudo port install doxygen

I hope this helps and maybe there is someone who can write an appropriate patch or even change the package.

comment:25 Changed 15 years ago by tobypeterson

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.