Ticket #28162 (closed defect: fixed)
mlt @0.5.10, Revision 1 fails to compile with "Undefined symbols: "_libiconv_close", referenced from:" _iconv_utf8 in producer_pango.o
| Reported by: | mail@… | Owned by: | ryandesign@… |
|---|---|---|---|
| Priority: | Normal | Milestone: | |
| Component: | ports | Version: | 1.9.2 |
| Keywords: | Cc: | dan@… | |
| Port: | mlt |
Description
Short and painfull: mlt fails to compile with the error message below. Even switching to ffmpeg-devel does not help at all (which was the solution some month before). Heres the build log:
:msg:main ---> Computing dependencies for mlt:info:main .:debug:main Searching for dependency: pkgconfig
:debug:main Found Dependency: receipt exists for pkgconfig
:debug:main Searching for dependency: git-core
:debug:main Found Dependency: receipt exists for git-core
:debug:main Searching for dependency: doxygen
:debug:main Found Dependency: receipt exists for doxygen
:debug:main Searching for dependency: qt4-mac
:debug:main Found Dependency: receipt exists for qt4-mac
:debug:main Searching for dependency: atk
:debug:main Found Dependency: receipt exists for atk
:debug:main Searching for dependency: frei0r-plugins
:debug:main Found Dependency: receipt exists for frei0r-plugins
:debug:main Searching for dependency: ffmpeg
:debug:main Found Dependency: receipt exists for ffmpeg
:debug:main Searching for dependency: gtk2
:debug:main Found Dependency: receipt exists for gtk2
:debug:main Searching for dependency: libdv
:debug:main Found Dependency: receipt exists for libdv
:debug:main Searching for dependency: libsamplerate
:debug:main Found Dependency: receipt exists for libsamplerate
:debug:main Searching for dependency: libsdl
:debug:main Found Dependency: receipt exists for libsdl
:debug:main Searching for dependency: libvorbis
:debug:main Found Dependency: receipt exists for libvorbis
:debug:main Searching for dependency: sox
:debug:main Found Dependency: receipt exists for sox
:msg:main
:debug:main Executing org.macports.main (mlt)
:debug:main Skipping completed org.macports.fetch (mlt)
:debug:main Skipping completed org.macports.checksum (mlt)
:debug:main Skipping completed org.macports.extract (mlt)
:debug:main Skipping completed org.macports.patch (mlt)
:debug:main Skipping completed org.macports.configure (mlt)
:msg:main ---> Building mlt:debug:build build phase started at Wed Jan 26 08:58:56 CET 2011:debug:build Executing org.macports.build (mlt)
:debug:build Environment: CPATH='/opt/local/include' CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_rel
ease_ports_multimedia_mlt/work/.CC_PRINT_OPTIONS' CFLAGS='-O2 -I/opt/local/include -I/opt/local/include' QTDIR='/opt/local' LIBRARY_PATH='/opt/local/lib' CC_PRI
NT_OPTIONS='YES' MACOSX_DEPLOYMENT_TARGET='10.6' LDFLAGS='-L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multi
media_mlt/work/mlt-0.5.10/src/framework -L/opt/local/lib' MOC='/opt/local/bin/moc' QMAKE='/opt/local/bin/qmake'
:debug:build Assembled command: 'cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_mlt/work/mlt-0.5.
10" && /usr/bin/make -j2 all CC="/usr/bin/gcc-4.2" CXX="/usr/bin/g++-4.2" CPP="/usr/bin/cpp-4.2"'
:info:build list='src/framework src/mlt++ src/melt src/modules src/swig profiles'; \
:info:build for subdir in $list; do \
:info:build /usr/bin/make -s -C $subdir depend || exit 1; \
:info:build /usr/bin/make -C $subdir all || exit 1; \
:info:build done
:info:build make[1]: Nothing to be done for `all'.
:info:build make[1]: Nothing to be done for `all'.:info:build make[1]: Nothing to be done for `all'.
:info:build list='avformat core dgraft dv effectv feeds frei0r gtk2 jackrack kdenlive kino linsys lumas melt motion_est normalize oldfilm plus qimage resample s
dl sox vmfx vorbis xine xml'; \
:info:build for subdir in $list; do \
:info:build if [ -f $subdir/Makefile -a ! -f disable-$subdir ] ; \
:info:build then /usr/bin/make -C $subdir all || exit 1; \
:info:build fi \
:info:build done
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build make[2]: Nothing to be done for `all'.
:info:build /usr/bin/gcc-4.2 -dynamiclib -o ../libmltgtk2.dylib factory.o consumer_gtk2.o producer_pixbuf.o pixops.o filter_rescale.o producer_pango.o -L/opt/l
ocal/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_mlt/work/mlt-0.5.10/src/framework -L/opt/local/lib -L/opt/lo
cal/lib -lSDLmain -lSDL -Wl,-framework,Cocoa -L/opt/local/lib -lSDLmain -lSDL -Wl,-framework,Cocoa -L../../framework -lmlt -lpthread -lm -L/opt/local/lib -lSDLm
ain -lSDL -Wl,-framework,Cocoa `pkg-config gtk+-2.0 --libs` `pkg-config gdk-pixbuf-2.0 --libs` -L/opt/local/lib -lexif `pkg-config pangoft2 --libs`
:info:build Undefined symbols:
:info:build "_libiconv_close", referenced from:
:info:build _iconv_utf8 in producer_pango.o
:info:build "_libiconv", referenced from:
:info:build _iconv_utf8 in producer_pango.o
:info:build "_libiconv_open", referenced from:
:info:build _iconv_utf8 in producer_pango.o
:info:build ld: symbol(s) not found
:info:build collect2: ld returned 1 exit status
:info:build make[2]: *** [../libmltgtk2.dylib] Error 1
:info:build make[1]: *** [all] Error 1
:info:build make: *** [all] Error 1
:info:build shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_mlt/work/mlt-0.5.10" &
& /usr/bin/make -j2 all CC="/usr/bin/gcc-4.2" CXX="/usr/bin/g++-4.2" CPP="/usr/bin/cpp-4.2" " returned error 2
:error:build Target org.macports.build returned: shell command failed (see log for details)
:debug:build Backtrace: shell command failed (see log for details)
while executing
"command_exec build"
(procedure "portbuild::build_main" line 8)
invoked from within
"$procedure $targetname"
:info:build Warning: the following items did not execute (for mlt): org.macports.activate org.macports.build org.macports.destroot org.macports.install
:notice:build Log for mlt is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_multimedia_mlt/main.log
Attachments
Change History
comment:2 Changed 2 years ago by ryandesign@…
- Keywords mlt removed
- Cc ryandesign@… added
- Owner changed from macports-tickets@… to dan@…
- Milestone MacPorts 2.0.0 deleted
Probably another consequence of fixing #25345. Probably mlt needs "-liconv" added to its LDFLAGS.
comment:3 Changed 2 years ago by ryandesign@…
The problem does not appear if using mlt's +no_x11 variant. "-lintl" only seems to appear by virtue of mlt asking pkg-config for pango's, glib2's, and gtk2's lib flags. These all only list -lintl, and not -liconv (which -lintl requires). So I'm not certain that this isn't actually a bug in the pango, glib2 and gtk2 ports' pkg-config files.
comment:4 Changed 2 years ago by ryandesign@…
- Status changed from new to assigned
- Owner changed from dan@… to ryandesign@…
- Port changed from mlt to glib2, glib2-devel
- Cc dan@… added; ryandesign@… removed
gtk2 and pango both depend on glib2; this is an issue confined to glib2. It was exposed by removing indirect dependencies from pkgconfig in #25345, but caused by a change where glib2 moved iconv into the private libs. There have been other remarks that this change is strange. gettext (a.k.a. libintl), at least as built on Mac OS X by MacPorts, requires libiconv. Therefore it seems improper for glib2 to claim, when asked, that -lintl should be used, but fail to mention that -liconv is also required. I believe I will change glib2's pkgconfig file to move iconv out of the private libs and back into the public libs again.
comment:5 Changed 2 years ago by ryandesign@…
- Status changed from assigned to closed
- Resolution set to fixed
Fixed glib2 and glib2-devel in r75483.
comment:6 Changed 2 years ago by jmr@…
A library using another library is a very different thing to a program using the other library's symbols directly, which is what is happening here. mlt's producer_pango.c is calling iconv_open() and friends directly, not via some glib2 function, so it's simply wrong for it not to link with -liconv.
comment:7 Changed 2 years ago by ryandesign@…
- Status changed from closed to reopened
- Resolution fixed deleted
Ah. Then I should revert my change above, and mlt should be fixed.
Changed 2 years ago by dan@…
- Attachment patch-src-modules-gtk2-Makefile.diff added
patchfile to put in files/


Additional information: its snow leopard / all latest updates with these ports installed: