Opened 16 years ago
Closed 15 years ago
#17602 closed defect (fixed)
strigi: invalid conversion from 'const char**' to 'char**'
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | clubjuggler@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.7.0 |
Keywords: | Cc: | gui-dos (Guido Soranzio), jmroot (Joshua Root), 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 (1)
Change History (17)
comment:1 Changed 16 years ago by tobypeterson
comment:2 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
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 16 years ago by jmroot (Joshua Root)
Cc: | jmr@… added |
---|---|
Resolution: | → fixed |
Status: | new → closed |
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:6 follow-up: 7 Changed 15 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 Changed 15 years ago by mf2k (Frank Schima)
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 15 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 15 years ago by mf2k (Frank Schima)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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 15 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 15 years ago by ryandesign (Ryan Carsten Schmidt)
Is libiconv installed with the universal variant, and if so, for which architectures?
comment:12 Changed 15 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 15 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 15 years ago by etphipp@…
Attachment: | Portfile-strigi.diff added |
---|
Patch to override paths to iconv, xml2
comment:14 Changed 15 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:16 Changed 15 years ago by jmroot (Joshua Root)
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Changed the fix to respect $prefix and applied in r55989.
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...