New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #17602 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

strigi: invalid conversion from 'const char**' to 'char**'

Reported by: ryandesign@… Owned by: clubjuggler@…
Priority: Normal Milestone:
Component: ports Version: 1.7.0
Keywords: Cc: gui_dos@…, jmr@…, p.maedel@…, florian.feldhaus@…
Port: strigi

Description

strigi 0.5.10 doesn't compile on Mac OS X 10.4.11 Intel:

rschmidt@seven strigi $ port install
--->  Fetching strigi
--->  Attempting to fetch strigi-0.5.10.tar.bz2 from http://internap.dl.sourceforge.net/strigi
--->  Verifying checksum(s) for strigi
--->  Extracting strigi
--->  Applying patches to strigi
--->  Configuring strigi
--->  Building strigi
Error: Target org.macports.build returned: shell command " cd "/mp/var/macports/build/_Users_rschmidt_macports_dports_devel_strigi/work/strigi-0.5.10" && nice -n 10 make all " returned error 2
Command output: [ 10%] Building CXX object src/streams/CMakeFiles/streams.dir/tarinputstream.o
[ 11%] Building CXX object src/streams/CMakeFiles/streams.dir/textutils.o
[ 11%] Building CXX object src/streams/CMakeFiles/streams.dir/zipinputstream.o
[ 12%] Building CXX object src/streams/CMakeFiles/streams.dir/processinputstream.o
[ 12%] Building CXX object src/streams/CMakeFiles/streams.dir/strigi/compat.o
[ 13%] Building CXX object src/streams/CMakeFiles/streams.dir/strigi/fnmatch.o
[ 13%] Building CXX object src/streams/CMakeFiles/streams.dir/strigi/stgdirent.o
Linking CXX shared library libstreams.dylib
[ 13%] Built target streams
Scanning dependencies of target oletest
[ 13%] Building CXX object src/streams/CMakeFiles/oletest.dir/oletest.o
Linking CXX executable oletest
[ 13%] Built target oletest
Scanning dependencies of target testpt
[ 13%] Building CXX object src/streams/CMakeFiles/testpt.dir/testpt.o
[ 14%] Building CXX object src/streams/CMakeFiles/testpt.dir/processinputstream.o
Linking CXX executable testpt
[ 14%] Built target testpt
Scanning dependencies of target pdfstream
[ 14%] Building CXX object src/streams/pdf/CMakeFiles/pdfstream.dir/pdfparser.o
Linking CXX static library libpdfstream.a
[ 14%] Built target pdfstream
Scanning dependencies of target streamanalyzer
[ 15%] Building CXX object src/streamanalyzer/CMakeFiles/streamanalyzer.dir/analysisresult.o
/mp/var/macports/build/_Users_rschmidt_macports_dports_devel_strigi/work/strigi-0.5.10/src/streamanalyzer/analysisresult.cpp: In member function 'int32_t Latin1Converter::_fromLatin1(char*&, const char*, size_t)':
/mp/var/macports/build/_Users_rschmidt_macports_dports_devel_strigi/work/strigi-0.5.10/src/streamanalyzer/analysisresult.cpp:91: error: invalid conversion from 'const char**' to 'char**'
/mp/var/macports/build/_Users_rschmidt_macports_dports_devel_strigi/work/strigi-0.5.10/src/streamanalyzer/analysisresult.cpp:91: error:   initializing argument 2 of 'size_t libiconv(void*, char**, size_t*, char**, size_t*)'
make[2]: *** [src/streamanalyzer/CMakeFiles/streamanalyzer.dir/analysisresult.o] Error 1
make[1]: *** [src/streamanalyzer/CMakeFiles/streamanalyzer.dir/all] Error 2
make: *** [all] Error 2

Error: Status 1 encountered during processing.
$

0.5.7 had the same problem.

This looks like the age-old differing libiconv implementation error. Different versions of libiconv implement the interface differently (sometimes the same version of libiconv implements the interface differently on different platforms or in different situations). The software needs to detect which implementation is in place on the system at hand, and use that one.

Attachments

Portfile-strigi.diff (824 bytes) - added by etphipp@… 4 years ago.
Patch to override paths to iconv, xml2

Change History

comment:1 Changed 4 years ago by toby@…

It looks like it has a configure check for it, so I'm not sure why this ends up failing. I guess it could be that the configure script (well, cmake in this case) looks at /usr/include/iconv.h (which I believe is busted on Tiger), but it uses /opt/local/include/iconv.h while building...

comment:2 Changed 4 years ago by ryandesign@…

That's possible. I don't know that /usr/include/iconv.h (which is copyright 2003) is busted on Tiger, but it is a different file than /opt/local/include/iconv.h (which is copyright 2006).

comment:3 Changed 4 years ago by jmr@…

  • Cc jmr@… added
  • Status changed from new to closed
  • Resolution set to fixed

I think this was due to an undeclared dependency on libxml2, which caused strigi to use the system libxml2 when the port was not installed. Libxml2 uses libiconv, and thus, disaster.

I've added this dep and a few others in r45985.

comment:4 Changed 4 years ago by anonymous

  • Milestone Port Bugs deleted

Milestone Port Bugs deleted

