[mythtv] OSX build issues and patches

David Abrahams dave at boost-consulting.com
Tue Dec 13 11:39:47 EST 2005

Thanks to Geoff Kruse I found the osx-packager.pl script and have been
using that to try to build mythtv for OSX (Tiger).  It's been quite an
adventure, despite the script!  I've made some progress, which I'll
report here, and I think I need some help, too.

I've enclosed my current patch for the script.

* I'm trying to build a backend, so that's been enabled in the script.

* Many of the SourceForge download addresses in there wouldn't work
  for me.  I changed the script to use a different mirror

* FreeType is now at 2.1.10 and you can't get 2.1.9 anymore; updated

* I had some major issues because I had installed ccache with Fink
  Commander, but somehow the cache directory was set to /dev/null and
  I didn't know how to reconfigure it.  Since g++ becomes a symbolic
  link to ccache when it's installed, the QT test program that looks
  for the Mac version was failing mysteriously, and I could never get
  that #define set up.  From there on it looked as though gcc's
  preprocessor was broken.  I had to add -v to QT's configure options
  and watch messages carefully to even get a clue about this one.

* As part of one flawed attack at the problem above, I tried it with
  QT 4.  Its configure options are completely different.  I left those
  lines in the script, commented out, in case it becomes useful to

* After I got the QT mac version test program to compile, it wouldn't
  link.  Based on
  http://lists.trolltech.com/qt-interest/2005-05/thread00265-0.html I
  added -lobjc to the link line.  Since it seemed to have the answers
  I also added '-platform macx-g++' to the configure options.  I don't
  remember offhand whether that addressed a specific obstacle or if I
  just went on faith based on that article.  I know it was necessary
  when I was trying to work with QT4, so it may well have been needed.

* In libexif-0.6.12/libexif/exif-utils.c, line 86, exif_get_sshort is
  defined as static after being already declared without; I had to
  comment out the 'static' in order to make the compiler happy

* In qt-mac-free-3.3.4/mkspecs/macx-g++/qplatformdefs.h, 

    #define QT_SOCKLEN_T int

  needs to be 

    #define QT_SOCKLEN_T socklen_t

  in order to work with the latest system headers.

* Some QT things were failing to find -lXext at link time, and after
  mucking about with fink for *way* too long trying to find it (and I
  hope I didn't mess up my configuration), I realized it was already
  installed.  So I added -L/usr/X11R6/lib to qmake_opts and QT got

* mythtv seems to hardcode the use of distcc into its Makefiles, and
  OSX doesn't have a distcc binary available, at least, not from the
  usual places.  I had to download and build distcc from source.

* I'm now getting some link errors when building libmyth; I'm not sure
  how to address these.  Can anyone help?

-------------- next part --------------
cd ~/buildmyth/
~/src/mythtv/contrib/osx-packager.pl -verbose
[osx-pkg] Forcing -usehdimage due to case-insensitive filesystem
[osx-pkg] Creating a case-sensitive device for the build
[osx-pkg] Including components: mythtv myththemes mythplugins
[osx-pkg] Using previously downloaded freetype
[osx-pkg] Using previously unpacked freetype
[osx-pkg] Using previously configured freetype
[osx-pkg] Using previously built freetype
[osx-pkg] Using previously downloaded lame
[osx-pkg] Using previously unpacked lame
[osx-pkg] Using previously configured lame
[osx-pkg] Using previously built lame
[osx-pkg] Using previously downloaded mysqlclient
[osx-pkg] Using previously unpacked mysqlclient
[osx-pkg] Using previously configured mysqlclient
[osx-pkg] Using previously built mysqlclient
[osx-pkg] Using previously downloaded qt-mt
[osx-pkg] Using previously unpacked qt-mt
[osx-pkg] Using previously configured qt-mt
[osx-pkg] Using previously built qt-mt
[osx-pkg] Using previously downloaded dvdnav
[osx-pkg] Using previously unpacked dvdnav
[osx-pkg] Using previously configured dvdnav
[osx-pkg] Using previously built dvdnav
[osx-pkg] Using previously downloaded tiff
[osx-pkg] Using previously unpacked tiff
[osx-pkg] Using previously configured tiff
[osx-pkg] Using previously built tiff
[osx-pkg] Using previously downloaded exif
[osx-pkg] Using previously unpacked exif
[osx-pkg] Using previously configured exif
[osx-pkg] Using previously built exif
[osx-pkg] Using previously downloaded dvdcss
[osx-pkg] Using previously unpacked dvdcss
[osx-pkg] Using previously configured dvdcss
[osx-pkg] Using previously built dvdcss
[osx-pkg] Using previously downloaded dvdread
[osx-pkg] Using previously unpacked dvdread
[osx-pkg] Using previously configured dvdread
[osx-pkg] Using previously built dvdread
[osx-pkg] Cleaning previous installs of MythTV
[osx-pkg] rm -fr /Users/dave/buildmyth/.osx-packager/src/myth-svnmythtv/config
[osx-pkg] Checking out source code
[osx-pkg] /sw/bin/svn co --revision 8252 http://svn.mythtv.org/svn/trunk/mythtv http://svn.mythtv.org/svn/trunk/myththemes http://svn.mythtv.org/svn/trunk/mythplugins /Users/dave/buildmyth/.osx-packager/src/myth-svn
Restored '/Users/dave/buildmyth/.osx-packager/src/myth-svn/mythtv/docs/Makefile'
Restored '/Users/dave/buildmyth/.osx-packager/src/myth-svn/mythtv/programs/mythtranscode/replex/Makefile'
Restored '/Users/dave/buildmyth/.osx-packager/src/myth-svn/mythtv/contrib/dct-channel/Makefile'
Restored '/Users/dave/buildmyth/.osx-packager/src/myth-svn/mythtv/contrib/mythnotify/mythudprelay/Makefile'
Restored '/Users/dave/buildmyth/.osx-packager/src/myth-svn/mythtv/contrib/mythnotify/cidbcast/Makefile'
Checked out revision 8252.
Checked out revision 8252.
Checked out revision 8252.
[osx-pkg] Cleaning MythTV makefiles
[osx-pkg] /bin/rm ./docs/Makefile ./libs/libmythmpeg2/Makefile ./libs/libmythsoundtouch/Makefile ./libs/libavformat/Makefile ./libs/libmythsamplerate/Makefile ./libs/libmyth/Makefile ./libs/libavcodec/Makefile ./libs/libavutil/Makefile ./libs/Makefile ./programs/mythtranscode/replex/Makefile ./contrib/dct-channel/Makefile ./contrib/mythnotify/mythudprelay/Makefile ./contrib/mythnotify/cidbcast/Makefile ./config/Makefile ./Makefile
[osx-pkg] Configuring mythtv
[osx-pkg] ./configure --prefix=/Users/dave/buildmyth/.osx-packager/build --enable-backend
# Basic Settings
Compile type     release
Compiler cache   no
DistCC           yes
Install prefix   /Users/dave/buildmyth/.osx-packager/build
CPU              powerpc (powerpc)
Big Endian       yes
AltiVec enabled  yes

# Input Support
Joystick menu    no
lirc support     no
Video4Linux sup. no
ivtv support     no
FireWire support no
DVB support      no [/usr/include]
DBox2 support    yes

# Sound Output Support
OSS support      no
ALSA support     no
aRts support     no
JACK support     no

# Video Output Support
x11 support      no
xrandr support   no
xv support       no
XvMC support     no
XvMC VLD support no
XvMC pro support no
XvMC libs        
OpenGL vsync     no
DirectFB         no

# Misc Features
DVD playback     yes
Frontend         yes
Backend          yes

Creating libs/libmyth/mythconfig.h and libs/libmyth/mythconfig.mak

libs/libmyth/mythconfig.h is unchanged
[osx-pkg] Running qmake for mythtv
[osx-pkg] /Users/dave/buildmyth/.osx-packager/build/bin/qmake PREFIX=../Resources QMAKE_LFLAGS+=-Wl,-search_paths_first INCLUDEPATH+="/Users/dave/buildmyth/.osx-packager/build/include" LIBS+=-L/usr/lib -L"/Users/dave/buildmyth/.osx-packager/build/lib" -L/usr/X11R6/lib mythtv.pro
[osx-pkg] touch config/config.pro
[osx-pkg] Making mythtv
[osx-pkg] /usr/bin/make
cd libs && qmake libs.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+="/Users/dave/buildmyth/.osx-packager/build/include"" "LIBS+=-L/usr/lib -L"/Users/dave/buildmyth/.osx-packager/build/lib" -L/usr/X11R6/lib" -o Makefile
cd libs && /usr/bin/make -f Makefile
cd libavutil && qmake libavutil.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libavutil && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libavcodec && qmake libavcodec.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libavcodec && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libavformat && qmake libavformat.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libavformat && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libmythsamplerate && qmake libmythsamplerate.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libmythsamplerate && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libmythsoundtouch && qmake libmythsoundtouch.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libmythsoundtouch && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libmythmpeg2 && qmake libmythmpeg2.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libmythmpeg2 && /usr/bin/make -f Makefile
make[2]: Nothing to be done for `first'.
cd libmyth && qmake libmyth.pro "PREFIX=../Resources" "QMAKE_LFLAGS+=-Wl,-search_paths_first" "INCLUDEPATH+=/Users/dave/buildmyth/.osx-packager/build/include" "LIBS+=-L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib" -o Makefile
cd libmyth && /usr/bin/make -f Makefile
/bin/rm -f libmyth- libmyth-0.19.dylib libmyth-0.19.0.dylib libmyth-
distcc g++ -Wl,-search_paths_first -prebind -dynamiclib -single_module -headerpad_max_install_names -install_name /sw/lib/libmyth-0.19.0.dylib -seg1addr 0xC6000000 -compatibility_version	0.19 -current_version	0.19.0 -o libmyth- dialogbox.o lcddevice.o mythcontext.o mythwidgets.o oldsettings.o remotefile.o settings.o themedmenu.o util.o mythwizard.o uitypes.o xmlparse.o mythplugin.o mythdialogs.o audiooutput.o httpcomms.o mythmedia.o uilistbtntype.o generictree.o managedlist.o DisplayRes.o volumecontrol.o volumebase.o audiooutputbase.o dbsettings.o screensaver.o screensaver-null.o output.o langsettings.o mythdbcon.o audiooutputnull.o DisplayResScreen.o util-x11.o qmdcodec.o virtualkeyboard.o mythobservable.o mythcdrom.o mythmediamonitor.o audiooutputca.o screensaver-osx.o DisplayResOSX.o util-osx.o moc_dialogbox.o moc_lcddevice.o moc_mythcontext.o moc_mythwidgets.o moc_settings.o moc_themedmenu.o moc_mythwizard.o moc_uitypes.o moc_mythdialogs.o moc_httpcomms.o moc_mythmedia.o moc_uilistbtntype.o moc_managedlist.o moc_virtualkeyboard.o moc_mythcdrom.o moc_mythmediamonitor.o  -L/sw/lib -L/sw/lib -L/usr/lib -L/Users/dave/buildmyth/.osx-packager/build/lib -L/usr/X11R6/lib -L../libmythsamplerate -lmythsamplerate-0.19 -L../libmythsoundtouch -lmythsoundtouch-0.19 -framework ApplicationServices -framework AudioUnit -framework Carbon -framework CoreAudio -framework IOKit -lqt-mt -lXext -lX11 -lm 
ld: warning prebinding disabled because dependent library: /sw/lib/libqt-mt.3.dylib is not prebound
ld: Undefined symbols:
/usr/bin/libtool: internal link edit command failed
distcc[6763] ERROR: compile (null) on localhost failed
make[2]: *** [libmyth-] Error 1
make[1]: *** [sub-libmyth] Error 2
make: *** [sub-libs] Error 2
[osx-pkg] Failed system call: " /usr/bin/make " with error code 2
Died at /Users/dave/src/mythtv/contrib/osx-packager.pl line 698.

Compilation exited abnormally with code 17 at Tue Dec 13 10:27:24
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osx-packager.pl.patch
Type: text/x-patch
Size: 3366 bytes
Desc: not available
Url : http://mythtv.org/pipermail/mythtv-dev/attachments/20051213/dee7ac14/osx-packager.pl.bin
-------------- next part --------------

Thanks for your attention,

Dave Abrahams
Boost Consulting

More information about the mythtv-dev mailing list