comment:5 Changed 4 years ago by p.maedel@…

  • Cc p.maedel@… added

Cc Me!

comment:6 follow-up: ↓ 7 Changed 4 years ago by p.maedel@…

Having exactly the same error again with 0.6.3

Please reopen & fix

/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_strigi/work/strigi-0.6.3/src/streamanalyzer/analysisresult.cpp: In member function 'int32_t Latin1Converter::_fromLatin1(char*&, const char*, size_t)':
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_strigi/work/strigi-0.6.3/src/streamanalyzer/analysisresult.cpp:91: error: invalid conversion from 'const char**' to 'char**'
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_strigi/work/strigi-0.6.3/src/streamanalyzer/analysisresult.cpp:91: error:   initializing argument 2 of 'size_t libiconv(void*, char**, size_t*, char**, size_t*)'
make[2]: *** [src/streamanalyzer/CMakeFiles/streamanalyzer.dir/analysisresult.cpp.o] Error 1
make[1]: *** [src/streamanalyzer/CMakeFiles/streamanalyzer.dir/all] Error 2
make: *** [all] Error 2

comment:7 in reply to: ↑ 6 Changed 4 years ago by macsforever2000@…

Replying to p.maedel@…:

Having exactly the same error again with 0.6.3

wfm. Please run the following:

sudo port selfupdate
sudo port upgrade outdated
sudo port clean strigi
sudo port install strigi

If it still does not work for you, please supply the version of Mac OS X and Xcode you are running.

comment:8 Changed 4 years ago by p.maedel@…

ty, what a fast response!

pmaedel$ sudo port selfupdate

MacPorts base version 1.710 installed
Downloaded MacPorts base version 1.710

The MacPorts installation is not outdated so it was not updated
pmaedel$ sudo port upgrade outdated
Error: No ports found
pmaedel$ sudo port clean strigi
--->  Cleaning strigi

But install finishes with same error again.

OS X is v10.5.7
XCode is v3.1.3

thanks again!

comment:9 Changed 4 years ago by macsforever2000@…

  • Status changed from closed to reopened
  • Resolution fixed deleted

Do you have an older version of strigi active already? If so, try to deactivate it and then run the install.

sudo port deactivate strigi
sudo port clean strigi
sudo port install strigi

comment:10 Changed 4 years ago by p.maedel@…

No, this is a fresh install of macports. actually the complete OS X installation is only half a year old so there should not be to much obfuscation.

Error: port deactivate failed: Registry error: strigi not registered as installed & active.

comment:11 Changed 4 years ago by ryandesign@…

Is libiconv installed with the universal variant, and if so, for which architectures?

comment:12 Changed 4 years ago by p.maedel@…

libiconv is not installed as universal. this is an intel machine. strange thing is, a friend was able to install strigi on the same kind of machine. so I uninstalled macports & xcode completely and tried it all over again - with the same result.

comment:13 Changed 4 years ago by etphipp@…

I am getting the same build error with 0.6.3 and believe the trouble is cmake's configure of strigi is picking up the system libiconv (which has const char as the second argument to libiconv()):

$ grep ICONV CMakeCache.txt

ICONV_INCLUDE_DIR:PATH=/Library/Frameworks/libiconv.framework/Headers ICONV_LIBRARIES:FILEPATH=/Library/Frameworks/libiconv.framework Advanced flag for variable: ICONV_INCLUDE_DIR ICONV_INCLUDE_DIR-ADVANCED:INTERNAL=1 Advanced flag for variable: ICONV_LIBRARIES ICONV_LIBRARIES-ADVANCED:INTERNAL=1 Advanced flag for variable: ICONV_SECOND_ARGUMENT_IS_CONST ICONV_SECOND_ARGUMENT_IS_CONST-ADVANCED:INTERNAL=1 Test ICONV_SECOND_ARGUMENT_IS_CONST ICONV_SECOND_ARGUMENT_IS_CONST:INTERNAL=1

However the build of strigi is trying to pull in the header from /opt/local/include (where the second argument to libiconv() is char). A solution is to override the path to libiconv in the cmake configure:

configure.args-append -DICONV_INCLUDE_DIR:PATH=/opt/local/include configure.args-append -DICONV_LIBRARIES:FILEPATH=/opt/local/lib/libiconv.dylib configure.args-append -DLIBXML2_INCLUDE_DIR:PATH=/opt/local/include/libxml2 configure.args-append -DLIBXML2_LIBRARIES:FILEPATH=/opt/local/lib/libxml2.dylib

The last two fix a similar error that crops up later regarding libxml2. With these changes, 0.6.3 now builds on my machine. A diff of the portfile is attached.

Changed 4 years ago by etphipp@…

Patch to override paths to iconv, xml2

comment:14 Changed 4 years ago by florian.feldhaus@…

The supplied patch solved the problem for me. As long as it's not applied, you can download the patch and apply it to /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/strigi/Portfile

comment:15 Changed 4 years ago by florian.feldhaus@…

  • Cc florian.feldhaus@… added

Cc Me!

comment:16 Changed 4 years ago by jmr@…

  • Status changed from reopened to closed
  • Resolution set to fixed

Changed the fix to respect $prefix and applied in r55989.

Note: See TracTickets for help on using tickets.